eslint-config-setup 0.3.2 → 0.4.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/README.md CHANGED
@@ -37,6 +37,8 @@ import { getEslintConfig } from "eslint-config-setup"
37
37
  export default await getEslintConfig({ react: true })
38
38
  ```
39
39
 
40
+ Requires Node.js >= 22, ESLint >= 9.22, and TypeScript >= 5.0.
41
+
40
42
  ## Configuration flags
41
43
 
42
44
  | Flag | Default | What it does |
@@ -64,12 +66,16 @@ export default config
64
66
  ## Documentation
65
67
 
66
68
  - [Getting Started](https://sebastian-software.github.io/eslint-config-setup/guide/getting-started) — installation and setup
69
+ - [React Linting](https://sebastian-software.github.io/eslint-config-setup/guide/react) — React 19 rules, compat layer, and OxLint acceleration
67
70
  - [AI Mode](https://sebastian-software.github.io/eslint-config-setup/guide/ai-mode) — why AI-generated code needs different rules
68
71
  - [OxLint Integration](https://sebastian-software.github.io/eslint-config-setup/guide/oxlint) — run ESLint + OxLint without conflicts
69
72
  - [All 27 Plugins](https://sebastian-software.github.io/eslint-config-setup/guide/plugins) — what's included and why
70
73
  - [Configuration](https://sebastian-software.github.io/eslint-config-setup/guide/configuration) — flags and usage examples
71
74
  - [Rule API](https://sebastian-software.github.io/eslint-config-setup/guide/rule-api) — rule manipulation and scoped overrides
75
+ - [File Conventions](https://sebastian-software.github.io/eslint-config-setup/guide/file-conventions) — automatic test/config/story/script overrides
76
+ - [Modular Imports](https://sebastian-software.github.io/eslint-config-setup/guide/modular-imports) — compose individual config blocks manually
72
77
  - [Architecture](https://sebastian-software.github.io/eslint-config-setup/guide/architecture) — how pre-generation works
78
+ - [Contributing](https://sebastian-software.github.io/eslint-config-setup/guide/contributing) — monorepo workflow, self-linting, and hooks
73
79
 
74
80
  ## Contributing
75
81
 
@@ -7,8 +7,6 @@ import deMorganPlugin from "eslint-plugin-de-morgan"
7
7
  import importXPlugin from "eslint-plugin-import-x"
8
8
  import jsdocPlugin from "eslint-plugin-jsdoc"
9
9
  import jsonPlugin from "@eslint/json"
10
- import jsxA11yPlugin from "eslint-plugin-jsx-a11y"
11
- import nodePlugin from "eslint-plugin-n"
12
10
  import oxlintPlugin from "eslint-plugin-oxlint"
13
11
  import packageJsonPlugin from "eslint-plugin-package-json"
14
12
  import perfectionistPlugin from "eslint-plugin-perfectionist"
@@ -27,9 +25,10 @@ export default [
27
25
  // TypeScript parser setup
28
26
  ...tseslint.configs.strictTypeChecked.slice(0, 2),
29
27
 
30
- // Base rules — all effective rules for *.ts files
28
+ // Base rules — all effective rules for TS plus shared JS/TS rules
31
29
  {
32
30
  name: "eslint-config-setup/base",
31
+ ignores: ["**/*.{md,mdx}"],
33
32
  plugins: {
34
33
  "@cspell": cspellPlugin,
35
34
  "@typescript-eslint": tseslint.plugin,
@@ -37,8 +36,6 @@ export default [
37
36
  "de-morgan": deMorganPlugin,
38
37
  "import": importXPlugin,
39
38
  "jsdoc": jsdocPlugin,
40
- "jsx-a11y": jsxA11yPlugin,
41
- "node": nodePlugin,
42
39
  "perfectionist": perfectionistPlugin,
43
40
  "regexp": regexpPlugin,
44
41
  "security": securityPlugin,
@@ -70,7 +67,6 @@ export default [
70
67
  }
71
68
  ],
72
69
  "@typescript-eslint/dot-notation": "error",
73
- "@typescript-eslint/explicit-member-accessibility": "error",
74
70
  "@typescript-eslint/member-ordering": [
75
71
  "warn",
76
72
  {
@@ -365,13 +361,22 @@ export default [
365
361
  "de-morgan/no-negated-conjunction": "error",
366
362
  "de-morgan/no-negated-disjunction": "error",
367
363
  "default-case-last": "error",
368
- "eqeqeq": "error",
364
+ "eqeqeq": [
365
+ "error",
366
+ "smart"
367
+ ],
369
368
  "grouped-accessor-pairs": [
370
369
  "error",
371
370
  "getBeforeSet"
372
371
  ],
373
372
  "guard-for-in": "error",
374
373
  "import/newline-after-import": "error",
374
+ "import/no-extraneous-dependencies": [
375
+ "error",
376
+ {
377
+ "includeTypes": true
378
+ }
379
+ ],
375
380
  "import/no-useless-path-segments": "error",
376
381
  "jsdoc/check-alignment": "error",
377
382
  "jsdoc/check-param-names": "error",
@@ -392,8 +397,6 @@ export default [
392
397
  "jsdoc/require-yields-type": "error",
393
398
  "jsdoc/ts-no-empty-object-type": "error",
394
399
  "jsdoc/valid-types": "error",
395
- "jsx-a11y/interactive-supports-focus": "error",
396
- "jsx-a11y/no-noninteractive-element-interactions": "error",
397
400
  "logical-assignment-operators": [
398
401
  "error",
399
402
  "always",
@@ -416,7 +419,7 @@ export default [
416
419
  "max-lines-per-function": [
417
420
  "error",
418
421
  {
419
- "max": 50,
422
+ "max": 100,
420
423
  "skipBlankLines": true,
421
424
  "skipComments": true
422
425
  }
@@ -448,6 +451,7 @@ export default [
448
451
  "no-extra-bind": "error",
449
452
  "no-fallthrough": "error",
450
453
  "no-implicit-coercion": "error",
454
+ "no-implicit-globals": "error",
451
455
  "no-labels": "error",
452
456
  "no-lone-blocks": "error",
453
457
  "no-lonely-if": "error",
@@ -477,23 +481,33 @@ export default [
477
481
  ],
478
482
  "no-script-url": "error",
479
483
  "no-self-compare": "error",
480
- "no-sequences": "error",
484
+ "no-sequences": [
485
+ "error",
486
+ {
487
+ "allowInParentheses": false
488
+ }
489
+ ],
481
490
  "no-template-curly-in-string": "error",
482
491
  "no-unmodified-loop-condition": "error",
483
492
  "no-unneeded-ternary": "error",
484
493
  "no-unreachable-loop": "error",
485
494
  "no-useless-assignment": "error",
486
495
  "no-useless-call": "error",
487
- "no-useless-computed-key": "error",
496
+ "no-useless-computed-key": [
497
+ "error",
498
+ {
499
+ "enforceForClassMembers": true
500
+ }
501
+ ],
488
502
  "no-useless-concat": "error",
489
503
  "no-useless-return": "error",
490
504
  "no-var": "error",
491
505
  "no-warning-comments": "warn",
492
- "node/no-unsupported-features/node-builtins": "error",
493
506
  "object-shorthand": [
494
507
  "error",
495
508
  "always",
496
509
  {
510
+ "avoidExplicitReturnArrows": true,
497
511
  "avoidQuotes": true
498
512
  }
499
513
  ],
@@ -528,14 +542,10 @@ export default [
528
542
  "allowNamedFunctions": true
529
543
  }
530
544
  ],
531
- "prefer-const": [
532
- "error",
533
- {
534
- "destructuring": "all"
535
- }
536
- ],
545
+ "prefer-const": "error",
537
546
  "prefer-exponentiation-operator": "error",
538
547
  "prefer-named-capture-group": "error",
548
+ "prefer-numeric-literals": "error",
539
549
  "prefer-object-has-own": "error",
540
550
  "prefer-object-spread": "error",
541
551
  "prefer-regex-literals": "error",
@@ -671,7 +681,6 @@ export default [
671
681
  "sonarjs/public-static-readonly": "error",
672
682
  "sonarjs/reduce-initial-value": "error",
673
683
  "symbol-description": "error",
674
- "unicorn/custom-error-definition": "error",
675
684
  "unicorn/no-array-push-push": "error",
676
685
  "unicorn/no-for-loop": "error",
677
686
  "unicorn/prefer-export-from": [
@@ -680,7 +689,6 @@ export default [
680
689
  "ignoreUsedVariables": true
681
690
  }
682
691
  ],
683
- "unicorn/prefer-import-meta-properties": "error",
684
692
  "unicorn/prefer-switch": [
685
693
  "error",
686
694
  {
@@ -700,12 +708,17 @@ export default [
700
708
  rules: {
701
709
  "@typescript-eslint/await-thenable": "off",
702
710
  "@typescript-eslint/consistent-return": "off",
711
+ "@typescript-eslint/consistent-type-exports": "off",
703
712
  "@typescript-eslint/dot-notation": "off",
713
+ "@typescript-eslint/member-ordering": "off",
714
+ "@typescript-eslint/method-signature-style": "off",
715
+ "@typescript-eslint/naming-convention": "off",
704
716
  "@typescript-eslint/no-array-delete": "off",
705
717
  "@typescript-eslint/no-base-to-string": "off",
706
718
  "@typescript-eslint/no-confusing-void-expression": "off",
707
719
  "@typescript-eslint/no-deprecated": "off",
708
720
  "@typescript-eslint/no-duplicate-type-constituents": "off",
721
+ "@typescript-eslint/no-floating-promises": "off",
709
722
  "@typescript-eslint/no-for-in-array": "off",
710
723
  "@typescript-eslint/no-implied-eval": "off",
711
724
  "@typescript-eslint/no-meaningless-void-operator": "off",
@@ -727,6 +740,7 @@ export default [
727
740
  "@typescript-eslint/no-unsafe-enum-comparison": "off",
728
741
  "@typescript-eslint/no-unsafe-member-access": "off",
729
742
  "@typescript-eslint/no-unsafe-return": "off",
743
+ "@typescript-eslint/no-unsafe-type-assertion": "off",
730
744
  "@typescript-eslint/no-unsafe-unary-minus": "off",
731
745
  "@typescript-eslint/no-useless-default-assignment": "off",
732
746
  "@typescript-eslint/non-nullable-type-assertion-style": "off",
@@ -737,26 +751,46 @@ export default [
737
751
  "@typescript-eslint/prefer-nullish-coalescing": "off",
738
752
  "@typescript-eslint/prefer-optional-chain": "off",
739
753
  "@typescript-eslint/prefer-promise-reject-errors": "off",
754
+ "@typescript-eslint/prefer-readonly": "off",
740
755
  "@typescript-eslint/prefer-readonly-parameter-types": "off",
741
756
  "@typescript-eslint/prefer-reduce-type-parameter": "off",
742
757
  "@typescript-eslint/prefer-regexp-exec": "off",
743
758
  "@typescript-eslint/prefer-return-this-type": "off",
744
759
  "@typescript-eslint/prefer-string-starts-ends-with": "off",
760
+ "@typescript-eslint/promise-function-async": "off",
745
761
  "@typescript-eslint/related-getter-setter-pairs": "off",
762
+ "@typescript-eslint/require-array-sort-compare": "off",
746
763
  "@typescript-eslint/require-await": "off",
747
764
  "@typescript-eslint/restrict-plus-operands": "off",
748
765
  "@typescript-eslint/restrict-template-expressions": "off",
749
766
  "@typescript-eslint/return-await": "off",
750
767
  "@typescript-eslint/strict-boolean-expressions": "off",
751
768
  "@typescript-eslint/strict-void-return": "off",
769
+ "@typescript-eslint/switch-exhaustiveness-check": "off",
752
770
  "@typescript-eslint/unbound-method": "off",
753
771
  "@typescript-eslint/use-unknown-in-catch-callback-variable": "off",
772
+ "dot-notation": "off",
754
773
  "getter-return": "error",
774
+ "no-array-constructor": "off",
755
775
  "no-dupe-args": "error",
776
+ "no-empty-function": "off",
777
+ "no-implied-eval": "off",
756
778
  "no-new-symbol": "off",
757
779
  "no-redeclare": "error",
780
+ "no-return-await": "off",
781
+ "no-shadow": "off",
782
+ "no-throw-literal": "off",
758
783
  "no-undef": "error",
759
- "no-unreachable": "error"
784
+ "no-unreachable": "error",
785
+ "no-useless-constructor": "off",
786
+ "prefer-const": [
787
+ "error",
788
+ {
789
+ "destructuring": "all"
790
+ }
791
+ ],
792
+ "prefer-promise-reject-errors": "off",
793
+ "require-await": "off"
760
794
  },
761
795
  },
762
796
 
@@ -803,8 +837,7 @@ export default [
803
837
  "vitest/prefer-strict-equal": "error",
804
838
  "vitest/prefer-to-be": "error",
805
839
  "vitest/prefer-to-have-length": "error",
806
- "vitest/require-top-level-describe": "error",
807
- "vitest/valid-title": "error"
840
+ "vitest/require-top-level-describe": "error"
808
841
  },
809
842
  },
810
843
 
@@ -985,7 +1018,88 @@ export default [
985
1018
  // Markdown/MDX code block linting
986
1019
  {
987
1020
  ...mdxPlugin.flatCodeBlocks,
1021
+ languageOptions: {
1022
+ ...mdxPlugin.flatCodeBlocks.languageOptions,
1023
+ parserOptions: {
1024
+ ...mdxPlugin.flatCodeBlocks.languageOptions?.parserOptions,
1025
+ projectService: false,
1026
+ },
1027
+ },
988
1028
  rules: {
1029
+ ...{
1030
+ "@typescript-eslint/await-thenable": "off",
1031
+ "@typescript-eslint/consistent-type-exports": "off",
1032
+ "@typescript-eslint/dot-notation": "off",
1033
+ "@typescript-eslint/member-ordering": "off",
1034
+ "@typescript-eslint/method-signature-style": "off",
1035
+ "@typescript-eslint/naming-convention": "off",
1036
+ "@typescript-eslint/no-array-delete": "off",
1037
+ "@typescript-eslint/no-base-to-string": "off",
1038
+ "@typescript-eslint/no-confusing-void-expression": "off",
1039
+ "@typescript-eslint/no-deprecated": "off",
1040
+ "@typescript-eslint/no-duplicate-type-constituents": "off",
1041
+ "@typescript-eslint/no-floating-promises": "off",
1042
+ "@typescript-eslint/no-for-in-array": "off",
1043
+ "@typescript-eslint/no-implied-eval": "off",
1044
+ "@typescript-eslint/no-meaningless-void-operator": "off",
1045
+ "@typescript-eslint/no-misused-promises": "off",
1046
+ "@typescript-eslint/no-misused-spread": "off",
1047
+ "@typescript-eslint/no-mixed-enums": "off",
1048
+ "@typescript-eslint/no-redundant-type-constituents": "off",
1049
+ "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off",
1050
+ "@typescript-eslint/no-unnecessary-condition": "off",
1051
+ "@typescript-eslint/no-unnecessary-qualifier": "off",
1052
+ "@typescript-eslint/no-unnecessary-template-expression": "off",
1053
+ "@typescript-eslint/no-unnecessary-type-arguments": "off",
1054
+ "@typescript-eslint/no-unnecessary-type-assertion": "off",
1055
+ "@typescript-eslint/no-unnecessary-type-conversion": "off",
1056
+ "@typescript-eslint/no-unnecessary-type-parameters": "off",
1057
+ "@typescript-eslint/no-unsafe-argument": "off",
1058
+ "@typescript-eslint/no-unsafe-assignment": "off",
1059
+ "@typescript-eslint/no-unsafe-call": "off",
1060
+ "@typescript-eslint/no-unsafe-enum-comparison": "off",
1061
+ "@typescript-eslint/no-unsafe-member-access": "off",
1062
+ "@typescript-eslint/no-unsafe-return": "off",
1063
+ "@typescript-eslint/no-unsafe-type-assertion": "off",
1064
+ "@typescript-eslint/no-unsafe-unary-minus": "off",
1065
+ "@typescript-eslint/no-useless-default-assignment": "off",
1066
+ "@typescript-eslint/non-nullable-type-assertion-style": "off",
1067
+ "@typescript-eslint/only-throw-error": "off",
1068
+ "@typescript-eslint/prefer-find": "off",
1069
+ "@typescript-eslint/prefer-includes": "off",
1070
+ "@typescript-eslint/prefer-nullish-coalescing": "off",
1071
+ "@typescript-eslint/prefer-optional-chain": "off",
1072
+ "@typescript-eslint/prefer-promise-reject-errors": "off",
1073
+ "@typescript-eslint/prefer-readonly": "off",
1074
+ "@typescript-eslint/prefer-reduce-type-parameter": "off",
1075
+ "@typescript-eslint/prefer-regexp-exec": "off",
1076
+ "@typescript-eslint/prefer-return-this-type": "off",
1077
+ "@typescript-eslint/prefer-string-starts-ends-with": "off",
1078
+ "@typescript-eslint/promise-function-async": "off",
1079
+ "@typescript-eslint/related-getter-setter-pairs": "off",
1080
+ "@typescript-eslint/require-array-sort-compare": "off",
1081
+ "@typescript-eslint/require-await": "off",
1082
+ "@typescript-eslint/restrict-plus-operands": "off",
1083
+ "@typescript-eslint/restrict-template-expressions": "off",
1084
+ "@typescript-eslint/return-await": "off",
1085
+ "@typescript-eslint/strict-boolean-expressions": "off",
1086
+ "@typescript-eslint/strict-void-return": "off",
1087
+ "@typescript-eslint/switch-exhaustiveness-check": "off",
1088
+ "@typescript-eslint/unbound-method": "off",
1089
+ "@typescript-eslint/use-unknown-in-catch-callback-variable": "off",
1090
+ "dot-notation": "off",
1091
+ "no-array-constructor": "off",
1092
+ "no-empty-function": "off",
1093
+ "no-implied-eval": "off",
1094
+ "no-return-await": "off",
1095
+ "no-shadow": "off",
1096
+ "no-throw-literal": "off",
1097
+ "no-useless-constructor": "off",
1098
+ "prefer-promise-reject-errors": "off",
1099
+ "require-await": "off",
1100
+ "strict": "off",
1101
+ "unicode-bom": "off"
1102
+ },
989
1103
  ...mdxPlugin.flatCodeBlocks.rules,
990
1104
  "eol-last": "off",
991
1105
  "no-undef": "off",
@@ -25,9 +25,10 @@ export default [
25
25
  // TypeScript parser setup
26
26
  ...tseslint.configs.strictTypeChecked.slice(0, 2),
27
27
 
28
- // Base rules — all effective rules for *.ts files
28
+ // Base rules — all effective rules for TS plus shared JS/TS rules
29
29
  {
30
30
  name: "eslint-config-setup/base",
31
+ ignores: ["**/*.{md,mdx}"],
31
32
  plugins: {
32
33
  "@cspell": cspellPlugin,
33
34
  "@typescript-eslint": tseslint.plugin,
@@ -66,12 +67,22 @@ export default [
66
67
  }
67
68
  ],
68
69
  "@typescript-eslint/dot-notation": "error",
70
+ "@typescript-eslint/method-signature-style": [
71
+ "error",
72
+ "property"
73
+ ],
69
74
  "@typescript-eslint/no-array-delete": "error",
70
75
  "@typescript-eslint/no-base-to-string": "error",
71
76
  "@typescript-eslint/no-confusing-void-expression": "error",
72
77
  "@typescript-eslint/no-deprecated": "warn",
73
78
  "@typescript-eslint/no-duplicate-type-constituents": "error",
74
- "@typescript-eslint/no-floating-promises": "error",
79
+ "@typescript-eslint/no-floating-promises": [
80
+ "error",
81
+ {
82
+ "checkThenables": true,
83
+ "ignoreIIFE": true
84
+ }
85
+ ],
75
86
  "@typescript-eslint/no-for-in-array": "error",
76
87
  "@typescript-eslint/no-implied-eval": "error",
77
88
  "@typescript-eslint/no-meaningless-void-operator": "error",
@@ -93,6 +104,7 @@ export default [
93
104
  "@typescript-eslint/no-unsafe-enum-comparison": "error",
94
105
  "@typescript-eslint/no-unsafe-member-access": "error",
95
106
  "@typescript-eslint/no-unsafe-return": "error",
107
+ "@typescript-eslint/no-unsafe-type-assertion": "error",
96
108
  "@typescript-eslint/no-unsafe-unary-minus": "error",
97
109
  "@typescript-eslint/no-useless-default-assignment": "error",
98
110
  "@typescript-eslint/non-nullable-type-assertion-style": "error",
@@ -102,11 +114,19 @@ export default [
102
114
  "@typescript-eslint/prefer-nullish-coalescing": "error",
103
115
  "@typescript-eslint/prefer-optional-chain": "error",
104
116
  "@typescript-eslint/prefer-promise-reject-errors": "error",
117
+ "@typescript-eslint/prefer-readonly": "warn",
105
118
  "@typescript-eslint/prefer-reduce-type-parameter": "error",
106
119
  "@typescript-eslint/prefer-regexp-exec": "error",
107
120
  "@typescript-eslint/prefer-return-this-type": "error",
108
121
  "@typescript-eslint/prefer-string-starts-ends-with": "error",
122
+ "@typescript-eslint/promise-function-async": "error",
109
123
  "@typescript-eslint/related-getter-setter-pairs": "error",
124
+ "@typescript-eslint/require-array-sort-compare": [
125
+ "error",
126
+ {
127
+ "ignoreStringArrays": true
128
+ }
129
+ ],
110
130
  "@typescript-eslint/require-await": "error",
111
131
  "@typescript-eslint/restrict-plus-operands": [
112
132
  "error",
@@ -136,6 +156,13 @@ export default [
136
156
  }
137
157
  ],
138
158
  "@typescript-eslint/strict-void-return": "error",
159
+ "@typescript-eslint/switch-exhaustiveness-check": [
160
+ "error",
161
+ {
162
+ "allowDefaultCaseForExhaustiveSwitch": false,
163
+ "requireDefaultForNonUnion": true
164
+ }
165
+ ],
139
166
  "@typescript-eslint/unbound-method": "error",
140
167
  "@typescript-eslint/use-unknown-in-catch-callback-variable": "error",
141
168
  "accessor-pairs": [
@@ -168,6 +195,12 @@ export default [
168
195
  ],
169
196
  "guard-for-in": "error",
170
197
  "import/newline-after-import": "error",
198
+ "import/no-extraneous-dependencies": [
199
+ "error",
200
+ {
201
+ "includeTypes": true
202
+ }
203
+ ],
171
204
  "import/no-useless-path-segments": "error",
172
205
  "jsdoc/check-alignment": "error",
173
206
  "jsdoc/check-param-names": "error",
@@ -226,6 +259,7 @@ export default [
226
259
  "no-extend-native": "error",
227
260
  "no-extra-bind": "error",
228
261
  "no-fallthrough": "error",
262
+ "no-implicit-globals": "error",
229
263
  "no-labels": "error",
230
264
  "no-lone-blocks": "error",
231
265
  "no-multi-str": "error",
@@ -239,18 +273,40 @@ export default [
239
273
  "no-proto": "error",
240
274
  "no-prototype-builtins": "error",
241
275
  "no-regex-spaces": "error",
276
+ "no-return-assign": [
277
+ "error",
278
+ "always"
279
+ ],
242
280
  "no-script-url": "error",
243
281
  "no-self-compare": "error",
244
- "no-sequences": "error",
282
+ "no-sequences": [
283
+ "error",
284
+ {
285
+ "allowInParentheses": false
286
+ }
287
+ ],
245
288
  "no-template-curly-in-string": "error",
246
289
  "no-unmodified-loop-condition": "error",
247
290
  "no-unreachable-loop": "error",
248
291
  "no-useless-assignment": "error",
249
292
  "no-useless-call": "error",
250
- "no-useless-computed-key": "error",
293
+ "no-useless-computed-key": [
294
+ "error",
295
+ {
296
+ "enforceForClassMembers": true
297
+ }
298
+ ],
251
299
  "no-useless-concat": "error",
252
300
  "no-useless-return": "error",
253
301
  "no-var": "error",
302
+ "object-shorthand": [
303
+ "error",
304
+ "always",
305
+ {
306
+ "avoidExplicitReturnArrows": true,
307
+ "avoidQuotes": true
308
+ }
309
+ ],
254
310
  "perfectionist/sort-exports": "error",
255
311
  "perfectionist/sort-imports": [
256
312
  "error",
@@ -263,12 +319,13 @@ export default [
263
319
  "perfectionist/sort-named-imports": "error",
264
320
  "perfectionist/sort-union-types": "error",
265
321
  "prefer-const": "error",
322
+ "prefer-numeric-literals": "error",
266
323
  "prefer-object-has-own": "error",
267
324
  "prefer-object-spread": "error",
268
325
  "prefer-regex-literals": "error",
269
326
  "prefer-rest-params": "error",
270
327
  "prefer-spread": "error",
271
- "prefer-template": "error",
328
+ "prefer-template": "warn",
272
329
  "preserve-caught-error": "error",
273
330
  "radix": "error",
274
331
  "regexp/confusing-quantifier": "warn",
@@ -375,13 +432,13 @@ export default [
375
432
  "sonarjs/prefer-single-boolean-return": "error",
376
433
  "sonarjs/reduce-initial-value": "error",
377
434
  "symbol-description": "error",
435
+ "unicorn/no-for-loop": "warn",
378
436
  "unicorn/prefer-export-from": [
379
437
  "error",
380
438
  {
381
439
  "ignoreUsedVariables": true
382
440
  }
383
441
  ],
384
- "unicorn/prefer-import-meta-properties": "error",
385
442
  "unused-imports/no-unused-imports": "error",
386
443
  "yoda": "error"
387
444
  },
@@ -396,6 +453,7 @@ export default [
396
453
  "@typescript-eslint/consistent-return": "off",
397
454
  "@typescript-eslint/consistent-type-exports": "off",
398
455
  "@typescript-eslint/dot-notation": "off",
456
+ "@typescript-eslint/method-signature-style": "off",
399
457
  "@typescript-eslint/naming-convention": "off",
400
458
  "@typescript-eslint/no-array-delete": "off",
401
459
  "@typescript-eslint/no-base-to-string": "off",
@@ -453,18 +511,28 @@ export default [
453
511
  "@typescript-eslint/switch-exhaustiveness-check": "off",
454
512
  "@typescript-eslint/unbound-method": "off",
455
513
  "@typescript-eslint/use-unknown-in-catch-callback-variable": "off",
514
+ "dot-notation": "off",
456
515
  "getter-return": "error",
516
+ "no-array-constructor": "off",
457
517
  "no-dupe-args": "error",
518
+ "no-empty-function": "off",
519
+ "no-implied-eval": "off",
458
520
  "no-new-symbol": "off",
459
521
  "no-redeclare": "error",
522
+ "no-return-await": "off",
523
+ "no-shadow": "off",
524
+ "no-throw-literal": "off",
460
525
  "no-undef": "error",
461
526
  "no-unreachable": "error",
527
+ "no-useless-constructor": "off",
462
528
  "prefer-const": [
463
529
  "error",
464
530
  {
465
531
  "destructuring": "all"
466
532
  }
467
- ]
533
+ ],
534
+ "prefer-promise-reject-errors": "off",
535
+ "require-await": "off"
468
536
  },
469
537
  },
470
538
 
@@ -506,8 +574,7 @@ export default [
506
574
  "vitest/prefer-spy-on": "error",
507
575
  "vitest/prefer-strict-equal": "error",
508
576
  "vitest/prefer-to-be": "error",
509
- "vitest/prefer-to-have-length": "error",
510
- "vitest/valid-title": "error"
577
+ "vitest/prefer-to-have-length": "error"
511
578
  },
512
579
  },
513
580
 
@@ -678,7 +745,86 @@ export default [
678
745
  // Markdown/MDX code block linting
679
746
  {
680
747
  ...mdxPlugin.flatCodeBlocks,
748
+ languageOptions: {
749
+ ...mdxPlugin.flatCodeBlocks.languageOptions,
750
+ parserOptions: {
751
+ ...mdxPlugin.flatCodeBlocks.languageOptions?.parserOptions,
752
+ projectService: false,
753
+ },
754
+ },
681
755
  rules: {
756
+ ...{
757
+ "@typescript-eslint/await-thenable": "off",
758
+ "@typescript-eslint/consistent-type-exports": "off",
759
+ "@typescript-eslint/dot-notation": "off",
760
+ "@typescript-eslint/method-signature-style": "off",
761
+ "@typescript-eslint/no-array-delete": "off",
762
+ "@typescript-eslint/no-base-to-string": "off",
763
+ "@typescript-eslint/no-confusing-void-expression": "off",
764
+ "@typescript-eslint/no-deprecated": "off",
765
+ "@typescript-eslint/no-duplicate-type-constituents": "off",
766
+ "@typescript-eslint/no-floating-promises": "off",
767
+ "@typescript-eslint/no-for-in-array": "off",
768
+ "@typescript-eslint/no-implied-eval": "off",
769
+ "@typescript-eslint/no-meaningless-void-operator": "off",
770
+ "@typescript-eslint/no-misused-promises": "off",
771
+ "@typescript-eslint/no-misused-spread": "off",
772
+ "@typescript-eslint/no-mixed-enums": "off",
773
+ "@typescript-eslint/no-redundant-type-constituents": "off",
774
+ "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off",
775
+ "@typescript-eslint/no-unnecessary-condition": "off",
776
+ "@typescript-eslint/no-unnecessary-qualifier": "off",
777
+ "@typescript-eslint/no-unnecessary-template-expression": "off",
778
+ "@typescript-eslint/no-unnecessary-type-arguments": "off",
779
+ "@typescript-eslint/no-unnecessary-type-assertion": "off",
780
+ "@typescript-eslint/no-unnecessary-type-conversion": "off",
781
+ "@typescript-eslint/no-unnecessary-type-parameters": "off",
782
+ "@typescript-eslint/no-unsafe-argument": "off",
783
+ "@typescript-eslint/no-unsafe-assignment": "off",
784
+ "@typescript-eslint/no-unsafe-call": "off",
785
+ "@typescript-eslint/no-unsafe-enum-comparison": "off",
786
+ "@typescript-eslint/no-unsafe-member-access": "off",
787
+ "@typescript-eslint/no-unsafe-return": "off",
788
+ "@typescript-eslint/no-unsafe-type-assertion": "off",
789
+ "@typescript-eslint/no-unsafe-unary-minus": "off",
790
+ "@typescript-eslint/no-useless-default-assignment": "off",
791
+ "@typescript-eslint/non-nullable-type-assertion-style": "off",
792
+ "@typescript-eslint/only-throw-error": "off",
793
+ "@typescript-eslint/prefer-find": "off",
794
+ "@typescript-eslint/prefer-includes": "off",
795
+ "@typescript-eslint/prefer-nullish-coalescing": "off",
796
+ "@typescript-eslint/prefer-optional-chain": "off",
797
+ "@typescript-eslint/prefer-promise-reject-errors": "off",
798
+ "@typescript-eslint/prefer-readonly": "off",
799
+ "@typescript-eslint/prefer-reduce-type-parameter": "off",
800
+ "@typescript-eslint/prefer-regexp-exec": "off",
801
+ "@typescript-eslint/prefer-return-this-type": "off",
802
+ "@typescript-eslint/prefer-string-starts-ends-with": "off",
803
+ "@typescript-eslint/promise-function-async": "off",
804
+ "@typescript-eslint/related-getter-setter-pairs": "off",
805
+ "@typescript-eslint/require-array-sort-compare": "off",
806
+ "@typescript-eslint/require-await": "off",
807
+ "@typescript-eslint/restrict-plus-operands": "off",
808
+ "@typescript-eslint/restrict-template-expressions": "off",
809
+ "@typescript-eslint/return-await": "off",
810
+ "@typescript-eslint/strict-boolean-expressions": "off",
811
+ "@typescript-eslint/strict-void-return": "off",
812
+ "@typescript-eslint/switch-exhaustiveness-check": "off",
813
+ "@typescript-eslint/unbound-method": "off",
814
+ "@typescript-eslint/use-unknown-in-catch-callback-variable": "off",
815
+ "dot-notation": "off",
816
+ "no-array-constructor": "off",
817
+ "no-empty-function": "off",
818
+ "no-implied-eval": "off",
819
+ "no-return-await": "off",
820
+ "no-shadow": "off",
821
+ "no-throw-literal": "off",
822
+ "no-useless-constructor": "off",
823
+ "prefer-promise-reject-errors": "off",
824
+ "require-await": "off",
825
+ "strict": "off",
826
+ "unicode-bom": "off"
827
+ },
682
828
  ...mdxPlugin.flatCodeBlocks.rules,
683
829
  "eol-last": "off",
684
830
  "no-undef": "off",