bunext/dist/functions/bundler/plugins/ssr-virtual-files-plugin.js
2026-04-18 11:17:13 +01:00

32 lines
1.1 KiB
JavaScript

import path from "path";
import { log } from "../../../utils/log";
export default function ssrVirtualFilesPlugin({ entryToPage }) {
const virtualPlugin = {
name: "ssr-virtual-hydration",
setup(build) {
build.onResolve({ filter: /^ssr-virtual:/ }, (args) => {
const final_path = args.path.replace(/ssr-virtual:/, "");
return {
path: final_path,
namespace: "ssr-virtual",
};
});
build.onLoad({ filter: /.*/, namespace: "ssr-virtual" }, (args) => {
const target = entryToPage.get(args.path);
if (!target?.tsx)
return null;
const contents = target.tsx;
if (!contents.match(/export/)) {
return null;
}
return {
contents: contents || "",
loader: "tsx",
resolveDir: path.dirname(target.local_path),
};
});
},
};
return virtualPlugin;
}