@reckona/mreact-router 0.0.181 → 0.0.183
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +20 -8
- package/dist/actions.js.map +1 -1
- package/dist/build.d.ts +3 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +263 -5
- package/dist/build.js.map +1 -1
- package/dist/built-assets.d.ts.map +1 -1
- package/dist/built-assets.js +2 -2
- package/dist/built-assets.js.map +1 -1
- package/dist/cache-config.d.ts +1 -1
- package/dist/cache-config.d.ts.map +1 -1
- package/dist/cache-config.js.map +1 -1
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +18 -1
- package/dist/cache.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +16 -6
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/csrf.js +10 -6
- package/dist/csrf.js.map +1 -1
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +14 -1
- package/dist/navigation.js.map +1 -1
- package/dist/render.d.ts +4 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +96 -46
- package/dist/render.js.map +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +35 -4
- package/dist/vite.js.map +1 -1
- package/package.json +11 -11
- package/src/actions.ts +26 -9
- package/src/build.ts +398 -5
- package/src/built-assets.ts +2 -3
- package/src/cache-config.ts +1 -0
- package/src/cache.ts +20 -1
- package/src/client.ts +16 -6
- package/src/config.ts +8 -0
- package/src/csrf.ts +13 -6
- package/src/navigation.ts +16 -1
- package/src/render.ts +194 -78
- package/src/vite.ts +41 -4
package/dist/render.js
CHANGED
|
@@ -212,6 +212,8 @@ const routeOutOfOrderBoundaryAnalysisCache = new Map();
|
|
|
212
212
|
const routeOutOfOrderBoundaryAnalysisCacheCounters = createRouterRuntimeCacheCounters();
|
|
213
213
|
const routeLoaderModuleCache = new Map();
|
|
214
214
|
const routeLoaderModuleCacheCounters = createRouterRuntimeCacheCounters();
|
|
215
|
+
const routeMetadataModuleCache = new Map();
|
|
216
|
+
const routeMetadataModuleCacheCounters = createRouterRuntimeCacheCounters();
|
|
215
217
|
const middlewareModuleCache = new Map();
|
|
216
218
|
const middlewareModuleCacheCounters = createRouterRuntimeCacheCounters();
|
|
217
219
|
const serverRouteModuleCache = new Map();
|
|
@@ -223,6 +225,7 @@ const maxServerSourceFileCacheEntries = resolveRouterCacheLimit("SERVER_SOURCE_F
|
|
|
223
225
|
const maxRouteSourceAnalysisCacheEntries = resolveRouterCacheLimit("ROUTE_SOURCE_ANALYSIS", 512);
|
|
224
226
|
const maxRouteOutOfOrderBoundaryAnalysisCacheEntries = resolveRouterCacheLimit("ROUTE_OUT_OF_ORDER_BOUNDARY_ANALYSIS", 512);
|
|
225
227
|
const maxRouteLoaderModuleCacheEntries = resolveRouterCacheLimit("ROUTE_LOADER_MODULE", 512);
|
|
228
|
+
const maxRouteMetadataModuleCacheEntries = resolveRouterCacheLimit("ROUTE_METADATA_MODULE", 512);
|
|
226
229
|
const maxMiddlewareModuleCacheEntries = resolveRouterCacheLimit("MIDDLEWARE_MODULE", 64);
|
|
227
230
|
const maxServerRouteModuleCacheEntries = resolveRouterCacheLimit("SERVER_ROUTE_MODULE", 512);
|
|
228
231
|
const maxComposedRouteMetadataCacheEntries = resolveRouterCacheLimit("COMPOSED_ROUTE_METADATA", 512);
|
|
@@ -233,6 +236,7 @@ export function routerRenderRuntimeCacheStats() {
|
|
|
233
236
|
routerRuntimeCacheStat("route-source-analysis", routeSourceAnalysisCache, maxRouteSourceAnalysisCacheEntries, routeSourceAnalysisCacheCounters),
|
|
234
237
|
routerRuntimeCacheStat("route-out-of-order-boundary-analysis", routeOutOfOrderBoundaryAnalysisCache, maxRouteOutOfOrderBoundaryAnalysisCacheEntries, routeOutOfOrderBoundaryAnalysisCacheCounters),
|
|
235
238
|
routerRuntimeCacheStat("route-loader-module", routeLoaderModuleCache, maxRouteLoaderModuleCacheEntries, routeLoaderModuleCacheCounters),
|
|
239
|
+
routerRuntimeCacheStat("route-metadata-module", routeMetadataModuleCache, maxRouteMetadataModuleCacheEntries, routeMetadataModuleCacheCounters),
|
|
236
240
|
routerRuntimeCacheStat("middleware-module", middlewareModuleCache, maxMiddlewareModuleCacheEntries, middlewareModuleCacheCounters),
|
|
237
241
|
routerRuntimeCacheStat("server-route-module", serverRouteModuleCache, maxServerRouteModuleCacheEntries, serverRouteModuleCacheCounters),
|
|
238
242
|
routerRuntimeCacheStat("composed-route-metadata", composedRouteMetadataCache, maxComposedRouteMetadataCacheEntries, composedRouteMetadataCacheCounters),
|
|
@@ -304,9 +308,9 @@ function addRenderTimingPhaseDuration(timing, startedAt, phaseName) {
|
|
|
304
308
|
timing.phases[phaseName] = (timing.phases[phaseName] ?? 0) + logDurationMs(startedAt);
|
|
305
309
|
}
|
|
306
310
|
function routeLoaderMayReturnControlResponse(code) {
|
|
307
|
-
return /\b(?:redirect|redirectExternal|rewrite|notFound|throwNotFound)\s*\(/.test(code) ||
|
|
311
|
+
return (/\b(?:redirect|redirectExternal|rewrite|notFound|throwNotFound)\s*\(/.test(code) ||
|
|
308
312
|
/\bnew\s+Response\s*\(/.test(code) ||
|
|
309
|
-
/\bResponse\.(?:redirect|json)\s*\(/.test(code);
|
|
313
|
+
/\bResponse\.(?:redirect|json)\s*\(/.test(code));
|
|
310
314
|
}
|
|
311
315
|
async function waitForRenderPreload(options, timing) {
|
|
312
316
|
if (options.preload?.wait !== "before-render") {
|
|
@@ -368,7 +372,9 @@ async function renderAppRequestInternal(options) {
|
|
|
368
372
|
finishRenderTimingPhase(timing, phaseStartedAt, "routeScanMs");
|
|
369
373
|
const url = options.requestUrl ?? new URL(options.request.url);
|
|
370
374
|
phaseStartedAt = renderTimingPhaseStartedAt(timing);
|
|
371
|
-
const matched = options.matchedRoute ??
|
|
375
|
+
const matched = options.matchedRoute ??
|
|
376
|
+
options.routeMatcher?.match(url.pathname) ??
|
|
377
|
+
matchRoute(routes, url.pathname);
|
|
372
378
|
finishRenderTimingPhase(timing, phaseStartedAt, "routeMatchMs");
|
|
373
379
|
const hasMiddleware = options.skipMiddleware === true
|
|
374
380
|
? false
|
|
@@ -390,6 +396,7 @@ async function renderAppRequestInternal(options) {
|
|
|
390
396
|
? { request: options.request, type: "continue" }
|
|
391
397
|
: await resolveAppRouterMiddleware({
|
|
392
398
|
appDir: options.appDir,
|
|
399
|
+
devServerModuleCacheVersion: options.devServerModuleCacheVersion,
|
|
393
400
|
importPolicy: options.importPolicy,
|
|
394
401
|
instrumentation: options.instrumentation,
|
|
395
402
|
middlewareControl,
|
|
@@ -597,6 +604,7 @@ async function renderAppRequestInternal(options) {
|
|
|
597
604
|
filename: matched.route.file,
|
|
598
605
|
importPolicy: options.importPolicy,
|
|
599
606
|
instrumentation: options.instrumentation,
|
|
607
|
+
devServerModuleCacheVersion: options.devServerModuleCacheVersion,
|
|
600
608
|
request: options.request,
|
|
601
609
|
routeId: routeIdForPath(matched.route.path),
|
|
602
610
|
routePath: matched.route.path,
|
|
@@ -675,7 +683,7 @@ async function renderAppRequestInternal(options) {
|
|
|
675
683
|
params: matched.params,
|
|
676
684
|
queryClient,
|
|
677
685
|
request: options.request,
|
|
678
|
-
}, matched.route.file, options.serverModules, options.serverModuleCacheVersion, options.define, options.vitePlugins, undefined, options.importPolicy));
|
|
686
|
+
}, matched.route.file, options.serverModules, options.serverModuleCacheVersion, options.define, options.vitePlugins, undefined, options.importPolicy, options.devServerModuleCacheVersion));
|
|
679
687
|
const pageHtml = renderedPage.html;
|
|
680
688
|
const pageHtmlForLayout = clientRoute
|
|
681
689
|
? withHydrationMarkers({
|
|
@@ -728,6 +736,7 @@ async function renderAppRequestInternal(options) {
|
|
|
728
736
|
routes,
|
|
729
737
|
serverModules: options.serverModules,
|
|
730
738
|
serverModuleCacheVersion: options.serverModuleCacheVersion,
|
|
739
|
+
devServerModuleCacheVersion: options.devServerModuleCacheVersion,
|
|
731
740
|
serverSourceFiles: options.serverSourceFiles,
|
|
732
741
|
define: options.define,
|
|
733
742
|
vitePlugins: options.vitePlugins,
|
|
@@ -908,7 +917,7 @@ async function renderAppRequestInternal(options) {
|
|
|
908
917
|
params: matched.params,
|
|
909
918
|
queryClient,
|
|
910
919
|
request: options.request,
|
|
911
|
-
}, matched.route.file, options.serverModules, options.serverModuleCacheVersion, options.define, options.vitePlugins, timing, options.importPolicy));
|
|
920
|
+
}, matched.route.file, options.serverModules, options.serverModuleCacheVersion, options.define, options.vitePlugins, timing, options.importPolicy, options.devServerModuleCacheVersion));
|
|
912
921
|
finishRenderTimingPhase(timing, phaseStartedAt, "pageRenderMs");
|
|
913
922
|
const pageHtml = renderedPage.html;
|
|
914
923
|
// Wrap the page (not the full document) with the hydration marker so
|
|
@@ -969,6 +978,7 @@ async function renderAppRequestInternal(options) {
|
|
|
969
978
|
routes,
|
|
970
979
|
serverModules: options.serverModules,
|
|
971
980
|
serverModuleCacheVersion: options.serverModuleCacheVersion,
|
|
981
|
+
devServerModuleCacheVersion: options.devServerModuleCacheVersion,
|
|
972
982
|
serverSourceFiles: options.serverSourceFiles,
|
|
973
983
|
define: options.define,
|
|
974
984
|
vitePlugins: options.vitePlugins,
|
|
@@ -1049,6 +1059,7 @@ async function renderAppRequestInternal(options) {
|
|
|
1049
1059
|
filename: "error.mreact.tsx",
|
|
1050
1060
|
pageFile: matched.route.file,
|
|
1051
1061
|
});
|
|
1062
|
+
options.onRenderError?.(error);
|
|
1052
1063
|
const response = await renderSpecialRoute({
|
|
1053
1064
|
appDir: options.appDir,
|
|
1054
1065
|
assetBaseUrl: options.assetBaseUrl,
|
|
@@ -1571,6 +1582,7 @@ async function runMiddleware(options) {
|
|
|
1571
1582
|
serverModules: options.serverModules,
|
|
1572
1583
|
serverModuleCacheVersion: options.serverModuleCacheVersion,
|
|
1573
1584
|
serverSourceFiles: options.serverSourceFiles,
|
|
1585
|
+
devServerModuleCacheVersion: options.devServerModuleCacheVersion,
|
|
1574
1586
|
vitePlugins: options.vitePlugins,
|
|
1575
1587
|
});
|
|
1576
1588
|
}
|
|
@@ -1647,9 +1659,10 @@ async function collectAvailableMiddlewareIds(options) {
|
|
|
1647
1659
|
async function loadMiddlewareModule(options) {
|
|
1648
1660
|
const code = options.code ??
|
|
1649
1661
|
(await readServerSourceFile(options.file, options.serverModuleCacheVersion, options.serverSourceFiles));
|
|
1650
|
-
const
|
|
1662
|
+
const moduleCacheVersion = options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion;
|
|
1663
|
+
const cacheKey = moduleCacheVersion === undefined
|
|
1651
1664
|
? undefined
|
|
1652
|
-
: `middleware\0${options.
|
|
1665
|
+
: `middleware\0${options.serverModuleCacheVersion === undefined ? "dev" : "build"}\0${options.appDir}\0${options.file}\0${moduleCacheVersion}\0${memoizedHashText(code)}\0${importPolicyCacheKey(options.importPolicy)}\0${viteDefineCacheKey(options.define)}\0${vitePluginsCacheKey(options.vitePlugins)}`;
|
|
1653
1666
|
if (cacheKey !== undefined) {
|
|
1654
1667
|
const cached = readRouterRuntimeCacheEntry(middlewareModuleCache, cacheKey, middlewareModuleCacheCounters);
|
|
1655
1668
|
if (cached !== undefined) {
|
|
@@ -1663,6 +1676,7 @@ async function loadMiddlewareModule(options) {
|
|
|
1663
1676
|
file: options.file,
|
|
1664
1677
|
importPolicy: options.importPolicy,
|
|
1665
1678
|
prebuiltArtifact: prebuiltRequestModuleArtifact(options.serverModules, options.file, code),
|
|
1679
|
+
devServerModuleCacheVersion: options.devServerModuleCacheVersion,
|
|
1666
1680
|
serverModuleCacheVersion: options.serverModuleCacheVersion,
|
|
1667
1681
|
vitePlugins: options.vitePlugins,
|
|
1668
1682
|
}).catch((error) => {
|
|
@@ -1718,10 +1732,10 @@ async function loadBundledMiddlewareModule(options) {
|
|
|
1718
1732
|
vitePlugins: options.vitePlugins,
|
|
1719
1733
|
}));
|
|
1720
1734
|
return importAppRouterSourceModule({
|
|
1721
|
-
...(options.serverModuleCacheVersion === undefined
|
|
1735
|
+
...((options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion) === undefined
|
|
1722
1736
|
? {}
|
|
1723
1737
|
: {
|
|
1724
|
-
cacheKey: `middleware:${options.file}:${options.serverModuleCacheVersion}:${memoizedHashText(compiled)}:${viteDefineCacheKey(options.define)}:${vitePluginsCacheKey(options.vitePlugins)}`,
|
|
1738
|
+
cacheKey: `middleware:${options.serverModuleCacheVersion === undefined ? "dev" : "build"}:${options.file}:${options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion}:${memoizedHashText(compiled)}:${viteDefineCacheKey(options.define)}:${vitePluginsCacheKey(options.vitePlugins)}`,
|
|
1725
1739
|
}),
|
|
1726
1740
|
code: compiled,
|
|
1727
1741
|
define: options.define,
|
|
@@ -1897,9 +1911,9 @@ async function runServerModule(code, props, sourcefile, serverModules, serverMod
|
|
|
1897
1911
|
async function renderServerComponentResult(value) {
|
|
1898
1912
|
return typeof value === "string" ? value : renderReactNodeToString(value);
|
|
1899
1913
|
}
|
|
1900
|
-
async function runServerModuleWithSlots(code, props, sourcefile, serverModules, serverModuleCacheVersion, define, vitePlugins, timing, importPolicy) {
|
|
1914
|
+
async function runServerModuleWithSlots(code, props, sourcefile, serverModules, serverModuleCacheVersion, define, vitePlugins, timing, importPolicy, devServerModuleCacheVersion) {
|
|
1901
1915
|
const moduleLoadStartedAt = renderTimingPhaseStartedAt(timing);
|
|
1902
|
-
const module = await loadServerModule(code, sourcefile, serverModules, serverModuleCacheVersion, define, vitePlugins, importPolicy);
|
|
1916
|
+
const module = await loadServerModule(code, sourcefile, serverModules, serverModuleCacheVersion, define, vitePlugins, importPolicy, devServerModuleCacheVersion);
|
|
1903
1917
|
finishRenderTimingPhase(timing, moduleLoadStartedAt, "pageModuleLoadMs");
|
|
1904
1918
|
const component = selectServerComponent(module);
|
|
1905
1919
|
const componentStartedAt = renderTimingPhaseStartedAt(timing);
|
|
@@ -1913,7 +1927,7 @@ async function runServerModuleWithSlots(code, props, sourcefile, serverModules,
|
|
|
1913
1927
|
slots,
|
|
1914
1928
|
};
|
|
1915
1929
|
}
|
|
1916
|
-
async function loadServerModule(code, sourcefile, serverModules, serverModuleCacheVersion, define, vitePlugins, importPolicy) {
|
|
1930
|
+
async function loadServerModule(code, sourcefile, serverModules, serverModuleCacheVersion, define, vitePlugins, importPolicy, devServerModuleCacheVersion) {
|
|
1917
1931
|
const artifact = serverModules?.get(sourcefile)?.string;
|
|
1918
1932
|
const codeHash = memoizedHashText(code);
|
|
1919
1933
|
const prebuiltCode = prebuiltServerComponentModuleCode(artifact, code, codeHash);
|
|
@@ -1927,10 +1941,13 @@ async function loadServerModule(code, sourcefile, serverModules, serverModuleCac
|
|
|
1927
1941
|
serverModuleCacheVersion,
|
|
1928
1942
|
});
|
|
1929
1943
|
}
|
|
1930
|
-
const moduleCode = prebuiltCode === undefined
|
|
1931
|
-
|
|
1944
|
+
const moduleCode = prebuiltCode === undefined
|
|
1945
|
+
? code
|
|
1946
|
+
: rewriteCompatVendorPlaceholderImportsForRunner(prebuiltCode);
|
|
1947
|
+
const sourceModuleCacheVersion = serverModuleCacheVersion ?? devServerModuleCacheVersion;
|
|
1948
|
+
const cacheKey = sourceModuleCacheVersion === undefined
|
|
1932
1949
|
? undefined
|
|
1933
|
-
: `server-component:${serverModuleCacheVersion}:${sourcefile}:${moduleCode === code ? codeHash : memoizedHashText(moduleCode)}:${importPolicyCacheKey(importPolicy)}:${viteDefineCacheKey(define)}:${vitePluginsCacheKey(vitePlugins)}`;
|
|
1950
|
+
: `server-component:${serverModuleCacheVersion === undefined ? "dev" : "build"}:${sourceModuleCacheVersion}:${sourcefile}:${moduleCode === code ? codeHash : memoizedHashText(moduleCode)}:${importPolicyCacheKey(importPolicy)}:${viteDefineCacheKey(define)}:${vitePluginsCacheKey(vitePlugins)}`;
|
|
1934
1951
|
return await importAppRouterSourceModule({
|
|
1935
1952
|
cacheKey,
|
|
1936
1953
|
code: moduleCode,
|
|
@@ -2258,7 +2275,9 @@ async function loadServerStreamModule(code, sourcefile, serverModules, serverMod
|
|
|
2258
2275
|
serverModuleCacheVersion,
|
|
2259
2276
|
});
|
|
2260
2277
|
}
|
|
2261
|
-
const moduleCode = prebuiltCode === undefined
|
|
2278
|
+
const moduleCode = prebuiltCode === undefined
|
|
2279
|
+
? code
|
|
2280
|
+
: rewriteCompatVendorPlaceholderImportsForRunner(prebuiltCode);
|
|
2262
2281
|
const cacheKey = serverModuleCacheVersion === undefined
|
|
2263
2282
|
? undefined
|
|
2264
2283
|
: `server-stream-component:${serverModuleCacheVersion}:${sourcefile}:${moduleCode === code ? codeHash : memoizedHashText(moduleCode)}:${importPolicyCacheKey(importPolicy)}:${viteDefineCacheKey(define)}:${vitePluginsCacheKey(vitePlugins)}`;
|
|
@@ -2524,8 +2543,7 @@ async function shellFilesForPage(appDir, pageFile, serverModuleCacheVersion) {
|
|
|
2524
2543
|
if (devCacheKey !== undefined) {
|
|
2525
2544
|
const directoryStats = await routeShellDirectoryStats(appDir, pageFile);
|
|
2526
2545
|
const cached = devShellFilesCache.get(devCacheKey);
|
|
2527
|
-
if (cached !== undefined &&
|
|
2528
|
-
sameFileStats(cached.directoryStats, directoryStats)) {
|
|
2546
|
+
if (cached !== undefined && sameFileStats(cached.directoryStats, directoryStats)) {
|
|
2529
2547
|
return cached.files;
|
|
2530
2548
|
}
|
|
2531
2549
|
const files = await shellFilesForPageUncached(appDir, pageFile);
|
|
@@ -2587,8 +2605,7 @@ async function hasAppMiddleware(options) {
|
|
|
2587
2605
|
if (cacheKey === undefined) {
|
|
2588
2606
|
const directoryStat = await fileStat(options.appDir);
|
|
2589
2607
|
const cached = devAppMiddlewareFileCache.get(options.appDir);
|
|
2590
|
-
if (cached !== undefined &&
|
|
2591
|
-
sameFileStat(cached.directoryStat, directoryStat)) {
|
|
2608
|
+
if (cached !== undefined && sameFileStat(cached.directoryStat, directoryStat)) {
|
|
2592
2609
|
return cached.hasMiddleware;
|
|
2593
2610
|
}
|
|
2594
2611
|
const hasMiddleware = await hasAppMiddlewareUncached(middlewareFiles);
|
|
@@ -2765,9 +2782,10 @@ async function loadRouteDataWithInstrumentation(options) {
|
|
|
2765
2782
|
}
|
|
2766
2783
|
}
|
|
2767
2784
|
async function loadRouteLoaderModule(options) {
|
|
2768
|
-
const
|
|
2785
|
+
const moduleCacheVersion = options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion;
|
|
2786
|
+
const cacheKey = moduleCacheVersion === undefined
|
|
2769
2787
|
? undefined
|
|
2770
|
-
: `${options.
|
|
2788
|
+
: `${options.serverModuleCacheVersion === undefined ? "dev" : "build"}\0${options.appDir}\0${options.filename}\0${moduleCacheVersion}\0${memoizedHashText(options.code)}\0${importPolicyCacheKey(options.importPolicy)}\0${viteDefineCacheKey(options.define)}\0${vitePluginsCacheKey(options.vitePlugins)}`;
|
|
2771
2789
|
if (cacheKey !== undefined) {
|
|
2772
2790
|
const cached = readRouterRuntimeCacheEntry(routeLoaderModuleCache, cacheKey, routeLoaderModuleCacheCounters);
|
|
2773
2791
|
if (cached !== undefined) {
|
|
@@ -2832,10 +2850,10 @@ async function loadBundledRouteLoaderModule(options) {
|
|
|
2832
2850
|
vitePlugins: options.vitePlugins,
|
|
2833
2851
|
}));
|
|
2834
2852
|
return await importAppRouterSourceModule({
|
|
2835
|
-
...(options.serverModuleCacheVersion === undefined
|
|
2853
|
+
...((options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion) === undefined
|
|
2836
2854
|
? {}
|
|
2837
2855
|
: {
|
|
2838
|
-
cacheKey: `loader:${options.filename}:${options.serverModuleCacheVersion}:${memoizedHashText(code)}:${viteDefineCacheKey(options.define)}`,
|
|
2856
|
+
cacheKey: `loader:${options.serverModuleCacheVersion === undefined ? "dev" : "build"}:${options.filename}:${options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion}:${memoizedHashText(code)}:${viteDefineCacheKey(options.define)}:${vitePluginsCacheKey(options.vitePlugins)}`,
|
|
2839
2857
|
}),
|
|
2840
2858
|
code,
|
|
2841
2859
|
define: options.define,
|
|
@@ -2855,19 +2873,54 @@ async function loadRouteMetadata(options) {
|
|
|
2855
2873
|
});
|
|
2856
2874
|
return await resolveRouteMetadataModule(module, options.context);
|
|
2857
2875
|
}
|
|
2858
|
-
const
|
|
2859
|
-
const module = await importAppRouterSourceModule({
|
|
2860
|
-
...(options.serverModuleCacheVersion === undefined
|
|
2861
|
-
? {}
|
|
2862
|
-
: {
|
|
2863
|
-
cacheKey: `metadata:${options.filename}:${options.serverModuleCacheVersion}:${memoizedHashText(code)}:${viteDefineCacheKey(options.define)}`,
|
|
2864
|
-
}),
|
|
2865
|
-
code,
|
|
2866
|
-
define: options.define,
|
|
2867
|
-
label: `metadata:${options.filename}`,
|
|
2868
|
-
});
|
|
2876
|
+
const module = await loadRouteMetadataModule(options, prebuiltArtifact);
|
|
2869
2877
|
return await resolveRouteMetadataModule(module, options.context);
|
|
2870
2878
|
}
|
|
2879
|
+
async function loadRouteMetadataModule(options, prebuiltArtifact) {
|
|
2880
|
+
if (prebuiltArtifact?.moduleFile !== undefined) {
|
|
2881
|
+
return await importBuiltServerModuleFile({
|
|
2882
|
+
file: prebuiltArtifact.moduleFile,
|
|
2883
|
+
label: `metadata:${options.filename}`,
|
|
2884
|
+
serverModuleCacheVersion: options.serverModuleCacheVersion,
|
|
2885
|
+
});
|
|
2886
|
+
}
|
|
2887
|
+
const sourceHash = memoizedHashText(options.code);
|
|
2888
|
+
const moduleCacheVersion = options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion;
|
|
2889
|
+
const moduleCacheKey = moduleCacheVersion === undefined
|
|
2890
|
+
? undefined
|
|
2891
|
+
: `metadata-module:${options.serverModuleCacheVersion === undefined ? "dev" : "build"}:${options.filename}:${moduleCacheVersion}:${sourceHash}:${viteDefineCacheKey(options.define)}:${vitePluginsCacheKey(options.vitePlugins)}`;
|
|
2892
|
+
if (moduleCacheKey !== undefined) {
|
|
2893
|
+
const cached = readRouterRuntimeCacheEntry(routeMetadataModuleCache, moduleCacheKey, routeMetadataModuleCacheCounters);
|
|
2894
|
+
if (cached !== undefined) {
|
|
2895
|
+
return await cached;
|
|
2896
|
+
}
|
|
2897
|
+
}
|
|
2898
|
+
const loaded = (async () => {
|
|
2899
|
+
const code = prebuiltArtifact?.code ?? (await bundleRouteMetadataModuleCode(options));
|
|
2900
|
+
return await importAppRouterSourceModule({
|
|
2901
|
+
...(moduleCacheVersion === undefined
|
|
2902
|
+
? {}
|
|
2903
|
+
: {
|
|
2904
|
+
cacheKey: `metadata:${options.serverModuleCacheVersion === undefined ? "dev" : "build"}:${options.filename}:${moduleCacheVersion}:${memoizedHashText(code)}:${viteDefineCacheKey(options.define)}`,
|
|
2905
|
+
}),
|
|
2906
|
+
code,
|
|
2907
|
+
define: options.define,
|
|
2908
|
+
label: `metadata:${options.filename}`,
|
|
2909
|
+
});
|
|
2910
|
+
})();
|
|
2911
|
+
if (moduleCacheKey !== undefined) {
|
|
2912
|
+
setBoundedCacheEntry(routeMetadataModuleCache, moduleCacheKey, loaded, maxRouteMetadataModuleCacheEntries, routeMetadataModuleCacheCounters);
|
|
2913
|
+
}
|
|
2914
|
+
try {
|
|
2915
|
+
return await loaded;
|
|
2916
|
+
}
|
|
2917
|
+
catch (error) {
|
|
2918
|
+
if (moduleCacheKey !== undefined) {
|
|
2919
|
+
routeMetadataModuleCache.delete(moduleCacheKey);
|
|
2920
|
+
}
|
|
2921
|
+
throw error;
|
|
2922
|
+
}
|
|
2923
|
+
}
|
|
2871
2924
|
async function resolveRouteMetadataModule(module, context) {
|
|
2872
2925
|
const staticMetadata = validateRouteMetadata(module.metadata);
|
|
2873
2926
|
if (module.generateMetadata === undefined) {
|
|
@@ -2937,9 +2990,10 @@ async function loadComposedRouteMetadata(options) {
|
|
|
2937
2990
|
}
|
|
2938
2991
|
}
|
|
2939
2992
|
function composedRouteMetadataCacheKey(options) {
|
|
2940
|
-
|
|
2993
|
+
const moduleCacheVersion = options.serverModuleCacheVersion ?? options.devServerModuleCacheVersion;
|
|
2994
|
+
return moduleCacheVersion === undefined
|
|
2941
2995
|
? undefined
|
|
2942
|
-
: `${options.appDir}\0${options.filename}\0${options.serverModuleCacheVersion}\0${memoizedHashText(options.code)}\0${importPolicyCacheKey(options.importPolicy)}\0${viteDefineCacheKey(options.define)}\0${vitePluginsCacheKey(options.vitePlugins)}`;
|
|
2996
|
+
: `${options.appDir}\0${options.filename}\0${options.serverModuleCacheVersion === undefined ? "dev" : "build"}\0${moduleCacheVersion}\0${memoizedHashText(options.code)}\0${importPolicyCacheKey(options.importPolicy)}\0${viteDefineCacheKey(options.define)}\0${vitePluginsCacheKey(options.vitePlugins)}`;
|
|
2943
2997
|
}
|
|
2944
2998
|
export const __composedRouteMetadataCacheKeyForTesting = composedRouteMetadataCacheKey;
|
|
2945
2999
|
async function loadComposedRouteMetadataUncached(options) {
|
|
@@ -2959,6 +3013,7 @@ async function loadComposedRouteMetadataUncached(options) {
|
|
|
2959
3013
|
importPolicy: options.importPolicy,
|
|
2960
3014
|
serverModules: options.serverModules,
|
|
2961
3015
|
serverModuleCacheVersion: options.serverModuleCacheVersion,
|
|
3016
|
+
devServerModuleCacheVersion: options.devServerModuleCacheVersion,
|
|
2962
3017
|
define: options.define,
|
|
2963
3018
|
vitePlugins: options.vitePlugins,
|
|
2964
3019
|
});
|
|
@@ -2972,6 +3027,7 @@ async function loadComposedRouteMetadataUncached(options) {
|
|
|
2972
3027
|
importPolicy: options.importPolicy,
|
|
2973
3028
|
serverModules: options.serverModules,
|
|
2974
3029
|
serverModuleCacheVersion: options.serverModuleCacheVersion,
|
|
3030
|
+
devServerModuleCacheVersion: options.devServerModuleCacheVersion,
|
|
2975
3031
|
define: options.define,
|
|
2976
3032
|
vitePlugins: options.vitePlugins,
|
|
2977
3033
|
});
|
|
@@ -3134,18 +3190,14 @@ function injectQueryState(html, state) {
|
|
|
3134
3190
|
return html;
|
|
3135
3191
|
}
|
|
3136
3192
|
const script = `<script type="application/json" id="${__MREACT_QUERY_STATE_SCRIPT_ID}">${escapeJsonForHtml(JSON.stringify(state))}</script>`;
|
|
3137
|
-
return /<\/body>/i.test(html)
|
|
3138
|
-
? replaceFinalBodyCloseTag(html, script)
|
|
3139
|
-
: `${html}${script}`;
|
|
3193
|
+
return /<\/body>/i.test(html) ? replaceFinalBodyCloseTag(html, script) : `${html}${script}`;
|
|
3140
3194
|
}
|
|
3141
3195
|
function injectAuthSessionClaims(html, claims) {
|
|
3142
3196
|
if (claims === undefined) {
|
|
3143
3197
|
return html;
|
|
3144
3198
|
}
|
|
3145
3199
|
const script = `<script type="application/json" id="${authSessionScriptId}">${escapeJsonForHtml(JSON.stringify(claims))}</script>`;
|
|
3146
|
-
return /<\/body>/i.test(html)
|
|
3147
|
-
? replaceFinalBodyCloseTag(html, script)
|
|
3148
|
-
: `${html}${script}`;
|
|
3200
|
+
return /<\/body>/i.test(html) ? replaceFinalBodyCloseTag(html, script) : `${html}${script}`;
|
|
3149
3201
|
}
|
|
3150
3202
|
function replaceFinalBodyCloseTag(html, insertion) {
|
|
3151
3203
|
const matches = [...html.matchAll(/<\/body>/gi)];
|
|
@@ -3198,9 +3250,7 @@ function readServerSourceFile(file, serverModuleCacheVersion, serverSourceFiles)
|
|
|
3198
3250
|
async function readDevServerSourceFile(file) {
|
|
3199
3251
|
const stats = await fileStat(file);
|
|
3200
3252
|
const cached = devServerSourceFileCache.get(file);
|
|
3201
|
-
if (cached !== undefined &&
|
|
3202
|
-
cached.mtimeMs === stats.mtimeMs &&
|
|
3203
|
-
cached.size === stats.size) {
|
|
3253
|
+
if (cached !== undefined && cached.mtimeMs === stats.mtimeMs && cached.size === stats.size) {
|
|
3204
3254
|
return cached.source;
|
|
3205
3255
|
}
|
|
3206
3256
|
const source = await readFile(file, "utf8");
|