eslint-config-complete 1.0.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.
@@ -0,0 +1,838 @@
1
+ import confusingBrowserGlobals from "confusing-browser-globals";
2
+ import tseslint from "typescript-eslint";
3
+
4
+ /** @type {Record<string, import("@typescript-eslint/utils").TSESLint.SharedConfig.RuleEntry>} */
5
+ const POSSIBLE_PROBLEMS = {
6
+ /** The `checkForEach` option is enabled to make the rule stricter. */
7
+ "array-callback-return": [
8
+ "warn",
9
+ {
10
+ checkForEach: true,
11
+ },
12
+ ],
13
+
14
+ "constructor-super": "off", // @typescript-eslint/eslint-recommended
15
+ "for-direction": "warn",
16
+ "getter-return": "off", // @typescript-eslint/eslint-recommended
17
+ "no-async-promise-executor": "warn",
18
+ "no-await-in-loop": "warn",
19
+ "no-class-assign": "warn",
20
+ "no-compare-neg-zero": "warn",
21
+ "no-cond-assign": "warn",
22
+ "no-const-assign": "off", // @typescript-eslint/eslint-recommended
23
+ "no-constant-binary-expression": "warn",
24
+ "no-constant-condition": "warn",
25
+ "no-constructor-return": "warn",
26
+ "no-control-regex": "warn",
27
+ "no-debugger": "warn",
28
+ "no-dupe-args": "off", // @typescript-eslint/eslint-recommended
29
+ "no-dupe-class-members": "off", // @typescript-eslint/eslint-recommended
30
+ "no-dupe-else-if": "warn",
31
+ "no-dupe-keys": "off", // @typescript-eslint/eslint-recommended
32
+ "no-duplicate-case": "warn",
33
+
34
+ /** Superseded by the `import-x/no-duplicates` rule. */
35
+ "no-duplicate-imports": "off",
36
+
37
+ "no-empty-character-class": "warn",
38
+ "no-empty-pattern": "warn",
39
+ "no-ex-assign": "warn",
40
+ "no-fallthrough": "warn",
41
+ "no-func-assign": "off", // @typescript-eslint/eslint-recommended
42
+ "no-import-assign": "off", // @typescript-eslint/eslint-recommended
43
+ "no-inner-declarations": "warn",
44
+ "no-invalid-regexp": "warn",
45
+ "no-irregular-whitespace": "warn",
46
+
47
+ /** Superseded by the `@typescript-eslint/no-loss-of-precision` rule. */
48
+ "no-loss-of-precision": "off",
49
+
50
+ "no-misleading-character-class": "warn",
51
+ "no-new-native-nonconstructor": "warn",
52
+ "no-new-symbol": "off", // @typescript-eslint/eslint-recommended
53
+ "no-obj-calls": "off", // @typescript-eslint/eslint-recommended`
54
+ "no-promise-executor-return": "warn",
55
+ "no-prototype-builtins": "warn",
56
+ "no-self-assign": "warn",
57
+ "no-self-compare": "warn",
58
+ "no-setter-return": "off", // @typescript-eslint/eslint-recommended
59
+ "no-sparse-arrays": "warn",
60
+ "no-template-curly-in-string": "warn",
61
+ "no-this-before-super": "off", // @typescript-eslint/eslint-recommended`
62
+ "no-undef": "off", // @typescript-eslint/eslint-recommended
63
+ "no-unexpected-multiline": "off", // eslint-config-prettier
64
+ "no-unmodified-loop-condition": "warn",
65
+ "no-unreachable": "off", // @typescript-eslint/eslint-recommended
66
+ "no-unreachable-loop": "warn",
67
+ "no-unsafe-finally": "warn",
68
+ "no-unsafe-negation": "off", // @typescript-eslint/eslint-recommended
69
+ "no-unsafe-optional-chaining": "warn",
70
+ "no-unused-private-class-members": "warn",
71
+
72
+ /** Superseded by the `@typescript-eslint/no-unused-vars` rule. */
73
+ "no-unused-vars": "off",
74
+
75
+ /** Superseded by the `@typescript-eslint/no-use-before-define` rule. */
76
+ "no-use-before-define": "off",
77
+
78
+ "no-useless-backreference": "warn",
79
+
80
+ /**
81
+ * Disabled since [Airbnb reports that the rule is "very
82
+ * buggy"](https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/errors.js).
83
+ */
84
+ "require-atomic-updates": "off",
85
+
86
+ "use-isnan": "warn",
87
+ "valid-typeof": "warn",
88
+ };
89
+
90
+ /** @type {Record<string, import("@typescript-eslint/utils").TSESLint.SharedConfig.RuleEntry>} */
91
+ const SUGGESTIONS = {
92
+ "accessor-pairs": "warn",
93
+ "arrow-body-style": "warn",
94
+ "block-scoped-var": "warn",
95
+
96
+ /**
97
+ * Superseded by the `@typescript-eslint/naming-convention` rule. (`camelcase` is used to enforce
98
+ * naming conventions.)
99
+ */
100
+ camelcase: "off",
101
+
102
+ /**
103
+ * Superseded by the `complete/complete-sentences-jsdoc` and
104
+ * `complete/complete-sentences-line-comments` rules.
105
+ */
106
+ "capitalized-comments": "off",
107
+
108
+ /** Superseded by the `@typescript-eslint/class-methods-use-this` rule. */
109
+ "class-methods-use-this": "off",
110
+
111
+ /**
112
+ * Disabled since cyclomatic complexity is not a good enough general indicator of code complexity
113
+ * and leads to too many false positives.
114
+ */
115
+ complexity: "off",
116
+
117
+ /** Superseded by the `@typescript-eslint/consistent-return` rule. */
118
+ "consistent-return": "off",
119
+
120
+ "consistent-this": "warn",
121
+
122
+ /**
123
+ * Always requiring curly braces can partially ward against [Apple-style if statement
124
+ * bugs](https://www.imperialviolet.org/2014/02/22/applebug.html). Additionally, this rule needs
125
+ * to be set to "all" to [work properly with
126
+ * `eslint-prettier-config`](https://github.com/prettier/eslint-config-prettier#curly).
127
+ */
128
+ curly: ["warn", "all"],
129
+
130
+ /**
131
+ * Disabled since it would cause the `@typescript-eslint/switch-exhaustiveness-check` rule to not
132
+ * work properly.
133
+ */
134
+ "default-case": "off",
135
+
136
+ "default-case-last": "warn",
137
+
138
+ /** Superseded by the `@typescript-eslint/default-param-last` rule. */
139
+ "default-param-last": "off",
140
+
141
+ /** Superseded by the `@typescript-eslint/dot-notation` rule. */
142
+ "dot-notation": "off",
143
+
144
+ /** Superseded by the `complete/eqeqeq-fix` rule. */
145
+ eqeqeq: "off",
146
+
147
+ "func-name-matching": "warn",
148
+ "func-names": "warn",
149
+
150
+ /**
151
+ * Disabled since it is common in the TypeScript ecosystem to use both function forms, depending
152
+ * on the situation.
153
+ */
154
+ "func-style": "off",
155
+
156
+ "grouped-accessor-pairs": "warn",
157
+
158
+ /** Superseded by the `complete/no-for-in` rule. */
159
+ "guard-for-in": "off",
160
+
161
+ /** Disabled since it is expected to be configured with project-specific keywords. */
162
+ "id-denylist": "off",
163
+
164
+ /** Disabled because short variable names are understandable in many contexts. */
165
+ "id-length": "off",
166
+
167
+ /**
168
+ * Superseded by the `@typescript-eslint/naming-convention` rule. (`id-match` is used to enforce
169
+ * naming conventions.)
170
+ */
171
+ "id-match": "off",
172
+
173
+ /** Superseded by the `@typescript-eslint/init-declarations` rule. */
174
+ "init-declarations": "off",
175
+
176
+ /** The `enforceForIfStatements` option is enabled to make the rule stricter. */
177
+ "logical-assignment-operators": [
178
+ "warn",
179
+ "always",
180
+ {
181
+ enforceForIfStatements: true,
182
+ },
183
+ ],
184
+
185
+ "max-classes-per-file": "warn",
186
+
187
+ /** Disabled since this rule is too prescriptive for general-purpose use. */
188
+ "max-depth": "off",
189
+
190
+ /**
191
+ * Disabled because enforcing an arbitrary line threshold for every file in a project does not
192
+ * provide much value.
193
+ */
194
+ "max-lines": "off",
195
+
196
+ /**
197
+ * Disabled because enforcing an arbitrary line threshold for every function in a project does not
198
+ * provide much value.
199
+ */
200
+ "max-lines-per-function": "off",
201
+
202
+ "max-nested-callbacks": "warn",
203
+
204
+ /** Superseded by the `@typescript-eslint/max-params` rule. */
205
+ "max-params": "off",
206
+
207
+ /**
208
+ * Disabled because enforcing an arbitrary statement threshold for every function in a project
209
+ * does not provide much value.
210
+ */
211
+ "max-statements": "off",
212
+
213
+ /** Disabled because it is conventional to use both kinds of comments in TypeScript projects. */
214
+ "multiline-comment-style": "off",
215
+
216
+ "new-cap": "warn",
217
+ "no-alert": "warn",
218
+
219
+ /** Superseded by the `@typescript-eslint/no-array-constructor` rule. */
220
+ "no-array-constructor": "off",
221
+
222
+ "no-bitwise": "warn",
223
+ "no-caller": "warn",
224
+ "no-case-declarations": "warn",
225
+ "no-confusing-arrow": "off", // eslint-config-prettier
226
+
227
+ /**
228
+ * Disabled because command-line programs written in TypeScript commonly write to standard out and
229
+ * standard error.
230
+ */
231
+ "no-console": "off",
232
+
233
+ /**
234
+ * Disabled because proper use of continues can reduce indentation for long blocks of code in the
235
+ * same way as the [early return
236
+ * pattern](https://medium.com/swlh/return-early-pattern-3d18a41bba8).
237
+ */
238
+ "no-continue": "off",
239
+
240
+ "no-delete-var": "warn",
241
+
242
+ /** Disabled since it is incompatible with the `unicorn/better-regex` rule. */
243
+ "no-div-regex": "off",
244
+
245
+ /** The `allowElseIf` option is disabled to make the rule stricter. */
246
+ "no-else-return": [
247
+ "warn",
248
+ {
249
+ allowElseIf: false,
250
+ },
251
+ ],
252
+
253
+ "no-empty": "warn",
254
+
255
+ /** Superseded by the `@typescript-eslint/no-empty-function` rule. */
256
+ "no-empty-function": "off",
257
+
258
+ "no-empty-static-block": "warn",
259
+ "no-eq-null": "warn",
260
+ "no-eval": "warn",
261
+ "no-extend-native": "warn",
262
+ "no-extra-bind": "warn",
263
+ "no-extra-boolean-cast": "warn",
264
+ "no-extra-label": "warn",
265
+
266
+ /** Superseded by the `@typescript-eslint/no-extra-semi` rule. */
267
+ "no-extra-semi": "off",
268
+
269
+ "no-floating-decimal": "off", // eslint-config-prettier
270
+ "no-global-assign": "warn",
271
+ "no-implicit-coercion": "warn",
272
+ "no-implicit-globals": "warn",
273
+
274
+ /** Superseded by the `@typescript-eslint/no-implied-eval` rule. */
275
+ "no-implied-eval": "off",
276
+
277
+ /** Disabled because inline comments are common in the TypeScript ecosystem. */
278
+ "no-inline-comments": "off",
279
+
280
+ /** Superseded by the `@typescript-eslint/no-invalid-this` rule. */
281
+ "no-invalid-this": "off",
282
+
283
+ "no-iterator": "warn",
284
+ "no-label-var": "warn",
285
+ "no-labels": "warn",
286
+ "no-lone-blocks": "warn",
287
+ "no-lonely-if": "warn",
288
+
289
+ /** Superseded by the `@typescript-eslint/no-loop-func` rule. */
290
+ "no-loop-func": "off",
291
+
292
+ /** Superseded by the `@typescript-eslint/no-magic-numbers` rule. */
293
+ "no-magic-numbers": "off",
294
+
295
+ "no-mixed-operators": "off", // eslint-config-prettier
296
+ "no-multi-assign": "warn",
297
+ "no-multi-str": "warn",
298
+
299
+ /** Superseded by the `unicorn/no-negated-condition` rule. */
300
+ "no-negated-condition": "off",
301
+
302
+ /**
303
+ * `unicorn/no-nested-ternary` is a modified version of this rule but that version is less strict.
304
+ */
305
+ "no-nested-ternary": "warn",
306
+
307
+ "no-new": "warn",
308
+ "no-new-func": "warn",
309
+ "no-new-wrappers": "warn",
310
+ "no-nonoctal-decimal-escape": "warn",
311
+ "no-object-constructor": "warn",
312
+ "no-octal": "warn",
313
+ "no-octal-escape": "warn",
314
+
315
+ /**
316
+ * The options are [copied from
317
+ * Airbnb](https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/best-practices.js).
318
+ */
319
+ "no-param-reassign": [
320
+ "warn",
321
+ {
322
+ props: true,
323
+ ignorePropertyModificationsFor: [
324
+ "acc", // for reduce accumulators
325
+ "accumulator", // for reduce accumulators
326
+ "e", // for e.returnvalue
327
+ "ctx", // for Koa routing
328
+ "context", // for Koa routing
329
+ "req", // for Express requests
330
+ "request", // for Express requests
331
+ "res", // for Express responses
332
+ "response", // for Express responses
333
+ "$scope", // for Angular 1 scopes
334
+ "staticContext", // for ReactRouter context
335
+ ],
336
+ },
337
+ ],
338
+
339
+ /**
340
+ * Disabled because the rule is unnecessary when using Prettier. (Unary operators can lead to
341
+ * errors with minified code, but Prettier adds semicolons automatically.)
342
+ */
343
+ "no-plusplus": "off",
344
+
345
+ "no-proto": "warn",
346
+
347
+ /** Superseded by the `@typescript-eslint/block-spacing` rule. */
348
+ "no-redeclare": "off",
349
+
350
+ "no-regex-spaces": "warn",
351
+
352
+ /**
353
+ * The options are [copied from
354
+ * Airbnb](https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/es6.js).
355
+ */
356
+ "no-restricted-exports": [
357
+ "warn",
358
+ {
359
+ restrictedNamedExports: [
360
+ "default", // use `export default` to provide a default export
361
+ "then", // this will cause tons of confusion when your module is dynamically `import()`ed, and will break in most node ESM versions
362
+ ],
363
+ },
364
+ ],
365
+
366
+ /**
367
+ * The options are [copied from
368
+ * Airbnb](https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/variables.js).
369
+ */
370
+ "no-restricted-globals": [
371
+ "warn",
372
+ {
373
+ name: "isFinite",
374
+ message:
375
+ "Use Number.isFinite instead: https://github.com/airbnb/javascript#standard-library--isfinite",
376
+ },
377
+ {
378
+ name: "isNaN",
379
+ message:
380
+ "Use Number.isNaN instead: https://github.com/airbnb/javascript#standard-library--isnan",
381
+ },
382
+ ...confusingBrowserGlobals,
383
+ ],
384
+
385
+ /** Superseded by the `@typescript-eslint/no-restricted-imports` rule. */
386
+ "no-restricted-imports": "off",
387
+
388
+ /**
389
+ * The options are [copied from
390
+ * Airbnb](https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/best-practices.js).
391
+ */
392
+ "no-restricted-properties": [
393
+ "warn",
394
+ {
395
+ object: "arguments",
396
+ property: "callee",
397
+ message: "arguments.callee is deprecated",
398
+ },
399
+ {
400
+ object: "global",
401
+ property: "isFinite",
402
+ message: "Please use Number.isFinite instead",
403
+ },
404
+ {
405
+ object: "self",
406
+ property: "isFinite",
407
+ message: "Please use Number.isFinite instead",
408
+ },
409
+ {
410
+ object: "window",
411
+ property: "isFinite",
412
+ message: "Please use Number.isFinite instead",
413
+ },
414
+ {
415
+ object: "global",
416
+ property: "isNaN",
417
+ message: "Please use Number.isNaN instead",
418
+ },
419
+ {
420
+ object: "self",
421
+ property: "isNaN",
422
+ message: "Please use Number.isNaN instead",
423
+ },
424
+ {
425
+ object: "window",
426
+ property: "isNaN",
427
+ message: "Please use Number.isNaN instead",
428
+ },
429
+ {
430
+ property: "__defineGetter__",
431
+ message: "Please use Object.defineProperty instead.",
432
+ },
433
+ {
434
+ property: "__defineSetter__",
435
+ message: "Please use Object.defineProperty instead.",
436
+ },
437
+ {
438
+ object: "Math",
439
+ property: "pow",
440
+ message: "Use the exponentiation operator (**) instead.",
441
+ },
442
+ ],
443
+
444
+ /** Disabled because it is intended for disallowing specific language features per-project. */
445
+ "no-restricted-syntax": "off",
446
+
447
+ /** The `always` option is provided to make the rule stricter. */
448
+ "no-return-assign": ["warn", "always"],
449
+
450
+ "no-script-url": "warn",
451
+
452
+ /**
453
+ * Disabled because [it can conflict with
454
+ * Prettier](https://github.com/prettier/eslint-config-prettier/tree/main#no-sequences).
455
+ */
456
+ "no-sequences": "off",
457
+
458
+ /** Superseded by the `@typescript-eslint/no-shadow` rule. */
459
+ "no-shadow": "off",
460
+
461
+ "no-shadow-restricted-names": "warn",
462
+
463
+ /**
464
+ * Disabled because ternaries are common in the TypeScript ecosystem and can often lead to concise
465
+ * code that is easy to read.
466
+ */
467
+ "no-ternary": "off",
468
+
469
+ /** Superseded by the `@typescript-eslint/no-throw-literal` rule. */
470
+ "no-throw-literal": "off",
471
+
472
+ "no-undef-init": "warn",
473
+
474
+ /**
475
+ * Disabled because in TypeScript, it is common to explicitly check for undefined for the purposes
476
+ * of type narrowing.
477
+ */
478
+ "no-undefined": "off",
479
+
480
+ /**
481
+ * Disabled since it is a common pattern to use underscores to temporarily allow unused variables
482
+ * during development.
483
+ */
484
+ "no-underscore-dangle": "off",
485
+
486
+ /** The `defaultAssignment` option is disabled to make the rule stricter. */
487
+ "no-unneeded-ternary": [
488
+ "warn",
489
+ {
490
+ defaultAssignment: false,
491
+ },
492
+ ],
493
+
494
+ /** Superseded by the `@typescript-eslint/no-unused-expressions` rule. */
495
+ "no-unused-expressions": "off",
496
+
497
+ "no-unused-labels": "warn",
498
+ "no-useless-assignment": "warn",
499
+ "no-useless-call": "warn",
500
+ "no-useless-catch": "warn",
501
+
502
+ /** The `enforceForClassMembers` option is enabled to make the rule stricter. */
503
+ "no-useless-computed-key": [
504
+ "warn",
505
+ {
506
+ enforceForClassMembers: true,
507
+ },
508
+ ],
509
+
510
+ "no-useless-concat": "warn",
511
+
512
+ /** Superseded by the `@typescript-eslint/no-useless-constructor` rule. */
513
+ "no-useless-constructor": "off",
514
+
515
+ "no-useless-escape": "warn",
516
+ "no-useless-rename": "warn",
517
+
518
+ /**
519
+ * Superseded by the `complete/no-useless-return` rule (since the auto-fix is usually unwanted).
520
+ */
521
+ "no-useless-return": "off",
522
+
523
+ "no-var": "warn",
524
+ "no-void": "warn",
525
+
526
+ /** Superseded by the `unicorn/expiring-todo-comments` rule. */
527
+ "no-warning-comments": "off",
528
+
529
+ "no-with": "warn",
530
+
531
+ /** The `ignoreConstructors` option is disabled to make the rule stricter. */
532
+ "object-shorthand": [
533
+ "warn",
534
+ "always",
535
+ {
536
+ ignoreConstructors: false,
537
+ },
538
+ ],
539
+
540
+ /**
541
+ * The `never` option is provided to disallow multi-variable declarations (since they can be
542
+ * confusing).
543
+ */
544
+ "one-var": ["warn", "never"],
545
+
546
+ "one-var-declaration-per-line": "off", // eslint-config-prettier
547
+ "operator-assignment": "warn",
548
+ "prefer-arrow-callback": "warn",
549
+
550
+ /** Superseded by the `complete/prefer-const` rule (since the auto-fix is usually unwanted). */
551
+ "prefer-const": "off",
552
+
553
+ /** Superseded by the `@typescript-eslint/prefer-destructuring` rule. */
554
+ "prefer-destructuring": "off",
555
+
556
+ "prefer-exponentiation-operator": "warn",
557
+
558
+ /**
559
+ * Disabled because it is common to have a regex with only a single match, in which case a named
560
+ * capture group can be needlessly verbose (and cause extra type narrowing).
561
+ */
562
+ "prefer-named-capture-group": "off",
563
+
564
+ "prefer-numeric-literals": "warn",
565
+ "prefer-object-has-own": "warn",
566
+ "prefer-object-spread": "warn",
567
+
568
+ /** Superseded by the `@typescript-eslint/prefer-promise-reject-errors` rule. */
569
+ "prefer-promise-reject-errors": "off",
570
+
571
+ /** The `disallowRedundantWrapping` option is enabled to make the rule stricter. */
572
+ "prefer-regex-literals": [
573
+ "warn",
574
+ {
575
+ disallowRedundantWrapping: true,
576
+ },
577
+ ],
578
+
579
+ "prefer-rest-params": "warn",
580
+ "prefer-spread": "warn",
581
+ "prefer-template": "warn",
582
+ "quote-props": "off", // eslint-config-prettier
583
+ radix: "warn",
584
+
585
+ /** Superseded by the `@typescript-eslint/require-await` rule. */
586
+ "require-await": "off",
587
+
588
+ /**
589
+ * Disabled because requiring the `u` or the `v` flag for ASCII text is verbose and cumbersome.
590
+ * (Even though these flags would also enable regex strict mode, the marginal benefit is not worth
591
+ * the verbosity.)
592
+ */
593
+ "require-unicode-regexp": "off",
594
+
595
+ "require-yield": "warn",
596
+
597
+ /** Disabled since this is automatically handled by `prettier-plugin-organize-imports`. */
598
+ "sort-imports": "off",
599
+
600
+ /** Disabled because object keys are often not meant to be sorted in alphabetical order. */
601
+ "sort-keys": "off",
602
+
603
+ /**
604
+ * Disabled because variable declarations are often not meant to be sorted in alphabetical order.
605
+ */
606
+ "sort-vars": "off",
607
+
608
+ /**
609
+ * Partially superseded by `complete/format-jsdoc-comments` and `complete/format-line-comments`,
610
+ * but those rules do not handle trailing line comments.
611
+ *
612
+ * The `markers` option is provided to make this rule ignore lines that start with "///".
613
+ */
614
+ "spaced-comment": [
615
+ "warn",
616
+ "always",
617
+ {
618
+ markers: ["/"],
619
+ },
620
+ ],
621
+
622
+ /** The `never` option is provided to make the rule stricter. */
623
+ strict: ["warn", "never"],
624
+
625
+ "symbol-description": "warn",
626
+ "vars-on-top": "warn",
627
+ yoda: "warn",
628
+ };
629
+
630
+ /** @type {Record<string, import("@typescript-eslint/utils").TSESLint.SharedConfig.RuleEntry>} */
631
+ const LAYOUT_AND_FORMATTING = {
632
+ "unicode-bom": "warn",
633
+ };
634
+
635
+ /** @type {Record<string, import("@typescript-eslint/utils").TSESLint.SharedConfig.RuleEntry>} */
636
+ const DEPRECATED = {
637
+ /** Disabled since the rule is deprecated. */
638
+ "array-bracket-newline": "off",
639
+
640
+ /** Disabled since the rule is deprecated. */
641
+ "array-bracket-spacing": "off",
642
+
643
+ /** Disabled since the rule is deprecated. */
644
+ "array-element-newline": "off",
645
+
646
+ /** Disabled since the rule is deprecated. */
647
+ "arrow-parens": "off",
648
+
649
+ /** Disabled since the rule is deprecated. */
650
+ "arrow-spacing": "off",
651
+
652
+ /** Disabled since the rule is deprecated. */
653
+ "block-spacing": "off",
654
+
655
+ /** Disabled since the rule is deprecated. */
656
+ "brace-style": "off",
657
+
658
+ /** Disabled since the rule is deprecated. */
659
+ "comma-dangle": "off",
660
+
661
+ /** Disabled since the rule is deprecated. */
662
+ "comma-spacing": "off",
663
+
664
+ /** Disabled since the rule is deprecated. */
665
+ "comma-style": "off",
666
+
667
+ /** Disabled since the rule is deprecated. */
668
+ "computed-property-spacing": "off",
669
+
670
+ /** Disabled since the rule is deprecated. */
671
+ "dot-location": "off",
672
+
673
+ /** Disabled since the rule is deprecated. */
674
+ "eol-last": "off",
675
+
676
+ /** Disabled since the rule is deprecated. */
677
+ "func-call-spacing": "off",
678
+
679
+ /** Disabled since the rule is deprecated. */
680
+ "function-call-argument-newline": "off",
681
+
682
+ /** Disabled since the rule is deprecated. */
683
+ "function-paren-newline": "off",
684
+
685
+ /** Disabled since the rule is deprecated. */
686
+ "generator-star-spacing": "off",
687
+
688
+ /** Disabled since the rule is deprecated. */
689
+ "implicit-arrow-linebreak": "off",
690
+
691
+ /** Disabled since the rule is deprecated. */
692
+ indent: "off",
693
+
694
+ /** Disabled since the rule is deprecated. */
695
+ "jsx-quotes": "off",
696
+
697
+ /** Disabled since the rule is deprecated. */
698
+ "key-spacing": "off",
699
+
700
+ /** Disabled since the rule is deprecated. */
701
+ "keyword-spacing": "off",
702
+
703
+ /** Disabled since the rule is deprecated. */
704
+ "line-comment-position": "off",
705
+
706
+ /** Disabled since the rule is deprecated. */
707
+ "linebreak-style": "off",
708
+
709
+ /** Disabled since the rule is deprecated. */
710
+ "lines-around-comment": "off",
711
+
712
+ /** Disabled since the rule is deprecated. */
713
+ "lines-between-class-members": "off",
714
+
715
+ /** Disabled since the rule is deprecated. */
716
+ "max-len": "off",
717
+
718
+ /** Disabled since the rule is deprecated. */
719
+ "max-statements-per-line": "off",
720
+
721
+ /** Disabled since the rule is deprecated. */
722
+ "multiline-ternary": "off",
723
+
724
+ /** Disabled since the rule is deprecated. */
725
+ "new-parens": "off",
726
+
727
+ /** Disabled since the rule is deprecated. */
728
+ "newline-per-chained-call": "off",
729
+
730
+ /** Disabled since the rule is deprecated. */
731
+ "no-extra-parens": "off",
732
+
733
+ /** Disabled since the rule is deprecated. */
734
+ "no-mixed-spaces-and-tabs": "off",
735
+
736
+ /** Disabled since the rule is deprecated. */
737
+ "no-multi-spaces": "off",
738
+
739
+ /** Disabled since the rule is deprecated. */
740
+ "no-multiple-empty-lines": "off",
741
+
742
+ /** Disabled since the rule is deprecated. */
743
+ "no-tabs": "off",
744
+
745
+ /** Disabled since the rule is deprecated. */
746
+ "no-trailing-spaces": "off",
747
+
748
+ /** Disabled since the rule is deprecated. */
749
+ "no-whitespace-before-property": "off",
750
+
751
+ /** Disabled since the rule is deprecated. */
752
+ "nonblock-statement-body-position": "off",
753
+
754
+ /** Disabled since the rule is deprecated. */
755
+ "object-curly-newline": "off",
756
+
757
+ /** Disabled since the rule is deprecated. */
758
+ "object-curly-spacing": "off",
759
+
760
+ /** Disabled since the rule is deprecated. */
761
+ "object-property-newline": "off",
762
+
763
+ /** Disabled since the rule is deprecated. */
764
+ "operator-linebreak": "off",
765
+
766
+ /** Disabled since the rule is deprecated. */
767
+ "padded-blocks": "off",
768
+
769
+ /** Disabled since the rule is deprecated. */
770
+ "padding-line-between-statements": "off",
771
+
772
+ /** Disabled since the rule is deprecated. */
773
+ quotes: "off",
774
+
775
+ /** Disabled since the rule is deprecated. */
776
+ "rest-spread-spacing": "off",
777
+
778
+ /** Disabled since the rule is deprecated. */
779
+ semi: "off",
780
+
781
+ /** Disabled since the rule is deprecated. */
782
+ "semi-spacing": "off",
783
+
784
+ /** Disabled since the rule is deprecated. */
785
+ "semi-style": "off",
786
+
787
+ /** Disabled since the rule is deprecated. */
788
+ "space-before-blocks": "off",
789
+
790
+ /** Disabled since the rule is deprecated. */
791
+ "space-before-function-paren": "off",
792
+
793
+ /** Disabled since the rule is deprecated. */
794
+ "space-in-parens": "off",
795
+
796
+ /** Disabled since the rule is deprecated. */
797
+ "space-infix-ops": "off",
798
+
799
+ /** Disabled since the rule is deprecated. */
800
+ "space-unary-ops": "off",
801
+
802
+ /** Disabled since the rule is deprecated. */
803
+ "switch-colon-spacing": "off",
804
+
805
+ /** Disabled since the rule is deprecated. */
806
+ "template-curly-spacing": "off",
807
+
808
+ /** Disabled since the rule is deprecated. */
809
+ "template-tag-spacing": "off",
810
+
811
+ /** Disabled since the rule is deprecated. */
812
+ "wrap-iife": "off",
813
+
814
+ /** Disabled since the rule is deprecated. */
815
+ "wrap-regex": "off",
816
+
817
+ /** Disabled since the rule is deprecated. */
818
+ "yield-star-spacing": "off",
819
+ };
820
+
821
+ /**
822
+ * This ESLint config only contains built-in rules from ESLint itself:
823
+ * https://eslint.org/docs/latest/rules/
824
+ *
825
+ * Rules are separated into categories:
826
+ * 1) Possible Problems
827
+ * 2) Suggestions
828
+ * 3) Layout & Formatting
829
+ * 4) Deprecated
830
+ */
831
+ export const baseESLint = tseslint.config({
832
+ rules: {
833
+ ...POSSIBLE_PROBLEMS,
834
+ ...SUGGESTIONS,
835
+ ...LAYOUT_AND_FORMATTING,
836
+ ...DEPRECATED,
837
+ },
838
+ });