@isentinel/eslint-config 6.2.0 → 6.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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": {
@@ -4734,6 +4730,11 @@ interface ReactRuleDefaults {
4734
4730
  "selector": "variable";
4735
4731
  }];
4736
4732
  };
4733
+ "flawless/no-unnecessary-prop-alias": {
4734
+ "*": ["error", {
4735
+ "reportConflicts": true;
4736
+ }];
4737
+ };
4737
4738
  "flawless/no-unnecessary-use-callback": {
4738
4739
  "*": "error";
4739
4740
  };
@@ -4743,11 +4744,16 @@ interface ReactRuleDefaults {
4743
4744
  "flawless/prefer-destructuring-assignment": {
4744
4745
  "*": "error";
4745
4746
  };
4747
+ "flawless/prefer-read-only-props": {
4748
+ "*": ["error", {}];
4749
+ };
4746
4750
  "flawless/purity": {
4747
4751
  "*": ["error", {}];
4748
4752
  };
4749
4753
  "flawless/react-namespace": {
4750
- "*": "error";
4754
+ "*": ["error", {
4755
+ "umdGlobal": false;
4756
+ }];
4751
4757
  };
4752
4758
  "one-var": {
4753
4759
  "*": ["off", {
@@ -4974,12 +4980,61 @@ interface ReactRuleDefaults {
4974
4980
  "small-rules/react-hooks-strict-return": {
4975
4981
  "*": "error";
4976
4982
  };
4983
+ "style/jsx-curly-brace-presence": {
4984
+ "*": ["error", {
4985
+ "props": "never";
4986
+ "children": "never";
4987
+ "propElementValues": "always";
4988
+ }];
4989
+ };
4990
+ "style/jsx-curly-spacing": {
4991
+ "*": ["off", "never"];
4992
+ };
4993
+ "style/jsx-function-call-newline": {
4994
+ "*": ["error", "multiline"];
4995
+ };
4996
+ "style/jsx-indent-props": {
4997
+ "*": {
4998
+ "severityOnly": "off";
4999
+ };
5000
+ };
5001
+ "style/jsx-max-props-per-line": {
5002
+ "*": ["off", {
5003
+ "maximum": 1;
5004
+ "when": "multiline";
5005
+ }];
5006
+ };
5007
+ "style/jsx-one-expression-per-line": {
5008
+ "*": ["off", {
5009
+ "allow": "single-child";
5010
+ }];
5011
+ };
4977
5012
  "style/jsx-self-closing-comp": {
4978
5013
  "*": ["error", {
4979
5014
  "component": true;
4980
5015
  "html": true;
4981
5016
  }];
4982
5017
  };
5018
+ "style/jsx-tag-spacing": {
5019
+ "*": ["off", {
5020
+ "closingSlash": "never";
5021
+ "beforeSelfClosing": "always";
5022
+ "afterOpening": "never";
5023
+ "beforeClosing": "never";
5024
+ }];
5025
+ };
5026
+ "style/jsx-wrap-multilines": {
5027
+ "*": ["off", {
5028
+ "declaration": "parens-new-line";
5029
+ "assignment": "parens-new-line";
5030
+ "return": "parens-new-line";
5031
+ "arrow": "parens-new-line";
5032
+ "condition": "parens-new-line";
5033
+ "logical": "parens-new-line";
5034
+ "prop": "parens-new-line";
5035
+ "propertyValue": "parens-new-line";
5036
+ }];
5037
+ };
4983
5038
  }
4984
5039
  interface SourceFeatureRuleDefaults {
4985
5040
  "eslint-plugin/consistent-output": {
@@ -5310,6 +5365,9 @@ interface TestRuleDefaults {
5310
5365
  "allowOptionalChaining": false;
5311
5366
  }];
5312
5367
  };
5368
+ "flawless/no-incompatible-assertion-types": {
5369
+ "*": "error";
5370
+ };
5313
5371
  "flawless/no-shared-mocks": {
5314
5372
  "*": "error";
5315
5373
  };
@@ -5520,9 +5578,6 @@ interface TestRuleDefaults {
5520
5578
  "ignoreStrings": "Not implemented";
5521
5579
  }];
5522
5580
  };
5523
- "sonar/no-incompatible-assertion-types": {
5524
- "*": "error";
5525
- };
5526
5581
  "sonar/no-mixed-completion-style": {
5527
5582
  "*": "error";
5528
5583
  };
@@ -5916,9 +5971,6 @@ interface TomlRuleDefaults {
5916
5971
  "sonar/bool-param-default": {
5917
5972
  "*": "error";
5918
5973
  };
5919
- "sonar/cognitive-complexity": {
5920
- "*": ["warn", 15];
5921
- };
5922
5974
  "sonar/constructor-for-side-effects": {
5923
5975
  "*": "error";
5924
5976
  };
@@ -5971,9 +6023,6 @@ interface TomlRuleDefaults {
5971
6023
  "sonar/no-empty-collection": {
5972
6024
  "*": "error";
5973
6025
  };
5974
- "sonar/no-floating-point-equality": {
5975
- "*": "error";
5976
- };
5977
6026
  "sonar/no-gratuitous-expressions": {
5978
6027
  "*": "off";
5979
6028
  };
@@ -5986,9 +6035,6 @@ interface TomlRuleDefaults {
5986
6035
  "sonar/no-identical-functions": {
5987
6036
  "*": ["error", 3];
5988
6037
  };
5989
- "sonar/no-ignored-return": {
5990
- "*": "error";
5991
- };
5992
6038
  "sonar/no-inverted-boolean-check": {
5993
6039
  "*": "error";
5994
6040
  };
@@ -6228,9 +6274,6 @@ interface YamlRuleDefaults {
6228
6274
  "sonar/bool-param-default": {
6229
6275
  "*": "error";
6230
6276
  };
6231
- "sonar/cognitive-complexity": {
6232
- "*": ["warn", 15];
6233
- };
6234
6277
  "sonar/constructor-for-side-effects": {
6235
6278
  "*": "error";
6236
6279
  };
@@ -6283,9 +6326,6 @@ interface YamlRuleDefaults {
6283
6326
  "sonar/no-empty-collection": {
6284
6327
  "*": "error";
6285
6328
  };
6286
- "sonar/no-floating-point-equality": {
6287
- "*": "error";
6288
- };
6289
6329
  "sonar/no-gratuitous-expressions": {
6290
6330
  "*": "off";
6291
6331
  };
@@ -6298,9 +6338,6 @@ interface YamlRuleDefaults {
6298
6338
  "sonar/no-identical-functions": {
6299
6339
  "*": ["error", 3];
6300
6340
  };
6301
- "sonar/no-ignored-return": {
6302
- "*": "error";
6303
- };
6304
6341
  "sonar/no-inverted-boolean-check": {
6305
6342
  "*": "error";
6306
6343
  };
@@ -6374,6 +6411,11 @@ interface YamlRuleDefaults {
6374
6411
  "sonar/use-type-alias": {
6375
6412
  "*": "error";
6376
6413
  };
6414
+ "style/max-len": {
6415
+ "*": {
6416
+ "severityOnly": "error";
6417
+ };
6418
+ };
6377
6419
  "style/multiline-comment-style": {
6378
6420
  "*": ["error", "separate-lines"];
6379
6421
  };
@@ -6496,7 +6538,7 @@ interface OverrideSiteChains {
6496
6538
  type TestChain = [TestRuleDefaults, SourceFeatureRuleDefaults, MainRuleDefaults];
6497
6539
  type ValidateOptionsWith<O, VK extends VariantKey> = ValidateSite<O, "rules", MainChain, VK> & ValidateSubOptionsFromTable<O, OverrideSiteChains, VK> & ValidateTestOption<O, TestChain, VK>;
6498
6540
  //#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
6541
+ //#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
6542
  interface FlatGitignoreOptions {
6501
6543
  /**
6502
6544
  * Name of the configuration.
@@ -7169,184 +7211,224 @@ interface RuleOptions {
7169
7211
  'eslint-plugin/unique-test-case-names'?: Linter.RuleEntry<[]>;
7170
7212
  /**
7171
7213
  * 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
7214
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/arrow-return-style/documentation.md
7173
7215
  */
7174
7216
  'flawless/arrow-return-style'?: Linter.RuleEntry<FlawlessArrowReturnStyle>;
7217
+ /**
7218
+ * Limit the Cognitive Complexity of each function
7219
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/cognitive-complexity/documentation.md
7220
+ */
7221
+ 'flawless/cognitive-complexity'?: Linter.RuleEntry<FlawlessCognitiveComplexity>;
7175
7222
  /**
7176
7223
  * 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
7224
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/jsx-shorthand-boolean/documentation.md
7178
7225
  */
7179
7226
  'flawless/jsx-shorthand-boolean'?: Linter.RuleEntry<[]>;
7180
7227
  /**
7181
7228
  * 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
7229
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/jsx-shorthand-fragment/documentation.md
7183
7230
  */
7184
7231
  'flawless/jsx-shorthand-fragment'?: Linter.RuleEntry<FlawlessJsxShorthandFragment>;
7232
+ /**
7233
+ * Limit comments by word count
7234
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/max-comment-length/documentation.md
7235
+ */
7236
+ 'flawless/max-comment-length'?: Linter.RuleEntry<FlawlessMaxCommentLength>;
7185
7237
  /**
7186
7238
  * 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
7239
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/max-lines-per-function/documentation.md
7188
7240
  */
7189
7241
  'flawless/max-lines-per-function'?: Linter.RuleEntry<FlawlessMaxLinesPerFunction>;
7190
7242
  /**
7191
7243
  * 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
7244
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/naming-convention/documentation.md
7193
7245
  */
7194
7246
  'flawless/naming-convention'?: Linter.RuleEntry<FlawlessNamingConvention>;
7195
7247
  /**
7196
7248
  * 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
7249
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-conditional-empty-object-spread/documentation.md
7198
7250
  */
7199
7251
  'flawless/no-conditional-empty-object-spread'?: Linter.RuleEntry<[]>;
7200
7252
  /**
7201
7253
  * 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
7254
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-conditional-in-test/documentation.md
7203
7255
  */
7204
7256
  'flawless/no-conditional-in-test'?: Linter.RuleEntry<FlawlessNoConditionalInTest>;
7257
+ /**
7258
+ * Disallow em dashes in comments, strings, JSX text, and Markdown prose
7259
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-em-dash/documentation.md
7260
+ */
7261
+ 'flawless/no-em-dash'?: Linter.RuleEntry<[]>;
7205
7262
  /**
7206
7263
  * 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
7264
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-export-default-arrow/documentation.md
7208
7265
  */
7209
7266
  'flawless/no-export-default-arrow'?: Linter.RuleEntry<[]>;
7210
7267
  /**
7211
7268
  * 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
7269
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-floating-point-equality/documentation.md
7213
7270
  */
7214
7271
  'flawless/no-floating-point-equality'?: Linter.RuleEntry<[]>;
7272
+ /**
7273
+ * Disallow ignoring the result of a built-in method that has no side effects
7274
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-ignored-return/documentation.md
7275
+ */
7276
+ 'flawless/no-ignored-return'?: Linter.RuleEntry<FlawlessNoIgnoredReturn>;
7277
+ /**
7278
+ * Disallow equality assertions whose operands have types that can never be equal
7279
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-incompatible-assertion-types/documentation.md
7280
+ */
7281
+ 'flawless/no-incompatible-assertion-types'?: Linter.RuleEntry<[]>;
7215
7282
  /**
7216
7283
  * 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
7284
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-known-value-widening/documentation.md
7218
7285
  */
7219
7286
  'flawless/no-known-value-widening'?: Linter.RuleEntry<[]>;
7220
7287
  /**
7221
7288
  * 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
7289
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-materialized-filter-map/documentation.md
7223
7290
  */
7224
7291
  'flawless/no-materialized-filter-map'?: Linter.RuleEntry<FlawlessNoMaterializedFilterMap>;
7225
7292
  /**
7226
7293
  * 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
7294
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-object-parameters/documentation.md
7228
7295
  */
7229
7296
  'flawless/no-object-parameters'?: Linter.RuleEntry<[]>;
7230
7297
  /**
7231
7298
  * 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
7299
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-redundant-tsconfig-options/documentation.md
7233
7300
  */
7234
7301
  'flawless/no-redundant-tsconfig-options'?: Linter.RuleEntry<[]>;
7235
7302
  /**
7236
7303
  * 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
7304
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-redundant-type-annotation/documentation.md
7238
7305
  */
7239
- 'flawless/no-redundant-type-annotation'?: Linter.RuleEntry<[]>;
7306
+ 'flawless/no-redundant-type-annotation'?: Linter.RuleEntry<FlawlessNoRedundantTypeAnnotation>;
7240
7307
  /**
7241
7308
  * 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
7309
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-reflect-get/documentation.md
7243
7310
  */
7244
7311
  'flawless/no-reflect-get'?: Linter.RuleEntry<[]>;
7245
7312
  /**
7246
7313
  * 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
7314
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-reflect-set/documentation.md
7248
7315
  */
7249
7316
  'flawless/no-reflect-set'?: Linter.RuleEntry<[]>;
7250
7317
  /**
7251
7318
  * 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
7319
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-shape-in-symbol-names/documentation.md
7253
7320
  */
7254
7321
  'flawless/no-shape-in-symbol-names'?: Linter.RuleEntry<[]>;
7255
7322
  /**
7256
7323
  * 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
7324
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-shared-mocks/documentation.md
7258
7325
  */
7259
7326
  'flawless/no-shared-mocks'?: Linter.RuleEntry<[]>;
7260
7327
  /**
7261
7328
  * 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
7329
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-shared-test-state/documentation.md
7263
7330
  */
7264
7331
  'flawless/no-shared-test-state'?: Linter.RuleEntry<FlawlessNoSharedTestState>;
7332
+ /**
7333
+ * Disallow rarely used top-level functions that only forward their parameters or read a parameter's property
7334
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-trivial-functions/documentation.md
7335
+ */
7336
+ 'flawless/no-trivial-functions'?: Linter.RuleEntry<FlawlessNoTrivialFunctions>;
7265
7337
  /**
7266
7338
  * 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
7339
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unknown-parameters/documentation.md
7268
7340
  */
7269
7341
  'flawless/no-unknown-parameters'?: Linter.RuleEntry<[]>;
7270
7342
  /**
7271
7343
  * 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
7344
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unknown-returns/documentation.md
7273
7345
  */
7274
7346
  'flawless/no-unknown-returns'?: Linter.RuleEntry<[]>;
7347
+ /**
7348
+ * Disallow unnecessary aliases when destructuring component props
7349
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unnecessary-prop-alias/documentation.md
7350
+ */
7351
+ 'flawless/no-unnecessary-prop-alias'?: Linter.RuleEntry<FlawlessNoUnnecessaryPropAlias>;
7275
7352
  /**
7276
7353
  * 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
7354
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unnecessary-use-callback/documentation.md
7278
7355
  */
7279
7356
  'flawless/no-unnecessary-use-callback'?: Linter.RuleEntry<[]>;
7280
7357
  /**
7281
7358
  * 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
7359
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unnecessary-use-memo/documentation.md
7283
7360
  */
7284
7361
  'flawless/no-unnecessary-use-memo'?: Linter.RuleEntry<[]>;
7285
7362
  /**
7286
7363
  * 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
7364
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/no-unsafe-dictionary-type/documentation.md
7288
7365
  */
7289
7366
  'flawless/no-unsafe-dictionary-type'?: Linter.RuleEntry<[]>;
7290
7367
  /**
7291
7368
  * 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
7369
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/padding-after-expect-assertions/documentation.md
7293
7370
  */
7294
7371
  'flawless/padding-after-expect-assertions'?: Linter.RuleEntry<[]>;
7295
7372
  /**
7296
7373
  * 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
7374
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-destructuring-assignment/documentation.md
7298
7375
  */
7299
7376
  'flawless/prefer-destructuring-assignment'?: Linter.RuleEntry<[]>;
7300
7377
  /**
7301
7378
  * 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
7379
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-ending-with-an-expect/documentation.md
7303
7380
  */
7304
7381
  'flawless/prefer-ending-with-an-expect'?: Linter.RuleEntry<FlawlessPreferEndingWithAnExpect>;
7305
7382
  /**
7306
7383
  * 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
7384
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-expect-assertions-count/documentation.md
7308
7385
  */
7309
7386
  'flawless/prefer-expect-assertions-count'?: Linter.RuleEntry<[]>;
7310
7387
  /**
7311
7388
  * 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
7389
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-mock-throw/documentation.md
7313
7390
  */
7314
7391
  'flawless/prefer-mock-throw'?: Linter.RuleEntry<[]>;
7315
7392
  /**
7316
7393
  * 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
7394
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-parameter-destructuring/documentation.md
7318
7395
  */
7319
7396
  'flawless/prefer-parameter-destructuring'?: Linter.RuleEntry<FlawlessPreferParameterDestructuring>;
7320
7397
  /**
7321
7398
  * 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
7399
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-read-only-props/documentation.md
7323
7400
  */
7324
7401
  'flawless/prefer-read-only-props'?: Linter.RuleEntry<FlawlessPreferReadOnlyProps>;
7325
7402
  /**
7326
7403
  * 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
7404
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/prefer-vitest-local-context/documentation.md
7328
7405
  */
7329
7406
  'flawless/prefer-vitest-local-context'?: Linter.RuleEntry<FlawlessPreferVitestLocalContext>;
7330
7407
  /**
7331
7408
  * 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
7409
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/purity/documentation.md
7333
7410
  */
7334
7411
  'flawless/purity'?: Linter.RuleEntry<FlawlessPurity>;
7335
7412
  /**
7336
7413
  * 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
7414
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/react-namespace/documentation.md
7338
7415
  */
7339
- 'flawless/react-namespace'?: Linter.RuleEntry<[]>;
7416
+ 'flawless/react-namespace'?: Linter.RuleEntry<FlawlessReactNamespace>;
7340
7417
  /**
7341
7418
  * 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
7419
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/toml-sort-keys/documentation.md
7343
7420
  */
7344
7421
  'flawless/toml-sort-keys'?: Linter.RuleEntry<FlawlessTomlSortKeys>;
7345
7422
  /**
7346
7423
  * 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
7424
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/yaml-block-key-blank-lines/documentation.md
7348
7425
  */
7349
7426
  'flawless/yaml-block-key-blank-lines'?: Linter.RuleEntry<[]>;
7427
+ /**
7428
+ * Enforce sorted YAML sequences of mappings by a key
7429
+ * @see https://github.com/christopher-buss/eslint-plugin-flawless/blob/v1.16.0/src/rules/yaml-sort-sequence-by-key/documentation.md
7430
+ */
7431
+ 'flawless/yaml-sort-sequence-by-key'?: Linter.RuleEntry<FlawlessYamlSortSequenceByKey>;
7350
7432
  /**
7351
7433
  * Enforce `for` loop update clause moving the counter in the right direction
7352
7434
  * @see https://eslint.org/docs/latest/rules/for-direction
@@ -7930,7 +8012,7 @@ interface RuleOptions {
7930
8012
  * Reports against syntax not valid for the mode (e.g., Google Closure Compiler in non-Closure mode).
7931
8013
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-syntax.md#repos-sticky-header
7932
8014
  */
7933
- 'jsdoc/check-syntax'?: Linter.RuleEntry<[]>;
8015
+ 'jsdoc/check-syntax'?: Linter.RuleEntry<JsdocCheckSyntax>;
7934
8016
  /**
7935
8017
  * Reports invalid block tag names.
7936
8018
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-tag-names.md#repos-sticky-header
@@ -8046,6 +8128,10 @@ interface RuleOptions {
8046
8128
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header
8047
8129
  */
8048
8130
  'jsdoc/no-undefined-types'?: Linter.RuleEntry<JsdocNoUndefinedTypes>;
8131
+ /**
8132
+ * Reports redundant @type tags that match or broaden the naturally inferred TypeScript type.
8133
+ */
8134
+ 'jsdoc/no-unnecessary-type-assertion'?: Linter.RuleEntry<JsdocNoUnnecessaryTypeAssertion>;
8049
8135
  /**
8050
8136
  * Normalizes labeled links in `@see` tags to a canonical `{@link}` form.
8051
8137
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/normalize-see-links.md#repos-sticky-header
@@ -8241,6 +8327,11 @@ interface RuleOptions {
8241
8327
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/text-escaping.md#repos-sticky-header
8242
8328
  */
8243
8329
  'jsdoc/text-escaping'?: Linter.RuleEntry<JsdocTextEscaping>;
8330
+ /**
8331
+ * Disallows (or requires descriptions for) `@ts-<directive>` comments, mirroring `@typescript-eslint/ban-ts-comment`.
8332
+ * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-ban-ts-comment.md#repos-sticky-header
8333
+ */
8334
+ 'jsdoc/ts-ban-ts-comment'?: Linter.RuleEntry<JsdocTsBanTsComment>;
8244
8335
  /**
8245
8336
  * Prefers either function properties or method signatures
8246
8337
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-method-signature-style.md#repos-sticky-header
@@ -10323,6 +10414,11 @@ interface RuleOptions {
10323
10414
  * @see https://perfectionist.dev/rules/sort-classes
10324
10415
  */
10325
10416
  'perfectionist/sort-classes'?: Linter.RuleEntry<PerfectionistSortClasses>;
10417
+ /**
10418
+ * Enforce sorted constructor parameters.
10419
+ * @see https://perfectionist.dev/rules/sort-constructor-parameters
10420
+ */
10421
+ 'perfectionist/sort-constructor-parameters'?: Linter.RuleEntry<PerfectionistSortConstructorParameters>;
10326
10422
  /**
10327
10423
  * Enforce sorted decorators.
10328
10424
  * @see https://perfectionist.dev/rules/sort-decorators
@@ -11172,9 +11268,14 @@ interface RuleOptions {
11172
11268
  'small-rules/ban-types'?: Linter.RuleEntry<SmallRulesBanTypes>;
11173
11269
  /**
11174
11270
  * Enforce consistent spelling of compound words in identifiers.
11175
- * @see https://docs.howmanysmall.com/small-rules/rules/naming/consistent-compound-words/
11271
+ * @see https://docs.howmanysmall.com/small-rules/rules/english/consistent-compound-words/
11176
11272
  */
11177
11273
  'small-rules/consistent-compound-words'?: Linter.RuleEntry<SmallRulesConsistentCompoundWords>;
11274
+ /**
11275
+ * 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.
11276
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/curly/
11277
+ */
11278
+ 'small-rules/curly'?: Linter.RuleEntry<SmallRulesCurly>;
11178
11279
  /**
11179
11280
  * Require a matching enable comment for every `oxlint-disable` or `eslint-disable` block directive.
11180
11281
  * @see https://docs.howmanysmall.com/small-rules/rules/general/directive-disable-enable-pair/
@@ -11230,6 +11331,11 @@ interface RuleOptions {
11230
11331
  * @see https://docs.howmanysmall.com/small-rules/rules/react/memoized-effect-dependencies/
11231
11332
  */
11232
11333
  'small-rules/memoized-effect-dependencies'?: Linter.RuleEntry<SmallRulesMemoizedEffectDependencies>;
11334
+ /**
11335
+ * Disallow adjusting state in an effect when a prop changes.
11336
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-adjust-state-on-prop-change/
11337
+ */
11338
+ 'small-rules/no-adjust-state-on-prop-change'?: Linter.RuleEntry<SmallRulesNoAdjustStateOnPropChange>;
11233
11339
  /**
11234
11340
  * Disallow array constructor element forms and enforce roblox-ts-aware constructor patterns.
11235
11341
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-array-constructor-elements/
@@ -11260,6 +11366,21 @@ interface RuleOptions {
11260
11366
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-cascading-set-state/
11261
11367
  */
11262
11368
  'small-rules/no-cascading-set-state'?: Linter.RuleEntry<[]>;
11369
+ /**
11370
+ * Disallow chaining state changes in an effect.
11371
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-chain-state-updates/
11372
+ */
11373
+ 'small-rules/no-chain-state-updates'?: Linter.RuleEntry<SmallRulesNoChainStateUpdates>;
11374
+ /**
11375
+ * Disallow chained TypeScript as and angle-bracket assertions, including parenthesized chains.
11376
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-chained-type-assertions/
11377
+ */
11378
+ 'small-rules/no-chained-type-assertions'?: Linter.RuleEntry<SmallRulesNoChainedTypeAssertions>;
11379
+ /**
11380
+ * Disallow Cliffy `.action` handlers that only forward their arguments to another function.
11381
+ * @see https://docs.howmanysmall.com/small-rules/rules/cliffy/no-cliffy-action-wrapper/
11382
+ */
11383
+ 'small-rules/no-cliffy-action-wrapper'?: Linter.RuleEntry<SmallRulesNoCliffyActionWrapper>;
11263
11384
  /**
11264
11385
  * Ban new Color3(...) except new Color3() or new Color3(0, 0, 0). Use Color3.fromRGB() instead.
11265
11386
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-color3-constructor/
@@ -11270,6 +11391,11 @@ interface RuleOptions {
11270
11391
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-commented-code/
11271
11392
  */
11272
11393
  'small-rules/no-commented-code'?: Linter.RuleEntry<SmallRulesNoCommentedCode>;
11394
+ /**
11395
+ * Disallow object spreads that conditionally spread an empty object to omit fields.
11396
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-conditional-empty-object-spread/
11397
+ */
11398
+ 'small-rules/no-conditional-empty-object-spread'?: Linter.RuleEntry<[]>;
11273
11399
  /**
11274
11400
  * Disallow constant conditions, but allow constant loops that include loop exits such as break, return, or configured calls.
11275
11401
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-constant-condition-with-break/
@@ -11280,18 +11406,38 @@ interface RuleOptions {
11280
11406
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-dead-store/
11281
11407
  */
11282
11408
  'small-rules/no-dead-store'?: Linter.RuleEntry<[]>;
11409
+ /**
11410
+ * Disallow storing derived state in an effect.
11411
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-derived-state/
11412
+ */
11413
+ 'small-rules/no-derived-state'?: Linter.RuleEntry<SmallRulesNoDerivedState>;
11414
+ /**
11415
+ * Warn when a Promise rejection handler explicitly discards the failure and resolves to undefined.
11416
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-discarded-rejection/
11417
+ */
11418
+ 'small-rules/no-discarded-rejection'?: Linter.RuleEntry<[]>;
11283
11419
  /**
11284
11420
  * Use throw instead of error().
11285
11421
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-error/
11286
11422
  */
11287
11423
  'small-rules/no-error'?: Linter.RuleEntry<[]>;
11424
+ /**
11425
+ * Disallow using state and an effect as an event handler.
11426
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-event-handler/
11427
+ */
11428
+ 'small-rules/no-event-handler'?: Linter.RuleEntry<SmallRulesNoEventHandler>;
11288
11429
  /**
11289
11430
  * Disallow sending Events back to the same player inside an Events.connect callback; use Functions for request/response.
11290
11431
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-events-in-events-callback/
11291
11432
  */
11292
11433
  'small-rules/no-events-in-events-callback'?: Linter.RuleEntry<SmallRulesNoEventsInEventsCallback>;
11293
11434
  /**
11294
- * Disallow map(...) directly after filter(...).
11435
+ * Disallow subscribing to an external store in an effect.
11436
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-external-store-subscription/
11437
+ */
11438
+ 'small-rules/no-external-store-subscription'?: Linter.RuleEntry<SmallRulesNoExternalStoreSubscription>;
11439
+ /**
11440
+ * Disallow `Array.prototype.map(...)` directly after `Array.prototype.filter(...)`.
11295
11441
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-filter-map-chain/
11296
11442
  */
11297
11443
  'small-rules/no-filter-map-chain'?: Linter.RuleEntry<[]>;
@@ -11310,6 +11456,11 @@ interface RuleOptions {
11310
11456
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-god-components/
11311
11457
  */
11312
11458
  'small-rules/no-god-components'?: Linter.RuleEntry<SmallRulesNoGodComponents>;
11459
+ /**
11460
+ * Disallow redundant Jecs World.has guards around World.remove calls.
11461
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/jecs/no-has-before-remove-in-jecs/
11462
+ */
11463
+ 'small-rules/no-has-before-remove-in-jecs'?: Linter.RuleEntry<[]>;
11313
11464
  /**
11314
11465
  * Disallow Ianitor validator creation inside function bodies. Hoist to module scope to avoid recreating validators on every call.
11315
11466
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-ianitor-in-function-body/
@@ -11321,7 +11472,7 @@ interface RuleOptions {
11321
11472
  */
11322
11473
  'small-rules/no-ianitor-success-access'?: Linter.RuleEntry<[]>;
11323
11474
  /**
11324
- * Disallow pointless identity `.map()` calls that return the parameter unchanged
11475
+ * Disallow pointless identity `Array.prototype.map()` calls that return the parameter unchanged
11325
11476
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-identity-map/
11326
11477
  */
11327
11478
  'small-rules/no-identity-map'?: Linter.RuleEntry<SmallRulesNoIdentityMap>;
@@ -11330,56 +11481,146 @@ interface RuleOptions {
11330
11481
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-increment-decrement/
11331
11482
  */
11332
11483
  'small-rules/no-increment-decrement'?: Linter.RuleEntry<SmallRulesNoIncrementDecrement>;
11484
+ /**
11485
+ * Disallow initializing state in an effect.
11486
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-initialize-state/
11487
+ */
11488
+ 'small-rules/no-initialize-state'?: Linter.RuleEntry<SmallRulesNoInitializeState>;
11333
11489
  /**
11334
11490
  * Prevent inline properties from being passed to memoized components.
11335
11491
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-inline-property-on-memo-component/
11336
11492
  */
11337
11493
  'small-rules/no-inline-property-on-memo-component'?: Linter.RuleEntry<[]>;
11494
+ /**
11495
+ * Disallow inline object types in parameter and return type annotations; declare a named interface instead.
11496
+ * @see https://docs.howmanysmall.com/small-rules/rules/naming/no-inline-signature-types/
11497
+ */
11498
+ 'small-rules/no-inline-signature-types'?: Linter.RuleEntry<SmallRulesNoInlineSignatureTypes>;
11338
11499
  /**
11339
11500
  * Detect instance methods that do not use 'this' and suggest converting them to standalone functions for better performance in roblox-ts.
11340
11501
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-instance-methods-without-this/
11341
11502
  */
11342
11503
  'small-rules/no-instance-methods-without-this'?: Linter.RuleEntry<SmallRulesNoInstanceMethodsWithoutThis>;
11504
+ /**
11505
+ * Disallow a spread in JSX child position.
11506
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-jsx-spread-child/
11507
+ */
11508
+ 'small-rules/no-jsx-spread-child'?: Linter.RuleEntry<[]>;
11509
+ /**
11510
+ * Disallow syntactically established values from flowing into explicitly broad or anonymous target types that discard useful evidence.
11511
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-known-value-widening/
11512
+ */
11513
+ 'small-rules/no-known-value-widening'?: Linter.RuleEntry<[]>;
11343
11514
  /**
11344
11515
  * Disallow mutating a loop iterable during iteration.
11345
11516
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-loop-iterable-mutation/
11346
11517
  */
11347
11518
  'small-rules/no-loop-iterable-mutation'?: Linter.RuleEntry<[]>;
11519
+ /**
11520
+ * Disallow Vitest and Jest module mocking; tests must replace dependencies through real interfaces.
11521
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-module-mocking/
11522
+ */
11523
+ 'small-rules/no-module-mocking'?: Linter.RuleEntry<[]>;
11524
+ /**
11525
+ * Disallow defining more than one Cliffy command in a file.
11526
+ * @see https://docs.howmanysmall.com/small-rules/rules/cliffy/no-multiple-cliffy-commands/
11527
+ */
11528
+ 'small-rules/no-multiple-cliffy-commands'?: Linter.RuleEntry<SmallRulesNoMultipleCliffyCommands>;
11348
11529
  /**
11349
11530
  * 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
11531
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-native-properties-spread/
11351
11532
  */
11352
11533
  'small-rules/no-native-properties-spread'?: Linter.RuleEntry<[]>;
11534
+ /**
11535
+ * Disallow nesting a hook call inside another hook call.
11536
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-nested-hook-calls/
11537
+ */
11538
+ 'small-rules/no-nested-hook-calls'?: Linter.RuleEntry<[]>;
11353
11539
  /**
11354
11540
  * Disallow configured constructor calls (default: new Instance) inside React useMemo callbacks.
11355
11541
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-new-instance-in-use-memo/
11356
11542
  */
11357
11543
  'small-rules/no-new-instance-in-use-memo'?: Linter.RuleEntry<SmallRulesNoNewInstanceInUseMemo>;
11544
+ /**
11545
+ * Disallow object function parameters; inputs must use an owner-provided type and be parsed at their boundary.
11546
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-object-parameters/
11547
+ */
11548
+ 'small-rules/no-object-parameters'?: Linter.RuleEntry<[]>;
11549
+ /**
11550
+ * Disallow passing data to parents in an effect.
11551
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-pass-data-to-parent/
11552
+ */
11553
+ 'small-rules/no-pass-data-to-parent'?: Linter.RuleEntry<SmallRulesNoPassDataToParent>;
11554
+ /**
11555
+ * Disallow passing live state to parents in an effect.
11556
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-pass-live-state-to-parent/
11557
+ */
11558
+ 'small-rules/no-pass-live-state-to-parent'?: Linter.RuleEntry<SmallRulesNoPassLiveStateToParent>;
11358
11559
  /**
11359
11560
  * Use Log instead of print().
11360
11561
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-print/
11361
11562
  */
11362
11563
  'small-rules/no-print'?: Linter.RuleEntry<[]>;
11564
+ /**
11565
+ * Disallow real temp directories (`os.tmpdir`, `fs.mkdtemp`) in unit tests.
11566
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-real-temporary-directory/
11567
+ */
11568
+ 'small-rules/no-real-temporary-directory'?: Linter.RuleEntry<SmallRulesNoRealTemporaryDirectory>;
11363
11569
  /**
11364
11570
  * Disallow recursive function calls to prevent stack overflow.
11365
11571
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-recursive/
11366
11572
  */
11367
11573
  'small-rules/no-recursive'?: Linter.RuleEntry<SmallRulesNoRecursive>;
11574
+ /**
11575
+ * Disallow copying growing reducer accumulators with Object.assign, Array.from, or array copy methods.
11576
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-reduce-accumulator-copy/
11577
+ */
11578
+ 'small-rules/no-reduce-accumulator-copy'?: Linter.RuleEntry<[]>;
11368
11579
  /**
11369
11580
  * Disallow redundant uiaspectratioconstraint children inside components that already manage their own aspect ratio internally.
11370
11581
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-redundant-aspect-ratio-constraint/
11371
11582
  */
11372
11583
  'small-rules/no-redundant-aspect-ratio-constraint'?: Linter.RuleEntry<[]>;
11584
+ /**
11585
+ * Disallow Reflect.apply; call typed functions directly or model dynamic dispatch behind an interface.
11586
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-reflect-apply/
11587
+ */
11588
+ 'small-rules/no-reflect-apply'?: Linter.RuleEntry<[]>;
11589
+ /**
11590
+ * Disallow Reflect.get; use typed property access or parse dynamic input into a domain type.
11591
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-reflect-get/
11592
+ */
11593
+ 'small-rules/no-reflect-get'?: Linter.RuleEntry<[]>;
11373
11594
  /**
11374
11595
  * Disallow non-component functions that return JSX or React elements.
11375
11596
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-render-helper-functions/
11376
11597
  */
11377
11598
  'small-rules/no-render-helper-functions'?: Linter.RuleEntry<[]>;
11599
+ /**
11600
+ * Disallow resetting all state in an effect when a prop changes.
11601
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/no-reset-all-state-on-property-change/
11602
+ */
11603
+ 'small-rules/no-reset-all-state-on-prop-change'?: Linter.RuleEntry<SmallRulesNoResetAllStateOnPropChange>;
11378
11604
  /**
11379
11605
  * Disallow assignment to restricted object properties.
11380
11606
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-restricted-property-assignment/
11381
11607
  */
11382
11608
  'small-rules/no-restricted-property-assignment'?: Linter.RuleEntry<SmallRulesNoRestrictedPropertyAssignment>;
11609
+ /**
11610
+ * Disallow runtime code in files that hold only types.
11611
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-runtime-in-type-files/
11612
+ */
11613
+ 'small-rules/no-runtime-in-type-files'?: Linter.RuleEntry<SmallRulesNoRuntimeInTypeFiles>;
11614
+ /**
11615
+ * Disallow runtime typeof checks; external values must be decoded into meaningful types at their I/O boundary.
11616
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-runtime-typeof/
11617
+ */
11618
+ 'small-rules/no-runtime-typeof'?: Linter.RuleEntry<SmallRulesNoRuntimeTypeof>;
11619
+ /**
11620
+ * Disallow the case-insensitive substring "shape" in JavaScript, TypeScript, private, and JSX symbol names.
11621
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-shape-in-symbol-names/
11622
+ */
11623
+ 'small-rules/no-shape-in-symbol-names'?: Linter.RuleEntry<[]>;
11383
11624
  /**
11384
11625
  * Disallow the .spec.{ts,tsx} file extension for test files. Use .test.{ts,tsx} instead.
11385
11626
  * @see https://docs.howmanysmall.com/small-rules/rules/naming/no-spec-file-extension/
@@ -11400,6 +11641,11 @@ interface RuleOptions {
11400
11641
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-task-wait/
11401
11642
  */
11402
11643
  'small-rules/no-task-wait'?: Linter.RuleEntry<[]>;
11644
+ /**
11645
+ * Disallow per-test timeouts in unit tests.
11646
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-test-timeout/
11647
+ */
11648
+ 'small-rules/no-test-timeout'?: Linter.RuleEntry<SmallRulesNoTestTimeout>;
11403
11649
  /**
11404
11650
  * Disallow assertions that always succeed or compare against freshly created values.
11405
11651
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-trivial-assertions/
@@ -11410,6 +11656,31 @@ interface RuleOptions {
11410
11656
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-underscore-react-props/
11411
11657
  */
11412
11658
  'small-rules/no-underscore-react-props'?: Linter.RuleEntry<[]>;
11659
+ /**
11660
+ * Disallow explicitly unknown function parameters except `cause` and the parameter named by a type predicate; decode unknown input at its I/O boundary instead.
11661
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-unknown-parameters/
11662
+ */
11663
+ 'small-rules/no-unknown-parameters'?: Linter.RuleEntry<[]>;
11664
+ /**
11665
+ * Disallow functions whose explicit return contract is unknown or Promise<unknown>.
11666
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-unknown-returns/
11667
+ */
11668
+ 'small-rules/no-unknown-returns'?: Linter.RuleEntry<[]>;
11669
+ /**
11670
+ * Disallow type aliases whose resolved type is unknown; unknown must remain visible at an allowed boundary.
11671
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-unknown-type-aliases/
11672
+ */
11673
+ 'small-rules/no-unknown-type-aliases'?: Linter.RuleEntry<[]>;
11674
+ /**
11675
+ * Disallow object-dictionary contracts whose direct value type is unknown, any, object, {}, or a union/alias containing one of those escape hatches.
11676
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-unsafe-dictionary-type/
11677
+ */
11678
+ 'small-rules/no-unsafe-dictionary-type'?: Linter.RuleEntry<[]>;
11679
+ /**
11680
+ * Disallow syntax that roblox-ts cannot compile to Luau.
11681
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-unsupported-syntax/
11682
+ */
11683
+ 'small-rules/no-unsupported-syntax'?: Linter.RuleEntry<SmallRulesNoUnsupportedSyntax>;
11413
11684
  /**
11414
11685
  * Disallow unused imports
11415
11686
  * @see https://docs.howmanysmall.com/small-rules/rules/general/no-unused-imports/
@@ -11440,6 +11711,11 @@ interface RuleOptions {
11440
11711
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-useless-default/
11441
11712
  */
11442
11713
  'small-rules/no-useless-default'?: Linter.RuleEntry<[]>;
11714
+ /**
11715
+ * Disallow equality comparisons against an empty-string literal.
11716
+ * @see https://docs.howmanysmall.com/small-rules/rules/general/no-useless-empty-string-comparison/
11717
+ */
11718
+ 'small-rules/no-useless-empty-string-comparison'?: Linter.RuleEntry<SmallRulesNoUselessEmptyStringComparison>;
11443
11719
  /**
11444
11720
  * 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
11721
  * @see https://docs.howmanysmall.com/small-rules/rules/react/no-useless-use-effect/
@@ -11465,6 +11741,11 @@ interface RuleOptions {
11465
11741
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/no-warn/
11466
11742
  */
11467
11743
  'small-rules/no-warn'?: Linter.RuleEntry<[]>;
11744
+ /**
11745
+ * Disallow local const flows that explicitly widen a known value before asserting the widened binding to a narrower type.
11746
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/no-widen-then-assert/
11747
+ */
11748
+ 'small-rules/no-widen-then-assert'?: Linter.RuleEntry<[]>;
11468
11749
  /**
11469
11750
  * Require all imports to be type-only imports. Benchmarks cannot import non-types because the benchmarker plugin will throw an error.
11470
11751
  * @see https://docs.howmanysmall.com/small-rules/rules/general/only-type-imports/
@@ -11525,6 +11806,11 @@ interface RuleOptions {
11525
11806
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/prefer-math-min-max/
11526
11807
  */
11527
11808
  'small-rules/prefer-math-min-max'?: Linter.RuleEntry<[]>;
11809
+ /**
11810
+ * Move discarded Jecs query component values into a membership-only with filter.
11811
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/jecs/prefer-membership-filter-in-jecs/
11812
+ */
11813
+ 'small-rules/prefer-membership-filter-in-jecs'?: Linter.RuleEntry<[]>;
11528
11814
  /**
11529
11815
  * Prefer Modding.inspect over manually enumerating every enum member in a Record<Enum, true>.
11530
11816
  * @see https://docs.howmanysmall.com/small-rules/rules/roblox/prefer-modding-inspect/
@@ -11535,6 +11821,16 @@ interface RuleOptions {
11535
11821
  * @see https://docs.howmanysmall.com/small-rules/rules/general/prefer-module-scope-constants/
11536
11822
  */
11537
11823
  'small-rules/prefer-module-scope-constants'?: Linter.RuleEntry<[]>;
11824
+ /**
11825
+ * Prefer table.clone over a manual shallow Map or Set copy loop.
11826
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/prefer-native-collection-copy/
11827
+ */
11828
+ 'small-rules/prefer-native-collection-copy'?: Linter.RuleEntry<[]>;
11829
+ /**
11830
+ * Disallow `undefined` in a function parameter's type union; declare the parameter optional with `?` instead.
11831
+ * @see https://docs.howmanysmall.com/small-rules/rules/naming/prefer-optional-parameter/
11832
+ */
11833
+ 'small-rules/prefer-optional-parameter'?: Linter.RuleEntry<[]>;
11538
11834
  /**
11539
11835
  * Prefer local EqualPadding and DirectionalPadding components over matching <uipadding /> declarations.
11540
11836
  * @see https://docs.howmanysmall.com/small-rules/rules/react/prefer-padding-components/
@@ -11552,12 +11848,12 @@ interface RuleOptions {
11552
11848
  'small-rules/prefer-sequence-overloads'?: Linter.RuleEntry<[]>;
11553
11849
  /**
11554
11850
  * 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/
11851
+ * @see https://docs.howmanysmall.com/small-rules/rules/roblox/jecs/prefer-single-world-query-in-jecs/
11556
11852
  */
11557
- 'small-rules/prefer-single-world-query'?: Linter.RuleEntry<[]>;
11853
+ 'small-rules/prefer-single-world-query-in-jecs'?: Linter.RuleEntry<[]>;
11558
11854
  /**
11559
11855
  * Prefer singular naming for enums.
11560
- * @see https://docs.howmanysmall.com/small-rules/rules/naming/prefer-singular-enums/
11856
+ * @see https://docs.howmanysmall.com/small-rules/rules/english/prefer-singular-enums/
11561
11857
  */
11562
11858
  'small-rules/prefer-singular-enums'?: Linter.RuleEntry<[]>;
11563
11859
  /**
@@ -11577,7 +11873,7 @@ interface RuleOptions {
11577
11873
  'small-rules/prefer-use-reducer'?: Linter.RuleEntry<[]>;
11578
11874
  /**
11579
11875
  * Prevent abbreviations.
11580
- * @see https://docs.howmanysmall.com/small-rules/rules/naming/prevent-abbreviations/
11876
+ * @see https://docs.howmanysmall.com/small-rules/rules/english/prevent-abbreviations/
11581
11877
  */
11582
11878
  'small-rules/prevent-abbreviations'?: Linter.RuleEntry<SmallRulesPreventAbbreviations>;
11583
11879
  /**
@@ -11615,6 +11911,16 @@ interface RuleOptions {
11615
11911
  * @see https://docs.howmanysmall.com/small-rules/rules/react/require-react-display-names/
11616
11912
  */
11617
11913
  'small-rules/require-react-display-names'?: Linter.RuleEntry<SmallRulesRequireReactDisplayNames>;
11914
+ /**
11915
+ * Require readable spacing between declarations and logical statement groups.
11916
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/require-readable-spacing/
11917
+ */
11918
+ 'small-rules/require-readable-spacing'?: Linter.RuleEntry<SmallRulesRequireReadableSpacing>;
11919
+ /**
11920
+ * 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.
11921
+ * @see https://docs.howmanysmall.com/small-rules/rules/anti-slop/require-safety-comment-for-type-assertion/
11922
+ */
11923
+ 'small-rules/require-safety-comment-for-type-assertion'?: Linter.RuleEntry<SmallRulesRequireSafetyCommentForTypeAssertion>;
11618
11924
  /**
11619
11925
  * Require braces around switch case bodies selected by line span or statement count.
11620
11926
  * @see https://docs.howmanysmall.com/small-rules/rules/general/require-switch-case-braces/
@@ -11626,7 +11932,12 @@ interface RuleOptions {
11626
11932
  */
11627
11933
  'small-rules/require-throw-error-capture'?: Linter.RuleEntry<SmallRulesRequireThrowErrorCapture>;
11628
11934
  /**
11629
- * Require the 'u' or 'v' unicode flag on calls named regex().
11935
+ * Require React hooks to be declared in a `.tsx` file.
11936
+ * @see https://docs.howmanysmall.com/small-rules/rules/react/require-tsx-for-hooks/
11937
+ */
11938
+ 'small-rules/require-tsx-for-hooks'?: Linter.RuleEntry<[]>;
11939
+ /**
11940
+ * Require the 'u' or 'v' unicode flag on calls named `regex()`.
11630
11941
  * @see https://docs.howmanysmall.com/small-rules/rules/general/require-unicode-regex/
11631
11942
  */
11632
11943
  'small-rules/require-unicode-regex'?: Linter.RuleEntry<[]>;
@@ -11635,6 +11946,11 @@ interface RuleOptions {
11635
11946
  * @see https://docs.howmanysmall.com/small-rules/rules/react/rerender-memo-with-default-value/
11636
11947
  */
11637
11948
  'small-rules/rerender-memo-with-default-value'?: Linter.RuleEntry<[]>;
11949
+ /**
11950
+ * Require function and method names to begin with a verb.
11951
+ * @see https://docs.howmanysmall.com/small-rules/rules/english/starts-with-verb/
11952
+ */
11953
+ 'small-rules/starts-with-verb'?: Linter.RuleEntry<SmallRulesStartsWithVerb>;
11638
11954
  /**
11639
11955
  * Prevent imports that reach into another component's nested modules.
11640
11956
  * @see https://docs.howmanysmall.com/small-rules/rules/react/strict-component-boundaries/
@@ -17228,11 +17544,20 @@ type FlawlessArrowReturnStyle = [] | [{
17228
17544
  printWidth?: number;
17229
17545
  });
17230
17546
  }];
17547
+ // ----- flawless/cognitive-complexity -----
17548
+ type FlawlessCognitiveComplexity = [] | [{
17549
+ threshold?: number;
17550
+ }];
17231
17551
  // ----- flawless/jsx-shorthand-fragment -----
17232
17552
  type FlawlessJsxShorthandFragment = [] | [{
17233
17553
  fragmentName?: string;
17234
17554
  mode?: ("element" | "syntax");
17235
17555
  }];
17556
+ // ----- flawless/max-comment-length -----
17557
+ type FlawlessMaxCommentLength = [] | [{
17558
+ ignoreJSDoc?: boolean;
17559
+ maximumWords?: number;
17560
+ }];
17236
17561
  // ----- flawless/max-lines-per-function -----
17237
17562
  type FlawlessMaxLinesPerFunction = [] | [{
17238
17563
  countFrom?: ("body" | "function");
@@ -17247,6 +17572,7 @@ type _FlawlessNamingConventionFormatOptionsConfig = (_FlawlessNamingConventionPr
17247
17572
  type _FlawlessNamingConventionPredefinedFormats = ("camelCase" | "strictCamelCase" | "PascalCase" | "StrictPascalCase" | "snake_case" | "UPPER_CASE");
17248
17573
  type _FlawlessNamingConventionUnderscoreOptions = ("forbid" | "allow" | "require" | "requireDouble" | "allowDouble" | "allowSingleOrDouble");
17249
17574
  type _FlawlessNamingConvention_PrefixSuffixConfig = string[];
17575
+ type _FlawlessNamingConventionComponentPropConfig = true;
17250
17576
  type _FlawlessNamingConvention_TypeArgumentReferenceMatcher = (_FlawlessNamingConventionTypeArgumentReferenceMatcher & {
17251
17577
  name?: string;
17252
17578
  from?: string;
@@ -17296,6 +17622,7 @@ type FlawlessNamingConvention = ({
17296
17622
  prefix?: _FlawlessNamingConvention_PrefixSuffixConfig;
17297
17623
  suffix?: _FlawlessNamingConvention_PrefixSuffixConfig;
17298
17624
  trailingUnderscore?: _FlawlessNamingConventionUnderscoreOptions;
17625
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17299
17626
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17300
17627
  modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace" | "constAsserted")[];
17301
17628
  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 +17640,7 @@ type FlawlessNamingConvention = ({
17313
17640
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17314
17641
  selector: "default";
17315
17642
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
17643
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17316
17644
  modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace" | "constAsserted")[];
17317
17645
  } | {
17318
17646
  allowedWords?: _FlawlessNamingConvention_AllowedWordsConfig;
@@ -17394,6 +17722,7 @@ type FlawlessNamingConvention = ({
17394
17722
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17395
17723
  selector: "memberLike";
17396
17724
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
17725
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17397
17726
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[];
17398
17727
  } | {
17399
17728
  allowedWords?: _FlawlessNamingConvention_AllowedWordsConfig;
@@ -17435,6 +17764,7 @@ type FlawlessNamingConvention = ({
17435
17764
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17436
17765
  selector: "typeProperty";
17437
17766
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
17767
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17438
17768
  modifiers?: ("public" | "readonly" | "requiresQuotes")[];
17439
17769
  types?: _FlawlessNamingConventionTypeMatcher[];
17440
17770
  } | {
@@ -17463,6 +17793,7 @@ type FlawlessNamingConvention = ({
17463
17793
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17464
17794
  selector: "property";
17465
17795
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
17796
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17466
17797
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[];
17467
17798
  types?: _FlawlessNamingConventionTypeMatcher[];
17468
17799
  } | {
@@ -17505,6 +17836,7 @@ type FlawlessNamingConvention = ({
17505
17836
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17506
17837
  selector: "typeMethod";
17507
17838
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
17839
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17508
17840
  modifiers?: ("public" | "requiresQuotes")[];
17509
17841
  types?: _FlawlessNamingConventionTypeMatcher[];
17510
17842
  } | {
@@ -17519,6 +17851,7 @@ type FlawlessNamingConvention = ({
17519
17851
  filter?: (string | _FlawlessNamingConvention_MatchRegexConfig);
17520
17852
  selector: "method";
17521
17853
  typeArgumentOf?: _FlawlessNamingConvention_TypeArgumentOfConfig;
17854
+ componentProp?: _FlawlessNamingConventionComponentPropConfig;
17522
17855
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[];
17523
17856
  types?: _FlawlessNamingConventionTypeMatcher[];
17524
17857
  } | {
@@ -17690,14 +18023,31 @@ type FlawlessNoConditionalInTest = [] | [{
17690
18023
  additionalTestBlockFunctions?: string[];
17691
18024
  allowOptionalChaining?: boolean;
17692
18025
  }];
18026
+ // ----- flawless/no-ignored-return -----
18027
+ type FlawlessNoIgnoredReturn = [] | [{
18028
+ pureFunctions?: string[];
18029
+ }];
17693
18030
  // ----- flawless/no-materialized-filter-map -----
17694
18031
  type FlawlessNoMaterializedFilterMap = [] | [{
17695
18032
  iteratorHelpers?: boolean;
17696
18033
  }];
18034
+ // ----- flawless/no-redundant-type-annotation -----
18035
+ type FlawlessNoRedundantTypeAnnotation = [] | [{
18036
+ allowExpressions?: boolean;
18037
+ checkReturnTypes?: boolean;
18038
+ }];
17697
18039
  // ----- flawless/no-shared-test-state -----
17698
18040
  type FlawlessNoSharedTestState = [] | [{
17699
18041
  additionalMutatingMethods?: string[];
17700
18042
  }];
18043
+ // ----- flawless/no-trivial-functions -----
18044
+ type FlawlessNoTrivialFunctions = [] | [{
18045
+ minimumReferences?: number;
18046
+ }];
18047
+ // ----- flawless/no-unnecessary-prop-alias -----
18048
+ type FlawlessNoUnnecessaryPropAlias = [] | [{
18049
+ reportConflicts?: boolean;
18050
+ }];
17701
18051
  // ----- flawless/prefer-ending-with-an-expect -----
17702
18052
  type FlawlessPreferEndingWithAnExpect = [] | [{
17703
18053
  additionalTestBlockFunctions?: string[];
@@ -17722,6 +18072,10 @@ type FlawlessPurity = [] | [{
17722
18072
  additionalFunctions?: string[];
17723
18073
  ignore?: string[];
17724
18074
  }];
18075
+ // ----- flawless/react-namespace -----
18076
+ type FlawlessReactNamespace = [] | [{
18077
+ umdGlobal?: boolean;
18078
+ }];
17725
18079
  // ----- flawless/toml-sort-keys -----
17726
18080
  type FlawlessTomlSortKeys = {
17727
18081
  order: (string[] | {
@@ -17731,10 +18085,28 @@ type FlawlessTomlSortKeys = {
17731
18085
  });
17732
18086
  pathPattern: string;
17733
18087
  }[];
17734
- // ----- format-lua/stylua -----
17735
- type FormatLuaStylua = [] | [{
17736
- language?: string;
17737
- languageOptions?: {
18088
+ // ----- flawless/yaml-sort-sequence-by-key -----
18089
+ type FlawlessYamlSortSequenceByKey = [{
18090
+ key: string;
18091
+ order?: {
18092
+ caseSensitive?: boolean;
18093
+ natural?: boolean;
18094
+ type?: ("asc" | "desc");
18095
+ };
18096
+ pathPattern: string;
18097
+ }, ...({
18098
+ key: string;
18099
+ order?: {
18100
+ caseSensitive?: boolean;
18101
+ natural?: boolean;
18102
+ type?: ("asc" | "desc");
18103
+ };
18104
+ pathPattern: string;
18105
+ })[]];
18106
+ // ----- format-lua/stylua -----
18107
+ type FormatLuaStylua = [] | [{
18108
+ language?: string;
18109
+ languageOptions?: {
17738
18110
  [k: string]: unknown | undefined;
17739
18111
  };
17740
18112
  [k: string]: unknown | undefined;
@@ -18012,6 +18384,7 @@ type JestValidTitle = [] | [{
18012
18384
  }];
18013
18385
  // ----- jsdoc/check-alignment -----
18014
18386
  type JsdocCheckAlignment = [] | [{
18387
+ ignoreEmptyLines?: boolean;
18015
18388
  innerIndent?: number;
18016
18389
  }];
18017
18390
  // ----- jsdoc/check-examples -----
@@ -18039,6 +18412,7 @@ type JsdocCheckExamples = [] | [{
18039
18412
  // ----- jsdoc/check-indentation -----
18040
18413
  type JsdocCheckIndentation = [] | [{
18041
18414
  allowIndentedSections?: boolean;
18415
+ allowNoSpaceAfterAsterisk?: boolean;
18042
18416
  excludeTags?: string[];
18043
18417
  }];
18044
18418
  // ----- jsdoc/check-line-alignment -----
@@ -18058,18 +18432,26 @@ type JsdocCheckLineAlignment = [] | [("always" | "never" | "any")] | [("always"
18058
18432
  // ----- jsdoc/check-param-names -----
18059
18433
  type JsdocCheckParamNames = [] | [{
18060
18434
  allowExtraTrailingParamDocs?: boolean;
18435
+ badParamNames?: boolean;
18436
+ badParamOrder?: boolean;
18061
18437
  checkDestructured?: boolean;
18062
18438
  checkRestProperty?: boolean;
18063
18439
  checkTypesPattern?: string;
18064
18440
  disableExtraPropertyReporting?: boolean;
18065
18441
  disableMissingParamChecks?: boolean;
18442
+ duplicateParams?: boolean;
18066
18443
  enableFixer?: boolean;
18444
+ extraParams?: boolean;
18067
18445
  useDefaultObjectProperties?: boolean;
18068
18446
  }];
18069
18447
  // ----- jsdoc/check-property-names -----
18070
18448
  type JsdocCheckPropertyNames = [] | [{
18071
18449
  enableFixer?: boolean;
18072
18450
  }];
18451
+ // ----- jsdoc/check-syntax -----
18452
+ type JsdocCheckSyntax = [] | [{
18453
+ enableFixer?: boolean;
18454
+ }];
18073
18455
  // ----- jsdoc/check-tag-names -----
18074
18456
  type JsdocCheckTagNames = [] | [{
18075
18457
  definedTags?: string[];
@@ -18244,6 +18626,15 @@ type JsdocNoUndefinedTypes = [] | [{
18244
18626
  disableReporting?: boolean;
18245
18627
  markVariablesAsUsed?: boolean;
18246
18628
  }];
18629
+ // ----- jsdoc/no-unnecessary-type-assertion -----
18630
+ type JsdocNoUnnecessaryTypeAssertion = [] | [{
18631
+ checkLiteralConstAssertions?: boolean;
18632
+ enableFixer?: boolean;
18633
+ fixTypeChangingCasts?: boolean;
18634
+ preferConstToLiteralTuples?: boolean;
18635
+ treatAnyAsRedundant?: boolean;
18636
+ typesToIgnore?: string[];
18637
+ }];
18247
18638
  // ----- jsdoc/normalize-see-links -----
18248
18639
  type JsdocNormalizeSeeLinks = [] | [{
18249
18640
  canonicalForm?: ("pipe" | "prefix");
@@ -18446,7 +18837,6 @@ type JsdocRequireTags = [] | [{
18446
18837
  tags?: (string | {
18447
18838
  context?: string;
18448
18839
  tag?: string;
18449
- [k: string]: unknown | undefined;
18450
18840
  })[];
18451
18841
  }];
18452
18842
  // ----- jsdoc/require-template -----
@@ -18517,6 +18907,22 @@ type JsdocTextEscaping = [] | [{
18517
18907
  escapeHTML?: boolean;
18518
18908
  escapeMarkdown?: boolean;
18519
18909
  }];
18910
+ // ----- jsdoc/ts-ban-ts-comment -----
18911
+ type JsdocTsBanTsComment = [] | [{
18912
+ minimumDescriptionLength?: number;
18913
+ "ts-check"?: (boolean | "allow-with-description" | {
18914
+ descriptionFormat?: string;
18915
+ });
18916
+ "ts-expect-error"?: (boolean | "allow-with-description" | {
18917
+ descriptionFormat?: string;
18918
+ });
18919
+ "ts-ignore"?: (boolean | "allow-with-description" | {
18920
+ descriptionFormat?: string;
18921
+ });
18922
+ "ts-nocheck"?: (boolean | "allow-with-description" | {
18923
+ descriptionFormat?: string;
18924
+ });
18925
+ }];
18520
18926
  // ----- jsdoc/ts-method-signature-style -----
18521
18927
  type JsdocTsMethodSignatureStyle = [] | [("method" | "property")] | [("method" | "property"), {
18522
18928
  enableFixer?: boolean;
@@ -21028,6 +21434,266 @@ type PerfectionistSortClasses = {
21028
21434
  });
21029
21435
  partitionByNewLine?: boolean;
21030
21436
  }[];
21437
+ // ----- perfectionist/sort-constructor-parameters -----
21438
+ type PerfectionistSortConstructorParameters = [{
21439
+ fallbackSort?: {
21440
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21441
+ order?: ("asc" | "desc");
21442
+ };
21443
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21444
+ specialCharacters?: ("remove" | "trim" | "keep");
21445
+ ignoreCase?: boolean;
21446
+ alphabet?: string;
21447
+ locales?: (string | string[]);
21448
+ order?: ("asc" | "desc");
21449
+ customGroups?: ({
21450
+ fallbackSort?: {
21451
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21452
+ order?: ("asc" | "desc");
21453
+ };
21454
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21455
+ groupName: string;
21456
+ newlinesInside?: ("ignore" | number);
21457
+ order?: ("asc" | "desc");
21458
+ anyOf: [{
21459
+ elementNamePattern?: (({
21460
+ pattern: string;
21461
+ flags?: string;
21462
+ } | string)[] | ({
21463
+ pattern: string;
21464
+ flags?: string;
21465
+ } | string));
21466
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
21467
+ selector?: "parameter";
21468
+ decoratorNamePattern?: (({
21469
+ pattern: string;
21470
+ flags?: string;
21471
+ } | string)[] | ({
21472
+ pattern: string;
21473
+ flags?: string;
21474
+ } | string));
21475
+ }, ...({
21476
+ elementNamePattern?: (({
21477
+ pattern: string;
21478
+ flags?: string;
21479
+ } | string)[] | ({
21480
+ pattern: string;
21481
+ flags?: string;
21482
+ } | string));
21483
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
21484
+ selector?: "parameter";
21485
+ decoratorNamePattern?: (({
21486
+ pattern: string;
21487
+ flags?: string;
21488
+ } | string)[] | ({
21489
+ pattern: string;
21490
+ flags?: string;
21491
+ } | string));
21492
+ })[]];
21493
+ } | {
21494
+ fallbackSort?: {
21495
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21496
+ order?: ("asc" | "desc");
21497
+ };
21498
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21499
+ groupName: string;
21500
+ newlinesInside?: ("ignore" | number);
21501
+ order?: ("asc" | "desc");
21502
+ elementNamePattern?: (({
21503
+ pattern: string;
21504
+ flags?: string;
21505
+ } | string)[] | ({
21506
+ pattern: string;
21507
+ flags?: string;
21508
+ } | string));
21509
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
21510
+ selector?: "parameter";
21511
+ decoratorNamePattern?: (({
21512
+ pattern: string;
21513
+ flags?: string;
21514
+ } | string)[] | ({
21515
+ pattern: string;
21516
+ flags?: string;
21517
+ } | string));
21518
+ })[];
21519
+ newlinesInside?: (("ignore" | number) | "newlinesBetween");
21520
+ groups?: (string | [string, ...(string)[]] | {
21521
+ newlinesBetween: ("ignore" | number);
21522
+ } | {
21523
+ group: (string | [string, ...(string)[]]);
21524
+ fallbackSort?: {
21525
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21526
+ order?: ("asc" | "desc");
21527
+ };
21528
+ commentAbove?: string;
21529
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21530
+ newlinesInside?: ("ignore" | number);
21531
+ order?: ("asc" | "desc");
21532
+ })[];
21533
+ newlinesBetween?: ("ignore" | number);
21534
+ useConfigurationIf: {
21535
+ allNamesMatchPattern?: (({
21536
+ pattern: string;
21537
+ flags?: string;
21538
+ } | string)[] | ({
21539
+ pattern: string;
21540
+ flags?: string;
21541
+ } | string));
21542
+ matchesAstSelector?: string;
21543
+ };
21544
+ partitionByComment?: (boolean | (({
21545
+ pattern: string;
21546
+ flags?: string;
21547
+ } | string)[] | ({
21548
+ pattern: string;
21549
+ flags?: string;
21550
+ } | string)) | {
21551
+ block?: (boolean | (({
21552
+ pattern: string;
21553
+ flags?: string;
21554
+ } | string)[] | ({
21555
+ pattern: string;
21556
+ flags?: string;
21557
+ } | string)));
21558
+ line?: (boolean | (({
21559
+ pattern: string;
21560
+ flags?: string;
21561
+ } | string)[] | ({
21562
+ pattern: string;
21563
+ flags?: string;
21564
+ } | string)));
21565
+ });
21566
+ partitionByNewLine?: boolean;
21567
+ }, ...({
21568
+ fallbackSort?: {
21569
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21570
+ order?: ("asc" | "desc");
21571
+ };
21572
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21573
+ specialCharacters?: ("remove" | "trim" | "keep");
21574
+ ignoreCase?: boolean;
21575
+ alphabet?: string;
21576
+ locales?: (string | string[]);
21577
+ order?: ("asc" | "desc");
21578
+ customGroups?: ({
21579
+ fallbackSort?: {
21580
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21581
+ order?: ("asc" | "desc");
21582
+ };
21583
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21584
+ groupName: string;
21585
+ newlinesInside?: ("ignore" | number);
21586
+ order?: ("asc" | "desc");
21587
+ anyOf: [{
21588
+ elementNamePattern?: (({
21589
+ pattern: string;
21590
+ flags?: string;
21591
+ } | string)[] | ({
21592
+ pattern: string;
21593
+ flags?: string;
21594
+ } | string));
21595
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
21596
+ selector?: "parameter";
21597
+ decoratorNamePattern?: (({
21598
+ pattern: string;
21599
+ flags?: string;
21600
+ } | string)[] | ({
21601
+ pattern: string;
21602
+ flags?: string;
21603
+ } | string));
21604
+ }, ...({
21605
+ elementNamePattern?: (({
21606
+ pattern: string;
21607
+ flags?: string;
21608
+ } | string)[] | ({
21609
+ pattern: string;
21610
+ flags?: string;
21611
+ } | string));
21612
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
21613
+ selector?: "parameter";
21614
+ decoratorNamePattern?: (({
21615
+ pattern: string;
21616
+ flags?: string;
21617
+ } | string)[] | ({
21618
+ pattern: string;
21619
+ flags?: string;
21620
+ } | string));
21621
+ })[]];
21622
+ } | {
21623
+ fallbackSort?: {
21624
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21625
+ order?: ("asc" | "desc");
21626
+ };
21627
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21628
+ groupName: string;
21629
+ newlinesInside?: ("ignore" | number);
21630
+ order?: ("asc" | "desc");
21631
+ elementNamePattern?: (({
21632
+ pattern: string;
21633
+ flags?: string;
21634
+ } | string)[] | ({
21635
+ pattern: string;
21636
+ flags?: string;
21637
+ } | string));
21638
+ modifiers?: ("decorated" | "override" | "readonly" | "protected" | "private" | "public")[];
21639
+ selector?: "parameter";
21640
+ decoratorNamePattern?: (({
21641
+ pattern: string;
21642
+ flags?: string;
21643
+ } | string)[] | ({
21644
+ pattern: string;
21645
+ flags?: string;
21646
+ } | string));
21647
+ })[];
21648
+ newlinesInside?: (("ignore" | number) | "newlinesBetween");
21649
+ groups?: (string | [string, ...(string)[]] | {
21650
+ newlinesBetween: ("ignore" | number);
21651
+ } | {
21652
+ group: (string | [string, ...(string)[]]);
21653
+ fallbackSort?: {
21654
+ type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21655
+ order?: ("asc" | "desc");
21656
+ };
21657
+ commentAbove?: string;
21658
+ type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
21659
+ newlinesInside?: ("ignore" | number);
21660
+ order?: ("asc" | "desc");
21661
+ })[];
21662
+ newlinesBetween?: ("ignore" | number);
21663
+ useConfigurationIf: {
21664
+ allNamesMatchPattern?: (({
21665
+ pattern: string;
21666
+ flags?: string;
21667
+ } | string)[] | ({
21668
+ pattern: string;
21669
+ flags?: string;
21670
+ } | string));
21671
+ matchesAstSelector?: string;
21672
+ };
21673
+ partitionByComment?: (boolean | (({
21674
+ pattern: string;
21675
+ flags?: string;
21676
+ } | string)[] | ({
21677
+ pattern: string;
21678
+ flags?: string;
21679
+ } | string)) | {
21680
+ block?: (boolean | (({
21681
+ pattern: string;
21682
+ flags?: string;
21683
+ } | string)[] | ({
21684
+ pattern: string;
21685
+ flags?: string;
21686
+ } | string)));
21687
+ line?: (boolean | (({
21688
+ pattern: string;
21689
+ flags?: string;
21690
+ } | string)[] | ({
21691
+ pattern: string;
21692
+ flags?: string;
21693
+ } | string)));
21694
+ });
21695
+ partitionByNewLine?: boolean;
21696
+ })[]];
21031
21697
  // ----- perfectionist/sort-decorators -----
21032
21698
  type PerfectionistSortDecorators = {
21033
21699
  fallbackSort?: {
@@ -21750,10 +22416,6 @@ type PerfectionistSortImports = {
21750
22416
  sortBy?: ("specifier" | "path");
21751
22417
  })[];
21752
22418
  newlinesBetween?: ("ignore" | number);
21753
- tsconfig?: {
21754
- rootDir: string;
21755
- filename?: string;
21756
- };
21757
22419
  maxLineLength?: number;
21758
22420
  sortSideEffects?: boolean;
21759
22421
  environment?: ("node" | "bun");
@@ -21788,6 +22450,10 @@ type PerfectionistSortImports = {
21788
22450
  pattern: string;
21789
22451
  flags?: string;
21790
22452
  } | string));
22453
+ tsconfig?: {
22454
+ rootDir: string;
22455
+ filename?: string;
22456
+ };
21791
22457
  }[];
21792
22458
  // ----- perfectionist/sort-interfaces -----
21793
22459
  type PerfectionistSortInterfaces = {
@@ -22372,6 +23038,7 @@ type PerfectionistSortModules = [] | [{
22372
23038
  order?: ("asc" | "desc");
22373
23039
  })[];
22374
23040
  newlinesBetween?: ("ignore" | number);
23041
+ additionalModuleBlockTypes?: string[];
22375
23042
  useExperimentalDependencyDetection?: boolean;
22376
23043
  newlinesBetweenOverloadSignatures?: ("ignore" | number);
22377
23044
  partitionByComment?: (boolean | (({
@@ -22397,6 +23064,10 @@ type PerfectionistSortModules = [] | [{
22397
23064
  } | string)));
22398
23065
  });
22399
23066
  partitionByNewLine?: boolean;
23067
+ tsconfig?: {
23068
+ rootDir: string;
23069
+ filename?: string;
23070
+ };
22400
23071
  }];
22401
23072
  // ----- perfectionist/sort-named-exports -----
22402
23073
  type PerfectionistSortNamedExports = {
@@ -22925,6 +23596,13 @@ type PerfectionistSortObjects = {
22925
23596
  partitionByComputedKey?: boolean;
22926
23597
  styledComponents?: boolean;
22927
23598
  useExperimentalDependencyDetection?: boolean;
23599
+ ignoreCallbackDependenciesPatterns?: (({
23600
+ pattern: string;
23601
+ flags?: string;
23602
+ } | string)[] | ({
23603
+ pattern: string;
23604
+ flags?: string;
23605
+ } | string));
22928
23606
  partitionByComment?: (boolean | (({
22929
23607
  pattern: string;
22930
23608
  flags?: string;
@@ -23260,6 +23938,13 @@ type PerfectionistSortVariableDeclarations = {
23260
23938
  matchesAstSelector?: string;
23261
23939
  };
23262
23940
  useExperimentalDependencyDetection?: boolean;
23941
+ ignoreCallbackDependenciesPatterns?: (({
23942
+ pattern: string;
23943
+ flags?: string;
23944
+ } | string)[] | ({
23945
+ pattern: string;
23946
+ flags?: string;
23947
+ } | string));
23263
23948
  partitionByComment?: (boolean | (({
23264
23949
  pattern: string;
23265
23950
  flags?: string;
@@ -23544,6 +24229,13 @@ type SmallRulesConsistentCompoundWords = [] | [{
23544
24229
  [k: string]: (false | string) | undefined;
23545
24230
  };
23546
24231
  }];
24232
+ // ----- small-rules/curly -----
24233
+ type SmallRulesCurly = [] | [{
24234
+ allowLiteralReturns?: boolean;
24235
+ 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"))[]]);
24236
+ printWidth?: number;
24237
+ tabWidth?: number;
24238
+ }];
23547
24239
  // ----- small-rules/directive-disable-enable-pair -----
23548
24240
  type SmallRulesDirectiveDisableEnablePair = [] | [{
23549
24241
  allowWholeFile?: boolean;
@@ -23578,11 +24270,15 @@ type SmallRulesIsolatedFunctions = [] | [{
23578
24270
  type SmallRulesMemoizedEffectDependencies = [] | [{
23579
24271
  environment?: ("roblox-ts" | "standard");
23580
24272
  hooks?: {
23581
- dependenciesIndex?: number;
23582
24273
  name: string;
24274
+ dependenciesIndex?: number;
23583
24275
  }[];
23584
24276
  mode?: ("aggressive" | "definite" | "moderate");
23585
24277
  }];
24278
+ // ----- small-rules/no-adjust-state-on-prop-change -----
24279
+ type SmallRulesNoAdjustStateOnPropChange = [] | [{
24280
+ environment?: ("roblox-ts" | "standard");
24281
+ }];
23586
24282
  // ----- small-rules/no-array-constructor-elements -----
23587
24283
  type SmallRulesNoArrayConstructorElements = [] | [{
23588
24284
  environment?: ("roblox-ts" | "standard");
@@ -23609,6 +24305,18 @@ type SmallRulesNoAsyncInSystem = [] | [{
23609
24305
  calleePath: [string, ...(string)[]];
23610
24306
  }[];
23611
24307
  }];
24308
+ // ----- small-rules/no-chain-state-updates -----
24309
+ type SmallRulesNoChainStateUpdates = [] | [{
24310
+ environment?: ("roblox-ts" | "standard");
24311
+ }];
24312
+ // ----- small-rules/no-chained-type-assertions -----
24313
+ type SmallRulesNoChainedTypeAssertions = [] | [{
24314
+ allowedTargets?: string[];
24315
+ }];
24316
+ // ----- small-rules/no-cliffy-action-wrapper -----
24317
+ type SmallRulesNoCliffyActionWrapper = [] | [{
24318
+ factories?: string[];
24319
+ }];
23612
24320
  // ----- small-rules/no-color3-constructor -----
23613
24321
  type SmallRulesNoColor3Constructor = [] | [{
23614
24322
  reportUnknownComponents?: boolean;
@@ -23621,10 +24329,22 @@ type SmallRulesNoCommentedCode = [] | [{
23621
24329
  type SmallRulesNoConstantConditionWithBreak = [] | [{
23622
24330
  loopExitCalls?: string[];
23623
24331
  }];
24332
+ // ----- small-rules/no-derived-state -----
24333
+ type SmallRulesNoDerivedState = [] | [{
24334
+ environment?: ("roblox-ts" | "standard");
24335
+ }];
24336
+ // ----- small-rules/no-event-handler -----
24337
+ type SmallRulesNoEventHandler = [] | [{
24338
+ environment?: ("roblox-ts" | "standard");
24339
+ }];
23624
24340
  // ----- small-rules/no-events-in-events-callback -----
23625
24341
  type SmallRulesNoEventsInEventsCallback = [] | [{
23626
24342
  eventsImportPaths: string[];
23627
24343
  }];
24344
+ // ----- small-rules/no-external-store-subscription -----
24345
+ type SmallRulesNoExternalStoreSubscription = [] | [{
24346
+ environment?: ("roblox-ts" | "standard");
24347
+ }];
23628
24348
  // ----- small-rules/no-god-components -----
23629
24349
  type SmallRulesNoGodComponents = [] | [{
23630
24350
  enforceTargetLines?: boolean;
@@ -23644,20 +24364,53 @@ type SmallRulesNoIdentityMap = [] | [{
23644
24364
  type SmallRulesNoIncrementDecrement = [] | [{
23645
24365
  allowAutofix?: boolean;
23646
24366
  }];
24367
+ // ----- small-rules/no-initialize-state -----
24368
+ type SmallRulesNoInitializeState = [] | [{
24369
+ environment?: ("roblox-ts" | "standard");
24370
+ }];
24371
+ // ----- small-rules/no-inline-signature-types -----
24372
+ type SmallRulesNoInlineSignatureTypes = [] | [{
24373
+ functions?: ("all" | "components");
24374
+ position?: ("anywhere" | "bare" | "wrapped");
24375
+ returnTypes?: boolean;
24376
+ }];
23647
24377
  // ----- small-rules/no-instance-methods-without-this -----
23648
24378
  type SmallRulesNoInstanceMethodsWithoutThis = [] | [{
23649
24379
  checkPrivate?: boolean;
23650
24380
  checkProtected?: boolean;
23651
24381
  checkPublic?: boolean;
23652
24382
  }];
24383
+ // ----- small-rules/no-multiple-cliffy-commands -----
24384
+ type SmallRulesNoMultipleCliffyCommands = [] | [{
24385
+ factories?: string[];
24386
+ }];
23653
24387
  // ----- small-rules/no-new-instance-in-use-memo -----
23654
24388
  type SmallRulesNoNewInstanceInUseMemo = [] | [{
23655
24389
  constructors?: string[];
23656
24390
  environment?: ("roblox-ts" | "standard");
23657
24391
  maxHelperTraceDepth?: number;
23658
24392
  }];
24393
+ // ----- small-rules/no-pass-data-to-parent -----
24394
+ type SmallRulesNoPassDataToParent = [] | [{
24395
+ environment?: ("roblox-ts" | "standard");
24396
+ }];
24397
+ // ----- small-rules/no-pass-live-state-to-parent -----
24398
+ type SmallRulesNoPassLiveStateToParent = [] | [{
24399
+ environment?: ("roblox-ts" | "standard");
24400
+ }];
24401
+ // ----- small-rules/no-real-temporary-directory -----
24402
+ type SmallRulesNoRealTemporaryDirectory = [] | [{
24403
+ additionalFunctions?: {
24404
+ functions: [string, ...(string)[]];
24405
+ source: string;
24406
+ }[];
24407
+ }];
23659
24408
  // ----- small-rules/no-recursive -----
23660
24409
  type SmallRulesNoRecursive = [] | [{}];
24410
+ // ----- small-rules/no-reset-all-state-on-prop-change -----
24411
+ type SmallRulesNoResetAllStateOnPropChange = [] | [{
24412
+ environment?: ("roblox-ts" | "standard");
24413
+ }];
23661
24414
  // ----- small-rules/no-restricted-property-assignment -----
23662
24415
  type SmallRulesNoRestrictedPropertyAssignment = [] | [{
23663
24416
  allowFiles?: string[];
@@ -23668,10 +24421,30 @@ type SmallRulesNoRestrictedPropertyAssignment = [] | [{
23668
24421
  properties: [string, ...(string)[]];
23669
24422
  }[];
23670
24423
  }];
24424
+ // ----- small-rules/no-runtime-in-type-files -----
24425
+ type SmallRulesNoRuntimeInTypeFiles = [] | [{
24426
+ files?: string[];
24427
+ }];
24428
+ // ----- small-rules/no-runtime-typeof -----
24429
+ type SmallRulesNoRuntimeTypeof = [] | [{
24430
+ allowInTypeGuards?: boolean;
24431
+ }];
23671
24432
  // ----- small-rules/no-static-react-create-element -----
23672
24433
  type SmallRulesNoStaticReactCreateElement = [] | [{
23673
24434
  environment?: ("roblox-ts" | "standard");
23674
24435
  }];
24436
+ // ----- small-rules/no-test-timeout -----
24437
+ type SmallRulesNoTestTimeout = [] | [{
24438
+ additionalTestFunctions?: string[];
24439
+ }];
24440
+ // ----- small-rules/no-unsupported-syntax -----
24441
+ type SmallRulesNoUnsupportedSyntax = [] | [{
24442
+ globalThis?: boolean;
24443
+ labels?: boolean;
24444
+ prototype?: boolean;
24445
+ regexLiterals?: boolean;
24446
+ spreadDestructuring?: boolean;
24447
+ }];
23675
24448
  // ----- small-rules/no-unused-imports -----
23676
24449
  type SmallRulesNoUnusedImports = [] | [{
23677
24450
  checkJSDoc?: boolean;
@@ -23684,6 +24457,10 @@ type SmallRulesNoUnusedUseMemo = [] | [{
23684
24457
  type SmallRulesNoUselessConstants = [] | [{
23685
24458
  ignoreCallPatterns?: string[];
23686
24459
  }];
24460
+ // ----- small-rules/no-useless-empty-string-comparison -----
24461
+ type SmallRulesNoUselessEmptyStringComparison = [] | [{
24462
+ allowAutofix?: boolean;
24463
+ }];
23687
24464
  // ----- small-rules/no-useless-use-effect -----
23688
24465
  type SmallRulesNoUselessUseEffect = [] | [{
23689
24466
  environment?: ("roblox-ts" | "standard");
@@ -23708,7 +24485,7 @@ type SmallRulesNoUselessUseEffect = [] | [{
23708
24485
  }];
23709
24486
  // ----- small-rules/no-useless-use-memo -----
23710
24487
  type SmallRulesNoUselessUseMemo = [] | [{
23711
- dependencyMode?: ("empty-or-omitted" | "non-updating" | "aggressive");
24488
+ dependencyMode?: ("empty-or-omitted" | "aggressive" | "non-updating");
23712
24489
  environment?: ("roblox-ts" | "standard");
23713
24490
  staticGlobalFactories?: string[];
23714
24491
  }];
@@ -23782,8 +24559,8 @@ type SmallRulesRequireModuleLevelInstantiation = [] | [{
23782
24559
  type SmallRulesRequireNamedEffectFunctions = [] | [{
23783
24560
  environment?: ("roblox-ts" | "standard");
23784
24561
  hooks?: {
23785
- allowAsync: boolean;
23786
24562
  name: string;
24563
+ allowAsync: boolean;
23787
24564
  }[];
23788
24565
  inlineFunctionDeclarations?: boolean;
23789
24566
  sloptor?: boolean;
@@ -23822,6 +24599,28 @@ type SmallRulesRequireReactComponentKeys = [] | [{
23822
24599
  type SmallRulesRequireReactDisplayNames = [] | [{
23823
24600
  environment?: ("roblox-ts" | "standard");
23824
24601
  }];
24602
+ // ----- small-rules/require-readable-spacing -----
24603
+ type SmallRulesRequireReadableSpacing = [] | [{
24604
+ afterBlocks?: boolean;
24605
+ afterImports?: boolean;
24606
+ allowAttachedUses?: boolean;
24607
+ allowGuardClauseRuns?: boolean;
24608
+ allowMultilineBindingRuns?: boolean;
24609
+ aroundDeclarations?: boolean;
24610
+ aroundMultilineBindings?: boolean;
24611
+ beforeControlFlow?: boolean;
24612
+ betweenTopLevelStatements?: boolean;
24613
+ overrides?: {
24614
+ blankLine: ("always" | "any");
24615
+ 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"))[]]);
24616
+ 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"))[]]);
24617
+ usesPrevious?: boolean;
24618
+ }[];
24619
+ }];
24620
+ // ----- small-rules/require-safety-comment-for-type-assertion -----
24621
+ type SmallRulesRequireSafetyCommentForTypeAssertion = [] | [{
24622
+ markers?: [string, ...(string)[]];
24623
+ }];
23825
24624
  // ----- small-rules/require-switch-case-braces -----
23826
24625
  type SmallRulesRequireSwitchCaseBraces = [] | [{
23827
24626
  metric?: ("lines" | "statements");
@@ -23829,12 +24628,17 @@ type SmallRulesRequireSwitchCaseBraces = [] | [{
23829
24628
  // ----- small-rules/require-throw-error-capture -----
23830
24629
  type SmallRulesRequireThrowErrorCapture = [] | [{
23831
24630
  allow?: (string | {
23832
- from?: ("file" | "library" | "package");
23833
24631
  name: (string | string[]);
24632
+ from?: ("file" | "library" | "package");
23834
24633
  package?: string;
23835
24634
  path?: string;
23836
24635
  })[];
23837
24636
  }];
24637
+ // ----- small-rules/starts-with-verb -----
24638
+ type SmallRulesStartsWithVerb = [] | [{
24639
+ allowList?: string[];
24640
+ denyList?: string[];
24641
+ }];
23838
24642
  // ----- small-rules/strict-component-boundaries -----
23839
24643
  type SmallRulesStrictComponentBoundaries = [] | [{
23840
24644
  allow?: string[];
@@ -23843,9 +24647,9 @@ type SmallRulesStrictComponentBoundaries = [] | [{
23843
24647
  // ----- small-rules/use-exhaustive-dependencies -----
23844
24648
  type SmallRulesUseExhaustiveDependencies = [] | [{
23845
24649
  hooks?: {
24650
+ name: string;
23846
24651
  closureIndex?: number;
23847
24652
  dependenciesIndex?: number;
23848
- name: string;
23849
24653
  stableResult?: (boolean | number | number[] | string[]);
23850
24654
  }[];
23851
24655
  reportMissingDependenciesArray?: boolean;
@@ -27270,7 +28074,7 @@ type Yoda = [] | [("always" | "never")] | [("always" | "never"), {
27270
28074
  onlyEquality?: boolean;
27271
28075
  }];
27272
28076
  // 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/markdown-code' | '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/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';
28077
+ 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
28078
  //#endregion
27275
28079
  //#region src/utils.d.ts
27276
28080
  type ExtractRuleOptions<T> = T extends Linter.RuleEntry<infer U> ? U : never;
@@ -27315,21 +28119,12 @@ type OxfmtOptions = Omit<FormatConfig, "jsdoc"> & {
27315
28119
  lineWrappingStyle?: "balance" | "greedy";
27316
28120
  });
27317
28121
  };
27318
- /** The widths oxfmt formats Markdown files with. */
27319
- interface MarkdownWidths {
27320
- printWidth?: number;
27321
- tabWidth?: number;
27322
- }
27323
- /** A config override that changes the widths of some Markdown files. */
27324
28122
  /** Where an oxfmt override applies, relative to the config directory. */
27325
28123
  interface OverrideScope {
27326
28124
  /** Globs it skips: its `excludeFiles` and its negated `files`. */
27327
28125
  excludeFiles: Array<string>;
27328
28126
  files: Array<string>;
27329
28127
  }
27330
- interface MarkdownWidthOverride extends OverrideScope {
27331
- widths: MarkdownWidths;
27332
- }
27333
28128
  //#endregion
27334
28129
  //#region src/types.d.ts
27335
28130
  type Awaitable<T> = Promise<T> | T;
@@ -28324,7 +29119,7 @@ declare const GLOB_JSX = "**/*.{,c,m}jsx";
28324
29119
  declare const GLOB_TS = "**/*.{,c,m}ts";
28325
29120
  declare const GLOB_TSX = "**/*.{,c,m}tsx";
28326
29121
  declare const GLOB_DTS = "**/*.d.{,c,m}ts";
28327
- declare const GLOB_BIN: Array<string>;
29122
+ declare const GLOB_BIN: string[];
28328
29123
  declare const GLOB_STYLE = "**/*.{c,le,sc}ss";
28329
29124
  declare const GLOB_CSS = "**/*.css";
28330
29125
  declare const GLOB_POSTCSS = "**/*.{p,post}css";
@@ -28347,7 +29142,7 @@ declare const GLOB_MARKDOWN_CODE: string;
28347
29142
  declare const GLOB_MARKDOWN_BLOCKS: string;
28348
29143
  declare const GLOB_YAML = "**/*.y{,a}ml";
28349
29144
  declare const GLOB_TOML = "**/*.toml";
28350
- declare const GLOB_MISE: Array<string>;
29145
+ declare const GLOB_MISE: string[];
28351
29146
  declare const GLOB_HTML = "**/*.htm{,l}";
28352
29147
  declare const GLOB_XML = "**/*.xml";
28353
29148
  declare const GLOB_GRAPHQL = "**/*.{g,graph}ql";
@@ -28356,18 +29151,13 @@ declare const GLOB_GRAPHQL = "**/*.{g,graph}ql";
28356
29151
  * mode. They are test files, but assert nothing at runtime.
28357
29152
  */
28358
29153
  declare const GLOB_TYPE_TESTS = "**/*.{test,spec}-d.{,c,m}[jt]s{,x}";
28359
- declare const GLOB_TESTS: Array<string>;
28360
- declare const GLOB_BUILD_CONFIGS: Array<string>;
29154
+ declare const GLOB_TESTS: string[];
29155
+ declare const GLOB_BUILD_CONFIGS: string[];
28361
29156
  declare const GLOB_ALL_SRC: string[];
28362
29157
  declare const GLOB_EXCLUDE: string[];
28363
29158
  //#endregion
28364
29159
  //#region src/eslint/configs/comments.d.ts
28365
- declare function comments({ markdownCode, markdownCodeOverrides, prettierOptions, stylistic }?: OptionsFormatters & OptionsStylistic & {
28366
- /** The widths oxfmt formats Markdown code blocks with. */
28367
- markdownCode?: MarkdownWidths;
28368
- /** Oxfmt config overrides that change the Markdown widths. */
28369
- markdownCodeOverrides?: Array<MarkdownWidthOverride>;
28370
- }): Promise<Array<TypedFlatConfigItem>>;
29160
+ declare function comments({ prettierOptions, stylistic }?: OptionsFormatters & OptionsStylistic): Promise<Array<TypedFlatConfigItem>>;
28371
29161
  //#endregion
28372
29162
  //#region src/eslint/configs/disables.d.ts
28373
29163
  /**
@@ -28415,6 +29205,8 @@ interface FlawlessRuleOptions extends OptionsHasRoblox {
28415
29205
  declare function oxfmt(options?: OptionsComponentExtensions & OptionsFiles & OptionsOverrides & {
28416
29206
  formatters?: OptionsFormatters | true;
28417
29207
  oxfmtConfigOptions?: OxfmtOptions;
29208
+ /** The oxfmt config's ignore patterns, for Markdown code blocks. */
29209
+ oxfmtIgnorePatterns?: Array<string>;
28418
29210
  oxfmtOptions?: OxfmtOptions;
28419
29211
  oxlint?: boolean;
28420
29212
  prettierOptions?: Options;
@@ -28433,14 +29225,6 @@ declare function flawless(options?: FlawlessRuleOptions & OptionsOverridesTypeAw
28433
29225
  * linted as standard-TS/Node land.
28434
29226
  */
28435
29227
  complementIgnores?: Array<string>;
28436
- /**
28437
- * The widths oxfmt formats Markdown code blocks with, when it
28438
- * formats Markdown: it formats embedded code with the Markdown
28439
- * options, not the root ones.
28440
- */
28441
- markdownCode?: MarkdownWidths;
28442
- /** Oxfmt config overrides that change the Markdown widths. */
28443
- markdownCodeOverrides?: Array<MarkdownWidthOverride>;
28444
29228
  }, prettierOptions?: PrettierOptions): Promise<Array<TypedFlatConfigItem>>;
28445
29229
  //#endregion
28446
29230
  //#region src/eslint/configs/gitignore.d.ts
@@ -28490,7 +29274,7 @@ declare function jsonc({ bracketSpacing, files, formatIndent, layoutOverrides, o
28490
29274
  * loading the plugin. `test/lazy-plugin.spec.ts` asserts the two match.
28491
29275
  */
28492
29276
  declare const MARKDOWN_PROCESSOR_NAME = "@eslint/markdown/markdown";
28493
- declare function markdown({ componentExts: componentExtensions, files, overrides, type }?: OptionsComponentExtensions & OptionsFiles & OptionsOverrides & OptionsProjectType): Array<TypedFlatConfigItem>;
29277
+ declare function markdown({ antiSlop, componentExts: componentExtensions, files, overrides, type }?: FlawlessRuleOptions & OptionsComponentExtensions & OptionsFiles & OptionsOverrides & OptionsProjectType): Array<TypedFlatConfigItem>;
28494
29278
  //#endregion
28495
29279
  //#region src/eslint/configs/naming.d.ts
28496
29280
  declare function naming(options?: NamingConfig & OptionsTypeScriptParserOptions & OptionsTypeScriptWithTypes): Promise<Array<TypedFlatConfigItem>>;
@@ -28554,7 +29338,7 @@ declare function sonarjs({ complementIgnores, isInEditor, roblox }: OptionsHasRo
28554
29338
  //#endregion
28555
29339
  //#region src/eslint/configs/sort.d.ts
28556
29340
  /**
28557
- * Sort GitHub Actions workflow files.
29341
+ * Sort GitHub Actions workflow, composite action and label files.
28558
29342
  *
28559
29343
  * Requires `yaml` config.
28560
29344
  *
@@ -28630,6 +29414,6 @@ declare function unicorn({ complementIgnores, nameReplacements, roblox, root: cu
28630
29414
  }): Promise<Array<TypedFlatConfigItem>>;
28631
29415
  //#endregion
28632
29416
  //#region src/eslint/configs/yaml.d.ts
28633
- declare function yaml({ files, overrides, stylistic }?: OptionsFiles & OptionsOverrides & OptionsStylistic): Promise<Array<TypedFlatConfigItem>>;
29417
+ declare function yaml({ files, overrides, prettierOptions, stylistic }?: OptionsFiles & OptionsFormatters & OptionsOverrides & OptionsStylistic): Promise<Array<TypedFlatConfigItem>>;
28634
29418
  //#endregion
28635
29419
  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 };