assistant-stream
Version:
Streaming utilities for AI assistants
23 lines (22 loc) • 1.05 kB
JavaScript
// src/utils/json/json-parser-backend.ts
const registryKey = Symbol.for("assistant-stream.json-parser-backends.v1");
const registryHost = globalThis;
/**
* Registers a backend for new shared JSON parsers in this JavaScript realm.
* The most recent registration takes precedence, including across package copies.
* The backend must preserve native values, metadata, and independent branches;
* returning undefined or throwing falls back to native parsing.
* Unregistering removes only this registration and leaves existing parsers intact.
*/
const registerJsonParserBackend = (factory) => {
const registrations = registryHost[registryKey] ??= [];
const registration = { factory };
registrations.push(registration);
return () => {
const index = registrations.indexOf(registration);
if (index !== -1) registrations.splice(index, 1);
};
};
const createJsonParserBackend = (context) => registryHost[registryKey]?.at(-1)?.factory(context);
export { createJsonParserBackend, registerJsonParserBackend };
//# sourceMappingURL=json-parser-backend.js.map