Skip to content

Commit 74efcf9

Browse files
QuentinJanuelastahmer
authored andcommitted
fix: format in array
1 parent 6828abd commit 74efcf9

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

lib/src/openApiToZod.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,15 @@ export function getZodSchema({ schema: $schema, ctx, meta: inheritedMeta, option
213213
if (schemaType === "array") {
214214
if (schema.items) {
215215
return code.assign(
216-
`z.array(${getZodSchema({ schema: schema.items, ctx, meta, options }).toString()})${readonly}`
216+
`z.array(${
217+
getZodSchema({ schema: schema.items, ctx, meta, options }).toString()
218+
}${
219+
getZodChain({
220+
schema: schema.items as SchemaObject,
221+
meta: { ...meta, isRequired: true },
222+
options,
223+
})
224+
})${readonly}`
217225
);
218226
}
219227

lib/tests/validations.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ test("validations", () => {
3636
array: { type: "array", items: { type: "string" } },
3737
arrayWithMin: { type: "array", items: { type: "string" }, minItems: 3 },
3838
arrayWithMax: { type: "array", items: { type: "string" }, maxItems: 3 },
39+
arrayWithFormat: { type: "array", items: { type: "string", format: "uuid" } },
3940
// TODO ?
4041
// arrayWithUnique: { type: "array", items: { type: "string" }, uniqueItems: true },
4142
//
@@ -61,6 +62,6 @@ test("validations", () => {
6162
},
6263
})
6364
).toMatchInlineSnapshot(
64-
'"z.object({ str: z.string(), strWithLength: z.string().min(3).max(3), strWithMin: z.string().min(3), strWithMax: z.string().max(3), strWithPattern: z.string().regex(/^[a-z]+$/), strWithPatternWithSlash: z.string().regex(/abc\\/def\\/ghi/), email: z.string().email(), hostname: z.string().url(), url: z.string().url(), uuid: z.string().uuid(), number: z.number(), int: z.number().int(), intWithMin: z.number().int().gte(3), intWithMax: z.number().int().lte(3), intWithMinAndMax: z.number().int().gte(3).lte(3), intWithExclusiveMinTrue: z.number().int().gt(3), intWithExclusiveMinFalse: z.number().int().gte(3), intWithExclusiveMin: z.number().int().gt(3), intWithExclusiveMaxTrue: z.number().int().lt(3), intWithExclusiveMaxFalse: z.number().int().lte(3), intWithExclusiveMax: z.number().int().lt(3), intWithMultipleOf: z.number().int().multipleOf(3), bool: z.boolean(), array: z.array(z.string()), arrayWithMin: z.array(z.string()).min(3), arrayWithMax: z.array(z.string()).max(3), object: z.object({ str: z.string() }).passthrough(), objectWithRequired: z.object({ str: z.string() }).passthrough(), oneOf: z.union([z.string(), z.number()]), anyOf: z.union([z.string(), z.number()]), allOf: z.string().and(z.number()), nested: z.record(z.number()), nestedNullable: z.record(z.number().nullable()) }).passthrough()"'
65+
'"z.object({ str: z.string(), strWithLength: z.string().min(3).max(3), strWithMin: z.string().min(3), strWithMax: z.string().max(3), strWithPattern: z.string().regex(/^[a-z]+$/), strWithPatternWithSlash: z.string().regex(/abc\\/def\\/ghi/), email: z.string().email(), hostname: z.string().url(), url: z.string().url(), uuid: z.string().uuid(), number: z.number(), int: z.number().int(), intWithMin: z.number().int().gte(3), intWithMax: z.number().int().lte(3), intWithMinAndMax: z.number().int().gte(3).lte(3), intWithExclusiveMinTrue: z.number().int().gt(3), intWithExclusiveMinFalse: z.number().int().gte(3), intWithExclusiveMin: z.number().int().gt(3), intWithExclusiveMaxTrue: z.number().int().lt(3), intWithExclusiveMaxFalse: z.number().int().lte(3), intWithExclusiveMax: z.number().int().lt(3), intWithMultipleOf: z.number().int().multipleOf(3), bool: z.boolean(), array: z.array(z.string()), arrayWithMin: z.array(z.string()).min(3), arrayWithMax: z.array(z.string()).max(3), arrayWithFormat: z.array(z.string().uuid()), object: z.object({ str: z.string() }).passthrough(), objectWithRequired: z.object({ str: z.string() }).passthrough(), oneOf: z.union([z.string(), z.number()]), anyOf: z.union([z.string(), z.number()]), allOf: z.string().and(z.number()), nested: z.record(z.number()), nestedNullable: z.record(z.number().nullable()) }).passthrough()"'
6566
);
6667
});

0 commit comments

Comments
 (0)