@reckona/mreact-router 0.0.153 → 0.0.155
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/build.d.ts.map +1 -1
- package/dist/build.js +66 -2
- package/dist/build.js.map +1 -1
- package/dist/module-runner.d.ts +7 -0
- package/dist/module-runner.d.ts.map +1 -1
- package/dist/module-runner.js +82 -0
- package/dist/module-runner.js.map +1 -1
- package/dist/render.d.ts +6 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +43 -9
- package/dist/render.js.map +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +1 -0
- package/dist/vite.js.map +1 -1
- package/package.json +11 -11
- package/src/build.ts +99 -1
- package/src/module-runner.ts +113 -0
- package/src/render.ts +76 -8
- package/src/vite.ts +1 -0
package/dist/render.js
CHANGED
|
@@ -15,7 +15,7 @@ import { dispatchServerActionRequest, prepareRouteServerActions, } from "./actio
|
|
|
15
15
|
import { serverActionCookie } from "./csrf.js";
|
|
16
16
|
import { beginRouteCacheContext, cachedRouteResponse, cacheRouteResponse, routeCacheKey, routeCachePolicyFromSource, } from "./cache.js";
|
|
17
17
|
import { resolveRouterCacheLimit } from "./cache-config.js";
|
|
18
|
-
import { importAppRouterBuiltFileModule, importAppRouterFileModule, importAppRouterSourceModule, fileImportMetaUrlPlugin, } from "./module-runner.js";
|
|
18
|
+
import { importAppRouterBuiltFileModule, importAppRouterFileModule, importAppRouterSourceModule, fileImportMetaUrlPlugin, rewriteCompatVendorPlaceholderImportsForRunner, } from "./module-runner.js";
|
|
19
19
|
import { bytesResponse, htmlResponse } from "./http.js";
|
|
20
20
|
import { isNotFoundError, isRedirectError, rewriteLocation } from "./navigation.js";
|
|
21
21
|
import { createAppRouterImportPolicyPlugin } from "./import-policy.js";
|
|
@@ -193,7 +193,7 @@ function assertNoFatalServerDiagnostics(filename, diagnostics) {
|
|
|
193
193
|
}
|
|
194
194
|
const serverTransformCache = new Map();
|
|
195
195
|
const serverTransformCacheCounters = createRouterRuntimeCacheCounters();
|
|
196
|
-
|
|
196
|
+
const productionDynamicServerTransformWarned = new Set();
|
|
197
197
|
const serverSourceFileCache = new Map();
|
|
198
198
|
const serverSourceFileCacheCounters = createRouterRuntimeCacheCounters();
|
|
199
199
|
const routeSourceAnalysisCache = new Map();
|
|
@@ -347,6 +347,7 @@ export async function resolveAppRouterMiddleware(options) {
|
|
|
347
347
|
return { response: middlewareResponse, type: "response" };
|
|
348
348
|
}
|
|
349
349
|
async function renderAppRequestInternal(options) {
|
|
350
|
+
warnProductionRenderWithoutPrebuiltModules(options);
|
|
350
351
|
const timing = createRenderTiming(options.logger);
|
|
351
352
|
const clientRouteInferenceCache = options.clientRouteInferenceCache ?? createClientRouteInferenceCache();
|
|
352
353
|
let phaseStartedAt = renderTimingPhaseStartedAt(timing);
|
|
@@ -1742,7 +1743,15 @@ function transformServerModule(options) {
|
|
|
1742
1743
|
if (cached !== undefined) {
|
|
1743
1744
|
return cached;
|
|
1744
1745
|
}
|
|
1745
|
-
|
|
1746
|
+
// Only renders that were handed a prebuild map can have a prebuild gap;
|
|
1747
|
+
// dev servers pass no serverModules and transform at request time by design.
|
|
1748
|
+
if (options.serverModules !== undefined) {
|
|
1749
|
+
warnProductionDynamicServerTransform(options.filename, options.serverOutput, artifact === undefined
|
|
1750
|
+
? "no prebuilt server module for this output mode"
|
|
1751
|
+
: !prebuiltServerModuleOutputOptionsMatch(artifact, options.serverAwaitHydration === true ? { serverAwaitHydration: true } : {})
|
|
1752
|
+
? `serverAwaitHydration mismatch (artifact=${artifact.metadata?.serverAwaitHydration === true}, requested=${options.serverAwaitHydration === true})`
|
|
1753
|
+
: "stale prebuilt server module (source hash changed)");
|
|
1754
|
+
}
|
|
1746
1755
|
const output = transform({
|
|
1747
1756
|
code: options.code,
|
|
1748
1757
|
...(options.clientBoundaryImports === undefined
|
|
@@ -1762,12 +1771,37 @@ function transformServerModule(options) {
|
|
|
1762
1771
|
return output;
|
|
1763
1772
|
}
|
|
1764
1773
|
export const __transformServerModuleForTesting = transformServerModule;
|
|
1765
|
-
|
|
1766
|
-
|
|
1774
|
+
let productionRenderWithoutPrebuiltModulesWarned = false;
|
|
1775
|
+
export function __resetProductionRenderWarningsForTesting() {
|
|
1776
|
+
productionRenderWithoutPrebuiltModulesWarned = false;
|
|
1777
|
+
productionDynamicServerTransformWarned.clear();
|
|
1778
|
+
}
|
|
1779
|
+
// Covers the deployment that forgot prebuilt modules entirely; per-module
|
|
1780
|
+
// gaps inside a provided prebuild map are reported by
|
|
1781
|
+
// warnProductionDynamicServerTransform with the affected file instead.
|
|
1782
|
+
export function __warnProductionRenderWithoutPrebuiltModulesForTesting(options) {
|
|
1783
|
+
warnProductionRenderWithoutPrebuiltModules(options);
|
|
1784
|
+
}
|
|
1785
|
+
function warnProductionRenderWithoutPrebuiltModules(options) {
|
|
1786
|
+
if (process.env.NODE_ENV !== "production" ||
|
|
1787
|
+
options.dev === true ||
|
|
1788
|
+
options.serverModules !== undefined ||
|
|
1789
|
+
productionRenderWithoutPrebuiltModulesWarned) {
|
|
1790
|
+
return;
|
|
1791
|
+
}
|
|
1792
|
+
productionRenderWithoutPrebuiltModulesWarned = true;
|
|
1793
|
+
console.warn("mreact router: production render without prebuilt serverModules. Request-time transforms use development compiler settings; pass the build output's serverModules (or set dev: true for dev servers).");
|
|
1794
|
+
}
|
|
1795
|
+
function warnProductionDynamicServerTransform(filename, serverOutput, reason) {
|
|
1796
|
+
if (process.env.NODE_ENV !== "production") {
|
|
1797
|
+
return;
|
|
1798
|
+
}
|
|
1799
|
+
const warnedKey = `${filename}\0${serverOutput}`;
|
|
1800
|
+
if (productionDynamicServerTransformWarned.has(warnedKey)) {
|
|
1767
1801
|
return;
|
|
1768
1802
|
}
|
|
1769
|
-
productionDynamicServerTransformWarned
|
|
1770
|
-
console.warn(
|
|
1803
|
+
productionDynamicServerTransformWarned.add(warnedKey);
|
|
1804
|
+
console.warn(`mreact router: dynamic server transform path ran in production for ${filename} (serverOutput=${serverOutput}): ${reason}. Production deployments should provide prebuilt serverModules; otherwise request-time transforms use development compiler settings.`);
|
|
1771
1805
|
}
|
|
1772
1806
|
async function analyzeRouteSource(options) {
|
|
1773
1807
|
const sourceHash = memoizedHashText(options.code);
|
|
@@ -1873,7 +1907,7 @@ async function loadServerModule(code, sourcefile, serverModules, serverModuleCac
|
|
|
1873
1907
|
serverModuleCacheVersion,
|
|
1874
1908
|
});
|
|
1875
1909
|
}
|
|
1876
|
-
const moduleCode = prebuiltCode
|
|
1910
|
+
const moduleCode = prebuiltCode === undefined ? code : rewriteCompatVendorPlaceholderImportsForRunner(prebuiltCode);
|
|
1877
1911
|
const cacheKey = serverModuleCacheVersion === undefined
|
|
1878
1912
|
? undefined
|
|
1879
1913
|
: `server-component:${serverModuleCacheVersion}:${sourcefile}:${moduleCode === code ? codeHash : memoizedHashText(moduleCode)}:${importPolicyCacheKey(importPolicy)}:${viteDefineCacheKey(define)}:${vitePluginsCacheKey(vitePlugins)}`;
|
|
@@ -2198,7 +2232,7 @@ async function loadServerStreamModule(code, sourcefile, serverModules, serverMod
|
|
|
2198
2232
|
serverModuleCacheVersion,
|
|
2199
2233
|
});
|
|
2200
2234
|
}
|
|
2201
|
-
const moduleCode = prebuiltCode
|
|
2235
|
+
const moduleCode = prebuiltCode === undefined ? code : rewriteCompatVendorPlaceholderImportsForRunner(prebuiltCode);
|
|
2202
2236
|
const cacheKey = serverModuleCacheVersion === undefined
|
|
2203
2237
|
? undefined
|
|
2204
2238
|
: `server-stream-component:${serverModuleCacheVersion}:${sourcefile}:${moduleCode === code ? codeHash : memoizedHashText(moduleCode)}:${importPolicyCacheKey(importPolicy)}:${viteDefineCacheKey(define)}:${vitePluginsCacheKey(vitePlugins)}`;
|