@darraghor/eslint-plugin-nestjs-typed 6.11.0 → 6.12.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
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpUHJvcGVydHlTaG91bGRIYXZlQXBpRXh0cmFNb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMvYXBpUHJvcGVydHlTaG91bGRIYXZlQXBpRXh0cmFNb2RlbHMvYXBpUHJvcGVydHlTaG91bGRIYXZlQXBpRXh0cmFNb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBVyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQU9uRTs7R0FFRztBQUNILE1BQU0saUNBQWlDLEdBQUcsQ0FDdEMsZUFBeUMsRUFDeEIsRUFBRTtJQUNuQixNQUFNLE1BQU0sR0FBc0IsRUFBRSxDQUFDO0lBRXJDLEtBQUssTUFBTSxPQUFPLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdDLElBQUksT0FBTyxFQUFFLElBQUksS0FBSyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNwRCw4Q0FBOEM7WUFDOUMsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDN0MsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNULFFBQVEsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLFFBQVE7Z0JBQ3pDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxVQUFVO2dCQUMvQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxNQUFNLENBQ0YsQ0FBQztZQUVuQyxJQUNJLGlCQUFpQjtnQkFDakIsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsY0FBYyxFQUNoRSxDQUFDO2dCQUNDLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQztnQkFDL0MscUNBQXFDO2dCQUNyQyxJQUNJLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxVQUFVO29CQUN4RCxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxlQUFlO29CQUM5QyxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ3JDLENBQUM7b0JBQ0MsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbEQsSUFBSSxhQUFhLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQzt3QkFDbkQsTUFBTSxDQUFDLElBQUksQ0FBQzs0QkFDUixTQUFTLEVBQUUsYUFBYSxDQUFDLElBQUk7NEJBQzdCLElBQUksRUFBRSxhQUFhO3lCQUN0QixDQUFDLENBQUM7b0JBQ1AsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLGlDQUFpQyxHQUFHLENBQ3RDLElBQWlDLEVBQ2hCLEVBQUU7SUFDbkIsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFO1FBQzFELGFBQWE7UUFDYixxQkFBcUI7S0FDeEIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2xFLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTVELGtDQUFrQztJQUNsQyxJQUNJLENBQUMsYUFBYTtRQUNkLGFBQWEsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLGdCQUFnQixFQUN4RCxDQUFDO1FBQ0MsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQXNCLEVBQUUsQ0FBQztJQUVyQywyQ0FBMkM7SUFDM0MsS0FBSyxNQUFNLFFBQVEsSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUMsSUFDSSxRQUFRLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxRQUFRO1lBQ3pDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxVQUFVO1lBQy9DLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFDekQsQ0FBQztZQUNDLDBDQUEwQztZQUMxQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxlQUFlLEdBQUcsaUNBQWlDLENBQ3JELFFBQVEsQ0FBQyxLQUFLLENBQ2pCLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBZ0M7SUFDbkQsSUFBSSxFQUFFLDJDQUEyQztJQUNqRCxJQUFJLEVBQUU7UUFDRixJQUFJLEVBQUU7WUFDRixXQUFXLEVBQ1Asa0hBQWtIO1NBQ3pIO1FBQ0QsUUFBUSxFQUFFO1lBQ04sdUJBQXVCLEVBQUUsZ05BQWdOO1NBQzVPO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixjQUFjLEVBQUUsS0FBSztRQUNyQixJQUFJLEVBQUUsWUFBWTtLQUNyQjtJQUNELGNBQWMsRUFBRSxFQUFFO0lBRWxCLE1BQU0sQ0FBQyxPQUFPO1FBQ1YsT0FBTztZQUNILGtCQUFrQixDQUFDLElBQWlDO2dCQUNoRCxNQUFNLE1BQU0sR0FBRyxpQ0FBaUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFdkQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNwQiw0Q0FBNEM7b0JBQzVDLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLGtCQUFrQixDQUNuRCxJQUFJLEVBQ0osQ0FBQyxhQUFhLEVBQUUscUJBQXFCLENBQUMsQ0FDekMsQ0FBQztvQkFFRixJQUFJLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQztvQkFDckMsSUFDSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUM7d0JBQ3JCLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSTs0QkFDekIsY0FBYyxDQUFDLGNBQWMsRUFDbkMsQ0FBQzt3QkFDQyxNQUFNLGFBQWEsR0FDZixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDMUMsSUFDSSxhQUFhOzRCQUNiLGFBQWEsQ0FBQyxJQUFJO2dDQUNkLGNBQWMsQ0FBQyxnQkFBZ0IsRUFDckMsQ0FBQzs0QkFDQyxLQUFLLE1BQU0sUUFBUSxJQUFJLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQ0FDOUMsSUFDSSxRQUFRLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxRQUFRO29DQUN6QyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUk7d0NBQ2IsY0FBYyxDQUFDLFVBQVUsRUFDL0IsQ0FBQztvQ0FDQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztvQ0FDOUIsSUFDSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUNoQyxHQUFHLENBQ04sRUFDSCxDQUFDO3dDQUNDLFVBQVUsR0FBRyxHQUFHLENBQUM7d0NBQ2pCLE1BQU07b0NBQ1YsQ0FBQztnQ0FDTCxDQUFDOzRCQUNMLENBQUM7d0JBQ0wsQ0FBQztvQkFDTCxDQUFDO29CQUVELG9CQUFvQjtvQkFDcEIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQzt3QkFDekIsT0FBTyxDQUFDLE1BQU0sQ0FBQzs0QkFDWCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7NEJBQ2hCLFNBQVMsRUFBRSx5QkFBeUI7NEJBQ3BDLElBQUksRUFBRTtnQ0FDRixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7Z0NBQzFCLFVBQVUsRUFBRSxVQUFVOzZCQUN6Qjt5QkFDSixDQUFDLENBQUM7b0JBQ1AsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztTQUNKLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyxDQUFDO0FBRUgsZUFBZSxJQUFJLENBQUMifQ==
@@ -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.12.0",
4
4
  "description": "Eslint rules for nestjs projects",
5
5
  "scripts": {
6
6
  "clean": "rm -Rf ./dist/",