Files
SnowLuma/.pnpm-store/v11/files/d5/d8dc300fa3ef488f358b6bd4a88f5c961803d372e653e7a38ac45ed12477ba63f31cbcf3b6549b0d20ff8c804cc5bc167799fc4f29f61a5c275f5ba67b8bb0
T
TanTan 2a69b23b47
Dev Build / cleanup (push) Waiting to run
Dev Build / typecheck (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

44 lines
1.5 KiB
Plaintext

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.stores.matches.get().map((match) => match.headers);
const redirect = opts.router.stores.redirect.get();
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