@isentinel/eslint-config 6.0.0-beta.29 → 6.0.0-beta.30
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/cli.mjs +1 -1
- package/dist/index.d.mts +113 -58
- package/dist/index.mjs +13 -5
- package/dist/lint-cli.mjs +1 -1
- package/dist/oxlint.d.mts +113 -44
- package/dist/oxlint.mjs +14 -6
- package/package.json +3 -3
package/dist/cli.mjs
CHANGED
|
@@ -9,7 +9,7 @@ import path from "node:path";
|
|
|
9
9
|
import { existsSync, readFileSync } from "fs";
|
|
10
10
|
import { execSync } from "node:child_process";
|
|
11
11
|
//#region package.json
|
|
12
|
-
var version = "6.0.0-beta.
|
|
12
|
+
var version = "6.0.0-beta.30";
|
|
13
13
|
var package_default = {
|
|
14
14
|
name: "@isentinel/eslint-config",
|
|
15
15
|
version,
|
package/dist/index.d.mts
CHANGED
|
@@ -553,9 +553,6 @@ interface JsoncRuleDefaults {
|
|
|
553
553
|
"sonar/no-unused-collection": {
|
|
554
554
|
"*": "error";
|
|
555
555
|
};
|
|
556
|
-
"sonar/no-use-of-empty-return-value": {
|
|
557
|
-
"*": "error";
|
|
558
|
-
};
|
|
559
556
|
"sonar/no-useless-catch": {
|
|
560
557
|
"*": "error";
|
|
561
558
|
};
|
|
@@ -2254,6 +2251,12 @@ interface MainRuleDefaults {
|
|
|
2254
2251
|
game_roblox: "error";
|
|
2255
2252
|
package_roblox: "error";
|
|
2256
2253
|
};
|
|
2254
|
+
"small-rules/consistent-compound-words": {
|
|
2255
|
+
"*": "error";
|
|
2256
|
+
};
|
|
2257
|
+
"small-rules/isolated-functions": {
|
|
2258
|
+
"*": "error";
|
|
2259
|
+
};
|
|
2257
2260
|
"small-rules/no-array-constructor-elements": {
|
|
2258
2261
|
game_roblox: "error";
|
|
2259
2262
|
package_roblox: "error";
|
|
@@ -2268,10 +2271,16 @@ interface MainRuleDefaults {
|
|
|
2268
2271
|
"small-rules/no-commented-code": {
|
|
2269
2272
|
"*": "error";
|
|
2270
2273
|
};
|
|
2274
|
+
"small-rules/no-loop-iterable-mutation": {
|
|
2275
|
+
"*": "error";
|
|
2276
|
+
};
|
|
2271
2277
|
"small-rules/no-recursive": {
|
|
2272
2278
|
game_roblox: "error";
|
|
2273
2279
|
package_roblox: "error";
|
|
2274
2280
|
};
|
|
2281
|
+
"small-rules/no-use-of-empty-return-value": {
|
|
2282
|
+
"*": "error";
|
|
2283
|
+
};
|
|
2275
2284
|
"small-rules/prefer-class-properties": {
|
|
2276
2285
|
"*": "error";
|
|
2277
2286
|
};
|
|
@@ -2404,9 +2413,6 @@ interface MainRuleDefaults {
|
|
|
2404
2413
|
"sonar/no-unused-collection": {
|
|
2405
2414
|
"*": "error";
|
|
2406
2415
|
};
|
|
2407
|
-
"sonar/no-use-of-empty-return-value": {
|
|
2408
|
-
"*": "error";
|
|
2409
|
-
};
|
|
2410
2416
|
"sonar/no-useless-catch": {
|
|
2411
2417
|
"*": "error";
|
|
2412
2418
|
};
|
|
@@ -3693,9 +3699,6 @@ interface MainRuleDefaults {
|
|
|
3693
3699
|
"ignore": [];
|
|
3694
3700
|
}];
|
|
3695
3701
|
};
|
|
3696
|
-
"unicorn/consistent-compound-words": {
|
|
3697
|
-
"*": ["error", {}];
|
|
3698
|
-
};
|
|
3699
3702
|
"unicorn/consistent-conditional-object-spread": {
|
|
3700
3703
|
"*": ["error", "ternary"];
|
|
3701
3704
|
};
|
|
@@ -3729,14 +3732,6 @@ interface MainRuleDefaults {
|
|
|
3729
3732
|
"multipleFileExtensions": true;
|
|
3730
3733
|
}];
|
|
3731
3734
|
};
|
|
3732
|
-
"unicorn/isolated-functions": {
|
|
3733
|
-
"*": ["error", {
|
|
3734
|
-
"functions": ["makeSynchronous", "workerize"];
|
|
3735
|
-
"selectors": [];
|
|
3736
|
-
"comments": ["@isolated"];
|
|
3737
|
-
"overrideGlobals": {};
|
|
3738
|
-
}];
|
|
3739
|
-
};
|
|
3740
3735
|
"unicorn/name-replacements": {
|
|
3741
3736
|
game_roblox: ["error", {
|
|
3742
3737
|
"checkFilenames": true;
|
|
@@ -3965,9 +3960,6 @@ interface MainRuleDefaults {
|
|
|
3965
3960
|
"unicorn/no-lonely-if": {
|
|
3966
3961
|
"*": "error";
|
|
3967
3962
|
};
|
|
3968
|
-
"unicorn/no-loop-iterable-mutation": {
|
|
3969
|
-
"*": "error";
|
|
3970
|
-
};
|
|
3971
3963
|
"unicorn/no-mismatched-map-key": {
|
|
3972
3964
|
"*": "error";
|
|
3973
3965
|
};
|
|
@@ -5429,6 +5421,9 @@ interface TestRuleDefaults {
|
|
|
5429
5421
|
"skipComments": true;
|
|
5430
5422
|
}];
|
|
5431
5423
|
};
|
|
5424
|
+
"small-rules/no-trivial-assertions": {
|
|
5425
|
+
"*": "error";
|
|
5426
|
+
};
|
|
5432
5427
|
"sonar/no-duplicate-string": {
|
|
5433
5428
|
"*": ["off", {
|
|
5434
5429
|
"threshold": 3;
|
|
@@ -5441,9 +5436,6 @@ interface TestRuleDefaults {
|
|
|
5441
5436
|
"sonar/no-mixed-completion-style": {
|
|
5442
5437
|
"*": "error";
|
|
5443
5438
|
};
|
|
5444
|
-
"sonar/no-trivial-assertions": {
|
|
5445
|
-
"*": "error";
|
|
5446
|
-
};
|
|
5447
5439
|
"sonar/super-linear-regex": {
|
|
5448
5440
|
game_std: "off";
|
|
5449
5441
|
package_std: "off";
|
|
@@ -5943,9 +5935,6 @@ interface TomlRuleDefaults {
|
|
|
5943
5935
|
"sonar/no-unused-collection": {
|
|
5944
5936
|
"*": "error";
|
|
5945
5937
|
};
|
|
5946
|
-
"sonar/no-use-of-empty-return-value": {
|
|
5947
|
-
"*": "error";
|
|
5948
|
-
};
|
|
5949
5938
|
"sonar/no-useless-catch": {
|
|
5950
5939
|
"*": "error";
|
|
5951
5940
|
};
|
|
@@ -6258,9 +6247,6 @@ interface YamlRuleDefaults {
|
|
|
6258
6247
|
"sonar/no-unused-collection": {
|
|
6259
6248
|
"*": "error";
|
|
6260
6249
|
};
|
|
6261
|
-
"sonar/no-use-of-empty-return-value": {
|
|
6262
|
-
"*": "error";
|
|
6263
|
-
};
|
|
6264
6250
|
"sonar/no-useless-catch": {
|
|
6265
6251
|
"*": "error";
|
|
6266
6252
|
};
|
|
@@ -10958,7 +10944,7 @@ interface RuleOptions {
|
|
|
10958
10944
|
*/
|
|
10959
10945
|
'small-rules/array-type-generic'?: Linter.RuleEntry<[]>;
|
|
10960
10946
|
/**
|
|
10961
|
-
* Ban specified Roblox Instance classes
|
|
10947
|
+
* Ban specified Roblox Instance classes and configured Instance properties.
|
|
10962
10948
|
*/
|
|
10963
10949
|
'small-rules/ban-instances'?: Linter.RuleEntry<SmallRulesBanInstances>;
|
|
10964
10950
|
/**
|
|
@@ -10970,41 +10956,49 @@ interface RuleOptions {
|
|
|
10970
10956
|
*/
|
|
10971
10957
|
'small-rules/ban-types'?: Linter.RuleEntry<SmallRulesBanTypes>;
|
|
10972
10958
|
/**
|
|
10973
|
-
*
|
|
10959
|
+
* Enforce consistent spelling of compound words in identifiers.
|
|
10960
|
+
*/
|
|
10961
|
+
'small-rules/consistent-compound-words'?: Linter.RuleEntry<SmallRulesConsistentCompoundWords>;
|
|
10962
|
+
/**
|
|
10963
|
+
* Require a matching enable comment for every `oxlint-disable` or `eslint-disable` block directive.
|
|
10974
10964
|
*/
|
|
10975
10965
|
'small-rules/directive-disable-enable-pair'?: Linter.RuleEntry<SmallRulesDirectiveDisableEnablePair>;
|
|
10976
10966
|
/**
|
|
10977
|
-
*
|
|
10967
|
+
* Disallow aggregating `oxlint-enable` or `eslint-enable` comments across multiple disable directives.
|
|
10978
10968
|
*/
|
|
10979
10969
|
'small-rules/directive-no-aggregating-enable'?: Linter.RuleEntry<[]>;
|
|
10980
10970
|
/**
|
|
10981
|
-
*
|
|
10971
|
+
* Disallow duplicate `oxlint-disable` or `eslint-disable` comments.
|
|
10982
10972
|
*/
|
|
10983
10973
|
'small-rules/directive-no-duplicate-disable'?: Linter.RuleEntry<[]>;
|
|
10984
10974
|
/**
|
|
10985
|
-
*
|
|
10975
|
+
* Disallow `oxlint-disable` or `eslint-disable` comments for configured rules.
|
|
10986
10976
|
*/
|
|
10987
10977
|
'small-rules/directive-no-restricted-disable'?: Linter.RuleEntry<SmallRulesDirectiveNoRestrictedDisable>;
|
|
10988
10978
|
/**
|
|
10989
|
-
*
|
|
10979
|
+
* Disallow `oxlint-disable` or `eslint-disable` comments without rule names.
|
|
10990
10980
|
*/
|
|
10991
10981
|
'small-rules/directive-no-unlimited-disable'?: Linter.RuleEntry<[]>;
|
|
10992
10982
|
/**
|
|
10993
|
-
*
|
|
10983
|
+
* Disallow unused `oxlint-enable` or `eslint-enable` comments.
|
|
10994
10984
|
*/
|
|
10995
10985
|
'small-rules/directive-no-unused-enable'?: Linter.RuleEntry<[]>;
|
|
10996
10986
|
/**
|
|
10997
|
-
*
|
|
10987
|
+
* Disallow block ESLint/Oxlint directive comments.
|
|
10998
10988
|
*/
|
|
10999
10989
|
'small-rules/directive-no-use'?: Linter.RuleEntry<SmallRulesDirectiveNoUse>;
|
|
11000
10990
|
/**
|
|
11001
|
-
*
|
|
10991
|
+
* Require descriptions for `oxlint` and `eslint` disable/enable directives.
|
|
11002
10992
|
*/
|
|
11003
10993
|
'small-rules/directive-require-description'?: Linter.RuleEntry<SmallRulesDirectiveRequireDescription>;
|
|
11004
10994
|
/**
|
|
11005
10995
|
* Enforce Ianitor.Check<T> type annotations on complex TypeScript types
|
|
11006
10996
|
*/
|
|
11007
10997
|
'small-rules/enforce-ianitor-check-type'?: Linter.RuleEntry<SmallRulesEnforceIanitorCheckType>;
|
|
10998
|
+
/**
|
|
10999
|
+
* Prevent usage of variables from outside the scope of isolated functions.
|
|
11000
|
+
*/
|
|
11001
|
+
'small-rules/isolated-functions'?: Linter.RuleEntry<SmallRulesIsolatedFunctions>;
|
|
11008
11002
|
/**
|
|
11009
11003
|
* Flags effect dependencies that are not memoized. Unmemoized dependencies can cause unnecessary re-renders or infinite loops.
|
|
11010
11004
|
*/
|
|
@@ -11045,6 +11039,10 @@ interface RuleOptions {
|
|
|
11045
11039
|
* Disallow constant conditions, but allow constant loops that include loop exits such as break, return, or configured calls.
|
|
11046
11040
|
*/
|
|
11047
11041
|
'small-rules/no-constant-condition-with-break'?: Linter.RuleEntry<SmallRulesNoConstantConditionWithBreak>;
|
|
11042
|
+
/**
|
|
11043
|
+
* Disallow assignments whose value is never read.
|
|
11044
|
+
*/
|
|
11045
|
+
'small-rules/no-dead-store'?: Linter.RuleEntry<[]>;
|
|
11048
11046
|
/**
|
|
11049
11047
|
* Use throw instead of error().
|
|
11050
11048
|
*/
|
|
@@ -11054,7 +11052,15 @@ interface RuleOptions {
|
|
|
11054
11052
|
*/
|
|
11055
11053
|
'small-rules/no-events-in-events-callback'?: Linter.RuleEntry<SmallRulesNoEventsInEventsCallback>;
|
|
11056
11054
|
/**
|
|
11057
|
-
*
|
|
11055
|
+
* Disallow map(...) directly after filter(...).
|
|
11056
|
+
*/
|
|
11057
|
+
'small-rules/no-filter-map-chain'?: Linter.RuleEntry<[]>;
|
|
11058
|
+
/**
|
|
11059
|
+
* Disallow exact comparisons involving inexact floating-point values.
|
|
11060
|
+
*/
|
|
11061
|
+
'small-rules/no-floating-point-equality'?: Linter.RuleEntry<[]>;
|
|
11062
|
+
/**
|
|
11063
|
+
* Report React components whose bodies exceed 300 lines.
|
|
11058
11064
|
*/
|
|
11059
11065
|
'small-rules/no-giant-component'?: Linter.RuleEntry<[]>;
|
|
11060
11066
|
/**
|
|
@@ -11074,7 +11080,7 @@ interface RuleOptions {
|
|
|
11074
11080
|
*/
|
|
11075
11081
|
'small-rules/no-identity-map'?: Linter.RuleEntry<SmallRulesNoIdentityMap>;
|
|
11076
11082
|
/**
|
|
11077
|
-
* Disallow standalone `++` and `--` statements.
|
|
11083
|
+
* Disallow standalone `++` and `--` statements and for-loop update clauses.
|
|
11078
11084
|
*/
|
|
11079
11085
|
'small-rules/no-increment-decrement'?: Linter.RuleEntry<SmallRulesNoIncrementDecrement>;
|
|
11080
11086
|
/**
|
|
@@ -11085,6 +11091,10 @@ interface RuleOptions {
|
|
|
11085
11091
|
* Detect instance methods that do not use 'this' and suggest converting them to standalone functions for better performance in roblox-ts.
|
|
11086
11092
|
*/
|
|
11087
11093
|
'small-rules/no-instance-methods-without-this'?: Linter.RuleEntry<SmallRulesNoInstanceMethodsWithoutThis>;
|
|
11094
|
+
/**
|
|
11095
|
+
* Disallow mutating a loop iterable during iteration.
|
|
11096
|
+
*/
|
|
11097
|
+
'small-rules/no-loop-iterable-mutation'?: Linter.RuleEntry<[]>;
|
|
11088
11098
|
/**
|
|
11089
11099
|
* 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.
|
|
11090
11100
|
*/
|
|
@@ -11123,9 +11133,13 @@ interface RuleOptions {
|
|
|
11123
11133
|
*/
|
|
11124
11134
|
'small-rules/no-table-create-map'?: Linter.RuleEntry<[]>;
|
|
11125
11135
|
/**
|
|
11126
|
-
* Disallow task.wait() calls.
|
|
11136
|
+
* Disallow task.wait() and Promise.delay(...).await() calls.
|
|
11127
11137
|
*/
|
|
11128
11138
|
'small-rules/no-task-wait'?: Linter.RuleEntry<[]>;
|
|
11139
|
+
/**
|
|
11140
|
+
* Disallow assertions that always succeed or compare against freshly created values.
|
|
11141
|
+
*/
|
|
11142
|
+
'small-rules/no-trivial-assertions'?: Linter.RuleEntry<[]>;
|
|
11129
11143
|
/**
|
|
11130
11144
|
* Ban React property names that begin with an underscore in JSX.
|
|
11131
11145
|
*/
|
|
@@ -11142,16 +11156,20 @@ interface RuleOptions {
|
|
|
11142
11156
|
* Disallow useMemo for expressions that are already trivial to compute.
|
|
11143
11157
|
*/
|
|
11144
11158
|
'small-rules/no-use-memo-simple-expression'?: Linter.RuleEntry<[]>;
|
|
11159
|
+
/**
|
|
11160
|
+
* Disallow using the return value of functions that do not return anything.
|
|
11161
|
+
*/
|
|
11162
|
+
'small-rules/no-use-of-empty-return-value'?: Linter.RuleEntry<[]>;
|
|
11145
11163
|
/**
|
|
11146
11164
|
* Disallow constants that do not add value.
|
|
11147
11165
|
*/
|
|
11148
11166
|
'small-rules/no-useless-constants'?: Linter.RuleEntry<SmallRulesNoUselessConstants>;
|
|
11149
11167
|
/**
|
|
11150
|
-
*
|
|
11168
|
+
* Disallow Roblox JSX properties whose values already match the class defaults.
|
|
11151
11169
|
*/
|
|
11152
11170
|
'small-rules/no-useless-default'?: Linter.RuleEntry<[]>;
|
|
11153
11171
|
/**
|
|
11154
|
-
* Disallow effects
|
|
11172
|
+
* 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.
|
|
11155
11173
|
*/
|
|
11156
11174
|
'small-rules/no-useless-use-effect'?: Linter.RuleEntry<SmallRulesNoUselessUseEffect>;
|
|
11157
11175
|
/**
|
|
@@ -11162,6 +11180,10 @@ interface RuleOptions {
|
|
|
11162
11180
|
* Disallow useSpring hooks whose config and dependencies are entirely static
|
|
11163
11181
|
*/
|
|
11164
11182
|
'small-rules/no-useless-use-spring'?: Linter.RuleEntry<SmallRulesNoUselessUseSpring>;
|
|
11183
|
+
/**
|
|
11184
|
+
* Disallow spreading a potentially unbounded array into a variadic call, because every element becomes a stack-allocated argument.
|
|
11185
|
+
*/
|
|
11186
|
+
'small-rules/no-variadic-spread'?: Linter.RuleEntry<[]>;
|
|
11165
11187
|
/**
|
|
11166
11188
|
* Use Log instead of warn().
|
|
11167
11189
|
*/
|
|
@@ -11182,16 +11204,20 @@ interface RuleOptions {
|
|
|
11182
11204
|
* Prefer a local ContextStack component over directly nesting multiple context providers.
|
|
11183
11205
|
*/
|
|
11184
11206
|
'small-rules/prefer-context-stack'?: Linter.RuleEntry<[]>;
|
|
11207
|
+
/**
|
|
11208
|
+
* Prefer importing React hooks directly instead of calling them via the React namespace.
|
|
11209
|
+
*/
|
|
11210
|
+
'small-rules/prefer-direct-hook-imports'?: Linter.RuleEntry<SmallRulesPreferDirectHookImports>;
|
|
11185
11211
|
/**
|
|
11186
11212
|
* Prefer early returns over full-body conditional wrapping.
|
|
11187
11213
|
*/
|
|
11188
11214
|
'small-rules/prefer-early-return'?: Linter.RuleEntry<SmallRulesPreferEarlyReturn>;
|
|
11189
11215
|
/**
|
|
11190
|
-
* Enforce expect assertion guards in
|
|
11216
|
+
* Enforce expect assertion guards in tests and prefer expect.assertions(n) over expect.hasAssertions() when the count is known.
|
|
11191
11217
|
*/
|
|
11192
11218
|
'small-rules/prefer-expect-assertions'?: Linter.RuleEntry<SmallRulesPreferExpectAssertions>;
|
|
11193
11219
|
/**
|
|
11194
|
-
* Prefer extracting static
|
|
11220
|
+
* Prefer extracting static JSX elements to module-level constants.
|
|
11195
11221
|
*/
|
|
11196
11222
|
'small-rules/prefer-hoisted-jsx-elements'?: Linter.RuleEntry<SmallRulesPreferHoistedJsxElements>;
|
|
11197
11223
|
/**
|
|
@@ -11215,7 +11241,7 @@ interface RuleOptions {
|
|
|
11215
11241
|
*/
|
|
11216
11242
|
'small-rules/prefer-modding-inspect'?: Linter.RuleEntry<[]>;
|
|
11217
11243
|
/**
|
|
11218
|
-
* Prefer
|
|
11244
|
+
* Prefer screaming snake case constants at module scope or the allowed top-level wrapper scope.
|
|
11219
11245
|
*/
|
|
11220
11246
|
'small-rules/prefer-module-scope-constants'?: Linter.RuleEntry<[]>;
|
|
11221
11247
|
/**
|
|
@@ -11223,11 +11249,11 @@ interface RuleOptions {
|
|
|
11223
11249
|
*/
|
|
11224
11250
|
'small-rules/prefer-padding-components'?: Linter.RuleEntry<[]>;
|
|
11225
11251
|
/**
|
|
11226
|
-
* Enforce
|
|
11252
|
+
* Enforce PascalCase names for enums and enum members.
|
|
11227
11253
|
*/
|
|
11228
11254
|
'small-rules/prefer-pascal-case-enums'?: Linter.RuleEntry<[]>;
|
|
11229
11255
|
/**
|
|
11230
|
-
* Prefer direct ColorSequence and NumberSequence overloads over two-keypoint arrays.
|
|
11256
|
+
* Prefer direct ColorSequence and NumberSequence overloads over identical direct arguments and two-keypoint arrays.
|
|
11231
11257
|
*/
|
|
11232
11258
|
'small-rules/prefer-sequence-overloads'?: Linter.RuleEntry<[]>;
|
|
11233
11259
|
/**
|
|
@@ -11275,7 +11301,7 @@ interface RuleOptions {
|
|
|
11275
11301
|
*/
|
|
11276
11302
|
'small-rules/require-paired-calls'?: Linter.RuleEntry<SmallRulesRequirePairedCalls>;
|
|
11277
11303
|
/**
|
|
11278
|
-
* Require keys on React
|
|
11304
|
+
* Require keys on nested React JSX children, fragments, and configured iteration or memoization contexts.
|
|
11279
11305
|
*/
|
|
11280
11306
|
'small-rules/require-react-component-keys'?: Linter.RuleEntry<SmallRulesRequireReactComponentKeys>;
|
|
11281
11307
|
/**
|
|
@@ -11283,15 +11309,15 @@ interface RuleOptions {
|
|
|
11283
11309
|
*/
|
|
11284
11310
|
'small-rules/require-react-display-names'?: Linter.RuleEntry<SmallRulesRequireReactDisplayNames>;
|
|
11285
11311
|
/**
|
|
11286
|
-
* Require braces around switch case bodies
|
|
11312
|
+
* Require braces around switch case bodies selected by line span or statement count.
|
|
11287
11313
|
*/
|
|
11288
11314
|
'small-rules/require-switch-case-braces'?: Linter.RuleEntry<SmallRulesRequireSwitchCaseBraces>;
|
|
11289
11315
|
/**
|
|
11290
|
-
* Require 'Error.captureStackTrace' before throwing
|
|
11316
|
+
* Require 'Error.captureStackTrace' before directly throwing new Error instances in named functions.
|
|
11291
11317
|
*/
|
|
11292
11318
|
'small-rules/require-throw-error-capture'?: Linter.RuleEntry<SmallRulesRequireThrowErrorCapture>;
|
|
11293
11319
|
/**
|
|
11294
|
-
* Require the 'u' or 'v' unicode flag on
|
|
11320
|
+
* Require the 'u' or 'v' unicode flag on calls named regex().
|
|
11295
11321
|
*/
|
|
11296
11322
|
'small-rules/require-unicode-regex'?: Linter.RuleEntry<[]>;
|
|
11297
11323
|
/**
|
|
@@ -11299,7 +11325,7 @@ interface RuleOptions {
|
|
|
11299
11325
|
*/
|
|
11300
11326
|
'small-rules/rerender-memo-with-default-value'?: Linter.RuleEntry<[]>;
|
|
11301
11327
|
/**
|
|
11302
|
-
* Prevent
|
|
11328
|
+
* Prevent imports that reach into another component's nested modules.
|
|
11303
11329
|
*/
|
|
11304
11330
|
'small-rules/strict-component-boundaries'?: Linter.RuleEntry<SmallRulesStrictComponentBoundaries>;
|
|
11305
11331
|
/**
|
|
@@ -22927,6 +22953,19 @@ type SmallRulesBanTypes = [] | [{
|
|
|
22927
22953
|
[k: string]: string | undefined;
|
|
22928
22954
|
});
|
|
22929
22955
|
}];
|
|
22956
|
+
// ----- small-rules/consistent-compound-words -----
|
|
22957
|
+
type SmallRulesConsistentCompoundWords = [] | [{
|
|
22958
|
+
allowList?: {
|
|
22959
|
+
[k: string]: true | undefined;
|
|
22960
|
+
};
|
|
22961
|
+
checkProperties?: boolean;
|
|
22962
|
+
checkShorthandProperties?: boolean;
|
|
22963
|
+
checkVariables?: boolean;
|
|
22964
|
+
extendDefaultReplacements?: boolean;
|
|
22965
|
+
replacements?: {
|
|
22966
|
+
[k: string]: (false | string) | undefined;
|
|
22967
|
+
};
|
|
22968
|
+
}];
|
|
22930
22969
|
// ----- small-rules/directive-disable-enable-pair -----
|
|
22931
22970
|
type SmallRulesDirectiveDisableEnablePair = [] | [{
|
|
22932
22971
|
allowWholeFile?: boolean;
|
|
@@ -22947,7 +22986,15 @@ type SmallRulesEnforceIanitorCheckType = [] | [{
|
|
|
22947
22986
|
errorThreshold?: number;
|
|
22948
22987
|
interfacePenalty?: number;
|
|
22949
22988
|
performanceMode?: boolean;
|
|
22950
|
-
|
|
22989
|
+
}];
|
|
22990
|
+
// ----- small-rules/isolated-functions -----
|
|
22991
|
+
type SmallRulesIsolatedFunctions = [] | [{
|
|
22992
|
+
comments?: string[];
|
|
22993
|
+
functions?: string[];
|
|
22994
|
+
overrideGlobals?: {
|
|
22995
|
+
[k: string]: (boolean | ("off" | "readonly" | "writable" | "writeable")) | undefined;
|
|
22996
|
+
};
|
|
22997
|
+
selectors?: string[];
|
|
22951
22998
|
}];
|
|
22952
22999
|
// ----- small-rules/memoized-effect-dependencies -----
|
|
22953
23000
|
type SmallRulesMemoizedEffectDependencies = [] | [{
|
|
@@ -22979,6 +23026,10 @@ type SmallRulesNoAsyncInSystem = [] | [{
|
|
|
22979
23026
|
parameterIndex: number;
|
|
22980
23027
|
source: string;
|
|
22981
23028
|
}[];
|
|
23029
|
+
synchronousCallbacks?: {
|
|
23030
|
+
callbackArgumentIndexes: [number, ...(number)[]];
|
|
23031
|
+
calleePath: [string, ...(string)[]];
|
|
23032
|
+
}[];
|
|
22982
23033
|
}];
|
|
22983
23034
|
// ----- small-rules/no-color3-constructor -----
|
|
22984
23035
|
type SmallRulesNoColor3Constructor = [] | [{
|
|
@@ -23091,6 +23142,11 @@ type SmallRulesNoUselessUseSpring = [] | [{
|
|
|
23091
23142
|
}];
|
|
23092
23143
|
// ----- small-rules/prefer-class-properties -----
|
|
23093
23144
|
type SmallRulesPreferClassProperties = [] | [("always" | "never")];
|
|
23145
|
+
// ----- small-rules/prefer-direct-hook-imports -----
|
|
23146
|
+
type SmallRulesPreferDirectHookImports = [] | [{
|
|
23147
|
+
allowedHooks?: string[];
|
|
23148
|
+
environment?: ("roblox-ts" | "standard");
|
|
23149
|
+
}];
|
|
23094
23150
|
// ----- small-rules/prefer-early-return -----
|
|
23095
23151
|
type SmallRulesPreferEarlyReturn = [] | [{
|
|
23096
23152
|
maximumStatements?: number;
|
|
@@ -23107,6 +23163,7 @@ type SmallRulesPreferExpectAssertions = [] | [{
|
|
|
23107
23163
|
type SmallRulesPreferHoistedJsxElements = [] | [{
|
|
23108
23164
|
additionalHoistableComponents?: string[];
|
|
23109
23165
|
additionalStaticFactories?: string[];
|
|
23166
|
+
environment?: ("roblox-ts" | "standard");
|
|
23110
23167
|
}];
|
|
23111
23168
|
// ----- small-rules/prevent-abbreviations -----
|
|
23112
23169
|
type SmallRulesPreventAbbreviations = [] | [{
|
|
@@ -23122,9 +23179,7 @@ type SmallRulesPreventAbbreviations = [] | [{
|
|
|
23122
23179
|
checkVariables?: boolean;
|
|
23123
23180
|
extendDefaultAllowList?: boolean;
|
|
23124
23181
|
extendDefaultReplacements?: boolean;
|
|
23125
|
-
ignore?:
|
|
23126
|
-
[k: string]: unknown | undefined;
|
|
23127
|
-
} | string)[];
|
|
23182
|
+
ignore?: string[];
|
|
23128
23183
|
ignoreShorthands?: string[];
|
|
23129
23184
|
replacements?: {
|
|
23130
23185
|
[k: string]: (false | {
|
|
@@ -23158,7 +23213,7 @@ type SmallRulesRequirePairedCalls = [] | [{
|
|
|
23158
23213
|
allowConditionalClosers?: boolean;
|
|
23159
23214
|
allowMultipleOpeners?: boolean;
|
|
23160
23215
|
maxNestingDepth?: number;
|
|
23161
|
-
pairs
|
|
23216
|
+
pairs?: [{
|
|
23162
23217
|
alternatives?: string[];
|
|
23163
23218
|
closer: (string | [string, ...(string)[]]);
|
|
23164
23219
|
opener: string;
|
package/dist/index.mjs
CHANGED
|
@@ -3729,18 +3729,25 @@ function reactRules({ filenameCase = "kebabCase", reactCompiler = true, stylisti
|
|
|
3729
3729
|
*/
|
|
3730
3730
|
function smallRulesRules({ isInEditor = false, stylistic = true } = {}) {
|
|
3731
3731
|
return {
|
|
3732
|
+
"small-rules/isolated-functions": "error",
|
|
3732
3733
|
"small-rules/no-async-constructor": "error",
|
|
3733
3734
|
"small-rules/no-commented-code": isInEditor ? "off" : "error",
|
|
3735
|
+
"small-rules/no-loop-iterable-mutation": "error",
|
|
3736
|
+
"small-rules/no-use-of-empty-return-value": "error",
|
|
3734
3737
|
"small-rules/prefer-class-properties": "error",
|
|
3735
3738
|
"small-rules/prefer-early-return": ["error", { maximumStatements: 1 }],
|
|
3736
3739
|
"small-rules/strict-component-boundaries": "error",
|
|
3737
3740
|
...stylistic !== false ? {
|
|
3741
|
+
"small-rules/consistent-compound-words": "error",
|
|
3738
3742
|
"small-rules/prefer-module-scope-constants": "error",
|
|
3739
3743
|
"small-rules/prefer-singular-enums": "error",
|
|
3740
3744
|
"small-rules/require-async-suffix": "error"
|
|
3741
3745
|
} : {}
|
|
3742
3746
|
};
|
|
3743
3747
|
}
|
|
3748
|
+
function smallRulesTestRules() {
|
|
3749
|
+
return { "small-rules/no-trivial-assertions": "error" };
|
|
3750
|
+
}
|
|
3744
3751
|
//#endregion
|
|
3745
3752
|
//#region src/eslint/configs/small-rules.ts
|
|
3746
3753
|
/**
|
|
@@ -4018,7 +4025,6 @@ function sonarjsRules({ isInEditor, roblox = true }) {
|
|
|
4018
4025
|
"sonar/no-try-promise": "error",
|
|
4019
4026
|
"sonar/no-unthrown-error": "error",
|
|
4020
4027
|
"sonar/no-unused-collection": "error",
|
|
4021
|
-
"sonar/no-use-of-empty-return-value": "error",
|
|
4022
4028
|
"sonar/no-useless-catch": "error",
|
|
4023
4029
|
"sonar/no-useless-increment": "error",
|
|
4024
4030
|
"sonar/non-existent-operator": "error",
|
|
@@ -4053,7 +4059,6 @@ function sonarjsRules({ isInEditor, roblox = true }) {
|
|
|
4053
4059
|
function sonarjsTestRules({ jest = false, roblox = true } = {}) {
|
|
4054
4060
|
return {
|
|
4055
4061
|
"sonar/no-incompatible-assertion-types": "error",
|
|
4056
|
-
"sonar/no-trivial-assertions": "error",
|
|
4057
4062
|
...jest ? {
|
|
4058
4063
|
"sonar/no-mixed-completion-style": "error",
|
|
4059
4064
|
"sonar/synchronous-suite-callback": "error"
|
|
@@ -5262,6 +5267,7 @@ async function test({ files = GLOB_TESTS, isInEditor = false, jest = false, over
|
|
|
5262
5267
|
jest: true,
|
|
5263
5268
|
roblox: isRoblox
|
|
5264
5269
|
}),
|
|
5270
|
+
...smallRulesTestRules(),
|
|
5265
5271
|
...overrides,
|
|
5266
5272
|
...jestOptions.overrides
|
|
5267
5273
|
},
|
|
@@ -5682,7 +5688,6 @@ function unicornRules(options = {}) {
|
|
|
5682
5688
|
ignore: ["^[A-Z0-9]+.md$"],
|
|
5683
5689
|
multipleFileExtensions: true
|
|
5684
5690
|
}],
|
|
5685
|
-
"unicorn/isolated-functions": "error",
|
|
5686
5691
|
"unicorn/name-replacements": ["error", {
|
|
5687
5692
|
checkFilenames: true,
|
|
5688
5693
|
replacements: unicornNameReplacements(options)
|
|
@@ -5705,7 +5710,6 @@ function unicornRules(options = {}) {
|
|
|
5705
5710
|
"unicorn/no-invalid-well-known-symbol-methods": "error",
|
|
5706
5711
|
"unicorn/no-keyword-prefix": "error",
|
|
5707
5712
|
"unicorn/no-lonely-if": "error",
|
|
5708
|
-
"unicorn/no-loop-iterable-mutation": "error",
|
|
5709
5713
|
"unicorn/no-mismatched-map-key": "error",
|
|
5710
5714
|
"unicorn/no-misrefactored-assignment": "error",
|
|
5711
5715
|
"unicorn/no-negated-array-predicate": "error",
|
|
@@ -5757,7 +5761,6 @@ function unicornRules(options = {}) {
|
|
|
5757
5761
|
"unicorn/prefer-then-catch": "error",
|
|
5758
5762
|
"unicorn/prefer-unary-minus": "error",
|
|
5759
5763
|
...stylistic !== false ? {
|
|
5760
|
-
"unicorn/consistent-compound-words": "error",
|
|
5761
5764
|
"unicorn/prefer-block-statement-over-iife": "error",
|
|
5762
5765
|
"unicorn/switch-case-braces": "error"
|
|
5763
5766
|
} : {},
|
|
@@ -15512,11 +15515,16 @@ const oxlintRuleMapping = {
|
|
|
15512
15515
|
"comment-length/limit-multi-line-comments": "js-plugin",
|
|
15513
15516
|
"comment-length/limit-single-line-comments": "js-plugin",
|
|
15514
15517
|
"small-rules/array-type-generic": "js-plugin",
|
|
15518
|
+
"small-rules/consistent-compound-words": "js-plugin",
|
|
15519
|
+
"small-rules/isolated-functions": "js-plugin",
|
|
15515
15520
|
"small-rules/no-array-constructor-elements": "js-plugin",
|
|
15516
15521
|
"small-rules/no-array-size-assignment": "js-plugin",
|
|
15517
15522
|
"small-rules/no-async-constructor": "js-plugin",
|
|
15518
15523
|
"small-rules/no-commented-code": "js-plugin",
|
|
15524
|
+
"small-rules/no-loop-iterable-mutation": "js-plugin",
|
|
15519
15525
|
"small-rules/no-recursive": "js-plugin",
|
|
15526
|
+
"small-rules/no-trivial-assertions": "js-plugin",
|
|
15527
|
+
"small-rules/no-use-of-empty-return-value": "js-plugin",
|
|
15520
15528
|
"small-rules/prefer-class-properties": "js-plugin",
|
|
15521
15529
|
"small-rules/prefer-early-return": "js-plugin",
|
|
15522
15530
|
"small-rules/prefer-module-scope-constants": "js-plugin",
|
package/dist/lint-cli.mjs
CHANGED
|
@@ -36,7 +36,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
36
36
|
}) : target, mod));
|
|
37
37
|
//#endregion
|
|
38
38
|
//#region package.json
|
|
39
|
-
var version = "6.0.0-beta.
|
|
39
|
+
var version = "6.0.0-beta.30";
|
|
40
40
|
//#endregion
|
|
41
41
|
//#region src/lint-cli/lib/cli/types.ts
|
|
42
42
|
/**
|
package/dist/oxlint.d.mts
CHANGED
|
@@ -1501,6 +1501,12 @@ interface OxlintMainRuleDefaults {
|
|
|
1501
1501
|
game_roblox: "error";
|
|
1502
1502
|
package_roblox: "error";
|
|
1503
1503
|
};
|
|
1504
|
+
"small-rules/consistent-compound-words": {
|
|
1505
|
+
"*": "error";
|
|
1506
|
+
};
|
|
1507
|
+
"small-rules/isolated-functions": {
|
|
1508
|
+
"*": "error";
|
|
1509
|
+
};
|
|
1504
1510
|
"small-rules/no-array-constructor-elements": {
|
|
1505
1511
|
game_roblox: "error";
|
|
1506
1512
|
package_roblox: "error";
|
|
@@ -1515,10 +1521,16 @@ interface OxlintMainRuleDefaults {
|
|
|
1515
1521
|
"small-rules/no-commented-code": {
|
|
1516
1522
|
"*": "error";
|
|
1517
1523
|
};
|
|
1524
|
+
"small-rules/no-loop-iterable-mutation": {
|
|
1525
|
+
"*": "error";
|
|
1526
|
+
};
|
|
1518
1527
|
"small-rules/no-recursive": {
|
|
1519
1528
|
game_roblox: "error";
|
|
1520
1529
|
package_roblox: "error";
|
|
1521
1530
|
};
|
|
1531
|
+
"small-rules/no-use-of-empty-return-value": {
|
|
1532
|
+
"*": "error";
|
|
1533
|
+
};
|
|
1522
1534
|
"small-rules/prefer-class-properties": {
|
|
1523
1535
|
"*": "error";
|
|
1524
1536
|
};
|
|
@@ -1629,9 +1641,6 @@ interface OxlintMainRuleDefaults {
|
|
|
1629
1641
|
"sonar/no-unused-collection": {
|
|
1630
1642
|
"*": "error";
|
|
1631
1643
|
};
|
|
1632
|
-
"sonar/no-use-of-empty-return-value": {
|
|
1633
|
-
"*": "error";
|
|
1634
|
-
};
|
|
1635
1644
|
"sonar/no-useless-catch": {
|
|
1636
1645
|
"*": "error";
|
|
1637
1646
|
};
|
|
@@ -2278,9 +2287,6 @@ interface OxlintMainRuleDefaults {
|
|
|
2278
2287
|
"unicode-bom": {
|
|
2279
2288
|
"*": ["error", "never"];
|
|
2280
2289
|
};
|
|
2281
|
-
"unicorn-js/consistent-compound-words": {
|
|
2282
|
-
"*": "error";
|
|
2283
|
-
};
|
|
2284
2290
|
"unicorn-js/consistent-conditional-object-spread": {
|
|
2285
2291
|
"*": ["error", "ternary"];
|
|
2286
2292
|
};
|
|
@@ -2293,9 +2299,6 @@ interface OxlintMainRuleDefaults {
|
|
|
2293
2299
|
"unicorn-js/consistent-tuple-labels": {
|
|
2294
2300
|
"*": "error";
|
|
2295
2301
|
};
|
|
2296
|
-
"unicorn-js/isolated-functions": {
|
|
2297
|
-
"*": "error";
|
|
2298
|
-
};
|
|
2299
2302
|
"unicorn-js/name-replacements": {
|
|
2300
2303
|
game_roblox: ["error", {
|
|
2301
2304
|
"checkFilenames": true;
|
|
@@ -2499,9 +2502,6 @@ interface OxlintMainRuleDefaults {
|
|
|
2499
2502
|
"unicorn-js/no-keyword-prefix": {
|
|
2500
2503
|
"*": "error";
|
|
2501
2504
|
};
|
|
2502
|
-
"unicorn-js/no-loop-iterable-mutation": {
|
|
2503
|
-
"*": "error";
|
|
2504
|
-
};
|
|
2505
2505
|
"unicorn-js/no-mismatched-map-key": {
|
|
2506
2506
|
"*": "error";
|
|
2507
2507
|
};
|
|
@@ -3391,15 +3391,15 @@ interface OxlintTestRuleDefaults {
|
|
|
3391
3391
|
"no-unused-expressions": {
|
|
3392
3392
|
"*": "off";
|
|
3393
3393
|
};
|
|
3394
|
+
"small-rules/no-trivial-assertions": {
|
|
3395
|
+
"*": "error";
|
|
3396
|
+
};
|
|
3394
3397
|
"sonar/no-duplicate-string": {
|
|
3395
3398
|
"*": "off";
|
|
3396
3399
|
};
|
|
3397
3400
|
"sonar/no-mixed-completion-style": {
|
|
3398
3401
|
"*": "error";
|
|
3399
3402
|
};
|
|
3400
|
-
"sonar/no-trivial-assertions": {
|
|
3401
|
-
"*": "error";
|
|
3402
|
-
};
|
|
3403
3403
|
"sonar/super-linear-regex": {
|
|
3404
3404
|
game_std: "off";
|
|
3405
3405
|
package_std: "off";
|
|
@@ -8146,7 +8146,7 @@ interface RuleOptions {
|
|
|
8146
8146
|
*/
|
|
8147
8147
|
'small-rules/array-type-generic'?: Linter.RuleEntry<[]>;
|
|
8148
8148
|
/**
|
|
8149
|
-
* Ban specified Roblox Instance classes
|
|
8149
|
+
* Ban specified Roblox Instance classes and configured Instance properties.
|
|
8150
8150
|
*/
|
|
8151
8151
|
'small-rules/ban-instances'?: Linter.RuleEntry<SmallRulesBanInstances>;
|
|
8152
8152
|
/**
|
|
@@ -8158,41 +8158,49 @@ interface RuleOptions {
|
|
|
8158
8158
|
*/
|
|
8159
8159
|
'small-rules/ban-types'?: Linter.RuleEntry<SmallRulesBanTypes>;
|
|
8160
8160
|
/**
|
|
8161
|
-
*
|
|
8161
|
+
* Enforce consistent spelling of compound words in identifiers.
|
|
8162
|
+
*/
|
|
8163
|
+
'small-rules/consistent-compound-words'?: Linter.RuleEntry<SmallRulesConsistentCompoundWords>;
|
|
8164
|
+
/**
|
|
8165
|
+
* Require a matching enable comment for every `oxlint-disable` or `eslint-disable` block directive.
|
|
8162
8166
|
*/
|
|
8163
8167
|
'small-rules/directive-disable-enable-pair'?: Linter.RuleEntry<SmallRulesDirectiveDisableEnablePair>;
|
|
8164
8168
|
/**
|
|
8165
|
-
*
|
|
8169
|
+
* Disallow aggregating `oxlint-enable` or `eslint-enable` comments across multiple disable directives.
|
|
8166
8170
|
*/
|
|
8167
8171
|
'small-rules/directive-no-aggregating-enable'?: Linter.RuleEntry<[]>;
|
|
8168
8172
|
/**
|
|
8169
|
-
*
|
|
8173
|
+
* Disallow duplicate `oxlint-disable` or `eslint-disable` comments.
|
|
8170
8174
|
*/
|
|
8171
8175
|
'small-rules/directive-no-duplicate-disable'?: Linter.RuleEntry<[]>;
|
|
8172
8176
|
/**
|
|
8173
|
-
*
|
|
8177
|
+
* Disallow `oxlint-disable` or `eslint-disable` comments for configured rules.
|
|
8174
8178
|
*/
|
|
8175
8179
|
'small-rules/directive-no-restricted-disable'?: Linter.RuleEntry<SmallRulesDirectiveNoRestrictedDisable>;
|
|
8176
8180
|
/**
|
|
8177
|
-
*
|
|
8181
|
+
* Disallow `oxlint-disable` or `eslint-disable` comments without rule names.
|
|
8178
8182
|
*/
|
|
8179
8183
|
'small-rules/directive-no-unlimited-disable'?: Linter.RuleEntry<[]>;
|
|
8180
8184
|
/**
|
|
8181
|
-
*
|
|
8185
|
+
* Disallow unused `oxlint-enable` or `eslint-enable` comments.
|
|
8182
8186
|
*/
|
|
8183
8187
|
'small-rules/directive-no-unused-enable'?: Linter.RuleEntry<[]>;
|
|
8184
8188
|
/**
|
|
8185
|
-
*
|
|
8189
|
+
* Disallow block ESLint/Oxlint directive comments.
|
|
8186
8190
|
*/
|
|
8187
8191
|
'small-rules/directive-no-use'?: Linter.RuleEntry<SmallRulesDirectiveNoUse>;
|
|
8188
8192
|
/**
|
|
8189
|
-
*
|
|
8193
|
+
* Require descriptions for `oxlint` and `eslint` disable/enable directives.
|
|
8190
8194
|
*/
|
|
8191
8195
|
'small-rules/directive-require-description'?: Linter.RuleEntry<SmallRulesDirectiveRequireDescription>;
|
|
8192
8196
|
/**
|
|
8193
8197
|
* Enforce Ianitor.Check<T> type annotations on complex TypeScript types
|
|
8194
8198
|
*/
|
|
8195
8199
|
'small-rules/enforce-ianitor-check-type'?: Linter.RuleEntry<SmallRulesEnforceIanitorCheckType>;
|
|
8200
|
+
/**
|
|
8201
|
+
* Prevent usage of variables from outside the scope of isolated functions.
|
|
8202
|
+
*/
|
|
8203
|
+
'small-rules/isolated-functions'?: Linter.RuleEntry<SmallRulesIsolatedFunctions>;
|
|
8196
8204
|
/**
|
|
8197
8205
|
* Flags effect dependencies that are not memoized. Unmemoized dependencies can cause unnecessary re-renders or infinite loops.
|
|
8198
8206
|
*/
|
|
@@ -8233,6 +8241,10 @@ interface RuleOptions {
|
|
|
8233
8241
|
* Disallow constant conditions, but allow constant loops that include loop exits such as break, return, or configured calls.
|
|
8234
8242
|
*/
|
|
8235
8243
|
'small-rules/no-constant-condition-with-break'?: Linter.RuleEntry<SmallRulesNoConstantConditionWithBreak>;
|
|
8244
|
+
/**
|
|
8245
|
+
* Disallow assignments whose value is never read.
|
|
8246
|
+
*/
|
|
8247
|
+
'small-rules/no-dead-store'?: Linter.RuleEntry<[]>;
|
|
8236
8248
|
/**
|
|
8237
8249
|
* Use throw instead of error().
|
|
8238
8250
|
*/
|
|
@@ -8242,7 +8254,15 @@ interface RuleOptions {
|
|
|
8242
8254
|
*/
|
|
8243
8255
|
'small-rules/no-events-in-events-callback'?: Linter.RuleEntry<SmallRulesNoEventsInEventsCallback>;
|
|
8244
8256
|
/**
|
|
8245
|
-
*
|
|
8257
|
+
* Disallow map(...) directly after filter(...).
|
|
8258
|
+
*/
|
|
8259
|
+
'small-rules/no-filter-map-chain'?: Linter.RuleEntry<[]>;
|
|
8260
|
+
/**
|
|
8261
|
+
* Disallow exact comparisons involving inexact floating-point values.
|
|
8262
|
+
*/
|
|
8263
|
+
'small-rules/no-floating-point-equality'?: Linter.RuleEntry<[]>;
|
|
8264
|
+
/**
|
|
8265
|
+
* Report React components whose bodies exceed 300 lines.
|
|
8246
8266
|
*/
|
|
8247
8267
|
'small-rules/no-giant-component'?: Linter.RuleEntry<[]>;
|
|
8248
8268
|
/**
|
|
@@ -8262,7 +8282,7 @@ interface RuleOptions {
|
|
|
8262
8282
|
*/
|
|
8263
8283
|
'small-rules/no-identity-map'?: Linter.RuleEntry<SmallRulesNoIdentityMap>;
|
|
8264
8284
|
/**
|
|
8265
|
-
* Disallow standalone `++` and `--` statements.
|
|
8285
|
+
* Disallow standalone `++` and `--` statements and for-loop update clauses.
|
|
8266
8286
|
*/
|
|
8267
8287
|
'small-rules/no-increment-decrement'?: Linter.RuleEntry<SmallRulesNoIncrementDecrement>;
|
|
8268
8288
|
/**
|
|
@@ -8273,6 +8293,10 @@ interface RuleOptions {
|
|
|
8273
8293
|
* Detect instance methods that do not use 'this' and suggest converting them to standalone functions for better performance in roblox-ts.
|
|
8274
8294
|
*/
|
|
8275
8295
|
'small-rules/no-instance-methods-without-this'?: Linter.RuleEntry<SmallRulesNoInstanceMethodsWithoutThis>;
|
|
8296
|
+
/**
|
|
8297
|
+
* Disallow mutating a loop iterable during iteration.
|
|
8298
|
+
*/
|
|
8299
|
+
'small-rules/no-loop-iterable-mutation'?: Linter.RuleEntry<[]>;
|
|
8276
8300
|
/**
|
|
8277
8301
|
* 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.
|
|
8278
8302
|
*/
|
|
@@ -8311,9 +8335,13 @@ interface RuleOptions {
|
|
|
8311
8335
|
*/
|
|
8312
8336
|
'small-rules/no-table-create-map'?: Linter.RuleEntry<[]>;
|
|
8313
8337
|
/**
|
|
8314
|
-
* Disallow task.wait() calls.
|
|
8338
|
+
* Disallow task.wait() and Promise.delay(...).await() calls.
|
|
8315
8339
|
*/
|
|
8316
8340
|
'small-rules/no-task-wait'?: Linter.RuleEntry<[]>;
|
|
8341
|
+
/**
|
|
8342
|
+
* Disallow assertions that always succeed or compare against freshly created values.
|
|
8343
|
+
*/
|
|
8344
|
+
'small-rules/no-trivial-assertions'?: Linter.RuleEntry<[]>;
|
|
8317
8345
|
/**
|
|
8318
8346
|
* Ban React property names that begin with an underscore in JSX.
|
|
8319
8347
|
*/
|
|
@@ -8330,16 +8358,20 @@ interface RuleOptions {
|
|
|
8330
8358
|
* Disallow useMemo for expressions that are already trivial to compute.
|
|
8331
8359
|
*/
|
|
8332
8360
|
'small-rules/no-use-memo-simple-expression'?: Linter.RuleEntry<[]>;
|
|
8361
|
+
/**
|
|
8362
|
+
* Disallow using the return value of functions that do not return anything.
|
|
8363
|
+
*/
|
|
8364
|
+
'small-rules/no-use-of-empty-return-value'?: Linter.RuleEntry<[]>;
|
|
8333
8365
|
/**
|
|
8334
8366
|
* Disallow constants that do not add value.
|
|
8335
8367
|
*/
|
|
8336
8368
|
'small-rules/no-useless-constants'?: Linter.RuleEntry<SmallRulesNoUselessConstants>;
|
|
8337
8369
|
/**
|
|
8338
|
-
*
|
|
8370
|
+
* Disallow Roblox JSX properties whose values already match the class defaults.
|
|
8339
8371
|
*/
|
|
8340
8372
|
'small-rules/no-useless-default'?: Linter.RuleEntry<[]>;
|
|
8341
8373
|
/**
|
|
8342
|
-
* Disallow effects
|
|
8374
|
+
* 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.
|
|
8343
8375
|
*/
|
|
8344
8376
|
'small-rules/no-useless-use-effect'?: Linter.RuleEntry<SmallRulesNoUselessUseEffect>;
|
|
8345
8377
|
/**
|
|
@@ -8350,6 +8382,10 @@ interface RuleOptions {
|
|
|
8350
8382
|
* Disallow useSpring hooks whose config and dependencies are entirely static
|
|
8351
8383
|
*/
|
|
8352
8384
|
'small-rules/no-useless-use-spring'?: Linter.RuleEntry<SmallRulesNoUselessUseSpring>;
|
|
8385
|
+
/**
|
|
8386
|
+
* Disallow spreading a potentially unbounded array into a variadic call, because every element becomes a stack-allocated argument.
|
|
8387
|
+
*/
|
|
8388
|
+
'small-rules/no-variadic-spread'?: Linter.RuleEntry<[]>;
|
|
8353
8389
|
/**
|
|
8354
8390
|
* Use Log instead of warn().
|
|
8355
8391
|
*/
|
|
@@ -8370,16 +8406,20 @@ interface RuleOptions {
|
|
|
8370
8406
|
* Prefer a local ContextStack component over directly nesting multiple context providers.
|
|
8371
8407
|
*/
|
|
8372
8408
|
'small-rules/prefer-context-stack'?: Linter.RuleEntry<[]>;
|
|
8409
|
+
/**
|
|
8410
|
+
* Prefer importing React hooks directly instead of calling them via the React namespace.
|
|
8411
|
+
*/
|
|
8412
|
+
'small-rules/prefer-direct-hook-imports'?: Linter.RuleEntry<SmallRulesPreferDirectHookImports>;
|
|
8373
8413
|
/**
|
|
8374
8414
|
* Prefer early returns over full-body conditional wrapping.
|
|
8375
8415
|
*/
|
|
8376
8416
|
'small-rules/prefer-early-return'?: Linter.RuleEntry<SmallRulesPreferEarlyReturn>;
|
|
8377
8417
|
/**
|
|
8378
|
-
* Enforce expect assertion guards in
|
|
8418
|
+
* Enforce expect assertion guards in tests and prefer expect.assertions(n) over expect.hasAssertions() when the count is known.
|
|
8379
8419
|
*/
|
|
8380
8420
|
'small-rules/prefer-expect-assertions'?: Linter.RuleEntry<SmallRulesPreferExpectAssertions>;
|
|
8381
8421
|
/**
|
|
8382
|
-
* Prefer extracting static
|
|
8422
|
+
* Prefer extracting static JSX elements to module-level constants.
|
|
8383
8423
|
*/
|
|
8384
8424
|
'small-rules/prefer-hoisted-jsx-elements'?: Linter.RuleEntry<SmallRulesPreferHoistedJsxElements>;
|
|
8385
8425
|
/**
|
|
@@ -8403,7 +8443,7 @@ interface RuleOptions {
|
|
|
8403
8443
|
*/
|
|
8404
8444
|
'small-rules/prefer-modding-inspect'?: Linter.RuleEntry<[]>;
|
|
8405
8445
|
/**
|
|
8406
|
-
* Prefer
|
|
8446
|
+
* Prefer screaming snake case constants at module scope or the allowed top-level wrapper scope.
|
|
8407
8447
|
*/
|
|
8408
8448
|
'small-rules/prefer-module-scope-constants'?: Linter.RuleEntry<[]>;
|
|
8409
8449
|
/**
|
|
@@ -8411,11 +8451,11 @@ interface RuleOptions {
|
|
|
8411
8451
|
*/
|
|
8412
8452
|
'small-rules/prefer-padding-components'?: Linter.RuleEntry<[]>;
|
|
8413
8453
|
/**
|
|
8414
|
-
* Enforce
|
|
8454
|
+
* Enforce PascalCase names for enums and enum members.
|
|
8415
8455
|
*/
|
|
8416
8456
|
'small-rules/prefer-pascal-case-enums'?: Linter.RuleEntry<[]>;
|
|
8417
8457
|
/**
|
|
8418
|
-
* Prefer direct ColorSequence and NumberSequence overloads over two-keypoint arrays.
|
|
8458
|
+
* Prefer direct ColorSequence and NumberSequence overloads over identical direct arguments and two-keypoint arrays.
|
|
8419
8459
|
*/
|
|
8420
8460
|
'small-rules/prefer-sequence-overloads'?: Linter.RuleEntry<[]>;
|
|
8421
8461
|
/**
|
|
@@ -8463,7 +8503,7 @@ interface RuleOptions {
|
|
|
8463
8503
|
*/
|
|
8464
8504
|
'small-rules/require-paired-calls'?: Linter.RuleEntry<SmallRulesRequirePairedCalls>;
|
|
8465
8505
|
/**
|
|
8466
|
-
* Require keys on React
|
|
8506
|
+
* Require keys on nested React JSX children, fragments, and configured iteration or memoization contexts.
|
|
8467
8507
|
*/
|
|
8468
8508
|
'small-rules/require-react-component-keys'?: Linter.RuleEntry<SmallRulesRequireReactComponentKeys>;
|
|
8469
8509
|
/**
|
|
@@ -8471,15 +8511,15 @@ interface RuleOptions {
|
|
|
8471
8511
|
*/
|
|
8472
8512
|
'small-rules/require-react-display-names'?: Linter.RuleEntry<SmallRulesRequireReactDisplayNames>;
|
|
8473
8513
|
/**
|
|
8474
|
-
* Require braces around switch case bodies
|
|
8514
|
+
* Require braces around switch case bodies selected by line span or statement count.
|
|
8475
8515
|
*/
|
|
8476
8516
|
'small-rules/require-switch-case-braces'?: Linter.RuleEntry<SmallRulesRequireSwitchCaseBraces>;
|
|
8477
8517
|
/**
|
|
8478
|
-
* Require 'Error.captureStackTrace' before throwing
|
|
8518
|
+
* Require 'Error.captureStackTrace' before directly throwing new Error instances in named functions.
|
|
8479
8519
|
*/
|
|
8480
8520
|
'small-rules/require-throw-error-capture'?: Linter.RuleEntry<SmallRulesRequireThrowErrorCapture>;
|
|
8481
8521
|
/**
|
|
8482
|
-
* Require the 'u' or 'v' unicode flag on
|
|
8522
|
+
* Require the 'u' or 'v' unicode flag on calls named regex().
|
|
8483
8523
|
*/
|
|
8484
8524
|
'small-rules/require-unicode-regex'?: Linter.RuleEntry<[]>;
|
|
8485
8525
|
/**
|
|
@@ -8487,7 +8527,7 @@ interface RuleOptions {
|
|
|
8487
8527
|
*/
|
|
8488
8528
|
'small-rules/rerender-memo-with-default-value'?: Linter.RuleEntry<[]>;
|
|
8489
8529
|
/**
|
|
8490
|
-
* Prevent
|
|
8530
|
+
* Prevent imports that reach into another component's nested modules.
|
|
8491
8531
|
*/
|
|
8492
8532
|
'small-rules/strict-component-boundaries'?: Linter.RuleEntry<SmallRulesStrictComponentBoundaries>;
|
|
8493
8533
|
/**
|
|
@@ -20115,6 +20155,19 @@ type SmallRulesBanTypes = [] | [{
|
|
|
20115
20155
|
[k: string]: string | undefined;
|
|
20116
20156
|
});
|
|
20117
20157
|
}];
|
|
20158
|
+
// ----- small-rules/consistent-compound-words -----
|
|
20159
|
+
type SmallRulesConsistentCompoundWords = [] | [{
|
|
20160
|
+
allowList?: {
|
|
20161
|
+
[k: string]: true | undefined;
|
|
20162
|
+
};
|
|
20163
|
+
checkProperties?: boolean;
|
|
20164
|
+
checkShorthandProperties?: boolean;
|
|
20165
|
+
checkVariables?: boolean;
|
|
20166
|
+
extendDefaultReplacements?: boolean;
|
|
20167
|
+
replacements?: {
|
|
20168
|
+
[k: string]: (false | string) | undefined;
|
|
20169
|
+
};
|
|
20170
|
+
}];
|
|
20118
20171
|
// ----- small-rules/directive-disable-enable-pair -----
|
|
20119
20172
|
type SmallRulesDirectiveDisableEnablePair = [] | [{
|
|
20120
20173
|
allowWholeFile?: boolean;
|
|
@@ -20135,7 +20188,15 @@ type SmallRulesEnforceIanitorCheckType = [] | [{
|
|
|
20135
20188
|
errorThreshold?: number;
|
|
20136
20189
|
interfacePenalty?: number;
|
|
20137
20190
|
performanceMode?: boolean;
|
|
20138
|
-
|
|
20191
|
+
}];
|
|
20192
|
+
// ----- small-rules/isolated-functions -----
|
|
20193
|
+
type SmallRulesIsolatedFunctions = [] | [{
|
|
20194
|
+
comments?: string[];
|
|
20195
|
+
functions?: string[];
|
|
20196
|
+
overrideGlobals?: {
|
|
20197
|
+
[k: string]: (boolean | ("off" | "readonly" | "writable" | "writeable")) | undefined;
|
|
20198
|
+
};
|
|
20199
|
+
selectors?: string[];
|
|
20139
20200
|
}];
|
|
20140
20201
|
// ----- small-rules/memoized-effect-dependencies -----
|
|
20141
20202
|
type SmallRulesMemoizedEffectDependencies = [] | [{
|
|
@@ -20167,6 +20228,10 @@ type SmallRulesNoAsyncInSystem = [] | [{
|
|
|
20167
20228
|
parameterIndex: number;
|
|
20168
20229
|
source: string;
|
|
20169
20230
|
}[];
|
|
20231
|
+
synchronousCallbacks?: {
|
|
20232
|
+
callbackArgumentIndexes: [number, ...(number)[]];
|
|
20233
|
+
calleePath: [string, ...(string)[]];
|
|
20234
|
+
}[];
|
|
20170
20235
|
}];
|
|
20171
20236
|
// ----- small-rules/no-color3-constructor -----
|
|
20172
20237
|
type SmallRulesNoColor3Constructor = [] | [{
|
|
@@ -20279,6 +20344,11 @@ type SmallRulesNoUselessUseSpring = [] | [{
|
|
|
20279
20344
|
}];
|
|
20280
20345
|
// ----- small-rules/prefer-class-properties -----
|
|
20281
20346
|
type SmallRulesPreferClassProperties = [] | [("always" | "never")];
|
|
20347
|
+
// ----- small-rules/prefer-direct-hook-imports -----
|
|
20348
|
+
type SmallRulesPreferDirectHookImports = [] | [{
|
|
20349
|
+
allowedHooks?: string[];
|
|
20350
|
+
environment?: ("roblox-ts" | "standard");
|
|
20351
|
+
}];
|
|
20282
20352
|
// ----- small-rules/prefer-early-return -----
|
|
20283
20353
|
type SmallRulesPreferEarlyReturn = [] | [{
|
|
20284
20354
|
maximumStatements?: number;
|
|
@@ -20295,6 +20365,7 @@ type SmallRulesPreferExpectAssertions = [] | [{
|
|
|
20295
20365
|
type SmallRulesPreferHoistedJsxElements = [] | [{
|
|
20296
20366
|
additionalHoistableComponents?: string[];
|
|
20297
20367
|
additionalStaticFactories?: string[];
|
|
20368
|
+
environment?: ("roblox-ts" | "standard");
|
|
20298
20369
|
}];
|
|
20299
20370
|
// ----- small-rules/prevent-abbreviations -----
|
|
20300
20371
|
type SmallRulesPreventAbbreviations = [] | [{
|
|
@@ -20310,9 +20381,7 @@ type SmallRulesPreventAbbreviations = [] | [{
|
|
|
20310
20381
|
checkVariables?: boolean;
|
|
20311
20382
|
extendDefaultAllowList?: boolean;
|
|
20312
20383
|
extendDefaultReplacements?: boolean;
|
|
20313
|
-
ignore?:
|
|
20314
|
-
[k: string]: unknown | undefined;
|
|
20315
|
-
} | string)[];
|
|
20384
|
+
ignore?: string[];
|
|
20316
20385
|
ignoreShorthands?: string[];
|
|
20317
20386
|
replacements?: {
|
|
20318
20387
|
[k: string]: (false | {
|
|
@@ -20346,7 +20415,7 @@ type SmallRulesRequirePairedCalls = [] | [{
|
|
|
20346
20415
|
allowConditionalClosers?: boolean;
|
|
20347
20416
|
allowMultipleOpeners?: boolean;
|
|
20348
20417
|
maxNestingDepth?: number;
|
|
20349
|
-
pairs
|
|
20418
|
+
pairs?: [{
|
|
20350
20419
|
alternatives?: string[];
|
|
20351
20420
|
closer: (string | [string, ...(string)[]]);
|
|
20352
20421
|
opener: string;
|
package/dist/oxlint.mjs
CHANGED
|
@@ -1373,11 +1373,16 @@ const oxlintRuleMapping = {
|
|
|
1373
1373
|
"comment-length/limit-multi-line-comments": "js-plugin",
|
|
1374
1374
|
"comment-length/limit-single-line-comments": "js-plugin",
|
|
1375
1375
|
"small-rules/array-type-generic": "js-plugin",
|
|
1376
|
+
"small-rules/consistent-compound-words": "js-plugin",
|
|
1377
|
+
"small-rules/isolated-functions": "js-plugin",
|
|
1376
1378
|
"small-rules/no-array-constructor-elements": "js-plugin",
|
|
1377
1379
|
"small-rules/no-array-size-assignment": "js-plugin",
|
|
1378
1380
|
"small-rules/no-async-constructor": "js-plugin",
|
|
1379
1381
|
"small-rules/no-commented-code": "js-plugin",
|
|
1382
|
+
"small-rules/no-loop-iterable-mutation": "js-plugin",
|
|
1380
1383
|
"small-rules/no-recursive": "js-plugin",
|
|
1384
|
+
"small-rules/no-trivial-assertions": "js-plugin",
|
|
1385
|
+
"small-rules/no-use-of-empty-return-value": "js-plugin",
|
|
1381
1386
|
"small-rules/prefer-class-properties": "js-plugin",
|
|
1382
1387
|
"small-rules/prefer-early-return": "js-plugin",
|
|
1383
1388
|
"small-rules/prefer-module-scope-constants": "js-plugin",
|
|
@@ -4804,18 +4809,25 @@ function oxlintRoblox(options = {}) {
|
|
|
4804
4809
|
*/
|
|
4805
4810
|
function smallRulesRules({ isInEditor = false, stylistic = true } = {}) {
|
|
4806
4811
|
return {
|
|
4812
|
+
"small-rules/isolated-functions": "error",
|
|
4807
4813
|
"small-rules/no-async-constructor": "error",
|
|
4808
4814
|
"small-rules/no-commented-code": isInEditor ? "off" : "error",
|
|
4815
|
+
"small-rules/no-loop-iterable-mutation": "error",
|
|
4816
|
+
"small-rules/no-use-of-empty-return-value": "error",
|
|
4809
4817
|
"small-rules/prefer-class-properties": "error",
|
|
4810
4818
|
"small-rules/prefer-early-return": ["error", { maximumStatements: 1 }],
|
|
4811
4819
|
"small-rules/strict-component-boundaries": "error",
|
|
4812
4820
|
...stylistic !== false ? {
|
|
4821
|
+
"small-rules/consistent-compound-words": "error",
|
|
4813
4822
|
"small-rules/prefer-module-scope-constants": "error",
|
|
4814
4823
|
"small-rules/prefer-singular-enums": "error",
|
|
4815
4824
|
"small-rules/require-async-suffix": "error"
|
|
4816
4825
|
} : {}
|
|
4817
4826
|
};
|
|
4818
4827
|
}
|
|
4828
|
+
function smallRulesTestRules() {
|
|
4829
|
+
return { "small-rules/no-trivial-assertions": "error" };
|
|
4830
|
+
}
|
|
4819
4831
|
//#endregion
|
|
4820
4832
|
//#region src/oxlint/configs/small-rules.ts
|
|
4821
4833
|
function oxlintSmallRules(options = {}) {
|
|
@@ -4878,7 +4890,6 @@ function sonarjsRules({ isInEditor, roblox = true }) {
|
|
|
4878
4890
|
"sonar/no-try-promise": "error",
|
|
4879
4891
|
"sonar/no-unthrown-error": "error",
|
|
4880
4892
|
"sonar/no-unused-collection": "error",
|
|
4881
|
-
"sonar/no-use-of-empty-return-value": "error",
|
|
4882
4893
|
"sonar/no-useless-catch": "error",
|
|
4883
4894
|
"sonar/no-useless-increment": "error",
|
|
4884
4895
|
"sonar/non-existent-operator": "error",
|
|
@@ -4913,7 +4924,6 @@ function sonarjsRules({ isInEditor, roblox = true }) {
|
|
|
4913
4924
|
function sonarjsTestRules({ jest = false, roblox = true } = {}) {
|
|
4914
4925
|
return {
|
|
4915
4926
|
"sonar/no-incompatible-assertion-types": "error",
|
|
4916
|
-
"sonar/no-trivial-assertions": "error",
|
|
4917
4927
|
...jest ? {
|
|
4918
4928
|
"sonar/no-mixed-completion-style": "error",
|
|
4919
4929
|
"sonar/synchronous-suite-callback": "error"
|
|
@@ -5306,7 +5316,8 @@ function oxlintTest({ files = GLOB_TESTS, isInEditor = false, jest = false, over
|
|
|
5306
5316
|
...sonarjsTestRules({
|
|
5307
5317
|
jest: true,
|
|
5308
5318
|
roblox: isRoblox
|
|
5309
|
-
})
|
|
5319
|
+
}),
|
|
5320
|
+
...smallRulesTestRules()
|
|
5310
5321
|
},
|
|
5311
5322
|
settings: { jest: {
|
|
5312
5323
|
globalPackage: "@rbxts/jest-globals",
|
|
@@ -5671,7 +5682,6 @@ function unicornRules(options = {}) {
|
|
|
5671
5682
|
ignore: ["^[A-Z0-9]+.md$"],
|
|
5672
5683
|
multipleFileExtensions: true
|
|
5673
5684
|
}],
|
|
5674
|
-
"unicorn/isolated-functions": "error",
|
|
5675
5685
|
"unicorn/name-replacements": ["error", {
|
|
5676
5686
|
checkFilenames: true,
|
|
5677
5687
|
replacements: unicornNameReplacements(options)
|
|
@@ -5694,7 +5704,6 @@ function unicornRules(options = {}) {
|
|
|
5694
5704
|
"unicorn/no-invalid-well-known-symbol-methods": "error",
|
|
5695
5705
|
"unicorn/no-keyword-prefix": "error",
|
|
5696
5706
|
"unicorn/no-lonely-if": "error",
|
|
5697
|
-
"unicorn/no-loop-iterable-mutation": "error",
|
|
5698
5707
|
"unicorn/no-mismatched-map-key": "error",
|
|
5699
5708
|
"unicorn/no-misrefactored-assignment": "error",
|
|
5700
5709
|
"unicorn/no-negated-array-predicate": "error",
|
|
@@ -5746,7 +5755,6 @@ function unicornRules(options = {}) {
|
|
|
5746
5755
|
"unicorn/prefer-then-catch": "error",
|
|
5747
5756
|
"unicorn/prefer-unary-minus": "error",
|
|
5748
5757
|
...stylistic !== false ? {
|
|
5749
|
-
"unicorn/consistent-compound-words": "error",
|
|
5750
5758
|
"unicorn/prefer-block-statement-over-iife": "error",
|
|
5751
5759
|
"unicorn/switch-case-braces": "error"
|
|
5752
5760
|
} : {},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@isentinel/eslint-config",
|
|
3
|
-
"version": "6.0.0-beta.
|
|
3
|
+
"version": "6.0.0-beta.30",
|
|
4
4
|
"description": "iSentinel's ESLint config",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint-config",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"@isentinel/dict-rbxts": "latest",
|
|
63
63
|
"@isentinel/dict-roblox": "latest",
|
|
64
64
|
"@oxlint/plugins": "1.74.0",
|
|
65
|
-
"@pobammer-ts/small-rules": "2.
|
|
65
|
+
"@pobammer-ts/small-rules": "2.9.0",
|
|
66
66
|
"@stylistic/eslint-plugin": "5.10.0",
|
|
67
67
|
"@typescript-eslint/eslint-plugin": "8.65.0",
|
|
68
68
|
"@typescript-eslint/parser": "8.65.0",
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
"typescript": "6.0.3",
|
|
143
143
|
"unplugin-unused": "0.5.7",
|
|
144
144
|
"vitest": "4.1.10",
|
|
145
|
-
"@isentinel/eslint-config": "6.0.0-beta.
|
|
145
|
+
"@isentinel/eslint-config": "6.0.0-beta.30"
|
|
146
146
|
},
|
|
147
147
|
"peerDependencies": {
|
|
148
148
|
"@vitest/eslint-plugin": "^1.6.4",
|