bunext/dist/functions/server/web-pages/grab-page-bundled-react-component.js

41 lines
1.3 KiB
JavaScript

import grabPageReactComponentString from "./grab-page-react-component-string";
import grabTsxStringModule from "./grab-tsx-string-module";
import { log } from "../../../utils/log";
import grabRootFilePath from "./grab-root-file-path";
import path from "path";
import grabDirNames from "../../../utils/grab-dir-names";
const { ROOT_DIR } = grabDirNames();
export default async function grabPageBundledReactComponent({ file_path, return_tsx_only, }) {
try {
if (global.SSR_BUNDLER_CTX_MAP?.[file_path]) {
const mod = await import(path.join(ROOT_DIR, global.SSR_BUNDLER_CTX_MAP[file_path].path));
const Main = mod.default;
return { component: Main };
}
const { root_file_path } = grabRootFilePath();
let tsx = grabPageReactComponentString({
file_path,
root_file_path,
});
if (!tsx) {
return undefined;
}
if (return_tsx_only) {
return { tsx };
}
const mod = await grabTsxStringModule({
tsx,
page_file_path: file_path,
});
const Main = mod.default;
return {
component: Main,
tsx,
};
}
catch (error) {
log.error(`grabPageBundledReactComponent Error: ${error.message}`, error);
return undefined;
}
}