@orval/zod 6.27.1 → 6.28.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.
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { GeneratorDependency, ClientBuilder, ClientGeneratorsBuilder } from '@orval/core';
2
2
 
3
3
  declare const getZodDependencies: () => GeneratorDependency[];
4
- type ZodValidationSchemaDefinitionInput = Record<string, {
4
+ type ZodValidationSchemaDefinitionInput = {
5
5
  functions: [string, any][];
6
6
  consts: string[];
7
- }>;
7
+ };
8
8
  declare const parseZodValidationSchemaDefinition: (input: ZodValidationSchemaDefinitionInput, strict: boolean, coerceTypes?: boolean) => {
9
9
  zod: string;
10
10
  consts: string;
package/dist/index.js CHANGED
@@ -52,25 +52,38 @@ var ZOD_DEPENDENCIES = [
52
52
  }
53
53
  ];
54
54
  var getZodDependencies = () => ZOD_DEPENDENCIES;
55
+ var possibleSchemaTypes = [
56
+ "integer",
57
+ "number",
58
+ "string",
59
+ "boolean",
60
+ "object",
61
+ "null",
62
+ "array"
63
+ ];
55
64
  var resolveZodType = (schemaTypeValue) => {
56
- switch (schemaTypeValue) {
65
+ const type = Array.isArray(schemaTypeValue) ? schemaTypeValue.find((t) => possibleSchemaTypes.includes(t)) : schemaTypeValue;
66
+ switch (type) {
57
67
  case "integer":
58
68
  return "number";
59
69
  default:
60
- return schemaTypeValue != null ? schemaTypeValue : "any";
70
+ return type != null ? type : "any";
61
71
  }
62
72
  };
63
- var counter = 0;
73
+ var constsUniqueCounter = {};
64
74
  var COERCEABLE_TYPES = ["string", "number", "boolean", "bigint", "date"];
65
75
  var generateZodValidationSchemaDefinition = (schema, _required, name, strict) => {
66
76
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
67
77
  if (!schema)
68
78
  return { functions: [], consts: [] };
69
79
  const consts = [];
80
+ const constsCounter = typeof constsUniqueCounter[name] === "number" ? constsUniqueCounter[name] + 1 : 0;
81
+ const constsCounterValue = constsCounter ? (0, import_core.pascal)((0, import_core.getNumberWord)(constsCounter)) : "";
82
+ constsUniqueCounter[name] = constsCounter;
70
83
  const functions = [];
71
84
  const type = resolveZodType(schema.type);
72
85
  const required = schema.default !== void 0 ? false : _required != null ? _required : false;
73
- const nullable = (_a = schema.nullable) != null ? _a : false;
86
+ const nullable = (_a = schema.nullable) != null ? _a : Array.isArray(schema.type) && schema.type.includes("null");
74
87
  const min = (_e = (_d = (_c = (_b = schema.minimum) != null ? _b : schema.exclusiveMinimum) != null ? _c : schema.minLength) != null ? _d : schema.minItems) != null ? _e : void 0;
75
88
  const max = (_i = (_h = (_g = (_f = schema.maximum) != null ? _f : schema.exclusiveMaximum) != null ? _g : schema.maxLength) != null ? _h : schema.maxItems) != null ? _i : void 0;
76
89
  const matches = (_j = schema.pattern) != null ? _j : void 0;
@@ -79,7 +92,12 @@ var generateZodValidationSchemaDefinition = (schema, _required, name, strict) =>
79
92
  const items = schema.items;
80
93
  functions.push([
81
94
  "array",
82
- generateZodValidationSchemaDefinition(items, true, (0, import_core.camel)(name), strict)
95
+ generateZodValidationSchemaDefinition(
96
+ items,
97
+ true,
98
+ (0, import_core.camel)(`${name}-item`),
99
+ strict
100
+ )
83
101
  ]);
84
102
  break;
85
103
  case "string": {
@@ -167,17 +185,15 @@ var generateZodValidationSchemaDefinition = (schema, _required, name, strict) =>
167
185
  if (min === 1) {
168
186
  functions.push(["min", `${min}`]);
169
187
  } else {
170
- counter++;
171
- consts.push(`export const ${name}Min${counter} = ${min};
188
+ consts.push(`export const ${name}Min${constsCounterValue} = ${min};
172
189
  `);
173
- functions.push(["min", `${name}Min${counter}`]);
190
+ functions.push(["min", `${name}Min${constsCounterValue}`]);
174
191
  }
175
192
  }
176
193
  if (max !== void 0) {
177
- counter++;
178
- consts.push(`export const ${name}Max${counter} = ${max};
194
+ consts.push(`export const ${name}Max${constsCounterValue} = ${max};
179
195
  `);
180
- functions.push(["max", `${name}Max${counter}`]);
196
+ functions.push(["max", `${name}Max${constsCounterValue}`]);
181
197
  }
182
198
  if (matches) {
183
199
  const isStartWithSlash = matches.startsWith("/");
@@ -185,9 +201,11 @@ var generateZodValidationSchemaDefinition = (schema, _required, name, strict) =>
185
201
  const regexp = `new RegExp('${(0, import_core.jsStringEscape)(
186
202
  matches.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : void 0)
187
203
  )}')`;
188
- consts.push(`export const ${name}RegExp = ${regexp};
189
- `);
190
- functions.push(["regex", `${name}RegExp`]);
204
+ consts.push(
205
+ `export const ${name}RegExp${constsCounterValue} = ${regexp};
206
+ `
207
+ );
208
+ functions.push(["regex", `${name}RegExp${constsCounterValue}`]);
191
209
  }
192
210
  if (schema.enum && type !== "number") {
193
211
  functions.push([
@@ -207,7 +225,7 @@ var generateZodValidationSchemaDefinition = (schema, _required, name, strict) =>
207
225
  return { functions, consts: (0, import_lodash.default)(consts) };
208
226
  };
209
227
  var parseZodValidationSchemaDefinition = (input, strict, coerceTypes = false) => {
210
- if (!Object.keys(input).length) {
228
+ if (!input.functions.length) {
211
229
  return { zod: "", consts: "" };
212
230
  }
213
231
  let consts = "";
@@ -250,9 +268,13 @@ var parseZodValidationSchemaDefinition = (input, strict, coerceTypes = false) =>
250
268
  return `zod.record(zod.string(), ${valueWithZod})`;
251
269
  }
252
270
  if (fn === "object") {
253
- const parsed = parseZodValidationSchemaDefinition(args, strict);
254
- consts += parsed.consts;
255
- return ` ${parsed.zod}`;
271
+ return `zod.object({
272
+ ${Object.entries(args).map(([key, schema]) => {
273
+ const value = schema.functions.map(parseProperty).join("");
274
+ consts += schema.consts.join("\n");
275
+ return ` "${key}": ${value.startsWith(".") ? "zod" : ""}${value}`;
276
+ }).join(",\n")}
277
+ })${strict ? ".strict()" : ""}`;
256
278
  }
257
279
  if (fn === "array") {
258
280
  const value = args.functions.map(parseProperty).join("");
@@ -271,15 +293,8 @@ var parseZodValidationSchemaDefinition = (input, strict, coerceTypes = false) =>
271
293
  }
272
294
  return `.${fn}(${args})`;
273
295
  };
274
- consts += Object.entries(input).reduce((acc, [key, schema]) => {
275
- return acc + schema.consts.join("\n");
276
- }, "");
277
- const zod = `zod.object({
278
- ${Object.entries(input).map(([key, schema]) => {
279
- const value = schema.functions.map(parseProperty).join("");
280
- return ` "${key}": ${value.startsWith(".") ? "zod" : ""}${value}`;
281
- }).join(",\n")}
282
- })${strict ? ".strict()" : ""}`;
296
+ consts += input.consts.join("\n");
297
+ const zod = input.functions.map(parseProperty).join("");
283
298
  return { zod, consts };
284
299
  };
285
300
  var deferenceScalar = (value, context) => {
@@ -310,68 +325,94 @@ var deference = (schema, context) => {
310
325
  return acc;
311
326
  }, {});
312
327
  };
313
- var generateZodRoute = ({ operationName, verb, override }, { pathRoute, context }) => {
314
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
315
- const spec = context.specs[context.specKey].paths[pathRoute];
316
- const parameters = (_a = spec == null ? void 0 : spec[verb]) == null ? void 0 : _a.parameters;
317
- const requestBody = (_b = spec == null ? void 0 : spec[verb]) == null ? void 0 : _b.requestBody;
318
- const response = (_d = (_c = spec == null ? void 0 : spec[verb]) == null ? void 0 : _c.responses) == null ? void 0 : _d["200"];
319
- const resolvedResponse = response ? (0, import_core.resolveRef)(response, context).schema : void 0;
320
- const resolvedResponseJsonSchema = ((_f = (_e = resolvedResponse == null ? void 0 : resolvedResponse.content) == null ? void 0 : _e["application/json"]) == null ? void 0 : _f.schema) ? deference(resolvedResponse.content["application/json"].schema, context) : void 0;
321
- const zodDefinitionsResponseProperties = (_i = (_h = resolvedResponseJsonSchema == null ? void 0 : resolvedResponseJsonSchema.properties) != null ? _h : (_g = resolvedResponseJsonSchema == null ? void 0 : resolvedResponseJsonSchema.items) == null ? void 0 : _g.properties) != null ? _i : {};
322
- const isZodDefinitionResponseArray = !!(resolvedResponseJsonSchema == null ? void 0 : resolvedResponseJsonSchema.items);
323
- const zodDefinitionsResponse = Object.entries(
324
- zodDefinitionsResponseProperties
325
- ).map(([key, response2]) => {
326
- var _a2;
327
- const schema = deference(response2, context);
328
+ var parseBodyAndResponse = ({
329
+ data,
330
+ context,
331
+ name,
332
+ strict
333
+ }) => {
334
+ var _a, _b;
335
+ if (!data) {
328
336
  return {
329
- [key]: generateZodValidationSchemaDefinition(
330
- schema,
331
- !!((_a2 = resolvedResponseJsonSchema == null ? void 0 : resolvedResponseJsonSchema.required) == null ? void 0 : _a2.find(
332
- (requiredKey) => requiredKey === key
333
- )),
334
- (0, import_core.camel)(`${operationName}-response-${key}`),
335
- override.zod.strict.response
336
- )
337
+ input: { functions: [], consts: [] },
338
+ isArray: false
337
339
  };
338
- }).reduce((acc, curr) => ({ ...acc, ...curr }), {});
339
- const resolvedRequestBody = requestBody ? (0, import_core.resolveRef)(requestBody, context).schema : void 0;
340
- const resolvedRequestBodyJsonSchema = ((_k = (_j = resolvedRequestBody == null ? void 0 : resolvedRequestBody.content) == null ? void 0 : _j["application/json"]) == null ? void 0 : _k.schema) ? deference(resolvedRequestBody.content["application/json"].schema, context) : void 0;
341
- const zodDefinitionsBodyProperties = (_n = (_m = resolvedRequestBodyJsonSchema == null ? void 0 : resolvedRequestBodyJsonSchema.properties) != null ? _m : (_l = resolvedRequestBodyJsonSchema == null ? void 0 : resolvedRequestBodyJsonSchema.items) == null ? void 0 : _l.properties) != null ? _n : {};
342
- const isZodDefinitionBodyArray = !!(resolvedRequestBodyJsonSchema == null ? void 0 : resolvedRequestBodyJsonSchema.items);
343
- const zodDefinitionsBody = Object.entries(zodDefinitionsBodyProperties).map(([key, body]) => {
344
- var _a2;
345
- const schema = deference(body, context);
340
+ }
341
+ const resolvedRef = (0, import_core.resolveRef)(
342
+ data,
343
+ context
344
+ ).schema;
345
+ if (!((_b = (_a = resolvedRef.content) == null ? void 0 : _a["application/json"]) == null ? void 0 : _b.schema)) {
346
346
  return {
347
- [key]: generateZodValidationSchemaDefinition(
348
- schema,
349
- !!((_a2 = resolvedRequestBodyJsonSchema == null ? void 0 : resolvedRequestBodyJsonSchema.required) == null ? void 0 : _a2.find(
350
- (requiredKey) => requiredKey === key
351
- )),
352
- (0, import_core.camel)(`${operationName}-body-${key}`),
353
- override.zod.strict.body
354
- )
347
+ input: { functions: [], consts: [] },
348
+ isArray: false
349
+ };
350
+ }
351
+ const resolvedJsonSchema = deference(
352
+ resolvedRef.content["application/json"].schema,
353
+ context
354
+ );
355
+ if (resolvedJsonSchema.items) {
356
+ return {
357
+ input: generateZodValidationSchemaDefinition(
358
+ resolvedJsonSchema,
359
+ true,
360
+ name,
361
+ strict
362
+ ),
363
+ isArray: true
355
364
  };
356
- }).reduce((acc, curr) => ({ ...acc, ...curr }), {});
357
- const zodDefinitionsParameters = (parameters != null ? parameters : []).reduce(
365
+ }
366
+ return {
367
+ input: generateZodValidationSchemaDefinition(
368
+ resolvedJsonSchema,
369
+ true,
370
+ name,
371
+ strict
372
+ ),
373
+ isArray: false
374
+ };
375
+ };
376
+ var parseParameters = ({
377
+ data,
378
+ context,
379
+ operationName,
380
+ strict
381
+ }) => {
382
+ if (!data) {
383
+ return {
384
+ headers: {
385
+ functions: [],
386
+ consts: []
387
+ },
388
+ queryParams: {
389
+ functions: [],
390
+ consts: []
391
+ },
392
+ params: {
393
+ functions: [],
394
+ consts: []
395
+ }
396
+ };
397
+ }
398
+ const defintionsByParameters = data.reduce(
358
399
  (acc, val) => {
359
- var _a2;
400
+ var _a;
360
401
  const { schema: parameter } = (0, import_core.resolveRef)(val, context);
361
402
  if (!parameter.schema) {
362
403
  return acc;
363
404
  }
364
405
  const schema = deference(parameter.schema, context);
365
- const strict = {
366
- path: override.zod.strict.param,
367
- query: override.zod.strict.query,
368
- header: override.zod.strict.header
406
+ const mapStrict = {
407
+ path: strict.param,
408
+ query: strict.query,
409
+ header: strict.header
369
410
  };
370
411
  const definition = generateZodValidationSchemaDefinition(
371
412
  schema,
372
413
  parameter.required,
373
414
  (0, import_core.camel)(`${operationName}-${parameter.in}-${parameter.name}`),
374
- (_a2 = strict[parameter.in]) != null ? _a2 : false
415
+ (_a = mapStrict[parameter.in]) != null ? _a : false
375
416
  );
376
417
  if (parameter.in === "header") {
377
418
  return {
@@ -399,26 +440,95 @@ var generateZodRoute = ({ operationName, verb, override }, { pathRoute, context
399
440
  params: {}
400
441
  }
401
442
  );
443
+ const headers = {
444
+ functions: [],
445
+ consts: []
446
+ };
447
+ if (Object.keys(defintionsByParameters.headers).length) {
448
+ headers.functions.push(["object", defintionsByParameters.headers]);
449
+ if (strict.header) {
450
+ headers.functions.push(["strict", void 0]);
451
+ }
452
+ }
453
+ const queryParams = {
454
+ functions: [],
455
+ consts: []
456
+ };
457
+ if (Object.keys(defintionsByParameters.queryParams).length) {
458
+ queryParams.functions.push(["object", defintionsByParameters.queryParams]);
459
+ if (strict.query) {
460
+ queryParams.functions.push(["strict", void 0]);
461
+ }
462
+ }
463
+ const params = {
464
+ functions: [],
465
+ consts: []
466
+ };
467
+ if (Object.keys(defintionsByParameters.params).length) {
468
+ params.functions.push(["object", defintionsByParameters.params]);
469
+ if (strict.param) {
470
+ params.functions.push(["strict", void 0]);
471
+ }
472
+ }
473
+ return {
474
+ headers,
475
+ queryParams,
476
+ params
477
+ };
478
+ };
479
+ var generateZodRoute = ({ operationName, verb, override }, { pathRoute, context }) => {
480
+ var _a, _b, _c, _d, _e;
481
+ const spec = context.specs[context.specKey].paths[pathRoute];
482
+ const parameters = (_a = spec == null ? void 0 : spec[verb]) == null ? void 0 : _a.parameters;
483
+ const requestBody = (_b = spec == null ? void 0 : spec[verb]) == null ? void 0 : _b.requestBody;
484
+ const response = (_d = (_c = spec == null ? void 0 : spec[verb]) == null ? void 0 : _c.responses) == null ? void 0 : _d["200"];
485
+ const parsedResponse = parseBodyAndResponse({
486
+ data: response,
487
+ context,
488
+ name: (0, import_core.camel)(`${operationName}-response`),
489
+ strict: override.zod.strict.response
490
+ });
491
+ const parsedPody = parseBodyAndResponse({
492
+ data: requestBody,
493
+ context,
494
+ name: (0, import_core.camel)(`${operationName}-body`),
495
+ strict: override.zod.strict.body
496
+ });
497
+ const parsedParameters = parseParameters({
498
+ data: parameters,
499
+ context,
500
+ operationName,
501
+ strict: override.zod.strict
502
+ });
402
503
  const inputParams = parseZodValidationSchemaDefinition(
403
- zodDefinitionsParameters.params,
404
- override.zod.strict.param
504
+ parsedParameters.params,
505
+ override.zod.strict.param,
506
+ override.zod.coerce.param
405
507
  );
508
+ if (override.coerceTypes) {
509
+ console.warn(
510
+ "override.coerceTypes is deprecated, please use override.zod.coerce instead."
511
+ );
512
+ }
406
513
  const inputQueryParams = parseZodValidationSchemaDefinition(
407
- zodDefinitionsParameters.queryParams,
514
+ parsedParameters.queryParams,
408
515
  override.zod.strict.query,
409
- override.coerceTypes
516
+ (_e = override.zod.coerce.query) != null ? _e : override.coerceTypes
410
517
  );
411
518
  const inputHeaders = parseZodValidationSchemaDefinition(
412
- zodDefinitionsParameters.headers,
413
- override.zod.strict.header
519
+ parsedParameters.headers,
520
+ override.zod.strict.header,
521
+ override.zod.coerce.header
414
522
  );
415
523
  const inputBody = parseZodValidationSchemaDefinition(
416
- zodDefinitionsBody,
417
- override.zod.strict.body
524
+ parsedPody.input,
525
+ override.zod.strict.body,
526
+ override.zod.coerce.body
418
527
  );
419
528
  const inputResponse = parseZodValidationSchemaDefinition(
420
- zodDefinitionsResponse,
421
- override.zod.strict.response
529
+ parsedResponse.input,
530
+ override.zod.strict.response,
531
+ override.zod.coerce.response
422
532
  );
423
533
  if (!inputParams.zod && !inputQueryParams.zod && !inputHeaders.zod && !inputBody.zod && !inputResponse.zod) {
424
534
  return "";
@@ -432,12 +542,12 @@ var generateZodRoute = ({ operationName, verb, override }, { pathRoute, context
432
542
  ...inputHeaders.zod ? [`export const ${operationName}Header = ${inputHeaders.zod}`] : [],
433
543
  ...inputBody.consts ? [inputBody.consts] : [],
434
544
  ...inputBody.zod ? [
435
- isZodDefinitionBodyArray ? `export const ${operationName}BodyItem = ${inputBody.zod}
545
+ parsedPody.isArray ? `export const ${operationName}BodyItem = ${inputBody.zod}
436
546
  export const ${operationName}Body = zod.array(${operationName}BodyItem)` : `export const ${operationName}Body = ${inputBody.zod}`
437
547
  ] : [],
438
548
  ...inputResponse.consts ? [inputResponse.consts] : [],
439
549
  ...inputResponse.zod ? [
440
- isZodDefinitionResponseArray ? `export const ${operationName}ResponseItem = ${inputResponse.zod}
550
+ parsedResponse.isArray ? `export const ${operationName}ResponseItem = ${inputResponse.zod}
441
551
  export const ${operationName}Response = zod.array(${operationName}ResponseItem)` : `export const ${operationName}Response = ${inputResponse.zod}`
442
552
  ] : []
443
553
  ].join("\n\n");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n ParameterObject,\n PathItemObject,\n ReferenceObject,\n RequestBodyObject,\n ResponseObject,\n SchemaObject,\n} from 'openapi3-ts/oas30';\nimport {\n camel,\n ClientBuilder,\n ClientGeneratorsBuilder,\n escape,\n GeneratorDependency,\n GeneratorOptions,\n GeneratorVerbOptions,\n isString,\n resolveRef,\n ContextSpecs,\n isObject,\n isBoolean,\n jsStringEscape,\n} from '@orval/core';\nimport uniq from 'lodash.uniq';\n\nconst ZOD_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'z',\n alias: 'zod',\n values: true,\n },\n ],\n dependency: 'zod',\n },\n];\n\nexport const getZodDependencies = () => ZOD_DEPENDENCIES;\n\nconst resolveZodType = (schemaTypeValue: SchemaObject['type']) => {\n switch (schemaTypeValue) {\n case 'integer':\n return 'number';\n default:\n return schemaTypeValue ?? 'any';\n }\n};\n\n// counter for unique naming\nlet counter = 0;\n\n// https://github.com/colinhacks/zod#coercion-for-primitives\nconst COERCEABLE_TYPES = ['string', 'number', 'boolean', 'bigint', 'date'];\n\nconst generateZodValidationSchemaDefinition = (\n schema: SchemaObject | undefined,\n _required: boolean | undefined,\n name: string,\n strict: boolean,\n): { functions: [string, any][]; consts: string[] } => {\n if (!schema) return { functions: [], consts: [] };\n\n const consts: string[] = [];\n const functions: [string, any][] = [];\n const type = resolveZodType(schema.type);\n const required = schema.default !== undefined ? false : _required ?? false;\n const nullable = schema.nullable ?? false;\n const min =\n schema.minimum ??\n schema.exclusiveMinimum ??\n schema.minLength ??\n schema.minItems ??\n undefined;\n const max =\n schema.maximum ??\n schema.exclusiveMaximum ??\n schema.maxLength ??\n schema.maxItems ??\n undefined;\n const matches = schema.pattern ?? undefined;\n\n switch (type) {\n case 'array':\n const items = schema.items as SchemaObject | undefined;\n functions.push([\n 'array',\n generateZodValidationSchemaDefinition(items, true, camel(name), strict),\n ]);\n break;\n case 'string': {\n if (schema.enum && type === 'string') {\n break;\n }\n\n if (schema.format === 'date') {\n functions.push(['date', undefined]);\n break;\n }\n\n functions.push([type as string, undefined]);\n\n if (schema.format === 'date-time') {\n functions.push(['datetime', undefined]);\n break;\n }\n\n if (schema.format === 'email') {\n functions.push(['email', undefined]);\n break;\n }\n\n if (schema.format === 'uri' || schema.format === 'hostname') {\n functions.push(['url', undefined]);\n break;\n }\n\n if (schema.format === 'uuid') {\n functions.push(['uuid', undefined]);\n break;\n }\n\n break;\n }\n case 'object':\n default: {\n if (schema.allOf || schema.oneOf || schema.anyOf) {\n const separator = schema.allOf\n ? 'allOf'\n : schema.oneOf\n ? 'oneOf'\n : 'anyOf';\n\n const schemas = (schema.allOf ?? schema.oneOf ?? schema.anyOf) as (\n | SchemaObject\n | ReferenceObject\n )[];\n\n functions.push([\n separator,\n schemas.map((schema) =>\n generateZodValidationSchemaDefinition(\n schema as SchemaObject,\n true,\n camel(name),\n strict,\n ),\n ),\n ]);\n break;\n }\n\n if (schema.properties) {\n functions.push([\n 'object',\n Object.keys(schema.properties)\n .map((key) => ({\n [key]: generateZodValidationSchemaDefinition(\n schema.properties?.[key] as any,\n schema.required?.includes(key),\n camel(`${name}-${key}`),\n strict,\n ),\n }))\n .reduce((acc, curr) => ({ ...acc, ...curr }), {}),\n ]);\n\n if (strict) {\n functions.push(['strict', undefined]);\n }\n\n break;\n }\n\n if (schema.additionalProperties) {\n functions.push([\n 'additionalProperties',\n isBoolean(schema.additionalProperties)\n ? schema.additionalProperties\n : generateZodValidationSchemaDefinition(\n schema.additionalProperties as SchemaObject,\n true,\n name,\n strict,\n ),\n ]);\n\n break;\n }\n\n functions.push([type as string, undefined]);\n\n break;\n }\n }\n\n if (min !== undefined) {\n if (min === 1) {\n functions.push(['min', `${min}`]);\n } else {\n counter++;\n consts.push(`export const ${name}Min${counter} = ${min};\\n`);\n functions.push(['min', `${name}Min${counter}`]);\n }\n }\n if (max !== undefined) {\n counter++;\n consts.push(`export const ${name}Max${counter} = ${max};\\n`);\n functions.push(['max', `${name}Max${counter}`]);\n }\n if (matches) {\n const isStartWithSlash = matches.startsWith('/');\n const isEndWithSlash = matches.endsWith('/');\n\n const regexp = `new RegExp('${jsStringEscape(\n matches.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : undefined),\n )}')`;\n\n consts.push(`export const ${name}RegExp = ${regexp};\\n`);\n functions.push(['regex', `${name}RegExp`]);\n }\n\n if (schema.enum && type !== 'number') {\n functions.push([\n 'enum',\n [\n `[${schema.enum\n .map((value) => (isString(value) ? `'${escape(value)}'` : `${value}`))\n .join(', ')}]`,\n ],\n ]);\n }\n\n if (!required && nullable) {\n functions.push(['nullish', undefined]);\n } else if (nullable) {\n functions.push(['nullable', undefined]);\n } else if (!required) {\n functions.push(['optional', undefined]);\n }\n\n return { functions, consts: uniq(consts) };\n};\n\nexport type ZodValidationSchemaDefinitionInput = Record<\n string,\n { functions: [string, any][]; consts: string[] }\n>;\n\nexport const parseZodValidationSchemaDefinition = (\n input: ZodValidationSchemaDefinitionInput,\n strict: boolean,\n coerceTypes = false,\n): { zod: string; consts: string } => {\n if (!Object.keys(input).length) {\n return { zod: '', consts: '' };\n }\n\n let consts = '';\n\n const parseProperty = (property: [string, any]): string => {\n const [fn, args = ''] = property;\n if (fn === 'allOf') {\n return args.reduce(\n (acc: string, { functions }: { functions: [string, any][] }) => {\n const value = functions.map(parseProperty).join('');\n const valueWithZod = `${value.startsWith('.') ? 'zod' : ''}${value}`;\n\n if (!acc) {\n acc += valueWithZod;\n return acc;\n }\n\n acc += `.and(${valueWithZod})`;\n\n return acc;\n },\n '',\n );\n }\n\n if (fn === 'oneOf' || fn === 'anyOf') {\n return args.reduce(\n (acc: string, { functions }: { functions: [string, any][] }) => {\n const value = functions.map(parseProperty).join('');\n const valueWithZod = `${value.startsWith('.') ? 'zod' : ''}${value}`;\n\n if (!acc) {\n acc += valueWithZod;\n return acc;\n }\n\n acc += `.or(${valueWithZod})`;\n\n return acc;\n },\n '',\n );\n }\n\n if (fn === 'additionalProperties') {\n const value = args.functions.map(parseProperty).join('');\n const valueWithZod = `${value.startsWith('.') ? 'zod' : ''}${value}`;\n consts += args.consts;\n return `zod.record(zod.string(), ${valueWithZod})`;\n }\n\n if (fn === 'object') {\n const parsed = parseZodValidationSchemaDefinition(args, strict);\n consts += parsed.consts;\n return ` ${parsed.zod}`;\n }\n if (fn === 'array') {\n const value = args.functions.map(parseProperty).join('');\n if (typeof args.consts === 'string') {\n consts += args.consts;\n } else if (Array.isArray(args.consts)) {\n consts += args.consts.join('\\n');\n }\n return `.array(${value.startsWith('.') ? 'zod' : ''}${value})`;\n }\n\n if (fn === 'strict') {\n return '.strict()';\n }\n\n if (coerceTypes && COERCEABLE_TYPES.includes(fn)) {\n return `.coerce.${fn}(${args})`;\n }\n\n return `.${fn}(${args})`;\n };\n\n consts += Object.entries(input).reduce((acc, [key, schema]) => {\n return acc + schema.consts.join('\\n');\n }, '');\n\n const zod = `zod.object({\n${Object.entries(input)\n .map(([key, schema]) => {\n const value = schema.functions.map(parseProperty).join('');\n return ` \"${key}\": ${value.startsWith('.') ? 'zod' : ''}${value}`;\n })\n .join(',\\n')}\n})${strict ? '.strict()' : ''}`;\n\n return { zod, consts };\n};\n\nconst deferenceScalar = (value: any, context: ContextSpecs): unknown => {\n if (isObject(value)) {\n return deference(value, context);\n } else if (Array.isArray(value)) {\n return value.map((item) => deferenceScalar(item, context));\n } else {\n return value;\n }\n};\n\nconst deference = (\n schema: SchemaObject | ReferenceObject,\n context: ContextSpecs,\n): SchemaObject => {\n const refName = '$ref' in schema ? schema.$ref : undefined;\n if (refName && context.parents?.includes(refName)) {\n return {};\n }\n\n const childContext: ContextSpecs = {\n ...context,\n ...(refName\n ? { parents: [...(context.parents || []), refName] }\n : undefined),\n };\n\n const { schema: resolvedSchema } = resolveRef<SchemaObject>(\n schema,\n childContext,\n );\n\n return Object.entries(resolvedSchema).reduce((acc, [key, value]) => {\n acc[key] = deferenceScalar(value, childContext);\n return acc;\n }, {} as any);\n};\n\nconst generateZodRoute = (\n { operationName, verb, override }: GeneratorVerbOptions,\n { pathRoute, context }: GeneratorOptions,\n) => {\n const spec = context.specs[context.specKey].paths[pathRoute] as\n | PathItemObject\n | undefined;\n\n const parameters = spec?.[verb]?.parameters;\n const requestBody = spec?.[verb]?.requestBody;\n const response = spec?.[verb]?.responses?.['200'] as\n | ResponseObject\n | ReferenceObject;\n\n const resolvedResponse = response\n ? resolveRef<ResponseObject>(response, context).schema\n : undefined;\n\n const resolvedResponseJsonSchema = resolvedResponse?.content?.[\n 'application/json'\n ]?.schema\n ? deference(resolvedResponse.content['application/json'].schema, context)\n : undefined;\n\n const zodDefinitionsResponseProperties =\n resolvedResponseJsonSchema?.properties ??\n (resolvedResponseJsonSchema?.items as SchemaObject)?.properties ??\n ({} as { [p: string]: SchemaObject | ReferenceObject });\n\n const isZodDefinitionResponseArray = !!resolvedResponseJsonSchema?.items;\n\n const zodDefinitionsResponse = Object.entries(\n zodDefinitionsResponseProperties,\n )\n .map(([key, response]) => {\n const schema = deference(response, context);\n\n return {\n [key]: generateZodValidationSchemaDefinition(\n schema,\n !!resolvedResponseJsonSchema?.required?.find(\n (requiredKey: string) => requiredKey === key,\n ),\n camel(`${operationName}-response-${key}`),\n override.zod.strict.response,\n ),\n };\n })\n .reduce((acc, curr) => ({ ...acc, ...curr }), {});\n\n const resolvedRequestBody = requestBody\n ? resolveRef<RequestBodyObject>(requestBody, context).schema\n : undefined;\n\n const resolvedRequestBodyJsonSchema = resolvedRequestBody?.content?.[\n 'application/json'\n ]?.schema\n ? deference(resolvedRequestBody.content['application/json'].schema, context)\n : undefined;\n\n const zodDefinitionsBodyProperties =\n resolvedRequestBodyJsonSchema?.properties ??\n (resolvedRequestBodyJsonSchema?.items as SchemaObject)?.properties ??\n ({} as { [p: string]: SchemaObject | ReferenceObject });\n\n const isZodDefinitionBodyArray = !!resolvedRequestBodyJsonSchema?.items;\n\n const zodDefinitionsBody = Object.entries(zodDefinitionsBodyProperties)\n .map(([key, body]) => {\n const schema = deference(body, context);\n\n return {\n [key]: generateZodValidationSchemaDefinition(\n schema,\n !!resolvedRequestBodyJsonSchema?.required?.find(\n (requiredKey: string) => requiredKey === key,\n ),\n camel(`${operationName}-body-${key}`),\n override.zod.strict.body,\n ),\n };\n })\n .reduce((acc, curr) => ({ ...acc, ...curr }), {});\n\n const zodDefinitionsParameters = (parameters ?? []).reduce(\n (acc, val) => {\n const { schema: parameter } = resolveRef<ParameterObject>(val, context);\n\n if (!parameter.schema) {\n return acc;\n }\n\n const schema = deference(parameter.schema, context);\n\n const strict = {\n path: override.zod.strict.param,\n query: override.zod.strict.query,\n header: override.zod.strict.header,\n };\n\n const definition = generateZodValidationSchemaDefinition(\n schema,\n parameter.required,\n camel(`${operationName}-${parameter.in}-${parameter.name}`),\n strict[parameter.in as 'path' | 'query' | 'header'] ?? false,\n );\n\n if (parameter.in === 'header') {\n return {\n ...acc,\n headers: { ...acc.headers, [parameter.name]: definition },\n };\n }\n\n if (parameter.in === 'query') {\n return {\n ...acc,\n queryParams: { ...acc.queryParams, [parameter.name]: definition },\n };\n }\n\n if (parameter.in === 'path') {\n return {\n ...acc,\n params: { ...acc.params, [parameter.name]: definition },\n };\n }\n\n return acc;\n },\n {\n headers: {},\n queryParams: {},\n params: {},\n } as Record<\n 'headers' | 'queryParams' | 'params',\n Record<string, { functions: [string, any][]; consts: string[] }>\n >,\n );\n\n const inputParams = parseZodValidationSchemaDefinition(\n zodDefinitionsParameters.params,\n override.zod.strict.param,\n );\n const inputQueryParams = parseZodValidationSchemaDefinition(\n zodDefinitionsParameters.queryParams,\n override.zod.strict.query,\n override.coerceTypes,\n );\n const inputHeaders = parseZodValidationSchemaDefinition(\n zodDefinitionsParameters.headers,\n override.zod.strict.header,\n );\n const inputBody = parseZodValidationSchemaDefinition(\n zodDefinitionsBody,\n override.zod.strict.body,\n );\n const inputResponse = parseZodValidationSchemaDefinition(\n zodDefinitionsResponse,\n override.zod.strict.response,\n );\n\n if (\n !inputParams.zod &&\n !inputQueryParams.zod &&\n !inputHeaders.zod &&\n !inputBody.zod &&\n !inputResponse.zod\n ) {\n return '';\n }\n\n return [\n ...(inputParams.consts ? [inputParams.consts] : []),\n ...(inputParams.zod\n ? [`export const ${operationName}Params = ${inputParams.zod}`]\n : []),\n ...(inputQueryParams.consts ? [inputQueryParams.consts] : []),\n ...(inputQueryParams.zod\n ? [`export const ${operationName}QueryParams = ${inputQueryParams.zod}`]\n : []),\n ...(inputHeaders.consts ? [inputHeaders.consts] : []),\n ...(inputHeaders.zod\n ? [`export const ${operationName}Header = ${inputHeaders.zod}`]\n : []),\n ...(inputBody.consts ? [inputBody.consts] : []),\n ...(inputBody.zod\n ? [\n isZodDefinitionBodyArray\n ? `export const ${operationName}BodyItem = ${inputBody.zod}\nexport const ${operationName}Body = zod.array(${operationName}BodyItem)`\n : `export const ${operationName}Body = ${inputBody.zod}`,\n ]\n : []),\n ...(inputResponse.consts ? [inputResponse.consts] : []),\n ...(inputResponse.zod\n ? [\n isZodDefinitionResponseArray\n ? `export const ${operationName}ResponseItem = ${inputResponse.zod}\nexport const ${operationName}Response = zod.array(${operationName}ResponseItem)`\n : `export const ${operationName}Response = ${inputResponse.zod}`,\n ]\n : []),\n ].join('\\n\\n');\n};\n\nexport const generateZod: ClientBuilder = (verbOptions, options) => {\n const routeImplementation = generateZodRoute(verbOptions, options);\n\n return {\n implementation: routeImplementation ? `${routeImplementation}\\n\\n` : '',\n imports: [],\n };\n};\n\nconst zodClientBuilder: ClientGeneratorsBuilder = {\n client: generateZod,\n dependencies: getZodDependencies,\n};\n\nexport const builder = () => () => zodClientBuilder;\n\nexport default builder;\n"],"mappings":"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","names":["schema","_a","_b","uniq","response"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n ParameterObject,\n PathItemObject,\n ReferenceObject,\n RequestBodyObject,\n ResponseObject,\n SchemaObject,\n} from 'openapi3-ts/oas30';\nimport {\n camel,\n ClientBuilder,\n ClientGeneratorsBuilder,\n escape,\n GeneratorDependency,\n GeneratorOptions,\n GeneratorVerbOptions,\n isString,\n resolveRef,\n ContextSpecs,\n isObject,\n isBoolean,\n jsStringEscape,\n getNumberWord,\n pascal,\n} from '@orval/core';\nimport uniq from 'lodash.uniq';\n\nconst ZOD_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'z',\n alias: 'zod',\n values: true,\n },\n ],\n dependency: 'zod',\n },\n];\n\nexport const getZodDependencies = () => ZOD_DEPENDENCIES;\n\nconst possibleSchemaTypes = [\n 'integer',\n 'number',\n 'string',\n 'boolean',\n 'object',\n 'null',\n 'array',\n];\n\nconst resolveZodType = (schemaTypeValue: SchemaObject['type']) => {\n const type = Array.isArray(schemaTypeValue)\n ? schemaTypeValue.find((t) => possibleSchemaTypes.includes(t))\n : schemaTypeValue;\n\n switch (type) {\n case 'integer':\n return 'number';\n default:\n return type ?? 'any';\n }\n};\n\nlet constsUniqueCounter: Record<string, number> = {};\n\n// https://github.com/colinhacks/zod#coercion-for-primitives\nconst COERCEABLE_TYPES = ['string', 'number', 'boolean', 'bigint', 'date'];\n\nconst generateZodValidationSchemaDefinition = (\n schema: SchemaObject | undefined,\n _required: boolean | undefined,\n name: string,\n strict: boolean,\n): { functions: [string, any][]; consts: string[] } => {\n if (!schema) return { functions: [], consts: [] };\n\n const consts: string[] = [];\n const constsCounter =\n typeof constsUniqueCounter[name] === 'number'\n ? constsUniqueCounter[name] + 1\n : 0;\n\n const constsCounterValue = constsCounter\n ? pascal(getNumberWord(constsCounter))\n : '';\n\n constsUniqueCounter[name] = constsCounter;\n\n const functions: [string, any][] = [];\n const type = resolveZodType(schema.type);\n const required = schema.default !== undefined ? false : _required ?? false;\n const nullable =\n schema.nullable ??\n (Array.isArray(schema.type) && schema.type.includes('null'));\n const min =\n schema.minimum ??\n schema.exclusiveMinimum ??\n schema.minLength ??\n schema.minItems ??\n undefined;\n const max =\n schema.maximum ??\n schema.exclusiveMaximum ??\n schema.maxLength ??\n schema.maxItems ??\n undefined;\n const matches = schema.pattern ?? undefined;\n\n switch (type) {\n case 'array':\n const items = schema.items as SchemaObject | undefined;\n functions.push([\n 'array',\n generateZodValidationSchemaDefinition(\n items,\n true,\n camel(`${name}-item`),\n strict,\n ),\n ]);\n break;\n case 'string': {\n if (schema.enum && type === 'string') {\n break;\n }\n\n if (schema.format === 'date') {\n functions.push(['date', undefined]);\n break;\n }\n\n functions.push([type as string, undefined]);\n\n if (schema.format === 'date-time') {\n functions.push(['datetime', undefined]);\n break;\n }\n\n if (schema.format === 'email') {\n functions.push(['email', undefined]);\n break;\n }\n\n if (schema.format === 'uri' || schema.format === 'hostname') {\n functions.push(['url', undefined]);\n break;\n }\n\n if (schema.format === 'uuid') {\n functions.push(['uuid', undefined]);\n break;\n }\n\n break;\n }\n case 'object':\n default: {\n if (schema.allOf || schema.oneOf || schema.anyOf) {\n const separator = schema.allOf\n ? 'allOf'\n : schema.oneOf\n ? 'oneOf'\n : 'anyOf';\n\n const schemas = (schema.allOf ?? schema.oneOf ?? schema.anyOf) as (\n | SchemaObject\n | ReferenceObject\n )[];\n\n functions.push([\n separator,\n schemas.map((schema) =>\n generateZodValidationSchemaDefinition(\n schema as SchemaObject,\n true,\n camel(name),\n strict,\n ),\n ),\n ]);\n break;\n }\n\n if (schema.properties) {\n functions.push([\n 'object',\n Object.keys(schema.properties)\n .map((key) => ({\n [key]: generateZodValidationSchemaDefinition(\n schema.properties?.[key] as any,\n schema.required?.includes(key),\n camel(`${name}-${key}`),\n strict,\n ),\n }))\n .reduce((acc, curr) => ({ ...acc, ...curr }), {}),\n ]);\n\n if (strict) {\n functions.push(['strict', undefined]);\n }\n\n break;\n }\n\n if (schema.additionalProperties) {\n functions.push([\n 'additionalProperties',\n isBoolean(schema.additionalProperties)\n ? schema.additionalProperties\n : generateZodValidationSchemaDefinition(\n schema.additionalProperties as SchemaObject,\n true,\n name,\n strict,\n ),\n ]);\n\n break;\n }\n\n functions.push([type as string, undefined]);\n\n break;\n }\n }\n\n if (min !== undefined) {\n if (min === 1) {\n functions.push(['min', `${min}`]);\n } else {\n consts.push(`export const ${name}Min${constsCounterValue} = ${min};\\n`);\n functions.push(['min', `${name}Min${constsCounterValue}`]);\n }\n }\n if (max !== undefined) {\n consts.push(`export const ${name}Max${constsCounterValue} = ${max};\\n`);\n functions.push(['max', `${name}Max${constsCounterValue}`]);\n }\n if (matches) {\n const isStartWithSlash = matches.startsWith('/');\n const isEndWithSlash = matches.endsWith('/');\n\n const regexp = `new RegExp('${jsStringEscape(\n matches.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : undefined),\n )}')`;\n\n consts.push(\n `export const ${name}RegExp${constsCounterValue} = ${regexp};\\n`,\n );\n functions.push(['regex', `${name}RegExp${constsCounterValue}`]);\n }\n\n if (schema.enum && type !== 'number') {\n functions.push([\n 'enum',\n [\n `[${schema.enum\n .map((value) => (isString(value) ? `'${escape(value)}'` : `${value}`))\n .join(', ')}]`,\n ],\n ]);\n }\n\n if (!required && nullable) {\n functions.push(['nullish', undefined]);\n } else if (nullable) {\n functions.push(['nullable', undefined]);\n } else if (!required) {\n functions.push(['optional', undefined]);\n }\n\n return { functions, consts: uniq(consts) };\n};\n\nexport type ZodValidationSchemaDefinitionInput = {\n functions: [string, any][];\n consts: string[];\n};\n\nexport const parseZodValidationSchemaDefinition = (\n input: ZodValidationSchemaDefinitionInput,\n strict: boolean,\n coerceTypes = false,\n): { zod: string; consts: string } => {\n if (!input.functions.length) {\n return { zod: '', consts: '' };\n }\n\n let consts = '';\n\n const parseProperty = (property: [string, any]): string => {\n const [fn, args = ''] = property;\n if (fn === 'allOf') {\n return args.reduce(\n (acc: string, { functions }: { functions: [string, any][] }) => {\n const value = functions.map(parseProperty).join('');\n const valueWithZod = `${value.startsWith('.') ? 'zod' : ''}${value}`;\n\n if (!acc) {\n acc += valueWithZod;\n return acc;\n }\n\n acc += `.and(${valueWithZod})`;\n\n return acc;\n },\n '',\n );\n }\n\n if (fn === 'oneOf' || fn === 'anyOf') {\n return args.reduce(\n (acc: string, { functions }: { functions: [string, any][] }) => {\n const value = functions.map(parseProperty).join('');\n const valueWithZod = `${value.startsWith('.') ? 'zod' : ''}${value}`;\n\n if (!acc) {\n acc += valueWithZod;\n return acc;\n }\n\n acc += `.or(${valueWithZod})`;\n\n return acc;\n },\n '',\n );\n }\n\n if (fn === 'additionalProperties') {\n const value = args.functions.map(parseProperty).join('');\n const valueWithZod = `${value.startsWith('.') ? 'zod' : ''}${value}`;\n consts += args.consts;\n return `zod.record(zod.string(), ${valueWithZod})`;\n }\n\n if (fn === 'object') {\n return `zod.object({\n${Object.entries(args)\n .map(([key, schema]) => {\n const value = (schema as ZodValidationSchemaDefinitionInput).functions\n .map(parseProperty)\n .join('');\n consts += (schema as ZodValidationSchemaDefinitionInput).consts.join('\\n');\n return ` \"${key}\": ${value.startsWith('.') ? 'zod' : ''}${value}`;\n })\n .join(',\\n')}\n})${strict ? '.strict()' : ''}`;\n }\n if (fn === 'array') {\n const value = args.functions.map(parseProperty).join('');\n if (typeof args.consts === 'string') {\n consts += args.consts;\n } else if (Array.isArray(args.consts)) {\n consts += args.consts.join('\\n');\n }\n return `.array(${value.startsWith('.') ? 'zod' : ''}${value})`;\n }\n\n if (fn === 'strict') {\n return '.strict()';\n }\n\n if (coerceTypes && COERCEABLE_TYPES.includes(fn)) {\n return `.coerce.${fn}(${args})`;\n }\n\n return `.${fn}(${args})`;\n };\n\n consts += input.consts.join('\\n');\n\n const zod = input.functions.map(parseProperty).join('');\n\n return { zod, consts };\n};\n\nconst deferenceScalar = (value: any, context: ContextSpecs): unknown => {\n if (isObject(value)) {\n return deference(value, context);\n } else if (Array.isArray(value)) {\n return value.map((item) => deferenceScalar(item, context));\n } else {\n return value;\n }\n};\n\nconst deference = (\n schema: SchemaObject | ReferenceObject,\n context: ContextSpecs,\n): SchemaObject => {\n const refName = '$ref' in schema ? schema.$ref : undefined;\n if (refName && context.parents?.includes(refName)) {\n return {};\n }\n\n const childContext: ContextSpecs = {\n ...context,\n ...(refName\n ? { parents: [...(context.parents || []), refName] }\n : undefined),\n };\n\n const { schema: resolvedSchema } = resolveRef<SchemaObject>(\n schema,\n childContext,\n );\n\n return Object.entries(resolvedSchema).reduce((acc, [key, value]) => {\n acc[key] = deferenceScalar(value, childContext);\n return acc;\n }, {} as any);\n};\n\nconst parseBodyAndResponse = ({\n data,\n context,\n name,\n strict,\n}: {\n data: ResponseObject | RequestBodyObject | ReferenceObject | undefined;\n context: ContextSpecs;\n name: string;\n strict: boolean;\n}): {\n input: ZodValidationSchemaDefinitionInput;\n isArray: boolean;\n} => {\n if (!data) {\n return {\n input: { functions: [], consts: [] },\n isArray: false,\n };\n }\n\n const resolvedRef = resolveRef<ResponseObject | RequestBodyObject>(\n data,\n context,\n ).schema;\n\n if (!resolvedRef.content?.['application/json']?.schema) {\n return {\n input: { functions: [], consts: [] },\n isArray: false,\n };\n }\n\n const resolvedJsonSchema = deference(\n resolvedRef.content['application/json'].schema,\n context,\n );\n\n // keep the same behaviour for array\n if (resolvedJsonSchema.items) {\n return {\n input: generateZodValidationSchemaDefinition(\n resolvedJsonSchema,\n true,\n name,\n strict,\n ),\n isArray: true,\n };\n }\n\n return {\n input: generateZodValidationSchemaDefinition(\n resolvedJsonSchema,\n true,\n name,\n strict,\n ),\n isArray: false,\n };\n};\n\nconst parseParameters = ({\n data,\n context,\n operationName,\n strict,\n}: {\n data: (ParameterObject | ReferenceObject)[] | undefined;\n context: ContextSpecs;\n operationName: string;\n strict: {\n param: boolean;\n query: boolean;\n header: boolean;\n body: boolean;\n response: boolean;\n };\n}): {\n headers: ZodValidationSchemaDefinitionInput;\n queryParams: ZodValidationSchemaDefinitionInput;\n params: ZodValidationSchemaDefinitionInput;\n} => {\n if (!data) {\n return {\n headers: {\n functions: [],\n consts: [],\n },\n queryParams: {\n functions: [],\n consts: [],\n },\n params: {\n functions: [],\n consts: [],\n },\n };\n }\n\n const defintionsByParameters = data.reduce(\n (acc, val) => {\n const { schema: parameter } = resolveRef<ParameterObject>(val, context);\n\n if (!parameter.schema) {\n return acc;\n }\n\n const schema = deference(parameter.schema, context);\n\n const mapStrict = {\n path: strict.param,\n query: strict.query,\n header: strict.header,\n };\n\n const definition = generateZodValidationSchemaDefinition(\n schema,\n parameter.required,\n camel(`${operationName}-${parameter.in}-${parameter.name}`),\n mapStrict[parameter.in as 'path' | 'query' | 'header'] ?? false,\n );\n\n if (parameter.in === 'header') {\n return {\n ...acc,\n headers: { ...acc.headers, [parameter.name]: definition },\n };\n }\n\n if (parameter.in === 'query') {\n return {\n ...acc,\n queryParams: { ...acc.queryParams, [parameter.name]: definition },\n };\n }\n\n if (parameter.in === 'path') {\n return {\n ...acc,\n params: { ...acc.params, [parameter.name]: definition },\n };\n }\n\n return acc;\n },\n {\n headers: {},\n queryParams: {},\n params: {},\n } as Record<\n 'headers' | 'queryParams' | 'params',\n Record<string, { functions: [string, any][]; consts: string[] }>\n >,\n );\n\n const headers: ZodValidationSchemaDefinitionInput = {\n functions: [],\n consts: [],\n };\n\n if (Object.keys(defintionsByParameters.headers).length) {\n headers.functions.push(['object', defintionsByParameters.headers]);\n\n if (strict.header) {\n headers.functions.push(['strict', undefined]);\n }\n }\n\n const queryParams: ZodValidationSchemaDefinitionInput = {\n functions: [],\n consts: [],\n };\n\n if (Object.keys(defintionsByParameters.queryParams).length) {\n queryParams.functions.push(['object', defintionsByParameters.queryParams]);\n\n if (strict.query) {\n queryParams.functions.push(['strict', undefined]);\n }\n }\n\n const params: ZodValidationSchemaDefinitionInput = {\n functions: [],\n consts: [],\n };\n\n if (Object.keys(defintionsByParameters.params).length) {\n params.functions.push(['object', defintionsByParameters.params]);\n\n if (strict.param) {\n params.functions.push(['strict', undefined]);\n }\n }\n\n return {\n headers,\n queryParams,\n params,\n };\n};\n\nconst generateZodRoute = (\n { operationName, verb, override }: GeneratorVerbOptions,\n { pathRoute, context }: GeneratorOptions,\n) => {\n const spec = context.specs[context.specKey].paths[pathRoute] as\n | PathItemObject\n | undefined;\n\n const parameters = spec?.[verb]?.parameters;\n const requestBody = spec?.[verb]?.requestBody;\n const response = spec?.[verb]?.responses?.['200'] as\n | ResponseObject\n | ReferenceObject;\n\n const parsedResponse = parseBodyAndResponse({\n data: response,\n context,\n name: camel(`${operationName}-response`),\n strict: override.zod.strict.response,\n });\n\n const parsedPody = parseBodyAndResponse({\n data: requestBody,\n context,\n name: camel(`${operationName}-body`),\n strict: override.zod.strict.body,\n });\n\n const parsedParameters = parseParameters({\n data: parameters,\n context,\n operationName,\n strict: override.zod.strict,\n });\n\n const inputParams = parseZodValidationSchemaDefinition(\n parsedParameters.params,\n override.zod.strict.param,\n override.zod.coerce.param,\n );\n\n if (override.coerceTypes) {\n console.warn(\n 'override.coerceTypes is deprecated, please use override.zod.coerce instead.',\n );\n }\n\n const inputQueryParams = parseZodValidationSchemaDefinition(\n parsedParameters.queryParams,\n override.zod.strict.query,\n override.zod.coerce.query ?? override.coerceTypes,\n );\n const inputHeaders = parseZodValidationSchemaDefinition(\n parsedParameters.headers,\n override.zod.strict.header,\n override.zod.coerce.header,\n );\n\n const inputBody = parseZodValidationSchemaDefinition(\n parsedPody.input,\n override.zod.strict.body,\n override.zod.coerce.body,\n );\n\n const inputResponse = parseZodValidationSchemaDefinition(\n parsedResponse.input,\n override.zod.strict.response,\n override.zod.coerce.response,\n );\n\n if (\n !inputParams.zod &&\n !inputQueryParams.zod &&\n !inputHeaders.zod &&\n !inputBody.zod &&\n !inputResponse.zod\n ) {\n return '';\n }\n\n return [\n ...(inputParams.consts ? [inputParams.consts] : []),\n ...(inputParams.zod\n ? [`export const ${operationName}Params = ${inputParams.zod}`]\n : []),\n ...(inputQueryParams.consts ? [inputQueryParams.consts] : []),\n ...(inputQueryParams.zod\n ? [`export const ${operationName}QueryParams = ${inputQueryParams.zod}`]\n : []),\n ...(inputHeaders.consts ? [inputHeaders.consts] : []),\n ...(inputHeaders.zod\n ? [`export const ${operationName}Header = ${inputHeaders.zod}`]\n : []),\n ...(inputBody.consts ? [inputBody.consts] : []),\n ...(inputBody.zod\n ? [\n parsedPody.isArray\n ? `export const ${operationName}BodyItem = ${inputBody.zod}\nexport const ${operationName}Body = zod.array(${operationName}BodyItem)`\n : `export const ${operationName}Body = ${inputBody.zod}`,\n ]\n : []),\n ...(inputResponse.consts ? [inputResponse.consts] : []),\n ...(inputResponse.zod\n ? [\n parsedResponse.isArray\n ? `export const ${operationName}ResponseItem = ${inputResponse.zod}\nexport const ${operationName}Response = zod.array(${operationName}ResponseItem)`\n : `export const ${operationName}Response = ${inputResponse.zod}`,\n ]\n : []),\n ].join('\\n\\n');\n};\n\nexport const generateZod: ClientBuilder = (verbOptions, options) => {\n const routeImplementation = generateZodRoute(verbOptions, options);\n\n return {\n implementation: routeImplementation ? `${routeImplementation}\\n\\n` : '',\n imports: [],\n };\n};\n\nconst zodClientBuilder: ClientGeneratorsBuilder = {\n client: generateZod,\n dependencies: getZodDependencies,\n};\n\nexport const builder = () => () => zodClientBuilder;\n\nexport default builder;\n"],"mappings":"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","names":["schema","_a","_b","uniq"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orval/zod",
3
- "version": "6.27.1",
3
+ "version": "6.28.0",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -14,7 +14,7 @@
14
14
  "test": "vitest --global test.ts"
15
15
  },
16
16
  "dependencies": {
17
- "@orval/core": "6.27.1",
17
+ "@orval/core": "6.28.0",
18
18
  "lodash.uniq": "^4.5.0"
19
19
  },
20
20
  "devDependencies": {