eslint-plugin-nima 1.2.7 → 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.
- package/dist/index.d.ts +7 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/rules/index.d.ts +1 -0
- package/dist/rules/index.js +2 -1
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/no-objects-in-deps/config.js +1 -0
- package/dist/rules/no-objects-in-deps/config.js.map +1 -1
- package/dist/rules/no-objects-in-deps/create.js +39 -23
- package/dist/rules/no-objects-in-deps/create.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RuleModule } from "@typescript-eslint/utils/ts-eslint";
|
|
2
2
|
import type { ESLint, Linter } from "eslint";
|
|
3
|
-
import { BooleanNamingConvention, NoHandlerSuffix, NoObjectsInDeps, ParamsNamingConvention, PreferArrowFunctions, PreferExportUnderComponent, PreferReactFc, PreferReactWithHooks, PreferVoidForOptionalParam, RestrictConsoleMethods, RestrictFunctionUsage, RestrictImports } from "./rules";
|
|
3
|
+
import { BooleanNamingConvention, NoHandlerSuffix, NoObjectsInDeps, NoOptionalCallExpression, ParamsNamingConvention, PreferArrowFunctions, PreferExportUnderComponent, PreferReactFc, PreferReactWithHooks, PreferVoidForOptionalParam, RestrictConsoleMethods, RestrictFunctionUsage, RestrictImports } from "./rules";
|
|
4
4
|
declare const rules: {
|
|
5
5
|
"boolean-naming-convention": RuleModule<BooleanNamingConvention.Messages, import("./rules/boolean-naming-convention/config").Options, {
|
|
6
6
|
recommended: boolean;
|
|
@@ -11,6 +11,9 @@ declare const rules: {
|
|
|
11
11
|
"no-objects-in-deps": RuleModule<NoObjectsInDeps.Messages, [], {
|
|
12
12
|
recommended: boolean;
|
|
13
13
|
}, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
14
|
+
"no-optional-call-expression": RuleModule<NoOptionalCallExpression.Messages, [], {
|
|
15
|
+
recommended: boolean;
|
|
16
|
+
}, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
14
17
|
"params-naming-convention": RuleModule<ParamsNamingConvention.Messages, import("./rules/params-naming-convention/config").Options, {
|
|
15
18
|
recommended: boolean;
|
|
16
19
|
}, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
@@ -62,6 +65,9 @@ declare const plugin: {
|
|
|
62
65
|
"no-objects-in-deps": RuleModule<NoObjectsInDeps.Messages, [], {
|
|
63
66
|
recommended: boolean;
|
|
64
67
|
}, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
68
|
+
"no-optional-call-expression": RuleModule<NoOptionalCallExpression.Messages, [], {
|
|
69
|
+
recommended: boolean;
|
|
70
|
+
}, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
65
71
|
"params-naming-convention": RuleModule<ParamsNamingConvention.Messages, import("./rules/params-naming-convention/config").Options, {
|
|
66
72
|
recommended: boolean;
|
|
67
73
|
}, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ const rules = {
|
|
|
4
4
|
[rules_1.BooleanNamingConvention.name]: rules_1.BooleanNamingConvention.rule,
|
|
5
5
|
[rules_1.NoHandlerSuffix.name]: rules_1.NoHandlerSuffix.rule,
|
|
6
6
|
[rules_1.NoObjectsInDeps.name]: rules_1.NoObjectsInDeps.rule,
|
|
7
|
+
[rules_1.NoOptionalCallExpression.name]: rules_1.NoOptionalCallExpression.rule,
|
|
7
8
|
[rules_1.ParamsNamingConvention.name]: rules_1.ParamsNamingConvention.rule,
|
|
8
9
|
[rules_1.PreferArrowFunctions.name]: rules_1.PreferArrowFunctions.rule,
|
|
9
10
|
[rules_1.PreferExportUnderComponent.name]: rules_1.PreferExportUnderComponent.rule,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,mCAciB;AAEjB,MAAM,KAAK,GAAG;IACV,CAAC,+BAAuB,CAAC,IAAI,CAAC,EAAE,+BAAuB,CAAC,IAAI;IAC5D,CAAC,uBAAe,CAAC,IAAI,CAAC,EAAE,uBAAe,CAAC,IAAI;IAC5C,CAAC,uBAAe,CAAC,IAAI,CAAC,EAAE,uBAAe,CAAC,IAAI;IAC5C,CAAC,gCAAwB,CAAC,IAAI,CAAC,EAAE,gCAAwB,CAAC,IAAI;IAC9D,CAAC,8BAAsB,CAAC,IAAI,CAAC,EAAE,8BAAsB,CAAC,IAAI;IAC1D,CAAC,4BAAoB,CAAC,IAAI,CAAC,EAAE,4BAAoB,CAAC,IAAI;IACtD,CAAC,kCAA0B,CAAC,IAAI,CAAC,EAAE,kCAA0B,CAAC,IAAI;IAClE,CAAC,qBAAa,CAAC,IAAI,CAAC,EAAE,qBAAa,CAAC,IAAI;IACxC,CAAC,4BAAoB,CAAC,IAAI,CAAC,EAAE,4BAAoB,CAAC,IAAI;IACtD,CAAC,kCAA0B,CAAC,IAAI,CAAC,EAAE,kCAA0B,CAAC,IAAI;IAClE,CAAC,8BAAsB,CAAC,IAAI,CAAC,EAAE,8BAAsB,CAAC,IAAI;IAC1D,CAAC,6BAAqB,CAAC,IAAI,CAAC,EAAE,6BAAqB,CAAC,IAAI;IACxD,CAAC,uBAAe,CAAC,IAAI,CAAC,EAAE,uBAAe,CAAC,IAAI;CAC/C,CAAC;AAYF,MAAM,MAAM,GAAG;IACX,OAAO,EAAE,EAAuB;IAEhC,IAAI,EAAE;QACF,IAAI,EAAE,oBAAoB;KAC7B;IAED,KAAK;CACR,CAAC;AAEF,MAAM,WAAW,GAEb;IACA,wBAAwB,EAAE,OAAO;IACjC,oCAAoC,EAAE,OAAO;IAC7C,sBAAsB,EAAE,MAAM;IAC9B,+BAA+B,EAAE,OAAO;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;IAC1B,kBAAkB,EAAE;QAChB,OAAO,EAAE;YACL,IAAI,EAAE,MAAM;SACf;QACD,KAAK,EAAE,WAAW;KACrB;IACD,WAAW,EAAE;QACT,OAAO,EAAE,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,WAAW;KACrB;CACJ,CAAC,CAAC;AAEH,iBAAS,MAAM,CAAC"}
|
package/dist/rules/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * as BooleanNamingConvention from "./boolean-naming-convention";
|
|
2
2
|
export * as NoHandlerSuffix from "./no-handler-suffix";
|
|
3
3
|
export * as NoObjectsInDeps from "./no-objects-in-deps";
|
|
4
|
+
export * as NoOptionalCallExpression from "./no-optional-call-expression";
|
|
4
5
|
export * as ParamsNamingConvention from "./params-naming-convention";
|
|
5
6
|
export * as PreferArrowFunctions from "./prefer-arrow-functions";
|
|
6
7
|
export * as PreferExportUnderComponent from "./prefer-export-under-component";
|
package/dist/rules/index.js
CHANGED
|
@@ -33,10 +33,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.RestrictImports = exports.RestrictFunctionUsage = exports.RestrictConsoleMethods = exports.PreferVoidForOptionalParam = exports.PreferReactWithHooks = exports.PreferReactFc = exports.PreferExportUnderComponent = exports.PreferArrowFunctions = exports.ParamsNamingConvention = exports.NoObjectsInDeps = exports.NoHandlerSuffix = exports.BooleanNamingConvention = void 0;
|
|
36
|
+
exports.RestrictImports = exports.RestrictFunctionUsage = exports.RestrictConsoleMethods = exports.PreferVoidForOptionalParam = exports.PreferReactWithHooks = exports.PreferReactFc = exports.PreferExportUnderComponent = exports.PreferArrowFunctions = exports.ParamsNamingConvention = exports.NoOptionalCallExpression = exports.NoObjectsInDeps = exports.NoHandlerSuffix = exports.BooleanNamingConvention = void 0;
|
|
37
37
|
exports.BooleanNamingConvention = __importStar(require("./boolean-naming-convention"));
|
|
38
38
|
exports.NoHandlerSuffix = __importStar(require("./no-handler-suffix"));
|
|
39
39
|
exports.NoObjectsInDeps = __importStar(require("./no-objects-in-deps"));
|
|
40
|
+
exports.NoOptionalCallExpression = __importStar(require("./no-optional-call-expression"));
|
|
40
41
|
exports.ParamsNamingConvention = __importStar(require("./params-naming-convention"));
|
|
41
42
|
exports.PreferArrowFunctions = __importStar(require("./prefer-arrow-functions"));
|
|
42
43
|
exports.PreferExportUnderComponent = __importStar(require("./prefer-export-under-component"));
|
package/dist/rules/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uFAAuE;AACvE,uEAAuD;AACvD,wEAAwD;AACxD,qFAAqE;AACrE,iFAAiE;AACjE,8FAA8E;AAC9E,mEAAmD;AACnD,kFAAkE;AAClE,+FAA+E;AAC/E,qFAAqE;AACrE,mFAAmE;AACnE,sEAAsD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uFAAuE;AACvE,uEAAuD;AACvD,wEAAwD;AACxD,0FAA0E;AAC1E,qFAAqE;AACrE,iFAAiE;AACjE,8FAA8E;AAC9E,mEAAmD;AACnD,kFAAkE;AAClE,+FAA+E;AAC/E,qFAAqE;AACrE,mFAAmE;AACnE,sEAAsD"}
|
|
@@ -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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"}
|