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