UNPKG

@langchain/langgraph-sdk

Version:

Client library for interacting with the LangGraph API

1 lines • 2.25 kB
{"version":3,"file":"store.cjs","names":["#listeners","#snapshot"],"sources":["../../src/stream/store.ts"],"sourcesContent":["/**\n * Minimal observable store backing every framework binding.\n *\n * The shape is intentionally tiny:\n *\n * - `subscribe(listener) → unsubscribe` lines up with React's\n * `useSyncExternalStore`.\n * - `getSnapshot()` returns a referentially-stable value for\n * unchanged state so React can bail out of renders.\n * - Vue/Svelte/Angular bindings wrap `subscribe` + `getSnapshot` in\n * their own reactivity primitive (`shallowRef` / `writable` /\n * `signal`) in ~10 lines.\n *\n * Snapshot identity matters: a listener is only useful if\n * `getSnapshot()` returns a *different* reference when state changes.\n * Callers MUST pass a freshly-constructed value to {@link setState};\n * mutating the previous snapshot in place will break React's bail-out\n * and cause infinite re-renders.\n */\n\nexport type StoreListener = () => void;\n\nexport class StreamStore<T> {\n #snapshot: T;\n readonly #listeners = new Set<StoreListener>();\n\n constructor(initial: T) {\n this.#snapshot = initial;\n }\n\n subscribe = (listener: StoreListener): (() => void) => {\n this.#listeners.add(listener);\n return () => {\n this.#listeners.delete(listener);\n };\n };\n\n getSnapshot = (): T => this.#snapshot;\n\n /** Replace the snapshot and notify every listener. */\n setValue = (next: T): void => {\n if (Object.is(next, this.#snapshot)) return;\n this.#snapshot = next;\n for (const listener of this.#listeners) listener();\n };\n\n /**\n * Functional update. The `updater` receives the current snapshot and\n * MUST return a new object. Returning the same reference is a no-op.\n */\n setState = (updater: (previous: T) => T): void => {\n this.setValue(updater(this.#snapshot));\n };\n}\n"],"mappings":";AAsBA,IAAa,cAAb,MAA4B;CAC1B;CACA,6BAAsB,IAAI,KAAoB;CAE9C,YAAY,SAAY;AACtB,QAAA,WAAiB;;CAGnB,aAAa,aAA0C;AACrD,QAAA,UAAgB,IAAI,SAAS;AAC7B,eAAa;AACX,SAAA,UAAgB,OAAO,SAAS;;;CAIpC,oBAAuB,MAAA;;CAGvB,YAAY,SAAkB;AAC5B,MAAI,OAAO,GAAG,MAAM,MAAA,SAAe,CAAE;AACrC,QAAA,WAAiB;AACjB,OAAK,MAAM,YAAY,MAAA,UAAiB,WAAU;;;;;;CAOpD,YAAY,YAAsC;AAChD,OAAK,SAAS,QAAQ,MAAA,SAAe,CAAC"}