eslint-config-setup 0.3.3 → 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
  {
@@ -375,6 +371,12 @@ export default [
375
371
  ],
376
372
  "guard-for-in": "error",
377
373
  "import/newline-after-import": "error",
374
+ "import/no-extraneous-dependencies": [
375
+ "error",
376
+ {
377
+ "includeTypes": true
378
+ }
379
+ ],
378
380
  "import/no-useless-path-segments": "error",
379
381
  "jsdoc/check-alignment": "error",
380
382
  "jsdoc/check-param-names": "error",
@@ -395,8 +397,6 @@ export default [
395
397
  "jsdoc/require-yields-type": "error",
396
398
  "jsdoc/ts-no-empty-object-type": "error",
397
399
  "jsdoc/valid-types": "error",
398
- "jsx-a11y/interactive-supports-focus": "error",
399
- "jsx-a11y/no-noninteractive-element-interactions": "error",
400
400
  "logical-assignment-operators": [
401
401
  "error",
402
402
  "always",
@@ -419,7 +419,7 @@ export default [
419
419
  "max-lines-per-function": [
420
420
  "error",
421
421
  {
422
- "max": 50,
422
+ "max": 100,
423
423
  "skipBlankLines": true,
424
424
  "skipComments": true
425
425
  }
@@ -451,6 +451,7 @@ export default [
451
451
  "no-extra-bind": "error",
452
452
  "no-fallthrough": "error",
453
453
  "no-implicit-coercion": "error",
454
+ "no-implicit-globals": "error",
454
455
  "no-labels": "error",
455
456
  "no-lone-blocks": "error",
456
457
  "no-lonely-if": "error",
@@ -480,23 +481,33 @@ export default [
480
481
  ],
481
482
  "no-script-url": "error",
482
483
  "no-self-compare": "error",
483
- "no-sequences": "error",
484
+ "no-sequences": [
485
+ "error",
486
+ {
487
+ "allowInParentheses": false
488
+ }
489
+ ],
484
490
  "no-template-curly-in-string": "error",
485
491
  "no-unmodified-loop-condition": "error",
486
492
  "no-unneeded-ternary": "error",
487
493
  "no-unreachable-loop": "error",
488
494
  "no-useless-assignment": "error",
489
495
  "no-useless-call": "error",
490
- "no-useless-computed-key": "error",
496
+ "no-useless-computed-key": [
497
+ "error",
498
+ {
499
+ "enforceForClassMembers": true
500
+ }
501
+ ],
491
502
  "no-useless-concat": "error",
492
503
  "no-useless-return": "error",
493
504
  "no-var": "error",
494
505
  "no-warning-comments": "warn",
495
- "node/no-unsupported-features/node-builtins": "error",
496
506
  "object-shorthand": [
497
507
  "error",
498
508
  "always",
499
509
  {
510
+ "avoidExplicitReturnArrows": true,
500
511
  "avoidQuotes": true
501
512
  }
502
513
  ],
@@ -531,14 +542,10 @@ export default [
531
542
  "allowNamedFunctions": true
532
543
  }
533
544
  ],
534
- "prefer-const": [
535
- "error",
536
- {
537
- "destructuring": "all"
538
- }
539
- ],
545
+ "prefer-const": "error",
540
546
  "prefer-exponentiation-operator": "error",
541
547
  "prefer-named-capture-group": "error",
548
+ "prefer-numeric-literals": "error",
542
549
  "prefer-object-has-own": "error",
543
550
  "prefer-object-spread": "error",
544
551
  "prefer-regex-literals": "error",
@@ -674,7 +681,6 @@ export default [
674
681
  "sonarjs/public-static-readonly": "error",
675
682
  "sonarjs/reduce-initial-value": "error",
676
683
  "symbol-description": "error",
677
- "unicorn/custom-error-definition": "error",
678
684
  "unicorn/no-array-push-push": "error",
679
685
  "unicorn/no-for-loop": "error",
680
686
  "unicorn/prefer-export-from": [
@@ -683,7 +689,6 @@ export default [
683
689
  "ignoreUsedVariables": true
684
690
  }
685
691
  ],
686
- "unicorn/prefer-import-meta-properties": "error",
687
692
  "unicorn/prefer-switch": [
688
693
  "error",
689
694
  {
@@ -703,12 +708,17 @@ export default [
703
708
  rules: {
704
709
  "@typescript-eslint/await-thenable": "off",
705
710
  "@typescript-eslint/consistent-return": "off",
711
+ "@typescript-eslint/consistent-type-exports": "off",
706
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",
707
716
  "@typescript-eslint/no-array-delete": "off",
708
717
  "@typescript-eslint/no-base-to-string": "off",
709
718
  "@typescript-eslint/no-confusing-void-expression": "off",
710
719
  "@typescript-eslint/no-deprecated": "off",
711
720
  "@typescript-eslint/no-duplicate-type-constituents": "off",
721
+ "@typescript-eslint/no-floating-promises": "off",
712
722
  "@typescript-eslint/no-for-in-array": "off",
713
723
  "@typescript-eslint/no-implied-eval": "off",
714
724
  "@typescript-eslint/no-meaningless-void-operator": "off",
@@ -730,6 +740,7 @@ export default [
730
740
  "@typescript-eslint/no-unsafe-enum-comparison": "off",
731
741
  "@typescript-eslint/no-unsafe-member-access": "off",
732
742
  "@typescript-eslint/no-unsafe-return": "off",
743
+ "@typescript-eslint/no-unsafe-type-assertion": "off",
733
744
  "@typescript-eslint/no-unsafe-unary-minus": "off",
734
745
  "@typescript-eslint/no-useless-default-assignment": "off",
735
746
  "@typescript-eslint/non-nullable-type-assertion-style": "off",
@@ -740,26 +751,46 @@ export default [
740
751
  "@typescript-eslint/prefer-nullish-coalescing": "off",
741
752
  "@typescript-eslint/prefer-optional-chain": "off",
742
753
  "@typescript-eslint/prefer-promise-reject-errors": "off",
754
+ "@typescript-eslint/prefer-readonly": "off",
743
755
  "@typescript-eslint/prefer-readonly-parameter-types": "off",
744
756
  "@typescript-eslint/prefer-reduce-type-parameter": "off",
745
757
  "@typescript-eslint/prefer-regexp-exec": "off",
746
758
  "@typescript-eslint/prefer-return-this-type": "off",
747
759
  "@typescript-eslint/prefer-string-starts-ends-with": "off",
760
+ "@typescript-eslint/promise-function-async": "off",
748
761
  "@typescript-eslint/related-getter-setter-pairs": "off",
762
+ "@typescript-eslint/require-array-sort-compare": "off",
749
763
  "@typescript-eslint/require-await": "off",
750
764
  "@typescript-eslint/restrict-plus-operands": "off",
751
765
  "@typescript-eslint/restrict-template-expressions": "off",
752
766
  "@typescript-eslint/return-await": "off",
753
767
  "@typescript-eslint/strict-boolean-expressions": "off",
754
768
  "@typescript-eslint/strict-void-return": "off",
769
+ "@typescript-eslint/switch-exhaustiveness-check": "off",
755
770
  "@typescript-eslint/unbound-method": "off",
756
771
  "@typescript-eslint/use-unknown-in-catch-callback-variable": "off",
772
+ "dot-notation": "off",
757
773
  "getter-return": "error",
774
+ "no-array-constructor": "off",
758
775
  "no-dupe-args": "error",
776
+ "no-empty-function": "off",
777
+ "no-implied-eval": "off",
759
778
  "no-new-symbol": "off",
760
779
  "no-redeclare": "error",
780
+ "no-return-await": "off",
781
+ "no-shadow": "off",
782
+ "no-throw-literal": "off",
761
783
  "no-undef": "error",
762
- "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"
763
794
  },
764
795
  },
765
796
 
@@ -806,8 +837,7 @@ export default [
806
837
  "vitest/prefer-strict-equal": "error",
807
838
  "vitest/prefer-to-be": "error",
808
839
  "vitest/prefer-to-have-length": "error",
809
- "vitest/require-top-level-describe": "error",
810
- "vitest/valid-title": "error"
840
+ "vitest/require-top-level-describe": "error"
811
841
  },
812
842
  },
813
843
 
@@ -988,7 +1018,88 @@ export default [
988
1018
  // Markdown/MDX code block linting
989
1019
  {
990
1020
  ...mdxPlugin.flatCodeBlocks,
1021
+ languageOptions: {
1022
+ ...mdxPlugin.flatCodeBlocks.languageOptions,
1023
+ parserOptions: {
1024
+ ...mdxPlugin.flatCodeBlocks.languageOptions?.parserOptions,
1025
+ projectService: false,
1026
+ },
1027
+ },
991
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
+ },
992
1103
  ...mdxPlugin.flatCodeBlocks.rules,
993
1104
  "eol-last": "off",
994
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",