@isentinel/eslint-config 6.3.0 → 6.5.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/dist/oxlint.mjs CHANGED
@@ -132,14 +132,19 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
132
132
  "eslint-plugin/test-case-shorthand-strings",
133
133
  "eslint-plugin/unique-test-case-names",
134
134
  "flawless/arrow-return-style",
135
+ "flawless/cognitive-complexity",
135
136
  "flawless/jsx-shorthand-boolean",
136
137
  "flawless/jsx-shorthand-fragment",
138
+ "flawless/max-comment-length",
137
139
  "flawless/max-lines-per-function",
138
140
  "flawless/naming-convention",
139
141
  "flawless/no-conditional-empty-object-spread",
140
142
  "flawless/no-conditional-in-test",
143
+ "flawless/no-em-dash",
141
144
  "flawless/no-export-default-arrow",
142
145
  "flawless/no-floating-point-equality",
146
+ "flawless/no-ignored-return",
147
+ "flawless/no-incompatible-assertion-types",
143
148
  "flawless/no-known-value-widening",
144
149
  "flawless/no-materialized-filter-map",
145
150
  "flawless/no-object-parameters",
@@ -150,8 +155,10 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
150
155
  "flawless/no-shape-in-symbol-names",
151
156
  "flawless/no-shared-mocks",
152
157
  "flawless/no-shared-test-state",
158
+ "flawless/no-trivial-functions",
153
159
  "flawless/no-unknown-parameters",
154
160
  "flawless/no-unknown-returns",
161
+ "flawless/no-unnecessary-prop-alias",
155
162
  "flawless/no-unnecessary-use-callback",
156
163
  "flawless/no-unnecessary-use-memo",
157
164
  "flawless/no-unsafe-dictionary-type",
@@ -167,6 +174,7 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
167
174
  "flawless/react-namespace",
168
175
  "flawless/toml-sort-keys",
169
176
  "flawless/yaml-block-key-blank-lines",
177
+ "flawless/yaml-sort-sequence-by-key",
170
178
  "for-direction",
171
179
  "func-call-spacing",
172
180
  "func-name-matching",
@@ -304,6 +312,7 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
304
312
  "jsdoc/no-restricted-syntax",
305
313
  "jsdoc/no-types",
306
314
  "jsdoc/no-undefined-types",
315
+ "jsdoc/no-unnecessary-type-assertion",
307
316
  "jsdoc/normalize-see-links",
308
317
  "jsdoc/prefer-import-tag",
309
318
  "jsdoc/reject-any-type",
@@ -343,6 +352,7 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
343
352
  "jsdoc/sort-tags",
344
353
  "jsdoc/tag-lines",
345
354
  "jsdoc/text-escaping",
355
+ "jsdoc/ts-ban-ts-comment",
346
356
  "jsdoc/ts-method-signature-style",
347
357
  "jsdoc/ts-no-empty-object-type",
348
358
  "jsdoc/ts-no-unnecessary-template-expression",
@@ -596,6 +606,7 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
596
606
  "perfectionist/sort-array-includes",
597
607
  "perfectionist/sort-arrays",
598
608
  "perfectionist/sort-classes",
609
+ "perfectionist/sort-constructor-parameters",
599
610
  "perfectionist/sort-decorators",
600
611
  "perfectionist/sort-enums",
601
612
  "perfectionist/sort-export-attributes",
@@ -757,6 +768,7 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
757
768
  "small-rules/ban-react-fc",
758
769
  "small-rules/ban-types",
759
770
  "small-rules/consistent-compound-words",
771
+ "small-rules/curly",
760
772
  "small-rules/directive-disable-enable-pair",
761
773
  "small-rules/directive-no-aggregating-enable",
762
774
  "small-rules/directive-no-duplicate-disable",
@@ -768,53 +780,89 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
768
780
  "small-rules/enforce-ianitor-check-type",
769
781
  "small-rules/isolated-functions",
770
782
  "small-rules/memoized-effect-dependencies",
783
+ "small-rules/no-adjust-state-on-prop-change",
771
784
  "small-rules/no-array-constructor-elements",
772
785
  "small-rules/no-array-constructor-index-assignment",
773
786
  "small-rules/no-array-size-assignment",
774
787
  "small-rules/no-async-constructor",
775
788
  "small-rules/no-async-in-system",
776
789
  "small-rules/no-cascading-set-state",
790
+ "small-rules/no-chain-state-updates",
791
+ "small-rules/no-chained-type-assertions",
792
+ "small-rules/no-cliffy-action-wrapper",
777
793
  "small-rules/no-color3-constructor",
778
794
  "small-rules/no-commented-code",
795
+ "small-rules/no-conditional-empty-object-spread",
779
796
  "small-rules/no-constant-condition-with-break",
780
797
  "small-rules/no-dead-store",
798
+ "small-rules/no-derived-state",
799
+ "small-rules/no-discarded-rejection",
781
800
  "small-rules/no-error",
801
+ "small-rules/no-event-handler",
782
802
  "small-rules/no-events-in-events-callback",
803
+ "small-rules/no-external-store-subscription",
783
804
  "small-rules/no-filter-map-chain",
784
805
  "small-rules/no-floating-point-equality",
785
806
  "small-rules/no-giant-component",
786
807
  "small-rules/no-god-components",
808
+ "small-rules/no-has-before-remove-in-jecs",
787
809
  "small-rules/no-ianitor-in-function-body",
788
810
  "small-rules/no-ianitor-success-access",
789
811
  "small-rules/no-identity-map",
790
812
  "small-rules/no-increment-decrement",
813
+ "small-rules/no-initialize-state",
791
814
  "small-rules/no-inline-property-on-memo-component",
815
+ "small-rules/no-inline-signature-types",
792
816
  "small-rules/no-instance-methods-without-this",
817
+ "small-rules/no-jsx-spread-child",
818
+ "small-rules/no-known-value-widening",
793
819
  "small-rules/no-loop-iterable-mutation",
820
+ "small-rules/no-module-mocking",
821
+ "small-rules/no-multiple-cliffy-commands",
794
822
  "small-rules/no-native-properties-spread",
823
+ "small-rules/no-nested-hook-calls",
795
824
  "small-rules/no-new-instance-in-use-memo",
825
+ "small-rules/no-object-parameters",
826
+ "small-rules/no-pass-data-to-parent",
827
+ "small-rules/no-pass-live-state-to-parent",
796
828
  "small-rules/no-print",
829
+ "small-rules/no-real-temporary-directory",
797
830
  "small-rules/no-recursive",
831
+ "small-rules/no-reduce-accumulator-copy",
798
832
  "small-rules/no-redundant-aspect-ratio-constraint",
833
+ "small-rules/no-reflect-apply",
834
+ "small-rules/no-reflect-get",
799
835
  "small-rules/no-render-helper-functions",
836
+ "small-rules/no-reset-all-state-on-prop-change",
800
837
  "small-rules/no-restricted-property-assignment",
838
+ "small-rules/no-runtime-in-type-files",
839
+ "small-rules/no-runtime-typeof",
840
+ "small-rules/no-shape-in-symbol-names",
801
841
  "small-rules/no-spec-file-extension",
802
842
  "small-rules/no-static-react-create-element",
803
843
  "small-rules/no-table-create-map",
804
844
  "small-rules/no-task-wait",
845
+ "small-rules/no-test-timeout",
805
846
  "small-rules/no-trivial-assertions",
806
847
  "small-rules/no-underscore-react-props",
848
+ "small-rules/no-unknown-parameters",
849
+ "small-rules/no-unknown-returns",
850
+ "small-rules/no-unknown-type-aliases",
851
+ "small-rules/no-unsafe-dictionary-type",
852
+ "small-rules/no-unsupported-syntax",
807
853
  "small-rules/no-unused-imports",
808
854
  "small-rules/no-unused-use-memo",
809
855
  "small-rules/no-use-memo-simple-expression",
810
856
  "small-rules/no-use-of-empty-return-value",
811
857
  "small-rules/no-useless-constants",
812
858
  "small-rules/no-useless-default",
859
+ "small-rules/no-useless-empty-string-comparison",
813
860
  "small-rules/no-useless-use-effect",
814
861
  "small-rules/no-useless-use-memo",
815
862
  "small-rules/no-useless-use-spring",
816
863
  "small-rules/no-variadic-spread",
817
864
  "small-rules/no-warn",
865
+ "small-rules/no-widen-then-assert",
818
866
  "small-rules/only-type-imports",
819
867
  "small-rules/prefer-class-properties",
820
868
  "small-rules/prefer-constant-dispatch",
@@ -827,12 +875,15 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
827
875
  "small-rules/prefer-idiv",
828
876
  "small-rules/prefer-local-portal-component",
829
877
  "small-rules/prefer-math-min-max",
878
+ "small-rules/prefer-membership-filter-in-jecs",
830
879
  "small-rules/prefer-modding-inspect",
831
880
  "small-rules/prefer-module-scope-constants",
881
+ "small-rules/prefer-native-collection-copy",
882
+ "small-rules/prefer-optional-parameter",
832
883
  "small-rules/prefer-padding-components",
833
884
  "small-rules/prefer-pascal-case-enums",
834
885
  "small-rules/prefer-sequence-overloads",
835
- "small-rules/prefer-single-world-query",
886
+ "small-rules/prefer-single-world-query-in-jecs",
836
887
  "small-rules/prefer-singular-enums",
837
888
  "small-rules/prefer-ternary-conditional-rendering",
838
889
  "small-rules/prefer-udim2-shorthand",
@@ -845,10 +896,14 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
845
896
  "small-rules/require-paired-calls",
846
897
  "small-rules/require-react-component-keys",
847
898
  "small-rules/require-react-display-names",
899
+ "small-rules/require-readable-spacing",
900
+ "small-rules/require-safety-comment-for-type-assertion",
848
901
  "small-rules/require-switch-case-braces",
849
902
  "small-rules/require-throw-error-capture",
903
+ "small-rules/require-tsx-for-hooks",
850
904
  "small-rules/require-unicode-regex",
851
905
  "small-rules/rerender-memo-with-default-value",
906
+ "small-rules/starts-with-verb",
852
907
  "small-rules/strict-component-boundaries",
853
908
  "small-rules/use-exhaustive-dependencies",
854
909
  "small-rules/use-hook-at-top-level",
@@ -1313,6 +1368,7 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
1313
1368
  "ts/no-extraneous-class",
1314
1369
  "ts/no-floating-promises",
1315
1370
  "ts/no-for-in-array",
1371
+ "ts/no-generated-empty-object-type",
1316
1372
  "ts/no-implied-eval",
1317
1373
  "ts/no-import-type-side-effects",
1318
1374
  "ts/no-inferrable-types",
@@ -1352,6 +1408,7 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
1352
1408
  "ts/no-unsafe-assignment",
1353
1409
  "ts/no-unsafe-call",
1354
1410
  "ts/no-unsafe-declaration-merging",
1411
+ "ts/no-unsafe-enum-assignment",
1355
1412
  "ts/no-unsafe-enum-comparison",
1356
1413
  "ts/no-unsafe-function-type",
1357
1414
  "ts/no-unsafe-member-access",
@@ -1847,6 +1904,8 @@ const jsPluginRuleNames = /* @__PURE__ */ new Set([
1847
1904
  const typeAwareJsPluginRuleNames = /* @__PURE__ */ new Set([
1848
1905
  "eslint-plugin/no-property-in-node",
1849
1906
  "flawless/naming-convention",
1907
+ "flawless/no-ignored-return",
1908
+ "flawless/no-incompatible-assertion-types",
1850
1909
  "flawless/no-materialized-filter-map",
1851
1910
  "flawless/no-redundant-type-annotation",
1852
1911
  "flawless/no-reflect-set",
@@ -1947,6 +2006,7 @@ const typeAwareJsPluginRuleNames = /* @__PURE__ */ new Set([
1947
2006
  "ts/no-duplicate-type-constituents",
1948
2007
  "ts/no-floating-promises",
1949
2008
  "ts/no-for-in-array",
2009
+ "ts/no-generated-empty-object-type",
1950
2010
  "ts/no-implied-eval",
1951
2011
  "ts/no-meaningless-void-operator",
1952
2012
  "ts/no-misused-promises",
@@ -1964,6 +2024,7 @@ const typeAwareJsPluginRuleNames = /* @__PURE__ */ new Set([
1964
2024
  "ts/no-unsafe-argument",
1965
2025
  "ts/no-unsafe-assignment",
1966
2026
  "ts/no-unsafe-call",
2027
+ "ts/no-unsafe-enum-assignment",
1967
2028
  "ts/no-unsafe-enum-comparison",
1968
2029
  "ts/no-unsafe-member-access",
1969
2030
  "ts/no-unsafe-return",
@@ -2091,13 +2152,18 @@ const effectivePresetRuleNames = /* @__PURE__ */ new Set([
2091
2152
  "eslint-plugin/test-case-shorthand-strings",
2092
2153
  "eslint-plugin/unique-test-case-names",
2093
2154
  "flawless/arrow-return-style",
2155
+ "flawless/cognitive-complexity",
2094
2156
  "flawless/jsx-shorthand-boolean",
2095
2157
  "flawless/jsx-shorthand-fragment",
2158
+ "flawless/max-comment-length",
2096
2159
  "flawless/max-lines-per-function",
2097
2160
  "flawless/no-conditional-empty-object-spread",
2098
2161
  "flawless/no-conditional-in-test",
2162
+ "flawless/no-em-dash",
2099
2163
  "flawless/no-export-default-arrow",
2100
2164
  "flawless/no-floating-point-equality",
2165
+ "flawless/no-ignored-return",
2166
+ "flawless/no-incompatible-assertion-types",
2101
2167
  "flawless/no-known-value-widening",
2102
2168
  "flawless/no-materialized-filter-map",
2103
2169
  "flawless/no-object-parameters",
@@ -2106,7 +2172,10 @@ const effectivePresetRuleNames = /* @__PURE__ */ new Set([
2106
2172
  "flawless/no-reflect-set",
2107
2173
  "flawless/no-shape-in-symbol-names",
2108
2174
  "flawless/no-shared-mocks",
2175
+ "flawless/no-trivial-functions",
2176
+ "flawless/no-unknown-parameters",
2109
2177
  "flawless/no-unknown-returns",
2178
+ "flawless/no-unnecessary-prop-alias",
2110
2179
  "flawless/no-unnecessary-use-callback",
2111
2180
  "flawless/no-unnecessary-use-memo",
2112
2181
  "flawless/no-unsafe-dictionary-type",
@@ -2476,7 +2545,6 @@ const effectivePresetRuleNames = /* @__PURE__ */ new Set([
2476
2545
  "small-rules/require-async-suffix",
2477
2546
  "small-rules/strict-component-boundaries",
2478
2547
  "sonar/bool-param-default",
2479
- "sonar/cognitive-complexity",
2480
2548
  "sonar/constructor-for-side-effects",
2481
2549
  "sonar/destructuring-assignment-syntax",
2482
2550
  "sonar/elseif-without-else",
@@ -2493,13 +2561,10 @@ const effectivePresetRuleNames = /* @__PURE__ */ new Set([
2493
2561
  "sonar/no-duplicated-branches",
2494
2562
  "sonar/no-element-overwrite",
2495
2563
  "sonar/no-empty-collection",
2496
- "sonar/no-floating-point-equality",
2497
2564
  "sonar/no-gratuitous-expressions",
2498
2565
  "sonar/no-identical-conditions",
2499
2566
  "sonar/no-identical-expressions",
2500
2567
  "sonar/no-identical-functions",
2501
- "sonar/no-ignored-return",
2502
- "sonar/no-incompatible-assertion-types",
2503
2568
  "sonar/no-inverted-boolean-check",
2504
2569
  "sonar/no-mixed-completion-style",
2505
2570
  "sonar/no-nested-conditional",
@@ -2567,6 +2632,7 @@ const effectivePresetRuleNames = /* @__PURE__ */ new Set([
2567
2632
  "ts/no-extraneous-class",
2568
2633
  "ts/no-floating-promises",
2569
2634
  "ts/no-for-in-array",
2635
+ "ts/no-generated-empty-object-type",
2570
2636
  "ts/no-implied-eval",
2571
2637
  "ts/no-import-type-side-effects",
2572
2638
  "ts/no-inferrable-types",
@@ -2599,6 +2665,7 @@ const effectivePresetRuleNames = /* @__PURE__ */ new Set([
2599
2665
  "ts/no-unsafe-assignment",
2600
2666
  "ts/no-unsafe-call",
2601
2667
  "ts/no-unsafe-declaration-merging",
2668
+ "ts/no-unsafe-enum-assignment",
2602
2669
  "ts/no-unsafe-enum-comparison",
2603
2670
  "ts/no-unsafe-function-type",
2604
2671
  "ts/no-unsafe-member-access",
@@ -2914,14 +2981,19 @@ const enabledPresetRuleNames = /* @__PURE__ */ new Set([
2914
2981
  "eslint-plugin/test-case-shorthand-strings",
2915
2982
  "eslint-plugin/unique-test-case-names",
2916
2983
  "flawless/arrow-return-style",
2984
+ "flawless/cognitive-complexity",
2917
2985
  "flawless/jsx-shorthand-boolean",
2918
2986
  "flawless/jsx-shorthand-fragment",
2987
+ "flawless/max-comment-length",
2919
2988
  "flawless/max-lines-per-function",
2920
2989
  "flawless/naming-convention",
2921
2990
  "flawless/no-conditional-empty-object-spread",
2922
2991
  "flawless/no-conditional-in-test",
2992
+ "flawless/no-em-dash",
2923
2993
  "flawless/no-export-default-arrow",
2924
2994
  "flawless/no-floating-point-equality",
2995
+ "flawless/no-ignored-return",
2996
+ "flawless/no-incompatible-assertion-types",
2925
2997
  "flawless/no-known-value-widening",
2926
2998
  "flawless/no-materialized-filter-map",
2927
2999
  "flawless/no-object-parameters",
@@ -2931,7 +3003,10 @@ const enabledPresetRuleNames = /* @__PURE__ */ new Set([
2931
3003
  "flawless/no-reflect-set",
2932
3004
  "flawless/no-shape-in-symbol-names",
2933
3005
  "flawless/no-shared-mocks",
3006
+ "flawless/no-trivial-functions",
3007
+ "flawless/no-unknown-parameters",
2934
3008
  "flawless/no-unknown-returns",
3009
+ "flawless/no-unnecessary-prop-alias",
2935
3010
  "flawless/no-unnecessary-use-callback",
2936
3011
  "flawless/no-unnecessary-use-memo",
2937
3012
  "flawless/no-unsafe-dictionary-type",
@@ -3393,7 +3468,6 @@ const enabledPresetRuleNames = /* @__PURE__ */ new Set([
3393
3468
  "small-rules/require-async-suffix",
3394
3469
  "small-rules/strict-component-boundaries",
3395
3470
  "sonar/bool-param-default",
3396
- "sonar/cognitive-complexity",
3397
3471
  "sonar/constructor-for-side-effects",
3398
3472
  "sonar/destructuring-assignment-syntax",
3399
3473
  "sonar/file-name-differ-from-class",
@@ -3406,12 +3480,9 @@ const enabledPresetRuleNames = /* @__PURE__ */ new Set([
3406
3480
  "sonar/no-duplicated-branches",
3407
3481
  "sonar/no-element-overwrite",
3408
3482
  "sonar/no-empty-collection",
3409
- "sonar/no-floating-point-equality",
3410
3483
  "sonar/no-identical-conditions",
3411
3484
  "sonar/no-identical-expressions",
3412
3485
  "sonar/no-identical-functions",
3413
- "sonar/no-ignored-return",
3414
- "sonar/no-incompatible-assertion-types",
3415
3486
  "sonar/no-inverted-boolean-check",
3416
3487
  "sonar/no-mixed-completion-style",
3417
3488
  "sonar/no-nested-conditional",
@@ -3469,6 +3540,7 @@ const enabledPresetRuleNames = /* @__PURE__ */ new Set([
3469
3540
  "style/key-spacing",
3470
3541
  "style/keyword-spacing",
3471
3542
  "style/lines-between-class-members",
3543
+ "style/max-len",
3472
3544
  "style/max-statements-per-line",
3473
3545
  "style/member-delimiter-style",
3474
3546
  "style/multiline-comment-style",
@@ -3569,6 +3641,7 @@ const enabledPresetRuleNames = /* @__PURE__ */ new Set([
3569
3641
  "ts/no-extraneous-class",
3570
3642
  "ts/no-floating-promises",
3571
3643
  "ts/no-for-in-array",
3644
+ "ts/no-generated-empty-object-type",
3572
3645
  "ts/no-implied-eval",
3573
3646
  "ts/no-import-type-side-effects",
3574
3647
  "ts/no-inferrable-types",
@@ -3598,6 +3671,7 @@ const enabledPresetRuleNames = /* @__PURE__ */ new Set([
3598
3671
  "ts/no-unsafe-assignment",
3599
3672
  "ts/no-unsafe-call",
3600
3673
  "ts/no-unsafe-declaration-merging",
3674
+ "ts/no-unsafe-enum-assignment",
3601
3675
  "ts/no-unsafe-enum-comparison",
3602
3676
  "ts/no-unsafe-function-type",
3603
3677
  "ts/no-unsafe-member-access",
@@ -4248,16 +4322,24 @@ const oxlintNativeRuleNames = /* @__PURE__ */ new Set([
4248
4322
  "react-perf/jsx-no-new-function-as-prop",
4249
4323
  "react-perf/jsx-no-new-object-as-prop",
4250
4324
  "react/button-has-type",
4325
+ "react/capitalized-calls",
4251
4326
  "react/checked-requires-onchange-or-readonly",
4252
4327
  "react/display-name",
4328
+ "react/error-boundaries",
4253
4329
  "react/exhaustive-deps",
4330
+ "react/exhaustive-effect-dependencies",
4254
4331
  "react/forbid-component-props",
4255
4332
  "react/forbid-dom-props",
4256
4333
  "react/forbid-elements",
4257
4334
  "react/forward-ref-uses-ref",
4258
4335
  "react/function-component-definition",
4336
+ "react/globals",
4259
4337
  "react/hook-use-state",
4338
+ "react/hooks",
4260
4339
  "react/iframe-missing-sandbox",
4340
+ "react/immutability",
4341
+ "react/incompatible-library",
4342
+ "react/invariant",
4261
4343
  "react/jsx-boolean-value",
4262
4344
  "react/jsx-curly-brace-presence",
4263
4345
  "react/jsx-filename-extension",
@@ -4276,11 +4358,13 @@ const oxlintNativeRuleNames = /* @__PURE__ */ new Set([
4276
4358
  "react/jsx-pascal-case",
4277
4359
  "react/jsx-props-no-spread-multi",
4278
4360
  "react/jsx-props-no-spreading",
4361
+ "react/memo-dependencies",
4279
4362
  "react/no-array-index-key",
4280
4363
  "react/no-children-prop",
4281
4364
  "react/no-clone-element",
4282
4365
  "react/no-danger",
4283
4366
  "react/no-danger-with-children",
4367
+ "react/no-deriving-state-in-effects",
4284
4368
  "react/no-did-mount-set-state",
4285
4369
  "react/no-did-update-set-state",
4286
4370
  "react/no-direct-mutation-state",
@@ -4303,14 +4387,25 @@ const oxlintNativeRuleNames = /* @__PURE__ */ new Set([
4303
4387
  "react/only-export-components",
4304
4388
  "react/prefer-es6-class",
4305
4389
  "react/prefer-function-component",
4306
- "react/react-compiler",
4390
+ "react/preserve-manual-memoization",
4391
+ "react/purity",
4307
4392
  "react/react-in-jsx-scope",
4393
+ "react/refs",
4308
4394
  "react/require-render-return",
4395
+ "react/rule-suppression",
4309
4396
  "react/rules-of-hooks",
4310
4397
  "react/self-closing-comp",
4398
+ "react/set-state-in-effect",
4399
+ "react/set-state-in-render",
4311
4400
  "react/state-in-constructor",
4401
+ "react/static-components",
4312
4402
  "react/style-prop-object",
4403
+ "react/syntax",
4404
+ "react/todo",
4405
+ "react/unsupported-syntax",
4406
+ "react/use-memo",
4313
4407
  "react/void-dom-elements-no-children",
4408
+ "react/void-use-memo",
4314
4409
  "require-await",
4315
4410
  "require-unicode-regexp",
4316
4411
  "require-yield",
@@ -4352,6 +4447,7 @@ const oxlintNativeRuleNames = /* @__PURE__ */ new Set([
4352
4447
  "typescript/no-extraneous-class",
4353
4448
  "typescript/no-floating-promises",
4354
4449
  "typescript/no-for-in-array",
4450
+ "typescript/no-generated-empty-object-type",
4355
4451
  "typescript/no-implied-eval",
4356
4452
  "typescript/no-import-type-side-effects",
4357
4453
  "typescript/no-inferrable-types",
@@ -4383,6 +4479,7 @@ const oxlintNativeRuleNames = /* @__PURE__ */ new Set([
4383
4479
  "typescript/no-unsafe-assignment",
4384
4480
  "typescript/no-unsafe-call",
4385
4481
  "typescript/no-unsafe-declaration-merging",
4482
+ "typescript/no-unsafe-enum-assignment",
4386
4483
  "typescript/no-unsafe-enum-comparison",
4387
4484
  "typescript/no-unsafe-function-type",
4388
4485
  "typescript/no-unsafe-member-access",
@@ -4704,6 +4801,7 @@ const typeAwareNativeOxlintRuleNames = /* @__PURE__ */ new Set([
4704
4801
  "typescript/no-duplicate-type-constituents",
4705
4802
  "typescript/no-floating-promises",
4706
4803
  "typescript/no-for-in-array",
4804
+ "typescript/no-generated-empty-object-type",
4707
4805
  "typescript/no-implied-eval",
4708
4806
  "typescript/no-meaningless-void-operator",
4709
4807
  "typescript/no-misused-promises",
@@ -4721,6 +4819,7 @@ const typeAwareNativeOxlintRuleNames = /* @__PURE__ */ new Set([
4721
4819
  "typescript/no-unsafe-argument",
4722
4820
  "typescript/no-unsafe-assignment",
4723
4821
  "typescript/no-unsafe-call",
4822
+ "typescript/no-unsafe-enum-assignment",
4724
4823
  "typescript/no-unsafe-enum-comparison",
4725
4824
  "typescript/no-unsafe-member-access",
4726
4825
  "typescript/no-unsafe-return",
@@ -4832,6 +4931,8 @@ const optionallyTypeAwareRules = /* @__PURE__ */ new Set([
4832
4931
  */
4833
4932
  const typeAwareJsPluginRules = /* @__PURE__ */ new Set([
4834
4933
  "eslint-plugin/no-property-in-node",
4934
+ "flawless/no-ignored-return",
4935
+ "flawless/no-incompatible-assertion-types",
4835
4936
  "jest/no-error-equal",
4836
4937
  "jest/no-unnecessary-assertion",
4837
4938
  "jest/unbound-method",
@@ -4841,12 +4942,9 @@ const typeAwareJsPluginRules = /* @__PURE__ */ new Set([
4841
4942
  "react/no-implicit-ref",
4842
4943
  "react/no-leaked-conditional-rendering",
4843
4944
  "react/no-unused-props",
4844
- "sonar/no-ignored-return",
4845
- "sonar/no-incompatible-assertion-types",
4846
4945
  "sonar/no-redundant-optional",
4847
4946
  "sonar/no-try-promise",
4848
4947
  "sonar/prefer-immediate-return",
4849
- "ts/prefer-destructuring",
4850
4948
  "unicorn/no-non-function-verb-prefix"
4851
4949
  ]);
4852
4950
  const ESLINT_ONLY = "eslint-only";
@@ -4914,7 +5012,8 @@ const TS_EXTENSION_TO_CORE = /* @__PURE__ */ new Set([
4914
5012
  "no-shadow",
4915
5013
  "no-unused-expressions",
4916
5014
  "no-unused-private-class-members",
4917
- "no-useless-constructor"
5015
+ "no-useless-constructor",
5016
+ "prefer-destructuring"
4918
5017
  ]);
4919
5018
  /**
4920
5019
  * Unicorn rules renamed upstream but still exposed under the old Oxlint name.
@@ -4981,17 +5080,16 @@ function jsPluginAdapterFor(rule) {
4981
5080
  const staysInEslint = {
4982
5081
  "e18e/* (optionally type-aware)": "Four e18e rules (prefer-array-at, prefer-array-to-reversed, prefer-array-to-sorted, prefer-spread-syntax) run without type information but detect more with it, so they stay in ESLint (see optionallyTypeAwareRules); the rest run in oxlint as a jsPlugin",
4983
5082
  "eslint-comments/*": "Lints eslint-disable directives, which only exist in ESLint-linted code; oxlint-comments covers oxlint directives",
4984
- "flawless/naming-convention": "Type-aware custom rule; oxlint jsPlugins have no type information. The syntax-only flawless rules (arrow-return-style, max-lines-per-function, no-conditional-in-test, no-export-default-arrow, padding-after-expect-assertions, prefer-ending-with-an-expect, prefer-expect-assertions-count, prefer-parameter-destructuring, the react jsx-shorthand-*, purity, no-unnecessary-use-*, prefer-destructuring-assignment) run in oxlint. flawless/no-redundant-tsconfig-options and every flawless/toml-* and flawless/yaml-* rule lint non-JS files and stay in ESLint",
5083
+ "flawless/naming-convention": "Type-aware custom rule; oxlint jsPlugins have no type information. The syntax-only flawless rules (arrow-return-style, cognitive-complexity, max-comment-length, max-lines-per-function, no-em-dash, no-trivial-functions, no-unknown-parameters, no-unnecessary-prop-alias, no-conditional-in-test, no-export-default-arrow, padding-after-expect-assertions, prefer-ending-with-an-expect, prefer-expect-assertions-count, prefer-parameter-destructuring, the react jsx-shorthand-*, purity, no-unnecessary-use-*, prefer-destructuring-assignment) run in oxlint. flawless/no-redundant-tsconfig-options and every flawless/toml-* and flawless/yaml-* rule lint non-JS files and stay in ESLint",
4985
5084
  "flawless/prefer-read-only-props": "Type-aware custom rule; oxlint jsPlugins have no type information",
4986
5085
  "format-lua/*": "Oxlint cannot lint Lua files",
4987
5086
  "jest/* (type-aware)": "Four type-aware jest rules stay in ESLint (see typeAwareJsPluginRules); the rest run in oxlint via eslint-plugin-jest as a jsPlugin (renamed jest-js, since oxlint reserves the native jest prefix), which honors settings.jest.globalPackage = @rbxts/jest-globals (the NATIVE oxlint jest plugin does not, https://github.com/oxc-project/oxc/issues/23290)",
4988
- "jsdoc/require-param": "Oxlint's native port reports nested functions inside an unexported documented function (https://github.com/oxc-project/oxc/issues/27470)",
4989
5087
  "jsonc/yaml/toml/markdown/package-json/pnpm/sort-*": "Oxlint only lints JS/TS files; JSON, YAML, TOML and Markdown stay in ESLint",
4990
5088
  "react/* (type-aware)": "The @eslint-react type-aware rules (no-implicit-children/key/ref, no-leaked-conditional-rendering, no-unused-props) need type information but do NOT declare requiresTypeChecking, so the metadata-based parity test cannot catch them; they are excluded manually and stay in ESLint",
4991
5089
  "roblox/* (type-aware)": "Type-aware custom rules (lua-truthiness etc.); oxlint jsPlugins have no type information",
4992
5090
  "sentinel/explicit-size-check": "Type-aware custom rule; oxlint jsPlugins have no type information",
4993
5091
  "ts/no-shadow": "Oxlint's native port does not check members of declare namespace / declare module blocks in .d.ts files (https://github.com/oxc-project/oxc/issues/27469)",
4994
- "type-aware jsPlugin rules": "Rules whose meta.docs.requiresTypeChecking is true crash or silently no-op under oxlint's jsPlugin runtime (no type information): sonar/no-ignored-return, sonar/no-incompatible-assertion-types, sonar/no-redundant-optional, sonar/no-try-promise, sonar/prefer-immediate-return, unicorn/no-non-function-verb-prefix, eslint-plugin/no-property-in-node, jest/no-error-equal, jest/no-unnecessary-assertion, jest/unbound-method, jest/valid-expect-with-promise, ts/prefer-destructuring (also has no native oxlint port)",
5092
+ "type-aware jsPlugin rules": "Rules whose meta.docs.requiresTypeChecking is true crash or silently no-op under oxlint's jsPlugin runtime (no type information): flawless/no-ignored-return, flawless/no-incompatible-assertion-types, sonar/no-redundant-optional, sonar/no-try-promise, sonar/prefer-immediate-return, unicorn/no-non-function-verb-prefix, eslint-plugin/no-property-in-node, jest/no-error-equal, jest/no-unnecessary-assertion, jest/unbound-method, jest/valid-expect-with-promise",
4995
5093
  "unicorn/no-unsafe-string-replacement": "False positives under oxlint's jsPlugin scope analysis (template-literal replacements are not resolved)",
4996
5094
  "unicorn/no-useless-coercion": "Optionally type-aware: values whose type is only known through TypeScript (a `string`-typed parameter, say) are missed without parser services, so it stays in ESLint (see optionallyTypeAwareRules)",
4997
5095
  "vitest/prefer-each": "Oxlint's native port ignores where test functions are imported from, so it reports loops over non-vitest helpers and misses aliased imports (https://github.com/oxc-project/oxc/issues/27471)"
@@ -5029,7 +5127,6 @@ function isNonJsFlawlessName(name) {
5029
5127
  return name.startsWith("toml-") || name.startsWith("yaml-") || name === "no-redundant-tsconfig-options";
5030
5128
  }
5031
5129
  const KNOWN_INCOMPATIBLE_RULES = {
5032
- "jsdoc/require-param": "Oxlint applies an unexported outer function's JSDoc to a nested function (https://github.com/oxc-project/oxc/issues/27470).",
5033
5130
  "style/jsx-function-call-newline": "Formatting-rule ownership remains with ESLint and oxfmt.",
5034
5131
  "ts/no-shadow": "Oxlint skips every member of a declare namespace or declare module in .d.ts files (https://github.com/oxc-project/oxc/issues/27469).",
5035
5132
  "unicorn/no-missing-local-resource": "The preset only enables this rule for Markdown virtual files, which Oxlint cannot lint.",
@@ -5039,13 +5136,17 @@ const KNOWN_INCOMPATIBLE_RULES = {
5039
5136
  /**
5040
5137
  * Rules that take the ESLint plugin even though Oxlint ports them natively.
5041
5138
  * `unicorn/no-lonely-if` is here because its JS implementation currently has
5042
- * better autofix parity. A native preference needs no entry — that is what
5043
- * every family gets by default.
5139
+ * better autofix parity. `unicorn/no-useless-undefined` is here because the
5140
+ * native autofix breaks syntax and drops types and comments
5141
+ * (https://github.com/oxc-project/oxc/issues/28978) and the native rule misses
5142
+ * reports (https://github.com/oxc-project/oxc/issues/28979,
5143
+ * https://github.com/oxc-project/oxc/issues/28988). A native preference needs
5144
+ * no entry — that is what every family gets by default.
5044
5145
  */
5045
5146
  const JS_PLUGIN_PREFERRED_RULES = /* @__PURE__ */ new Set([
5046
- "id-length",
5047
5147
  "no-loop-func",
5048
- "unicorn/no-lonely-if"
5148
+ "unicorn/no-lonely-if",
5149
+ "unicorn/no-useless-undefined"
5049
5150
  ]);
5050
5151
  /**
5051
5152
  * Resolve one canonical ESLint rule against generated Oxlint capabilities and
@@ -5686,6 +5787,17 @@ function resolveEditorConfigOptions(cwd) {
5686
5787
  return editorConfigToPrettier(properties);
5687
5788
  }
5688
5789
  /**
5790
+ * Read a numeric `.editorconfig` value. An absent or empty value sets nothing.
5791
+ *
5792
+ * @param value - The raw property value.
5793
+ * @returns The finite number, or `undefined`.
5794
+ */
5795
+ function editorConfigNumber(value) {
5796
+ if (value === void 0 || value === "") return;
5797
+ const parsed = Number(value);
5798
+ return Number.isFinite(parsed) ? parsed : void 0;
5799
+ }
5800
+ /**
5689
5801
  * Map one `.editorconfig` section to oxfmt options, as the rule's config
5690
5802
  * loader does.
5691
5803
  *
@@ -5700,12 +5812,12 @@ function editorConfigToOxfmt(properties) {
5700
5812
  if (indentStyle === "tab" || indentStyle === "space") options["useTabs"] = indentStyle === "tab";
5701
5813
  const quoteType = properties["quote_type"];
5702
5814
  if (quoteType === "single" || quoteType === "double") options["singleQuote"] = quoteType === "single";
5703
- const indentSize = Number(properties["indent_size"]);
5704
- const tabWidth = Number(properties["tab_width"]);
5705
- if (options["useTabs"] === false && properties["indent_size"] && Number.isFinite(indentSize)) options["tabWidth"] = indentSize;
5706
- else if (properties["tab_width"] && Number.isFinite(tabWidth)) options["tabWidth"] = tabWidth;
5707
- const printWidth = Number(properties["max_line_length"]);
5708
- if (properties["max_line_length"] && Number.isFinite(printWidth)) options["printWidth"] = printWidth;
5815
+ const indentSize = editorConfigNumber(properties["indent_size"]);
5816
+ const tabWidth = editorConfigNumber(properties["tab_width"]);
5817
+ if (indentSize !== void 0 && options["useTabs"] === false) options["tabWidth"] = indentSize;
5818
+ else if (tabWidth !== void 0) options["tabWidth"] = tabWidth;
5819
+ const printWidth = editorConfigNumber(properties["max_line_length"]);
5820
+ if (printWidth !== void 0) options["printWidth"] = printWidth;
5709
5821
  const finalNewline = properties["insert_final_newline"];
5710
5822
  if (finalNewline === "true" || finalNewline === "false") options["insertFinalNewline"] = finalNewline === "true";
5711
5823
  return options;
@@ -5862,6 +5974,7 @@ function mergeRestrictedDomImportRule(rule, domPackage) {
5862
5974
  function reactRules({ domPackage, filenameCase = "kebabCase", reactCompiler = true, stylistic = true, testing = false } = {}) {
5863
5975
  const restrictedDomImport = testing ? restrictedDomImportRule(domPackage) : void 0;
5864
5976
  return {
5977
+ "flawless/no-unnecessary-prop-alias": ["error", { reportConflicts: true }],
5865
5978
  "flawless/no-unnecessary-use-callback": "error",
5866
5979
  "flawless/no-unnecessary-use-memo": "error",
5867
5980
  "flawless/purity": "error",
@@ -7382,7 +7495,8 @@ function oxlintEslintPlugin(options = {}) {
7382
7495
  /**
7383
7496
  * Base (non-React) flawless rules shared between the ESLint and oxlint
7384
7497
  * factories. The React flawless rules live in the react rule map; the
7385
- * type-aware rules live in {@link flawlessTypeAwareRules}, plus the type-aware
7498
+ * type-aware rules live in {@link flawlessTypeAwareRules} and
7499
+ * {@link flawlessTypeAwareJsxRules}, plus the type-aware
7386
7500
  * `flawless/naming-convention` in its own config; the test-only rules, and the
7387
7501
  * non-JS `flawless/no-redundant-tsconfig-options`, `flawless/toml-*` and
7388
7502
  * `flawless/yaml-*` rules are configured by their own configs.
@@ -7392,6 +7506,7 @@ function oxlintEslintPlugin(options = {}) {
7392
7506
  */
7393
7507
  function flawlessRules({ antiSlop = false, roblox = true, stylistic = true, ...arrowOptions } = {}) {
7394
7508
  return {
7509
+ "flawless/cognitive-complexity": ["warn", { threshold: 15 }],
7395
7510
  "flawless/no-export-default-arrow": "error",
7396
7511
  "flawless/no-floating-point-equality": "error",
7397
7512
  ...stylistic === false ? {} : {
@@ -7417,10 +7532,14 @@ function flawlessRules({ antiSlop = false, roblox = true, stylistic = true, ...a
7417
7532
  */
7418
7533
  function antiSlopRules({ roblox = true }) {
7419
7534
  return {
7535
+ "flawless/max-comment-length": ["error", { maximumWords: 50 }],
7420
7536
  "flawless/no-conditional-empty-object-spread": "error",
7537
+ "flawless/no-em-dash": "error",
7421
7538
  "flawless/no-known-value-widening": "error",
7422
7539
  "flawless/no-object-parameters": "error",
7423
7540
  "flawless/no-shape-in-symbol-names": "error",
7541
+ "flawless/no-trivial-functions": "error",
7542
+ "flawless/no-unknown-parameters": "error",
7424
7543
  "flawless/no-unsafe-dictionary-type": "error",
7425
7544
  ...roblox ? {} : { "flawless/no-reflect-get": "error" }
7426
7545
  };
@@ -7592,6 +7711,21 @@ function oxlintImports({ excludeFiles, roblox = true, stylistic = true } = {}) {
7592
7711
  }
7593
7712
  //#endregion
7594
7713
  //#region src/rules/javascript.ts
7714
+ /** `id-length` options shared by the ESLint rule and the native oxlint rule. */
7715
+ const ID_LENGTH_OPTIONS = {
7716
+ exceptions: [
7717
+ "_",
7718
+ "x",
7719
+ "y",
7720
+ "z",
7721
+ "a",
7722
+ "b",
7723
+ "e"
7724
+ ],
7725
+ max: 30,
7726
+ min: 2,
7727
+ properties: "never"
7728
+ };
7595
7729
  /**
7596
7730
  * Core JavaScript rules shared between the ESLint and oxlint factories.
7597
7731
  *
@@ -7796,20 +7930,6 @@ function javascriptRules({ isInEditor = false, roblox = true, stylistic = true }
7796
7930
  "valid-typeof": ["error", { requireStringLiterals: true }],
7797
7931
  "vars-on-top": "error",
7798
7932
  ...stylistic !== false ? {
7799
- "id-length": ["error", {
7800
- exceptions: [
7801
- "_",
7802
- "x",
7803
- "y",
7804
- "z",
7805
- "a",
7806
- "b",
7807
- "e"
7808
- ],
7809
- max: 30,
7810
- min: 2,
7811
- properties: "never"
7812
- }],
7813
7933
  "max-lines": ["warn", {
7814
7934
  max: 300,
7815
7935
  skipBlankLines: true,
@@ -7836,7 +7956,15 @@ function javascriptRules({ isInEditor = false, roblox = true, stylistic = true }
7836
7956
  function oxlintJavascript(options = {}) {
7837
7957
  const { excludeFiles, isInEditor = false, overrides = {}, roblox = true, stylistic = true } = options;
7838
7958
  const files = options.files?.flat() ?? ["**/*.{,c,m}[jt]s{,x}"];
7839
- return createOxlintConfigs({
7959
+ return [...stylistic !== false ? [{
7960
+ name: "isentinel/javascript/oxlint",
7961
+ ...excludeFiles ? { excludeFiles } : {},
7962
+ files,
7963
+ rules: { "id-length": ["error", {
7964
+ ...ID_LENGTH_OPTIONS,
7965
+ checkGeneric: false
7966
+ }] }
7967
+ }] : [], ...createOxlintConfigs({
7840
7968
  name: "isentinel/javascript",
7841
7969
  ...excludeFiles ? { excludeFiles } : {},
7842
7970
  files,
@@ -7854,7 +7982,7 @@ function oxlintJavascript(options = {}) {
7854
7982
  roblox,
7855
7983
  stylistic
7856
7984
  })
7857
- });
7985
+ })];
7858
7986
  }
7859
7987
  function toGlobals(source, override) {
7860
7988
  const result = {};
@@ -8754,7 +8882,6 @@ function oxlintSmallRules(options = {}) {
8754
8882
  function sonarjsRules({ isInEditor, roblox = true }) {
8755
8883
  return {
8756
8884
  "sonar/bool-param-default": "error",
8757
- "sonar/cognitive-complexity": "warn",
8758
8885
  "sonar/constructor-for-side-effects": "error",
8759
8886
  "sonar/destructuring-assignment-syntax": "error",
8760
8887
  "sonar/elseif-without-else": "off",
@@ -8770,12 +8897,10 @@ function sonarjsRules({ isInEditor, roblox = true }) {
8770
8897
  "sonar/no-duplicated-branches": "error",
8771
8898
  "sonar/no-element-overwrite": "error",
8772
8899
  "sonar/no-empty-collection": "error",
8773
- "sonar/no-floating-point-equality": "error",
8774
8900
  "sonar/no-gratuitous-expressions": "off",
8775
8901
  "sonar/no-identical-conditions": "error",
8776
8902
  "sonar/no-identical-expressions": "error",
8777
8903
  "sonar/no-identical-functions": "error",
8778
- "sonar/no-ignored-return": "error",
8779
8904
  "sonar/no-inverted-boolean-check": "error",
8780
8905
  "sonar/no-nested-conditional": "error",
8781
8906
  "sonar/no-nested-incdec": "error",
@@ -8821,7 +8946,6 @@ function sonarjsRules({ isInEditor, roblox = true }) {
8821
8946
  */
8822
8947
  function sonarjsTestRules({ jest = false, roblox = true } = {}) {
8823
8948
  return {
8824
- "sonar/no-incompatible-assertion-types": "error",
8825
8949
  ...jest ? {
8826
8950
  "sonar/no-mixed-completion-style": "error",
8827
8951
  "sonar/synchronous-suite-callback": "error"
@@ -8896,13 +9020,12 @@ function oxlintSpelling(options = {}) {
8896
9020
  * @param options - Resolved stylistic options.
8897
9021
  * @returns The rule map.
8898
9022
  */
8899
- function stylisticRules({ jsx = true, quotes = "double" } = {}) {
9023
+ function stylisticRules({ quotes = "double" } = {}) {
8900
9024
  return {
8901
9025
  "antfu/consistent-list-newline": "off",
8902
9026
  "antfu/if-newline": "off",
8903
9027
  "antfu/top-level-function": "error",
8904
9028
  "curly": ["error", "all"],
8905
- ...jsx ? { "style/jsx-curly-brace-presence": ["error", { propElementValues: "always" }] } : {},
8906
9029
  "style/lines-between-class-members": ["error", { enforce: [{
8907
9030
  blankLine: "always",
8908
9031
  next: "method",
@@ -8953,14 +9076,29 @@ function stylisticRules({ jsx = true, quotes = "double" } = {}) {
8953
9076
  ]
8954
9077
  };
8955
9078
  }
9079
+ /**
9080
+ * JSX-specific stylistic rules shared between the ESLint and oxlint factories.
9081
+ * Scoped to JSX/TSX files: a `.ts` or `.js` file cannot contain JSX, so the
9082
+ * rules would only cost a traversal there.
9083
+ *
9084
+ * @param options - Resolved stylistic options.
9085
+ * @returns The rule map.
9086
+ */
9087
+ function stylisticJsxRules({ jsx = true } = {}) {
9088
+ return jsx ? { "style/jsx-curly-brace-presence": ["error", { propElementValues: "always" }] } : {};
9089
+ }
8956
9090
  //#endregion
8957
9091
  //#region src/oxlint/configs/stylistic.ts
8958
9092
  function oxlintStylistic(options = {}) {
8959
- return createOxlintConfigs({
9093
+ return [...createOxlintConfigs({
8960
9094
  name: "isentinel/stylistic",
8961
9095
  files: [GLOB_SRC],
8962
9096
  rules: stylisticRules(options)
8963
- });
9097
+ }), ...createOxlintConfigs({
9098
+ name: "isentinel/stylistic/jsx",
9099
+ files: [GLOB_JSX, GLOB_TSX],
9100
+ rules: stylisticJsxRules(options)
9101
+ })];
8964
9102
  }
8965
9103
  //#endregion
8966
9104
  //#region src/rules/test.ts
@@ -9013,6 +9151,7 @@ function jestExtendedRules() {
9013
9151
  */
9014
9152
  function jestRules({ extended = false, isInEditor = false, roblox: isRoblox = true, stylistic = true } = {}) {
9015
9153
  return {
9154
+ "flawless/no-incompatible-assertion-types": "error",
9016
9155
  "flawless/no-shared-mocks": "error",
9017
9156
  "flawless/prefer-expect-assertions-count": "error",
9018
9157
  "jest/consistent-test-it": "error",
@@ -9092,6 +9231,7 @@ function jestRules({ extended = false, isInEditor = false, roblox: isRoblox = tr
9092
9231
  function vitestRules({ extended = false, isInEditor = false, stylistic = true } = {}) {
9093
9232
  return {
9094
9233
  "flawless/no-conditional-in-test": ["error", { allowOptionalChaining: false }],
9234
+ "flawless/no-incompatible-assertion-types": "error",
9095
9235
  "flawless/no-shared-mocks": "error",
9096
9236
  "flawless/prefer-ending-with-an-expect": ["warn", { assertFunctionNames: [
9097
9237
  "expect",
@@ -9367,6 +9507,7 @@ function typescriptTypeAwareRules({ roblox = true } = {}) {
9367
9507
  ignoreVoid: true
9368
9508
  }],
9369
9509
  "ts/no-for-in-array": "error",
9510
+ "ts/no-generated-empty-object-type": "error",
9370
9511
  "ts/no-implied-eval": "error",
9371
9512
  "ts/no-meaningless-void-operator": "error",
9372
9513
  "ts/no-misused-promises": "error",
@@ -9386,6 +9527,7 @@ function typescriptTypeAwareRules({ roblox = true } = {}) {
9386
9527
  "ts/no-unsafe-argument": "error",
9387
9528
  "ts/no-unsafe-assignment": "error",
9388
9529
  "ts/no-unsafe-call": "error",
9530
+ "ts/no-unsafe-enum-assignment": "error",
9389
9531
  "ts/no-unsafe-enum-comparison": "error",
9390
9532
  "ts/no-unsafe-member-access": "error",
9391
9533
  "ts/no-unsafe-return": "error",