Added lefthook to enforce no non-type export in src/@types

This commit is contained in:
Bertie690 2025-06-06 23:10:22 -04:00
parent 88e4ab978b
commit f3f746ebdc

View File

@ -1,6 +1,18 @@
/** @type {import('dependency-cruiser').IConfiguration} */ /** @type {import('dependency-cruiser').IConfiguration} */
module.exports = { module.exports = {
forbidden: [ forbidden: [
{
name: "no-non-type-@type-exports",
severity: "error",
comment:
"Files in @types should not export anything but types and interfaces. " +
"The folder is intended to house imports that are removed at runtime, " +
"and thus should not contain anything with a bearing on runtime code.",
to: {
path: "(^|/)src/@types",
dependencyTypesNot: ["type-only"],
},
},
{ {
name: "only-type-imports", name: "only-type-imports",
severity: "error", severity: "error",
@ -218,7 +230,7 @@ module.exports = {
module systems it knows of. It's the default because it's the safe option module systems it knows of. It's the default because it's the safe option
It might come at a performance penalty, though. It might come at a performance penalty, though.
moduleSystems: ['amd', 'cjs', 'es6', 'tsd'] moduleSystems: ['amd', 'cjs', 'es6', 'tsd']
As in practice only commonjs ('cjs') and ecmascript modules ('es6') As in practice only commonjs ('cjs') and ecmascript modules ('es6')
are widely used, you can limit the moduleSystems to those. are widely used, you can limit the moduleSystems to those.
*/ */
@ -226,7 +238,7 @@ module.exports = {
// moduleSystems: ['cjs', 'es6'], // moduleSystems: ['cjs', 'es6'],
/* prefix for links in html and svg output (e.g. 'https://github.com/you/yourrepo/blob/main/' /* prefix for links in html and svg output (e.g. 'https://github.com/you/yourrepo/blob/main/'
to open it on your online repo or `vscode://file/${process.cwd()}/` to to open it on your online repo or `vscode://file/${process.cwd()}/` to
open it in visual studio code), open it in visual studio code),
*/ */
// prefix: `vscode://file/${process.cwd()}/`, // prefix: `vscode://file/${process.cwd()}/`,
@ -271,7 +283,7 @@ module.exports = {
to './webpack.conf.js'. to './webpack.conf.js'.
The (optional) `env` and `arguments` attributes contain the parameters The (optional) `env` and `arguments` attributes contain the parameters
to be passed if your webpack config is a function and takes them (see to be passed if your webpack config is a function and takes them (see
webpack documentation for details) webpack documentation for details)
*/ */
// webpackConfig: { // webpackConfig: {
@ -322,8 +334,8 @@ module.exports = {
A list of alias fields in package.jsons A list of alias fields in package.jsons
See [this specification](https://github.com/defunctzombie/package-browser-field-spec) and See [this specification](https://github.com/defunctzombie/package-browser-field-spec) and
the webpack [resolve.alias](https://webpack.js.org/configuration/resolve/#resolvealiasfields) the webpack [resolve.alias](https://webpack.js.org/configuration/resolve/#resolvealiasfields)
documentation documentation
Defaults to an empty array (= don't use alias fields). Defaults to an empty array (= don't use alias fields).
*/ */
// aliasFields: ["browser"], // aliasFields: ["browser"],