import { asyncIterableToStream } from 'https://ghuc.cc/qwtel/whatwg-stream-to-async-iter/index.ts';import { aMap, aJoin, promiseToAsyncIterable, ForOfAwaitable } from './iter.ts';
const isCFWorkers = (<any>self.navigator)?.userAgent?.includes('Cloudflare-Workers') || !('TextEncoderStream' in self)
export class StreamResponse extends Response { constructor(body: ForOfAwaitable<string>, init?: ResponseInit) { super(isCFWorkers ? (() => { const encoder = new TextEncoder(); return asyncIterableToStream(aMap(body, x => encoder.encode(x))) })() : asyncIterableToStream(body).pipeThrough(new TextEncoderStream()), init) }}
export class ByteStreamResponse extends Response { constructor(body: ForOfAwaitable<Uint8Array>, init?: ResponseInit) { super(asyncIterableToStream(body), init) }}
export class BufferedResponse extends Response { constructor(body: ForOfAwaitable<string>, init?: ResponseInit) { super(asyncIterableToStream(promiseToAsyncIterable( aJoin(body).then(str => new TextEncoder().encode(str))) ), init); }}