eslint-plugin-nima 1.2.8 → 1.2.9
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.
|
@@ -12,6 +12,7 @@ exports.config = {
|
|
|
12
12
|
recommended: false,
|
|
13
13
|
url: "https://github.com/NIMA-Enterprises/eslint-plugin-nima/blob/main/documentation/rules/no-objects-in-deps.md",
|
|
14
14
|
},
|
|
15
|
+
fixable: "code",
|
|
15
16
|
messages: {
|
|
16
17
|
[Messages.NO_OBJECTS_IN_DEPENDENCIES]: "NIMA: Objects inside of dependency arrays aren't allowed. Try doing JSON.stringify({{ object }}).",
|
|
17
18
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/rules/no-objects-in-deps/config.ts"],"names":[],"mappings":";;;AAEa,QAAA,IAAI,GAAG,oBAAoB,CAAC;AAEzC,IAAkB,QAEjB;AAFD,WAAkB,QAAQ;IACtB,qEAAyD,CAAA;AAC7D,CAAC,EAFiB,QAAQ,wBAAR,QAAQ,QAEzB;AAQY,QAAA,MAAM,GAGiD;IAChE,IAAI,EAAE;QACF,WAAW,EAAE,kDAAkD;QAC/D,WAAW,EAAE,KAAK;QAClB,GAAG,EAAE,4GAA4G;KACpH;IACD,QAAQ,EAAE;QACN,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EACjC,mGAAmG;KAC1G;IACD,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,YAAY;CACrB,CAAC;AAEW,QAAA,cAAc,GAAY,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/rules/no-objects-in-deps/config.ts"],"names":[],"mappings":";;;AAEa,QAAA,IAAI,GAAG,oBAAoB,CAAC;AAEzC,IAAkB,QAEjB;AAFD,WAAkB,QAAQ;IACtB,qEAAyD,CAAA;AAC7D,CAAC,EAFiB,QAAQ,wBAAR,QAAQ,QAEzB;AAQY,QAAA,MAAM,GAGiD;IAChE,IAAI,EAAE;QACF,WAAW,EAAE,kDAAkD;QAC/D,WAAW,EAAE,KAAK;QAClB,GAAG,EAAE,4GAA4G;KACpH;IACD,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE;QACN,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EACjC,mGAAmG;KAC1G;IACD,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,YAAY;CACrB,CAAC;AAEW,QAAA,cAAc,GAAY,EAAE,CAAC"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.create = void 0;
|
|
4
7
|
const hooks_1 = require("../../constants/hooks");
|
|
5
8
|
const utils_1 = require("@typescript-eslint/utils");
|
|
9
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
6
10
|
const config_1 = require("./config");
|
|
7
11
|
const create = (context) => {
|
|
8
12
|
const services = context.sourceCode.parserServices;
|
|
@@ -25,15 +29,12 @@ const create = (context) => {
|
|
|
25
29
|
return null;
|
|
26
30
|
};
|
|
27
31
|
const isObjectType = (element) => {
|
|
28
|
-
// Always report direct object literals
|
|
29
32
|
if (element.type === utils_1.AST_NODE_TYPES.ObjectExpression) {
|
|
30
33
|
return true;
|
|
31
34
|
}
|
|
32
|
-
// Always report new expressions (new Date(), etc.)
|
|
33
35
|
if (element.type === utils_1.AST_NODE_TYPES.NewExpression) {
|
|
34
36
|
return true;
|
|
35
37
|
}
|
|
36
|
-
// Skip literals, arrays, and functions - these are safe
|
|
37
38
|
if (element.type === utils_1.AST_NODE_TYPES.Literal ||
|
|
38
39
|
element.type === utils_1.AST_NODE_TYPES.TemplateLiteral ||
|
|
39
40
|
element.type === utils_1.AST_NODE_TYPES.ArrayExpression ||
|
|
@@ -41,11 +42,9 @@ const create = (context) => {
|
|
|
41
42
|
element.type === utils_1.AST_NODE_TYPES.FunctionExpression) {
|
|
42
43
|
return false;
|
|
43
44
|
}
|
|
44
|
-
// If no TypeScript info, be conservative and don't report
|
|
45
45
|
if (!checker || !services?.esTreeNodeToTSNodeMap) {
|
|
46
46
|
return false;
|
|
47
47
|
}
|
|
48
|
-
// Use TypeScript type checker for identifiers and other expressions
|
|
49
48
|
try {
|
|
50
49
|
const tsNode = services.esTreeNodeToTSNodeMap.get(element);
|
|
51
50
|
if (!tsNode) {
|
|
@@ -55,30 +54,46 @@ const create = (context) => {
|
|
|
55
54
|
if (!type) {
|
|
56
55
|
return false;
|
|
57
56
|
}
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
57
|
+
const isPrimitiveType = (t) => {
|
|
58
|
+
const flags = t.getFlags();
|
|
59
|
+
if (flags &
|
|
60
|
+
(typescript_1.default.TypeFlags.String |
|
|
61
|
+
typescript_1.default.TypeFlags.Number |
|
|
62
|
+
typescript_1.default.TypeFlags.Boolean |
|
|
63
|
+
typescript_1.default.TypeFlags.BigInt |
|
|
64
|
+
typescript_1.default.TypeFlags.ESSymbol |
|
|
65
|
+
typescript_1.default.TypeFlags.Null |
|
|
66
|
+
typescript_1.default.TypeFlags.Undefined |
|
|
67
|
+
typescript_1.default.TypeFlags.Void |
|
|
68
|
+
typescript_1.default.TypeFlags.StringLiteral |
|
|
69
|
+
typescript_1.default.TypeFlags.NumberLiteral |
|
|
70
|
+
typescript_1.default.TypeFlags.BooleanLiteral |
|
|
71
|
+
typescript_1.default.TypeFlags.BigIntLiteral |
|
|
72
|
+
typescript_1.default.TypeFlags.EnumLiteral)) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
if (t.isUnion()) {
|
|
76
|
+
return t.types.every(isPrimitiveType);
|
|
77
|
+
}
|
|
78
|
+
if (t.isIntersection()) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
const typeStr = checker.typeToString(t);
|
|
82
|
+
if (typeStr.startsWith("`") && typeStr.endsWith("`")) {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
return false;
|
|
86
|
+
};
|
|
87
|
+
if (isPrimitiveType(type)) {
|
|
71
88
|
return false;
|
|
72
89
|
}
|
|
73
|
-
// Check if it's a function type
|
|
74
90
|
if (type.getCallSignatures().length > 0) {
|
|
75
91
|
return false;
|
|
76
92
|
}
|
|
77
|
-
|
|
93
|
+
const typeString = checker.typeToString(type);
|
|
78
94
|
if (typeString.endsWith("[]") || typeString.startsWith("Array<")) {
|
|
79
95
|
return false;
|
|
80
96
|
}
|
|
81
|
-
// If it has object-like properties, it's an object
|
|
82
97
|
const properties = type.getProperties();
|
|
83
98
|
if (properties.length > 0) {
|
|
84
99
|
return true;
|
|
@@ -86,16 +101,17 @@ const create = (context) => {
|
|
|
86
101
|
return false;
|
|
87
102
|
}
|
|
88
103
|
catch {
|
|
89
|
-
// If type checking fails, don't report to avoid false positives
|
|
90
104
|
return false;
|
|
91
105
|
}
|
|
92
106
|
};
|
|
93
107
|
const checkDep = (element) => {
|
|
94
108
|
if (isObjectType(element)) {
|
|
109
|
+
const text = context.sourceCode.getText(element);
|
|
95
110
|
context.report({
|
|
96
111
|
data: {
|
|
97
|
-
object:
|
|
112
|
+
object: text,
|
|
98
113
|
},
|
|
114
|
+
fix: (fixer) => fixer.replaceText(element, `JSON.stringify(${text})`),
|
|
99
115
|
messageId: config_1.Messages.NO_OBJECTS_IN_DEPENDENCIES,
|
|
100
116
|
node: element,
|
|
101
117
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/rules/no-objects-in-deps/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/rules/no-objects-in-deps/create.ts"],"names":[],"mappings":"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"}
|