@orval/zod 6.19.1 → 6.21.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,7 +1,15 @@
1
1
  import { GeneratorDependency, ClientBuilder, ClientGeneratorsBuilder } from '@orval/core';
2
2
 
3
3
  declare const getZodDependencies: () => GeneratorDependency[];
4
+ type ZodValidationSchemaDefinitionInput = Record<string, {
5
+ functions: [string, any][];
6
+ consts: string[];
7
+ }>;
8
+ declare const parseZodValidationSchemaDefinition: (input: ZodValidationSchemaDefinitionInput, coerceTypes?: boolean) => {
9
+ zod: string;
10
+ consts: string;
11
+ };
4
12
  declare const generateZod: ClientBuilder;
5
13
  declare const builder: () => () => ClientGeneratorsBuilder;
6
14
 
7
- export { builder, builder as default, generateZod, getZodDependencies };
15
+ export { type ZodValidationSchemaDefinitionInput, builder, builder as default, generateZod, getZodDependencies, parseZodValidationSchemaDefinition };
package/dist/index.js CHANGED
@@ -1,8 +1,442 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _core = require('@orval/core');var _lodashuniq = require('lodash.uniq'); var _lodashuniq2 = _interopRequireDefault(_lodashuniq);var _=[{exports:[{name:"z",alias:"zod",values:!0}],dependency:"zod"}],N= exports.getZodDependencies =()=>_,T=e=>{switch(e){case"integer":return"number";case"null":return"mixed";default:return e!=null?e:"any"}},D=(e,d,t)=>{var Z,k,x,O,q,G,W,$,g,h,z,y;if(!e)return{functions:[],consts:[]};let b=[],n=[],r=T(e.type),i=e.default!==void 0?!1:d!=null?d:!1,s=(Z=e.nullable)!=null?Z:!1,u=(q=(O=(x=(k=e.minimum)!=null?k:e.exclusiveMinimum)!=null?x:e.minLength)!=null?O:e.minItems)!=null?q:void 0,f=(g=($=(W=(G=e.maximum)!=null?G:e.exclusiveMaximum)!=null?W:e.maxLength)!=null?$:e.maxItems)!=null?g:void 0,a=(h=e.pattern)!=null?h:void 0;switch(r){case"array":let m=e.items;n.push(["array",D(m,!0,_core.camel.call(void 0, t))]);break;case"string":{if(e.enum&&r==="string")break;if(n.push([r,void 0]),e.format==="date"){n.push(["regex","new RegExp(/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/)"]);break}if(e.format==="date-time"){n.push(["datetime",void 0]);break}if(e.format==="email"){n.push(["email",void 0]);break}if(e.format==="uri"||e.format==="hostname"){n.push(["url",void 0]);break}if(e.format==="uuid"){n.push(["uuid",void 0]);break}break}case"object":default:{if(e.allOf||e.oneOf||e.anyOf){let p=e.allOf?"allOf":e.oneOf?"oneOf":"anyOf",l=(y=(z=e.allOf)!=null?z:e.oneOf)!=null?y:e.anyOf;n.push([p,l.map(P=>D(P,!0,_core.camel.call(void 0, t)))]);break}if(e.properties){n.push(["object",Object.keys(e.properties).map(p=>{var l,P;return{[p]:D((l=e.properties)==null?void 0:l[p],(P=e.required)==null?void 0:P.includes(p),_core.camel.call(void 0, `${t}-${p}`))}}).reduce((p,l)=>({...p,...l}),{})]);break}if(e.additionalProperties){n.push(["additionalProperties",_core.isBoolean.call(void 0, e.additionalProperties)?e.additionalProperties:D(e.additionalProperties,!0,t)]);break}n.push([r,void 0]);break}}if(u!==void 0&&(u===1?n.push(["min",`${u}`]):(b.push(`export const ${t}Min = ${u};`),n.push(["min",`${t}Min`]))),f!==void 0&&(b.push(`export const ${t}Max = ${f};`),n.push(["max",`${t}Max`])),a){let m=a.startsWith("/"),p=a.endsWith("/"),l=`new RegExp('${_core.jsStringEscape.call(void 0, a.slice(m?1:0,p?-1:void 0))}')`;b.push(`export const ${t}RegExp = ${l};`),n.push(["regex",`${t}RegExp`])}return e.enum&&r!=="number"&&n.push(["enum",[`[${e.enum.map(m=>_core.isString.call(void 0, m)?`'${_core.escape.call(void 0, m)}'`:`${m}`).join(", ")}]`]]),!i&&s?n.push(["nullish",void 0]):s?n.push(["nullable",void 0]):i||n.push(["optional",void 0]),{functions:n,consts:_lodashuniq2.default.call(void 0, b)}},B=e=>{if(!Object.keys(e).length)return{zod:"",consts:""};let d="",t=n=>{let[r,i=""]=n;if(r==="allOf")return i.reduce((s,{functions:u})=>{let f=u.map(t).join(""),a=`${f.startsWith(".")?"zod":""}${f}`;return s?(s+=`.and(${a})`,s):(s+=a,s)},"");if(r==="oneOf"||r==="anyOf")return i.reduce((s,{functions:u})=>{let f=u.map(t).join(""),a=`${f.startsWith(".")?"zod":""}${f}`;return s?(s+=`.or(${a})`,s):(s+=a,s)},"");if(r==="additionalProperties"){let s=i.functions.map(t).join(""),u=`${s.startsWith(".")?"zod":""}${s}`;return d+=i.consts,`zod.record(zod.string(), ${u})`}if(r==="object"){let s=B(i);return d+=s.consts,` ${s.zod}`}if(r==="array"){let s=i.functions.map(t).join("");return d+=i.consts,`.array(${s.startsWith(".")?"zod":""}${s})`}return`.${r}(${i})`};return d+=Object.entries(e).reduce((n,[r,i])=>n+i.consts.join(`
2
- `),""),{zod:`zod.object({
3
- ${Object.entries(e).map(([n,r])=>{let i=r.functions.map(t).join("");return`"${n}": ${i.startsWith(".")?"zod":""}${i}`}).join(",")}
4
- })`,consts:d}},K=(e,d)=>_core.isObject.call(void 0, e)?I(e,d):Array.isArray(e)?e.map(t=>K(t,d)):e,I=(e,d)=>{var r;let t="$ref"in e?e.$ref:void 0;if(t&&((r=d.parents)==null?void 0:r.includes(t)))return{};let b={...d,...t?{parents:[...d.parents||[],t]}:void 0},{schema:n}=_core.resolveRef.call(void 0, e,b);return Object.entries(n).reduce((i,[s,u])=>(i[s]=K(u,b),i),{})},J=({operationName:e,body:d,verb:t},{pathRoute:b,context:n})=>{var m,p,l,P,M,w,A,H,L,Q;let r=n.specs[n.specKey].paths[b],i=(m=r==null?void 0:r[t])==null?void 0:m.parameters,s=(p=r==null?void 0:r[t])==null?void 0:p.requestBody,u=(P=(l=r==null?void 0:r[t])==null?void 0:l.responses)==null?void 0:P["200"],f=u?_core.resolveRef.call(void 0, u,n).schema:void 0,a=(w=(M=f==null?void 0:f.content)==null?void 0:M["application/json"])!=null&&w.schema?_core.resolveRef.call(void 0, f.content["application/json"].schema,n).schema:void 0,Z=(A=a==null?void 0:a.properties)!=null?A:{},k=Object.entries(Z).map(([o,j])=>{var S;let c=I(j,n);return{[o]:D(c,!!((S=a==null?void 0:a.required)!=null&&S.find(R=>R===o)),_core.camel.call(void 0, `${e}-response-${o}`))}}).reduce((o,j)=>({...o,...j}),{}),x=s?_core.resolveRef.call(void 0, s,n).schema:void 0,O=(L=(H=x==null?void 0:x.content)==null?void 0:H["application/json"])!=null&&L.schema?_core.resolveRef.call(void 0, x.content["application/json"].schema,n).schema:void 0,q=(Q=O==null?void 0:O.properties)!=null?Q:{},G=Object.entries(q).map(([o,j])=>{var S;let c=I(j,n);return{[o]:D(c,!!((S=O==null?void 0:O.required)!=null&&S.find(R=>R===o)),_core.camel.call(void 0, `${e}-body-${o}`))}}).reduce((o,j)=>({...o,...j}),{}),W=(i!=null?i:[]).reduce((o,j)=>{let{schema:c}=_core.resolveRef.call(void 0, j,n);if(!c.schema)return o;let S=I(c.schema,n),R=D(S,c.required,_core.camel.call(void 0, `${e}-${c.in}-${c.name}`));return c.in==="header"?{...o,headers:{...o.headers,[c.name]:R}}:c.in==="query"?{...o,queryParams:{...o.queryParams,[c.name]:R}}:c.in==="path"?{...o,params:{...o.params,[c.name]:R}}:o},{headers:{},queryParams:{},params:{}}),$=B(W.params),g=B(W.queryParams),h=B(W.headers),z=B(G),y=B(k);return!$.zod&&!g.zod&&!h.zod&&!z.zod&&!y.zod?"":[...$.consts?[$.consts]:[],...$.zod?[`export const ${e}Params = ${$.zod}`]:[],...g.consts?[g.consts]:[],...g.zod?[`export const ${e}QueryParams = ${g.zod}`]:[],...h.consts?[h.consts]:[],...h.zod?[`export const ${e}Header = ${h.zod}`]:[],...z.consts?[z.consts]:[],...z.zod?[`export const ${e}Body = ${z.zod}`]:[],...y.consts?[y.consts]:[],...y.zod?[`export const ${e}Response = ${y.zod}`]:[]].join(`
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
5
29
 
6
- `)},ee= exports.generateZod =(e,d)=>{let t=J(e,d);return{implementation:t?`${t}
30
+ // src/index.ts
31
+ var src_exports = {};
32
+ __export(src_exports, {
33
+ builder: () => builder,
34
+ default: () => src_default,
35
+ generateZod: () => generateZod,
36
+ getZodDependencies: () => getZodDependencies,
37
+ parseZodValidationSchemaDefinition: () => parseZodValidationSchemaDefinition
38
+ });
39
+ module.exports = __toCommonJS(src_exports);
40
+ var import_core = require("@orval/core");
41
+ var import_lodash = __toESM(require("lodash.uniq"));
42
+ var ZOD_DEPENDENCIES = [
43
+ {
44
+ exports: [
45
+ {
46
+ name: "z",
47
+ alias: "zod",
48
+ values: true
49
+ }
50
+ ],
51
+ dependency: "zod"
52
+ }
53
+ ];
54
+ var getZodDependencies = () => ZOD_DEPENDENCIES;
55
+ var resolveZodType = (schemaTypeValue) => {
56
+ switch (schemaTypeValue) {
57
+ case "integer":
58
+ return "number";
59
+ case "null":
60
+ return "mixed";
61
+ default:
62
+ return schemaTypeValue != null ? schemaTypeValue : "any";
63
+ }
64
+ };
65
+ var counter = 0;
66
+ var COERCEABLE_TYPES = ["string", "number", "boolean", "bigint", "date"];
67
+ var generateZodValidationSchemaDefinition = (schema, _required, name) => {
68
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
69
+ if (!schema)
70
+ return { functions: [], consts: [] };
71
+ const consts = [];
72
+ const functions = [];
73
+ const type = resolveZodType(schema.type);
74
+ const required = schema.default !== void 0 ? false : _required != null ? _required : false;
75
+ const nullable = (_a = schema.nullable) != null ? _a : false;
76
+ const min = (_e = (_d = (_c = (_b = schema.minimum) != null ? _b : schema.exclusiveMinimum) != null ? _c : schema.minLength) != null ? _d : schema.minItems) != null ? _e : void 0;
77
+ const max = (_i = (_h = (_g = (_f = schema.maximum) != null ? _f : schema.exclusiveMaximum) != null ? _g : schema.maxLength) != null ? _h : schema.maxItems) != null ? _i : void 0;
78
+ const matches = (_j = schema.pattern) != null ? _j : void 0;
79
+ switch (type) {
80
+ case "array":
81
+ const items = schema.items;
82
+ functions.push([
83
+ "array",
84
+ generateZodValidationSchemaDefinition(items, true, (0, import_core.camel)(name))
85
+ ]);
86
+ break;
87
+ case "string": {
88
+ if (schema.enum && type === "string") {
89
+ break;
90
+ }
91
+ if (schema.format === "date") {
92
+ functions.push(["date", void 0]);
93
+ break;
94
+ }
95
+ functions.push([type, void 0]);
96
+ if (schema.format === "date-time") {
97
+ functions.push(["datetime", void 0]);
98
+ break;
99
+ }
100
+ if (schema.format === "email") {
101
+ functions.push(["email", void 0]);
102
+ break;
103
+ }
104
+ if (schema.format === "uri" || schema.format === "hostname") {
105
+ functions.push(["url", void 0]);
106
+ break;
107
+ }
108
+ if (schema.format === "uuid") {
109
+ functions.push(["uuid", void 0]);
110
+ break;
111
+ }
112
+ break;
113
+ }
114
+ case "object":
115
+ default: {
116
+ if (schema.allOf || schema.oneOf || schema.anyOf) {
117
+ const separator = schema.allOf ? "allOf" : schema.oneOf ? "oneOf" : "anyOf";
118
+ const schemas = (_l = (_k = schema.allOf) != null ? _k : schema.oneOf) != null ? _l : schema.anyOf;
119
+ functions.push([
120
+ separator,
121
+ schemas.map(
122
+ (schema2) => generateZodValidationSchemaDefinition(
123
+ schema2,
124
+ true,
125
+ (0, import_core.camel)(name)
126
+ )
127
+ )
128
+ ]);
129
+ break;
130
+ }
131
+ if (schema.properties) {
132
+ functions.push([
133
+ "object",
134
+ Object.keys(schema.properties).map((key) => {
135
+ var _a2, _b2;
136
+ return {
137
+ [key]: generateZodValidationSchemaDefinition(
138
+ (_a2 = schema.properties) == null ? void 0 : _a2[key],
139
+ (_b2 = schema.required) == null ? void 0 : _b2.includes(key),
140
+ (0, import_core.camel)(`${name}-${key}`)
141
+ )
142
+ };
143
+ }).reduce((acc, curr) => ({ ...acc, ...curr }), {})
144
+ ]);
145
+ break;
146
+ }
147
+ if (schema.additionalProperties) {
148
+ functions.push([
149
+ "additionalProperties",
150
+ (0, import_core.isBoolean)(schema.additionalProperties) ? schema.additionalProperties : generateZodValidationSchemaDefinition(
151
+ schema.additionalProperties,
152
+ true,
153
+ name
154
+ )
155
+ ]);
156
+ break;
157
+ }
158
+ functions.push([type, void 0]);
159
+ break;
160
+ }
161
+ }
162
+ if (min !== void 0) {
163
+ if (min === 1) {
164
+ functions.push(["min", `${min}`]);
165
+ } else {
166
+ counter++;
167
+ consts.push(`export const ${name}Min${counter} = ${min};
168
+ `);
169
+ functions.push(["min", `${name}Min${counter}`]);
170
+ }
171
+ }
172
+ if (max !== void 0) {
173
+ counter++;
174
+ consts.push(`export const ${name}Max${counter} = ${max};
175
+ `);
176
+ functions.push(["max", `${name}Max${counter}`]);
177
+ }
178
+ if (matches) {
179
+ const isStartWithSlash = matches.startsWith("/");
180
+ const isEndWithSlash = matches.endsWith("/");
181
+ const regexp = `new RegExp('${(0, import_core.jsStringEscape)(
182
+ matches.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : void 0)
183
+ )}')`;
184
+ consts.push(`export const ${name}RegExp = ${regexp};
185
+ `);
186
+ functions.push(["regex", `${name}RegExp`]);
187
+ }
188
+ if (schema.enum && type !== "number") {
189
+ functions.push([
190
+ "enum",
191
+ [
192
+ `[${schema.enum.map((value) => (0, import_core.isString)(value) ? `'${(0, import_core.escape)(value)}'` : `${value}`).join(", ")}]`
193
+ ]
194
+ ]);
195
+ }
196
+ if (!required && nullable) {
197
+ functions.push(["nullish", void 0]);
198
+ } else if (nullable) {
199
+ functions.push(["nullable", void 0]);
200
+ } else if (!required) {
201
+ functions.push(["optional", void 0]);
202
+ }
203
+ return { functions, consts: (0, import_lodash.default)(consts) };
204
+ };
205
+ var parseZodValidationSchemaDefinition = (input, coerceTypes = false) => {
206
+ if (!Object.keys(input).length) {
207
+ return { zod: "", consts: "" };
208
+ }
209
+ let consts = "";
210
+ const parseProperty = (property) => {
211
+ const [fn, args = ""] = property;
212
+ if (fn === "allOf") {
213
+ return args.reduce(
214
+ (acc, { functions }) => {
215
+ const value = functions.map(parseProperty).join("");
216
+ const valueWithZod = `${value.startsWith(".") ? "zod" : ""}${value}`;
217
+ if (!acc) {
218
+ acc += valueWithZod;
219
+ return acc;
220
+ }
221
+ acc += `.and(${valueWithZod})`;
222
+ return acc;
223
+ },
224
+ ""
225
+ );
226
+ }
227
+ if (fn === "oneOf" || fn === "anyOf") {
228
+ return args.reduce(
229
+ (acc, { functions }) => {
230
+ const value = functions.map(parseProperty).join("");
231
+ const valueWithZod = `${value.startsWith(".") ? "zod" : ""}${value}`;
232
+ if (!acc) {
233
+ acc += valueWithZod;
234
+ return acc;
235
+ }
236
+ acc += `.or(${valueWithZod})`;
237
+ return acc;
238
+ },
239
+ ""
240
+ );
241
+ }
242
+ if (fn === "additionalProperties") {
243
+ const value = args.functions.map(parseProperty).join("");
244
+ const valueWithZod = `${value.startsWith(".") ? "zod" : ""}${value}`;
245
+ consts += args.consts;
246
+ return `zod.record(zod.string(), ${valueWithZod})`;
247
+ }
248
+ if (fn === "object") {
249
+ const parsed = parseZodValidationSchemaDefinition(args);
250
+ consts += parsed.consts;
251
+ return ` ${parsed.zod}`;
252
+ }
253
+ if (fn === "array") {
254
+ const value = args.functions.map(parseProperty).join("");
255
+ if (typeof args.consts === "string") {
256
+ consts += args.consts;
257
+ } else if (Array.isArray(args.consts)) {
258
+ consts += args.consts.join("\n");
259
+ }
260
+ return `.array(${value.startsWith(".") ? "zod" : ""}${value})`;
261
+ }
262
+ if (coerceTypes && COERCEABLE_TYPES.includes(fn)) {
263
+ return `.coerce.${fn}(${args})`;
264
+ }
265
+ return `.${fn}(${args})`;
266
+ };
267
+ consts += Object.entries(input).reduce((acc, [key, schema]) => {
268
+ return acc + schema.consts.join("\n");
269
+ }, "");
270
+ const zod = `zod.object({
271
+ ${Object.entries(input).map(([key, schema]) => {
272
+ const value = schema.functions.map(parseProperty).join("");
273
+ return ` "${key}": ${value.startsWith(".") ? "zod" : ""}${value}`;
274
+ }).join(",\n")}
275
+ })`;
276
+ return { zod, consts };
277
+ };
278
+ var deferenceScalar = (value, context) => {
279
+ if ((0, import_core.isObject)(value)) {
280
+ return deference(value, context);
281
+ } else if (Array.isArray(value)) {
282
+ return value.map((item) => deferenceScalar(item, context));
283
+ } else {
284
+ return value;
285
+ }
286
+ };
287
+ var deference = (schema, context) => {
288
+ var _a;
289
+ const refName = "$ref" in schema ? schema.$ref : void 0;
290
+ if (refName && ((_a = context.parents) == null ? void 0 : _a.includes(refName))) {
291
+ return {};
292
+ }
293
+ const childContext = {
294
+ ...context,
295
+ ...refName ? { parents: [...context.parents || [], refName] } : void 0
296
+ };
297
+ const { schema: resolvedSchema } = (0, import_core.resolveRef)(
298
+ schema,
299
+ childContext
300
+ );
301
+ return Object.entries(resolvedSchema).reduce((acc, [key, value]) => {
302
+ acc[key] = deferenceScalar(value, childContext);
303
+ return acc;
304
+ }, {});
305
+ };
306
+ var generateZodRoute = ({ operationName, body, verb }, { pathRoute, context, override }) => {
307
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
308
+ const spec = context.specs[context.specKey].paths[pathRoute];
309
+ const parameters = (_a = spec == null ? void 0 : spec[verb]) == null ? void 0 : _a.parameters;
310
+ const requestBody = (_b = spec == null ? void 0 : spec[verb]) == null ? void 0 : _b.requestBody;
311
+ const response = (_d = (_c = spec == null ? void 0 : spec[verb]) == null ? void 0 : _c.responses) == null ? void 0 : _d["200"];
312
+ const resolvedResponse = response ? (0, import_core.resolveRef)(response, context).schema : void 0;
313
+ const resolvedResponseJsonSchema = ((_f = (_e = resolvedResponse == null ? void 0 : resolvedResponse.content) == null ? void 0 : _e["application/json"]) == null ? void 0 : _f.schema) ? (0, import_core.resolveRef)(
314
+ resolvedResponse.content["application/json"].schema,
315
+ context
316
+ ).schema : void 0;
317
+ const zodDefinitionsResponseProperties = (_g = resolvedResponseJsonSchema == null ? void 0 : resolvedResponseJsonSchema.properties) != null ? _g : {};
318
+ const zodDefinitionsResponse = Object.entries(
319
+ zodDefinitionsResponseProperties
320
+ ).map(([key, response2]) => {
321
+ var _a2;
322
+ const schema = deference(response2, context);
323
+ return {
324
+ [key]: generateZodValidationSchemaDefinition(
325
+ schema,
326
+ !!((_a2 = resolvedResponseJsonSchema == null ? void 0 : resolvedResponseJsonSchema.required) == null ? void 0 : _a2.find(
327
+ (requiredKey) => requiredKey === key
328
+ )),
329
+ (0, import_core.camel)(`${operationName}-response-${key}`)
330
+ )
331
+ };
332
+ }).reduce((acc, curr) => ({ ...acc, ...curr }), {});
333
+ const resolvedRequestBody = requestBody ? (0, import_core.resolveRef)(requestBody, context).schema : void 0;
334
+ const resolvedRequestBodyJsonSchema = ((_i = (_h = resolvedRequestBody == null ? void 0 : resolvedRequestBody.content) == null ? void 0 : _h["application/json"]) == null ? void 0 : _i.schema) ? (0, import_core.resolveRef)(
335
+ resolvedRequestBody.content["application/json"].schema,
336
+ context
337
+ ).schema : void 0;
338
+ const zodDefinitionsBodyProperties = (_j = resolvedRequestBodyJsonSchema == null ? void 0 : resolvedRequestBodyJsonSchema.properties) != null ? _j : {};
339
+ const zodDefinitionsBody = Object.entries(zodDefinitionsBodyProperties).map(([key, body2]) => {
340
+ var _a2;
341
+ const schema = deference(body2, context);
342
+ return {
343
+ [key]: generateZodValidationSchemaDefinition(
344
+ schema,
345
+ !!((_a2 = resolvedRequestBodyJsonSchema == null ? void 0 : resolvedRequestBodyJsonSchema.required) == null ? void 0 : _a2.find(
346
+ (requiredKey) => requiredKey === key
347
+ )),
348
+ (0, import_core.camel)(`${operationName}-body-${key}`)
349
+ )
350
+ };
351
+ }).reduce((acc, curr) => ({ ...acc, ...curr }), {});
352
+ const zodDefinitionsParameters = (parameters != null ? parameters : []).reduce(
353
+ (acc, val) => {
354
+ const { schema: parameter } = (0, import_core.resolveRef)(val, context);
355
+ if (!parameter.schema) {
356
+ return acc;
357
+ }
358
+ const schema = deference(parameter.schema, context);
359
+ const definition = generateZodValidationSchemaDefinition(
360
+ schema,
361
+ parameter.required,
362
+ (0, import_core.camel)(`${operationName}-${parameter.in}-${parameter.name}`)
363
+ );
364
+ if (parameter.in === "header") {
365
+ return {
366
+ ...acc,
367
+ headers: { ...acc.headers, [parameter.name]: definition }
368
+ };
369
+ }
370
+ if (parameter.in === "query") {
371
+ return {
372
+ ...acc,
373
+ queryParams: { ...acc.queryParams, [parameter.name]: definition }
374
+ };
375
+ }
376
+ if (parameter.in === "path") {
377
+ return {
378
+ ...acc,
379
+ params: { ...acc.params, [parameter.name]: definition }
380
+ };
381
+ }
382
+ return acc;
383
+ },
384
+ {
385
+ headers: {},
386
+ queryParams: {},
387
+ params: {}
388
+ }
389
+ );
390
+ const inputParams = parseZodValidationSchemaDefinition(
391
+ zodDefinitionsParameters.params
392
+ );
393
+ const inputQueryParams = parseZodValidationSchemaDefinition(
394
+ zodDefinitionsParameters.queryParams,
395
+ override.coerceTypes
396
+ );
397
+ const inputHeaders = parseZodValidationSchemaDefinition(
398
+ zodDefinitionsParameters.headers
399
+ );
400
+ const inputBody = parseZodValidationSchemaDefinition(zodDefinitionsBody);
401
+ const inputResponse = parseZodValidationSchemaDefinition(
402
+ zodDefinitionsResponse
403
+ );
404
+ if (!inputParams.zod && !inputQueryParams.zod && !inputHeaders.zod && !inputBody.zod && !inputResponse.zod) {
405
+ return "";
406
+ }
407
+ return [
408
+ ...inputParams.consts ? [inputParams.consts] : [],
409
+ ...inputParams.zod ? [`export const ${operationName}Params = ${inputParams.zod}`] : [],
410
+ ...inputQueryParams.consts ? [inputQueryParams.consts] : [],
411
+ ...inputQueryParams.zod ? [`export const ${operationName}QueryParams = ${inputQueryParams.zod}`] : [],
412
+ ...inputHeaders.consts ? [inputHeaders.consts] : [],
413
+ ...inputHeaders.zod ? [`export const ${operationName}Header = ${inputHeaders.zod}`] : [],
414
+ ...inputBody.consts ? [inputBody.consts] : [],
415
+ ...inputBody.zod ? [`export const ${operationName}Body = ${inputBody.zod}`] : [],
416
+ ...inputResponse.consts ? [inputResponse.consts] : [],
417
+ ...inputResponse.zod ? [`export const ${operationName}Response = ${inputResponse.zod}`] : []
418
+ ].join("\n\n");
419
+ };
420
+ var generateZod = (verbOptions, options) => {
421
+ const routeImplementation = generateZodRoute(verbOptions, options);
422
+ return {
423
+ implementation: routeImplementation ? `${routeImplementation}
7
424
 
8
- `:"",imports:[]}},ne={client:ee,dependencies:N},te= exports.builder =()=>()=>ne,fe= exports.default =te;exports.builder = te; exports.default = fe; exports.generateZod = ee; exports.getZodDependencies = N;
425
+ ` : "",
426
+ imports: []
427
+ };
428
+ };
429
+ var zodClientBuilder = {
430
+ client: generateZod,
431
+ dependencies: getZodDependencies
432
+ };
433
+ var builder = () => () => zodClientBuilder;
434
+ var src_default = builder;
435
+ // Annotate the CommonJS export names for ESM import in node:
436
+ 0 && (module.exports = {
437
+ builder,
438
+ generateZod,
439
+ getZodDependencies,
440
+ parseZodValidationSchemaDefinition
441
+ });
442
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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';\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 case 'null':\n return 'mixed';\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): { 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)),\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 ),\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 ),\n }))\n .reduce((acc, curr) => ({ ...acc, ...curr }), {}),\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 ),\n ]);\n\n break;\n }\n\n functions.push([type as string, undefined]);\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 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);\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 (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})`;\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, body, verb }: GeneratorVerbOptions,\n { pathRoute, context, override }: 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 ? resolveRef<SchemaObject>(\n resolvedResponse.content['application/json'].schema,\n context,\n ).schema\n : undefined;\n\n const zodDefinitionsResponseProperties =\n resolvedResponseJsonSchema?.properties ??\n ({} as { [p: string]: SchemaObject | ReferenceObject });\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 ),\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 ? resolveRef<SchemaObject>(\n resolvedRequestBody.content['application/json'].schema,\n context,\n ).schema\n : undefined;\n\n const zodDefinitionsBodyProperties =\n resolvedRequestBodyJsonSchema?.properties ??\n ({} as { [p: string]: SchemaObject | ReferenceObject });\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 ),\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 definition = generateZodValidationSchemaDefinition(\n schema,\n parameter.required,\n camel(`${operationName}-${parameter.in}-${parameter.name}`),\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 );\n const inputQueryParams = parseZodValidationSchemaDefinition(\n zodDefinitionsParameters.queryParams,\n override.coerceTypes,\n );\n const inputHeaders = parseZodValidationSchemaDefinition(\n zodDefinitionsParameters.headers,\n );\n const inputBody = parseZodValidationSchemaDefinition(zodDefinitionsBody);\n const inputResponse = parseZodValidationSchemaDefinition(\n zodDefinitionsResponse,\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 ? [`export const ${operationName}Body = ${inputBody.zod}`]\n : []),\n ...(inputResponse.consts ? [inputResponse.consts] : []),\n ...(inputResponse.zod\n ? [`export const ${operationName}Response = ${inputResponse.zod}`]\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","body"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orval/zod",
3
- "version": "6.19.1",
3
+ "version": "6.21.0",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -8,12 +8,13 @@
8
8
  "dist"
9
9
  ],
10
10
  "scripts": {
11
- "build": "tsup ./src/index.ts --target node12 --minify --clean --dts --splitting",
11
+ "build": "tsup ./src/index.ts --target node12 --clean --dts --sourcemap",
12
12
  "dev": "tsup ./src/index.ts --target node12 --clean --watch src",
13
- "lint": "eslint src/**/*.ts"
13
+ "lint": "eslint src/**/*.ts",
14
+ "test": "vitest --global test.ts"
14
15
  },
15
16
  "dependencies": {
16
- "@orval/core": "6.19.1",
17
+ "@orval/core": "6.21.0",
17
18
  "lodash.uniq": "^4.5.0"
18
19
  },
19
20
  "devDependencies": {