| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // src/utils.ts
- 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
- };
|