bunext/src/functions/server/web-pages/generate-web-page-get-cache-page.tsx

57 lines
1.5 KiB
TypeScript

import _ from "lodash";
import type {
BunextPageModule,
BunextPageModuleServerReturn,
BunxRouteParams,
} from "../../../types";
import { log } from "../../../utils/log";
import writeCache from "../../cache/write-cache";
type Params = {
html: string;
module: BunextPageModule;
root_module?: BunextPageModule;
routeParams?: BunxRouteParams;
serverRes?: BunextPageModuleServerReturn<any, any>;
};
export default async function generateWebPageGetCachePage({
module,
routeParams,
serverRes,
root_module,
html,
}: Params) {
const config = _.merge(root_module?.config, module.config);
const cache_page = config?.cachePage || serverRes?.cachePage || false;
const expiry_seconds = config?.cacheExpiry || serverRes?.cacheExpiry;
if (cache_page && routeParams?.url) {
try {
const is_cache =
typeof cache_page == "boolean"
? cache_page
: await cache_page({ ctx: routeParams, serverRes });
if (!is_cache) {
return false;
}
const key =
routeParams.url.pathname + (routeParams.url.search || "");
writeCache({
key,
value: html,
paradigm: "html",
expiry_seconds,
});
} catch (error: any) {
log.error(`Error writing Cache => ${error.message}\n`, error);
}
}
return true;
}