@orval/zod 7.9.0 → 7.10.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 +3 -3
- package/dist/index.js +155 -81
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GeneratorDependency, ContextSpecs, ZodCoerceType, GeneratorMutator, ClientBuilder
|
|
1
|
+
import { ClientGeneratorsBuilder, GeneratorDependency, ContextSpecs, ZodCoerceType, GeneratorMutator, ClientBuilder } from '@orval/core';
|
|
2
2
|
import { SchemaObject } from 'openapi3-ts/oas30';
|
|
3
3
|
|
|
4
4
|
declare const getZodDependencies: () => GeneratorDependency[];
|
|
@@ -11,11 +11,11 @@ type DateTimeOptions = {
|
|
|
11
11
|
local?: boolean;
|
|
12
12
|
precision?: number;
|
|
13
13
|
};
|
|
14
|
-
declare const generateZodValidationSchemaDefinition: (schema: SchemaObject | undefined, context: ContextSpecs, name: string, strict: boolean, rules?: {
|
|
14
|
+
declare const generateZodValidationSchemaDefinition: (schema: SchemaObject | undefined, context: ContextSpecs, name: string, strict: boolean, isZodV4: boolean, rules?: {
|
|
15
15
|
required?: boolean;
|
|
16
16
|
dateTimeOptions?: DateTimeOptions;
|
|
17
17
|
}) => ZodValidationSchemaDefinition;
|
|
18
|
-
declare const parseZodValidationSchemaDefinition: (input: ZodValidationSchemaDefinition, context: ContextSpecs, coerceTypes
|
|
18
|
+
declare const parseZodValidationSchemaDefinition: (input: ZodValidationSchemaDefinition, context: ContextSpecs, coerceTypes: boolean | ZodCoerceType[] | undefined, strict: boolean, isZodV4: boolean, preprocess?: GeneratorMutator) => {
|
|
19
19
|
zod: string;
|
|
20
20
|
consts: string;
|
|
21
21
|
};
|
package/dist/index.js
CHANGED
|
@@ -28,17 +28,56 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
|
|
30
30
|
// src/index.ts
|
|
31
|
-
var
|
|
32
|
-
__export(
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
33
|
builder: () => builder,
|
|
34
|
-
default: () =>
|
|
34
|
+
default: () => index_default,
|
|
35
35
|
generateZod: () => generateZod,
|
|
36
36
|
generateZodValidationSchemaDefinition: () => generateZodValidationSchemaDefinition,
|
|
37
37
|
getZodDependencies: () => getZodDependencies,
|
|
38
38
|
parseZodValidationSchemaDefinition: () => parseZodValidationSchemaDefinition
|
|
39
39
|
});
|
|
40
|
-
module.exports = __toCommonJS(
|
|
40
|
+
module.exports = __toCommonJS(index_exports);
|
|
41
|
+
var import_core2 = require("@orval/core");
|
|
42
|
+
|
|
43
|
+
// src/compatibleV4.ts
|
|
41
44
|
var import_core = require("@orval/core");
|
|
45
|
+
var getZodPackageVersion = (packageJson) => {
|
|
46
|
+
var _a, _b, _c, _d, _e;
|
|
47
|
+
return (_e = (_c = (_a = packageJson.dependencies) == null ? void 0 : _a["zod"]) != null ? _c : (_b = packageJson.devDependencies) == null ? void 0 : _b["zod"]) != null ? _e : (_d = packageJson.peerDependencies) == null ? void 0 : _d["zod"];
|
|
48
|
+
};
|
|
49
|
+
var isZodVersionV4 = (packageJson) => {
|
|
50
|
+
const version = getZodPackageVersion(packageJson);
|
|
51
|
+
if (!version) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
const withoutRc = version.split("-")[0];
|
|
55
|
+
return (0, import_core.compareVersions)(withoutRc, "4.0.0");
|
|
56
|
+
};
|
|
57
|
+
var getZodDateFormat = (isZodV4) => {
|
|
58
|
+
return isZodV4 ? "iso.date" : "date";
|
|
59
|
+
};
|
|
60
|
+
var getZodTimeFormat = (isZodV4) => {
|
|
61
|
+
return isZodV4 ? "iso.time" : "time";
|
|
62
|
+
};
|
|
63
|
+
var getZodDateTimeFormat = (isZodV4) => {
|
|
64
|
+
return isZodV4 ? "iso.datetime" : "datetime";
|
|
65
|
+
};
|
|
66
|
+
var getParameterFunctions = (isZodV4, strict, parameters) => {
|
|
67
|
+
if (isZodV4 && strict) {
|
|
68
|
+
return [["strictObject", parameters]];
|
|
69
|
+
} else {
|
|
70
|
+
return strict ? [
|
|
71
|
+
["object", parameters],
|
|
72
|
+
["strict", void 0]
|
|
73
|
+
] : [["object", parameters]];
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
var getObjectFunctionName = (isZodV4, strict) => {
|
|
77
|
+
return isZodV4 && strict ? "strictObject" : "object";
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// src/index.ts
|
|
42
81
|
var import_lodash = __toESM(require("lodash.uniq"));
|
|
43
82
|
var ZOD_DEPENDENCIES = [
|
|
44
83
|
{
|
|
@@ -59,6 +98,7 @@ var possibleSchemaTypes = [
|
|
|
59
98
|
"string",
|
|
60
99
|
"boolean",
|
|
61
100
|
"object",
|
|
101
|
+
"strictObject",
|
|
62
102
|
"null",
|
|
63
103
|
"array"
|
|
64
104
|
];
|
|
@@ -97,12 +137,12 @@ var removeReadOnlyProperties = (schema) => {
|
|
|
97
137
|
}
|
|
98
138
|
return schema;
|
|
99
139
|
};
|
|
100
|
-
var generateZodValidationSchemaDefinition = (schema, context, name, strict, rules) => {
|
|
140
|
+
var generateZodValidationSchemaDefinition = (schema, context, name, strict, isZodV4, rules) => {
|
|
101
141
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
102
142
|
if (!schema) return { functions: [], consts: [] };
|
|
103
143
|
const consts = [];
|
|
104
144
|
const constsCounter = typeof constsUniqueCounter[name] === "number" ? constsUniqueCounter[name] + 1 : 0;
|
|
105
|
-
const constsCounterValue = constsCounter ? (0,
|
|
145
|
+
const constsCounterValue = constsCounter ? (0, import_core2.pascal)((0, import_core2.getNumberWord)(constsCounter)) : "";
|
|
106
146
|
constsUniqueCounter[name] = constsCounter;
|
|
107
147
|
const functions = [];
|
|
108
148
|
const type = resolveZodType(schema);
|
|
@@ -117,15 +157,15 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
|
|
|
117
157
|
let defaultValue;
|
|
118
158
|
const isDateType = schema.type === "string" && (schema.format === "date" || schema.format === "date-time") && context.output.override.useDates;
|
|
119
159
|
if (isDateType) {
|
|
120
|
-
defaultValue = `new Date("${(0,
|
|
121
|
-
} else if ((0,
|
|
160
|
+
defaultValue = `new Date("${(0, import_core2.escape)(schema.default)}")`;
|
|
161
|
+
} else if ((0, import_core2.isObject)(schema.default)) {
|
|
122
162
|
const entries = Object.entries(schema.default).map(([key, value]) => {
|
|
123
|
-
if ((0,
|
|
124
|
-
return `${key}: "${(0,
|
|
163
|
+
if ((0, import_core2.isString)(value)) {
|
|
164
|
+
return `${key}: "${(0, import_core2.escape)(value)}"`;
|
|
125
165
|
}
|
|
126
166
|
if (Array.isArray(value)) {
|
|
127
167
|
const arrayItems = value.map(
|
|
128
|
-
(item) => (0,
|
|
168
|
+
(item) => (0, import_core2.isString)(item) ? `"${(0, import_core2.escape)(item)}"` : `${item}`
|
|
129
169
|
);
|
|
130
170
|
return `${key}: [${arrayItems.join(", ")}]`;
|
|
131
171
|
}
|
|
@@ -133,7 +173,7 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
|
|
|
133
173
|
}).join(", ");
|
|
134
174
|
defaultValue = `{ ${entries} }`;
|
|
135
175
|
} else {
|
|
136
|
-
const rawStringified = (0,
|
|
176
|
+
const rawStringified = (0, import_core2.stringify)(schema.default);
|
|
137
177
|
defaultValue = rawStringified === void 0 ? "null" : rawStringified.replace(/'/g, '"');
|
|
138
178
|
}
|
|
139
179
|
consts.push(`export const ${defaultVarName} = ${defaultValue};`);
|
|
@@ -149,7 +189,8 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
|
|
|
149
189
|
(item, idx) => generateZodValidationSchemaDefinition(
|
|
150
190
|
deference(item, context),
|
|
151
191
|
context,
|
|
152
|
-
(0,
|
|
192
|
+
(0, import_core2.camel)(`${name}-${idx}-item`),
|
|
193
|
+
isZodV4,
|
|
153
194
|
strict,
|
|
154
195
|
{
|
|
155
196
|
required: true
|
|
@@ -164,8 +205,9 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
|
|
|
164
205
|
generateZodValidationSchemaDefinition(
|
|
165
206
|
schema.items,
|
|
166
207
|
context,
|
|
167
|
-
(0,
|
|
208
|
+
(0, import_core2.camel)(`${name}-item`),
|
|
168
209
|
strict,
|
|
210
|
+
isZodV4,
|
|
169
211
|
{
|
|
170
212
|
required: true
|
|
171
213
|
}
|
|
@@ -182,8 +224,9 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
|
|
|
182
224
|
generateZodValidationSchemaDefinition(
|
|
183
225
|
schema.items,
|
|
184
226
|
context,
|
|
185
|
-
(0,
|
|
227
|
+
(0, import_core2.camel)(`${name}-item`),
|
|
186
228
|
strict,
|
|
229
|
+
isZodV4,
|
|
187
230
|
{
|
|
188
231
|
required: true
|
|
189
232
|
}
|
|
@@ -195,22 +238,37 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
|
|
|
195
238
|
break;
|
|
196
239
|
}
|
|
197
240
|
if (context.output.override.useDates && (schema.format === "date" || schema.format === "date-time")) {
|
|
198
|
-
|
|
241
|
+
const formatAPI = getZodDateFormat(isZodV4);
|
|
242
|
+
functions.push([formatAPI, void 0]);
|
|
199
243
|
break;
|
|
200
244
|
}
|
|
201
245
|
if (schema.format === "binary") {
|
|
202
246
|
functions.push(["instanceof", "File"]);
|
|
203
247
|
break;
|
|
204
248
|
}
|
|
205
|
-
|
|
249
|
+
if (isZodV4) {
|
|
250
|
+
if (!schema.format) {
|
|
251
|
+
functions.push([type, void 0]);
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
} else {
|
|
255
|
+
functions.push([type, void 0]);
|
|
256
|
+
}
|
|
206
257
|
if (schema.format === "date") {
|
|
207
|
-
|
|
258
|
+
const formatAPI = getZodDateFormat(isZodV4);
|
|
259
|
+
functions.push([formatAPI, void 0]);
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
if (schema.format === "time") {
|
|
263
|
+
const formatAPI = getZodTimeFormat(isZodV4);
|
|
264
|
+
functions.push([formatAPI, void 0]);
|
|
208
265
|
break;
|
|
209
266
|
}
|
|
210
267
|
if (schema.format === "date-time") {
|
|
211
268
|
const options = (_h = context.output.override.zod) == null ? void 0 : _h.dateTimeOptions;
|
|
269
|
+
const formatAPI = getZodDateTimeFormat(isZodV4);
|
|
212
270
|
functions.push([
|
|
213
|
-
|
|
271
|
+
formatAPI,
|
|
214
272
|
options ? JSON.stringify(options) : void 0
|
|
215
273
|
]);
|
|
216
274
|
break;
|
|
@@ -232,38 +290,38 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
|
|
|
232
290
|
case "object":
|
|
233
291
|
default: {
|
|
234
292
|
if (schema.allOf || schema.oneOf || schema.anyOf) {
|
|
235
|
-
|
|
293
|
+
const separator = schema.allOf ? "allOf" : schema.oneOf ? "oneOf" : "anyOf";
|
|
236
294
|
const schemas = (_j = (_i = schema.allOf) != null ? _i : schema.oneOf) != null ? _j : schema.anyOf;
|
|
237
|
-
if ((schema.oneOf || schema.anyOf) && schema.discriminator && schema.discriminator.propertyName) {
|
|
238
|
-
separator = `discriminator__${schema.discriminator.propertyName}`;
|
|
239
|
-
}
|
|
240
295
|
functions.push([
|
|
241
296
|
separator,
|
|
242
|
-
schemas.map(
|
|
243
|
-
|
|
297
|
+
schemas.map(
|
|
298
|
+
(schema2) => generateZodValidationSchemaDefinition(
|
|
244
299
|
schema2,
|
|
245
300
|
context,
|
|
246
|
-
(0,
|
|
301
|
+
(0, import_core2.camel)(name),
|
|
247
302
|
strict,
|
|
303
|
+
isZodV4,
|
|
248
304
|
{
|
|
249
305
|
required: true
|
|
250
306
|
}
|
|
251
|
-
)
|
|
252
|
-
|
|
307
|
+
)
|
|
308
|
+
)
|
|
253
309
|
]);
|
|
254
310
|
break;
|
|
255
311
|
}
|
|
256
312
|
if (schema.properties) {
|
|
313
|
+
const objectType = getObjectFunctionName(isZodV4, strict);
|
|
257
314
|
functions.push([
|
|
258
|
-
|
|
315
|
+
objectType,
|
|
259
316
|
Object.keys(schema.properties).map((key) => {
|
|
260
317
|
var _a2, _b2;
|
|
261
318
|
return {
|
|
262
319
|
[key]: generateZodValidationSchemaDefinition(
|
|
263
320
|
(_a2 = schema.properties) == null ? void 0 : _a2[key],
|
|
264
321
|
context,
|
|
265
|
-
(0,
|
|
322
|
+
(0, import_core2.camel)(`${name}-${key}`),
|
|
266
323
|
strict,
|
|
324
|
+
isZodV4,
|
|
267
325
|
{
|
|
268
326
|
required: (_b2 = schema.required) == null ? void 0 : _b2.includes(key)
|
|
269
327
|
}
|
|
@@ -271,7 +329,7 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
|
|
|
271
329
|
};
|
|
272
330
|
}).reduce((acc, curr) => ({ ...acc, ...curr }), {})
|
|
273
331
|
]);
|
|
274
|
-
if (strict) {
|
|
332
|
+
if (strict && !isZodV4) {
|
|
275
333
|
functions.push(["strict", void 0]);
|
|
276
334
|
}
|
|
277
335
|
break;
|
|
@@ -280,10 +338,11 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
|
|
|
280
338
|
functions.push([
|
|
281
339
|
"additionalProperties",
|
|
282
340
|
generateZodValidationSchemaDefinition(
|
|
283
|
-
(0,
|
|
341
|
+
(0, import_core2.isBoolean)(schema.additionalProperties) ? {} : schema.additionalProperties,
|
|
284
342
|
context,
|
|
285
343
|
name,
|
|
286
344
|
strict,
|
|
345
|
+
isZodV4,
|
|
287
346
|
{
|
|
288
347
|
required: true
|
|
289
348
|
}
|
|
@@ -317,7 +376,7 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
|
|
|
317
376
|
if (matches) {
|
|
318
377
|
const isStartWithSlash = matches.startsWith("/");
|
|
319
378
|
const isEndWithSlash = matches.endsWith("/");
|
|
320
|
-
const regexp = `new RegExp('${(0,
|
|
379
|
+
const regexp = `new RegExp('${(0, import_core2.jsStringEscape)(
|
|
321
380
|
matches.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : void 0)
|
|
322
381
|
)}')`;
|
|
323
382
|
consts.push(
|
|
@@ -327,17 +386,17 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
|
|
|
327
386
|
functions.push(["regex", `${name}RegExp${constsCounterValue}`]);
|
|
328
387
|
}
|
|
329
388
|
if (schema.enum) {
|
|
330
|
-
if (schema.enum.every((value) => (0,
|
|
389
|
+
if (schema.enum.every((value) => (0, import_core2.isString)(value))) {
|
|
331
390
|
functions.push([
|
|
332
391
|
"enum",
|
|
333
|
-
`[${schema.enum.map((value) => `'${(0,
|
|
392
|
+
`[${schema.enum.map((value) => `'${(0, import_core2.escape)(value)}'`).join(", ")}]`
|
|
334
393
|
]);
|
|
335
394
|
} else {
|
|
336
395
|
functions.push([
|
|
337
396
|
"oneOf",
|
|
338
397
|
schema.enum.map((value) => ({
|
|
339
398
|
functions: [
|
|
340
|
-
["literal", (0,
|
|
399
|
+
["literal", (0, import_core2.isString)(value) ? `'${(0, import_core2.escape)(value)}'` : value]
|
|
341
400
|
],
|
|
342
401
|
consts: []
|
|
343
402
|
}))
|
|
@@ -354,11 +413,11 @@ var generateZodValidationSchemaDefinition = (schema, context, name, strict, rule
|
|
|
354
413
|
functions.push(["optional", void 0]);
|
|
355
414
|
}
|
|
356
415
|
if (schema.description) {
|
|
357
|
-
functions.push(["describe", `'${(0,
|
|
416
|
+
functions.push(["describe", `'${(0, import_core2.jsStringEscape)(schema.description)}'`]);
|
|
358
417
|
}
|
|
359
418
|
return { functions, consts: (0, import_lodash.default)(consts) };
|
|
360
419
|
};
|
|
361
|
-
var parseZodValidationSchemaDefinition = (input, context, coerceTypes = false, preprocess) => {
|
|
420
|
+
var parseZodValidationSchemaDefinition = (input, context, coerceTypes = false, strict, isZodV4, preprocess) => {
|
|
362
421
|
if (!input.functions.length) {
|
|
363
422
|
return { zod: "", consts: "" };
|
|
364
423
|
}
|
|
@@ -386,18 +445,7 @@ var parseZodValidationSchemaDefinition = (input, context, coerceTypes = false, p
|
|
|
386
445
|
""
|
|
387
446
|
);
|
|
388
447
|
}
|
|
389
|
-
if (fn
|
|
390
|
-
const [, propertyName] = fn.split("discriminator__");
|
|
391
|
-
const typeSchemas = args.map(
|
|
392
|
-
({ functions }) => {
|
|
393
|
-
const schemaFunctions = functions.map(parseProperty).join("");
|
|
394
|
-
return schemaFunctions;
|
|
395
|
-
}
|
|
396
|
-
);
|
|
397
|
-
return `zod.discriminatedUnion('${propertyName}', [${typeSchemas.join(
|
|
398
|
-
","
|
|
399
|
-
)}])`;
|
|
400
|
-
} else if (fn === "oneOf" || fn === "anyOf") {
|
|
448
|
+
if (fn === "oneOf" || fn === "anyOf") {
|
|
401
449
|
return args.reduce(
|
|
402
450
|
(acc, {
|
|
403
451
|
functions,
|
|
@@ -424,8 +472,9 @@ var parseZodValidationSchemaDefinition = (input, context, coerceTypes = false, p
|
|
|
424
472
|
consts += args.consts;
|
|
425
473
|
return `zod.record(zod.string(), ${valueWithZod})`;
|
|
426
474
|
}
|
|
427
|
-
if (fn === "object") {
|
|
428
|
-
|
|
475
|
+
if (fn === "object" || fn === "strictObject") {
|
|
476
|
+
const objectType = getObjectFunctionName(isZodV4, strict);
|
|
477
|
+
return `zod.${objectType}({
|
|
429
478
|
${Object.entries(args).map(([key, schema2]) => {
|
|
430
479
|
const value2 = schema2.functions.map(parseProperty).join("");
|
|
431
480
|
consts += schema2.consts.join("\n");
|
|
@@ -442,7 +491,7 @@ ${Object.entries(args).map(([key, schema2]) => {
|
|
|
442
491
|
}
|
|
443
492
|
return `.array(${value2.startsWith(".") ? "zod" : ""}${value2})`;
|
|
444
493
|
}
|
|
445
|
-
if (fn === "strict") {
|
|
494
|
+
if (fn === "strict" && !isZodV4) {
|
|
446
495
|
return ".strict()";
|
|
447
496
|
}
|
|
448
497
|
if (fn === "tuple") {
|
|
@@ -467,7 +516,7 @@ ${Object.entries(args).map(([key, schema2]) => {
|
|
|
467
516
|
return { zod, consts };
|
|
468
517
|
};
|
|
469
518
|
var deferenceScalar = (value, context) => {
|
|
470
|
-
if ((0,
|
|
519
|
+
if ((0, import_core2.isObject)(value)) {
|
|
471
520
|
return deference(value, context);
|
|
472
521
|
} else if (Array.isArray(value)) {
|
|
473
522
|
return value.map((item) => deferenceScalar(item, context));
|
|
@@ -485,17 +534,17 @@ var deference = (schema, context) => {
|
|
|
485
534
|
...context,
|
|
486
535
|
...refName ? { parents: [...context.parents || [], refName] } : void 0
|
|
487
536
|
};
|
|
488
|
-
const { schema: resolvedSchema } = (0,
|
|
537
|
+
const { schema: resolvedSchema } = (0, import_core2.resolveRef)(
|
|
489
538
|
schema,
|
|
490
539
|
childContext
|
|
491
540
|
);
|
|
492
|
-
const resolvedSpecKey = refName ? (0,
|
|
541
|
+
const resolvedSpecKey = refName ? (0, import_core2.getRefInfo)(refName, context).specKey : void 0;
|
|
493
542
|
const resolvedContext = {
|
|
494
543
|
...childContext,
|
|
495
544
|
specKey: resolvedSpecKey != null ? resolvedSpecKey : childContext.specKey
|
|
496
545
|
};
|
|
497
546
|
return Object.entries(resolvedSchema).reduce((acc, [key, value]) => {
|
|
498
|
-
if (key === "properties" && (0,
|
|
547
|
+
if (key === "properties" && (0, import_core2.isObject)(value)) {
|
|
499
548
|
acc[key] = Object.entries(value).reduce(
|
|
500
549
|
(props, [propKey, propSchema]) => {
|
|
501
550
|
props[propKey] = deference(
|
|
@@ -520,6 +569,7 @@ var parseBodyAndResponse = ({
|
|
|
520
569
|
name,
|
|
521
570
|
strict,
|
|
522
571
|
generate,
|
|
572
|
+
isZodV4,
|
|
523
573
|
parseType
|
|
524
574
|
}) => {
|
|
525
575
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
@@ -529,7 +579,7 @@ var parseBodyAndResponse = ({
|
|
|
529
579
|
isArray: false
|
|
530
580
|
};
|
|
531
581
|
}
|
|
532
|
-
const resolvedRef = (0,
|
|
582
|
+
const resolvedRef = (0, import_core2.resolveRef)(
|
|
533
583
|
data,
|
|
534
584
|
context
|
|
535
585
|
).schema;
|
|
@@ -550,6 +600,7 @@ var parseBodyAndResponse = ({
|
|
|
550
600
|
context,
|
|
551
601
|
name,
|
|
552
602
|
strict,
|
|
603
|
+
isZodV4,
|
|
553
604
|
{
|
|
554
605
|
required: true
|
|
555
606
|
}
|
|
@@ -567,6 +618,7 @@ var parseBodyAndResponse = ({
|
|
|
567
618
|
context,
|
|
568
619
|
name,
|
|
569
620
|
strict,
|
|
621
|
+
isZodV4,
|
|
570
622
|
{
|
|
571
623
|
required: true
|
|
572
624
|
}
|
|
@@ -578,6 +630,7 @@ var parseParameters = ({
|
|
|
578
630
|
data,
|
|
579
631
|
context,
|
|
580
632
|
operationName,
|
|
633
|
+
isZodV4,
|
|
581
634
|
strict,
|
|
582
635
|
generate
|
|
583
636
|
}) => {
|
|
@@ -600,7 +653,7 @@ var parseParameters = ({
|
|
|
600
653
|
const defintionsByParameters = data.reduce(
|
|
601
654
|
(acc, val) => {
|
|
602
655
|
var _a;
|
|
603
|
-
const { schema: parameter } = (0,
|
|
656
|
+
const { schema: parameter } = (0, import_core2.resolveRef)(val, context);
|
|
604
657
|
if (!parameter.schema) {
|
|
605
658
|
return acc;
|
|
606
659
|
}
|
|
@@ -619,8 +672,9 @@ var parseParameters = ({
|
|
|
619
672
|
const definition = generateZodValidationSchemaDefinition(
|
|
620
673
|
schema,
|
|
621
674
|
context,
|
|
622
|
-
(0,
|
|
675
|
+
(0, import_core2.camel)(`${operationName}-${parameter.in}-${parameter.name}`),
|
|
623
676
|
(_a = mapStrict[parameter.in]) != null ? _a : false,
|
|
677
|
+
isZodV4,
|
|
624
678
|
{
|
|
625
679
|
required: parameter.required
|
|
626
680
|
}
|
|
@@ -656,30 +710,36 @@ var parseParameters = ({
|
|
|
656
710
|
consts: []
|
|
657
711
|
};
|
|
658
712
|
if (Object.keys(defintionsByParameters.headers).length) {
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
713
|
+
const parameterFunctions = getParameterFunctions(
|
|
714
|
+
isZodV4,
|
|
715
|
+
strict.header,
|
|
716
|
+
defintionsByParameters.headers
|
|
717
|
+
);
|
|
718
|
+
headers.functions.push(...parameterFunctions);
|
|
663
719
|
}
|
|
664
720
|
const queryParams = {
|
|
665
721
|
functions: [],
|
|
666
722
|
consts: []
|
|
667
723
|
};
|
|
668
724
|
if (Object.keys(defintionsByParameters.queryParams).length) {
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
725
|
+
const parameterFunctions = getParameterFunctions(
|
|
726
|
+
isZodV4,
|
|
727
|
+
strict.query,
|
|
728
|
+
defintionsByParameters.queryParams
|
|
729
|
+
);
|
|
730
|
+
queryParams.functions.push(...parameterFunctions);
|
|
673
731
|
}
|
|
674
732
|
const params = {
|
|
675
733
|
functions: [],
|
|
676
734
|
consts: []
|
|
677
735
|
};
|
|
678
736
|
if (Object.keys(defintionsByParameters.params).length) {
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
737
|
+
const parameterFunctions = getParameterFunctions(
|
|
738
|
+
isZodV4,
|
|
739
|
+
strict.param,
|
|
740
|
+
defintionsByParameters.params
|
|
741
|
+
);
|
|
742
|
+
params.functions.push(...parameterFunctions);
|
|
683
743
|
}
|
|
684
744
|
return {
|
|
685
745
|
headers,
|
|
@@ -689,12 +749,14 @@ var parseParameters = ({
|
|
|
689
749
|
};
|
|
690
750
|
var generateZodRoute = async ({ operationName, verb, override }, { pathRoute, context, output }) => {
|
|
691
751
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
|
|
752
|
+
const isZodV4 = !!context.output.packageJson && isZodVersionV4(context.output.packageJson);
|
|
692
753
|
const spec = context.specs[context.specKey].paths[pathRoute];
|
|
693
754
|
const parameters = (_a = spec == null ? void 0 : spec[verb]) == null ? void 0 : _a.parameters;
|
|
694
755
|
const parsedParameters = parseParameters({
|
|
695
756
|
data: parameters,
|
|
696
757
|
context,
|
|
697
758
|
operationName,
|
|
759
|
+
isZodV4,
|
|
698
760
|
strict: override.zod.strict,
|
|
699
761
|
generate: override.zod.generate
|
|
700
762
|
});
|
|
@@ -702,9 +764,10 @@ var generateZodRoute = async ({ operationName, verb, override }, { pathRoute, co
|
|
|
702
764
|
const parsedBody = parseBodyAndResponse({
|
|
703
765
|
data: requestBody,
|
|
704
766
|
context,
|
|
705
|
-
name: (0,
|
|
767
|
+
name: (0, import_core2.camel)(`${operationName}-body`),
|
|
706
768
|
strict: override.zod.strict.body,
|
|
707
769
|
generate: override.zod.generate.body,
|
|
770
|
+
isZodV4,
|
|
708
771
|
parseType: "body"
|
|
709
772
|
});
|
|
710
773
|
const responses = context.output.override.zod.generateEachHttpStatus ? Object.entries((_d = (_c = spec == null ? void 0 : spec[verb]) == null ? void 0 : _c.responses) != null ? _d : {}) : [["", (_e = spec == null ? void 0 : spec[verb]) == null ? void 0 : _e.responses[200]]];
|
|
@@ -712,13 +775,14 @@ var generateZodRoute = async ({ operationName, verb, override }, { pathRoute, co
|
|
|
712
775
|
([code, response]) => parseBodyAndResponse({
|
|
713
776
|
data: response,
|
|
714
777
|
context,
|
|
715
|
-
name: (0,
|
|
778
|
+
name: (0, import_core2.camel)(`${operationName}-${code}-response`),
|
|
716
779
|
strict: override.zod.strict.response,
|
|
717
780
|
generate: override.zod.generate.response,
|
|
781
|
+
isZodV4,
|
|
718
782
|
parseType: "response"
|
|
719
783
|
})
|
|
720
784
|
);
|
|
721
|
-
const preprocessParams = ((_f = override.zod.preprocess) == null ? void 0 : _f.param) ? await (0,
|
|
785
|
+
const preprocessParams = ((_f = override.zod.preprocess) == null ? void 0 : _f.param) ? await (0, import_core2.generateMutator)({
|
|
722
786
|
output,
|
|
723
787
|
mutator: override.zod.preprocess.response,
|
|
724
788
|
name: `${operationName}PreprocessParams`,
|
|
@@ -729,6 +793,8 @@ var generateZodRoute = async ({ operationName, verb, override }, { pathRoute, co
|
|
|
729
793
|
parsedParameters.params,
|
|
730
794
|
context,
|
|
731
795
|
override.zod.coerce.param,
|
|
796
|
+
override.zod.strict.param,
|
|
797
|
+
isZodV4,
|
|
732
798
|
preprocessParams
|
|
733
799
|
);
|
|
734
800
|
if (override.coerceTypes) {
|
|
@@ -736,7 +802,7 @@ var generateZodRoute = async ({ operationName, verb, override }, { pathRoute, co
|
|
|
736
802
|
"override.coerceTypes is deprecated, please use override.zod.coerce instead."
|
|
737
803
|
);
|
|
738
804
|
}
|
|
739
|
-
const preprocessQueryParams = ((_g = override.zod.preprocess) == null ? void 0 : _g.query) ? await (0,
|
|
805
|
+
const preprocessQueryParams = ((_g = override.zod.preprocess) == null ? void 0 : _g.query) ? await (0, import_core2.generateMutator)({
|
|
740
806
|
output,
|
|
741
807
|
mutator: override.zod.preprocess.response,
|
|
742
808
|
name: `${operationName}PreprocessQueryParams`,
|
|
@@ -747,9 +813,11 @@ var generateZodRoute = async ({ operationName, verb, override }, { pathRoute, co
|
|
|
747
813
|
parsedParameters.queryParams,
|
|
748
814
|
context,
|
|
749
815
|
(_h = override.zod.coerce.query) != null ? _h : override.coerceTypes,
|
|
816
|
+
override.zod.strict.query,
|
|
817
|
+
isZodV4,
|
|
750
818
|
preprocessQueryParams
|
|
751
819
|
);
|
|
752
|
-
const preprocessHeader = ((_i = override.zod.preprocess) == null ? void 0 : _i.header) ? await (0,
|
|
820
|
+
const preprocessHeader = ((_i = override.zod.preprocess) == null ? void 0 : _i.header) ? await (0, import_core2.generateMutator)({
|
|
753
821
|
output,
|
|
754
822
|
mutator: override.zod.preprocess.response,
|
|
755
823
|
name: `${operationName}PreprocessHeader`,
|
|
@@ -760,9 +828,11 @@ var generateZodRoute = async ({ operationName, verb, override }, { pathRoute, co
|
|
|
760
828
|
parsedParameters.headers,
|
|
761
829
|
context,
|
|
762
830
|
override.zod.coerce.header,
|
|
831
|
+
override.zod.strict.header,
|
|
832
|
+
isZodV4,
|
|
763
833
|
preprocessHeader
|
|
764
834
|
);
|
|
765
|
-
const preprocessBody = ((_j = override.zod.preprocess) == null ? void 0 : _j.body) ? await (0,
|
|
835
|
+
const preprocessBody = ((_j = override.zod.preprocess) == null ? void 0 : _j.body) ? await (0, import_core2.generateMutator)({
|
|
766
836
|
output,
|
|
767
837
|
mutator: override.zod.preprocess.response,
|
|
768
838
|
name: `${operationName}PreprocessBody`,
|
|
@@ -773,9 +843,11 @@ var generateZodRoute = async ({ operationName, verb, override }, { pathRoute, co
|
|
|
773
843
|
parsedBody.input,
|
|
774
844
|
context,
|
|
775
845
|
override.zod.coerce.body,
|
|
846
|
+
override.zod.strict.body,
|
|
847
|
+
isZodV4,
|
|
776
848
|
preprocessBody
|
|
777
849
|
);
|
|
778
|
-
const preprocessResponse = ((_k = override.zod.preprocess) == null ? void 0 : _k.response) ? await (0,
|
|
850
|
+
const preprocessResponse = ((_k = override.zod.preprocess) == null ? void 0 : _k.response) ? await (0, import_core2.generateMutator)({
|
|
779
851
|
output,
|
|
780
852
|
mutator: override.zod.preprocess.response,
|
|
781
853
|
name: `${operationName}PreprocessResponse`,
|
|
@@ -787,6 +859,8 @@ var generateZodRoute = async ({ operationName, verb, override }, { pathRoute, co
|
|
|
787
859
|
parsedResponse.input,
|
|
788
860
|
context,
|
|
789
861
|
override.zod.coerce.response,
|
|
862
|
+
override.zod.strict.response,
|
|
863
|
+
isZodV4,
|
|
790
864
|
preprocessResponse
|
|
791
865
|
)
|
|
792
866
|
);
|
|
@@ -811,7 +885,7 @@ export const ${operationName}Body = zod.array(${operationName}BodyItem)${((_l =
|
|
|
811
885
|
] : [],
|
|
812
886
|
...inputResponses.map((inputResponse, index) => {
|
|
813
887
|
var _a2, _b2, _c2, _d2;
|
|
814
|
-
const operationResponse = (0,
|
|
888
|
+
const operationResponse = (0, import_core2.camel)(
|
|
815
889
|
`${operationName}-${responses[index][0]}-response`
|
|
816
890
|
);
|
|
817
891
|
return [
|
|
@@ -844,7 +918,7 @@ var zodClientBuilder = {
|
|
|
844
918
|
dependencies: getZodDependencies
|
|
845
919
|
};
|
|
846
920
|
var builder = () => () => zodClientBuilder;
|
|
847
|
-
var
|
|
921
|
+
var index_default = builder;
|
|
848
922
|
// Annotate the CommonJS export names for ESM import in node:
|
|
849
923
|
0 && (module.exports = {
|
|
850
924
|
builder,
|
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 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\ntype DateTimeOptions = {\n offset?: boolean;\n local?: boolean;\n precision?: number;\n};\n\nexport const generateZodValidationSchemaDefinition = (\n schema: SchemaObject | undefined,\n context: ContextSpecs,\n name: string,\n strict: boolean,\n rules?: {\n required?: boolean;\n dateTimeOptions?: DateTimeOptions;\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 = 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 const options = context.output.override.zod?.dateTimeOptions;\n functions.push([\n 'datetime',\n options ? JSON.stringify(options) : undefined,\n ]);\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 if (schema.enum) {\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) {\n if (schema.enum.every((value) => isString(value))) {\n functions.push([\n 'enum',\n `[${schema.enum.map((value) => `'${escape(value)}'`).join(', ')}]`,\n ]);\n } else {\n functions.push([\n 'oneOf',\n schema.enum.map((value) => ({\n functions: [\n ['literal', isString(value) ? `'${escape(value)}'` : value],\n ],\n consts: [],\n })),\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 if (schema.description) {\n functions.push(['describe', `'${jsStringEscape(schema.description)}'`]);\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) => {\n const value = x.functions.map(parseProperty).join('');\n return `${value.startsWith('.') ? 'zod' : ''}${value}`;\n })\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 if (key === 'properties' && isObject(value)) {\n acc[key] = Object.entries(value).reduce(\n (props, [propKey, propSchema]) => {\n props[propKey] = deference(\n propSchema as SchemaObject | ReferenceObject,\n resolvedContext,\n );\n return props;\n },\n {} as Record<string, SchemaObject>,\n );\n } else if (key === 'default' || key === 'example' || key === 'examples') {\n acc[key] = value;\n } else {\n acc[key] = deferenceScalar(value, resolvedContext);\n }\n\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 schema.description = parameter.description;\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/compatibleV4.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 {\n isZodVersionV4,\n getZodDateFormat,\n getZodTimeFormat,\n getZodDateTimeFormat,\n getParameterFunctions,\n getObjectFunctionName,\n} from './compatibleV4';\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 'strictObject',\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\ntype DateTimeOptions = {\n offset?: boolean;\n local?: boolean;\n precision?: number;\n};\n\nexport const generateZodValidationSchemaDefinition = (\n schema: SchemaObject | undefined,\n context: ContextSpecs,\n name: string,\n strict: boolean,\n isZodV4: boolean,\n rules?: {\n required?: boolean;\n dateTimeOptions?: DateTimeOptions;\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 = 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 isZodV4,\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 isZodV4,\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 isZodV4,\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 const formatAPI = getZodDateFormat(isZodV4);\n\n functions.push([formatAPI, undefined]);\n break;\n }\n\n if (schema.format === 'binary') {\n functions.push(['instanceof', 'File']);\n break;\n }\n\n if (isZodV4) {\n if (!schema.format) {\n functions.push([type as string, undefined]);\n break;\n }\n } else {\n functions.push([type as string, undefined]);\n }\n\n if (schema.format === 'date') {\n const formatAPI = getZodDateFormat(isZodV4);\n\n functions.push([formatAPI, undefined]);\n break;\n }\n\n if (schema.format === 'time') {\n const formatAPI = getZodTimeFormat(isZodV4);\n\n functions.push([formatAPI, undefined]);\n break;\n }\n\n if (schema.format === 'date-time') {\n const options = context.output.override.zod?.dateTimeOptions;\n const formatAPI = getZodDateTimeFormat(isZodV4);\n\n functions.push([\n formatAPI,\n options ? JSON.stringify(options) : undefined,\n ]);\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 isZodV4,\n {\n required: true,\n },\n ),\n ),\n ]);\n break;\n }\n\n if (schema.properties) {\n const objectType = getObjectFunctionName(isZodV4, strict);\n\n functions.push([\n objectType,\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 isZodV4,\n {\n required: schema.required?.includes(key),\n },\n ),\n }))\n .reduce((acc, curr) => ({ ...acc, ...curr }), {}),\n ]);\n\n if (strict && !isZodV4) {\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 isZodV4,\n {\n required: true,\n },\n ),\n ]);\n\n break;\n }\n\n if (schema.enum) {\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) {\n if (schema.enum.every((value) => isString(value))) {\n functions.push([\n 'enum',\n `[${schema.enum.map((value) => `'${escape(value)}'`).join(', ')}]`,\n ]);\n } else {\n functions.push([\n 'oneOf',\n schema.enum.map((value) => ({\n functions: [\n ['literal', isString(value) ? `'${escape(value)}'` : value],\n ],\n consts: [],\n })),\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 if (schema.description) {\n functions.push(['describe', `'${jsStringEscape(schema.description)}'`]);\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 strict: boolean,\n isZodV4: boolean,\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\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 === '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' || fn === 'strictObject') {\n const objectType = getObjectFunctionName(isZodV4, strict);\n\n return `zod.${objectType}({\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' && !isZodV4) {\n return '.strict()';\n }\n\n if (fn === 'tuple') {\n return `zod.tuple([${(args as ZodValidationSchemaDefinition[])\n .map((x) => {\n const value = x.functions.map(parseProperty).join('');\n return `${value.startsWith('.') ? 'zod' : ''}${value}`;\n })\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 if (key === 'properties' && isObject(value)) {\n acc[key] = Object.entries(value).reduce(\n (props, [propKey, propSchema]) => {\n props[propKey] = deference(\n propSchema as SchemaObject | ReferenceObject,\n resolvedContext,\n );\n return props;\n },\n {} as Record<string, SchemaObject>,\n );\n } else if (key === 'default' || key === 'example' || key === 'examples') {\n acc[key] = value;\n } else {\n acc[key] = deferenceScalar(value, resolvedContext);\n }\n\n return acc;\n }, {} as any);\n};\n\nconst parseBodyAndResponse = ({\n data,\n context,\n name,\n strict,\n generate,\n isZodV4,\n parseType,\n}: {\n data: ResponseObject | RequestBodyObject | ReferenceObject | undefined;\n context: ContextSpecs;\n name: string;\n strict: boolean;\n generate: boolean;\n isZodV4: 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 isZodV4,\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 isZodV4,\n {\n required: true,\n },\n ),\n isArray: false,\n };\n};\n\nconst parseParameters = ({\n data,\n context,\n operationName,\n isZodV4,\n strict,\n generate,\n}: {\n data: (ParameterObject | ReferenceObject)[] | undefined;\n context: ContextSpecs;\n operationName: string;\n isZodV4: boolean;\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 schema.description = parameter.description;\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 isZodV4,\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 const parameterFunctions = getParameterFunctions(\n isZodV4,\n strict.header,\n defintionsByParameters.headers,\n );\n\n headers.functions.push(...parameterFunctions);\n }\n\n const queryParams: ZodValidationSchemaDefinition = {\n functions: [],\n consts: [],\n };\n\n if (Object.keys(defintionsByParameters.queryParams).length) {\n const parameterFunctions = getParameterFunctions(\n isZodV4,\n strict.query,\n defintionsByParameters.queryParams,\n );\n\n queryParams.functions.push(...parameterFunctions);\n }\n\n const params: ZodValidationSchemaDefinition = {\n functions: [],\n consts: [],\n };\n\n if (Object.keys(defintionsByParameters.params).length) {\n const parameterFunctions = getParameterFunctions(\n isZodV4,\n strict.param,\n defintionsByParameters.params,\n );\n\n params.functions.push(...parameterFunctions);\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 isZodV4 =\n !!context.output.packageJson && isZodVersionV4(context.output.packageJson);\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 isZodV4,\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 isZodV4,\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 isZodV4,\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 override.zod.strict.param,\n isZodV4,\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 override.zod.strict.query,\n isZodV4,\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 override.zod.strict.header,\n isZodV4,\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 override.zod.strict.body,\n isZodV4,\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 override.zod.strict.response,\n isZodV4,\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","import { compareVersions, PackageJson } from '@orval/core';\n\nconst getZodPackageVersion = (packageJson: PackageJson) => {\n return (\n packageJson.dependencies?.['zod'] ??\n packageJson.devDependencies?.['zod'] ??\n packageJson.peerDependencies?.['zod']\n );\n};\n\nexport const isZodVersionV4 = (packageJson: PackageJson) => {\n const version = getZodPackageVersion(packageJson);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '4.0.0');\n};\n\nexport const getZodDateFormat = (isZodV4: boolean) => {\n return isZodV4 ? 'iso.date' : 'date';\n};\n\nexport const getZodTimeFormat = (isZodV4: boolean) => {\n return isZodV4 ? 'iso.time' : 'time';\n};\n\nexport const getZodDateTimeFormat = (isZodV4: boolean) => {\n return isZodV4 ? 'iso.datetime' : 'datetime';\n};\n\nexport const getParameterFunctions = (\n isZodV4: boolean,\n strict: boolean,\n parameters: Record<string, any>,\n): [string, any][] => {\n if (isZodV4 && strict) {\n return [['strictObject', parameters]];\n } else {\n return strict\n ? [\n ['object', parameters],\n ['strict', undefined],\n ]\n : [['object', parameters]];\n }\n};\n\nexport const getObjectFunctionName = (isZodV4: boolean, strict: boolean) => {\n return isZodV4 && strict ? 'strictObject' : 'object';\n};\n"],"mappings":"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","names":["import_core","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.
|
|
3
|
+
"version": "7.10.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.
|
|
17
|
+
"@orval/core": "7.10.0",
|
|
18
18
|
"lodash.uniq": "^4.5.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|