@darraghor/eslint-plugin-nestjs-typed 6.0.0-rc.9 → 6.1.0-rc.1
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/README.md +58 -16
- package/dist/configs/base.d.ts +1 -1
- package/dist/configs/base.js +3 -4
- package/dist/configs/noSwagger.d.ts +2 -1
- package/dist/configs/noSwagger.js +3 -4
- package/dist/configs/recommended.d.ts +2 -1
- package/dist/configs/recommended.js +3 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +25 -57
- package/dist/rules/allPropertiesAreWhitelisted/allPropertiesAreWhitelisted.js +11 -13
- package/dist/rules/allPropertiesHaveExplicitDefined/allPropertiesHaveExplicitDefined.js +15 -17
- package/dist/rules/apiEnumPropertyBestPractices/apiEnumPropertyBestPractices.d.ts +1 -1
- package/dist/rules/apiEnumPropertyBestPractices/apiEnumPropertyBestPractices.js +17 -22
- package/dist/rules/apiEnumPropertyBestPractices/enumTestResultModel.js +2 -6
- package/dist/rules/apiMethodsShouldBeGuarded/apiMethodsShouldBeGuarded.js +12 -16
- package/dist/rules/apiMethodsShouldSpecifyApiOperation/apiMethodsShouldSpecifyApiOperation.js +9 -13
- package/dist/rules/apiMethodsShouldSpecifyApiResponse/apiMethodsShouldSpecifyApiResponse.js +9 -13
- package/dist/rules/apiPropertyMatchesPropertyOptionality/apiPropertyMatchesPropertyOptionality.js +13 -18
- package/dist/rules/apiPropertyReturningArrayShouldSetArray/apiPropertyReturningArrayShouldSetArray.d.ts +1 -1
- package/dist/rules/apiPropertyReturningArrayShouldSetArray/apiPropertyReturningArrayShouldSetArray.js +17 -24
- package/dist/rules/apiPropertyReturningArrayShouldSetArray/arraySetResultModel.js +2 -5
- package/dist/rules/controllerDecoratedHasApiTags/controllerDecoratedHasApiTags.js +9 -13
- package/dist/rules/index.d.ts +3 -3
- package/dist/rules/index.js +36 -41
- package/dist/rules/injectablesShouldBeProvided/injectableShouldBeProvided.js +32 -24
- package/dist/rules/noDuplicateDecorators/noDuplicateDecorators.js +10 -14
- package/dist/rules/paramDecoratorNameMatchesRouteParam/paramDecoratorNameMatchesRouteParam.js +19 -26
- package/dist/rules/paramDecoratorNameMatchesRouteParam/rule.testData.js +3 -6
- package/dist/rules/providerInjectedShouldMatchFactory/ProviderInjectedShouldMatchFactory.js +12 -18
- package/dist/rules/shouldSpecifyForbidUnknownValues/shouldSpecifyForbidUnknownValuesRule.js +20 -27
- package/dist/rules/sortModuleMetadataArrays/sortModuleMetadataArrays.js +18 -23
- package/dist/rules/validateNestedOfArrayShouldSetEach/arraySetResultModel.js +2 -5
- package/dist/rules/validateNestedOfArrayShouldSetEach/validateNestedOfArrayShouldSetEach.d.ts +1 -1
- package/dist/rules/validateNestedOfArrayShouldSetEach/validateNestedOfArrayShouldSetEach.js +14 -21
- package/dist/rules/validateNonPrimitiveNeedsTypeDecorator/validateNonPrimitiveNeedsDecorators.js +29 -33
- package/dist/testing/fixtureSetup.js +4 -10
- package/dist/testing/preRun.js +2 -4
- package/dist/utils/ast.js +4 -7
- package/dist/utils/createRule.js +3 -6
- package/dist/utils/files/customFileEnumeratorWrapper.js +9 -16
- package/dist/utils/files/isFilteredPath.js +2 -4
- package/dist/utils/nestModules/models/NestProvidedInjectablesMap.d.ts +1 -0
- package/dist/utils/nestModules/models/NestProvidedInjectablesMap.js +2 -6
- package/dist/utils/nestModules/nestModuleAstParser.d.ts +2 -2
- package/dist/utils/nestModules/nestModuleAstParser.js +10 -13
- package/dist/utils/nestModules/nestProvidedInjectableMapper.d.ts +4 -4
- package/dist/utils/nestModules/nestProvidedInjectableMapper.js +24 -58
- package/dist/utils/nestModules/nestProvidedInjectableMapper.testData.d.ts +1 -1
- package/dist/utils/nestModules/nestProvidedInjectableMapper.testData.js +9 -12
- package/dist/utils/nestModules/nestProviderAstParser.d.ts +2 -2
- package/dist/utils/nestModules/nestProviderAstParser.js +13 -16
- package/dist/utils/typedTokenHelpers.js +25 -64
- package/dist/utils/wellKnownSelectors.js +2 -5
- package/package.json +4 -3
- package/dist/configs/index.d.ts +0 -11
- package/dist/configs/index.js +0 -13
|
@@ -1,41 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const createRule_1 = require("../../utils/createRule");
|
|
6
|
-
const wellKnownSelectors_1 = require("../../utils/wellKnownSelectors");
|
|
7
|
-
const utils_2 = require("@typescript-eslint/utils");
|
|
1
|
+
import { TSESTree } from "@typescript-eslint/utils";
|
|
2
|
+
import { createRule } from "../../utils/createRule.js";
|
|
3
|
+
import { MODULE_CLASS_DECORATOR } from "../../utils/wellKnownSelectors.js";
|
|
4
|
+
import { ASTUtils } from "@typescript-eslint/utils";
|
|
8
5
|
// Inspired by https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/src/rules/sort-ngmodule-metadata-arrays.ts
|
|
9
6
|
const DEFAULT_LOCALE = "en-US";
|
|
10
|
-
const isValidModuleMetaPropertyType = (node) => {
|
|
7
|
+
export const isValidModuleMetaPropertyType = (node) => {
|
|
11
8
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
12
9
|
return (!!node &&
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
ASTUtils.isNodeOfTypes([
|
|
11
|
+
TSESTree.AST_NODE_TYPES.Identifier,
|
|
12
|
+
TSESTree.AST_NODE_TYPES.CallExpression,
|
|
16
13
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
14
|
])); // unsure about this type
|
|
18
15
|
};
|
|
19
|
-
|
|
20
|
-
const getRelevantNodeName = (node) => {
|
|
16
|
+
export const getRelevantNodeName = (node) => {
|
|
21
17
|
let currentName = "";
|
|
22
|
-
if (node.type ===
|
|
18
|
+
if (node.type === TSESTree.AST_NODE_TYPES.Identifier) {
|
|
23
19
|
currentName = node.name;
|
|
24
20
|
}
|
|
25
|
-
if (node.type ===
|
|
26
|
-
node.callee.type ===
|
|
27
|
-
node.callee.object.type ===
|
|
21
|
+
if (node.type === TSESTree.AST_NODE_TYPES.CallExpression &&
|
|
22
|
+
node.callee.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
|
|
23
|
+
node.callee.object.type === TSESTree.AST_NODE_TYPES.Identifier) {
|
|
28
24
|
currentName = node.callee.object.name;
|
|
29
25
|
}
|
|
30
26
|
return currentName;
|
|
31
27
|
};
|
|
32
|
-
exports.getRelevantNodeName = getRelevantNodeName;
|
|
33
28
|
const defaultLocaleOptions = [
|
|
34
29
|
{
|
|
35
30
|
locale: DEFAULT_LOCALE,
|
|
36
31
|
},
|
|
37
32
|
];
|
|
38
|
-
|
|
33
|
+
export default createRule({
|
|
39
34
|
name: "sort-module-metadata-arrays",
|
|
40
35
|
meta: {
|
|
41
36
|
type: "suggestion",
|
|
@@ -72,16 +67,16 @@ exports.default = (0, createRule_1.createRule)({
|
|
|
72
67
|
const { locale } = context.options[0];
|
|
73
68
|
const sourceCode = context.sourceCode;
|
|
74
69
|
return {
|
|
75
|
-
[`${
|
|
70
|
+
[`${MODULE_CLASS_DECORATOR} Property > ArrayExpression`]({ elements, }) {
|
|
76
71
|
const unorderedNodes = elements
|
|
77
72
|
// nestjs modules use identifiers and call expressions
|
|
78
73
|
// can modify this later
|
|
79
|
-
.filter(
|
|
74
|
+
.filter(isValidModuleMetaPropertyType)
|
|
80
75
|
.map((current, index, list) => [current, list[index + 1]])
|
|
81
76
|
.find(([current, next]) => {
|
|
82
77
|
return (current &&
|
|
83
78
|
next &&
|
|
84
|
-
|
|
79
|
+
getRelevantNodeName(current).localeCompare(getRelevantNodeName(next), locale) === 1);
|
|
85
80
|
});
|
|
86
81
|
if (!unorderedNodes)
|
|
87
82
|
return;
|
|
@@ -98,4 +93,4 @@ exports.default = (0, createRule_1.createRule)({
|
|
|
98
93
|
};
|
|
99
94
|
},
|
|
100
95
|
});
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydE1vZHVsZU1ldGFkYXRhQXJyYXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3J1bGVzL3NvcnRNb2R1bGVNZXRhZGF0YUFycmF5cy9zb3J0TW9kdWxlTWV0YWRhdGFBcnJheXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbEQsMklBQTJJO0FBRTNJLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQVkvQixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUN6QyxJQUF5RCxFQUM3QixFQUFFO0lBQzlCLCtEQUErRDtJQUMvRCxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7UUFDVixRQUFRLENBQUMsYUFBYSxDQUFDO1lBQ25CLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVTtZQUNsQyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWM7WUFDdEMsOERBQThEO1NBQ2pFLENBQUMsQ0FBUSxDQUFDLENBQUMseUJBQXlCO0FBQzdDLENBQUMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBbUIsRUFBRSxFQUFFO0lBQ3ZELElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUVyQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuRCxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFDSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYztRQUNwRCxJ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
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class ArraySetResultModel {
|
|
1
|
+
export default class ArraySetResultModel {
|
|
4
2
|
constructor(isArrayShouldBeSetTrue, isArrayShouldBeSetFalse) {
|
|
5
3
|
this.isArrayShouldBeSetTrue = isArrayShouldBeSetTrue;
|
|
6
4
|
this.isArrayShouldBeSetFalse = isArrayShouldBeSetFalse;
|
|
7
5
|
}
|
|
8
6
|
}
|
|
9
|
-
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlTZXRSZXN1bHRNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydWxlcy92YWxpZGF0ZU5lc3RlZE9mQXJyYXlTaG91bGRTZXRFYWNoL2FycmF5U2V0UmVzdWx0TW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFxQixtQkFBbUI7SUFDcEMsWUFDVyxzQkFBK0IsRUFDL0IsdUJBQWdDO1FBRGhDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBUztRQUMvQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQVM7SUFDeEMsQ0FBQztDQUNQO0FBTEQsc0NBS0MifQ==
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlTZXRSZXN1bHRNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydWxlcy92YWxpZGF0ZU5lc3RlZE9mQXJyYXlTaG91bGRTZXRFYWNoL2FycmF5U2V0UmVzdWx0TW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE9BQU8sT0FBTyxtQkFBbUI7SUFDcEMsWUFDVyxzQkFBK0IsRUFDL0IsdUJBQWdDO1FBRGhDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBUztRQUMvQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQVM7SUFDeEMsQ0FBQztDQUNQIn0=
|
package/dist/rules/validateNestedOfArrayShouldSetEach/validateNestedOfArrayShouldSetEach.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TSESTree } from "@typescript-eslint/utils";
|
|
2
|
-
import ArraySetResultModel from "./arraySetResultModel";
|
|
2
|
+
import ArraySetResultModel from "./arraySetResultModel.js";
|
|
3
3
|
export declare const shouldSetArrayProperty: (node: TSESTree.PropertyDefinition) => ArraySetResultModel;
|
|
4
4
|
declare const rule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"shouldSetEachPropertyTrue" | "shouldSetEachPropertyFalse", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
5
|
export default rule;
|
|
@@ -1,31 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const utils_1 = require("@typescript-eslint/utils");
|
|
8
|
-
const createRule_1 = require("../../utils/createRule");
|
|
9
|
-
const typedTokenHelpers_1 = require("../../utils/typedTokenHelpers");
|
|
10
|
-
const arraySetResultModel_1 = __importDefault(require("./arraySetResultModel"));
|
|
11
|
-
const shouldSetArrayProperty = (node) => {
|
|
12
|
-
const decorators = typedTokenHelpers_1.typedTokenHelpers.getDecoratorsNamed(node, [
|
|
1
|
+
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
2
|
+
import { createRule } from "../../utils/createRule.js";
|
|
3
|
+
import { typedTokenHelpers } from "../../utils/typedTokenHelpers.js";
|
|
4
|
+
import ArraySetResultModel from "./arraySetResultModel.js";
|
|
5
|
+
export const shouldSetArrayProperty = (node) => {
|
|
6
|
+
const decorators = typedTokenHelpers.getDecoratorsNamed(node, [
|
|
13
7
|
"ValidateNested",
|
|
14
8
|
]);
|
|
15
9
|
if (decorators.length === 0) {
|
|
16
|
-
return new
|
|
10
|
+
return new ArraySetResultModel(false, false);
|
|
17
11
|
}
|
|
18
12
|
const firstArgumentToDecorator = decorators[0].expression.arguments[0];
|
|
19
|
-
const hasEachSetInOptions =
|
|
13
|
+
const hasEachSetInOptions = typedTokenHelpers.getPropertyValueEqualsExpected(firstArgumentToDecorator, "each", true);
|
|
20
14
|
// handle string[] or Array<string>
|
|
21
15
|
const isArrayType = (node.typeAnnotation?.typeAnnotation)
|
|
22
16
|
.typeName?.name === "Array";
|
|
23
|
-
const isTypescriptArrayType = node.typeAnnotation?.typeAnnotation.type ===
|
|
17
|
+
const isTypescriptArrayType = node.typeAnnotation?.typeAnnotation.type === AST_NODE_TYPES.TSArrayType;
|
|
24
18
|
const isAnArrayLikeType = isArrayType || isTypescriptArrayType;
|
|
25
|
-
return new
|
|
19
|
+
return new ArraySetResultModel(isAnArrayLikeType && !hasEachSetInOptions, !isAnArrayLikeType && hasEachSetInOptions);
|
|
26
20
|
};
|
|
27
|
-
|
|
28
|
-
const rule = (0, createRule_1.createRule)({
|
|
21
|
+
const rule = createRule({
|
|
29
22
|
name: "validate-nested-of-array-should-set-each",
|
|
30
23
|
meta: {
|
|
31
24
|
docs: {
|
|
@@ -43,7 +36,7 @@ const rule = (0, createRule_1.createRule)({
|
|
|
43
36
|
create(context) {
|
|
44
37
|
return {
|
|
45
38
|
PropertyDefinition: (node) => {
|
|
46
|
-
const shouldSetArrayResults =
|
|
39
|
+
const shouldSetArrayResults = shouldSetArrayProperty(node);
|
|
47
40
|
if (shouldSetArrayResults.isArrayShouldBeSetFalse) {
|
|
48
41
|
context.report({
|
|
49
42
|
node: node,
|
|
@@ -60,5 +53,5 @@ const rule = (0, createRule_1.createRule)({
|
|
|
60
53
|
};
|
|
61
54
|
},
|
|
62
55
|
});
|
|
63
|
-
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
export default rule;
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVOZXN0ZWRPZkFycmF5U2hvdWxkU2V0RWFjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydWxlcy92YWxpZGF0ZU5lc3RlZE9mQXJyYXlTaG91bGRTZXRFYWNoL3ZhbGlkYXRlTmVzdGVkT2ZBcnJheVNob3VsZFNldEVhY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBVyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLG1CQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQ2xDLElBQWlDLEVBQ2QsRUFBRTtJQUNyQixNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7UUFDMUQsZ0JBQWdCO0tBQ25CLENBQUMsQ0FBQztJQUVILElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksbUJBQW1CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxNQUFNLHdCQUF3QixHQUMxQixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFDakIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUE4QixDQUFDO0lBRTVDLE1BQU0sbUJBQW1CLEdBQ3JCLGlCQUFpQixDQUFDLDhCQUE4QixDQUM1Qyx3QkFBd0IsRUFDeEIsTUFBTSxFQUNOLElBQUksQ0FDUCxDQUFDO0lBQ04sbUNBQW1DO0lBQ25DLE1BQU0sV0FBVyxHQUVULENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxjQUEyQyxDQUFBO1NBQzVELFFBQ1IsRUFBRSxJQUFJLEtBQUssT0FBTyxDQUFDO0lBQ3hCLE1BQU0scUJBQXFCLEdBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsV0FBVyxDQUFDO0lBQzVFLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxJQUFJLHFCQUFxQixDQUFDO0lBRS9ELE9BQU8sSUFBSSxtQkFBbUIsQ0FDMUIsaUJBQWlCLElBQUksQ0FBQyxtQkFBbUIsRUFDekMsQ0FBQyxpQkFBaUIsSUFBSSxtQkFBbUIsQ0FDNUMsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FHckI7SUFDRSxJQUFJLEVBQUUsMENBQTBDO0lBQ2hELElBQUksRUFBRTtRQUNGLElBQUksRUFBRTtZQUNGLFdBQVcsRUFDUCxxRkFBcUY7U0FDNUY7UUFDRCxRQUFRLEVBQUU7WUFDTix5QkFBeUIsRUFBRSwrREFBK0Q7WUFDMUYsMEJBQTBCLEVBQUUsa0xBQWtMO1NBQ2pOO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixjQUFjLEVBQUUsS0FBSztRQUNyQixJQUFJLEVBQUUsWUFBWTtLQUNyQjtJQUNELGNBQWMsRUFBRSxFQUFFO0lBRWxCLE1BQU0sQ0FBQyxPQUFPO1FBQ1YsT0FBTztZQUNILGtCQUFrQixFQUFFLENBQUMsSUFBbUIsRUFBRSxFQUFFO2dCQUN4QyxNQUFNLHFCQUFxQixHQUFHLHNCQUFzQixDQUNoRCxJQUFtQyxDQUN0QyxDQUFDO2dCQUVGLElBQUkscUJBQXFCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztvQkFDaEQsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDWCxJQUFJLEVBQUUsSUFBSTt3QkFDVixTQUFTLEVBQUUsNEJBQTRCO3FCQUMxQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztnQkFDRCxJQUFJLHFCQUFxQixDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQy9DLE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ1gsSUFBSSxFQUFFLElBQUk7d0JBQ1YsU0FBUyxFQUFFLDJCQUEyQjtxQkFDekMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO1NBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDLENBQUM7QUFFSCxlQUFlLElBQUksQ0FBQyJ9
|
package/dist/rules/validateNonPrimitiveNeedsTypeDecorator/validateNonPrimitiveNeedsDecorators.js
CHANGED
|
@@ -1,25 +1,21 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.shouldTrigger = void 0;
|
|
4
1
|
/* eslint-disable unicorn/prevent-abbreviations */
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
|
|
3
|
+
import { createRule } from "../../utils/createRule.js";
|
|
4
|
+
import { typedTokenHelpers } from "../../utils/typedTokenHelpers.js";
|
|
8
5
|
const primitiveTypes = new Set([
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
AST_NODE_TYPES.TSStringKeyword,
|
|
7
|
+
AST_NODE_TYPES.TSBooleanKeyword,
|
|
8
|
+
AST_NODE_TYPES.TSNumberKeyword,
|
|
9
|
+
AST_NODE_TYPES.TSLiteralType,
|
|
10
|
+
AST_NODE_TYPES.TSNullKeyword,
|
|
11
|
+
AST_NODE_TYPES.TSUnknownKeyword,
|
|
12
|
+
AST_NODE_TYPES.TSAnyKeyword,
|
|
13
|
+
AST_NODE_TYPES.TSObjectKeyword,
|
|
17
14
|
]);
|
|
18
|
-
const shouldTrigger = () => {
|
|
15
|
+
export const shouldTrigger = () => {
|
|
19
16
|
return true;
|
|
20
17
|
};
|
|
21
|
-
|
|
22
|
-
const rule = (0, createRule_1.createRule)({
|
|
18
|
+
const rule = createRule({
|
|
23
19
|
name: "validated-non-primitive-property-needs-type-decorator",
|
|
24
20
|
meta: {
|
|
25
21
|
docs: {
|
|
@@ -68,13 +64,13 @@ const rule = (0, createRule_1.createRule)({
|
|
|
68
64
|
additionalTypeDecorators: [],
|
|
69
65
|
additionalCustomValidatorDecorators: [],
|
|
70
66
|
};
|
|
71
|
-
const parserServices =
|
|
67
|
+
const parserServices = ESLintUtils.getParserServices(context);
|
|
72
68
|
const typeChecker = parserServices.program.getTypeChecker();
|
|
73
69
|
return {
|
|
74
70
|
PropertyDefinition(node) {
|
|
75
71
|
// if it's an array get the element type
|
|
76
72
|
let mainType;
|
|
77
|
-
const isAnArray =
|
|
73
|
+
const isAnArray = typedTokenHelpers.isTypeArrayTypeOrUnionOfArrayTypes(node, parserServices, typeChecker);
|
|
78
74
|
// this is getting very messy
|
|
79
75
|
if (isAnArray) {
|
|
80
76
|
const mainTypeInShortArray = (node.typeAnnotation
|
|
@@ -103,7 +99,7 @@ const rule = (0, createRule_1.createRule)({
|
|
|
103
99
|
return;
|
|
104
100
|
}
|
|
105
101
|
// property is a union with primitive type - no need to validate
|
|
106
|
-
const isNodeAUnionWithAPrimitive = mainType ===
|
|
102
|
+
const isNodeAUnionWithAPrimitive = mainType === AST_NODE_TYPES.TSUnionType &&
|
|
107
103
|
node.typeAnnotation
|
|
108
104
|
?.typeAnnotation?.types?.some((x) => primitiveTypes.has(x.type));
|
|
109
105
|
if (isNodeAUnionWithAPrimitive) {
|
|
@@ -112,7 +108,7 @@ const rule = (0, createRule_1.createRule)({
|
|
|
112
108
|
// if this is an enum we don't need a type decorator
|
|
113
109
|
const mappedNode = parserServices.esTreeNodeToTSNodeMap.get(node);
|
|
114
110
|
const objectType = typeChecker.getTypeAtLocation(mappedNode);
|
|
115
|
-
if (
|
|
111
|
+
if (typedTokenHelpers.isEnumType(objectType)) {
|
|
116
112
|
return;
|
|
117
113
|
}
|
|
118
114
|
// We have to make an assumption here. We assume that
|
|
@@ -120,12 +116,12 @@ const rule = (0, createRule_1.createRule)({
|
|
|
120
116
|
// And for input DTOs they should specify types.
|
|
121
117
|
// property has a validation decorator but not IsEnum
|
|
122
118
|
// (we don't care about un-validated properties and enums don't need Type())
|
|
123
|
-
const foundClassValidatorDecorators =
|
|
124
|
-
const hasEnum = foundClassValidatorDecorators.some((foundClassValidatorDecorator) =>
|
|
119
|
+
const foundClassValidatorDecorators = typedTokenHelpers.getValidationDecorators(node, additionalCustomValidatorDecorators);
|
|
120
|
+
const hasEnum = foundClassValidatorDecorators.some((foundClassValidatorDecorator) => typedTokenHelpers.decoratorIsIsEnum(foundClassValidatorDecorator));
|
|
125
121
|
if (hasEnum) {
|
|
126
122
|
return;
|
|
127
123
|
}
|
|
128
|
-
const hasObject = foundClassValidatorDecorators.some((foundClassValidatorDecorator) =>
|
|
124
|
+
const hasObject = foundClassValidatorDecorators.some((foundClassValidatorDecorator) => typedTokenHelpers.decoratorIsIsObject(foundClassValidatorDecorator));
|
|
129
125
|
if (hasObject) {
|
|
130
126
|
return;
|
|
131
127
|
}
|
|
@@ -142,15 +138,15 @@ const rule = (0, createRule_1.createRule)({
|
|
|
142
138
|
["Type"] //this is the default type decorator
|
|
143
139
|
);
|
|
144
140
|
// ok so does the property have Type decorator or custom type decorator? it probably should
|
|
145
|
-
const foundTypeDecorator =
|
|
141
|
+
const foundTypeDecorator = typedTokenHelpers.getDecoratorsNamed(node, typeDecorators);
|
|
146
142
|
if (foundTypeDecorator.length === 0) {
|
|
147
143
|
const typeAnnotationNode = node.typeAnnotation?.typeAnnotation;
|
|
148
144
|
let typeIdentifier;
|
|
149
145
|
if (typeAnnotationNode) {
|
|
150
146
|
if (typeAnnotationNode.type ===
|
|
151
|
-
|
|
147
|
+
AST_NODE_TYPES.TSTypeReference &&
|
|
152
148
|
typeAnnotationNode.typeName.type ===
|
|
153
|
-
|
|
149
|
+
AST_NODE_TYPES.Identifier) {
|
|
154
150
|
typeIdentifier = typeAnnotationNode.typeName.name;
|
|
155
151
|
if (typeAnnotationNode.typeName.name === "Array") {
|
|
156
152
|
const foundParams = (node.typeAnnotation
|
|
@@ -158,19 +154,19 @@ const rule = (0, createRule_1.createRule)({
|
|
|
158
154
|
if (foundParams && foundParams.length === 1) {
|
|
159
155
|
const typeName = foundParams[0].typeName;
|
|
160
156
|
if (typeName.type ===
|
|
161
|
-
|
|
157
|
+
AST_NODE_TYPES.Identifier) {
|
|
162
158
|
typeIdentifier = typeName.name;
|
|
163
159
|
}
|
|
164
160
|
}
|
|
165
161
|
}
|
|
166
162
|
}
|
|
167
163
|
else if (typeAnnotationNode.type ===
|
|
168
|
-
|
|
164
|
+
AST_NODE_TYPES.TSArrayType) {
|
|
169
165
|
const elementTypeNode = typeAnnotationNode.elementType;
|
|
170
166
|
if (elementTypeNode.type ===
|
|
171
|
-
|
|
167
|
+
AST_NODE_TYPES.TSTypeReference &&
|
|
172
168
|
elementTypeNode.typeName.type ===
|
|
173
|
-
|
|
169
|
+
AST_NODE_TYPES.Identifier) {
|
|
174
170
|
typeIdentifier = elementTypeNode.typeName.name;
|
|
175
171
|
}
|
|
176
172
|
}
|
|
@@ -201,5 +197,5 @@ const rule = (0, createRule_1.createRule)({
|
|
|
201
197
|
};
|
|
202
198
|
},
|
|
203
199
|
});
|
|
204
|
-
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
200
|
+
export default rule;
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVOb25QcmltaXRpdmVOZWVkc0RlY29yYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMvdmFsaWRhdGVOb25QcmltaXRpdmVOZWVkc1R5cGVEZWNvcmF0b3IvdmFsaWRhdGVOb25QcmltaXRpdmVOZWVkc0RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0RBQWtEO0FBQ2xELE9BQU8sRUFBQyxjQUFjLEVBQVksV0FBVyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDL0UsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBR25FLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDO0lBQzNCLGNBQWMsQ0FBQyxlQUFlO0lBQzlCLGNBQWMsQ0FBQyxnQkFBZ0I7SUFDL0IsY0FBYyxDQUFDLGVBQWU7SUFDOUIsY0FBYyxDQUFDLGFBQWE7SUFDNUIsY0FBYyxDQUFDLGFBQWE7SUFDNUIsY0FBYyxDQUFDLGdCQUFnQjtJQUMvQixjQUFjLENBQUMsWUFBWTtJQUMzQixjQUFjLENBQUMsZUFBZTtDQUNqQyxDQUFDLENBQUM7QUFPSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsR0FBWSxFQUFFO0lBQ3ZDLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FHckI7SUFDRSxJQUFJLEVBQUUsdURBQXVEO0lBQzdELElBQUksRUFBRTtRQUNGLElBQUksRUFBRTtZQUNGLFdBQVcsRUFDUCxnRkFBZ0Y7U0FDdkY7UUFDRCxRQUFRLEVBQUU7WUFDTix3QkFBd0IsRUFDcEIsd0VBQXdFO1lBQzVFLHNCQUFzQixFQUNsQiw4SkFBOEo7U0FDcks7UUFDRCxNQUFNLEVBQUU7WUFDSjtnQkFDSSxJQUFJLEVBQUUsUUFBK0I7Z0JBQ3JDLFVBQVUsRUFBRTtvQkFDUix3QkFBd0IsRUFBRTt3QkFDdEIsV0FBVyxFQUNQLHNFQUFzRTt3QkFDMUUsSUFBSSxFQUFFLE9BQThCO3dCQUNwQyxRQUFRLEVBQUUsQ0FBQzt3QkFDWCxLQUFLLEVBQUU7NEJBQ0gsSUFBSSxFQUFFLFFBQStCOzRCQUNyQyxTQUFTLEVBQUUsQ0FBQzt5QkFDZjtxQkFDSjtvQkFDRCxtQ0FBbUMsRUFBRTt3QkFDakMsV0FBVyxFQUNQLDJFQUEyRTt3QkFDL0UsSUFBSSxFQUFFLE9BQThCO3dCQUNwQyxRQUFRLEVBQUUsQ0FBQzt3QkFDWCxLQUFLLEVBQUU7NEJBQ0gsSUFBSSxFQUFFLFFBQStCOzRCQUNyQyxTQUFTLEVBQUUsQ0FBQzt5QkFDZjtxQkFDSjtpQkFDSjthQUNKO1NBQ0o7UUFDRCxjQUFjLEVBQUUsSUFBSTtRQUNwQixJQUFJLEVBQUUsWUFBWTtLQUNyQjtJQUNELGNBQWMsRUFBRTtRQUNaO1lBQ0ksd0JBQXdCLEVBQUUsSUFBSSxLQUFLLEVBQVU7WUFDN0MsbUNBQW1DLEVBQUUsSUFBSSxLQUFLLEVBQVU7U0FDM0Q7S0FDZ0Q7SUFFckQsTUFBTSxDQUFDLE9BQU87UUFDVixNQUFNLEVBQUMsd0JBQXdCLEVBQUUsbUNBQW1DLEVBQUMsR0FDakUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNsQix3QkFBd0IsRUFBRSxFQUFFO1lBQzVCLG1DQUFtQyxFQUFFLEVBQUU7U0FDMUMsQ0FBQztRQUVOLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzVELE9BQU87WUFDSCxrQkFBa0IsQ0FBQyxJQUFpQztnQkFDaEQsd0NBQXdDO2dCQUN4QyxJQUFJLFFBQW9DLENBQUM7Z0JBQ3pDLE1BQU0sU0FBUyxHQUNYLGlCQUFpQixDQUFDLGtDQUFrQyxDQUNoRCxJQUFJLEVBQ0osY0FBYyxFQUNkLFdBQVcsQ0FDZCxDQUFDO2dCQUNOLDZCQUE2QjtnQkFDN0IsSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDWixNQUFNLG9CQUFvQixHQUFHLENBQ3pCLElBQUksQ0FBQyxjQUFjO3dCQUNmLEVBQUUsY0FDVCxDQUFBLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQztvQkFFcEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7d0JBQ3hCLDRDQUE0Qzt3QkFDNUMsTUFBTSxXQUFXLEdBQUcsQ0FDaEIsSUFBSSxDQUFDLGNBQWM7NEJBQ2YsRUFBRSxjQUNULENBQUEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDO3dCQUN4QixJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDOzRCQUMxQyxRQUFRLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDbkMsQ0FBQztvQkFDTCxDQUFDO3lCQUFNLENBQUM7d0JBQ0osUUFBUSxHQUFHLG9CQUFvQixDQUFDO29CQUNwQyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDSixRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDO2dCQUN4RCxDQUFDO2dCQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDWixPQUFPO2dCQUNYLENBQUM7Z0JBRUQscURBQXFEO2dCQUNyRCxNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pELElBQUksbUJBQW1CLEVBQUUsQ0FBQztvQkFDdEIsT0FBTztnQkFDWCxDQUFDO2dCQUVELGdFQUFnRTtnQkFDaEUsTUFBTSwwQkFBMEIsR0FDNUIsUUFBUSxLQUFLLGNBQWMsQ0FBQyxXQUFXO29CQUVuQyxJQUFJLENBQUMsY0FBYzt3QkFDZixFQUFFLGNBQ1QsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLDBCQUEwQixFQUFFLENBQUM7b0JBQzdCLE9BQU87Z0JBQ1gsQ0FBQztnQkFFRCxvREFBb0Q7Z0JBQ3BELE1BQU0sVUFBVSxHQUNaLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFN0QsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDM0MsT0FBTztnQkFDWCxDQUFDO2dCQUVELHFEQUFxRDtnQkFDckQsNEVBQTRFO2dCQUM1RSxnREFBZ0Q7Z0JBQ2hELHFEQUFxRDtnQkFDckQsNEVBQTRFO2dCQUM1RSxNQUFNLDZCQUE2QixHQUMvQixpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FDckMsSUFBSSxFQUNKLG1DQUFtQyxDQUN0QyxDQUFDO2dCQUVOLE1BQU0sT0FBTyxHQUFHLDZCQUE2QixDQUFDLElBQUksQ0FDOUMsQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLENBQzdCLGlCQUFpQixDQUFDLGlCQUFpQixDQUMvQiw0QkFBNEIsQ0FDL0IsQ0FDUixDQUFDO2dCQUVGLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1YsT0FBTztnQkFDWCxDQUFDO2dCQUVELE1BQU0sU0FBUyxHQUFHLDZCQUE2QixDQUFDLElBQUksQ0FDaEQsQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLENBQzdCLGlCQUFpQixDQUFDLG1CQUFtQixDQUNqQyw0QkFBNEIsQ0FDL0IsQ0FDUixDQUFDO2dCQUVGLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ1osT0FBTztnQkFDWCxDQUFDO2dCQUVELHdDQUF3QztnQkFDeEMsNENBQTRDO2dCQUM1QyxnQkFBZ0I7Z0JBQ2hCLGlFQUFpRTtnQkFDakUsU0FBUztnQkFDVCxJQUFJLDZCQUE2QixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDN0MsT0FBTztnQkFDWCxDQUFDO2dCQUVELDRFQUE0RTtnQkFDNUUsTUFBTSxjQUFjLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQyxNQUFNLENBQzdDLHdCQUF3QixFQUFFLDJFQUEyRTtnQkFDckcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxvQ0FBb0M7aUJBQ2hELENBQUM7Z0JBRUYsMkZBQTJGO2dCQUMzRixNQUFNLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDLGtCQUFrQixDQUMzRCxJQUFJLEVBQ0osY0FBYyxDQUNqQixDQUFDO2dCQUVGLElBQUksa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNsQyxNQUFNLGtCQUFrQixHQUNwQixJQUFJLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQztvQkFDeEMsSUFBSSxjQUFrQyxDQUFDO29CQUV2QyxJQUFJLGtCQUFrQixFQUFFLENBQUM7d0JBQ3JCLElBQ0ksa0JBQWtCLENBQUMsSUFBSTs0QkFDbkIsY0FBYyxDQUFDLGVBQWU7NEJBQ2xDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJO2dDQUM1QixjQUFjLENBQUMsVUFBVSxFQUMvQixDQUFDOzRCQUNDLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDOzRCQUVsRCxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7Z0NBQy9DLE1BQU0sV0FBVyxHQUFHLENBQ2hCLElBQUksQ0FBQyxjQUFjO29DQUNmLEVBQUUsY0FDVCxDQUFBLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztnQ0FFeEIsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQ0FDMUMsTUFBTSxRQUFRLEdBQ1YsV0FBVyxDQUFDLENBQUMsQ0FDaEIsQ0FBQyxRQUFRLENBQUM7b0NBRVgsSUFDSSxRQUFRLENBQUMsSUFBSTt3Q0FDYixjQUFjLENBQUMsVUFBVSxFQUMzQixDQUFDO3dDQUNDLGNBQWMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO29DQUNuQyxDQUFDO2dDQUNMLENBQUM7NEJBQ0wsQ0FBQzt3QkFDTCxDQUFDOzZCQUFNLElBQ0gsa0JBQWtCLENBQUMsSUFBSTs0QkFDdkIsY0FBYyxDQUFDLFdBQVcsRUFDNUIsQ0FBQzs0QkFDQyxNQUFNLGVBQWUsR0FDakIsa0JBQWtCLENBQUMsV0FBVyxDQUFDOzRCQUVuQyxJQUNJLGVBQWUsQ0FBQyxJQUFJO2dDQUNoQixjQUFjLENBQUMsZUFBZTtnQ0FDbEMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJO29DQUN6QixjQUFjLENBQUMsVUFBVSxFQUMvQixDQUFDO2dDQUNDLGNBQWMsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzs0QkFDbkQsQ0FBQzt3QkFDTCxDQUFDO29CQUNMLENBQUM7b0JBRUQsSUFBSSxjQUFjLEVBQUUsQ0FBQzt3QkFDakIsT0FBTyxDQUFDLE1BQU0sQ0FBQzs0QkFDWCxJQUFJLEVBQUUsSUFBSTs0QkFDVixTQUFTLEVBQUUsd0JBQXdCOzRCQUNuQyxPQUFPLEVBQUU7Z0NBQ0w7b0NBQ0ksSUFBSSxFQUFFLEVBQUMsY0FBYyxFQUFDO29DQUN0QixTQUFTLEVBQUUsMEJBQTBCO29DQUNyQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3Q0FDWCxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDekIsSUFBSSxFQUNKLGVBQWUsY0FBYyxHQUFHLENBQ25DLENBQUM7b0NBQ04sQ0FBQztpQ0FDSjs2QkFDSjt5QkFDSixDQUFDLENBQUM7b0JBQ1AsQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLE9BQU8sQ0FBQyxNQUFNLENBQUM7NEJBQ1gsSUFBSSxFQUFFLElBQUk7NEJBQ1YsU0FBUyxFQUFFLHdCQUF3Qjt5QkFDdEMsQ0FBQyxDQUFDO29CQUNQLENBQUM7Z0JBQ0wsQ0FBQztZQUNMLENBQUM7U0FDSixDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUMsQ0FBQztBQUVILGVBQWUsSUFBSSxDQUFDIn0=
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return (
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getFixturesRootDirectory = getFixturesRootDirectory;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
function getFixturesRootDirectory() {
|
|
9
|
-
return path_1.default.join(__dirname, "..", "fixtures");
|
|
1
|
+
import path from "path";
|
|
2
|
+
export function getFixturesRootDirectory() {
|
|
3
|
+
return path.join(__dirname, "..", "fixtures");
|
|
10
4
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZVNldHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RpbmcvZml4dHVyZVNldHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4QixNQUFNLFVBQVUsd0JBQXdCO0lBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2xELENBQUMifQ==
|
package/dist/testing/preRun.js
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require("reflect-metadata");
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlUnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RpbmcvcHJlUnVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNEJBQTBCIn0=
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlUnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RpbmcvcHJlUnVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sa0JBQWtCLENBQUMifQ==
|
package/dist/utils/ast.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const types_1 = require("@typescript-eslint/types");
|
|
5
|
-
function getPropertiesDefinitions(classDeclaration) {
|
|
6
|
-
return classDeclaration.body.body.filter((element) => element.type === types_1.AST_NODE_TYPES.PropertyDefinition);
|
|
1
|
+
import { AST_NODE_TYPES } from "@typescript-eslint/types";
|
|
2
|
+
export function getPropertiesDefinitions(classDeclaration) {
|
|
3
|
+
return classDeclaration.body.body.filter((element) => element.type === AST_NODE_TYPES.PropertyDefinition);
|
|
7
4
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsY0FBYyxFQUFXLE1BQU0sMEJBQTBCLENBQUM7QUFFbEUsTUFBTSxVQUFVLHdCQUF3QixDQUNwQyxnQkFBMkM7SUFFM0MsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FDcEMsQ0FBQyxPQUFPLEVBQTBDLEVBQUUsQ0FDaEQsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsa0JBQWtCLENBQ3pELENBQUM7QUFDTixDQUFDIn0=
|
package/dist/utils/createRule.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createRule = void 0;
|
|
4
|
-
const utils_1 = require("@typescript-eslint/utils");
|
|
1
|
+
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
5
2
|
// Note - cannot migrate this to an import statement because it will make TSC copy the package.json to the dist folder
|
|
6
3
|
//const {version} = require("../../package.json");
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
export const createRule = ESLintUtils.RuleCreator((name) => `https://github.com/darraghoriordan/eslint-plugin-nestjs-typed/blob/main/src/docs/rules/${name}.md`);
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jcmVhdGVSdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxzSEFBc0g7QUFFdEgsa0RBQWtEO0FBRWxELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUM3QyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ0wsMEZBQTBGLElBQUksS0FBSyxDQUMxRyxDQUFDIn0=
|
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.FileEnumerator = void 0;
|
|
7
|
-
const glob_1 = require("glob");
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const isFilteredPath_1 = __importDefault(require("./isFilteredPath"));
|
|
1
|
+
import { glob } from "glob";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import IsFilteredPath from "./isFilteredPath.js";
|
|
10
4
|
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
11
|
-
class FileEnumerator {
|
|
5
|
+
export class FileEnumerator {
|
|
12
6
|
static enumerateFiles(sourceGlobs, extensions, filterFromPaths) {
|
|
13
7
|
// Create glob pattern that includes extensions
|
|
14
8
|
const patterns = sourceGlobs.flatMap((pattern) => {
|
|
15
|
-
if (
|
|
9
|
+
if (path.extname(pattern)) {
|
|
16
10
|
return pattern;
|
|
17
11
|
}
|
|
18
12
|
return extensions.map((extension) => `${pattern}/**/*${extension}`);
|
|
19
13
|
});
|
|
20
14
|
// Find all files matching the patterns
|
|
21
|
-
const files =
|
|
15
|
+
const files = glob.sync(patterns, {
|
|
22
16
|
ignore: ["**/node_modules/**"],
|
|
23
17
|
nodir: true,
|
|
24
18
|
});
|
|
@@ -28,9 +22,8 @@ class FileEnumerator {
|
|
|
28
22
|
ignored: false, // You can implement custom ignore logic if needed
|
|
29
23
|
filename: filePath,
|
|
30
24
|
}))
|
|
31
|
-
.filter((file) => !
|
|
25
|
+
.filter((file) => !IsFilteredPath.test(file.filename, filterFromPaths));
|
|
32
26
|
}
|
|
33
27
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tRmlsZUVudW1lcmF0b3JXcmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2ZpbGVzL2N1c3RvbUZpbGVFbnVtZXJhdG9yV3JhcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwrQkFBMEI7QUFDMUIsZ0RBQXdCO0FBQ3hCLHNFQUE4QztBQU85QyxrRUFBa0U7QUFDbEUsTUFBYSxjQUFjO0lBQ3ZCLE1BQU0sQ0FBQyxjQUFjLENBQ2pCLFdBQXFCLEVBQ3JCLFVBQW9CLEVBQ3BCLGVBQXlCO1FBRXpCLCtDQUErQztRQUMvQyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxjQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sT0FBTyxDQUFDO1lBQ25CLENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQ2pCLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLFFBQVEsU0FBUyxFQUFFLENBQ3ZELENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILHVDQUF1QztRQUN2QyxNQUFNLEtBQUssR0FBRyxXQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUM5QixNQUFNLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztZQUM5QixLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztRQUVILHdDQUF3QztRQUN4QyxPQUFPLEtBQUs7YUFDUCxHQUFHLENBQ0EsQ0FBQyxRQUFRLEVBQVksRUFBRSxDQUFDLENBQUM7WUFDckIsT0FBTyxFQUFFLEtBQUssRUFBRSxrREFBa0Q7WUFDbEUsUUFBUSxFQUFFLFFBQVE7U0FDckIsQ0FBQyxDQUNMO2FBQ0EsTUFBTSxDQUNILENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLHdCQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQ2pFLENBQUM7SUFDVixDQUFDO0NBQ0o7QUFsQ0Qsd0NBa0NDO0FBRUQsa0JBQWUsY0FBYyxDQUFDIn0=
|
|
28
|
+
export default FileEnumerator;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tRmlsZUVudW1lcmF0b3JXcmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2ZpbGVzL2N1c3RvbUZpbGVFbnVtZXJhdG9yV3JhcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQU9qRCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLGNBQWM7SUFDdkIsTUFBTSxDQUFDLGNBQWMsQ0FDakIsV0FBcUIsRUFDckIsVUFBb0IsRUFDcEIsZUFBeUI7UUFFekIsK0NBQStDO1FBQy9DLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM3QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxPQUFPLENBQUM7WUFDbkIsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FDakIsQ0FBQyxTQUFpQixFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sUUFBUSxTQUFTLEVBQUUsQ0FDdkQsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBRUgsdUNBQXVDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzlCLE1BQU0sRUFBRSxDQUFDLG9CQUFvQixDQUFDO1lBQzlCLEtBQUssRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsd0NBQXdDO1FBQ3hDLE9BQU8sS0FBSzthQUNQLEdBQUcsQ0FDQSxDQUFDLFFBQVEsRUFBWSxFQUFFLENBQUMsQ0FBQztZQUNyQixPQUFPLEVBQUUsS0FBSyxFQUFFLGtEQUFrRDtZQUNsRSxRQUFRLEVBQUUsUUFBUTtTQUNyQixDQUFDLENBQ0w7YUFDQSxNQUFNLENBQ0gsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUNqRSxDQUFDO0lBQ1YsQ0FBQztDQUNKO0FBRUQsZUFBZSxjQUFjLENBQUMifQ==
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
1
|
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
4
2
|
class IsFilteredPath {
|
|
5
3
|
}
|
|
@@ -12,5 +10,5 @@ IsFilteredPath.test = (path, filteredStrings) => {
|
|
|
12
10
|
});
|
|
13
11
|
return hasFoundFilter ?? false;
|
|
14
12
|
};
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
export default IsFilteredPath;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNGaWx0ZXJlZFBhdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZmlsZXMvaXNGaWx0ZXJlZFBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLE1BQU0sY0FBYzs7QUFDVCxtQkFBSSxHQUFHLENBQ1YsSUFBd0IsRUFDeEIsZUFBcUMsRUFDOUIsRUFBRTtJQUNULElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxNQUFNLGNBQWMsR0FBRyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUU7UUFDN0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxjQUFjLElBQUksS0FBSyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUdOLGVBQWUsY0FBYyxDQUFDIn0=
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NestProvidedInjectablesMap = void 0;
|
|
4
|
-
class NestProvidedInjectablesMap {
|
|
1
|
+
export class NestProvidedInjectablesMap {
|
|
5
2
|
constructor(controllers, providers) {
|
|
6
3
|
this.controllers = controllers;
|
|
7
4
|
this.providers = providers;
|
|
8
5
|
}
|
|
9
6
|
}
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdFByb3ZpZGVkSW5qZWN0YWJsZXNNYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvbmVzdE1vZHVsZXMvbW9kZWxzL05lc3RQcm92aWRlZEluamVjdGFibGVzTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQWEsMEJBQTBCO0lBQ25DLFlBQ1csV0FBd0IsRUFDeEIsU0FBc0I7UUFEdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBYTtJQUM5QixDQUFDO0NBQ1A7QUFMRCxnRUFLQyJ9
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdFByb3ZpZGVkSW5qZWN0YWJsZXNNYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvbmVzdE1vZHVsZXMvbW9kZWxzL05lc3RQcm92aWRlZEluamVjdGFibGVzTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTywwQkFBMEI7SUFDbkMsWUFDVyxXQUF3QixFQUN4QixTQUFzQjtRQUR0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFhO0lBQzlCLENBQUM7Q0FDUCJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TSESTree } from "@typescript-eslint/utils";
|
|
2
|
-
import { NestProvidedInjectablesMap } from "./models/NestProvidedInjectablesMap";
|
|
2
|
+
import { NestProvidedFilePath, NestProvidedInjectablesMap } from "./models/NestProvidedInjectablesMap.js";
|
|
3
3
|
export declare const nestModuleAstParser: {
|
|
4
4
|
findNestModuleClass(ast: TSESTree.Program): TSESTree.ClassDeclaration | null;
|
|
5
|
-
mapNestModuleDecorator(n: TSESTree.ClassDeclaration, path:
|
|
5
|
+
mapNestModuleDecorator(n: TSESTree.ClassDeclaration, path: NestProvidedFilePath): [NestProvidedFilePath, NestProvidedInjectablesMap] | null;
|
|
6
6
|
mapModuleDecoratorOptionProperty(moduleDecorator: TSESTree.Decorator, propertyName: string): Set<string>;
|
|
7
7
|
};
|
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const utils_1 = require("@typescript-eslint/utils");
|
|
5
|
-
const NestProvidedInjectablesMap_1 = require("./models/NestProvidedInjectablesMap");
|
|
6
|
-
exports.nestModuleAstParser = {
|
|
1
|
+
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
2
|
+
import { NestProvidedInjectablesMap, } from "./models/NestProvidedInjectablesMap.js";
|
|
3
|
+
export const nestModuleAstParser = {
|
|
7
4
|
findNestModuleClass(ast) {
|
|
8
5
|
for (const n of ast.body) {
|
|
9
6
|
// find class declaration even if it's inside an export
|
|
10
|
-
if (n.type ===
|
|
7
|
+
if (n.type === AST_NODE_TYPES.ClassDeclaration &&
|
|
11
8
|
n.decorators &&
|
|
12
9
|
n.decorators.length > 0) {
|
|
13
10
|
return n;
|
|
14
11
|
}
|
|
15
|
-
if ((n.type ===
|
|
16
|
-
n.type ===
|
|
17
|
-
n.declaration?.type ===
|
|
12
|
+
if ((n.type === AST_NODE_TYPES.ExportNamedDeclaration ||
|
|
13
|
+
n.type === AST_NODE_TYPES.ExportDefaultDeclaration) &&
|
|
14
|
+
n.declaration?.type === AST_NODE_TYPES.ClassDeclaration) {
|
|
18
15
|
return n.declaration;
|
|
19
16
|
}
|
|
20
17
|
}
|
|
@@ -23,13 +20,13 @@ exports.nestModuleAstParser = {
|
|
|
23
20
|
mapNestModuleDecorator(n, path) {
|
|
24
21
|
// The nest module decorator is called "Module"
|
|
25
22
|
const moduleDecorator = n.decorators.find((d) => d.expression
|
|
26
|
-
.callee
|
|
23
|
+
.callee?.name === "Module");
|
|
27
24
|
if (moduleDecorator) {
|
|
28
25
|
const mappedControllerElements = this.mapModuleDecoratorOptionProperty(moduleDecorator, "controllers");
|
|
29
26
|
const mappedProviderElements = this.mapModuleDecoratorOptionProperty(moduleDecorator, "providers");
|
|
30
27
|
const nestModuleMap = [
|
|
31
28
|
path,
|
|
32
|
-
new
|
|
29
|
+
new NestProvidedInjectablesMap(mappedControllerElements, mappedProviderElements),
|
|
33
30
|
];
|
|
34
31
|
return nestModuleMap;
|
|
35
32
|
}
|
|
@@ -50,4 +47,4 @@ exports.nestModuleAstParser = {
|
|
|
50
47
|
return new Set();
|
|
51
48
|
},
|
|
52
49
|
};
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdE1vZHVsZUFzdFBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9uZXN0TW9kdWxlcy9uZXN0TW9kdWxlQXN0UGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQVcsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBRUgsMEJBQTBCLEdBQzdCLE1BQU0sd0NBQXdDLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDL0IsbUJBQW1CLENBQ2YsR0FBcUI7UUFFckIsS0FBSyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsdURBQXVEO1lBQ3ZELElBQ0ksQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsZ0JBQWdCO2dCQUMxQyxDQUFDLENBQUMsVUFBVTtnQkFDWixDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ3pCLENBQUM7Z0JBQ0MsT0FBTyxDQUFDLENBQUM7WUFDYixDQUFDO1lBRUQsSUFDSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLHNCQUFzQjtnQkFDN0MsQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLLGNBQWMsQ0FBQyxnQkFBZ0IsRUFDekQsQ0FBQztnQkFDQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsc0JBQXNCLENBQ2xCLENBQTRCLEVBQzVCLElBQTBCO1FBRTFCLCtDQUErQztRQUMvQyxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDckMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUVHLENBQUMsQ0FBQyxVQUFzQzthQUNwQyxNQUNSLEVBQUUsSUFBSSxLQUFLLFFBQVEsQ0FDM0IsQ0FBQztRQUNGLElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEIsTUFBTSx3QkFBd0IsR0FDMUIsSUFBSSxDQUFDLGdDQUFnQyxDQUNqQyxlQUFlLEVBQ2YsYUFBYSxDQUNoQixDQUFDO1lBQ04sTUFBTSxzQkFBc0IsR0FDeEIsSUFBSSxDQUFDLGdDQUFnQyxDQUNqQyxlQUFlLEVBQ2YsV0FBVyxDQUNkLENBQUM7WUFFTixNQUFNLGFBQWEsR0FHZjtnQkFDQSxJQUFJO2dCQUNKLElBQUksMEJBQTBCLENBQzFCLHdCQUF3QixFQUN4QixzQkFBc0IsQ0FDekI7YUFDSixDQUFDO1lBQ0YsT0FBTyxhQUFhLENBQUM7UUFDekIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxnQ0FBZ0MsQ0FDNUIsZUFBbUMsRUFDbkMsWUFBb0I7UUFFcEIsTUFBTSxjQUFjLEdBQ2YsZUFBZSxDQUFDLFVBQWlEO2FBQzdELFNBQVMsQ0FBQyxDQUFDLENBQ25CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDYixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0EsQ0FBdUIsQ0FBQyxHQUEyQixDQUFDLElBQUk7WUFDMUQsWUFBWSxDQUNuQixDQUFDO1FBRUYsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqQix5REFBeUQ7WUFDekQsd0NBQXdDO1lBQ3hDLGtEQUFrRDtZQUVsRCxNQUFNLGlDQUFpQyxHQUU5QixjQUErQztpQkFDM0MsS0FDUixDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFFckIsT0FBTyxJQUFJLEdBQUcsQ0FDVixpQ0FBaUMsQ0FBQyxHQUFHLENBQ2pDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBRSxPQUErQixDQUFDLElBQUksQ0FDckQsQ0FDSixDQUFDO1FBQ04sQ0FBQztRQUVELE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0NBQ0osQ0FBQyJ9
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { TSESLint, TSESTree } from "@typescript-eslint/utils";
|
|
2
|
-
import { NestProvidedInjectablesMap } from "./models/NestProvidedInjectablesMap";
|
|
2
|
+
import { NestProvidedFilePath, NestProvidedInjectablesMap } from "./models/NestProvidedInjectablesMap.js";
|
|
3
3
|
declare const NestProvidedInjectableMapper: {
|
|
4
4
|
detectDirectoryToScanForFiles(sourceGlob: string | string[] | undefined, currentWorkingDirectory: string): string[];
|
|
5
5
|
parseFileList(files: {
|
|
6
6
|
ignored: boolean;
|
|
7
|
-
filename:
|
|
8
|
-
}[], context: Readonly<TSESLint.RuleContext<never, any>>): Map<
|
|
7
|
+
filename: NestProvidedFilePath;
|
|
8
|
+
}[], context: Readonly<TSESLint.RuleContext<never, any>>): Map<NestProvidedFilePath, NestProvidedInjectablesMap>;
|
|
9
9
|
notEmpty<TValue>(value: TValue | null): value is TValue;
|
|
10
10
|
readFileContents(path: string): string;
|
|
11
11
|
isNestInjectableThatIsNeverProvided(node: TSESTree.ClassDeclaration): boolean;
|
|
12
|
-
|
|
12
|
+
mapAllProvidedInjectablesInModuleOrProviderFile(ast: TSESTree.Program, path: string): [NestProvidedFilePath, NestProvidedInjectablesMap] | null;
|
|
13
13
|
};
|
|
14
14
|
export default NestProvidedInjectableMapper;
|