Add request cookie to HMR reload pipeline

This commit is contained in:
Benjamin Toby 2026-07-31 07:21:52 +01:00
parent 9da1e16318
commit 596b9de047
7 changed files with 17 additions and 5 deletions

View File

@ -6,6 +6,7 @@ function removeController(controller) {
}
export default async function ({ req }) {
const referer = req.headers.get("referer");
const page_cookie = req.headers.get("cookie");
if (!referer) {
return new Response("Missing Referer Header", { status: 400 });
}
@ -29,6 +30,7 @@ export default async function ({ req }) {
controller: c,
page_url: referer_url.href,
target_map,
page_cookie,
});
heartbeat = setInterval(() => {
try {

View File

@ -34,9 +34,11 @@ export default async function serverPostBuildFn(params) {
continue;
}
const mock_req = target_artifact.req_url
? new Request(target_artifact.req_url)
? new Request(target_artifact.req_url, {})
: new Request(controller.page_url);
// Always re-run server fns so fixed errors clear on the first HMR
if (controller.page_cookie) {
mock_req.headers.set("cookie", controller.page_cookie);
}
const page_component = await grabPageComponent({
req: mock_req,
return_server_res_only: true,

View File

@ -314,6 +314,7 @@ export type GlobalHMRControllerObject = {
target_map?: BundlerCTXMap;
page_props?: any;
page_reloaded?: boolean;
page_cookie?: string | null;
};
export type BunextCacheFileMeta = {
date_created: number;

View File

@ -1,6 +1,6 @@
{
"name": "@moduletrace/bunext",
"version": "1.0.101",
"version": "1.0.102",
"main": "dist/index.js",
"module": "index.ts",
"dependencies": {

View File

@ -13,6 +13,8 @@ function removeController(controller: ReadableStreamDefaultController<string>) {
export default async function ({ req }: Params): Promise<Response> {
const referer = req.headers.get("referer");
const page_cookie = req.headers.get("cookie");
if (!referer) {
return new Response("Missing Referer Header", { status: 400 });
}
@ -39,6 +41,7 @@ export default async function ({ req }: Params): Promise<Response> {
controller: c,
page_url: referer_url.href,
target_map,
page_cookie,
});
heartbeat = setInterval(() => {
try {

View File

@ -47,10 +47,13 @@ export default async function serverPostBuildFn(params?: Params) {
}
const mock_req = target_artifact.req_url
? new Request(target_artifact.req_url)
? new Request(target_artifact.req_url, {})
: new Request(controller.page_url);
// Always re-run server fns so fixed errors clear on the first HMR
if (controller.page_cookie) {
mock_req.headers.set("cookie", controller.page_cookie);
}
const page_component = await grabPageComponent({
req: mock_req,
return_server_res_only: true,

View File

@ -353,6 +353,7 @@ export type GlobalHMRControllerObject = {
target_map?: BundlerCTXMap;
page_props?: any;
page_reloaded?: boolean;
page_cookie?: string | null;
};
export type BunextCacheFileMeta = {