darraghoriordan / eslint-plugin-nestjs-typed

Some eslint rules for working with NestJs projects
http://www.darraghoriordan.com
171 stars 34 forks source link

validated-non-primitive-property-needs-type-decorator: TypeError: Cannot read properties of undefined (reading 'type') #21

Closed iddan-flycode closed 2 years ago

iddan-flycode commented 2 years ago

After upgrading to 3.8.0 the rule @darraghor/nestjs-typed/validated-non-primitive-property-needs-type-decorator is throwing:

TypeError: Cannot read properties of undefined (reading 'type')
Occurred while linting /Users/iddan/flycode/continuous-content-app/backend/src/github-app-events/dto/installation-created.dto.ts:139
Rule: "@darraghor/nestjs-typed/validated-non-primitive-property-needs-type-decorator"
    at PropertyDefinition (/Users/iddan/flycode/continuous-content-app/backend/node_modules/@darraghor/eslint-plugin-nestjs-typed/dist/rules/validate-non-primitves-needs-type-decorator/validateNonPrimitiveNeedsDecorators.js:47:173)
    at ruleErrorHandler (/Users/iddan/flycode/continuous-content-app/backend/node_modules/eslint/lib/linter/linter.js:966:28)
    at /Users/iddan/flycode/continuous-content-app/backend/node_modules/eslint/lib/linter/safe-emitter.js:45:58
    at Array.forEach (<anonymous>)
    at Object.emit (/Users/iddan/flycode/continuous-content-app/backend/node_modules/eslint/lib/linter/safe-emitter.js:45:38)
    at NodeEventGenerator.applySelector (/Users/iddan/flycode/continuous-content-app/backend/node_modules/eslint/lib/linter/node-event-generator.js:297:26)
    at NodeEventGenerator.applySelectors (/Users/iddan/flycode/continuous-content-app/backend/node_modules/eslint/lib/linter/node-event-generator.js:326:22)
    at NodeEventGenerator.enterNode (/Users/iddan/flycode/continuous-content-app/backend/node_modules/eslint/lib/linter/node-event-generator.js:340:14)
    at CodePathAnalyzer.enterNode (/Users/iddan/flycode/continuous-content-app/backend/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js:790:23)
    at /Users/iddan/flycode/continuous-content-app/backend/node_modules/eslint/lib/linter/linter.js:997:32

The compiled plugin code where the error occurs:

                if (isAnArray) {
                    mainType = (_b = (_a = node.typeAnnotation) === null || _a === void 0 ? void 0 : _a.typeAnnotation) === null || _b === void 0 ? void 0 : _b.elementType.type;
                }

The failing code:

class ExampleDto {
  @ApiProperty({ isArray: true })
  @Allow()
  @Type(() => Array)
  events!: Array<string>;
}
darraghoriordan commented 2 years ago

fixed in 3.8.1

thanks for reporting

iddan-flycode commented 2 years ago

Thank you!