@pobammer-ts/small-rules 2.6.0 → 2.8.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/README.md +2 -2
- package/dist/index.d.ts +185 -16
- package/dist/index.js +10 -10
- package/package.json +27 -15
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ A collection of [Oxlint](https://oxc.rs)-native rules for linting [roblox-ts](ht
|
|
|
8
8
|
ni -D @pobammer-ts/small-rules
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
This package is an [Oxlint plugin](https://oxc.rs/docs/guide/usage/plugins) and must be used with [Oxlint](https://oxc.rs) v1.69.0 or later. It
|
|
11
|
+
This package is an [Oxlint plugin](https://oxc.rs/docs/guide/usage/plugins) and must be used with [Oxlint](https://oxc.rs) v1.69.0 or later. It supports TypeScript versions from 5 up to, but not including, 8 and requires Node.js `^20.19.0` or `>=22.12.0`.
|
|
12
12
|
|
|
13
13
|
## Configuration
|
|
14
14
|
|
|
@@ -28,7 +28,7 @@ All rules are namespaced under the `small-rules/` prefix. Pick the subset that f
|
|
|
28
28
|
|
|
29
29
|
## Rules
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
Browse the [complete rule catalog](https://howmanysmall.github.io/small-rules/rules/) for source-backed descriptions, configuration, diagnostics, and examples.
|
|
32
32
|
|
|
33
33
|
## License
|
|
34
34
|
|
package/dist/index.d.ts
CHANGED
|
@@ -36,6 +36,9 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
36
36
|
readonly additionalProperties: false;
|
|
37
37
|
readonly properties: {
|
|
38
38
|
readonly bannedTypes: {
|
|
39
|
+
readonly default: {
|
|
40
|
+
readonly Omit: "Except";
|
|
41
|
+
};
|
|
39
42
|
readonly description: "Array of banned type names or an object mapping banned type names to preferred replacement names.";
|
|
40
43
|
readonly oneOf: readonly [{
|
|
41
44
|
readonly items: {
|
|
@@ -55,8 +58,9 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
55
58
|
"directive-disable-enable-pair": import("oxlint-plugin-utilities").CreateRule<readonly [{
|
|
56
59
|
readonly additionalProperties: false;
|
|
57
60
|
readonly properties: {
|
|
58
|
-
allowWholeFile: {
|
|
59
|
-
|
|
61
|
+
readonly allowWholeFile: {
|
|
62
|
+
readonly description: "Allow a disable directive that covers the entire file.";
|
|
63
|
+
readonly type: "boolean";
|
|
60
64
|
};
|
|
61
65
|
};
|
|
62
66
|
readonly type: "object";
|
|
@@ -76,6 +80,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
76
80
|
readonly additionalProperties: false;
|
|
77
81
|
readonly properties: {
|
|
78
82
|
readonly allow: {
|
|
83
|
+
readonly description: "Directive kinds that are still allowed in block comments.";
|
|
79
84
|
readonly items: {
|
|
80
85
|
type: "string";
|
|
81
86
|
};
|
|
@@ -89,6 +94,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
89
94
|
readonly additionalProperties: false;
|
|
90
95
|
readonly properties: {
|
|
91
96
|
readonly ignore: {
|
|
97
|
+
readonly description: "Directive kinds that do not require a description.";
|
|
92
98
|
readonly items: {
|
|
93
99
|
type: "string";
|
|
94
100
|
};
|
|
@@ -102,24 +108,28 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
102
108
|
readonly additionalProperties: false;
|
|
103
109
|
readonly properties: {
|
|
104
110
|
readonly baseThreshold: {
|
|
111
|
+
readonly default: number;
|
|
112
|
+
readonly description: "Minimum complexity score before missing Ianitor.Check<T> annotations are reported.";
|
|
105
113
|
readonly minimum: 1;
|
|
106
114
|
readonly type: "number";
|
|
107
115
|
};
|
|
108
116
|
readonly errorThreshold: {
|
|
117
|
+
readonly default: number;
|
|
118
|
+
readonly description: "Complexity score used to cap recursive analysis before reporting is determined.";
|
|
109
119
|
readonly minimum: 1;
|
|
110
120
|
readonly type: "number";
|
|
111
121
|
};
|
|
112
122
|
readonly interfacePenalty: {
|
|
123
|
+
readonly default: number;
|
|
124
|
+
readonly description: "Complexity penalty applied when an Ianitor validator builds an interface-like shape.";
|
|
113
125
|
readonly minimum: 1;
|
|
114
126
|
readonly type: "number";
|
|
115
127
|
};
|
|
116
128
|
readonly performanceMode: {
|
|
129
|
+
readonly default: boolean;
|
|
130
|
+
readonly description: "Whether repeated type nodes are cached during complexity analysis.";
|
|
117
131
|
readonly type: "boolean";
|
|
118
132
|
};
|
|
119
|
-
readonly warnThreshold: {
|
|
120
|
-
readonly minimum: 1;
|
|
121
|
-
readonly type: "number";
|
|
122
|
-
};
|
|
123
133
|
};
|
|
124
134
|
readonly type: "object";
|
|
125
135
|
}], "complexInterfaceNeedsCheck" | "missingIanitorCheckType", undefined>;
|
|
@@ -133,7 +143,11 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
133
143
|
readonly type: "string";
|
|
134
144
|
};
|
|
135
145
|
readonly hooks: {
|
|
136
|
-
readonly
|
|
146
|
+
readonly default: {
|
|
147
|
+
dependenciesIndex: number;
|
|
148
|
+
name: string;
|
|
149
|
+
}[];
|
|
150
|
+
readonly description: "Effect hooks checked by default; configured entries are added to this set.";
|
|
137
151
|
readonly items: {
|
|
138
152
|
readonly additionalProperties: false;
|
|
139
153
|
readonly properties: {
|
|
@@ -183,6 +197,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
183
197
|
readonly properties: {
|
|
184
198
|
readonly allowAutofix: {
|
|
185
199
|
readonly default: false;
|
|
200
|
+
readonly description: "Allow the fixer to replace safe append assignments with array.push(value).";
|
|
186
201
|
readonly type: "boolean";
|
|
187
202
|
};
|
|
188
203
|
readonly environment: {
|
|
@@ -238,6 +253,32 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
238
253
|
};
|
|
239
254
|
readonly type: "array";
|
|
240
255
|
};
|
|
256
|
+
readonly synchronousCallbacks: {
|
|
257
|
+
readonly items: {
|
|
258
|
+
readonly additionalProperties: false;
|
|
259
|
+
readonly properties: {
|
|
260
|
+
readonly callbackArgumentIndexes: {
|
|
261
|
+
readonly items: {
|
|
262
|
+
readonly minimum: 0;
|
|
263
|
+
readonly type: "integer";
|
|
264
|
+
};
|
|
265
|
+
readonly minItems: 1;
|
|
266
|
+
readonly type: "array";
|
|
267
|
+
readonly uniqueItems: true;
|
|
268
|
+
};
|
|
269
|
+
readonly calleePath: {
|
|
270
|
+
readonly items: {
|
|
271
|
+
readonly type: "string";
|
|
272
|
+
};
|
|
273
|
+
readonly minItems: 1;
|
|
274
|
+
readonly type: "array";
|
|
275
|
+
};
|
|
276
|
+
};
|
|
277
|
+
readonly required: readonly ["callbackArgumentIndexes", "calleePath"];
|
|
278
|
+
readonly type: "object";
|
|
279
|
+
};
|
|
280
|
+
readonly type: "array";
|
|
281
|
+
};
|
|
241
282
|
};
|
|
242
283
|
readonly type: "object";
|
|
243
284
|
}], "noAsyncInSystem", undefined>;
|
|
@@ -247,6 +288,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
247
288
|
readonly properties: {
|
|
248
289
|
readonly reportUnknownComponents: {
|
|
249
290
|
readonly default: true;
|
|
291
|
+
readonly description: "Report new Color3(...) calls when one or more components are not numeric literals.";
|
|
250
292
|
readonly type: "boolean";
|
|
251
293
|
};
|
|
252
294
|
};
|
|
@@ -267,6 +309,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
267
309
|
readonly additionalProperties: false;
|
|
268
310
|
readonly properties: {
|
|
269
311
|
readonly loopExitCalls: {
|
|
312
|
+
readonly description: "Call expressions that count as intentional loop exits inside constant loops.";
|
|
270
313
|
readonly items: {
|
|
271
314
|
readonly minLength: 1;
|
|
272
315
|
readonly type: "string";
|
|
@@ -281,6 +324,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
281
324
|
readonly additionalProperties: false;
|
|
282
325
|
readonly properties: {
|
|
283
326
|
readonly eventsImportPaths: {
|
|
327
|
+
readonly description: "Import paths that identify Events objects whose callbacks should be checked.";
|
|
284
328
|
readonly items: {
|
|
285
329
|
readonly minLength: 1;
|
|
286
330
|
readonly type: "string";
|
|
@@ -291,6 +335,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
291
335
|
readonly required: readonly ["eventsImportPaths"];
|
|
292
336
|
readonly type: "object";
|
|
293
337
|
}], "preferFunctions", undefined>;
|
|
338
|
+
"no-filter-map-chain": import("oxlint-plugin-utilities").CreateRule<readonly [], "avoidFilterMapChain", undefined>;
|
|
294
339
|
"no-giant-component": import("oxlint-plugin-utilities").CreateRule<undefined, "giantComponent", undefined>;
|
|
295
340
|
"no-god-components": import("oxlint-plugin-utilities").CreateRule<readonly [{
|
|
296
341
|
readonly additionalProperties: false;
|
|
@@ -301,6 +346,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
301
346
|
readonly type: "boolean";
|
|
302
347
|
};
|
|
303
348
|
readonly ignoreComponents: {
|
|
349
|
+
readonly default: readonly [];
|
|
304
350
|
readonly description: "Component names to ignore.";
|
|
305
351
|
readonly items: {
|
|
306
352
|
readonly type: "string";
|
|
@@ -364,6 +410,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
364
410
|
readonly properties: {
|
|
365
411
|
readonly allowAutofix: {
|
|
366
412
|
readonly default: false;
|
|
413
|
+
readonly description: "Allow the fixer to replace standalone ++ and -- statements and for-loop updates.";
|
|
367
414
|
readonly type: "boolean";
|
|
368
415
|
};
|
|
369
416
|
};
|
|
@@ -396,6 +443,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
396
443
|
readonly additionalProperties: false;
|
|
397
444
|
readonly properties: {
|
|
398
445
|
readonly constructors: {
|
|
446
|
+
readonly default: readonly string[];
|
|
399
447
|
readonly description: "Constructor identifiers that should be disallowed inside useMemo callbacks.";
|
|
400
448
|
readonly items: {
|
|
401
449
|
readonly type: "string";
|
|
@@ -470,6 +518,8 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
470
518
|
readonly additionalProperties: false;
|
|
471
519
|
readonly properties: {
|
|
472
520
|
environment: {
|
|
521
|
+
default: string;
|
|
522
|
+
description: string;
|
|
473
523
|
enum: readonly ["roblox-ts", "standard"];
|
|
474
524
|
type: string;
|
|
475
525
|
};
|
|
@@ -478,7 +528,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
478
528
|
}], "useJsx", undefined>;
|
|
479
529
|
"no-table-create-map": import("oxlint-plugin-utilities").CreateRule<readonly [], "avoidConstructThenMap", undefined>;
|
|
480
530
|
"no-task-wait": import("oxlint-plugin-utilities").CreateOnceRule<readonly [], "noPromiseDelayAwait" | "noTaskWait", undefined>;
|
|
481
|
-
"no-underscore-react-props": import("oxlint-plugin-utilities").CreateOnceRule<readonly [], "
|
|
531
|
+
"no-underscore-react-props": import("oxlint-plugin-utilities").CreateOnceRule<readonly [], "noUnderscoreReactProperty", undefined>;
|
|
482
532
|
"no-unused-imports": import("oxlint-plugin-utilities").CreateRule<readonly [{
|
|
483
533
|
readonly additionalProperties: false;
|
|
484
534
|
readonly properties: {
|
|
@@ -495,6 +545,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
495
545
|
readonly properties: {
|
|
496
546
|
readonly environment: {
|
|
497
547
|
readonly default: "roblox-ts";
|
|
548
|
+
readonly description: "The React environment: 'roblox-ts' uses @rbxts/react, 'standard' uses react.";
|
|
498
549
|
readonly enum: readonly ["roblox-ts", "standard"];
|
|
499
550
|
readonly type: "string";
|
|
500
551
|
};
|
|
@@ -507,6 +558,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
507
558
|
readonly properties: {
|
|
508
559
|
readonly ignoreCallPatterns: {
|
|
509
560
|
readonly default: readonly string[];
|
|
561
|
+
readonly description: "Regular expression patterns for call expressions that should be ignored.";
|
|
510
562
|
readonly items: {
|
|
511
563
|
readonly type: "string";
|
|
512
564
|
};
|
|
@@ -527,6 +579,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
527
579
|
};
|
|
528
580
|
readonly hooks: {
|
|
529
581
|
readonly default: readonly ["useEffect", "useLayoutEffect", "useInsertionEffect"];
|
|
582
|
+
readonly description: "Effect hook names checked for avoidable effect patterns.";
|
|
530
583
|
readonly items: {
|
|
531
584
|
readonly type: "string";
|
|
532
585
|
};
|
|
@@ -534,6 +587,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
534
587
|
};
|
|
535
588
|
readonly propertyCallbackPrefixes: {
|
|
536
589
|
readonly default: readonly ["on"];
|
|
590
|
+
readonly description: "Property name prefixes treated as event callback props.";
|
|
537
591
|
readonly items: {
|
|
538
592
|
readonly type: "string";
|
|
539
593
|
};
|
|
@@ -549,58 +603,72 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
549
603
|
};
|
|
550
604
|
readonly reportAdjustState: {
|
|
551
605
|
readonly default: true;
|
|
606
|
+
readonly description: "Report effects that only adjust state after render.";
|
|
552
607
|
readonly type: "boolean";
|
|
553
608
|
};
|
|
554
609
|
readonly reportDerivedState: {
|
|
555
610
|
readonly default: true;
|
|
611
|
+
readonly description: "Report effects that copy derived values into state.";
|
|
556
612
|
readonly type: "boolean";
|
|
557
613
|
};
|
|
558
614
|
readonly reportDuplicateDeps: {
|
|
559
615
|
readonly default: true;
|
|
616
|
+
readonly description: "Report duplicate entries in effect dependency arrays.";
|
|
560
617
|
readonly type: "boolean";
|
|
561
618
|
};
|
|
562
619
|
readonly reportEffectChain: {
|
|
563
620
|
readonly default: true;
|
|
621
|
+
readonly description: "Report effects that only trigger another effect through state.";
|
|
564
622
|
readonly type: "boolean";
|
|
565
623
|
};
|
|
566
624
|
readonly reportEmptyEffect: {
|
|
567
625
|
readonly default: true;
|
|
626
|
+
readonly description: "Report effects whose callback body is empty.";
|
|
568
627
|
readonly type: "boolean";
|
|
569
628
|
};
|
|
570
629
|
readonly reportEventFlag: {
|
|
571
630
|
readonly default: true;
|
|
631
|
+
readonly description: "Report effects that react to event flags stored in state.";
|
|
572
632
|
readonly type: "boolean";
|
|
573
633
|
};
|
|
574
634
|
readonly reportEventSpecificLogic: {
|
|
575
635
|
readonly default: true;
|
|
636
|
+
readonly description: "Report effects that move event-specific logic out of the event callback.";
|
|
576
637
|
readonly type: "boolean";
|
|
577
638
|
};
|
|
578
639
|
readonly reportExternalStore: {
|
|
579
640
|
readonly default: true;
|
|
641
|
+
readonly description: "Report effects that mirror external store values into local state.";
|
|
580
642
|
readonly type: "boolean";
|
|
581
643
|
};
|
|
582
644
|
readonly reportInitializeState: {
|
|
583
645
|
readonly default: true;
|
|
646
|
+
readonly description: "Report effects that only initialize state after mount.";
|
|
584
647
|
readonly type: "boolean";
|
|
585
648
|
};
|
|
586
649
|
readonly reportLogOnly: {
|
|
587
650
|
readonly default: true;
|
|
651
|
+
readonly description: "Report effects that only log values.";
|
|
588
652
|
readonly type: "boolean";
|
|
589
653
|
};
|
|
590
654
|
readonly reportMixedDerivedState: {
|
|
591
655
|
readonly default: true;
|
|
656
|
+
readonly description: "Report effects that mix derived-state updates with other work.";
|
|
592
657
|
readonly type: "boolean";
|
|
593
658
|
};
|
|
594
659
|
readonly reportNotifyParent: {
|
|
595
660
|
readonly default: true;
|
|
661
|
+
readonly description: "Report effects that only notify a parent through a callback prop.";
|
|
596
662
|
readonly type: "boolean";
|
|
597
663
|
};
|
|
598
664
|
readonly reportPassRefToParent: {
|
|
599
665
|
readonly default: true;
|
|
666
|
+
readonly description: "Report effects that only pass a ref value to a parent callback.";
|
|
600
667
|
readonly type: "boolean";
|
|
601
668
|
};
|
|
602
669
|
readonly reportResetState: {
|
|
603
670
|
readonly default: true;
|
|
671
|
+
readonly description: "Report effects that reset local state when inputs change.";
|
|
604
672
|
readonly type: "boolean";
|
|
605
673
|
};
|
|
606
674
|
readonly stateHooks: {
|
|
@@ -619,15 +687,19 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
619
687
|
readonly properties: {
|
|
620
688
|
readonly dependencyMode: {
|
|
621
689
|
readonly default: "non-updating";
|
|
690
|
+
readonly description: "Dependency-array mode used to decide whether a memoized value is static.";
|
|
622
691
|
readonly enum: readonly ["empty-or-omitted", "non-updating", "aggressive"];
|
|
623
692
|
readonly type: "string";
|
|
624
693
|
};
|
|
625
694
|
readonly environment: {
|
|
626
695
|
readonly default: "roblox-ts";
|
|
696
|
+
readonly description: "The React environment: 'roblox-ts' uses @rbxts/react, 'standard' uses react.";
|
|
627
697
|
readonly enum: readonly ["roblox-ts", "standard"];
|
|
628
698
|
readonly type: "string";
|
|
629
699
|
};
|
|
630
700
|
readonly staticGlobalFactories: {
|
|
701
|
+
readonly default: readonly string[];
|
|
702
|
+
readonly description: "Global constructors and factories whose calls are treated as static values.";
|
|
631
703
|
readonly items: {
|
|
632
704
|
readonly type: "string";
|
|
633
705
|
};
|
|
@@ -639,11 +711,13 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
639
711
|
"no-useless-use-spring": import("oxlint-plugin-utilities").CreateRule<readonly [{
|
|
640
712
|
readonly additionalProperties: false;
|
|
641
713
|
readonly default: {
|
|
714
|
+
readonly springHooks: readonly string[];
|
|
642
715
|
readonly staticGlobalFactories: readonly string[];
|
|
643
716
|
readonly treatEmptyDepsAsViolation: true;
|
|
644
717
|
};
|
|
645
718
|
readonly properties: {
|
|
646
719
|
readonly springHooks: {
|
|
720
|
+
readonly default: readonly string[];
|
|
647
721
|
readonly description: "Hook identifiers that should be treated as spring hooks";
|
|
648
722
|
readonly items: {
|
|
649
723
|
readonly type: "string";
|
|
@@ -674,11 +748,31 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
674
748
|
}], "unexpectedAssignment" | "unexpectedClassProperty", undefined>;
|
|
675
749
|
"prefer-constant-dispatch": import("oxlint-plugin-utilities").CreateRule<readonly [], "preferConstantDispatch", undefined>;
|
|
676
750
|
"prefer-context-stack": import("oxlint-plugin-utilities").CreateRule<readonly [], "preferContextStack", undefined>;
|
|
751
|
+
"prefer-direct-hook-imports": import("oxlint-plugin-utilities").CreateRule<readonly [{
|
|
752
|
+
readonly additionalProperties: false;
|
|
753
|
+
readonly properties: {
|
|
754
|
+
readonly allowedHooks: {
|
|
755
|
+
readonly description: "Hook names that are allowed to be called via React namespace.";
|
|
756
|
+
readonly items: {
|
|
757
|
+
readonly type: "string";
|
|
758
|
+
};
|
|
759
|
+
readonly type: "array";
|
|
760
|
+
};
|
|
761
|
+
readonly environment: {
|
|
762
|
+
default: string;
|
|
763
|
+
description: string;
|
|
764
|
+
enum: readonly ["roblox-ts", "standard"];
|
|
765
|
+
type: string;
|
|
766
|
+
};
|
|
767
|
+
};
|
|
768
|
+
readonly type: "object";
|
|
769
|
+
}], "preferDirectHookImport", undefined>;
|
|
677
770
|
"prefer-early-return": import("oxlint-plugin-utilities").CreateRule<readonly [{
|
|
678
771
|
readonly additionalProperties: false;
|
|
679
772
|
readonly properties: {
|
|
680
773
|
readonly maximumStatements: {
|
|
681
774
|
readonly default: 1;
|
|
775
|
+
readonly description: "Maximum allowed statement count inside the guarded branch before reporting.";
|
|
682
776
|
readonly minimum: 0;
|
|
683
777
|
readonly type: "number";
|
|
684
778
|
};
|
|
@@ -689,24 +783,34 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
689
783
|
readonly additionalProperties: false;
|
|
690
784
|
readonly properties: {
|
|
691
785
|
readonly additionalAssertionFunctions: {
|
|
786
|
+
readonly default: readonly [];
|
|
787
|
+
readonly description: "Additional assertion function names counted as test assertions.";
|
|
692
788
|
readonly items: {
|
|
693
789
|
readonly type: "string";
|
|
694
790
|
};
|
|
695
791
|
readonly type: "array";
|
|
696
792
|
};
|
|
697
793
|
readonly additionalExpectCallNames: {
|
|
794
|
+
readonly default: readonly [];
|
|
795
|
+
readonly description: "Additional expect-like call names counted when checking assertion counts.";
|
|
698
796
|
readonly items: {
|
|
699
797
|
readonly type: "string";
|
|
700
798
|
};
|
|
701
799
|
readonly type: "array";
|
|
702
800
|
};
|
|
703
801
|
readonly onlyFunctionsWithAsyncKeyword: {
|
|
802
|
+
readonly default: false;
|
|
803
|
+
readonly description: "Only require assertion guards for test callbacks marked async.";
|
|
704
804
|
readonly type: "boolean";
|
|
705
805
|
};
|
|
706
806
|
readonly onlyFunctionsWithExpectInCallback: {
|
|
807
|
+
readonly default: false;
|
|
808
|
+
readonly description: "Only require assertion guards when expect is called inside a nested callback.";
|
|
707
809
|
readonly type: "boolean";
|
|
708
810
|
};
|
|
709
811
|
readonly onlyFunctionsWithExpectInLoop: {
|
|
812
|
+
readonly default: false;
|
|
813
|
+
readonly description: "Only require assertion guards when expect is called inside a loop.";
|
|
710
814
|
readonly type: "boolean";
|
|
711
815
|
};
|
|
712
816
|
};
|
|
@@ -729,6 +833,12 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
729
833
|
};
|
|
730
834
|
readonly type: "array";
|
|
731
835
|
};
|
|
836
|
+
readonly environment: {
|
|
837
|
+
default: string;
|
|
838
|
+
description: string;
|
|
839
|
+
enum: readonly ["roblox-ts", "standard"];
|
|
840
|
+
type: string;
|
|
841
|
+
};
|
|
732
842
|
};
|
|
733
843
|
readonly type: "object";
|
|
734
844
|
}], "hoistableJsxElement", undefined>;
|
|
@@ -753,49 +863,70 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
753
863
|
readonly additionalProperties: {
|
|
754
864
|
readonly type: "boolean";
|
|
755
865
|
};
|
|
866
|
+
readonly default: Record<string, boolean>;
|
|
867
|
+
readonly defaultLabel: "default allow list";
|
|
868
|
+
readonly description: "Names that should be allowed even when they match a discouraged abbreviation.";
|
|
756
869
|
readonly type: "object";
|
|
757
870
|
};
|
|
758
871
|
readonly allowPropertyAccess: {
|
|
872
|
+
readonly default: string[];
|
|
873
|
+
readonly description: "Property names that may keep abbreviated member access.";
|
|
759
874
|
readonly items: {
|
|
760
875
|
readonly type: "string";
|
|
761
876
|
};
|
|
762
877
|
readonly type: "array";
|
|
763
878
|
};
|
|
764
879
|
readonly checkDefaultAndNamespaceImports: {
|
|
880
|
+
readonly default: "internal";
|
|
881
|
+
readonly description: "Whether default and namespace import local names should be checked.";
|
|
765
882
|
readonly enum: readonly [false, true, "internal"];
|
|
766
883
|
};
|
|
767
884
|
readonly checkFilenames: {
|
|
885
|
+
readonly default: true;
|
|
886
|
+
readonly description: "Whether file names should be checked for abbreviations.";
|
|
768
887
|
readonly type: "boolean";
|
|
769
888
|
};
|
|
770
889
|
readonly checkProperties: {
|
|
890
|
+
readonly default: false;
|
|
891
|
+
readonly description: "Whether object, member, and JSX property names should be checked.";
|
|
771
892
|
readonly type: "boolean";
|
|
772
893
|
};
|
|
773
894
|
readonly checkShorthandImports: {
|
|
895
|
+
readonly default: "internal";
|
|
896
|
+
readonly description: "Whether renamed shorthand imports should be checked.";
|
|
774
897
|
readonly enum: readonly [false, true, "internal"];
|
|
775
898
|
};
|
|
776
899
|
readonly checkShorthandProperties: {
|
|
900
|
+
readonly default: true;
|
|
901
|
+
readonly description: "Whether shorthand object property names should be checked.";
|
|
777
902
|
readonly type: "boolean";
|
|
778
903
|
};
|
|
779
904
|
readonly checkVariables: {
|
|
905
|
+
readonly default: true;
|
|
906
|
+
readonly description: "Whether variable, function, class, and component names should be checked.";
|
|
780
907
|
readonly type: "boolean";
|
|
781
908
|
};
|
|
782
909
|
readonly extendDefaultAllowList: {
|
|
910
|
+
readonly default: true;
|
|
911
|
+
readonly description: "Merge configured allowList entries with the default allow list.";
|
|
783
912
|
readonly type: "boolean";
|
|
784
913
|
};
|
|
785
914
|
readonly extendDefaultReplacements: {
|
|
915
|
+
readonly default: true;
|
|
916
|
+
readonly description: "Merge configured replacements with the default replacement map.";
|
|
786
917
|
readonly type: "boolean";
|
|
787
918
|
};
|
|
788
919
|
readonly ignore: {
|
|
920
|
+
readonly default: string[];
|
|
921
|
+
readonly description: "Names or regular expression patterns that should be ignored.";
|
|
789
922
|
readonly items: {
|
|
790
|
-
readonly
|
|
791
|
-
readonly type: "object";
|
|
792
|
-
}, {
|
|
793
|
-
readonly type: "string";
|
|
794
|
-
}];
|
|
923
|
+
readonly type: "string";
|
|
795
924
|
};
|
|
796
925
|
readonly type: "array";
|
|
797
926
|
};
|
|
798
927
|
readonly ignoreShorthands: {
|
|
928
|
+
readonly default: readonly [];
|
|
929
|
+
readonly description: "Shorthand names that should not be reported.";
|
|
799
930
|
readonly items: {
|
|
800
931
|
readonly type: "string";
|
|
801
932
|
};
|
|
@@ -812,12 +943,18 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
812
943
|
readonly type: "object";
|
|
813
944
|
}];
|
|
814
945
|
};
|
|
946
|
+
readonly default: Record<string, Record<string, boolean>>;
|
|
947
|
+
readonly defaultLabel: "default replacement map";
|
|
948
|
+
readonly description: "Replacement suggestions for discouraged names.";
|
|
815
949
|
readonly type: "object";
|
|
816
950
|
};
|
|
817
951
|
readonly shorthands: {
|
|
818
952
|
readonly additionalProperties: {
|
|
819
953
|
readonly type: "string";
|
|
820
954
|
};
|
|
955
|
+
readonly default: Record<string, string>;
|
|
956
|
+
readonly defaultLabel: "default shorthands";
|
|
957
|
+
readonly description: "Shorthand names and the full names they should expand to.";
|
|
821
958
|
readonly type: "object";
|
|
822
959
|
};
|
|
823
960
|
};
|
|
@@ -843,6 +980,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
843
980
|
readonly additionalProperties: {
|
|
844
981
|
readonly type: "string";
|
|
845
982
|
};
|
|
983
|
+
readonly description: "Class names mapped to the import source that must be instantiated at module scope.";
|
|
846
984
|
readonly type: "object";
|
|
847
985
|
};
|
|
848
986
|
};
|
|
@@ -858,7 +996,17 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
858
996
|
readonly type: "string";
|
|
859
997
|
};
|
|
860
998
|
readonly hooks: {
|
|
861
|
-
readonly
|
|
999
|
+
readonly default: readonly [{
|
|
1000
|
+
readonly allowAsync: false;
|
|
1001
|
+
readonly name: "useEffect";
|
|
1002
|
+
}, {
|
|
1003
|
+
readonly allowAsync: false;
|
|
1004
|
+
readonly name: "useLayoutEffect";
|
|
1005
|
+
}, {
|
|
1006
|
+
readonly allowAsync: false;
|
|
1007
|
+
readonly name: "useInsertionEffect";
|
|
1008
|
+
}];
|
|
1009
|
+
readonly description: "Hook configuration objects with name and allowAsync settings.";
|
|
862
1010
|
readonly items: {
|
|
863
1011
|
readonly additionalProperties: false;
|
|
864
1012
|
readonly properties: {
|
|
@@ -884,18 +1032,29 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
884
1032
|
readonly properties: {
|
|
885
1033
|
readonly allowConditionalClosers: {
|
|
886
1034
|
readonly default: false;
|
|
1035
|
+
readonly description: "Allow closer calls that appear only on some conditional paths.";
|
|
887
1036
|
readonly type: "boolean";
|
|
888
1037
|
};
|
|
889
1038
|
readonly allowMultipleOpeners: {
|
|
890
1039
|
readonly default: true;
|
|
1040
|
+
readonly description: "Allow repeated opener calls before matching closer calls.";
|
|
891
1041
|
readonly type: "boolean";
|
|
892
1042
|
};
|
|
893
1043
|
readonly maxNestingDepth: {
|
|
894
1044
|
readonly default: 0;
|
|
1045
|
+
readonly description: "Maximum opener nesting depth before reporting; 0 disables the limit.";
|
|
895
1046
|
readonly minimum: 0;
|
|
896
1047
|
readonly type: "number";
|
|
897
1048
|
};
|
|
898
1049
|
readonly pairs: {
|
|
1050
|
+
readonly default: readonly [{
|
|
1051
|
+
readonly closer: "debug.profileend";
|
|
1052
|
+
readonly opener: "debug.profilebegin";
|
|
1053
|
+
readonly platform: "roblox";
|
|
1054
|
+
readonly requireSync: true;
|
|
1055
|
+
readonly yieldingFunctions: readonly ["task.wait", "wait", "*.WaitForChild", "*.*Async"];
|
|
1056
|
+
}];
|
|
1057
|
+
readonly description: "Opener and closer call pairs that must stay balanced.";
|
|
899
1058
|
readonly items: {
|
|
900
1059
|
readonly additionalProperties: false;
|
|
901
1060
|
readonly properties: {
|
|
@@ -953,7 +1112,6 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
953
1112
|
readonly type: "array";
|
|
954
1113
|
};
|
|
955
1114
|
};
|
|
956
|
-
readonly required: readonly ["pairs"];
|
|
957
1115
|
readonly type: "object";
|
|
958
1116
|
}], "asyncViolation" | "conditionalOpener" | "maxNestingExceeded" | "multipleOpeners" | "robloxYieldViolation" | "unexpectedCloser" | "unpairedCloser" | "unpairedOpener" | "wrongOrder", undefined>;
|
|
959
1117
|
"require-react-component-keys": import("oxlint-plugin-utilities").CreateRule<readonly [{
|
|
@@ -965,7 +1123,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
965
1123
|
readonly type: "boolean";
|
|
966
1124
|
};
|
|
967
1125
|
readonly ignoreCallExpressions: {
|
|
968
|
-
readonly default: readonly [
|
|
1126
|
+
readonly default: readonly string[];
|
|
969
1127
|
readonly description: "Function calls where JSX arguments don't need keys";
|
|
970
1128
|
readonly items: {
|
|
971
1129
|
readonly type: "string";
|
|
@@ -995,6 +1153,8 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
995
1153
|
readonly additionalProperties: false;
|
|
996
1154
|
readonly properties: {
|
|
997
1155
|
environment: {
|
|
1156
|
+
default: string;
|
|
1157
|
+
description: string;
|
|
998
1158
|
enum: readonly ["roblox-ts", "standard"];
|
|
999
1159
|
type: string;
|
|
1000
1160
|
};
|
|
@@ -1006,6 +1166,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
1006
1166
|
readonly properties: {
|
|
1007
1167
|
readonly metric: {
|
|
1008
1168
|
readonly default: "lines";
|
|
1169
|
+
readonly description: "Whether to report cases by line span or by statement count.";
|
|
1009
1170
|
readonly enum: readonly ["lines", "statements"];
|
|
1010
1171
|
readonly type: "string";
|
|
1011
1172
|
};
|
|
@@ -1063,12 +1224,16 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
1063
1224
|
readonly additionalProperties: false;
|
|
1064
1225
|
readonly properties: {
|
|
1065
1226
|
readonly allow: {
|
|
1227
|
+
readonly default: readonly [];
|
|
1228
|
+
readonly description: "Regular expression patterns for imports allowed to cross component boundaries.";
|
|
1066
1229
|
readonly items: {
|
|
1067
1230
|
readonly type: "string";
|
|
1068
1231
|
};
|
|
1069
1232
|
readonly type: "array";
|
|
1070
1233
|
};
|
|
1071
1234
|
readonly maxDepth: {
|
|
1235
|
+
readonly default: 1;
|
|
1236
|
+
readonly description: "Maximum path depth allowed inside another component before reporting.";
|
|
1072
1237
|
readonly type: "integer";
|
|
1073
1238
|
};
|
|
1074
1239
|
};
|
|
@@ -1078,6 +1243,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
1078
1243
|
readonly additionalProperties: false;
|
|
1079
1244
|
readonly properties: {
|
|
1080
1245
|
readonly hooks: {
|
|
1246
|
+
readonly default: readonly [];
|
|
1081
1247
|
readonly description: "Array of custom hook entries to check for exhaustive dependencies";
|
|
1082
1248
|
readonly items: {
|
|
1083
1249
|
readonly additionalProperties: false;
|
|
@@ -1145,6 +1311,7 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
1145
1311
|
readonly additionalProperties: false;
|
|
1146
1312
|
readonly properties: {
|
|
1147
1313
|
readonly ignoreHooks: {
|
|
1314
|
+
readonly description: "Hook names that should be ignored even when they match the hook naming pattern.";
|
|
1148
1315
|
readonly items: {
|
|
1149
1316
|
readonly type: "string";
|
|
1150
1317
|
};
|
|
@@ -1154,9 +1321,11 @@ declare const smallRules: import("oxlint-plugin-utilities").Plugin<{
|
|
|
1154
1321
|
readonly additionalProperties: {
|
|
1155
1322
|
readonly type: "boolean";
|
|
1156
1323
|
};
|
|
1324
|
+
readonly description: "Import sources or namespace names mapped to whether their hooks should be checked.";
|
|
1157
1325
|
readonly type: "object";
|
|
1158
1326
|
};
|
|
1159
1327
|
readonly onlyHooks: {
|
|
1328
|
+
readonly description: "If set, only these hook names are checked.";
|
|
1160
1329
|
readonly items: {
|
|
1161
1330
|
readonly type: "string";
|
|
1162
1331
|
};
|