fix annotation

This commit is contained in:
Dax Raad
2026-03-21 09:11:15 -04:00
parent 9b805e1cc4
commit f80343b875
4 changed files with 13 additions and 7 deletions

View File

@@ -32,7 +32,7 @@ export namespace Auth {
token: Schema.String,
}) {}
const _Info = Schema.Union([Oauth, Api, WellKnown])
const _Info = Schema.Union([Oauth, Api, WellKnown]).annotate({ discriminator: "type", identifier: "Auth" })
export const Info = Object.assign(_Info, { zod: zod(_Info) })
export type Info = Schema.Schema.Type<typeof _Info>

View File

@@ -60,6 +60,12 @@ function union(ast: SchemaAST.Union): z.ZodTypeAny {
const items = ast.types.map(walk)
if (items.length === 1) return items[0]
if (items.length < 2) return fail(ast)
const discriminator = (ast as any).annotations?.discriminator
if (discriminator) {
return z.discriminatedUnion(discriminator, items as [z.ZodObject<any>, z.ZodObject<any>, ...z.ZodObject<any>[]])
}
return z.union(items as [z.ZodTypeAny, z.ZodTypeAny, ...Array<z.ZodTypeAny>])
}