@sls-next/core
Version:
Handles Next.js routing independent of provider
44 lines (43 loc) • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.usedSSR = void 0;
const locale_1 = require("../route/locale");
/*
* Dynamic SSR + dynamic SSG fallback + dynamic SSG with ISR
*/
const filterDynamic = (manifest) => {
const isrSources = {};
for (const ssg of Object.values(manifest.pages.ssg.nonDynamic)) {
if (ssg.initialRevalidateSeconds && ssg.srcRoute) {
isrSources[ssg.srcRoute] = true;
}
}
return Object.fromEntries(Object.entries(manifest.pages.ssr.dynamic).filter(([key]) => {
const dynamicSSG = manifest.pages.ssg.dynamic[key];
return !dynamicSSG || dynamicSSG.fallback !== false || isrSources[key];
}));
};
/*
* Non-dynamic SSR + non-dynamic SSG with ISR
*/
const filterNonDynamic = (manifest, routesManifest) => {
const ssgPages = manifest.pages.ssg.nonDynamic;
return Object.fromEntries(Object.entries(manifest.pages.ssr.nonDynamic).filter(([key]) => {
const nonDynamicSSG = ssgPages[key] || ssgPages[(0, locale_1.addDefaultLocaleToPath)(key, routesManifest)];
return !nonDynamicSSG || nonDynamicSSG.initialRevalidateSeconds;
}));
};
/*
* Keeps only required SSR pages.
*/
const usedSSR = (manifest, routesManifest) => {
// If there are API pages, preview mode is possible meaning everything has to be kept
if (manifest.hasApiPages) {
return manifest.pages.ssr;
}
return {
dynamic: filterDynamic(manifest),
nonDynamic: filterNonDynamic(manifest, routesManifest)
};
};
exports.usedSSR = usedSSR;