interface UseJsonStreamProps<T extends z.ZodObject> {
schema: T
defaultData?: ZodStreamDefaultData<T>
onBeforeStart?: () => void
onStop?: () => void
onReceive?: (data: ZodStreamChunk<T>) => void
onEnd?: (data: z.output<T>) => void
}
interface UseJsonStreamResult<T extends z.ZodObject> {
data: ZodStreamValue<T>
loading: boolean
startStream: (options: StartStreamArgs) => Promise<void>
stopStream: () => void
}
data and onReceive are progressive input views. onEnd is validated output.
function consumeJsonStream<T extends z.ZodObject>(params: {
stream: ReadableStream<Uint8Array>
schema: T
onReceive?: (data: ZodStreamChunk<T>) => void
}): Promise<{
data: z.output<T>
lastChunk: ZodStreamChunk<T>
}>
interface StartStreamArgs {
url: string
body?: object
headers?: Record<string, string>
method?: "GET" | "POST"
}
Non-2xx responses reject with StreamRequestError, which exposes status and statusText.