Files
WRNexusJS/packages/store/src/client.ts
T
2026-08-01 01:09:58 +05:30

30 lines
883 B
TypeScript

import { createStoreContainer } from "./index.ts";
let globalContainer: ReturnType<typeof createStoreContainer> | undefined;
export function browserStoreContainer(hydration: Record<string, unknown> = {}) {
if (!globalContainer) {
globalContainer = createStoreContainer({
runtime: "client",
hydration,
onMutation(mutation) {
try {
globalThis.dispatchEvent?.(
new CustomEvent("wrnexus:store-mutation", { detail: mutation }),
);
} catch {
// Minimal DOM and non-browser runtimes may not expose CustomEvent.
}
},
});
(globalThis as any).__wrnexusStoreContainer = globalContainer;
}
return globalContainer;
}
export async function resetBrowserStores() {
await globalContainer?.dispose();
globalContainer = undefined;
delete (globalThis as any).__wrnexusStoreContainer;
}