vinext 0.0.53 → 0.0.54

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 (188) hide show
  1. package/dist/build/inline-css.d.ts +7 -0
  2. package/dist/build/inline-css.js +50 -0
  3. package/dist/build/inline-css.js.map +1 -0
  4. package/dist/build/prerender.js +2 -1
  5. package/dist/build/prerender.js.map +1 -1
  6. package/dist/check.js +4 -0
  7. package/dist/check.js.map +1 -1
  8. package/dist/client/navigation-runtime.d.ts +2 -1
  9. package/dist/client/navigation-runtime.js.map +1 -1
  10. package/dist/client/window-next.d.ts +7 -0
  11. package/dist/client/window-next.js.map +1 -1
  12. package/dist/config/next-config.d.ts +83 -1
  13. package/dist/config/next-config.js +131 -2
  14. package/dist/config/next-config.js.map +1 -1
  15. package/dist/deploy.js +13 -0
  16. package/dist/deploy.js.map +1 -1
  17. package/dist/entries/app-browser-entry.d.ts +11 -1
  18. package/dist/entries/app-browser-entry.js +16 -6
  19. package/dist/entries/app-browser-entry.js.map +1 -1
  20. package/dist/entries/app-rsc-entry.d.ts +8 -1
  21. package/dist/entries/app-rsc-entry.js +18 -5
  22. package/dist/entries/app-rsc-entry.js.map +1 -1
  23. package/dist/entries/app-rsc-manifest.d.ts +21 -1
  24. package/dist/entries/app-rsc-manifest.js +6 -4
  25. package/dist/entries/app-rsc-manifest.js.map +1 -1
  26. package/dist/entries/pages-client-entry.d.ts +4 -1
  27. package/dist/entries/pages-client-entry.js +18 -2
  28. package/dist/entries/pages-client-entry.js.map +1 -1
  29. package/dist/entries/pages-server-entry.js +82 -4
  30. package/dist/entries/pages-server-entry.js.map +1 -1
  31. package/dist/entries/runtime-entry-module.d.ts +1 -10
  32. package/dist/entries/runtime-entry-module.js +2 -12
  33. package/dist/entries/runtime-entry-module.js.map +1 -1
  34. package/dist/index.js +63 -5
  35. package/dist/index.js.map +1 -1
  36. package/dist/plugins/remove-console.d.ts +16 -0
  37. package/dist/plugins/remove-console.js +176 -0
  38. package/dist/plugins/remove-console.js.map +1 -0
  39. package/dist/routing/app-route-graph.d.ts +24 -1
  40. package/dist/routing/app-route-graph.js +52 -4
  41. package/dist/routing/app-route-graph.js.map +1 -1
  42. package/dist/routing/app-router.d.ts +2 -2
  43. package/dist/routing/app-router.js +2 -2
  44. package/dist/routing/app-router.js.map +1 -1
  45. package/dist/routing/file-matcher.d.ts +21 -1
  46. package/dist/routing/file-matcher.js +39 -1
  47. package/dist/routing/file-matcher.js.map +1 -1
  48. package/dist/routing/pages-router.d.ts +1 -1
  49. package/dist/routing/pages-router.js +10 -3
  50. package/dist/routing/pages-router.js.map +1 -1
  51. package/dist/server/api-handler.js +1 -1
  52. package/dist/server/app-browser-entry.js +25 -16
  53. package/dist/server/app-browser-entry.js.map +1 -1
  54. package/dist/server/app-browser-navigation-controller.d.ts +2 -0
  55. package/dist/server/app-browser-navigation-controller.js +4 -0
  56. package/dist/server/app-browser-navigation-controller.js.map +1 -1
  57. package/dist/server/app-elements-wire.d.ts +13 -4
  58. package/dist/server/app-elements-wire.js +10 -1
  59. package/dist/server/app-elements-wire.js.map +1 -1
  60. package/dist/server/app-elements.d.ts +2 -2
  61. package/dist/server/app-elements.js +2 -2
  62. package/dist/server/app-elements.js.map +1 -1
  63. package/dist/server/app-fallback-renderer.d.ts +15 -5
  64. package/dist/server/app-fallback-renderer.js +10 -4
  65. package/dist/server/app-fallback-renderer.js.map +1 -1
  66. package/dist/server/app-inline-css-client.d.ts +7 -0
  67. package/dist/server/app-inline-css-client.js +37 -0
  68. package/dist/server/app-inline-css-client.js.map +1 -0
  69. package/dist/server/app-page-boundary.d.ts +21 -1
  70. package/dist/server/app-page-boundary.js +28 -3
  71. package/dist/server/app-page-boundary.js.map +1 -1
  72. package/dist/server/app-page-cache.d.ts +7 -3
  73. package/dist/server/app-page-cache.js +7 -7
  74. package/dist/server/app-page-cache.js.map +1 -1
  75. package/dist/server/app-page-dispatch.d.ts +10 -1
  76. package/dist/server/app-page-dispatch.js +126 -79
  77. package/dist/server/app-page-dispatch.js.map +1 -1
  78. package/dist/server/app-page-element-builder.js +12 -28
  79. package/dist/server/app-page-element-builder.js.map +1 -1
  80. package/dist/server/app-page-render-identity.d.ts +22 -0
  81. package/dist/server/app-page-render-identity.js +42 -0
  82. package/dist/server/app-page-render-identity.js.map +1 -0
  83. package/dist/server/app-page-render.d.ts +8 -1
  84. package/dist/server/app-page-render.js +4 -1
  85. package/dist/server/app-page-render.js.map +1 -1
  86. package/dist/server/app-page-request.d.ts +6 -3
  87. package/dist/server/app-page-request.js +5 -2
  88. package/dist/server/app-page-request.js.map +1 -1
  89. package/dist/server/app-page-response.js +2 -2
  90. package/dist/server/app-page-response.js.map +1 -1
  91. package/dist/server/app-page-route-wiring.d.ts +15 -0
  92. package/dist/server/app-page-route-wiring.js +7 -5
  93. package/dist/server/app-page-route-wiring.js.map +1 -1
  94. package/dist/server/app-page-stream.d.ts +11 -0
  95. package/dist/server/app-page-stream.js +1 -0
  96. package/dist/server/app-page-stream.js.map +1 -1
  97. package/dist/server/app-route-handler-response.js +37 -5
  98. package/dist/server/app-route-handler-response.js.map +1 -1
  99. package/dist/server/app-rsc-handler.d.ts +14 -3
  100. package/dist/server/app-rsc-handler.js +45 -5
  101. package/dist/server/app-rsc-handler.js.map +1 -1
  102. package/dist/server/app-rsc-request-normalization.d.ts +2 -1
  103. package/dist/server/app-rsc-request-normalization.js +3 -2
  104. package/dist/server/app-rsc-request-normalization.js.map +1 -1
  105. package/dist/server/app-server-action-execution.d.ts +21 -3
  106. package/dist/server/app-server-action-execution.js +42 -7
  107. package/dist/server/app-server-action-execution.js.map +1 -1
  108. package/dist/server/app-ssr-entry.d.ts +6 -0
  109. package/dist/server/app-ssr-entry.js +22 -7
  110. package/dist/server/app-ssr-entry.js.map +1 -1
  111. package/dist/server/app-ssr-error-meta.js +3 -3
  112. package/dist/server/app-ssr-error-meta.js.map +1 -1
  113. package/dist/server/app-ssr-stream.d.ts +2 -1
  114. package/dist/server/app-ssr-stream.js +176 -31
  115. package/dist/server/app-ssr-stream.js.map +1 -1
  116. package/dist/server/client-trace-metadata.d.ts +31 -0
  117. package/dist/server/client-trace-metadata.js +83 -0
  118. package/dist/server/client-trace-metadata.js.map +1 -0
  119. package/dist/server/cookie-utils.d.ts +13 -0
  120. package/dist/server/cookie-utils.js +20 -0
  121. package/dist/server/cookie-utils.js.map +1 -0
  122. package/dist/server/dev-server.d.ts +8 -1
  123. package/dist/server/dev-server.js +34 -5
  124. package/dist/server/dev-server.js.map +1 -1
  125. package/dist/server/html.d.ts +2 -1
  126. package/dist/server/html.js +6 -1
  127. package/dist/server/html.js.map +1 -1
  128. package/dist/server/isr-cache.d.ts +7 -5
  129. package/dist/server/isr-cache.js +17 -6
  130. package/dist/server/isr-cache.js.map +1 -1
  131. package/dist/server/middleware-runtime.js +1 -2
  132. package/dist/server/middleware-runtime.js.map +1 -1
  133. package/dist/server/pages-document-initial-props.d.ts +7 -0
  134. package/dist/server/pages-document-initial-props.js +14 -0
  135. package/dist/server/pages-document-initial-props.js.map +1 -0
  136. package/dist/server/pages-page-data.js +3 -0
  137. package/dist/server/pages-page-data.js.map +1 -1
  138. package/dist/server/pages-page-method.d.ts +48 -0
  139. package/dist/server/pages-page-method.js +19 -0
  140. package/dist/server/pages-page-method.js.map +1 -0
  141. package/dist/server/pages-page-response.d.ts +6 -0
  142. package/dist/server/pages-page-response.js +10 -3
  143. package/dist/server/pages-page-response.js.map +1 -1
  144. package/dist/server/pages-serializable-props.d.ts +25 -0
  145. package/dist/server/pages-serializable-props.js +69 -0
  146. package/dist/server/pages-serializable-props.js.map +1 -0
  147. package/dist/server/prod-server.js +3 -0
  148. package/dist/server/prod-server.js.map +1 -1
  149. package/dist/server/server-action-not-found.js +3 -2
  150. package/dist/server/server-action-not-found.js.map +1 -1
  151. package/dist/server/static-file-cache.js +2 -1
  152. package/dist/server/static-file-cache.js.map +1 -1
  153. package/dist/shims/app-router-scroll-state.d.ts +4 -2
  154. package/dist/shims/app-router-scroll-state.js +16 -3
  155. package/dist/shims/app-router-scroll-state.js.map +1 -1
  156. package/dist/shims/app-router-scroll.d.ts +16 -2
  157. package/dist/shims/app-router-scroll.js +18 -3
  158. package/dist/shims/app-router-scroll.js.map +1 -1
  159. package/dist/shims/cache.d.ts +6 -0
  160. package/dist/shims/cache.js +7 -0
  161. package/dist/shims/cache.js.map +1 -1
  162. package/dist/shims/error.js +3 -0
  163. package/dist/shims/error.js.map +1 -1
  164. package/dist/shims/headers.d.ts +7 -0
  165. package/dist/shims/headers.js +9 -1
  166. package/dist/shims/headers.js.map +1 -1
  167. package/dist/shims/internal/app-route-detection.d.ts +37 -0
  168. package/dist/shims/internal/app-route-detection.js +69 -0
  169. package/dist/shims/internal/app-route-detection.js.map +1 -0
  170. package/dist/shims/link.d.ts +18 -2
  171. package/dist/shims/link.js +70 -6
  172. package/dist/shims/link.js.map +1 -1
  173. package/dist/shims/metadata.d.ts +7 -6
  174. package/dist/shims/metadata.js +9 -5
  175. package/dist/shims/metadata.js.map +1 -1
  176. package/dist/shims/navigation.d.ts +1 -2
  177. package/dist/shims/navigation.js +63 -12
  178. package/dist/shims/navigation.js.map +1 -1
  179. package/dist/shims/router.d.ts +5 -0
  180. package/dist/shims/router.js +14 -4
  181. package/dist/shims/router.js.map +1 -1
  182. package/dist/shims/script.d.ts +11 -1
  183. package/dist/shims/script.js +75 -6
  184. package/dist/shims/script.js.map +1 -1
  185. package/dist/utils/path.d.ts +13 -0
  186. package/dist/utils/path.js +16 -0
  187. package/dist/utils/path.js.map +1 -0
  188. package/package.json +1 -1
@@ -53,8 +53,7 @@ declare function setNavigationContext(ctx: NavigationContext | null): void;
53
53
  declare const __basePath: string;
54
54
  /** Maximum number of entries in the RSC prefetch cache. */
55
55
  declare const MAX_PREFETCH_CACHE_SIZE = 50;
56
- /** TTL for prefetch cache entries in ms (matches Next.js static prefetch TTL). */
57
- declare const PREFETCH_CACHE_TTL = 30000;
56
+ declare const PREFETCH_CACHE_TTL: number;
58
57
  /** A buffered RSC response stored as an ArrayBuffer for replay. */
59
58
  type CachedRscResponse = {
60
59
  compatibilityIdHeader?: string | null;
@@ -2,11 +2,11 @@ import { stripBasePath } from "../utils/base-path.js";
2
2
  import { VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_PARAMS_HEADER } from "../server/headers.js";
3
3
  import { assertSafeNavigationUrl } from "./url-safety.js";
4
4
  import { AppElementsWire } from "../server/app-elements-wire.js";
5
+ import "../server/app-elements.js";
5
6
  import { isAbsoluteOrProtocolRelativeUrl, isHashOnlyBrowserUrlChange, toBrowserNavigationHref, toSameOriginAppPath, withBasePath } from "./url-utils.js";
6
7
  import { scrollToHashTarget } from "./hash-scroll.js";
7
8
  import { getNavigationRuntime, hasAppNavigationRuntime } from "../client/navigation-runtime.js";
8
9
  import { notifyAppRouterTransitionStart } from "../client/instrumentation-client-state.js";
9
- import "../server/app-elements.js";
10
10
  import { resolveManifestNavigationInterceptionContext } from "../server/app-browser-interception-context.js";
11
11
  import { createExternalHistoryStatePreservingMetadata } from "../server/app-history-state.js";
12
12
  import { VINEXT_RSC_COMPATIBILITY_ID_HEADER, createRscRequestHeaders, createRscRequestUrl } from "../server/app-rsc-cache-busting.js";
@@ -140,8 +140,28 @@ const isServer = typeof window === "undefined";
140
140
  const __basePath = process.env.__NEXT_ROUTER_BASEPATH ?? "";
141
141
  /** Maximum number of entries in the RSC prefetch cache. */
142
142
  const MAX_PREFETCH_CACHE_SIZE = 50;
143
- /** TTL for prefetch cache entries in ms (matches Next.js static prefetch TTL). */
144
- const PREFETCH_CACHE_TTL = 3e4;
143
+ /**
144
+ * TTL for prefetch cache entries in ms.
145
+ *
146
+ * Mirrors Next.js' `STATIC_STALETIME_MS` derivation. The plugin injects
147
+ * `process.env.__NEXT_CLIENT_ROUTER_STATIC_STALETIME` from
148
+ * `experimental.staleTimes.static` (in seconds) at build time; we convert
149
+ * to ms here.
150
+ *
151
+ * Falls back to vinext's historical default of 30s when the env var is
152
+ * absent (e.g. unit tests that import this module without going through
153
+ * the plugin's `define` pipeline). When the plugin is active and the user
154
+ * has not set `experimental.staleTimes`, Next.js' 300s default applies
155
+ * (see `resolveStaleTimes` in `config/next-config.ts`).
156
+ */
157
+ function resolvePrefetchCacheTtl() {
158
+ const raw = process.env.__NEXT_CLIENT_ROUTER_STATIC_STALETIME;
159
+ if (raw === void 0 || raw === "") return 3e4;
160
+ const seconds = Number(raw);
161
+ if (!Number.isFinite(seconds) || seconds < 0) return 3e4;
162
+ return seconds * 1e3;
163
+ }
164
+ const PREFETCH_CACHE_TTL = resolvePrefetchCacheTtl();
145
165
  function getCurrentInterceptionContext() {
146
166
  if (isServer) return null;
147
167
  return stripBasePath(window.location.pathname, __basePath);
@@ -189,7 +209,7 @@ function evictPrefetchCacheIfNeeded() {
189
209
  if (cache.size < 50) return;
190
210
  const now = Date.now();
191
211
  const prefetched = getPrefetchedUrls();
192
- for (const [key, entry] of cache) if (now - entry.timestamp >= 3e4) deletePrefetchCacheEntry(cache, prefetched, key, entry, true);
212
+ for (const [key, entry] of cache) if (now - entry.timestamp >= PREFETCH_CACHE_TTL) deletePrefetchCacheEntry(cache, prefetched, key, entry, true);
193
213
  while (cache.size >= 50) {
194
214
  const oldest = cache.keys().next().value;
195
215
  if (oldest !== void 0) {
@@ -394,7 +414,7 @@ function consumePrefetchResponse(rscUrl, interceptionContext = null, mountedSlot
394
414
  deletePrefetchCacheEntry(cache, getPrefetchedUrls(), cacheKey, entry, false);
395
415
  if (entry.snapshot) {
396
416
  if ((entry.snapshot.mountedSlotsHeader ?? null) !== mountedSlotsHeader) return null;
397
- if (Date.now() - entry.timestamp >= 3e4) return null;
417
+ if (Date.now() - entry.timestamp >= PREFETCH_CACHE_TTL) return null;
398
418
  return entry.snapshot;
399
419
  }
400
420
  return null;
@@ -807,7 +827,7 @@ async function navigateClientSide(href, mode, scroll, programmaticTransition = f
807
827
  if (!scroll) clearAppRouterScrollIntent();
808
828
  const appNavigate = getNavigationRuntime()?.functions.navigate;
809
829
  try {
810
- if (appNavigate) await appNavigate(fullHref, 0, "navigate", mode, void 0, programmaticTransition);
830
+ if (appNavigate) await appNavigate(fullHref, 0, "navigate", mode, void 0, programmaticTransition, void 0, scrollIntent);
811
831
  else {
812
832
  if (mode === "replace") replaceHistoryStateWithoutNotify(null, "", fullHref);
813
833
  else pushHistoryStateWithoutNotify(null, "", fullHref);
@@ -822,6 +842,22 @@ async function navigateClientSide(href, mode, scroll, programmaticTransition = f
822
842
  if (fallbackIntent) applyAppRouterScrollFallback(fallbackIntent);
823
843
  }
824
844
  }
845
+ let scheduledAppRouterNavigationCount = 0;
846
+ function trackScheduledAppRouterNavigation() {
847
+ scheduledAppRouterNavigationCount += 1;
848
+ let released = false;
849
+ return () => {
850
+ if (released) return;
851
+ released = true;
852
+ scheduledAppRouterNavigationCount = Math.max(0, scheduledAppRouterNavigationCount - 1);
853
+ };
854
+ }
855
+ function hasScheduledAppRouterNavigation() {
856
+ return scheduledAppRouterNavigationCount > 0;
857
+ }
858
+ function releaseScheduledAppRouterNavigationAfterCurrentTask(release) {
859
+ queueMicrotask(release);
860
+ }
825
861
  /**
826
862
  * Public App Router instance, exposed for the browser entry so it can wire
827
863
  * `window.next.router` to the same singleton returned from `useRouter()`.
@@ -834,16 +870,30 @@ const appRouterInstance = {
834
870
  push(href, options) {
835
871
  assertSafeNavigationUrl(href);
836
872
  if (isServer) return;
837
- React$1.startTransition(() => {
838
- navigateClientSide(href, "push", options?.scroll !== false, true);
839
- });
873
+ const releaseNavigation = trackScheduledAppRouterNavigation();
874
+ try {
875
+ React$1.startTransition(() => {
876
+ navigateClientSide(href, "push", options?.scroll !== false, true);
877
+ });
878
+ } catch (error) {
879
+ releaseNavigation();
880
+ throw error;
881
+ }
882
+ releaseScheduledAppRouterNavigationAfterCurrentTask(releaseNavigation);
840
883
  },
841
884
  replace(href, options) {
842
885
  assertSafeNavigationUrl(href);
843
886
  if (isServer) return;
844
- React$1.startTransition(() => {
845
- navigateClientSide(href, "replace", options?.scroll !== false, true);
846
- });
887
+ const releaseNavigation = trackScheduledAppRouterNavigation();
888
+ try {
889
+ React$1.startTransition(() => {
890
+ navigateClientSide(href, "replace", options?.scroll !== false, true);
891
+ });
892
+ } catch (error) {
893
+ releaseNavigation();
894
+ throw error;
895
+ }
896
+ releaseScheduledAppRouterNavigationAfterCurrentTask(releaseNavigation);
847
897
  },
848
898
  back() {
849
899
  if (isServer) return;
@@ -856,6 +906,7 @@ const appRouterInstance = {
856
906
  refresh() {
857
907
  if (isServer) return;
858
908
  getNavigationRuntime()?.functions.clearNavigationCaches?.();
909
+ if (hasScheduledAppRouterNavigation()) return;
859
910
  const rscNavigate = getNavigationRuntime()?.functions.navigate;
860
911
  if (rscNavigate) {
861
912
  const navigate = () => {