UNPKG

piecemeal

Version:

Effortless incrementally deliver your data

26 lines (23 loc) 803 B
import { generate } from 'piecemeal'; const Encoder = new TextEncoder(); const asUTF8 = (input) => Encoder.encode(input); const stream = (data, requestInit = {}, options = {}) => { const { readable, writable } = new TransformStream(); const boundary = options.boundary || '-'; requestInit.headers = { ...requestInit.headers, connection: 'keep-alive', 'content-type': `multipart/mixed;boundary="${boundary}"`, 'transfer-encoding': 'chunked', }; const pipe = async () => { const writer = writable.getWriter(); await generate(data, boundary, (data) => writer.write(asUTF8(data))); return writer.releaseLock(); }; return { response: new Response(readable, requestInit), pipe, }; }; export { stream };