UNPKG

alinea

Version:
51 lines (49 loc) 1 kB
import "../../chunks/chunk-NZLE2WMY.js"; // src/cli/util/Emitter.ts function createEmitter({ onReturn, onThrow } = {}) { const queue = []; let resolve; const push = (p) => { queue.push(p); if (resolve) { resolve(); resolve = void 0; } }; const iterator = { async next() { while (!queue.length) { await new Promise((_) => resolve = _); } const current = queue.pop(); switch (current.type) { case "emit": return { value: current.value, done: false }; case "error": throw current.value; case "finish": return { value: void 0, done: true }; } } }; return { emit: (value) => push({ type: "emit", value }), throw(e) { onThrow?.(e); push({ type: "error", value: e }); }, return() { onReturn?.(); push({ type: "finish" }); }, [Symbol.asyncIterator]() { return iterator; } }; } export { createEmitter };