@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 +9 -1
- package/dist/index.js +440 -6
- package/dist/index.js.map +1 -0
- package/package.json +5 -4
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";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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 --
|
|
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.
|
|
17
|
+
"@orval/core": "6.21.0",
|
|
17
18
|
"lodash.uniq": "^4.5.0"
|
|
18
19
|
},
|
|
19
20
|
"devDependencies": {
|