Files
WRNexusJS/packages/ssr/src/store-context.ts
T
Clintchiz 586a6db8ff
Quality / quality (ubuntu-latest) (push) Failing after 21s
Quality / quality (windows-latest) (push) Canceled after 0s
release: WRNexusJS 0.8.0
2026-08-02 23:18:51 +05:30

27 lines
1.1 KiB
TypeScript

import { serializeForHtml } from "@wrnexus/security";
import { escapeHtml } from "@wrnexus/core";
import { createRequestStoreContainer } from "@wrnexus/store/server";
import type { StoreContainer } from "@wrnexus/store";
const containers = new WeakMap<object, StoreContainer>();
export function requestStoreContainer(request: object, routeId?: string): StoreContainer {
const existing = containers.get(request);
if (existing) return existing;
const created: StoreContainer = createRequestStoreContainer(request, routeId);
containers.set(request, created);
return created;
}
export async function disposeRequestStores(request: object): Promise<void> {
const container = containers.get(request);
if (!container) return;
containers.delete(request);
await container.dispose();
}
export function renderStoreHydration(container: StoreContainer, nonce?: string): string {
const json = serializeForHtml(container.serialize());
return `<script type="application/json" data-wrnexus-store-hydration${nonce ? ` nonce="${escapeHtml(nonce)}"` : ""}>${json}</script>`;
}