@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-color3-constructor.js","sourceRoot":"","sources":["../../src/rules/no-color3-constructor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"no-color3-constructor.js","sourceRoot":"","sources":["../../src/rules/no-color3-constructor.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,8 +32,7 @@ function isNode(value) {
|
|
|
32
32
|
return typeof value === "object" && value !== null && "type" in value;
|
|
33
33
|
}
|
|
34
34
|
// Widen node to allow safe enumeration without producing implicit any values
|
|
35
|
-
function
|
|
36
|
-
// All AST nodes are plain objects with enumerable properties; this guard widens typing only.
|
|
35
|
+
function hasDynamicProperties(_node) {
|
|
37
36
|
return true;
|
|
38
37
|
}
|
|
39
38
|
function traverseForThis(currentNode, visited) {
|
|
@@ -42,7 +41,7 @@ function traverseForThis(currentNode, visited) {
|
|
|
42
41
|
visited.add(currentNode);
|
|
43
42
|
if (currentNode.type === AST_NODE_TYPES.ThisExpression || currentNode.type === AST_NODE_TYPES.Super)
|
|
44
43
|
return true;
|
|
45
|
-
if (!
|
|
44
|
+
if (!hasDynamicProperties(currentNode))
|
|
46
45
|
return false;
|
|
47
46
|
for (const key in currentNode) {
|
|
48
47
|
const childValue = currentNode[key];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-instance-methods-without-this.js","sourceRoot":"","sources":["../../src/rules/no-instance-methods-without-this.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAqB1D,MAAM,eAAe,GAA0B;IAC9C,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,IAAI;CACjB,CAAC;AAEF,SAAS,gBAAgB,CAAC,UAAmC;IAC5D,MAAM,aAAa,GAA0B,EAAE,GAAG,eAAe,EAAE,CAAC;IACpE,IAAI,UAAU,EAAE,YAAY,KAAK,SAAS;QAAE,aAAa,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IACjG,IAAI,UAAU,EAAE,cAAc,KAAK,SAAS;QAAE,aAAa,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;IACvG,IAAI,UAAU,EAAE,WAAW,KAAK,SAAS;QAAE,aAAa,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;IAE9F,OAAO,aAAa,CAAC;AACtB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA+B,EAAE,OAA0B;IACrF,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC;IACrD,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IACvE,IAAI,aAAa,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IAC3E,IAAI,aAAa,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAErE,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC;AACvE,CAAC;AAED,6EAA6E;AAC7E,SAAS,
|
|
1
|
+
{"version":3,"file":"no-instance-methods-without-this.js","sourceRoot":"","sources":["../../src/rules/no-instance-methods-without-this.ts"],"names":[],"mappings":"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"}
|
package/dist/rules/no-print.d.ts
CHANGED
|
@@ -1,18 +1,3 @@
|
|
|
1
1
|
import type { Rule } from "eslint";
|
|
2
|
-
/**
|
|
3
|
-
* Bans use of `print()` function calls. Use `Log` instead.
|
|
4
|
-
*
|
|
5
|
-
* The `print()` function is not wanted in this codebase and discouraged in favor of a proper
|
|
6
|
-
* logging system like `Log`.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* // ❌ Reports
|
|
10
|
-
* print("Hello");
|
|
11
|
-
* print(value);
|
|
12
|
-
*
|
|
13
|
-
* // ✅ OK
|
|
14
|
-
* Log.info("Hello");
|
|
15
|
-
* Log.debug(value);
|
|
16
|
-
*/
|
|
17
2
|
declare const noPrint: Rule.RuleModule;
|
|
18
3
|
export default noPrint;
|
package/dist/rules/no-print.js
CHANGED
|
@@ -1,25 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bans use of `print()` function calls. Use `Log` instead.
|
|
3
|
-
*
|
|
4
|
-
* The `print()` function is not wanted in this codebase and discouraged in favor of a proper
|
|
5
|
-
* logging system like `Log`.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* // ❌ Reports
|
|
9
|
-
* print("Hello");
|
|
10
|
-
* print(value);
|
|
11
|
-
*
|
|
12
|
-
* // ✅ OK
|
|
13
|
-
* Log.info("Hello");
|
|
14
|
-
* Log.debug(value);
|
|
15
|
-
*/
|
|
16
1
|
const noPrint = {
|
|
17
|
-
/**
|
|
18
|
-
* Creates the ESLint rule visitor.
|
|
19
|
-
*
|
|
20
|
-
* @param context - The ESLint rule context.
|
|
21
|
-
* @returns The visitor object with AST node handlers.
|
|
22
|
-
*/
|
|
23
2
|
create(context) {
|
|
24
3
|
return {
|
|
25
4
|
'CallExpression[callee.type="Identifier"][callee.name="print"]'(node) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-print.js","sourceRoot":"","sources":["../../src/rules/no-print.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"no-print.js","sourceRoot":"","sources":["../../src/rules/no-print.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAoB;IAChC,MAAM,CAAC,OAAO;QACb,OAAO;YACN,+DAA+D,CAAC,IAAe;gBAC9E,OAAO,CAAC,MAAM,CAAC;oBACd,SAAS,EAAE,QAAQ;oBACnB,IAAI;iBACJ,CAAC,CAAC;YACJ,CAAC;SACD,CAAC;IACH,CAAC;IACD,IAAI,EAAE;QACL,IAAI,EAAE;YACL,WAAW,EAAE,8CAA8C;YAC3D,WAAW,EAAE,KAAK;SAClB;QACD,QAAQ,EAAE;YACT,MAAM,EAAE,4BAA4B;SACpC;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KACf;CACD,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -1,27 +1,3 @@
|
|
|
1
1
|
import type { Rule } from "eslint";
|
|
2
|
-
/**
|
|
3
|
-
* Bans shorthand variable names in favor of descriptive full names.
|
|
4
|
-
*
|
|
5
|
-
* Enforces:
|
|
6
|
-
* - `plr` → `player` (or `localPlayer` for Players.LocalPlayer assignments)
|
|
7
|
-
* - `args` → `parameters`
|
|
8
|
-
* - `dt` → `deltaTime`
|
|
9
|
-
* - `char` → `character` (except when used as property access)
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* // ❌ Reports
|
|
13
|
-
* const plr = getPlayer();
|
|
14
|
-
* const args = [1, 2, 3];
|
|
15
|
-
* const dt = 0.016;
|
|
16
|
-
* const char = getCharacter();
|
|
17
|
-
*
|
|
18
|
-
* // ✅ OK
|
|
19
|
-
* const player = getPlayer();
|
|
20
|
-
* const localPlayer = Players.LocalPlayer;
|
|
21
|
-
* const parameters = [1, 2, 3];
|
|
22
|
-
* const deltaTime = 0.016;
|
|
23
|
-
* const character = getCharacter();
|
|
24
|
-
* const model = entity.char; // property access is allowed
|
|
25
|
-
*/
|
|
26
2
|
declare const noShorthandNames: Rule.RuleModule;
|
|
27
3
|
export default noShorthandNames;
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { TSESTree } from "@typescript-eslint/types";
|
|
2
|
+
import Type from "typebox";
|
|
3
|
+
import { Compile } from "typebox/compile";
|
|
4
|
+
const isRuleOptions = Compile(Type.Object({
|
|
5
|
+
allowPropertyAccess: Type.Optional(Type.Array(Type.String())),
|
|
6
|
+
shorthands: Type.Optional(Type.Record(Type.String(), Type.String())),
|
|
7
|
+
}));
|
|
8
|
+
const isUnknownRecord = Compile(Type.Record(Type.String(), Type.Unknown()));
|
|
4
9
|
const DEFAULT_OPTIONS = {
|
|
5
10
|
allowPropertyAccess: ["char"],
|
|
6
11
|
shorthands: {
|
|
@@ -10,36 +15,7 @@ const DEFAULT_OPTIONS = {
|
|
|
10
15
|
plr: "player",
|
|
11
16
|
},
|
|
12
17
|
};
|
|
13
|
-
|
|
14
|
-
return typeof value === "object" && value !== null;
|
|
15
|
-
}
|
|
16
|
-
function isStringRecord(value) {
|
|
17
|
-
return isUnknownRecord(value) && Object.values(value).every((v) => typeof v === "string");
|
|
18
|
-
}
|
|
19
|
-
function isStringArray(value) {
|
|
20
|
-
return Array.isArray(value) && value.every((entry) => typeof entry === "string");
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Escapes special regex characters in a string.
|
|
24
|
-
*
|
|
25
|
-
* @param str - The string to escape.
|
|
26
|
-
* @returns The escaped string safe for use in regex.
|
|
27
|
-
*/
|
|
28
|
-
function escapeRegex(str) {
|
|
29
|
-
return str.replaceAll(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Type guard to check if an unknown value is valid RuleOptions.
|
|
33
|
-
*
|
|
34
|
-
* @param value - The value to check.
|
|
35
|
-
* @returns True if the value is valid RuleOptions.
|
|
36
|
-
*/
|
|
37
|
-
function isRuleOptions(value) {
|
|
38
|
-
if (!isUnknownRecord(value))
|
|
39
|
-
return false;
|
|
40
|
-
return ((!("shorthands" in value) || isStringRecord(value.shorthands)) &&
|
|
41
|
-
(!("allowPropertyAccess" in value) || isStringArray(value.allowPropertyAccess)));
|
|
42
|
-
}
|
|
18
|
+
const ESCAPE_REGEXP = /[.*+?^${}()|[\]\\]/g;
|
|
43
19
|
function normalizeOptions(rawOptions) {
|
|
44
20
|
const mergedShorthands = { ...DEFAULT_OPTIONS.shorthands };
|
|
45
21
|
if (rawOptions?.shorthands)
|
|
@@ -47,8 +23,10 @@ function normalizeOptions(rawOptions) {
|
|
|
47
23
|
mergedShorthands[key] = value;
|
|
48
24
|
const shorthandsMap = new Map(Object.entries(mergedShorthands));
|
|
49
25
|
const allowPropertyAccessSource = rawOptions?.allowPropertyAccess ?? DEFAULT_OPTIONS.allowPropertyAccess;
|
|
50
|
-
|
|
51
|
-
|
|
26
|
+
const escapedKeys = new Array();
|
|
27
|
+
let length = 0;
|
|
28
|
+
for (const key of shorthandsMap.keys())
|
|
29
|
+
escapedKeys[length++] = key.replaceAll(ESCAPE_REGEXP, "\\$&");
|
|
52
30
|
const selector = `Identifier[name=/^(${escapedKeys.join("|")})$/]`;
|
|
53
31
|
return {
|
|
54
32
|
allowPropertyAccess: new Set(allowPropertyAccessSource),
|
|
@@ -56,69 +34,37 @@ function normalizeOptions(rawOptions) {
|
|
|
56
34
|
shorthands: shorthandsMap,
|
|
57
35
|
};
|
|
58
36
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Bans shorthand variable names in favor of descriptive full names.
|
|
61
|
-
*
|
|
62
|
-
* Enforces:
|
|
63
|
-
* - `plr` → `player` (or `localPlayer` for Players.LocalPlayer assignments)
|
|
64
|
-
* - `args` → `parameters`
|
|
65
|
-
* - `dt` → `deltaTime`
|
|
66
|
-
* - `char` → `character` (except when used as property access)
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
* // ❌ Reports
|
|
70
|
-
* const plr = getPlayer();
|
|
71
|
-
* const args = [1, 2, 3];
|
|
72
|
-
* const dt = 0.016;
|
|
73
|
-
* const char = getCharacter();
|
|
74
|
-
*
|
|
75
|
-
* // ✅ OK
|
|
76
|
-
* const player = getPlayer();
|
|
77
|
-
* const localPlayer = Players.LocalPlayer;
|
|
78
|
-
* const parameters = [1, 2, 3];
|
|
79
|
-
* const deltaTime = 0.016;
|
|
80
|
-
* const character = getCharacter();
|
|
81
|
-
* const model = entity.char; // property access is allowed
|
|
82
|
-
*/
|
|
83
37
|
const noShorthandNames = {
|
|
84
|
-
/**
|
|
85
|
-
* Creates the ESLint rule visitor.
|
|
86
|
-
*
|
|
87
|
-
* @param context - The ESLint rule context.
|
|
88
|
-
* @returns The visitor object with AST node handlers.
|
|
89
|
-
*/
|
|
90
38
|
create(context) {
|
|
91
|
-
const validatedOptions = isRuleOptions(context.options[0]) ? context.options[0] : undefined;
|
|
92
|
-
const
|
|
93
|
-
const { shorthands, allowPropertyAccess, selector } = normalized;
|
|
39
|
+
const validatedOptions = isRuleOptions.Check(context.options[0]) ? context.options[0] : undefined;
|
|
40
|
+
const { shorthands, allowPropertyAccess, selector } = normalizeOptions(validatedOptions);
|
|
94
41
|
return {
|
|
95
42
|
[selector](node) {
|
|
96
43
|
const shorthandName = node.name;
|
|
97
44
|
const replacement = shorthands.get(shorthandName);
|
|
98
|
-
if (
|
|
45
|
+
if (replacement === undefined || replacement === "")
|
|
99
46
|
return;
|
|
100
|
-
|
|
101
|
-
const parent = node.parent;
|
|
102
|
-
// Inline property access check
|
|
47
|
+
const { parent } = node;
|
|
103
48
|
if (allowPropertyAccess.has(shorthandName) &&
|
|
104
|
-
parent &&
|
|
105
|
-
isUnknownRecord(parent) &&
|
|
106
|
-
parent.type ===
|
|
49
|
+
parent !== undefined &&
|
|
50
|
+
isUnknownRecord.Check(parent) &&
|
|
51
|
+
parent.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
|
|
107
52
|
parent.property === node)
|
|
108
53
|
return;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
54
|
+
if (shorthandName === "plr" &&
|
|
55
|
+
parent?.type === TSESTree.AST_NODE_TYPES.VariableDeclarator &&
|
|
56
|
+
parent.id === node) {
|
|
57
|
+
const { init } = parent;
|
|
112
58
|
if (init &&
|
|
113
|
-
isUnknownRecord(init) &&
|
|
114
|
-
init.type ===
|
|
115
|
-
init.object &&
|
|
116
|
-
isUnknownRecord(init.object) &&
|
|
117
|
-
init.object.type ===
|
|
59
|
+
isUnknownRecord.Check(init) &&
|
|
60
|
+
init.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
|
|
61
|
+
init.object !== undefined &&
|
|
62
|
+
isUnknownRecord.Check(init.object) &&
|
|
63
|
+
init.object.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
118
64
|
init.object.name === "Players" &&
|
|
119
|
-
init.property &&
|
|
120
|
-
isUnknownRecord(init.property) &&
|
|
121
|
-
init.property.type ===
|
|
65
|
+
init.property !== undefined &&
|
|
66
|
+
isUnknownRecord.Check(init.property) &&
|
|
67
|
+
init.property.type === TSESTree.AST_NODE_TYPES.Identifier &&
|
|
122
68
|
init.property.name === "LocalPlayer") {
|
|
123
69
|
context.report({
|
|
124
70
|
data: { replacement: "localPlayer", shorthand: shorthandName },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-shorthand-names.js","sourceRoot":"","sources":["../../src/rules/no-shorthand-names.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"no-shorthand-names.js","sourceRoot":"","sources":["../../src/rules/no-shorthand-names.ts"],"names":[],"mappings":"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"}
|
package/dist/rules/no-warn.d.ts
CHANGED
|
@@ -1,18 +1,3 @@
|
|
|
1
1
|
import type { Rule } from "eslint";
|
|
2
|
-
/**
|
|
3
|
-
* Bans use of `warn()` function calls. Use `Log` instead.
|
|
4
|
-
*
|
|
5
|
-
* The `warn()` function is not wanted in this codebase and discouraged in favor of a proper
|
|
6
|
-
* logging system like `Log`.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* // ❌ Reports
|
|
10
|
-
* warn("Warning");
|
|
11
|
-
* warn(error);
|
|
12
|
-
*
|
|
13
|
-
* // ✅ OK
|
|
14
|
-
* Log.warn("Warning");
|
|
15
|
-
* Log.error(error);
|
|
16
|
-
*/
|
|
17
2
|
declare const noWarn: Rule.RuleModule;
|
|
18
3
|
export default noWarn;
|
package/dist/rules/no-warn.js
CHANGED
|
@@ -1,25 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bans use of `warn()` function calls. Use `Log` instead.
|
|
3
|
-
*
|
|
4
|
-
* The `warn()` function is not wanted in this codebase and discouraged in favor of a proper
|
|
5
|
-
* logging system like `Log`.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* // ❌ Reports
|
|
9
|
-
* warn("Warning");
|
|
10
|
-
* warn(error);
|
|
11
|
-
*
|
|
12
|
-
* // ✅ OK
|
|
13
|
-
* Log.warn("Warning");
|
|
14
|
-
* Log.error(error);
|
|
15
|
-
*/
|
|
16
1
|
const noWarn = {
|
|
17
|
-
/**
|
|
18
|
-
* Creates the ESLint rule visitor.
|
|
19
|
-
*
|
|
20
|
-
* @param context - The ESLint rule context.
|
|
21
|
-
* @returns The visitor object with AST node handlers.
|
|
22
|
-
*/
|
|
23
2
|
create(context) {
|
|
24
3
|
return {
|
|
25
4
|
'CallExpression[callee.type="Identifier"][callee.name="warn"]'(node) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-warn.js","sourceRoot":"","sources":["../../src/rules/no-warn.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"no-warn.js","sourceRoot":"","sources":["../../src/rules/no-warn.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAoB;IAC/B,MAAM,CAAC,OAAO;QACb,OAAO;YACN,8DAA8D,CAAC,IAAe;gBAC7E,OAAO,CAAC,MAAM,CAAC;oBACd,SAAS,EAAE,QAAQ;oBACnB,IAAI;iBACJ,CAAC,CAAC;YACJ,CAAC;SACD,CAAC;IACH,CAAC;IACD,IAAI,EAAE;QACL,IAAI,EAAE;YACL,WAAW,EAAE,6CAA6C;YAC1D,WAAW,EAAE,KAAK;SAClB;QACD,QAAQ,EAAE;YACT,MAAM,EAAE,2BAA2B;SACnC;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KACf;CACD,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -1,31 +1,40 @@
|
|
|
1
1
|
import { AST_NODE_TYPES } from "@typescript-eslint/types";
|
|
2
|
+
import Type from "typebox";
|
|
3
|
+
import { Compile } from "typebox/compile";
|
|
2
4
|
const sequenceDescriptors = [
|
|
3
5
|
{ keypointName: "ColorSequenceKeypoint", sequenceName: "ColorSequence" },
|
|
4
6
|
{ keypointName: "NumberSequenceKeypoint", sequenceName: "NumberSequence" },
|
|
5
7
|
];
|
|
6
8
|
function isSequenceIdentifier(node) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
if (node.type !== AST_NODE_TYPES.Identifier)
|
|
10
|
+
return false;
|
|
11
|
+
for (const { sequenceName } of sequenceDescriptors)
|
|
12
|
+
if (sequenceName === node.name)
|
|
13
|
+
return true;
|
|
14
|
+
return false;
|
|
9
15
|
}
|
|
10
16
|
function findDescriptor(sequenceName) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return
|
|
17
|
+
for (const descriptor of sequenceDescriptors)
|
|
18
|
+
if (descriptor.sequenceName === sequenceName)
|
|
19
|
+
return descriptor;
|
|
20
|
+
return undefined;
|
|
15
21
|
}
|
|
22
|
+
const isNumericLiteral = Compile(Type.Object({
|
|
23
|
+
type: Type.Literal(AST_NODE_TYPES.Literal),
|
|
24
|
+
value: Type.Number(),
|
|
25
|
+
}));
|
|
16
26
|
function isExpressionArgument(argument) {
|
|
17
27
|
return argument !== undefined && argument.type !== AST_NODE_TYPES.SpreadElement;
|
|
18
28
|
}
|
|
19
29
|
function extractKeypoint(element, descriptor) {
|
|
20
30
|
if (element === null || element.type !== AST_NODE_TYPES.NewExpression)
|
|
21
31
|
return undefined;
|
|
22
|
-
if (element.callee.type !== AST_NODE_TYPES.Identifier || element.callee.name !== descriptor.keypointName)
|
|
32
|
+
if (element.callee.type !== AST_NODE_TYPES.Identifier || element.callee.name !== descriptor.keypointName)
|
|
23
33
|
return undefined;
|
|
24
|
-
}
|
|
25
34
|
if (element.arguments.length !== 2)
|
|
26
35
|
return undefined;
|
|
27
36
|
const [timeArgument, valueArgument] = element.arguments;
|
|
28
|
-
if (!isNumericLiteral(timeArgument))
|
|
37
|
+
if (!isNumericLiteral.Check(timeArgument))
|
|
29
38
|
return undefined;
|
|
30
39
|
if (!isExpressionArgument(valueArgument))
|
|
31
40
|
return undefined;
|
|
@@ -40,21 +49,19 @@ const docs = {
|
|
|
40
49
|
};
|
|
41
50
|
const preferSequenceOverloads = {
|
|
42
51
|
create(context) {
|
|
43
|
-
const sourceCode = context
|
|
52
|
+
const { sourceCode } = context;
|
|
44
53
|
return {
|
|
45
54
|
NewExpression(node) {
|
|
46
|
-
const callee = node
|
|
55
|
+
const { callee } = node;
|
|
47
56
|
if (!isSequenceIdentifier(callee))
|
|
48
57
|
return;
|
|
49
58
|
const descriptor = findDescriptor(callee.name);
|
|
50
|
-
if (descriptor === undefined)
|
|
51
|
-
return;
|
|
52
|
-
if (node.arguments.length !== 1)
|
|
59
|
+
if (descriptor === undefined || node.arguments.length !== 1)
|
|
53
60
|
return;
|
|
54
61
|
const [argument] = node.arguments;
|
|
55
|
-
if (argument === undefined ||
|
|
56
|
-
|
|
57
|
-
|
|
62
|
+
if (argument === undefined ||
|
|
63
|
+
argument.type !== AST_NODE_TYPES.ArrayExpression ||
|
|
64
|
+
argument.elements.length !== 2)
|
|
58
65
|
return;
|
|
59
66
|
const firstElement = argument.elements[0] ?? null;
|
|
60
67
|
const secondElement = argument.elements[1] ?? null;
|
|
@@ -70,9 +77,7 @@ const preferSequenceOverloads = {
|
|
|
70
77
|
const normalizedSecondValue = secondValueText.trim();
|
|
71
78
|
if (normalizedFirstValue === normalizedSecondValue) {
|
|
72
79
|
context.report({
|
|
73
|
-
data: {
|
|
74
|
-
sequenceName: descriptor.sequenceName,
|
|
75
|
-
},
|
|
80
|
+
data: { sequenceName: descriptor.sequenceName },
|
|
76
81
|
fix: (fixer) => fixer.replaceText(node, `new ${descriptor.sequenceName}(${firstValueText})`),
|
|
77
82
|
messageId: "preferSingleOverload",
|
|
78
83
|
node,
|
|
@@ -80,9 +85,7 @@ const preferSequenceOverloads = {
|
|
|
80
85
|
return;
|
|
81
86
|
}
|
|
82
87
|
context.report({
|
|
83
|
-
data: {
|
|
84
|
-
sequenceName: descriptor.sequenceName,
|
|
85
|
-
},
|
|
88
|
+
data: { sequenceName: descriptor.sequenceName },
|
|
86
89
|
fix: (fixer) => fixer.replaceText(node, `new ${descriptor.sequenceName}(${firstValueText}, ${secondValueText})`),
|
|
87
90
|
messageId: "preferTwoPointOverload",
|
|
88
91
|
node,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-sequence-overloads.js","sourceRoot":"","sources":["../../src/rules/prefer-sequence-overloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"prefer-sequence-overloads.js","sourceRoot":"","sources":["../../src/rules/prefer-sequence-overloads.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,3 @@
|
|
|
1
1
|
import type { Rule } from "eslint";
|
|
2
|
-
/**
|
|
3
|
-
* Detects `new UDim2(...)` calls that can be simplified to `UDim2.fromScale()` or `UDim2.fromOffset()`.
|
|
4
|
-
*
|
|
5
|
-
* @example
|
|
6
|
-
* // ❌ Reports
|
|
7
|
-
* new UDim2(1, 0, 1, 0);
|
|
8
|
-
* new UDim2(0, 100, 0, 50);
|
|
9
|
-
*
|
|
10
|
-
* // ✅ OK
|
|
11
|
-
* new UDim2(0, 0, 0, 0);
|
|
12
|
-
* new UDim2(1, 2, 3, 4);
|
|
13
|
-
* UDim2.fromScale(1, 1);
|
|
14
|
-
* UDim2.fromOffset(100, 50);
|
|
15
|
-
*/
|
|
16
2
|
declare const preferUDim2Shorthand: Rule.RuleModule;
|
|
17
3
|
export default preferUDim2Shorthand;
|