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; }; 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; }