klasik 2.5.1 → 2.6.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 (53) hide show
  1. package/README.md +102 -6
  2. package/dist/bin/go-schema-gen +0 -0
  3. package/dist/builders/class-builder.d.ts +2 -0
  4. package/dist/builders/class-builder.d.ts.map +1 -1
  5. package/dist/builders/class-builder.js.map +1 -1
  6. package/dist/cli/commands/generate-crd.d.ts +1 -0
  7. package/dist/cli/commands/generate-crd.d.ts.map +1 -1
  8. package/dist/cli/commands/generate-crd.js +2 -0
  9. package/dist/cli/commands/generate-crd.js.map +1 -1
  10. package/dist/cli/commands/generate-go.d.ts +1 -0
  11. package/dist/cli/commands/generate-go.d.ts.map +1 -1
  12. package/dist/cli/commands/generate-go.js +2 -0
  13. package/dist/cli/commands/generate-go.js.map +1 -1
  14. package/dist/cli/commands/generate-jsonschema.d.ts +1 -0
  15. package/dist/cli/commands/generate-jsonschema.d.ts.map +1 -1
  16. package/dist/cli/commands/generate-jsonschema.js +2 -0
  17. package/dist/cli/commands/generate-jsonschema.js.map +1 -1
  18. package/dist/cli/commands/generate.d.ts +2 -0
  19. package/dist/cli/commands/generate.d.ts.map +1 -1
  20. package/dist/cli/commands/generate.js +4 -0
  21. package/dist/cli/commands/generate.js.map +1 -1
  22. package/dist/cli/utils/options.d.ts +8 -0
  23. package/dist/cli/utils/options.d.ts.map +1 -1
  24. package/dist/cli/utils/options.js +16 -0
  25. package/dist/cli/utils/options.js.map +1 -1
  26. package/dist/generator/generator.d.ts.map +1 -1
  27. package/dist/generator/generator.js +4 -0
  28. package/dist/generator/generator.js.map +1 -1
  29. package/dist/generators/api-client-generator.d.ts +14 -0
  30. package/dist/generators/api-client-generator.d.ts.map +1 -1
  31. package/dist/generators/api-client-generator.js +94 -0
  32. package/dist/generators/api-client-generator.js.map +1 -1
  33. package/dist/generators/parameter-style-builder.d.ts +87 -0
  34. package/dist/generators/parameter-style-builder.d.ts.map +1 -0
  35. package/dist/generators/parameter-style-builder.js +164 -0
  36. package/dist/generators/parameter-style-builder.js.map +1 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +3 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/plugins/class-validator-plugin.d.ts +3 -0
  42. package/dist/plugins/class-validator-plugin.d.ts.map +1 -1
  43. package/dist/plugins/class-validator-plugin.js +45 -3
  44. package/dist/plugins/class-validator-plugin.js.map +1 -1
  45. package/dist/plugins/nestjs-graphql-plugin.d.ts +58 -0
  46. package/dist/plugins/nestjs-graphql-plugin.d.ts.map +1 -0
  47. package/dist/plugins/nestjs-graphql-plugin.js +182 -0
  48. package/dist/plugins/nestjs-graphql-plugin.js.map +1 -0
  49. package/dist/plugins/zod-validator-plugin.d.ts +3 -0
  50. package/dist/plugins/zod-validator-plugin.d.ts.map +1 -1
  51. package/dist/plugins/zod-validator-plugin.js +21 -1
  52. package/dist/plugins/zod-validator-plugin.js.map +1 -1
  53. package/package.json +1 -1
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ /**
3
+ * Parameter Style Builder
4
+ *
5
+ * Utility class for handling different API method parameter styles.
6
+ * Supports object-flat and positional parameter styles.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ParameterStyleBuilder = void 0;
10
+ const name_utils_1 = require("../utils/name-utils");
11
+ /**
12
+ * Parameter style builder for generating method signatures and interfaces
13
+ */
14
+ class ParameterStyleBuilder {
15
+ constructor(options) {
16
+ this.options = options;
17
+ }
18
+ /**
19
+ * Detect parameter name collisions for object-flat style
20
+ *
21
+ * In object-flat style, all parameters go into a single object,
22
+ * so we need to ensure no two parameters have the same name after camelCase conversion.
23
+ *
24
+ * @param operation - The operation to check
25
+ * @returns Collision report with errors if collisions found
26
+ */
27
+ detectCollisions(operation) {
28
+ const seen = new Map();
29
+ const errors = [];
30
+ // Check all parameters
31
+ for (const param of operation.parameters) {
32
+ const camelName = (0, name_utils_1.toCamelCase)(param.name);
33
+ if (seen.has(camelName)) {
34
+ const existing = seen.get(camelName);
35
+ // Collision found - always error
36
+ errors.push(`Parameter name collision in operation '${operation.operationId}':\n` +
37
+ ` - '${existing.originalName}' (${existing.location} parameter, type: ${this.typeToString(existing.type)})\n` +
38
+ ` - '${param.name}' (${param.in} parameter, type: ${this.typeToString(param.type)})\n` +
39
+ `Both parameters normalize to '${camelName}'.\n\n` +
40
+ `Solutions:\n` +
41
+ ` 1. Rename one parameter in your OpenAPI spec\n` +
42
+ ` 2. Use --parameter-style positional to preserve original behavior`);
43
+ }
44
+ else {
45
+ seen.set(camelName, {
46
+ name: camelName,
47
+ originalName: param.name,
48
+ location: param.in,
49
+ type: param.type,
50
+ required: param.required,
51
+ });
52
+ }
53
+ }
54
+ return {
55
+ hasCollisions: errors.length > 0,
56
+ errors,
57
+ parameterMap: seen,
58
+ };
59
+ }
60
+ /**
61
+ * Generate parameter interface for object-flat style
62
+ *
63
+ * Creates a TypeScript interface for the params object.
64
+ * Note: requestBody is NOT included in this interface - it's a separate parameter.
65
+ *
66
+ * @param operation - The operation to generate interface for
67
+ * @returns TypeScript interface code
68
+ */
69
+ generateParameterInterface(operation) {
70
+ const interfaceName = `${(0, name_utils_1.toPascalCase)(operation.operationId)}Params`;
71
+ const lines = [];
72
+ // Add JSDoc
73
+ lines.push(`/**`);
74
+ lines.push(` * Parameters for ${operation.operationId} operation`);
75
+ if (operation.summary) {
76
+ lines.push(` * ${operation.summary}`);
77
+ }
78
+ lines.push(` */`);
79
+ // Interface declaration
80
+ lines.push(`export interface ${interfaceName} {`);
81
+ // Add each parameter (excluding requestBody - it's separate!)
82
+ for (const param of operation.parameters) {
83
+ const paramName = (0, name_utils_1.toCamelCase)(param.name);
84
+ const typeStr = this.typeReferenceToString(param.type);
85
+ const optional = !param.required ? '?' : '';
86
+ // Add param comment
87
+ if (param.description) {
88
+ lines.push(` /** ${param.description} */`);
89
+ }
90
+ lines.push(` ${paramName}${optional}: ${typeStr};`);
91
+ }
92
+ lines.push(`}`);
93
+ lines.push(''); // Empty line after interface
94
+ return lines.join('\n');
95
+ }
96
+ /**
97
+ * Generate parameter extraction code for method body
98
+ *
99
+ * For object-flat style, this generates destructuring code.
100
+ * For positional style, no extraction is needed.
101
+ *
102
+ * @param operation - The operation
103
+ * @param style - The parameter style
104
+ * @returns Array of code lines
105
+ */
106
+ generateParameterExtraction(operation, style) {
107
+ const lines = [];
108
+ if (style === 'positional') {
109
+ // No extraction needed - parameters are already named correctly
110
+ return lines;
111
+ }
112
+ // object-flat style
113
+ if (operation.parameters.length > 0) {
114
+ // Generate destructuring
115
+ // Use `params || {}` to handle optional params when all parameters are optional
116
+ const paramNames = operation.parameters.map(p => (0, name_utils_1.toCamelCase)(p.name));
117
+ lines.push(`const { ${paramNames.join(', ')} } = params || {};`);
118
+ lines.push(''); // Empty line after extraction
119
+ }
120
+ // Note: requestBody is NOT extracted from params - it's a separate parameter
121
+ return lines;
122
+ }
123
+ /**
124
+ * Convert a TypeReference to a TypeScript type string
125
+ *
126
+ * @param type - The type reference
127
+ * @returns TypeScript type string
128
+ */
129
+ typeReferenceToString(type) {
130
+ switch (type.kind) {
131
+ case 'primitive':
132
+ return type.name || 'any';
133
+ case 'array':
134
+ if (!type.elementType)
135
+ return 'any[]';
136
+ return `Array<${this.typeReferenceToString(type.elementType)}>`;
137
+ case 'reference':
138
+ case 'object':
139
+ return type.name || 'any';
140
+ case 'union':
141
+ if (!type.unionTypes || type.unionTypes.length === 0)
142
+ return 'any';
143
+ return type.unionTypes.map(t => this.typeReferenceToString(t)).join(' | ');
144
+ case 'dictionary':
145
+ if (!type.additionalProperties)
146
+ return 'Record<string, any>';
147
+ return `Record<string, ${this.typeReferenceToString(type.additionalProperties)}>`;
148
+ case 'unknown':
149
+ default:
150
+ return 'any';
151
+ }
152
+ }
153
+ /**
154
+ * Convert a TypeReference to a string for error messages
155
+ *
156
+ * @param type - The type reference
157
+ * @returns Human-readable type string
158
+ */
159
+ typeToString(type) {
160
+ return this.typeReferenceToString(type);
161
+ }
162
+ }
163
+ exports.ParameterStyleBuilder = ParameterStyleBuilder;
164
+ //# sourceMappingURL=parameter-style-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-style-builder.js","sourceRoot":"","sources":["../../src/generators/parameter-style-builder.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -19,6 +19,7 @@ export { ImportManager } from './builders/import-manager';
19
19
  export { GeneratorPlugin, PluginRegistry, PluginRunner, } from './plugins/plugin-interface';
20
20
  export { ClassTransformerPlugin } from './plugins/class-transformer-plugin';
21
21
  export { NestJSSwaggerPlugin } from './plugins/nestjs-swagger-plugin';
22
+ export { NestJSGraphQLPlugin } from './plugins/nestjs-graphql-plugin';
22
23
  export { ClassValidatorPlugin } from './plugins/class-validator-plugin';
23
24
  export * from './utils/name-utils';
24
25
  export { Configuration, ConfigurationParameters } from './config/configuration';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG/E,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGzF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGvF,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EACL,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAGxE,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG/E,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGzF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGvF,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EACL,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAGxE,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
19
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.Configuration = exports.ClassValidatorPlugin = exports.NestJSSwaggerPlugin = exports.ClassTransformerPlugin = exports.PluginRunner = exports.PluginRegistry = exports.ImportManager = exports.ClassBuilder = exports.SwaggerConversionError = exports.SwaggerConverter = exports.RefInlinerError = exports.RefInliner = exports.RefResolverError = exports.RefResolver = exports.SpecLoader = exports.JsonSchemaParser = exports.CRDToIRConverter = exports.CRDParser = exports.OpenAPIParser = exports.Generator = void 0;
22
+ exports.Configuration = exports.ClassValidatorPlugin = exports.NestJSGraphQLPlugin = exports.NestJSSwaggerPlugin = exports.ClassTransformerPlugin = exports.PluginRunner = exports.PluginRegistry = exports.ImportManager = exports.ClassBuilder = exports.SwaggerConversionError = exports.SwaggerConverter = exports.RefInlinerError = exports.RefInliner = exports.RefResolverError = exports.RefResolver = exports.SpecLoader = exports.JsonSchemaParser = exports.CRDToIRConverter = exports.CRDParser = exports.OpenAPIParser = exports.Generator = void 0;
23
23
  // Core generator
24
24
  var generator_1 = require("./generator/generator");
25
25
  Object.defineProperty(exports, "Generator", { enumerable: true, get: function () { return generator_1.Generator; } });
@@ -61,6 +61,8 @@ var class_transformer_plugin_1 = require("./plugins/class-transformer-plugin");
61
61
  Object.defineProperty(exports, "ClassTransformerPlugin", { enumerable: true, get: function () { return class_transformer_plugin_1.ClassTransformerPlugin; } });
62
62
  var nestjs_swagger_plugin_1 = require("./plugins/nestjs-swagger-plugin");
63
63
  Object.defineProperty(exports, "NestJSSwaggerPlugin", { enumerable: true, get: function () { return nestjs_swagger_plugin_1.NestJSSwaggerPlugin; } });
64
+ var nestjs_graphql_plugin_1 = require("./plugins/nestjs-graphql-plugin");
65
+ Object.defineProperty(exports, "NestJSGraphQLPlugin", { enumerable: true, get: function () { return nestjs_graphql_plugin_1.NestJSGraphQLPlugin; } });
64
66
  var class_validator_plugin_1 = require("./plugins/class-validator-plugin");
65
67
  Object.defineProperty(exports, "ClassValidatorPlugin", { enumerable: true, get: function () { return class_validator_plugin_1.ClassValidatorPlugin; } });
66
68
  // Utils
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,iBAAiB;AACjB,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAGlB,WAAW;AACX,6CAA2B;AAE3B,UAAU;AACV,2DAA4F;AAAnF,+GAAA,aAAa,OAAA;AACtB,mDAA8E;AAArE,uGAAA,SAAS,OAAA;AAClB,iDAAuE;AAA9D,6GAAA,gBAAgB,OAAA;AACzB,mEAAyF;AAAhF,sHAAA,gBAAgB,OAAA;AAEzB,UAAU;AACV,qDAA2F;AAAlF,yGAAA,UAAU,OAAA;AACnB,uDAA2F;AAAlF,2GAAA,WAAW,OAAA;AAAsB,gHAAA,gBAAgB,OAAA;AAC1D,qDAAuF;AAA9E,yGAAA,UAAU,OAAA;AAAqB,8GAAA,eAAe,OAAA;AAEvD,aAAa;AACb,oEAIwC;AAHtC,qHAAA,gBAAgB,OAAA;AAEhB,2HAAA,sBAAsB,OAAA;AAGxB,WAAW;AACX,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,4DAA0D;AAAjD,+GAAA,aAAa,OAAA;AAEtB,gBAAgB;AAChB,+DAIoC;AAFlC,kHAAA,cAAc,OAAA;AACd,gHAAA,YAAY,OAAA;AAGd,mBAAmB;AACnB,+EAA4E;AAAnE,kIAAA,sBAAsB,OAAA;AAC/B,yEAAsE;AAA7D,4HAAA,mBAAmB,OAAA;AAC5B,2EAAwE;AAA/D,8HAAA,oBAAoB,OAAA;AAE7B,QAAQ;AACR,qDAAmC;AAEnC,gBAAgB;AAChB,wDAAgF;AAAvE,8GAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,iBAAiB;AACjB,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAGlB,WAAW;AACX,6CAA2B;AAE3B,UAAU;AACV,2DAA4F;AAAnF,+GAAA,aAAa,OAAA;AACtB,mDAA8E;AAArE,uGAAA,SAAS,OAAA;AAClB,iDAAuE;AAA9D,6GAAA,gBAAgB,OAAA;AACzB,mEAAyF;AAAhF,sHAAA,gBAAgB,OAAA;AAEzB,UAAU;AACV,qDAA2F;AAAlF,yGAAA,UAAU,OAAA;AACnB,uDAA2F;AAAlF,2GAAA,WAAW,OAAA;AAAsB,gHAAA,gBAAgB,OAAA;AAC1D,qDAAuF;AAA9E,yGAAA,UAAU,OAAA;AAAqB,8GAAA,eAAe,OAAA;AAEvD,aAAa;AACb,oEAIwC;AAHtC,qHAAA,gBAAgB,OAAA;AAEhB,2HAAA,sBAAsB,OAAA;AAGxB,WAAW;AACX,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,4DAA0D;AAAjD,+GAAA,aAAa,OAAA;AAEtB,gBAAgB;AAChB,+DAIoC;AAFlC,kHAAA,cAAc,OAAA;AACd,gHAAA,YAAY,OAAA;AAGd,mBAAmB;AACnB,+EAA4E;AAAnE,kIAAA,sBAAsB,OAAA;AAC/B,yEAAsE;AAA7D,4HAAA,mBAAmB,OAAA;AAC5B,yEAAsE;AAA7D,4HAAA,mBAAmB,OAAA;AAC5B,2EAAwE;AAA/D,8HAAA,oBAAoB,OAAA;AAE7B,QAAQ;AACR,qDAAmC;AAEnC,gBAAgB;AAChB,wDAAgF;AAAvE,8GAAA,aAAa,OAAA"}
@@ -33,6 +33,9 @@ export declare class ClassValidatorPlugin implements GeneratorPlugin {
33
33
  private addPrimitiveValidator;
34
34
  /**
35
35
  * Add format-based validators (email, url, uuid, etc.)
36
+ *
37
+ * Maps OpenAPI format values to appropriate class-validator decorators.
38
+ * See: https://swagger.io/docs/specification/data-models/data-types/
36
39
  */
37
40
  private addFormatValidators;
38
41
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"class-validator-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/class-validator-plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAGnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,IAAI,SAAqB;IACzB,QAAQ,SAAM;IAEd;;;OAGG;IAEH;;OAEG;IACH,gBAAgB,CACd,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,EAAE,kBAAkB,EAC/B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,iBAAiB,GACzB,IAAI;IAoBP;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IASrE;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsDzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoC3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAiGhC"}
1
+ {"version":3,"file":"class-validator-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/class-validator-plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAGnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,IAAI,SAAqB;IACzB,QAAQ,SAAM;IAEd;;;OAGG;IAEH;;OAEG;IACH,gBAAgB,CACd,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,EAAE,kBAAkB,EAC/B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,iBAAiB,GACzB,IAAI;IAoBP;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IASrE;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsDzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAkF3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAiGhC"}
@@ -110,12 +110,16 @@ class ClassValidatorPlugin {
110
110
  }
111
111
  /**
112
112
  * Add format-based validators (email, url, uuid, etc.)
113
+ *
114
+ * Maps OpenAPI format values to appropriate class-validator decorators.
115
+ * See: https://swagger.io/docs/specification/data-models/data-types/
113
116
  */
114
117
  addFormatValidators(property, propertyDef, context) {
115
118
  if (!propertyDef.format) {
116
119
  return;
117
120
  }
118
121
  switch (propertyDef.format.toLowerCase()) {
122
+ // String formats
119
123
  case 'email':
120
124
  context.importManager.addImport('class-validator', 'IsEmail');
121
125
  property.addDecorator({ name: 'IsEmail', arguments: [] });
@@ -129,12 +133,50 @@ class ClassValidatorPlugin {
129
133
  context.importManager.addImport('class-validator', 'IsUUID');
130
134
  property.addDecorator({ name: 'IsUUID', arguments: [] });
131
135
  break;
136
+ // Date formats - use IsDateString/IsISO8601 for string types (OpenAPI date-time is always a string)
132
137
  case 'date':
133
138
  case 'date-time':
134
- context.importManager.addImport('class-validator', 'IsDate');
135
- property.addDecorator({ name: 'IsDate', arguments: [] });
139
+ context.importManager.addImport('class-validator', 'IsDateString');
140
+ property.addDecorator({ name: 'IsDateString', arguments: [] });
141
+ break;
142
+ // Binary/encoded formats
143
+ case 'byte':
144
+ // Base64-encoded string
145
+ context.importManager.addImport('class-validator', 'IsBase64');
146
+ property.addDecorator({ name: 'IsBase64', arguments: [] });
147
+ break;
148
+ case 'binary':
149
+ // Binary data - no specific string validator needed
150
+ // This is typically handled as file upload, not validated as string
151
+ break;
152
+ // Network formats
153
+ case 'hostname':
154
+ context.importManager.addImport('class-validator', 'IsFQDN');
155
+ property.addDecorator({ name: 'IsFQDN', arguments: [] });
156
+ break;
157
+ case 'ipv4':
158
+ context.importManager.addImport('class-validator', 'IsIP');
159
+ property.addDecorator({ name: 'IsIP', arguments: ["'4'"] });
160
+ break;
161
+ case 'ipv6':
162
+ context.importManager.addImport('class-validator', 'IsIP');
163
+ property.addDecorator({ name: 'IsIP', arguments: ["'6'"] });
164
+ break;
165
+ // Integer formats (for number types)
166
+ case 'int32':
167
+ case 'int64':
168
+ context.importManager.addImport('class-validator', 'IsInt');
169
+ property.addDecorator({ name: 'IsInt', arguments: [] });
170
+ break;
171
+ // Float formats - @IsNumber is already added by type validator
172
+ case 'float':
173
+ case 'double':
174
+ // No additional decorator needed - @IsNumber covers this
175
+ break;
176
+ // Password hint - no validation beyond string type
177
+ case 'password':
178
+ // Just a hint for UI/docs, no special validation
136
179
  break;
137
- // Other formats could be added here
138
180
  }
139
181
  }
140
182
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"class-validator-plugin.js","sourceRoot":"","sources":["../../src/plugins/class-validator-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"class-validator-plugin.js","sourceRoot":"","sources":["../../src/plugins/class-validator-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * NestJS GraphQL Plugin
3
+ *
4
+ * Adds @ObjectType() and @Field() decorators from @nestjs/graphql
5
+ * Properly handles types, descriptions, nullability, and deprecation
6
+ */
7
+ import { ClassDeclaration, PropertyDeclaration } from 'ts-morph';
8
+ import { GeneratorPlugin } from './plugin-interface';
9
+ import { SchemaDefinition, PropertyDefinition, SchemaIR } from '../ir/types';
10
+ import { GenerationContext } from '../builders/class-builder';
11
+ export declare class NestJSGraphQLPlugin implements GeneratorPlugin {
12
+ name: string;
13
+ priority: number;
14
+ /**
15
+ * Add @nestjs/graphql imports before generation
16
+ */
17
+ beforeGeneration(context: GenerationContext, ir: SchemaIR): void;
18
+ /**
19
+ * Decorate class with @ObjectType()
20
+ */
21
+ decorateClass(classDecl: ClassDeclaration, schema: SchemaDefinition, context: GenerationContext): void;
22
+ /**
23
+ * Decorate property with @Field(() => Type, { options })
24
+ */
25
+ decorateProperty(property: PropertyDeclaration, propertyDef: PropertyDefinition, schema: SchemaDefinition, context: GenerationContext): void;
26
+ /**
27
+ * Add @nestjs/graphql to package.json
28
+ */
29
+ modifyPackageJson(packageJson: any, context: GenerationContext): void;
30
+ /**
31
+ * Get GraphQL field type string
32
+ * Returns null for types that should be skipped
33
+ */
34
+ private getGraphQLFieldType;
35
+ /**
36
+ * Map primitive types to GraphQL scalar types
37
+ */
38
+ private getPrimitiveGraphQLType;
39
+ /**
40
+ * Add imports for GraphQL scalar types that need explicit imports.
41
+ * Uses word-boundary matching to avoid false positives with class names
42
+ * like "Interview" or "IDCard".
43
+ */
44
+ private addTypeImports;
45
+ /**
46
+ * Build @Field options object
47
+ */
48
+ private buildFieldOptions;
49
+ /**
50
+ * Build the options string for @Field decorator
51
+ */
52
+ private buildOptionsString;
53
+ /**
54
+ * Escape special characters for template literals
55
+ */
56
+ private escapeForTemplate;
57
+ }
58
+ //# sourceMappingURL=nestjs-graphql-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs-graphql-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/nestjs-graphql-plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAElB,QAAQ,EACT,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,qBAAa,mBAAoB,YAAW,eAAe;IACzD,IAAI,SAAoB;IACxB,QAAQ,SAAO;IAEf;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI;IAKhE;;OAEG;IACH,aAAa,CACX,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,iBAAiB,GACzB,IAAI;IAkBP;;OAEG;IACH,gBAAgB,CACd,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,EAAE,kBAAkB,EAC/B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,iBAAiB,GACzB,IAAI;IAoBP;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAQrE;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAM1B"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ /**
3
+ * NestJS GraphQL Plugin
4
+ *
5
+ * Adds @ObjectType() and @Field() decorators from @nestjs/graphql
6
+ * Properly handles types, descriptions, nullability, and deprecation
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.NestJSGraphQLPlugin = void 0;
10
+ class NestJSGraphQLPlugin {
11
+ constructor() {
12
+ this.name = 'nestjs-graphql';
13
+ this.priority = 100;
14
+ }
15
+ /**
16
+ * Add @nestjs/graphql imports before generation
17
+ */
18
+ beforeGeneration(context, ir) {
19
+ context.importManager.addImport('@nestjs/graphql', 'ObjectType');
20
+ context.importManager.addImport('@nestjs/graphql', 'Field');
21
+ }
22
+ /**
23
+ * Decorate class with @ObjectType()
24
+ */
25
+ decorateClass(classDecl, schema, context) {
26
+ // Skip enums and unions - only decorate object types
27
+ if (schema.type !== 'object') {
28
+ return;
29
+ }
30
+ const args = [];
31
+ if (schema.description) {
32
+ const escaped = this.escapeForTemplate(schema.description);
33
+ args.push(`{ description: \`${escaped}\` }`);
34
+ }
35
+ classDecl.addDecorator({
36
+ name: 'ObjectType',
37
+ arguments: args,
38
+ });
39
+ }
40
+ /**
41
+ * Decorate property with @Field(() => Type, { options })
42
+ */
43
+ decorateProperty(property, propertyDef, schema, context) {
44
+ const fieldType = this.getGraphQLFieldType(propertyDef.type, propertyDef.format);
45
+ if (!fieldType) {
46
+ // Skip types that can't be represented in GraphQL (dictionary, union, unknown)
47
+ return;
48
+ }
49
+ // Add type-specific imports
50
+ this.addTypeImports(fieldType, context);
51
+ // Build options
52
+ const options = this.buildFieldOptions(propertyDef);
53
+ const optionsStr = options ? `, ${this.buildOptionsString(options)}` : '';
54
+ property.addDecorator({
55
+ name: 'Field',
56
+ arguments: [`() => ${fieldType}${optionsStr}`],
57
+ });
58
+ }
59
+ /**
60
+ * Add @nestjs/graphql to package.json
61
+ */
62
+ modifyPackageJson(packageJson, context) {
63
+ if (!packageJson.dependencies) {
64
+ packageJson.dependencies = {};
65
+ }
66
+ packageJson.dependencies['@nestjs/graphql'] = '^12.0.0';
67
+ }
68
+ /**
69
+ * Get GraphQL field type string
70
+ * Returns null for types that should be skipped
71
+ */
72
+ getGraphQLFieldType(type, format) {
73
+ switch (type.kind) {
74
+ case 'primitive':
75
+ return this.getPrimitiveGraphQLType(type.name, format);
76
+ case 'array':
77
+ if (!type.elementType) {
78
+ return '[String]';
79
+ }
80
+ const elementType = this.getGraphQLFieldType(type.elementType);
81
+ if (!elementType) {
82
+ return null;
83
+ }
84
+ return `[${elementType}]`;
85
+ case 'reference':
86
+ case 'object':
87
+ return type.name || 'String';
88
+ case 'dictionary':
89
+ case 'union':
90
+ case 'unknown':
91
+ default:
92
+ return null;
93
+ }
94
+ }
95
+ /**
96
+ * Map primitive types to GraphQL scalar types
97
+ */
98
+ getPrimitiveGraphQLType(name, format) {
99
+ switch (name) {
100
+ case 'string':
101
+ if (format === 'uuid') {
102
+ return 'ID';
103
+ }
104
+ return 'String';
105
+ case 'number':
106
+ if (format === 'int32' || format === 'int64') {
107
+ return 'Int';
108
+ }
109
+ return 'Float';
110
+ case 'boolean':
111
+ return 'Boolean';
112
+ default:
113
+ return 'String';
114
+ }
115
+ }
116
+ /**
117
+ * Add imports for GraphQL scalar types that need explicit imports.
118
+ * Uses word-boundary matching to avoid false positives with class names
119
+ * like "Interview" or "IDCard".
120
+ */
121
+ addTypeImports(fieldType, context) {
122
+ if (/\bInt\b/.test(fieldType)) {
123
+ context.importManager.addImport('@nestjs/graphql', 'Int');
124
+ }
125
+ if (/\bFloat\b/.test(fieldType)) {
126
+ context.importManager.addImport('@nestjs/graphql', 'Float');
127
+ }
128
+ if (/\bID\b/.test(fieldType)) {
129
+ context.importManager.addImport('@nestjs/graphql', 'ID');
130
+ }
131
+ }
132
+ /**
133
+ * Build @Field options object
134
+ */
135
+ buildFieldOptions(propertyDef) {
136
+ const options = {};
137
+ // Nullable - when not required or explicitly nullable
138
+ if (!propertyDef.required || propertyDef.nullable) {
139
+ options.nullable = true;
140
+ }
141
+ // Description
142
+ if (propertyDef.description) {
143
+ options.description = this.escapeForTemplate(propertyDef.description);
144
+ }
145
+ // Deprecated
146
+ if (propertyDef.metadata.deprecated) {
147
+ options.deprecationReason = 'Deprecated';
148
+ }
149
+ if (Object.keys(options).length === 0) {
150
+ return null;
151
+ }
152
+ return options;
153
+ }
154
+ /**
155
+ * Build the options string for @Field decorator
156
+ */
157
+ buildOptionsString(options) {
158
+ const entries = [];
159
+ for (const [key, value] of Object.entries(options)) {
160
+ let valueStr;
161
+ if (typeof value === 'string') {
162
+ valueStr = `\`${value}\``;
163
+ }
164
+ else {
165
+ valueStr = JSON.stringify(value);
166
+ }
167
+ entries.push(`${key}: ${valueStr}`);
168
+ }
169
+ return `{ ${entries.join(', ')} }`;
170
+ }
171
+ /**
172
+ * Escape special characters for template literals
173
+ */
174
+ escapeForTemplate(text) {
175
+ return text
176
+ .replace(/\\/g, '\\\\')
177
+ .replace(/`/g, '\\`')
178
+ .replace(/\$/g, '\\$');
179
+ }
180
+ }
181
+ exports.NestJSGraphQLPlugin = NestJSGraphQLPlugin;
182
+ //# sourceMappingURL=nestjs-graphql-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs-graphql-plugin.js","sourceRoot":"","sources":["../../src/plugins/nestjs-graphql-plugin.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAYH,MAAa,mBAAmB;IAAhC;QACE,SAAI,GAAG,gBAAgB,CAAC;QACxB,aAAQ,GAAG,GAAG,CAAC;IA0MjB,CAAC;IAxMC;;OAEG;IACH,gBAAgB,CAAC,OAA0B,EAAE,EAAY;QACvD,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACjE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,aAAa,CACX,SAA2B,EAC3B,MAAwB,EACxB,OAA0B;QAE1B,qDAAqD;QACrD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC3D,IAAI,CAAC,IAAI,CAAC,oBAAoB,OAAO,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,SAAS,CAAC,YAAY,CAAC;YACrB,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,gBAAgB,CACd,QAA6B,EAC7B,WAA+B,EAC/B,MAAwB,EACxB,OAA0B;QAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,+EAA+E;YAC/E,OAAO;QACT,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAExC,gBAAgB;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1E,QAAQ,CAAC,YAAY,CAAC;YACpB,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,CAAC,SAAS,SAAS,GAAG,UAAU,EAAE,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,WAAgB,EAAE,OAA0B;QAC5D,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YAC9B,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;QAChC,CAAC;QAED,WAAW,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,IAAmB,EAAE,MAAe;QAC9D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEzD,KAAK,OAAO;gBACV,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;oBACtB,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,IAAI,WAAW,GAAG,CAAC;YAE5B,KAAK,WAAW,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;YAE/B,KAAK,YAAY,CAAC;YAClB,KAAK,OAAO,CAAC;YACb,KAAK,SAAS,CAAC;YACf;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,IAAa,EAAE,MAAe;QAC5D,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACtB,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,QAAQ,CAAC;YAClB,KAAK,QAAQ;gBACX,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;oBAC7C,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YACnB;gBACE,OAAO,QAAQ,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,SAAiB,EAAE,OAA0B;QAClE,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,WAA+B;QACvD,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,sDAAsD;QACtD,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YAClD,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,cAAc;QACd,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;YAC5B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACxE,CAAC;QAED,aAAa;QACb,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACpC,OAAO,CAAC,iBAAiB,GAAG,YAAY,CAAC;QAC3C,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,OAA4B;QACrD,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,QAAgB,CAAC;YAErB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,QAAQ,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACrC,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAY;QACpC,OAAO,IAAI;aACR,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;aACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;aACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF;AA5MD,kDA4MC"}
@@ -47,6 +47,9 @@ export declare class ZodValidatorPlugin implements GeneratorPlugin {
47
47
  private buildPrimitiveSchema;
48
48
  /**
49
49
  * Apply format-specific validations
50
+ *
51
+ * Maps OpenAPI/JSON Schema format values to Zod validation methods.
52
+ * See: https://swagger.io/docs/specification/data-models/data-types/
50
53
  */
51
54
  private applyFormatValidations;
52
55
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"zod-validator-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/zod-validator-plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAKL,QAAQ,EACT,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACxD,IAAI,SAAmB;IACvB,QAAQ,SAAM;IAEd;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI;IAmB/D;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAOtE;;OAEG;IACH,OAAO,CAAC,eAAe;IAqDvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAwBtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAyCvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAuC9B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA6DlC;;OAEG;IACH,OAAO,CAAC,cAAc;IA6BtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,OAAO,CAAC,WAAW;CAIpB"}
1
+ {"version":3,"file":"zod-validator-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/zod-validator-plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAKL,QAAQ,EACT,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACxD,IAAI,SAAmB;IACvB,QAAQ,SAAM;IAEd;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI;IAmB/D;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAOtE;;OAEG;IACH,OAAO,CAAC,eAAe;IAqDvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAwBtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAyCvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IA8D9B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA6DlC;;OAEG;IACH,OAAO,CAAC,cAAc;IA6BtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,OAAO,CAAC,WAAW;CAIpB"}