@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.d.mts CHANGED
@@ -386,14 +386,6 @@ interface OxlintMainRuleDefaults {
386
386
  "eslint-js/dot-notation": {
387
387
  "*": "off";
388
388
  };
389
- "eslint-js/id-length": {
390
- "*": ["error", {
391
- "exceptions": ["_", "x", "y", "z", "a", "b", "e"];
392
- "max": 30;
393
- "min": 2;
394
- "properties": "never";
395
- }];
396
- };
397
389
  "eslint-js/no-dupe-args": {
398
390
  "*": "off";
399
391
  };
@@ -417,6 +409,11 @@ interface OxlintMainRuleDefaults {
417
409
  "severityOnly": "error";
418
410
  };
419
411
  };
412
+ "flawless/cognitive-complexity": {
413
+ "*": ["warn", {
414
+ "threshold": 15;
415
+ }];
416
+ };
420
417
  "flawless/max-lines-per-function": {
421
418
  "*": ["warn", {
422
419
  "max": 30;
@@ -444,7 +441,13 @@ interface OxlintMainRuleDefaults {
444
441
  "*": "off";
445
442
  };
446
443
  "id-length": {
447
- "*": "off";
444
+ "*": ["error", {
445
+ "exceptions": ["_", "x", "y", "z", "a", "b", "e"];
446
+ "max": 30;
447
+ "min": 2;
448
+ "properties": "never";
449
+ "checkGeneric": false;
450
+ }];
448
451
  };
449
452
  "import/consistent-type-specifier-style": {
450
453
  "*": "error";
@@ -595,6 +598,16 @@ interface OxlintMainRuleDefaults {
595
598
  "jsdoc/no-defaults": {
596
599
  "*": "warn";
597
600
  };
601
+ "jsdoc/require-param": {
602
+ package_roblox: ["warn", {
603
+ "checkDestructured": false;
604
+ "exemptedBy": ["ignore"];
605
+ }];
606
+ package_std: ["warn", {
607
+ "checkDestructured": false;
608
+ "exemptedBy": ["ignore"];
609
+ }];
610
+ };
598
611
  "jsdoc/require-param-description": {
599
612
  "*": "warn";
600
613
  };
@@ -1388,7 +1401,10 @@ interface OxlintMainRuleDefaults {
1388
1401
  }];
1389
1402
  };
1390
1403
  "prefer-destructuring": {
1391
- "*": "off";
1404
+ "*": ["error", {
1405
+ "array": false;
1406
+ "object": true;
1407
+ }];
1392
1408
  };
1393
1409
  "prefer-exponentiation-operator": {
1394
1410
  "*": "error";
@@ -1589,9 +1605,6 @@ interface OxlintMainRuleDefaults {
1589
1605
  "sonar/bool-param-default": {
1590
1606
  "*": "error";
1591
1607
  };
1592
- "sonar/cognitive-complexity": {
1593
- "*": "warn";
1594
- };
1595
1608
  "sonar/constructor-for-side-effects": {
1596
1609
  "*": "error";
1597
1610
  };
@@ -1628,9 +1641,6 @@ interface OxlintMainRuleDefaults {
1628
1641
  "sonar/no-empty-collection": {
1629
1642
  "*": "error";
1630
1643
  };
1631
- "sonar/no-floating-point-equality": {
1632
- "*": "error";
1633
- };
1634
1644
  "sonar/no-identical-conditions": {
1635
1645
  "*": "error";
1636
1646
  };
@@ -1767,11 +1777,6 @@ interface OxlintMainRuleDefaults {
1767
1777
  "style/jsx-closing-tag-location": {
1768
1778
  "*": "off";
1769
1779
  };
1770
- "style/jsx-curly-brace-presence": {
1771
- "*": ["error", {
1772
- "propElementValues": "always";
1773
- }];
1774
- };
1775
1780
  "style/jsx-curly-newline": {
1776
1781
  "*": "off";
1777
1782
  };
@@ -2117,6 +2122,9 @@ interface OxlintMainRuleDefaults {
2117
2122
  "typescript/no-for-in-array": {
2118
2123
  "*": "error";
2119
2124
  };
2125
+ "typescript/no-generated-empty-object-type": {
2126
+ "*": "error";
2127
+ };
2120
2128
  "typescript/no-implied-eval": {
2121
2129
  "*": "error";
2122
2130
  };
@@ -2209,6 +2217,9 @@ interface OxlintMainRuleDefaults {
2209
2217
  "typescript/no-unsafe-declaration-merging": {
2210
2218
  "*": "error";
2211
2219
  };
2220
+ "typescript/no-unsafe-enum-assignment": {
2221
+ "*": "error";
2222
+ };
2212
2223
  "typescript/no-unsafe-enum-comparison": {
2213
2224
  "*": "error";
2214
2225
  };
@@ -2621,6 +2632,11 @@ interface OxlintMainRuleDefaults {
2621
2632
  "unicorn-js/no-useless-recursion": {
2622
2633
  "*": "error";
2623
2634
  };
2635
+ "unicorn-js/no-useless-undefined": {
2636
+ "*": ["error", {
2637
+ "checkArguments": false;
2638
+ }];
2639
+ };
2624
2640
  "unicorn-js/no-xor-as-exponentiation": {
2625
2641
  game_std: "error";
2626
2642
  package_std: "error";
@@ -2804,9 +2820,7 @@ interface OxlintMainRuleDefaults {
2804
2820
  "*": "off";
2805
2821
  };
2806
2822
  "unicorn/no-useless-undefined": {
2807
- "*": ["error", {
2808
- "checkArguments": false;
2809
- }];
2823
+ "*": "off";
2810
2824
  };
2811
2825
  "unicorn/number-literal-case": {
2812
2826
  "*": "off";
@@ -2893,6 +2907,11 @@ interface OxlintReactRuleDefaults {
2893
2907
  "flawless/max-lines-per-function": {
2894
2908
  "*": "off";
2895
2909
  };
2910
+ "flawless/no-unnecessary-prop-alias": {
2911
+ "*": ["error", {
2912
+ "reportConflicts": true;
2913
+ }];
2914
+ };
2896
2915
  "flawless/no-unnecessary-use-callback": {
2897
2916
  "*": "error";
2898
2917
  };
@@ -3138,9 +3157,18 @@ interface OxlintReactRuleDefaults {
3138
3157
  "react-x/use-state": {
3139
3158
  "*": "error";
3140
3159
  };
3160
+ "react/error-boundaries": {
3161
+ "*": "off";
3162
+ };
3141
3163
  "react/exhaustive-deps": {
3142
3164
  "*": "off";
3143
3165
  };
3166
+ "react/globals": {
3167
+ "*": "off";
3168
+ };
3169
+ "react/immutability": {
3170
+ "*": "off";
3171
+ };
3144
3172
  "react/no-array-index-key": {
3145
3173
  "*": "off";
3146
3174
  };
@@ -3150,9 +3178,24 @@ interface OxlintReactRuleDefaults {
3150
3178
  "react/no-direct-mutation-state": {
3151
3179
  "*": "off";
3152
3180
  };
3181
+ "react/refs": {
3182
+ "*": "off";
3183
+ };
3153
3184
  "react/rules-of-hooks": {
3154
3185
  "*": "off";
3155
3186
  };
3187
+ "react/set-state-in-effect": {
3188
+ "*": "off";
3189
+ };
3190
+ "react/set-state-in-render": {
3191
+ "*": "off";
3192
+ };
3193
+ "react/static-components": {
3194
+ "*": "off";
3195
+ };
3196
+ "react/use-memo": {
3197
+ "*": "off";
3198
+ };
3156
3199
  "small-rules/react-hooks-strict-return": {
3157
3200
  "*": "error";
3158
3201
  };
@@ -4491,184 +4534,224 @@ interface RuleOptions {
4491
4534
  'eslint-plugin/unique-test-case-names'?: Linter.RuleEntry<[]>;
4492
4535
  /**
4493
4536
  * Enforce arrow function return style based on line length
4494
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/arrow-return-style/documentation.md
4537
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/arrow-return-style/documentation.md
4495
4538
  */
4496
4539
  'flawless/arrow-return-style'?: Linter.RuleEntry<FlawlessArrowReturnStyle>;
4540
+ /**
4541
+ * Limit the Cognitive Complexity of each function
4542
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/cognitive-complexity/documentation.md
4543
+ */
4544
+ 'flawless/cognitive-complexity'?: Linter.RuleEntry<FlawlessCognitiveComplexity>;
4497
4545
  /**
4498
4546
  * Disallow shorthand boolean JSX attributes
4499
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/jsx-shorthand-boolean/documentation.md
4547
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/jsx-shorthand-boolean/documentation.md
4500
4548
  */
4501
4549
  'flawless/jsx-shorthand-boolean'?: Linter.RuleEntry<[]>;
4502
4550
  /**
4503
4551
  * Enforce a consistent fragment form: the shorthand `<>...</>` or a named fragment
4504
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/jsx-shorthand-fragment/documentation.md
4552
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/jsx-shorthand-fragment/documentation.md
4505
4553
  */
4506
4554
  'flawless/jsx-shorthand-fragment'?: Linter.RuleEntry<FlawlessJsxShorthandFragment>;
4555
+ /**
4556
+ * Limit comments by word count
4557
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/max-comment-length/documentation.md
4558
+ */
4559
+ 'flawless/max-comment-length'?: Linter.RuleEntry<FlawlessMaxCommentLength>;
4507
4560
  /**
4508
4561
  * Enforce a maximum number of lines of code in a function
4509
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/max-lines-per-function/documentation.md
4562
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/max-lines-per-function/documentation.md
4510
4563
  */
4511
4564
  'flawless/max-lines-per-function'?: Linter.RuleEntry<FlawlessMaxLinesPerFunction>;
4512
4565
  /**
4513
4566
  * Enforce naming conventions for everything across a codebase
4514
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/naming-convention/documentation.md
4567
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/naming-convention/documentation.md
4515
4568
  */
4516
4569
  'flawless/naming-convention'?: Linter.RuleEntry<FlawlessNamingConvention>;
4517
4570
  /**
4518
4571
  * Disallow conditional empty-object spreads
4519
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-conditional-empty-object-spread/documentation.md
4572
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-conditional-empty-object-spread/documentation.md
4520
4573
  */
4521
4574
  'flawless/no-conditional-empty-object-spread'?: Linter.RuleEntry<[]>;
4522
4575
  /**
4523
4576
  * Disallow conditional logic in tests
4524
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-conditional-in-test/documentation.md
4577
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-conditional-in-test/documentation.md
4525
4578
  */
4526
4579
  'flawless/no-conditional-in-test'?: Linter.RuleEntry<FlawlessNoConditionalInTest>;
4580
+ /**
4581
+ * Disallow em dashes in comments, strings, JSX text, and Markdown prose
4582
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-em-dash/documentation.md
4583
+ */
4584
+ 'flawless/no-em-dash'?: Linter.RuleEntry<[]>;
4527
4585
  /**
4528
4586
  * Disallow anonymous arrow functions as export default declarations
4529
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-export-default-arrow/documentation.md
4587
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-export-default-arrow/documentation.md
4530
4588
  */
4531
4589
  'flawless/no-export-default-arrow'?: Linter.RuleEntry<[]>;
4532
4590
  /**
4533
4591
  * Disallow exact equality checks involving floating-point-sensitive values
4534
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-floating-point-equality/documentation.md
4592
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-floating-point-equality/documentation.md
4535
4593
  */
4536
4594
  'flawless/no-floating-point-equality'?: Linter.RuleEntry<[]>;
4595
+ /**
4596
+ * Disallow ignoring the result of a built-in method that has no side effects
4597
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-ignored-return/documentation.md
4598
+ */
4599
+ 'flawless/no-ignored-return'?: Linter.RuleEntry<FlawlessNoIgnoredReturn>;
4600
+ /**
4601
+ * Disallow equality assertions whose operands have types that can never be equal
4602
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-incompatible-assertion-types/documentation.md
4603
+ */
4604
+ 'flawless/no-incompatible-assertion-types'?: Linter.RuleEntry<[]>;
4537
4605
  /**
4538
4606
  * Disallow syntactically established values from flowing into explicitly broad or anonymous target types that discard useful evidence
4539
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-known-value-widening/documentation.md
4607
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-known-value-widening/documentation.md
4540
4608
  */
4541
4609
  'flawless/no-known-value-widening'?: Linter.RuleEntry<[]>;
4542
4610
  /**
4543
4611
  * Disallow copying an iterable into an array only to `filter` or `map` it
4544
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-materialized-filter-map/documentation.md
4612
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-materialized-filter-map/documentation.md
4545
4613
  */
4546
4614
  'flawless/no-materialized-filter-map'?: Linter.RuleEntry<FlawlessNoMaterializedFilterMap>;
4547
4615
  /**
4548
4616
  * Disallow function parameters that accept any object shape
4549
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-object-parameters/documentation.md
4617
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-object-parameters/documentation.md
4550
4618
  */
4551
4619
  'flawless/no-object-parameters'?: Linter.RuleEntry<[]>;
4552
4620
  /**
4553
4621
  * Disallow tsconfig options that redundantly re-set a value already provided by an extended config
4554
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-redundant-tsconfig-options/documentation.md
4622
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-redundant-tsconfig-options/documentation.md
4555
4623
  */
4556
4624
  'flawless/no-redundant-tsconfig-options'?: Linter.RuleEntry<[]>;
4557
4625
  /**
4558
4626
  * Disallow type annotations that restate the initializer's own type
4559
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-redundant-type-annotation/documentation.md
4627
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-redundant-type-annotation/documentation.md
4560
4628
  */
4561
- 'flawless/no-redundant-type-annotation'?: Linter.RuleEntry<[]>;
4629
+ 'flawless/no-redundant-type-annotation'?: Linter.RuleEntry<FlawlessNoRedundantTypeAnnotation>;
4562
4630
  /**
4563
4631
  * Disallow the two-argument `Reflect.get` in favour of typed property access
4564
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-reflect-get/documentation.md
4632
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-reflect-get/documentation.md
4565
4633
  */
4566
4634
  'flawless/no-reflect-get'?: Linter.RuleEntry<[]>;
4567
4635
  /**
4568
4636
  * Disallow `Reflect.set` with a compile-time-fixed key in favour of a plain assignment
4569
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-reflect-set/documentation.md
4637
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-reflect-set/documentation.md
4570
4638
  */
4571
4639
  'flawless/no-reflect-set'?: Linter.RuleEntry<[]>;
4572
4640
  /**
4573
4641
  * Disallow the term 'shape' in declared symbol names
4574
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-shape-in-symbol-names/documentation.md
4642
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-shape-in-symbol-names/documentation.md
4575
4643
  */
4576
4644
  'flawless/no-shape-in-symbol-names'?: Linter.RuleEntry<[]>;
4577
4645
  /**
4578
4646
  * Disallow mocks created once and shared between tests
4579
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-shared-mocks/documentation.md
4647
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-shared-mocks/documentation.md
4580
4648
  */
4581
4649
  'flawless/no-shared-mocks'?: Linter.RuleEntry<[]>;
4582
4650
  /**
4583
4651
  * Disallow state declared outside tests and written inside them
4584
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-shared-test-state/documentation.md
4652
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-shared-test-state/documentation.md
4585
4653
  */
4586
4654
  'flawless/no-shared-test-state'?: Linter.RuleEntry<FlawlessNoSharedTestState>;
4655
+ /**
4656
+ * Disallow rarely used top-level functions that only forward their parameters or read a parameter's property
4657
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-trivial-functions/documentation.md
4658
+ */
4659
+ 'flawless/no-trivial-functions'?: Linter.RuleEntry<FlawlessNoTrivialFunctions>;
4587
4660
  /**
4588
4661
  * Disallow `unknown` function parameters outside type-predicate subjects and recorded error causes
4589
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-unknown-parameters/documentation.md
4662
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unknown-parameters/documentation.md
4590
4663
  */
4591
4664
  'flawless/no-unknown-parameters'?: Linter.RuleEntry<[]>;
4592
4665
  /**
4593
4666
  * Disallow explicit return type annotations that resolve to `unknown`
4594
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-unknown-returns/documentation.md
4667
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unknown-returns/documentation.md
4595
4668
  */
4596
4669
  'flawless/no-unknown-returns'?: Linter.RuleEntry<[]>;
4670
+ /**
4671
+ * Disallow unnecessary aliases when destructuring component props
4672
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unnecessary-prop-alias/documentation.md
4673
+ */
4674
+ 'flawless/no-unnecessary-prop-alias'?: Linter.RuleEntry<FlawlessNoUnnecessaryPropAlias>;
4597
4675
  /**
4598
4676
  * Disallow unnecessary usage of 'useCallback'
4599
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-unnecessary-use-callback/documentation.md
4677
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unnecessary-use-callback/documentation.md
4600
4678
  */
4601
4679
  'flawless/no-unnecessary-use-callback'?: Linter.RuleEntry<[]>;
4602
4680
  /**
4603
4681
  * Disallow unnecessary usage of 'useMemo'
4604
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-unnecessary-use-memo/documentation.md
4682
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unnecessary-use-memo/documentation.md
4605
4683
  */
4606
4684
  'flawless/no-unnecessary-use-memo'?: Linter.RuleEntry<[]>;
4607
4685
  /**
4608
4686
  * Disallow unsafe object dictionary value types
4609
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-unsafe-dictionary-type/documentation.md
4687
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unsafe-dictionary-type/documentation.md
4610
4688
  */
4611
4689
  'flawless/no-unsafe-dictionary-type'?: Linter.RuleEntry<[]>;
4612
4690
  /**
4613
4691
  * Enforce a blank line after `expect.assertions` and `expect.hasAssertions`
4614
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/padding-after-expect-assertions/documentation.md
4692
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/padding-after-expect-assertions/documentation.md
4615
4693
  */
4616
4694
  'flawless/padding-after-expect-assertions'?: Linter.RuleEntry<[]>;
4617
4695
  /**
4618
4696
  * Enforce destructuring assignment for component props
4619
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-destructuring-assignment/documentation.md
4697
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-destructuring-assignment/documentation.md
4620
4698
  */
4621
4699
  'flawless/prefer-destructuring-assignment'?: Linter.RuleEntry<[]>;
4622
4700
  /**
4623
4701
  * Prefer having the last statement in a test be an assertion
4624
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-ending-with-an-expect/documentation.md
4702
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-ending-with-an-expect/documentation.md
4625
4703
  */
4626
4704
  'flawless/prefer-ending-with-an-expect'?: Linter.RuleEntry<FlawlessPreferEndingWithAnExpect>;
4627
4705
  /**
4628
4706
  * Prefer `expect.assertions(<count>)` over `expect.hasAssertions()`
4629
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-expect-assertions-count/documentation.md
4707
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-expect-assertions-count/documentation.md
4630
4708
  */
4631
4709
  'flawless/prefer-expect-assertions-count'?: Linter.RuleEntry<[]>;
4632
4710
  /**
4633
4711
  * Prefer `mockThrow` / `mockThrowOnce` over a mock implementation that only throws
4634
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-mock-throw/documentation.md
4712
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-mock-throw/documentation.md
4635
4713
  */
4636
4714
  'flawless/prefer-mock-throw'?: Linter.RuleEntry<[]>;
4637
4715
  /**
4638
4716
  * Enforce destructuring parameters in the function signature
4639
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-parameter-destructuring/documentation.md
4717
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-parameter-destructuring/documentation.md
4640
4718
  */
4641
4719
  'flawless/prefer-parameter-destructuring'?: Linter.RuleEntry<FlawlessPreferParameterDestructuring>;
4642
4720
  /**
4643
4721
  * Enforce that function component props are read-only
4644
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-read-only-props/documentation.md
4722
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-read-only-props/documentation.md
4645
4723
  */
4646
4724
  'flawless/prefer-read-only-props'?: Linter.RuleEntry<FlawlessPreferReadOnlyProps>;
4647
4725
  /**
4648
4726
  * Prefer test-bound Vitest APIs from the local test context
4649
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-vitest-local-context/documentation.md
4727
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-vitest-local-context/documentation.md
4650
4728
  */
4651
4729
  'flawless/prefer-vitest-local-context'?: Linter.RuleEntry<FlawlessPreferVitestLocalContext>;
4652
4730
  /**
4653
4731
  * Disallow impure calls such as `math.random` or `os.clock` during render
4654
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/purity/documentation.md
4732
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/purity/documentation.md
4655
4733
  */
4656
4734
  'flawless/purity'?: Linter.RuleEntry<FlawlessPurity>;
4657
4735
  /**
4658
4736
  * Prefer named imports for React runtime values and the React namespace for React types
4659
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/react-namespace/documentation.md
4737
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/react-namespace/documentation.md
4660
4738
  */
4661
- 'flawless/react-namespace'?: Linter.RuleEntry<[]>;
4739
+ 'flawless/react-namespace'?: Linter.RuleEntry<FlawlessReactNamespace>;
4662
4740
  /**
4663
4741
  * Enforce a configured sort order for TOML keys and tables
4664
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/toml-sort-keys/documentation.md
4742
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/toml-sort-keys/documentation.md
4665
4743
  */
4666
4744
  'flawless/toml-sort-keys'?: Linter.RuleEntry<FlawlessTomlSortKeys>;
4667
4745
  /**
4668
4746
  * Enforce blank lines around top-level YAML block collection keys
4669
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/yaml-block-key-blank-lines/documentation.md
4747
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/yaml-block-key-blank-lines/documentation.md
4670
4748
  */
4671
4749
  'flawless/yaml-block-key-blank-lines'?: Linter.RuleEntry<[]>;
4750
+ /**
4751
+ * Enforce sorted YAML sequences of mappings by a key
4752
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/yaml-sort-sequence-by-key/documentation.md
4753
+ */
4754
+ 'flawless/yaml-sort-sequence-by-key'?: Linter.RuleEntry<FlawlessYamlSortSequenceByKey>;
4672
4755
  /**
4673
4756
  * Enforce `for` loop update clause moving the counter in the right direction
4674
4757
  * @see https://eslint.org/docs/latest/rules/for-direction
@@ -5252,7 +5335,7 @@ interface RuleOptions {
5252
5335
  * Reports against syntax not valid for the mode (e.g., Google Closure Compiler in non-Closure mode).
5253
5336
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-syntax.md#repos-sticky-header
5254
5337
  */
5255
- 'jsdoc/check-syntax'?: Linter.RuleEntry<[]>;
5338
+ 'jsdoc/check-syntax'?: Linter.RuleEntry<JsdocCheckSyntax>;
5256
5339
  /**
5257
5340
  * Reports invalid block tag names.
5258
5341
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-tag-names.md#repos-sticky-header
@@ -5368,6 +5451,10 @@ interface RuleOptions {
5368
5451
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header
5369
5452
  */
5370
5453
  'jsdoc/no-undefined-types'?: Linter.RuleEntry<JsdocNoUndefinedTypes>;
5454
+ /**
5455
+ * Reports redundant @type tags that match or broaden the naturally inferred TypeScript type.
5456
+ */
5457
+ 'jsdoc/no-unnecessary-type-assertion'?: Linter.RuleEntry<JsdocNoUnnecessaryTypeAssertion>;
5371
5458
  /**
5372
5459
  * Normalizes labeled links in `@see` tags to a canonical `{@link}` form.
5373
5460
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/normalize-see-links.md#repos-sticky-header
@@ -5563,6 +5650,11 @@ interface RuleOptions {
5563
5650
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/text-escaping.md#repos-sticky-header
5564
5651
  */
5565
5652
  'jsdoc/text-escaping'?: Linter.RuleEntry<JsdocTextEscaping>;
5653
+ /**
5654
+ * Disallows (or requires descriptions for) `@ts-<directive>` comments, mirroring `@typescript-eslint/ban-ts-comment`.
5655
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-ban-ts-comment.md#repos-sticky-header
5656
+ */
5657
+ 'jsdoc/ts-ban-ts-comment'?: Linter.RuleEntry<JsdocTsBanTsComment>;
5566
5658
  /**
5567
5659
  * Prefers either function properties or method signatures
5568
5660
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-method-signature-style.md#repos-sticky-header
@@ -7645,6 +7737,11 @@ interface RuleOptions {
7645
7737
  * @see https://perfectionist.dev/rules/sort-classes
7646
7738
  */
7647
7739
  'perfectionist/sort-classes'?: Linter.RuleEntry<PerfectionistSortClasses>;
7740
+ /**
7741
+ * Enforce sorted constructor parameters.
7742
+ * @see https://perfectionist.dev/rules/sort-constructor-parameters
7743
+ */
7744
+ 'perfectionist/sort-constructor-parameters'?: Linter.RuleEntry<PerfectionistSortConstructorParameters>;
7648
7745
  /**
7649
7746
  * Enforce sorted decorators.
7650
7747
  * @see https://perfectionist.dev/rules/sort-decorators
@@ -8494,9 +8591,14 @@ interface RuleOptions {
8494
8591
  'small-rules/ban-types'?: Linter.RuleEntry<SmallRulesBanTypes>;
8495
8592
  /**
8496
8593
  * Enforce consistent spelling of compound words in identifiers.
8497
- * @see https://docs.howmanysmall.com/small-rules/rules/naming/consistent-compound-words/
8594
+ * @see https://docs.howmanysmall.com/small-rules/rules/english/consistent-compound-words/
8498
8595
  */
8499
8596
  'small-rules/consistent-compound-words'?: Linter.RuleEntry<SmallRulesConsistentCompoundWords>;
8597
+ /**
8598
+ * Require one brace style for each `if`, `else`, and loop body: one line for a lone `if` with a short body that fits, braces for every other body.
8599
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/curly/
8600
+ */
8601
+ 'small-rules/curly'?: Linter.RuleEntry<SmallRulesCurly>;
8500
8602
  /**
8501
8603
  * Require a matching enable comment for every `oxlint-disable` or `eslint-disable` block directive.
8502
8604
  * @see https://docs.howmanysmall.com/small-rules/rules/general/directive-disable-enable-pair/
@@ -8552,6 +8654,11 @@ interface RuleOptions {
8552
8654
  * @see https://docs.howmanysmall.com/small-rules/rules/react/memoized-effect-dependencies/
8553
8655
  */
8554
8656
  'small-rules/memoized-effect-dependencies'?: Linter.RuleEntry<SmallRulesMemoizedEffectDependencies>;
8657
+ /**
8658
+ * Disallow adjusting state in an effect when a prop changes.
8659
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-adjust-state-on-prop-change/
8660
+ */
8661
+ 'small-rules/no-adjust-state-on-prop-change'?: Linter.RuleEntry<SmallRulesNoAdjustStateOnPropChange>;
8555
8662
  /**
8556
8663
  * Disallow array constructor element forms and enforce roblox-ts-aware constructor patterns.
8557
8664
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-array-constructor-elements/
@@ -8582,6 +8689,21 @@ interface RuleOptions {
8582
8689
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-cascading-set-state/
8583
8690
  */
8584
8691
  'small-rules/no-cascading-set-state'?: Linter.RuleEntry<[]>;
8692
+ /**
8693
+ * Disallow chaining state changes in an effect.
8694
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-chain-state-updates/
8695
+ */
8696
+ 'small-rules/no-chain-state-updates'?: Linter.RuleEntry<SmallRulesNoChainStateUpdates>;
8697
+ /**
8698
+ * Disallow chained TypeScript as and angle-bracket assertions, including parenthesized chains.
8699
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-chained-type-assertions/
8700
+ */
8701
+ 'small-rules/no-chained-type-assertions'?: Linter.RuleEntry<SmallRulesNoChainedTypeAssertions>;
8702
+ /**
8703
+ * Disallow Cliffy `.action` handlers that only forward their arguments to another function.
8704
+ * @see https://docs.howmanysmall.com/small-rules/rules/cliffy/no-cliffy-action-wrapper/
8705
+ */
8706
+ 'small-rules/no-cliffy-action-wrapper'?: Linter.RuleEntry<SmallRulesNoCliffyActionWrapper>;
8585
8707
  /**
8586
8708
  * Ban new Color3(...) except new Color3() or new Color3(0, 0, 0). Use Color3.fromRGB() instead.
8587
8709
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-color3-constructor/
@@ -8592,6 +8714,11 @@ interface RuleOptions {
8592
8714
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-commented-code/
8593
8715
  */
8594
8716
  'small-rules/no-commented-code'?: Linter.RuleEntry<SmallRulesNoCommentedCode>;
8717
+ /**
8718
+ * Disallow object spreads that conditionally spread an empty object to omit fields.
8719
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-conditional-empty-object-spread/
8720
+ */
8721
+ 'small-rules/no-conditional-empty-object-spread'?: Linter.RuleEntry<[]>;
8595
8722
  /**
8596
8723
  * Disallow constant conditions, but allow constant loops that include loop exits such as break, return, or configured calls.
8597
8724
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-constant-condition-with-break/
@@ -8602,18 +8729,38 @@ interface RuleOptions {
8602
8729
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-dead-store/
8603
8730
  */
8604
8731
  'small-rules/no-dead-store'?: Linter.RuleEntry<[]>;
8732
+ /**
8733
+ * Disallow storing derived state in an effect.
8734
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-derived-state/
8735
+ */
8736
+ 'small-rules/no-derived-state'?: Linter.RuleEntry<SmallRulesNoDerivedState>;
8737
+ /**
8738
+ * Warn when a Promise rejection handler explicitly discards the failure and resolves to undefined.
8739
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-discarded-rejection/
8740
+ */
8741
+ 'small-rules/no-discarded-rejection'?: Linter.RuleEntry<[]>;
8605
8742
  /**
8606
8743
  * Use throw instead of error().
8607
8744
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-error/
8608
8745
  */
8609
8746
  'small-rules/no-error'?: Linter.RuleEntry<[]>;
8747
+ /**
8748
+ * Disallow using state and an effect as an event handler.
8749
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-event-handler/
8750
+ */
8751
+ 'small-rules/no-event-handler'?: Linter.RuleEntry<SmallRulesNoEventHandler>;
8610
8752
  /**
8611
8753
  * Disallow sending Events back to the same player inside an Events.connect callback; use Functions for request/response.
8612
8754
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-events-in-events-callback/
8613
8755
  */
8614
8756
  'small-rules/no-events-in-events-callback'?: Linter.RuleEntry<SmallRulesNoEventsInEventsCallback>;
8615
8757
  /**
8616
- * Disallow map(...) directly after filter(...).
8758
+ * Disallow subscribing to an external store in an effect.
8759
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-external-store-subscription/
8760
+ */
8761
+ 'small-rules/no-external-store-subscription'?: Linter.RuleEntry<SmallRulesNoExternalStoreSubscription>;
8762
+ /**
8763
+ * Disallow `Array.prototype.map(...)` directly after `Array.prototype.filter(...)`.
8617
8764
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-filter-map-chain/
8618
8765
  */
8619
8766
  'small-rules/no-filter-map-chain'?: Linter.RuleEntry<[]>;
@@ -8632,6 +8779,11 @@ interface RuleOptions {
8632
8779
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-god-components/
8633
8780
  */
8634
8781
  'small-rules/no-god-components'?: Linter.RuleEntry<SmallRulesNoGodComponents>;
8782
+ /**
8783
+ * Disallow redundant Jecs World.has guards around World.remove calls.
8784
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/jecs/no-has-before-remove-in-jecs/
8785
+ */
8786
+ 'small-rules/no-has-before-remove-in-jecs'?: Linter.RuleEntry<[]>;
8635
8787
  /**
8636
8788
  * Disallow Ianitor validator creation inside function bodies. Hoist to module scope to avoid recreating validators on every call.
8637
8789
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-ianitor-in-function-body/
@@ -8643,7 +8795,7 @@ interface RuleOptions {
8643
8795
  */
8644
8796
  'small-rules/no-ianitor-success-access'?: Linter.RuleEntry<[]>;
8645
8797
  /**
8646
- * Disallow pointless identity `.map()` calls that return the parameter unchanged
8798
+ * Disallow pointless identity `Array.prototype.map()` calls that return the parameter unchanged
8647
8799
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-identity-map/
8648
8800
  */
8649
8801
  'small-rules/no-identity-map'?: Linter.RuleEntry<SmallRulesNoIdentityMap>;
@@ -8652,56 +8804,146 @@ interface RuleOptions {
8652
8804
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-increment-decrement/
8653
8805
  */
8654
8806
  'small-rules/no-increment-decrement'?: Linter.RuleEntry<SmallRulesNoIncrementDecrement>;
8807
+ /**
8808
+ * Disallow initializing state in an effect.
8809
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-initialize-state/
8810
+ */
8811
+ 'small-rules/no-initialize-state'?: Linter.RuleEntry<SmallRulesNoInitializeState>;
8655
8812
  /**
8656
8813
  * Prevent inline properties from being passed to memoized components.
8657
8814
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-inline-property-on-memo-component/
8658
8815
  */
8659
8816
  'small-rules/no-inline-property-on-memo-component'?: Linter.RuleEntry<[]>;
8817
+ /**
8818
+ * Disallow inline object types in parameter and return type annotations; declare a named interface instead.
8819
+ * @see https://docs.howmanysmall.com/small-rules/rules/naming/no-inline-signature-types/
8820
+ */
8821
+ 'small-rules/no-inline-signature-types'?: Linter.RuleEntry<SmallRulesNoInlineSignatureTypes>;
8660
8822
  /**
8661
8823
  * Detect instance methods that do not use 'this' and suggest converting them to standalone functions for better performance in roblox-ts.
8662
8824
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-instance-methods-without-this/
8663
8825
  */
8664
8826
  'small-rules/no-instance-methods-without-this'?: Linter.RuleEntry<SmallRulesNoInstanceMethodsWithoutThis>;
8827
+ /**
8828
+ * Disallow a spread in JSX child position.
8829
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-jsx-spread-child/
8830
+ */
8831
+ 'small-rules/no-jsx-spread-child'?: Linter.RuleEntry<[]>;
8832
+ /**
8833
+ * Disallow syntactically established values from flowing into explicitly broad or anonymous target types that discard useful evidence.
8834
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-known-value-widening/
8835
+ */
8836
+ 'small-rules/no-known-value-widening'?: Linter.RuleEntry<[]>;
8665
8837
  /**
8666
8838
  * Disallow mutating a loop iterable during iteration.
8667
8839
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-loop-iterable-mutation/
8668
8840
  */
8669
8841
  'small-rules/no-loop-iterable-mutation'?: Linter.RuleEntry<[]>;
8842
+ /**
8843
+ * Disallow Vitest and Jest module mocking; tests must replace dependencies through real interfaces.
8844
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-module-mocking/
8845
+ */
8846
+ 'small-rules/no-module-mocking'?: Linter.RuleEntry<[]>;
8847
+ /**
8848
+ * Disallow defining more than one Cliffy command in a file.
8849
+ * @see https://docs.howmanysmall.com/small-rules/rules/cliffy/no-multiple-cliffy-commands/
8850
+ */
8851
+ 'small-rules/no-multiple-cliffy-commands'?: Linter.RuleEntry<SmallRulesNoMultipleCliffyCommands>;
8670
8852
  /**
8671
8853
  * Disallow spreading static property bags into nativeProperties/*NativeProperties props and onto JSX elements via intermediate objects, because the spread creates a new copied table every render.
8672
8854
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-native-properties-spread/
8673
8855
  */
8674
8856
  'small-rules/no-native-properties-spread'?: Linter.RuleEntry<[]>;
8857
+ /**
8858
+ * Disallow nesting a hook call inside another hook call.
8859
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-nested-hook-calls/
8860
+ */
8861
+ 'small-rules/no-nested-hook-calls'?: Linter.RuleEntry<[]>;
8675
8862
  /**
8676
8863
  * Disallow configured constructor calls (default: new Instance) inside React useMemo callbacks.
8677
8864
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-new-instance-in-use-memo/
8678
8865
  */
8679
8866
  'small-rules/no-new-instance-in-use-memo'?: Linter.RuleEntry<SmallRulesNoNewInstanceInUseMemo>;
8867
+ /**
8868
+ * Disallow object function parameters; inputs must use an owner-provided type and be parsed at their boundary.
8869
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-object-parameters/
8870
+ */
8871
+ 'small-rules/no-object-parameters'?: Linter.RuleEntry<[]>;
8872
+ /**
8873
+ * Disallow passing data to parents in an effect.
8874
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-pass-data-to-parent/
8875
+ */
8876
+ 'small-rules/no-pass-data-to-parent'?: Linter.RuleEntry<SmallRulesNoPassDataToParent>;
8877
+ /**
8878
+ * Disallow passing live state to parents in an effect.
8879
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-pass-live-state-to-parent/
8880
+ */
8881
+ 'small-rules/no-pass-live-state-to-parent'?: Linter.RuleEntry<SmallRulesNoPassLiveStateToParent>;
8680
8882
  /**
8681
8883
  * Use Log instead of print().
8682
8884
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-print/
8683
8885
  */
8684
8886
  'small-rules/no-print'?: Linter.RuleEntry<[]>;
8887
+ /**
8888
+ * Disallow real temp directories (`os.tmpdir`, `fs.mkdtemp`) in unit tests.
8889
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-real-temporary-directory/
8890
+ */
8891
+ 'small-rules/no-real-temporary-directory'?: Linter.RuleEntry<SmallRulesNoRealTemporaryDirectory>;
8685
8892
  /**
8686
8893
  * Disallow recursive function calls to prevent stack overflow.
8687
8894
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-recursive/
8688
8895
  */
8689
8896
  'small-rules/no-recursive'?: Linter.RuleEntry<SmallRulesNoRecursive>;
8897
+ /**
8898
+ * Disallow copying growing reducer accumulators with Object.assign, Array.from, or array copy methods.
8899
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-reduce-accumulator-copy/
8900
+ */
8901
+ 'small-rules/no-reduce-accumulator-copy'?: Linter.RuleEntry<[]>;
8690
8902
  /**
8691
8903
  * Disallow redundant uiaspectratioconstraint children inside components that already manage their own aspect ratio internally.
8692
8904
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-redundant-aspect-ratio-constraint/
8693
8905
  */
8694
8906
  'small-rules/no-redundant-aspect-ratio-constraint'?: Linter.RuleEntry<[]>;
8907
+ /**
8908
+ * Disallow Reflect.apply; call typed functions directly or model dynamic dispatch behind an interface.
8909
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-reflect-apply/
8910
+ */
8911
+ 'small-rules/no-reflect-apply'?: Linter.RuleEntry<[]>;
8912
+ /**
8913
+ * Disallow Reflect.get; use typed property access or parse dynamic input into a domain type.
8914
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-reflect-get/
8915
+ */
8916
+ 'small-rules/no-reflect-get'?: Linter.RuleEntry<[]>;
8695
8917
  /**
8696
8918
  * Disallow non-component functions that return JSX or React elements.
8697
8919
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-render-helper-functions/
8698
8920
  */
8699
8921
  'small-rules/no-render-helper-functions'?: Linter.RuleEntry<[]>;
8922
+ /**
8923
+ * Disallow resetting all state in an effect when a prop changes.
8924
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-reset-all-state-on-property-change/
8925
+ */
8926
+ 'small-rules/no-reset-all-state-on-prop-change'?: Linter.RuleEntry<SmallRulesNoResetAllStateOnPropChange>;
8700
8927
  /**
8701
8928
  * Disallow assignment to restricted object properties.
8702
8929
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-restricted-property-assignment/
8703
8930
  */
8704
8931
  'small-rules/no-restricted-property-assignment'?: Linter.RuleEntry<SmallRulesNoRestrictedPropertyAssignment>;
8932
+ /**
8933
+ * Disallow runtime code in files that hold only types.
8934
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-runtime-in-type-files/
8935
+ */
8936
+ 'small-rules/no-runtime-in-type-files'?: Linter.RuleEntry<SmallRulesNoRuntimeInTypeFiles>;
8937
+ /**
8938
+ * Disallow runtime typeof checks; external values must be decoded into meaningful types at their I/O boundary.
8939
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-runtime-typeof/
8940
+ */
8941
+ 'small-rules/no-runtime-typeof'?: Linter.RuleEntry<SmallRulesNoRuntimeTypeof>;
8942
+ /**
8943
+ * Disallow the case-insensitive substring "shape" in JavaScript, TypeScript, private, and JSX symbol names.
8944
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-shape-in-symbol-names/
8945
+ */
8946
+ 'small-rules/no-shape-in-symbol-names'?: Linter.RuleEntry<[]>;
8705
8947
  /**
8706
8948
  * Disallow the .spec.{ts,tsx} file extension for test files. Use .test.{ts,tsx} instead.
8707
8949
  * @see https://docs.howmanysmall.com/small-rules/rules/naming/no-spec-file-extension/
@@ -8722,6 +8964,11 @@ interface RuleOptions {
8722
8964
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-task-wait/
8723
8965
  */
8724
8966
  'small-rules/no-task-wait'?: Linter.RuleEntry<[]>;
8967
+ /**
8968
+ * Disallow per-test timeouts in unit tests.
8969
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-test-timeout/
8970
+ */
8971
+ 'small-rules/no-test-timeout'?: Linter.RuleEntry<SmallRulesNoTestTimeout>;
8725
8972
  /**
8726
8973
  * Disallow assertions that always succeed or compare against freshly created values.
8727
8974
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-trivial-assertions/
@@ -8732,6 +8979,31 @@ interface RuleOptions {
8732
8979
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-underscore-react-props/
8733
8980
  */
8734
8981
  'small-rules/no-underscore-react-props'?: Linter.RuleEntry<[]>;
8982
+ /**
8983
+ * Disallow explicitly unknown function parameters except `cause` and the parameter named by a type predicate; decode unknown input at its I/O boundary instead.
8984
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-unknown-parameters/
8985
+ */
8986
+ 'small-rules/no-unknown-parameters'?: Linter.RuleEntry<[]>;
8987
+ /**
8988
+ * Disallow functions whose explicit return contract is unknown or Promise<unknown>.
8989
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-unknown-returns/
8990
+ */
8991
+ 'small-rules/no-unknown-returns'?: Linter.RuleEntry<[]>;
8992
+ /**
8993
+ * Disallow type aliases whose resolved type is unknown; unknown must remain visible at an allowed boundary.
8994
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-unknown-type-aliases/
8995
+ */
8996
+ 'small-rules/no-unknown-type-aliases'?: Linter.RuleEntry<[]>;
8997
+ /**
8998
+ * Disallow object-dictionary contracts whose direct value type is unknown, any, object, {}, or a union/alias containing one of those escape hatches.
8999
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-unsafe-dictionary-type/
9000
+ */
9001
+ 'small-rules/no-unsafe-dictionary-type'?: Linter.RuleEntry<[]>;
9002
+ /**
9003
+ * Disallow syntax that roblox-ts cannot compile to Luau.
9004
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-unsupported-syntax/
9005
+ */
9006
+ 'small-rules/no-unsupported-syntax'?: Linter.RuleEntry<SmallRulesNoUnsupportedSyntax>;
8735
9007
  /**
8736
9008
  * Disallow unused imports
8737
9009
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-unused-imports/
@@ -8762,6 +9034,11 @@ interface RuleOptions {
8762
9034
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-useless-default/
8763
9035
  */
8764
9036
  'small-rules/no-useless-default'?: Linter.RuleEntry<[]>;
9037
+ /**
9038
+ * Disallow equality comparisons against an empty-string literal.
9039
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-useless-empty-string-comparison/
9040
+ */
9041
+ 'small-rules/no-useless-empty-string-comparison'?: Linter.RuleEntry<SmallRulesNoUselessEmptyStringComparison>;
8765
9042
  /**
8766
9043
  * Disallow empty effects, duplicate dependencies, effect chains, log-only effects, derived state, external-store state sync, state initialization, reset effects, parent notifications, parent ref callbacks, and event side effects routed through state.
8767
9044
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-useless-use-effect/
@@ -8787,6 +9064,11 @@ interface RuleOptions {
8787
9064
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-warn/
8788
9065
  */
8789
9066
  'small-rules/no-warn'?: Linter.RuleEntry<[]>;
9067
+ /**
9068
+ * Disallow local const flows that explicitly widen a known value before asserting the widened binding to a narrower type.
9069
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-widen-then-assert/
9070
+ */
9071
+ 'small-rules/no-widen-then-assert'?: Linter.RuleEntry<[]>;
8790
9072
  /**
8791
9073
  * Require all imports to be type-only imports. Benchmarks cannot import non-types because the benchmarker plugin will throw an error.
8792
9074
  * @see https://docs.howmanysmall.com/small-rules/rules/general/only-type-imports/
@@ -8847,6 +9129,11 @@ interface RuleOptions {
8847
9129
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/prefer-math-min-max/
8848
9130
  */
8849
9131
  'small-rules/prefer-math-min-max'?: Linter.RuleEntry<[]>;
9132
+ /**
9133
+ * Move discarded Jecs query component values into a membership-only with filter.
9134
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/jecs/prefer-membership-filter-in-jecs/
9135
+ */
9136
+ 'small-rules/prefer-membership-filter-in-jecs'?: Linter.RuleEntry<[]>;
8850
9137
  /**
8851
9138
  * Prefer Modding.inspect over manually enumerating every enum member in a Record<Enum, true>.
8852
9139
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/prefer-modding-inspect/
@@ -8857,6 +9144,16 @@ interface RuleOptions {
8857
9144
  * @see https://docs.howmanysmall.com/small-rules/rules/general/prefer-module-scope-constants/
8858
9145
  */
8859
9146
  'small-rules/prefer-module-scope-constants'?: Linter.RuleEntry<[]>;
9147
+ /**
9148
+ * Prefer table.clone over a manual shallow Map or Set copy loop.
9149
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/prefer-native-collection-copy/
9150
+ */
9151
+ 'small-rules/prefer-native-collection-copy'?: Linter.RuleEntry<[]>;
9152
+ /**
9153
+ * Disallow `undefined` in a function parameter's type union; declare the parameter optional with `?` instead.
9154
+ * @see https://docs.howmanysmall.com/small-rules/rules/naming/prefer-optional-parameter/
9155
+ */
9156
+ 'small-rules/prefer-optional-parameter'?: Linter.RuleEntry<[]>;
8860
9157
  /**
8861
9158
  * Prefer local EqualPadding and DirectionalPadding components over matching <uipadding /> declarations.
8862
9159
  * @see https://docs.howmanysmall.com/small-rules/rules/react/prefer-padding-components/
@@ -8874,12 +9171,12 @@ interface RuleOptions {
8874
9171
  'small-rules/prefer-sequence-overloads'?: Linter.RuleEntry<[]>;
8875
9172
  /**
8876
9173
  * Enforce combining multiple world.get() or world.has() calls into a single call for better Jecs performance.
8877
- * @see https://docs.howmanysmall.com/small-rules/rules/roblox/prefer-single-world-query/
9174
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/jecs/prefer-single-world-query-in-jecs/
8878
9175
  */
8879
- 'small-rules/prefer-single-world-query'?: Linter.RuleEntry<[]>;
9176
+ 'small-rules/prefer-single-world-query-in-jecs'?: Linter.RuleEntry<[]>;
8880
9177
  /**
8881
9178
  * Prefer singular naming for enums.
8882
- * @see https://docs.howmanysmall.com/small-rules/rules/naming/prefer-singular-enums/
9179
+ * @see https://docs.howmanysmall.com/small-rules/rules/english/prefer-singular-enums/
8883
9180
  */
8884
9181
  'small-rules/prefer-singular-enums'?: Linter.RuleEntry<[]>;
8885
9182
  /**
@@ -8899,7 +9196,7 @@ interface RuleOptions {
8899
9196
  'small-rules/prefer-use-reducer'?: Linter.RuleEntry<[]>;
8900
9197
  /**
8901
9198
  * Prevent abbreviations.
8902
- * @see https://docs.howmanysmall.com/small-rules/rules/naming/prevent-abbreviations/
9199
+ * @see https://docs.howmanysmall.com/small-rules/rules/english/prevent-abbreviations/
8903
9200
  */
8904
9201
  'small-rules/prevent-abbreviations'?: Linter.RuleEntry<SmallRulesPreventAbbreviations>;
8905
9202
  /**
@@ -8937,6 +9234,16 @@ interface RuleOptions {
8937
9234
  * @see https://docs.howmanysmall.com/small-rules/rules/react/require-react-display-names/
8938
9235
  */
8939
9236
  'small-rules/require-react-display-names'?: Linter.RuleEntry<SmallRulesRequireReactDisplayNames>;
9237
+ /**
9238
+ * Require readable spacing between declarations and logical statement groups.
9239
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/require-readable-spacing/
9240
+ */
9241
+ 'small-rules/require-readable-spacing'?: Linter.RuleEntry<SmallRulesRequireReadableSpacing>;
9242
+ /**
9243
+ * Require a nearby safety-marker comment (or a described Oxlint suppression of typescript/no-unsafe-type-assertion) for every TypeScript type assertion except const assertions.
9244
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/require-safety-comment-for-type-assertion/
9245
+ */
9246
+ 'small-rules/require-safety-comment-for-type-assertion'?: Linter.RuleEntry<SmallRulesRequireSafetyCommentForTypeAssertion>;
8940
9247
  /**
8941
9248
  * Require braces around switch case bodies selected by line span or statement count.
8942
9249
  * @see https://docs.howmanysmall.com/small-rules/rules/general/require-switch-case-braces/
@@ -8948,7 +9255,12 @@ interface RuleOptions {
8948
9255
  */
8949
9256
  'small-rules/require-throw-error-capture'?: Linter.RuleEntry<SmallRulesRequireThrowErrorCapture>;
8950
9257
  /**
8951
- * Require the 'u' or 'v' unicode flag on calls named regex().
9258
+ * Require React hooks to be declared in a `.tsx` file.
9259
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/require-tsx-for-hooks/
9260
+ */
9261
+ 'small-rules/require-tsx-for-hooks'?: Linter.RuleEntry<[]>;
9262
+ /**
9263
+ * Require the 'u' or 'v' unicode flag on calls named `regex()`.
8952
9264
  * @see https://docs.howmanysmall.com/small-rules/rules/general/require-unicode-regex/
8953
9265
  */
8954
9266
  'small-rules/require-unicode-regex'?: Linter.RuleEntry<[]>;
@@ -8957,6 +9269,11 @@ interface RuleOptions {
8957
9269
  * @see https://docs.howmanysmall.com/small-rules/rules/react/rerender-memo-with-default-value/
8958
9270
  */
8959
9271
  'small-rules/rerender-memo-with-default-value'?: Linter.RuleEntry<[]>;
9272
+ /**
9273
+ * Require function and method names to begin with a verb.
9274
+ * @see https://docs.howmanysmall.com/small-rules/rules/english/starts-with-verb/
9275
+ */
9276
+ 'small-rules/starts-with-verb'?: Linter.RuleEntry<SmallRulesStartsWithVerb>;
8960
9277
  /**
8961
9278
  * Prevent imports that reach into another component's nested modules.
8962
9279
  * @see https://docs.howmanysmall.com/small-rules/rules/react/strict-component-boundaries/
@@ -11227,7 +11544,7 @@ interface RuleOptions {
11227
11544
  * Disallow awaiting a value that is not a Thenable
11228
11545
  * @see https://typescript-eslint.io/rules/await-thenable
11229
11546
  */
11230
- 'ts/await-thenable'?: Linter.RuleEntry<[]>;
11547
+ 'ts/await-thenable'?: Linter.RuleEntry<TsAwaitThenable>;
11231
11548
  /**
11232
11549
  * Disallow `@ts-<directive>` comments or require descriptions after directives
11233
11550
  * @see https://typescript-eslint.io/rules/ban-ts-comment
@@ -11424,6 +11741,11 @@ interface RuleOptions {
11424
11741
  * @see https://typescript-eslint.io/rules/no-for-in-array
11425
11742
  */
11426
11743
  'ts/no-for-in-array'?: Linter.RuleEntry<[]>;
11744
+ /**
11745
+ * Disallow type operations that resolve to the "empty object" type
11746
+ * @see https://typescript-eslint.io/rules/no-generated-empty-object-type
11747
+ */
11748
+ 'ts/no-generated-empty-object-type'?: Linter.RuleEntry<[]>;
11427
11749
  /**
11428
11750
  * Disallow the use of `eval()`-like functions
11429
11751
  * @see https://typescript-eslint.io/rules/no-implied-eval
@@ -11623,6 +11945,11 @@ interface RuleOptions {
11623
11945
  * @see https://typescript-eslint.io/rules/no-unsafe-declaration-merging
11624
11946
  */
11625
11947
  'ts/no-unsafe-declaration-merging'?: Linter.RuleEntry<[]>;
11948
+ /**
11949
+ * Disallow assigning non-enum values to enum typed locations
11950
+ * @see https://typescript-eslint.io/rules/no-unsafe-enum-assignment
11951
+ */
11952
+ 'ts/no-unsafe-enum-assignment'?: Linter.RuleEntry<[]>;
11626
11953
  /**
11627
11954
  * Disallow comparing an enum value with a non-enum value
11628
11955
  * @see https://typescript-eslint.io/rules/no-unsafe-enum-comparison
@@ -14550,11 +14877,20 @@ type FlawlessArrowReturnStyle = [] | [{
14550
14877
  printWidth?: number;
14551
14878
  });
14552
14879
  }];
14880
+ // ----- flawless/cognitive-complexity -----
14881
+ type FlawlessCognitiveComplexity = [] | [{
14882
+ threshold?: number;
14883
+ }];
14553
14884
  // ----- flawless/jsx-shorthand-fragment -----
14554
14885
  type FlawlessJsxShorthandFragment = [] | [{
14555
14886
  fragmentName?: string;
14556
14887
  mode?: ("element" | "syntax");
14557
14888
  }];
14889
+ // ----- flawless/max-comment-length -----
14890
+ type FlawlessMaxCommentLength = [] | [{
14891
+ ignoreJSDoc?: boolean;
14892
+ maximumWords?: number;
14893
+ }];
14558
14894
  // ----- flawless/max-lines-per-function -----
14559
14895
  type FlawlessMaxLinesPerFunction = [] | [{
14560
14896
  countFrom?: ("body" | "function");
@@ -14569,6 +14905,7 @@ type _FlawlessNamingConventionFormatOptionsConfig = (_FlawlessNamingConventionPr
14569
14905
  type _FlawlessNamingConventionPredefinedFormats = ("camelCase" | "strictCamelCase" | "PascalCase" | "StrictPascalCase" | "snake_case" | "UPPER_CASE");
14570
14906
  type _FlawlessNamingConventionUnderscoreOptions = ("forbid" | "allow" | "require" | "requireDouble" | "allowDouble" | "allowSingleOrDouble");
14571
14907
  type _FlawlessNamingConvention_PrefixSuffixConfig = string[];
14908
+ type _FlawlessNamingConventionComponentPropConfig = true;
14572
14909
  type _FlawlessNamingConvention_TypeArgumentReferenceMatcher = (_FlawlessNamingConventionTypeArgumentReferenceMatcher & {
14573
14910
  name?: string;
14574
14911
  from?: string;
@@ -14618,6 +14955,7 @@ type FlawlessNamingConvention = ({
14618
14955
  prefix?: _FlawlessNamingConvention_PrefixSuffixConfig;
14619
14956
  suffix?: _FlawlessNamingConvention_PrefixSuffixConfig;
14620
14957
  trailingUnderscore?: _FlawlessNamingConventionUnderscoreOptions;
14958
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
14621
14959
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
14622
14960
  modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace" | "constAsserted")[];
14623
14961
  selector: ("default" | "variableLike" | "memberLike" | "typeLike" | "method" | "property" | "accessor" | "variable" | "function" | "parameter" | "objectStyleEnum" | "parameterProperty" | "classicAccessor" | "enumMember" | "objectStyleEnumMember" | "classMethod" | "objectLiteralMethod" | "typeMethod" | "classProperty" | "objectLiteralProperty" | "typeProperty" | "autoAccessor" | "class" | "interface" | "typeAlias" | "enum" | "typeParameter" | "import")[];
@@ -14635,6 +14973,7 @@ type FlawlessNamingConvention = ({
14635
14973
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
14636
14974
  selector: "default";
14637
14975
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
14976
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
14638
14977
  modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace" | "constAsserted")[];
14639
14978
  } | {
14640
14979
  allowedWords?: _FlawlessNamingConvention_AllowedWordsConfig;
@@ -14716,6 +15055,7 @@ type FlawlessNamingConvention = ({
14716
15055
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
14717
15056
  selector: "memberLike";
14718
15057
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
15058
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
14719
15059
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[];
14720
15060
  } | {
14721
15061
  allowedWords?: _FlawlessNamingConvention_AllowedWordsConfig;
@@ -14757,6 +15097,7 @@ type FlawlessNamingConvention = ({
14757
15097
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
14758
15098
  selector: "typeProperty";
14759
15099
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
15100
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
14760
15101
  modifiers?: ("public" | "readonly" | "requiresQuotes")[];
14761
15102
  types?: _FlawlessNamingConventionTypeMatcher[];
14762
15103
  } | {
@@ -14785,6 +15126,7 @@ type FlawlessNamingConvention = ({
14785
15126
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
14786
15127
  selector: "property";
14787
15128
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
15129
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
14788
15130
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[];
14789
15131
  types?: _FlawlessNamingConventionTypeMatcher[];
14790
15132
  } | {
@@ -14827,6 +15169,7 @@ type FlawlessNamingConvention = ({
14827
15169
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
14828
15170
  selector: "typeMethod";
14829
15171
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
15172
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
14830
15173
  modifiers?: ("public" | "requiresQuotes")[];
14831
15174
  types?: _FlawlessNamingConventionTypeMatcher[];
14832
15175
  } | {
@@ -14841,6 +15184,7 @@ type FlawlessNamingConvention = ({
14841
15184
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
14842
15185
  selector: "method";
14843
15186
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
15187
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
14844
15188
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[];
14845
15189
  types?: _FlawlessNamingConventionTypeMatcher[];
14846
15190
  } | {
@@ -15012,14 +15356,31 @@ type FlawlessNoConditionalInTest = [] | [{
15012
15356
  additionalTestBlockFunctions?: string[];
15013
15357
  allowOptionalChaining?: boolean;
15014
15358
  }];
15359
+ // ----- flawless/no-ignored-return -----
15360
+ type FlawlessNoIgnoredReturn = [] | [{
15361
+ pureFunctions?: string[];
15362
+ }];
15015
15363
  // ----- flawless/no-materialized-filter-map -----
15016
15364
  type FlawlessNoMaterializedFilterMap = [] | [{
15017
15365
  iteratorHelpers?: boolean;
15018
15366
  }];
15367
+ // ----- flawless/no-redundant-type-annotation -----
15368
+ type FlawlessNoRedundantTypeAnnotation = [] | [{
15369
+ allowExpressions?: boolean;
15370
+ checkReturnTypes?: boolean;
15371
+ }];
15019
15372
  // ----- flawless/no-shared-test-state -----
15020
15373
  type FlawlessNoSharedTestState = [] | [{
15021
15374
  additionalMutatingMethods?: string[];
15022
15375
  }];
15376
+ // ----- flawless/no-trivial-functions -----
15377
+ type FlawlessNoTrivialFunctions = [] | [{
15378
+ minimumReferences?: number;
15379
+ }];
15380
+ // ----- flawless/no-unnecessary-prop-alias -----
15381
+ type FlawlessNoUnnecessaryPropAlias = [] | [{
15382
+ reportConflicts?: boolean;
15383
+ }];
15023
15384
  // ----- flawless/prefer-ending-with-an-expect -----
15024
15385
  type FlawlessPreferEndingWithAnExpect = [] | [{
15025
15386
  additionalTestBlockFunctions?: string[];
@@ -15044,6 +15405,10 @@ type FlawlessPurity = [] | [{
15044
15405
  additionalFunctions?: string[];
15045
15406
  ignore?: string[];
15046
15407
  }];
15408
+ // ----- flawless/react-namespace -----
15409
+ type FlawlessReactNamespace = [] | [{
15410
+ umdGlobal?: boolean;
15411
+ }];
15047
15412
  // ----- flawless/toml-sort-keys -----
15048
15413
  type FlawlessTomlSortKeys = {
15049
15414
  order: (string[] | {
@@ -15053,6 +15418,16 @@ type FlawlessTomlSortKeys = {
15053
15418
  });
15054
15419
  pathPattern: string;
15055
15420
  }[];
15421
+ // ----- flawless/yaml-sort-sequence-by-key -----
15422
+ type FlawlessYamlSortSequenceByKey = {
15423
+ key: string;
15424
+ order?: {
15425
+ caseSensitive?: boolean;
15426
+ natural?: boolean;
15427
+ type?: ("asc" | "desc");
15428
+ };
15429
+ pathPattern: string;
15430
+ }[];
15056
15431
  // ----- format-lua/stylua -----
15057
15432
  type FormatLuaStylua = [] | [{
15058
15433
  language?: string;
@@ -15334,6 +15709,7 @@ type JestValidTitle = [] | [{
15334
15709
  }];
15335
15710
  // ----- jsdoc/check-alignment -----
15336
15711
  type JsdocCheckAlignment = [] | [{
15712
+ ignoreEmptyLines?: boolean;
15337
15713
  innerIndent?: number;
15338
15714
  }];
15339
15715
  // ----- jsdoc/check-examples -----
@@ -15361,6 +15737,7 @@ type JsdocCheckExamples = [] | [{
15361
15737
  // ----- jsdoc/check-indentation -----
15362
15738
  type JsdocCheckIndentation = [] | [{
15363
15739
  allowIndentedSections?: boolean;
15740
+ allowNoSpaceAfterAsterisk?: boolean;
15364
15741
  excludeTags?: string[];
15365
15742
  }];
15366
15743
  // ----- jsdoc/check-line-alignment -----
@@ -15380,18 +15757,26 @@ type JsdocCheckLineAlignment = [] | [("always" | "never" | "any")] | [("always"
15380
15757
  // ----- jsdoc/check-param-names -----
15381
15758
  type JsdocCheckParamNames = [] | [{
15382
15759
  allowExtraTrailingParamDocs?: boolean;
15760
+ badParamNames?: boolean;
15761
+ badParamOrder?: boolean;
15383
15762
  checkDestructured?: boolean;
15384
15763
  checkRestProperty?: boolean;
15385
15764
  checkTypesPattern?: string;
15386
15765
  disableExtraPropertyReporting?: boolean;
15387
15766
  disableMissingParamChecks?: boolean;
15767
+ duplicateParams?: boolean;
15388
15768
  enableFixer?: boolean;
15769
+ extraParams?: boolean;
15389
15770
  useDefaultObjectProperties?: boolean;
15390
15771
  }];
15391
15772
  // ----- jsdoc/check-property-names -----
15392
15773
  type JsdocCheckPropertyNames = [] | [{
15393
15774
  enableFixer?: boolean;
15394
15775
  }];
15776
+ // ----- jsdoc/check-syntax -----
15777
+ type JsdocCheckSyntax = [] | [{
15778
+ enableFixer?: boolean;
15779
+ }];
15395
15780
  // ----- jsdoc/check-tag-names -----
15396
15781
  type JsdocCheckTagNames = [] | [{
15397
15782
  definedTags?: string[];
@@ -15566,6 +15951,15 @@ type JsdocNoUndefinedTypes = [] | [{
15566
15951
  disableReporting?: boolean;
15567
15952
  markVariablesAsUsed?: boolean;
15568
15953
  }];
15954
+ // ----- jsdoc/no-unnecessary-type-assertion -----
15955
+ type JsdocNoUnnecessaryTypeAssertion = [] | [{
15956
+ checkLiteralConstAssertions?: boolean;
15957
+ enableFixer?: boolean;
15958
+ fixTypeChangingCasts?: boolean;
15959
+ preferConstToLiteralTuples?: boolean;
15960
+ treatAnyAsRedundant?: boolean;
15961
+ typesToIgnore?: string[];
15962
+ }];
15569
15963
  // ----- jsdoc/normalize-see-links -----
15570
15964
  type JsdocNormalizeSeeLinks = [] | [{
15571
15965
  canonicalForm?: ("pipe" | "prefix");
@@ -15768,7 +16162,6 @@ type JsdocRequireTags = [] | [{
15768
16162
  tags?: (string | {
15769
16163
  context?: string;
15770
16164
  tag?: string;
15771
- [k: string]: unknown | undefined;
15772
16165
  })[];
15773
16166
  }];
15774
16167
  // ----- jsdoc/require-template -----
@@ -15839,6 +16232,22 @@ type JsdocTextEscaping = [] | [{
15839
16232
  escapeHTML?: boolean;
15840
16233
  escapeMarkdown?: boolean;
15841
16234
  }];
16235
+ // ----- jsdoc/ts-ban-ts-comment -----
16236
+ type JsdocTsBanTsComment = [] | [{
16237
+ minimumDescriptionLength?: number;
16238
+ "ts-check"?: (boolean | "allow-with-description" | {
16239
+ descriptionFormat?: string;
16240
+ });
16241
+ "ts-expect-error"?: (boolean | "allow-with-description" | {
16242
+ descriptionFormat?: string;
16243
+ });
16244
+ "ts-ignore"?: (boolean | "allow-with-description" | {
16245
+ descriptionFormat?: string;
16246
+ });
16247
+ "ts-nocheck"?: (boolean | "allow-with-description" | {
16248
+ descriptionFormat?: string;
16249
+ });
16250
+ }];
15842
16251
  // ----- jsdoc/ts-method-signature-style -----
15843
16252
  type JsdocTsMethodSignatureStyle = [] | [("method" | "property")] | [("method" | "property"), {
15844
16253
  enableFixer?: boolean;
@@ -18350,8 +18759,8 @@ type PerfectionistSortClasses = {
18350
18759
  });
18351
18760
  partitionByNewLine?: boolean;
18352
18761
  }[];
18353
- // ----- perfectionist/sort-decorators -----
18354
- type PerfectionistSortDecorators = {
18762
+ // ----- perfectionist/sort-constructor-parameters -----
18763
+ type PerfectionistSortConstructorParameters = [{
18355
18764
  fallbackSort?: {
18356
18765
  type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
18357
18766
  order?: ("asc" | "desc");
@@ -18379,6 +18788,15 @@ type PerfectionistSortDecorators = {
18379
18788
  pattern: string;
18380
18789
  flags?: string;
18381
18790
  } | string));
18791
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
18792
+ selector?: "parameter";
18793
+ decoratorNamePattern?: (({
18794
+ pattern: string;
18795
+ flags?: string;
18796
+ } | string)[] | ({
18797
+ pattern: string;
18798
+ flags?: string;
18799
+ } | string));
18382
18800
  }, ...({
18383
18801
  elementNamePattern?: (({
18384
18802
  pattern: string;
@@ -18387,6 +18805,15 @@ type PerfectionistSortDecorators = {
18387
18805
  pattern: string;
18388
18806
  flags?: string;
18389
18807
  } | string));
18808
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
18809
+ selector?: "parameter";
18810
+ decoratorNamePattern?: (({
18811
+ pattern: string;
18812
+ flags?: string;
18813
+ } | string)[] | ({
18814
+ pattern: string;
18815
+ flags?: string;
18816
+ } | string));
18390
18817
  })[]];
18391
18818
  } | {
18392
18819
  fallbackSort?: {
@@ -18404,6 +18831,15 @@ type PerfectionistSortDecorators = {
18404
18831
  pattern: string;
18405
18832
  flags?: string;
18406
18833
  } | string));
18834
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
18835
+ selector?: "parameter";
18836
+ decoratorNamePattern?: (({
18837
+ pattern: string;
18838
+ flags?: string;
18839
+ } | string)[] | ({
18840
+ pattern: string;
18841
+ flags?: string;
18842
+ } | string));
18407
18843
  })[];
18408
18844
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
18409
18845
  groups?: (string | [string, ...(string)[]] | {
@@ -18420,11 +18856,244 @@ type PerfectionistSortDecorators = {
18420
18856
  order?: ("asc" | "desc");
18421
18857
  })[];
18422
18858
  newlinesBetween?: ("ignore" | number);
18423
- sortOnParameters?: boolean;
18424
- sortOnProperties?: boolean;
18425
- sortOnAccessors?: boolean;
18426
- sortOnMethods?: boolean;
18427
- sortOnClasses?: boolean;
18859
+ useConfigurationIf: {
18860
+ allNamesMatchPattern?: (({
18861
+ pattern: string;
18862
+ flags?: string;
18863
+ } | string)[] | ({
18864
+ pattern: string;
18865
+ flags?: string;
18866
+ } | string));
18867
+ matchesAstSelector?: string;
18868
+ };
18869
+ partitionByComment?: (boolean | (({
18870
+ pattern: string;
18871
+ flags?: string;
18872
+ } | string)[] | ({
18873
+ pattern: string;
18874
+ flags?: string;
18875
+ } | string)) | {
18876
+ block?: (boolean | (({
18877
+ pattern: string;
18878
+ flags?: string;
18879
+ } | string)[] | ({
18880
+ pattern: string;
18881
+ flags?: string;
18882
+ } | string)));
18883
+ line?: (boolean | (({
18884
+ pattern: string;
18885
+ flags?: string;
18886
+ } | string)[] | ({
18887
+ pattern: string;
18888
+ flags?: string;
18889
+ } | string)));
18890
+ });
18891
+ partitionByNewLine?: boolean;
18892
+ }, ...({
18893
+ fallbackSort?: {
18894
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
18895
+ order?: ("asc" | "desc");
18896
+ };
18897
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
18898
+ specialCharacters?: ("remove" | "trim" | "keep");
18899
+ ignoreCase?: boolean;
18900
+ alphabet?: string;
18901
+ locales?: (string | string[]);
18902
+ order?: ("asc" | "desc");
18903
+ customGroups?: ({
18904
+ fallbackSort?: {
18905
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
18906
+ order?: ("asc" | "desc");
18907
+ };
18908
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
18909
+ groupName: string;
18910
+ newlinesInside?: ("ignore" | number);
18911
+ order?: ("asc" | "desc");
18912
+ anyOf: [{
18913
+ elementNamePattern?: (({
18914
+ pattern: string;
18915
+ flags?: string;
18916
+ } | string)[] | ({
18917
+ pattern: string;
18918
+ flags?: string;
18919
+ } | string));
18920
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
18921
+ selector?: "parameter";
18922
+ decoratorNamePattern?: (({
18923
+ pattern: string;
18924
+ flags?: string;
18925
+ } | string)[] | ({
18926
+ pattern: string;
18927
+ flags?: string;
18928
+ } | string));
18929
+ }, ...({
18930
+ elementNamePattern?: (({
18931
+ pattern: string;
18932
+ flags?: string;
18933
+ } | string)[] | ({
18934
+ pattern: string;
18935
+ flags?: string;
18936
+ } | string));
18937
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
18938
+ selector?: "parameter";
18939
+ decoratorNamePattern?: (({
18940
+ pattern: string;
18941
+ flags?: string;
18942
+ } | string)[] | ({
18943
+ pattern: string;
18944
+ flags?: string;
18945
+ } | string));
18946
+ })[]];
18947
+ } | {
18948
+ fallbackSort?: {
18949
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
18950
+ order?: ("asc" | "desc");
18951
+ };
18952
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
18953
+ groupName: string;
18954
+ newlinesInside?: ("ignore" | number);
18955
+ order?: ("asc" | "desc");
18956
+ elementNamePattern?: (({
18957
+ pattern: string;
18958
+ flags?: string;
18959
+ } | string)[] | ({
18960
+ pattern: string;
18961
+ flags?: string;
18962
+ } | string));
18963
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
18964
+ selector?: "parameter";
18965
+ decoratorNamePattern?: (({
18966
+ pattern: string;
18967
+ flags?: string;
18968
+ } | string)[] | ({
18969
+ pattern: string;
18970
+ flags?: string;
18971
+ } | string));
18972
+ })[];
18973
+ newlinesInside?: (("ignore" | number) | "newlinesBetween");
18974
+ groups?: (string | [string, ...(string)[]] | {
18975
+ newlinesBetween: ("ignore" | number);
18976
+ } | {
18977
+ group: (string | [string, ...(string)[]]);
18978
+ fallbackSort?: {
18979
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
18980
+ order?: ("asc" | "desc");
18981
+ };
18982
+ commentAbove?: string;
18983
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
18984
+ newlinesInside?: ("ignore" | number);
18985
+ order?: ("asc" | "desc");
18986
+ })[];
18987
+ newlinesBetween?: ("ignore" | number);
18988
+ useConfigurationIf: {
18989
+ allNamesMatchPattern?: (({
18990
+ pattern: string;
18991
+ flags?: string;
18992
+ } | string)[] | ({
18993
+ pattern: string;
18994
+ flags?: string;
18995
+ } | string));
18996
+ matchesAstSelector?: string;
18997
+ };
18998
+ partitionByComment?: (boolean | (({
18999
+ pattern: string;
19000
+ flags?: string;
19001
+ } | string)[] | ({
19002
+ pattern: string;
19003
+ flags?: string;
19004
+ } | string)) | {
19005
+ block?: (boolean | (({
19006
+ pattern: string;
19007
+ flags?: string;
19008
+ } | string)[] | ({
19009
+ pattern: string;
19010
+ flags?: string;
19011
+ } | string)));
19012
+ line?: (boolean | (({
19013
+ pattern: string;
19014
+ flags?: string;
19015
+ } | string)[] | ({
19016
+ pattern: string;
19017
+ flags?: string;
19018
+ } | string)));
19019
+ });
19020
+ partitionByNewLine?: boolean;
19021
+ })[]];
19022
+ // ----- perfectionist/sort-decorators -----
19023
+ type PerfectionistSortDecorators = {
19024
+ fallbackSort?: {
19025
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
19026
+ order?: ("asc" | "desc");
19027
+ };
19028
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
19029
+ specialCharacters?: ("remove" | "trim" | "keep");
19030
+ ignoreCase?: boolean;
19031
+ alphabet?: string;
19032
+ locales?: (string | string[]);
19033
+ order?: ("asc" | "desc");
19034
+ customGroups?: ({
19035
+ fallbackSort?: {
19036
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
19037
+ order?: ("asc" | "desc");
19038
+ };
19039
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
19040
+ groupName: string;
19041
+ newlinesInside?: ("ignore" | number);
19042
+ order?: ("asc" | "desc");
19043
+ anyOf: [{
19044
+ elementNamePattern?: (({
19045
+ pattern: string;
19046
+ flags?: string;
19047
+ } | string)[] | ({
19048
+ pattern: string;
19049
+ flags?: string;
19050
+ } | string));
19051
+ }, ...({
19052
+ elementNamePattern?: (({
19053
+ pattern: string;
19054
+ flags?: string;
19055
+ } | string)[] | ({
19056
+ pattern: string;
19057
+ flags?: string;
19058
+ } | string));
19059
+ })[]];
19060
+ } | {
19061
+ fallbackSort?: {
19062
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
19063
+ order?: ("asc" | "desc");
19064
+ };
19065
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
19066
+ groupName: string;
19067
+ newlinesInside?: ("ignore" | number);
19068
+ order?: ("asc" | "desc");
19069
+ elementNamePattern?: (({
19070
+ pattern: string;
19071
+ flags?: string;
19072
+ } | string)[] | ({
19073
+ pattern: string;
19074
+ flags?: string;
19075
+ } | string));
19076
+ })[];
19077
+ newlinesInside?: (("ignore" | number) | "newlinesBetween");
19078
+ groups?: (string | [string, ...(string)[]] | {
19079
+ newlinesBetween: ("ignore" | number);
19080
+ } | {
19081
+ group: (string | [string, ...(string)[]]);
19082
+ fallbackSort?: {
19083
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
19084
+ order?: ("asc" | "desc");
19085
+ };
19086
+ commentAbove?: string;
19087
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
19088
+ newlinesInside?: ("ignore" | number);
19089
+ order?: ("asc" | "desc");
19090
+ })[];
19091
+ newlinesBetween?: ("ignore" | number);
19092
+ sortOnParameters?: boolean;
19093
+ sortOnProperties?: boolean;
19094
+ sortOnAccessors?: boolean;
19095
+ sortOnMethods?: boolean;
19096
+ sortOnClasses?: boolean;
18428
19097
  partitionByComment?: (boolean | (({
18429
19098
  pattern: string;
18430
19099
  flags?: string;
@@ -19072,10 +19741,6 @@ type PerfectionistSortImports = {
19072
19741
  sortBy?: ("specifier" | "path");
19073
19742
  })[];
19074
19743
  newlinesBetween?: ("ignore" | number);
19075
- tsconfig?: {
19076
- rootDir: string;
19077
- filename?: string;
19078
- };
19079
19744
  maxLineLength?: number;
19080
19745
  sortSideEffects?: boolean;
19081
19746
  environment?: ("node" | "bun");
@@ -19110,6 +19775,10 @@ type PerfectionistSortImports = {
19110
19775
  pattern: string;
19111
19776
  flags?: string;
19112
19777
  } | string));
19778
+ tsconfig?: {
19779
+ rootDir: string;
19780
+ filename?: string;
19781
+ };
19113
19782
  }[];
19114
19783
  // ----- perfectionist/sort-interfaces -----
19115
19784
  type PerfectionistSortInterfaces = {
@@ -19694,6 +20363,7 @@ type PerfectionistSortModules = [] | [{
19694
20363
  order?: ("asc" | "desc");
19695
20364
  })[];
19696
20365
  newlinesBetween?: ("ignore" | number);
20366
+ additionalModuleBlockTypes?: string[];
19697
20367
  useExperimentalDependencyDetection?: boolean;
19698
20368
  newlinesBetweenOverloadSignatures?: ("ignore" | number);
19699
20369
  partitionByComment?: (boolean | (({
@@ -19719,6 +20389,10 @@ type PerfectionistSortModules = [] | [{
19719
20389
  } | string)));
19720
20390
  });
19721
20391
  partitionByNewLine?: boolean;
20392
+ tsconfig?: {
20393
+ rootDir: string;
20394
+ filename?: string;
20395
+ };
19722
20396
  }];
19723
20397
  // ----- perfectionist/sort-named-exports -----
19724
20398
  type PerfectionistSortNamedExports = {
@@ -20247,6 +20921,13 @@ type PerfectionistSortObjects = {
20247
20921
  partitionByComputedKey?: boolean;
20248
20922
  styledComponents?: boolean;
20249
20923
  useExperimentalDependencyDetection?: boolean;
20924
+ ignoreCallbackDependenciesPatterns?: (({
20925
+ pattern: string;
20926
+ flags?: string;
20927
+ } | string)[] | ({
20928
+ pattern: string;
20929
+ flags?: string;
20930
+ } | string));
20250
20931
  partitionByComment?: (boolean | (({
20251
20932
  pattern: string;
20252
20933
  flags?: string;
@@ -20582,6 +21263,13 @@ type PerfectionistSortVariableDeclarations = {
20582
21263
  matchesAstSelector?: string;
20583
21264
  };
20584
21265
  useExperimentalDependencyDetection?: boolean;
21266
+ ignoreCallbackDependenciesPatterns?: (({
21267
+ pattern: string;
21268
+ flags?: string;
21269
+ } | string)[] | ({
21270
+ pattern: string;
21271
+ flags?: string;
21272
+ } | string));
20585
21273
  partitionByComment?: (boolean | (({
20586
21274
  pattern: string;
20587
21275
  flags?: string;
@@ -20866,6 +21554,13 @@ type SmallRulesConsistentCompoundWords = [] | [{
20866
21554
  [k: string]: (false | string) | undefined;
20867
21555
  };
20868
21556
  }];
21557
+ // ----- small-rules/curly -----
21558
+ type SmallRulesCurly = [] | [{
21559
+ allowLiteralReturns?: boolean;
21560
+ oneLineBodies?: (("*" | "binding" | "block-like" | "break" | "class" | "continue" | "control-flow" | "declaration" | "enum" | "export" | "expression" | "function" | "if" | "import" | "interface" | "loop" | "multiline" | "multiline-binding" | "overload" | "return" | "single-line" | "single-line-binding" | "single-line-if" | "switch" | "throw" | "top-level" | "try" | "type") | [("*" | "binding" | "block-like" | "break" | "class" | "continue" | "control-flow" | "declaration" | "enum" | "export" | "expression" | "function" | "if" | "import" | "interface" | "loop" | "multiline" | "multiline-binding" | "overload" | "return" | "single-line" | "single-line-binding" | "single-line-if" | "switch" | "throw" | "top-level" | "try" | "type"), ...(("*" | "binding" | "block-like" | "break" | "class" | "continue" | "control-flow" | "declaration" | "enum" | "export" | "expression" | "function" | "if" | "import" | "interface" | "loop" | "multiline" | "multiline-binding" | "overload" | "return" | "single-line" | "single-line-binding" | "single-line-if" | "switch" | "throw" | "top-level" | "try" | "type"))[]]);
21561
+ printWidth?: number;
21562
+ tabWidth?: number;
21563
+ }];
20869
21564
  // ----- small-rules/directive-disable-enable-pair -----
20870
21565
  type SmallRulesDirectiveDisableEnablePair = [] | [{
20871
21566
  allowWholeFile?: boolean;
@@ -20900,11 +21595,15 @@ type SmallRulesIsolatedFunctions = [] | [{
20900
21595
  type SmallRulesMemoizedEffectDependencies = [] | [{
20901
21596
  environment?: ("roblox-ts" | "standard");
20902
21597
  hooks?: {
20903
- dependenciesIndex?: number;
20904
21598
  name: string;
21599
+ dependenciesIndex?: number;
20905
21600
  }[];
20906
21601
  mode?: ("aggressive" | "definite" | "moderate");
20907
21602
  }];
21603
+ // ----- small-rules/no-adjust-state-on-prop-change -----
21604
+ type SmallRulesNoAdjustStateOnPropChange = [] | [{
21605
+ environment?: ("roblox-ts" | "standard");
21606
+ }];
20908
21607
  // ----- small-rules/no-array-constructor-elements -----
20909
21608
  type SmallRulesNoArrayConstructorElements = [] | [{
20910
21609
  environment?: ("roblox-ts" | "standard");
@@ -20931,6 +21630,18 @@ type SmallRulesNoAsyncInSystem = [] | [{
20931
21630
  calleePath: [string, ...(string)[]];
20932
21631
  }[];
20933
21632
  }];
21633
+ // ----- small-rules/no-chain-state-updates -----
21634
+ type SmallRulesNoChainStateUpdates = [] | [{
21635
+ environment?: ("roblox-ts" | "standard");
21636
+ }];
21637
+ // ----- small-rules/no-chained-type-assertions -----
21638
+ type SmallRulesNoChainedTypeAssertions = [] | [{
21639
+ allowedTargets?: string[];
21640
+ }];
21641
+ // ----- small-rules/no-cliffy-action-wrapper -----
21642
+ type SmallRulesNoCliffyActionWrapper = [] | [{
21643
+ factories?: string[];
21644
+ }];
20934
21645
  // ----- small-rules/no-color3-constructor -----
20935
21646
  type SmallRulesNoColor3Constructor = [] | [{
20936
21647
  reportUnknownComponents?: boolean;
@@ -20943,10 +21654,22 @@ type SmallRulesNoCommentedCode = [] | [{
20943
21654
  type SmallRulesNoConstantConditionWithBreak = [] | [{
20944
21655
  loopExitCalls?: string[];
20945
21656
  }];
21657
+ // ----- small-rules/no-derived-state -----
21658
+ type SmallRulesNoDerivedState = [] | [{
21659
+ environment?: ("roblox-ts" | "standard");
21660
+ }];
21661
+ // ----- small-rules/no-event-handler -----
21662
+ type SmallRulesNoEventHandler = [] | [{
21663
+ environment?: ("roblox-ts" | "standard");
21664
+ }];
20946
21665
  // ----- small-rules/no-events-in-events-callback -----
20947
21666
  type SmallRulesNoEventsInEventsCallback = [] | [{
20948
21667
  eventsImportPaths: string[];
20949
21668
  }];
21669
+ // ----- small-rules/no-external-store-subscription -----
21670
+ type SmallRulesNoExternalStoreSubscription = [] | [{
21671
+ environment?: ("roblox-ts" | "standard");
21672
+ }];
20950
21673
  // ----- small-rules/no-god-components -----
20951
21674
  type SmallRulesNoGodComponents = [] | [{
20952
21675
  enforceTargetLines?: boolean;
@@ -20966,20 +21689,53 @@ type SmallRulesNoIdentityMap = [] | [{
20966
21689
  type SmallRulesNoIncrementDecrement = [] | [{
20967
21690
  allowAutofix?: boolean;
20968
21691
  }];
21692
+ // ----- small-rules/no-initialize-state -----
21693
+ type SmallRulesNoInitializeState = [] | [{
21694
+ environment?: ("roblox-ts" | "standard");
21695
+ }];
21696
+ // ----- small-rules/no-inline-signature-types -----
21697
+ type SmallRulesNoInlineSignatureTypes = [] | [{
21698
+ functions?: ("all" | "components");
21699
+ position?: ("anywhere" | "bare" | "wrapped");
21700
+ returnTypes?: boolean;
21701
+ }];
20969
21702
  // ----- small-rules/no-instance-methods-without-this -----
20970
21703
  type SmallRulesNoInstanceMethodsWithoutThis = [] | [{
20971
21704
  checkPrivate?: boolean;
20972
21705
  checkProtected?: boolean;
20973
21706
  checkPublic?: boolean;
20974
21707
  }];
21708
+ // ----- small-rules/no-multiple-cliffy-commands -----
21709
+ type SmallRulesNoMultipleCliffyCommands = [] | [{
21710
+ factories?: string[];
21711
+ }];
20975
21712
  // ----- small-rules/no-new-instance-in-use-memo -----
20976
21713
  type SmallRulesNoNewInstanceInUseMemo = [] | [{
20977
21714
  constructors?: string[];
20978
21715
  environment?: ("roblox-ts" | "standard");
20979
21716
  maxHelperTraceDepth?: number;
20980
21717
  }];
21718
+ // ----- small-rules/no-pass-data-to-parent -----
21719
+ type SmallRulesNoPassDataToParent = [] | [{
21720
+ environment?: ("roblox-ts" | "standard");
21721
+ }];
21722
+ // ----- small-rules/no-pass-live-state-to-parent -----
21723
+ type SmallRulesNoPassLiveStateToParent = [] | [{
21724
+ environment?: ("roblox-ts" | "standard");
21725
+ }];
21726
+ // ----- small-rules/no-real-temporary-directory -----
21727
+ type SmallRulesNoRealTemporaryDirectory = [] | [{
21728
+ additionalFunctions?: {
21729
+ functions: [string, ...(string)[]];
21730
+ source: string;
21731
+ }[];
21732
+ }];
20981
21733
  // ----- small-rules/no-recursive -----
20982
21734
  type SmallRulesNoRecursive = [] | [{}];
21735
+ // ----- small-rules/no-reset-all-state-on-prop-change -----
21736
+ type SmallRulesNoResetAllStateOnPropChange = [] | [{
21737
+ environment?: ("roblox-ts" | "standard");
21738
+ }];
20983
21739
  // ----- small-rules/no-restricted-property-assignment -----
20984
21740
  type SmallRulesNoRestrictedPropertyAssignment = [] | [{
20985
21741
  allowFiles?: string[];
@@ -20990,10 +21746,30 @@ type SmallRulesNoRestrictedPropertyAssignment = [] | [{
20990
21746
  properties: [string, ...(string)[]];
20991
21747
  }[];
20992
21748
  }];
21749
+ // ----- small-rules/no-runtime-in-type-files -----
21750
+ type SmallRulesNoRuntimeInTypeFiles = [] | [{
21751
+ files?: string[];
21752
+ }];
21753
+ // ----- small-rules/no-runtime-typeof -----
21754
+ type SmallRulesNoRuntimeTypeof = [] | [{
21755
+ allowInTypeGuards?: boolean;
21756
+ }];
20993
21757
  // ----- small-rules/no-static-react-create-element -----
20994
21758
  type SmallRulesNoStaticReactCreateElement = [] | [{
20995
21759
  environment?: ("roblox-ts" | "standard");
20996
21760
  }];
21761
+ // ----- small-rules/no-test-timeout -----
21762
+ type SmallRulesNoTestTimeout = [] | [{
21763
+ additionalTestFunctions?: string[];
21764
+ }];
21765
+ // ----- small-rules/no-unsupported-syntax -----
21766
+ type SmallRulesNoUnsupportedSyntax = [] | [{
21767
+ globalThis?: boolean;
21768
+ labels?: boolean;
21769
+ prototype?: boolean;
21770
+ regexLiterals?: boolean;
21771
+ spreadDestructuring?: boolean;
21772
+ }];
20997
21773
  // ----- small-rules/no-unused-imports -----
20998
21774
  type SmallRulesNoUnusedImports = [] | [{
20999
21775
  checkJSDoc?: boolean;
@@ -21006,6 +21782,10 @@ type SmallRulesNoUnusedUseMemo = [] | [{
21006
21782
  type SmallRulesNoUselessConstants = [] | [{
21007
21783
  ignoreCallPatterns?: string[];
21008
21784
  }];
21785
+ // ----- small-rules/no-useless-empty-string-comparison -----
21786
+ type SmallRulesNoUselessEmptyStringComparison = [] | [{
21787
+ allowAutofix?: boolean;
21788
+ }];
21009
21789
  // ----- small-rules/no-useless-use-effect -----
21010
21790
  type SmallRulesNoUselessUseEffect = [] | [{
21011
21791
  environment?: ("roblox-ts" | "standard");
@@ -21030,7 +21810,7 @@ type SmallRulesNoUselessUseEffect = [] | [{
21030
21810
  }];
21031
21811
  // ----- small-rules/no-useless-use-memo -----
21032
21812
  type SmallRulesNoUselessUseMemo = [] | [{
21033
- dependencyMode?: ("empty-or-omitted" | "non-updating" | "aggressive");
21813
+ dependencyMode?: ("empty-or-omitted" | "aggressive" | "non-updating");
21034
21814
  environment?: ("roblox-ts" | "standard");
21035
21815
  staticGlobalFactories?: string[];
21036
21816
  }];
@@ -21104,8 +21884,8 @@ type SmallRulesRequireModuleLevelInstantiation = [] | [{
21104
21884
  type SmallRulesRequireNamedEffectFunctions = [] | [{
21105
21885
  environment?: ("roblox-ts" | "standard");
21106
21886
  hooks?: {
21107
- allowAsync: boolean;
21108
21887
  name: string;
21888
+ allowAsync: boolean;
21109
21889
  }[];
21110
21890
  inlineFunctionDeclarations?: boolean;
21111
21891
  sloptor?: boolean;
@@ -21144,6 +21924,28 @@ type SmallRulesRequireReactComponentKeys = [] | [{
21144
21924
  type SmallRulesRequireReactDisplayNames = [] | [{
21145
21925
  environment?: ("roblox-ts" | "standard");
21146
21926
  }];
21927
+ // ----- small-rules/require-readable-spacing -----
21928
+ type SmallRulesRequireReadableSpacing = [] | [{
21929
+ afterBlocks?: boolean;
21930
+ afterImports?: boolean;
21931
+ allowAttachedUses?: boolean;
21932
+ allowGuardClauseRuns?: boolean;
21933
+ allowMultilineBindingRuns?: boolean;
21934
+ aroundDeclarations?: boolean;
21935
+ aroundMultilineBindings?: boolean;
21936
+ beforeControlFlow?: boolean;
21937
+ betweenTopLevelStatements?: boolean;
21938
+ overrides?: {
21939
+ blankLine: ("always" | "any");
21940
+ next: (("*" | "binding" | "block-like" | "break" | "class" | "continue" | "control-flow" | "declaration" | "enum" | "export" | "expression" | "function" | "if" | "import" | "interface" | "loop" | "multiline" | "multiline-binding" | "overload" | "return" | "single-line" | "single-line-binding" | "single-line-if" | "switch" | "throw" | "top-level" | "try" | "type") | [("*" | "binding" | "block-like" | "break" | "class" | "continue" | "control-flow" | "declaration" | "enum" | "export" | "expression" | "function" | "if" | "import" | "interface" | "loop" | "multiline" | "multiline-binding" | "overload" | "return" | "single-line" | "single-line-binding" | "single-line-if" | "switch" | "throw" | "top-level" | "try" | "type"), ...(("*" | "binding" | "block-like" | "break" | "class" | "continue" | "control-flow" | "declaration" | "enum" | "export" | "expression" | "function" | "if" | "import" | "interface" | "loop" | "multiline" | "multiline-binding" | "overload" | "return" | "single-line" | "single-line-binding" | "single-line-if" | "switch" | "throw" | "top-level" | "try" | "type"))[]]);
21941
+ previous: (("*" | "binding" | "block-like" | "break" | "class" | "continue" | "control-flow" | "declaration" | "enum" | "export" | "expression" | "function" | "if" | "import" | "interface" | "loop" | "multiline" | "multiline-binding" | "overload" | "return" | "single-line" | "single-line-binding" | "single-line-if" | "switch" | "throw" | "top-level" | "try" | "type") | [("*" | "binding" | "block-like" | "break" | "class" | "continue" | "control-flow" | "declaration" | "enum" | "export" | "expression" | "function" | "if" | "import" | "interface" | "loop" | "multiline" | "multiline-binding" | "overload" | "return" | "single-line" | "single-line-binding" | "single-line-if" | "switch" | "throw" | "top-level" | "try" | "type"), ...(("*" | "binding" | "block-like" | "break" | "class" | "continue" | "control-flow" | "declaration" | "enum" | "export" | "expression" | "function" | "if" | "import" | "interface" | "loop" | "multiline" | "multiline-binding" | "overload" | "return" | "single-line" | "single-line-binding" | "single-line-if" | "switch" | "throw" | "top-level" | "try" | "type"))[]]);
21942
+ usesPrevious?: boolean;
21943
+ }[];
21944
+ }];
21945
+ // ----- small-rules/require-safety-comment-for-type-assertion -----
21946
+ type SmallRulesRequireSafetyCommentForTypeAssertion = [] | [{
21947
+ markers?: [string, ...(string)[]];
21948
+ }];
21147
21949
  // ----- small-rules/require-switch-case-braces -----
21148
21950
  type SmallRulesRequireSwitchCaseBraces = [] | [{
21149
21951
  metric?: ("lines" | "statements");
@@ -21151,12 +21953,17 @@ type SmallRulesRequireSwitchCaseBraces = [] | [{
21151
21953
  // ----- small-rules/require-throw-error-capture -----
21152
21954
  type SmallRulesRequireThrowErrorCapture = [] | [{
21153
21955
  allow?: (string | {
21154
- from?: ("file" | "library" | "package");
21155
21956
  name: (string | string[]);
21957
+ from?: ("file" | "library" | "package");
21156
21958
  package?: string;
21157
21959
  path?: string;
21158
21960
  })[];
21159
21961
  }];
21962
+ // ----- small-rules/starts-with-verb -----
21963
+ type SmallRulesStartsWithVerb = [] | [{
21964
+ allowList?: string[];
21965
+ denyList?: string[];
21966
+ }];
21160
21967
  // ----- small-rules/strict-component-boundaries -----
21161
21968
  type SmallRulesStrictComponentBoundaries = [] | [{
21162
21969
  allow?: string[];
@@ -21165,9 +21972,9 @@ type SmallRulesStrictComponentBoundaries = [] | [{
21165
21972
  // ----- small-rules/use-exhaustive-dependencies -----
21166
21973
  type SmallRulesUseExhaustiveDependencies = [] | [{
21167
21974
  hooks?: {
21975
+ name: string;
21168
21976
  closureIndex?: number;
21169
21977
  dependenciesIndex?: number;
21170
- name: string;
21171
21978
  stableResult?: (boolean | number | number[] | string[]);
21172
21979
  }[];
21173
21980
  reportMissingDependenciesArray?: boolean;
@@ -22811,6 +23618,10 @@ type TsArrayType = [] | [{
22811
23618
  default?: ("array" | "generic" | "array-simple");
22812
23619
  readonly?: ("array" | "generic" | "array-simple");
22813
23620
  }];
23621
+ // ----- ts/await-thenable -----
23622
+ type TsAwaitThenable = [] | [{
23623
+ allowMixedPromiseArrays?: boolean;
23624
+ }];
22814
23625
  // ----- ts/ban-ts-comment -----
22815
23626
  type TsBanTsComment = [] | [{
22816
23627
  minimumDescriptionLength?: number;
@@ -23383,7 +24194,9 @@ type TsNoMeaninglessVoidOperator = [] | [{
23383
24194
  }];
23384
24195
  // ----- ts/no-misused-promises -----
23385
24196
  type TsNoMisusedPromises = [] | [{
23386
- checksConditionals?: boolean;
24197
+ checksConditionals?: (boolean | {
24198
+ flagUnions?: ("all" | "strict" | "none");
24199
+ });
23387
24200
  checksSpreads?: boolean;
23388
24201
  checksVoidReturn?: (boolean | {
23389
24202
  arguments?: boolean;
@@ -27072,6 +27885,10 @@ interface OxlintNativeRuleOptions {
27072
27885
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/button-has-type.html
27073
27886
  */
27074
27887
  'react/button-has-type'?: DummyRuleMap$1['react/button-has-type'];
27888
+ /**
27889
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/capitalized-calls.html
27890
+ */
27891
+ 'react/capitalized-calls'?: DummyRuleMap$1['react/capitalized-calls'];
27075
27892
  /**
27076
27893
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/checked-requires-onchange-or-readonly.html
27077
27894
  */
@@ -27080,10 +27897,18 @@ interface OxlintNativeRuleOptions {
27080
27897
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/display-name.html
27081
27898
  */
27082
27899
  'react/display-name'?: DummyRuleMap$1['react/display-name'];
27900
+ /**
27901
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/error-boundaries.html
27902
+ */
27903
+ 'react/error-boundaries'?: DummyRuleMap$1['react/error-boundaries'];
27083
27904
  /**
27084
27905
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/exhaustive-deps.html
27085
27906
  */
27086
27907
  'react/exhaustive-deps'?: DummyRuleMap$1['react/exhaustive-deps'];
27908
+ /**
27909
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/exhaustive-effect-dependencies.html
27910
+ */
27911
+ 'react/exhaustive-effect-dependencies'?: DummyRuleMap$1['react/exhaustive-effect-dependencies'];
27087
27912
  /**
27088
27913
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/forbid-component-props.html
27089
27914
  */
@@ -27104,14 +27929,34 @@ interface OxlintNativeRuleOptions {
27104
27929
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/function-component-definition.html
27105
27930
  */
27106
27931
  'react/function-component-definition'?: DummyRuleMap$1['react/function-component-definition'];
27932
+ /**
27933
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/globals.html
27934
+ */
27935
+ 'react/globals'?: DummyRuleMap$1['react/globals'];
27107
27936
  /**
27108
27937
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/hook-use-state.html
27109
27938
  */
27110
27939
  'react/hook-use-state'?: DummyRuleMap$1['react/hook-use-state'];
27940
+ /**
27941
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/hooks.html
27942
+ */
27943
+ 'react/hooks'?: DummyRuleMap$1['react/hooks'];
27111
27944
  /**
27112
27945
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/iframe-missing-sandbox.html
27113
27946
  */
27114
27947
  'react/iframe-missing-sandbox'?: DummyRuleMap$1['react/iframe-missing-sandbox'];
27948
+ /**
27949
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/immutability.html
27950
+ */
27951
+ 'react/immutability'?: DummyRuleMap$1['react/immutability'];
27952
+ /**
27953
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/incompatible-library.html
27954
+ */
27955
+ 'react/incompatible-library'?: DummyRuleMap$1['react/incompatible-library'];
27956
+ /**
27957
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/invariant.html
27958
+ */
27959
+ 'react/invariant'?: DummyRuleMap$1['react/invariant'];
27115
27960
  /**
27116
27961
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/jsx-boolean-value.html
27117
27962
  */
@@ -27184,6 +28029,10 @@ interface OxlintNativeRuleOptions {
27184
28029
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/jsx-props-no-spreading.html
27185
28030
  */
27186
28031
  'react/jsx-props-no-spreading'?: DummyRuleMap$1['react/jsx-props-no-spreading'];
28032
+ /**
28033
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/memo-dependencies.html
28034
+ */
28035
+ 'react/memo-dependencies'?: DummyRuleMap$1['react/memo-dependencies'];
27187
28036
  /**
27188
28037
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/no-array-index-key.html
27189
28038
  */
@@ -27204,6 +28053,10 @@ interface OxlintNativeRuleOptions {
27204
28053
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/no-danger-with-children.html
27205
28054
  */
27206
28055
  'react/no-danger-with-children'?: DummyRuleMap$1['react/no-danger-with-children'];
28056
+ /**
28057
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/no-deriving-state-in-effects.html
28058
+ */
28059
+ 'react/no-deriving-state-in-effects'?: DummyRuleMap$1['react/no-deriving-state-in-effects'];
27207
28060
  /**
27208
28061
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/no-did-mount-set-state.html
27209
28062
  */
@@ -27293,17 +28146,29 @@ interface OxlintNativeRuleOptions {
27293
28146
  */
27294
28147
  'react/prefer-function-component'?: DummyRuleMap$1['react/prefer-function-component'];
27295
28148
  /**
27296
- * @see https://oxc.rs/docs/guide/usage/linter/rules/react/react-compiler.html
28149
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/preserve-manual-memoization.html
28150
+ */
28151
+ 'react/preserve-manual-memoization'?: DummyRuleMap$1['react/preserve-manual-memoization'];
28152
+ /**
28153
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/purity.html
27297
28154
  */
27298
- 'react/react-compiler'?: DummyRuleMap$1['react/react-compiler'];
28155
+ 'react/purity'?: DummyRuleMap$1['react/purity'];
27299
28156
  /**
27300
28157
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/react-in-jsx-scope.html
27301
28158
  */
27302
28159
  'react/react-in-jsx-scope'?: DummyRuleMap$1['react/react-in-jsx-scope'];
28160
+ /**
28161
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/refs.html
28162
+ */
28163
+ 'react/refs'?: DummyRuleMap$1['react/refs'];
27303
28164
  /**
27304
28165
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/require-render-return.html
27305
28166
  */
27306
28167
  'react/require-render-return'?: DummyRuleMap$1['react/require-render-return'];
28168
+ /**
28169
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/rule-suppression.html
28170
+ */
28171
+ 'react/rule-suppression'?: DummyRuleMap$1['react/rule-suppression'];
27307
28172
  /**
27308
28173
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/rules-of-hooks.html
27309
28174
  */
@@ -27312,18 +28177,50 @@ interface OxlintNativeRuleOptions {
27312
28177
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/self-closing-comp.html
27313
28178
  */
27314
28179
  'react/self-closing-comp'?: DummyRuleMap$1['react/self-closing-comp'];
28180
+ /**
28181
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/set-state-in-effect.html
28182
+ */
28183
+ 'react/set-state-in-effect'?: DummyRuleMap$1['react/set-state-in-effect'];
28184
+ /**
28185
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/set-state-in-render.html
28186
+ */
28187
+ 'react/set-state-in-render'?: DummyRuleMap$1['react/set-state-in-render'];
27315
28188
  /**
27316
28189
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/state-in-constructor.html
27317
28190
  */
27318
28191
  'react/state-in-constructor'?: DummyRuleMap$1['react/state-in-constructor'];
28192
+ /**
28193
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/static-components.html
28194
+ */
28195
+ 'react/static-components'?: DummyRuleMap$1['react/static-components'];
27319
28196
  /**
27320
28197
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/style-prop-object.html
27321
28198
  */
27322
28199
  'react/style-prop-object'?: DummyRuleMap$1['react/style-prop-object'];
28200
+ /**
28201
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/syntax.html
28202
+ */
28203
+ 'react/syntax'?: DummyRuleMap$1['react/syntax'];
28204
+ /**
28205
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/todo.html
28206
+ */
28207
+ 'react/todo'?: DummyRuleMap$1['react/todo'];
28208
+ /**
28209
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/unsupported-syntax.html
28210
+ */
28211
+ 'react/unsupported-syntax'?: DummyRuleMap$1['react/unsupported-syntax'];
28212
+ /**
28213
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/use-memo.html
28214
+ */
28215
+ 'react/use-memo'?: DummyRuleMap$1['react/use-memo'];
27323
28216
  /**
27324
28217
  * @see https://oxc.rs/docs/guide/usage/linter/rules/react/void-dom-elements-no-children.html
27325
28218
  */
27326
28219
  'react/void-dom-elements-no-children'?: DummyRuleMap$1['react/void-dom-elements-no-children'];
28220
+ /**
28221
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/react/void-use-memo.html
28222
+ */
28223
+ 'react/void-use-memo'?: DummyRuleMap$1['react/void-use-memo'];
27327
28224
  /**
27328
28225
  * @see https://oxc.rs/docs/guide/usage/linter/rules/eslint/require-await.html
27329
28226
  */
@@ -27510,6 +28407,12 @@ interface OxlintNativeRuleOptions {
27510
28407
  * @see https://oxc.rs/docs/guide/usage/linter/rules/typescript/no-for-in-array.html
27511
28408
  */
27512
28409
  'typescript/no-for-in-array'?: DummyRuleMap$1['typescript/no-for-in-array'];
28410
+ /**
28411
+ * Requires type information (`oxlint --type-aware`).
28412
+ *
28413
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/typescript/no-generated-empty-object-type.html
28414
+ */
28415
+ 'typescript/no-generated-empty-object-type'?: DummyRuleMap$1['typescript/no-generated-empty-object-type'];
27513
28416
  /**
27514
28417
  * Requires type information (`oxlint --type-aware`).
27515
28418
  *
@@ -27668,6 +28571,12 @@ interface OxlintNativeRuleOptions {
27668
28571
  * @see https://oxc.rs/docs/guide/usage/linter/rules/typescript/no-unsafe-declaration-merging.html
27669
28572
  */
27670
28573
  'typescript/no-unsafe-declaration-merging'?: DummyRuleMap$1['typescript/no-unsafe-declaration-merging'];
28574
+ /**
28575
+ * Requires type information (`oxlint --type-aware`).
28576
+ *
28577
+ * @see https://oxc.rs/docs/guide/usage/linter/rules/typescript/no-unsafe-enum-assignment.html
28578
+ */
28579
+ 'typescript/no-unsafe-enum-assignment'?: DummyRuleMap$1['typescript/no-unsafe-enum-assignment'];
27671
28580
  /**
27672
28581
  * Requires type information (`oxlint --type-aware`).
27673
28582
  *
@@ -30396,6 +31305,10 @@ interface OxlintRenamedJsPluginRuleOptions {
30396
31305
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header
30397
31306
  */
30398
31307
  'jsdoc-js/no-undefined-types'?: RuleOptions['jsdoc/no-undefined-types'];
31308
+ /**
31309
+ * Reports redundant @type tags that match or broaden the naturally inferred TypeScript type.
31310
+ */
31311
+ 'jsdoc-js/no-unnecessary-type-assertion'?: RuleOptions['jsdoc/no-unnecessary-type-assertion'];
30399
31312
  /**
30400
31313
  * Normalizes labeled links in `@see` tags to a canonical `{@link}` form.
30401
31314
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/normalize-see-links.md#repos-sticky-header
@@ -30591,6 +31504,11 @@ interface OxlintRenamedJsPluginRuleOptions {
30591
31504
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/text-escaping.md#repos-sticky-header
30592
31505
  */
30593
31506
  'jsdoc-js/text-escaping'?: RuleOptions['jsdoc/text-escaping'];
31507
+ /**
31508
+ * Disallows (or requires descriptions for) `@ts-<directive>` comments, mirroring `@typescript-eslint/ban-ts-comment`.
31509
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-ban-ts-comment.md#repos-sticky-header
31510
+ */
31511
+ 'jsdoc-js/ts-ban-ts-comment'?: RuleOptions['jsdoc/ts-ban-ts-comment'];
30594
31512
  /**
30595
31513
  * Prefers either function properties or method signatures
30596
31514
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-method-signature-style.md#repos-sticky-header