@darraghor/eslint-plugin-nestjs-typed 6.0.0-rc.18 → 6.0.0-rc.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/configs/base.js +4 -3
- package/dist/configs/index.js +13 -0
- package/dist/configs/noSwagger.js +4 -3
- package/dist/configs/recommended.js +4 -3
- package/dist/index.js +14 -57
- package/dist/rules/allPropertiesAreWhitelisted/allPropertiesAreWhitelisted.js +13 -11
- package/dist/rules/allPropertiesHaveExplicitDefined/allPropertiesHaveExplicitDefined.js +17 -15
- package/dist/rules/apiEnumPropertyBestPractices/apiEnumPropertyBestPractices.js +22 -17
- package/dist/rules/apiEnumPropertyBestPractices/enumTestResultModel.js +6 -2
- package/dist/rules/apiMethodsShouldBeGuarded/apiMethodsShouldBeGuarded.js +16 -12
- package/dist/rules/apiMethodsShouldSpecifyApiOperation/apiMethodsShouldSpecifyApiOperation.js +13 -9
- package/dist/rules/apiMethodsShouldSpecifyApiResponse/apiMethodsShouldSpecifyApiResponse.js +13 -9
- package/dist/rules/apiPropertyMatchesPropertyOptionality/apiPropertyMatchesPropertyOptionality.js +18 -13
- package/dist/rules/apiPropertyReturningArrayShouldSetArray/apiPropertyReturningArrayShouldSetArray.js +24 -17
- package/dist/rules/apiPropertyReturningArrayShouldSetArray/arraySetResultModel.js +5 -2
- package/dist/rules/controllerDecoratedHasApiTags/controllerDecoratedHasApiTags.js +13 -9
- package/dist/rules/index.js +41 -36
- package/dist/rules/injectablesShouldBeProvided/injectableShouldBeProvided.js +18 -13
- package/dist/rules/noDuplicateDecorators/noDuplicateDecorators.js +14 -10
- package/dist/rules/paramDecoratorNameMatchesRouteParam/paramDecoratorNameMatchesRouteParam.js +26 -19
- package/dist/rules/paramDecoratorNameMatchesRouteParam/rule.testData.js +6 -3
- package/dist/rules/providerInjectedShouldMatchFactory/ProviderInjectedShouldMatchFactory.js +18 -12
- package/dist/rules/shouldSpecifyForbidUnknownValues/shouldSpecifyForbidUnknownValuesRule.js +27 -20
- package/dist/rules/sortModuleMetadataArrays/sortModuleMetadataArrays.js +23 -18
- package/dist/rules/validateNestedOfArrayShouldSetEach/arraySetResultModel.js +5 -2
- package/dist/rules/validateNestedOfArrayShouldSetEach/validateNestedOfArrayShouldSetEach.js +21 -14
- package/dist/rules/validateNonPrimitiveNeedsTypeDecorator/validateNonPrimitiveNeedsDecorators.js +33 -29
- package/dist/testing/fixtureSetup.js +10 -4
- package/dist/testing/preRun.js +4 -2
- package/dist/utils/ast.js +7 -4
- package/dist/utils/createRule.js +6 -3
- package/dist/utils/files/customFileEnumeratorWrapper.js +16 -9
- package/dist/utils/files/isFilteredPath.js +4 -2
- package/dist/utils/nestModules/models/NestProvidedInjectablesMap.js +6 -2
- package/dist/utils/nestModules/nestModuleAstParser.js +12 -9
- package/dist/utils/nestModules/nestProvidedInjectableMapper.js +52 -14
- package/dist/utils/nestModules/nestProvidedInjectableMapper.testData.js +12 -9
- package/dist/utils/nestModules/nestProviderAstParser.js +16 -13
- package/dist/utils/typedTokenHelpers.js +64 -25
- package/dist/utils/wellKnownSelectors.js +5 -2
- package/package.json +3 -12
- package/dist/configs/base.d.ts +0 -8
- package/dist/configs/noSwagger.d.ts +0 -7
- package/dist/configs/recommended.d.ts +0 -7
- package/dist/index.d.ts +0 -52
- package/dist/rules/allPropertiesAreWhitelisted/allPropertiesAreWhitelisted.d.ts +0 -2
- package/dist/rules/allPropertiesHaveExplicitDefined/allPropertiesHaveExplicitDefined.d.ts +0 -3
- package/dist/rules/apiEnumPropertyBestPractices/apiEnumPropertyBestPractices.d.ts +0 -6
- package/dist/rules/apiEnumPropertyBestPractices/enumTestResultModel.d.ts +0 -7
- package/dist/rules/apiMethodsShouldBeGuarded/apiMethodsShouldBeGuarded.d.ts +0 -4
- package/dist/rules/apiMethodsShouldSpecifyApiOperation/apiMethodsShouldSpecifyApiOperation.d.ts +0 -4
- package/dist/rules/apiMethodsShouldSpecifyApiResponse/apiMethodsShouldSpecifyApiResponse.d.ts +0 -4
- package/dist/rules/apiPropertyMatchesPropertyOptionality/apiPropertyMatchesPropertyOptionality.d.ts +0 -5
- package/dist/rules/apiPropertyReturningArrayShouldSetArray/apiPropertyReturningArrayShouldSetArray.d.ts +0 -5
- package/dist/rules/apiPropertyReturningArrayShouldSetArray/arraySetResultModel.d.ts +0 -5
- package/dist/rules/controllerDecoratedHasApiTags/controllerDecoratedHasApiTags.d.ts +0 -4
- package/dist/rules/index.d.ts +0 -23
- package/dist/rules/injectablesShouldBeProvided/injectableShouldBeProvided.d.ts +0 -9
- package/dist/rules/noDuplicateDecorators/noDuplicateDecorators.d.ts +0 -9
- package/dist/rules/paramDecoratorNameMatchesRouteParam/paramDecoratorNameMatchesRouteParam.d.ts +0 -21
- package/dist/rules/paramDecoratorNameMatchesRouteParam/rule.testData.d.ts +0 -10
- package/dist/rules/providerInjectedShouldMatchFactory/ProviderInjectedShouldMatchFactory.d.ts +0 -4
- package/dist/rules/shouldSpecifyForbidUnknownValues/shouldSpecifyForbidUnknownValuesRule.d.ts +0 -7
- package/dist/rules/sortModuleMetadataArrays/sortModuleMetadataArrays.d.ts +0 -11
- package/dist/rules/validateNestedOfArrayShouldSetEach/arraySetResultModel.d.ts +0 -5
- package/dist/rules/validateNestedOfArrayShouldSetEach/validateNestedOfArrayShouldSetEach.d.ts +0 -5
- package/dist/rules/validateNonPrimitiveNeedsTypeDecorator/validateNonPrimitiveNeedsDecorators.d.ts +0 -10
- package/dist/testing/fixtureSetup.d.ts +0 -1
- package/dist/testing/preRun.d.ts +0 -1
- package/dist/utils/ast.d.ts +0 -2
- package/dist/utils/createRule.d.ts +0 -2
- package/dist/utils/files/customFileEnumeratorWrapper.d.ts +0 -8
- package/dist/utils/files/isFilteredPath.d.ts +0 -4
- package/dist/utils/nestModules/models/NestProvidedInjectablesMap.d.ts +0 -5
- package/dist/utils/nestModules/nestModuleAstParser.d.ts +0 -7
- package/dist/utils/nestModules/nestProvidedInjectableMapper.d.ts +0 -14
- package/dist/utils/nestModules/nestProvidedInjectableMapper.testData.d.ts +0 -7
- package/dist/utils/nestModules/nestProviderAstParser.d.ts +0 -7
- package/dist/utils/typedTokenHelpers.d.ts +0 -59
- package/dist/utils/wellKnownSelectors.d.ts +0 -1
package/dist/rules/apiPropertyMatchesPropertyOptionality/apiPropertyMatchesPropertyOptionality.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shouldUseOptionalDecorator = exports.shouldUseRequiredDecorator = void 0;
|
|
4
|
+
const createRule_1 = require("../../utils/createRule");
|
|
5
|
+
const typedTokenHelpers_1 = require("../../utils/typedTokenHelpers");
|
|
6
|
+
const shouldUseRequiredDecorator = (node) => {
|
|
7
|
+
const hasOptionalDecorator = typedTokenHelpers_1.typedTokenHelpers.nodeHasDecoratorsNamed(node, ["ApiPropertyOptional"]);
|
|
8
|
+
const isOptionalPropertyValue = typedTokenHelpers_1.typedTokenHelpers.isOptionalPropertyValue(node);
|
|
6
9
|
return hasOptionalDecorator && !isOptionalPropertyValue;
|
|
7
10
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
+
exports.shouldUseRequiredDecorator = shouldUseRequiredDecorator;
|
|
12
|
+
const shouldUseOptionalDecorator = (node) => {
|
|
13
|
+
const hasRequiredDecorator = typedTokenHelpers_1.typedTokenHelpers.nodeHasDecoratorsNamed(node, ["ApiProperty"]);
|
|
14
|
+
const isOptionalPropertyValue = typedTokenHelpers_1.typedTokenHelpers.isOptionalPropertyValue(node);
|
|
11
15
|
return hasRequiredDecorator && isOptionalPropertyValue;
|
|
12
16
|
};
|
|
13
|
-
|
|
17
|
+
exports.shouldUseOptionalDecorator = shouldUseOptionalDecorator;
|
|
18
|
+
const rule = (0, createRule_1.createRule)({
|
|
14
19
|
name: "api-property-matches-property-optionality",
|
|
15
20
|
meta: {
|
|
16
21
|
docs: {
|
|
@@ -28,13 +33,13 @@ const rule = createRule({
|
|
|
28
33
|
create(context) {
|
|
29
34
|
return {
|
|
30
35
|
PropertyDefinition(node) {
|
|
31
|
-
if (shouldUseOptionalDecorator(node)) {
|
|
36
|
+
if ((0, exports.shouldUseOptionalDecorator)(node)) {
|
|
32
37
|
context.report({
|
|
33
38
|
node: node,
|
|
34
39
|
messageId: "shouldUseOptionalDecorator",
|
|
35
40
|
});
|
|
36
41
|
}
|
|
37
|
-
if (shouldUseRequiredDecorator(node)) {
|
|
42
|
+
if ((0, exports.shouldUseRequiredDecorator)(node)) {
|
|
38
43
|
context.report({
|
|
39
44
|
node: node,
|
|
40
45
|
messageId: "shouldUseRequiredDecorator",
|
|
@@ -44,5 +49,5 @@ const rule = createRule({
|
|
|
44
49
|
};
|
|
45
50
|
},
|
|
46
51
|
});
|
|
47
|
-
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
exports.default = rule;
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpUHJvcGVydHlNYXRjaGVzUHJvcGVydHlPcHRpb25hbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydWxlcy9hcGlQcm9wZXJ0eU1hdGNoZXNQcm9wZXJ0eU9wdGlvbmFsaXR5L2FwaVByb3BlcnR5TWF0Y2hlc1Byb3BlcnR5T3B0aW9uYWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsdURBQWtEO0FBQ2xELHFFQUFnRTtBQUV6RCxNQUFNLDBCQUEwQixHQUFHLENBQ3RDLElBQWlDLEVBQzFCLEVBQUU7SUFDVCxNQUFNLG9CQUFvQixHQUFHLHFDQUFpQixDQUFDLHNCQUFzQixDQUNqRSxJQUFJLEVBQ0osQ0FBQyxxQkFBcUIsQ0FBQyxDQUMxQixDQUFDO0lBRUYsTUFBTSx1QkFBdUIsR0FDekIscUNBQWlCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEQsT0FBTyxvQkFBb0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDO0FBQzVELENBQUMsQ0FBQztBQVpXLFFBQUEsMEJBQTBCLDhCQVlyQztBQUVLLE1BQU0sMEJBQTBCLEdBQUcsQ0FDdEMsSUFBaUMsRUFDMUIsRUFBRTtJQUNULE1BQU0sb0JBQW9CLEdBQUcscUNBQWlCLENBQUMsc0JBQXNCLENBQ2pFLElBQUksRUFDSixDQUFDLGFBQWEsQ0FBQyxDQUNsQixDQUFDO0lBRUYsTUFBTSx1QkFBdUIsR0FDekIscUNBQWlCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEQsT0FBTyxvQkFBb0IsSUFBSSx1QkFBdUIsQ0FBQztBQUMzRCxDQUFDLENBQUM7QUFaVyxRQUFBLDBCQUEwQiw4QkFZckM7QUFFRixNQUFNLElBQUksR0FBRyxJQUFBLHVCQUFVLEVBR3JCO0lBQ0UsSUFBSSxFQUFFLDJDQUEyQztJQUNqRCxJQUFJLEVBQUU7UUFDRixJQUFJLEVBQUU7WUFDRixXQUFXLEVBQ1Asd0RBQXdEO1NBQy9EO1FBQ0QsUUFBUSxFQUFFO1lBQ04sMEJBQTBCLEVBQUUsdUVBQXVFO1lBQ25HLDBCQUEwQixFQUFFLCtEQUErRDtTQUM5RjtRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsY0FBYyxFQUFFLEtBQUs7UUFDckIsSUFBSSxFQUFFLFlBQVk7S0FDckI7SUFDRCxjQUFjLEVBQUUsRUFBRTtJQUVsQixNQUFNLENBQUMsT0FBTztRQUNWLE9BQU87WUFDSCxrQkFBa0IsQ0FBQyxJQUFpQztnQkFDaEQsSUFBSSxJQUFBLGtDQUEwQixFQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ25DLE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ1gsSUFBSSxFQUFFLElBQUk7d0JBQ1YsU0FBUyxFQUFFLDRCQUE0QjtxQkFDMUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7Z0JBQ0QsSUFBSSxJQUFBLGtDQUEwQixFQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ25DLE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ1gsSUFBSSxFQUFFLElBQUk7d0JBQ1YsU0FBUyxFQUFFLDRCQUE0QjtxQkFDMUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO1NBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDLENBQUM7QUFFSCxrQkFBZSxJQUFJLENBQUMifQ==
|
|
@@ -1,35 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.shouldSetArrayProperty = void 0;
|
|
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, [
|
|
7
13
|
"ApiPropertyOptional",
|
|
8
14
|
"ApiProperty",
|
|
9
15
|
]);
|
|
10
16
|
if (decorators.length === 0) {
|
|
11
|
-
return new
|
|
17
|
+
return new arraySetResultModel_1.default(false, false);
|
|
12
18
|
}
|
|
13
19
|
// There should only be one of these apiproperty decorators so we just grab the parameter to decorator at index 0
|
|
14
20
|
const firstArgumentToDecorator = decorators[0].expression?.arguments[0];
|
|
15
21
|
// if the code is using anything other than object expression, ignore the rule (we dont want to go looking at objects)
|
|
16
22
|
// we DO want to alert if there is no argument at all. so we continue to test the rule if no argument was passed
|
|
17
23
|
if (firstArgumentToDecorator &&
|
|
18
|
-
(firstArgumentToDecorator.type !== AST_NODE_TYPES.ObjectExpression ||
|
|
24
|
+
(firstArgumentToDecorator.type !== utils_1.AST_NODE_TYPES.ObjectExpression ||
|
|
19
25
|
// if the things passed to the object expression contains a spread then ignore that too!
|
|
20
|
-
firstArgumentToDecorator.properties.some((x) => x.type === AST_NODE_TYPES.SpreadElement))) {
|
|
21
|
-
return new
|
|
26
|
+
firstArgumentToDecorator.properties.some((x) => x.type === utils_1.AST_NODE_TYPES.SpreadElement))) {
|
|
27
|
+
return new arraySetResultModel_1.default(false, false);
|
|
22
28
|
}
|
|
23
|
-
const hasIsArraySetInOptions = typedTokenHelpers.getPropertyValueEqualsExpected(firstArgumentToDecorator, "isArray", true);
|
|
29
|
+
const hasIsArraySetInOptions = typedTokenHelpers_1.typedTokenHelpers.getPropertyValueEqualsExpected(firstArgumentToDecorator, "isArray", true);
|
|
24
30
|
const typeAnnotation = node.typeAnnotation?.typeAnnotation;
|
|
25
31
|
// handle string[] or Array<string>
|
|
26
32
|
const isArrayType = typeAnnotation
|
|
27
33
|
?.typeName?.name === "Array";
|
|
28
|
-
const isTypescriptArrayType = typeAnnotation?.type === AST_NODE_TYPES.TSArrayType;
|
|
34
|
+
const isTypescriptArrayType = typeAnnotation?.type === utils_1.AST_NODE_TYPES.TSArrayType;
|
|
29
35
|
const isAnArrayLikeType = isArrayType || isTypescriptArrayType;
|
|
30
|
-
return new
|
|
36
|
+
return new arraySetResultModel_1.default(isAnArrayLikeType && !hasIsArraySetInOptions, !isAnArrayLikeType && hasIsArraySetInOptions);
|
|
31
37
|
};
|
|
32
|
-
|
|
38
|
+
exports.shouldSetArrayProperty = shouldSetArrayProperty;
|
|
39
|
+
const rule = (0, createRule_1.createRule)({
|
|
33
40
|
name: "api-property-returning-array-should-set-array",
|
|
34
41
|
meta: {
|
|
35
42
|
docs: {
|
|
@@ -47,7 +54,7 @@ const rule = createRule({
|
|
|
47
54
|
create(context) {
|
|
48
55
|
return {
|
|
49
56
|
PropertyDefinition: (node) => {
|
|
50
|
-
const shouldSetArrayResults = shouldSetArrayProperty(node);
|
|
57
|
+
const shouldSetArrayResults = (0, exports.shouldSetArrayProperty)(node);
|
|
51
58
|
if (shouldSetArrayResults.isArrayShouldBeSetFalse) {
|
|
52
59
|
context.report({
|
|
53
60
|
node: node,
|
|
@@ -64,5 +71,5 @@ const rule = createRule({
|
|
|
64
71
|
};
|
|
65
72
|
},
|
|
66
73
|
});
|
|
67
|
-
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
exports.default = rule;
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpUHJvcGVydHlSZXR1cm5pbmdBcnJheVNob3VsZFNldEFycmF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3J1bGVzL2FwaVByb3BlcnR5UmV0dXJuaW5nQXJyYXlTaG91bGRTZXRBcnJheS9hcGlQcm9wZXJ0eVJldHVybmluZ0FycmF5U2hvdWxkU2V0QXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQWtFO0FBQ2xFLHVEQUFrRDtBQUNsRCxxRUFBZ0U7QUFDaEUsZ0ZBQXdEO0FBRWpELE1BQU0sc0JBQXNCLEdBQUcsQ0FDbEMsSUFBaUMsRUFDZCxFQUFFO0lBQ3JCLE1BQU0sVUFBVSxHQUFHLHFDQUFpQixDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRTtRQUMxRCxxQkFBcUI7UUFDckIsYUFBYTtLQUNoQixDQUFDLENBQUM7SUFFSCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxJQUFJLDZCQUFtQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsaUhBQWlIO0lBQ2pILE1BQU0sd0JBQXdCLEdBQzFCLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUNqQixFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoQixzSEFBc0g7SUFDdEgsZ0hBQWdIO0lBQ2hILElBQ0ksd0JBQXdCO1FBQ3hCLENBQUMsd0JBQXdCLENBQUMsSUFBSSxLQUFLLHNCQUFjLENBQUMsZ0JBQWdCO1lBQzlELHdGQUF3RjtZQUN4Rix3QkFBd0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNwQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxzQkFBYyxDQUFDLGFBQWEsQ0FDakQsQ0FBQyxFQUNSLENBQUM7UUFDQyxPQUFPLElBQUksNkJBQW1CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxNQUFNLHNCQUFzQixHQUN4QixxQ0FBaUIsQ0FBQyw4QkFBOEIsQ0FDNUMsd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxJQUFJLENBQ1AsQ0FBQztJQUVOLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDO0lBQzNELG1DQUFtQztJQUNuQyxNQUFNLFdBQVcsR0FFUixjQUF1RDtRQUNwRCxFQUFFLFFBQ1QsRUFBRSxJQUFJLEtBQUssT0FBTyxDQUFDO0lBQ3hCLE1BQU0scUJBQXFCLEdBQ3ZCLGNBQWMsRUFBRSxJQUFJLEtBQUssc0JBQWMsQ0FBQyxXQUFXLENBQUM7SUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLElBQUkscUJBQXFCLENBQUM7SUFFL0QsT0FBTyxJQUFJLDZCQUFtQixDQUMxQixpQkFBaUIsSUFBSSxDQUFDLHNCQUFzQixFQUM1QyxDQUFDLGlCQUFpQixJQUFJLHNCQUFzQixDQUMvQyxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBcERXLFFBQUEsc0JBQXNCLDBCQW9EakM7QUFFRixNQUFNLElBQUksR0FBRyxJQUFBLHVCQUFVLEVBR3JCO0lBQ0UsSUFBSSxFQUFFLCtDQUErQztJQUNyRCxJQUFJLEVBQUU7UUFDRixJQUFJLEVBQUU7WUFDRixXQUFXLEVBQUUsc0NBQXNDO1NBQ3REO1FBQ0QsUUFBUSxFQUFFO1lBQ04sMEJBQTBCLEVBQUUsZ0VBQWdFO1lBQzVGLDJCQUEyQixFQUFFLHdFQUF3RTtTQUN4RztRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsY0FBYyxFQUFFLEtBQUs7UUFDckIsSUFBSSxFQUFFLFlBQVk7S0FDckI7SUFDRCxjQUFjLEVBQUUsRUFBRTtJQUVsQixNQUFNLENBQUMsT0FBTztRQUNWLE9BQU87WUFDSCxrQkFBa0IsRUFBRSxDQUFDLElBQW1CLEVBQUUsRUFBRTtnQkFDeEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFBLDhCQUFzQixFQUNoRCxJQUFtQyxDQUN0QyxDQUFDO2dCQUVGLElBQUkscUJBQXFCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztvQkFDaEQsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDWCxJQUFJLEVBQUUsSUFBSTt3QkFDVixTQUFTLEVBQUUsNkJBQTZCO3FCQUMzQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztnQkFDRCxJQUFJLHFCQUFxQixDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQy9DLE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ1gsSUFBSSxFQUFFLElBQUk7d0JBQ1YsU0FBUyxFQUFFLDRCQUE0QjtxQkFDMUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO1NBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDLENBQUM7QUFFSCxrQkFBZSxJQUFJLENBQUMifQ==
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class ArraySetResultModel {
|
|
2
4
|
constructor(isArrayShouldBeSetTrue, isArrayShouldBeSetFalse) {
|
|
3
5
|
this.isArrayShouldBeSetTrue = isArrayShouldBeSetTrue;
|
|
4
6
|
this.isArrayShouldBeSetFalse = isArrayShouldBeSetFalse;
|
|
5
7
|
}
|
|
6
8
|
}
|
|
7
|
-
|
|
9
|
+
exports.default = ArraySetResultModel;
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlTZXRSZXN1bHRNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydWxlcy9hcGlQcm9wZXJ0eVJldHVybmluZ0FycmF5U2hvdWxkU2V0QXJyYXkvYXJyYXlTZXRSZXN1bHRNb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE1BQXFCLG1CQUFtQjtJQUNwQyxZQUNXLHNCQUErQixFQUMvQix1QkFBZ0M7UUFEaEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUFTO1FBQy9CLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBUztJQUN4QyxDQUFDO0NBQ1A7QUFMRCxzQ0FLQyJ9
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shouldUseApiTagDecorator = void 0;
|
|
4
|
+
const createRule_1 = require("../../utils/createRule");
|
|
5
|
+
const typedTokenHelpers_1 = require("../../utils/typedTokenHelpers");
|
|
6
|
+
const shouldUseApiTagDecorator = (node) => {
|
|
7
|
+
const hasControllerDecorator = typedTokenHelpers_1.typedTokenHelpers.nodeHasDecoratorsNamed(node, ["Controller"]);
|
|
8
|
+
const hasApiTagDecorator = typedTokenHelpers_1.typedTokenHelpers.nodeHasDecoratorsNamed(node, [
|
|
6
9
|
"ApiTags",
|
|
7
10
|
]);
|
|
8
11
|
return hasControllerDecorator && !hasApiTagDecorator;
|
|
9
12
|
};
|
|
10
|
-
|
|
13
|
+
exports.shouldUseApiTagDecorator = shouldUseApiTagDecorator;
|
|
14
|
+
const rule = (0, createRule_1.createRule)({
|
|
11
15
|
name: "controllers-should-supply-api-tags",
|
|
12
16
|
meta: {
|
|
13
17
|
docs: {
|
|
@@ -24,7 +28,7 @@ const rule = createRule({
|
|
|
24
28
|
create(context) {
|
|
25
29
|
return {
|
|
26
30
|
ClassDeclaration(node) {
|
|
27
|
-
if (shouldUseApiTagDecorator(node)) {
|
|
31
|
+
if ((0, exports.shouldUseApiTagDecorator)(node)) {
|
|
28
32
|
context.report({
|
|
29
33
|
node: node,
|
|
30
34
|
messageId: "shouldUseApiTagDecorator",
|
|
@@ -34,5 +38,5 @@ const rule = createRule({
|
|
|
34
38
|
};
|
|
35
39
|
},
|
|
36
40
|
});
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
exports.default = rule;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlckRlY29yYXRlZEhhc0FwaVRhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMvY29udHJvbGxlckRlY29yYXRlZEhhc0FwaVRhZ3MvY29udHJvbGxlckRlY29yYXRlZEhhc0FwaVRhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsdURBQWtEO0FBQ2xELHFFQUFnRTtBQUV6RCxNQUFNLHdCQUF3QixHQUFHLENBQ3BDLElBQStCLEVBQ3hCLEVBQUU7SUFDVCxNQUFNLHNCQUFzQixHQUFHLHFDQUFpQixDQUFDLHNCQUFzQixDQUNuRSxJQUFJLEVBQ0osQ0FBQyxZQUFZLENBQUMsQ0FDakIsQ0FBQztJQUVGLE1BQU0sa0JBQWtCLEdBQUcscUNBQWlCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFO1FBQ3RFLFNBQVM7S0FDWixDQUFDLENBQUM7SUFFSCxPQUFPLHNCQUFzQixJQUFJLENBQUMsa0JBQWtCLENBQUM7QUFDekQsQ0FBQyxDQUFDO0FBYlcsUUFBQSx3QkFBd0IsNEJBYW5DO0FBRUYsTUFBTSxJQUFJLEdBQUcsSUFBQSx1QkFBVSxFQUFpQztJQUNwRCxJQUFJLEVBQUUsb0NBQW9DO0lBQzFDLElBQUksRUFBRTtRQUNGLElBQUksRUFBRTtZQUNGLFdBQVcsRUFDUCwyRUFBMkU7U0FDbEY7UUFDRCxRQUFRLEVBQUU7WUFDTix3QkFBd0IsRUFBRSwrSkFBK0o7U0FDNUw7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLElBQUksRUFBRSxZQUFZO0tBQ3JCO0lBQ0QsY0FBYyxFQUFFLEVBQUU7SUFFbEIsTUFBTSxDQUFDLE9BQU87UUFDVixPQUFPO1lBQ0gsZ0JBQWdCLENBQUMsSUFBK0I7Z0JBQzVDLElBQUksSUFBQSxnQ0FBd0IsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNqQyxPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNYLElBQUksRUFBRSxJQUFJO3dCQUNWLFNBQVMsRUFBRSwwQkFBMEI7cUJBQ3hDLENBQUMsQ0FBQztnQkFDUCxDQUFDO1lBQ0wsQ0FBQztTQUNKLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyxDQUFDO0FBRUgsa0JBQWUsSUFBSSxDQUFDIn0=
|
package/dist/rules/index.js
CHANGED
|
@@ -1,38 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const injectableShouldBeProvided_1 = __importDefault(require("./injectablesShouldBeProvided/injectableShouldBeProvided"));
|
|
7
|
+
const ProviderInjectedShouldMatchFactory_1 = __importDefault(require("./providerInjectedShouldMatchFactory/ProviderInjectedShouldMatchFactory"));
|
|
8
|
+
const apiPropertyMatchesPropertyOptionality_1 = __importDefault(require("./apiPropertyMatchesPropertyOptionality/apiPropertyMatchesPropertyOptionality"));
|
|
9
|
+
const controllerDecoratedHasApiTags_1 = __importDefault(require("./controllerDecoratedHasApiTags/controllerDecoratedHasApiTags"));
|
|
10
|
+
const apiMethodsShouldSpecifyApiResponse_1 = __importDefault(require("./apiMethodsShouldSpecifyApiResponse/apiMethodsShouldSpecifyApiResponse"));
|
|
11
|
+
const apiEnumPropertyBestPractices_1 = __importDefault(require("./apiEnumPropertyBestPractices/apiEnumPropertyBestPractices"));
|
|
12
|
+
const apiPropertyReturningArrayShouldSetArray_1 = __importDefault(require("./apiPropertyReturningArrayShouldSetArray/apiPropertyReturningArrayShouldSetArray"));
|
|
13
|
+
const shouldSpecifyForbidUnknownValuesRule_1 = __importDefault(require("./shouldSpecifyForbidUnknownValues/shouldSpecifyForbidUnknownValuesRule"));
|
|
14
|
+
const paramDecoratorNameMatchesRouteParam_1 = __importDefault(require("./paramDecoratorNameMatchesRouteParam/paramDecoratorNameMatchesRouteParam"));
|
|
15
|
+
const validateNonPrimitiveNeedsDecorators_1 = __importDefault(require("./validateNonPrimitiveNeedsTypeDecorator/validateNonPrimitiveNeedsDecorators"));
|
|
16
|
+
const validateNestedOfArrayShouldSetEach_1 = __importDefault(require("./validateNestedOfArrayShouldSetEach/validateNestedOfArrayShouldSetEach"));
|
|
17
|
+
const allPropertiesAreWhitelisted_1 = __importDefault(require("./allPropertiesAreWhitelisted/allPropertiesAreWhitelisted"));
|
|
18
|
+
const allPropertiesHaveExplicitDefined_1 = __importDefault(require("./allPropertiesHaveExplicitDefined/allPropertiesHaveExplicitDefined"));
|
|
19
|
+
const apiMethodsShouldBeGuarded_1 = __importDefault(require("./apiMethodsShouldBeGuarded/apiMethodsShouldBeGuarded"));
|
|
20
|
+
const apiMethodsShouldSpecifyApiOperation_1 = __importDefault(require("./apiMethodsShouldSpecifyApiOperation/apiMethodsShouldSpecifyApiOperation"));
|
|
21
|
+
const sortModuleMetadataArrays_1 = __importDefault(require("./sortModuleMetadataArrays/sortModuleMetadataArrays"));
|
|
22
|
+
const noDuplicateDecorators_1 = __importDefault(require("./noDuplicateDecorators/noDuplicateDecorators"));
|
|
18
23
|
const allRules = {
|
|
19
|
-
"all-properties-have-explicit-defined":
|
|
20
|
-
"api-property-matches-property-optionality":
|
|
21
|
-
"injectable-should-be-provided":
|
|
22
|
-
"no-duplicate-decorators":
|
|
23
|
-
"provided-injected-should-match-factory-parameters":
|
|
24
|
-
"controllers-should-supply-api-tags":
|
|
25
|
-
"api-method-should-specify-api-response":
|
|
26
|
-
"api-method-should-specify-api-operation":
|
|
27
|
-
"api-enum-property-best-practices":
|
|
28
|
-
"api-property-returning-array-should-set-array":
|
|
29
|
-
"should-specify-forbid-unknown-values":
|
|
30
|
-
"param-decorator-name-matches-route-param":
|
|
31
|
-
"validated-non-primitive-property-needs-type-decorator":
|
|
32
|
-
"validate-nested-of-array-should-set-each":
|
|
33
|
-
"all-properties-are-whitelisted":
|
|
34
|
-
"api-methods-should-be-guarded":
|
|
35
|
-
"sort-module-metadata-arrays":
|
|
24
|
+
"all-properties-have-explicit-defined": allPropertiesHaveExplicitDefined_1.default,
|
|
25
|
+
"api-property-matches-property-optionality": apiPropertyMatchesPropertyOptionality_1.default,
|
|
26
|
+
"injectable-should-be-provided": injectableShouldBeProvided_1.default,
|
|
27
|
+
"no-duplicate-decorators": noDuplicateDecorators_1.default,
|
|
28
|
+
"provided-injected-should-match-factory-parameters": ProviderInjectedShouldMatchFactory_1.default,
|
|
29
|
+
"controllers-should-supply-api-tags": controllerDecoratedHasApiTags_1.default,
|
|
30
|
+
"api-method-should-specify-api-response": apiMethodsShouldSpecifyApiResponse_1.default,
|
|
31
|
+
"api-method-should-specify-api-operation": apiMethodsShouldSpecifyApiOperation_1.default,
|
|
32
|
+
"api-enum-property-best-practices": apiEnumPropertyBestPractices_1.default,
|
|
33
|
+
"api-property-returning-array-should-set-array": apiPropertyReturningArrayShouldSetArray_1.default,
|
|
34
|
+
"should-specify-forbid-unknown-values": shouldSpecifyForbidUnknownValuesRule_1.default,
|
|
35
|
+
"param-decorator-name-matches-route-param": paramDecoratorNameMatchesRouteParam_1.default,
|
|
36
|
+
"validated-non-primitive-property-needs-type-decorator": validateNonPrimitiveNeedsDecorators_1.default,
|
|
37
|
+
"validate-nested-of-array-should-set-each": validateNestedOfArrayShouldSetEach_1.default,
|
|
38
|
+
"all-properties-are-whitelisted": allPropertiesAreWhitelisted_1.default,
|
|
39
|
+
"api-methods-should-be-guarded": apiMethodsShouldBeGuarded_1.default,
|
|
40
|
+
"sort-module-metadata-arrays": sortModuleMetadataArrays_1.default,
|
|
36
41
|
};
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
exports.default = allRules;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwSEFBa0c7QUFDbEcsaUpBQW1JO0FBQ25JLDBKQUFrSTtBQUNsSSxrSUFBMEc7QUFDMUcsaUpBQXlIO0FBQ3pILCtIQUF1RztBQUN2RyxnS0FBd0k7QUFDeEksbUpBQXVIO0FBQ3ZILG9KQUFnSTtBQUNoSSx1SkFBK0g7QUFDL0gsaUpBQXlIO0FBQ3pILDRIQUFvRztBQUNwRywySUFBbUg7QUFDbkgsc0hBQThGO0FBQzlGLG9KQUE0SDtBQUM1SCxtSEFBMkY7QUFDM0YsMEdBQWtGO0FBQ2xGLE1BQU0sUUFBUSxHQUFHO0lBQ2Isc0NBQXNDLEVBQUUsMENBQWdDO0lBQ3hFLDJDQUEyQyxFQUN2QywrQ0FBcUM7SUFDekMsK0JBQStCLEVBQUUsb0NBQTBCO0lBQzNELHlCQUF5QixFQUFFLCtCQUFxQjtJQUNoRCxtREFBbUQsRUFDL0MsNENBQTRDO0lBQ2hELG9DQUFvQyxFQUFFLHVDQUE2QjtJQUNuRSx3Q0FBd0MsRUFDcEMsNENBQWtDO0lBQ3RDLHlDQUF5QyxFQUNyQyw2Q0FBbUM7SUFDdkMsa0NBQWtDLEVBQUUsc0NBQTRCO0lBQ2hFLCtDQUErQyxFQUMzQyxpREFBdUM7SUFDM0Msc0NBQXNDLEVBQUUsOENBQWdDO0lBQ3hFLDBDQUEwQyxFQUN0Qyw2Q0FBdUM7SUFDM0MsdURBQXVELEVBQ25ELDZDQUFtQztJQUN2QywwQ0FBMEMsRUFDdEMsNENBQWtDO0lBQ3RDLGdDQUFnQyxFQUFFLHFDQUEyQjtJQUM3RCwrQkFBK0IsRUFBRSxtQ0FBeUI7SUFDMUQsNkJBQTZCLEVBQUUsa0NBQXdCO0NBQzFELENBQUM7QUFFRixrQkFBZSxRQUFRLENBQUMifQ==
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const createRule_1 = require("../../utils/createRule");
|
|
2
7
|
// import FileEnumeratorWrapper from "../../utils/files/fileEnumerationWrapper";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
8
|
+
const nestProvidedInjectableMapper_1 = __importDefault(require("../../utils/nestModules/nestProvidedInjectableMapper"));
|
|
9
|
+
const typedTokenHelpers_1 = require("../../utils/typedTokenHelpers");
|
|
10
|
+
const customFileEnumeratorWrapper_1 = __importDefault(require("../../utils/files/customFileEnumeratorWrapper"));
|
|
6
11
|
let listOfPotentialNestModuleFiles;
|
|
7
12
|
let nestModuleMap;
|
|
8
13
|
const findModuleMapping = (className, propertyName, nestModuleMap) => {
|
|
@@ -14,10 +19,10 @@ const findModuleMapping = (className, propertyName, nestModuleMap) => {
|
|
|
14
19
|
const checkNode = (
|
|
15
20
|
// super fragile types but whatevs
|
|
16
21
|
node, decoratorName, propertyName, messageId, context) => {
|
|
17
|
-
if (
|
|
22
|
+
if (nestProvidedInjectableMapper_1.default.isNestInjectableThatIsNeverProvided(node)) {
|
|
18
23
|
return;
|
|
19
24
|
}
|
|
20
|
-
if (typedTokenHelpers.nodeHasDecoratorsNamed(node, [decoratorName])) {
|
|
25
|
+
if (typedTokenHelpers_1.typedTokenHelpers.nodeHasDecoratorsNamed(node, [decoratorName])) {
|
|
21
26
|
const name = node.id?.name;
|
|
22
27
|
if (!name) {
|
|
23
28
|
return;
|
|
@@ -38,9 +43,9 @@ node, decoratorName, propertyName, messageId, context) => {
|
|
|
38
43
|
}
|
|
39
44
|
};
|
|
40
45
|
function initializeModuleMappings(sourcePath, filterFromPaths, context) {
|
|
41
|
-
const mappedSourceDirectory =
|
|
42
|
-
listOfPotentialNestModuleFiles =
|
|
43
|
-
nestModuleMap =
|
|
46
|
+
const mappedSourceDirectory = nestProvidedInjectableMapper_1.default.detectDirectoryToScanForFiles(sourcePath, process.cwd());
|
|
47
|
+
listOfPotentialNestModuleFiles = customFileEnumeratorWrapper_1.default.enumerateFiles(mappedSourceDirectory, [".ts"], filterFromPaths);
|
|
48
|
+
nestModuleMap = nestProvidedInjectableMapper_1.default.parseFileList(listOfPotentialNestModuleFiles, context);
|
|
44
49
|
}
|
|
45
50
|
const defaultOptions = [
|
|
46
51
|
{
|
|
@@ -48,7 +53,7 @@ const defaultOptions = [
|
|
|
48
53
|
filterFromPaths: ["dist", "node_modules", ".test.", ".spec."],
|
|
49
54
|
},
|
|
50
55
|
];
|
|
51
|
-
const rule = createRule({
|
|
56
|
+
const rule = (0, createRule_1.createRule)({
|
|
52
57
|
name: "injectable-should-be-provided",
|
|
53
58
|
meta: {
|
|
54
59
|
docs: {
|
|
@@ -107,7 +112,7 @@ const rule = createRule({
|
|
|
107
112
|
"Program:exit"() {
|
|
108
113
|
// map the source to a mapping thing
|
|
109
114
|
// if not undefined set it to the mapping set
|
|
110
|
-
const mappedProvidedInjectables =
|
|
115
|
+
const mappedProvidedInjectables = nestProvidedInjectableMapper_1.default.mapAllProvidedInjectables(context.sourceCode.ast, context.filename);
|
|
111
116
|
if (mappedProvidedInjectables !== null) {
|
|
112
117
|
nestModuleMap.set(mappedProvidedInjectables[0], mappedProvidedInjectables[1]);
|
|
113
118
|
}
|
|
@@ -115,5 +120,5 @@ const rule = createRule({
|
|
|
115
120
|
};
|
|
116
121
|
},
|
|
117
122
|
});
|
|
118
|
-
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
123
|
+
exports.default = rule;
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0YWJsZVNob3VsZEJlUHJvdmlkZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMvaW5qZWN0YWJsZXNTaG91bGRCZVByb3ZpZGVkL2luamVjdGFibGVTaG91bGRCZVByb3ZpZGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsdURBQWtEO0FBQ2xELGdGQUFnRjtBQUNoRix3SEFBZ0c7QUFFaEcscUVBQWdFO0FBSWhFLGdIQUFrRjtBQUVsRixJQUFJLDhCQUEwQyxDQUFDO0FBQy9DLElBQUksYUFBc0QsQ0FBQztBQVMzRCxNQUFNLGlCQUFpQixHQUFHLENBQ3RCLFNBQWlCLEVBQ2pCLFlBQXlDLEVBQ3pDLGFBQXNELEVBQzFCLEVBQUU7SUFDOUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3pELE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHO0FBQ2Qsa0NBQWtDO0FBQ2xDLElBQStCLEVBQy9CLGFBQTBDLEVBQzFDLFlBQXlDLEVBQ3pDLFNBQXVELEVBQ3ZELE9BS0MsRUFDSCxFQUFFO0lBQ0EsSUFDSSxzQ0FBNEIsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsRUFDeEUsQ0FBQztRQUNDLE9BQU87SUFDWCxDQUFDO0lBQ0QsSUFBSSxxQ0FBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksRUFB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
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.standardDecoratorsToValidate = exports.shouldTrigger = void 0;
|
|
4
|
+
const createRule_1 = require("../../utils/createRule");
|
|
5
|
+
const utils_1 = require("@typescript-eslint/utils");
|
|
6
|
+
const shouldTrigger = () => {
|
|
4
7
|
return true;
|
|
5
8
|
};
|
|
6
|
-
|
|
7
|
-
|
|
9
|
+
exports.shouldTrigger = shouldTrigger;
|
|
10
|
+
exports.standardDecoratorsToValidate = ["Controller", "Injectable"];
|
|
11
|
+
const rule = (0, createRule_1.createRule)({
|
|
8
12
|
name: "no-duplicate-decorators",
|
|
9
13
|
meta: {
|
|
10
14
|
docs: {
|
|
@@ -42,7 +46,7 @@ const rule = createRule({
|
|
|
42
46
|
let decoratorsToValidate = customListArrayItem?.customList;
|
|
43
47
|
if (!customListArrayItem?.customList ||
|
|
44
48
|
customListArrayItem?.customList.length === 0) {
|
|
45
|
-
decoratorsToValidate = standardDecoratorsToValidate;
|
|
49
|
+
decoratorsToValidate = exports.standardDecoratorsToValidate;
|
|
46
50
|
}
|
|
47
51
|
return {
|
|
48
52
|
["PropertyDefinition,ClassDeclaration"](node) {
|
|
@@ -50,10 +54,10 @@ const rule = createRule({
|
|
|
50
54
|
if (allDecorators && allDecorators.length > 1) {
|
|
51
55
|
const decoratorNames = allDecorators.map((decorator) => {
|
|
52
56
|
if (decorator.expression.type ===
|
|
53
|
-
TSESTree.AST_NODE_TYPES.CallExpression &&
|
|
57
|
+
utils_1.TSESTree.AST_NODE_TYPES.CallExpression &&
|
|
54
58
|
decorator.expression.callee &&
|
|
55
59
|
decorator.expression.callee.type ===
|
|
56
|
-
TSESTree.AST_NODE_TYPES.Identifier) {
|
|
60
|
+
utils_1.TSESTree.AST_NODE_TYPES.Identifier) {
|
|
57
61
|
return decorator.expression.callee.name;
|
|
58
62
|
}
|
|
59
63
|
return "";
|
|
@@ -87,5 +91,5 @@ const rule = createRule({
|
|
|
87
91
|
};
|
|
88
92
|
},
|
|
89
93
|
});
|
|
90
|
-
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
exports.default = rule;
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9EdXBsaWNhdGVEZWNvcmF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3J1bGVzL25vRHVwbGljYXRlRGVjb3JhdG9ycy9ub0R1cGxpY2F0ZURlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQWtEO0FBRWxELG9EQUFrRDtBQU8zQyxNQUFNLGFBQWEsR0FBRyxHQUFZLEVBQUU7SUFDdkMsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRlcsUUFBQSxhQUFhLGlCQUV4QjtBQUNXLFFBQUEsNEJBQTRCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDekUsTUFBTSxJQUFJLEdBQUcsSUFBQSx1QkFBVSxFQUF3RDtJQUMzRSxJQUFJLEVBQUUseUJBQXlCO0lBQy9CLElBQUksRUFBRTtRQUNGLElBQUksRUFBRTtZQUNGLFdBQVcsRUFDUCwyRkFBMkY7U0FDbEc7UUFDRCxRQUFRLEVBQUU7WUFDTixxQkFBcUIsRUFDakIsMEVBQTBFO1NBQ2pGO1FBQ0QsTUFBTSxFQUFFO1lBQ0o7Z0JBQ0ksSUFBSSxFQUFFLFFBQStCO2dCQUNyQyxVQUFVLEVBQUU7b0JBQ1IsVUFBVSxFQUFFO3dCQUNSLFdBQVcsRUFDUCx5RUFBeUU7d0JBQzdFLElBQUksRUFBRSxPQUE4Qjt3QkFDcEMsUUFBUSxFQUFFLENBQUM7d0JBQ1gsS0FBSyxFQUFFOzRCQUNILElBQUksRUFBRSxRQUErQjs0QkFDckMsU0FBUyxFQUFFLENBQUM7eUJBQ2Y7cUJBQ0o7aUJBQ0o7YUFDSjtTQUNKO1FBQ0QsY0FBYyxFQUFFLElBQUk7UUFDcEIsSUFBSSxFQUFFLFlBQVk7S0FDckI7SUFDRCxjQUFjLEVBQUU7UUFDWjtZQUNJLFVBQVUsRUFBRSxJQUFJLEtBQUssRUFBVTtTQUNsQztLQUNKO0lBRUQsTUFBTSxDQUFDLE9BQU87UUFDVixNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENB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
|
package/dist/rules/paramDecoratorNameMatchesRouteParam/paramDecoratorNameMatchesRouteParam.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shouldTrigger = exports.isParameterNameIncludedInAPathPart = exports.hasPathPartsAnyRegexParams = exports.parsePathParts = void 0;
|
|
1
4
|
/* eslint-disable unicorn/prevent-abbreviations */
|
|
2
|
-
|
|
3
|
-
|
|
5
|
+
const utils_1 = require("@typescript-eslint/utils");
|
|
6
|
+
const createRule_1 = require("../../utils/createRule");
|
|
4
7
|
const nestRequestMethodDecoratorNames = new Set([
|
|
5
8
|
"Get",
|
|
6
9
|
"Post",
|
|
@@ -11,20 +14,20 @@ const nestRequestMethodDecoratorNames = new Set([
|
|
|
11
14
|
"Head",
|
|
12
15
|
"All",
|
|
13
16
|
]);
|
|
14
|
-
|
|
17
|
+
const parsePathParts = (decorator) => {
|
|
15
18
|
const decoratorArgument = decorator?.expression
|
|
16
19
|
?.arguments[0];
|
|
17
|
-
if (decoratorArgument?.type === TSESTree.AST_NODE_TYPES.TemplateLiteral ||
|
|
18
|
-
decoratorArgument?.type === TSESTree.AST_NODE_TYPES.Identifier) {
|
|
20
|
+
if (decoratorArgument?.type === utils_1.TSESTree.AST_NODE_TYPES.TemplateLiteral ||
|
|
21
|
+
decoratorArgument?.type === utils_1.TSESTree.AST_NODE_TYPES.Identifier) {
|
|
19
22
|
return ["dareslint__skip"];
|
|
20
23
|
}
|
|
21
|
-
if (decoratorArgument?.type === TSESTree.AST_NODE_TYPES.Literal) {
|
|
24
|
+
if (decoratorArgument?.type === utils_1.TSESTree.AST_NODE_TYPES.Literal) {
|
|
22
25
|
return [decoratorArgument.raw];
|
|
23
26
|
}
|
|
24
|
-
if (decoratorArgument?.type === TSESTree.AST_NODE_TYPES.ArrayExpression) {
|
|
27
|
+
if (decoratorArgument?.type === utils_1.TSESTree.AST_NODE_TYPES.ArrayExpression) {
|
|
25
28
|
return decoratorArgument.elements.map((x) => x.raw);
|
|
26
29
|
}
|
|
27
|
-
if (decoratorArgument?.type === TSESTree.AST_NODE_TYPES.ObjectExpression) {
|
|
30
|
+
if (decoratorArgument?.type === utils_1.TSESTree.AST_NODE_TYPES.ObjectExpression) {
|
|
28
31
|
return decoratorArgument.properties
|
|
29
32
|
.filter((x) => x.key
|
|
30
33
|
.name === "path")
|
|
@@ -32,24 +35,26 @@ export const parsePathParts = (decorator) => {
|
|
|
32
35
|
}
|
|
33
36
|
return [];
|
|
34
37
|
};
|
|
38
|
+
exports.parsePathParts = parsePathParts;
|
|
35
39
|
/**
|
|
36
40
|
* nestjs allows for paths with _+?()*
|
|
37
41
|
* this rule doesn't support parsing those so we'll just pass
|
|
38
42
|
*/
|
|
39
|
-
|
|
43
|
+
const hasPathPartsAnyRegexParams = (pathPartsToCheck) => {
|
|
40
44
|
// prettier-ignore
|
|
41
45
|
const specialCharacterRegex = /(dareslint__skip|\*|\+|\?|\(|\)|_)/; //new RegExp("([\?\+\*\_\(\)])")
|
|
42
46
|
return pathPartsToCheck.some((pathPart) => {
|
|
43
47
|
return specialCharacterRegex.test(pathPart);
|
|
44
48
|
});
|
|
45
49
|
};
|
|
50
|
+
exports.hasPathPartsAnyRegexParams = hasPathPartsAnyRegexParams;
|
|
46
51
|
/**
|
|
47
52
|
* Checks if there is a matching path part for the paramName
|
|
48
53
|
* @param paramName
|
|
49
54
|
* @param pathPartsToCheck
|
|
50
55
|
* @returns
|
|
51
56
|
*/
|
|
52
|
-
|
|
57
|
+
const isParameterNameIncludedInAPathPart = (paramName, pathPartsToCheck) => {
|
|
53
58
|
return pathPartsToCheck.some((pathPart) => {
|
|
54
59
|
return (
|
|
55
60
|
// note to reader: this might be better as a regex. feel free to open a pr!
|
|
@@ -62,7 +67,8 @@ export const isParameterNameIncludedInAPathPart = (paramName, pathPartsToCheck)
|
|
|
62
67
|
pathPart.includes(`':${paramName}/`));
|
|
63
68
|
});
|
|
64
69
|
};
|
|
65
|
-
|
|
70
|
+
exports.isParameterNameIncludedInAPathPart = isParameterNameIncludedInAPathPart;
|
|
71
|
+
const shouldTrigger = (decorator) => {
|
|
66
72
|
if (!decorator) {
|
|
67
73
|
return {
|
|
68
74
|
hasColonInName: false,
|
|
@@ -94,7 +100,7 @@ export const shouldTrigger = (decorator) => {
|
|
|
94
100
|
return (d.expression
|
|
95
101
|
.callee.name === "Controller");
|
|
96
102
|
});
|
|
97
|
-
pathPartsToCheck = pathPartsToCheck.concat(parsePathParts(controllerDecorator));
|
|
103
|
+
pathPartsToCheck = pathPartsToCheck.concat((0, exports.parsePathParts)(controllerDecorator));
|
|
98
104
|
// grab any api method path parts from method decorator
|
|
99
105
|
const methodDefinition = decorator.parent.parent
|
|
100
106
|
?.parent;
|
|
@@ -103,11 +109,11 @@ export const shouldTrigger = (decorator) => {
|
|
|
103
109
|
return nestRequestMethodDecoratorNames.has(d.expression
|
|
104
110
|
.callee.name);
|
|
105
111
|
});
|
|
106
|
-
pathPartsToCheck = pathPartsToCheck.concat(parsePathParts(methodDecorator));
|
|
112
|
+
pathPartsToCheck = pathPartsToCheck.concat((0, exports.parsePathParts)(methodDecorator));
|
|
107
113
|
const shouldIgnoreThisSetOfRoutes =
|
|
108
114
|
// is a template literal argument
|
|
109
115
|
// is an identifier argument
|
|
110
|
-
hasPathPartsAnyRegexParams(pathPartsToCheck);
|
|
116
|
+
(0, exports.hasPathPartsAnyRegexParams)(pathPartsToCheck);
|
|
111
117
|
if (shouldIgnoreThisSetOfRoutes) {
|
|
112
118
|
return {
|
|
113
119
|
hasColonInName: false,
|
|
@@ -117,10 +123,11 @@ export const shouldTrigger = (decorator) => {
|
|
|
117
123
|
// check that the param name is in one path part
|
|
118
124
|
return {
|
|
119
125
|
hasColonInName: false,
|
|
120
|
-
paramNameNotMatchedInPath: !isParameterNameIncludedInAPathPart(paramName, pathPartsToCheck),
|
|
126
|
+
paramNameNotMatchedInPath: !(0, exports.isParameterNameIncludedInAPathPart)(paramName, pathPartsToCheck),
|
|
121
127
|
};
|
|
122
128
|
};
|
|
123
|
-
|
|
129
|
+
exports.shouldTrigger = shouldTrigger;
|
|
130
|
+
const rule = (0, createRule_1.createRule)({
|
|
124
131
|
name: "param-decorator-name-matches-route-param",
|
|
125
132
|
meta: {
|
|
126
133
|
docs: {
|
|
@@ -142,7 +149,7 @@ const rule = createRule({
|
|
|
142
149
|
.callee.name !== "Param") {
|
|
143
150
|
return;
|
|
144
151
|
}
|
|
145
|
-
const result = shouldTrigger(node);
|
|
152
|
+
const result = (0, exports.shouldTrigger)(node);
|
|
146
153
|
if (result.paramNameNotMatchedInPath) {
|
|
147
154
|
context.report({
|
|
148
155
|
node: node,
|
|
@@ -159,5 +166,5 @@ const rule = createRule({
|
|
|
159
166
|
};
|
|
160
167
|
},
|
|
161
168
|
});
|
|
162
|
-
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
169
|
+
exports.default = rule;
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1EZWNvcmF0b3JOYW1lTWF0Y2hlc1JvdXRlUGFyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMvcGFyYW1EZWNvcmF0b3JOYW1lTWF0Y2hlc1JvdXRlUGFyYW0vcGFyYW1EZWNvcmF0b3JOYW1lTWF0Y2hlc1JvdXRlUGFyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQWtEO0FBQ2xELG9EQUFrRDtBQUNsRCx1REFBa0Q7QUFPbEQsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUM1QyxLQUFLO0lBQ0wsTUFBTTtJQUNOLEtBQUs7SUFDTCxRQUFRO0lBQ1IsT0FBTztJQUNQLFNBQVM7SUFDVCxNQUFNO0lBQ04sS0FBSztDQUNSLENBQUMsQ0FBQztBQUVJLE1BQU0sY0FBYyxHQUFHLENBQUMsU0FBNkIsRUFBWSxFQUFFO0lBQ3RFLE1BQU0saUJBQWlCLEdBQUksU0FBUyxFQUFFLFVBQXNDO1FBQ3hFLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRW5CLElBQ0ksaUJBQWlCLEVBQUUsSUFBSSxLQUFLLGdCQUFRLENBQUMsY0FBYyxDQUFDLGVBQWU7UUFDbkUsaUJBQWlCLEVBQUUsSUFBSSxLQUFLLGdCQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFDaEUsQ0FBQztRQUNDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLGlCQUFpQixFQUFFLElBQUksS0FBSyxnQkFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5RCxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQUksaUJBQWlCLEVBQUUsSUFBSSxLQUFLLGdCQUFRLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RFLE9BQU8saUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDakMs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
|