| |
| async function readWithoutBlocking(readPromise) { |
| return Promise.race([readPromise, Promise.resolve().then(() => Promise.resolve(void 0))]); |
| } |
| function writeFromReadableStreamDefaultReader(reader, writable, currentReadPromise) { |
| const cancel = (error) => { |
| reader.cancel(error).catch(() => { |
| }); |
| }; |
| writable.on("close", cancel); |
| writable.on("error", cancel); |
| (currentReadPromise ?? reader.read()).then(flow, handleStreamError); |
| return reader.closed.finally(() => { |
| writable.off("close", cancel); |
| writable.off("error", cancel); |
| }); |
| function handleStreamError(error) { |
| if (error) { |
| writable.destroy(error); |
| } |
| } |
| function onDrain() { |
| reader.read().then(flow, handleStreamError); |
| } |
| function flow({ done, value }) { |
| try { |
| if (done) { |
| writable.end(); |
| } else if (!writable.write(value)) { |
| writable.once("drain", onDrain); |
| } else { |
| return reader.read().then(flow, handleStreamError); |
| } |
| } catch (e) { |
| handleStreamError(e); |
| } |
| } |
| } |
| function writeFromReadableStream(stream, writable) { |
| if (stream.locked) { |
| throw new TypeError("ReadableStream is locked."); |
| } else if (writable.destroyed) { |
| return; |
| } |
| return writeFromReadableStreamDefaultReader(stream.getReader(), writable); |
| } |
| var buildOutgoingHttpHeaders = (headers) => { |
| const res = {}; |
| if (!(headers instanceof Headers)) { |
| headers = new Headers(headers ?? void 0); |
| } |
| const cookies = []; |
| for (const [k, v] of headers) { |
| if (k === "set-cookie") { |
| cookies.push(v); |
| } else { |
| res[k] = v; |
| } |
| } |
| if (cookies.length > 0) { |
| res["set-cookie"] = cookies; |
| } |
| res["content-type"] ??= "text/plain; charset=UTF-8"; |
| return res; |
| }; |
| export { |
| buildOutgoingHttpHeaders, |
| readWithoutBlocking, |
| writeFromReadableStream, |
| writeFromReadableStreamDefaultReader |
| }; |
|
|