UNPKG

retort-js

Version:

Intuitive, production-ready prompt chaining in Javascript

31 lines (30 loc) 858 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); promise = new Promise((r) => resolve = r); buffer.push(promise); } resolve(Done); } iterate(); 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;