import _ from "lodash"; import { log } from "../../../utils/log"; import isDevelopment from "../../../utils/is-development"; export default async function grabPageServerRes({ url, query, routeParams, server_function, props, }) { const default_props = { url: url ? { ..._.pick(url, [ "host", "hostname", "pathname", "origin", "port", "search", "searchParams", "hash", "href", "protocol", ]), } : null, query, }; const init_props = props || null; try { if (routeParams && server_function) { const serverData = await server_function({ ...routeParams, query: { ...routeParams.query, ...query }, props: init_props || undefined, }); return _.merge(default_props, serverData); } return _.merge(default_props); } catch (error) { log.error(`Page ${url?.pathname} Server Error => ${error.message}\n`, error); // Error details can leak internals, so only expose them in // development. They are always logged above. return _.merge(default_props, { error: isDevelopment() ? error.message : "Internal Server Error", }); } }