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.
@@ -15,7 +15,6 @@ import packageJsonPlugin from "eslint-plugin-package-json"
15
15
  import perfectionistPlugin from "eslint-plugin-perfectionist"
16
16
  import playwrightPlugin from "eslint-plugin-playwright"
17
17
  import reactEffectPlugin from "eslint-plugin-react-you-might-not-need-an-effect"
18
- import reactHooksPlugin from "eslint-plugin-react-hooks"
19
18
  import regexpPlugin from "eslint-plugin-regexp"
20
19
  import securityPlugin from "eslint-plugin-security"
21
20
  import sonarjsPlugin from "eslint-plugin-sonarjs"
@@ -27,13 +26,100 @@ import unicornPlugin from "eslint-plugin-unicorn"
27
26
  import unusedImportsPlugin from "eslint-plugin-unused-imports"
28
27
  import vitestPlugin from "@vitest/eslint-plugin"
29
28
 
29
+ // React compat plugin — merges @eslint-react sub-plugins into a single `react/` namespace
30
+ // and aliases rules to legacy eslint-plugin-react names for OxLint compatibility.
31
+ const reactCompatPlugin = (() => {
32
+ const core = eslintReactPlugin.rules
33
+ const select = (prefix) => Object.fromEntries(
34
+ Object.entries(core)
35
+ .filter(([name]) => name.startsWith(prefix))
36
+ .map(([name, rule]) => [name.slice(prefix.length), rule]),
37
+ )
38
+ const dom = select("dom-")
39
+ const jsx = select("jsx-")
40
+ const naming = select("naming-convention-")
41
+ const rsc = select("rsc-")
42
+ const webApi = select("web-api-")
43
+
44
+ // Legacy aliases: legacy name → [source, original name]
45
+ const aliases = {
46
+ "jsx-key": [core, "no-missing-key"],
47
+ "jsx-key-before-spread": [jsx, "no-key-after-spread"],
48
+ "jsx-no-constructed-context-values": [core, "no-unstable-context-value"],
49
+ "jsx-no-leaked-render": [core, "no-leaked-conditional-rendering"],
50
+ "jsx-no-useless-fragment": [jsx, "no-useless-fragment"],
51
+ "no-object-type-as-default-prop": [core, "no-unstable-default-props"],
52
+ "no-unstable-nested-components": [core, "no-nested-component-definitions"],
53
+ "display-name": [core, "no-missing-component-display-name"],
54
+ "forward-ref-uses-ref": [core, "no-forward-ref"],
55
+ "destructuring-assignment": [core, "prefer-destructuring-assignment"],
56
+ "no-did-mount-set-state": [core, "no-set-state-in-component-did-mount"],
57
+ "no-did-update-set-state": [core, "no-set-state-in-component-did-update"],
58
+ "no-will-update-set-state": [core, "no-set-state-in-component-will-update"],
59
+ "hook-use-state": [core, "use-state"],
60
+ "no-danger": [dom, "no-dangerously-set-innerhtml"],
61
+ "no-danger-with-children": [dom, "no-dangerously-set-innerhtml-with-children"],
62
+ "no-find-dom-node": [dom, "no-find-dom-node"],
63
+ "no-namespace": [jsx, "no-namespace"],
64
+ "no-render-return-value": [dom, "no-render-return-value"],
65
+ "jsx-no-script-url": [dom, "no-script-url"],
66
+ "jsx-no-target-blank": [dom, "no-unsafe-target-blank"],
67
+ "no-unknown-property": [dom, "no-unknown-property"],
68
+ "void-dom-elements-no-children": [dom, "no-void-elements-with-children"],
69
+ "button-has-type": [dom, "no-missing-button-type"],
70
+ "iframe-missing-sandbox": [dom, "no-missing-iframe-sandbox"],
71
+ "style-prop-object": [dom, "no-string-style-prop"],
72
+ }
73
+
74
+ // Identical-name aliases (core rules where legacy name = @eslint-react name)
75
+ const identicalCore = [
76
+ "no-access-state-in-setstate", "no-array-index-key",
77
+ "no-direct-mutation-state", "no-redundant-should-component-update",
78
+ "no-unused-class-component-members", "no-unused-state",
79
+ ]
80
+ for (const n of identicalCore) aliases[n] = [core, n]
81
+ aliases["no-children-prop"] = [jsx, "no-children-prop"]
82
+ aliases["jsx-no-comment-textnodes"] = [jsx, "no-comment-textnodes"]
83
+
84
+ // Build aliased originals set
85
+ const aliasedCore = new Set()
86
+ for (const [src, name] of Object.values(aliases)) {
87
+ if (src === core) aliasedCore.add(name)
88
+ else if (src === dom) aliasedCore.add("dom-" + name)
89
+ else if (src === jsx) aliasedCore.add("jsx-" + name)
90
+ else if (src === naming) aliasedCore.add("naming-convention-" + name)
91
+ else if (src === rsc) aliasedCore.add("rsc-" + name)
92
+ else if (src === webApi) aliasedCore.add("web-api-" + name)
93
+ }
94
+ const rules = {}
95
+
96
+ // Core rules (skip aliased originals)
97
+ for (const [n, r] of Object.entries(core)) { if (!aliasedCore.has(n)) rules[n] = r }
98
+
99
+ // Sub-plugin rules (skip aliased + prefer-namespace-import collision)
100
+ const subs = [[dom, new Set(['prefer-namespace-import'])], [jsx], [webApi], [naming], [rsc]]
101
+ for (const [src, skip] of subs) {
102
+ for (const [n, r] of Object.entries(src)) {
103
+ if (skip && skip.has(n)) continue
104
+ if (Object.values(aliases).some(([s, o]) => s === src && o === n)) continue
105
+ rules[n] = r
106
+ }
107
+ }
108
+
109
+ // Add legacy aliases
110
+ for (const [legacy, [src, orig]] of Object.entries(aliases)) rules[legacy] = src[orig]
111
+
112
+ return { meta: { name: "react-compat", version: "1.0.0" }, rules }
113
+ })()
114
+
30
115
  export default [
31
116
  // TypeScript parser setup
32
117
  ...tseslint.configs.strictTypeChecked.slice(0, 2),
33
118
 
34
- // Base rules — all effective rules for *.ts files
119
+ // Base rules — all effective rules for TS plus shared JS/TS rules
35
120
  {
36
121
  name: "eslint-config-setup/base",
122
+ ignores: ["**/*.{md,mdx}"],
37
123
  plugins: {
38
124
  "@cspell": cspellPlugin,
39
125
  "@stylistic": stylisticPlugin,
@@ -44,10 +130,7 @@ export default [
44
130
  "jsx-a11y": jsxA11yPlugin,
45
131
  "node": nodePlugin,
46
132
  "perfectionist": perfectionistPlugin,
47
- "react": eslintReactPlugin,
48
- "react-dom": eslintReactPlugin.configs.dom.plugins["@eslint-react/dom"],
49
- "react-hooks": reactHooksPlugin,
50
- "react-web-api": eslintReactPlugin.configs["web-api"].plugins["@eslint-react/web-api"],
133
+ "react": reactCompatPlugin,
51
134
  "react-you-might-not-need-an-effect": reactEffectPlugin,
52
135
  "regexp": regexpPlugin,
53
136
  "security": securityPlugin,
@@ -92,7 +175,6 @@ export default [
92
175
  }
93
176
  ],
94
177
  "@typescript-eslint/dot-notation": "error",
95
- "@typescript-eslint/explicit-member-accessibility": "error",
96
178
  "@typescript-eslint/member-ordering": [
97
179
  "warn",
98
180
  {
@@ -289,7 +371,12 @@ export default [
289
371
  "@typescript-eslint/no-for-in-array": "error",
290
372
  "@typescript-eslint/no-implied-eval": "error",
291
373
  "@typescript-eslint/no-meaningless-void-operator": "error",
292
- "@typescript-eslint/no-misused-promises": "error",
374
+ "@typescript-eslint/no-misused-promises": [
375
+ "error",
376
+ {
377
+ "checksVoidReturn": false
378
+ }
379
+ ],
293
380
  "@typescript-eslint/no-misused-spread": "error",
294
381
  "@typescript-eslint/no-mixed-enums": "error",
295
382
  "@typescript-eslint/no-redundant-type-constituents": "error",
@@ -398,6 +485,12 @@ export default [
398
485
  ],
399
486
  "guard-for-in": "error",
400
487
  "import/newline-after-import": "error",
488
+ "import/no-extraneous-dependencies": [
489
+ "error",
490
+ {
491
+ "includeTypes": true
492
+ }
493
+ ],
401
494
  "import/no-useless-path-segments": "error",
402
495
  "jsdoc/check-alignment": "error",
403
496
  "jsdoc/check-param-names": "error",
@@ -442,7 +535,7 @@ export default [
442
535
  "max-lines-per-function": [
443
536
  "error",
444
537
  {
445
- "max": 50,
538
+ "max": 100,
446
539
  "skipBlankLines": true,
447
540
  "skipComments": true
448
541
  }
@@ -474,6 +567,7 @@ export default [
474
567
  "no-extra-bind": "error",
475
568
  "no-fallthrough": "error",
476
569
  "no-implicit-coercion": "error",
570
+ "no-implicit-globals": "error",
477
571
  "no-labels": "error",
478
572
  "no-lone-blocks": "error",
479
573
  "no-lonely-if": "error",
@@ -503,18 +597,29 @@ export default [
503
597
  ],
504
598
  "no-script-url": "error",
505
599
  "no-self-compare": "error",
506
- "no-sequences": "error",
600
+ "no-sequences": [
601
+ "error",
602
+ {
603
+ "allowInParentheses": false
604
+ }
605
+ ],
507
606
  "no-template-curly-in-string": "error",
508
607
  "no-unmodified-loop-condition": "error",
509
608
  "no-unneeded-ternary": "error",
510
609
  "no-unreachable-loop": "error",
511
610
  "no-useless-assignment": "error",
512
611
  "no-useless-call": "error",
513
- "no-useless-computed-key": "error",
612
+ "no-useless-computed-key": [
613
+ "error",
614
+ {
615
+ "enforceForClassMembers": true
616
+ }
617
+ ],
514
618
  "no-useless-concat": "error",
515
619
  "no-useless-return": "error",
516
620
  "no-var": "error",
517
621
  "no-warning-comments": "warn",
622
+ "node/handle-callback-err": "error",
518
623
  "node/hashbang": "error",
519
624
  "node/no-deprecated-api": "error",
520
625
  "node/no-exports-assign": "error",
@@ -543,10 +648,12 @@ export default [
543
648
  ],
544
649
  "node/prefer-promises/dns": "error",
545
650
  "node/prefer-promises/fs": "error",
651
+ "node/process-exit-as-throw": "error",
546
652
  "object-shorthand": [
547
653
  "error",
548
654
  "always",
549
655
  {
656
+ "avoidExplicitReturnArrows": true,
550
657
  "avoidQuotes": true
551
658
  }
552
659
  ],
@@ -581,14 +688,10 @@ export default [
581
688
  "allowNamedFunctions": true
582
689
  }
583
690
  ],
584
- "prefer-const": [
585
- "error",
586
- {
587
- "destructuring": "all"
588
- }
589
- ],
691
+ "prefer-const": "error",
590
692
  "prefer-exponentiation-operator": "error",
591
693
  "prefer-named-capture-group": "error",
694
+ "prefer-numeric-literals": "error",
592
695
  "prefer-object-has-own": "error",
593
696
  "prefer-object-spread": "error",
594
697
  "prefer-regex-literals": "error",
@@ -597,19 +700,6 @@ export default [
597
700
  "prefer-template": "error",
598
701
  "preserve-caught-error": "error",
599
702
  "radix": "error",
600
- "react-dom/no-dangerously-set-innerhtml": "warn",
601
- "react-dom/no-dangerously-set-innerhtml-with-children": "error",
602
- "react-dom/no-missing-button-type": "error",
603
- "react-dom/no-missing-iframe-sandbox": "error",
604
- "react-dom/no-string-style-prop": "error",
605
- "react-dom/no-unknown-property": "error",
606
- "react-dom/no-unsafe-target-blank": "error",
607
- "react-dom/no-void-elements-with-children": "error",
608
- "react-hooks/rules-of-hooks": "error",
609
- "react-web-api/no-leaked-event-listener": "error",
610
- "react-web-api/no-leaked-interval": "error",
611
- "react-web-api/no-leaked-resize-observer": "error",
612
- "react-web-api/no-leaked-timeout": "error",
613
703
  "react-you-might-not-need-an-effect/no-adjust-state-on-prop-change": "warn",
614
704
  "react-you-might-not-need-an-effect/no-chain-state-updates": "error",
615
705
  "react-you-might-not-need-an-effect/no-derived-state": "error",
@@ -619,19 +709,62 @@ export default [
619
709
  "react-you-might-not-need-an-effect/no-pass-data-to-parent": "error",
620
710
  "react-you-might-not-need-an-effect/no-pass-live-state-to-parent": "error",
621
711
  "react-you-might-not-need-an-effect/no-reset-all-state-on-prop-change": "error",
622
- "react/jsx-shorthand-boolean": "error",
712
+ "react/component-hook-factories": "error",
713
+ "react/context-name": "warn",
714
+ "react/destructuring-assignment": "warn",
715
+ "react/error-boundaries": "error",
716
+ "react/exhaustive-deps": "warn",
717
+ "react/function-definition": "error",
718
+ "react/id-name": "warn",
719
+ "react/jsx-key-before-spread": "error",
720
+ "react/jsx-no-children-prop-with-children": "error",
721
+ "react/jsx-no-leaked-render": "error",
722
+ "react/jsx-no-leaked-semicolon": "warn",
623
723
  "react/no-access-state-in-setstate": "error",
724
+ "react/no-children-count": "warn",
725
+ "react/no-children-for-each": "warn",
726
+ "react/no-children-map": "warn",
727
+ "react/no-children-only": "warn",
728
+ "react/no-children-to-array": "warn",
729
+ "react/no-class-component": "error",
730
+ "react/no-component-will-mount": "error",
731
+ "react/no-component-will-receive-props": "error",
732
+ "react/no-component-will-update": "error",
624
733
  "react/no-context-provider": "error",
734
+ "react/no-create-ref": "error",
735
+ "react/no-did-update-set-state": "warn",
625
736
  "react/no-duplicate-key": "error",
626
- "react/no-forward-ref": "error",
627
- "react/no-leaked-conditional-rendering": "error",
628
- "react/no-missing-key": "error",
629
- "react/no-nested-component-definitions": "error",
630
- "react/no-unstable-context-value": "error",
631
- "react/no-unstable-default-props": "error",
737
+ "react/no-flush-sync": "error",
738
+ "react/no-hydrate": "error",
739
+ "react/no-implicit-key": "error",
740
+ "react/no-leaked-event-listener": "error",
741
+ "react/no-leaked-interval": "error",
742
+ "react/no-leaked-resize-observer": "error",
743
+ "react/no-leaked-timeout": "error",
744
+ "react/no-misused-capture-owner-stack": "error",
745
+ "react/no-nested-lazy-component-declarations": "error",
746
+ "react/no-object-type-as-default-prop": "error",
747
+ "react/no-render": "error",
748
+ "react/no-unnecessary-use-callback": "warn",
749
+ "react/no-unnecessary-use-memo": "warn",
750
+ "react/no-unnecessary-use-prefix": "warn",
751
+ "react/no-unsafe-component-will-mount": "warn",
752
+ "react/no-unsafe-component-will-receive-props": "warn",
753
+ "react/no-unsafe-component-will-update": "warn",
754
+ "react/no-unsafe-iframe-sandbox": "warn",
755
+ "react/no-unstable-nested-components": "error",
756
+ "react/no-unused-class-component-members": "warn",
757
+ "react/no-unused-props": "warn",
632
758
  "react/no-unused-state": "error",
633
759
  "react/no-use-context": "error",
634
- "react/no-useless-fragment": "error",
760
+ "react/no-use-form-state": "error",
761
+ "react/purity": "warn",
762
+ "react/ref-name": "warn",
763
+ "react/rules-of-hooks": "error",
764
+ "react/set-state-in-effect": "warn",
765
+ "react/set-state-in-render": "error",
766
+ "react/unsupported-syntax": "error",
767
+ "react/use-memo": "error",
635
768
  "regexp/confusing-quantifier": "warn",
636
769
  "regexp/control-character-escape": "error",
637
770
  "regexp/match-any": "error",
@@ -759,7 +892,6 @@ export default [
759
892
  "sonarjs/public-static-readonly": "error",
760
893
  "sonarjs/reduce-initial-value": "error",
761
894
  "symbol-description": "error",
762
- "unicorn/custom-error-definition": "error",
763
895
  "unicorn/no-array-push-push": "error",
764
896
  "unicorn/no-for-loop": "error",
765
897
  "unicorn/prefer-export-from": [
@@ -768,7 +900,6 @@ export default [
768
900
  "ignoreUsedVariables": true
769
901
  }
770
902
  ],
771
- "unicorn/prefer-import-meta-properties": "error",
772
903
  "unicorn/prefer-switch": [
773
904
  "error",
774
905
  {
@@ -788,12 +919,17 @@ export default [
788
919
  rules: {
789
920
  "@typescript-eslint/await-thenable": "off",
790
921
  "@typescript-eslint/consistent-return": "off",
922
+ "@typescript-eslint/consistent-type-exports": "off",
791
923
  "@typescript-eslint/dot-notation": "off",
924
+ "@typescript-eslint/member-ordering": "off",
925
+ "@typescript-eslint/method-signature-style": "off",
926
+ "@typescript-eslint/naming-convention": "off",
792
927
  "@typescript-eslint/no-array-delete": "off",
793
928
  "@typescript-eslint/no-base-to-string": "off",
794
929
  "@typescript-eslint/no-confusing-void-expression": "off",
795
930
  "@typescript-eslint/no-deprecated": "off",
796
931
  "@typescript-eslint/no-duplicate-type-constituents": "off",
932
+ "@typescript-eslint/no-floating-promises": "off",
797
933
  "@typescript-eslint/no-for-in-array": "off",
798
934
  "@typescript-eslint/no-implied-eval": "off",
799
935
  "@typescript-eslint/no-meaningless-void-operator": "off",
@@ -815,6 +951,7 @@ export default [
815
951
  "@typescript-eslint/no-unsafe-enum-comparison": "off",
816
952
  "@typescript-eslint/no-unsafe-member-access": "off",
817
953
  "@typescript-eslint/no-unsafe-return": "off",
954
+ "@typescript-eslint/no-unsafe-type-assertion": "off",
818
955
  "@typescript-eslint/no-unsafe-unary-minus": "off",
819
956
  "@typescript-eslint/no-useless-default-assignment": "off",
820
957
  "@typescript-eslint/non-nullable-type-assertion-style": "off",
@@ -825,26 +962,46 @@ export default [
825
962
  "@typescript-eslint/prefer-nullish-coalescing": "off",
826
963
  "@typescript-eslint/prefer-optional-chain": "off",
827
964
  "@typescript-eslint/prefer-promise-reject-errors": "off",
965
+ "@typescript-eslint/prefer-readonly": "off",
828
966
  "@typescript-eslint/prefer-readonly-parameter-types": "off",
829
967
  "@typescript-eslint/prefer-reduce-type-parameter": "off",
830
968
  "@typescript-eslint/prefer-regexp-exec": "off",
831
969
  "@typescript-eslint/prefer-return-this-type": "off",
832
970
  "@typescript-eslint/prefer-string-starts-ends-with": "off",
971
+ "@typescript-eslint/promise-function-async": "off",
833
972
  "@typescript-eslint/related-getter-setter-pairs": "off",
973
+ "@typescript-eslint/require-array-sort-compare": "off",
834
974
  "@typescript-eslint/require-await": "off",
835
975
  "@typescript-eslint/restrict-plus-operands": "off",
836
976
  "@typescript-eslint/restrict-template-expressions": "off",
837
977
  "@typescript-eslint/return-await": "off",
838
978
  "@typescript-eslint/strict-boolean-expressions": "off",
839
979
  "@typescript-eslint/strict-void-return": "off",
980
+ "@typescript-eslint/switch-exhaustiveness-check": "off",
840
981
  "@typescript-eslint/unbound-method": "off",
841
982
  "@typescript-eslint/use-unknown-in-catch-callback-variable": "off",
983
+ "dot-notation": "off",
842
984
  "getter-return": "error",
985
+ "no-array-constructor": "off",
843
986
  "no-dupe-args": "error",
987
+ "no-empty-function": "off",
988
+ "no-implied-eval": "off",
844
989
  "no-new-symbol": "off",
845
990
  "no-redeclare": "error",
991
+ "no-return-await": "off",
992
+ "no-shadow": "off",
993
+ "no-throw-literal": "off",
846
994
  "no-undef": "error",
847
- "no-unreachable": "error"
995
+ "no-unreachable": "error",
996
+ "no-useless-constructor": "off",
997
+ "prefer-const": [
998
+ "error",
999
+ {
1000
+ "destructuring": "all"
1001
+ }
1002
+ ],
1003
+ "prefer-promise-reject-errors": "off",
1004
+ "require-await": "off"
848
1005
  },
849
1006
  },
850
1007
 
@@ -891,8 +1048,7 @@ export default [
891
1048
  "vitest/prefer-strict-equal": "error",
892
1049
  "vitest/prefer-to-be": "error",
893
1050
  "vitest/prefer-to-have-length": "error",
894
- "vitest/require-top-level-describe": "error",
895
- "vitest/valid-title": "error"
1051
+ "vitest/require-top-level-describe": "error"
896
1052
  },
897
1053
  },
898
1054
 
@@ -1073,7 +1229,87 @@ export default [
1073
1229
  // Markdown/MDX code block linting
1074
1230
  {
1075
1231
  ...mdxPlugin.flatCodeBlocks,
1232
+ languageOptions: {
1233
+ ...mdxPlugin.flatCodeBlocks.languageOptions,
1234
+ parserOptions: {
1235
+ ...mdxPlugin.flatCodeBlocks.languageOptions?.parserOptions,
1236
+ projectService: false,
1237
+ },
1238
+ },
1076
1239
  rules: {
1240
+ ...{
1241
+ "@typescript-eslint/await-thenable": "off",
1242
+ "@typescript-eslint/consistent-type-exports": "off",
1243
+ "@typescript-eslint/dot-notation": "off",
1244
+ "@typescript-eslint/member-ordering": "off",
1245
+ "@typescript-eslint/method-signature-style": "off",
1246
+ "@typescript-eslint/naming-convention": "off",
1247
+ "@typescript-eslint/no-array-delete": "off",
1248
+ "@typescript-eslint/no-base-to-string": "off",
1249
+ "@typescript-eslint/no-confusing-void-expression": "off",
1250
+ "@typescript-eslint/no-deprecated": "off",
1251
+ "@typescript-eslint/no-duplicate-type-constituents": "off",
1252
+ "@typescript-eslint/no-floating-promises": "off",
1253
+ "@typescript-eslint/no-for-in-array": "off",
1254
+ "@typescript-eslint/no-implied-eval": "off",
1255
+ "@typescript-eslint/no-meaningless-void-operator": "off",
1256
+ "@typescript-eslint/no-misused-spread": "off",
1257
+ "@typescript-eslint/no-mixed-enums": "off",
1258
+ "@typescript-eslint/no-redundant-type-constituents": "off",
1259
+ "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off",
1260
+ "@typescript-eslint/no-unnecessary-condition": "off",
1261
+ "@typescript-eslint/no-unnecessary-qualifier": "off",
1262
+ "@typescript-eslint/no-unnecessary-template-expression": "off",
1263
+ "@typescript-eslint/no-unnecessary-type-arguments": "off",
1264
+ "@typescript-eslint/no-unnecessary-type-assertion": "off",
1265
+ "@typescript-eslint/no-unnecessary-type-conversion": "off",
1266
+ "@typescript-eslint/no-unnecessary-type-parameters": "off",
1267
+ "@typescript-eslint/no-unsafe-argument": "off",
1268
+ "@typescript-eslint/no-unsafe-assignment": "off",
1269
+ "@typescript-eslint/no-unsafe-call": "off",
1270
+ "@typescript-eslint/no-unsafe-enum-comparison": "off",
1271
+ "@typescript-eslint/no-unsafe-member-access": "off",
1272
+ "@typescript-eslint/no-unsafe-return": "off",
1273
+ "@typescript-eslint/no-unsafe-type-assertion": "off",
1274
+ "@typescript-eslint/no-unsafe-unary-minus": "off",
1275
+ "@typescript-eslint/no-useless-default-assignment": "off",
1276
+ "@typescript-eslint/non-nullable-type-assertion-style": "off",
1277
+ "@typescript-eslint/only-throw-error": "off",
1278
+ "@typescript-eslint/prefer-find": "off",
1279
+ "@typescript-eslint/prefer-includes": "off",
1280
+ "@typescript-eslint/prefer-nullish-coalescing": "off",
1281
+ "@typescript-eslint/prefer-optional-chain": "off",
1282
+ "@typescript-eslint/prefer-promise-reject-errors": "off",
1283
+ "@typescript-eslint/prefer-readonly": "off",
1284
+ "@typescript-eslint/prefer-reduce-type-parameter": "off",
1285
+ "@typescript-eslint/prefer-regexp-exec": "off",
1286
+ "@typescript-eslint/prefer-return-this-type": "off",
1287
+ "@typescript-eslint/prefer-string-starts-ends-with": "off",
1288
+ "@typescript-eslint/promise-function-async": "off",
1289
+ "@typescript-eslint/related-getter-setter-pairs": "off",
1290
+ "@typescript-eslint/require-array-sort-compare": "off",
1291
+ "@typescript-eslint/require-await": "off",
1292
+ "@typescript-eslint/restrict-plus-operands": "off",
1293
+ "@typescript-eslint/restrict-template-expressions": "off",
1294
+ "@typescript-eslint/return-await": "off",
1295
+ "@typescript-eslint/strict-boolean-expressions": "off",
1296
+ "@typescript-eslint/strict-void-return": "off",
1297
+ "@typescript-eslint/switch-exhaustiveness-check": "off",
1298
+ "@typescript-eslint/unbound-method": "off",
1299
+ "@typescript-eslint/use-unknown-in-catch-callback-variable": "off",
1300
+ "dot-notation": "off",
1301
+ "no-array-constructor": "off",
1302
+ "no-empty-function": "off",
1303
+ "no-implied-eval": "off",
1304
+ "no-return-await": "off",
1305
+ "no-shadow": "off",
1306
+ "no-throw-literal": "off",
1307
+ "no-useless-constructor": "off",
1308
+ "prefer-promise-reject-errors": "off",
1309
+ "require-await": "off",
1310
+ "strict": "off",
1311
+ "unicode-bom": "off"
1312
+ },
1077
1313
  ...mdxPlugin.flatCodeBlocks.rules,
1078
1314
  "eol-last": "off",
1079
1315
  "no-undef": "off",