streams
Version:
A lazy streams library for functional composition in JavaScript.
41 lines • 3.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const async_iterator_stream_1 = require("../../async-iterator-stream");
async_iterator_stream_1.AsyncIteratorStream.prototype.tee = function () {
// eslint-disable-next-line @typescript-eslint/no-this-alias
const self = this;
const buffers = new Set();
function next() {
const buffer = [];
buffers.add(buffer);
async function* tee() {
try {
while (true) {
if (buffer.length === 0) {
const next = await self.next();
buffers.forEach((buffer) => buffer.push(next));
}
const item = buffer.shift();
if (item.done) {
return item.value;
}
yield item.value;
}
}
finally {
buffers.delete(buffer);
if (buffers.size === 0) {
await self.return?.();
}
}
}
return { value: new async_iterator_stream_1.AsyncIteratorStream(tee()) };
}
function* asyncIteratorTee() {
yield* {
[Symbol.iterator]: () => ({ next }),
};
}
return asyncIteratorTee();
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZXJhdG9ycy9hc3luYy90ZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1RUFBa0U7QUFRbEUsMkNBQW1CLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRztJQUdsQyw0REFBNEQ7SUFDNUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBRWxCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFrQyxDQUFDO0lBRTFELFNBQVMsSUFBSTtRQUNYLE1BQU0sTUFBTSxHQUFHLEVBQW9DLENBQUM7UUFFcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwQixLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUc7WUFDakIsSUFBSSxDQUFDO2dCQUNILE9BQU8sSUFBSSxFQUFFLENBQUM7b0JBQ1osSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUN4QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDL0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUNqRCxDQUFDO29CQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUcsQ0FBQztvQkFDN0IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNwQixDQUFDO29CQUNELE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDbkIsQ0FBQztZQUNILENBQUM7b0JBQVMsQ0FBQztnQkFDVCxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2QixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3ZCLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSwyQ0FBbUIsQ0FBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFDLGdCQUFnQjtRQUN4QixLQUFLLENBQUMsQ0FBQztZQUNMLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sZ0JBQWdCLEVBQUUsQ0FBQztBQUM1QixDQUFDLENBQUMifQ==