@darraghor/eslint-plugin-nestjs-typed 3.0.0 → 3.4.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.
Files changed (36) hide show
  1. package/README.md +154 -13
  2. package/dist/configs/index.d.ts +2 -0
  3. package/dist/configs/recommended.d.ts +2 -0
  4. package/dist/configs/recommended.js +3 -1
  5. package/dist/fixtures/file.d.ts +0 -0
  6. package/dist/fixtures/file.js +2 -0
  7. package/dist/index.d.ts +13 -4
  8. package/dist/rules/apiEnumPropertyBestPractices/apiEnumPropertyBestPractices.d.ts +2 -2
  9. package/dist/rules/apiEnumPropertyBestPractices/apiEnumPropertyBestPractices.js +2 -3
  10. package/dist/rules/apiPropertyMatchesPropertyOptionality/apiPropertyMatchesPropertyOptionality.d.ts +1 -1
  11. package/dist/rules/apiPropertyMatchesPropertyOptionality/apiPropertyMatchesPropertyOptionality.js +2 -2
  12. package/dist/rules/apiPropertyReturningArrayShouldSetArray/apiPropertyReturningArrayShouldSetArray.d.ts +1 -1
  13. package/dist/rules/apiPropertyReturningArrayShouldSetArray/apiPropertyReturningArrayShouldSetArray.js +7 -16
  14. package/dist/rules/index.d.ts +11 -4
  15. package/dist/rules/index.js +5 -1
  16. package/dist/rules/paramDecoratorNameMatchesRouteParam/paramDecoratorNameMatchesRouteParam.d.ts +12 -0
  17. package/dist/rules/paramDecoratorNameMatchesRouteParam/paramDecoratorNameMatchesRouteParam.js +135 -0
  18. package/dist/rules/paramDecoratorNameMatchesRouteParam/rule.testData.d.ts +10 -0
  19. package/dist/rules/paramDecoratorNameMatchesRouteParam/rule.testData.js +125 -0
  20. package/dist/rules/shouldSpecifyForbidUnknownValues/shouldSpecifyForbidUnknownValuesRule.d.ts +10 -0
  21. package/dist/rules/shouldSpecifyForbidUnknownValues/shouldSpecifyForbidUnknownValuesRule.js +109 -0
  22. package/dist/rules/validate-non-primitves-needs-decorators/validateNonPrimitiveNeedsDecorators.d.ts +6 -0
  23. package/dist/rules/validate-non-primitves-needs-decorators/validateNonPrimitiveNeedsDecorators.js +54 -0
  24. package/dist/testing/fixtureSetup.d.ts +1 -0
  25. package/dist/testing/fixtureSetup.js +13 -0
  26. package/dist/utils/files/fileEnumerationWrapper.d.ts +1 -2
  27. package/dist/utils/files/fileEnumerationWrapper.js +8 -13
  28. package/dist/utils/files/isFilteredPath.d.ts +4 -0
  29. package/dist/utils/files/isFilteredPath.js +16 -0
  30. package/dist/utils/nestModules/nestProvidedInjectableMapper.d.ts +1 -1
  31. package/dist/utils/nestModules/nestProvidedInjectableMapper.js +1 -1
  32. package/dist/utils/nestModules/{nestProvidedInjectableMapper.test-date.d.ts → nestProvidedInjectableMapper.testData.d.ts} +0 -0
  33. package/dist/utils/nestModules/{nestProvidedInjectableMapper.test-date.js → nestProvidedInjectableMapper.testData.js} +1 -1
  34. package/dist/utils/typedTokenHelpers.d.ts +8 -1
  35. package/dist/utils/typedTokenHelpers.js +45 -1
  36. package/package.json +3 -3
package/README.md CHANGED
@@ -1,7 +1,42 @@
1
- # Some eslint rules for working with NestJs projects
1
+ ## A note on versions
2
+
3
+ Version 2.x supports Eslint version <=7.x and typescript eslint parser 4
4
+
5
+ Version 3.x supports Eslint version >=8.x and typescript eslint parser 5+
6
+
7
+ There were many breaking changes between these versions.
8
+
9
+ ## Index of Available rules
10
+
11
+ Details for each rule are available in sections below.
12
+
13
+ Nest Modules
14
+
15
+ - provided-injected-should-match-factory-parameters
16
+ - injectable-should-be-provided
17
+
18
+ Nest Swagger
19
+
20
+ - api-property-matches-property-optionality
21
+ - controllers-should-supply-api-tags
22
+ - api-method-should-specify-api-response
23
+ - api-enum-property-best-practices
24
+ - api-property-returning-array-should-set-array
25
+
26
+ Preventing bugs
27
+
28
+ - param-decorator-name-matches-route-param
29
+
30
+ Security
31
+
32
+ - should-specify-forbid-unknown-values
2
33
 
3
34
  ## Why use this package?
4
35
 
36
+ If you use NestJs (https://nestjs.com/) then these rules will help keep you usage of decorators consistent.
37
+
38
+ See the following summaries
39
+
5
40
  ### 1. Detect Nest Dependency Injection issues
6
41
 
7
42
  There are some things you don't want to forget when working with Nest dependency injection.
@@ -12,7 +47,7 @@ In particular if you're using custom providers the errors can be really tricky t
12
47
 
13
48
  These are described in the "Common Errors" section of the nest js docs.
14
49
 
15
- ### 2. Using Open Api / Swagger decorators and automatically generating a clients
50
+ ### 1. Using Open Api / Swagger decorators and automatically generating a clients
16
51
 
17
52
  When working with NestJS I generate my front end client and models using the swagger generated from the nest controllers and models.
18
53
 
@@ -20,20 +55,15 @@ I have a bunch of rules here that are mostly for strict typing with decorators f
20
55
 
21
56
  These rules are somewhat opinionated, but necessary for clean model generation if using an Open Api model generator.
22
57
 
23
- ## Available rule index (more details are available for each rule below)
24
-
25
- Nest Modules
58
+ ### 1. Helping prevent bugs
26
59
 
27
- - provided-injected-should-match-factory-parameters
28
- - injectable-should-be-provided
60
+ There are some tightly coupled but untyped decorators and things like that in nest that will catch you out if your not careful. There are some rules to help prevent issues that have caught me out before.
29
61
 
30
- Nest Swagger
62
+ ### 1. Security
31
63
 
32
- - api-property-matches-property-optionality
33
- - controllers-should-supply-api-tags
34
- - api-method-should-specify-api-response
35
- - api-enum-property-best-practices
36
- - api-property-returning-array-should-set-array
64
+ There is a CVE for class-transformer when using random javascript objects. You need to be careful about configuring the ValidationPipe in NestJs. See
65
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-18413
66
+ https://github.com/typestack/class-validator/issues/438
37
67
 
38
68
  ## To install
39
69
 
@@ -73,6 +103,117 @@ Note: You can easily turn off all the swagger rules if you don't use swagger by
73
103
 
74
104
  ## Rule Details
75
105
 
106
+ ### Rule: param-decorator-name-matches-route-param
107
+
108
+ This rule will verify you have entered a `Param("name")` that has a matching url parameter in a controller or method decorator
109
+
110
+ e.g. this passes because the uuid param is in the `Get()` decorator
111
+
112
+ ```ts
113
+ @Controller("custom-bot")
114
+ export class CustomBotController {
115
+ constructor() {}
116
+
117
+ @Get(":uuid")
118
+ @ApiOkResponse({type: CustomBot})
119
+ findOne(
120
+ @Param("uuid") uuid: string,
121
+ @Request() request: RequestWithUser
122
+ ): Promise<CustomBot> {
123
+ return this.customBotService.findOne(uuid, request.user.uuid);
124
+ }
125
+ }
126
+ ```
127
+
128
+ this passes because the uuid param is in the `Controller()` decorator
129
+
130
+ ```ts
131
+ @Controller("custom-bot/:uuid")
132
+ export class CustomBotController {
133
+ constructor() {}
134
+
135
+ @Get()
136
+ @ApiOkResponse({type: CustomBot})
137
+ findOne(
138
+ @Param("uuid") uuid: string,
139
+ @Request() request: RequestWithUser
140
+ ): Promise<CustomBot> {
141
+ return this.customBotService.findOne(uuid, request.user.uuid);
142
+ }
143
+ }
144
+ ```
145
+
146
+ This fails because there is a typo in the param decorator
147
+
148
+ ```ts
149
+ @Controller("custom-bot")
150
+ export class CustomBotController {
151
+ constructor() {}
152
+
153
+ @Get(":uuid")
154
+ @ApiOkResponse({type: CustomBot})
155
+ findOne(
156
+ @Param("uui") uuid: string,
157
+ @Request() request: RequestWithUser
158
+ ): Promise<CustomBot> {
159
+ return this.customBotService.findOne(uuid, request.user.uuid);
160
+ }
161
+ }
162
+ ```
163
+
164
+ this fails because you shouldn't put the `:` in the param decorator
165
+
166
+ ```ts
167
+ @Controller("custom-bot")
168
+ export class CustomBotController {
169
+ constructor() {}
170
+
171
+ @Get(":uuid")
172
+ @ApiOkResponse({type: CustomBot})
173
+ findOne(
174
+ @Param(":uuid") uuid: string,
175
+ @Request() request: RequestWithUser
176
+ ): Promise<CustomBot> {
177
+ return this.customBotService.findOne(uuid, request.user.uuid);
178
+ }
179
+ }
180
+ ```
181
+
182
+ ### Rule: should-specify-forbid-unknown-values
183
+
184
+ This checks when if you are setting ValidationPipe parameters you set forbidUnknownValues to true.
185
+
186
+ e.g. this passes
187
+
188
+ ```ts
189
+ const validationPipeB = new ValidationPipe({
190
+ forbidNonWhitelisted: true,
191
+ forbidUnknownValues: true,
192
+ });
193
+ ```
194
+
195
+ this fails because property is not set
196
+
197
+ ```ts
198
+ const validationPipeB = new ValidationPipe({
199
+ forbidNonWhitelisted: true,
200
+ });
201
+ ```
202
+
203
+ this fails because property is set to false
204
+
205
+ ```ts
206
+ const validationPipeB = new ValidationPipe({
207
+ forbidNonWhitelisted: false,
208
+ });
209
+ ```
210
+
211
+ this passes because the default values seem to work ok
212
+
213
+ ```ts
214
+ const validationPipeB = new ValidationPipe();
215
+ ```
216
+
76
217
  ### Rule: provided-injected-should-match-factory-parameters
77
218
 
78
219
  Checks that there are the same number of injected items in a Provider that are passed to the factory method
@@ -15,6 +15,8 @@ declare const allConfigs: {
15
15
  "@darraghor/nestjs-typed/controllers-should-supply-api-tags": string;
16
16
  "@darraghor/nestjs-typed/api-enum-property-best-practices": string;
17
17
  "@darraghor/nestjs-typed/api-property-returning-array-should-set-array": string;
18
+ "@darraghor/nestjs-typed/should-specify-forbid-unknown-values": string;
19
+ "@darraghor/nestjs-typed/param-decorator-name-matches-route-param": string;
18
20
  };
19
21
  };
20
22
  "no-swagger": {
@@ -14,6 +14,8 @@ declare const _default: {
14
14
  "@darraghor/nestjs-typed/controllers-should-supply-api-tags": string;
15
15
  "@darraghor/nestjs-typed/api-enum-property-best-practices": string;
16
16
  "@darraghor/nestjs-typed/api-property-returning-array-should-set-array": string;
17
+ "@darraghor/nestjs-typed/should-specify-forbid-unknown-values": string;
18
+ "@darraghor/nestjs-typed/param-decorator-name-matches-route-param": string;
17
19
  };
18
20
  };
19
21
  export = _default;
@@ -17,6 +17,8 @@ module.exports = {
17
17
  "@darraghor/nestjs-typed/controllers-should-supply-api-tags": "error",
18
18
  "@darraghor/nestjs-typed/api-enum-property-best-practices": "error",
19
19
  "@darraghor/nestjs-typed/api-property-returning-array-should-set-array": "error",
20
+ "@darraghor/nestjs-typed/should-specify-forbid-unknown-values": "error",
21
+ "@darraghor/nestjs-typed/param-decorator-name-matches-route-param": "error",
20
22
  },
21
23
  };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb21tZW5kZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlncy9yZWNvbW1lbmRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUJBQVM7SUFDTCxNQUFNLEVBQUUsMkJBQTJCO0lBQ25DLGFBQWEsRUFBRSxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUM7SUFDckMsS0FBSyxFQUFFO1FBQ0gsMkRBQTJEO1FBQzNELDJFQUEyRSxFQUN2RSxPQUFPO1FBQ1gsdURBQXVELEVBQUU7WUFDckQsT0FBTztZQUNQO2dCQUNJLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztnQkFDcEIsZUFBZSxFQUFFLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7YUFDeEQ7U0FDSjtRQUNELG1FQUFtRSxFQUMvRCxPQUFPO1FBQ1gsZ0VBQWdFLEVBQzVELE9BQU87UUFDWCw0REFBNEQsRUFBRSxPQUFPO1FBQ3JFLDBEQUEwRCxFQUFFLE9BQU87UUFDbkUsdUVBQXVFLEVBQ25FLE9BQU87S0FDZDtDQUNKLENBQUMifQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb21tZW5kZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlncy9yZWNvbW1lbmRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUJBQVM7SUFDTCxNQUFNLEVBQUUsMkJBQTJCO0lBQ25DLGFBQWEsRUFBRSxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUM7SUFDckMsS0FBSyxFQUFFO1FBQ0gsMkRBQTJEO1FBQzNELDJFQUEyRSxFQUN2RSxPQUFPO1FBQ1gsdURBQXVELEVBQUU7WUFDckQsT0FBTztZQUNQO2dCQUNJLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztnQkFDcEIsZUFBZSxFQUFFLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7YUFDeEQ7U0FDSjtRQUNELG1FQUFtRSxFQUMvRCxPQUFPO1FBQ1gsZ0VBQWdFLEVBQzVELE9BQU87UUFDWCw0REFBNEQsRUFBRSxPQUFPO1FBQ3JFLDBEQUEwRCxFQUFFLE9BQU87UUFDbkUsdUVBQXVFLEVBQ25FLE9BQU87UUFDWCw4REFBOEQsRUFBRSxPQUFPO1FBQ3ZFLGtFQUFrRSxFQUM5RCxPQUFPO0tBQ2Q7Q0FDSixDQUFDIn0=
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  declare const configuration: {
2
2
  rules: {
3
3
  "api-property-matches-property-optionality": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"shouldUseOptionalDecorator" | "shouldUseRequiredDecorator", never[], {
4
- ClassProperty(node: import("@typescript-eslint/types/dist/ast-spec").PropertyDefinition): void;
4
+ PropertyDefinition(node: import("@typescript-eslint/types/dist/ast-spec").PropertyDefinition): void;
5
5
  }>;
6
6
  "injectable-should-be-provided": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"injectableInModule" | "controllersInModule", never[], {
7
7
  ClassDeclaration(node: import("@typescript-eslint/types/dist/ast-spec").ClassDeclaration): void;
@@ -16,11 +16,18 @@ declare const configuration: {
16
16
  "api-method-should-specify-api-response": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"shouldSpecifyApiResponse", never[], {
17
17
  MethodDefinition(node: import("@typescript-eslint/types/dist/ast-spec").MethodDefinition): void;
18
18
  }>;
19
- "api-enum-property-best-practices": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"needsEnumNameAdded" | "needsTypeRemoved" | "enumNameShouldMatchType" | "randomTest", never[], {
20
- ClassProperty(node: import("@typescript-eslint/types/dist/ast-spec").Node): void;
19
+ "api-enum-property-best-practices": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"needsEnumNameAdded" | "needsTypeRemoved" | "enumNameShouldMatchType", never[], {
20
+ PropertyDefinition(node: import("@typescript-eslint/types/dist/ast-spec").Node): void;
21
21
  }>;
22
22
  "api-property-returning-array-should-set-array": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"shouldSetArrayPropertyTrue" | "shouldSetArrayPropertyFalse", never[], {
23
- ClassProperty(node: import("@typescript-eslint/types/dist/ast-spec").PropertyDefinition): void;
23
+ PropertyDefinition: (node: import("@typescript-eslint/types/dist/ast-spec").Node) => void;
24
+ }>;
25
+ "should-specify-forbid-unknown-values": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"shouldSpecifyForbidUnknownValues", never[], {
26
+ NewExpression(node: import("@typescript-eslint/types/dist/ast-spec").Node): void;
27
+ VariableDeclarator(node: import("@typescript-eslint/types/dist/ast-spec").Node): void;
28
+ }>;
29
+ "param-decorator-name-matches-route-param": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"paramIdentifierDoesntNeedColon" | "paramIdentifierShouldMatch", never[], {
30
+ Decorator(node: import("@typescript-eslint/types/dist/ast-spec").Decorator): void;
24
31
  }>;
25
32
  };
26
33
  configs: {
@@ -40,6 +47,8 @@ declare const configuration: {
40
47
  "@darraghor/nestjs-typed/controllers-should-supply-api-tags": string;
41
48
  "@darraghor/nestjs-typed/api-enum-property-best-practices": string;
42
49
  "@darraghor/nestjs-typed/api-property-returning-array-should-set-array": string;
50
+ "@darraghor/nestjs-typed/should-specify-forbid-unknown-values": string;
51
+ "@darraghor/nestjs-typed/param-decorator-name-matches-route-param": string;
43
52
  };
44
53
  };
45
54
  "no-swagger": {
@@ -2,7 +2,7 @@ import { TSESTree } from "@typescript-eslint/types";
2
2
  import { EnumTestResultModel } from "./enumTestResultModel";
3
3
  export declare const hasEnumSpecifiedCorrectly: (node: TSESTree.Node, isEnumType: boolean) => EnumTestResultModel;
4
4
  export declare const needsEnumNameMatchingEnumType: (enumNameProperty: TSESTree.Property, enumProperty: TSESTree.Property) => boolean;
5
- declare const rule: import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"needsEnumNameAdded" | "needsTypeRemoved" | "enumNameShouldMatchType" | "randomTest", never[], {
6
- ClassProperty(node: TSESTree.Node): void;
5
+ declare const rule: import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"needsEnumNameAdded" | "needsTypeRemoved" | "enumNameShouldMatchType", never[], {
6
+ PropertyDefinition(node: TSESTree.Node): void;
7
7
  }>;
8
8
  export default rule;
@@ -93,7 +93,6 @@ const rule = (0, createRule_1.createRule)({
93
93
  needsEnumNameAdded: `Properties with enum should also specify an enumName property to keep generated models clean`,
94
94
  needsTypeRemoved: `Properties with enum should not specify a type property`,
95
95
  enumNameShouldMatchType: `The enumName should match the enum type provided`,
96
- randomTest: `FAIL: {{msgText}}`,
97
96
  },
98
97
  schema: [],
99
98
  hasSuggestions: false,
@@ -106,7 +105,7 @@ const rule = (0, createRule_1.createRule)({
106
105
  const typeChecker = parserServices.program.getTypeChecker();
107
106
  return {
108
107
  // eslint-disable-next-line @typescript-eslint/naming-convention
109
- ClassProperty(node) {
108
+ PropertyDefinition(node) {
110
109
  const mappedNode = parserServices.esTreeNodeToTSNodeMap.get(node);
111
110
  const objectType = typeChecker.getTypeAtLocation(mappedNode);
112
111
  const isEnumType = tsutils.isTypeFlagSet(objectType, typescript_1.TypeFlags.EnumLike);
@@ -134,4 +133,4 @@ const rule = (0, createRule_1.createRule)({
134
133
  },
135
134
  });
136
135
  exports.default = rule;
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpRW51bVByb3BlcnR5QmVzdFByYWN0aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydWxlcy9hcGlFbnVtUHJvcGVydHlCZXN0UHJhY3RpY2VzL2FwaUVudW1Qcm9wZXJ0eUJlc3RQcmFjdGljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBGQUEwRjtBQUUxRix1REFBa0Q7QUFDbEQscUVBQWdFO0FBQ2hFLCtEQUEwRDtBQUMxRCxnREFBZ0Q7QUFDaEQsMEJBQTBCO0FBQzFCLGlEQUFtQztBQUNuQywyQ0FBcUM7QUFFckMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLHlDQUFtQixDQUFDO0lBQ3BELGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGtCQUFrQixFQUFFLEtBQUs7SUFDekIsNEJBQTRCLEVBQUUsS0FBSztJQUNuQyxnQkFBZ0IsRUFBRSxLQUFLO0NBQzFCLENBQUMsQ0FBQztBQUVJLE1BQU0seUJBQXlCLEdBQUcsQ0FDckMsSUFBbUIsRUFDbkIsVUFBbUIsRUFDQSxFQUFFO0lBQ3JCLGtCQUFrQjtJQUNsQixJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2IsT0FBTyx1QkFBdUIsQ0FBQztLQUNsQztJQUVELDJDQUEyQztJQUMzQyxNQUFNLFVBQVUsR0FBRyxxQ0FBaUIsQ0FBQyxrQkFBa0IsQ0FDbkQsSUFBbUMsRUFDbkMsQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLENBQUMsQ0FDekMsQ0FBQztJQUVGLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDekIsT0FBTyx1QkFBdUIsQ0FBQztLQUNsQztJQUVELHNHQUFzRztJQUN0RyxNQUFNLGFBQWEsR0FBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBc0M7U0FDdEUsU0FBUyxDQUFDLENBQUMsQ0FBOEIsQ0FBQztJQUMvQyxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ2hCLE9BQU8sSUFBSSx5Q0FB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
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpRW51bVByb3BlcnR5QmVzdFByYWN0aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydWxlcy9hcGlFbnVtUHJvcGVydHlCZXN0UHJhY3RpY2VzL2FwaUVudW1Qcm9wZXJ0eUJlc3RQcmFjdGljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBGQUEwRjtBQUUxRix1REFBa0Q7QUFDbEQscUVBQWdFO0FBQ2hFLCtEQUEwRDtBQUMxRCxnREFBZ0Q7QUFDaEQsMEJBQTBCO0FBQzFCLGlEQUFtQztBQUNuQywyQ0FBcUM7QUFFckMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLHlDQUFtQixDQUFDO0lBQ3BELGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGtCQUFrQixFQUFFLEtBQUs7SUFDekIsNEJBQTRCLEVBQUUsS0FBSztJQUNuQyxnQkFBZ0IsRUFBRSxLQUFLO0NBQzFCLENBQUMsQ0FBQztBQUVJLE1BQU0seUJBQXlCLEdBQUcsQ0FDckMsSUFBbUIsRUFDbkIsVUFBbUIsRUFDQSxFQUFFO0lBQ3JCLGtCQUFrQjtJQUNsQixJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2IsT0FBTyx1QkFBdUIsQ0FBQztLQUNsQztJQUVELDJDQUEyQztJQUMzQyxNQUFNLFVBQVUsR0FBRyxxQ0FBaUIsQ0FBQyxrQkFBa0IsQ0FDbkQsSUFBbUMsRUFDbkMsQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLENBQUMsQ0FDekMsQ0FBQztJQUVGLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDekIsT0FBTyx1QkFBdUIsQ0FBQztLQUNsQztJQUVELHNHQUFzRztJQUN0RyxNQUFNLGFBQWEsR0FBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBc0M7U0FDdEUsU0FBUyxDQUFDLENBQUMsQ0FBOEIsQ0FBQztJQUMvQyxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ2hCLE9BQU8sSUFBSSx5Q0FB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
@@ -2,6 +2,6 @@ import { TSESTree } from "@typescript-eslint/types";
2
2
  export declare const shouldUseRequiredDecorator: (node: TSESTree.PropertyDefinition) => boolean;
3
3
  export declare const shouldUseOptionalDecorator: (node: TSESTree.PropertyDefinition) => boolean;
4
4
  declare const rule: import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"shouldUseOptionalDecorator" | "shouldUseRequiredDecorator", never[], {
5
- ClassProperty(node: TSESTree.PropertyDefinition): void;
5
+ PropertyDefinition(node: TSESTree.PropertyDefinition): void;
6
6
  }>;
7
7
  export default rule;
@@ -35,7 +35,7 @@ const rule = (0, createRule_1.createRule)({
35
35
  create(context) {
36
36
  return {
37
37
  // eslint-disable-next-line @typescript-eslint/naming-convention
38
- ClassProperty(node) {
38
+ PropertyDefinition(node) {
39
39
  if ((0, exports.shouldUseOptionalDecorator)(node)) {
40
40
  context.report({
41
41
  node: node,
@@ -53,4 +53,4 @@ const rule = (0, createRule_1.createRule)({
53
53
  },
54
54
  });
55
55
  exports.default = rule;
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpUHJvcGVydHlNYXRjaGVzUHJvcGVydHlPcHRpb25hbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydWxlcy9hcGlQcm9wZXJ0eU1hdGNoZXNQcm9wZXJ0eU9wdGlvbmFsaXR5L2FwaVByb3BlcnR5TWF0Y2hlc1Byb3BlcnR5T3B0aW9uYWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsdURBQWtEO0FBQ2xELHFFQUFnRTtBQUV6RCxNQUFNLDBCQUEwQixHQUFHLENBQ3RDLElBQWlDLEVBQzFCLEVBQUU7SUFDVCxNQUFNLG9CQUFvQixHQUFHLHFDQUFpQixDQUFDLHNCQUFzQixDQUNqRSxJQUFJLEVBQ0osQ0FBQyxxQkFBcUIsQ0FBQyxDQUMxQixDQUFDO0lBRUYsTUFBTSx1QkFBdUIsR0FDekIscUNBQWlCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEQsT0FBTyxvQkFBb0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDO0FBQzVELENBQUMsQ0FBQztBQVpXLFFBQUEsMEJBQTBCLDhCQVlyQztBQUVLLE1BQU0sMEJBQTBCLEdBQUcsQ0FDdEMsSUFBaUMsRUFDMUIsRUFBRTtJQUNULE1BQU0sb0JBQW9CLEdBQUcscUNBQWlCLENBQUMsc0JBQXNCLENBQ2pFLElBQUksRUFDSixDQUFDLGFBQWEsQ0FBQyxDQUNsQixDQUFDO0lBRUYsTUFBTSx1QkFBdUIsR0FDekIscUNBQWlCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEQsT0FBTyxvQkFBb0IsSUFBSSx1QkFBdUIsQ0FBQztBQUMzRCxDQUFDLENBQUM7QUFaVyxRQUFBLDBCQUEwQiw4QkFZckM7QUFFRixNQUFNLElBQUksR0FBRyxJQUFBLHVCQUFVLEVBQUM7SUFDcEIsSUFBSSxFQUFFLDJDQUEyQztJQUNqRCxJQUFJLEVBQUU7UUFDRixJQUFJLEVBQUU7WUFDRixXQUFXLEVBQ1Asd0RBQXdEO1lBQzVELFdBQVcsRUFBRSxLQUFLO1lBQ2xCLG9CQUFvQixFQUFFLEtBQUs7U0FDOUI7UUFDRCxRQUFRLEVBQUU7WUFDTiwwQkFBMEIsRUFBRSx1RUFBdUU7WUFDbkcsMEJBQTBCLEVBQUUsK0RBQStEO1NBQzlGO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixjQUFjLEVBQUUsS0FBSztRQUNyQixJQUFJLEVBQUUsWUFBWTtLQUNyQjtJQUNELGNBQWMsRUFBRSxFQUFFO0lBRWxCLE1BQU0sQ0FBQyxPQUFPO1FBQ1YsT0FBTztZQUNILGdFQUFnRTtZQUNoRSxhQUFhLENBQUMsSUFBaUM7Z0JBQzNDLElBQUksSUFBQSxrQ0FBMEIsRUFBQyxJQUFJLENBQUMsRUFBRTtvQkFDbEMsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDWCxJQUFJLEVBQUUsSUFBSTt3QkFDVixTQUFTLEVBQUUsNEJBQTRCO3FCQUMxQyxDQUFDLENBQUM7aUJBQ047Z0JBQ0QsSUFBSSxJQUFBLGtDQUEwQixFQUFDLElBQUksQ0FBQyxFQUFFO29CQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNYLElBQUksRUFBRSxJQUFJO3dCQUNWLFNBQVMsRUFBRSw0QkFBNEI7cUJBQzFDLENBQUMsQ0FBQztpQkFDTjtZQUNMLENBQUM7U0FDSixDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUMsQ0FBQztBQUVILGtCQUFlLElBQUksQ0FBQyJ9
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpUHJvcGVydHlNYXRjaGVzUHJvcGVydHlPcHRpb25hbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ydWxlcy9hcGlQcm9wZXJ0eU1hdGNoZXNQcm9wZXJ0eU9wdGlvbmFsaXR5L2FwaVByb3BlcnR5TWF0Y2hlc1Byb3BlcnR5T3B0aW9uYWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsdURBQWtEO0FBQ2xELHFFQUFnRTtBQUV6RCxNQUFNLDBCQUEwQixHQUFHLENBQ3RDLElBQWlDLEVBQzFCLEVBQUU7SUFDVCxNQUFNLG9CQUFvQixHQUFHLHFDQUFpQixDQUFDLHNCQUFzQixDQUNqRSxJQUFJLEVBQ0osQ0FBQyxxQkFBcUIsQ0FBQyxDQUMxQixDQUFDO0lBRUYsTUFBTSx1QkFBdUIsR0FDekIscUNBQWlCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEQsT0FBTyxvQkFBb0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDO0FBQzVELENBQUMsQ0FBQztBQVpXLFFBQUEsMEJBQTBCLDhCQVlyQztBQUVLLE1BQU0sMEJBQTBCLEdBQUcsQ0FDdEMsSUFBaUMsRUFDMUIsRUFBRTtJQUNULE1BQU0sb0JBQW9CLEdBQUcscUNBQWlCLENBQUMsc0JBQXNCLENBQ2pFLElBQUksRUFDSixDQUFDLGFBQWEsQ0FBQyxDQUNsQixDQUFDO0lBRUYsTUFBTSx1QkFBdUIsR0FDekIscUNBQWlCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEQsT0FBTyxvQkFBb0IsSUFBSSx1QkFBdUIsQ0FBQztBQUMzRCxDQUFDLENBQUM7QUFaVyxRQUFBLDBCQUEwQiw4QkFZckM7QUFFRixNQUFNLElBQUksR0FBRyxJQUFBLHVCQUFVLEVBQUM7SUFDcEIsSUFBSSxFQUFFLDJDQUEyQztJQUNqRCxJQUFJLEVBQUU7UUFDRixJQUFJLEVBQUU7WUFDRixXQUFXLEVBQ1Asd0RBQXdEO1lBQzVELFdBQVcsRUFBRSxLQUFLO1lBQ2xCLG9CQUFvQixFQUFFLEtBQUs7U0FDOUI7UUFDRCxRQUFRLEVBQUU7WUFDTiwwQkFBMEIsRUFBRSx1RUFBdUU7WUFDbkcsMEJBQTBCLEVBQUUsK0RBQStEO1NBQzlGO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixjQUFjLEVBQUUsS0FBSztRQUNyQixJQUFJLEVBQUUsWUFBWTtLQUNyQjtJQUNELGNBQWMsRUFBRSxFQUFFO0lBRWxCLE1BQU0sQ0FBQyxPQUFPO1FBQ1YsT0FBTztZQUNILGdFQUFnRTtZQUNoRSxrQkFBa0IsQ0FBQyxJQUFpQztnQkFDaEQsSUFBSSxJQUFBLGtDQUEwQixFQUFDLElBQUksQ0FBQyxFQUFFO29CQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNYLElBQUksRUFBRSxJQUFJO3dCQUNWLFNBQVMsRUFBRSw0QkFBNEI7cUJBQzFDLENBQUMsQ0FBQztpQkFDTjtnQkFDRCxJQUFJLElBQUEsa0NBQTBCLEVBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2xDLE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ1gsSUFBSSxFQUFFLElBQUk7d0JBQ1YsU0FBUyxFQUFFLDRCQUE0QjtxQkFDMUMsQ0FBQyxDQUFDO2lCQUNOO1lBQ0wsQ0FBQztTQUNKLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyxDQUFDO0FBRUgsa0JBQWUsSUFBSSxDQUFDIn0=
@@ -2,6 +2,6 @@ import { TSESTree } from "@typescript-eslint/types";
2
2
  import ArraySetResultModel from "./arraySetResultModel";
3
3
  export declare const shouldSetArrayProperty: (node: TSESTree.PropertyDefinition) => ArraySetResultModel;
4
4
  declare const rule: import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"shouldSetArrayPropertyTrue" | "shouldSetArrayPropertyFalse", never[], {
5
- ClassProperty(node: TSESTree.PropertyDefinition): void;
5
+ PropertyDefinition: (node: TSESTree.Node) => void;
6
6
  }>;
7
7
  export default rule;
@@ -17,24 +17,15 @@ const shouldSetArrayProperty = (node) => {
17
17
  if (decorators.length === 0) {
18
18
  return new arraySetResultModel_1.default(false, false);
19
19
  }
20
- const firstArgument = decorators[0].expression
21
- .arguments[0];
22
- let isArraySet = false;
23
- if (firstArgument !== undefined) {
24
- const isArrayProperty = firstArgument.properties.find((p) => p.key.name ===
25
- "isArray");
26
- isArraySet =
27
- isArrayProperty !== undefined &&
28
- isArrayProperty.value
29
- .value === true;
30
- }
20
+ // There should only be one of these apiproperty decorators so we just grab the parameter to decorator at index 0
21
+ const firstArgumentToDecorator = decorators[0].expression.arguments[0];
22
+ const hasIsArraySetInOptions = typedTokenHelpers_1.typedTokenHelpers.getPropertyValueEqualsExpected(firstArgumentToDecorator, "isArray", true);
31
23
  // handle string[] or Array<string>
32
24
  const isArrayType = ((_b = ((_a = node.typeAnnotation) === null || _a === void 0 ? void 0 : _a.typeAnnotation)
33
25
  .typeName) === null || _b === void 0 ? void 0 : _b.name) === "Array";
34
26
  const isTypescriptArrayType = ((_c = node.typeAnnotation) === null || _c === void 0 ? void 0 : _c.typeAnnotation.type) === types_1.AST_NODE_TYPES.TSArrayType;
35
- const shouldArrayBeSet = isArrayType || isTypescriptArrayType;
36
- // this is verbose but makes it easier to read imho
37
- return new arraySetResultModel_1.default(shouldArrayBeSet && isArraySet === false, shouldArrayBeSet === false && isArraySet);
27
+ const isAnArrayLikeType = isArrayType || isTypescriptArrayType;
28
+ return new arraySetResultModel_1.default(isAnArrayLikeType && !hasIsArraySetInOptions, !isAnArrayLikeType && hasIsArraySetInOptions);
38
29
  };
39
30
  exports.shouldSetArrayProperty = shouldSetArrayProperty;
40
31
  const rule = (0, createRule_1.createRule)({
@@ -57,7 +48,7 @@ const rule = (0, createRule_1.createRule)({
57
48
  create(context) {
58
49
  return {
59
50
  // eslint-disable-next-line @typescript-eslint/naming-convention
60
- ClassProperty(node) {
51
+ PropertyDefinition: (node) => {
61
52
  const shouldSetArrayResults = (0, exports.shouldSetArrayProperty)(node);
62
53
  if (shouldSetArrayResults.isArrayShouldBeSetFalse) {
63
54
  context.report({
@@ -76,4 +67,4 @@ const rule = (0, createRule_1.createRule)({
76
67
  },
77
68
  });
78
69
  exports.default = rule;
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpUHJvcGVydHlSZXR1cm5pbmdBcnJheVNob3VsZFNldEFycmF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3J1bGVzL2FwaVByb3BlcnR5UmV0dXJuaW5nQXJyYXlTaG91bGRTZXRBcnJheS9hcGlQcm9wZXJ0eVJldHVybmluZ0FycmF5U2hvdWxkU2V0QXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQWtFO0FBQ2xFLHVEQUFrRDtBQUNsRCxxRUFBZ0U7QUFDaEUsZ0ZBQXdEO0FBRWpELE1BQU0sc0JBQXNCLEdBQUcsQ0FDbEMsSUFBaUMsRUFDZCxFQUFFOztJQUNyQixNQUFNLFVBQVUsR0FBRyxxQ0FBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7UUFDMUQscUJBQXFCO1FBQ3JCLGFBQWE7S0FDaEIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN6QixPQUFPLElBQUksNkJBQW1CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ2hEO0lBRUQsTUFBTSxhQUFhLEdBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQXNDO1NBQ3RFLFNBQVMsQ0FBQyxDQUFDLENBQThCLENBQUM7SUFDL0MsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtRQUM3QixNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDakQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNBLENBQXVCLENBQUMsR0FBMkIsQ0FBQyxJQUFJO1lBQzFELFNBQVMsQ0FDaEIsQ0FBQztRQUVGLFVBQVU7WUFDTixlQUFlLEtBQUssU0FBUztnQkFDM0IsZUFBcUMsQ0FBQyxLQUEwQjtxQkFDN0QsS0FBSyxLQUFLLElBQUksQ0FBQztLQUMzQjtJQUNELG1DQUFtQztJQUNuQyxNQUFNLFdBQVcsR0FDYixDQUFBLE1BQ0ksQ0FBQyxNQUFBLElBQUksQ0FBQyxjQUFjLDBDQUFFLGNBQTJDLENBQUE7U0FDNUQsUUFDUiwwQ0FBRSxJQUFJLE1BQUssT0FBTyxDQUFDO0lBQ3hCLE1BQU0scUJBQXFCLEdBQ3ZCLENBQUEsTUFBQSxJQUFJLENBQUMsY0FBYywwQ0FBRSxjQUFjLENBQUMsSUFBSSxNQUFLLHNCQUFjLENBQUMsV0FBVyxDQUFDO0lBQzVFLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxJQUFJLHFCQUFxQixDQUFDO0lBRTlELG1EQUFtRDtJQUNuRCxPQUFPLElBQUksNkJBQW1CLENBQzFCLGdCQUFnQixJQUFJLFVBQVUsS0FBSyxLQUFLLEVBQ3hDLGdCQUFnQixLQUFLLEtBQUssSUFBSSxVQUFVLENBQzNDLENBQUM7QUFDTixDQUFDLENBQUM7QUExQ1csUUFBQSxzQkFBc0IsMEJBMENqQztBQUVGLE1BQU0sSUFBSSxHQUFHLElBQUEsdUJBQVUsRUFBQztJQUNwQixJQUFJLEVBQUUsK0NBQStDO0lBQ3JELElBQUksRUFBRTtRQUNGLElBQUksRUFBRTtZQUNGLFdBQVcsRUFBRSxzQ0FBc0M7WUFDbkQsV0FBVyxFQUFFLEtBQUs7WUFDbEIsb0JBQW9CLEVBQUUsS0FBSztTQUM5QjtRQUNELFFBQVEsRUFBRTtZQUNOLDBCQUEwQixFQUFFLGdFQUFnRTtZQUM1RiwyQkFBMkIsRUFBRSx3RUFBd0U7U0FDeEc7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLElBQUksRUFBRSxZQUFZO0tBQ3JCO0lBQ0QsY0FBYyxFQUFFLEVBQUU7SUFFbEIsTUFBTSxDQUFDLE9BQU87UUFDVixPQUFPO1lBQ0gsZ0VBQWdFO1lBQ2hFLGFBQWEsQ0FBQyxJQUFpQztnQkFDM0MsTUFBTSxxQkFBcUIsR0FBRyxJQUFBLDhCQUFzQixFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLHFCQUFxQixDQUFDLHVCQUF1QixFQUFFO29CQUMvQyxPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNYLElBQUksRUFBRSxJQUFJO3dCQUNWLFNBQVMsRUFBRSw2QkFBNkI7cUJBQzNDLENBQUMsQ0FBQztpQkFDTjtnQkFDRCxJQUFJLHFCQUFxQixDQUFDLHNCQUFzQixFQUFFO29CQUM5QyxPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNYLElBQUksRUFBRSxJQUFJO3dCQUNWLFNBQVMsRUFBRSw0QkFBNEI7cUJBQzFDLENBQUMsQ0FBQztpQkFDTjtZQUNMLENBQUM7U0FDSixDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUMsQ0FBQztBQUVILGtCQUFlLElBQUksQ0FBQyJ9
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpUHJvcGVydHlSZXR1cm5pbmdBcnJheVNob3VsZFNldEFycmF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3J1bGVzL2FwaVByb3BlcnR5UmV0dXJuaW5nQXJyYXlTaG91bGRTZXRBcnJheS9hcGlQcm9wZXJ0eVJldHVybmluZ0FycmF5U2hvdWxkU2V0QXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQWtFO0FBQ2xFLHVEQUFrRDtBQUNsRCxxRUFBZ0U7QUFDaEUsZ0ZBQXdEO0FBRWpELE1BQU0sc0JBQXNCLEdBQUcsQ0FDbEMsSUFBaUMsRUFDZCxFQUFFOztJQUNyQixNQUFNLFVBQVUsR0FBRyxxQ0FBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7UUFDMUQscUJBQXFCO1FBQ3JCLGFBQWE7S0FDaEIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN6QixPQUFPLElBQUksNkJBQW1CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ2hEO0lBRUQsaUhBQWlIO0lBQ2pILE1BQU0sd0JBQXdCLEdBQzFCLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUNqQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQThCLENBQUM7SUFFNUMsTUFBTSxzQkFBc0IsR0FDeEIscUNBQWlCLENBQUMsOEJBQThCLENBQzVDLHdCQUF3QixFQUN4QixTQUFTLEVBQ1QsSUFBSSxDQUNQLENBQUM7SUFDTixtQ0FBbUM7SUFDbkMsTUFBTSxXQUFXLEdBQ2IsQ0FBQSxNQUNJLENBQUMsTUFBQSxJQUFJLENBQUMsY0FBYywwQ0FBRSxjQUEyQyxDQUFBO1NBQzVELFFBQ1IsMENBQUUsSUFBSSxNQUFLLE9BQU8sQ0FBQztJQUN4QixNQUFNLHFCQUFxQixHQUN2QixDQUFBLE1BQUEsSUFBSSxDQUFDLGNBQWMsMENBQUUsY0FBYyxDQUFDLElBQUksTUFBSyxzQkFBYyxDQUFDLFdBQVcsQ0FBQztJQUM1RSxNQUFNLGlCQUFpQixHQUFHLFdBQVcsSUFBSSxxQkFBcUIsQ0FBQztJQUUvRCxPQUFPLElBQUksNkJBQW1CLENBQzFCLGlCQUFpQixJQUFJLENBQUMsc0JBQXNCLEVBQzVDLENBQUMsaUJBQWlCLElBQUksc0JBQXNCLENBQy9DLENBQUM7QUFDTixDQUFDLENBQUM7QUFyQ1csUUFBQSxzQkFBc0IsMEJBcUNqQztBQUVGLE1BQU0sSUFBSSxHQUFHLElBQUEsdUJBQVUsRUFBQztJQUNwQixJQUFJLEVBQUUsK0NBQStDO0lBQ3JELElBQUksRUFBRTtRQUNGLElBQUksRUFBRTtZQUNGLFdBQVcsRUFBRSxzQ0FBc0M7WUFDbkQsV0FBVyxFQUFFLEtBQUs7WUFDbEIsb0JBQW9CLEVBQUUsS0FBSztTQUM5QjtRQUNELFFBQVEsRUFBRTtZQUNOLDBCQUEwQixFQUFFLGdFQUFnRTtZQUM1RiwyQkFBMkIsRUFBRSx3RUFBd0U7U0FDeEc7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLElBQUksRUFBRSxZQUFZO0tBQ3JCO0lBQ0QsY0FBYyxFQUFFLEVBQUU7SUFFbEIsTUFBTSxDQUFDLE9BQU87UUFDVixPQUFPO1lBQ0gsZ0VBQWdFO1lBQ2hFLGtCQUFrQixFQUFFLENBQUMsSUFBbUIsRUFBRSxFQUFFO2dCQUN4QyxNQUFNLHFCQUFxQixHQUFHLElBQUEsOEJBQXNCLEVBQ2hELElBQW1DLENBQ3RDLENBQUM7Z0JBRUYsSUFBSSxxQkFBcUIsQ0FBQyx1QkFBdUIsRUFBRTtvQkFDL0MsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDWCxJQUFJLEVBQUUsSUFBSTt3QkFDVixTQUFTLEVBQUUsNkJBQTZCO3FCQUMzQyxDQUFDLENBQUM7aUJBQ047Z0JBQ0QsSUFBSSxxQkFBcUIsQ0FBQyxzQkFBc0IsRUFBRTtvQkFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDWCxJQUFJLEVBQUUsSUFBSTt3QkFDVixTQUFTLEVBQUUsNEJBQTRCO3FCQUMxQyxDQUFDLENBQUM7aUJBQ047WUFDTCxDQUFDO1NBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDLENBQUM7QUFFSCxrQkFBZSxJQUFJLENBQUMifQ==
@@ -1,6 +1,6 @@
1
1
  declare const allRules: {
2
2
  "api-property-matches-property-optionality": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"shouldUseOptionalDecorator" | "shouldUseRequiredDecorator", never[], {
3
- ClassProperty(node: import("@typescript-eslint/types/dist/ast-spec").PropertyDefinition): void;
3
+ PropertyDefinition(node: import("@typescript-eslint/types/dist/ast-spec").PropertyDefinition): void;
4
4
  }>;
5
5
  "injectable-should-be-provided": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"injectableInModule" | "controllersInModule", never[], {
6
6
  ClassDeclaration(node: import("@typescript-eslint/types/dist/ast-spec").ClassDeclaration): void;
@@ -15,11 +15,18 @@ declare const allRules: {
15
15
  "api-method-should-specify-api-response": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"shouldSpecifyApiResponse", never[], {
16
16
  MethodDefinition(node: import("@typescript-eslint/types/dist/ast-spec").MethodDefinition): void;
17
17
  }>;
18
- "api-enum-property-best-practices": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"needsEnumNameAdded" | "needsTypeRemoved" | "enumNameShouldMatchType" | "randomTest", never[], {
19
- ClassProperty(node: import("@typescript-eslint/types/dist/ast-spec").Node): void;
18
+ "api-enum-property-best-practices": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"needsEnumNameAdded" | "needsTypeRemoved" | "enumNameShouldMatchType", never[], {
19
+ PropertyDefinition(node: import("@typescript-eslint/types/dist/ast-spec").Node): void;
20
20
  }>;
21
21
  "api-property-returning-array-should-set-array": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"shouldSetArrayPropertyTrue" | "shouldSetArrayPropertyFalse", never[], {
22
- ClassProperty(node: import("@typescript-eslint/types/dist/ast-spec").PropertyDefinition): void;
22
+ PropertyDefinition: (node: import("@typescript-eslint/types/dist/ast-spec").Node) => void;
23
+ }>;
24
+ "should-specify-forbid-unknown-values": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"shouldSpecifyForbidUnknownValues", never[], {
25
+ NewExpression(node: import("@typescript-eslint/types/dist/ast-spec").Node): void;
26
+ VariableDeclarator(node: import("@typescript-eslint/types/dist/ast-spec").Node): void;
27
+ }>;
28
+ "param-decorator-name-matches-route-param": import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"paramIdentifierDoesntNeedColon" | "paramIdentifierShouldMatch", never[], {
29
+ Decorator(node: import("@typescript-eslint/types/dist/ast-spec").Decorator): void;
23
30
  }>;
24
31
  };
25
32
  export default allRules;
@@ -10,6 +10,8 @@ const controllerDecoratedHasApiTags_1 = __importDefault(require("./controllerDec
10
10
  const apiMethodsShouldSpecifyApiResponse_1 = __importDefault(require("./apiMethodsShouldSpecifyApiResponse/apiMethodsShouldSpecifyApiResponse"));
11
11
  const apiEnumPropertyBestPractices_1 = __importDefault(require("./apiEnumPropertyBestPractices/apiEnumPropertyBestPractices"));
12
12
  const apiPropertyReturningArrayShouldSetArray_1 = __importDefault(require("./apiPropertyReturningArrayShouldSetArray/apiPropertyReturningArrayShouldSetArray"));
13
+ const shouldSpecifyForbidUnknownValuesRule_1 = __importDefault(require("./shouldSpecifyForbidUnknownValues/shouldSpecifyForbidUnknownValuesRule"));
14
+ const paramDecoratorNameMatchesRouteParam_1 = __importDefault(require("./paramDecoratorNameMatchesRouteParam/paramDecoratorNameMatchesRouteParam"));
13
15
  const allRules = {
14
16
  "api-property-matches-property-optionality": apiPropertyMatchesPropertyOptionality_1.default,
15
17
  "injectable-should-be-provided": injectableShouldBeProvided_1.default,
@@ -18,6 +20,8 @@ const allRules = {
18
20
  "api-method-should-specify-api-response": apiMethodsShouldSpecifyApiResponse_1.default,
19
21
  "api-enum-property-best-practices": apiEnumPropertyBestPractices_1.default,
20
22
  "api-property-returning-array-should-set-array": apiPropertyReturningArrayShouldSetArray_1.default,
23
+ "should-specify-forbid-unknown-values": shouldSpecifyForbidUnknownValuesRule_1.default,
24
+ "param-decorator-name-matches-route-param": paramDecoratorNameMatchesRouteParam_1.default,
21
25
  };
22
26
  exports.default = allRules;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwSEFBa0c7QUFDbEcsaUpBQW1JO0FBQ25JLDBKQUFrSTtBQUNsSSxrSUFBMEc7QUFDMUcsaUpBQXlIO0FBQ3pILCtIQUF1RztBQUN2RyxnS0FBd0k7QUFFeEksTUFBTSxRQUFRLEdBQUc7SUFDYiwyQ0FBMkMsRUFDdkMsK0NBQXFDO0lBQ3pDLCtCQUErQixFQUFFLG9DQUEwQjtJQUMzRCxtREFBbUQsRUFDL0MsNENBQTRDO0lBQ2hELG9DQUFvQyxFQUFFLHVDQUE2QjtJQUNuRSx3Q0FBd0MsRUFDeEMsNENBQWtDO0lBQ2xDLGtDQUFrQyxFQUFFLHNDQUE0QjtJQUNoRSwrQ0FBK0MsRUFDM0MsaURBQXVDO0NBQzlDLENBQUM7QUFFRixrQkFBZSxRQUFRLENBQUMifQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwSEFBa0c7QUFDbEcsaUpBQW1JO0FBQ25JLDBKQUFrSTtBQUNsSSxrSUFBMEc7QUFDMUcsaUpBQXlIO0FBQ3pILCtIQUF1RztBQUN2RyxnS0FBd0k7QUFDeEksbUpBQXVIO0FBQ3ZILG9KQUFnSTtBQUVoSSxNQUFNLFFBQVEsR0FBRztJQUNiLDJDQUEyQyxFQUN2QywrQ0FBcUM7SUFDekMsK0JBQStCLEVBQUUsb0NBQTBCO0lBQzNELG1EQUFtRCxFQUMvQyw0Q0FBNEM7SUFDaEQsb0NBQW9DLEVBQUUsdUNBQTZCO0lBQ25FLHdDQUF3QyxFQUNwQyw0Q0FBa0M7SUFDdEMsa0NBQWtDLEVBQUUsc0NBQTRCO0lBQ2hFLCtDQUErQyxFQUMzQyxpREFBdUM7SUFDM0Msc0NBQXNDLEVBQUUsOENBQWdDO0lBQ3hFLDBDQUEwQyxFQUN0Qyw2Q0FBdUM7Q0FDOUMsQ0FBQztBQUVGLGtCQUFlLFFBQVEsQ0FBQyJ9
@@ -0,0 +1,12 @@
1
+ import { TSESTree } from "@typescript-eslint/types";
2
+ declare type ResultModel = {
3
+ hasColonInName: boolean;
4
+ paramNameNotMatchedInPath: boolean;
5
+ };
6
+ export declare const parsePathParts: (decorator: TSESTree.Decorator) => string[];
7
+ export declare const isParameterNameIncludedInAPathPart: (paramName: string, pathPartsToCheck: string[]) => boolean;
8
+ export declare const shouldTrigger: (decorator: TSESTree.Decorator) => ResultModel;
9
+ declare const rule: import("@typescript-eslint/experimental-utils/dist/ts-eslint/Rule").RuleModule<"paramIdentifierDoesntNeedColon" | "paramIdentifierShouldMatch", never[], {
10
+ Decorator(node: TSESTree.Decorator): void;
11
+ }>;
12
+ export default rule;