@vitejs/plugin-rsc
Version:
React Server Components (RSC) support for Vite.
62 lines (60 loc) • 1.85 kB
JavaScript
import { a as toReferenceValidationVirtual, i as toCssVirtual } from "./shared-AtH_QTi7.js";
import { createServerConsumerManifest, setRequireModule } from "./core/ssr.js";
import { callServer, createFromReadableStream, createServerReference, findSourceMapURL } from "./react/ssr.js";
import * as clientReferences from "virtual:vite-rsc/client-references";
import assetsManifest from "virtual:vite-rsc/assets-manifest";
import * as ReactDOM from "react-dom";
//#region src/ssr.tsx
initialize();
function initialize() {
setRequireModule({ load: async (id) => {
if (!import.meta.env.__vite_rsc_build__) {
await import(
/* @vite-ignore */
"/@id/__x00__" + toReferenceValidationVirtual({
id,
type: "client"
})
);
return wrapResourceProxy(await import(
/* @vite-ignore */
id
), {
js: [],
css: (await import(
/* @vite-ignore */
"/@id/__x00__" + toCssVirtual({
id,
type: "ssr"
})
)).default
});
} else {
const import_ = clientReferences.default[id];
if (!import_) throw new Error(`client reference not found '${id}'`);
const deps = assetsManifest.clientReferenceDeps[id];
if (deps) preloadDeps(deps);
return wrapResourceProxy(await import_(), deps);
}
} });
}
function wrapResourceProxy(mod, deps) {
return new Proxy(mod, { get(target, p, receiver) {
if (p in mod) {
if (deps) preloadDeps(deps);
}
return Reflect.get(target, p, receiver);
} });
}
function preloadDeps(deps) {
for (const href of deps.js) ReactDOM.preloadModule(href, {
as: "script",
crossOrigin: ""
});
for (const href of deps.css) ReactDOM.preinit(href, {
as: "style",
precedence: "vite-rsc/client-reference"
});
}
//#endregion
export { callServer, createFromReadableStream, createServerConsumerManifest, createServerReference, findSourceMapURL, setRequireModule };