react-server675fbba4
react-serverfilespackagesreact-serverserverprerender-storage.mjs
packages/react-server/server/prerender-storage.mjsmjs791 Bc0e3f4cd
import { AsyncLocalStorage } from "node:async_hooks";

export const PrerenderStorage = (globalThis.__react_server_prerender__ =
  globalThis.__react_server_prerender__ || new AsyncLocalStorage());

export function getPrerender(type) {
  const store = PrerenderStorage.getStore();
  if (!type) return store;
  return store?.[type] ?? null;
}

export function prerender$(type, context) {
  const store = PrerenderStorage.getStore();
  const delta = typeof type === "object" ? type : { [type]: context };
  Reflect.ownKeys(delta).forEach((type) => {
    store[type] = delta[type];
  });
}

export async function init$(initialContext, callback) {
  return new Promise((resolve) => {
    PrerenderStorage.run(initialContext, async () => {
      await callback();
      resolve();
    });
  });
}