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.
Files changed (88) hide show
  1. package/README.md +4 -1
  2. package/dist/build/prerender-paths.d.ts +11 -1
  3. package/dist/build/prerender-paths.js +36 -10
  4. package/dist/cli.js +1 -1
  5. package/dist/client/dev-error-overlay.d.ts +2 -1
  6. package/dist/client/dev-error-overlay.js +8 -3
  7. package/dist/config/config-matchers.js +6 -2
  8. package/dist/config/next-config.d.ts +9 -0
  9. package/dist/entries/app-rsc-entry.js +24 -12
  10. package/dist/entries/pages-server-entry.js +17 -4
  11. package/dist/index.js +22 -25
  12. package/dist/init-platform.js +2 -2
  13. package/dist/init.js +42 -5
  14. package/dist/server/api-handler.js +7 -3
  15. package/dist/server/app-browser-entry.js +16 -37
  16. package/dist/server/app-browser-error.d.ts +1 -1
  17. package/dist/server/app-browser-error.js +13 -4
  18. package/dist/server/app-browser-supplemental-refresh.d.ts +13 -0
  19. package/dist/server/app-browser-supplemental-refresh.js +36 -4
  20. package/dist/server/app-middleware.d.ts +2 -0
  21. package/dist/server/app-middleware.js +1 -0
  22. package/dist/server/app-page-boundary-render.js +2 -0
  23. package/dist/server/app-page-dispatch.d.ts +1 -0
  24. package/dist/server/app-page-dispatch.js +5 -1
  25. package/dist/server/app-page-element-builder.d.ts +2 -0
  26. package/dist/server/app-page-element-builder.js +2 -1
  27. package/dist/server/app-page-route-wiring.d.ts +7 -5
  28. package/dist/server/app-page-route-wiring.js +3 -1
  29. package/dist/server/app-pages-bridge.d.ts +6 -0
  30. package/dist/server/app-pages-bridge.js +8 -3
  31. package/dist/server/app-request-stage-independent-entry.js +2 -3
  32. package/dist/server/app-router-entry.js +2 -3
  33. package/dist/server/app-rsc-cache-busting.d.ts +8 -0
  34. package/dist/server/app-rsc-cache-busting.js +13 -1
  35. package/dist/server/app-rsc-combined-handler.js +2 -1
  36. package/dist/server/app-rsc-handler.d.ts +4 -0
  37. package/dist/server/app-rsc-handler.js +39 -22
  38. package/dist/server/app-rsc-response-finalizer.d.ts +15 -3
  39. package/dist/server/app-rsc-response-finalizer.js +51 -7
  40. package/dist/server/app-ssr-entry.js +8 -0
  41. package/dist/server/config-headers.d.ts +7 -0
  42. package/dist/server/config-headers.js +20 -1
  43. package/dist/server/image-animation.d.ts +9 -0
  44. package/dist/server/image-animation.js +118 -0
  45. package/dist/server/image-optimization.d.ts +25 -5
  46. package/dist/server/image-optimization.js +305 -21
  47. package/dist/server/image-source-reader.d.ts +34 -0
  48. package/dist/server/image-source-reader.js +126 -0
  49. package/dist/server/metadata-route-response.d.ts +6 -1
  50. package/dist/server/metadata-route-response.js +22 -4
  51. package/dist/server/middleware-matcher.d.ts +1 -0
  52. package/dist/server/middleware-matcher.js +1 -1
  53. package/dist/server/middleware-runtime.d.ts +5 -0
  54. package/dist/server/middleware-runtime.js +48 -15
  55. package/dist/server/middleware.d.ts +1 -1
  56. package/dist/server/middleware.js +2 -1
  57. package/dist/server/nitro-request-target-plugin.d.ts +17 -0
  58. package/dist/server/nitro-request-target-plugin.js +22 -0
  59. package/dist/server/open-redirect.d.ts +2 -1
  60. package/dist/server/open-redirect.js +2 -1
  61. package/dist/server/pages-client-assets.d.ts +1 -0
  62. package/dist/server/pages-i18n.d.ts +7 -0
  63. package/dist/server/pages-i18n.js +14 -1
  64. package/dist/server/pages-node-compat.js +7 -3
  65. package/dist/server/pages-page-handler.js +4 -4
  66. package/dist/server/pages-request-pipeline.d.ts +9 -0
  67. package/dist/server/pages-request-pipeline.js +29 -10
  68. package/dist/server/pages-request-stage-entry.js +7 -2
  69. package/dist/server/pages-router-entry.js +3 -0
  70. package/dist/server/prod-server.d.ts +1 -1
  71. package/dist/server/prod-server.js +48 -54
  72. package/dist/server/srvx-middleware-origin.d.ts +13 -0
  73. package/dist/server/srvx-middleware-origin.js +19 -0
  74. package/dist/server/srvx-request-target.d.ts +12 -0
  75. package/dist/server/srvx-request-target.js +20 -0
  76. package/dist/server/static-file-cache.js +10 -22
  77. package/dist/server/worker-image-optimization.d.ts +8 -1
  78. package/dist/server/worker-image-optimization.js +25 -6
  79. package/dist/server/worker-revalidation-context.js +1 -0
  80. package/dist/shims/error-boundary.d.ts +6 -2
  81. package/dist/shims/error-boundary.js +4 -2
  82. package/dist/shims/request-context.d.ts +3 -1
  83. package/dist/shims/url-utils.js +6 -1
  84. package/dist/utils/client-entry-manifest.d.ts +5 -0
  85. package/dist/utils/client-entry-manifest.js +1 -0
  86. package/dist/utils/client-runtime-metadata.d.ts +5 -0
  87. package/dist/utils/client-runtime-metadata.js +33 -7
  88. 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
- function collectAppBootstrapPreinitModules(buildManifest, appBrowserEntry, applyBase) {
45
- if (!appBrowserEntry) return void 0;
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 void 0;
48
- const modules = [];
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
- modules.push(applyBase(importedChunk.file));
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 modules.length > 0 ? modules : void 0;
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
- metadata.appBootstrapPreinitModules = collectAppBootstrapPreinitModules(buildManifest, clientEntryManifest?.appBrowserEntry, appAssetUrl);
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vinext",
3
- "version": "1.4.2",
3
+ "version": "1.4.3",
4
4
  "description": "Run Next.js apps on Vite. Drop-in replacement for the next CLI.",
5
5
  "homepage": "https://vinext.dev/",
6
6
  "license": "MIT",