diff --git a/dist/functions/bundler/plugins/esbuild-ctx-artifact-tracker.js b/dist/functions/bundler/plugins/esbuild-ctx-artifact-tracker.js index 24350c6..38775a9 100644 --- a/dist/functions/bundler/plugins/esbuild-ctx-artifact-tracker.js +++ b/dist/functions/bundler/plugins/esbuild-ctx-artifact-tracker.js @@ -4,6 +4,7 @@ import grabArtifactsFromBundledResults from "../grab-artifacts-from-bundled-resu import pagesSSRContextBundler from "../pages-ssr-context-bundler"; import buildOnstartErrorHandler from "../build-on-start-error-handler"; import apiRoutesContextBundler from "../api-routes-context-bundler"; +import _ from "lodash"; let build_start = 0; let build_starts = 0; const MAX_BUILD_STARTS = 2; @@ -31,7 +32,7 @@ export default function esbuildCTXArtifactTracker({ entryToPage, post_build_fn, const artifact = artifacts[i]; if (artifact?.local_path && global.BUNDLER_CTX_MAP) { global.BUNDLER_CTX_MAP[artifact.local_path] = - artifact; + _.merge(global.BUNDLER_CTX_MAP[artifact.local_path], artifact); } } post_build_fn?.({ artifacts }); diff --git a/dist/functions/bunext-init.d.ts b/dist/functions/bunext-init.d.ts index 7922da6..bd429d0 100644 --- a/dist/functions/bunext-init.d.ts +++ b/dist/functions/bunext-init.d.ts @@ -18,13 +18,13 @@ declare global { var LAST_BUILD_TIME: number; var BUNDLER_CTX_MAP: { [k: string]: BundlerCTXMap; - } | undefined; + }; var SSR_BUNDLER_CTX_MAP: { [k: string]: BundlerCTXMap; - } | undefined; + }; var API_ROUTES_BUNDLER_CTX_MAP: { [k: string]: BundlerCTXMap; - } | undefined; + }; var BUNDLER_REBUILDS: 0; var PAGES_SRC_WATCHER: FSWatcher | undefined; var CURRENT_VERSION: string | undefined; diff --git a/dist/functions/server/full-rebuild.js b/dist/functions/server/full-rebuild.js index 968f32c..9e9ddce 100644 --- a/dist/functions/server/full-rebuild.js +++ b/dist/functions/server/full-rebuild.js @@ -12,10 +12,8 @@ export default async function fullRebuild(params) { global.ROUTER.reload(); await global.BUNDLER_CTX?.dispose(); global.BUNDLER_CTX = undefined; - global.BUNDLER_CTX_MAP = {}; await global.SSR_BUNDLER_CTX?.dispose(); global.SSR_BUNDLER_CTX = undefined; - global.SSR_BUNDLER_CTX_MAP = {}; allPagesESBuildContextBundler({ post_build_fn: serverPostBuildFn, }); diff --git a/dist/functions/server/server-post-build-fn.js b/dist/functions/server/server-post-build-fn.js index 2fed30d..b3f379d 100644 --- a/dist/functions/server/server-post-build-fn.js +++ b/dist/functions/server/server-post-build-fn.js @@ -14,11 +14,14 @@ export default async function serverPostBuildFn() { continue; } const target_artifact = global.BUNDLER_CTX_MAP[controller.target_map.local_path]; - const mock_req = new Request(controller.page_url); + const mock_req = target_artifact.req + ? target_artifact.req.clone() + : new Request(controller.page_url); const { serverRes } = global.IS_SERVER_COMPONENT ? await grabPageComponent({ req: mock_req, return_server_res_only: true, + is_hydration: true, }) : {}; const final_artifact = { diff --git a/dist/functions/server/web-pages/grab-page-component.d.ts b/dist/functions/server/web-pages/grab-page-component.d.ts index 39c1034..21cb457 100644 --- a/dist/functions/server/web-pages/grab-page-component.d.ts +++ b/dist/functions/server/web-pages/grab-page-component.d.ts @@ -6,6 +6,7 @@ type Params = { retry?: boolean; return_server_res_only?: boolean; skip_server_res?: boolean; + is_hydration?: boolean; }; export default function grabPageComponent(params: Params): Promise; export {}; diff --git a/dist/functions/server/web-pages/grab-page-component.js b/dist/functions/server/web-pages/grab-page-component.js index e2546b1..7046368 100644 --- a/dist/functions/server/web-pages/grab-page-component.js +++ b/dist/functions/server/web-pages/grab-page-component.js @@ -13,7 +13,7 @@ class NotFoundError extends Error { } } export default async function grabPageComponent(params) { - const { req, file_path: passed_file_path, debug, return_server_res_only, skip_server_res, } = params; + const { req, file_path: passed_file_path, debug, return_server_res_only, skip_server_res, is_hydration, } = params; const url = req?.url ? new URL(req.url) : undefined; const router = global.ROUTER; let routeParams = undefined; @@ -39,13 +39,16 @@ export default async function grabPageComponent(params) { // log.error(errMsg); throw new Error(errMsg); } - const bundledMap = global.BUNDLER_CTX_MAP?.[file_path]; + const bundledMap = global.BUNDLER_CTX_MAP[file_path]; if (!bundledMap?.path) { console.log(global.BUNDLER_CTX_MAP); const errMsg = `No Bundled File Path for this request path!`; log.error(errMsg); throw new Error(errMsg); } + if (req && !is_hydration) { + global.BUNDLER_CTX_MAP[file_path].req = req; + } if (debug) { log.info(`bundledMap:`, bundledMap); } diff --git a/dist/types/index.d.ts b/dist/types/index.d.ts index 1374d0e..5252ae7 100644 --- a/dist/types/index.d.ts +++ b/dist/types/index.d.ts @@ -272,6 +272,7 @@ export type BundlerCTXMap = { url_path: string; file_name: string; css_path?: string; + req?: Request; }; export type GlobalHMRControllerObject = { controller: ReadableStreamDefaultController; diff --git a/package.json b/package.json index 97a32d6..83db493 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/bunext", - "version": "1.0.72", + "version": "1.0.73", "main": "dist/index.js", "module": "index.ts", "dependencies": { diff --git a/src/functions/bundler/plugins/esbuild-ctx-artifact-tracker.ts b/src/functions/bundler/plugins/esbuild-ctx-artifact-tracker.ts index c34d75e..8f42269 100644 --- a/src/functions/bundler/plugins/esbuild-ctx-artifact-tracker.ts +++ b/src/functions/bundler/plugins/esbuild-ctx-artifact-tracker.ts @@ -5,6 +5,7 @@ import grabArtifactsFromBundledResults from "../grab-artifacts-from-bundled-resu import pagesSSRContextBundler from "../pages-ssr-context-bundler"; import buildOnstartErrorHandler from "../build-on-start-error-handler"; import apiRoutesContextBundler from "../api-routes-context-bundler"; +import _ from "lodash"; let build_start = 0; let build_starts = 0; @@ -50,7 +51,10 @@ export default function esbuildCTXArtifactTracker({ const artifact = artifacts[i]; if (artifact?.local_path && global.BUNDLER_CTX_MAP) { global.BUNDLER_CTX_MAP[artifact.local_path] = - artifact; + _.merge( + global.BUNDLER_CTX_MAP[artifact.local_path], + artifact, + ); } } diff --git a/src/functions/bunext-init.ts b/src/functions/bunext-init.ts index 2194b1d..309a635 100644 --- a/src/functions/bunext-init.ts +++ b/src/functions/bunext-init.ts @@ -31,9 +31,9 @@ declare global { var ROUTER: FileSystemRouter; var HMR_CONTROLLERS: GlobalHMRControllerObject[]; var LAST_BUILD_TIME: number; - var BUNDLER_CTX_MAP: { [k: string]: BundlerCTXMap } | undefined; - var SSR_BUNDLER_CTX_MAP: { [k: string]: BundlerCTXMap } | undefined; - var API_ROUTES_BUNDLER_CTX_MAP: { [k: string]: BundlerCTXMap } | undefined; + var BUNDLER_CTX_MAP: { [k: string]: BundlerCTXMap }; + var SSR_BUNDLER_CTX_MAP: { [k: string]: BundlerCTXMap }; + var API_ROUTES_BUNDLER_CTX_MAP: { [k: string]: BundlerCTXMap }; var BUNDLER_REBUILDS: 0; var PAGES_SRC_WATCHER: FSWatcher | undefined; var CURRENT_VERSION: string | undefined; diff --git a/src/functions/server/full-rebuild.ts b/src/functions/server/full-rebuild.ts index 0830205..a99806a 100644 --- a/src/functions/server/full-rebuild.ts +++ b/src/functions/server/full-rebuild.ts @@ -17,11 +17,9 @@ export default async function fullRebuild(params?: { msg?: string }) { await global.BUNDLER_CTX?.dispose(); global.BUNDLER_CTX = undefined; - global.BUNDLER_CTX_MAP = {}; await global.SSR_BUNDLER_CTX?.dispose(); global.SSR_BUNDLER_CTX = undefined; - global.SSR_BUNDLER_CTX_MAP = {}; allPagesESBuildContextBundler({ post_build_fn: serverPostBuildFn, diff --git a/src/functions/server/server-post-build-fn.ts b/src/functions/server/server-post-build-fn.ts index 6375384..31ec242 100644 --- a/src/functions/server/server-post-build-fn.ts +++ b/src/functions/server/server-post-build-fn.ts @@ -24,12 +24,15 @@ export default async function serverPostBuildFn() { const target_artifact = global.BUNDLER_CTX_MAP[controller.target_map.local_path]; - const mock_req = new Request(controller.page_url); + const mock_req = target_artifact.req + ? target_artifact.req.clone() + : new Request(controller.page_url); const { serverRes } = global.IS_SERVER_COMPONENT ? await grabPageComponent({ req: mock_req, return_server_res_only: true, + is_hydration: true, }) : {}; diff --git a/src/functions/server/web-pages/grab-page-component.tsx b/src/functions/server/web-pages/grab-page-component.tsx index f956348..7e811f9 100644 --- a/src/functions/server/web-pages/grab-page-component.tsx +++ b/src/functions/server/web-pages/grab-page-component.tsx @@ -23,6 +23,7 @@ type Params = { retry?: boolean; return_server_res_only?: boolean; skip_server_res?: boolean; + is_hydration?: boolean; }; export default async function grabPageComponent( @@ -34,6 +35,7 @@ export default async function grabPageComponent( debug, return_server_res_only, skip_server_res, + is_hydration, } = params; const url = req?.url ? new URL(req.url) : undefined; @@ -72,7 +74,7 @@ export default async function grabPageComponent( throw new Error(errMsg); } - const bundledMap = global.BUNDLER_CTX_MAP?.[file_path]; + const bundledMap = global.BUNDLER_CTX_MAP[file_path]; if (!bundledMap?.path) { console.log(global.BUNDLER_CTX_MAP); @@ -81,6 +83,10 @@ export default async function grabPageComponent( throw new Error(errMsg); } + if (req && !is_hydration) { + global.BUNDLER_CTX_MAP[file_path].req = req; + } + if (debug) { log.info(`bundledMap:`, bundledMap); } diff --git a/src/types/index.ts b/src/types/index.ts index 0d316ce..e2e7bf3 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -310,6 +310,7 @@ export type BundlerCTXMap = { url_path: string; file_name: string; css_path?: string; + req?: Request; }; export type GlobalHMRControllerObject = {