@modern-js/utils
Version:
A Progressive React Framework for modern web development.
35 lines (34 loc) • 1.48 kB
JavaScript
import { MAIN_ENTRY_NAME } from "../constants.mjs";
import { isEmpty } from "./type.mjs";
const isSSR = (config)=>{
const { server } = config;
if (server?.ssr) return true;
if (server?.ssrByEntries && !isEmpty(server.ssrByEntries)) {
for (const name of Object.keys(server.ssrByEntries))if (server.ssrByEntries[name]) return true;
}
return false;
};
const isUseSSRBundle = (config)=>{
const { output } = config;
if (output?.ssg || output?.ssgByEntries && Object.keys(output?.ssgByEntries).length > 0) return true;
return isSSR(config);
};
const isUseRsc = (config)=>config?.server?.rsc;
const isServiceWorker = (config)=>{
const { output, deploy } = config;
if (deploy?.worker?.ssr && (output?.ssg || isSSR(config))) return true;
return false;
};
const isSSGEntry = (config, entryName, entrypoints)=>{
const { output, source } = config;
const single = isSingleEntry(entrypoints, source?.mainEntryName);
if (single) {
const byEntries = output?.ssgByEntries;
return Boolean(output?.ssg) || byEntries && !isEmpty(byEntries);
}
const byEntries = output?.ssgByEntries;
if (!byEntries || isEmpty(byEntries)) return false;
return Boolean(byEntries[entryName]);
};
const isSingleEntry = (entrypoints, mainEntryName = MAIN_ENTRY_NAME)=>1 === entrypoints.length && entrypoints[0].entryName === mainEntryName;
export { isSSGEntry, isSSR, isServiceWorker, isSingleEntry, isUseRsc, isUseSSRBundle };