UNPKG

@tanstack/router-core

Version:

Modern and scalable routing for React applications

45 lines (44 loc) 1.6 kB
require("../_virtual/_rolldown/runtime.cjs"); const require_headers = require("./headers.cjs"); const require_ssr_server = require("./ssr-server.cjs"); let _tanstack_history = require("@tanstack/history"); //#region src/ssr/createRequestHandler.ts function createRequestHandler({ createRouter, request, getRouterManifest }) { return async (cb) => { const router = createRouter(); let cbWillCleanup = false; try { require_ssr_server.attachRouterServerSsrUtils({ router, manifest: await getRouterManifest?.() }); const { url } = require_ssr_server.getNormalizedURL(request.url, "http://localhost"); const origin = require_ssr_server.getOrigin(request); const history = (0, _tanstack_history.createMemoryHistory)({ initialEntries: [url.href.replace(url.origin, "")] }); router.update({ history, origin: router.options.origin ?? origin }); await router.load(); await router.serverSsr?.dehydrate(); const responseHeaders = getRequestHeaders({ router }); cbWillCleanup = true; return cb({ request, router, responseHeaders }); } finally { if (!cbWillCleanup) router.serverSsr?.cleanup(); } }; } function getRequestHeaders(opts) { const matchHeaders = opts.router.state.matches.map((match) => match.headers); const { redirect } = opts.router.state; if (redirect) matchHeaders.push(redirect.headers); return require_headers.mergeHeaders({ "Content-Type": "text/html; charset=UTF-8" }, ...matchHeaders); } //#endregion exports.createRequestHandler = createRequestHandler; //# sourceMappingURL=createRequestHandler.cjs.map