57 lines
1.5 KiB
TypeScript
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;
|
|
}
|