Files
SnowLuma/.pnpm-store/v11/files/a9/6d6e1e5e98a35a523bf63f5d91e29184cd2ad4c35cdbd0eabe0163ffde9191a9d1900941841a06610b5dd74d0ce35ccc6dda2b27b8008439d66b1198034999
TanTan 2a69b23b47
Dev Build / cleanup (push) Canceled after 0s
Dev Build / typecheck (push) Canceled after 0s
Dev Build / build (linux-arm64, ubuntu-24.04-arm, linux-arm64) (push) Canceled after 0s
Dev Build / build (linux-x64, ubuntu-latest, linux-x64) (push) Canceled after 0s
Dev Build / build (win-x64, windows-latest, win32-x64) (push) Canceled after 0s
Dev Build / dispatch-dev-docker (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

65 lines
1.7 KiB
Plaintext

Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
let node_stream = require("node:stream");
let node_process = require("node:process");
//#region src/utils/stream.ts
const pr54206Applied = () => {
const [major, minor] = node_process.versions.node.split(".").map((component) => parseInt(component));
return major >= 23 || major === 22 && minor >= 7 || major === 20 && minor >= 18;
};
const useReadableToWeb = pr54206Applied();
const createStreamBody = (stream, useNativeReadableToWeb = useReadableToWeb) => {
if (useNativeReadableToWeb) return node_stream.Readable.toWeb(stream);
let controller;
let settled = false;
const cleanup = () => {
stream.off("data", onData);
stream.off("error", onError);
stream.off("end", onTerminate);
stream.off("close", onTerminate);
};
const settle = (callback) => {
if (settled) return;
settled = true;
cleanup();
callback?.();
};
const onData = (chunk) => {
if (settled || !controller) return;
controller.enqueue(chunk);
if ((controller.desiredSize ?? 0) <= 0) stream.pause();
};
const onError = (error) => {
settle(() => {
controller?.error(error);
});
};
const onTerminate = () => {
settle(() => {
controller?.close();
});
};
return new ReadableStream({
start(streamController) {
controller = streamController;
stream.on("data", onData);
stream.on("error", onError);
stream.on("end", onTerminate);
stream.on("close", onTerminate);
stream.pause();
},
pull() {
if (!settled) stream.resume();
},
cancel() {
settle();
const ignoreError = () => {};
stream.on("error", ignoreError);
stream.once("close", () => stream.off("error", ignoreError));
stream.destroy();
}
});
};
//#endregion
exports.createStreamBody = createStreamBody;