{"version":3,"file":"zod.mjs","names":[],"sources":["../../src/schema/zod.ts"],"sourcesContent":["import * as z from 'zod/v4';\nimport type { PadroneSchema } from '../types/index.ts';\nimport { asyncStream } from '../util/stream.ts';\n\n/**\n * Creates a Zod schema for an async stream field, ready to use in `.arguments()`.\n * Wraps `z.custom<AsyncIterable<T>>()` with the `asyncStream()` metadata automatically.\n *\n * @param itemSchema - Optional item schema for per-item validation.\n *\n * @example\n * ```ts\n * import { zodAsyncStream } from 'padrone/zod';\n *\n * // String lines\n * z.object({ lines: zodAsyncStream() })\n *\n * // Typed items — each line JSON.parse'd and validated\n * const recordSchema = z.object({ name: z.string(), age: z.number() });\n * z.object({ records: zodAsyncStream(jsonCodec(recordSchema)) })\n * ```\n */\nexport function zodAsyncStream<T = string>(itemSchema?: PadroneSchema<unknown, T>) {\n  return z.custom<AsyncIterable<T>>().meta(asyncStream(itemSchema));\n}\n\n/**\n * JSON codec for Zod schemas\n * @see https://zod.dev/codecs?id=jsonschema\n * Unlike the example in the docs, this codec also handles the case where the input is already an object\n */\nexport const jsonCodec = <T extends z.ZodType>(schema: T) =>\n  z.codec(z.union([z.string(), z.unknown()]), schema, {\n    decode: (jsonString, ctx) => {\n      try {\n        // HACK: in some cases the object is already deserialized, we just need to validate it\n        if (typeof jsonString !== 'string') return jsonString as z.input<T>;\n        return JSON.parse(jsonString) as z.input<T>;\n      } catch (err: any) {\n        ctx.issues.push({\n          code: 'invalid_format',\n          format: 'json',\n          input: typeof jsonString === 'string' ? jsonString : JSON.stringify(jsonString),\n          message: err.message,\n        });\n        return z.NEVER;\n      }\n    },\n    encode: (value) => JSON.stringify(value),\n  });\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsBA,SAAgB,eAA2B,YAAwC;CACjF,OAAO,EAAE,OAAyB,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;AAClE;;;;;;AAOA,MAAa,aAAkC,WAC7C,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,CAAC,GAAG,QAAQ;CAClD,SAAS,YAAY,QAAQ;EAC3B,IAAI;GAEF,IAAI,OAAO,eAAe,UAAU,OAAO;GAC3C,OAAO,KAAK,MAAM,UAAU;EAC9B,SAAS,KAAU;GACjB,IAAI,OAAO,KAAK;IACd,MAAM;IACN,QAAQ;IACR,OAAO,OAAO,eAAe,WAAW,aAAa,KAAK,UAAU,UAAU;IAC9E,SAAS,IAAI;GACf,CAAC;GACD,OAAO,EAAE;EACX;CACF;CACA,SAAS,UAAU,KAAK,UAAU,KAAK;AACzC,CAAC"}