@darraghor/eslint-plugin-nestjs-typed 6.0.0-rc.8 → 6.0.0
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 +5 -7
- package/dist/index.js +40 -75
- 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 +13 -18
- 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.js +2 -6
- package/dist/utils/nestModules/nestModuleAstParser.d.ts +1 -1
- package/dist/utils/nestModules/nestModuleAstParser.js +9 -12
- package/dist/utils/nestModules/nestProvidedInjectableMapper.d.ts +1 -1
- package/dist/utils/nestModules/nestProvidedInjectableMapper.js +14 -52
- 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 +1 -1
- 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,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const createRule_1 = require("../../utils/createRule");
|
|
6
|
-
const utils_2 = require("@typescript-eslint/utils");
|
|
7
|
-
const isValidationPipeNewExpression = (node) => {
|
|
1
|
+
import { TSESTree } from "@typescript-eslint/utils";
|
|
2
|
+
import { createRule } from "../../utils/createRule.js";
|
|
3
|
+
import { ASTUtils } from "@typescript-eslint/utils";
|
|
4
|
+
export const isValidationPipeNewExpression = (node) => {
|
|
8
5
|
const newExpression = node;
|
|
9
6
|
const callee = newExpression.callee;
|
|
10
7
|
if (callee && callee.name === "ValidationPipe") {
|
|
@@ -12,14 +9,13 @@ const isValidationPipeNewExpression = (node) => {
|
|
|
12
9
|
}
|
|
13
10
|
return false;
|
|
14
11
|
};
|
|
15
|
-
|
|
16
|
-
const checkObjectExpression = (os) => {
|
|
12
|
+
export const checkObjectExpression = (os) => {
|
|
17
13
|
if (!os) {
|
|
18
14
|
return false;
|
|
19
15
|
}
|
|
20
16
|
// eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style
|
|
21
17
|
const forbidUnknownValuesProperty = os.properties
|
|
22
|
-
.filter(
|
|
18
|
+
.filter(ASTUtils.isNodeOfType(TSESTree.AST_NODE_TYPES.Property))
|
|
23
19
|
.find((p) => p.key.name === "forbidUnknownValues");
|
|
24
20
|
// property is not present. this is wrong.
|
|
25
21
|
if (os && !forbidUnknownValuesProperty) {
|
|
@@ -33,10 +29,9 @@ const checkObjectExpression = (os) => {
|
|
|
33
29
|
// otherwise ignore this. we don't know the value.
|
|
34
30
|
return false;
|
|
35
31
|
};
|
|
36
|
-
|
|
37
|
-
const shouldTriggerNewExpressionHasProperty = (node) => {
|
|
32
|
+
export const shouldTriggerNewExpressionHasProperty = (node) => {
|
|
38
33
|
// only look at ValidationPipe expressions
|
|
39
|
-
if (!
|
|
34
|
+
if (!isValidationPipeNewExpression(node)) {
|
|
40
35
|
return false;
|
|
41
36
|
}
|
|
42
37
|
const newExpression = node;
|
|
@@ -45,28 +40,26 @@ const shouldTriggerNewExpressionHasProperty = (node) => {
|
|
|
45
40
|
// or if the properties are spread
|
|
46
41
|
if (newExpression.arguments.length === 0 ||
|
|
47
42
|
newExpression.arguments[0].type !==
|
|
48
|
-
|
|
49
|
-
newExpression.arguments[0].properties.some(
|
|
43
|
+
TSESTree.AST_NODE_TYPES.ObjectExpression ||
|
|
44
|
+
newExpression.arguments[0].properties.some(ASTUtils.isNodeOfType(TSESTree.AST_NODE_TYPES.SpreadElement))) {
|
|
50
45
|
return false;
|
|
51
46
|
}
|
|
52
47
|
const argument = newExpression?.arguments[0];
|
|
53
|
-
return
|
|
48
|
+
return checkObjectExpression(argument);
|
|
54
49
|
};
|
|
55
|
-
|
|
56
|
-
const shouldTriggerForVariableDeclaratorExpression = (node) => {
|
|
50
|
+
export const shouldTriggerForVariableDeclaratorExpression = (node) => {
|
|
57
51
|
// if the developer hasn't annotated the object we can't continue to check these rules correctly (we don't know if anonymous objects need to have any props)
|
|
58
52
|
const variableDeclarator = node;
|
|
59
53
|
const asExpression = variableDeclarator.init;
|
|
60
|
-
const typeAnnotation = asExpression
|
|
61
|
-
const typeName = typeAnnotation?.typeName;
|
|
54
|
+
const typeAnnotation = asExpression?.typeAnnotation;
|
|
55
|
+
const typeName = typeAnnotation && typeAnnotation?.typeName;
|
|
62
56
|
if (typeName === undefined || typeName.name !== "ValidationPipeOptions") {
|
|
63
57
|
return false;
|
|
64
58
|
}
|
|
65
59
|
// otherwise check the object expression is what we want
|
|
66
|
-
return
|
|
60
|
+
return checkObjectExpression(asExpression.expression);
|
|
67
61
|
};
|
|
68
|
-
|
|
69
|
-
const rule = (0, createRule_1.createRule)({
|
|
62
|
+
const rule = createRule({
|
|
70
63
|
name: "validation-pipe-should-use-forbid-unknown",
|
|
71
64
|
meta: {
|
|
72
65
|
docs: {
|
|
@@ -84,7 +77,7 @@ const rule = (0, createRule_1.createRule)({
|
|
|
84
77
|
return {
|
|
85
78
|
NewExpression(node) {
|
|
86
79
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
87
|
-
const result =
|
|
80
|
+
const result = shouldTriggerNewExpressionHasProperty(node);
|
|
88
81
|
if (result) {
|
|
89
82
|
context.report({
|
|
90
83
|
node: node,
|
|
@@ -94,7 +87,7 @@ const rule = (0, createRule_1.createRule)({
|
|
|
94
87
|
},
|
|
95
88
|
VariableDeclarator(node) {
|
|
96
89
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
97
|
-
const result =
|
|
90
|
+
const result = shouldTriggerForVariableDeclaratorExpression(node);
|
|
98
91
|
if (result) {
|
|
99
92
|
context.report({
|
|
100
93
|
node: node,
|
|
@@ -105,5 +98,5 @@ const rule = (0, createRule_1.createRule)({
|
|
|
105
98
|
};
|
|
106
99
|
},
|
|
107
100
|
});
|
|
108
|
-
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
export default rule;
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdWxkU3BlY2lmeUZvcmJpZFVua25vd25WYWx1ZXNSdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3J1bGVzL3Nob3VsZFNwZWNpZnlGb3JiaWRVbmtub3duVmFsdWVzL3Nob3VsZFNwZWNpZnlGb3JiaWRVbmtub3duVmFsdWVzUnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLElBQW1CLEVBQVcsRUFBRTtJQUMxRSxNQUFNLGFBQWEsR0FBRyxJQUE4QixDQUFDO0lBQ3JELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUE2QixDQUFDO0lBQzNELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDakMsRUFBNkIsRUFDdEIsRUFBRTtJQUNULElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNOLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxnRkFBZ0Y7SUFDaEYsTUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUMsVUFBVTtTQUM1QyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9ELElBQUksQ0FDRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBQyxDQUFDLEdBQTJCLENBQUMsSUFBSSxLQUFLLHFC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
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVOb25QcmltaXRpdmVOZWVkc0RlY29yYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMvdmFsaWRhdGVOb25QcmltaXRpdmVOZWVkc1R5cGVEZWNvcmF0b3IvdmFsaWRhdGVOb25QcmltaXRpdmVOZWVkc0RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0RBQWtEO0FBQ2xELE9BQU8sRUFBQyxjQUFjLEVBQVksV0FBVyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDL0UsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBR25FLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDO0lBQzNCLGNBQWMsQ0FBQyxlQUFlO0lBQzlCLGNBQWMsQ0FBQyxnQkFBZ0I7SUFDL0IsY0FBYyxDQUFDLGVBQWU7SUFDOUIsY0FBYyxDQUFDLGFBQWE7SUFDNUIsY0FBYyxDQUFDLGFBQWE7SUFDNUIsY0FBYyxDQUFDLGdCQUFnQjtJQUMvQixjQUFjLENBQUMsWUFBWTtJQUMzQixjQUFjLENBQUMsZUFBZTtDQUNqQyxDQUFDLENBQUM7QUFPSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsR0FBWSxFQUFFO0lBQ3ZDLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FHckI7SUFDRSxJQUFJLEVBQUUsdURBQXVEO0lBQzdELElBQUksRUFBRTtRQUNGLElBQUksRUFBRTtZQUNGLFdBQVcsRUFDUCxnRkFBZ0Y7U0FDdkY7UUFDRCxRQUFRLEVBQUU7WUFDTix3QkFBd0IsRUFDcEIsd0VBQXdFO1lBQzVFLHNCQUFzQixFQUNsQiw4SkFBOEo7U0FDcks7UUFDRCxNQUFNLEVBQUU7WUFDSjtnQkFDSSxJQUFJLEVBQUUsUUFBK0I7Z0JBQ3JDLFVB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
|
|
@@ -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=
|