import { stripFlushMarkers } from '../runtime/stream-protocol.ts' export type Assert = T export type Equal = (() => T extends X ? 1 : 2) extends () => T extends Y ? 1 : 2 ? true : false export async function drain(stream: ReadableStream): Promise { let reader = stream.getReader() let decoder = new TextDecoder() let html = '' while (true) { let { done, value } = await reader.read() if (done) break html += decoder.decode(value) } return stripFlushMarkers(html) } export function readChunks(stream: ReadableStream): AsyncGenerator { let reader = stream.getReader() let decoder = new TextDecoder() return (async function* () { while (true) { let { done, value } = await reader.read() if (done) break yield decoder.decode(value) } })() } export function withResolvers(): [ Promise, (value: T) => void, (error: unknown) => void, ] { let resolve!: (value: T) => void let reject!: (error: unknown) => void let promise = new Promise((res, rej) => { resolve = res reject = rej }) return [promise, resolve, reject] }