eslint-config-complete 4.16.0 → 4.18.0
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/dist/src/base/base-eslint.d.ts.map +1 -1
- package/dist/src/base/base-eslint.js +21 -56
- package/dist/src/base/base-import-x.d.ts.map +1 -1
- package/dist/src/base/base-import-x.js +6 -6
- package/dist/src/base/base-jsdoc.d.ts.map +1 -1
- package/dist/src/base/base-jsdoc.js +6 -26
- package/dist/src/base/base-stylistic.d.ts.map +1 -1
- package/dist/src/base/base-stylistic.js +8 -12
- package/dist/src/base/base-typescript-eslint.d.ts.map +1 -1
- package/dist/src/base/base-typescript-eslint.js +29 -48
- package/dist/src/base.d.ts.map +1 -1
- package/dist/src/base.js +1 -3
- package/dist/src/eslint-plugin.d.ts.map +1 -1
- package/dist/src/eslint-plugin.js +1 -3
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-eslint.d.ts","sourceRoot":"","sources":["../../../src/base/base-eslint.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-eslint.d.ts","sourceRoot":"","sources":["../../../src/base/base-eslint.js"],"names":[],"mappings":"AA6nBA;;;;;;;;GAQG;AACH,0DAMG"}
|
|
@@ -6,12 +6,7 @@ import { defineConfig } from "eslint/config";
|
|
|
6
6
|
*/
|
|
7
7
|
const POSSIBLE_PROBLEMS = {
|
|
8
8
|
/** The `checkForEach` option is enabled to make the rule stricter. */
|
|
9
|
-
"array-callback-return": [
|
|
10
|
-
"error",
|
|
11
|
-
{
|
|
12
|
-
checkForEach: true,
|
|
13
|
-
},
|
|
14
|
-
],
|
|
9
|
+
"array-callback-return": ["error", { checkForEach: true }],
|
|
15
10
|
/** Disabled since this is already enforced by TypeScript (`ts(2335)` & `ts(2377)`). */
|
|
16
11
|
"constructor-super": "off", // @typescript-eslint/eslint-recommended
|
|
17
12
|
"for-direction": "error",
|
|
@@ -174,9 +169,7 @@ const SUGGESTIONS = {
|
|
|
174
169
|
"logical-assignment-operators": [
|
|
175
170
|
"error",
|
|
176
171
|
"always",
|
|
177
|
-
{
|
|
178
|
-
enforceForIfStatements: true,
|
|
179
|
-
},
|
|
172
|
+
{ enforceForIfStatements: true },
|
|
180
173
|
],
|
|
181
174
|
"max-classes-per-file": "error",
|
|
182
175
|
/** Disabled since this rule is too prescriptive for general-purpose use. */
|
|
@@ -220,12 +213,7 @@ const SUGGESTIONS = {
|
|
|
220
213
|
"no-delete-var": "error",
|
|
221
214
|
"no-div-regex": "error",
|
|
222
215
|
/** The `allowElseIf` option is disabled to make the rule stricter. */
|
|
223
|
-
"no-else-return": [
|
|
224
|
-
"error",
|
|
225
|
-
{
|
|
226
|
-
allowElseIf: false,
|
|
227
|
-
},
|
|
228
|
-
],
|
|
216
|
+
"no-else-return": ["error", { allowElseIf: false }],
|
|
229
217
|
"no-empty": "error",
|
|
230
218
|
/** Superseded by the `@typescript-eslint/no-empty-function` rule. */
|
|
231
219
|
"no-empty-function": "off",
|
|
@@ -276,7 +264,6 @@ const SUGGESTIONS = {
|
|
|
276
264
|
"no-param-reassign": [
|
|
277
265
|
"error",
|
|
278
266
|
{
|
|
279
|
-
props: true,
|
|
280
267
|
ignorePropertyModificationsFor: [
|
|
281
268
|
"acc", // for reduce accumulators
|
|
282
269
|
"accumulator", // for reduce accumulators
|
|
@@ -290,6 +277,7 @@ const SUGGESTIONS = {
|
|
|
290
277
|
"$scope", // for Angular 1 scopes
|
|
291
278
|
"staticContext", // for ReactRouter context
|
|
292
279
|
],
|
|
280
|
+
props: true,
|
|
293
281
|
},
|
|
294
282
|
],
|
|
295
283
|
/**
|
|
@@ -322,12 +310,12 @@ const SUGGESTIONS = {
|
|
|
322
310
|
"no-restricted-globals": [
|
|
323
311
|
"error",
|
|
324
312
|
{
|
|
325
|
-
name: "isFinite",
|
|
326
313
|
message: "Use Number.isFinite instead: https://github.com/airbnb/javascript#standard-library--isfinite",
|
|
314
|
+
name: "isFinite",
|
|
327
315
|
},
|
|
328
316
|
{
|
|
329
|
-
name: "isNaN",
|
|
330
317
|
message: "Use Number.isNaN instead: https://github.com/airbnb/javascript#standard-library--isnan",
|
|
318
|
+
name: "isNaN",
|
|
331
319
|
},
|
|
332
320
|
...confusingBrowserGlobals,
|
|
333
321
|
],
|
|
@@ -340,52 +328,52 @@ const SUGGESTIONS = {
|
|
|
340
328
|
"no-restricted-properties": [
|
|
341
329
|
"error",
|
|
342
330
|
{
|
|
331
|
+
message: "arguments.callee is deprecated",
|
|
343
332
|
object: "arguments",
|
|
344
333
|
property: "callee",
|
|
345
|
-
message: "arguments.callee is deprecated",
|
|
346
334
|
},
|
|
347
335
|
{
|
|
336
|
+
message: "Please use Number.isFinite instead",
|
|
348
337
|
object: "global",
|
|
349
338
|
property: "isFinite",
|
|
350
|
-
message: "Please use Number.isFinite instead",
|
|
351
339
|
},
|
|
352
340
|
{
|
|
341
|
+
message: "Please use Number.isFinite instead",
|
|
353
342
|
object: "self",
|
|
354
343
|
property: "isFinite",
|
|
355
|
-
message: "Please use Number.isFinite instead",
|
|
356
344
|
},
|
|
357
345
|
{
|
|
346
|
+
message: "Please use Number.isFinite instead",
|
|
358
347
|
object: "window",
|
|
359
348
|
property: "isFinite",
|
|
360
|
-
message: "Please use Number.isFinite instead",
|
|
361
349
|
},
|
|
362
350
|
{
|
|
351
|
+
message: "Please use Number.isNaN instead",
|
|
363
352
|
object: "global",
|
|
364
353
|
property: "isNaN",
|
|
365
|
-
message: "Please use Number.isNaN instead",
|
|
366
354
|
},
|
|
367
355
|
{
|
|
356
|
+
message: "Please use Number.isNaN instead",
|
|
368
357
|
object: "self",
|
|
369
358
|
property: "isNaN",
|
|
370
|
-
message: "Please use Number.isNaN instead",
|
|
371
359
|
},
|
|
372
360
|
{
|
|
361
|
+
message: "Please use Number.isNaN instead",
|
|
373
362
|
object: "window",
|
|
374
363
|
property: "isNaN",
|
|
375
|
-
message: "Please use Number.isNaN instead",
|
|
376
364
|
},
|
|
377
365
|
{
|
|
378
|
-
property: "__defineGetter__",
|
|
379
366
|
message: "Please use Object.defineProperty instead.",
|
|
367
|
+
property: "__defineGetter__",
|
|
380
368
|
},
|
|
381
369
|
{
|
|
382
|
-
property: "__defineSetter__",
|
|
383
370
|
message: "Please use Object.defineProperty instead.",
|
|
371
|
+
property: "__defineSetter__",
|
|
384
372
|
},
|
|
385
373
|
{
|
|
374
|
+
message: "Use the exponentiation operator (**) instead.",
|
|
386
375
|
object: "Math",
|
|
387
376
|
property: "pow",
|
|
388
|
-
message: "Use the exponentiation operator (**) instead.",
|
|
389
377
|
},
|
|
390
378
|
],
|
|
391
379
|
/** Disabled because it is intended for disallowing specific language features per-project. */
|
|
@@ -420,12 +408,7 @@ const SUGGESTIONS = {
|
|
|
420
408
|
*/
|
|
421
409
|
"no-underscore-dangle": "off",
|
|
422
410
|
/** The `defaultAssignment` option is disabled to make the rule stricter. */
|
|
423
|
-
"no-unneeded-ternary": [
|
|
424
|
-
"error",
|
|
425
|
-
{
|
|
426
|
-
defaultAssignment: false,
|
|
427
|
-
},
|
|
428
|
-
],
|
|
411
|
+
"no-unneeded-ternary": ["error", { defaultAssignment: false }],
|
|
429
412
|
/** Superseded by the `@typescript-eslint/no-unused-expressions` rule. */
|
|
430
413
|
"no-unused-expressions": "off",
|
|
431
414
|
"no-unused-labels": "error",
|
|
@@ -433,12 +416,7 @@ const SUGGESTIONS = {
|
|
|
433
416
|
"no-useless-call": "error",
|
|
434
417
|
"no-useless-catch": "error",
|
|
435
418
|
/** The `enforceForClassMembers` option is enabled to make the rule stricter. */
|
|
436
|
-
"no-useless-computed-key": [
|
|
437
|
-
"error",
|
|
438
|
-
{
|
|
439
|
-
enforceForClassMembers: true,
|
|
440
|
-
},
|
|
441
|
-
],
|
|
419
|
+
"no-useless-computed-key": ["error", { enforceForClassMembers: true }],
|
|
442
420
|
"no-useless-concat": "error",
|
|
443
421
|
/** Superseded by the `@typescript-eslint/no-useless-constructor` rule. */
|
|
444
422
|
"no-useless-constructor": "off",
|
|
@@ -455,13 +433,7 @@ const SUGGESTIONS = {
|
|
|
455
433
|
/** Disabled since this is already enforced by TypeScript (`ts(1101)` & `ts(2410)`). */
|
|
456
434
|
"no-with": "off", // @typescript-eslint/eslint-recommended
|
|
457
435
|
/** The `ignoreConstructors` option is disabled to make the rule stricter. */
|
|
458
|
-
"object-shorthand": [
|
|
459
|
-
"error",
|
|
460
|
-
"always",
|
|
461
|
-
{
|
|
462
|
-
ignoreConstructors: false,
|
|
463
|
-
},
|
|
464
|
-
],
|
|
436
|
+
"object-shorthand": ["error", "always", { ignoreConstructors: false }],
|
|
465
437
|
/**
|
|
466
438
|
* The `never` option is provided to disallow multi-variable declarations (since they can be
|
|
467
439
|
* confusing).
|
|
@@ -485,12 +457,7 @@ const SUGGESTIONS = {
|
|
|
485
457
|
/** Superseded by the `@typescript-eslint/prefer-promise-reject-errors` rule. */
|
|
486
458
|
"prefer-promise-reject-errors": "off",
|
|
487
459
|
/** The `disallowRedundantWrapping` option is enabled to make the rule stricter. */
|
|
488
|
-
"prefer-regex-literals": [
|
|
489
|
-
"error",
|
|
490
|
-
{
|
|
491
|
-
disallowRedundantWrapping: true,
|
|
492
|
-
},
|
|
493
|
-
],
|
|
460
|
+
"prefer-regex-literals": ["error", { disallowRedundantWrapping: true }],
|
|
494
461
|
"prefer-rest-params": "error",
|
|
495
462
|
"prefer-spread": "error",
|
|
496
463
|
"prefer-template": "error",
|
|
@@ -519,9 +486,7 @@ const SUGGESTIONS = {
|
|
|
519
486
|
* @type {Record<string, import("@typescript-eslint/utils").TSESLint.SharedConfig.RuleEntry>}
|
|
520
487
|
* @see https://eslint.org/docs/latest/rules/#suggestions
|
|
521
488
|
*/
|
|
522
|
-
const LAYOUT_AND_FORMATTING = {
|
|
523
|
-
"unicode-bom": "error",
|
|
524
|
-
};
|
|
489
|
+
const LAYOUT_AND_FORMATTING = { "unicode-bom": "error" };
|
|
525
490
|
/**
|
|
526
491
|
* This ESLint config only contains built-in rules from ESLint itself:
|
|
527
492
|
* https://eslint.org/docs/latest/rules/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-import-x.d.ts","sourceRoot":"","sources":["../../../src/base/base-import-x.js"],"names":[],"mappings":"AA4NA;;;;;;;;;GASG;AACH,
|
|
1
|
+
{"version":3,"file":"base-import-x.d.ts","sourceRoot":"","sources":["../../../src/base/base-import-x.js"],"names":[],"mappings":"AA4NA;;;;;;;;;GASG;AACH,2DAqFE"}
|
|
@@ -189,6 +189,12 @@ export const baseImportX = defineConfig({
|
|
|
189
189
|
plugins: {
|
|
190
190
|
"import-x": esLintPluginImportX,
|
|
191
191
|
},
|
|
192
|
+
rules: {
|
|
193
|
+
...HELPFUL_WARNINGS,
|
|
194
|
+
...MODULE_SYSTEMS,
|
|
195
|
+
...STATIC_ANALYSIS,
|
|
196
|
+
...STYLE_GUIDE,
|
|
197
|
+
},
|
|
192
198
|
// Beyond just specifying the plugin, additional configuration is necessary to make the plugin
|
|
193
199
|
// work properly with TypeScript:
|
|
194
200
|
// - First, the "eslint-import-resolver-typescript" package needs to be installed, or else an
|
|
@@ -211,12 +217,6 @@ export const baseImportX = defineConfig({
|
|
|
211
217
|
typescript: true,
|
|
212
218
|
},
|
|
213
219
|
},
|
|
214
|
-
rules: {
|
|
215
|
-
...HELPFUL_WARNINGS,
|
|
216
|
-
...MODULE_SYSTEMS,
|
|
217
|
-
...STATIC_ANALYSIS,
|
|
218
|
-
...STYLE_GUIDE,
|
|
219
|
-
},
|
|
220
220
|
},
|
|
221
221
|
// Disable some TypeScript-specific rules in JavaScript files.
|
|
222
222
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-jsdoc.d.ts","sourceRoot":"","sources":["../../../src/base/base-jsdoc.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"base-jsdoc.d.ts","sourceRoot":"","sources":["../../../src/base/base-jsdoc.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,yDAoRE"}
|
|
@@ -105,12 +105,7 @@ export const baseJSDoc = defineConfig({
|
|
|
105
105
|
*/
|
|
106
106
|
"jsdoc/no-restricted-syntax": "off",
|
|
107
107
|
/** The `contexts` option is set to `any` to make the rule stricter. */
|
|
108
|
-
"jsdoc/no-types": [
|
|
109
|
-
"error",
|
|
110
|
-
{
|
|
111
|
-
contexts: ["any"],
|
|
112
|
-
},
|
|
113
|
-
],
|
|
108
|
+
"jsdoc/no-types": ["error", { contexts: ["any"] }],
|
|
114
109
|
/** Disabled because it is not needed in TypeScript. */
|
|
115
110
|
"jsdoc/no-undefined-types": "off",
|
|
116
111
|
/**
|
|
@@ -144,26 +139,16 @@ export const baseJSDoc = defineConfig({
|
|
|
144
139
|
{
|
|
145
140
|
contexts: [
|
|
146
141
|
{
|
|
147
|
-
context: "FunctionDeclaration",
|
|
148
142
|
comment: 'JsdocBlock:has(JsdocTag[tag="param"])',
|
|
143
|
+
context: "FunctionDeclaration",
|
|
149
144
|
},
|
|
150
145
|
],
|
|
151
146
|
},
|
|
152
147
|
],
|
|
153
148
|
/** The `contexts` option is set to `any` to make the rule stricter. */
|
|
154
|
-
"jsdoc/require-param-description": [
|
|
155
|
-
"error",
|
|
156
|
-
{
|
|
157
|
-
contexts: ["any"],
|
|
158
|
-
},
|
|
159
|
-
],
|
|
149
|
+
"jsdoc/require-param-description": ["error", { contexts: ["any"] }],
|
|
160
150
|
/** The `contexts` option is set to `any` to make the rule stricter. */
|
|
161
|
-
"jsdoc/require-param-name": [
|
|
162
|
-
"error",
|
|
163
|
-
{
|
|
164
|
-
contexts: ["any"],
|
|
165
|
-
},
|
|
166
|
-
],
|
|
151
|
+
"jsdoc/require-param-name": ["error", { contexts: ["any"] }],
|
|
167
152
|
/** Disabled because it is not needed in TypeScript. */
|
|
168
153
|
"jsdoc/require-param-type": "off",
|
|
169
154
|
/** Disabled because it is not needed in TypeScript. */
|
|
@@ -179,12 +164,7 @@ export const baseJSDoc = defineConfig({
|
|
|
179
164
|
/** Disabled because it is overboard for every function to document every return value. */
|
|
180
165
|
"jsdoc/require-returns-check": "off",
|
|
181
166
|
/** The `contexts` option is set to `any` to make the rule stricter. */
|
|
182
|
-
"jsdoc/require-returns-description": [
|
|
183
|
-
"error",
|
|
184
|
-
{
|
|
185
|
-
contexts: ["any"],
|
|
186
|
-
},
|
|
187
|
-
],
|
|
167
|
+
"jsdoc/require-returns-description": ["error", { contexts: ["any"] }],
|
|
188
168
|
/** Disabled because it is not needed in TypeScript. */
|
|
189
169
|
"jsdoc/require-returns-type": "off",
|
|
190
170
|
/** Disabled since it is expected to be configured with project-specific keywords. */
|
|
@@ -210,7 +190,7 @@ export const baseJSDoc = defineConfig({
|
|
|
210
190
|
/** Superseded by the `complete/format-jsdoc-comments` rule. */
|
|
211
191
|
"jsdoc/tag-lines": "off",
|
|
212
192
|
/**
|
|
213
|
-
* Disabled since it is only useful in certain environments (e.g
|
|
193
|
+
* Disabled since it is only useful in certain environments (e.g., when your project converts
|
|
214
194
|
* JSDoc comments to Markdown).
|
|
215
195
|
*/
|
|
216
196
|
"jsdoc/text-escaping": "off",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-stylistic.d.ts","sourceRoot":"","sources":["../../../src/base/base-stylistic.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"base-stylistic.d.ts","sourceRoot":"","sources":["../../../src/base/base-stylistic.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,6DA6CG"}
|
|
@@ -13,14 +13,16 @@ export const baseStylistic = defineConfig({
|
|
|
13
13
|
"@stylistic/lines-between-class-members": [
|
|
14
14
|
"error",
|
|
15
15
|
"always",
|
|
16
|
-
{
|
|
17
|
-
exceptAfterSingleLine: true,
|
|
18
|
-
},
|
|
16
|
+
{ exceptAfterSingleLine: true },
|
|
19
17
|
],
|
|
20
18
|
/** Enforce a blank line between functions. (Prettier does not do this by default.) */
|
|
21
19
|
"@stylistic/padding-line-between-statements": [
|
|
22
20
|
"error",
|
|
23
|
-
{
|
|
21
|
+
{
|
|
22
|
+
blankLine: "always",
|
|
23
|
+
next: "function",
|
|
24
|
+
prev: "function",
|
|
25
|
+
},
|
|
24
26
|
],
|
|
25
27
|
/**
|
|
26
28
|
* We forbid unnecessary backticks by using the options specified in [the
|
|
@@ -31,8 +33,8 @@ export const baseStylistic = defineConfig({
|
|
|
31
33
|
"error",
|
|
32
34
|
"double",
|
|
33
35
|
{
|
|
34
|
-
avoidEscape: true,
|
|
35
36
|
allowTemplateLiterals: "never",
|
|
37
|
+
avoidEscape: true,
|
|
36
38
|
},
|
|
37
39
|
],
|
|
38
40
|
/**
|
|
@@ -41,12 +43,6 @@ export const baseStylistic = defineConfig({
|
|
|
41
43
|
*
|
|
42
44
|
* The `markers` option is provided to make this rule ignore lines that start with "///".
|
|
43
45
|
*/
|
|
44
|
-
"@stylistic/spaced-comment": [
|
|
45
|
-
"error",
|
|
46
|
-
"always",
|
|
47
|
-
{
|
|
48
|
-
markers: ["/"],
|
|
49
|
-
},
|
|
50
|
-
],
|
|
46
|
+
"@stylistic/spaced-comment": ["error", "always", { markers: ["/"] }],
|
|
51
47
|
},
|
|
52
48
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-typescript-eslint.d.ts","sourceRoot":"","sources":["../../../src/base/base-typescript-eslint.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"base-typescript-eslint.d.ts","sourceRoot":"","sources":["../../../src/base/base-typescript-eslint.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,oEAohBE"}
|
|
@@ -5,9 +5,10 @@ import tseslint from "typescript-eslint";
|
|
|
5
5
|
* https://typescript-eslint.io/rules/
|
|
6
6
|
*/
|
|
7
7
|
export const baseTypeScriptESLint = defineConfig({
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
// Rules that require type information will throw an error on ".json" files. (This is needed
|
|
9
|
+
// when using `eslint-plugin-package-json`. Even though this config does not currently use the
|
|
10
|
+
// plugin, we include it here defensively.)
|
|
11
|
+
ignores: ["**/*.json", "**/*.jsonc", "**/*.code-workspace"],
|
|
11
12
|
// We need to provide some special configuration to ESLint in order for it to parse TypeScript
|
|
12
13
|
// files. From:
|
|
13
14
|
// https://typescript-eslint.io/packages/typescript-eslint/#advanced-usage
|
|
@@ -34,18 +35,16 @@ export const baseTypeScriptESLint = defineConfig({
|
|
|
34
35
|
},
|
|
35
36
|
},
|
|
36
37
|
},
|
|
38
|
+
plugins: {
|
|
39
|
+
"@typescript-eslint": tseslint.plugin,
|
|
40
|
+
},
|
|
37
41
|
rules: {
|
|
38
42
|
"@typescript-eslint/adjacent-overload-signatures": "error",
|
|
39
43
|
/**
|
|
40
44
|
* The default value is `array`. We choose `array-simple` because it makes complicated arrays
|
|
41
45
|
* easier to understand. This is worth the cost of deviating from the base rule configuration.
|
|
42
46
|
*/
|
|
43
|
-
"@typescript-eslint/array-type": [
|
|
44
|
-
"error",
|
|
45
|
-
{
|
|
46
|
-
default: "array-simple",
|
|
47
|
-
},
|
|
48
|
-
],
|
|
47
|
+
"@typescript-eslint/array-type": ["error", { default: "array-simple" }],
|
|
49
48
|
"@typescript-eslint/await-thenable": "error",
|
|
50
49
|
"@typescript-eslint/ban-ts-comment": "error",
|
|
51
50
|
"@typescript-eslint/ban-tslint-comment": "error",
|
|
@@ -104,23 +103,23 @@ export const baseTypeScriptESLint = defineConfig({
|
|
|
104
103
|
// Allow camelCase variables (23.2), PascalCase variables (23.8), and UPPER_CASE variables
|
|
105
104
|
// (23.10).
|
|
106
105
|
{
|
|
107
|
-
selector: "variable",
|
|
108
106
|
format: ["camelCase", "PascalCase", "UPPER_CASE"],
|
|
109
107
|
leadingUnderscore: "allow",
|
|
108
|
+
selector: "variable",
|
|
110
109
|
},
|
|
111
110
|
// Allow camelCase functions (23.2), and PascalCase functions (23.8).
|
|
112
111
|
{
|
|
113
|
-
selector: "function",
|
|
114
112
|
format: ["camelCase", "PascalCase"],
|
|
115
113
|
leadingUnderscore: "allow",
|
|
114
|
+
selector: "function",
|
|
116
115
|
},
|
|
117
116
|
// Airbnb recommends PascalCase for classes (23.3), and although Airbnb does not make
|
|
118
117
|
// TypeScript recommendations, we are assuming this rule would similarly apply to anything
|
|
119
118
|
// "type like", including interfaces, type aliases, and enums.
|
|
120
119
|
{
|
|
121
|
-
selector: "typeLike",
|
|
122
120
|
format: ["PascalCase"],
|
|
123
121
|
leadingUnderscore: "allow",
|
|
122
|
+
selector: "typeLike",
|
|
124
123
|
},
|
|
125
124
|
],
|
|
126
125
|
"@typescript-eslint/no-array-constructor": "error",
|
|
@@ -146,9 +145,7 @@ export const baseTypeScriptESLint = defineConfig({
|
|
|
146
145
|
*/
|
|
147
146
|
"@typescript-eslint/no-empty-interface": [
|
|
148
147
|
"error",
|
|
149
|
-
{
|
|
150
|
-
allowSingleExtends: true,
|
|
151
|
-
},
|
|
148
|
+
{ allowSingleExtends: true },
|
|
152
149
|
],
|
|
153
150
|
"@typescript-eslint/no-empty-object-type": "error",
|
|
154
151
|
"@typescript-eslint/no-explicit-any": "error",
|
|
@@ -161,9 +158,7 @@ export const baseTypeScriptESLint = defineConfig({
|
|
|
161
158
|
*/
|
|
162
159
|
"@typescript-eslint/no-floating-promises": [
|
|
163
160
|
"error",
|
|
164
|
-
{
|
|
165
|
-
ignoreVoid: false,
|
|
166
|
-
},
|
|
161
|
+
{ ignoreVoid: false },
|
|
167
162
|
],
|
|
168
163
|
"@typescript-eslint/no-for-in-array": "error",
|
|
169
164
|
"@typescript-eslint/no-implied-eval": "error",
|
|
@@ -172,9 +167,7 @@ export const baseTypeScriptESLint = defineConfig({
|
|
|
172
167
|
/** The `capIsConstructor` option is disabled to make the rule stricter. */
|
|
173
168
|
"@typescript-eslint/no-invalid-this": [
|
|
174
169
|
"error",
|
|
175
|
-
{
|
|
176
|
-
capIsConstructor: false,
|
|
177
|
-
},
|
|
170
|
+
{ capIsConstructor: false },
|
|
178
171
|
],
|
|
179
172
|
"@typescript-eslint/no-invalid-void-type": "error",
|
|
180
173
|
"@typescript-eslint/no-loop-func": "error",
|
|
@@ -276,9 +269,7 @@ export const baseTypeScriptESLint = defineConfig({
|
|
|
276
269
|
*/
|
|
277
270
|
"@typescript-eslint/no-unused-expressions": [
|
|
278
271
|
"error",
|
|
279
|
-
{
|
|
280
|
-
allowTaggedTemplates: true,
|
|
281
|
-
},
|
|
272
|
+
{ allowTaggedTemplates: true },
|
|
282
273
|
],
|
|
283
274
|
"@typescript-eslint/no-unused-private-class-members": "error",
|
|
284
275
|
/**
|
|
@@ -312,20 +303,18 @@ export const baseTypeScriptESLint = defineConfig({
|
|
|
312
303
|
"@typescript-eslint/prefer-destructuring": [
|
|
313
304
|
"error",
|
|
314
305
|
{
|
|
315
|
-
|
|
306
|
+
AssignmentExpression: {
|
|
316
307
|
array: false,
|
|
317
308
|
object: true,
|
|
318
309
|
},
|
|
319
|
-
|
|
310
|
+
VariableDeclarator: {
|
|
320
311
|
array: false,
|
|
321
312
|
object: true,
|
|
322
313
|
},
|
|
323
314
|
},
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
enforceForRenamedProperties: false,
|
|
328
|
-
},
|
|
315
|
+
// We disable this for renamed properties, since code like the following should be valid:
|
|
316
|
+
// `const someSpecificMyEnum = MyEnum.Value1;`
|
|
317
|
+
{ enforceForRenamedProperties: false },
|
|
329
318
|
],
|
|
330
319
|
"@typescript-eslint/prefer-enum-initializers": "error",
|
|
331
320
|
"@typescript-eslint/prefer-find": "error",
|
|
@@ -344,9 +333,7 @@ export const baseTypeScriptESLint = defineConfig({
|
|
|
344
333
|
/** The `allowEmptyReject` option is enabled since this is a common pattern. */
|
|
345
334
|
"@typescript-eslint/prefer-promise-reject-errors": [
|
|
346
335
|
"error",
|
|
347
|
-
{
|
|
348
|
-
allowEmptyReject: true,
|
|
349
|
-
},
|
|
336
|
+
{ allowEmptyReject: true },
|
|
350
337
|
],
|
|
351
338
|
"@typescript-eslint/prefer-readonly": "error",
|
|
352
339
|
/** Superseded by the `complete/prefer-readonly-parameter-types` rule. */
|
|
@@ -391,15 +378,15 @@ export const baseTypeScriptESLint = defineConfig({
|
|
|
391
378
|
"@typescript-eslint/strict-boolean-expressions": [
|
|
392
379
|
"error",
|
|
393
380
|
{
|
|
394
|
-
|
|
395
|
-
allowNumber: false,
|
|
396
|
-
allowNullableObject: true,
|
|
381
|
+
allowAny: false,
|
|
397
382
|
allowNullableBoolean: false,
|
|
398
|
-
allowNullableString: false,
|
|
399
|
-
allowNullableNumber: false,
|
|
400
383
|
allowNullableEnum: false,
|
|
401
|
-
|
|
384
|
+
allowNullableNumber: false,
|
|
385
|
+
allowNullableObject: true,
|
|
386
|
+
allowNullableString: false,
|
|
387
|
+
allowNumber: false,
|
|
402
388
|
allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing: false,
|
|
389
|
+
allowString: false,
|
|
403
390
|
},
|
|
404
391
|
],
|
|
405
392
|
"@typescript-eslint/strict-void-return": "error",
|
|
@@ -413,8 +400,8 @@ export const baseTypeScriptESLint = defineConfig({
|
|
|
413
400
|
"error",
|
|
414
401
|
{
|
|
415
402
|
allowDefaultCaseForExhaustiveSwitch: false,
|
|
416
|
-
requireDefaultForNonUnion: true,
|
|
417
403
|
considerDefaultExhaustiveForUnions: true,
|
|
404
|
+
requireDefaultForNonUnion: true,
|
|
418
405
|
},
|
|
419
406
|
],
|
|
420
407
|
"@typescript-eslint/triple-slash-reference": "error",
|
|
@@ -428,15 +415,9 @@ export const baseTypeScriptESLint = defineConfig({
|
|
|
428
415
|
"@typescript-eslint/unified-signatures": "error",
|
|
429
416
|
"@typescript-eslint/use-unknown-in-catch-callback-variable": "error",
|
|
430
417
|
},
|
|
431
|
-
// Rules that require type information will throw an error on ".json" files. (This is needed
|
|
432
|
-
// when using `eslint-plugin-package-json`. Even though this config does not currently use the
|
|
433
|
-
// plugin, we include it here defensively.)
|
|
434
|
-
ignores: ["**/*.json", "**/*.jsonc", "**/*.code-workspace"],
|
|
435
418
|
},
|
|
436
419
|
// Enable linting on TypeScript file extensions.
|
|
437
|
-
{
|
|
438
|
-
files: ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"],
|
|
439
|
-
},
|
|
420
|
+
{ files: ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"] },
|
|
440
421
|
// Disable some TypeScript-specific rules in JavaScript files.
|
|
441
422
|
{
|
|
442
423
|
files: ["**/*.js", "**/*.cjs", "**/*.mjs", "**/*.jsx"],
|
package/dist/src/base.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/base.js"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/base.js"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,kEAiCE"}
|
package/dist/src/base.js
CHANGED
|
@@ -29,9 +29,7 @@ export const completeConfigBase = defineConfig(
|
|
|
29
29
|
// We also want to ignore:
|
|
30
30
|
// - The "dist" directory, since it is the idiomatic place for compiled output in TypeScript.
|
|
31
31
|
// - Minified JavaScript files.
|
|
32
|
-
{
|
|
33
|
-
ignores: ["**/dist/", "*.min.js"],
|
|
34
|
-
},
|
|
32
|
+
{ ignores: ["**/dist/", "*.min.js"] },
|
|
35
33
|
// By default, ESLint will warn on unused disable directives, but since warnings will still result
|
|
36
34
|
// in a 0 exit code, we need to set this to "error".
|
|
37
35
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eslint-plugin.d.ts","sourceRoot":"","sources":["../../src/eslint-plugin.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,
|
|
1
|
+
{"version":3,"file":"eslint-plugin.d.ts","sourceRoot":"","sources":["../../src/eslint-plugin.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,0EA0DG"}
|
|
@@ -45,9 +45,7 @@ export const completeConfigESLintPlugin = defineConfig({
|
|
|
45
45
|
*/
|
|
46
46
|
"eslint-plugin/require-meta-docs-description": [
|
|
47
47
|
"error",
|
|
48
|
-
{
|
|
49
|
-
pattern: "^(Enforce|Require|Disallow)",
|
|
50
|
-
},
|
|
48
|
+
{ pattern: "^(Enforce|Require|Disallow)" },
|
|
51
49
|
],
|
|
52
50
|
"eslint-plugin/require-meta-docs-recommended": "error",
|
|
53
51
|
/** Disabled since this is automatically handled by the `createRule` helper function. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-config-complete",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.18.0",
|
|
4
4
|
"description": "A sharable ESLint config for TypeScript projects.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@stylistic/eslint-plugin": "5.10.0",
|
|
36
36
|
"confusing-browser-globals": "1.0.11",
|
|
37
37
|
"eslint-import-resolver-typescript": "4.4.5",
|
|
38
|
-
"eslint-plugin-complete": "1.
|
|
38
|
+
"eslint-plugin-complete": "1.10.0",
|
|
39
39
|
"eslint-plugin-eslint-plugin": "7.4.0",
|
|
40
40
|
"eslint-plugin-import-x": "4.16.2",
|
|
41
41
|
"eslint-plugin-jsdoc": "63.0.7",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@typescript-eslint/typescript-estree": "8.61.1",
|
|
53
53
|
"@typescript-eslint/utils": "8.61.1",
|
|
54
54
|
"complete-common": "2.29.0",
|
|
55
|
-
"complete-node": "
|
|
55
|
+
"complete-node": "18.0.0",
|
|
56
56
|
"eslint-config-prettier": "10.1.8",
|
|
57
57
|
"typescript": "6.0.3"
|
|
58
58
|
},
|