@pobammer-ts/eslint-cease-nonsense-rules 0.10.1 → 1.0.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/rules/ban-react-fc.js +6 -37
- package/dist/rules/ban-react-fc.js.map +1 -1
- package/dist/rules/enforce-ianitor-check-type.d.ts +7 -0
- package/dist/rules/enforce-ianitor-check-type.js +71 -159
- package/dist/rules/enforce-ianitor-check-type.js.map +1 -1
- package/dist/rules/no-color3-constructor.d.ts +0 -17
- package/dist/rules/no-color3-constructor.js +11 -32
- package/dist/rules/no-color3-constructor.js.map +1 -1
- package/dist/rules/no-instance-methods-without-this.js +2 -3
- package/dist/rules/no-instance-methods-without-this.js.map +1 -1
- package/dist/rules/no-print.d.ts +0 -15
- package/dist/rules/no-print.js +0 -21
- package/dist/rules/no-print.js.map +1 -1
- package/dist/rules/no-shorthand-names.d.ts +0 -24
- package/dist/rules/no-shorthand-names.js +32 -86
- package/dist/rules/no-shorthand-names.js.map +1 -1
- package/dist/rules/no-warn.d.ts +0 -15
- package/dist/rules/no-warn.js +0 -21
- package/dist/rules/no-warn.js.map +1 -1
- package/dist/rules/prefer-sequence-overloads.js +26 -23
- package/dist/rules/prefer-sequence-overloads.js.map +1 -1
- package/dist/rules/prefer-udim2-shorthand.d.ts +0 -14
- package/dist/rules/prefer-udim2-shorthand.js +138 -44
- package/dist/rules/prefer-udim2-shorthand.js.map +1 -1
- package/dist/rules/require-named-effect-functions.js +271 -59
- package/dist/rules/require-named-effect-functions.js.map +1 -1
- package/dist/rules/require-react-component-keys.d.ts +3 -39
- package/dist/rules/require-react-component-keys.js +58 -158
- package/dist/rules/require-react-component-keys.js.map +1 -1
- package/dist/rules/use-exhaustive-dependencies.d.ts +0 -59
- package/dist/rules/use-exhaustive-dependencies.js +120 -329
- package/dist/rules/use-exhaustive-dependencies.js.map +1 -1
- package/dist/rules/use-hook-at-top-level.js +17 -118
- package/dist/rules/use-hook-at-top-level.js.map +1 -1
- package/package.json +11 -8
|
@@ -1,53 +1,22 @@
|
|
|
1
1
|
import { TSESTree } from "@typescript-eslint/types";
|
|
2
|
-
/**
|
|
3
|
-
* Bans React.FC and similar component type annotations.
|
|
4
|
-
*
|
|
5
|
-
* React.FC (Function Component) and related types like FunctionComponent, VFC, and VoidFunctionComponent
|
|
6
|
-
* have several drawbacks:
|
|
7
|
-
* - They break debug information in React DevTools, making profiling harder
|
|
8
|
-
* - They add unnecessary complexity compared to simple function declarations
|
|
9
|
-
* - They encourage poor patterns like implicit children handling
|
|
10
|
-
*
|
|
11
|
-
* Instead, use explicit function declarations with proper parameter typing.
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* // ❌ Reports
|
|
15
|
-
* export const MyComponent: React.FC<Props> = ({ children }) => {
|
|
16
|
-
* return <div>{children}</div>;
|
|
17
|
-
* };
|
|
18
|
-
*
|
|
19
|
-
* // ✅ OK
|
|
20
|
-
* export function MyComponent({ children }: Props) {
|
|
21
|
-
* return <div>{children}</div>;
|
|
22
|
-
* }
|
|
23
|
-
*/
|
|
24
2
|
const BANNED_FC_NAMES = new Set(["FC", "FunctionComponent", "VFC", "VoidFunctionComponent"]);
|
|
25
3
|
const banReactFC = {
|
|
26
|
-
/**
|
|
27
|
-
* Creates the ESLint rule visitor.
|
|
28
|
-
*
|
|
29
|
-
* @param context - The ESLint rule context.
|
|
30
|
-
* @returns The visitor object with AST node handlers.
|
|
31
|
-
*/
|
|
32
4
|
create(context) {
|
|
33
5
|
return {
|
|
34
6
|
VariableDeclarator(node) {
|
|
35
|
-
const typeAnnotation = node.id
|
|
7
|
+
const { typeAnnotation } = node.id;
|
|
36
8
|
if (!typeAnnotation)
|
|
37
9
|
return;
|
|
38
10
|
const inner = typeAnnotation.typeAnnotation;
|
|
39
11
|
if (inner.type !== TSESTree.AST_NODE_TYPES.TSTypeReference)
|
|
40
12
|
return;
|
|
41
|
-
const typeName = inner
|
|
42
|
-
let
|
|
13
|
+
const { typeName } = inner;
|
|
14
|
+
let isBannedFc = false;
|
|
43
15
|
if (typeName.type === TSESTree.AST_NODE_TYPES.Identifier)
|
|
44
|
-
|
|
16
|
+
isBannedFc = BANNED_FC_NAMES.has(typeName.name);
|
|
45
17
|
else if (typeName.type === TSESTree.AST_NODE_TYPES.TSQualifiedName)
|
|
46
|
-
|
|
47
|
-
if (!
|
|
48
|
-
return;
|
|
49
|
-
const initType = node.init?.type;
|
|
50
|
-
if (initType !== TSESTree.AST_NODE_TYPES.ArrowFunctionExpression)
|
|
18
|
+
isBannedFc = BANNED_FC_NAMES.has(typeName.right.name);
|
|
19
|
+
if (!isBannedFc || node.init?.type !== TSESTree.AST_NODE_TYPES.ArrowFunctionExpression)
|
|
51
20
|
return;
|
|
52
21
|
context.report({
|
|
53
22
|
messageId: "banReactFC",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ban-react-fc.js","sourceRoot":"","sources":["../../src/rules/ban-react-fc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AASpD
|
|
1
|
+
{"version":3,"file":"ban-react-fc.js","sourceRoot":"","sources":["../../src/rules/ban-react-fc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AASpD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;AAE7F,MAAM,UAAU,GAA6E;IAC5F,MAAM,CAAC,OAAO;QACb,OAAO;YACN,kBAAkB,CAAC,IAAiC;gBACnD,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,cAAc;oBAAE,OAAO;gBAE5B,MAAM,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC;gBAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,cAAc,CAAC,eAAe;oBAAE,OAAO;gBAEnE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;gBAE3B,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,cAAc,CAAC,UAAU;oBACvD,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;qBAC5C,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,cAAc,CAAC,eAAe;oBACjE,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEvD,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,cAAc,CAAC,uBAAuB;oBAAE,OAAO;gBAE/F,OAAO,CAAC,MAAM,CAAC;oBACd,SAAS,EAAE,YAAY;oBACvB,IAAI;iBACJ,CAAC,CAAC;YACJ,CAAC;SACD,CAAC;IACH,CAAC;IACD,cAAc,EAAE,EAAE;IAClB,IAAI,EAAE;QACL,IAAI,EAAE;YACL,WAAW,EACV,kGAAkG;YACnG,WAAW,EAAE,IAAI;SACjB;QACD,QAAQ,EAAE;YACT,UAAU,EACT,sMAAsM;SACvM;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KACf;CACD,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
import type { Rule } from "eslint";
|
|
2
|
+
export interface ComplexityConfiguration {
|
|
3
|
+
readonly baseThreshold: number;
|
|
4
|
+
readonly warnThreshold: number;
|
|
5
|
+
readonly errorThreshold: number;
|
|
6
|
+
readonly interfacePenalty: number;
|
|
7
|
+
readonly performanceMode: boolean;
|
|
8
|
+
}
|
|
2
9
|
declare const enforceIanitorCheckType: Rule.RuleModule;
|
|
3
10
|
export default enforceIanitorCheckType;
|
|
@@ -1,93 +1,88 @@
|
|
|
1
1
|
import { TSESTree } from "@typescript-eslint/types";
|
|
2
|
-
|
|
3
|
-
* Default configuration values for the rule.
|
|
4
|
-
*/
|
|
5
|
-
const DEFAULT_CONFIG = {
|
|
2
|
+
const DEFAULT_CONFIGURATION = {
|
|
6
3
|
baseThreshold: 10,
|
|
7
4
|
errorThreshold: 25,
|
|
8
5
|
interfacePenalty: 20,
|
|
9
6
|
performanceMode: true,
|
|
10
7
|
warnThreshold: 15,
|
|
11
8
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* @returns True if the node has a type annotation.
|
|
17
|
-
*/
|
|
9
|
+
const SHOULD_NOT_NOT_RETURN_TYPE = new Set([
|
|
10
|
+
TSESTree.AST_NODE_TYPES.FunctionDeclaration,
|
|
11
|
+
TSESTree.AST_NODE_TYPES.FunctionExpression,
|
|
12
|
+
]);
|
|
18
13
|
function hasTypeAnnotation(node) {
|
|
19
|
-
if (node.type ===
|
|
14
|
+
if (node.type === TSESTree.AST_NODE_TYPES.VariableDeclarator &&
|
|
15
|
+
node.id &&
|
|
16
|
+
typeof node.id === "object" &&
|
|
17
|
+
"typeAnnotation" in node.id)
|
|
20
18
|
return !!node.id.typeAnnotation;
|
|
21
|
-
if (
|
|
19
|
+
if (SHOULD_NOT_NOT_RETURN_TYPE.has(node.type))
|
|
22
20
|
return !!node.returnType;
|
|
23
21
|
return false;
|
|
24
22
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Extracts the type name from a TypeScript type node.
|
|
27
|
-
*
|
|
28
|
-
* @param node - The TypeScript AST node.
|
|
29
|
-
* @returns The type name or undefined if not applicable.
|
|
30
|
-
*/
|
|
31
23
|
function getTypeName(node) {
|
|
32
24
|
return node.type === TSESTree.AST_NODE_TYPES.TSInterfaceDeclaration ||
|
|
33
25
|
node.type === TSESTree.AST_NODE_TYPES.TSTypeAliasDeclaration
|
|
34
26
|
? node.id.name
|
|
35
27
|
: undefined;
|
|
36
28
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Checks if a node is an Ianitor validator call.
|
|
39
|
-
*
|
|
40
|
-
* @param node - The node to check.
|
|
41
|
-
* @returns True if the node is an Ianitor validator.
|
|
42
|
-
*/
|
|
43
29
|
function isIanitorValidator(node) {
|
|
44
|
-
return (node.type ===
|
|
45
|
-
node.callee?.type ===
|
|
46
|
-
node.callee.object?.type ===
|
|
30
|
+
return (node.type === TSESTree.AST_NODE_TYPES.CallExpression &&
|
|
31
|
+
node.callee?.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
|
|
32
|
+
node.callee.object?.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
47
33
|
node.callee.object.name === "Ianitor");
|
|
48
34
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
35
|
+
function extractIanitorStaticVariable(typeAnnotation) {
|
|
36
|
+
let currentType = typeAnnotation;
|
|
37
|
+
if (currentType.type === TSESTree.AST_NODE_TYPES.TSTypeReference &&
|
|
38
|
+
currentType.typeName.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
39
|
+
currentType.typeName.name === "Readonly" &&
|
|
40
|
+
currentType.typeArguments?.params[0])
|
|
41
|
+
currentType = currentType.typeArguments.params[0];
|
|
42
|
+
if (currentType.type !== TSESTree.AST_NODE_TYPES.TSTypeReference)
|
|
43
|
+
return null;
|
|
44
|
+
const { typeName, typeArguments } = currentType;
|
|
45
|
+
const firstParam = typeArguments?.params[0];
|
|
46
|
+
if (typeName.type === TSESTree.AST_NODE_TYPES.TSQualifiedName &&
|
|
47
|
+
typeName.left.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
48
|
+
typeName.left.name === "Ianitor" &&
|
|
49
|
+
typeName.right.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
50
|
+
typeName.right.name === "Static" &&
|
|
51
|
+
firstParam?.type === TSESTree.AST_NODE_TYPES.TSTypeQuery &&
|
|
52
|
+
firstParam.exprName.type === TSESTree.AST_NODE_TYPES.Identifier)
|
|
53
|
+
return firstParam.exprName.name;
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
55
56
|
function hasIanitorStaticType(typeAnnotation) {
|
|
56
57
|
let currentType = typeAnnotation;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
currentType.typeName.type === "Identifier" &&
|
|
58
|
+
if (currentType.type === TSESTree.AST_NODE_TYPES.TSTypeReference &&
|
|
59
|
+
currentType.typeName.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
60
60
|
currentType.typeName.name === "Readonly" &&
|
|
61
61
|
currentType.typeArguments?.params[0])
|
|
62
62
|
currentType = currentType.typeArguments.params[0];
|
|
63
|
-
|
|
64
|
-
if (currentType.type !== "TSTypeReference")
|
|
63
|
+
if (currentType.type !== TSESTree.AST_NODE_TYPES.TSTypeReference)
|
|
65
64
|
return false;
|
|
66
65
|
const { typeName, typeArguments } = currentType;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
typeName.left.type === "Identifier" &&
|
|
66
|
+
return (typeName.type === TSESTree.AST_NODE_TYPES.TSQualifiedName &&
|
|
67
|
+
typeName.left.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
70
68
|
typeName.left.name === "Ianitor" &&
|
|
71
|
-
typeName.right.type ===
|
|
69
|
+
typeName.right.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
72
70
|
typeName.right.name === "Static" &&
|
|
73
|
-
|
|
71
|
+
typeArguments?.params[0]?.type === TSESTree.AST_NODE_TYPES.TSTypeQuery);
|
|
74
72
|
}
|
|
75
|
-
/**
|
|
76
|
-
* Calculates the complexity score of an Ianitor validator.
|
|
77
|
-
*
|
|
78
|
-
* @param node - The Ianitor validator node.
|
|
79
|
-
* @returns The complexity score.
|
|
80
|
-
*/
|
|
81
73
|
function calculateIanitorComplexity(node) {
|
|
82
74
|
const callee = node.callee;
|
|
83
|
-
if (callee?.type !==
|
|
75
|
+
if (callee?.type !== TSESTree.AST_NODE_TYPES.MemberExpression ||
|
|
76
|
+
callee.property?.type !== TSESTree.AST_NODE_TYPES.Identifier)
|
|
84
77
|
return 0;
|
|
85
78
|
const method = callee.property.name;
|
|
86
79
|
switch (method) {
|
|
87
80
|
case "interface":
|
|
88
81
|
case "strictInterface": {
|
|
89
82
|
const properties = node.arguments?.[0];
|
|
90
|
-
return properties?.type ===
|
|
83
|
+
return properties?.type === TSESTree.AST_NODE_TYPES.ObjectExpression
|
|
84
|
+
? 10 + (properties.properties?.length || 0) * 3
|
|
85
|
+
: 0;
|
|
91
86
|
}
|
|
92
87
|
case "optional":
|
|
93
88
|
case "array":
|
|
@@ -109,28 +104,15 @@ function calculateIanitorComplexity(node) {
|
|
|
109
104
|
}
|
|
110
105
|
}
|
|
111
106
|
const enforceIanitorCheckType = {
|
|
112
|
-
/**
|
|
113
|
-
* Creates the ESLint rule visitor.
|
|
114
|
-
*
|
|
115
|
-
* @param context - The ESLint rule context.
|
|
116
|
-
* @returns The visitor object with AST node handlers.
|
|
117
|
-
*/
|
|
118
107
|
create(context) {
|
|
119
|
-
const config = { ...
|
|
108
|
+
const config = { ...DEFAULT_CONFIGURATION, ...context.options[0] };
|
|
120
109
|
const cache = {
|
|
121
110
|
nodeCache: new WeakMap(),
|
|
122
111
|
visitedNodes: new WeakSet(),
|
|
123
112
|
};
|
|
124
|
-
// Track variable names used in Ianitor.Static<typeof varName> patterns
|
|
125
113
|
const ianitorStaticVariables = new Set();
|
|
126
114
|
const depthMultiplierCache = new Map();
|
|
127
115
|
const complexityCeiling = config.errorThreshold * 2;
|
|
128
|
-
/**
|
|
129
|
-
* Retrieves the cached logarithmic multiplier for a given depth.
|
|
130
|
-
*
|
|
131
|
-
* @param depth - The current recursion depth.
|
|
132
|
-
* @returns The multiplier applied to the accumulated score.
|
|
133
|
-
*/
|
|
134
116
|
function getDepthMultiplier(depth) {
|
|
135
117
|
const cached = depthMultiplierCache.get(depth);
|
|
136
118
|
if (cached !== undefined)
|
|
@@ -139,87 +121,38 @@ const enforceIanitorCheckType = {
|
|
|
139
121
|
depthMultiplierCache.set(depth, computed);
|
|
140
122
|
return computed;
|
|
141
123
|
}
|
|
142
|
-
/**
|
|
143
|
-
* Adds a contribution to the running score, respecting performance ceilings.
|
|
144
|
-
*
|
|
145
|
-
* @param current - The current accumulated score.
|
|
146
|
-
* @param addition - The contribution that should be added.
|
|
147
|
-
* @returns The bounded score after applying the contribution.
|
|
148
|
-
*/
|
|
149
124
|
function addScore(current, addition) {
|
|
150
125
|
const nextScore = current + addition;
|
|
151
126
|
if (!config.performanceMode)
|
|
152
127
|
return nextScore;
|
|
153
128
|
return nextScore > complexityCeiling ? complexityCeiling : nextScore;
|
|
154
129
|
}
|
|
155
|
-
/**
|
|
156
|
-
* Extracts the variable name from Ianitor.Static<typeof varName> pattern.
|
|
157
|
-
*
|
|
158
|
-
* @param typeAnnotation - The TypeScript type annotation to check.
|
|
159
|
-
* @returns The variable name if found, null otherwise.
|
|
160
|
-
*/
|
|
161
|
-
// oxlint-disable-next-line consistent-function-scoping
|
|
162
|
-
function extractIanitorStaticVariable(typeAnnotation) {
|
|
163
|
-
let currentType = typeAnnotation;
|
|
164
|
-
// Handle Readonly<...> wrapper
|
|
165
|
-
if (currentType.type === "TSTypeReference" &&
|
|
166
|
-
currentType.typeName.type === "Identifier" &&
|
|
167
|
-
currentType.typeName.name === "Readonly" &&
|
|
168
|
-
currentType.typeArguments?.params[0])
|
|
169
|
-
currentType = currentType.typeArguments.params[0];
|
|
170
|
-
// Check for Ianitor.Static<typeof varName>
|
|
171
|
-
if (currentType.type !== "TSTypeReference")
|
|
172
|
-
return null;
|
|
173
|
-
const { typeName, typeArguments } = currentType;
|
|
174
|
-
const firstParam = typeArguments?.params[0];
|
|
175
|
-
if (typeName.type === "TSQualifiedName" &&
|
|
176
|
-
typeName.left.type === "Identifier" &&
|
|
177
|
-
typeName.left.name === "Ianitor" &&
|
|
178
|
-
typeName.right.type === "Identifier" &&
|
|
179
|
-
typeName.right.name === "Static" &&
|
|
180
|
-
firstParam?.type === "TSTypeQuery" &&
|
|
181
|
-
firstParam.exprName.type === "Identifier")
|
|
182
|
-
return firstParam.exprName.name;
|
|
183
|
-
return null;
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Calculates the structural complexity of a TypeScript type.
|
|
187
|
-
*
|
|
188
|
-
* @param node - The TypeScript AST node.
|
|
189
|
-
* @param depth - The current depth in the type tree.
|
|
190
|
-
* @returns The complexity score.
|
|
191
|
-
*/
|
|
192
130
|
function calculateStructuralComplexity(node, depth = 0) {
|
|
193
|
-
// Performance: Cache everything
|
|
194
131
|
const cached = cache.nodeCache.get(node);
|
|
195
132
|
if (cached !== undefined)
|
|
196
133
|
return cached;
|
|
197
|
-
// Cycle detection without TypeChecker
|
|
198
134
|
if (cache.visitedNodes.has(node))
|
|
199
135
|
return 50;
|
|
200
136
|
cache.visitedNodes.add(node);
|
|
201
137
|
let score = 0;
|
|
202
138
|
const nextDepth = depth + 1;
|
|
203
139
|
switch (node.type) {
|
|
204
|
-
|
|
205
|
-
case
|
|
206
|
-
case
|
|
207
|
-
case
|
|
208
|
-
case
|
|
209
|
-
case
|
|
210
|
-
case
|
|
211
|
-
case
|
|
212
|
-
case "TSBigIntKeyword":
|
|
140
|
+
case TSESTree.AST_NODE_TYPES.TSStringKeyword:
|
|
141
|
+
case TSESTree.AST_NODE_TYPES.TSNumberKeyword:
|
|
142
|
+
case TSESTree.AST_NODE_TYPES.TSBooleanKeyword:
|
|
143
|
+
case TSESTree.AST_NODE_TYPES.TSNullKeyword:
|
|
144
|
+
case TSESTree.AST_NODE_TYPES.TSUndefinedKeyword:
|
|
145
|
+
case TSESTree.AST_NODE_TYPES.TSVoidKeyword:
|
|
146
|
+
case TSESTree.AST_NODE_TYPES.TSSymbolKeyword:
|
|
147
|
+
case TSESTree.AST_NODE_TYPES.TSBigIntKeyword:
|
|
213
148
|
score = 1;
|
|
214
149
|
break;
|
|
215
|
-
|
|
216
|
-
case
|
|
217
|
-
case
|
|
218
|
-
case "TSAnyKeyword":
|
|
150
|
+
case TSESTree.AST_NODE_TYPES.TSNeverKeyword:
|
|
151
|
+
case TSESTree.AST_NODE_TYPES.TSUnknownKeyword:
|
|
152
|
+
case TSESTree.AST_NODE_TYPES.TSAnyKeyword:
|
|
219
153
|
score = 0;
|
|
220
154
|
break;
|
|
221
|
-
|
|
222
|
-
case "TSInterfaceDeclaration": {
|
|
155
|
+
case TSESTree.AST_NODE_TYPES.TSInterfaceDeclaration: {
|
|
223
156
|
const iface = node;
|
|
224
157
|
score = config.interfacePenalty;
|
|
225
158
|
const extendsLength = iface.extends?.length;
|
|
@@ -234,8 +167,7 @@ const enforceIanitorCheckType = {
|
|
|
234
167
|
}
|
|
235
168
|
break;
|
|
236
169
|
}
|
|
237
|
-
|
|
238
|
-
case "TSTypeLiteral": {
|
|
170
|
+
case TSESTree.AST_NODE_TYPES.TSTypeLiteral: {
|
|
239
171
|
const { members } = node;
|
|
240
172
|
score = 2 + members.length * 0.5;
|
|
241
173
|
for (const member of members) {
|
|
@@ -245,28 +177,24 @@ const enforceIanitorCheckType = {
|
|
|
245
177
|
}
|
|
246
178
|
break;
|
|
247
179
|
}
|
|
248
|
-
|
|
249
|
-
case "TSUnionType": {
|
|
180
|
+
case TSESTree.AST_NODE_TYPES.TSUnionType: {
|
|
250
181
|
const { types } = node;
|
|
251
182
|
for (const type of types)
|
|
252
183
|
score = addScore(score, calculateStructuralComplexity(type, nextDepth));
|
|
253
184
|
score = addScore(score, 2 * (types.length - 1));
|
|
254
185
|
break;
|
|
255
186
|
}
|
|
256
|
-
|
|
257
|
-
case "TSIntersectionType": {
|
|
187
|
+
case TSESTree.AST_NODE_TYPES.TSIntersectionType: {
|
|
258
188
|
const { types } = node;
|
|
259
189
|
for (const type of types)
|
|
260
190
|
score = addScore(score, calculateStructuralComplexity(type, nextDepth));
|
|
261
191
|
score = addScore(score, 3 * types.length);
|
|
262
192
|
break;
|
|
263
193
|
}
|
|
264
|
-
|
|
265
|
-
case "TSArrayType":
|
|
194
|
+
case TSESTree.AST_NODE_TYPES.TSArrayType:
|
|
266
195
|
score = addScore(calculateStructuralComplexity(node.elementType, nextDepth), 1);
|
|
267
196
|
break;
|
|
268
|
-
|
|
269
|
-
case "TSTupleType": {
|
|
197
|
+
case TSESTree.AST_NODE_TYPES.TSTupleType: {
|
|
270
198
|
const { elementTypes } = node;
|
|
271
199
|
score = 1;
|
|
272
200
|
for (const element of elementTypes) {
|
|
@@ -277,8 +205,7 @@ const enforceIanitorCheckType = {
|
|
|
277
205
|
score = addScore(score, 1.5 * elementTypes.length);
|
|
278
206
|
break;
|
|
279
207
|
}
|
|
280
|
-
|
|
281
|
-
case "TSTypeReference": {
|
|
208
|
+
case TSESTree.AST_NODE_TYPES.TSTypeReference: {
|
|
282
209
|
score = 2;
|
|
283
210
|
const { typeArguments } = node;
|
|
284
211
|
if (typeArguments) {
|
|
@@ -287,8 +214,7 @@ const enforceIanitorCheckType = {
|
|
|
287
214
|
}
|
|
288
215
|
break;
|
|
289
216
|
}
|
|
290
|
-
|
|
291
|
-
case "TSConditionalType": {
|
|
217
|
+
case TSESTree.AST_NODE_TYPES.TSConditionalType: {
|
|
292
218
|
score = 3;
|
|
293
219
|
score = addScore(score, calculateStructuralComplexity(node.checkType, nextDepth));
|
|
294
220
|
score = addScore(score, calculateStructuralComplexity(node.extendsType, nextDepth));
|
|
@@ -296,8 +222,7 @@ const enforceIanitorCheckType = {
|
|
|
296
222
|
score = addScore(score, calculateStructuralComplexity(node.falseType, nextDepth));
|
|
297
223
|
break;
|
|
298
224
|
}
|
|
299
|
-
|
|
300
|
-
case "TSMappedType": {
|
|
225
|
+
case TSESTree.AST_NODE_TYPES.TSMappedType: {
|
|
301
226
|
score = 5;
|
|
302
227
|
if (node.constraint)
|
|
303
228
|
score = addScore(score, calculateStructuralComplexity(node.constraint, nextDepth));
|
|
@@ -305,9 +230,8 @@ const enforceIanitorCheckType = {
|
|
|
305
230
|
score = addScore(score, calculateStructuralComplexity(node.typeAnnotation, nextDepth));
|
|
306
231
|
break;
|
|
307
232
|
}
|
|
308
|
-
|
|
309
|
-
case
|
|
310
|
-
case "TSMethodSignature": {
|
|
233
|
+
case TSESTree.AST_NODE_TYPES.TSFunctionType:
|
|
234
|
+
case TSESTree.AST_NODE_TYPES.TSMethodSignature: {
|
|
311
235
|
const func = node;
|
|
312
236
|
score = 2;
|
|
313
237
|
for (const param of func.params) {
|
|
@@ -322,22 +246,17 @@ const enforceIanitorCheckType = {
|
|
|
322
246
|
default:
|
|
323
247
|
score = 1;
|
|
324
248
|
}
|
|
325
|
-
// Apply depth multiplier (logarithmic to prevent explosion)
|
|
326
249
|
score *= getDepthMultiplier(depth);
|
|
327
|
-
// Cache and return
|
|
328
250
|
cache.nodeCache.set(node, score);
|
|
329
251
|
cache.visitedNodes.delete(node);
|
|
330
252
|
return score;
|
|
331
253
|
}
|
|
332
|
-
// Track which VariableDeclarator nodes need checking after type aliases are collected
|
|
333
254
|
const variableDeclaratorsToCheck = new Map();
|
|
334
255
|
return {
|
|
335
|
-
// After all nodes are visited, check the collected variable declarators
|
|
336
256
|
"Program:exit"() {
|
|
337
257
|
for (const [nodeKey, data] of variableDeclaratorsToCheck.entries()) {
|
|
338
258
|
const node = nodeKey;
|
|
339
|
-
|
|
340
|
-
if (node.id.type === "Identifier" && ianitorStaticVariables.has(node.id.name))
|
|
259
|
+
if (node.id.type === TSESTree.AST_NODE_TYPES.Identifier && ianitorStaticVariables.has(node.id.name))
|
|
341
260
|
continue;
|
|
342
261
|
context.report({
|
|
343
262
|
data: { score: data.complexity.toFixed(1) },
|
|
@@ -346,7 +265,6 @@ const enforceIanitorCheckType = {
|
|
|
346
265
|
});
|
|
347
266
|
}
|
|
348
267
|
},
|
|
349
|
-
// Check interface declarations
|
|
350
268
|
TSInterfaceDeclaration(node) {
|
|
351
269
|
const complexity = calculateStructuralComplexity(node);
|
|
352
270
|
const name = getTypeName(node);
|
|
@@ -358,16 +276,12 @@ const enforceIanitorCheckType = {
|
|
|
358
276
|
});
|
|
359
277
|
}
|
|
360
278
|
},
|
|
361
|
-
// Handle type alias declarations
|
|
362
279
|
TSTypeAliasDeclaration(node) {
|
|
363
|
-
// First, check if this uses Ianitor.Static pattern and collect the variable name
|
|
364
280
|
const varName = extractIanitorStaticVariable(node.typeAnnotation);
|
|
365
281
|
if (varName)
|
|
366
282
|
ianitorStaticVariables.add(varName);
|
|
367
|
-
// Skip complexity check if the type uses Ianitor.Static<typeof ...> pattern
|
|
368
283
|
if (hasIanitorStaticType(node.typeAnnotation))
|
|
369
284
|
return;
|
|
370
|
-
// Check complexity of the type alias
|
|
371
285
|
const complexity = calculateStructuralComplexity(node.typeAnnotation);
|
|
372
286
|
if (complexity < config.baseThreshold)
|
|
373
287
|
return;
|
|
@@ -377,9 +291,8 @@ const enforceIanitorCheckType = {
|
|
|
377
291
|
node,
|
|
378
292
|
});
|
|
379
293
|
},
|
|
380
|
-
// Collect variable declarators that might need checking
|
|
381
294
|
VariableDeclarator(node) {
|
|
382
|
-
if (!node.init || node.init.type !==
|
|
295
|
+
if (!node.init || node.init.type !== TSESTree.AST_NODE_TYPES.CallExpression)
|
|
383
296
|
return;
|
|
384
297
|
if (!isIanitorValidator(node.init))
|
|
385
298
|
return;
|
|
@@ -388,7 +301,6 @@ const enforceIanitorCheckType = {
|
|
|
388
301
|
const complexity = calculateIanitorComplexity(node.init);
|
|
389
302
|
if (complexity < config.baseThreshold)
|
|
390
303
|
return;
|
|
391
|
-
// Store for later checking in Program:exit
|
|
392
304
|
variableDeclaratorsToCheck.set(node, { complexity });
|
|
393
305
|
},
|
|
394
306
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enforce-ianitor-check-type.js","sourceRoot":"","sources":["../../src/rules/enforce-ianitor-check-type.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enforce-ianitor-check-type.js","sourceRoot":"","sources":["../../src/rules/enforce-ianitor-check-type.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,3 @@
|
|
|
1
1
|
import type { Rule } from "eslint";
|
|
2
|
-
/**
|
|
3
|
-
* Bans use of `new Color3(...)` except for `new Color3()` or `new Color3(0, 0, 0)`.
|
|
4
|
-
*
|
|
5
|
-
* The `new Color3()` constructor uses float values [0-1] and performs worse than
|
|
6
|
-
* `Color3.fromRGB()` which uses integer values [0-255].
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* // ❌ Reports
|
|
10
|
-
* new Color3(255, 128, 64);
|
|
11
|
-
* new Color3(0.5);
|
|
12
|
-
* new Color3(1, 0);
|
|
13
|
-
*
|
|
14
|
-
* // ✅ OK
|
|
15
|
-
* new Color3();
|
|
16
|
-
* new Color3(0, 0, 0);
|
|
17
|
-
* Color3.fromRGB(255, 128, 64);
|
|
18
|
-
*/
|
|
19
2
|
declare const noColor3Constructor: Rule.RuleModule;
|
|
20
3
|
export default noColor3Constructor;
|
|
@@ -1,53 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { TSESTree } from "@typescript-eslint/types";
|
|
2
|
+
import Type from "typebox";
|
|
3
|
+
import { Compile } from "typebox/compile";
|
|
4
|
+
const isNumericLiteralNode = Compile(Type.Object({
|
|
5
|
+
type: Type.Literal(TSESTree.AST_NODE_TYPES.Literal),
|
|
6
|
+
value: Type.Number(),
|
|
7
|
+
}));
|
|
7
8
|
function mapComponentToRgbRange(value) {
|
|
8
9
|
return Math.round(value > 1 ? value : value * 255);
|
|
9
10
|
}
|
|
10
11
|
function collectNumericComponents(parameters) {
|
|
11
12
|
const components = new Array();
|
|
13
|
+
let size = 0;
|
|
12
14
|
let allZero = true;
|
|
13
15
|
for (const parameter of parameters) {
|
|
14
|
-
if (!isNumericLiteralNode(parameter))
|
|
16
|
+
if (!isNumericLiteralNode.Check(parameter))
|
|
15
17
|
return undefined;
|
|
16
18
|
const mapped = mapComponentToRgbRange(parameter.value);
|
|
17
|
-
components
|
|
19
|
+
components[size++] = mapped;
|
|
18
20
|
if (mapped !== 0)
|
|
19
21
|
allZero = false;
|
|
20
22
|
}
|
|
21
23
|
return { allZero, components };
|
|
22
24
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Bans use of `new Color3(...)` except for `new Color3()` or `new Color3(0, 0, 0)`.
|
|
25
|
-
*
|
|
26
|
-
* The `new Color3()` constructor uses float values [0-1] and performs worse than
|
|
27
|
-
* `Color3.fromRGB()` which uses integer values [0-255].
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* // ❌ Reports
|
|
31
|
-
* new Color3(255, 128, 64);
|
|
32
|
-
* new Color3(0.5);
|
|
33
|
-
* new Color3(1, 0);
|
|
34
|
-
*
|
|
35
|
-
* // ✅ OK
|
|
36
|
-
* new Color3();
|
|
37
|
-
* new Color3(0, 0, 0);
|
|
38
|
-
* Color3.fromRGB(255, 128, 64);
|
|
39
|
-
*/
|
|
40
25
|
const noColor3Constructor = {
|
|
41
|
-
/**
|
|
42
|
-
* Creates the ESLint rule visitor.
|
|
43
|
-
*
|
|
44
|
-
* @param context - The ESLint rule context.
|
|
45
|
-
* @returns The visitor object with AST node handlers.
|
|
46
|
-
*/
|
|
47
26
|
create(context) {
|
|
48
27
|
return {
|
|
49
28
|
NewExpression(node) {
|
|
50
|
-
if (node.callee.type !==
|
|
29
|
+
if (node.callee.type !== TSESTree.AST_NODE_TYPES.Identifier || node.callee.name !== "Color3")
|
|
51
30
|
return;
|
|
52
31
|
const parameters = node.arguments;
|
|
53
32
|
if (parameters.length === 0)
|