rwsdk
Version:
Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime
23 lines (22 loc) • 860 B
JavaScript
import memoize from "lodash/memoize";
import { requestInfo } from "../requestInfo/worker";
import { ssrWebpackRequire as baseSsrWebpackRequire } from "rwsdk/__ssr_bridge";
export const loadServerModule = memoize(async (id) => {
const { useServerLookup } = await import("virtual:use-server-lookup.js");
const moduleFn = useServerLookup[id];
if (!moduleFn) {
throw new Error(`(worker) No module found for '${id}' in module lookup for "use server" directive`);
}
return await moduleFn();
});
export const getServerModuleExport = async (id) => {
const [file, name] = id.split("#");
const module = await loadServerModule(file);
return module[name];
};
export const ssrWebpackRequire = memoize(async (id) => {
if (!requestInfo.rw.ssr) {
return { [id]: () => null };
}
return baseSsrWebpackRequire(id);
});