release: WRNexusJS 0.6.0
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
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 = JSON.stringify(container.serialize()).replace(/</g, "\\u003c");
|
||||
return `<script type="application/json" data-wrnexus-store-hydration${nonce ? ` nonce="${nonce}"` : ""}>${json}</script>`;
|
||||
}
|
||||
Reference in New Issue
Block a user