retort-js
Version:
Intuitive, production-ready prompt chaining in Javascript
28 lines (27 loc) • 754 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
let Done = Symbol("retort-stream-done");
function createStreamCloner(generator) {
let buffer = [];
async function iterate() {
let resolve;
let promise = new Promise((r) => resolve = r);
buffer.push(promise);
for await (const chunk of generator) {
resolve(chunk);
}
resolve(Done);
}
return async function* getStream() {
for (let i = 0; i < buffer.length; i++) {
let value = await buffer[i];
if (value === Done) {
return;
}
else {
yield value;
}
}
};
}
exports.default = createStreamCloner;