UNPKG

@langchain/langgraph-sdk

Version:

Client library for interacting with the LangGraph API

1 lines • 2.22 kB
{"version":3,"file":"multi-cursor-buffer.cjs","names":["#items","#wakeups","#closed"],"sources":["../../../src/client/stream/multi-cursor-buffer.ts"],"sourcesContent":["/**\n * Multi-cursor buffer that supports independent async iterators over a\n * shared append-only log of items. Each `for await` loop gets its own\n * cursor starting at position 0, so late consumers still see all\n * previously buffered items.\n *\n * Mirrors the in-process multi-cursor buffering used by `GraphRunStream`.\n */\nexport class MultiCursorBuffer<T> implements AsyncIterable<T> {\n readonly #items: T[] = [];\n readonly #wakeups = new Set<() => void>();\n #closed = false;\n\n push(item: T): void {\n this.#items.push(item);\n for (const cb of this.#wakeups) cb();\n this.#wakeups.clear();\n }\n\n close(): void {\n this.#closed = true;\n for (const cb of this.#wakeups) cb();\n this.#wakeups.clear();\n }\n\n get length(): number {\n return this.#items.length;\n }\n\n [Symbol.asyncIterator](): AsyncIterator<T> {\n let cursor = 0;\n return {\n next: async (): Promise<IteratorResult<T>> => {\n while (true) {\n if (cursor < this.#items.length) {\n return { done: false, value: this.#items[cursor++] };\n }\n if (this.#closed) {\n return { done: true, value: undefined };\n }\n await new Promise<void>((resolve) => {\n this.#wakeups.add(resolve);\n });\n }\n },\n return: async () => ({ done: true, value: undefined }),\n };\n }\n}\n"],"mappings":";;;;;;;;;AAQA,IAAa,oBAAb,MAA8D;CAC5D,SAAuB,EAAE;CACzB,2BAAoB,IAAI,KAAiB;CACzC,UAAU;CAEV,KAAK,MAAe;AAClB,QAAA,MAAY,KAAK,KAAK;AACtB,OAAK,MAAM,MAAM,MAAA,QAAe,KAAI;AACpC,QAAA,QAAc,OAAO;;CAGvB,QAAc;AACZ,QAAA,SAAe;AACf,OAAK,MAAM,MAAM,MAAA,QAAe,KAAI;AACpC,QAAA,QAAc,OAAO;;CAGvB,IAAI,SAAiB;AACnB,SAAO,MAAA,MAAY;;CAGrB,CAAC,OAAO,iBAAmC;EACzC,IAAI,SAAS;AACb,SAAO;GACL,MAAM,YAAwC;AAC5C,WAAO,MAAM;AACX,SAAI,SAAS,MAAA,MAAY,OACvB,QAAO;MAAE,MAAM;MAAO,OAAO,MAAA,MAAY;MAAW;AAEtD,SAAI,MAAA,OACF,QAAO;MAAE,MAAM;MAAM,OAAO,KAAA;MAAW;AAEzC,WAAM,IAAI,SAAe,YAAY;AACnC,YAAA,QAAc,IAAI,QAAQ;OAC1B;;;GAGN,QAAQ,aAAa;IAAE,MAAM;IAAM,OAAO,KAAA;IAAW;GACtD"}