import type { BunextPageModule, BunextPageModuleServerReturn, BunextPageServerFn, BunxRouteParams, GrabPageComponentRes, } from "../../../types"; import _ from "lodash"; import { log } from "../../../utils/log"; type Params = { url?: URL; server_function?: BunextPageServerFn; query?: Record; routeParams?: BunxRouteParams; }; export default async function grabPageServerRes({ url, query, routeParams, server_function, }: Params): Promise { const default_props: BunextPageModuleServerReturn = { url: url ? { ...(_.pick(url, [ "host", "hostname", "pathname", "origin", "port", "search", "searchParams", "hash", "href", "password", "protocol", "username", ]) as any), } : null, query, }; try { if (routeParams && server_function) { const serverData = await server_function({ ...routeParams, query: { ...routeParams.query, ...query }, }); return { ...serverData, ...default_props, }; } return { ...default_props, }; } catch (error: any) { log.error( `Page ${url?.pathname} Server Error => ${error.message}\n`, error, ); return { ...default_props, error: error.message, }; } }