@darraghor/eslint-plugin-nestjs-typed 3.22.1 → 3.22.3
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/paramDecoratorNameMatchesRouteParam/paramDecoratorNameMatchesRouteParam.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.shouldTrigger = exports.isParameterNameIncludedInAPathPart = exports.hasPathPartsAnyRegexParams = exports.parsePathParts = void 0;
|
|
4
|
+
/* eslint-disable unicorn/prevent-abbreviations */
|
|
5
|
+
const utils_1 = require("@typescript-eslint/utils");
|
|
4
6
|
const createRule_1 = require("../../utils/createRule");
|
|
5
7
|
const nestRequestMethodDecoratorNames = new Set([
|
|
6
8
|
"Get",
|
|
@@ -15,13 +17,17 @@ const nestRequestMethodDecoratorNames = new Set([
|
|
|
15
17
|
const parsePathParts = (decorator) => {
|
|
16
18
|
var _a;
|
|
17
19
|
const decoratorArgument = (_a = decorator === null || decorator === void 0 ? void 0 : decorator.expression) === null || _a === void 0 ? void 0 : _a.arguments[0];
|
|
18
|
-
if ((decoratorArgument === null || decoratorArgument === void 0 ? void 0 : decoratorArgument.type) ===
|
|
20
|
+
if ((decoratorArgument === null || decoratorArgument === void 0 ? void 0 : decoratorArgument.type) === utils_1.TSESTree.AST_NODE_TYPES.TemplateLiteral ||
|
|
21
|
+
(decoratorArgument === null || decoratorArgument === void 0 ? void 0 : decoratorArgument.type) === utils_1.TSESTree.AST_NODE_TYPES.Identifier) {
|
|
22
|
+
return ["dareslint__skip"];
|
|
23
|
+
}
|
|
24
|
+
if ((decoratorArgument === null || decoratorArgument === void 0 ? void 0 : decoratorArgument.type) === utils_1.TSESTree.AST_NODE_TYPES.Literal) {
|
|
19
25
|
return [decoratorArgument.raw];
|
|
20
26
|
}
|
|
21
|
-
if ((decoratorArgument === null || decoratorArgument === void 0 ? void 0 : decoratorArgument.type) ===
|
|
27
|
+
if ((decoratorArgument === null || decoratorArgument === void 0 ? void 0 : decoratorArgument.type) === utils_1.TSESTree.AST_NODE_TYPES.ArrayExpression) {
|
|
22
28
|
return decoratorArgument.elements.map((x) => x.raw);
|
|
23
29
|
}
|
|
24
|
-
if ((decoratorArgument === null || decoratorArgument === void 0 ? void 0 : decoratorArgument.type) ===
|
|
30
|
+
if ((decoratorArgument === null || decoratorArgument === void 0 ? void 0 : decoratorArgument.type) === utils_1.TSESTree.AST_NODE_TYPES.ObjectExpression) {
|
|
25
31
|
return decoratorArgument.properties
|
|
26
32
|
.filter((x) => {
|
|
27
33
|
var _a;
|
|
@@ -39,7 +45,7 @@ exports.parsePathParts = parsePathParts;
|
|
|
39
45
|
const hasPathPartsAnyRegexParams = (pathPartsToCheck) => {
|
|
40
46
|
// prettier-ignore
|
|
41
47
|
// eslint-disable-next-line no-useless-escape
|
|
42
|
-
const specialCharacterRegex = new RegExp("([\?\+\*\_\(\)])")
|
|
48
|
+
const specialCharacterRegex = /(dareslint__skip|\*|\+|\?|\(|\)|_)/; //new RegExp("([\?\+\*\_\(\)])")
|
|
43
49
|
return pathPartsToCheck.some((pathPart) => {
|
|
44
50
|
return specialCharacterRegex.test(pathPart);
|
|
45
51
|
});
|
|
@@ -105,7 +111,10 @@ const shouldTrigger = (decorator) => {
|
|
|
105
111
|
.callee) === null || _a === void 0 ? void 0 : _a.name);
|
|
106
112
|
});
|
|
107
113
|
pathPartsToCheck = pathPartsToCheck.concat((0, exports.parsePathParts)(methodDecorator));
|
|
108
|
-
const shouldIgnoreThisSetOfRoutes =
|
|
114
|
+
const shouldIgnoreThisSetOfRoutes =
|
|
115
|
+
// is a template literal argument
|
|
116
|
+
// is an identifier argument
|
|
117
|
+
(0, exports.hasPathPartsAnyRegexParams)(pathPartsToCheck);
|
|
109
118
|
if (shouldIgnoreThisSetOfRoutes) {
|
|
110
119
|
return {
|
|
111
120
|
hasColonInName: false,
|
|
@@ -163,4 +172,4 @@ const rule = (0, createRule_1.createRule)({
|
|
|
163
172
|
},
|
|
164
173
|
});
|
|
165
174
|
exports.default = rule;
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1EZWNvcmF0b3JOYW1lTWF0Y2hlc1JvdXRlUGFyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMvcGFyYW1EZWNvcmF0b3JOYW1lTWF0Y2hlc1JvdXRlUGFyYW0vcGFyYW1EZWNvcmF0b3JOYW1lTWF0Y2hlc1JvdXRlUGFyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQWtEO0FBQ2xELG9EQUE0RDtBQUM1RCx1REFBa0Q7QUFPbEQsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUM1QyxLQUFLO0lBQ0wsTUFBTTtJQUNOLEtBQUs7SUFDTCxRQUFRO0lBQ1IsT0FBTztJQUNQLFNBQVM7SUFDVCxNQUFNO0lBQ04sS0FBSztDQUNSLENBQUMsQ0FBQztBQUVJLE1BQU0sY0FBYyxHQUFHLENBQUMsU0FBNkIsRUFBWSxFQUFFOztJQUN0RSxNQUFNLGlCQUFpQixHQUFHLE1BQUMsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLFVBQXNDLDBDQUN0RSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbkIsSUFDSSxDQUFBLGlCQUFpQixhQUFqQixpQkFBaUIsdUJBQWpCLGlCQUFpQixDQUFFLElBQUksTUFBSyxnQkFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlO1FBQ25FLENBQUEsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsSUFBSSxNQUFLLGdCQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFDaEU7UUFDRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQUM5QjtJQUVELElBQUksQ0FBQSxpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxJQUFJLE1BQUssZ0JBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO1FBQzdELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNsQztJQUNELElBQUksQ0FB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
|
|
@@ -6,19 +6,21 @@ const createRule_1 = require("../../utils/createRule");
|
|
|
6
6
|
//import util from "util";
|
|
7
7
|
const nestProviderAstParser_1 = require("../../utils/nestModules/nestProviderAstParser");
|
|
8
8
|
const hasMismatchedInjected = (node) => {
|
|
9
|
-
var _a, _b, _c, _d, _e, _f;
|
|
9
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
10
10
|
// should be a nest provider - note this doesn't check the Provider used is an import actually from nest. Assumes nest Provider. Will change if this is annoying:)
|
|
11
11
|
const isNestProvider = ((_c = (_b = (_a = node.id.typeAnnotation) === null || _a === void 0 ? void 0 : _a.typeAnnotation
|
|
12
12
|
// prettier-ignore
|
|
13
13
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
-
) === null || _b === void 0 ? void 0 : _b.typeName) === null || _c === void 0 ? void 0 : _c.name) === "Provider"
|
|
14
|
+
) === null || _b === void 0 ? void 0 : _b.typeName) === null || _c === void 0 ? void 0 : _c.name) === "Provider" &&
|
|
15
|
+
// and there is a useFactory property in the declaration
|
|
16
|
+
nestProviderAstParser_1.nestProviderAstParser.findProvideProperty(node, "useFactory");
|
|
15
17
|
if (!isNestProvider) {
|
|
16
18
|
return false;
|
|
17
19
|
}
|
|
18
20
|
// count number of factory params
|
|
19
|
-
const factoryParameterCount = (_e = (
|
|
21
|
+
const factoryParameterCount = (_f = (_e = (_d = nestProviderAstParser_1.nestProviderAstParser.findProvideProperty(node, "useFactory")) === null || _d === void 0 ? void 0 : _d.value) === null || _e === void 0 ? void 0 : _e.params) === null || _f === void 0 ? void 0 : _f.length;
|
|
20
22
|
// Count number of injected params
|
|
21
|
-
const injectedParameter = (
|
|
23
|
+
const injectedParameter = (_g = nestProviderAstParser_1.nestProviderAstParser.findProvideProperty(node, "inject")) === null || _g === void 0 ? void 0 : _g.value;
|
|
22
24
|
const injectedParameterCount = injectedParameter
|
|
23
25
|
? injectedParameter.elements.length
|
|
24
26
|
: 0;
|
|
@@ -56,4 +58,4 @@ const rule = (0, createRule_1.createRule)({
|
|
|
56
58
|
},
|
|
57
59
|
});
|
|
58
60
|
exports.default = rule;
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvdmlkZXJJbmplY3RlZFNob3VsZE1hdGNoRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydWxlcy9wcm92aWRlckluamVjdGVkU2hvdWxkTWF0Y2hGYWN0b3J5L1Byb3ZpZGVySW5qZWN0ZWRTaG91bGRNYXRjaEZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsdURBQWtEO0FBQ2xELGdEQUFnRDtBQUNoRCwwQkFBMEI7QUFDMUIseUZBQW9GO0FBRTdFLE1BQU0scUJBQXFCLEdBQUcsQ0FDakMsSUFBaUMsRUFDMUIsRUFBRTs7SUFDVCxrS0FBa0s7SUFDbEssTUFBTSxjQUFjLEdBQ2hCLENBQUEsTUFDSSxNQUNBLE1BQUEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLDBDQUNoQixjQUEwQztJQUN0RCxrQkFBa0I7SUFDbEIsOERBQThEO0lBQzNELDBDQUFFLFFBQ0YsMENBQUUsSUFBSSxNQUFLLFVBQVU7UUFDdEIsd0RBQXdEO1FBQ3hELDZDQUFxQixDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUVsRSxJQUFJLENBQUMsY0FBYyxFQUFFO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBRUQsaUNBQWlDO0lBQ2pDLE1BQU0scUJBQXFCLEdBQUcsTUFBQSxNQUMxQixNQUFBLDZDQUFxQixDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsMENBQ3ZELEtBQ1QsMENBQUUsTUFBTSwwQ0FBRSxNQUFNLENBQUM7SUFFbEIsa0NBQWtDO0lBQ2xDLE1BQU0saUJBQWlCLEdBQUcsTUFBQSw2Q0FBcUIsQ0FBQyxtQkFBbUIsQ0FDL0QsSUFBSSxFQUNKLFFBQVEsQ0FDWCwwQ0FBRSxLQUE0QyxDQUFDO0lBRWhELE1BQU0sc0JBQXNCLEdBQUcsaUJBQWlCO1FBQzVDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTTtRQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRVIsdUJBQXVCO0lBQ3ZCLE9BQU8sc0JBQXNCLEtBQUsscUJBQXFCLENBQUM7QUFDNUQsQ0FBQyxDQUFDO0FBdENXLFFBQUEscUJBQXFCLHlCQXNDaEM7QUFFRixNQUFNLElBQUksR0FBRyxJQUFBLHVCQUFVLEVBQUM7SUFDcEIsSUFBSSxFQUFFLG1EQUFtRDtJQUN6RCxJQUFJLEVBQUU7UUFDRixJQUFJLEVBQUU7WUFDRixXQUFXLEVBQ1AsbUdBQW1HO1lBQ3ZHLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLG9CQUFvQixFQUFFLEtBQUs7U0FDOUI7UUFDRCxRQUFRLEVBQUU7WUFDTixXQUFXLEVBQUUsMEZBQTBGO1NBQzFHO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsU0FBUztLQUNsQjtJQUNELGNBQWMsRUFBRSxFQUFFO0lBRWxCLE1BQU0sQ0FBQyxPQUErRDtRQUNsRSxPQUFPO1lBQ0gsZ0VBQWdFO1lBQ2hFLGtCQUFrQixDQUFDLElBQWlDO2dCQUNoRCxJQUFJLElBQUEsNkJBQXFCLEVBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzdCLE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ1gsSUFBSSxFQUFFLElBQUk7d0JBQ1YsU0FBUyxFQUFFLGFBQWE7cUJBQzNCLENBQUMsQ0FBQztpQkFDTjtZQUNMLENBQUM7U0FDSixDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUMsQ0FBQztBQUVILGtCQUFlLElBQUksQ0FBQyJ9
|