UNPKG

retort-js

Version:

Intuitive, production-ready prompt chaining in Javascript

28 lines (27 loc) 754 B
"use strict"; 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;