@pobammer-ts/eslint-cease-nonsense-rules 1.2.0 → 1.2.2
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.
|
@@ -13,13 +13,13 @@ function normalizeConfig(options) {
|
|
|
13
13
|
if (isArrayConfig.Check(bannedInstances)) {
|
|
14
14
|
const map = new Map();
|
|
15
15
|
for (const className of bannedInstances)
|
|
16
|
-
map.set(className, undefined);
|
|
16
|
+
map.set(className.toLowerCase(), { originalName: className, message: undefined });
|
|
17
17
|
return { bannedClasses: map };
|
|
18
18
|
}
|
|
19
19
|
if (isObjectConfig.Check(bannedInstances)) {
|
|
20
20
|
const map = new Map();
|
|
21
21
|
for (const [className, message] of Object.entries(bannedInstances))
|
|
22
|
-
map.set(className, message);
|
|
22
|
+
map.set(className.toLowerCase(), { originalName: className, message });
|
|
23
23
|
return { bannedClasses: map };
|
|
24
24
|
}
|
|
25
25
|
return { bannedClasses: new Map() };
|
|
@@ -33,33 +33,40 @@ const banInstances = {
|
|
|
33
33
|
const config = normalizeConfig(context.options[0]);
|
|
34
34
|
if (config.bannedClasses.size === 0)
|
|
35
35
|
return {};
|
|
36
|
-
function reportBannedClass(node,
|
|
37
|
-
const
|
|
38
|
-
if (
|
|
36
|
+
function reportBannedClass(node, entry) {
|
|
37
|
+
const { originalName, message } = entry;
|
|
38
|
+
if (message !== undefined && message !== "") {
|
|
39
39
|
context.report({
|
|
40
|
-
data: { className, customMessage },
|
|
40
|
+
data: { className: originalName, customMessage: message },
|
|
41
41
|
messageId: "bannedInstanceCustom",
|
|
42
42
|
node,
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
45
|
else {
|
|
46
46
|
context.report({
|
|
47
|
-
data: { className },
|
|
47
|
+
data: { className: originalName },
|
|
48
48
|
messageId: "bannedInstance",
|
|
49
49
|
node,
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
return {
|
|
54
|
-
// Handle: <
|
|
54
|
+
// Handle: <classname> JSX elements (lowercase = Roblox Instance)
|
|
55
|
+
// Capitalized JSX elements like <Part> are custom React components
|
|
55
56
|
JSXOpeningElement(node) {
|
|
56
57
|
const { name } = node;
|
|
57
58
|
if (name.type !== TSESTree.AST_NODE_TYPES.JSXIdentifier)
|
|
58
59
|
return;
|
|
59
|
-
const
|
|
60
|
-
|
|
60
|
+
const elementName = name.name;
|
|
61
|
+
const firstChar = elementName.charAt(0);
|
|
62
|
+
// Only lowercase JSX elements are Roblox Instances
|
|
63
|
+
if (firstChar !== firstChar.toLowerCase())
|
|
61
64
|
return;
|
|
62
|
-
|
|
65
|
+
// Lookup by lowercase (config keys are stored lowercase)
|
|
66
|
+
const entry = config.bannedClasses.get(elementName.toLowerCase());
|
|
67
|
+
if (!entry)
|
|
68
|
+
return;
|
|
69
|
+
reportBannedClass(node, entry);
|
|
63
70
|
},
|
|
64
71
|
// Handle: new Instance("ClassName")
|
|
65
72
|
NewExpression(node) {
|
|
@@ -72,10 +79,11 @@ const banInstances = {
|
|
|
72
79
|
return;
|
|
73
80
|
if (typeof firstArgument.value !== "string")
|
|
74
81
|
return;
|
|
75
|
-
|
|
76
|
-
|
|
82
|
+
// Lookup by lowercase (config keys are stored lowercase)
|
|
83
|
+
const entry = config.bannedClasses.get(firstArgument.value.toLowerCase());
|
|
84
|
+
if (!entry)
|
|
77
85
|
return;
|
|
78
|
-
reportBannedClass(node,
|
|
86
|
+
reportBannedClass(node, entry);
|
|
79
87
|
},
|
|
80
88
|
};
|
|
81
89
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ban-instances.js","sourceRoot":"","sources":["../../src/rules/ban-instances.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAyB1C,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACzD,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,eAAe,GAAG,OAAO,CAC9B,IAAI,CAAC,MAAM,CAAC;IACX,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CACnG,CAAC,CACF,CAAC;
|
|
1
|
+
{"version":3,"file":"ban-instances.js","sourceRoot":"","sources":["../../src/rules/ban-instances.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED