@darraghor/eslint-plugin-nestjs-typed 6.11.0 → 6.13.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.
@@ -23,9 +23,10 @@ export const rules = {
23
23
  "@darraghor/nestjs-typed/sort-module-metadata-arrays": "off",
24
24
  "@darraghor/nestjs-typed/no-duplicate-decorators": "error",
25
25
  "@darraghor/nestjs-typed/use-injectable-provided-token": "error",
26
+ "@darraghor/nestjs-typed/api-property-should-have-api-extra-models": "error",
26
27
  };
27
28
  export default {
28
29
  extends: ["./configs/base"],
29
30
  rules,
30
31
  };
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb21tZW5kZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlncy9yZWNvbW1lbmRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQWdDO0lBQzlDLDJFQUEyRSxFQUN2RSxPQUFPO0lBQ1gsdURBQXVELEVBQUU7UUFDckQsT0FBTztRQUNQO1lBQ0ksR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO1lBQ3BCLGVBQWUsRUFBRSxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO1NBQ3hEO0tBQ0o7SUFDRCxtRUFBbUUsRUFDL0QsT0FBTztJQUNYLGdFQUFnRSxFQUFFLE9BQU87SUFDekUsNERBQTRELEVBQUUsT0FBTztJQUNyRSwwREFBMEQsRUFBRSxPQUFPO0lBQ25FLHVFQUF1RSxFQUNuRSxPQUFPO0lBQ1gsOERBQThELEVBQUUsT0FBTztJQUN2RSxrRUFBa0UsRUFBRSxPQUFPO0lBQzNFLCtFQUErRSxFQUMzRSxPQUFPO0lBQ1gsa0VBQWtFLEVBQUUsT0FBTztJQUMzRSx3REFBd0QsRUFBRSxPQUFPO0lBQ2pFLDhEQUE4RCxFQUFFLE9BQU87SUFDdkUsdURBQXVELEVBQUUsS0FBSztJQUM5RCxpRUFBaUUsRUFBRSxLQUFLO0lBQ3hFLHFEQUFxRCxFQUFFLEtBQUs7SUFDNUQsaURBQWlELEVBQUUsT0FBTztJQUMxRCx1REFBdUQsRUFBRSxPQUFPO0NBQ25FLENBQUM7QUFDRixlQUFlO0lBQ1gsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7SUFDM0IsS0FBSztDQUNSLENBQUMifQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb21tZW5kZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlncy9yZWNvbW1lbmRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQWdDO0lBQzlDLDJFQUEyRSxFQUN2RSxPQUFPO0lBQ1gsdURBQXVELEVBQUU7UUFDckQsT0FBTztRQUNQO1lBQ0ksR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO1lBQ3BCLGVBQWUsRUFBRSxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO1NBQ3hEO0tBQ0o7SUFDRCxtRUFBbUUsRUFDL0QsT0FBTztJQUNYLGdFQUFnRSxFQUFFLE9BQU87SUFDekUsNERBQTRELEVBQUUsT0FBTztJQUNyRSwwREFBMEQsRUFBRSxPQUFPO0lBQ25FLHVFQUF1RSxFQUNuRSxPQUFPO0lBQ1gsOERBQThELEVBQUUsT0FBTztJQUN2RSxrRUFBa0UsRUFBRSxPQUFPO0lBQzNFLCtFQUErRSxFQUMzRSxPQUFPO0lBQ1gsa0VBQWtFLEVBQUUsT0FBTztJQUMzRSx3REFBd0QsRUFBRSxPQUFPO0lBQ2pFLDhEQUE4RCxFQUFFLE9BQU87SUFDdkUsdURBQXVELEVBQUUsS0FBSztJQUM5RCxpRUFBaUUsRUFBRSxLQUFLO0lBQ3hFLHFEQUFxRCxFQUFFLEtBQUs7SUFDNUQsaURBQWlELEVBQUUsT0FBTztJQUMxRCx1REFBdUQsRUFBRSxPQUFPO0lBQ2hFLG1FQUFtRSxFQUMvRCxPQUFPO0NBQ2QsQ0FBQztBQUNGLGVBQWU7SUFDWCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMzQixLQUFLO0NBQ1IsQ0FBQyJ9
@@ -1,3 +1,3 @@
1
1
  import { ESLintUtils } from "@typescript-eslint/utils";
2
- declare const rule: ESLintUtils.RuleModule<"missing-is-defined-decorator" | "missing-is-optional-decorator" | "conflicting-defined-decorators-defined-optional" | "conflicting-defined-decorators-defined-validate-if" | "conflicting-defined-decorators-optional-validate-if" | "conflicting-defined-decorators-all", [], unknown, ESLintUtils.RuleListener>;
2
+ declare const rule: ESLintUtils.RuleModule<"missing-is-defined-decorator" | "missing-is-optional-decorator" | "conflicting-defined-decorators-defined-optional" | "conflicting-defined-decorators-optional-validate-if" | "conflicting-defined-decorators-all", [], unknown, ESLintUtils.RuleListener>;
3
3
  export default rule;
@@ -13,7 +13,6 @@ const rule = createRule({
13
13
  "missing-is-defined-decorator": "Non-optional properties must have a decorator that checks the value is defined (for example: @IsDefined())",
14
14
  "missing-is-optional-decorator": "Optional properties must have @IsOptional() or @ValidateIf() decorator",
15
15
  "conflicting-defined-decorators-defined-optional": "Properties can have @IsDefined() or @IsOptional() but not both",
16
- "conflicting-defined-decorators-defined-validate-if": "Properties can have @IsDefined() or @ValidateIf() but not both",
17
16
  "conflicting-defined-decorators-optional-validate-if": "Properties can have @IsOptional() or @ValidateIf() but not both",
18
17
  "conflicting-defined-decorators-all": "Properties can have one of @IsDefined() or @IsOptional() or @ValidateIf()",
19
18
  },
@@ -53,13 +52,6 @@ const rule = createRule({
53
52
  messageId: "conflicting-defined-decorators-defined-optional",
54
53
  });
55
54
  }
56
- else if (decoratorsStatus.hasIsDefinedDecorator &&
57
- decoratorsStatus.hasValidateIfDecorator) {
58
- context.report({
59
- node: propertyDefinition,
60
- messageId: "conflicting-defined-decorators-defined-validate-if",
61
- });
62
- }
63
55
  else if (decoratorsStatus.hasIsOptionalDecorator &&
64
56
  decoratorsStatus.hasValidateIfDecorator) {
65
57
  context.report({
@@ -154,4 +146,4 @@ function getDecoratorsStatus(propertyDefinition) {
154
146
  hasValidateIfDecorator,
155
147
  };
156
148
  }
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsUHJvcGVydGllc0hhdmVFeHBsaWNpdERlZmluZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMvYWxsUHJvcGVydGllc0hhdmVFeHBsaWNpdERlZmluZWQvYWxsUHJvcGVydGllc0hhdmVFeHBsaWNpdERlZmluZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGNBQWMsRUFFZCxXQUFXLEdBRWQsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDNUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXJELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRW5FLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FRckI7SUFDRSxJQUFJLEVBQUUsc0NBQXNDO0lBQzVDLElBQUksRUFBRTtRQUNGLElBQUksRUFBRTtZQUNGLFdBQVcsRUFDUCxrRUFBa0U7U0FDekU7UUFDRCxRQUFRLEVBQUU7WUFDTiw4QkFBOEIsRUFDMUIsNEdBQTRHO1lBQ2hILCtCQUErQixFQUMzQix3RUFBd0U7WUFDNUUsaURBQWlELEVBQzdDLGdFQUFnRTtZQUNwRSxvREFBb0QsRUFDaEQsZ0VBQWdFO1lBQ3BFLHFEQUFxRCxFQUNqRCxpRUFBaUU7WUFDckUsb0NBQW9DLEVBQ2hDLDJFQUEyRTtTQUNsRjtRQUNELElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLEVBQUU7S0FDYjtJQUNELGNBQWMsRUFBRSxFQUFFO0lBQ2xCLE1BQU0sRUFBRSxVQUFVLE9BQU87UUFDckIsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFP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
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsUHJvcGVydGllc0hhdmVFeHBsaWNpdERlZmluZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMvYWxsUHJvcGVydGllc0hhdmVFeHBsaWNpdERlZmluZWQvYWxsUHJvcGVydGllc0hhdmVFeHBsaWNpdERlZmluZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGNBQWMsRUFFZCxXQUFXLEdBRWQsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDNUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXJELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRW5FLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FPckI7SUFDRSxJQUFJLEVBQUUsc0NBQXNDO0lBQzVDLElBQUksRUFBRTtRQUNGLElBQUksRUFBRTtZQUNGLFdBQVcsRUFDUCxrRUFBa0U7U0FDekU7UUFDRCxRQUFRLEVBQUU7WUFDTiw4QkFBOEIsRUFDMUIsNEdBQTRHO1lBQ2hILCtCQUErQixFQUMzQix3RUFBd0U7WUFDNUUsaURBQWlELEVBQzdDLGdFQUFnRTtZQUNwRSxxREFBcUQsRUFDakQsaUVBQWlFO1lBQ3JFLG9DQUFvQyxFQUNoQywyRUFBMkU7U0FDbEY7UUFDRCxJQUFJLEVBQUUsU0FBUztRQUNmLE1BQU0sRUFBRSxFQUFFO0tBQ2I7SUFDRCxjQUFjLEVBQUUsRUFBRTtJQUNsQixNQUFNLEVBQUUsVUFBVSxPQUFPO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV2RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pE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
@@ -0,0 +1,2 @@
1
+ declare const rule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"shouldUseApiExtraModels", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
+ export default rule;
@@ -0,0 +1,129 @@
1
+ import { AST_NODE_TYPES } from "@typescript-eslint/utils";
2
+ import { createRule } from "../../utils/createRule.js";
3
+ import { typedTokenHelpers } from "../../utils/typedTokenHelpers.js";
4
+ /**
5
+ * Extracts model names from getSchemaPath() calls within oneOf/allOf/anyOf arrays
6
+ */
7
+ const extractModelsFromSchemaReferences = (arrayExpression) => {
8
+ const models = [];
9
+ for (const element of arrayExpression.elements) {
10
+ if (element?.type === AST_NODE_TYPES.ObjectExpression) {
11
+ // Look for { $ref: getSchemaPath(ModelName) }
12
+ const referenceProperty = element.properties.find((property) => property.type === AST_NODE_TYPES.Property &&
13
+ property.key.type === AST_NODE_TYPES.Identifier &&
14
+ property.key.name === "$ref");
15
+ if (referenceProperty &&
16
+ referenceProperty.value.type === AST_NODE_TYPES.CallExpression) {
17
+ const callExpression = referenceProperty.value;
18
+ // Check if it's a getSchemaPath call
19
+ if (callExpression.callee.type === AST_NODE_TYPES.Identifier &&
20
+ callExpression.callee.name === "getSchemaPath" &&
21
+ callExpression.arguments.length > 0) {
22
+ const firstArgument = callExpression.arguments[0];
23
+ if (firstArgument.type === AST_NODE_TYPES.Identifier) {
24
+ models.push({
25
+ modelName: firstArgument.name,
26
+ node: firstArgument,
27
+ });
28
+ }
29
+ }
30
+ }
31
+ }
32
+ }
33
+ return models;
34
+ };
35
+ /**
36
+ * Checks if a property definition uses oneOf/allOf/anyOf with model references
37
+ */
38
+ const getModelsFromApiPropertyDecorator = (node) => {
39
+ const decorators = typedTokenHelpers.getDecoratorsNamed(node, [
40
+ "ApiProperty",
41
+ "ApiPropertyOptional",
42
+ ]);
43
+ if (decorators.length === 0) {
44
+ return [];
45
+ }
46
+ if (decorators[0].expression.type !== AST_NODE_TYPES.CallExpression) {
47
+ return [];
48
+ }
49
+ const firstArgument = decorators[0].expression.arguments[0];
50
+ // Only process object expressions
51
+ if (!firstArgument ||
52
+ firstArgument.type !== AST_NODE_TYPES.ObjectExpression) {
53
+ return [];
54
+ }
55
+ const models = [];
56
+ // Check for oneOf, allOf, anyOf properties
57
+ for (const property of firstArgument.properties) {
58
+ if (property.type === AST_NODE_TYPES.Property &&
59
+ property.key.type === AST_NODE_TYPES.Identifier &&
60
+ ["oneOf", "allOf", "anyOf"].includes(property.key.name)) {
61
+ // The value should be an array expression
62
+ if (property.value.type === AST_NODE_TYPES.ArrayExpression) {
63
+ const extractedModels = extractModelsFromSchemaReferences(property.value);
64
+ models.push(...extractedModels);
65
+ }
66
+ }
67
+ }
68
+ return models;
69
+ };
70
+ const rule = createRule({
71
+ name: "api-property-should-have-api-extra-models",
72
+ meta: {
73
+ docs: {
74
+ description: "Ensures models referenced in oneOf, allOf, or anyOf within ApiProperty decorators are declared in ApiExtraModels",
75
+ },
76
+ messages: {
77
+ shouldUseApiExtraModels: `Model '{{modelName}}' is referenced in {{schemaType}} but may not be included in @ApiExtraModels(). Ensure it is added to @ApiExtraModels() on a controller or included directly in an endpoint response type.`,
78
+ },
79
+ schema: [],
80
+ hasSuggestions: false,
81
+ type: "suggestion",
82
+ },
83
+ defaultOptions: [],
84
+ create(context) {
85
+ return {
86
+ PropertyDefinition(node) {
87
+ const models = getModelsFromApiPropertyDecorator(node);
88
+ if (models.length > 0) {
89
+ // Determine which schema type is being used
90
+ const decorators = typedTokenHelpers.getDecoratorsNamed(node, ["ApiProperty", "ApiPropertyOptional"]);
91
+ let schemaType = "oneOf/allOf/anyOf";
92
+ if (decorators.length > 0 &&
93
+ decorators[0].expression.type ===
94
+ AST_NODE_TYPES.CallExpression) {
95
+ const firstArgument = decorators[0].expression.arguments[0];
96
+ if (firstArgument &&
97
+ firstArgument.type ===
98
+ AST_NODE_TYPES.ObjectExpression) {
99
+ for (const property of firstArgument.properties) {
100
+ if (property.type === AST_NODE_TYPES.Property &&
101
+ property.key.type ===
102
+ AST_NODE_TYPES.Identifier) {
103
+ const key = property.key.name;
104
+ if (["oneOf", "allOf", "anyOf"].includes(key)) {
105
+ schemaType = key;
106
+ break;
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ // Report each model
113
+ for (const model of models) {
114
+ context.report({
115
+ node: model.node,
116
+ messageId: "shouldUseApiExtraModels",
117
+ data: {
118
+ modelName: model.modelName,
119
+ schemaType: schemaType,
120
+ },
121
+ });
122
+ }
123
+ }
124
+ },
125
+ };
126
+ },
127
+ });
128
+ export default rule;
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpUHJvcGVydHlTaG91bGRIYXZlQXBpRXh0cmFNb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMvYXBpUHJvcGVydHlTaG91bGRIYXZlQXBpRXh0cmFNb2RlbHMvYXBpUHJvcGVydHlTaG91bGRIYXZlQXBpRXh0cmFNb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBVyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQU9uRTs7R0FFRztBQUNILE1BQU0saUNBQWlDLEdBQUcsQ0FDdEMsZUFBeUMsRUFDeEIsRUFBRTtJQUNuQixNQUFNLE1BQU0sR0FBc0IsRUFBRSxDQUFDO0lBRXJDLEtBQUssTUFBTSxPQUFPLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdDLElBQUksT0FBTyxFQUFFLElBQUksS0FBSyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNwRCw4Q0FBOEM7WUFDOUMsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDN0MsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNULFFBQVEsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLFFBQVE7Z0JBQ3pDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxVQUFVO2dCQUMvQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxNQUFNLENBQ0YsQ0FBQztZQUVuQyxJQUNJLGlCQUFpQjtnQkFDakIsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsY0FBYyxFQUNoRSxDQUFDO2dCQUNDLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQztnQkFDL0Ms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
@@ -1,5 +1,5 @@
1
1
  declare const allRules: {
2
- "all-properties-have-explicit-defined": import("@typescript-eslint/utils/ts-eslint").RuleModule<"missing-is-defined-decorator" | "missing-is-optional-decorator" | "conflicting-defined-decorators-defined-optional" | "conflicting-defined-decorators-defined-validate-if" | "conflicting-defined-decorators-optional-validate-if" | "conflicting-defined-decorators-all", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
2
+ "all-properties-have-explicit-defined": import("@typescript-eslint/utils/ts-eslint").RuleModule<"missing-is-defined-decorator" | "missing-is-optional-decorator" | "conflicting-defined-decorators-defined-optional" | "conflicting-defined-decorators-optional-validate-if" | "conflicting-defined-decorators-all", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
3
3
  "api-property-matches-property-optionality": import("@typescript-eslint/utils/ts-eslint").RuleModule<"shouldUseOptionalDecorator" | "shouldUseRequiredDecorator", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
4
4
  "injectable-should-be-provided": import("@typescript-eslint/utils/ts-eslint").RuleModule<"injectableInModule" | "controllersInModule", [{
5
5
  src: string[];
@@ -26,5 +26,6 @@ declare const allRules: {
26
26
  caseFormat: "kebab-case" | "snake_case" | "camelCase";
27
27
  }], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
28
28
  "use-injectable-provided-token": import("@typescript-eslint/utils/ts-eslint").RuleModule<"useInjectableProvidedToken", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
29
+ "api-property-should-have-api-extra-models": import("@typescript-eslint/utils/ts-eslint").RuleModule<"shouldUseApiExtraModels", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
29
30
  };
30
31
  export default allRules;
@@ -17,6 +17,7 @@ import sortModuleMetadataArrays from "./sortModuleMetadataArrays/sortModuleMetad
17
17
  import noDuplicateDecorators from "./noDuplicateDecorators/noDuplicateDecorators.js";
18
18
  import useCorrectEndpointNamingConvention from "./useCorrectEndpointNamingConvention/useCorrectEndpointNamingConvention.js";
19
19
  import useInjectableProvidedToken from "./useInjectableProvidedToken/useInjectableProvidedToken.js";
20
+ import apiPropertyShouldHaveApiExtraModels from "./apiPropertyShouldHaveApiExtraModels/apiPropertyShouldHaveApiExtraModels.js";
20
21
  const allRules = {
21
22
  "all-properties-have-explicit-defined": allPropertiesHaveExplicitDefined,
22
23
  "api-property-matches-property-optionality": apiPropertyMatchesPropertyOptionality,
@@ -37,6 +38,7 @@ const allRules = {
37
38
  "sort-module-metadata-arrays": sortModuleMetadataArrays,
38
39
  "use-correct-endpoint-naming-convention": useCorrectEndpointNamingConvention,
39
40
  "use-injectable-provided-token": useInjectableProvidedToken,
41
+ "api-property-should-have-api-extra-models": apiPropertyShouldHaveApiExtraModels,
40
42
  };
41
43
  export default allRules;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsTUFBTSw2REFBNkQsQ0FBQztBQUNyRyxPQUFPLDRDQUE0QyxNQUFNLDRFQUE0RSxDQUFDO0FBQ3RJLE9BQU8scUNBQXFDLE1BQU0sa0ZBQWtGLENBQUM7QUFDckksT0FBTyw2QkFBNkIsTUFBTSxrRUFBa0UsQ0FBQztBQUM3RyxPQUFPLGtDQUFrQyxNQUFNLDRFQUE0RSxDQUFDO0FBQzVILE9BQU8sNEJBQTRCLE1BQU0sZ0VBQWdFLENBQUM7QUFDMUcsT0FBTyx1Q0FBdUMsTUFBTSxzRkFBc0YsQ0FBQztBQUMzSSxPQUFPLGdDQUFnQyxNQUFNLDRFQUE0RSxDQUFDO0FBQzFILE9BQU8sdUNBQXVDLE1BQU0sOEVBQThFLENBQUM7QUFDbkksT0FBTyxtQ0FBbUMsTUFBTSxpRkFBaUYsQ0FBQztBQUNsSSxPQUFPLGtDQUFrQyxNQUFNLDRFQUE0RSxDQUFDO0FBQzVILE9BQU8sMkJBQTJCLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxnQ0FBZ0MsTUFBTSx3RUFBd0UsQ0FBQztBQUN0SCxPQUFPLHlCQUF5QixNQUFNLDBEQUEwRCxDQUFDO0FBQ2pHLE9BQU8sbUNBQW1DLE1BQU0sOEVBQThFLENBQUM7QUFDL0gsT0FBTyx3QkFBd0IsTUFBTSx3REFBd0QsQ0FBQztBQUM5RixPQUFPLHFCQUFxQixNQUFNLGtEQUFrRCxDQUFDO0FBQ3JGLE9BQU8sa0NBQWtDLE1BQU0sNEVBQTRFLENBQUM7QUFDNUgsT0FBTywwQkFBMEIsTUFBTSw0REFBNEQsQ0FBQztBQUVwRyxNQUFNLFFBQVEsR0FBRztJQUNiLHNDQUFzQyxFQUFFLGdDQUFnQztJQUN4RSwyQ0FBMkMsRUFDdkMscUNBQXFDO0lBQ3pDLCtCQUErQixFQUFFLDBCQUEwQjtJQUMzRCx5QkFBeUIsRUFBRSxxQkFBcUI7SUFDaEQsbURBQW1ELEVBQy9DLDRDQUE0QztJQUNoRCxvQ0FBb0MsRUFBRSw2QkFBNkI7SUFDbkUsd0NBQXdDLEVBQ3BDLGtDQUFrQztJQUN0Qyx5Q0FBeUMsRUFDckMsbUNBQW1DO0lBQ3ZDLGtDQUFrQyxFQUFFLDRCQUE0QjtJQUNoRSwrQ0FBK0MsRUFDM0MsdUNBQXVDO0lBQzNDLHNDQUFzQyxFQUFFLGdDQUFnQztJQUN4RSwwQ0FBMEMsRUFDdEMsdUNBQXVDO0lBQzNDLHVEQUF1RCxFQUNuRCxtQ0FBbUM7SUFDdkMsMENBQTBDLEVBQ3RDLGtDQUFrQztJQUN0QyxnQ0FBZ0MsRUFBRSwyQkFBMkI7SUFDN0QsK0JBQStCLEVBQUUseUJBQXlCO0lBQzFELDZCQUE2QixFQUFFLHdCQUF3QjtJQUN2RCx3Q0FBd0MsRUFDcEMsa0NBQWtDO0lBQ3RDLCtCQUErQixFQUFFLDBCQUEwQjtDQUM5RCxDQUFDO0FBRUYsZUFBZSxRQUFRLENBQUMifQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsTUFBTSw2REFBNkQsQ0FBQztBQUNyRyxPQUFPLDRDQUE0QyxNQUFNLDRFQUE0RSxDQUFDO0FBQ3RJLE9BQU8scUNBQXFDLE1BQU0sa0ZBQWtGLENBQUM7QUFDckksT0FBTyw2QkFBNkIsTUFBTSxrRUFBa0UsQ0FBQztBQUM3RyxPQUFPLGtDQUFrQyxNQUFNLDRFQUE0RSxDQUFDO0FBQzVILE9BQU8sNEJBQTRCLE1BQU0sZ0VBQWdFLENBQUM7QUFDMUcsT0FBTyx1Q0FBdUMsTUFBTSxzRkFBc0YsQ0FBQztBQUMzSSxPQUFPLGdDQUFnQyxNQUFNLDRFQUE0RSxDQUFDO0FBQzFILE9BQU8sdUNBQXVDLE1BQU0sOEVBQThFLENBQUM7QUFDbkksT0FBTyxtQ0FBbUMsTUFBTSxpRkFBaUYsQ0FBQztBQUNsSSxPQUFPLGtDQUFrQyxNQUFNLDRFQUE0RSxDQUFDO0FBQzVILE9BQU8sMkJBQTJCLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxnQ0FBZ0MsTUFBTSx3RUFBd0UsQ0FBQztBQUN0SCxPQUFPLHlCQUF5QixNQUFNLDBEQUEwRCxDQUFDO0FBQ2pHLE9BQU8sbUNBQW1DLE1BQU0sOEVBQThFLENBQUM7QUFDL0gsT0FBTyx3QkFBd0IsTUFBTSx3REFBd0QsQ0FBQztBQUM5RixPQUFPLHFCQUFxQixNQUFNLGtEQUFrRCxDQUFDO0FBQ3JGLE9BQU8sa0NBQWtDLE1BQU0sNEVBQTRFLENBQUM7QUFDNUgsT0FBTywwQkFBMEIsTUFBTSw0REFBNEQsQ0FBQztBQUNwRyxPQUFPLG1DQUFtQyxNQUFNLDhFQUE4RSxDQUFDO0FBQy9ILE1BQU0sUUFBUSxHQUFHO0lBQ2Isc0NBQXNDLEVBQUUsZ0NBQWdDO0lBQ3hFLDJDQUEyQyxFQUN2QyxxQ0FBcUM7SUFDekMsK0JBQStCLEVBQUUsMEJBQTBCO0lBQzNELHlCQUF5QixFQUFFLHFCQUFxQjtJQUNoRCxtREFBbUQsRUFDL0MsNENBQTRDO0lBQ2hELG9DQUFvQyxFQUFFLDZCQUE2QjtJQUNuRSx3Q0FBd0MsRUFDcEMsa0NBQWtDO0lBQ3RDLHlDQUF5QyxFQUNyQyxtQ0FBbUM7SUFDdkMsa0NBQWtDLEVBQUUsNEJBQTRCO0lBQ2hFLCtDQUErQyxFQUMzQyx1Q0FBdUM7SUFDM0Msc0NBQXNDLEVBQUUsZ0NBQWdDO0lBQ3hFLDBDQUEwQyxFQUN0Qyx1Q0FBdUM7SUFDM0MsdURBQXVELEVBQ25ELG1DQUFtQztJQUN2QywwQ0FBMEMsRUFDdEMsa0NBQWtDO0lBQ3RDLGdDQUFnQyxFQUFFLDJCQUEyQjtJQUM3RCwrQkFBK0IsRUFBRSx5QkFBeUI7SUFDMUQsNkJBQTZCLEVBQUUsd0JBQXdCO0lBQ3ZELHdDQUF3QyxFQUNwQyxrQ0FBa0M7SUFDdEMsK0JBQStCLEVBQUUsMEJBQTBCO0lBQzNELDJDQUEyQyxFQUN2QyxtQ0FBbUM7Q0FDMUMsQ0FBQztBQUVGLGVBQWUsUUFBUSxDQUFDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darraghor/eslint-plugin-nestjs-typed",
3
- "version": "6.11.0",
3
+ "version": "6.13.0",
4
4
  "description": "Eslint rules for nestjs projects",
5
5
  "scripts": {
6
6
  "clean": "rm -Rf ./dist/",