vinext 1.4.2 → 1.4.3
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/README.md +4 -1
- package/dist/build/prerender-paths.d.ts +11 -1
- package/dist/build/prerender-paths.js +36 -10
- package/dist/cli.js +1 -1
- package/dist/client/dev-error-overlay.d.ts +2 -1
- package/dist/client/dev-error-overlay.js +8 -3
- package/dist/config/config-matchers.js +6 -2
- package/dist/config/next-config.d.ts +9 -0
- package/dist/entries/app-rsc-entry.js +24 -12
- package/dist/entries/pages-server-entry.js +17 -4
- package/dist/index.js +22 -25
- package/dist/init-platform.js +2 -2
- package/dist/init.js +42 -5
- package/dist/server/api-handler.js +7 -3
- package/dist/server/app-browser-entry.js +16 -37
- package/dist/server/app-browser-error.d.ts +1 -1
- package/dist/server/app-browser-error.js +13 -4
- package/dist/server/app-browser-supplemental-refresh.d.ts +13 -0
- package/dist/server/app-browser-supplemental-refresh.js +36 -4
- package/dist/server/app-middleware.d.ts +2 -0
- package/dist/server/app-middleware.js +1 -0
- package/dist/server/app-page-boundary-render.js +2 -0
- package/dist/server/app-page-dispatch.d.ts +1 -0
- package/dist/server/app-page-dispatch.js +5 -1
- package/dist/server/app-page-element-builder.d.ts +2 -0
- package/dist/server/app-page-element-builder.js +2 -1
- package/dist/server/app-page-route-wiring.d.ts +7 -5
- package/dist/server/app-page-route-wiring.js +3 -1
- package/dist/server/app-pages-bridge.d.ts +6 -0
- package/dist/server/app-pages-bridge.js +8 -3
- package/dist/server/app-request-stage-independent-entry.js +2 -3
- package/dist/server/app-router-entry.js +2 -3
- package/dist/server/app-rsc-cache-busting.d.ts +8 -0
- package/dist/server/app-rsc-cache-busting.js +13 -1
- package/dist/server/app-rsc-combined-handler.js +2 -1
- package/dist/server/app-rsc-handler.d.ts +4 -0
- package/dist/server/app-rsc-handler.js +39 -22
- package/dist/server/app-rsc-response-finalizer.d.ts +15 -3
- package/dist/server/app-rsc-response-finalizer.js +51 -7
- package/dist/server/app-ssr-entry.js +8 -0
- package/dist/server/config-headers.d.ts +7 -0
- package/dist/server/config-headers.js +20 -1
- package/dist/server/image-animation.d.ts +9 -0
- package/dist/server/image-animation.js +118 -0
- package/dist/server/image-optimization.d.ts +25 -5
- package/dist/server/image-optimization.js +305 -21
- package/dist/server/image-source-reader.d.ts +34 -0
- package/dist/server/image-source-reader.js +126 -0
- package/dist/server/metadata-route-response.d.ts +6 -1
- package/dist/server/metadata-route-response.js +22 -4
- package/dist/server/middleware-matcher.d.ts +1 -0
- package/dist/server/middleware-matcher.js +1 -1
- package/dist/server/middleware-runtime.d.ts +5 -0
- package/dist/server/middleware-runtime.js +48 -15
- package/dist/server/middleware.d.ts +1 -1
- package/dist/server/middleware.js +2 -1
- package/dist/server/nitro-request-target-plugin.d.ts +17 -0
- package/dist/server/nitro-request-target-plugin.js +22 -0
- package/dist/server/open-redirect.d.ts +2 -1
- package/dist/server/open-redirect.js +2 -1
- package/dist/server/pages-client-assets.d.ts +1 -0
- package/dist/server/pages-i18n.d.ts +7 -0
- package/dist/server/pages-i18n.js +14 -1
- package/dist/server/pages-node-compat.js +7 -3
- package/dist/server/pages-page-handler.js +4 -4
- package/dist/server/pages-request-pipeline.d.ts +9 -0
- package/dist/server/pages-request-pipeline.js +29 -10
- package/dist/server/pages-request-stage-entry.js +7 -2
- package/dist/server/pages-router-entry.js +3 -0
- package/dist/server/prod-server.d.ts +1 -1
- package/dist/server/prod-server.js +48 -54
- package/dist/server/srvx-middleware-origin.d.ts +13 -0
- package/dist/server/srvx-middleware-origin.js +19 -0
- package/dist/server/srvx-request-target.d.ts +12 -0
- package/dist/server/srvx-request-target.js +20 -0
- package/dist/server/static-file-cache.js +10 -22
- package/dist/server/worker-image-optimization.d.ts +8 -1
- package/dist/server/worker-image-optimization.js +25 -6
- package/dist/server/worker-revalidation-context.js +1 -0
- package/dist/shims/error-boundary.d.ts +6 -2
- package/dist/shims/error-boundary.js +4 -2
- package/dist/shims/request-context.d.ts +3 -1
- package/dist/shims/url-utils.js +6 -1
- package/dist/utils/client-entry-manifest.d.ts +5 -0
- package/dist/utils/client-entry-manifest.js +1 -0
- package/dist/utils/client-runtime-metadata.d.ts +5 -0
- package/dist/utils/client-runtime-metadata.js +33 -7
- package/package.json +1 -1
|
@@ -41,11 +41,28 @@ function collectCssGraph(buildManifest, applyBase) {
|
|
|
41
41
|
}
|
|
42
42
|
return Object.keys(cssGraph).length > 0 ? cssGraph : void 0;
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
/**
|
|
45
|
+
* The chunks the App Router browser entry statically imports, split by whether
|
|
46
|
+
* they can run ahead of the shell. A preinitialized module evaluates as soon as
|
|
47
|
+
* it loads, which on a reload can be before `<body>` has streamed. Evaluating
|
|
48
|
+
* the browser runtime starts hydration, so a chunk that holds or imports it is
|
|
49
|
+
* only preloaded, and runs when React's bootstrap script does. A user chunk
|
|
50
|
+
* group can put the runtime in one of these chunks.
|
|
51
|
+
*/
|
|
52
|
+
function collectAppBootstrapModules(buildManifest, appBrowserEntry, appBrowserRuntime, applyBase) {
|
|
53
|
+
if (!appBrowserEntry) return {};
|
|
46
54
|
const entryKey = Object.keys(buildManifest).find((key) => buildManifest[key].file === appBrowserEntry);
|
|
47
|
-
if (!entryKey) return
|
|
48
|
-
|
|
55
|
+
if (!entryKey) return {};
|
|
56
|
+
function evaluatesRuntime(key, seen = /* @__PURE__ */ new Set()) {
|
|
57
|
+
if (seen.has(key)) return false;
|
|
58
|
+
seen.add(key);
|
|
59
|
+
const chunk = buildManifest[key];
|
|
60
|
+
if (!chunk) return false;
|
|
61
|
+
if (chunk.file === appBrowserRuntime) return true;
|
|
62
|
+
return (chunk.imports ?? []).some((importedKey) => evaluatesRuntime(importedKey, seen));
|
|
63
|
+
}
|
|
64
|
+
const preinit = [];
|
|
65
|
+
const preload = [];
|
|
49
66
|
const seenFiles = /* @__PURE__ */ new Set();
|
|
50
67
|
const visitedChunks = /* @__PURE__ */ new Set();
|
|
51
68
|
function visit(key) {
|
|
@@ -57,18 +74,25 @@ function collectAppBootstrapPreinitModules(buildManifest, appBrowserEntry, apply
|
|
|
57
74
|
const importedChunk = buildManifest[importedKey];
|
|
58
75
|
if (importedChunk?.file.endsWith(".js") && !seenFiles.has(importedChunk.file)) {
|
|
59
76
|
seenFiles.add(importedChunk.file);
|
|
60
|
-
|
|
77
|
+
(evaluatesRuntime(importedKey) ? preload : preinit).push(applyBase(importedChunk.file));
|
|
61
78
|
}
|
|
62
79
|
visit(importedKey);
|
|
63
80
|
}
|
|
64
81
|
}
|
|
65
82
|
visit(entryKey);
|
|
66
|
-
return
|
|
83
|
+
return {
|
|
84
|
+
...preinit.length > 0 ? { preinit } : {},
|
|
85
|
+
...preload.length > 0 ? { preload } : {}
|
|
86
|
+
};
|
|
67
87
|
}
|
|
68
88
|
/**
|
|
69
89
|
* Read the client build manifest and compute runtime metadata used by
|
|
70
90
|
* Cloudflare worker entry injection and Node production server startup.
|
|
71
91
|
*
|
|
92
|
+
* - `appBootstrapPreinitModules` — chunks the App Router browser entry imports,
|
|
93
|
+
* preinitialized during SSR.
|
|
94
|
+
* - `appBootstrapPreloadModules` — those of them that would start hydration if
|
|
95
|
+
* evaluated ahead of the shell, preloaded during SSR instead.
|
|
72
96
|
* - `appRouteManifestModule` — the App Router RouteManifest chunk, which the
|
|
73
97
|
* browser entry imports as it boots, preloaded during SSR.
|
|
74
98
|
* - `appClientReferenceChunks` — what each App Router client reference loads
|
|
@@ -118,7 +142,9 @@ function computeClientRuntimeMetadata(opts) {
|
|
|
118
142
|
metadata.cssGraph = collectCssGraph(buildManifest, (file) => manifestFileWithBase(file, opts.assetBase));
|
|
119
143
|
metadata.sharedChunks = collectSharedChunkFiles(buildManifest, (file) => manifestFileWithBase(file, opts.assetBase));
|
|
120
144
|
}
|
|
121
|
-
|
|
145
|
+
const appBootstrapModules = collectAppBootstrapModules(buildManifest, clientEntryManifest?.appBrowserEntry, clientEntryManifest?.appBrowserRuntime, appAssetUrl);
|
|
146
|
+
metadata.appBootstrapPreinitModules = appBootstrapModules.preinit;
|
|
147
|
+
metadata.appBootstrapPreloadModules = appBootstrapModules.preload;
|
|
122
148
|
if (clientEntryManifest?.appRouteManifest) metadata.appRouteManifestModule = appAssetUrl(clientEntryManifest.appRouteManifest);
|
|
123
149
|
const lazyChunks = computeLazyChunks(buildManifest).map((file) => manifestFileWithBase(file, opts.assetBase));
|
|
124
150
|
if (lazyChunks.length > 0) metadata.lazyChunks = lazyChunks;
|