|
1 | 1 | { |
| 2 | + "root": true, |
2 | 3 | "parser": "@typescript-eslint/parser", |
3 | 4 | "parserOptions": { |
4 | 5 | "warnOnUnsupportedTypeScriptVersion": false, |
5 | | - "ecmaVersion": 6, |
6 | 6 | "sourceType": "module" |
7 | 7 | }, |
8 | 8 | "env": { |
|
11 | 11 | "es6": true |
12 | 12 | }, |
13 | 13 | "plugins": [ |
14 | | - "@typescript-eslint", "jsdoc", "no-null", "import", "eslint-plugin-local" |
| 14 | + "@typescript-eslint", "no-null", "import", "eslint-plugin-local", "simple-import-sort" |
15 | 15 | ], |
16 | | - "overrides": [ |
17 | | - // By default, the ESLint CLI only looks at .js files. But, it will also look at |
18 | | - // any files which are referenced in an override config. Most users of typescript-eslint |
19 | | - // get this behavior by default by extending a recommended typescript-eslint config, which |
20 | | - // just so happens to override some core ESLint rules. We don't extend from any config, so |
21 | | - // explicitly reference TS files here so the CLI picks them up. |
22 | | - // |
23 | | - // ESLint in VS Code will lint any opened file (so long as it's not eslintignore'd), so |
24 | | - // that will work regardless of the below. |
25 | | - { "files": ["*.ts"] } |
| 16 | + "ignorePatterns": [ |
| 17 | + "**/node_modules/**", |
| 18 | + "/built/**", |
| 19 | + "/tests/**", |
| 20 | + "/lib/**", |
| 21 | + "/src/lib/*.generated.d.ts", |
| 22 | + "/scripts/**/*.js", |
| 23 | + "/scripts/**/*.d.*", |
| 24 | + "/internal/**", |
| 25 | + "/coverage/**" |
26 | 26 | ], |
27 | 27 | "rules": { |
| 28 | + "simple-import-sort/imports": "error", |
| 29 | + "simple-import-sort/exports": "error", |
| 30 | + |
28 | 31 | "@typescript-eslint/adjacent-overload-signatures": "error", |
29 | 32 | "@typescript-eslint/array-type": "error", |
| 33 | + "@typescript-eslint/no-array-constructor": "error", |
30 | 34 |
|
31 | 35 | "brace-style": "off", |
32 | 36 | "@typescript-eslint/brace-style": ["error", "stroustrup", { "allowSingleLine": true }], |
|
62 | 66 | "@typescript-eslint/prefer-for-of": "error", |
63 | 67 | "@typescript-eslint/prefer-function-type": "error", |
64 | 68 | "@typescript-eslint/prefer-namespace-keyword": "error", |
| 69 | + "@typescript-eslint/prefer-as-const": "error", |
65 | 70 |
|
66 | 71 | "quotes": "off", |
67 | 72 | "@typescript-eslint/quotes": ["error", "double", { "avoidEscape": true, "allowTemplateLiterals": true }], |
68 | 73 |
|
69 | 74 | "semi": "off", |
70 | 75 | "@typescript-eslint/semi": "error", |
| 76 | + "@typescript-eslint/no-extra-semi": "error", |
71 | 77 |
|
72 | 78 | "space-before-function-paren": "off", |
73 | 79 | "@typescript-eslint/space-before-function-paren": ["error", { |
|
80 | 86 | "@typescript-eslint/type-annotation-spacing": "error", |
81 | 87 | "@typescript-eslint/unified-signatures": "error", |
82 | 88 |
|
| 89 | + "@typescript-eslint/no-extra-non-null-assertion": "error", |
| 90 | + |
83 | 91 | // scripts/eslint/rules |
84 | 92 | "local/object-literal-surrounding-space": "error", |
85 | 93 | "local/no-type-assertion-whitespace": "error", |
|
94 | 102 | "local/simple-indent": "error", |
95 | 103 | "local/debug-assert": "error", |
96 | 104 | "local/no-keywords": "error", |
97 | | - "local/one-namespace-per-file": "error", |
| 105 | + "local/jsdoc-format": "error", |
98 | 106 |
|
99 | 107 | // eslint-plugin-import |
100 | 108 | "import/no-extraneous-dependencies": ["error", { "optionalDependencies": false }], |
101 | 109 |
|
102 | 110 | // eslint-plugin-no-null |
103 | 111 | "no-null/no-null": "error", |
104 | 112 |
|
105 | | - // eslint-plugin-jsdoc |
106 | | - "jsdoc/check-alignment": "error", |
107 | | - |
108 | 113 | // eslint |
109 | 114 | "constructor-super": "error", |
110 | 115 | "curly": ["error", "multi-line"], |
|
143 | 148 | "quote-props": ["error", "consistent-as-needed"], |
144 | 149 | "space-in-parens": "error", |
145 | 150 | "unicode-bom": ["error", "never"], |
146 | | - "use-isnan": "error" |
147 | | - } |
| 151 | + "use-isnan": "error", |
| 152 | + "no-prototype-builtins": "error", |
| 153 | + "no-self-assign": "error", |
| 154 | + "no-dupe-else-if": "error" |
| 155 | + }, |
| 156 | + "overrides": [ |
| 157 | + // By default, the ESLint CLI only looks at .js files. But, it will also look at |
| 158 | + // any files which are referenced in an override config. Most users of typescript-eslint |
| 159 | + // get this behavior by default by extending a recommended typescript-eslint config, which |
| 160 | + // just so happens to override some core ESLint rules. We don't extend from any config, so |
| 161 | + // explicitly reference TS files here so the CLI picks them up. |
| 162 | + // |
| 163 | + // ESLint in VS Code will lint any opened file (so long as it's not eslintignore'd), so |
| 164 | + // that will work regardless of the below. |
| 165 | + // |
| 166 | + // The same applies to mjs files; ESLint appears to not scan those either. |
| 167 | + { "files": ["*.ts", "*.mts", "*.cts", "*.mjs", "*.cjs"] }, |
| 168 | + { |
| 169 | + "files": ["*.mjs", "*.mts"], |
| 170 | + "rules": { |
| 171 | + // These globals don't exist outside of CJS files. |
| 172 | + "no-restricted-globals": ["error", |
| 173 | + { "name": "__filename" }, |
| 174 | + { "name": "__dirname" }, |
| 175 | + { "name": "require" }, |
| 176 | + { "name": "module" }, |
| 177 | + { "name": "exports" } |
| 178 | + ] |
| 179 | + } |
| 180 | + }, |
| 181 | + { |
| 182 | + // These files contain imports in a specific order that are generally unsafe to modify. |
| 183 | + "files": ["**/_namespaces/**"], |
| 184 | + "rules": { |
| 185 | + "simple-import-sort/imports": "off", |
| 186 | + "simple-import-sort/exports": "off" |
| 187 | + } |
| 188 | + } |
| 189 | + ] |
148 | 190 | } |
0 commit comments