@orval/zod 7.4.1 → 7.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.
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ type ZodValidationSchemaDefinition = {
9
9
  declare const generateZodValidationSchemaDefinition: (schema: SchemaObject | undefined, context: ContextSpecs, name: string, strict: boolean, rules?: {
10
10
  required?: boolean;
11
11
  }) => ZodValidationSchemaDefinition;
12
- declare const parseZodValidationSchemaDefinition: (input: ZodValidationSchemaDefinition, context: ContextSpecs, coerceTypes?: boolean | ZodCoerceType[], preprocessResponse?: GeneratorMutator) => {
12
+ declare const parseZodValidationSchemaDefinition: (input: ZodValidationSchemaDefinition, context: ContextSpecs, coerceTypes?: boolean | ZodCoerceType[], preprocess?: GeneratorMutator) => {
13
13
  zod: string;
14
14
  consts: string;
15
15
  };
package/dist/index.js CHANGED
@@ -111,6 +111,33 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
111
111
  const min = (_d = (_c = schema.minimum) != null ? _c : schema.minLength) != null ? _d : schema.minItems;
112
112
  const max = (_f = (_e = schema.maximum) != null ? _e : schema.maxLength) != null ? _f : schema.maxItems;
113
113
  const matches = (_g = schema.pattern) != null ? _g : void 0;
114
+ let defaultVarName;
115
+ if (schema.default !== void 0) {
116
+ defaultVarName = `${name}Default${constsCounterValue}`;
117
+ let defaultValue;
118
+ const isDateType = schema.type === "string" && (schema.format === "date" || schema.format === "date-time") && context.output.override.useDates;
119
+ if (isDateType) {
120
+ defaultValue = `new Date("${(0, import_core.escape)(schema.default)}")`;
121
+ } else if ((0, import_core.isObject)(schema.default)) {
122
+ const entries = Object.entries(schema.default).map(([key, value]) => {
123
+ if ((0, import_core.isString)(value)) {
124
+ return `${key}: "${(0, import_core.escape)(value)}"`;
125
+ }
126
+ if (Array.isArray(value)) {
127
+ const arrayItems = value.map(
128
+ (item) => (0, import_core.isString)(item) ? `"${(0, import_core.escape)(item)}"` : `${item}`
129
+ );
130
+ return `${key}: [${arrayItems.join(", ")}]`;
131
+ }
132
+ return `${key}: ${value}`;
133
+ }).join(", ");
134
+ defaultValue = `{ ${entries} }`;
135
+ } else {
136
+ const rawStringified = (0, import_core.stringify)(schema.default);
137
+ defaultValue = rawStringified === void 0 ? "null" : rawStringified.replace(/'/g, '"');
138
+ }
139
+ consts.push(`export const ${defaultVarName} = ${defaultValue};`);
140
+ }
114
141
  switch (type) {
115
142
  case "tuple":
116
143
  if ("prefixItems" in schema) {
@@ -171,6 +198,10 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
171
198
  functions.push(["date", void 0]);
172
199
  break;
173
200
  }
201
+ if (schema.format === "binary") {
202
+ functions.push(["instanceof", "File"]);
203
+ break;
204
+ }
174
205
  functions.push([type, void 0]);
175
206
  if (schema.format === "date") {
176
207
  functions.push(["date", void 0]);
@@ -197,12 +228,15 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
197
228
  case "object":
198
229
  default: {
199
230
  if (schema.allOf || schema.oneOf || schema.anyOf) {
200
- const separator = schema.allOf ? "allOf" : schema.oneOf ? "oneOf" : "anyOf";
231
+ let separator = schema.allOf ? "allOf" : schema.oneOf ? "oneOf" : "anyOf";
201
232
  const schemas = (_i = (_h = schema.allOf) != null ? _h : schema.oneOf) != null ? _i : schema.anyOf;
233
+ if ((schema.oneOf || schema.anyOf) && schema.discriminator && schema.discriminator.propertyName) {
234
+ separator = `discriminator__${schema.discriminator.propertyName}`;
235
+ }
202
236
  functions.push([
203
237
  separator,
204
- schemas.map(
205
- (schema2) => generateZodValidationSchemaDefinition(
238
+ schemas.map((schema2) => {
239
+ return generateZodValidationSchemaDefinition(
206
240
  schema2,
207
241
  context,
208
242
  (0, import_core.camel)(name),
@@ -210,8 +244,8 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
210
244
  {
211
245
  required: true
212
246
  }
213
- )
214
- )
247
+ );
248
+ })
215
249
  ]);
216
250
  break;
217
251
  }
@@ -293,7 +327,9 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
293
327
  ]
294
328
  ]);
295
329
  }
296
- if (!required && nullable) {
330
+ if (!required && schema.default) {
331
+ functions.push(["default", defaultVarName]);
332
+ } else if (!required && nullable) {
297
333
  functions.push(["nullish", void 0]);
298
334
  } else if (nullable) {
299
335
  functions.push(["nullable", void 0]);
@@ -302,7 +338,7 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
302
338
  }
303
339
  return { functions, consts: (0, import_lodash.default)(consts) };
304
340
  };
305
- var parseZodValidationSchemaDefinition = (input, context, coerceTypes = false, preprocessResponse) => {
341
+ var parseZodValidationSchemaDefinition = (input, context, coerceTypes = false, preprocess) => {
306
342
  if (!input.functions.length) {
307
343
  return { zod: "", consts: "" };
308
344
  }
@@ -311,9 +347,15 @@ var parseZodValidationSchemaDefinition = (input, context, coerceTypes = false, p
311
347
  const [fn, args = ""] = property;
312
348
  if (fn === "allOf") {
313
349
  return args.reduce(
314
- (acc, { functions }) => {
350
+ (acc, {
351
+ functions,
352
+ consts: argConsts
353
+ }) => {
315
354
  const value2 = functions.map(parseProperty).join("");
316
355
  const valueWithZod = `${value2.startsWith(".") ? "zod" : ""}${value2}`;
356
+ if (argConsts.length) {
357
+ consts += argConsts.join("\n");
358
+ }
317
359
  if (!acc) {
318
360
  acc += valueWithZod;
319
361
  return acc;
@@ -324,7 +366,18 @@ var parseZodValidationSchemaDefinition = (input, context, coerceTypes = false, p
324
366
  ""
325
367
  );
326
368
  }
327
- if (fn === "oneOf" || fn === "anyOf") {
369
+ if (fn.startsWith("discriminator__")) {
370
+ const [, propertyName] = fn.split("discriminator__");
371
+ const typeSchemas = args.map(
372
+ ({ functions }) => {
373
+ const schemaFunctions = functions.map(parseProperty).join("");
374
+ return schemaFunctions;
375
+ }
376
+ );
377
+ return `zod.discriminatedUnion('${propertyName}', [${typeSchemas.join(
378
+ ","
379
+ )}])`;
380
+ } else if (fn === "oneOf" || fn === "anyOf") {
328
381
  return args.reduce(
329
382
  (acc, {
330
383
  functions,
@@ -386,7 +439,7 @@ ${Object.entries(args).map(([key, schema2]) => {
386
439
  };
387
440
  consts += input.consts.join("\n");
388
441
  const schema = input.functions.map(parseProperty).join("");
389
- const value = preprocessResponse ? `.preprocess(${preprocessResponse.name}, ${schema.startsWith(".") ? "zod" : ""}${schema})` : schema;
442
+ const value = preprocess ? `.preprocess(${preprocess.name}, ${schema.startsWith(".") ? "zod" : ""}${schema})` : schema;
390
443
  const zod = `${value.startsWith(".") ? "zod" : ""}${value}`;
391
444
  return { zod, consts };
392
445
  };
@@ -431,7 +484,7 @@ var parseBodyAndResponse = ({
431
484
  generate,
432
485
  parseType
433
486
  }) => {
434
- var _a, _b, _c, _d, _e, _f;
487
+ var _a, _b, _c, _d, _e, _f, _g, _h;
435
488
  if (!data || !generate) {
436
489
  return {
437
490
  input: { functions: [], consts: [] },
@@ -442,19 +495,17 @@ var parseBodyAndResponse = ({
442
495
  data,
443
496
  context
444
497
  ).schema;
445
- if (!((_b = (_a = resolvedRef.content) == null ? void 0 : _a["application/json"]) == null ? void 0 : _b.schema)) {
498
+ const schema = ((_b = (_a = resolvedRef.content) == null ? void 0 : _a["application/json"]) == null ? void 0 : _b.schema) || ((_d = (_c = resolvedRef.content) == null ? void 0 : _c["multipart/form-data"]) == null ? void 0 : _d.schema);
499
+ if (!schema) {
446
500
  return {
447
501
  input: { functions: [], consts: [] },
448
502
  isArray: false
449
503
  };
450
504
  }
451
- const resolvedJsonSchema = deference(
452
- resolvedRef.content["application/json"].schema,
453
- context
454
- );
505
+ const resolvedJsonSchema = deference(schema, context);
455
506
  if (resolvedJsonSchema.items) {
456
- const min = (_d = (_c = resolvedJsonSchema.minimum) != null ? _c : resolvedJsonSchema.minLength) != null ? _d : resolvedJsonSchema.minItems;
457
- const max = (_f = (_e = resolvedJsonSchema.maximum) != null ? _e : resolvedJsonSchema.maxLength) != null ? _f : resolvedJsonSchema.maxItems;
507
+ const min = (_f = (_e = resolvedJsonSchema.minimum) != null ? _e : resolvedJsonSchema.minLength) != null ? _f : resolvedJsonSchema.minItems;
508
+ const max = (_h = (_g = resolvedJsonSchema.maximum) != null ? _g : resolvedJsonSchema.maxLength) != null ? _h : resolvedJsonSchema.maxItems;
458
509
  return {
459
510
  input: generateZodValidationSchemaDefinition(
460
511
  parseType === "body" ? removeReadOnlyProperties(resolvedJsonSchema.items) : resolvedJsonSchema.items,
@@ -598,7 +649,7 @@ var parseParameters = ({
598
649
  };
599
650
  };
600
651
  var generateZodRoute = async ({ operationName, verb, override }, { pathRoute, context, output }) => {
601
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
652
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
602
653
  const spec = context.specs[context.specKey].paths[pathRoute];
603
654
  const parameters = (_a = spec == null ? void 0 : spec[verb]) == null ? void 0 : _a.parameters;
604
655
  const parsedParameters = parseParameters({
@@ -628,32 +679,64 @@ var generateZodRoute = async ({ operationName, verb, override }, { pathRoute, co
628
679
  parseType: "response"
629
680
  })
630
681
  );
682
+ const preprocessParams = ((_f = override.zod.preprocess) == null ? void 0 : _f.param) ? await (0, import_core.generateMutator)({
683
+ output,
684
+ mutator: override.zod.preprocess.response,
685
+ name: `${operationName}PreprocessParams`,
686
+ workspace: context.workspace,
687
+ tsconfig: context.output.tsconfig
688
+ }) : void 0;
631
689
  const inputParams = parseZodValidationSchemaDefinition(
632
690
  parsedParameters.params,
633
691
  context,
634
- override.zod.coerce.param
692
+ override.zod.coerce.param,
693
+ preprocessParams
635
694
  );
636
695
  if (override.coerceTypes) {
637
696
  console.warn(
638
697
  "override.coerceTypes is deprecated, please use override.zod.coerce instead."
639
698
  );
640
699
  }
700
+ const preprocessQueryParams = ((_g = override.zod.preprocess) == null ? void 0 : _g.query) ? await (0, import_core.generateMutator)({
701
+ output,
702
+ mutator: override.zod.preprocess.response,
703
+ name: `${operationName}PreprocessQueryParams`,
704
+ workspace: context.workspace,
705
+ tsconfig: context.output.tsconfig
706
+ }) : void 0;
641
707
  const inputQueryParams = parseZodValidationSchemaDefinition(
642
708
  parsedParameters.queryParams,
643
709
  context,
644
- (_f = override.zod.coerce.query) != null ? _f : override.coerceTypes
710
+ (_h = override.zod.coerce.query) != null ? _h : override.coerceTypes,
711
+ preprocessQueryParams
645
712
  );
713
+ const preprocessHeader = ((_i = override.zod.preprocess) == null ? void 0 : _i.header) ? await (0, import_core.generateMutator)({
714
+ output,
715
+ mutator: override.zod.preprocess.response,
716
+ name: `${operationName}PreprocessHeader`,
717
+ workspace: context.workspace,
718
+ tsconfig: context.output.tsconfig
719
+ }) : void 0;
646
720
  const inputHeaders = parseZodValidationSchemaDefinition(
647
721
  parsedParameters.headers,
648
722
  context,
649
- override.zod.coerce.header
723
+ override.zod.coerce.header,
724
+ preprocessHeader
650
725
  );
726
+ const preprocessBody = ((_j = override.zod.preprocess) == null ? void 0 : _j.body) ? await (0, import_core.generateMutator)({
727
+ output,
728
+ mutator: override.zod.preprocess.response,
729
+ name: `${operationName}PreprocessBody`,
730
+ workspace: context.workspace,
731
+ tsconfig: context.output.tsconfig
732
+ }) : void 0;
651
733
  const inputBody = parseZodValidationSchemaDefinition(
652
734
  parsedBody.input,
653
735
  context,
654
- override.zod.coerce.body
736
+ override.zod.coerce.body,
737
+ preprocessBody
655
738
  );
656
- const preprocessResponse = ((_g = override.zod.preprocess) == null ? void 0 : _g.response) ? await (0, import_core.generateMutator)({
739
+ const preprocessResponse = ((_k = override.zod.preprocess) == null ? void 0 : _k.response) ? await (0, import_core.generateMutator)({
657
740
  output,
658
741
  mutator: override.zod.preprocess.response,
659
742
  name: `${operationName}PreprocessResponse`,
@@ -685,7 +768,7 @@ var generateZodRoute = async ({ operationName, verb, override }, { pathRoute, co
685
768
  ...inputBody.consts ? [inputBody.consts] : [],
686
769
  ...inputBody.zod ? [
687
770
  parsedBody.isArray ? `export const ${operationName}BodyItem = ${inputBody.zod}
688
- export const ${operationName}Body = zod.array(${operationName}BodyItem)${((_h = parsedBody.rules) == null ? void 0 : _h.min) ? `.min(${(_i = parsedBody.rules) == null ? void 0 : _i.min})` : ""}${((_j = parsedBody.rules) == null ? void 0 : _j.max) ? `.max(${(_k = parsedBody.rules) == null ? void 0 : _k.max})` : ""}` : `export const ${operationName}Body = ${inputBody.zod}`
771
+ export const ${operationName}Body = zod.array(${operationName}BodyItem)${((_l = parsedBody.rules) == null ? void 0 : _l.min) ? `.min(${(_m = parsedBody.rules) == null ? void 0 : _m.min})` : ""}${((_n = parsedBody.rules) == null ? void 0 : _n.max) ? `.max(${(_o = parsedBody.rules) == null ? void 0 : _o.max})` : ""}` : `export const ${operationName}Body = ${inputBody.zod}`
689
772
  ] : [],
690
773
  ...inputResponses.map((inputResponse, index) => {
691
774
  var _a2, _b2, _c2, _d2;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n camel,\n ClientBuilder,\n ClientGeneratorsBuilder,\n ContextSpecs,\n escape,\n generateMutator,\n GeneratorDependency,\n GeneratorMutator,\n GeneratorOptions,\n GeneratorVerbOptions,\n getFileInfo,\n getNumberWord,\n getRefInfo,\n isBoolean,\n isObject,\n isString,\n jsStringEscape,\n pascal,\n resolveRef,\n ZodCoerceType,\n} from '@orval/core';\nimport uniq from 'lodash.uniq';\nimport {\n ParameterObject,\n PathItemObject,\n ReferenceObject,\n RequestBodyObject,\n ResponseObject,\n SchemaObject,\n} from 'openapi3-ts/oas30';\nimport { SchemaObject as SchemaObject31 } from 'openapi3-ts/oas31';\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\n/**\n * values that may appear in \"type\". Equals SchemaObjectType\n */\nconst possibleSchemaTypes = [\n 'integer',\n 'number',\n 'string',\n 'boolean',\n 'object',\n 'null',\n 'array',\n];\n\nconst resolveZodType = (schema: SchemaObject) => {\n const schemaTypeValue = schema.type;\n const type = Array.isArray(schemaTypeValue)\n ? schemaTypeValue.find((t) => possibleSchemaTypes.includes(t))\n : schemaTypeValue;\n\n // TODO: if \"prefixItems\" exists and type is \"array\", then generate a \"tuple\"\n if (schema.type === 'array' && 'prefixItems' in schema) {\n return 'tuple';\n }\n\n switch (type) {\n case 'integer':\n return 'number';\n default:\n return type ?? 'any';\n }\n};\n\nconst constsUniqueCounter: Record<string, number> = {};\n\n// https://github.com/colinhacks/zod#coercion-for-primitives\nconst COERCIBLE_TYPES = ['string', 'number', 'boolean', 'bigint', 'date'];\n\nexport type ZodValidationSchemaDefinition = {\n functions: [string, any][];\n consts: string[];\n};\n\nconst minAndMaxTypes = ['number', 'string', 'array'];\n\nconst removeReadOnlyProperties = (schema: SchemaObject): SchemaObject => {\n if (schema.properties) {\n return {\n ...schema,\n properties: Object.entries(schema.properties).reduce<\n Record<string, SchemaObject>\n >((acc, [key, value]) => {\n if ('readOnly' in value && value.readOnly) return acc;\n acc[key] = value as SchemaObject;\n return acc;\n }, {}),\n };\n }\n if (schema.items && 'properties' in schema.items) {\n return {\n ...schema,\n items: removeReadOnlyProperties(schema.items as SchemaObject),\n };\n }\n return schema;\n};\n\nexport const generateZodValidationSchemaDefinition = (\n schema: SchemaObject | undefined,\n context: ContextSpecs,\n name: string,\n strict: boolean,\n rules?: {\n required?: boolean;\n },\n): ZodValidationSchemaDefinition => {\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);\n const required =\n schema.default !== undefined ? false : rules?.required ?? false;\n const nullable =\n schema.nullable ??\n (Array.isArray(schema.type) && schema.type.includes('null'));\n const min = schema.minimum ?? schema.minLength ?? schema.minItems;\n const max = schema.maximum ?? schema.maxLength ?? schema.maxItems;\n const matches = schema.pattern ?? undefined;\n\n switch (type) {\n case 'tuple':\n /**\n *\n * > 10.3.1.1. prefixItems\n * > The value of \"prefixItems\" MUST be a non-empty array of valid JSON Schemas.\n * >\n * > Validation succeeds if each element of the instance validates against the schema at the same position, if any.\n * > This keyword does not constrain the length of the array. If the array is longer than this keyword's value,\n * > this keyword validates only the prefix of matching length.\n * >\n * > This keyword produces an annotation value which is the largest index to which this keyword applied a subschema.\n * > The value MAY be a boolean true if a subschema was applied to every index of the instance, such as is produced by the \"items\" keyword.\n * > This annotation affects the behavior of \"items\" and \"unevaluatedItems\".\n * >\n * > Omitting this keyword has the same assertion behavior as an empty array.\n */\n if ('prefixItems' in schema) {\n const schema31 = schema as SchemaObject31;\n\n if (schema31.prefixItems && schema31.prefixItems.length > 0) {\n functions.push([\n 'tuple',\n schema31.prefixItems.map((item, idx) =>\n generateZodValidationSchemaDefinition(\n deference(item as SchemaObject | ReferenceObject, context),\n context,\n camel(`${name}-${idx}-item`),\n strict,\n {\n required: true,\n },\n ),\n ),\n ]);\n\n if (schema.items) {\n if (\n (max || Number.POSITIVE_INFINITY) > schema31.prefixItems.length\n ) {\n // only add zod.rest() if number of tuple elements can exceed provided prefixItems:\n functions.push([\n 'rest',\n generateZodValidationSchemaDefinition(\n schema.items as SchemaObject | undefined,\n context,\n camel(`${name}-item`),\n strict,\n {\n required: true,\n },\n ),\n ]);\n }\n }\n }\n }\n break;\n case 'array':\n functions.push([\n 'array',\n generateZodValidationSchemaDefinition(\n schema.items as SchemaObject | undefined,\n context,\n camel(`${name}-item`),\n strict,\n {\n required: true,\n },\n ),\n ]);\n break;\n case 'string': {\n if (schema.enum && type === 'string') {\n break;\n }\n\n if (\n context.output.override.useDates &&\n (schema.format === 'date' || schema.format === 'date-time')\n ) {\n functions.push(['date', undefined]);\n break;\n }\n\n functions.push([type as string, undefined]);\n\n if (schema.format === 'date') {\n functions.push(['date', undefined]);\n break;\n }\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 context,\n camel(name),\n strict,\n {\n required: true,\n },\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 context,\n camel(`${name}-${key}`),\n strict,\n {\n required: schema.required?.includes(key),\n },\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 generateZodValidationSchemaDefinition(\n isBoolean(schema.additionalProperties)\n ? {}\n : (schema.additionalProperties as SchemaObject),\n context,\n name,\n strict,\n {\n required: true,\n },\n ),\n ]);\n\n break;\n }\n\n functions.push([type as string, undefined]);\n\n break;\n }\n }\n\n if (minAndMaxTypes.includes(type)) {\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 }\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 const parseZodValidationSchemaDefinition = (\n input: ZodValidationSchemaDefinition,\n context: ContextSpecs,\n coerceTypes: boolean | ZodCoerceType[] = false,\n preprocessResponse?: GeneratorMutator,\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 (\n acc: string,\n {\n functions,\n consts: argConsts,\n }: { functions: [string, any][]; consts: string[] },\n ) => {\n const value = functions.map(parseProperty).join('');\n const valueWithZod = `${value.startsWith('.') ? 'zod' : ''}${value}`;\n\n if (argConsts.length) {\n consts += argConsts.join('');\n }\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 ZodValidationSchemaDefinition).functions\n .map(parseProperty)\n .join('');\n consts += (schema as ZodValidationSchemaDefinition).consts.join('\\n');\n return ` \"${key}\": ${value.startsWith('.') ? 'zod' : ''}${value}`;\n })\n .join(',\\n')}\n})`;\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 (fn === 'tuple') {\n return `zod.tuple([${(args as ZodValidationSchemaDefinition[])\n .map((x) => 'zod' + x.functions.map(parseProperty).join(','))\n .join(',\\n')}])`;\n }\n if (fn === 'rest') {\n return `.rest(zod${(args as ZodValidationSchemaDefinition).functions.map(parseProperty)})`;\n }\n const shouldCoerceType =\n coerceTypes &&\n (Array.isArray(coerceTypes)\n ? coerceTypes.includes(fn as ZodCoerceType)\n : COERCIBLE_TYPES.includes(fn));\n\n if (\n (fn !== 'date' && shouldCoerceType) ||\n (fn === 'date' && shouldCoerceType && context.output.override.useDates)\n ) {\n return `.coerce.${fn}(${args})`;\n }\n\n return `.${fn}(${args})`;\n };\n\n consts += input.consts.join('\\n');\n\n const schema = input.functions.map(parseProperty).join('');\n const value = preprocessResponse\n ? `.preprocess(${preprocessResponse.name}, ${\n schema.startsWith('.') ? 'zod' : ''\n }${schema})`\n : schema;\n\n const zod = `${value.startsWith('.') ? 'zod' : ''}${value}`;\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 const resolvedSpecKey = refName\n ? getRefInfo(refName, context).specKey\n : undefined;\n\n const resolvedContext: ContextSpecs = {\n ...childContext,\n specKey: resolvedSpecKey ?? childContext.specKey,\n };\n\n return Object.entries(resolvedSchema).reduce((acc, [key, value]) => {\n acc[key] = deferenceScalar(value, resolvedContext);\n return acc;\n }, {} as any);\n};\n\nconst parseBodyAndResponse = ({\n data,\n context,\n name,\n strict,\n generate,\n parseType,\n}: {\n data: ResponseObject | RequestBodyObject | ReferenceObject | undefined;\n context: ContextSpecs;\n name: string;\n strict: boolean;\n generate: boolean;\n parseType: 'body' | 'response';\n}): {\n input: ZodValidationSchemaDefinition;\n isArray: boolean;\n rules?: {\n min?: number;\n max?: number;\n };\n} => {\n if (!data || !generate) {\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 const min =\n resolvedJsonSchema.minimum ??\n resolvedJsonSchema.minLength ??\n resolvedJsonSchema.minItems;\n const max =\n resolvedJsonSchema.maximum ??\n resolvedJsonSchema.maxLength ??\n resolvedJsonSchema.maxItems;\n\n return {\n input: generateZodValidationSchemaDefinition(\n parseType === 'body'\n ? removeReadOnlyProperties(resolvedJsonSchema.items as SchemaObject)\n : (resolvedJsonSchema.items as SchemaObject),\n context,\n name,\n strict,\n {\n required: true,\n },\n ),\n isArray: true,\n rules: {\n ...(typeof min !== 'undefined' ? { min } : {}),\n ...(typeof max !== 'undefined' ? { max } : {}),\n },\n };\n }\n\n return {\n input: generateZodValidationSchemaDefinition(\n parseType === 'body'\n ? removeReadOnlyProperties(resolvedJsonSchema)\n : resolvedJsonSchema,\n context,\n name,\n strict,\n {\n required: true,\n },\n ),\n isArray: false,\n };\n};\n\nconst parseParameters = ({\n data,\n context,\n operationName,\n strict,\n generate,\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 generate: {\n param: boolean;\n query: boolean;\n header: boolean;\n body: boolean;\n response: boolean;\n };\n}): {\n headers: ZodValidationSchemaDefinition;\n queryParams: ZodValidationSchemaDefinition;\n params: ZodValidationSchemaDefinition;\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 mapGenerate = {\n path: generate.param,\n query: generate.query,\n header: generate.header,\n };\n\n const definition = generateZodValidationSchemaDefinition(\n schema,\n context,\n camel(`${operationName}-${parameter.in}-${parameter.name}`),\n mapStrict[parameter.in as 'path' | 'query' | 'header'] ?? false,\n {\n required: parameter.required,\n },\n );\n\n if (parameter.in === 'header' && mapGenerate.header) {\n return {\n ...acc,\n headers: { ...acc.headers, [parameter.name]: definition },\n };\n }\n\n if (parameter.in === 'query' && mapGenerate.query) {\n return {\n ...acc,\n queryParams: { ...acc.queryParams, [parameter.name]: definition },\n };\n }\n\n if (parameter.in === 'path' && mapGenerate.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: ZodValidationSchemaDefinition = {\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: ZodValidationSchemaDefinition = {\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: ZodValidationSchemaDefinition = {\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 = async (\n { operationName, verb, override }: GeneratorVerbOptions,\n { pathRoute, context, output }: GeneratorOptions,\n) => {\n const spec = context.specs[context.specKey].paths[pathRoute] as\n | PathItemObject\n | undefined;\n\n const parameters = spec?.[verb]?.parameters as (\n | ParameterObject\n | ReferenceObject\n )[];\n const parsedParameters = parseParameters({\n data: parameters,\n context,\n operationName,\n strict: override.zod.strict,\n generate: override.zod.generate,\n });\n\n const requestBody = spec?.[verb]?.requestBody;\n const parsedBody = parseBodyAndResponse({\n data: requestBody,\n context,\n name: camel(`${operationName}-body`),\n strict: override.zod.strict.body,\n generate: override.zod.generate.body,\n parseType: 'body',\n });\n\n const responses = (\n context.output.override.zod.generateEachHttpStatus\n ? Object.entries(spec?.[verb]?.responses ?? {})\n : [['', spec?.[verb]?.responses[200]]]\n ) as [string, ResponseObject | ReferenceObject][];\n const parsedResponses = responses.map(([code, response]) =>\n parseBodyAndResponse({\n data: response,\n context,\n name: camel(`${operationName}-${code}-response`),\n strict: override.zod.strict.response,\n generate: override.zod.generate.response,\n parseType: 'response',\n }),\n );\n\n const inputParams = parseZodValidationSchemaDefinition(\n parsedParameters.params,\n context,\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 context,\n override.zod.coerce.query ?? override.coerceTypes,\n );\n const inputHeaders = parseZodValidationSchemaDefinition(\n parsedParameters.headers,\n context,\n override.zod.coerce.header,\n );\n\n const inputBody = parseZodValidationSchemaDefinition(\n parsedBody.input,\n context,\n override.zod.coerce.body,\n );\n\n const preprocessResponse = override.zod.preprocess?.response\n ? await generateMutator({\n output,\n mutator: override.zod.preprocess.response,\n name: `${operationName}PreprocessResponse`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const inputResponses = parsedResponses.map((parsedResponse) =>\n parseZodValidationSchemaDefinition(\n parsedResponse.input,\n context,\n override.zod.coerce.response,\n preprocessResponse,\n ),\n );\n\n if (\n !inputParams.zod &&\n !inputQueryParams.zod &&\n !inputHeaders.zod &&\n !inputBody.zod &&\n !inputResponses.some((inputResponse) => inputResponse.zod)\n ) {\n return {\n implemtation: '',\n mutators: [],\n };\n }\n\n return {\n implementation: [\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 parsedBody.isArray\n ? `export const ${operationName}BodyItem = ${inputBody.zod}\nexport const ${operationName}Body = zod.array(${operationName}BodyItem)${\n parsedBody.rules?.min ? `.min(${parsedBody.rules?.min})` : ''\n }${\n parsedBody.rules?.max ? `.max(${parsedBody.rules?.max})` : ''\n }`\n : `export const ${operationName}Body = ${inputBody.zod}`,\n ]\n : []),\n ...inputResponses\n .map((inputResponse, index) => {\n const operationResponse = camel(\n `${operationName}-${responses[index][0]}-response`,\n );\n return [\n ...(inputResponse.consts ? [inputResponse.consts] : []),\n ...(inputResponse.zod\n ? [\n parsedResponses[index].isArray\n ? `export const ${operationResponse}Item = ${\n inputResponse.zod\n }\nexport const ${operationResponse} = zod.array(${operationResponse}Item)${\n parsedResponses[index].rules?.min\n ? `.min(${parsedResponses[index].rules?.min})`\n : ''\n }${\n parsedResponses[index].rules?.max\n ? `.max(${parsedResponses[index].rules?.max})`\n : ''\n }`\n : `export const ${operationResponse} = ${inputResponse.zod}`,\n ]\n : []),\n ];\n })\n .flat(),\n ].join('\\n\\n'),\n mutators: preprocessResponse ? [preprocessResponse] : [],\n };\n};\n\nexport const generateZod: ClientBuilder = async (verbOptions, options) => {\n const { implementation, mutators } = await generateZodRoute(\n verbOptions,\n options,\n );\n\n return {\n implementation: implementation ? `${implementation}\\n\\n` : '',\n imports: [],\n mutators,\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","value","_c","_d"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n camel,\n ClientBuilder,\n ClientGeneratorsBuilder,\n ContextSpecs,\n escape,\n generateMutator,\n GeneratorDependency,\n GeneratorMutator,\n GeneratorOptions,\n GeneratorVerbOptions,\n getNumberWord,\n getRefInfo,\n isBoolean,\n isObject,\n isString,\n jsStringEscape,\n pascal,\n resolveRef,\n stringify,\n ZodCoerceType,\n} from '@orval/core';\nimport uniq from 'lodash.uniq';\nimport {\n ParameterObject,\n PathItemObject,\n ReferenceObject,\n RequestBodyObject,\n ResponseObject,\n SchemaObject,\n} from 'openapi3-ts/oas30';\nimport { SchemaObject as SchemaObject31 } from 'openapi3-ts/oas31';\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\n/**\n * values that may appear in \"type\". Equals SchemaObjectType\n */\nconst possibleSchemaTypes = [\n 'integer',\n 'number',\n 'string',\n 'boolean',\n 'object',\n 'null',\n 'array',\n];\n\nconst resolveZodType = (schema: SchemaObject) => {\n const schemaTypeValue = schema.type;\n const type = Array.isArray(schemaTypeValue)\n ? schemaTypeValue.find((t) => possibleSchemaTypes.includes(t))\n : schemaTypeValue;\n\n // TODO: if \"prefixItems\" exists and type is \"array\", then generate a \"tuple\"\n if (schema.type === 'array' && 'prefixItems' in schema) {\n return 'tuple';\n }\n\n switch (type) {\n case 'integer':\n return 'number';\n default:\n return type ?? 'any';\n }\n};\n\nconst constsUniqueCounter: Record<string, number> = {};\n\n// https://github.com/colinhacks/zod#coercion-for-primitives\nconst COERCIBLE_TYPES = ['string', 'number', 'boolean', 'bigint', 'date'];\n\nexport type ZodValidationSchemaDefinition = {\n functions: [string, any][];\n consts: string[];\n};\n\nconst minAndMaxTypes = ['number', 'string', 'array'];\n\nconst removeReadOnlyProperties = (schema: SchemaObject): SchemaObject => {\n if (schema.properties) {\n return {\n ...schema,\n properties: Object.entries(schema.properties).reduce<\n Record<string, SchemaObject>\n >((acc, [key, value]) => {\n if ('readOnly' in value && value.readOnly) return acc;\n acc[key] = value as SchemaObject;\n return acc;\n }, {}),\n };\n }\n if (schema.items && 'properties' in schema.items) {\n return {\n ...schema,\n items: removeReadOnlyProperties(schema.items as SchemaObject),\n };\n }\n return schema;\n};\n\nexport const generateZodValidationSchemaDefinition = (\n schema: SchemaObject | undefined,\n context: ContextSpecs,\n name: string,\n strict: boolean,\n rules?: {\n required?: boolean;\n },\n): ZodValidationSchemaDefinition => {\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);\n const required =\n schema.default !== undefined ? false : rules?.required ?? false;\n const nullable =\n schema.nullable ??\n (Array.isArray(schema.type) && schema.type.includes('null'));\n const min = schema.minimum ?? schema.minLength ?? schema.minItems;\n const max = schema.maximum ?? schema.maxLength ?? schema.maxItems;\n const matches = schema.pattern ?? undefined;\n\n let defaultVarName: string | undefined;\n if (schema.default !== undefined) {\n defaultVarName = `${name}Default${constsCounterValue}`;\n let defaultValue: string;\n\n const isDateType =\n schema.type === 'string' &&\n (schema.format === 'date' || schema.format === 'date-time') &&\n context.output.override.useDates;\n\n if (isDateType) {\n defaultValue = `new Date(\"${escape(schema.default)}\")`;\n } else if (isObject(schema.default)) {\n const entries = Object.entries(schema.default)\n .map(([key, value]) => {\n if (isString(value)) {\n return `${key}: \"${escape(value)}\"`;\n }\n\n if (Array.isArray(value)) {\n const arrayItems = value.map((item) =>\n isString(item) ? `\"${escape(item)}\"` : `${item}`,\n );\n return `${key}: [${arrayItems.join(', ')}]`;\n }\n\n return `${key}: ${value}`;\n })\n .join(', ');\n defaultValue = `{ ${entries} }`;\n } else {\n const rawStringified = stringify(schema.default);\n defaultValue =\n rawStringified === undefined\n ? 'null'\n : rawStringified.replace(/'/g, '\"');\n }\n consts.push(`export const ${defaultVarName} = ${defaultValue};`);\n }\n\n switch (type) {\n case 'tuple':\n /**\n *\n * > 10.3.1.1. prefixItems\n * > The value of \"prefixItems\" MUST be a non-empty array of valid JSON Schemas.\n * >\n * > Validation succeeds if each element of the instance validates against the schema at the same position, if any.\n * > This keyword does not constrain the length of the array. If the array is longer than this keyword's value,\n * > this keyword validates only the prefix of matching length.\n * >\n * > This keyword produces an annotation value which is the largest index to which this keyword applied a subschema.\n * > The value MAY be a boolean true if a subschema was applied to every index of the instance, such as is produced by the \"items\" keyword.\n * > This annotation affects the behavior of \"items\" and \"unevaluatedItems\".\n * >\n * > Omitting this keyword has the same assertion behavior as an empty array.\n */\n if ('prefixItems' in schema) {\n const schema31 = schema as SchemaObject31;\n\n if (schema31.prefixItems && schema31.prefixItems.length > 0) {\n functions.push([\n 'tuple',\n schema31.prefixItems.map((item, idx) =>\n generateZodValidationSchemaDefinition(\n deference(item as SchemaObject | ReferenceObject, context),\n context,\n camel(`${name}-${idx}-item`),\n strict,\n {\n required: true,\n },\n ),\n ),\n ]);\n\n if (schema.items) {\n if (\n (max || Number.POSITIVE_INFINITY) > schema31.prefixItems.length\n ) {\n // only add zod.rest() if number of tuple elements can exceed provided prefixItems:\n functions.push([\n 'rest',\n generateZodValidationSchemaDefinition(\n schema.items as SchemaObject | undefined,\n context,\n camel(`${name}-item`),\n strict,\n {\n required: true,\n },\n ),\n ]);\n }\n }\n }\n }\n break;\n case 'array':\n functions.push([\n 'array',\n generateZodValidationSchemaDefinition(\n schema.items as SchemaObject | undefined,\n context,\n camel(`${name}-item`),\n strict,\n {\n required: true,\n },\n ),\n ]);\n break;\n case 'string': {\n if (schema.enum && type === 'string') {\n break;\n }\n\n if (\n context.output.override.useDates &&\n (schema.format === 'date' || schema.format === 'date-time')\n ) {\n functions.push(['date', undefined]);\n break;\n }\n\n if (schema.format === 'binary') {\n functions.push(['instanceof', 'File']);\n break;\n }\n\n functions.push([type as string, undefined]);\n\n if (schema.format === 'date') {\n functions.push(['date', undefined]);\n break;\n }\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 let 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 if (\n (schema.oneOf || schema.anyOf) &&\n schema.discriminator &&\n schema.discriminator.propertyName\n ) {\n // store the discriminator property name in the separator to be used when building the zod schema\n // adding discriminator property name is already handled via the deference function\n separator = `discriminator__${schema.discriminator.propertyName}`;\n }\n\n functions.push([\n separator,\n schemas.map((schema) => {\n return generateZodValidationSchemaDefinition(\n schema as SchemaObject,\n context,\n camel(name),\n strict,\n {\n required: true,\n },\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 context,\n camel(`${name}-${key}`),\n strict,\n {\n required: schema.required?.includes(key),\n },\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 generateZodValidationSchemaDefinition(\n isBoolean(schema.additionalProperties)\n ? {}\n : (schema.additionalProperties as SchemaObject),\n context,\n name,\n strict,\n {\n required: true,\n },\n ),\n ]);\n\n break;\n }\n\n functions.push([type as string, undefined]);\n\n break;\n }\n }\n\n if (minAndMaxTypes.includes(type)) {\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 }\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 && schema.default) {\n functions.push(['default', defaultVarName]);\n } else 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 const parseZodValidationSchemaDefinition = (\n input: ZodValidationSchemaDefinition,\n context: ContextSpecs,\n coerceTypes: boolean | ZodCoerceType[] = false,\n preprocess?: GeneratorMutator,\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 (\n acc: string,\n {\n functions,\n consts: argConsts,\n }: { functions: [string, any][]; consts: string[] },\n ) => {\n const value = functions.map(parseProperty).join('');\n const valueWithZod = `${value.startsWith('.') ? 'zod' : ''}${value}`;\n\n if (argConsts.length) {\n consts += argConsts.join('\\n');\n }\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 if (fn.startsWith('discriminator__')) {\n const [, propertyName] = fn.split('discriminator__');\n const typeSchemas = args.map(\n ({ functions }: { functions: [string, any][]; consts: string[] }) => {\n const schemaFunctions = functions.map(parseProperty).join('');\n return schemaFunctions;\n },\n );\n return `zod.discriminatedUnion('${propertyName}', [${typeSchemas.join(\n ',',\n )}])`;\n } else if (fn === 'oneOf' || fn === 'anyOf') {\n return args.reduce(\n (\n acc: string,\n {\n functions,\n consts: argConsts,\n }: { functions: [string, any][]; consts: string[] },\n ) => {\n const value = functions.map(parseProperty).join('');\n const valueWithZod = `${value.startsWith('.') ? 'zod' : ''}${value}`;\n\n if (argConsts.length) {\n consts += argConsts.join('');\n }\n\n if (!acc) {\n acc += valueWithZod;\n return acc;\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 ZodValidationSchemaDefinition).functions\n .map(parseProperty)\n .join('');\n consts += (schema as ZodValidationSchemaDefinition).consts.join('\\n');\n return ` \"${key}\": ${value.startsWith('.') ? 'zod' : ''}${value}`;\n })\n .join(',\\n')}\n})`;\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 (fn === 'tuple') {\n return `zod.tuple([${(args as ZodValidationSchemaDefinition[])\n .map((x) => 'zod' + x.functions.map(parseProperty).join(','))\n .join(',\\n')}])`;\n }\n if (fn === 'rest') {\n return `.rest(zod${(args as ZodValidationSchemaDefinition).functions.map(parseProperty)})`;\n }\n const shouldCoerceType =\n coerceTypes &&\n (Array.isArray(coerceTypes)\n ? coerceTypes.includes(fn as ZodCoerceType)\n : COERCIBLE_TYPES.includes(fn));\n\n if (\n (fn !== 'date' && shouldCoerceType) ||\n (fn === 'date' && shouldCoerceType && context.output.override.useDates)\n ) {\n return `.coerce.${fn}(${args})`;\n }\n\n return `.${fn}(${args})`;\n };\n\n consts += input.consts.join('\\n');\n\n const schema = input.functions.map(parseProperty).join('');\n const value = preprocess\n ? `.preprocess(${preprocess.name}, ${\n schema.startsWith('.') ? 'zod' : ''\n }${schema})`\n : schema;\n\n const zod = `${value.startsWith('.') ? 'zod' : ''}${value}`;\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 const resolvedSpecKey = refName\n ? getRefInfo(refName, context).specKey\n : undefined;\n\n const resolvedContext: ContextSpecs = {\n ...childContext,\n specKey: resolvedSpecKey ?? childContext.specKey,\n };\n\n return Object.entries(resolvedSchema).reduce((acc, [key, value]) => {\n acc[key] = deferenceScalar(value, resolvedContext);\n return acc;\n }, {} as any);\n};\n\nconst parseBodyAndResponse = ({\n data,\n context,\n name,\n strict,\n generate,\n parseType,\n}: {\n data: ResponseObject | RequestBodyObject | ReferenceObject | undefined;\n context: ContextSpecs;\n name: string;\n strict: boolean;\n generate: boolean;\n parseType: 'body' | 'response';\n}): {\n input: ZodValidationSchemaDefinition;\n isArray: boolean;\n rules?: {\n min?: number;\n max?: number;\n };\n} => {\n if (!data || !generate) {\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 const schema =\n resolvedRef.content?.['application/json']?.schema ||\n resolvedRef.content?.['multipart/form-data']?.schema;\n\n if (!schema) {\n return {\n input: { functions: [], consts: [] },\n isArray: false,\n };\n }\n\n const resolvedJsonSchema = deference(schema, context);\n\n // keep the same behaviour for array\n if (resolvedJsonSchema.items) {\n const min =\n resolvedJsonSchema.minimum ??\n resolvedJsonSchema.minLength ??\n resolvedJsonSchema.minItems;\n const max =\n resolvedJsonSchema.maximum ??\n resolvedJsonSchema.maxLength ??\n resolvedJsonSchema.maxItems;\n\n return {\n input: generateZodValidationSchemaDefinition(\n parseType === 'body'\n ? removeReadOnlyProperties(resolvedJsonSchema.items as SchemaObject)\n : (resolvedJsonSchema.items as SchemaObject),\n context,\n name,\n strict,\n {\n required: true,\n },\n ),\n isArray: true,\n rules: {\n ...(typeof min !== 'undefined' ? { min } : {}),\n ...(typeof max !== 'undefined' ? { max } : {}),\n },\n };\n }\n\n return {\n input: generateZodValidationSchemaDefinition(\n parseType === 'body'\n ? removeReadOnlyProperties(resolvedJsonSchema)\n : resolvedJsonSchema,\n context,\n name,\n strict,\n {\n required: true,\n },\n ),\n isArray: false,\n };\n};\n\nconst parseParameters = ({\n data,\n context,\n operationName,\n strict,\n generate,\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 generate: {\n param: boolean;\n query: boolean;\n header: boolean;\n body: boolean;\n response: boolean;\n };\n}): {\n headers: ZodValidationSchemaDefinition;\n queryParams: ZodValidationSchemaDefinition;\n params: ZodValidationSchemaDefinition;\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 mapGenerate = {\n path: generate.param,\n query: generate.query,\n header: generate.header,\n };\n\n const definition = generateZodValidationSchemaDefinition(\n schema,\n context,\n camel(`${operationName}-${parameter.in}-${parameter.name}`),\n mapStrict[parameter.in as 'path' | 'query' | 'header'] ?? false,\n {\n required: parameter.required,\n },\n );\n\n if (parameter.in === 'header' && mapGenerate.header) {\n return {\n ...acc,\n headers: { ...acc.headers, [parameter.name]: definition },\n };\n }\n\n if (parameter.in === 'query' && mapGenerate.query) {\n return {\n ...acc,\n queryParams: { ...acc.queryParams, [parameter.name]: definition },\n };\n }\n\n if (parameter.in === 'path' && mapGenerate.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: ZodValidationSchemaDefinition = {\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: ZodValidationSchemaDefinition = {\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: ZodValidationSchemaDefinition = {\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 = async (\n { operationName, verb, override }: GeneratorVerbOptions,\n { pathRoute, context, output }: GeneratorOptions,\n) => {\n const spec = context.specs[context.specKey].paths[pathRoute] as\n | PathItemObject\n | undefined;\n\n const parameters = spec?.[verb]?.parameters as (\n | ParameterObject\n | ReferenceObject\n )[];\n const parsedParameters = parseParameters({\n data: parameters,\n context,\n operationName,\n strict: override.zod.strict,\n generate: override.zod.generate,\n });\n\n const requestBody = spec?.[verb]?.requestBody;\n const parsedBody = parseBodyAndResponse({\n data: requestBody,\n context,\n name: camel(`${operationName}-body`),\n strict: override.zod.strict.body,\n generate: override.zod.generate.body,\n parseType: 'body',\n });\n\n const responses = (\n context.output.override.zod.generateEachHttpStatus\n ? Object.entries(spec?.[verb]?.responses ?? {})\n : [['', spec?.[verb]?.responses[200]]]\n ) as [string, ResponseObject | ReferenceObject][];\n const parsedResponses = responses.map(([code, response]) =>\n parseBodyAndResponse({\n data: response,\n context,\n name: camel(`${operationName}-${code}-response`),\n strict: override.zod.strict.response,\n generate: override.zod.generate.response,\n parseType: 'response',\n }),\n );\n\n const preprocessParams = override.zod.preprocess?.param\n ? await generateMutator({\n output,\n mutator: override.zod.preprocess.response,\n name: `${operationName}PreprocessParams`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const inputParams = parseZodValidationSchemaDefinition(\n parsedParameters.params,\n context,\n override.zod.coerce.param,\n preprocessParams,\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 preprocessQueryParams = override.zod.preprocess?.query\n ? await generateMutator({\n output,\n mutator: override.zod.preprocess.response,\n name: `${operationName}PreprocessQueryParams`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const inputQueryParams = parseZodValidationSchemaDefinition(\n parsedParameters.queryParams,\n context,\n override.zod.coerce.query ?? override.coerceTypes,\n preprocessQueryParams,\n );\n\n const preprocessHeader = override.zod.preprocess?.header\n ? await generateMutator({\n output,\n mutator: override.zod.preprocess.response,\n name: `${operationName}PreprocessHeader`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const inputHeaders = parseZodValidationSchemaDefinition(\n parsedParameters.headers,\n context,\n override.zod.coerce.header,\n preprocessHeader,\n );\n\n const preprocessBody = override.zod.preprocess?.body\n ? await generateMutator({\n output,\n mutator: override.zod.preprocess.response,\n name: `${operationName}PreprocessBody`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const inputBody = parseZodValidationSchemaDefinition(\n parsedBody.input,\n context,\n override.zod.coerce.body,\n preprocessBody,\n );\n\n const preprocessResponse = override.zod.preprocess?.response\n ? await generateMutator({\n output,\n mutator: override.zod.preprocess.response,\n name: `${operationName}PreprocessResponse`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const inputResponses = parsedResponses.map((parsedResponse) =>\n parseZodValidationSchemaDefinition(\n parsedResponse.input,\n context,\n override.zod.coerce.response,\n preprocessResponse,\n ),\n );\n\n if (\n !inputParams.zod &&\n !inputQueryParams.zod &&\n !inputHeaders.zod &&\n !inputBody.zod &&\n !inputResponses.some((inputResponse) => inputResponse.zod)\n ) {\n return {\n implemtation: '',\n mutators: [],\n };\n }\n\n return {\n implementation: [\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 parsedBody.isArray\n ? `export const ${operationName}BodyItem = ${inputBody.zod}\nexport const ${operationName}Body = zod.array(${operationName}BodyItem)${\n parsedBody.rules?.min ? `.min(${parsedBody.rules?.min})` : ''\n }${\n parsedBody.rules?.max ? `.max(${parsedBody.rules?.max})` : ''\n }`\n : `export const ${operationName}Body = ${inputBody.zod}`,\n ]\n : []),\n ...inputResponses\n .map((inputResponse, index) => {\n const operationResponse = camel(\n `${operationName}-${responses[index][0]}-response`,\n );\n return [\n ...(inputResponse.consts ? [inputResponse.consts] : []),\n ...(inputResponse.zod\n ? [\n parsedResponses[index].isArray\n ? `export const ${operationResponse}Item = ${\n inputResponse.zod\n }\nexport const ${operationResponse} = zod.array(${operationResponse}Item)${\n parsedResponses[index].rules?.min\n ? `.min(${parsedResponses[index].rules?.min})`\n : ''\n }${\n parsedResponses[index].rules?.max\n ? `.max(${parsedResponses[index].rules?.max})`\n : ''\n }`\n : `export const ${operationResponse} = ${inputResponse.zod}`,\n ]\n : []),\n ];\n })\n .flat(),\n ].join('\\n\\n'),\n mutators: preprocessResponse ? [preprocessResponse] : [],\n };\n};\n\nexport const generateZod: ClientBuilder = async (verbOptions, options) => {\n const { implementation, mutators } = await generateZodRoute(\n verbOptions,\n options,\n );\n\n return {\n implementation: implementation ? `${implementation}\\n\\n` : '',\n imports: [],\n mutators,\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","value","_c","_d"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orval/zod",
3
- "version": "7.4.1",
3
+ "version": "7.6.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 run test.ts --global"
15
15
  },
16
16
  "dependencies": {
17
- "@orval/core": "7.4.1",
17
+ "@orval/core": "7.6.0",
18
18
  "lodash.uniq": "^4.5.0"
19
19
  },
20
20
  "devDependencies": {