import { buildSharedContext } from "./coordination.js"; export type Stack = [ start: () => () => ReadonlySet, consume: (tag: T) => void, ]; const context = buildSharedContext(); const [start, consume] = (context.stack ??= (() => { let current = new Set(); return [ () => { const prev = current; current = new Set(); return () => { const result = current; current = prev; return result as T; }; }, (tag: object) => { current.add(tag); }, ] satisfies Stack; })()); export { consume, start };