@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/index.d.mts CHANGED
@@ -446,9 +446,6 @@ interface JsoncRuleDefaults {
446
446
  "sonar/bool-param-default": {
447
447
  "*": "error";
448
448
  };
449
- "sonar/cognitive-complexity": {
450
- "*": ["warn", 15];
451
- };
452
449
  "sonar/constructor-for-side-effects": {
453
450
  "*": "error";
454
451
  };
@@ -501,9 +498,6 @@ interface JsoncRuleDefaults {
501
498
  "sonar/no-empty-collection": {
502
499
  "*": "error";
503
500
  };
504
- "sonar/no-floating-point-equality": {
505
- "*": "error";
506
- };
507
501
  "sonar/no-gratuitous-expressions": {
508
502
  "*": "off";
509
503
  };
@@ -516,9 +510,6 @@ interface JsoncRuleDefaults {
516
510
  "sonar/no-identical-functions": {
517
511
  "*": ["error", 3];
518
512
  };
519
- "sonar/no-ignored-return": {
520
- "*": "error";
521
- };
522
513
  "sonar/no-inverted-boolean-check": {
523
514
  "*": "error";
524
515
  };
@@ -844,6 +835,11 @@ interface MainRuleDefaults {
844
835
  "severityOnly": "error";
845
836
  };
846
837
  };
838
+ "flawless/cognitive-complexity": {
839
+ "*": ["warn", {
840
+ "threshold": 15;
841
+ }];
842
+ };
847
843
  "flawless/max-lines-per-function": {
848
844
  "*": ["warn", {
849
845
  "countFrom": "body";
@@ -859,17 +855,31 @@ interface MainRuleDefaults {
859
855
  "flawless/no-floating-point-equality": {
860
856
  "*": "error";
861
857
  };
858
+ "flawless/no-ignored-return": {
859
+ game_roblox: ["error", {
860
+ "pureFunctions": ["bit32", "buffer", "math", "os", "string", "table.clone", "table.create", "table.isfrozen", "utf8", "vector"];
861
+ }];
862
+ game_std: ["error", {
863
+ "pureFunctions": [];
864
+ }];
865
+ package_roblox: ["error", {
866
+ "pureFunctions": ["bit32", "buffer", "math", "os", "string", "table.clone", "table.create", "table.isfrozen", "utf8", "vector"];
867
+ }];
868
+ package_std: ["error", {
869
+ "pureFunctions": [];
870
+ }];
871
+ };
862
872
  "flawless/no-redundant-type-annotation": {
863
- "*": "error";
873
+ "*": ["error", {
874
+ "allowExpressions": false;
875
+ "checkReturnTypes": false;
876
+ }];
864
877
  };
865
878
  "flawless/prefer-parameter-destructuring": {
866
879
  "*": ["warn", {
867
880
  "allowSideEffectReordering": true;
868
881
  }];
869
882
  };
870
- "flawless/prefer-read-only-props": {
871
- "*": ["error", {}];
872
- };
873
883
  "flowtype/boolean-style": {
874
884
  "*": "off";
875
885
  };
@@ -991,6 +1001,11 @@ interface MainRuleDefaults {
991
1001
  "jsdoc/convert-to-jsdoc-comments": {
992
1002
  "*": ["warn", {
993
1003
  "allowedPrefixes": ["@ts-", "istanbul ", "c8 ", "v8 ", "eslint", "jshint", "jslint", "globals", "exported", "jscs", "oxlint-", "prettier-"];
1004
+ "contextsAfter": [];
1005
+ "contextsBeforeAndAfter": ["VariableDeclarator", "TSPropertySignature", "PropertyDefinition"];
1006
+ "enableFixer": true;
1007
+ "enforceJsdocLineStyle": "multi";
1008
+ "lineOrBlockStyle": "both";
994
1009
  }];
995
1010
  };
996
1011
  "jsdoc/empty-tags": {
@@ -2316,9 +2331,6 @@ interface MainRuleDefaults {
2316
2331
  "sonar/bool-param-default": {
2317
2332
  "*": "error";
2318
2333
  };
2319
- "sonar/cognitive-complexity": {
2320
- "*": ["warn", 15];
2321
- };
2322
2334
  "sonar/constructor-for-side-effects": {
2323
2335
  "*": "error";
2324
2336
  };
@@ -2371,9 +2383,6 @@ interface MainRuleDefaults {
2371
2383
  "sonar/no-empty-collection": {
2372
2384
  "*": "error";
2373
2385
  };
2374
- "sonar/no-floating-point-equality": {
2375
- "*": "error";
2376
- };
2377
2386
  "sonar/no-gratuitous-expressions": {
2378
2387
  "*": "off";
2379
2388
  };
@@ -2386,9 +2395,6 @@ interface MainRuleDefaults {
2386
2395
  "sonar/no-identical-functions": {
2387
2396
  "*": ["error", 3];
2388
2397
  };
2389
- "sonar/no-ignored-return": {
2390
- "*": "error";
2391
- };
2392
2398
  "sonar/no-inverted-boolean-check": {
2393
2399
  "*": "error";
2394
2400
  };
@@ -2793,18 +2799,14 @@ interface MainRuleDefaults {
2793
2799
  "style/jsx-closing-tag-location": {
2794
2800
  "*": ["off", "tag-aligned"];
2795
2801
  };
2796
- "style/jsx-curly-brace-presence": {
2797
- "*": ["error", {
2798
- "props": "never";
2799
- "children": "never";
2800
- "propElementValues": "always";
2801
- }];
2802
- };
2803
2802
  "style/jsx-curly-newline": {
2804
2803
  "*": ["off", "consistent"];
2805
2804
  };
2806
2805
  "style/jsx-curly-spacing": {
2807
- "*": ["off", "never"];
2806
+ "*": ["off", {
2807
+ "when": "never";
2808
+ "allowMultiline": true;
2809
+ }];
2808
2810
  };
2809
2811
  "style/jsx-equals-spacing": {
2810
2812
  "*": ["off", "never"];
@@ -2812,21 +2814,15 @@ interface MainRuleDefaults {
2812
2814
  "style/jsx-first-prop-new-line": {
2813
2815
  "*": ["off", "multiline-multiprop"];
2814
2816
  };
2815
- "style/jsx-function-call-newline": {
2816
- "*": ["error", "multiline"];
2817
- };
2818
2817
  "style/jsx-indent": {
2819
2818
  "*": ["off", 4];
2820
2819
  };
2821
2820
  "style/jsx-indent-props": {
2822
- "*": {
2823
- "severityOnly": "off";
2824
- };
2821
+ "*": ["off", 4];
2825
2822
  };
2826
2823
  "style/jsx-max-props-per-line": {
2827
2824
  "*": ["off", {
2828
2825
  "maximum": 1;
2829
- "when": "multiline";
2830
2826
  }];
2831
2827
  };
2832
2828
  "style/jsx-newline": {
@@ -2837,7 +2833,7 @@ interface MainRuleDefaults {
2837
2833
  };
2838
2834
  "style/jsx-one-expression-per-line": {
2839
2835
  "*": ["off", {
2840
- "allow": "single-child";
2836
+ "allow": "none";
2841
2837
  }];
2842
2838
  };
2843
2839
  "style/jsx-props-no-multi-spaces": {
@@ -2851,19 +2847,19 @@ interface MainRuleDefaults {
2851
2847
  "closingSlash": "never";
2852
2848
  "beforeSelfClosing": "always";
2853
2849
  "afterOpening": "never";
2854
- "beforeClosing": "never";
2850
+ "beforeClosing": "allow";
2855
2851
  }];
2856
2852
  };
2857
2853
  "style/jsx-wrap-multilines": {
2858
2854
  "*": ["off", {
2859
- "declaration": "parens-new-line";
2860
- "assignment": "parens-new-line";
2861
- "return": "parens-new-line";
2862
- "arrow": "parens-new-line";
2863
- "condition": "parens-new-line";
2864
- "logical": "parens-new-line";
2865
- "prop": "parens-new-line";
2866
- "propertyValue": "parens-new-line";
2855
+ "declaration": "parens";
2856
+ "assignment": "parens";
2857
+ "return": "parens";
2858
+ "arrow": "parens";
2859
+ "condition": "ignore";
2860
+ "logical": "ignore";
2861
+ "prop": "ignore";
2862
+ "propertyValue": "ignore";
2867
2863
  }];
2868
2864
  };
2869
2865
  "style/jsx/jsx-child-element-spacing": {
@@ -3414,6 +3410,9 @@ interface MainRuleDefaults {
3414
3410
  "ts/no-for-in-array": {
3415
3411
  "*": "error";
3416
3412
  };
3413
+ "ts/no-generated-empty-object-type": {
3414
+ "*": "error";
3415
+ };
3417
3416
  "ts/no-implied-eval": {
3418
3417
  "*": "error";
3419
3418
  };
@@ -3512,6 +3511,9 @@ interface MainRuleDefaults {
3512
3511
  "ts/no-unsafe-declaration-merging": {
3513
3512
  "*": "error";
3514
3513
  };
3514
+ "ts/no-unsafe-enum-assignment": {
3515
+ "*": "error";
3516
+ };
3515
3517
  "ts/no-unsafe-enum-comparison": {
3516
3518
  "*": "error";
3517
3519
  };
@@ -4734,6 +4736,11 @@ interface ReactRuleDefaults {
4734
4736
  "selector": "variable";
4735
4737
  }];
4736
4738
  };
4739
+ "flawless/no-unnecessary-prop-alias": {
4740
+ "*": ["error", {
4741
+ "reportConflicts": true;
4742
+ }];
4743
+ };
4737
4744
  "flawless/no-unnecessary-use-callback": {
4738
4745
  "*": "error";
4739
4746
  };
@@ -4743,11 +4750,16 @@ interface ReactRuleDefaults {
4743
4750
  "flawless/prefer-destructuring-assignment": {
4744
4751
  "*": "error";
4745
4752
  };
4753
+ "flawless/prefer-read-only-props": {
4754
+ "*": ["error", {}];
4755
+ };
4746
4756
  "flawless/purity": {
4747
4757
  "*": ["error", {}];
4748
4758
  };
4749
4759
  "flawless/react-namespace": {
4750
- "*": "error";
4760
+ "*": ["error", {
4761
+ "umdGlobal": false;
4762
+ }];
4751
4763
  };
4752
4764
  "one-var": {
4753
4765
  "*": ["off", {
@@ -4974,12 +4986,61 @@ interface ReactRuleDefaults {
4974
4986
  "small-rules/react-hooks-strict-return": {
4975
4987
  "*": "error";
4976
4988
  };
4989
+ "style/jsx-curly-brace-presence": {
4990
+ "*": ["error", {
4991
+ "props": "never";
4992
+ "children": "never";
4993
+ "propElementValues": "always";
4994
+ }];
4995
+ };
4996
+ "style/jsx-curly-spacing": {
4997
+ "*": ["off", "never"];
4998
+ };
4999
+ "style/jsx-function-call-newline": {
5000
+ "*": ["error", "multiline"];
5001
+ };
5002
+ "style/jsx-indent-props": {
5003
+ "*": {
5004
+ "severityOnly": "off";
5005
+ };
5006
+ };
5007
+ "style/jsx-max-props-per-line": {
5008
+ "*": ["off", {
5009
+ "maximum": 1;
5010
+ "when": "multiline";
5011
+ }];
5012
+ };
5013
+ "style/jsx-one-expression-per-line": {
5014
+ "*": ["off", {
5015
+ "allow": "single-child";
5016
+ }];
5017
+ };
4977
5018
  "style/jsx-self-closing-comp": {
4978
5019
  "*": ["error", {
4979
5020
  "component": true;
4980
5021
  "html": true;
4981
5022
  }];
4982
5023
  };
5024
+ "style/jsx-tag-spacing": {
5025
+ "*": ["off", {
5026
+ "closingSlash": "never";
5027
+ "beforeSelfClosing": "always";
5028
+ "afterOpening": "never";
5029
+ "beforeClosing": "never";
5030
+ }];
5031
+ };
5032
+ "style/jsx-wrap-multilines": {
5033
+ "*": ["off", {
5034
+ "declaration": "parens-new-line";
5035
+ "assignment": "parens-new-line";
5036
+ "return": "parens-new-line";
5037
+ "arrow": "parens-new-line";
5038
+ "condition": "parens-new-line";
5039
+ "logical": "parens-new-line";
5040
+ "prop": "parens-new-line";
5041
+ "propertyValue": "parens-new-line";
5042
+ }];
5043
+ };
4983
5044
  }
4984
5045
  interface SourceFeatureRuleDefaults {
4985
5046
  "eslint-plugin/consistent-output": {
@@ -5310,6 +5371,9 @@ interface TestRuleDefaults {
5310
5371
  "allowOptionalChaining": false;
5311
5372
  }];
5312
5373
  };
5374
+ "flawless/no-incompatible-assertion-types": {
5375
+ "*": "error";
5376
+ };
5313
5377
  "flawless/no-shared-mocks": {
5314
5378
  "*": "error";
5315
5379
  };
@@ -5520,9 +5584,6 @@ interface TestRuleDefaults {
5520
5584
  "ignoreStrings": "Not implemented";
5521
5585
  }];
5522
5586
  };
5523
- "sonar/no-incompatible-assertion-types": {
5524
- "*": "error";
5525
- };
5526
5587
  "sonar/no-mixed-completion-style": {
5527
5588
  "*": "error";
5528
5589
  };
@@ -5916,9 +5977,6 @@ interface TomlRuleDefaults {
5916
5977
  "sonar/bool-param-default": {
5917
5978
  "*": "error";
5918
5979
  };
5919
- "sonar/cognitive-complexity": {
5920
- "*": ["warn", 15];
5921
- };
5922
5980
  "sonar/constructor-for-side-effects": {
5923
5981
  "*": "error";
5924
5982
  };
@@ -5971,9 +6029,6 @@ interface TomlRuleDefaults {
5971
6029
  "sonar/no-empty-collection": {
5972
6030
  "*": "error";
5973
6031
  };
5974
- "sonar/no-floating-point-equality": {
5975
- "*": "error";
5976
- };
5977
6032
  "sonar/no-gratuitous-expressions": {
5978
6033
  "*": "off";
5979
6034
  };
@@ -5986,9 +6041,6 @@ interface TomlRuleDefaults {
5986
6041
  "sonar/no-identical-functions": {
5987
6042
  "*": ["error", 3];
5988
6043
  };
5989
- "sonar/no-ignored-return": {
5990
- "*": "error";
5991
- };
5992
6044
  "sonar/no-inverted-boolean-check": {
5993
6045
  "*": "error";
5994
6046
  };
@@ -6228,9 +6280,6 @@ interface YamlRuleDefaults {
6228
6280
  "sonar/bool-param-default": {
6229
6281
  "*": "error";
6230
6282
  };
6231
- "sonar/cognitive-complexity": {
6232
- "*": ["warn", 15];
6233
- };
6234
6283
  "sonar/constructor-for-side-effects": {
6235
6284
  "*": "error";
6236
6285
  };
@@ -6283,9 +6332,6 @@ interface YamlRuleDefaults {
6283
6332
  "sonar/no-empty-collection": {
6284
6333
  "*": "error";
6285
6334
  };
6286
- "sonar/no-floating-point-equality": {
6287
- "*": "error";
6288
- };
6289
6335
  "sonar/no-gratuitous-expressions": {
6290
6336
  "*": "off";
6291
6337
  };
@@ -6298,9 +6344,6 @@ interface YamlRuleDefaults {
6298
6344
  "sonar/no-identical-functions": {
6299
6345
  "*": ["error", 3];
6300
6346
  };
6301
- "sonar/no-ignored-return": {
6302
- "*": "error";
6303
- };
6304
6347
  "sonar/no-inverted-boolean-check": {
6305
6348
  "*": "error";
6306
6349
  };
@@ -6374,6 +6417,11 @@ interface YamlRuleDefaults {
6374
6417
  "sonar/use-type-alias": {
6375
6418
  "*": "error";
6376
6419
  };
6420
+ "style/max-len": {
6421
+ "*": {
6422
+ "severityOnly": "error";
6423
+ };
6424
+ };
6377
6425
  "style/multiline-comment-style": {
6378
6426
  "*": ["error", "separate-lines"];
6379
6427
  };
@@ -6496,7 +6544,7 @@ interface OverrideSiteChains {
6496
6544
  type TestChain = [TestRuleDefaults, SourceFeatureRuleDefaults, MainRuleDefaults];
6497
6545
  type ValidateOptionsWith<O, VK extends VariantKey> = ValidateSite<O, "rules", MainChain, VK> & ValidateSubOptionsFromTable<O, OverrideSiteChains, VK> & ValidateTestOption<O, TestChain, VK>;
6498
6546
  //#endregion
6499
- //#region ../../../setup-pnpm/node_modules/.bin/store/v11/links/@/eslint-config-flat-gitignore/2.3.0/48bee61dfbd6416cb227d1c477eb8990bf234fa634e4ccd62a9520a90cc26602/node_modules/eslint-config-flat-gitignore/dist/index.d.mts
6547
+ //#region ../../../setup-pnpm/node_modules/.bin/store/v11/links/@/eslint-config-flat-gitignore/2.3.0/f307e164f36f43b448a8ceebca34f679d5f323ee99520236b96e9853454ef176/node_modules/eslint-config-flat-gitignore/dist/index.d.mts
6500
6548
  interface FlatGitignoreOptions {
6501
6549
  /**
6502
6550
  * Name of the configuration.
@@ -7169,184 +7217,224 @@ interface RuleOptions {
7169
7217
  'eslint-plugin/unique-test-case-names'?: Linter.RuleEntry<[]>;
7170
7218
  /**
7171
7219
  * Enforce arrow function return style based on line length
7172
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/arrow-return-style/documentation.md
7220
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/arrow-return-style/documentation.md
7173
7221
  */
7174
7222
  'flawless/arrow-return-style'?: Linter.RuleEntry<FlawlessArrowReturnStyle>;
7223
+ /**
7224
+ * Limit the Cognitive Complexity of each function
7225
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/cognitive-complexity/documentation.md
7226
+ */
7227
+ 'flawless/cognitive-complexity'?: Linter.RuleEntry<FlawlessCognitiveComplexity>;
7175
7228
  /**
7176
7229
  * Disallow shorthand boolean JSX attributes
7177
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/jsx-shorthand-boolean/documentation.md
7230
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/jsx-shorthand-boolean/documentation.md
7178
7231
  */
7179
7232
  'flawless/jsx-shorthand-boolean'?: Linter.RuleEntry<[]>;
7180
7233
  /**
7181
7234
  * Enforce a consistent fragment form: the shorthand `<>...</>` or a named fragment
7182
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/jsx-shorthand-fragment/documentation.md
7235
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/jsx-shorthand-fragment/documentation.md
7183
7236
  */
7184
7237
  'flawless/jsx-shorthand-fragment'?: Linter.RuleEntry<FlawlessJsxShorthandFragment>;
7238
+ /**
7239
+ * Limit comments by word count
7240
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/max-comment-length/documentation.md
7241
+ */
7242
+ 'flawless/max-comment-length'?: Linter.RuleEntry<FlawlessMaxCommentLength>;
7185
7243
  /**
7186
7244
  * Enforce a maximum number of lines of code in a function
7187
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/max-lines-per-function/documentation.md
7245
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/max-lines-per-function/documentation.md
7188
7246
  */
7189
7247
  'flawless/max-lines-per-function'?: Linter.RuleEntry<FlawlessMaxLinesPerFunction>;
7190
7248
  /**
7191
7249
  * Enforce naming conventions for everything across a codebase
7192
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/naming-convention/documentation.md
7250
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/naming-convention/documentation.md
7193
7251
  */
7194
7252
  'flawless/naming-convention'?: Linter.RuleEntry<FlawlessNamingConvention>;
7195
7253
  /**
7196
7254
  * Disallow conditional empty-object spreads
7197
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-conditional-empty-object-spread/documentation.md
7255
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-conditional-empty-object-spread/documentation.md
7198
7256
  */
7199
7257
  'flawless/no-conditional-empty-object-spread'?: Linter.RuleEntry<[]>;
7200
7258
  /**
7201
7259
  * Disallow conditional logic in tests
7202
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-conditional-in-test/documentation.md
7260
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-conditional-in-test/documentation.md
7203
7261
  */
7204
7262
  'flawless/no-conditional-in-test'?: Linter.RuleEntry<FlawlessNoConditionalInTest>;
7263
+ /**
7264
+ * Disallow em dashes in comments, strings, JSX text, and Markdown prose
7265
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-em-dash/documentation.md
7266
+ */
7267
+ 'flawless/no-em-dash'?: Linter.RuleEntry<[]>;
7205
7268
  /**
7206
7269
  * Disallow anonymous arrow functions as export default declarations
7207
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-export-default-arrow/documentation.md
7270
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-export-default-arrow/documentation.md
7208
7271
  */
7209
7272
  'flawless/no-export-default-arrow'?: Linter.RuleEntry<[]>;
7210
7273
  /**
7211
7274
  * Disallow exact equality checks involving floating-point-sensitive values
7212
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-floating-point-equality/documentation.md
7275
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-floating-point-equality/documentation.md
7213
7276
  */
7214
7277
  'flawless/no-floating-point-equality'?: Linter.RuleEntry<[]>;
7278
+ /**
7279
+ * Disallow ignoring the result of a built-in method that has no side effects
7280
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-ignored-return/documentation.md
7281
+ */
7282
+ 'flawless/no-ignored-return'?: Linter.RuleEntry<FlawlessNoIgnoredReturn>;
7283
+ /**
7284
+ * Disallow equality assertions whose operands have types that can never be equal
7285
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-incompatible-assertion-types/documentation.md
7286
+ */
7287
+ 'flawless/no-incompatible-assertion-types'?: Linter.RuleEntry<[]>;
7215
7288
  /**
7216
7289
  * Disallow syntactically established values from flowing into explicitly broad or anonymous target types that discard useful evidence
7217
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-known-value-widening/documentation.md
7290
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-known-value-widening/documentation.md
7218
7291
  */
7219
7292
  'flawless/no-known-value-widening'?: Linter.RuleEntry<[]>;
7220
7293
  /**
7221
7294
  * Disallow copying an iterable into an array only to `filter` or `map` it
7222
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-materialized-filter-map/documentation.md
7295
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-materialized-filter-map/documentation.md
7223
7296
  */
7224
7297
  'flawless/no-materialized-filter-map'?: Linter.RuleEntry<FlawlessNoMaterializedFilterMap>;
7225
7298
  /**
7226
7299
  * Disallow function parameters that accept any object shape
7227
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-object-parameters/documentation.md
7300
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-object-parameters/documentation.md
7228
7301
  */
7229
7302
  'flawless/no-object-parameters'?: Linter.RuleEntry<[]>;
7230
7303
  /**
7231
7304
  * Disallow tsconfig options that redundantly re-set a value already provided by an extended config
7232
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-redundant-tsconfig-options/documentation.md
7305
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-redundant-tsconfig-options/documentation.md
7233
7306
  */
7234
7307
  'flawless/no-redundant-tsconfig-options'?: Linter.RuleEntry<[]>;
7235
7308
  /**
7236
7309
  * Disallow type annotations that restate the initializer's own type
7237
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-redundant-type-annotation/documentation.md
7310
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-redundant-type-annotation/documentation.md
7238
7311
  */
7239
- 'flawless/no-redundant-type-annotation'?: Linter.RuleEntry<[]>;
7312
+ 'flawless/no-redundant-type-annotation'?: Linter.RuleEntry<FlawlessNoRedundantTypeAnnotation>;
7240
7313
  /**
7241
7314
  * Disallow the two-argument `Reflect.get` in favour of typed property access
7242
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-reflect-get/documentation.md
7315
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-reflect-get/documentation.md
7243
7316
  */
7244
7317
  'flawless/no-reflect-get'?: Linter.RuleEntry<[]>;
7245
7318
  /**
7246
7319
  * Disallow `Reflect.set` with a compile-time-fixed key in favour of a plain assignment
7247
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-reflect-set/documentation.md
7320
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-reflect-set/documentation.md
7248
7321
  */
7249
7322
  'flawless/no-reflect-set'?: Linter.RuleEntry<[]>;
7250
7323
  /**
7251
7324
  * Disallow the term 'shape' in declared symbol names
7252
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-shape-in-symbol-names/documentation.md
7325
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-shape-in-symbol-names/documentation.md
7253
7326
  */
7254
7327
  'flawless/no-shape-in-symbol-names'?: Linter.RuleEntry<[]>;
7255
7328
  /**
7256
7329
  * Disallow mocks created once and shared between tests
7257
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-shared-mocks/documentation.md
7330
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-shared-mocks/documentation.md
7258
7331
  */
7259
7332
  'flawless/no-shared-mocks'?: Linter.RuleEntry<[]>;
7260
7333
  /**
7261
7334
  * Disallow state declared outside tests and written inside them
7262
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-shared-test-state/documentation.md
7335
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-shared-test-state/documentation.md
7263
7336
  */
7264
7337
  'flawless/no-shared-test-state'?: Linter.RuleEntry<FlawlessNoSharedTestState>;
7338
+ /**
7339
+ * Disallow rarely used top-level functions that only forward their parameters or read a parameter's property
7340
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-trivial-functions/documentation.md
7341
+ */
7342
+ 'flawless/no-trivial-functions'?: Linter.RuleEntry<FlawlessNoTrivialFunctions>;
7265
7343
  /**
7266
7344
  * Disallow `unknown` function parameters outside type-predicate subjects and recorded error causes
7267
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-unknown-parameters/documentation.md
7345
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unknown-parameters/documentation.md
7268
7346
  */
7269
7347
  'flawless/no-unknown-parameters'?: Linter.RuleEntry<[]>;
7270
7348
  /**
7271
7349
  * Disallow explicit return type annotations that resolve to `unknown`
7272
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-unknown-returns/documentation.md
7350
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unknown-returns/documentation.md
7273
7351
  */
7274
7352
  'flawless/no-unknown-returns'?: Linter.RuleEntry<[]>;
7353
+ /**
7354
+ * Disallow unnecessary aliases when destructuring component props
7355
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unnecessary-prop-alias/documentation.md
7356
+ */
7357
+ 'flawless/no-unnecessary-prop-alias'?: Linter.RuleEntry<FlawlessNoUnnecessaryPropAlias>;
7275
7358
  /**
7276
7359
  * Disallow unnecessary usage of 'useCallback'
7277
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-unnecessary-use-callback/documentation.md
7360
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unnecessary-use-callback/documentation.md
7278
7361
  */
7279
7362
  'flawless/no-unnecessary-use-callback'?: Linter.RuleEntry<[]>;
7280
7363
  /**
7281
7364
  * Disallow unnecessary usage of 'useMemo'
7282
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-unnecessary-use-memo/documentation.md
7365
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unnecessary-use-memo/documentation.md
7283
7366
  */
7284
7367
  'flawless/no-unnecessary-use-memo'?: Linter.RuleEntry<[]>;
7285
7368
  /**
7286
7369
  * Disallow unsafe object dictionary value types
7287
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/no-unsafe-dictionary-type/documentation.md
7370
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/no-unsafe-dictionary-type/documentation.md
7288
7371
  */
7289
7372
  'flawless/no-unsafe-dictionary-type'?: Linter.RuleEntry<[]>;
7290
7373
  /**
7291
7374
  * Enforce a blank line after `expect.assertions` and `expect.hasAssertions`
7292
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/padding-after-expect-assertions/documentation.md
7375
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/padding-after-expect-assertions/documentation.md
7293
7376
  */
7294
7377
  'flawless/padding-after-expect-assertions'?: Linter.RuleEntry<[]>;
7295
7378
  /**
7296
7379
  * Enforce destructuring assignment for component props
7297
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-destructuring-assignment/documentation.md
7380
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-destructuring-assignment/documentation.md
7298
7381
  */
7299
7382
  'flawless/prefer-destructuring-assignment'?: Linter.RuleEntry<[]>;
7300
7383
  /**
7301
7384
  * Prefer having the last statement in a test be an assertion
7302
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-ending-with-an-expect/documentation.md
7385
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-ending-with-an-expect/documentation.md
7303
7386
  */
7304
7387
  'flawless/prefer-ending-with-an-expect'?: Linter.RuleEntry<FlawlessPreferEndingWithAnExpect>;
7305
7388
  /**
7306
7389
  * Prefer `expect.assertions(<count>)` over `expect.hasAssertions()`
7307
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-expect-assertions-count/documentation.md
7390
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-expect-assertions-count/documentation.md
7308
7391
  */
7309
7392
  'flawless/prefer-expect-assertions-count'?: Linter.RuleEntry<[]>;
7310
7393
  /**
7311
7394
  * Prefer `mockThrow` / `mockThrowOnce` over a mock implementation that only throws
7312
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-mock-throw/documentation.md
7395
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-mock-throw/documentation.md
7313
7396
  */
7314
7397
  'flawless/prefer-mock-throw'?: Linter.RuleEntry<[]>;
7315
7398
  /**
7316
7399
  * Enforce destructuring parameters in the function signature
7317
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-parameter-destructuring/documentation.md
7400
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-parameter-destructuring/documentation.md
7318
7401
  */
7319
7402
  'flawless/prefer-parameter-destructuring'?: Linter.RuleEntry<FlawlessPreferParameterDestructuring>;
7320
7403
  /**
7321
7404
  * Enforce that function component props are read-only
7322
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-read-only-props/documentation.md
7405
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-read-only-props/documentation.md
7323
7406
  */
7324
7407
  'flawless/prefer-read-only-props'?: Linter.RuleEntry<FlawlessPreferReadOnlyProps>;
7325
7408
  /**
7326
7409
  * Prefer test-bound Vitest APIs from the local test context
7327
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/prefer-vitest-local-context/documentation.md
7410
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/prefer-vitest-local-context/documentation.md
7328
7411
  */
7329
7412
  'flawless/prefer-vitest-local-context'?: Linter.RuleEntry<FlawlessPreferVitestLocalContext>;
7330
7413
  /**
7331
7414
  * Disallow impure calls such as `math.random` or `os.clock` during render
7332
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/purity/documentation.md
7415
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/purity/documentation.md
7333
7416
  */
7334
7417
  'flawless/purity'?: Linter.RuleEntry<FlawlessPurity>;
7335
7418
  /**
7336
7419
  * Prefer named imports for React runtime values and the React namespace for React types
7337
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/react-namespace/documentation.md
7420
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/react-namespace/documentation.md
7338
7421
  */
7339
- 'flawless/react-namespace'?: Linter.RuleEntry<[]>;
7422
+ 'flawless/react-namespace'?: Linter.RuleEntry<FlawlessReactNamespace>;
7340
7423
  /**
7341
7424
  * Enforce a configured sort order for TOML keys and tables
7342
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/toml-sort-keys/documentation.md
7425
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/toml-sort-keys/documentation.md
7343
7426
  */
7344
7427
  'flawless/toml-sort-keys'?: Linter.RuleEntry<FlawlessTomlSortKeys>;
7345
7428
  /**
7346
7429
  * Enforce blank lines around top-level YAML block collection keys
7347
- * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.14.1/src/rules/yaml-block-key-blank-lines/documentation.md
7430
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/yaml-block-key-blank-lines/documentation.md
7348
7431
  */
7349
7432
  'flawless/yaml-block-key-blank-lines'?: Linter.RuleEntry<[]>;
7433
+ /**
7434
+ * Enforce sorted YAML sequences of mappings by a key
7435
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.2/src/rules/yaml-sort-sequence-by-key/documentation.md
7436
+ */
7437
+ 'flawless/yaml-sort-sequence-by-key'?: Linter.RuleEntry<FlawlessYamlSortSequenceByKey>;
7350
7438
  /**
7351
7439
  * Enforce `for` loop update clause moving the counter in the right direction
7352
7440
  * @see https://eslint.org/docs/latest/rules/for-direction
@@ -7930,7 +8018,7 @@ interface RuleOptions {
7930
8018
  * Reports against syntax not valid for the mode (e.g., Google Closure Compiler in non-Closure mode).
7931
8019
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-syntax.md#repos-sticky-header
7932
8020
  */
7933
- 'jsdoc/check-syntax'?: Linter.RuleEntry<[]>;
8021
+ 'jsdoc/check-syntax'?: Linter.RuleEntry<JsdocCheckSyntax>;
7934
8022
  /**
7935
8023
  * Reports invalid block tag names.
7936
8024
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-tag-names.md#repos-sticky-header
@@ -8046,6 +8134,10 @@ interface RuleOptions {
8046
8134
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header
8047
8135
  */
8048
8136
  'jsdoc/no-undefined-types'?: Linter.RuleEntry<JsdocNoUndefinedTypes>;
8137
+ /**
8138
+ * Reports redundant @type tags that match or broaden the naturally inferred TypeScript type.
8139
+ */
8140
+ 'jsdoc/no-unnecessary-type-assertion'?: Linter.RuleEntry<JsdocNoUnnecessaryTypeAssertion>;
8049
8141
  /**
8050
8142
  * Normalizes labeled links in `@see` tags to a canonical `{@link}` form.
8051
8143
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/normalize-see-links.md#repos-sticky-header
@@ -8241,6 +8333,11 @@ interface RuleOptions {
8241
8333
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/text-escaping.md#repos-sticky-header
8242
8334
  */
8243
8335
  'jsdoc/text-escaping'?: Linter.RuleEntry<JsdocTextEscaping>;
8336
+ /**
8337
+ * Disallows (or requires descriptions for) `@ts-<directive>` comments, mirroring `@typescript-eslint/ban-ts-comment`.
8338
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-ban-ts-comment.md#repos-sticky-header
8339
+ */
8340
+ 'jsdoc/ts-ban-ts-comment'?: Linter.RuleEntry<JsdocTsBanTsComment>;
8244
8341
  /**
8245
8342
  * Prefers either function properties or method signatures
8246
8343
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-method-signature-style.md#repos-sticky-header
@@ -10323,6 +10420,11 @@ interface RuleOptions {
10323
10420
  * @see https://perfectionist.dev/rules/sort-classes
10324
10421
  */
10325
10422
  'perfectionist/sort-classes'?: Linter.RuleEntry<PerfectionistSortClasses>;
10423
+ /**
10424
+ * Enforce sorted constructor parameters.
10425
+ * @see https://perfectionist.dev/rules/sort-constructor-parameters
10426
+ */
10427
+ 'perfectionist/sort-constructor-parameters'?: Linter.RuleEntry<PerfectionistSortConstructorParameters>;
10326
10428
  /**
10327
10429
  * Enforce sorted decorators.
10328
10430
  * @see https://perfectionist.dev/rules/sort-decorators
@@ -11172,9 +11274,14 @@ interface RuleOptions {
11172
11274
  'small-rules/ban-types'?: Linter.RuleEntry<SmallRulesBanTypes>;
11173
11275
  /**
11174
11276
  * Enforce consistent spelling of compound words in identifiers.
11175
- * @see https://docs.howmanysmall.com/small-rules/rules/naming/consistent-compound-words/
11277
+ * @see https://docs.howmanysmall.com/small-rules/rules/english/consistent-compound-words/
11176
11278
  */
11177
11279
  'small-rules/consistent-compound-words'?: Linter.RuleEntry<SmallRulesConsistentCompoundWords>;
11280
+ /**
11281
+ * 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.
11282
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/curly/
11283
+ */
11284
+ 'small-rules/curly'?: Linter.RuleEntry<SmallRulesCurly>;
11178
11285
  /**
11179
11286
  * Require a matching enable comment for every `oxlint-disable` or `eslint-disable` block directive.
11180
11287
  * @see https://docs.howmanysmall.com/small-rules/rules/general/directive-disable-enable-pair/
@@ -11230,6 +11337,11 @@ interface RuleOptions {
11230
11337
  * @see https://docs.howmanysmall.com/small-rules/rules/react/memoized-effect-dependencies/
11231
11338
  */
11232
11339
  'small-rules/memoized-effect-dependencies'?: Linter.RuleEntry<SmallRulesMemoizedEffectDependencies>;
11340
+ /**
11341
+ * Disallow adjusting state in an effect when a prop changes.
11342
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-adjust-state-on-prop-change/
11343
+ */
11344
+ 'small-rules/no-adjust-state-on-prop-change'?: Linter.RuleEntry<SmallRulesNoAdjustStateOnPropChange>;
11233
11345
  /**
11234
11346
  * Disallow array constructor element forms and enforce roblox-ts-aware constructor patterns.
11235
11347
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-array-constructor-elements/
@@ -11260,6 +11372,21 @@ interface RuleOptions {
11260
11372
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-cascading-set-state/
11261
11373
  */
11262
11374
  'small-rules/no-cascading-set-state'?: Linter.RuleEntry<[]>;
11375
+ /**
11376
+ * Disallow chaining state changes in an effect.
11377
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-chain-state-updates/
11378
+ */
11379
+ 'small-rules/no-chain-state-updates'?: Linter.RuleEntry<SmallRulesNoChainStateUpdates>;
11380
+ /**
11381
+ * Disallow chained TypeScript as and angle-bracket assertions, including parenthesized chains.
11382
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-chained-type-assertions/
11383
+ */
11384
+ 'small-rules/no-chained-type-assertions'?: Linter.RuleEntry<SmallRulesNoChainedTypeAssertions>;
11385
+ /**
11386
+ * Disallow Cliffy `.action` handlers that only forward their arguments to another function.
11387
+ * @see https://docs.howmanysmall.com/small-rules/rules/cliffy/no-cliffy-action-wrapper/
11388
+ */
11389
+ 'small-rules/no-cliffy-action-wrapper'?: Linter.RuleEntry<SmallRulesNoCliffyActionWrapper>;
11263
11390
  /**
11264
11391
  * Ban new Color3(...) except new Color3() or new Color3(0, 0, 0). Use Color3.fromRGB() instead.
11265
11392
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-color3-constructor/
@@ -11270,6 +11397,11 @@ interface RuleOptions {
11270
11397
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-commented-code/
11271
11398
  */
11272
11399
  'small-rules/no-commented-code'?: Linter.RuleEntry<SmallRulesNoCommentedCode>;
11400
+ /**
11401
+ * Disallow object spreads that conditionally spread an empty object to omit fields.
11402
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-conditional-empty-object-spread/
11403
+ */
11404
+ 'small-rules/no-conditional-empty-object-spread'?: Linter.RuleEntry<[]>;
11273
11405
  /**
11274
11406
  * Disallow constant conditions, but allow constant loops that include loop exits such as break, return, or configured calls.
11275
11407
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-constant-condition-with-break/
@@ -11280,18 +11412,38 @@ interface RuleOptions {
11280
11412
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-dead-store/
11281
11413
  */
11282
11414
  'small-rules/no-dead-store'?: Linter.RuleEntry<[]>;
11415
+ /**
11416
+ * Disallow storing derived state in an effect.
11417
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-derived-state/
11418
+ */
11419
+ 'small-rules/no-derived-state'?: Linter.RuleEntry<SmallRulesNoDerivedState>;
11420
+ /**
11421
+ * Warn when a Promise rejection handler explicitly discards the failure and resolves to undefined.
11422
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-discarded-rejection/
11423
+ */
11424
+ 'small-rules/no-discarded-rejection'?: Linter.RuleEntry<[]>;
11283
11425
  /**
11284
11426
  * Use throw instead of error().
11285
11427
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-error/
11286
11428
  */
11287
11429
  'small-rules/no-error'?: Linter.RuleEntry<[]>;
11430
+ /**
11431
+ * Disallow using state and an effect as an event handler.
11432
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-event-handler/
11433
+ */
11434
+ 'small-rules/no-event-handler'?: Linter.RuleEntry<SmallRulesNoEventHandler>;
11288
11435
  /**
11289
11436
  * Disallow sending Events back to the same player inside an Events.connect callback; use Functions for request/response.
11290
11437
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-events-in-events-callback/
11291
11438
  */
11292
11439
  'small-rules/no-events-in-events-callback'?: Linter.RuleEntry<SmallRulesNoEventsInEventsCallback>;
11293
11440
  /**
11294
- * Disallow map(...) directly after filter(...).
11441
+ * Disallow subscribing to an external store in an effect.
11442
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-external-store-subscription/
11443
+ */
11444
+ 'small-rules/no-external-store-subscription'?: Linter.RuleEntry<SmallRulesNoExternalStoreSubscription>;
11445
+ /**
11446
+ * Disallow `Array.prototype.map(...)` directly after `Array.prototype.filter(...)`.
11295
11447
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-filter-map-chain/
11296
11448
  */
11297
11449
  'small-rules/no-filter-map-chain'?: Linter.RuleEntry<[]>;
@@ -11310,6 +11462,11 @@ interface RuleOptions {
11310
11462
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-god-components/
11311
11463
  */
11312
11464
  'small-rules/no-god-components'?: Linter.RuleEntry<SmallRulesNoGodComponents>;
11465
+ /**
11466
+ * Disallow redundant Jecs World.has guards around World.remove calls.
11467
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/jecs/no-has-before-remove-in-jecs/
11468
+ */
11469
+ 'small-rules/no-has-before-remove-in-jecs'?: Linter.RuleEntry<[]>;
11313
11470
  /**
11314
11471
  * Disallow Ianitor validator creation inside function bodies. Hoist to module scope to avoid recreating validators on every call.
11315
11472
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-ianitor-in-function-body/
@@ -11321,7 +11478,7 @@ interface RuleOptions {
11321
11478
  */
11322
11479
  'small-rules/no-ianitor-success-access'?: Linter.RuleEntry<[]>;
11323
11480
  /**
11324
- * Disallow pointless identity `.map()` calls that return the parameter unchanged
11481
+ * Disallow pointless identity `Array.prototype.map()` calls that return the parameter unchanged
11325
11482
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-identity-map/
11326
11483
  */
11327
11484
  'small-rules/no-identity-map'?: Linter.RuleEntry<SmallRulesNoIdentityMap>;
@@ -11330,56 +11487,146 @@ interface RuleOptions {
11330
11487
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-increment-decrement/
11331
11488
  */
11332
11489
  'small-rules/no-increment-decrement'?: Linter.RuleEntry<SmallRulesNoIncrementDecrement>;
11490
+ /**
11491
+ * Disallow initializing state in an effect.
11492
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-initialize-state/
11493
+ */
11494
+ 'small-rules/no-initialize-state'?: Linter.RuleEntry<SmallRulesNoInitializeState>;
11333
11495
  /**
11334
11496
  * Prevent inline properties from being passed to memoized components.
11335
11497
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-inline-property-on-memo-component/
11336
11498
  */
11337
11499
  'small-rules/no-inline-property-on-memo-component'?: Linter.RuleEntry<[]>;
11500
+ /**
11501
+ * Disallow inline object types in parameter and return type annotations; declare a named interface instead.
11502
+ * @see https://docs.howmanysmall.com/small-rules/rules/naming/no-inline-signature-types/
11503
+ */
11504
+ 'small-rules/no-inline-signature-types'?: Linter.RuleEntry<SmallRulesNoInlineSignatureTypes>;
11338
11505
  /**
11339
11506
  * Detect instance methods that do not use 'this' and suggest converting them to standalone functions for better performance in roblox-ts.
11340
11507
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-instance-methods-without-this/
11341
11508
  */
11342
11509
  'small-rules/no-instance-methods-without-this'?: Linter.RuleEntry<SmallRulesNoInstanceMethodsWithoutThis>;
11510
+ /**
11511
+ * Disallow a spread in JSX child position.
11512
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-jsx-spread-child/
11513
+ */
11514
+ 'small-rules/no-jsx-spread-child'?: Linter.RuleEntry<[]>;
11515
+ /**
11516
+ * Disallow syntactically established values from flowing into explicitly broad or anonymous target types that discard useful evidence.
11517
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-known-value-widening/
11518
+ */
11519
+ 'small-rules/no-known-value-widening'?: Linter.RuleEntry<[]>;
11343
11520
  /**
11344
11521
  * Disallow mutating a loop iterable during iteration.
11345
11522
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-loop-iterable-mutation/
11346
11523
  */
11347
11524
  'small-rules/no-loop-iterable-mutation'?: Linter.RuleEntry<[]>;
11525
+ /**
11526
+ * Disallow Vitest and Jest module mocking; tests must replace dependencies through real interfaces.
11527
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-module-mocking/
11528
+ */
11529
+ 'small-rules/no-module-mocking'?: Linter.RuleEntry<[]>;
11530
+ /**
11531
+ * Disallow defining more than one Cliffy command in a file.
11532
+ * @see https://docs.howmanysmall.com/small-rules/rules/cliffy/no-multiple-cliffy-commands/
11533
+ */
11534
+ 'small-rules/no-multiple-cliffy-commands'?: Linter.RuleEntry<SmallRulesNoMultipleCliffyCommands>;
11348
11535
  /**
11349
11536
  * 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.
11350
11537
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-native-properties-spread/
11351
11538
  */
11352
11539
  'small-rules/no-native-properties-spread'?: Linter.RuleEntry<[]>;
11540
+ /**
11541
+ * Disallow nesting a hook call inside another hook call.
11542
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-nested-hook-calls/
11543
+ */
11544
+ 'small-rules/no-nested-hook-calls'?: Linter.RuleEntry<[]>;
11353
11545
  /**
11354
11546
  * Disallow configured constructor calls (default: new Instance) inside React useMemo callbacks.
11355
11547
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-new-instance-in-use-memo/
11356
11548
  */
11357
11549
  'small-rules/no-new-instance-in-use-memo'?: Linter.RuleEntry<SmallRulesNoNewInstanceInUseMemo>;
11550
+ /**
11551
+ * Disallow object function parameters; inputs must use an owner-provided type and be parsed at their boundary.
11552
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-object-parameters/
11553
+ */
11554
+ 'small-rules/no-object-parameters'?: Linter.RuleEntry<[]>;
11555
+ /**
11556
+ * Disallow passing data to parents in an effect.
11557
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-pass-data-to-parent/
11558
+ */
11559
+ 'small-rules/no-pass-data-to-parent'?: Linter.RuleEntry<SmallRulesNoPassDataToParent>;
11560
+ /**
11561
+ * Disallow passing live state to parents in an effect.
11562
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-pass-live-state-to-parent/
11563
+ */
11564
+ 'small-rules/no-pass-live-state-to-parent'?: Linter.RuleEntry<SmallRulesNoPassLiveStateToParent>;
11358
11565
  /**
11359
11566
  * Use Log instead of print().
11360
11567
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-print/
11361
11568
  */
11362
11569
  'small-rules/no-print'?: Linter.RuleEntry<[]>;
11570
+ /**
11571
+ * Disallow real temp directories (`os.tmpdir`, `fs.mkdtemp`) in unit tests.
11572
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-real-temporary-directory/
11573
+ */
11574
+ 'small-rules/no-real-temporary-directory'?: Linter.RuleEntry<SmallRulesNoRealTemporaryDirectory>;
11363
11575
  /**
11364
11576
  * Disallow recursive function calls to prevent stack overflow.
11365
11577
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-recursive/
11366
11578
  */
11367
11579
  'small-rules/no-recursive'?: Linter.RuleEntry<SmallRulesNoRecursive>;
11580
+ /**
11581
+ * Disallow copying growing reducer accumulators with Object.assign, Array.from, or array copy methods.
11582
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-reduce-accumulator-copy/
11583
+ */
11584
+ 'small-rules/no-reduce-accumulator-copy'?: Linter.RuleEntry<[]>;
11368
11585
  /**
11369
11586
  * Disallow redundant uiaspectratioconstraint children inside components that already manage their own aspect ratio internally.
11370
11587
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-redundant-aspect-ratio-constraint/
11371
11588
  */
11372
11589
  'small-rules/no-redundant-aspect-ratio-constraint'?: Linter.RuleEntry<[]>;
11590
+ /**
11591
+ * Disallow Reflect.apply; call typed functions directly or model dynamic dispatch behind an interface.
11592
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-reflect-apply/
11593
+ */
11594
+ 'small-rules/no-reflect-apply'?: Linter.RuleEntry<[]>;
11595
+ /**
11596
+ * Disallow Reflect.get; use typed property access or parse dynamic input into a domain type.
11597
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-reflect-get/
11598
+ */
11599
+ 'small-rules/no-reflect-get'?: Linter.RuleEntry<[]>;
11373
11600
  /**
11374
11601
  * Disallow non-component functions that return JSX or React elements.
11375
11602
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-render-helper-functions/
11376
11603
  */
11377
11604
  'small-rules/no-render-helper-functions'?: Linter.RuleEntry<[]>;
11605
+ /**
11606
+ * Disallow resetting all state in an effect when a prop changes.
11607
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-reset-all-state-on-property-change/
11608
+ */
11609
+ 'small-rules/no-reset-all-state-on-prop-change'?: Linter.RuleEntry<SmallRulesNoResetAllStateOnPropChange>;
11378
11610
  /**
11379
11611
  * Disallow assignment to restricted object properties.
11380
11612
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-restricted-property-assignment/
11381
11613
  */
11382
11614
  'small-rules/no-restricted-property-assignment'?: Linter.RuleEntry<SmallRulesNoRestrictedPropertyAssignment>;
11615
+ /**
11616
+ * Disallow runtime code in files that hold only types.
11617
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-runtime-in-type-files/
11618
+ */
11619
+ 'small-rules/no-runtime-in-type-files'?: Linter.RuleEntry<SmallRulesNoRuntimeInTypeFiles>;
11620
+ /**
11621
+ * Disallow runtime typeof checks; external values must be decoded into meaningful types at their I/O boundary.
11622
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-runtime-typeof/
11623
+ */
11624
+ 'small-rules/no-runtime-typeof'?: Linter.RuleEntry<SmallRulesNoRuntimeTypeof>;
11625
+ /**
11626
+ * Disallow the case-insensitive substring "shape" in JavaScript, TypeScript, private, and JSX symbol names.
11627
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-shape-in-symbol-names/
11628
+ */
11629
+ 'small-rules/no-shape-in-symbol-names'?: Linter.RuleEntry<[]>;
11383
11630
  /**
11384
11631
  * Disallow the .spec.{ts,tsx} file extension for test files. Use .test.{ts,tsx} instead.
11385
11632
  * @see https://docs.howmanysmall.com/small-rules/rules/naming/no-spec-file-extension/
@@ -11400,6 +11647,11 @@ interface RuleOptions {
11400
11647
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-task-wait/
11401
11648
  */
11402
11649
  'small-rules/no-task-wait'?: Linter.RuleEntry<[]>;
11650
+ /**
11651
+ * Disallow per-test timeouts in unit tests.
11652
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-test-timeout/
11653
+ */
11654
+ 'small-rules/no-test-timeout'?: Linter.RuleEntry<SmallRulesNoTestTimeout>;
11403
11655
  /**
11404
11656
  * Disallow assertions that always succeed or compare against freshly created values.
11405
11657
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-trivial-assertions/
@@ -11410,6 +11662,31 @@ interface RuleOptions {
11410
11662
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-underscore-react-props/
11411
11663
  */
11412
11664
  'small-rules/no-underscore-react-props'?: Linter.RuleEntry<[]>;
11665
+ /**
11666
+ * Disallow explicitly unknown function parameters except `cause` and the parameter named by a type predicate; decode unknown input at its I/O boundary instead.
11667
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-unknown-parameters/
11668
+ */
11669
+ 'small-rules/no-unknown-parameters'?: Linter.RuleEntry<[]>;
11670
+ /**
11671
+ * Disallow functions whose explicit return contract is unknown or Promise<unknown>.
11672
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-unknown-returns/
11673
+ */
11674
+ 'small-rules/no-unknown-returns'?: Linter.RuleEntry<[]>;
11675
+ /**
11676
+ * Disallow type aliases whose resolved type is unknown; unknown must remain visible at an allowed boundary.
11677
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-unknown-type-aliases/
11678
+ */
11679
+ 'small-rules/no-unknown-type-aliases'?: Linter.RuleEntry<[]>;
11680
+ /**
11681
+ * Disallow object-dictionary contracts whose direct value type is unknown, any, object, {}, or a union/alias containing one of those escape hatches.
11682
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-unsafe-dictionary-type/
11683
+ */
11684
+ 'small-rules/no-unsafe-dictionary-type'?: Linter.RuleEntry<[]>;
11685
+ /**
11686
+ * Disallow syntax that roblox-ts cannot compile to Luau.
11687
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-unsupported-syntax/
11688
+ */
11689
+ 'small-rules/no-unsupported-syntax'?: Linter.RuleEntry<SmallRulesNoUnsupportedSyntax>;
11413
11690
  /**
11414
11691
  * Disallow unused imports
11415
11692
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-unused-imports/
@@ -11440,6 +11717,11 @@ interface RuleOptions {
11440
11717
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-useless-default/
11441
11718
  */
11442
11719
  'small-rules/no-useless-default'?: Linter.RuleEntry<[]>;
11720
+ /**
11721
+ * Disallow equality comparisons against an empty-string literal.
11722
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-useless-empty-string-comparison/
11723
+ */
11724
+ 'small-rules/no-useless-empty-string-comparison'?: Linter.RuleEntry<SmallRulesNoUselessEmptyStringComparison>;
11443
11725
  /**
11444
11726
  * 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.
11445
11727
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-useless-use-effect/
@@ -11465,6 +11747,11 @@ interface RuleOptions {
11465
11747
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-warn/
11466
11748
  */
11467
11749
  'small-rules/no-warn'?: Linter.RuleEntry<[]>;
11750
+ /**
11751
+ * Disallow local const flows that explicitly widen a known value before asserting the widened binding to a narrower type.
11752
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-widen-then-assert/
11753
+ */
11754
+ 'small-rules/no-widen-then-assert'?: Linter.RuleEntry<[]>;
11468
11755
  /**
11469
11756
  * Require all imports to be type-only imports. Benchmarks cannot import non-types because the benchmarker plugin will throw an error.
11470
11757
  * @see https://docs.howmanysmall.com/small-rules/rules/general/only-type-imports/
@@ -11525,6 +11812,11 @@ interface RuleOptions {
11525
11812
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/prefer-math-min-max/
11526
11813
  */
11527
11814
  'small-rules/prefer-math-min-max'?: Linter.RuleEntry<[]>;
11815
+ /**
11816
+ * Move discarded Jecs query component values into a membership-only with filter.
11817
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/jecs/prefer-membership-filter-in-jecs/
11818
+ */
11819
+ 'small-rules/prefer-membership-filter-in-jecs'?: Linter.RuleEntry<[]>;
11528
11820
  /**
11529
11821
  * Prefer Modding.inspect over manually enumerating every enum member in a Record<Enum, true>.
11530
11822
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/prefer-modding-inspect/
@@ -11535,6 +11827,16 @@ interface RuleOptions {
11535
11827
  * @see https://docs.howmanysmall.com/small-rules/rules/general/prefer-module-scope-constants/
11536
11828
  */
11537
11829
  'small-rules/prefer-module-scope-constants'?: Linter.RuleEntry<[]>;
11830
+ /**
11831
+ * Prefer table.clone over a manual shallow Map or Set copy loop.
11832
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/prefer-native-collection-copy/
11833
+ */
11834
+ 'small-rules/prefer-native-collection-copy'?: Linter.RuleEntry<[]>;
11835
+ /**
11836
+ * Disallow `undefined` in a function parameter's type union; declare the parameter optional with `?` instead.
11837
+ * @see https://docs.howmanysmall.com/small-rules/rules/naming/prefer-optional-parameter/
11838
+ */
11839
+ 'small-rules/prefer-optional-parameter'?: Linter.RuleEntry<[]>;
11538
11840
  /**
11539
11841
  * Prefer local EqualPadding and DirectionalPadding components over matching <uipadding /> declarations.
11540
11842
  * @see https://docs.howmanysmall.com/small-rules/rules/react/prefer-padding-components/
@@ -11552,12 +11854,12 @@ interface RuleOptions {
11552
11854
  'small-rules/prefer-sequence-overloads'?: Linter.RuleEntry<[]>;
11553
11855
  /**
11554
11856
  * Enforce combining multiple world.get() or world.has() calls into a single call for better Jecs performance.
11555
- * @see https://docs.howmanysmall.com/small-rules/rules/roblox/prefer-single-world-query/
11857
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/jecs/prefer-single-world-query-in-jecs/
11556
11858
  */
11557
- 'small-rules/prefer-single-world-query'?: Linter.RuleEntry<[]>;
11859
+ 'small-rules/prefer-single-world-query-in-jecs'?: Linter.RuleEntry<[]>;
11558
11860
  /**
11559
11861
  * Prefer singular naming for enums.
11560
- * @see https://docs.howmanysmall.com/small-rules/rules/naming/prefer-singular-enums/
11862
+ * @see https://docs.howmanysmall.com/small-rules/rules/english/prefer-singular-enums/
11561
11863
  */
11562
11864
  'small-rules/prefer-singular-enums'?: Linter.RuleEntry<[]>;
11563
11865
  /**
@@ -11577,7 +11879,7 @@ interface RuleOptions {
11577
11879
  'small-rules/prefer-use-reducer'?: Linter.RuleEntry<[]>;
11578
11880
  /**
11579
11881
  * Prevent abbreviations.
11580
- * @see https://docs.howmanysmall.com/small-rules/rules/naming/prevent-abbreviations/
11882
+ * @see https://docs.howmanysmall.com/small-rules/rules/english/prevent-abbreviations/
11581
11883
  */
11582
11884
  'small-rules/prevent-abbreviations'?: Linter.RuleEntry<SmallRulesPreventAbbreviations>;
11583
11885
  /**
@@ -11615,6 +11917,16 @@ interface RuleOptions {
11615
11917
  * @see https://docs.howmanysmall.com/small-rules/rules/react/require-react-display-names/
11616
11918
  */
11617
11919
  'small-rules/require-react-display-names'?: Linter.RuleEntry<SmallRulesRequireReactDisplayNames>;
11920
+ /**
11921
+ * Require readable spacing between declarations and logical statement groups.
11922
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/require-readable-spacing/
11923
+ */
11924
+ 'small-rules/require-readable-spacing'?: Linter.RuleEntry<SmallRulesRequireReadableSpacing>;
11925
+ /**
11926
+ * 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.
11927
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/require-safety-comment-for-type-assertion/
11928
+ */
11929
+ 'small-rules/require-safety-comment-for-type-assertion'?: Linter.RuleEntry<SmallRulesRequireSafetyCommentForTypeAssertion>;
11618
11930
  /**
11619
11931
  * Require braces around switch case bodies selected by line span or statement count.
11620
11932
  * @see https://docs.howmanysmall.com/small-rules/rules/general/require-switch-case-braces/
@@ -11626,7 +11938,12 @@ interface RuleOptions {
11626
11938
  */
11627
11939
  'small-rules/require-throw-error-capture'?: Linter.RuleEntry<SmallRulesRequireThrowErrorCapture>;
11628
11940
  /**
11629
- * Require the 'u' or 'v' unicode flag on calls named regex().
11941
+ * Require React hooks to be declared in a `.tsx` file.
11942
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/require-tsx-for-hooks/
11943
+ */
11944
+ 'small-rules/require-tsx-for-hooks'?: Linter.RuleEntry<[]>;
11945
+ /**
11946
+ * Require the 'u' or 'v' unicode flag on calls named `regex()`.
11630
11947
  * @see https://docs.howmanysmall.com/small-rules/rules/general/require-unicode-regex/
11631
11948
  */
11632
11949
  'small-rules/require-unicode-regex'?: Linter.RuleEntry<[]>;
@@ -11635,6 +11952,11 @@ interface RuleOptions {
11635
11952
  * @see https://docs.howmanysmall.com/small-rules/rules/react/rerender-memo-with-default-value/
11636
11953
  */
11637
11954
  'small-rules/rerender-memo-with-default-value'?: Linter.RuleEntry<[]>;
11955
+ /**
11956
+ * Require function and method names to begin with a verb.
11957
+ * @see https://docs.howmanysmall.com/small-rules/rules/english/starts-with-verb/
11958
+ */
11959
+ 'small-rules/starts-with-verb'?: Linter.RuleEntry<SmallRulesStartsWithVerb>;
11638
11960
  /**
11639
11961
  * Prevent imports that reach into another component's nested modules.
11640
11962
  * @see https://docs.howmanysmall.com/small-rules/rules/react/strict-component-boundaries/
@@ -13905,7 +14227,7 @@ interface RuleOptions {
13905
14227
  * Disallow awaiting a value that is not a Thenable
13906
14228
  * @see https://typescript-eslint.io/rules/await-thenable
13907
14229
  */
13908
- 'ts/await-thenable'?: Linter.RuleEntry<[]>;
14230
+ 'ts/await-thenable'?: Linter.RuleEntry<TsAwaitThenable>;
13909
14231
  /**
13910
14232
  * Disallow `@ts-<directive>` comments or require descriptions after directives
13911
14233
  * @see https://typescript-eslint.io/rules/ban-ts-comment
@@ -14102,6 +14424,11 @@ interface RuleOptions {
14102
14424
  * @see https://typescript-eslint.io/rules/no-for-in-array
14103
14425
  */
14104
14426
  'ts/no-for-in-array'?: Linter.RuleEntry<[]>;
14427
+ /**
14428
+ * Disallow type operations that resolve to the "empty object" type
14429
+ * @see https://typescript-eslint.io/rules/no-generated-empty-object-type
14430
+ */
14431
+ 'ts/no-generated-empty-object-type'?: Linter.RuleEntry<[]>;
14105
14432
  /**
14106
14433
  * Disallow the use of `eval()`-like functions
14107
14434
  * @see https://typescript-eslint.io/rules/no-implied-eval
@@ -14301,6 +14628,11 @@ interface RuleOptions {
14301
14628
  * @see https://typescript-eslint.io/rules/no-unsafe-declaration-merging
14302
14629
  */
14303
14630
  'ts/no-unsafe-declaration-merging'?: Linter.RuleEntry<[]>;
14631
+ /**
14632
+ * Disallow assigning non-enum values to enum typed locations
14633
+ * @see https://typescript-eslint.io/rules/no-unsafe-enum-assignment
14634
+ */
14635
+ 'ts/no-unsafe-enum-assignment'?: Linter.RuleEntry<[]>;
14304
14636
  /**
14305
14637
  * Disallow comparing an enum value with a non-enum value
14306
14638
  * @see https://typescript-eslint.io/rules/no-unsafe-enum-comparison
@@ -17228,11 +17560,20 @@ type FlawlessArrowReturnStyle = [] | [{
17228
17560
  printWidth?: number;
17229
17561
  });
17230
17562
  }];
17563
+ // ----- flawless/cognitive-complexity -----
17564
+ type FlawlessCognitiveComplexity = [] | [{
17565
+ threshold?: number;
17566
+ }];
17231
17567
  // ----- flawless/jsx-shorthand-fragment -----
17232
17568
  type FlawlessJsxShorthandFragment = [] | [{
17233
17569
  fragmentName?: string;
17234
17570
  mode?: ("element" | "syntax");
17235
17571
  }];
17572
+ // ----- flawless/max-comment-length -----
17573
+ type FlawlessMaxCommentLength = [] | [{
17574
+ ignoreJSDoc?: boolean;
17575
+ maximumWords?: number;
17576
+ }];
17236
17577
  // ----- flawless/max-lines-per-function -----
17237
17578
  type FlawlessMaxLinesPerFunction = [] | [{
17238
17579
  countFrom?: ("body" | "function");
@@ -17247,6 +17588,7 @@ type _FlawlessNamingConventionFormatOptionsConfig = (_FlawlessNamingConventionPr
17247
17588
  type _FlawlessNamingConventionPredefinedFormats = ("camelCase" | "strictCamelCase" | "PascalCase" | "StrictPascalCase" | "snake_case" | "UPPER_CASE");
17248
17589
  type _FlawlessNamingConventionUnderscoreOptions = ("forbid" | "allow" | "require" | "requireDouble" | "allowDouble" | "allowSingleOrDouble");
17249
17590
  type _FlawlessNamingConvention_PrefixSuffixConfig = string[];
17591
+ type _FlawlessNamingConventionComponentPropConfig = true;
17250
17592
  type _FlawlessNamingConvention_TypeArgumentReferenceMatcher = (_FlawlessNamingConventionTypeArgumentReferenceMatcher & {
17251
17593
  name?: string;
17252
17594
  from?: string;
@@ -17296,6 +17638,7 @@ type FlawlessNamingConvention = ({
17296
17638
  prefix?: _FlawlessNamingConvention_PrefixSuffixConfig;
17297
17639
  suffix?: _FlawlessNamingConvention_PrefixSuffixConfig;
17298
17640
  trailingUnderscore?: _FlawlessNamingConventionUnderscoreOptions;
17641
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17299
17642
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17300
17643
  modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace" | "constAsserted")[];
17301
17644
  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")[];
@@ -17313,6 +17656,7 @@ type FlawlessNamingConvention = ({
17313
17656
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17314
17657
  selector: "default";
17315
17658
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
17659
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17316
17660
  modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace" | "constAsserted")[];
17317
17661
  } | {
17318
17662
  allowedWords?: _FlawlessNamingConvention_AllowedWordsConfig;
@@ -17394,6 +17738,7 @@ type FlawlessNamingConvention = ({
17394
17738
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17395
17739
  selector: "memberLike";
17396
17740
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
17741
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17397
17742
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[];
17398
17743
  } | {
17399
17744
  allowedWords?: _FlawlessNamingConvention_AllowedWordsConfig;
@@ -17435,6 +17780,7 @@ type FlawlessNamingConvention = ({
17435
17780
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17436
17781
  selector: "typeProperty";
17437
17782
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
17783
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17438
17784
  modifiers?: ("public" | "readonly" | "requiresQuotes")[];
17439
17785
  types?: _FlawlessNamingConventionTypeMatcher[];
17440
17786
  } | {
@@ -17463,6 +17809,7 @@ type FlawlessNamingConvention = ({
17463
17809
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17464
17810
  selector: "property";
17465
17811
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
17812
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17466
17813
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[];
17467
17814
  types?: _FlawlessNamingConventionTypeMatcher[];
17468
17815
  } | {
@@ -17505,6 +17852,7 @@ type FlawlessNamingConvention = ({
17505
17852
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17506
17853
  selector: "typeMethod";
17507
17854
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
17855
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17508
17856
  modifiers?: ("public" | "requiresQuotes")[];
17509
17857
  types?: _FlawlessNamingConventionTypeMatcher[];
17510
17858
  } | {
@@ -17519,6 +17867,7 @@ type FlawlessNamingConvention = ({
17519
17867
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17520
17868
  selector: "method";
17521
17869
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
17870
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17522
17871
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[];
17523
17872
  types?: _FlawlessNamingConventionTypeMatcher[];
17524
17873
  } | {
@@ -17690,14 +18039,31 @@ type FlawlessNoConditionalInTest = [] | [{
17690
18039
  additionalTestBlockFunctions?: string[];
17691
18040
  allowOptionalChaining?: boolean;
17692
18041
  }];
18042
+ // ----- flawless/no-ignored-return -----
18043
+ type FlawlessNoIgnoredReturn = [] | [{
18044
+ pureFunctions?: string[];
18045
+ }];
17693
18046
  // ----- flawless/no-materialized-filter-map -----
17694
18047
  type FlawlessNoMaterializedFilterMap = [] | [{
17695
18048
  iteratorHelpers?: boolean;
17696
18049
  }];
17697
- // ----- flawless/no-shared-test-state -----
18050
+ // ----- flawless/no-redundant-type-annotation -----
18051
+ type FlawlessNoRedundantTypeAnnotation = [] | [{
18052
+ allowExpressions?: boolean;
18053
+ checkReturnTypes?: boolean;
18054
+ }];
18055
+ // ----- flawless/no-shared-test-state -----
17698
18056
  type FlawlessNoSharedTestState = [] | [{
17699
18057
  additionalMutatingMethods?: string[];
17700
18058
  }];
18059
+ // ----- flawless/no-trivial-functions -----
18060
+ type FlawlessNoTrivialFunctions = [] | [{
18061
+ minimumReferences?: number;
18062
+ }];
18063
+ // ----- flawless/no-unnecessary-prop-alias -----
18064
+ type FlawlessNoUnnecessaryPropAlias = [] | [{
18065
+ reportConflicts?: boolean;
18066
+ }];
17701
18067
  // ----- flawless/prefer-ending-with-an-expect -----
17702
18068
  type FlawlessPreferEndingWithAnExpect = [] | [{
17703
18069
  additionalTestBlockFunctions?: string[];
@@ -17722,6 +18088,10 @@ type FlawlessPurity = [] | [{
17722
18088
  additionalFunctions?: string[];
17723
18089
  ignore?: string[];
17724
18090
  }];
18091
+ // ----- flawless/react-namespace -----
18092
+ type FlawlessReactNamespace = [] | [{
18093
+ umdGlobal?: boolean;
18094
+ }];
17725
18095
  // ----- flawless/toml-sort-keys -----
17726
18096
  type FlawlessTomlSortKeys = {
17727
18097
  order: (string[] | {
@@ -17731,6 +18101,16 @@ type FlawlessTomlSortKeys = {
17731
18101
  });
17732
18102
  pathPattern: string;
17733
18103
  }[];
18104
+ // ----- flawless/yaml-sort-sequence-by-key -----
18105
+ type FlawlessYamlSortSequenceByKey = {
18106
+ key: string;
18107
+ order?: {
18108
+ caseSensitive?: boolean;
18109
+ natural?: boolean;
18110
+ type?: ("asc" | "desc");
18111
+ };
18112
+ pathPattern: string;
18113
+ }[];
17734
18114
  // ----- format-lua/stylua -----
17735
18115
  type FormatLuaStylua = [] | [{
17736
18116
  language?: string;
@@ -18012,6 +18392,7 @@ type JestValidTitle = [] | [{
18012
18392
  }];
18013
18393
  // ----- jsdoc/check-alignment -----
18014
18394
  type JsdocCheckAlignment = [] | [{
18395
+ ignoreEmptyLines?: boolean;
18015
18396
  innerIndent?: number;
18016
18397
  }];
18017
18398
  // ----- jsdoc/check-examples -----
@@ -18039,6 +18420,7 @@ type JsdocCheckExamples = [] | [{
18039
18420
  // ----- jsdoc/check-indentation -----
18040
18421
  type JsdocCheckIndentation = [] | [{
18041
18422
  allowIndentedSections?: boolean;
18423
+ allowNoSpaceAfterAsterisk?: boolean;
18042
18424
  excludeTags?: string[];
18043
18425
  }];
18044
18426
  // ----- jsdoc/check-line-alignment -----
@@ -18058,18 +18440,26 @@ type JsdocCheckLineAlignment = [] | [("always" | "never" | "any")] | [("always"
18058
18440
  // ----- jsdoc/check-param-names -----
18059
18441
  type JsdocCheckParamNames = [] | [{
18060
18442
  allowExtraTrailingParamDocs?: boolean;
18443
+ badParamNames?: boolean;
18444
+ badParamOrder?: boolean;
18061
18445
  checkDestructured?: boolean;
18062
18446
  checkRestProperty?: boolean;
18063
18447
  checkTypesPattern?: string;
18064
18448
  disableExtraPropertyReporting?: boolean;
18065
18449
  disableMissingParamChecks?: boolean;
18450
+ duplicateParams?: boolean;
18066
18451
  enableFixer?: boolean;
18452
+ extraParams?: boolean;
18067
18453
  useDefaultObjectProperties?: boolean;
18068
18454
  }];
18069
18455
  // ----- jsdoc/check-property-names -----
18070
18456
  type JsdocCheckPropertyNames = [] | [{
18071
18457
  enableFixer?: boolean;
18072
18458
  }];
18459
+ // ----- jsdoc/check-syntax -----
18460
+ type JsdocCheckSyntax = [] | [{
18461
+ enableFixer?: boolean;
18462
+ }];
18073
18463
  // ----- jsdoc/check-tag-names -----
18074
18464
  type JsdocCheckTagNames = [] | [{
18075
18465
  definedTags?: string[];
@@ -18244,6 +18634,15 @@ type JsdocNoUndefinedTypes = [] | [{
18244
18634
  disableReporting?: boolean;
18245
18635
  markVariablesAsUsed?: boolean;
18246
18636
  }];
18637
+ // ----- jsdoc/no-unnecessary-type-assertion -----
18638
+ type JsdocNoUnnecessaryTypeAssertion = [] | [{
18639
+ checkLiteralConstAssertions?: boolean;
18640
+ enableFixer?: boolean;
18641
+ fixTypeChangingCasts?: boolean;
18642
+ preferConstToLiteralTuples?: boolean;
18643
+ treatAnyAsRedundant?: boolean;
18644
+ typesToIgnore?: string[];
18645
+ }];
18247
18646
  // ----- jsdoc/normalize-see-links -----
18248
18647
  type JsdocNormalizeSeeLinks = [] | [{
18249
18648
  canonicalForm?: ("pipe" | "prefix");
@@ -18446,7 +18845,6 @@ type JsdocRequireTags = [] | [{
18446
18845
  tags?: (string | {
18447
18846
  context?: string;
18448
18847
  tag?: string;
18449
- [k: string]: unknown | undefined;
18450
18848
  })[];
18451
18849
  }];
18452
18850
  // ----- jsdoc/require-template -----
@@ -18517,6 +18915,22 @@ type JsdocTextEscaping = [] | [{
18517
18915
  escapeHTML?: boolean;
18518
18916
  escapeMarkdown?: boolean;
18519
18917
  }];
18918
+ // ----- jsdoc/ts-ban-ts-comment -----
18919
+ type JsdocTsBanTsComment = [] | [{
18920
+ minimumDescriptionLength?: number;
18921
+ "ts-check"?: (boolean | "allow-with-description" | {
18922
+ descriptionFormat?: string;
18923
+ });
18924
+ "ts-expect-error"?: (boolean | "allow-with-description" | {
18925
+ descriptionFormat?: string;
18926
+ });
18927
+ "ts-ignore"?: (boolean | "allow-with-description" | {
18928
+ descriptionFormat?: string;
18929
+ });
18930
+ "ts-nocheck"?: (boolean | "allow-with-description" | {
18931
+ descriptionFormat?: string;
18932
+ });
18933
+ }];
18520
18934
  // ----- jsdoc/ts-method-signature-style -----
18521
18935
  type JsdocTsMethodSignatureStyle = [] | [("method" | "property")] | [("method" | "property"), {
18522
18936
  enableFixer?: boolean;
@@ -21028,6 +21442,266 @@ type PerfectionistSortClasses = {
21028
21442
  });
21029
21443
  partitionByNewLine?: boolean;
21030
21444
  }[];
21445
+ // ----- perfectionist/sort-constructor-parameters -----
21446
+ type PerfectionistSortConstructorParameters = [{
21447
+ fallbackSort?: {
21448
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21449
+ order?: ("asc" | "desc");
21450
+ };
21451
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21452
+ specialCharacters?: ("remove" | "trim" | "keep");
21453
+ ignoreCase?: boolean;
21454
+ alphabet?: string;
21455
+ locales?: (string | string[]);
21456
+ order?: ("asc" | "desc");
21457
+ customGroups?: ({
21458
+ fallbackSort?: {
21459
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21460
+ order?: ("asc" | "desc");
21461
+ };
21462
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21463
+ groupName: string;
21464
+ newlinesInside?: ("ignore" | number);
21465
+ order?: ("asc" | "desc");
21466
+ anyOf: [{
21467
+ elementNamePattern?: (({
21468
+ pattern: string;
21469
+ flags?: string;
21470
+ } | string)[] | ({
21471
+ pattern: string;
21472
+ flags?: string;
21473
+ } | string));
21474
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
21475
+ selector?: "parameter";
21476
+ decoratorNamePattern?: (({
21477
+ pattern: string;
21478
+ flags?: string;
21479
+ } | string)[] | ({
21480
+ pattern: string;
21481
+ flags?: string;
21482
+ } | string));
21483
+ }, ...({
21484
+ elementNamePattern?: (({
21485
+ pattern: string;
21486
+ flags?: string;
21487
+ } | string)[] | ({
21488
+ pattern: string;
21489
+ flags?: string;
21490
+ } | string));
21491
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
21492
+ selector?: "parameter";
21493
+ decoratorNamePattern?: (({
21494
+ pattern: string;
21495
+ flags?: string;
21496
+ } | string)[] | ({
21497
+ pattern: string;
21498
+ flags?: string;
21499
+ } | string));
21500
+ })[]];
21501
+ } | {
21502
+ fallbackSort?: {
21503
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21504
+ order?: ("asc" | "desc");
21505
+ };
21506
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21507
+ groupName: string;
21508
+ newlinesInside?: ("ignore" | number);
21509
+ order?: ("asc" | "desc");
21510
+ elementNamePattern?: (({
21511
+ pattern: string;
21512
+ flags?: string;
21513
+ } | string)[] | ({
21514
+ pattern: string;
21515
+ flags?: string;
21516
+ } | string));
21517
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
21518
+ selector?: "parameter";
21519
+ decoratorNamePattern?: (({
21520
+ pattern: string;
21521
+ flags?: string;
21522
+ } | string)[] | ({
21523
+ pattern: string;
21524
+ flags?: string;
21525
+ } | string));
21526
+ })[];
21527
+ newlinesInside?: (("ignore" | number) | "newlinesBetween");
21528
+ groups?: (string | [string, ...(string)[]] | {
21529
+ newlinesBetween: ("ignore" | number);
21530
+ } | {
21531
+ group: (string | [string, ...(string)[]]);
21532
+ fallbackSort?: {
21533
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21534
+ order?: ("asc" | "desc");
21535
+ };
21536
+ commentAbove?: string;
21537
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21538
+ newlinesInside?: ("ignore" | number);
21539
+ order?: ("asc" | "desc");
21540
+ })[];
21541
+ newlinesBetween?: ("ignore" | number);
21542
+ useConfigurationIf: {
21543
+ allNamesMatchPattern?: (({
21544
+ pattern: string;
21545
+ flags?: string;
21546
+ } | string)[] | ({
21547
+ pattern: string;
21548
+ flags?: string;
21549
+ } | string));
21550
+ matchesAstSelector?: string;
21551
+ };
21552
+ partitionByComment?: (boolean | (({
21553
+ pattern: string;
21554
+ flags?: string;
21555
+ } | string)[] | ({
21556
+ pattern: string;
21557
+ flags?: string;
21558
+ } | string)) | {
21559
+ block?: (boolean | (({
21560
+ pattern: string;
21561
+ flags?: string;
21562
+ } | string)[] | ({
21563
+ pattern: string;
21564
+ flags?: string;
21565
+ } | string)));
21566
+ line?: (boolean | (({
21567
+ pattern: string;
21568
+ flags?: string;
21569
+ } | string)[] | ({
21570
+ pattern: string;
21571
+ flags?: string;
21572
+ } | string)));
21573
+ });
21574
+ partitionByNewLine?: boolean;
21575
+ }, ...({
21576
+ fallbackSort?: {
21577
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21578
+ order?: ("asc" | "desc");
21579
+ };
21580
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21581
+ specialCharacters?: ("remove" | "trim" | "keep");
21582
+ ignoreCase?: boolean;
21583
+ alphabet?: string;
21584
+ locales?: (string | string[]);
21585
+ order?: ("asc" | "desc");
21586
+ customGroups?: ({
21587
+ fallbackSort?: {
21588
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21589
+ order?: ("asc" | "desc");
21590
+ };
21591
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21592
+ groupName: string;
21593
+ newlinesInside?: ("ignore" | number);
21594
+ order?: ("asc" | "desc");
21595
+ anyOf: [{
21596
+ elementNamePattern?: (({
21597
+ pattern: string;
21598
+ flags?: string;
21599
+ } | string)[] | ({
21600
+ pattern: string;
21601
+ flags?: string;
21602
+ } | string));
21603
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
21604
+ selector?: "parameter";
21605
+ decoratorNamePattern?: (({
21606
+ pattern: string;
21607
+ flags?: string;
21608
+ } | string)[] | ({
21609
+ pattern: string;
21610
+ flags?: string;
21611
+ } | string));
21612
+ }, ...({
21613
+ elementNamePattern?: (({
21614
+ pattern: string;
21615
+ flags?: string;
21616
+ } | string)[] | ({
21617
+ pattern: string;
21618
+ flags?: string;
21619
+ } | string));
21620
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
21621
+ selector?: "parameter";
21622
+ decoratorNamePattern?: (({
21623
+ pattern: string;
21624
+ flags?: string;
21625
+ } | string)[] | ({
21626
+ pattern: string;
21627
+ flags?: string;
21628
+ } | string));
21629
+ })[]];
21630
+ } | {
21631
+ fallbackSort?: {
21632
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21633
+ order?: ("asc" | "desc");
21634
+ };
21635
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21636
+ groupName: string;
21637
+ newlinesInside?: ("ignore" | number);
21638
+ order?: ("asc" | "desc");
21639
+ elementNamePattern?: (({
21640
+ pattern: string;
21641
+ flags?: string;
21642
+ } | string)[] | ({
21643
+ pattern: string;
21644
+ flags?: string;
21645
+ } | string));
21646
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
21647
+ selector?: "parameter";
21648
+ decoratorNamePattern?: (({
21649
+ pattern: string;
21650
+ flags?: string;
21651
+ } | string)[] | ({
21652
+ pattern: string;
21653
+ flags?: string;
21654
+ } | string));
21655
+ })[];
21656
+ newlinesInside?: (("ignore" | number) | "newlinesBetween");
21657
+ groups?: (string | [string, ...(string)[]] | {
21658
+ newlinesBetween: ("ignore" | number);
21659
+ } | {
21660
+ group: (string | [string, ...(string)[]]);
21661
+ fallbackSort?: {
21662
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21663
+ order?: ("asc" | "desc");
21664
+ };
21665
+ commentAbove?: string;
21666
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21667
+ newlinesInside?: ("ignore" | number);
21668
+ order?: ("asc" | "desc");
21669
+ })[];
21670
+ newlinesBetween?: ("ignore" | number);
21671
+ useConfigurationIf: {
21672
+ allNamesMatchPattern?: (({
21673
+ pattern: string;
21674
+ flags?: string;
21675
+ } | string)[] | ({
21676
+ pattern: string;
21677
+ flags?: string;
21678
+ } | string));
21679
+ matchesAstSelector?: string;
21680
+ };
21681
+ partitionByComment?: (boolean | (({
21682
+ pattern: string;
21683
+ flags?: string;
21684
+ } | string)[] | ({
21685
+ pattern: string;
21686
+ flags?: string;
21687
+ } | string)) | {
21688
+ block?: (boolean | (({
21689
+ pattern: string;
21690
+ flags?: string;
21691
+ } | string)[] | ({
21692
+ pattern: string;
21693
+ flags?: string;
21694
+ } | string)));
21695
+ line?: (boolean | (({
21696
+ pattern: string;
21697
+ flags?: string;
21698
+ } | string)[] | ({
21699
+ pattern: string;
21700
+ flags?: string;
21701
+ } | string)));
21702
+ });
21703
+ partitionByNewLine?: boolean;
21704
+ })[]];
21031
21705
  // ----- perfectionist/sort-decorators -----
21032
21706
  type PerfectionistSortDecorators = {
21033
21707
  fallbackSort?: {
@@ -21750,10 +22424,6 @@ type PerfectionistSortImports = {
21750
22424
  sortBy?: ("specifier" | "path");
21751
22425
  })[];
21752
22426
  newlinesBetween?: ("ignore" | number);
21753
- tsconfig?: {
21754
- rootDir: string;
21755
- filename?: string;
21756
- };
21757
22427
  maxLineLength?: number;
21758
22428
  sortSideEffects?: boolean;
21759
22429
  environment?: ("node" | "bun");
@@ -21788,6 +22458,10 @@ type PerfectionistSortImports = {
21788
22458
  pattern: string;
21789
22459
  flags?: string;
21790
22460
  } | string));
22461
+ tsconfig?: {
22462
+ rootDir: string;
22463
+ filename?: string;
22464
+ };
21791
22465
  }[];
21792
22466
  // ----- perfectionist/sort-interfaces -----
21793
22467
  type PerfectionistSortInterfaces = {
@@ -22372,6 +23046,7 @@ type PerfectionistSortModules = [] | [{
22372
23046
  order?: ("asc" | "desc");
22373
23047
  })[];
22374
23048
  newlinesBetween?: ("ignore" | number);
23049
+ additionalModuleBlockTypes?: string[];
22375
23050
  useExperimentalDependencyDetection?: boolean;
22376
23051
  newlinesBetweenOverloadSignatures?: ("ignore" | number);
22377
23052
  partitionByComment?: (boolean | (({
@@ -22397,6 +23072,10 @@ type PerfectionistSortModules = [] | [{
22397
23072
  } | string)));
22398
23073
  });
22399
23074
  partitionByNewLine?: boolean;
23075
+ tsconfig?: {
23076
+ rootDir: string;
23077
+ filename?: string;
23078
+ };
22400
23079
  }];
22401
23080
  // ----- perfectionist/sort-named-exports -----
22402
23081
  type PerfectionistSortNamedExports = {
@@ -22925,6 +23604,13 @@ type PerfectionistSortObjects = {
22925
23604
  partitionByComputedKey?: boolean;
22926
23605
  styledComponents?: boolean;
22927
23606
  useExperimentalDependencyDetection?: boolean;
23607
+ ignoreCallbackDependenciesPatterns?: (({
23608
+ pattern: string;
23609
+ flags?: string;
23610
+ } | string)[] | ({
23611
+ pattern: string;
23612
+ flags?: string;
23613
+ } | string));
22928
23614
  partitionByComment?: (boolean | (({
22929
23615
  pattern: string;
22930
23616
  flags?: string;
@@ -23260,6 +23946,13 @@ type PerfectionistSortVariableDeclarations = {
23260
23946
  matchesAstSelector?: string;
23261
23947
  };
23262
23948
  useExperimentalDependencyDetection?: boolean;
23949
+ ignoreCallbackDependenciesPatterns?: (({
23950
+ pattern: string;
23951
+ flags?: string;
23952
+ } | string)[] | ({
23953
+ pattern: string;
23954
+ flags?: string;
23955
+ } | string));
23263
23956
  partitionByComment?: (boolean | (({
23264
23957
  pattern: string;
23265
23958
  flags?: string;
@@ -23544,6 +24237,13 @@ type SmallRulesConsistentCompoundWords = [] | [{
23544
24237
  [k: string]: (false | string) | undefined;
23545
24238
  };
23546
24239
  }];
24240
+ // ----- small-rules/curly -----
24241
+ type SmallRulesCurly = [] | [{
24242
+ allowLiteralReturns?: boolean;
24243
+ 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"))[]]);
24244
+ printWidth?: number;
24245
+ tabWidth?: number;
24246
+ }];
23547
24247
  // ----- small-rules/directive-disable-enable-pair -----
23548
24248
  type SmallRulesDirectiveDisableEnablePair = [] | [{
23549
24249
  allowWholeFile?: boolean;
@@ -23578,11 +24278,15 @@ type SmallRulesIsolatedFunctions = [] | [{
23578
24278
  type SmallRulesMemoizedEffectDependencies = [] | [{
23579
24279
  environment?: ("roblox-ts" | "standard");
23580
24280
  hooks?: {
23581
- dependenciesIndex?: number;
23582
24281
  name: string;
24282
+ dependenciesIndex?: number;
23583
24283
  }[];
23584
24284
  mode?: ("aggressive" | "definite" | "moderate");
23585
24285
  }];
24286
+ // ----- small-rules/no-adjust-state-on-prop-change -----
24287
+ type SmallRulesNoAdjustStateOnPropChange = [] | [{
24288
+ environment?: ("roblox-ts" | "standard");
24289
+ }];
23586
24290
  // ----- small-rules/no-array-constructor-elements -----
23587
24291
  type SmallRulesNoArrayConstructorElements = [] | [{
23588
24292
  environment?: ("roblox-ts" | "standard");
@@ -23609,6 +24313,18 @@ type SmallRulesNoAsyncInSystem = [] | [{
23609
24313
  calleePath: [string, ...(string)[]];
23610
24314
  }[];
23611
24315
  }];
24316
+ // ----- small-rules/no-chain-state-updates -----
24317
+ type SmallRulesNoChainStateUpdates = [] | [{
24318
+ environment?: ("roblox-ts" | "standard");
24319
+ }];
24320
+ // ----- small-rules/no-chained-type-assertions -----
24321
+ type SmallRulesNoChainedTypeAssertions = [] | [{
24322
+ allowedTargets?: string[];
24323
+ }];
24324
+ // ----- small-rules/no-cliffy-action-wrapper -----
24325
+ type SmallRulesNoCliffyActionWrapper = [] | [{
24326
+ factories?: string[];
24327
+ }];
23612
24328
  // ----- small-rules/no-color3-constructor -----
23613
24329
  type SmallRulesNoColor3Constructor = [] | [{
23614
24330
  reportUnknownComponents?: boolean;
@@ -23621,10 +24337,22 @@ type SmallRulesNoCommentedCode = [] | [{
23621
24337
  type SmallRulesNoConstantConditionWithBreak = [] | [{
23622
24338
  loopExitCalls?: string[];
23623
24339
  }];
24340
+ // ----- small-rules/no-derived-state -----
24341
+ type SmallRulesNoDerivedState = [] | [{
24342
+ environment?: ("roblox-ts" | "standard");
24343
+ }];
24344
+ // ----- small-rules/no-event-handler -----
24345
+ type SmallRulesNoEventHandler = [] | [{
24346
+ environment?: ("roblox-ts" | "standard");
24347
+ }];
23624
24348
  // ----- small-rules/no-events-in-events-callback -----
23625
24349
  type SmallRulesNoEventsInEventsCallback = [] | [{
23626
24350
  eventsImportPaths: string[];
23627
24351
  }];
24352
+ // ----- small-rules/no-external-store-subscription -----
24353
+ type SmallRulesNoExternalStoreSubscription = [] | [{
24354
+ environment?: ("roblox-ts" | "standard");
24355
+ }];
23628
24356
  // ----- small-rules/no-god-components -----
23629
24357
  type SmallRulesNoGodComponents = [] | [{
23630
24358
  enforceTargetLines?: boolean;
@@ -23644,20 +24372,53 @@ type SmallRulesNoIdentityMap = [] | [{
23644
24372
  type SmallRulesNoIncrementDecrement = [] | [{
23645
24373
  allowAutofix?: boolean;
23646
24374
  }];
24375
+ // ----- small-rules/no-initialize-state -----
24376
+ type SmallRulesNoInitializeState = [] | [{
24377
+ environment?: ("roblox-ts" | "standard");
24378
+ }];
24379
+ // ----- small-rules/no-inline-signature-types -----
24380
+ type SmallRulesNoInlineSignatureTypes = [] | [{
24381
+ functions?: ("all" | "components");
24382
+ position?: ("anywhere" | "bare" | "wrapped");
24383
+ returnTypes?: boolean;
24384
+ }];
23647
24385
  // ----- small-rules/no-instance-methods-without-this -----
23648
24386
  type SmallRulesNoInstanceMethodsWithoutThis = [] | [{
23649
24387
  checkPrivate?: boolean;
23650
24388
  checkProtected?: boolean;
23651
24389
  checkPublic?: boolean;
23652
24390
  }];
24391
+ // ----- small-rules/no-multiple-cliffy-commands -----
24392
+ type SmallRulesNoMultipleCliffyCommands = [] | [{
24393
+ factories?: string[];
24394
+ }];
23653
24395
  // ----- small-rules/no-new-instance-in-use-memo -----
23654
24396
  type SmallRulesNoNewInstanceInUseMemo = [] | [{
23655
24397
  constructors?: string[];
23656
24398
  environment?: ("roblox-ts" | "standard");
23657
24399
  maxHelperTraceDepth?: number;
23658
24400
  }];
24401
+ // ----- small-rules/no-pass-data-to-parent -----
24402
+ type SmallRulesNoPassDataToParent = [] | [{
24403
+ environment?: ("roblox-ts" | "standard");
24404
+ }];
24405
+ // ----- small-rules/no-pass-live-state-to-parent -----
24406
+ type SmallRulesNoPassLiveStateToParent = [] | [{
24407
+ environment?: ("roblox-ts" | "standard");
24408
+ }];
24409
+ // ----- small-rules/no-real-temporary-directory -----
24410
+ type SmallRulesNoRealTemporaryDirectory = [] | [{
24411
+ additionalFunctions?: {
24412
+ functions: [string, ...(string)[]];
24413
+ source: string;
24414
+ }[];
24415
+ }];
23659
24416
  // ----- small-rules/no-recursive -----
23660
24417
  type SmallRulesNoRecursive = [] | [{}];
24418
+ // ----- small-rules/no-reset-all-state-on-prop-change -----
24419
+ type SmallRulesNoResetAllStateOnPropChange = [] | [{
24420
+ environment?: ("roblox-ts" | "standard");
24421
+ }];
23661
24422
  // ----- small-rules/no-restricted-property-assignment -----
23662
24423
  type SmallRulesNoRestrictedPropertyAssignment = [] | [{
23663
24424
  allowFiles?: string[];
@@ -23668,10 +24429,30 @@ type SmallRulesNoRestrictedPropertyAssignment = [] | [{
23668
24429
  properties: [string, ...(string)[]];
23669
24430
  }[];
23670
24431
  }];
24432
+ // ----- small-rules/no-runtime-in-type-files -----
24433
+ type SmallRulesNoRuntimeInTypeFiles = [] | [{
24434
+ files?: string[];
24435
+ }];
24436
+ // ----- small-rules/no-runtime-typeof -----
24437
+ type SmallRulesNoRuntimeTypeof = [] | [{
24438
+ allowInTypeGuards?: boolean;
24439
+ }];
23671
24440
  // ----- small-rules/no-static-react-create-element -----
23672
24441
  type SmallRulesNoStaticReactCreateElement = [] | [{
23673
24442
  environment?: ("roblox-ts" | "standard");
23674
24443
  }];
24444
+ // ----- small-rules/no-test-timeout -----
24445
+ type SmallRulesNoTestTimeout = [] | [{
24446
+ additionalTestFunctions?: string[];
24447
+ }];
24448
+ // ----- small-rules/no-unsupported-syntax -----
24449
+ type SmallRulesNoUnsupportedSyntax = [] | [{
24450
+ globalThis?: boolean;
24451
+ labels?: boolean;
24452
+ prototype?: boolean;
24453
+ regexLiterals?: boolean;
24454
+ spreadDestructuring?: boolean;
24455
+ }];
23675
24456
  // ----- small-rules/no-unused-imports -----
23676
24457
  type SmallRulesNoUnusedImports = [] | [{
23677
24458
  checkJSDoc?: boolean;
@@ -23684,6 +24465,10 @@ type SmallRulesNoUnusedUseMemo = [] | [{
23684
24465
  type SmallRulesNoUselessConstants = [] | [{
23685
24466
  ignoreCallPatterns?: string[];
23686
24467
  }];
24468
+ // ----- small-rules/no-useless-empty-string-comparison -----
24469
+ type SmallRulesNoUselessEmptyStringComparison = [] | [{
24470
+ allowAutofix?: boolean;
24471
+ }];
23687
24472
  // ----- small-rules/no-useless-use-effect -----
23688
24473
  type SmallRulesNoUselessUseEffect = [] | [{
23689
24474
  environment?: ("roblox-ts" | "standard");
@@ -23708,7 +24493,7 @@ type SmallRulesNoUselessUseEffect = [] | [{
23708
24493
  }];
23709
24494
  // ----- small-rules/no-useless-use-memo -----
23710
24495
  type SmallRulesNoUselessUseMemo = [] | [{
23711
- dependencyMode?: ("empty-or-omitted" | "non-updating" | "aggressive");
24496
+ dependencyMode?: ("empty-or-omitted" | "aggressive" | "non-updating");
23712
24497
  environment?: ("roblox-ts" | "standard");
23713
24498
  staticGlobalFactories?: string[];
23714
24499
  }];
@@ -23782,8 +24567,8 @@ type SmallRulesRequireModuleLevelInstantiation = [] | [{
23782
24567
  type SmallRulesRequireNamedEffectFunctions = [] | [{
23783
24568
  environment?: ("roblox-ts" | "standard");
23784
24569
  hooks?: {
23785
- allowAsync: boolean;
23786
24570
  name: string;
24571
+ allowAsync: boolean;
23787
24572
  }[];
23788
24573
  inlineFunctionDeclarations?: boolean;
23789
24574
  sloptor?: boolean;
@@ -23822,6 +24607,28 @@ type SmallRulesRequireReactComponentKeys = [] | [{
23822
24607
  type SmallRulesRequireReactDisplayNames = [] | [{
23823
24608
  environment?: ("roblox-ts" | "standard");
23824
24609
  }];
24610
+ // ----- small-rules/require-readable-spacing -----
24611
+ type SmallRulesRequireReadableSpacing = [] | [{
24612
+ afterBlocks?: boolean;
24613
+ afterImports?: boolean;
24614
+ allowAttachedUses?: boolean;
24615
+ allowGuardClauseRuns?: boolean;
24616
+ allowMultilineBindingRuns?: boolean;
24617
+ aroundDeclarations?: boolean;
24618
+ aroundMultilineBindings?: boolean;
24619
+ beforeControlFlow?: boolean;
24620
+ betweenTopLevelStatements?: boolean;
24621
+ overrides?: {
24622
+ blankLine: ("always" | "any");
24623
+ 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"))[]]);
24624
+ 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"))[]]);
24625
+ usesPrevious?: boolean;
24626
+ }[];
24627
+ }];
24628
+ // ----- small-rules/require-safety-comment-for-type-assertion -----
24629
+ type SmallRulesRequireSafetyCommentForTypeAssertion = [] | [{
24630
+ markers?: [string, ...(string)[]];
24631
+ }];
23825
24632
  // ----- small-rules/require-switch-case-braces -----
23826
24633
  type SmallRulesRequireSwitchCaseBraces = [] | [{
23827
24634
  metric?: ("lines" | "statements");
@@ -23829,12 +24636,17 @@ type SmallRulesRequireSwitchCaseBraces = [] | [{
23829
24636
  // ----- small-rules/require-throw-error-capture -----
23830
24637
  type SmallRulesRequireThrowErrorCapture = [] | [{
23831
24638
  allow?: (string | {
23832
- from?: ("file" | "library" | "package");
23833
24639
  name: (string | string[]);
24640
+ from?: ("file" | "library" | "package");
23834
24641
  package?: string;
23835
24642
  path?: string;
23836
24643
  })[];
23837
24644
  }];
24645
+ // ----- small-rules/starts-with-verb -----
24646
+ type SmallRulesStartsWithVerb = [] | [{
24647
+ allowList?: string[];
24648
+ denyList?: string[];
24649
+ }];
23838
24650
  // ----- small-rules/strict-component-boundaries -----
23839
24651
  type SmallRulesStrictComponentBoundaries = [] | [{
23840
24652
  allow?: string[];
@@ -23843,9 +24655,9 @@ type SmallRulesStrictComponentBoundaries = [] | [{
23843
24655
  // ----- small-rules/use-exhaustive-dependencies -----
23844
24656
  type SmallRulesUseExhaustiveDependencies = [] | [{
23845
24657
  hooks?: {
24658
+ name: string;
23846
24659
  closureIndex?: number;
23847
24660
  dependenciesIndex?: number;
23848
- name: string;
23849
24661
  stableResult?: (boolean | number | number[] | string[]);
23850
24662
  }[];
23851
24663
  reportMissingDependenciesArray?: boolean;
@@ -25489,6 +26301,10 @@ type TsArrayType = [] | [{
25489
26301
  default?: ("array" | "generic" | "array-simple");
25490
26302
  readonly?: ("array" | "generic" | "array-simple");
25491
26303
  }];
26304
+ // ----- ts/await-thenable -----
26305
+ type TsAwaitThenable = [] | [{
26306
+ allowMixedPromiseArrays?: boolean;
26307
+ }];
25492
26308
  // ----- ts/ban-ts-comment -----
25493
26309
  type TsBanTsComment = [] | [{
25494
26310
  minimumDescriptionLength?: number;
@@ -26061,7 +26877,9 @@ type TsNoMeaninglessVoidOperator = [] | [{
26061
26877
  }];
26062
26878
  // ----- ts/no-misused-promises -----
26063
26879
  type TsNoMisusedPromises = [] | [{
26064
- checksConditionals?: boolean;
26880
+ checksConditionals?: (boolean | {
26881
+ flagUnions?: ("all" | "strict" | "none");
26882
+ });
26065
26883
  checksSpreads?: boolean;
26066
26884
  checksVoidReturn?: (boolean | {
26067
26885
  arguments?: boolean;
@@ -27270,7 +28088,7 @@ type Yoda = [] | [("always" | "never")] | [("always" | "never"), {
27270
28088
  onlyEquality?: boolean;
27271
28089
  }];
27272
28090
  // Names of all the configs
27273
- type ConfigNames = 'isentinel/eslint/comments' | 'isentinel/eslint/comments/src' | 'isentinel/e18e/rules' | 'isentinel/eslint-plugin/setup' | 'isentinel/eslint-plugin/rules' | 'isentinel/flawless/setup' | 'isentinel/flawless/rules' | 'isentinel/flawless/rules-type-aware' | 'isentinel/gitignore' | 'isentinel/ignores' | 'isentinel/imports/rules' | 'isentinel/imports/game' | 'isentinel/javascript/setup' | 'isentinel/javascript/rules' | 'isentinel/jsdoc/setup' | 'isentinel/jsdoc' | 'isentinel/jsonc/setup' | 'isentinel/jsonc/rules' | 'isentinel/jsonc/tsconfig' | 'isentinel/markdown/setup' | 'isentinel/markdown/processor' | 'isentinel/markdown/parser' | 'isentinel/markdown/disables' | 'isentinel/naming/setup' | 'isentinel/naming/ts/rules-type-aware' | 'isentinel/naming/tsx/rules-type-aware' | 'isentinel/node/rules' | 'isentinel/oxfmt/setup' | 'isentinel/oxfmt/javascript' | 'isentinel/oxfmt/typescript' | 'isentinel/oxfmt/css' | 'isentinel/oxfmt/scss' | 'isentinel/oxfmt/less' | 'isentinel/oxfmt/html' | 'isentinel/oxfmt/markdown' | 'isentinel/oxfmt/graphql' | 'isentinel/oxfmt/json' | 'isentinel/oxfmt/json5' | 'isentinel/oxfmt/yaml' | 'isentinel/oxfmt/markdown-code/javascript' | 'isentinel/oxfmt/markdown-code/typescript' | 'isentinel/oxfmt/markdown-code/css' | 'isentinel/oxfmt/markdown-code/scss' | 'isentinel/oxfmt/markdown-code/less' | 'isentinel/oxfmt/markdown-code/html' | 'isentinel/oxfmt/markdown-code/graphql' | 'isentinel/oxfmt/markdown-code/json' | 'isentinel/oxfmt/markdown-code/json5' | 'isentinel/oxfmt/markdown-code/yaml' | 'isentinel/package-json/setup' | 'isentinel/package-json' | 'isentinel/package-json/root' | 'isentinel/perfectionist/setup' | 'isentinel/perfectionist' | 'isentinel/perfectionist/jsx' | 'isentinel/pnpm/setup' | 'isentinel/pnpm/package-json' | 'isentinel/pnpm/pnpm-workspace-yaml' | 'isentinel/project-structure/setup' | 'isentinel/project-structure/rules' | 'isentinel/promise' | 'isentinel/react/setup' | 'isentinel/react/setup/naming' | 'isentinel/react/setup/testing-library' | 'isentinel/react/rules' | 'isentinel/react/type-aware-rules' | 'isentinel/roblox/setup' | 'isentinel/roblox/parser' | 'isentinel/roblox/type-aware-parser' | 'isentinel/roblox' | 'isentinel/roblox/rules-type-aware' | 'isentinel/roblox/format-lua/setup' | 'isentinel/roblox/format-lua' | 'isentinel/small-rules/setup' | 'isentinel/small-rules' | 'isentinel/sonarjs' | 'isentinel/spelling/setup' | 'isentinel/spelling' | 'isentinel/stylistic/setup' | 'isentinel/stylistic' | 'isentinel/test/jest/setup' | 'isentinel/test/jest/rules' | 'isentinel/test/jest/type-tests' | 'isentinel/test/vitest/setup' | 'isentinel/test/vitest/rules' | 'isentinel/test/vitest/type-tests' | 'isentinel/toml/setup' | 'isentinel/toml/rules' | 'isentinel/typescript/setup' | 'isentinel/typescript/parser' | 'isentinel/typescript/type-aware-parser' | 'isentinel/typescript/rules' | 'isentinel/typescript/rules-type-aware' | 'isentinel/typescript/erasable-syntax-only' | 'isentinel/unicorn/setup' | 'isentinel/unicorn/rules' | 'isentinel/unicorn/root' | 'isentinel/yaml/setup' | 'isentinel/yaml/rules';
28091
+ type ConfigNames = 'isentinel/eslint/comments' | 'isentinel/eslint/comments/src' | 'isentinel/e18e/rules' | 'isentinel/eslint-plugin/setup' | 'isentinel/eslint-plugin/rules' | 'isentinel/flawless/setup' | 'isentinel/flawless/rules' | 'isentinel/flawless/tsx/rules-type-aware' | 'isentinel/flawless/rules-type-aware' | 'isentinel/gitignore' | 'isentinel/ignores' | 'isentinel/imports/rules' | 'isentinel/imports/game' | 'isentinel/javascript/setup' | 'isentinel/javascript/rules' | 'isentinel/jsdoc/setup' | 'isentinel/jsdoc' | 'isentinel/jsonc/setup' | 'isentinel/jsonc/rules' | 'isentinel/jsonc/tsconfig' | 'isentinel/markdown/setup' | 'isentinel/markdown/processor' | 'isentinel/markdown/parser' | 'isentinel/markdown/disables' | 'isentinel/naming/setup' | 'isentinel/naming/ts/rules-type-aware' | 'isentinel/naming/tsx/rules-type-aware' | 'isentinel/node/rules' | 'isentinel/oxfmt/setup' | 'isentinel/oxfmt/javascript' | 'isentinel/oxfmt/typescript' | 'isentinel/oxfmt/css' | 'isentinel/oxfmt/scss' | 'isentinel/oxfmt/less' | 'isentinel/oxfmt/html' | 'isentinel/oxfmt/markdown' | 'isentinel/oxfmt/graphql' | 'isentinel/oxfmt/json' | 'isentinel/oxfmt/json5' | 'isentinel/oxfmt/yaml' | 'isentinel/oxfmt/markdown-code/javascript' | 'isentinel/oxfmt/markdown-code/typescript' | 'isentinel/oxfmt/markdown-code/css' | 'isentinel/oxfmt/markdown-code/scss' | 'isentinel/oxfmt/markdown-code/less' | 'isentinel/oxfmt/markdown-code/html' | 'isentinel/oxfmt/markdown-code/graphql' | 'isentinel/oxfmt/markdown-code/json' | 'isentinel/oxfmt/markdown-code/json5' | 'isentinel/oxfmt/markdown-code/yaml' | 'isentinel/package-json/setup' | 'isentinel/package-json' | 'isentinel/package-json/root' | 'isentinel/perfectionist/setup' | 'isentinel/perfectionist' | 'isentinel/perfectionist/jsx' | 'isentinel/pnpm/setup' | 'isentinel/pnpm/package-json' | 'isentinel/pnpm/pnpm-workspace-yaml' | 'isentinel/project-structure/setup' | 'isentinel/project-structure/rules' | 'isentinel/promise' | 'isentinel/react/setup' | 'isentinel/react/setup/naming' | 'isentinel/react/setup/testing-library' | 'isentinel/react/rules' | 'isentinel/react/type-aware-rules' | 'isentinel/roblox/setup' | 'isentinel/roblox/parser' | 'isentinel/roblox/type-aware-parser' | 'isentinel/roblox' | 'isentinel/roblox/rules-type-aware' | 'isentinel/roblox/format-lua/setup' | 'isentinel/roblox/format-lua' | 'isentinel/small-rules/setup' | 'isentinel/small-rules' | 'isentinel/sonarjs' | 'isentinel/spelling/setup' | 'isentinel/spelling' | 'isentinel/stylistic/setup' | 'isentinel/stylistic' | 'isentinel/stylistic/jsx' | 'isentinel/test/jest/setup' | 'isentinel/test/jest/rules' | 'isentinel/test/jest/type-tests' | 'isentinel/test/vitest/setup' | 'isentinel/test/vitest/rules' | 'isentinel/test/vitest/type-tests' | 'isentinel/toml/setup' | 'isentinel/toml/rules' | 'isentinel/typescript/setup' | 'isentinel/typescript/parser' | 'isentinel/typescript/type-aware-parser' | 'isentinel/typescript/rules' | 'isentinel/typescript/rules-type-aware' | 'isentinel/typescript/erasable-syntax-only' | 'isentinel/unicorn/setup' | 'isentinel/unicorn/rules' | 'isentinel/unicorn/root' | 'isentinel/yaml/setup' | 'isentinel/yaml/rules';
27274
28092
  //#endregion
27275
28093
  //#region src/utils.d.ts
27276
28094
  type ExtractRuleOptions<T> = T extends Linter.RuleEntry<infer U> ? U : never;
@@ -28315,7 +29133,7 @@ declare const GLOB_JSX = "**/*.{,c,m}jsx";
28315
29133
  declare const GLOB_TS = "**/*.{,c,m}ts";
28316
29134
  declare const GLOB_TSX = "**/*.{,c,m}tsx";
28317
29135
  declare const GLOB_DTS = "**/*.d.{,c,m}ts";
28318
- declare const GLOB_BIN: Array<string>;
29136
+ declare const GLOB_BIN: string[];
28319
29137
  declare const GLOB_STYLE = "**/*.{c,le,sc}ss";
28320
29138
  declare const GLOB_CSS = "**/*.css";
28321
29139
  declare const GLOB_POSTCSS = "**/*.{p,post}css";
@@ -28338,7 +29156,7 @@ declare const GLOB_MARKDOWN_CODE: string;
28338
29156
  declare const GLOB_MARKDOWN_BLOCKS: string;
28339
29157
  declare const GLOB_YAML = "**/*.y{,a}ml";
28340
29158
  declare const GLOB_TOML = "**/*.toml";
28341
- declare const GLOB_MISE: Array<string>;
29159
+ declare const GLOB_MISE: string[];
28342
29160
  declare const GLOB_HTML = "**/*.htm{,l}";
28343
29161
  declare const GLOB_XML = "**/*.xml";
28344
29162
  declare const GLOB_GRAPHQL = "**/*.{g,graph}ql";
@@ -28347,8 +29165,8 @@ declare const GLOB_GRAPHQL = "**/*.{g,graph}ql";
28347
29165
  * mode. They are test files, but assert nothing at runtime.
28348
29166
  */
28349
29167
  declare const GLOB_TYPE_TESTS = "**/*.{test,spec}-d.{,c,m}[jt]s{,x}";
28350
- declare const GLOB_TESTS: Array<string>;
28351
- declare const GLOB_BUILD_CONFIGS: Array<string>;
29168
+ declare const GLOB_TESTS: string[];
29169
+ declare const GLOB_BUILD_CONFIGS: string[];
28352
29170
  declare const GLOB_ALL_SRC: string[];
28353
29171
  declare const GLOB_EXCLUDE: string[];
28354
29172
  //#endregion
@@ -28421,7 +29239,7 @@ declare function flawless(options?: FlawlessRuleOptions & OptionsOverridesTypeAw
28421
29239
  * linted as standard-TS/Node land.
28422
29240
  */
28423
29241
  complementIgnores?: Array<string>;
28424
- }, prettierOptions?: PrettierOptions): Promise<Array<TypedFlatConfigItem>>;
29242
+ }, prettierOptions?: PrettierOptions): Array<TypedFlatConfigItem>;
28425
29243
  //#endregion
28426
29244
  //#region src/eslint/configs/gitignore.d.ts
28427
29245
  interface GitignoreOptions {
@@ -28444,7 +29262,7 @@ declare function javascript({ complementIgnores, isInEditor, overrides, roblox,
28444
29262
  * standard-TS/Node land.
28445
29263
  */
28446
29264
  complementIgnores?: Array<string>;
28447
- }): Promise<Array<TypedFlatConfigItem>>;
29265
+ }): Array<TypedFlatConfigItem>;
28448
29266
  //#endregion
28449
29267
  //#region src/eslint/configs/jsdoc.d.ts
28450
29268
  declare function jsdoc({ full, stylistic, type }?: JsdocOptions & OptionsProjectType & OptionsStylistic): Array<TypedFlatConfigItem>;
@@ -28470,10 +29288,10 @@ declare function jsonc({ bracketSpacing, files, formatIndent, layoutOverrides, o
28470
29288
  * loading the plugin. `test/lazy-plugin.spec.ts` asserts the two match.
28471
29289
  */
28472
29290
  declare const MARKDOWN_PROCESSOR_NAME = "@eslint/markdown/markdown";
28473
- declare function markdown({ componentExts: componentExtensions, files, overrides, type }?: OptionsComponentExtensions & OptionsFiles & OptionsOverrides & OptionsProjectType): Array<TypedFlatConfigItem>;
29291
+ declare function markdown({ antiSlop, componentExts: componentExtensions, files, overrides, type }?: FlawlessRuleOptions & OptionsComponentExtensions & OptionsFiles & OptionsOverrides & OptionsProjectType): Array<TypedFlatConfigItem>;
28474
29292
  //#endregion
28475
29293
  //#region src/eslint/configs/naming.d.ts
28476
- declare function naming(options?: NamingConfig & OptionsTypeScriptParserOptions & OptionsTypeScriptWithTypes): Promise<Array<TypedFlatConfigItem>>;
29294
+ declare function naming(options?: NamingConfig & OptionsTypeScriptParserOptions & OptionsTypeScriptWithTypes): Array<TypedFlatConfigItem>;
28477
29295
  //#endregion
28478
29296
  //#region src/eslint/configs/node.d.ts
28479
29297
  declare function node({ files, ignores }?: OptionsFiles & {
@@ -28530,11 +29348,11 @@ declare function sonarjs({ complementIgnores, isInEditor, roblox }: OptionsHasRo
28530
29348
  * standard-TS/Node land.
28531
29349
  */
28532
29350
  complementIgnores?: Array<string>;
28533
- }): Promise<Array<TypedFlatConfigItem>>;
29351
+ }): Array<TypedFlatConfigItem>;
28534
29352
  //#endregion
28535
29353
  //#region src/eslint/configs/sort.d.ts
28536
29354
  /**
28537
- * Sort GitHub Actions workflow files.
29355
+ * Sort GitHub Actions workflow, composite action and label files.
28538
29356
  *
28539
29357
  * Requires `yaml` config.
28540
29358
  *
@@ -28548,7 +29366,7 @@ declare function sortGithubAction(): Array<TypedFlatConfigItem>;
28548
29366
  *
28549
29367
  * @returns A promise resolving to an array of flat configuration items.
28550
29368
  */
28551
- declare function sortMiseToml(): Promise<Array<TypedFlatConfigItem>>;
29369
+ declare function sortMiseToml(): Array<TypedFlatConfigItem>;
28552
29370
  declare function sortPnpmWorkspace(): Array<TypedFlatConfigItem>;
28553
29371
  /**
28554
29372
  * Sort Rojo .project.json files.
@@ -28607,9 +29425,9 @@ declare function unicorn({ complementIgnores, nameReplacements, roblox, root: cu
28607
29425
  */
28608
29426
  complementIgnores?: Array<string>;
28609
29427
  root?: Array<string>;
28610
- }): Promise<Array<TypedFlatConfigItem>>;
29428
+ }): Array<TypedFlatConfigItem>;
28611
29429
  //#endregion
28612
29430
  //#region src/eslint/configs/yaml.d.ts
28613
- declare function yaml({ files, overrides, stylistic }?: OptionsFiles & OptionsOverrides & OptionsStylistic): Promise<Array<TypedFlatConfigItem>>;
29431
+ declare function yaml({ files, overrides, prettierOptions, stylistic }?: OptionsFiles & OptionsFormatters & OptionsOverrides & OptionsStylistic): Promise<Array<TypedFlatConfigItem>>;
28614
29432
  //#endregion
28615
29433
  export { type Awaitable, type ConfigNames, type ConfigSettings, type FlatConfigComposer, GLOB_ALL_JSON, GLOB_ALL_SRC, GLOB_BIN, GLOB_BUILD_CONFIGS, GLOB_CSS, GLOB_DTS, GLOB_EXCLUDE, GLOB_GRAPHQL, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_LINTABLE_EXTENSIONS, GLOB_LUA, GLOB_MARKDOWN, GLOB_MARKDOWN_BLOCKS, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_MISE, GLOB_PACKAGE_JSON, GLOB_PACKAGE_JSON_ROOT, GLOB_POSTCSS, GLOB_ROOT, GLOB_ROOT_SRC, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_SRC_EXTENSIONS, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSCONFIG, GLOB_TSX, GLOB_TYPE_TESTS, GLOB_XML, GLOB_YAML, GitignoreOptions, type JsdocOptions, MARKDOWN_PROCESSOR_NAME, type NamedFlatConfigItem, type NamedOptionsConfig, type NamingConfig, type NamingSelector, type OptionsComponentExtensions, type OptionsConfig, type OptionsE18e, type OptionsFiles, type OptionsFilesTypeAware, type OptionsFormatters, type OptionsHasRoblox, type OptionsHasTypeScript, type OptionsIsInEditor, type OptionsJest, type OptionsOverrides, type OptionsOverridesTypeAware, type OptionsPnpm, type OptionsProjectType, type OptionsStylistic, type OptionsTestFramework, type OptionsTypeScriptErasableOnly, type OptionsTypeScriptParserOptions, type OptionsTypeScriptWithTypes, type OptionsTypescript, type OptionsUnicorn, type OptionsVitest, type OxfmtOptions, type PerfectionistConfig, type PrettierOptions, type ProjectStructureConfig, ROBLOX_ALLOWED_WORDS, type ReactConfig, type ReactSettings, type Rules, type SpellCheckConfig, type StylisticConfig, StylisticConfigDefaults, type TypedFlatConfigItem, comments, isentinel as default, isentinel, defaultPluginRenaming, disables, e18e, eslintPlugin, flawless, gitignore$1 as gitignore, ignores$1 as ignores, imports, isAgentAutofixDisabled, isInAgentSession, isInEditorEnvironment, isInGitHooksOrLintStaged, javascript, jsdoc, jsonc, loadSmallRulesPlugin, markdown, naming, node, oxfmt, packageJson, perfectionist, pnpm, projectStructure, promise, react, roblox$1 as roblox, smallRules, sonarjs, sortCspell, sortGithubAction, sortMiseToml, sortPnpmWorkspace, sortRojoProject, sortTsconfig, spelling, stylistic$1 as stylistic, test, toml, typescript, unicorn, yaml };