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.
@@ -14,7 +14,6 @@ import packageJsonPlugin from "eslint-plugin-package-json"
14
14
  import perfectionistPlugin from "eslint-plugin-perfectionist"
15
15
  import playwrightPlugin from "eslint-plugin-playwright"
16
16
  import reactEffectPlugin from "eslint-plugin-react-you-might-not-need-an-effect"
17
- import reactHooksPlugin from "eslint-plugin-react-hooks"
18
17
  import regexpPlugin from "eslint-plugin-regexp"
19
18
  import securityPlugin from "eslint-plugin-security"
20
19
  import sonarjsPlugin from "eslint-plugin-sonarjs"
@@ -26,13 +25,100 @@ import unicornPlugin from "eslint-plugin-unicorn"
26
25
  import unusedImportsPlugin from "eslint-plugin-unused-imports"
27
26
  import vitestPlugin from "@vitest/eslint-plugin"
28
27
 
28
+ // React compat plugin — merges @eslint-react sub-plugins into a single `react/` namespace
29
+ // and aliases rules to legacy eslint-plugin-react names for OxLint compatibility.
30
+ const reactCompatPlugin = (() => {
31
+ const core = eslintReactPlugin.rules
32
+ const select = (prefix) => Object.fromEntries(
33
+ Object.entries(core)
34
+ .filter(([name]) => name.startsWith(prefix))
35
+ .map(([name, rule]) => [name.slice(prefix.length), rule]),
36
+ )
37
+ const dom = select("dom-")
38
+ const jsx = select("jsx-")
39
+ const naming = select("naming-convention-")
40
+ const rsc = select("rsc-")
41
+ const webApi = select("web-api-")
42
+
43
+ // Legacy aliases: legacy name → [source, original name]
44
+ const aliases = {
45
+ "jsx-key": [core, "no-missing-key"],
46
+ "jsx-key-before-spread": [jsx, "no-key-after-spread"],
47
+ "jsx-no-constructed-context-values": [core, "no-unstable-context-value"],
48
+ "jsx-no-leaked-render": [core, "no-leaked-conditional-rendering"],
49
+ "jsx-no-useless-fragment": [jsx, "no-useless-fragment"],
50
+ "no-object-type-as-default-prop": [core, "no-unstable-default-props"],
51
+ "no-unstable-nested-components": [core, "no-nested-component-definitions"],
52
+ "display-name": [core, "no-missing-component-display-name"],
53
+ "forward-ref-uses-ref": [core, "no-forward-ref"],
54
+ "destructuring-assignment": [core, "prefer-destructuring-assignment"],
55
+ "no-did-mount-set-state": [core, "no-set-state-in-component-did-mount"],
56
+ "no-did-update-set-state": [core, "no-set-state-in-component-did-update"],
57
+ "no-will-update-set-state": [core, "no-set-state-in-component-will-update"],
58
+ "hook-use-state": [core, "use-state"],
59
+ "no-danger": [dom, "no-dangerously-set-innerhtml"],
60
+ "no-danger-with-children": [dom, "no-dangerously-set-innerhtml-with-children"],
61
+ "no-find-dom-node": [dom, "no-find-dom-node"],
62
+ "no-namespace": [jsx, "no-namespace"],
63
+ "no-render-return-value": [dom, "no-render-return-value"],
64
+ "jsx-no-script-url": [dom, "no-script-url"],
65
+ "jsx-no-target-blank": [dom, "no-unsafe-target-blank"],
66
+ "no-unknown-property": [dom, "no-unknown-property"],
67
+ "void-dom-elements-no-children": [dom, "no-void-elements-with-children"],
68
+ "button-has-type": [dom, "no-missing-button-type"],
69
+ "iframe-missing-sandbox": [dom, "no-missing-iframe-sandbox"],
70
+ "style-prop-object": [dom, "no-string-style-prop"],
71
+ }
72
+
73
+ // Identical-name aliases (core rules where legacy name = @eslint-react name)
74
+ const identicalCore = [
75
+ "no-access-state-in-setstate", "no-array-index-key",
76
+ "no-direct-mutation-state", "no-redundant-should-component-update",
77
+ "no-unused-class-component-members", "no-unused-state",
78
+ ]
79
+ for (const n of identicalCore) aliases[n] = [core, n]
80
+ aliases["no-children-prop"] = [jsx, "no-children-prop"]
81
+ aliases["jsx-no-comment-textnodes"] = [jsx, "no-comment-textnodes"]
82
+
83
+ // Build aliased originals set
84
+ const aliasedCore = new Set()
85
+ for (const [src, name] of Object.values(aliases)) {
86
+ if (src === core) aliasedCore.add(name)
87
+ else if (src === dom) aliasedCore.add("dom-" + name)
88
+ else if (src === jsx) aliasedCore.add("jsx-" + name)
89
+ else if (src === naming) aliasedCore.add("naming-convention-" + name)
90
+ else if (src === rsc) aliasedCore.add("rsc-" + name)
91
+ else if (src === webApi) aliasedCore.add("web-api-" + name)
92
+ }
93
+ const rules = {}
94
+
95
+ // Core rules (skip aliased originals)
96
+ for (const [n, r] of Object.entries(core)) { if (!aliasedCore.has(n)) rules[n] = r }
97
+
98
+ // Sub-plugin rules (skip aliased + prefer-namespace-import collision)
99
+ const subs = [[dom, new Set(['prefer-namespace-import'])], [jsx], [webApi], [naming], [rsc]]
100
+ for (const [src, skip] of subs) {
101
+ for (const [n, r] of Object.entries(src)) {
102
+ if (skip && skip.has(n)) continue
103
+ if (Object.values(aliases).some(([s, o]) => s === src && o === n)) continue
104
+ rules[n] = r
105
+ }
106
+ }
107
+
108
+ // Add legacy aliases
109
+ for (const [legacy, [src, orig]] of Object.entries(aliases)) rules[legacy] = src[orig]
110
+
111
+ return { meta: { name: "react-compat", version: "1.0.0" }, rules }
112
+ })()
113
+
29
114
  export default [
30
115
  // TypeScript parser setup
31
116
  ...tseslint.configs.strictTypeChecked.slice(0, 2),
32
117
 
33
- // Base rules — all effective rules for *.ts files
118
+ // Base rules — all effective rules for TS plus shared JS/TS rules
34
119
  {
35
120
  name: "eslint-config-setup/base",
121
+ ignores: ["**/*.{md,mdx}"],
36
122
  plugins: {
37
123
  "@cspell": cspellPlugin,
38
124
  "@stylistic": stylisticPlugin,
@@ -42,10 +128,7 @@ export default [
42
128
  "import": importXPlugin,
43
129
  "jsdoc": jsdocPlugin,
44
130
  "perfectionist": perfectionistPlugin,
45
- "react": eslintReactPlugin,
46
- "react-dom": eslintReactPlugin.configs.dom.plugins["@eslint-react/dom"],
47
- "react-hooks": reactHooksPlugin,
48
- "react-web-api": eslintReactPlugin.configs["web-api"].plugins["@eslint-react/web-api"],
131
+ "react": reactCompatPlugin,
49
132
  "react-you-might-not-need-an-effect": reactEffectPlugin,
50
133
  "regexp": regexpPlugin,
51
134
  "security": securityPlugin,
@@ -89,16 +172,31 @@ export default [
89
172
  }
90
173
  ],
91
174
  "@typescript-eslint/dot-notation": "error",
175
+ "@typescript-eslint/method-signature-style": [
176
+ "error",
177
+ "property"
178
+ ],
92
179
  "@typescript-eslint/no-array-delete": "error",
93
180
  "@typescript-eslint/no-base-to-string": "error",
94
181
  "@typescript-eslint/no-confusing-void-expression": "error",
95
182
  "@typescript-eslint/no-deprecated": "warn",
96
183
  "@typescript-eslint/no-duplicate-type-constituents": "error",
97
- "@typescript-eslint/no-floating-promises": "error",
184
+ "@typescript-eslint/no-floating-promises": [
185
+ "error",
186
+ {
187
+ "checkThenables": true,
188
+ "ignoreIIFE": true
189
+ }
190
+ ],
98
191
  "@typescript-eslint/no-for-in-array": "error",
99
192
  "@typescript-eslint/no-implied-eval": "error",
100
193
  "@typescript-eslint/no-meaningless-void-operator": "error",
101
- "@typescript-eslint/no-misused-promises": "error",
194
+ "@typescript-eslint/no-misused-promises": [
195
+ "error",
196
+ {
197
+ "checksVoidReturn": false
198
+ }
199
+ ],
102
200
  "@typescript-eslint/no-misused-spread": "error",
103
201
  "@typescript-eslint/no-mixed-enums": "error",
104
202
  "@typescript-eslint/no-redundant-type-constituents": "error",
@@ -116,6 +214,7 @@ export default [
116
214
  "@typescript-eslint/no-unsafe-enum-comparison": "error",
117
215
  "@typescript-eslint/no-unsafe-member-access": "error",
118
216
  "@typescript-eslint/no-unsafe-return": "error",
217
+ "@typescript-eslint/no-unsafe-type-assertion": "error",
119
218
  "@typescript-eslint/no-unsafe-unary-minus": "error",
120
219
  "@typescript-eslint/no-useless-default-assignment": "error",
121
220
  "@typescript-eslint/non-nullable-type-assertion-style": "error",
@@ -125,11 +224,19 @@ export default [
125
224
  "@typescript-eslint/prefer-nullish-coalescing": "error",
126
225
  "@typescript-eslint/prefer-optional-chain": "error",
127
226
  "@typescript-eslint/prefer-promise-reject-errors": "error",
227
+ "@typescript-eslint/prefer-readonly": "warn",
128
228
  "@typescript-eslint/prefer-reduce-type-parameter": "error",
129
229
  "@typescript-eslint/prefer-regexp-exec": "error",
130
230
  "@typescript-eslint/prefer-return-this-type": "error",
131
231
  "@typescript-eslint/prefer-string-starts-ends-with": "error",
232
+ "@typescript-eslint/promise-function-async": "error",
132
233
  "@typescript-eslint/related-getter-setter-pairs": "error",
234
+ "@typescript-eslint/require-array-sort-compare": [
235
+ "error",
236
+ {
237
+ "ignoreStringArrays": true
238
+ }
239
+ ],
133
240
  "@typescript-eslint/require-await": "error",
134
241
  "@typescript-eslint/restrict-plus-operands": [
135
242
  "error",
@@ -159,6 +266,13 @@ export default [
159
266
  }
160
267
  ],
161
268
  "@typescript-eslint/strict-void-return": "error",
269
+ "@typescript-eslint/switch-exhaustiveness-check": [
270
+ "error",
271
+ {
272
+ "allowDefaultCaseForExhaustiveSwitch": false,
273
+ "requireDefaultForNonUnion": true
274
+ }
275
+ ],
162
276
  "@typescript-eslint/unbound-method": "error",
163
277
  "@typescript-eslint/use-unknown-in-catch-callback-variable": "error",
164
278
  "accessor-pairs": [
@@ -191,6 +305,12 @@ export default [
191
305
  ],
192
306
  "guard-for-in": "error",
193
307
  "import/newline-after-import": "error",
308
+ "import/no-extraneous-dependencies": [
309
+ "error",
310
+ {
311
+ "includeTypes": true
312
+ }
313
+ ],
194
314
  "import/no-useless-path-segments": "error",
195
315
  "jsdoc/check-alignment": "error",
196
316
  "jsdoc/check-param-names": "error",
@@ -249,6 +369,7 @@ export default [
249
369
  "no-extend-native": "error",
250
370
  "no-extra-bind": "error",
251
371
  "no-fallthrough": "error",
372
+ "no-implicit-globals": "error",
252
373
  "no-labels": "error",
253
374
  "no-lone-blocks": "error",
254
375
  "no-multi-str": "error",
@@ -262,18 +383,40 @@ export default [
262
383
  "no-proto": "error",
263
384
  "no-prototype-builtins": "error",
264
385
  "no-regex-spaces": "error",
386
+ "no-return-assign": [
387
+ "error",
388
+ "always"
389
+ ],
265
390
  "no-script-url": "error",
266
391
  "no-self-compare": "error",
267
- "no-sequences": "error",
392
+ "no-sequences": [
393
+ "error",
394
+ {
395
+ "allowInParentheses": false
396
+ }
397
+ ],
268
398
  "no-template-curly-in-string": "error",
269
399
  "no-unmodified-loop-condition": "error",
270
400
  "no-unreachable-loop": "error",
271
401
  "no-useless-assignment": "error",
272
402
  "no-useless-call": "error",
273
- "no-useless-computed-key": "error",
403
+ "no-useless-computed-key": [
404
+ "error",
405
+ {
406
+ "enforceForClassMembers": true
407
+ }
408
+ ],
274
409
  "no-useless-concat": "error",
275
410
  "no-useless-return": "error",
276
411
  "no-var": "error",
412
+ "object-shorthand": [
413
+ "error",
414
+ "always",
415
+ {
416
+ "avoidExplicitReturnArrows": true,
417
+ "avoidQuotes": true
418
+ }
419
+ ],
277
420
  "perfectionist/sort-exports": "error",
278
421
  "perfectionist/sort-imports": [
279
422
  "error",
@@ -286,27 +429,15 @@ export default [
286
429
  "perfectionist/sort-named-imports": "error",
287
430
  "perfectionist/sort-union-types": "error",
288
431
  "prefer-const": "error",
432
+ "prefer-numeric-literals": "error",
289
433
  "prefer-object-has-own": "error",
290
434
  "prefer-object-spread": "error",
291
435
  "prefer-regex-literals": "error",
292
436
  "prefer-rest-params": "error",
293
437
  "prefer-spread": "error",
294
- "prefer-template": "error",
438
+ "prefer-template": "warn",
295
439
  "preserve-caught-error": "error",
296
440
  "radix": "error",
297
- "react-dom/no-dangerously-set-innerhtml": "warn",
298
- "react-dom/no-dangerously-set-innerhtml-with-children": "error",
299
- "react-dom/no-missing-button-type": "error",
300
- "react-dom/no-missing-iframe-sandbox": "error",
301
- "react-dom/no-string-style-prop": "error",
302
- "react-dom/no-unknown-property": "error",
303
- "react-dom/no-unsafe-target-blank": "error",
304
- "react-dom/no-void-elements-with-children": "error",
305
- "react-hooks/rules-of-hooks": "error",
306
- "react-web-api/no-leaked-event-listener": "error",
307
- "react-web-api/no-leaked-interval": "error",
308
- "react-web-api/no-leaked-resize-observer": "error",
309
- "react-web-api/no-leaked-timeout": "error",
310
441
  "react-you-might-not-need-an-effect/no-adjust-state-on-prop-change": "warn",
311
442
  "react-you-might-not-need-an-effect/no-chain-state-updates": "error",
312
443
  "react-you-might-not-need-an-effect/no-derived-state": "error",
@@ -316,19 +447,62 @@ export default [
316
447
  "react-you-might-not-need-an-effect/no-pass-data-to-parent": "error",
317
448
  "react-you-might-not-need-an-effect/no-pass-live-state-to-parent": "error",
318
449
  "react-you-might-not-need-an-effect/no-reset-all-state-on-prop-change": "error",
319
- "react/jsx-shorthand-boolean": "error",
450
+ "react/component-hook-factories": "error",
451
+ "react/context-name": "warn",
452
+ "react/destructuring-assignment": "warn",
453
+ "react/error-boundaries": "error",
454
+ "react/exhaustive-deps": "warn",
455
+ "react/function-definition": "error",
456
+ "react/id-name": "warn",
457
+ "react/jsx-key-before-spread": "error",
458
+ "react/jsx-no-children-prop-with-children": "error",
459
+ "react/jsx-no-leaked-render": "error",
460
+ "react/jsx-no-leaked-semicolon": "warn",
320
461
  "react/no-access-state-in-setstate": "error",
321
- "react/no-context-provider": "error",
462
+ "react/no-children-count": "warn",
463
+ "react/no-children-for-each": "warn",
464
+ "react/no-children-map": "warn",
465
+ "react/no-children-only": "warn",
466
+ "react/no-children-to-array": "warn",
467
+ "react/no-class-component": "error",
468
+ "react/no-component-will-mount": "error",
469
+ "react/no-component-will-receive-props": "error",
470
+ "react/no-component-will-update": "error",
471
+ "react/no-context-provider": "warn",
472
+ "react/no-create-ref": "error",
473
+ "react/no-did-update-set-state": "warn",
322
474
  "react/no-duplicate-key": "error",
323
- "react/no-forward-ref": "error",
324
- "react/no-leaked-conditional-rendering": "error",
325
- "react/no-missing-key": "error",
326
- "react/no-nested-component-definitions": "error",
327
- "react/no-unstable-context-value": "error",
328
- "react/no-unstable-default-props": "error",
329
- "react/no-unused-state": "error",
330
- "react/no-use-context": "error",
331
- "react/no-useless-fragment": "error",
475
+ "react/no-flush-sync": "error",
476
+ "react/no-hydrate": "error",
477
+ "react/no-implicit-key": "error",
478
+ "react/no-leaked-event-listener": "warn",
479
+ "react/no-leaked-interval": "warn",
480
+ "react/no-leaked-resize-observer": "warn",
481
+ "react/no-leaked-timeout": "warn",
482
+ "react/no-misused-capture-owner-stack": "error",
483
+ "react/no-nested-lazy-component-declarations": "error",
484
+ "react/no-object-type-as-default-prop": "warn",
485
+ "react/no-render": "error",
486
+ "react/no-unnecessary-use-callback": "warn",
487
+ "react/no-unnecessary-use-memo": "warn",
488
+ "react/no-unnecessary-use-prefix": "warn",
489
+ "react/no-unsafe-component-will-mount": "warn",
490
+ "react/no-unsafe-component-will-receive-props": "warn",
491
+ "react/no-unsafe-component-will-update": "warn",
492
+ "react/no-unsafe-iframe-sandbox": "warn",
493
+ "react/no-unstable-nested-components": "error",
494
+ "react/no-unused-class-component-members": "warn",
495
+ "react/no-unused-props": "warn",
496
+ "react/no-unused-state": "warn",
497
+ "react/no-use-context": "warn",
498
+ "react/no-use-form-state": "error",
499
+ "react/purity": "warn",
500
+ "react/ref-name": "warn",
501
+ "react/rules-of-hooks": "error",
502
+ "react/set-state-in-effect": "warn",
503
+ "react/set-state-in-render": "error",
504
+ "react/unsupported-syntax": "error",
505
+ "react/use-memo": "error",
332
506
  "regexp/confusing-quantifier": "warn",
333
507
  "regexp/control-character-escape": "error",
334
508
  "regexp/match-any": "error",
@@ -433,13 +607,13 @@ export default [
433
607
  "sonarjs/prefer-single-boolean-return": "error",
434
608
  "sonarjs/reduce-initial-value": "error",
435
609
  "symbol-description": "error",
610
+ "unicorn/no-for-loop": "warn",
436
611
  "unicorn/prefer-export-from": [
437
612
  "error",
438
613
  {
439
614
  "ignoreUsedVariables": true
440
615
  }
441
616
  ],
442
- "unicorn/prefer-import-meta-properties": "error",
443
617
  "unused-imports/no-unused-imports": "error",
444
618
  "yoda": "error"
445
619
  },
@@ -454,6 +628,7 @@ export default [
454
628
  "@typescript-eslint/consistent-return": "off",
455
629
  "@typescript-eslint/consistent-type-exports": "off",
456
630
  "@typescript-eslint/dot-notation": "off",
631
+ "@typescript-eslint/method-signature-style": "off",
457
632
  "@typescript-eslint/naming-convention": "off",
458
633
  "@typescript-eslint/no-array-delete": "off",
459
634
  "@typescript-eslint/no-base-to-string": "off",
@@ -511,18 +686,28 @@ export default [
511
686
  "@typescript-eslint/switch-exhaustiveness-check": "off",
512
687
  "@typescript-eslint/unbound-method": "off",
513
688
  "@typescript-eslint/use-unknown-in-catch-callback-variable": "off",
689
+ "dot-notation": "off",
514
690
  "getter-return": "error",
691
+ "no-array-constructor": "off",
515
692
  "no-dupe-args": "error",
693
+ "no-empty-function": "off",
694
+ "no-implied-eval": "off",
516
695
  "no-new-symbol": "off",
517
696
  "no-redeclare": "error",
697
+ "no-return-await": "off",
698
+ "no-shadow": "off",
699
+ "no-throw-literal": "off",
518
700
  "no-undef": "error",
519
701
  "no-unreachable": "error",
702
+ "no-useless-constructor": "off",
520
703
  "prefer-const": [
521
704
  "error",
522
705
  {
523
706
  "destructuring": "all"
524
707
  }
525
- ]
708
+ ],
709
+ "prefer-promise-reject-errors": "off",
710
+ "require-await": "off"
526
711
  },
527
712
  },
528
713
 
@@ -564,8 +749,7 @@ export default [
564
749
  "vitest/prefer-spy-on": "error",
565
750
  "vitest/prefer-strict-equal": "error",
566
751
  "vitest/prefer-to-be": "error",
567
- "vitest/prefer-to-have-length": "error",
568
- "vitest/valid-title": "error"
752
+ "vitest/prefer-to-have-length": "error"
569
753
  },
570
754
  },
571
755
 
@@ -736,7 +920,85 @@ export default [
736
920
  // Markdown/MDX code block linting
737
921
  {
738
922
  ...mdxPlugin.flatCodeBlocks,
923
+ languageOptions: {
924
+ ...mdxPlugin.flatCodeBlocks.languageOptions,
925
+ parserOptions: {
926
+ ...mdxPlugin.flatCodeBlocks.languageOptions?.parserOptions,
927
+ projectService: false,
928
+ },
929
+ },
739
930
  rules: {
931
+ ...{
932
+ "@typescript-eslint/await-thenable": "off",
933
+ "@typescript-eslint/consistent-type-exports": "off",
934
+ "@typescript-eslint/dot-notation": "off",
935
+ "@typescript-eslint/method-signature-style": "off",
936
+ "@typescript-eslint/no-array-delete": "off",
937
+ "@typescript-eslint/no-base-to-string": "off",
938
+ "@typescript-eslint/no-confusing-void-expression": "off",
939
+ "@typescript-eslint/no-deprecated": "off",
940
+ "@typescript-eslint/no-duplicate-type-constituents": "off",
941
+ "@typescript-eslint/no-floating-promises": "off",
942
+ "@typescript-eslint/no-for-in-array": "off",
943
+ "@typescript-eslint/no-implied-eval": "off",
944
+ "@typescript-eslint/no-meaningless-void-operator": "off",
945
+ "@typescript-eslint/no-misused-spread": "off",
946
+ "@typescript-eslint/no-mixed-enums": "off",
947
+ "@typescript-eslint/no-redundant-type-constituents": "off",
948
+ "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off",
949
+ "@typescript-eslint/no-unnecessary-condition": "off",
950
+ "@typescript-eslint/no-unnecessary-qualifier": "off",
951
+ "@typescript-eslint/no-unnecessary-template-expression": "off",
952
+ "@typescript-eslint/no-unnecessary-type-arguments": "off",
953
+ "@typescript-eslint/no-unnecessary-type-assertion": "off",
954
+ "@typescript-eslint/no-unnecessary-type-conversion": "off",
955
+ "@typescript-eslint/no-unnecessary-type-parameters": "off",
956
+ "@typescript-eslint/no-unsafe-argument": "off",
957
+ "@typescript-eslint/no-unsafe-assignment": "off",
958
+ "@typescript-eslint/no-unsafe-call": "off",
959
+ "@typescript-eslint/no-unsafe-enum-comparison": "off",
960
+ "@typescript-eslint/no-unsafe-member-access": "off",
961
+ "@typescript-eslint/no-unsafe-return": "off",
962
+ "@typescript-eslint/no-unsafe-type-assertion": "off",
963
+ "@typescript-eslint/no-unsafe-unary-minus": "off",
964
+ "@typescript-eslint/no-useless-default-assignment": "off",
965
+ "@typescript-eslint/non-nullable-type-assertion-style": "off",
966
+ "@typescript-eslint/only-throw-error": "off",
967
+ "@typescript-eslint/prefer-find": "off",
968
+ "@typescript-eslint/prefer-includes": "off",
969
+ "@typescript-eslint/prefer-nullish-coalescing": "off",
970
+ "@typescript-eslint/prefer-optional-chain": "off",
971
+ "@typescript-eslint/prefer-promise-reject-errors": "off",
972
+ "@typescript-eslint/prefer-readonly": "off",
973
+ "@typescript-eslint/prefer-reduce-type-parameter": "off",
974
+ "@typescript-eslint/prefer-regexp-exec": "off",
975
+ "@typescript-eslint/prefer-return-this-type": "off",
976
+ "@typescript-eslint/prefer-string-starts-ends-with": "off",
977
+ "@typescript-eslint/promise-function-async": "off",
978
+ "@typescript-eslint/related-getter-setter-pairs": "off",
979
+ "@typescript-eslint/require-array-sort-compare": "off",
980
+ "@typescript-eslint/require-await": "off",
981
+ "@typescript-eslint/restrict-plus-operands": "off",
982
+ "@typescript-eslint/restrict-template-expressions": "off",
983
+ "@typescript-eslint/return-await": "off",
984
+ "@typescript-eslint/strict-boolean-expressions": "off",
985
+ "@typescript-eslint/strict-void-return": "off",
986
+ "@typescript-eslint/switch-exhaustiveness-check": "off",
987
+ "@typescript-eslint/unbound-method": "off",
988
+ "@typescript-eslint/use-unknown-in-catch-callback-variable": "off",
989
+ "dot-notation": "off",
990
+ "no-array-constructor": "off",
991
+ "no-empty-function": "off",
992
+ "no-implied-eval": "off",
993
+ "no-return-await": "off",
994
+ "no-shadow": "off",
995
+ "no-throw-literal": "off",
996
+ "no-useless-constructor": "off",
997
+ "prefer-promise-reject-errors": "off",
998
+ "require-await": "off",
999
+ "strict": "off",
1000
+ "unicode-bom": "off"
1001
+ },
740
1002
  ...mdxPlugin.flatCodeBlocks.rules,
741
1003
  "eol-last": "off",
742
1004
  "no-undef": "off",