@jakubmazanec/eslint-config 3.1.0 → 3.2.0-next.c370ab6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/presets/base.js
CHANGED
|
@@ -123,8 +123,8 @@ const config = {
|
|
|
123
123
|
plugins: ["@typescript-eslint"],
|
|
124
124
|
parser: "@typescript-eslint/parser",
|
|
125
125
|
parserOptions: {
|
|
126
|
-
project: "tsconfig.typecheck.json"
|
|
127
|
-
EXPERIMENTAL_useProjectService: true
|
|
126
|
+
project: "tsconfig.typecheck.json"
|
|
127
|
+
// EXPERIMENTAL_useProjectService: true, // TODO: when this is set to `true`, ESLint doesn't use correct `tsconfig.typecheck.json` for files that are directly in the projects folder (e.g. `vite.config.ts` complains that `strictNullcheck` is needed for some rules)
|
|
128
128
|
},
|
|
129
129
|
settings: {
|
|
130
130
|
node: {
|
|
@@ -145,7 +145,11 @@ const config = {
|
|
|
145
145
|
{
|
|
146
146
|
devDependencies: [
|
|
147
147
|
`**/*.test.${import_constants.JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
148
|
+
`**/*.tests.${import_constants.JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
149
|
+
`**/*.stories.${import_constants.JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
150
|
+
`./.storybook/**/*.${import_constants.JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
148
151
|
`tests/**/*.${import_constants.JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
152
|
+
`stories/**/*.${import_constants.JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
149
153
|
`tools/**/*.${import_constants.JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
150
154
|
`./*.${import_constants.JS_AND_TS_EXTENSIONS_GLOB_PART}`
|
|
151
155
|
],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../source/presets/base.ts"],
|
|
4
|
-
"sourcesContent": ["import type eslint from 'eslint';\n\nimport {\n ASSET_EXTENSIONS_REGEXP,\n CSS_EXTENSIONS_REGEXP,\n GRAPHQL_EXTENSIONS_REGEXP,\n JS_AND_TS_EXTENSIONS,\n JS_AND_TS_EXTENSIONS_GLOB_PART,\n TS_EXTENSIONS_GLOB_PART,\n} from '../constants';\nimport a11yRules from '../rules/a11y';\nimport eslintRules from '../rules/eslint';\nimport commentsRules from '../rules/eslint-comments';\nimport importRules from '../rules/import';\nimport promiseRules from '../rules/promise';\nimport reactRules from '../rules/react';\nimport reactHooksRules from '../rules/react-hooks';\nimport simpleImportSortRules from '../rules/simple-import-sort';\nimport stylisticRules from '../rules/stylistic';\nimport testingLibraryRules from '../rules/testing-library';\nimport typescriptRules from '../rules/typescript';\nimport unicornRules from '../rules/unicorn';\nimport vitestRules from '../rules/vitest';\n\nconst config: eslint.Linter.Config = {\n parserOptions: {\n ecmaVersion: 'latest',\n sourceType: 'module',\n ecmaFeatures: {\n jsx: true,\n },\n },\n plugins: [\n '@stylistic',\n 'eslint-comments',\n 'import',\n 'jsx-a11y',\n 'promise',\n 'react',\n 'react-hooks',\n 'simple-import-sort',\n 'unicorn',\n ],\n env: {\n browser: true,\n es2023: true,\n serviceworker: true,\n 'shared-node-browser': true,\n worker: true,\n },\n settings: {\n 'import/ignore': [\n 'node_modules',\n '\\\\.json$',\n ASSET_EXTENSIONS_REGEXP.source,\n CSS_EXTENSIONS_REGEXP.source,\n GRAPHQL_EXTENSIONS_REGEXP.source,\n ],\n react: {\n version: 'detect',\n },\n propWrapperFunctions: ['forbidExtraProps', 'exact', 'Object.freeze'],\n 'jsx-a11y': {\n polymorphicPropName: 'as',\n components: {\n Button: 'button',\n },\n },\n },\n\n rules: {\n ...eslintRules,\n ...stylisticRules,\n ...commentsRules,\n ...promiseRules,\n ...importRules,\n ...simpleImportSortRules,\n ...reactRules,\n ...reactHooksRules,\n ...a11yRules,\n ...unicornRules,\n },\n overrides: [\n {\n files: [`*.test.${JS_AND_TS_EXTENSIONS_GLOB_PART}`],\n plugins: ['vitest', 'testing-library'],\n settings: {\n 'testing-library/custom-queries': 'off',\n 'testing-library/custom-renders': 'off',\n 'testing-library/utils-module': 'off',\n },\n globals: {\n jsdom: 'readonly',\n },\n env: {\n node: true,\n },\n rules: {\n ...vitestRules,\n ...testingLibraryRules,\n\n // override ESLint rules\n 'max-classes-per-file': 'off', // enforce a maximum number of classes per file\n\n // override eslint-plugin-node rules\n 'node/no-sync': 'off', // disallow synchronous methods\n },\n },\n {\n files: [`*.${TS_EXTENSIONS_GLOB_PART}`],\n plugins: ['@typescript-eslint'],\n parser: '@typescript-eslint/parser',\n parserOptions: {\n project: 'tsconfig.typecheck.json',\n EXPERIMENTAL_useProjectService: true
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAEA,uBAOO;AACP,kBAAsB;AACtB,oBAAwB;AACxB,6BAA0B;AAC1B,oBAAwB;AACxB,qBAAyB;AACzB,mBAAuB;AACvB,yBAA4B;AAC5B,gCAAkC;AAClC,uBAA2B;AAC3B,6BAAgC;AAChC,wBAA4B;AAC5B,qBAAyB;AACzB,oBAAwB;AAExB,MAAM,SAA+B;AAAA,EACnC,eAAe;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,cAAc;AAAA,MACZ,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,KAAK;AAAA,IACH,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,uBAAuB;AAAA,IACvB,QAAQ;AAAA,EACV;AAAA,EACA,UAAU;AAAA,IACR,iBAAiB;AAAA,MACf;AAAA,MACA;AAAA,MACA,yCAAwB;AAAA,MACxB,uCAAsB;AAAA,MACtB,2CAA0B;AAAA,IAC5B;AAAA,IACA,OAAO;AAAA,MACL,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB,CAAC,oBAAoB,SAAS,eAAe;AAAA,IACnE,YAAY;AAAA,MACV,qBAAqB;AAAA,MACrB,YAAY;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,GAAG,cAAAA;AAAA,IACH,GAAG,iBAAAC;AAAA,IACH,GAAG,uBAAAC;AAAA,IACH,GAAG,eAAAC;AAAA,IACH,GAAG,cAAAC;AAAA,IACH,GAAG,0BAAAC;AAAA,IACH,GAAG,aAAAC;AAAA,IACH,GAAG,mBAAAC;AAAA,IACH,GAAG,YAAAC;AAAA,IACH,GAAG,eAAAC;AAAA,EACL;AAAA,EACA,WAAW;AAAA,IACT;AAAA,MACE,OAAO,CAAC,UAAU,+CAA8B,EAAE;AAAA,MAClD,SAAS,CAAC,UAAU,iBAAiB;AAAA,MACrC,UAAU;AAAA,QACR,kCAAkC;AAAA,QAClC,kCAAkC;AAAA,QAClC,gCAAgC;AAAA,MAClC;AAAA,MACA,SAAS;AAAA,QACP,OAAO;AAAA,MACT;AAAA,MACA,KAAK;AAAA,QACH,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,GAAG,cAAAC;AAAA,QACH,GAAG,uBAAAC;AAAA;AAAA,QAGH,wBAAwB;AAAA;AAAA;AAAA,QAGxB,gBAAgB;AAAA;AAAA,MAClB;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO,CAAC,KAAK,wCAAuB,EAAE;AAAA,MACtC,SAAS,CAAC,oBAAoB;AAAA,MAC9B,QAAQ;AAAA,MACR,eAAe;AAAA,QACb,SAAS;AAAA
|
|
4
|
+
"sourcesContent": ["import type eslint from 'eslint';\n\nimport {\n ASSET_EXTENSIONS_REGEXP,\n CSS_EXTENSIONS_REGEXP,\n GRAPHQL_EXTENSIONS_REGEXP,\n JS_AND_TS_EXTENSIONS,\n JS_AND_TS_EXTENSIONS_GLOB_PART,\n TS_EXTENSIONS_GLOB_PART,\n} from '../constants';\nimport a11yRules from '../rules/a11y';\nimport eslintRules from '../rules/eslint';\nimport commentsRules from '../rules/eslint-comments';\nimport importRules from '../rules/import';\nimport promiseRules from '../rules/promise';\nimport reactRules from '../rules/react';\nimport reactHooksRules from '../rules/react-hooks';\nimport simpleImportSortRules from '../rules/simple-import-sort';\nimport stylisticRules from '../rules/stylistic';\nimport testingLibraryRules from '../rules/testing-library';\nimport typescriptRules from '../rules/typescript';\nimport unicornRules from '../rules/unicorn';\nimport vitestRules from '../rules/vitest';\n\nconst config: eslint.Linter.Config = {\n parserOptions: {\n ecmaVersion: 'latest',\n sourceType: 'module',\n ecmaFeatures: {\n jsx: true,\n },\n },\n plugins: [\n '@stylistic',\n 'eslint-comments',\n 'import',\n 'jsx-a11y',\n 'promise',\n 'react',\n 'react-hooks',\n 'simple-import-sort',\n 'unicorn',\n ],\n env: {\n browser: true,\n es2023: true,\n serviceworker: true,\n 'shared-node-browser': true,\n worker: true,\n },\n settings: {\n 'import/ignore': [\n 'node_modules',\n '\\\\.json$',\n ASSET_EXTENSIONS_REGEXP.source,\n CSS_EXTENSIONS_REGEXP.source,\n GRAPHQL_EXTENSIONS_REGEXP.source,\n ],\n react: {\n version: 'detect',\n },\n propWrapperFunctions: ['forbidExtraProps', 'exact', 'Object.freeze'],\n 'jsx-a11y': {\n polymorphicPropName: 'as',\n components: {\n Button: 'button',\n },\n },\n },\n\n rules: {\n ...eslintRules,\n ...stylisticRules,\n ...commentsRules,\n ...promiseRules,\n ...importRules,\n ...simpleImportSortRules,\n ...reactRules,\n ...reactHooksRules,\n ...a11yRules,\n ...unicornRules,\n },\n overrides: [\n {\n files: [`*.test.${JS_AND_TS_EXTENSIONS_GLOB_PART}`],\n plugins: ['vitest', 'testing-library'],\n settings: {\n 'testing-library/custom-queries': 'off',\n 'testing-library/custom-renders': 'off',\n 'testing-library/utils-module': 'off',\n },\n globals: {\n jsdom: 'readonly',\n },\n env: {\n node: true,\n },\n rules: {\n ...vitestRules,\n ...testingLibraryRules,\n\n // override ESLint rules\n 'max-classes-per-file': 'off', // enforce a maximum number of classes per file\n\n // override eslint-plugin-node rules\n 'node/no-sync': 'off', // disallow synchronous methods\n },\n },\n {\n files: [`*.${TS_EXTENSIONS_GLOB_PART}`],\n plugins: ['@typescript-eslint'],\n parser: '@typescript-eslint/parser',\n parserOptions: {\n project: 'tsconfig.typecheck.json',\n // EXPERIMENTAL_useProjectService: true, // TODO: when this is set to `true`, ESLint doesn't use correct `tsconfig.typecheck.json` for files that are directly in the projects folder (e.g. `vite.config.ts` complains that `strictNullcheck` is needed for some rules)\n },\n settings: {\n node: {\n tryExtensions: JS_AND_TS_EXTENSIONS,\n },\n 'import/resolver': {\n typescript: {},\n },\n 'import/parsers': {\n '@typescript-eslint/parser': ['.ts', '.tsx', '.mts', '.cts'],\n },\n },\n rules: {\n ...typescriptRules,\n\n // override eslint-plugin-import rules\n 'import/no-extraneous-dependencies': [\n 'error',\n {\n devDependencies: [\n `**/*.test.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `**/*.tests.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `**/*.stories.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `./.storybook/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `tests/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `stories/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `tools/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `./*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n ],\n optionalDependencies: false,\n },\n ],\n },\n },\n {\n files: [`*.test.${TS_EXTENSIONS_GLOB_PART}`],\n rules: {\n // override @typescript-eslint/eslint-plugin rules\n '@typescript-eslint/ban-ts-comment': 'off', // bans // @ts-<directive> comments from being used\n '@typescript-eslint/no-floating-promises': 'off', // requires Promise-like values to be handled appropriately\n },\n },\n ],\n};\n\nexport = config;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAEA,uBAOO;AACP,kBAAsB;AACtB,oBAAwB;AACxB,6BAA0B;AAC1B,oBAAwB;AACxB,qBAAyB;AACzB,mBAAuB;AACvB,yBAA4B;AAC5B,gCAAkC;AAClC,uBAA2B;AAC3B,6BAAgC;AAChC,wBAA4B;AAC5B,qBAAyB;AACzB,oBAAwB;AAExB,MAAM,SAA+B;AAAA,EACnC,eAAe;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,cAAc;AAAA,MACZ,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,KAAK;AAAA,IACH,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,uBAAuB;AAAA,IACvB,QAAQ;AAAA,EACV;AAAA,EACA,UAAU;AAAA,IACR,iBAAiB;AAAA,MACf;AAAA,MACA;AAAA,MACA,yCAAwB;AAAA,MACxB,uCAAsB;AAAA,MACtB,2CAA0B;AAAA,IAC5B;AAAA,IACA,OAAO;AAAA,MACL,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB,CAAC,oBAAoB,SAAS,eAAe;AAAA,IACnE,YAAY;AAAA,MACV,qBAAqB;AAAA,MACrB,YAAY;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,GAAG,cAAAA;AAAA,IACH,GAAG,iBAAAC;AAAA,IACH,GAAG,uBAAAC;AAAA,IACH,GAAG,eAAAC;AAAA,IACH,GAAG,cAAAC;AAAA,IACH,GAAG,0BAAAC;AAAA,IACH,GAAG,aAAAC;AAAA,IACH,GAAG,mBAAAC;AAAA,IACH,GAAG,YAAAC;AAAA,IACH,GAAG,eAAAC;AAAA,EACL;AAAA,EACA,WAAW;AAAA,IACT;AAAA,MACE,OAAO,CAAC,UAAU,+CAA8B,EAAE;AAAA,MAClD,SAAS,CAAC,UAAU,iBAAiB;AAAA,MACrC,UAAU;AAAA,QACR,kCAAkC;AAAA,QAClC,kCAAkC;AAAA,QAClC,gCAAgC;AAAA,MAClC;AAAA,MACA,SAAS;AAAA,QACP,OAAO;AAAA,MACT;AAAA,MACA,KAAK;AAAA,QACH,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,GAAG,cAAAC;AAAA,QACH,GAAG,uBAAAC;AAAA;AAAA,QAGH,wBAAwB;AAAA;AAAA;AAAA,QAGxB,gBAAgB;AAAA;AAAA,MAClB;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO,CAAC,KAAK,wCAAuB,EAAE;AAAA,MACtC,SAAS,CAAC,oBAAoB;AAAA,MAC9B,QAAQ;AAAA,MACR,eAAe;AAAA,QACb,SAAS;AAAA;AAAA,MAEX;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,UACJ,eAAe;AAAA,QACjB;AAAA,QACA,mBAAmB;AAAA,UACjB,YAAY,CAAC;AAAA,QACf;AAAA,QACA,kBAAkB;AAAA,UAChB,6BAA6B,CAAC,OAAO,QAAQ,QAAQ,MAAM;AAAA,QAC7D;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,GAAG,kBAAAC;AAAA;AAAA,QAGH,qCAAqC;AAAA,UACnC;AAAA,UACA;AAAA,YACE,iBAAiB;AAAA,cACf,aAAa,+CAA8B;AAAA,cAC3C,cAAc,+CAA8B;AAAA,cAC5C,gBAAgB,+CAA8B;AAAA,cAC9C,qBAAqB,+CAA8B;AAAA,cACnD,cAAc,+CAA8B;AAAA,cAC5C,gBAAgB,+CAA8B;AAAA,cAC9C,cAAc,+CAA8B;AAAA,cAC5C,OAAO,+CAA8B;AAAA,YACvC;AAAA,YACA,sBAAsB;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO,CAAC,UAAU,wCAAuB,EAAE;AAAA,MAC3C,OAAO;AAAA;AAAA,QAEL,qCAAqC;AAAA;AAAA,QACrC,2CAA2C;AAAA;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AACF;AAEA,iBAAS;",
|
|
6
6
|
"names": ["eslintRules", "stylisticRules", "commentsRules", "promiseRules", "importRules", "simpleImportSortRules", "reactRules", "reactHooksRules", "a11yRules", "unicornRules", "vitestRules", "testingLibraryRules", "typescriptRules"]
|
|
7
7
|
}
|
package/build/rules/import.js
CHANGED
|
@@ -80,7 +80,12 @@ const config = {
|
|
|
80
80
|
{
|
|
81
81
|
devDependencies: [
|
|
82
82
|
`**/*.test.${import_constants.JS_EXTENSIONS_GLOB_PART}`,
|
|
83
|
+
`**/*.tests.${import_constants.JS_EXTENSIONS_GLOB_PART}`,
|
|
84
|
+
`**/*.story.${import_constants.JS_EXTENSIONS_GLOB_PART}`,
|
|
85
|
+
`**/*.stories.${import_constants.JS_EXTENSIONS_GLOB_PART}`,
|
|
86
|
+
`./.storybook/**/*.${import_constants.JS_EXTENSIONS_GLOB_PART}`,
|
|
83
87
|
`tests/**/*.${import_constants.JS_EXTENSIONS_GLOB_PART}`,
|
|
88
|
+
`stories/**/*.${import_constants.JS_EXTENSIONS_GLOB_PART}`,
|
|
84
89
|
`tools/**/*.${import_constants.JS_EXTENSIONS_GLOB_PART}`,
|
|
85
90
|
`./*.${import_constants.JS_EXTENSIONS_GLOB_PART}`
|
|
86
91
|
],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../source/rules/import.ts"],
|
|
4
|
-
"sourcesContent": ["import type eslint from 'eslint';\n\nimport {JS_EXTENSIONS_GLOB_PART} from '../constants';\n\nconst config: eslint.Linter.Config['rules'] = {\n // override ESLint rules\n 'no-duplicate-imports': 'off', // disallow duplicate module imports\n 'sort-imports': 'off', // enforce sorted import declarations within modules\n\n // eslint-plugin-import rules\n 'import/consistent-type-specifier-style': ['error', 'prefer-inline'], // enforce or ban the use of inline type-only markers for named imports\n 'import/default': 'off', // ensure a default export is present, given a default import\n 'import/dynamic-import-chunkname': 'off', // enforce a leading comment with the webpackChunkName for dynamic imports\n 'import/no-empty-named-blocks': 'error', // forbid empty named import blocks\n 'import/export': 'error', // report any invalid exports, i.e. re-export of the same name\n 'import/exports-last': 'off', // ensure all exports appear after other statements\n 'import/extensions': 'off', // ensure consistent use of file extension within the import path\n 'import/first': 'error', // ensure all imports appear before other statements\n 'import/group-exports': 'off', // prefer named exports to be grouped together in a single export declaration\n 'import/max-dependencies': 'off', // limit the maximum number of dependencies a module can have\n 'import/no-internal-modules': 'off', // prevent importing the submodules of other modules\n 'import/named': 'error', // ensure named imports correspond to a named export in the remote file\n 'import/namespace': 'off', // ensure imported namespaces contain dereferenced properties as they are dereferenced\n 'import/newline-after-import': 'error', // enforce a newline after import statements\n 'import/no-absolute-path': 'error', // forbid import of modules using absolute paths\n 'import/no-amd': 'error', // report AMD require and define calls\n 'import/no-anonymous-default-export': 'off', // forbid anonymous values as default exports\n 'import/no-commonjs': 'off', // report CommonJS require calls and module.exports or exports.*\n 'import/no-cycle': 'error', // forbid a module from importing a module with a dependency path back to itself\n 'import/no-default-export': 'off', // forbid default exports\n 'import/no-deprecated': 'warn', // report imported names marked with @deprecated documentation tag\n 'import/no-duplicates': 'error', // report repeated import of the same module in multiple places\n 'import/no-dynamic-require': 'error', // forbid require() calls with expressions\n 'import/no-extraneous-dependencies': [\n 'error',\n {\n devDependencies: [\n `**/*.test.${JS_EXTENSIONS_GLOB_PART}`,\n `tests/**/*.${JS_EXTENSIONS_GLOB_PART}`,\n `tools/**/*.${JS_EXTENSIONS_GLOB_PART}`,\n `./*.${JS_EXTENSIONS_GLOB_PART}`,\n ],\n optionalDependencies: false,\n },\n ], // forbid the use of extraneous packages\n 'import/no-import-module-exports': 'off', // forbid imports with CommonJS exports\n 'import/no-mutable-exports': 'error', // forbid the use of mutable exports with var or let\n 'import/no-named-as-default': 'off', // report use of exported name as identifier of default export\n 'import/no-named-as-default-member': 'error', // report use of exported name as property of default export\n 'import/no-named-default': 'error', // forbid named default exports\n 'import/no-named-export': 'off', // forbid named exports\n 'import/no-namespace': 'off', // forbid namespace (a.k.a. \"wildcard\" *) imports\n 'import/no-nodejs-modules': 'off', // no Node.js builtin modules\n 'import/no-relative-packages': 'off', // prevent importing packages through relative paths\n 'import/no-relative-parent-imports': 'off', // forbid importing modules from parent directories\n 'import/no-restricted-paths': 'off', // restrict which files can be imported in a given folder\n 'import/no-self-import': 'error', // forbid a module from importing itself\n 'import/no-unassigned-import': 'off', // forbid unassigned imports\n 'import/no-unresolved': ['error', {commonjs: true, caseSensitive: true}], // ensure imports point to a file/module that can be resolved\n 'import/no-unused-modules': 'off', // report modules without exports, or exports without matching import in another module\n 'import/no-useless-path-segments': ['error', {noUselessIndex: true}], // prevent unnecessary path segments in import and require statements\n 'import/no-webpack-loader-syntax': 'error', // forbid webpack loader syntax in imports\n 'import/unambiguous': 'off', // report potentially ambiguous parse goal (script vs. module)\n 'import/order': [\n 'error',\n {\n groups: [['builtin', 'external']],\n 'newlines-between': 'always',\n alphabetize: {order: 'asc', caseInsensitive: true},\n },\n ], // enforce a convention in module import order\n 'import/prefer-default-export': 'off', // prefer a default export if module exports a single name\n};\n\nexport default config;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,uBAAsC;AAEtC,MAAM,SAAwC;AAAA;AAAA,EAE5C,wBAAwB;AAAA;AAAA,EACxB,gBAAgB;AAAA;AAAA;AAAA,EAGhB,0CAA0C,CAAC,SAAS,eAAe;AAAA;AAAA,EACnE,kBAAkB;AAAA;AAAA,EAClB,mCAAmC;AAAA;AAAA,EACnC,gCAAgC;AAAA;AAAA,EAChC,iBAAiB;AAAA;AAAA,EACjB,uBAAuB;AAAA;AAAA,EACvB,qBAAqB;AAAA;AAAA,EACrB,gBAAgB;AAAA;AAAA,EAChB,wBAAwB;AAAA;AAAA,EACxB,2BAA2B;AAAA;AAAA,EAC3B,8BAA8B;AAAA;AAAA,EAC9B,gBAAgB;AAAA;AAAA,EAChB,oBAAoB;AAAA;AAAA,EACpB,+BAA+B;AAAA;AAAA,EAC/B,2BAA2B;AAAA;AAAA,EAC3B,iBAAiB;AAAA;AAAA,EACjB,sCAAsC;AAAA;AAAA,EACtC,sBAAsB;AAAA;AAAA,EACtB,mBAAmB;AAAA;AAAA,EACnB,4BAA4B;AAAA;AAAA,EAC5B,wBAAwB;AAAA;AAAA,EACxB,wBAAwB;AAAA;AAAA,EACxB,6BAA6B;AAAA;AAAA,EAC7B,qCAAqC;AAAA,IACnC;AAAA,IACA;AAAA,MACE,iBAAiB;AAAA,QACf,aAAa,wCAAuB;AAAA,QACpC,cAAc,wCAAuB;AAAA,QACrC,cAAc,wCAAuB;AAAA,QACrC,OAAO,wCAAuB;AAAA,MAChC;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,EACF;AAAA;AAAA,EACA,mCAAmC;AAAA;AAAA,EACnC,6BAA6B;AAAA;AAAA,EAC7B,8BAA8B;AAAA;AAAA,EAC9B,qCAAqC;AAAA;AAAA,EACrC,2BAA2B;AAAA;AAAA,EAC3B,0BAA0B;AAAA;AAAA,EAC1B,uBAAuB;AAAA;AAAA,EACvB,4BAA4B;AAAA;AAAA,EAC5B,+BAA+B;AAAA;AAAA,EAC/B,qCAAqC;AAAA;AAAA,EACrC,8BAA8B;AAAA;AAAA,EAC9B,yBAAyB;AAAA;AAAA,EACzB,+BAA+B;AAAA;AAAA,EAC/B,wBAAwB,CAAC,SAAS,EAAC,UAAU,MAAM,eAAe,KAAI,CAAC;AAAA;AAAA,EACvE,4BAA4B;AAAA;AAAA,EAC5B,mCAAmC,CAAC,SAAS,EAAC,gBAAgB,KAAI,CAAC;AAAA;AAAA,EACnE,mCAAmC;AAAA;AAAA,EACnC,sBAAsB;AAAA;AAAA,EACtB,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,MACE,QAAQ,CAAC,CAAC,WAAW,UAAU,CAAC;AAAA,MAChC,oBAAoB;AAAA,MACpB,aAAa,EAAC,OAAO,OAAO,iBAAiB,KAAI;AAAA,IACnD;AAAA,EACF;AAAA;AAAA,EACA,gCAAgC;AAAA;AAClC;AAEA,IAAO,iBAAQ;",
|
|
4
|
+
"sourcesContent": ["import type eslint from 'eslint';\n\nimport {JS_EXTENSIONS_GLOB_PART} from '../constants';\n\nconst config: eslint.Linter.Config['rules'] = {\n // override ESLint rules\n 'no-duplicate-imports': 'off', // disallow duplicate module imports\n 'sort-imports': 'off', // enforce sorted import declarations within modules\n\n // eslint-plugin-import rules\n 'import/consistent-type-specifier-style': ['error', 'prefer-inline'], // enforce or ban the use of inline type-only markers for named imports\n 'import/default': 'off', // ensure a default export is present, given a default import\n 'import/dynamic-import-chunkname': 'off', // enforce a leading comment with the webpackChunkName for dynamic imports\n 'import/no-empty-named-blocks': 'error', // forbid empty named import blocks\n 'import/export': 'error', // report any invalid exports, i.e. re-export of the same name\n 'import/exports-last': 'off', // ensure all exports appear after other statements\n 'import/extensions': 'off', // ensure consistent use of file extension within the import path\n 'import/first': 'error', // ensure all imports appear before other statements\n 'import/group-exports': 'off', // prefer named exports to be grouped together in a single export declaration\n 'import/max-dependencies': 'off', // limit the maximum number of dependencies a module can have\n 'import/no-internal-modules': 'off', // prevent importing the submodules of other modules\n 'import/named': 'error', // ensure named imports correspond to a named export in the remote file\n 'import/namespace': 'off', // ensure imported namespaces contain dereferenced properties as they are dereferenced\n 'import/newline-after-import': 'error', // enforce a newline after import statements\n 'import/no-absolute-path': 'error', // forbid import of modules using absolute paths\n 'import/no-amd': 'error', // report AMD require and define calls\n 'import/no-anonymous-default-export': 'off', // forbid anonymous values as default exports\n 'import/no-commonjs': 'off', // report CommonJS require calls and module.exports or exports.*\n 'import/no-cycle': 'error', // forbid a module from importing a module with a dependency path back to itself\n 'import/no-default-export': 'off', // forbid default exports\n 'import/no-deprecated': 'warn', // report imported names marked with @deprecated documentation tag\n 'import/no-duplicates': 'error', // report repeated import of the same module in multiple places\n 'import/no-dynamic-require': 'error', // forbid require() calls with expressions\n 'import/no-extraneous-dependencies': [\n 'error',\n {\n devDependencies: [\n `**/*.test.${JS_EXTENSIONS_GLOB_PART}`,\n `**/*.tests.${JS_EXTENSIONS_GLOB_PART}`,\n `**/*.story.${JS_EXTENSIONS_GLOB_PART}`,\n `**/*.stories.${JS_EXTENSIONS_GLOB_PART}`,\n `./.storybook/**/*.${JS_EXTENSIONS_GLOB_PART}`,\n `tests/**/*.${JS_EXTENSIONS_GLOB_PART}`,\n `stories/**/*.${JS_EXTENSIONS_GLOB_PART}`,\n `tools/**/*.${JS_EXTENSIONS_GLOB_PART}`,\n `./*.${JS_EXTENSIONS_GLOB_PART}`,\n ],\n optionalDependencies: false,\n },\n ], // forbid the use of extraneous packages\n 'import/no-import-module-exports': 'off', // forbid imports with CommonJS exports\n 'import/no-mutable-exports': 'error', // forbid the use of mutable exports with var or let\n 'import/no-named-as-default': 'off', // report use of exported name as identifier of default export\n 'import/no-named-as-default-member': 'error', // report use of exported name as property of default export\n 'import/no-named-default': 'error', // forbid named default exports\n 'import/no-named-export': 'off', // forbid named exports\n 'import/no-namespace': 'off', // forbid namespace (a.k.a. \"wildcard\" *) imports\n 'import/no-nodejs-modules': 'off', // no Node.js builtin modules\n 'import/no-relative-packages': 'off', // prevent importing packages through relative paths\n 'import/no-relative-parent-imports': 'off', // forbid importing modules from parent directories\n 'import/no-restricted-paths': 'off', // restrict which files can be imported in a given folder\n 'import/no-self-import': 'error', // forbid a module from importing itself\n 'import/no-unassigned-import': 'off', // forbid unassigned imports\n 'import/no-unresolved': ['error', {commonjs: true, caseSensitive: true}], // ensure imports point to a file/module that can be resolved\n 'import/no-unused-modules': 'off', // report modules without exports, or exports without matching import in another module\n 'import/no-useless-path-segments': ['error', {noUselessIndex: true}], // prevent unnecessary path segments in import and require statements\n 'import/no-webpack-loader-syntax': 'error', // forbid webpack loader syntax in imports\n 'import/unambiguous': 'off', // report potentially ambiguous parse goal (script vs. module)\n 'import/order': [\n 'error',\n {\n groups: [['builtin', 'external']],\n 'newlines-between': 'always',\n alphabetize: {order: 'asc', caseInsensitive: true},\n },\n ], // enforce a convention in module import order\n 'import/prefer-default-export': 'off', // prefer a default export if module exports a single name\n};\n\nexport default config;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,uBAAsC;AAEtC,MAAM,SAAwC;AAAA;AAAA,EAE5C,wBAAwB;AAAA;AAAA,EACxB,gBAAgB;AAAA;AAAA;AAAA,EAGhB,0CAA0C,CAAC,SAAS,eAAe;AAAA;AAAA,EACnE,kBAAkB;AAAA;AAAA,EAClB,mCAAmC;AAAA;AAAA,EACnC,gCAAgC;AAAA;AAAA,EAChC,iBAAiB;AAAA;AAAA,EACjB,uBAAuB;AAAA;AAAA,EACvB,qBAAqB;AAAA;AAAA,EACrB,gBAAgB;AAAA;AAAA,EAChB,wBAAwB;AAAA;AAAA,EACxB,2BAA2B;AAAA;AAAA,EAC3B,8BAA8B;AAAA;AAAA,EAC9B,gBAAgB;AAAA;AAAA,EAChB,oBAAoB;AAAA;AAAA,EACpB,+BAA+B;AAAA;AAAA,EAC/B,2BAA2B;AAAA;AAAA,EAC3B,iBAAiB;AAAA;AAAA,EACjB,sCAAsC;AAAA;AAAA,EACtC,sBAAsB;AAAA;AAAA,EACtB,mBAAmB;AAAA;AAAA,EACnB,4BAA4B;AAAA;AAAA,EAC5B,wBAAwB;AAAA;AAAA,EACxB,wBAAwB;AAAA;AAAA,EACxB,6BAA6B;AAAA;AAAA,EAC7B,qCAAqC;AAAA,IACnC;AAAA,IACA;AAAA,MACE,iBAAiB;AAAA,QACf,aAAa,wCAAuB;AAAA,QACpC,cAAc,wCAAuB;AAAA,QACrC,cAAc,wCAAuB;AAAA,QACrC,gBAAgB,wCAAuB;AAAA,QACvC,qBAAqB,wCAAuB;AAAA,QAC5C,cAAc,wCAAuB;AAAA,QACrC,gBAAgB,wCAAuB;AAAA,QACvC,cAAc,wCAAuB;AAAA,QACrC,OAAO,wCAAuB;AAAA,MAChC;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,EACF;AAAA;AAAA,EACA,mCAAmC;AAAA;AAAA,EACnC,6BAA6B;AAAA;AAAA,EAC7B,8BAA8B;AAAA;AAAA,EAC9B,qCAAqC;AAAA;AAAA,EACrC,2BAA2B;AAAA;AAAA,EAC3B,0BAA0B;AAAA;AAAA,EAC1B,uBAAuB;AAAA;AAAA,EACvB,4BAA4B;AAAA;AAAA,EAC5B,+BAA+B;AAAA;AAAA,EAC/B,qCAAqC;AAAA;AAAA,EACrC,8BAA8B;AAAA;AAAA,EAC9B,yBAAyB;AAAA;AAAA,EACzB,+BAA+B;AAAA;AAAA,EAC/B,wBAAwB,CAAC,SAAS,EAAC,UAAU,MAAM,eAAe,KAAI,CAAC;AAAA;AAAA,EACvE,4BAA4B;AAAA;AAAA,EAC5B,mCAAmC,CAAC,SAAS,EAAC,gBAAgB,KAAI,CAAC;AAAA;AAAA,EACnE,mCAAmC;AAAA;AAAA,EACnC,sBAAsB;AAAA;AAAA,EACtB,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,MACE,QAAQ,CAAC,CAAC,WAAW,UAAU,CAAC;AAAA,MAChC,oBAAoB;AAAA,MACpB,aAAa,EAAC,OAAO,OAAO,iBAAiB,KAAI;AAAA,IACnD;AAAA,EACF;AAAA;AAAA,EACA,gCAAgC;AAAA;AAClC;AAEA,IAAO,iBAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
package/source/presets/base.ts
CHANGED
|
@@ -112,7 +112,7 @@ const config: eslint.Linter.Config = {
|
|
|
112
112
|
parser: '@typescript-eslint/parser',
|
|
113
113
|
parserOptions: {
|
|
114
114
|
project: 'tsconfig.typecheck.json',
|
|
115
|
-
EXPERIMENTAL_useProjectService: true,
|
|
115
|
+
// EXPERIMENTAL_useProjectService: true, // TODO: when this is set to `true`, ESLint doesn't use correct `tsconfig.typecheck.json` for files that are directly in the projects folder (e.g. `vite.config.ts` complains that `strictNullcheck` is needed for some rules)
|
|
116
116
|
},
|
|
117
117
|
settings: {
|
|
118
118
|
node: {
|
|
@@ -134,7 +134,11 @@ const config: eslint.Linter.Config = {
|
|
|
134
134
|
{
|
|
135
135
|
devDependencies: [
|
|
136
136
|
`**/*.test.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
137
|
+
`**/*.tests.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
138
|
+
`**/*.stories.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
139
|
+
`./.storybook/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
137
140
|
`tests/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
141
|
+
`stories/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
138
142
|
`tools/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
139
143
|
`./*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,
|
|
140
144
|
],
|
package/source/rules/import.ts
CHANGED
|
@@ -36,7 +36,12 @@ const config: eslint.Linter.Config['rules'] = {
|
|
|
36
36
|
{
|
|
37
37
|
devDependencies: [
|
|
38
38
|
`**/*.test.${JS_EXTENSIONS_GLOB_PART}`,
|
|
39
|
+
`**/*.tests.${JS_EXTENSIONS_GLOB_PART}`,
|
|
40
|
+
`**/*.story.${JS_EXTENSIONS_GLOB_PART}`,
|
|
41
|
+
`**/*.stories.${JS_EXTENSIONS_GLOB_PART}`,
|
|
42
|
+
`./.storybook/**/*.${JS_EXTENSIONS_GLOB_PART}`,
|
|
39
43
|
`tests/**/*.${JS_EXTENSIONS_GLOB_PART}`,
|
|
44
|
+
`stories/**/*.${JS_EXTENSIONS_GLOB_PART}`,
|
|
40
45
|
`tools/**/*.${JS_EXTENSIONS_GLOB_PART}`,
|
|
41
46
|
`./*.${JS_EXTENSIONS_GLOB_PART}`,
|
|
42
47
|
],
|