vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
81 lines (78 loc) • 2.8 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
import { createInputNormalizer } from './inputNormalizer.js';
import { DEFAULT_CONFIG } from '../config/defaults.js';
function getBundleManifest({
pluginContext,
bundle,
moduleBase,
preserveModulesRoot
}) {
const normalizer = createInputNormalizer({
root: pluginContext.environment.config.root,
removeExtension: DEFAULT_CONFIG.FILE_REGEX,
preserveModulesRoot: preserveModulesRoot === true ? moduleBase : undefined
});
if (!bundle) return {};
const virtualModules = /* @__PURE__ */ new Map();
const bundleManifest = Object.fromEntries(
Object.entries(bundle).map(([fileName, chunk]) => {
if (chunk.type !== "chunk") return null;
const chunkWithFacade = chunk;
const moduleId = chunkWithFacade.facadeModuleId || chunkWithFacade.moduleIds[0] || fileName;
if (moduleId.includes("commonjsHelpers")) {
return [
moduleId,
{
file: "commonjs-runtime.js",
name: "commonjsHelpers",
src: moduleId,
isEntry: false
}
];
}
let [normalizedId, sourcePath] = normalizer(moduleId);
let finalFileName = fileName;
if (moduleId.includes("?")) {
const [basePath, query] = moduleId.split("?");
const virtualPath = basePath.includes("node_modules") ? basePath.split("node_modules/")[1] : basePath;
const virtualKey = `${virtualPath}?${query}`;
if (!virtualModules.has(virtualKey)) {
const virtualFileName = `${virtualPath.replace(/\.js$/, "")}.${query}.js`;
virtualModules.set(virtualKey, virtualFileName);
}
finalFileName = virtualModules.get(virtualKey);
}
if (normalizedId.startsWith("\0")) {
normalizedId = normalizedId.slice(1);
}
if (sourcePath.startsWith("/")) {
sourcePath = sourcePath.slice(1);
}
if (moduleBase && preserveModulesRoot && normalizedId?.startsWith(moduleBase + "/")) {
normalizedId = normalizedId.slice(moduleBase.length + 1);
}
const bundleManifestEntry = [
sourcePath,
{
file: finalFileName,
name: normalizedId,
src: sourcePath,
isEntry: chunk.isEntry,
...chunk.imports?.length > 0 ? { imports: chunk.imports } : {},
...chunk.dynamicImports?.length > 0 ? { dynamicImports: chunk.dynamicImports } : {},
...chunk.viteMetadata?.importedCss?.size ? {
css: Array.from(chunk.viteMetadata.importedCss)
} : {}
}
];
return bundleManifestEntry;
}).filter(Boolean)
);
return bundleManifest;
}
export { getBundleManifest };
//# sourceMappingURL=getBundleManifest.js.map