from-node-stream
Version:
convert nodejs-stream into webstream
75 lines (70 loc) • 1.77 kB
JavaScript
// index.ts
import { mergeStream } from "sflow";
// fromReadable.ts
function fromReadable(i) {
return new ReadableStream({
start: (c) => {
i.on("data", (data) => c.enqueue(data));
i.on("close", () => c.close());
i.on("error", (err) => c.error(err));
},
cancel: (reason) => (i.destroy?.(reason), undefined)
});
}
// fromWritable.ts
function fromWritable(i) {
return new WritableStream({
start: (c) => (i.on("error", (err) => c.error(err)), undefined),
abort: (reason) => (i.destroy?.(reason), undefined),
write: (data, c) => (i.write(data), undefined),
close: () => (i.end(), undefined)
});
}
// index.ts
function fromStdioDropErr(p) {
return {
writable: fromWritable(p.stdin),
readable: fromReadable(p.stdout)
};
}
function fromStdioMergeError(p) {
const stdin = fromWritable(p.stdin);
const stdout = fromReadable(p.stdout);
const stderr = fromReadable(p.stderr);
return {
writable: stdin,
readable: mergeStream(stdout, stderr)
};
}
function fromStdioAndForwardError(p, { stderr }) {
const stdin = fromWritable(p.stdin);
const stdout = fromReadable(p.stdout);
if (p.stderr?.pipe)
fromReadable(p.stderr).pipeTo(fromWritable(stderr));
return {
writable: stdin,
readable: stdout
};
}
function fromStdio(p, {
stderr
} = {}) {
if (stderr === undefined) {
return fromStdioMergeError(p);
} else if (stderr === null) {
return fromStdioDropErr(p);
} else {
if (p.stderr?.pipe)
fromReadable(p.stderr).pipeTo(fromWritable(stderr));
return fromStdioDropErr(p);
}
}
export {
fromWritable,
fromStdioMergeError,
fromStdioDropErr,
fromStdioAndForwardError,
fromStdio,
fromReadable
};
//# debugId=C247144402D037BB64756E2164756E21