@darraghor/eslint-plugin-nestjs-typed 3.15.0 → 3.15.2
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 +42 -0
- package/dist/configs/index.d.ts +1 -0
- package/dist/configs/recommended.d.ts +1 -0
- package/dist/configs/recommended.js +2 -1
- package/dist/index.d.ts +1 -0
- package/dist/rules/validateNonPrimitvesNeedsTypeDecorator/validateNonPrimitiveNeedsDecorators.js +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,6 +39,7 @@ Preventing bugs
|
|
|
39
39
|
- validate-nested-of-array-should-set-each
|
|
40
40
|
- validated-non-primitive-property-needs-type-decorator
|
|
41
41
|
- all-properties-are-whitelisted
|
|
42
|
+
- all-properties-have-explicit-defined
|
|
42
43
|
|
|
43
44
|
Security
|
|
44
45
|
|
|
@@ -138,6 +139,47 @@ Disable a single rule with the full name e.g. in your eslint configuration...
|
|
|
138
139
|
|
|
139
140
|
## Rule Details
|
|
140
141
|
|
|
142
|
+
### Rule: all-properties-have-explicit-defined
|
|
143
|
+
|
|
144
|
+
This rule checks that all properties of a class have an appropriate `@IsDefined()` or `@IsOptional()` decorator.
|
|
145
|
+
|
|
146
|
+
This rule also checks that both `@IsDefined()` and `@IsOptional()` are not used on the same property because this doesn't make sense.
|
|
147
|
+
|
|
148
|
+
The rule will ignore any classes that have 0 class-validator decorators. This is to avoid errors for classes that are not used for validation.
|
|
149
|
+
|
|
150
|
+
This PASSES - all properties are decorated correctly
|
|
151
|
+
|
|
152
|
+
```ts
|
|
153
|
+
export class CreateOrganisationDto {
|
|
154
|
+
@IsDefined()
|
|
155
|
+
otherProperty!: MyClass;
|
|
156
|
+
|
|
157
|
+
@IsOptional()
|
|
158
|
+
someStringProperty?: string;
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
This PASSES - no class validator decorators are used
|
|
163
|
+
|
|
164
|
+
```ts
|
|
165
|
+
export class CreateOrganisationDto {
|
|
166
|
+
otherProperty!: MyClass;
|
|
167
|
+
|
|
168
|
+
someStringProperty?: string;
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
This FAILS - missing `@IsOptional()` on `someStringProperty`
|
|
173
|
+
|
|
174
|
+
```ts
|
|
175
|
+
export class CreateOrganisationDto {
|
|
176
|
+
@IsDefined()
|
|
177
|
+
otherProperty!: MyClass;
|
|
178
|
+
@IsString()
|
|
179
|
+
someStringProperty?: string;
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
141
183
|
### Rule: all-properties-are-whitelisted
|
|
142
184
|
|
|
143
185
|
You should forbid non-whitelisted properties in your DTOs.
|
package/dist/configs/index.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ declare const allConfigs: {
|
|
|
20
20
|
"@darraghor/nestjs-typed/validated-non-primitive-property-needs-type-decorator": string;
|
|
21
21
|
"@darraghor/nestjs-typed/validate-nested-of-array-should-set-each": string;
|
|
22
22
|
"@darraghor/nestjs-typed/all-properties-are-whitelisted": string;
|
|
23
|
+
"@darraghor/nestjs-typed/all-properties-have-explicit-defined": string;
|
|
23
24
|
};
|
|
24
25
|
};
|
|
25
26
|
"no-swagger": {
|
|
@@ -19,6 +19,7 @@ declare const _default: {
|
|
|
19
19
|
"@darraghor/nestjs-typed/validated-non-primitive-property-needs-type-decorator": string;
|
|
20
20
|
"@darraghor/nestjs-typed/validate-nested-of-array-should-set-each": string;
|
|
21
21
|
"@darraghor/nestjs-typed/all-properties-are-whitelisted": string;
|
|
22
|
+
"@darraghor/nestjs-typed/all-properties-have-explicit-defined": string;
|
|
22
23
|
};
|
|
23
24
|
};
|
|
24
25
|
export = _default;
|
|
@@ -21,6 +21,7 @@ module.exports = {
|
|
|
21
21
|
"@darraghor/nestjs-typed/validated-non-primitive-property-needs-type-decorator": "error",
|
|
22
22
|
"@darraghor/nestjs-typed/validate-nested-of-array-should-set-each": "error",
|
|
23
23
|
"@darraghor/nestjs-typed/all-properties-are-whitelisted": "error",
|
|
24
|
+
"@darraghor/nestjs-typed/all-properties-have-explicit-defined": "error",
|
|
24
25
|
},
|
|
25
26
|
};
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb21tZW5kZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlncy9yZWNvbW1lbmRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUJBQVM7SUFDTCxNQUFNLEVBQUUsMkJBQTJCO0lBQ25DLGFBQWEsRUFBRSxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUM7SUFDckMsS0FBSyxFQUFFO1FBQ0gsMkVBQTJFLEVBQ3ZFLE9BQU87UUFDWCx1REFBdUQsRUFBRTtZQUNyRCxPQUFPO1lBQ1A7Z0JBQ0ksR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO2dCQUNwQixlQUFlLEVBQUUsQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQzthQUN4RDtTQUNKO1FBQ0QsbUVBQW1FLEVBQy9ELE9BQU87UUFDWCxnRUFBZ0UsRUFDNUQsT0FBTztRQUNYLDREQUE0RCxFQUFFLE9BQU87UUFDckUsMERBQTBELEVBQUUsT0FBTztRQUNuRSx1RUFBdUUsRUFDbkUsT0FBTztRQUNYLDhEQUE4RCxFQUFFLE9BQU87UUFDdkUsa0VBQWtFLEVBQzlELE9BQU87UUFDWCwrRUFBK0UsRUFDM0UsT0FBTztRQUNYLGtFQUFrRSxFQUM5RCxPQUFPO1FBQ1gsd0RBQXdELEVBQUUsT0FBTztRQUNqRSw4REFBOEQsRUFBRSxPQUFPO0tBQzFFO0NBQ0osQ0FBQyJ9
|
package/dist/index.d.ts
CHANGED
|
@@ -67,6 +67,7 @@ declare const configuration: {
|
|
|
67
67
|
"@darraghor/nestjs-typed/validated-non-primitive-property-needs-type-decorator": string;
|
|
68
68
|
"@darraghor/nestjs-typed/validate-nested-of-array-should-set-each": string;
|
|
69
69
|
"@darraghor/nestjs-typed/all-properties-are-whitelisted": string;
|
|
70
|
+
"@darraghor/nestjs-typed/all-properties-have-explicit-defined": string;
|
|
70
71
|
};
|
|
71
72
|
};
|
|
72
73
|
"no-swagger": {
|
package/dist/rules/validateNonPrimitvesNeedsTypeDecorator/validateNonPrimitiveNeedsDecorators.js
CHANGED
|
@@ -18,12 +18,12 @@ const rule = (0, createRule_1.createRule)({
|
|
|
18
18
|
name: "validated-non-primitive-property-needs-type-decorator",
|
|
19
19
|
meta: {
|
|
20
20
|
docs: {
|
|
21
|
-
description: "A non-
|
|
21
|
+
description: "A non-primitive property with validation should probably use a @Type decorator",
|
|
22
22
|
recommended: false,
|
|
23
23
|
requiresTypeChecking: false,
|
|
24
24
|
},
|
|
25
25
|
messages: {
|
|
26
|
-
shouldUseTypeDecorator: "A non-
|
|
26
|
+
shouldUseTypeDecorator: "A non-primitive property with validation should probably use a @Type decorator. If this is an enum use @IsEnum().",
|
|
27
27
|
},
|
|
28
28
|
schema: [
|
|
29
29
|
{
|
|
@@ -130,4 +130,4 @@ const rule = (0, createRule_1.createRule)({
|
|
|
130
130
|
},
|
|
131
131
|
});
|
|
132
132
|
exports.default = rule;
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVOb25QcmltaXRpdmVOZWVkc0RlY29yYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMvdmFsaWRhdGVOb25QcmltaXR2ZXNOZWVkc1R5cGVEZWNvcmF0b3IvdmFsaWRhdGVOb25QcmltaXRpdmVOZWVkc0RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQWtEO0FBQ2xELG9EQUtrQztBQUNsQyx1REFBa0Q7QUFDbEQscUVBQWdFO0FBRWhFLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDO0lBQzNCLHNCQUFjLENBQUMsZUFBZTtJQUM5QixzQkFBYyxDQUFDLGdCQUFnQjtJQUMvQixzQkFBYyxDQUFDLGVBQWU7Q0FDakMsQ0FBQyxDQUFDO0FBTUksTUFBTSxhQUFhLEdBQUcsR0FBWSxFQUFFO0lBQ3ZDLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUZXLFFBQUEsYUFBYSxpQkFFeEI7QUFFRixNQUFNLElBQUksR0FBRyxJQUFBLHVCQUFVLEVBQUM7SUFDcEIsSUFBSSxFQUFFLHVEQUF1RDtJQUM3RCxJQUFJLEVBQUU7UUFDRixJQUFJLEVBQUU7WUFDRixXQUFXLEVBQ1AsZ0ZBQWdGO1lBQ3BGLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLG9CQUFvQixFQUFFLEtBQUs7U0FDOUI7UUFDRCxRQUFRLEVBQUU7WUFDTixzQkFBc0IsRUFDbEIsbUhBQW1IO1NBQzFIO1FBQ0QsTUFBTSxFQUFFO1lBQ0o7Z0JBQ0ksVUFBVSxFQUFFO29CQUNSLHdCQUF3QixFQUFFO3dCQUN0QixXQUFXLEVBQ1Asc0VBQXNFO3dCQUMxRSxJQUFJLEVBQUUsT0FBTzt3QkFDYixRQUFRLEVBQUUsQ0FBQzt3QkFDWCxLQUFLLEVBQUU7NEJBQ0gsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsU0FBUyxFQUFFLENBQUM7eUJBQ2Y7cUJBQ0o7aUJBQ0o7YUFDSjtTQUNKO1FBQ0QsY0FBYyxF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
|