vinext 0.0.49 → 0.0.51

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 (506) hide show
  1. package/dist/build/client-build-config.js.map +1 -1
  2. package/dist/build/google-fonts/build-url.js.map +1 -1
  3. package/dist/build/google-fonts/fallback-metrics-data.js +14031 -0
  4. package/dist/build/google-fonts/fallback-metrics-data.js.map +1 -0
  5. package/dist/build/google-fonts/fallback-metrics.d.ts +13 -0
  6. package/dist/build/google-fonts/fallback-metrics.js +46 -0
  7. package/dist/build/google-fonts/fallback-metrics.js.map +1 -0
  8. package/dist/build/google-fonts/get-axes.js.map +1 -1
  9. package/dist/build/google-fonts/sort-variants.js.map +1 -1
  10. package/dist/build/google-fonts/validate.js.map +1 -1
  11. package/dist/build/layout-classification.js.map +1 -1
  12. package/dist/build/nitro-route-rules.js.map +1 -1
  13. package/dist/build/precompress.d.ts +13 -2
  14. package/dist/build/precompress.js +12 -3
  15. package/dist/build/precompress.js.map +1 -1
  16. package/dist/build/prerender.d.ts +17 -1
  17. package/dist/build/prerender.js +114 -23
  18. package/dist/build/prerender.js.map +1 -1
  19. package/dist/build/report.d.ts +5 -4
  20. package/dist/build/report.js +196 -348
  21. package/dist/build/report.js.map +1 -1
  22. package/dist/build/route-classification-injector.js.map +1 -1
  23. package/dist/build/route-classification-manifest.js.map +1 -1
  24. package/dist/build/run-prerender.js.map +1 -1
  25. package/dist/build/server-manifest.js.map +1 -1
  26. package/dist/build/ssr-manifest.js.map +1 -1
  27. package/dist/build/standalone.js.map +1 -1
  28. package/dist/build/static-export.js.map +1 -1
  29. package/dist/check.js +2 -1
  30. package/dist/check.js.map +1 -1
  31. package/dist/cli-args.js.map +1 -1
  32. package/dist/cli.js +68 -7
  33. package/dist/cli.js.map +1 -1
  34. package/dist/client/instrumentation-client-state.js.map +1 -1
  35. package/dist/client/validate-module-path.js.map +1 -1
  36. package/dist/client/vinext-next-data.d.ts +5 -1
  37. package/dist/client/window-next.d.ts +151 -0
  38. package/dist/client/window-next.js +48 -0
  39. package/dist/client/window-next.js.map +1 -0
  40. package/dist/cloudflare/kv-cache-handler.js.map +1 -1
  41. package/dist/cloudflare/tpr.js +2 -1
  42. package/dist/cloudflare/tpr.js.map +1 -1
  43. package/dist/config/config-matchers.d.ts +3 -1
  44. package/dist/config/config-matchers.js +5 -4
  45. package/dist/config/config-matchers.js.map +1 -1
  46. package/dist/config/dotenv.d.ts +11 -1
  47. package/dist/config/dotenv.js.map +1 -1
  48. package/dist/config/next-config.d.ts +93 -6
  49. package/dist/config/next-config.js +233 -6
  50. package/dist/config/next-config.js.map +1 -1
  51. package/dist/config/tsconfig-paths.d.ts +13 -0
  52. package/dist/config/tsconfig-paths.js +117 -0
  53. package/dist/config/tsconfig-paths.js.map +1 -0
  54. package/dist/deploy.js +16 -7
  55. package/dist/deploy.js.map +1 -1
  56. package/dist/entries/app-browser-entry.d.ts +3 -1
  57. package/dist/entries/app-browser-entry.js +36 -2
  58. package/dist/entries/app-browser-entry.js.map +1 -1
  59. package/dist/entries/app-rsc-entry.d.ts +19 -1
  60. package/dist/entries/app-rsc-entry.js +49 -12
  61. package/dist/entries/app-rsc-entry.js.map +1 -1
  62. package/dist/entries/app-rsc-manifest.d.ts +9 -0
  63. package/dist/entries/app-rsc-manifest.js +8 -1
  64. package/dist/entries/app-rsc-manifest.js.map +1 -1
  65. package/dist/entries/app-ssr-entry.js.map +1 -1
  66. package/dist/entries/pages-client-entry.js +3 -5
  67. package/dist/entries/pages-client-entry.js.map +1 -1
  68. package/dist/entries/pages-entry-helpers.js.map +1 -1
  69. package/dist/entries/pages-server-entry.js +34 -1
  70. package/dist/entries/pages-server-entry.js.map +1 -1
  71. package/dist/entries/runtime-entry-module.js.map +1 -1
  72. package/dist/index.js +204 -53
  73. package/dist/index.js.map +1 -1
  74. package/dist/init.js.map +1 -1
  75. package/dist/plugins/async-hooks-stub.js.map +1 -1
  76. package/dist/plugins/client-reference-dedup.d.ts +15 -2
  77. package/dist/plugins/client-reference-dedup.js +138 -16
  78. package/dist/plugins/client-reference-dedup.js.map +1 -1
  79. package/dist/plugins/fonts.d.ts +2 -2
  80. package/dist/plugins/fonts.js +15 -6
  81. package/dist/plugins/fonts.js.map +1 -1
  82. package/dist/plugins/instrumentation-client.js.map +1 -1
  83. package/dist/plugins/og-assets.js.map +1 -1
  84. package/dist/plugins/optimize-imports.js.map +1 -1
  85. package/dist/plugins/postcss.js.map +1 -1
  86. package/dist/plugins/rsc-client-reference-loaders.d.ts +7 -0
  87. package/dist/plugins/rsc-client-reference-loaders.js +48 -0
  88. package/dist/plugins/rsc-client-reference-loaders.js.map +1 -0
  89. package/dist/plugins/rsc-client-shim-excludes.js.map +1 -1
  90. package/dist/plugins/sass.d.ts +34 -0
  91. package/dist/plugins/sass.js +22 -0
  92. package/dist/plugins/sass.js.map +1 -0
  93. package/dist/plugins/server-externals-manifest.js.map +1 -1
  94. package/dist/plugins/strip-server-exports.js.map +1 -1
  95. package/dist/routing/app-route-graph.d.ts +78 -6
  96. package/dist/routing/app-route-graph.js +241 -25
  97. package/dist/routing/app-route-graph.js.map +1 -1
  98. package/dist/routing/app-router.js.map +1 -1
  99. package/dist/routing/file-matcher.js.map +1 -1
  100. package/dist/routing/pages-router.js.map +1 -1
  101. package/dist/routing/route-matching.js.map +1 -1
  102. package/dist/routing/route-pattern.d.ts +56 -1
  103. package/dist/routing/route-pattern.js +60 -1
  104. package/dist/routing/route-pattern.js.map +1 -1
  105. package/dist/routing/route-trie.js.map +1 -1
  106. package/dist/routing/route-validation.js.map +1 -1
  107. package/dist/routing/utils.js.map +1 -1
  108. package/dist/server/api-handler.js.map +1 -1
  109. package/dist/server/app-browser-action-result.d.ts +44 -0
  110. package/dist/server/app-browser-action-result.js +79 -0
  111. package/dist/server/app-browser-action-result.js.map +1 -0
  112. package/dist/server/app-browser-entry.js +330 -133
  113. package/dist/server/app-browser-entry.js.map +1 -1
  114. package/dist/server/app-browser-error.js.map +1 -1
  115. package/dist/server/app-browser-hydration.d.ts +31 -0
  116. package/dist/server/app-browser-hydration.js +30 -0
  117. package/dist/server/app-browser-hydration.js.map +1 -0
  118. package/dist/server/app-browser-navigation-controller.d.ts +20 -4
  119. package/dist/server/app-browser-navigation-controller.js +90 -23
  120. package/dist/server/app-browser-navigation-controller.js.map +1 -1
  121. package/dist/server/app-browser-popstate.d.ts +16 -0
  122. package/dist/server/app-browser-popstate.js +17 -0
  123. package/dist/server/app-browser-popstate.js.map +1 -0
  124. package/dist/server/app-browser-rsc-redirect.d.ts +28 -0
  125. package/dist/server/app-browser-rsc-redirect.js +37 -0
  126. package/dist/server/app-browser-rsc-redirect.js.map +1 -0
  127. package/dist/server/app-browser-state.d.ts +27 -23
  128. package/dist/server/app-browser-state.js +158 -54
  129. package/dist/server/app-browser-state.js.map +1 -1
  130. package/dist/server/app-browser-stream.d.ts +9 -4
  131. package/dist/server/app-browser-stream.js +29 -8
  132. package/dist/server/app-browser-stream.js.map +1 -1
  133. package/dist/server/app-browser-visible-commit.d.ts +11 -1
  134. package/dist/server/app-browser-visible-commit.js +69 -21
  135. package/dist/server/app-browser-visible-commit.js.map +1 -1
  136. package/dist/server/app-client-reference-preloader.js.map +1 -1
  137. package/dist/server/app-elements-wire.d.ts +43 -6
  138. package/dist/server/app-elements-wire.js +121 -5
  139. package/dist/server/app-elements-wire.js.map +1 -1
  140. package/dist/server/app-elements.d.ts +2 -2
  141. package/dist/server/app-elements.js +2 -2
  142. package/dist/server/app-elements.js.map +1 -1
  143. package/dist/server/app-fallback-renderer.d.ts +10 -1
  144. package/dist/server/app-fallback-renderer.js +37 -1
  145. package/dist/server/app-fallback-renderer.js.map +1 -1
  146. package/dist/server/app-history-state.d.ts +26 -0
  147. package/dist/server/app-history-state.js +53 -0
  148. package/dist/server/app-history-state.js.map +1 -0
  149. package/dist/server/app-hook-warning-suppression.js.map +1 -1
  150. package/dist/server/app-middleware.d.ts +1 -1
  151. package/dist/server/app-middleware.js +4 -9
  152. package/dist/server/app-middleware.js.map +1 -1
  153. package/dist/server/app-mounted-slots-header.js.map +1 -1
  154. package/dist/server/app-page-boundary-render.d.ts +11 -1
  155. package/dist/server/app-page-boundary-render.js +27 -19
  156. package/dist/server/app-page-boundary-render.js.map +1 -1
  157. package/dist/server/app-page-boundary.d.ts +1 -0
  158. package/dist/server/app-page-boundary.js +10 -7
  159. package/dist/server/app-page-boundary.js.map +1 -1
  160. package/dist/server/app-page-cache.d.ts +23 -3
  161. package/dist/server/app-page-cache.js +63 -27
  162. package/dist/server/app-page-cache.js.map +1 -1
  163. package/dist/server/app-page-dispatch.d.ts +11 -1
  164. package/dist/server/app-page-dispatch.js +85 -14
  165. package/dist/server/app-page-dispatch.js.map +1 -1
  166. package/dist/server/app-page-element-builder.d.ts +10 -1
  167. package/dist/server/app-page-element-builder.js +38 -6
  168. package/dist/server/app-page-element-builder.js.map +1 -1
  169. package/dist/server/app-page-execution.js +2 -3
  170. package/dist/server/app-page-execution.js.map +1 -1
  171. package/dist/server/app-page-head.d.ts +7 -0
  172. package/dist/server/app-page-head.js +6 -1
  173. package/dist/server/app-page-head.js.map +1 -1
  174. package/dist/server/app-page-method.js.map +1 -1
  175. package/dist/server/app-page-params.js.map +1 -1
  176. package/dist/server/app-page-probe.d.ts +23 -1
  177. package/dist/server/app-page-probe.js +29 -1
  178. package/dist/server/app-page-probe.js.map +1 -1
  179. package/dist/server/app-page-render-observation.d.ts +35 -0
  180. package/dist/server/app-page-render-observation.js +68 -0
  181. package/dist/server/app-page-render-observation.js.map +1 -0
  182. package/dist/server/app-page-render.d.ts +12 -2
  183. package/dist/server/app-page-render.js +90 -7
  184. package/dist/server/app-page-render.js.map +1 -1
  185. package/dist/server/app-page-request.d.ts +1 -0
  186. package/dist/server/app-page-request.js +2 -1
  187. package/dist/server/app-page-request.js.map +1 -1
  188. package/dist/server/app-page-response.d.ts +2 -0
  189. package/dist/server/app-page-response.js +18 -7
  190. package/dist/server/app-page-response.js.map +1 -1
  191. package/dist/server/app-page-route-wiring.d.ts +9 -3
  192. package/dist/server/app-page-route-wiring.js +91 -62
  193. package/dist/server/app-page-route-wiring.js.map +1 -1
  194. package/dist/server/app-page-segment-state.d.ts +10 -0
  195. package/dist/server/app-page-segment-state.js +87 -0
  196. package/dist/server/app-page-segment-state.js.map +1 -0
  197. package/dist/server/app-page-stream.d.ts +9 -2
  198. package/dist/server/app-page-stream.js +4 -1
  199. package/dist/server/app-page-stream.js.map +1 -1
  200. package/dist/server/app-post-middleware-context.js.map +1 -1
  201. package/dist/server/app-prerender-endpoints.js.map +1 -1
  202. package/dist/server/app-prerender-static-params.js.map +1 -1
  203. package/dist/server/app-render-dependency.js.map +1 -1
  204. package/dist/server/app-request-context.js.map +1 -1
  205. package/dist/server/app-route-handler-cache.js.map +1 -1
  206. package/dist/server/app-route-handler-dispatch.js +3 -1
  207. package/dist/server/app-route-handler-dispatch.js.map +1 -1
  208. package/dist/server/app-route-handler-execution.js.map +1 -1
  209. package/dist/server/app-route-handler-policy.js +1 -0
  210. package/dist/server/app-route-handler-policy.js.map +1 -1
  211. package/dist/server/app-route-handler-response.js +4 -3
  212. package/dist/server/app-route-handler-response.js.map +1 -1
  213. package/dist/server/app-route-handler-runtime.js.map +1 -1
  214. package/dist/server/app-router-entry.js +7 -15
  215. package/dist/server/app-router-entry.js.map +1 -1
  216. package/dist/server/app-rsc-cache-busting.d.ts +23 -2
  217. package/dist/server/app-rsc-cache-busting.js +75 -19
  218. package/dist/server/app-rsc-cache-busting.js.map +1 -1
  219. package/dist/server/app-rsc-embedded-chunks.d.ts +9 -0
  220. package/dist/server/app-rsc-embedded-chunks.js +34 -0
  221. package/dist/server/app-rsc-embedded-chunks.js.map +1 -0
  222. package/dist/server/app-rsc-error-handler.js.map +1 -1
  223. package/dist/server/app-rsc-errors.d.ts +4 -1
  224. package/dist/server/app-rsc-errors.js +1 -1
  225. package/dist/server/app-rsc-errors.js.map +1 -1
  226. package/dist/server/app-rsc-handler.d.ts +18 -1
  227. package/dist/server/app-rsc-handler.js +55 -16
  228. package/dist/server/app-rsc-handler.js.map +1 -1
  229. package/dist/server/app-rsc-render-mode.d.ts +11 -0
  230. package/dist/server/app-rsc-render-mode.js +21 -0
  231. package/dist/server/app-rsc-render-mode.js.map +1 -0
  232. package/dist/server/app-rsc-request-normalization.d.ts +4 -1
  233. package/dist/server/app-rsc-request-normalization.js +7 -2
  234. package/dist/server/app-rsc-request-normalization.js.map +1 -1
  235. package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
  236. package/dist/server/app-rsc-response-finalizer.js +6 -1
  237. package/dist/server/app-rsc-response-finalizer.js.map +1 -1
  238. package/dist/server/app-rsc-route-matching.d.ts +23 -0
  239. package/dist/server/app-rsc-route-matching.js +45 -23
  240. package/dist/server/app-rsc-route-matching.js.map +1 -1
  241. package/dist/server/app-segment-config.js.map +1 -1
  242. package/dist/server/app-server-action-execution.d.ts +51 -5
  243. package/dist/server/app-server-action-execution.js +161 -51
  244. package/dist/server/app-server-action-execution.js.map +1 -1
  245. package/dist/server/app-ssr-entry.d.ts +7 -0
  246. package/dist/server/app-ssr-entry.js +44 -14
  247. package/dist/server/app-ssr-entry.js.map +1 -1
  248. package/dist/server/app-ssr-error-meta.d.ts +14 -0
  249. package/dist/server/app-ssr-error-meta.js +50 -0
  250. package/dist/server/app-ssr-error-meta.js.map +1 -0
  251. package/dist/server/app-ssr-stream.d.ts +1 -1
  252. package/dist/server/app-ssr-stream.js +9 -12
  253. package/dist/server/app-ssr-stream.js.map +1 -1
  254. package/dist/server/app-static-generation.js.map +1 -1
  255. package/dist/server/artifact-compatibility.d.ts +12 -2
  256. package/dist/server/artifact-compatibility.js +12 -8
  257. package/dist/server/artifact-compatibility.js.map +1 -1
  258. package/dist/server/cache-control.js +1 -0
  259. package/dist/server/cache-control.js.map +1 -1
  260. package/dist/server/cache-proof.d.ts +124 -5
  261. package/dist/server/cache-proof.js +416 -18
  262. package/dist/server/cache-proof.js.map +1 -1
  263. package/dist/server/csp.js.map +1 -1
  264. package/dist/server/dev-error-overlay-store.js.map +1 -1
  265. package/dist/server/dev-error-overlay.js +5 -0
  266. package/dist/server/dev-error-overlay.js.map +1 -1
  267. package/dist/server/dev-lockfile.d.ts +110 -0
  268. package/dist/server/dev-lockfile.js +180 -0
  269. package/dist/server/dev-lockfile.js.map +1 -0
  270. package/dist/server/dev-module-runner.js.map +1 -1
  271. package/dist/server/dev-origin-check.js.map +1 -1
  272. package/dist/server/dev-route-files.js.map +1 -1
  273. package/dist/server/dev-server.js +23 -10
  274. package/dist/server/dev-server.js.map +1 -1
  275. package/dist/server/file-based-metadata.d.ts +13 -0
  276. package/dist/server/file-based-metadata.js +49 -2
  277. package/dist/server/file-based-metadata.js.map +1 -1
  278. package/dist/server/headers.d.ts +81 -0
  279. package/dist/server/headers.js +104 -0
  280. package/dist/server/headers.js.map +1 -0
  281. package/dist/server/html.js +1 -1
  282. package/dist/server/html.js.map +1 -1
  283. package/dist/server/http-error-responses.d.ts +10 -0
  284. package/dist/server/http-error-responses.js +11 -1
  285. package/dist/server/http-error-responses.js.map +1 -1
  286. package/dist/server/image-optimization.d.ts +11 -1
  287. package/dist/server/image-optimization.js.map +1 -1
  288. package/dist/server/implicit-tags.js +2 -1
  289. package/dist/server/implicit-tags.js.map +1 -1
  290. package/dist/server/instrumentation-runtime.js.map +1 -1
  291. package/dist/server/instrumentation.js.map +1 -1
  292. package/dist/server/isr-cache.d.ts +12 -2
  293. package/dist/server/isr-cache.js +16 -5
  294. package/dist/server/isr-cache.js.map +1 -1
  295. package/dist/server/metadata-route-build-data.js.map +1 -1
  296. package/dist/server/metadata-route-response.js +22 -5
  297. package/dist/server/metadata-route-response.js.map +1 -1
  298. package/dist/server/metadata-routes.js +27 -8
  299. package/dist/server/metadata-routes.js.map +1 -1
  300. package/dist/server/middleware-matcher.js.map +1 -1
  301. package/dist/server/middleware-request-headers.d.ts +4 -1
  302. package/dist/server/middleware-request-headers.js +15 -8
  303. package/dist/server/middleware-request-headers.js.map +1 -1
  304. package/dist/server/middleware-response-headers.d.ts +2 -1
  305. package/dist/server/middleware-response-headers.js +1 -1
  306. package/dist/server/middleware-response-headers.js.map +1 -1
  307. package/dist/server/middleware-runtime.d.ts +1 -0
  308. package/dist/server/middleware-runtime.js +7 -3
  309. package/dist/server/middleware-runtime.js.map +1 -1
  310. package/dist/server/middleware.d.ts +12 -0
  311. package/dist/server/middleware.js +12 -0
  312. package/dist/server/middleware.js.map +1 -1
  313. package/dist/server/navigation-planner.d.ts +133 -0
  314. package/dist/server/navigation-planner.js +432 -0
  315. package/dist/server/navigation-planner.js.map +1 -0
  316. package/dist/server/navigation-trace.d.ts +19 -2
  317. package/dist/server/navigation-trace.js +20 -1
  318. package/dist/server/navigation-trace.js.map +1 -1
  319. package/dist/server/next-error-digest.d.ts +3 -2
  320. package/dist/server/next-error-digest.js +4 -2
  321. package/dist/server/next-error-digest.js.map +1 -1
  322. package/dist/server/normalize-path.d.ts +2 -1
  323. package/dist/server/normalize-path.js +4 -1
  324. package/dist/server/normalize-path.js.map +1 -1
  325. package/dist/server/pages-api-route.js +1 -0
  326. package/dist/server/pages-api-route.js.map +1 -1
  327. package/dist/server/pages-i18n.js.map +1 -1
  328. package/dist/server/pages-media-type.js.map +1 -1
  329. package/dist/server/pages-node-compat.js.map +1 -1
  330. package/dist/server/pages-page-data.d.ts +3 -2
  331. package/dist/server/pages-page-data.js +27 -5
  332. package/dist/server/pages-page-data.js.map +1 -1
  333. package/dist/server/pages-page-response.js +2 -1
  334. package/dist/server/pages-page-response.js.map +1 -1
  335. package/dist/server/prerender-work-unit-setup.js +1 -1
  336. package/dist/server/prerender-work-unit-setup.js.map +1 -1
  337. package/dist/server/prod-server.d.ts +28 -1
  338. package/dist/server/prod-server.js +97 -22
  339. package/dist/server/prod-server.js.map +1 -1
  340. package/dist/server/request-log.js.map +1 -1
  341. package/dist/server/request-pipeline.d.ts +1 -13
  342. package/dist/server/request-pipeline.js +3 -25
  343. package/dist/server/request-pipeline.js.map +1 -1
  344. package/dist/server/rsc-stream-hints.js.map +1 -1
  345. package/dist/server/seed-cache.js.map +1 -1
  346. package/dist/server/server-action-not-found.d.ts +16 -3
  347. package/dist/server/server-action-not-found.js +22 -4
  348. package/dist/server/server-action-not-found.js.map +1 -1
  349. package/dist/server/server-globals.d.ts +5 -0
  350. package/dist/server/server-globals.js +37 -0
  351. package/dist/server/server-globals.js.map +1 -0
  352. package/dist/server/socket-error-backstop.js.map +1 -1
  353. package/dist/server/static-file-cache.js +1 -1
  354. package/dist/server/static-file-cache.js.map +1 -1
  355. package/dist/server/worker-utils.d.ts +0 -7
  356. package/dist/server/worker-utils.js +3 -2
  357. package/dist/server/worker-utils.js.map +1 -1
  358. package/dist/shims/amp.js.map +1 -1
  359. package/dist/shims/app.d.ts +37 -4
  360. package/dist/shims/app.js +50 -1
  361. package/dist/shims/app.js.map +1 -0
  362. package/dist/shims/cache-for-request.js.map +1 -1
  363. package/dist/shims/cache-runtime.d.ts +19 -2
  364. package/dist/shims/cache-runtime.js +87 -19
  365. package/dist/shims/cache-runtime.js.map +1 -1
  366. package/dist/shims/cache.d.ts +20 -21
  367. package/dist/shims/cache.js +101 -15
  368. package/dist/shims/cache.js.map +1 -1
  369. package/dist/shims/client-hook-error.js.map +1 -1
  370. package/dist/shims/compat-router.js.map +1 -1
  371. package/dist/shims/config.js.map +1 -1
  372. package/dist/shims/constants.js.map +1 -1
  373. package/dist/shims/document.js.map +1 -1
  374. package/dist/shims/dynamic.d.ts +18 -10
  375. package/dist/shims/dynamic.js +107 -51
  376. package/dist/shims/dynamic.js.map +1 -1
  377. package/dist/shims/error-boundary.d.ts +35 -6
  378. package/dist/shims/error-boundary.js +116 -33
  379. package/dist/shims/error-boundary.js.map +1 -1
  380. package/dist/shims/error.d.ts +18 -1
  381. package/dist/shims/error.js +56 -1
  382. package/dist/shims/error.js.map +1 -1
  383. package/dist/shims/fetch-cache.d.ts +25 -1
  384. package/dist/shims/fetch-cache.js +159 -13
  385. package/dist/shims/fetch-cache.js.map +1 -1
  386. package/dist/shims/font-google-base.d.ts +22 -8
  387. package/dist/shims/font-google-base.js +41 -71
  388. package/dist/shims/font-google-base.js.map +1 -1
  389. package/dist/shims/font-local.d.ts +3 -20
  390. package/dist/shims/font-local.js +23 -75
  391. package/dist/shims/font-local.js.map +1 -1
  392. package/dist/shims/font-utils.d.ts +51 -0
  393. package/dist/shims/font-utils.js +97 -0
  394. package/dist/shims/font-utils.js.map +1 -0
  395. package/dist/shims/form.js +3 -1
  396. package/dist/shims/form.js.map +1 -1
  397. package/dist/shims/hash-scroll.d.ts +7 -0
  398. package/dist/shims/hash-scroll.js +30 -0
  399. package/dist/shims/hash-scroll.js.map +1 -0
  400. package/dist/shims/head-state.js.map +1 -1
  401. package/dist/shims/head.d.ts +3 -1
  402. package/dist/shims/head.js +28 -16
  403. package/dist/shims/head.js.map +1 -1
  404. package/dist/shims/headers.d.ts +11 -12
  405. package/dist/shims/headers.js +45 -8
  406. package/dist/shims/headers.js.map +1 -1
  407. package/dist/shims/i18n-context.js.map +1 -1
  408. package/dist/shims/i18n-state.js.map +1 -1
  409. package/dist/shims/image-config.d.ts +14 -1
  410. package/dist/shims/image-config.js +24 -1
  411. package/dist/shims/image-config.js.map +1 -1
  412. package/dist/shims/image.d.ts +1 -0
  413. package/dist/shims/image.js +159 -80
  414. package/dist/shims/image.js.map +1 -1
  415. package/dist/shims/internal/als-registry.js.map +1 -1
  416. package/dist/shims/internal/app-router-context.d.ts +7 -6
  417. package/dist/shims/internal/app-router-context.js +17 -6
  418. package/dist/shims/internal/app-router-context.js.map +1 -1
  419. package/dist/shims/internal/cookie-serialize.js.map +1 -1
  420. package/dist/shims/internal/make-hanging-promise.d.ts +1 -1
  421. package/dist/shims/internal/make-hanging-promise.js +1 -1
  422. package/dist/shims/internal/make-hanging-promise.js.map +1 -1
  423. package/dist/shims/internal/parse-cookie-header.js.map +1 -1
  424. package/dist/shims/internal/utils.js.map +1 -1
  425. package/dist/shims/internal/work-unit-async-storage.js +2 -2
  426. package/dist/shims/internal/work-unit-async-storage.js.map +1 -1
  427. package/dist/shims/layout-segment-context.js.map +1 -1
  428. package/dist/shims/legacy-image.js.map +1 -1
  429. package/dist/shims/link-prefetch.d.ts +42 -0
  430. package/dist/shims/link-prefetch.js +45 -0
  431. package/dist/shims/link-prefetch.js.map +1 -0
  432. package/dist/shims/link.d.ts +37 -4
  433. package/dist/shims/link.js +156 -46
  434. package/dist/shims/link.js.map +1 -1
  435. package/dist/shims/metadata.d.ts +16 -30
  436. package/dist/shims/metadata.js +87 -28
  437. package/dist/shims/metadata.js.map +1 -1
  438. package/dist/shims/navigation-state.js.map +1 -1
  439. package/dist/shims/navigation.d.ts +172 -10
  440. package/dist/shims/navigation.js +335 -70
  441. package/dist/shims/navigation.js.map +1 -1
  442. package/dist/shims/navigation.react-server.d.ts +3 -2
  443. package/dist/shims/navigation.react-server.js +5 -2
  444. package/dist/shims/navigation.react-server.js.map +1 -1
  445. package/dist/shims/offline.js.map +1 -1
  446. package/dist/shims/pages-router-runtime.d.ts +7 -0
  447. package/dist/shims/pages-router-runtime.js +16 -0
  448. package/dist/shims/pages-router-runtime.js.map +1 -0
  449. package/dist/shims/readonly-url-search-params.js.map +1 -1
  450. package/dist/shims/request-context.js.map +1 -1
  451. package/dist/shims/root-params.js.map +1 -1
  452. package/dist/shims/router-state.js.map +1 -1
  453. package/dist/shims/router.d.ts +69 -7
  454. package/dist/shims/router.js +232 -249
  455. package/dist/shims/router.js.map +1 -1
  456. package/dist/shims/script-nonce-context.js.map +1 -1
  457. package/dist/shims/script.js +110 -32
  458. package/dist/shims/script.js.map +1 -1
  459. package/dist/shims/server.js +12 -15
  460. package/dist/shims/server.js.map +1 -1
  461. package/dist/shims/slot.d.ts +7 -1
  462. package/dist/shims/slot.js +60 -7
  463. package/dist/shims/slot.js.map +1 -1
  464. package/dist/shims/thenable-params.js.map +1 -1
  465. package/dist/shims/unified-request-context.js +5 -0
  466. package/dist/shims/unified-request-context.js.map +1 -1
  467. package/dist/shims/unrecognized-action-error.d.ts +35 -0
  468. package/dist/shims/unrecognized-action-error.js +41 -0
  469. package/dist/shims/unrecognized-action-error.js.map +1 -0
  470. package/dist/shims/url-safety.js.map +1 -1
  471. package/dist/shims/url-utils.d.ts +22 -1
  472. package/dist/shims/url-utils.js +76 -3
  473. package/dist/shims/url-utils.js.map +1 -1
  474. package/dist/shims/use-merged-ref.js.map +1 -1
  475. package/dist/shims/web-vitals.d.ts +4 -21
  476. package/dist/shims/web-vitals.js +19 -6
  477. package/dist/shims/web-vitals.js.map +1 -1
  478. package/dist/utils/asset-prefix.d.ts +69 -0
  479. package/dist/utils/asset-prefix.js +91 -0
  480. package/dist/utils/asset-prefix.js.map +1 -0
  481. package/dist/utils/base-path.d.ts +7 -1
  482. package/dist/utils/base-path.js +10 -1
  483. package/dist/utils/base-path.js.map +1 -1
  484. package/dist/utils/cache-control-metadata.js.map +1 -1
  485. package/dist/utils/domain-locale.js.map +1 -1
  486. package/dist/utils/encode-cache-tag.d.ts +31 -0
  487. package/dist/utils/encode-cache-tag.js +38 -0
  488. package/dist/utils/encode-cache-tag.js.map +1 -0
  489. package/dist/utils/error-cause.js.map +1 -1
  490. package/dist/utils/hash.js.map +1 -1
  491. package/dist/utils/lazy-chunks.js.map +1 -1
  492. package/dist/utils/manifest-paths.js.map +1 -1
  493. package/dist/utils/mdx-scan.js.map +1 -1
  494. package/dist/utils/navigation-signal.d.ts +5 -0
  495. package/dist/utils/navigation-signal.js +14 -0
  496. package/dist/utils/navigation-signal.js.map +1 -0
  497. package/dist/utils/project.js.map +1 -1
  498. package/dist/utils/public-routes.js.map +1 -1
  499. package/dist/utils/query.js.map +1 -1
  500. package/dist/utils/safe-json-file.js.map +1 -1
  501. package/dist/utils/sorted-array.d.ts +9 -0
  502. package/dist/utils/sorted-array.js +22 -0
  503. package/dist/utils/sorted-array.js.map +1 -0
  504. package/dist/utils/text-stream.js.map +1 -1
  505. package/dist/utils/vinext-root.js.map +1 -1
  506. package/package.json +8 -6
@@ -1 +1 @@
1
- {"version":3,"file":"cookie-serialize.js","names":[],"sources":["../../../src/shims/internal/cookie-serialize.ts"],"sourcesContent":["/**\n * Shared Set-Cookie serialization for the next/headers and next/server shims.\n *\n * Two call sites — `cookies().set()` in headers.ts and `ResponseCookies.set()`\n * in server.ts — produce identical Set-Cookie header strings. Keep the\n * encoding, attribute order, and validation in one place so subtle RFC 6265\n * details (escaping, attribute ordering, etc.) cannot drift between them.\n *\n * Note: this is a value-encoding helper for response cookies only. The\n * request `Cookie:` header serialization in `RequestCookies._serialize`\n * (server.ts) intentionally lives separately — it builds a different format\n * (no attributes, just `name=value; name=value`) and shouldn't share this\n * code.\n */\n\ntype SerializeSetCookieOptions = {\n path?: string;\n domain?: string;\n maxAge?: number;\n expires?: Date;\n httpOnly?: boolean;\n secure?: boolean;\n sameSite?: \"Strict\" | \"Lax\" | \"None\";\n};\n\n/**\n * RFC 6265 §4.1.1: cookie-name is a token (RFC 2616 §2.2).\n * Allowed: any visible ASCII (0x21-0x7E) except separators: ()<>@,;:\\\"/[]?={}\n */\nconst VALID_COOKIE_NAME_RE =\n /^[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2E\\x30-\\x39\\x41-\\x5A\\x5E-\\x7A\\x7C\\x7E]+$/;\n\nexport function validateCookieName(name: string): void {\n if (!name || !VALID_COOKIE_NAME_RE.test(name)) {\n throw new Error(`Invalid cookie name: ${JSON.stringify(name)}`);\n }\n}\n\n/**\n * Validate cookie attribute values (path, domain) to prevent injection\n * via semicolons, newlines, or other control characters.\n */\nexport function validateCookieAttributeValue(value: string, attributeName: string): void {\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n if (code <= 0x1f || code === 0x7f || value[i] === \";\") {\n throw new Error(`Invalid cookie ${attributeName} value: ${JSON.stringify(value)}`);\n }\n }\n}\n\n/**\n * Build a Set-Cookie header string from a cookie name, value, and attributes.\n *\n * - Encodes the value with `encodeURIComponent`.\n * - Defaults `Path` to `/` (matching @edge-runtime/cookies and Next.js).\n * - Validates path/domain to reject control characters and semicolons.\n * - Emits attributes in the order: Path, Domain, Max-Age, Expires, HttpOnly,\n * Secure, SameSite.\n *\n * The caller is responsible for validating the cookie name (typically before\n * mutating any internal state) via `validateCookieName`.\n */\nexport function serializeSetCookie(\n name: string,\n value: string,\n options?: SerializeSetCookieOptions,\n): string {\n const parts = [`${name}=${encodeURIComponent(value)}`];\n const path = options?.path ?? \"/\";\n validateCookieAttributeValue(path, \"Path\");\n parts.push(`Path=${path}`);\n if (options?.domain) {\n validateCookieAttributeValue(options.domain, \"Domain\");\n parts.push(`Domain=${options.domain}`);\n }\n if (options?.maxAge !== undefined) parts.push(`Max-Age=${options.maxAge}`);\n if (options?.expires) parts.push(`Expires=${options.expires.toUTCString()}`);\n if (options?.httpOnly) parts.push(\"HttpOnly\");\n if (options?.secure) parts.push(\"Secure\");\n if (options?.sameSite) parts.push(`SameSite=${options.sameSite}`);\n return parts.join(\"; \");\n}\n"],"mappings":";;;;;AA6BA,MAAM,uBACJ;AAEF,SAAgB,mBAAmB,MAAoB;AACrD,KAAI,CAAC,QAAQ,CAAC,qBAAqB,KAAK,KAAK,CAC3C,OAAM,IAAI,MAAM,wBAAwB,KAAK,UAAU,KAAK,GAAG;;;;;;AAQnE,SAAgB,6BAA6B,OAAe,eAA6B;AACvF,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,MAAM,OAAO,MAAM,WAAW,EAAE;AAChC,MAAI,QAAQ,MAAQ,SAAS,OAAQ,MAAM,OAAO,IAChD,OAAM,IAAI,MAAM,kBAAkB,cAAc,UAAU,KAAK,UAAU,MAAM,GAAG;;;;;;;;;;;;;;;AAiBxF,SAAgB,mBACd,MACA,OACA,SACQ;CACR,MAAM,QAAQ,CAAC,GAAG,KAAK,GAAG,mBAAmB,MAAM,GAAG;CACtD,MAAM,OAAO,SAAS,QAAQ;AAC9B,8BAA6B,MAAM,OAAO;AAC1C,OAAM,KAAK,QAAQ,OAAO;AAC1B,KAAI,SAAS,QAAQ;AACnB,+BAA6B,QAAQ,QAAQ,SAAS;AACtD,QAAM,KAAK,UAAU,QAAQ,SAAS;;AAExC,KAAI,SAAS,WAAW,KAAA,EAAW,OAAM,KAAK,WAAW,QAAQ,SAAS;AAC1E,KAAI,SAAS,QAAS,OAAM,KAAK,WAAW,QAAQ,QAAQ,aAAa,GAAG;AAC5E,KAAI,SAAS,SAAU,OAAM,KAAK,WAAW;AAC7C,KAAI,SAAS,OAAQ,OAAM,KAAK,SAAS;AACzC,KAAI,SAAS,SAAU,OAAM,KAAK,YAAY,QAAQ,WAAW;AACjE,QAAO,MAAM,KAAK,KAAK"}
1
+ {"version":3,"file":"cookie-serialize.js","names":[],"sources":["../../../src/shims/internal/cookie-serialize.ts"],"sourcesContent":["/**\n * Shared Set-Cookie serialization for the next/headers and next/server shims.\n *\n * Two call sites — `cookies().set()` in headers.ts and `ResponseCookies.set()`\n * in server.ts — produce identical Set-Cookie header strings. Keep the\n * encoding, attribute order, and validation in one place so subtle RFC 6265\n * details (escaping, attribute ordering, etc.) cannot drift between them.\n *\n * Note: this is a value-encoding helper for response cookies only. The\n * request `Cookie:` header serialization in `RequestCookies._serialize`\n * (server.ts) intentionally lives separately — it builds a different format\n * (no attributes, just `name=value; name=value`) and shouldn't share this\n * code.\n */\n\ntype SerializeSetCookieOptions = {\n path?: string;\n domain?: string;\n maxAge?: number;\n expires?: Date;\n httpOnly?: boolean;\n secure?: boolean;\n sameSite?: \"Strict\" | \"Lax\" | \"None\";\n};\n\n/**\n * RFC 6265 §4.1.1: cookie-name is a token (RFC 2616 §2.2).\n * Allowed: any visible ASCII (0x21-0x7E) except separators: ()<>@,;:\\\"/[]?={}\n */\nconst VALID_COOKIE_NAME_RE =\n /^[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2E\\x30-\\x39\\x41-\\x5A\\x5E-\\x7A\\x7C\\x7E]+$/;\n\nexport function validateCookieName(name: string): void {\n if (!name || !VALID_COOKIE_NAME_RE.test(name)) {\n throw new Error(`Invalid cookie name: ${JSON.stringify(name)}`);\n }\n}\n\n/**\n * Validate cookie attribute values (path, domain) to prevent injection\n * via semicolons, newlines, or other control characters.\n */\nexport function validateCookieAttributeValue(value: string, attributeName: string): void {\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n if (code <= 0x1f || code === 0x7f || value[i] === \";\") {\n throw new Error(`Invalid cookie ${attributeName} value: ${JSON.stringify(value)}`);\n }\n }\n}\n\n/**\n * Build a Set-Cookie header string from a cookie name, value, and attributes.\n *\n * - Encodes the value with `encodeURIComponent`.\n * - Defaults `Path` to `/` (matching @edge-runtime/cookies and Next.js).\n * - Validates path/domain to reject control characters and semicolons.\n * - Emits attributes in the order: Path, Domain, Max-Age, Expires, HttpOnly,\n * Secure, SameSite.\n *\n * The caller is responsible for validating the cookie name (typically before\n * mutating any internal state) via `validateCookieName`.\n */\nexport function serializeSetCookie(\n name: string,\n value: string,\n options?: SerializeSetCookieOptions,\n): string {\n const parts = [`${name}=${encodeURIComponent(value)}`];\n const path = options?.path ?? \"/\";\n validateCookieAttributeValue(path, \"Path\");\n parts.push(`Path=${path}`);\n if (options?.domain) {\n validateCookieAttributeValue(options.domain, \"Domain\");\n parts.push(`Domain=${options.domain}`);\n }\n if (options?.maxAge !== undefined) parts.push(`Max-Age=${options.maxAge}`);\n if (options?.expires) parts.push(`Expires=${options.expires.toUTCString()}`);\n if (options?.httpOnly) parts.push(\"HttpOnly\");\n if (options?.secure) parts.push(\"Secure\");\n if (options?.sameSite) parts.push(`SameSite=${options.sameSite}`);\n return parts.join(\"; \");\n}\n"],"mappings":";;;;;AA6BA,MAAM,uBACJ;AAEF,SAAgB,mBAAmB,MAAoB;CACrD,IAAI,CAAC,QAAQ,CAAC,qBAAqB,KAAK,KAAK,EAC3C,MAAM,IAAI,MAAM,wBAAwB,KAAK,UAAU,KAAK,GAAG;;;;;;AAQnE,SAAgB,6BAA6B,OAAe,eAA6B;CACvF,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,MAAM,OAAO,MAAM,WAAW,EAAE;EAChC,IAAI,QAAQ,MAAQ,SAAS,OAAQ,MAAM,OAAO,KAChD,MAAM,IAAI,MAAM,kBAAkB,cAAc,UAAU,KAAK,UAAU,MAAM,GAAG;;;;;;;;;;;;;;;AAiBxF,SAAgB,mBACd,MACA,OACA,SACQ;CACR,MAAM,QAAQ,CAAC,GAAG,KAAK,GAAG,mBAAmB,MAAM,GAAG;CACtD,MAAM,OAAO,SAAS,QAAQ;CAC9B,6BAA6B,MAAM,OAAO;CAC1C,MAAM,KAAK,QAAQ,OAAO;CAC1B,IAAI,SAAS,QAAQ;EACnB,6BAA6B,QAAQ,QAAQ,SAAS;EACtD,MAAM,KAAK,UAAU,QAAQ,SAAS;;CAExC,IAAI,SAAS,WAAW,KAAA,GAAW,MAAM,KAAK,WAAW,QAAQ,SAAS;CAC1E,IAAI,SAAS,SAAS,MAAM,KAAK,WAAW,QAAQ,QAAQ,aAAa,GAAG;CAC5E,IAAI,SAAS,UAAU,MAAM,KAAK,WAAW;CAC7C,IAAI,SAAS,QAAQ,MAAM,KAAK,SAAS;CACzC,IAAI,SAAS,UAAU,MAAM,KAAK,YAAY,QAAQ,WAAW;CACjE,OAAO,MAAM,KAAK,KAAK"}
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * makeHangingPromise — returns a promise that never resolves during prerendering.
4
4
  *
5
- * When prerendering, `unstable_io()` must return a hanging promise to prevent
5
+ * When prerendering, `io()` must return a hanging promise to prevent
6
6
  * React from executing past the IO boundary. The promise never resolves—it only
7
7
  * rejects if the render signal is aborted (e.g., due to a dynamic error or
8
8
  * cache-fill completion).
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * makeHangingPromise — returns a promise that never resolves during prerendering.
4
4
  *
5
- * When prerendering, `unstable_io()` must return a hanging promise to prevent
5
+ * When prerendering, `io()` must return a hanging promise to prevent
6
6
  * React from executing past the IO boundary. The promise never resolves—it only
7
7
  * rejects if the render signal is aborted (e.g., due to a dynamic error or
8
8
  * cache-fill completion).
@@ -1 +1 @@
1
- {"version":3,"file":"make-hanging-promise.js","names":[],"sources":["../../../src/shims/internal/make-hanging-promise.ts"],"sourcesContent":["/**\n * makeHangingPromise — returns a promise that never resolves during prerendering.\n *\n * When prerendering, `unstable_io()` must return a hanging promise to prevent\n * React from executing past the IO boundary. The promise never resolves—it only\n * rejects if the render signal is aborted (e.g., due to a dynamic error or\n * cache-fill completion).\n *\n * Ported from Next.js: packages/next/src/server/dynamic-rendering-utils.ts\n * https://github.com/vercel/next.js/blob/canary/packages/next/src/server/dynamic-rendering-utils.ts\n */\n\nclass HangingPromiseRejectionError extends Error {\n constructor(route: string, expression: string) {\n super(\n `Route ${route} used ${expression} during prerendering but the render was aborted. ` +\n `This is expected when prerendering is cut short (e.g. due to a dynamic access).`,\n );\n this.name = \"HangingPromiseRejectionError\";\n }\n}\n\nconst abortListenersBySignal = new WeakMap<AbortSignal, (() => void)[]>();\n\nfunction suppressUnhandledRejection(): void {\n // intentionally empty — suppresses \"unhandled rejection\" warnings\n}\n\nexport function makeHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n): Promise<T> {\n if (signal.aborted) {\n const rejected = Promise.reject(new HangingPromiseRejectionError(route, expression));\n rejected.catch(suppressUnhandledRejection);\n return rejected;\n }\n const hangingPromise = new Promise<T>((_, reject) => {\n const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression));\n const currentListeners = abortListenersBySignal.get(signal);\n if (currentListeners) {\n currentListeners.push(boundRejection);\n } else {\n const listeners = [boundRejection];\n abortListenersBySignal.set(signal, listeners);\n signal.addEventListener(\n \"abort\",\n () => {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n listeners.length = 0;\n },\n { once: true },\n );\n }\n });\n // Suppress unhandled rejection — the promise is expected to be used with\n // React's use() which handles rejections. If never awaited, the abort\n // rejection is a no-op cleanup.\n hangingPromise.catch(suppressUnhandledRejection);\n return hangingPromise;\n}\n"],"mappings":";;;;;;;;;;;;AAYA,IAAM,+BAAN,cAA2C,MAAM;CAC/C,YAAY,OAAe,YAAoB;AAC7C,QACE,SAAS,MAAM,QAAQ,WAAW,kIAEnC;AACD,OAAK,OAAO;;;AAIhB,MAAM,yCAAyB,IAAI,SAAsC;AAEzE,SAAS,6BAAmC;AAI5C,SAAgB,mBACd,QACA,OACA,YACY;AACZ,KAAI,OAAO,SAAS;EAClB,MAAM,WAAW,QAAQ,OAAO,IAAI,6BAA6B,OAAO,WAAW,CAAC;AACpF,WAAS,MAAM,2BAA2B;AAC1C,SAAO;;CAET,MAAM,iBAAiB,IAAI,SAAY,GAAG,WAAW;EACnD,MAAM,iBAAiB,OAAO,KAAK,MAAM,IAAI,6BAA6B,OAAO,WAAW,CAAC;EAC7F,MAAM,mBAAmB,uBAAuB,IAAI,OAAO;AAC3D,MAAI,iBACF,kBAAiB,KAAK,eAAe;OAChC;GACL,MAAM,YAAY,CAAC,eAAe;AAClC,0BAAuB,IAAI,QAAQ,UAAU;AAC7C,UAAO,iBACL,eACM;AACJ,SAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,IACpC,WAAU,IAAI;AAEhB,cAAU,SAAS;MAErB,EAAE,MAAM,MAAM,CACf;;GAEH;AAIF,gBAAe,MAAM,2BAA2B;AAChD,QAAO"}
1
+ {"version":3,"file":"make-hanging-promise.js","names":[],"sources":["../../../src/shims/internal/make-hanging-promise.ts"],"sourcesContent":["/**\n * makeHangingPromise — returns a promise that never resolves during prerendering.\n *\n * When prerendering, `io()` must return a hanging promise to prevent\n * React from executing past the IO boundary. The promise never resolves—it only\n * rejects if the render signal is aborted (e.g., due to a dynamic error or\n * cache-fill completion).\n *\n * Ported from Next.js: packages/next/src/server/dynamic-rendering-utils.ts\n * https://github.com/vercel/next.js/blob/canary/packages/next/src/server/dynamic-rendering-utils.ts\n */\n\nclass HangingPromiseRejectionError extends Error {\n constructor(route: string, expression: string) {\n super(\n `Route ${route} used ${expression} during prerendering but the render was aborted. ` +\n `This is expected when prerendering is cut short (e.g. due to a dynamic access).`,\n );\n this.name = \"HangingPromiseRejectionError\";\n }\n}\n\nconst abortListenersBySignal = new WeakMap<AbortSignal, (() => void)[]>();\n\nfunction suppressUnhandledRejection(): void {\n // intentionally empty — suppresses \"unhandled rejection\" warnings\n}\n\nexport function makeHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n): Promise<T> {\n if (signal.aborted) {\n const rejected = Promise.reject(new HangingPromiseRejectionError(route, expression));\n rejected.catch(suppressUnhandledRejection);\n return rejected;\n }\n const hangingPromise = new Promise<T>((_, reject) => {\n const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression));\n const currentListeners = abortListenersBySignal.get(signal);\n if (currentListeners) {\n currentListeners.push(boundRejection);\n } else {\n const listeners = [boundRejection];\n abortListenersBySignal.set(signal, listeners);\n signal.addEventListener(\n \"abort\",\n () => {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n listeners.length = 0;\n },\n { once: true },\n );\n }\n });\n // Suppress unhandled rejection — the promise is expected to be used with\n // React's use() which handles rejections. If never awaited, the abort\n // rejection is a no-op cleanup.\n hangingPromise.catch(suppressUnhandledRejection);\n return hangingPromise;\n}\n"],"mappings":";;;;;;;;;;;;AAYA,IAAM,+BAAN,cAA2C,MAAM;CAC/C,YAAY,OAAe,YAAoB;EAC7C,MACE,SAAS,MAAM,QAAQ,WAAW,kIAEnC;EACD,KAAK,OAAO;;;AAIhB,MAAM,yCAAyB,IAAI,SAAsC;AAEzE,SAAS,6BAAmC;AAI5C,SAAgB,mBACd,QACA,OACA,YACY;CACZ,IAAI,OAAO,SAAS;EAClB,MAAM,WAAW,QAAQ,OAAO,IAAI,6BAA6B,OAAO,WAAW,CAAC;EACpF,SAAS,MAAM,2BAA2B;EAC1C,OAAO;;CAET,MAAM,iBAAiB,IAAI,SAAY,GAAG,WAAW;EACnD,MAAM,iBAAiB,OAAO,KAAK,MAAM,IAAI,6BAA6B,OAAO,WAAW,CAAC;EAC7F,MAAM,mBAAmB,uBAAuB,IAAI,OAAO;EAC3D,IAAI,kBACF,iBAAiB,KAAK,eAAe;OAChC;GACL,MAAM,YAAY,CAAC,eAAe;GAClC,uBAAuB,IAAI,QAAQ,UAAU;GAC7C,OAAO,iBACL,eACM;IACJ,KAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KACpC,UAAU,IAAI;IAEhB,UAAU,SAAS;MAErB,EAAE,MAAM,MAAM,CACf;;GAEH;CAIF,eAAe,MAAM,2BAA2B;CAChD,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-cookie-header.js","names":[],"sources":["../../../src/shims/internal/parse-cookie-header.ts"],"sourcesContent":["/**\n * Port of the current Next.js/@edge-runtime request cookie parser semantics.\n *\n * Important details:\n * - split on a semicolon-plus-optional-spaces pattern\n * - preserve whitespace around names/values otherwise\n * - bare tokens become \"true\"\n * - malformed percent-encoded values are skipped\n * - duplicate names collapse to the last value via Map.set()\n */\nexport function parseCookieHeader(cookieHeader: string): Map<string, string> {\n const cookies = new Map<string, string>();\n for (const pair of cookieHeader.split(/; */)) {\n if (!pair) continue;\n\n const splitAt = pair.indexOf(\"=\");\n if (splitAt === -1) {\n cookies.set(pair, \"true\");\n continue;\n }\n\n const key = pair.slice(0, splitAt);\n const value = pair.slice(splitAt + 1);\n\n try {\n cookies.set(key, decodeURIComponent(value));\n } catch {\n // Match Next.js/@edge-runtime behavior: ignore malformed cookie values.\n }\n }\n return cookies;\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAgB,kBAAkB,cAA2C;CAC3E,MAAM,0BAAU,IAAI,KAAqB;AACzC,MAAK,MAAM,QAAQ,aAAa,MAAM,MAAM,EAAE;AAC5C,MAAI,CAAC,KAAM;EAEX,MAAM,UAAU,KAAK,QAAQ,IAAI;AACjC,MAAI,YAAY,IAAI;AAClB,WAAQ,IAAI,MAAM,OAAO;AACzB;;EAGF,MAAM,MAAM,KAAK,MAAM,GAAG,QAAQ;EAClC,MAAM,QAAQ,KAAK,MAAM,UAAU,EAAE;AAErC,MAAI;AACF,WAAQ,IAAI,KAAK,mBAAmB,MAAM,CAAC;UACrC;;AAIV,QAAO"}
1
+ {"version":3,"file":"parse-cookie-header.js","names":[],"sources":["../../../src/shims/internal/parse-cookie-header.ts"],"sourcesContent":["/**\n * Port of the current Next.js/@edge-runtime request cookie parser semantics.\n *\n * Important details:\n * - split on a semicolon-plus-optional-spaces pattern\n * - preserve whitespace around names/values otherwise\n * - bare tokens become \"true\"\n * - malformed percent-encoded values are skipped\n * - duplicate names collapse to the last value via Map.set()\n */\nexport function parseCookieHeader(cookieHeader: string): Map<string, string> {\n const cookies = new Map<string, string>();\n for (const pair of cookieHeader.split(/; */)) {\n if (!pair) continue;\n\n const splitAt = pair.indexOf(\"=\");\n if (splitAt === -1) {\n cookies.set(pair, \"true\");\n continue;\n }\n\n const key = pair.slice(0, splitAt);\n const value = pair.slice(splitAt + 1);\n\n try {\n cookies.set(key, decodeURIComponent(value));\n } catch {\n // Match Next.js/@edge-runtime behavior: ignore malformed cookie values.\n }\n }\n return cookies;\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAgB,kBAAkB,cAA2C;CAC3E,MAAM,0BAAU,IAAI,KAAqB;CACzC,KAAK,MAAM,QAAQ,aAAa,MAAM,MAAM,EAAE;EAC5C,IAAI,CAAC,MAAM;EAEX,MAAM,UAAU,KAAK,QAAQ,IAAI;EACjC,IAAI,YAAY,IAAI;GAClB,QAAQ,IAAI,MAAM,OAAO;GACzB;;EAGF,MAAM,MAAM,KAAK,MAAM,GAAG,QAAQ;EAClC,MAAM,QAAQ,KAAK,MAAM,UAAU,EAAE;EAErC,IAAI;GACF,QAAQ,IAAI,KAAK,mBAAmB,MAAM,CAAC;UACrC;;CAIV,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../../src/shims/internal/utils.ts"],"sourcesContent":["/**\n * Shim for next/dist/shared/lib/utils\n *\n * Used by: @sentry/nextjs (type-only import of NEXT_DATA).\n * Provides the NEXT_DATA type that matches window.__NEXT_DATA__.\n */\n\nexport type NEXT_DATA = {\n props: Record<string, unknown>;\n page: string;\n query: Record<string, string | string[]>;\n buildId?: string;\n assetPrefix?: string;\n runtimeConfig?: Record<string, unknown>;\n nextExport?: boolean;\n autoExport?: boolean;\n isFallback?: boolean;\n dynamicIds?: (string | number)[];\n err?: { message: string; statusCode: number; name?: string };\n gsp?: boolean;\n gssp?: boolean;\n customServer?: boolean;\n gip?: boolean;\n appGip?: boolean;\n locale?: string;\n locales?: string[];\n defaultLocale?: string;\n domainLocales?: Array<{\n domain: string;\n defaultLocale: string;\n locales?: string[];\n http?: boolean;\n }>;\n scriptLoader?: unknown[];\n isPreview?: boolean;\n notFoundSrcPage?: string;\n};\n\n/**\n * Standard Next.js error shape.\n */\nexport function execOnce<T extends (...args: unknown[]) => unknown>(fn: T): T {\n let used = false;\n let result: unknown;\n return ((...args: unknown[]) => {\n if (!used) {\n used = true;\n result = fn(...args);\n }\n return result;\n }) as T;\n}\n\nexport function getLocationOrigin(): string {\n if (typeof window !== \"undefined\") {\n return window.location.origin;\n }\n return \"http://localhost\";\n}\n\nexport function getURL(): string {\n if (typeof window !== \"undefined\") {\n return window.location.href;\n }\n return \"http://localhost/\";\n}\n\nexport const SP = typeof performance !== \"undefined\";\nexport const ST = SP && typeof performance.mark === \"function\";\n"],"mappings":";;;;AAyCA,SAAgB,SAAoD,IAAU;CAC5E,IAAI,OAAO;CACX,IAAI;AACJ,UAAS,GAAG,SAAoB;AAC9B,MAAI,CAAC,MAAM;AACT,UAAO;AACP,YAAS,GAAG,GAAG,KAAK;;AAEtB,SAAO;;;AAIX,SAAgB,oBAA4B;AAC1C,KAAI,OAAO,WAAW,YACpB,QAAO,OAAO,SAAS;AAEzB,QAAO;;AAGT,SAAgB,SAAiB;AAC/B,KAAI,OAAO,WAAW,YACpB,QAAO,OAAO,SAAS;AAEzB,QAAO;;AAGT,MAAa,KAAK,OAAO,gBAAgB;AACzC,MAAa,KAAK,MAAM,OAAO,YAAY,SAAS"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../src/shims/internal/utils.ts"],"sourcesContent":["/**\n * Shim for next/dist/shared/lib/utils\n *\n * Used by: @sentry/nextjs (type-only import of NEXT_DATA).\n * Provides the NEXT_DATA type that matches window.__NEXT_DATA__.\n */\n\nexport type NEXT_DATA = {\n props: Record<string, unknown>;\n page: string;\n query: Record<string, string | string[]>;\n buildId?: string;\n assetPrefix?: string;\n runtimeConfig?: Record<string, unknown>;\n nextExport?: boolean;\n autoExport?: boolean;\n isFallback?: boolean;\n dynamicIds?: (string | number)[];\n err?: { message: string; statusCode: number; name?: string };\n gsp?: boolean;\n gssp?: boolean;\n customServer?: boolean;\n gip?: boolean;\n appGip?: boolean;\n locale?: string;\n locales?: string[];\n defaultLocale?: string;\n domainLocales?: Array<{\n domain: string;\n defaultLocale: string;\n locales?: string[];\n http?: boolean;\n }>;\n scriptLoader?: unknown[];\n isPreview?: boolean;\n notFoundSrcPage?: string;\n};\n\n/**\n * Standard Next.js error shape.\n */\nexport function execOnce<T extends (...args: unknown[]) => unknown>(fn: T): T {\n let used = false;\n let result: unknown;\n return ((...args: unknown[]) => {\n if (!used) {\n used = true;\n result = fn(...args);\n }\n return result;\n }) as T;\n}\n\nexport function getLocationOrigin(): string {\n if (typeof window !== \"undefined\") {\n return window.location.origin;\n }\n return \"http://localhost\";\n}\n\nexport function getURL(): string {\n if (typeof window !== \"undefined\") {\n return window.location.href;\n }\n return \"http://localhost/\";\n}\n\nexport const SP = typeof performance !== \"undefined\";\nexport const ST = SP && typeof performance.mark === \"function\";\n"],"mappings":";;;;AAyCA,SAAgB,SAAoD,IAAU;CAC5E,IAAI,OAAO;CACX,IAAI;CACJ,SAAS,GAAG,SAAoB;EAC9B,IAAI,CAAC,MAAM;GACT,OAAO;GACP,SAAS,GAAG,GAAG,KAAK;;EAEtB,OAAO;;;AAIX,SAAgB,oBAA4B;CAC1C,IAAI,OAAO,WAAW,aACpB,OAAO,OAAO,SAAS;CAEzB,OAAO;;AAGT,SAAgB,SAAiB;CAC/B,IAAI,OAAO,WAAW,aACpB,OAAO,OAAO,SAAS;CAEzB,OAAO;;AAGT,MAAa,KAAK,OAAO,gBAAgB;AACzC,MAAa,KAAK,MAAM,OAAO,YAAY,SAAS"}
@@ -5,11 +5,11 @@ import { AsyncLocalStorage } from "node:async_hooks";
5
5
  * and next/dist/client/components/request-async-storage.external
6
6
  *
7
7
  * Tracks the current rendering context type so that dynamic APIs
8
- * (unstable_io, headers, cookies, etc.) can branch on whether they're
8
+ * (io, headers, cookies, etc.) can branch on whether they're
9
9
  * inside a request, prerender, cache scope, or other context.
10
10
  *
11
11
  * Used by: @sentry/nextjs (runtime resolve for request context injection),
12
- * unstable_io() for hanging-promise behavior during prerendering.
12
+ * io() for hanging-promise behavior during prerendering.
13
13
  */
14
14
  const workUnitAsyncStorage = new AsyncLocalStorage();
15
15
  const requestAsyncStorage = workUnitAsyncStorage;
@@ -1 +1 @@
1
- {"version":3,"file":"work-unit-async-storage.js","names":[],"sources":["../../../src/shims/internal/work-unit-async-storage.ts"],"sourcesContent":["/**\n * Shim for next/dist/server/app-render/work-unit-async-storage.external\n * and next/dist/client/components/request-async-storage.external\n *\n * Tracks the current rendering context type so that dynamic APIs\n * (unstable_io, headers, cookies, etc.) can branch on whether they're\n * inside a request, prerender, cache scope, or other context.\n *\n * Used by: @sentry/nextjs (runtime resolve for request context injection),\n * unstable_io() for hanging-promise behavior during prerendering.\n */\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\n// ── WorkUnitStore discriminated union ───────────────────────────────────\n\nexport type RequestStore = {\n readonly type: \"request\";\n};\n\nexport type PrerenderStore = {\n readonly type: \"prerender\" | \"prerender-client\" | \"prerender-runtime\";\n /** AbortSignal that fires when the prerender is cancelled or completed. */\n readonly renderSignal: AbortSignal;\n /** Optional route identifier for debugging and error messages. */\n readonly route?: string;\n};\n\nexport type CacheStore = {\n readonly type: \"cache\" | \"private-cache\" | \"unstable-cache\";\n};\n\nexport type GenerateStaticParamsStore = {\n readonly type: \"generate-static-params\";\n};\n\nexport type PrerenderLegacyStore = {\n readonly type: \"prerender-legacy\";\n};\n\n/**\n * Discriminated union of all known work unit types.\n * Matches Next.js's WorkUnitStore: packages/next/src/server/app-render/work-unit-async-storage.external.ts\n */\nexport type WorkUnitStore =\n | RequestStore\n | PrerenderStore\n | CacheStore\n | GenerateStaticParamsStore\n | PrerenderLegacyStore;\n\nexport type WorkUnitAsyncStorage = AsyncLocalStorage<WorkUnitStore>;\n\nexport const workUnitAsyncStorage: WorkUnitAsyncStorage = new AsyncLocalStorage();\n\n// Legacy name (Next 13.x–14.x)\nexport const requestAsyncStorage = workUnitAsyncStorage;\n"],"mappings":";;;;;;;;;;;;;AAoDA,MAAa,uBAA6C,IAAI,mBAAmB;AAGjF,MAAa,sBAAsB"}
1
+ {"version":3,"file":"work-unit-async-storage.js","names":[],"sources":["../../../src/shims/internal/work-unit-async-storage.ts"],"sourcesContent":["/**\n * Shim for next/dist/server/app-render/work-unit-async-storage.external\n * and next/dist/client/components/request-async-storage.external\n *\n * Tracks the current rendering context type so that dynamic APIs\n * (io, headers, cookies, etc.) can branch on whether they're\n * inside a request, prerender, cache scope, or other context.\n *\n * Used by: @sentry/nextjs (runtime resolve for request context injection),\n * io() for hanging-promise behavior during prerendering.\n */\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\n// ── WorkUnitStore discriminated union ───────────────────────────────────\n\nexport type RequestStore = {\n readonly type: \"request\";\n};\n\nexport type PrerenderStore = {\n readonly type: \"prerender\" | \"prerender-client\" | \"prerender-runtime\";\n /** AbortSignal that fires when the prerender is cancelled or completed. */\n readonly renderSignal: AbortSignal;\n /** Optional route identifier for debugging and error messages. */\n readonly route?: string;\n};\n\nexport type CacheStore = {\n readonly type: \"cache\" | \"private-cache\" | \"unstable-cache\";\n};\n\nexport type GenerateStaticParamsStore = {\n readonly type: \"generate-static-params\";\n};\n\nexport type PrerenderLegacyStore = {\n readonly type: \"prerender-legacy\";\n};\n\n/**\n * Discriminated union of all known work unit types.\n * Matches Next.js's WorkUnitStore: packages/next/src/server/app-render/work-unit-async-storage.external.ts\n */\nexport type WorkUnitStore =\n | RequestStore\n | PrerenderStore\n | CacheStore\n | GenerateStaticParamsStore\n | PrerenderLegacyStore;\n\nexport type WorkUnitAsyncStorage = AsyncLocalStorage<WorkUnitStore>;\n\nexport const workUnitAsyncStorage: WorkUnitAsyncStorage = new AsyncLocalStorage();\n\n// Legacy name (Next 13.x–14.x)\nexport const requestAsyncStorage = workUnitAsyncStorage;\n"],"mappings":";;;;;;;;;;;;;AAoDA,MAAa,uBAA6C,IAAI,mBAAmB;AAGjF,MAAa,sBAAsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"layout-segment-context.js","names":[],"sources":["../../src/shims/layout-segment-context.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * Layout segment context provider.\n *\n * Must be \"use client\" so that Vite's RSC bundler renders this component in\n * the SSR/browser environment where React.createContext is available. The RSC\n * entry imports and renders LayoutSegmentProvider directly, but because of the\n * \"use client\" boundary the actual execution happens on the SSR/client side\n * where the context can be created and consumed by useSelectedLayoutSegment(s).\n *\n * Without \"use client\", this runs in the RSC environment where\n * React.createContext is undefined, getLayoutSegmentContext() returns null,\n * the provider becomes a no-op, and useSelectedLayoutSegments always returns [].\n *\n * The context is shared with navigation.ts via getLayoutSegmentContext()\n * to avoid creating separate contexts in different modules.\n */\nimport { createElement, type ReactNode } from \"react\";\nimport { getLayoutSegmentContext, type SegmentMap } from \"./navigation.js\";\n\n/**\n * Wraps children with the layout segment context.\n *\n * Each layout in the App Router tree wraps its children with this provider,\n * passing a map of parallel route key to segment path. The \"children\" key is\n * always present (the default parallel route). Named parallel slots at this\n * layout level add their own keys.\n *\n * Components inside the provider call useSelectedLayoutSegments(parallelRoutesKey)\n * to read the segments for a specific parallel route.\n */\nexport function LayoutSegmentProvider({\n segmentMap,\n children,\n}: {\n segmentMap: SegmentMap;\n children: ReactNode;\n}) {\n const ctx = getLayoutSegmentContext();\n if (!ctx) {\n // No context available — expected only in RSC environment, not SSR/browser.\n return children;\n }\n return createElement(ctx.Provider, { value: segmentMap }, children);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,SAAgB,sBAAsB,EACpC,YACA,YAIC;CACD,MAAM,MAAM,yBAAyB;AACrC,KAAI,CAAC,IAEH,QAAO;AAET,QAAO,cAAc,IAAI,UAAU,EAAE,OAAO,YAAY,EAAE,SAAS"}
1
+ {"version":3,"file":"layout-segment-context.js","names":[],"sources":["../../src/shims/layout-segment-context.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * Layout segment context provider.\n *\n * Must be \"use client\" so that Vite's RSC bundler renders this component in\n * the SSR/browser environment where React.createContext is available. The RSC\n * entry imports and renders LayoutSegmentProvider directly, but because of the\n * \"use client\" boundary the actual execution happens on the SSR/client side\n * where the context can be created and consumed by useSelectedLayoutSegment(s).\n *\n * Without \"use client\", this runs in the RSC environment where\n * React.createContext is undefined, getLayoutSegmentContext() returns null,\n * the provider becomes a no-op, and useSelectedLayoutSegments always returns [].\n *\n * The context is shared with navigation.ts via getLayoutSegmentContext()\n * to avoid creating separate contexts in different modules.\n */\nimport { createElement, type ReactNode } from \"react\";\nimport { getLayoutSegmentContext, type SegmentMap } from \"./navigation.js\";\n\n/**\n * Wraps children with the layout segment context.\n *\n * Each layout in the App Router tree wraps its children with this provider,\n * passing a map of parallel route key to segment path. The \"children\" key is\n * always present (the default parallel route). Named parallel slots at this\n * layout level add their own keys.\n *\n * Components inside the provider call useSelectedLayoutSegments(parallelRoutesKey)\n * to read the segments for a specific parallel route.\n */\nexport function LayoutSegmentProvider({\n segmentMap,\n children,\n}: {\n segmentMap: SegmentMap;\n children: ReactNode;\n}) {\n const ctx = getLayoutSegmentContext();\n if (!ctx) {\n // No context available — expected only in RSC environment, not SSR/browser.\n return children;\n }\n return createElement(ctx.Provider, { value: segmentMap }, children);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,SAAgB,sBAAsB,EACpC,YACA,YAIC;CACD,MAAM,MAAM,yBAAyB;CACrC,IAAI,CAAC,KAEH,OAAO;CAET,OAAO,cAAc,IAAI,UAAU,EAAE,OAAO,YAAY,EAAE,SAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-image.js","names":[],"sources":["../../src/shims/legacy-image.tsx"],"sourcesContent":["/**\n * next/legacy/image shim\n *\n * Provides the pre-Next.js 13 Image component API with layout prop.\n * Translates legacy props (layout, objectFit, objectPosition) to the\n * modern Image component's fill/style props.\n *\n * This module is used by apps that ran the `next-image-to-legacy-image`\n * codemod when upgrading from Next.js 12.\n */\nimport React, { forwardRef } from \"react\";\nimport Image from \"./image.js\";\n\ntype LegacyImageProps = {\n src: string | { src: string; width: number; height: number; blurDataURL?: string };\n alt: string;\n width?: number | string;\n height?: number | string;\n /** Legacy layout mode */\n layout?: \"fixed\" | \"intrinsic\" | \"responsive\" | \"fill\";\n /** CSS object-fit (used with layout=\"fill\") */\n objectFit?: React.CSSProperties[\"objectFit\"];\n /** CSS object-position (used with layout=\"fill\") */\n objectPosition?: string;\n priority?: boolean;\n quality?: number;\n placeholder?: \"blur\" | \"empty\";\n blurDataURL?: string;\n loader?: (params: { src: string; width: number; quality?: number }) => string;\n sizes?: string;\n className?: string;\n style?: React.CSSProperties;\n onLoad?: React.ReactEventHandler<HTMLImageElement>;\n onLoadingComplete?: (result: { naturalWidth: number; naturalHeight: number }) => void;\n onError?: React.ReactEventHandler<HTMLImageElement>;\n loading?: \"lazy\" | \"eager\";\n unoptimized?: boolean;\n id?: string;\n};\n\nconst LegacyImage = forwardRef<HTMLImageElement, LegacyImageProps>(\n function LegacyImage(props, ref) {\n const {\n layout = \"intrinsic\",\n objectFit,\n objectPosition,\n onLoadingComplete,\n onLoad,\n width,\n height,\n style,\n ...rest\n } = props;\n\n // Translate legacy props to modern Image props\n const modernStyle: React.CSSProperties = { ...style };\n\n if (objectFit) modernStyle.objectFit = objectFit;\n if (objectPosition) modernStyle.objectPosition = objectPosition;\n\n const handleLoad = onLoadingComplete\n ? (e: React.SyntheticEvent<HTMLImageElement>) => {\n const img = e.currentTarget;\n onLoadingComplete({\n naturalWidth: img.naturalWidth,\n naturalHeight: img.naturalHeight,\n });\n onLoad?.(e);\n }\n : onLoad;\n\n if (layout === \"fill\") {\n return <Image ref={ref} fill style={modernStyle} onLoad={handleLoad} {...rest} />;\n }\n\n if (layout === \"responsive\") {\n // Responsive: takes full width, maintains aspect ratio\n modernStyle.width = \"100%\";\n modernStyle.height = \"auto\";\n }\n\n // For \"fixed\" and \"intrinsic\", pass width/height directly\n const w = typeof width === \"string\" ? parseInt(width, 10) : width;\n const h = typeof height === \"string\" ? parseInt(height, 10) : height;\n\n return (\n <Image ref={ref} width={w} height={h} style={modernStyle} onLoad={handleLoad} {...rest} />\n );\n },\n);\n\nexport default LegacyImage;\n"],"mappings":";;;;;;;;;;;;;;AAwCA,MAAM,cAAc,WAClB,SAAS,YAAY,OAAO,KAAK;CAC/B,MAAM,EACJ,SAAS,aACT,WACA,gBACA,mBACA,QACA,OACA,QACA,OACA,GAAG,SACD;CAGJ,MAAM,cAAmC,EAAE,GAAG,OAAO;AAErD,KAAI,UAAW,aAAY,YAAY;AACvC,KAAI,eAAgB,aAAY,iBAAiB;CAEjD,MAAM,aAAa,qBACd,MAA8C;EAC7C,MAAM,MAAM,EAAE;AACd,oBAAkB;GAChB,cAAc,IAAI;GAClB,eAAe,IAAI;GACpB,CAAC;AACF,WAAS,EAAE;KAEb;AAEJ,KAAI,WAAW,OACb,QAAO,oBAAC,OAAD;EAAY;EAAK,MAAA;EAAK,OAAO;EAAa,QAAQ;EAAY,GAAI;EAAQ,CAAA;AAGnF,KAAI,WAAW,cAAc;AAE3B,cAAY,QAAQ;AACpB,cAAY,SAAS;;AAOvB,QACE,oBAAC,OAAD;EAAY;EAAK,OAJT,OAAO,UAAU,WAAW,SAAS,OAAO,GAAG,GAAG;EAI/B,QAHnB,OAAO,WAAW,WAAW,SAAS,QAAQ,GAAG,GAAG;EAGtB,OAAO;EAAa,QAAQ;EAAY,GAAI;EAAQ,CAAA;EAG/F"}
1
+ {"version":3,"file":"legacy-image.js","names":[],"sources":["../../src/shims/legacy-image.tsx"],"sourcesContent":["/**\n * next/legacy/image shim\n *\n * Provides the pre-Next.js 13 Image component API with layout prop.\n * Translates legacy props (layout, objectFit, objectPosition) to the\n * modern Image component's fill/style props.\n *\n * This module is used by apps that ran the `next-image-to-legacy-image`\n * codemod when upgrading from Next.js 12.\n */\nimport React, { forwardRef } from \"react\";\nimport Image from \"./image.js\";\n\ntype LegacyImageProps = {\n src: string | { src: string; width: number; height: number; blurDataURL?: string };\n alt: string;\n width?: number | string;\n height?: number | string;\n /** Legacy layout mode */\n layout?: \"fixed\" | \"intrinsic\" | \"responsive\" | \"fill\";\n /** CSS object-fit (used with layout=\"fill\") */\n objectFit?: React.CSSProperties[\"objectFit\"];\n /** CSS object-position (used with layout=\"fill\") */\n objectPosition?: string;\n priority?: boolean;\n quality?: number;\n placeholder?: \"blur\" | \"empty\";\n blurDataURL?: string;\n loader?: (params: { src: string; width: number; quality?: number }) => string;\n sizes?: string;\n className?: string;\n style?: React.CSSProperties;\n onLoad?: React.ReactEventHandler<HTMLImageElement>;\n onLoadingComplete?: (result: { naturalWidth: number; naturalHeight: number }) => void;\n onError?: React.ReactEventHandler<HTMLImageElement>;\n loading?: \"lazy\" | \"eager\";\n unoptimized?: boolean;\n id?: string;\n};\n\nconst LegacyImage = forwardRef<HTMLImageElement, LegacyImageProps>(\n function LegacyImage(props, ref) {\n const {\n layout = \"intrinsic\",\n objectFit,\n objectPosition,\n onLoadingComplete,\n onLoad,\n width,\n height,\n style,\n ...rest\n } = props;\n\n // Translate legacy props to modern Image props\n const modernStyle: React.CSSProperties = { ...style };\n\n if (objectFit) modernStyle.objectFit = objectFit;\n if (objectPosition) modernStyle.objectPosition = objectPosition;\n\n const handleLoad = onLoadingComplete\n ? (e: React.SyntheticEvent<HTMLImageElement>) => {\n const img = e.currentTarget;\n onLoadingComplete({\n naturalWidth: img.naturalWidth,\n naturalHeight: img.naturalHeight,\n });\n onLoad?.(e);\n }\n : onLoad;\n\n if (layout === \"fill\") {\n return <Image ref={ref} fill style={modernStyle} onLoad={handleLoad} {...rest} />;\n }\n\n if (layout === \"responsive\") {\n // Responsive: takes full width, maintains aspect ratio\n modernStyle.width = \"100%\";\n modernStyle.height = \"auto\";\n }\n\n // For \"fixed\" and \"intrinsic\", pass width/height directly\n const w = typeof width === \"string\" ? parseInt(width, 10) : width;\n const h = typeof height === \"string\" ? parseInt(height, 10) : height;\n\n return (\n <Image ref={ref} width={w} height={h} style={modernStyle} onLoad={handleLoad} {...rest} />\n );\n },\n);\n\nexport default LegacyImage;\n"],"mappings":";;;;;;;;;;;;;;AAwCA,MAAM,cAAc,WAClB,SAAS,YAAY,OAAO,KAAK;CAC/B,MAAM,EACJ,SAAS,aACT,WACA,gBACA,mBACA,QACA,OACA,QACA,OACA,GAAG,SACD;CAGJ,MAAM,cAAmC,EAAE,GAAG,OAAO;CAErD,IAAI,WAAW,YAAY,YAAY;CACvC,IAAI,gBAAgB,YAAY,iBAAiB;CAEjD,MAAM,aAAa,qBACd,MAA8C;EAC7C,MAAM,MAAM,EAAE;EACd,kBAAkB;GAChB,cAAc,IAAI;GAClB,eAAe,IAAI;GACpB,CAAC;EACF,SAAS,EAAE;KAEb;CAEJ,IAAI,WAAW,QACb,OAAO,oBAAC,OAAD;EAAY;EAAK,MAAA;EAAK,OAAO;EAAa,QAAQ;EAAY,GAAI;EAAQ,CAAA;CAGnF,IAAI,WAAW,cAAc;EAE3B,YAAY,QAAQ;EACpB,YAAY,SAAS;;CAOvB,OACE,oBAAC,OAAD;EAAY;EAAK,OAJT,OAAO,UAAU,WAAW,SAAS,OAAO,GAAG,GAAG;EAI/B,QAHnB,OAAO,WAAW,WAAW,SAAS,QAAQ,GAAG,GAAG;EAGtB,OAAO;EAAa,QAAQ;EAAY,GAAI;EAAQ,CAAA;EAG/F"}
@@ -0,0 +1,42 @@
1
+ //#region src/shims/link-prefetch.d.ts
2
+ type LinkPrefetchIntent = "viewport" | "intent";
3
+ type LinkPrefetchPriority = "low" | "high";
4
+ type LinkPrefetchRouterMode = "app" | "pages";
5
+ type LinkPrefetchDecision = {
6
+ shouldPrefetch: false;
7
+ } | {
8
+ shouldPrefetch: true;
9
+ priority: LinkPrefetchPriority;
10
+ };
11
+ declare function canLinkPrefetch(input: {
12
+ nodeEnv: string | undefined;
13
+ prefetch: boolean | "auto" | null | undefined;
14
+ isDangerous: boolean;
15
+ }): boolean;
16
+ declare function canLinkIntentPrefetch(input: {
17
+ nodeEnv: string | undefined;
18
+ prefetch: boolean | "auto" | null | undefined;
19
+ isDangerous: boolean;
20
+ routerMode: LinkPrefetchRouterMode;
21
+ }): boolean;
22
+ declare function getLinkPrefetchDecision(input: {
23
+ nodeEnv: string | undefined;
24
+ prefetch: boolean | "auto" | null | undefined;
25
+ isDangerous: boolean;
26
+ intent: LinkPrefetchIntent;
27
+ routerMode?: LinkPrefetchRouterMode;
28
+ }): LinkPrefetchDecision;
29
+ /**
30
+ * Normalize absolute and protocol-relative Link hrefs to app-relative paths
31
+ * that are eligible for prefetching. Non-absolute relative hrefs are returned
32
+ * unchanged; callers must resolve them against the current browser URL before
33
+ * constructing a concrete fetch target.
34
+ */
35
+ declare function getLinkPrefetchHref(input: {
36
+ href: string;
37
+ basePath: string;
38
+ currentOrigin: string | undefined;
39
+ }): string | null;
40
+ //#endregion
41
+ export { LinkPrefetchDecision, LinkPrefetchIntent, LinkPrefetchPriority, LinkPrefetchRouterMode, canLinkIntentPrefetch, canLinkPrefetch, getLinkPrefetchDecision, getLinkPrefetchHref };
42
+ //# sourceMappingURL=link-prefetch.d.ts.map
@@ -0,0 +1,45 @@
1
+ import { hasBasePath, stripBasePath } from "../utils/base-path.js";
2
+ import { isAbsoluteOrProtocolRelativeUrl } from "./url-utils.js";
3
+ //#region src/shims/link-prefetch.ts
4
+ function canLinkPrefetch(input) {
5
+ return input.nodeEnv === "production" && input.prefetch !== false && !input.isDangerous;
6
+ }
7
+ function canLinkIntentPrefetch(input) {
8
+ if (input.nodeEnv !== "production" || input.isDangerous) return false;
9
+ return input.routerMode === "pages" || input.prefetch !== false;
10
+ }
11
+ function getLinkPrefetchDecision(input) {
12
+ if (!(input.intent === "intent" ? canLinkIntentPrefetch({
13
+ ...input,
14
+ routerMode: input.routerMode ?? "app"
15
+ }) : canLinkPrefetch(input))) return { shouldPrefetch: false };
16
+ return {
17
+ shouldPrefetch: true,
18
+ priority: input.intent === "intent" ? "high" : "low"
19
+ };
20
+ }
21
+ /**
22
+ * Normalize absolute and protocol-relative Link hrefs to app-relative paths
23
+ * that are eligible for prefetching. Non-absolute relative hrefs are returned
24
+ * unchanged; callers must resolve them against the current browser URL before
25
+ * constructing a concrete fetch target.
26
+ */
27
+ function getLinkPrefetchHref(input) {
28
+ const { href, basePath, currentOrigin } = input;
29
+ if (!isAbsoluteOrProtocolRelativeUrl(href)) return href;
30
+ if (currentOrigin === void 0) return null;
31
+ try {
32
+ const current = new URL(currentOrigin);
33
+ const parsed = href.startsWith("//") ? new URL(href, current.origin) : new URL(href);
34
+ if (parsed.origin !== current.origin) return null;
35
+ if (!basePath) return parsed.pathname + parsed.search + parsed.hash;
36
+ if (!hasBasePath(parsed.pathname, basePath)) return null;
37
+ return stripBasePath(parsed.pathname, basePath) + parsed.search + parsed.hash;
38
+ } catch {
39
+ return null;
40
+ }
41
+ }
42
+ //#endregion
43
+ export { canLinkIntentPrefetch, canLinkPrefetch, getLinkPrefetchDecision, getLinkPrefetchHref };
44
+
45
+ //# sourceMappingURL=link-prefetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-prefetch.js","names":[],"sources":["../../src/shims/link-prefetch.ts"],"sourcesContent":["import { hasBasePath, stripBasePath } from \"../utils/base-path.js\";\nimport { isAbsoluteOrProtocolRelativeUrl } from \"./url-utils.js\";\n\nexport type LinkPrefetchIntent = \"viewport\" | \"intent\";\nexport type LinkPrefetchPriority = \"low\" | \"high\";\nexport type LinkPrefetchRouterMode = \"app\" | \"pages\";\n\nexport type LinkPrefetchDecision =\n | {\n shouldPrefetch: false;\n }\n | {\n shouldPrefetch: true;\n priority: LinkPrefetchPriority;\n };\n\nexport function canLinkPrefetch(input: {\n nodeEnv: string | undefined;\n prefetch: boolean | \"auto\" | null | undefined;\n isDangerous: boolean;\n}): boolean {\n return input.nodeEnv === \"production\" && input.prefetch !== false && !input.isDangerous;\n}\n\nexport function canLinkIntentPrefetch(input: {\n nodeEnv: string | undefined;\n prefetch: boolean | \"auto\" | null | undefined;\n isDangerous: boolean;\n routerMode: LinkPrefetchRouterMode;\n}): boolean {\n if (input.nodeEnv !== \"production\" || input.isDangerous) return false;\n return input.routerMode === \"pages\" || input.prefetch !== false;\n}\n\nexport function getLinkPrefetchDecision(input: {\n nodeEnv: string | undefined;\n prefetch: boolean | \"auto\" | null | undefined;\n isDangerous: boolean;\n intent: LinkPrefetchIntent;\n routerMode?: LinkPrefetchRouterMode;\n}): LinkPrefetchDecision {\n const shouldPrefetch =\n input.intent === \"intent\"\n ? canLinkIntentPrefetch({\n ...input,\n routerMode: input.routerMode ?? \"app\",\n })\n : canLinkPrefetch(input);\n if (!shouldPrefetch) return { shouldPrefetch: false };\n\n return {\n shouldPrefetch: true,\n priority: input.intent === \"intent\" ? \"high\" : \"low\",\n };\n}\n\n/**\n * Normalize absolute and protocol-relative Link hrefs to app-relative paths\n * that are eligible for prefetching. Non-absolute relative hrefs are returned\n * unchanged; callers must resolve them against the current browser URL before\n * constructing a concrete fetch target.\n */\nexport function getLinkPrefetchHref(input: {\n href: string;\n basePath: string;\n currentOrigin: string | undefined;\n}): string | null {\n const { href, basePath, currentOrigin } = input;\n if (!isAbsoluteOrProtocolRelativeUrl(href)) return href;\n if (currentOrigin === undefined) return null;\n\n try {\n const current = new URL(currentOrigin);\n const parsed = href.startsWith(\"//\") ? new URL(href, current.origin) : new URL(href);\n if (parsed.origin !== current.origin) return null;\n\n if (!basePath) {\n return parsed.pathname + parsed.search + parsed.hash;\n }\n\n if (!hasBasePath(parsed.pathname, basePath)) {\n return null;\n }\n\n return stripBasePath(parsed.pathname, basePath) + parsed.search + parsed.hash;\n } catch {\n return null;\n }\n}\n"],"mappings":";;;AAgBA,SAAgB,gBAAgB,OAIpB;CACV,OAAO,MAAM,YAAY,gBAAgB,MAAM,aAAa,SAAS,CAAC,MAAM;;AAG9E,SAAgB,sBAAsB,OAK1B;CACV,IAAI,MAAM,YAAY,gBAAgB,MAAM,aAAa,OAAO;CAChE,OAAO,MAAM,eAAe,WAAW,MAAM,aAAa;;AAG5D,SAAgB,wBAAwB,OAMf;CAQvB,IAAI,EANF,MAAM,WAAW,WACb,sBAAsB;EACpB,GAAG;EACH,YAAY,MAAM,cAAc;EACjC,CAAC,GACF,gBAAgB,MAAM,GACP,OAAO,EAAE,gBAAgB,OAAO;CAErD,OAAO;EACL,gBAAgB;EAChB,UAAU,MAAM,WAAW,WAAW,SAAS;EAChD;;;;;;;;AASH,SAAgB,oBAAoB,OAIlB;CAChB,MAAM,EAAE,MAAM,UAAU,kBAAkB;CAC1C,IAAI,CAAC,gCAAgC,KAAK,EAAE,OAAO;CACnD,IAAI,kBAAkB,KAAA,GAAW,OAAO;CAExC,IAAI;EACF,MAAM,UAAU,IAAI,IAAI,cAAc;EACtC,MAAM,SAAS,KAAK,WAAW,KAAK,GAAG,IAAI,IAAI,MAAM,QAAQ,OAAO,GAAG,IAAI,IAAI,KAAK;EACpF,IAAI,OAAO,WAAW,QAAQ,QAAQ,OAAO;EAE7C,IAAI,CAAC,UACH,OAAO,OAAO,WAAW,OAAO,SAAS,OAAO;EAGlD,IAAI,CAAC,YAAY,OAAO,UAAU,SAAS,EACzC,OAAO;EAGT,OAAO,cAAc,OAAO,UAAU,SAAS,GAAG,OAAO,SAAS,OAAO;SACnE;EACN,OAAO"}
@@ -1,5 +1,6 @@
1
+ import { VinextLinkPrefetchRoute } from "../client/vinext-next-data.js";
1
2
  import { UrlQuery } from "../utils/query.js";
2
- import React from "react";
3
+ import React, { AnchorHTMLAttributes } from "react";
3
4
 
4
5
  //#region src/shims/link.d.ts
5
6
  type NavigateEvent = {
@@ -7,6 +8,31 @@ type NavigateEvent = {
7
8
  preventDefault(): void; /** Whether preventDefault() has been called. */
8
9
  defaultPrevented: boolean;
9
10
  };
11
+ type LinkProps = {
12
+ href: string | {
13
+ pathname?: string;
14
+ query?: UrlQuery;
15
+ }; /** URL displayed in the browser (when href is a route pattern like /user/[id]) */
16
+ as?: string; /** Replace the current history entry instead of pushing */
17
+ replace?: boolean; /** Prefetch the page in the background (App Router default: auto, Pages Router default: true) */
18
+ prefetch?: boolean | "auto" | null;
19
+ /**
20
+ * Unstable App Router option matching Next.js canary: an automatic prefetch
21
+ * is upgraded to a full prefetch when the user shows navigation intent.
22
+ */
23
+ unstable_dynamicOnHover?: boolean; /** Whether to pass the href to the child element */
24
+ passHref?: boolean; /** Scroll to top on navigation (default: true) */
25
+ scroll?: boolean; /** Locale for i18n (used for locale-prefixed URLs) */
26
+ locale?: string | false; /** Called before navigation happens (Next.js 16). Return value is ignored. */
27
+ onNavigate?: (event: NavigateEvent) => void;
28
+ children?: React.ReactNode;
29
+ } & Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "href">;
30
+ type LinkPrefetchMode = "disabled" | "auto" | "full";
31
+ declare global {
32
+ interface Window {
33
+ __VINEXT_LINK_PREFETCH_ROUTES__?: VinextLinkPrefetchRoute[];
34
+ }
35
+ }
10
36
  type LinkStatusContextValue = {
11
37
  pending: boolean;
12
38
  };
@@ -16,14 +42,21 @@ type LinkStatusContextValue = {
16
42
  * prefetch-triggered navigation is in progress.
17
43
  */
18
44
  declare function useLinkStatus(): LinkStatusContextValue;
45
+ declare function resolveLinkPrefetchMode(prefetchProp: LinkProps["prefetch"], isDangerous: boolean): LinkPrefetchMode;
46
+ declare function canAutoPrefetchFullAppRoute(href: string): boolean;
19
47
  declare const Link: React.ForwardRefExoticComponent<{
20
48
  href: string | {
21
49
  pathname?: string;
22
50
  query?: UrlQuery;
23
51
  }; /** URL displayed in the browser (when href is a route pattern like /user/[id]) */
24
52
  as?: string; /** Replace the current history entry instead of pushing */
25
- replace?: boolean; /** Prefetch the page in the background (default: true, uses IntersectionObserver) */
26
- prefetch?: boolean; /** Whether to pass the href to the child element */
53
+ replace?: boolean; /** Prefetch the page in the background (App Router default: auto, Pages Router default: true) */
54
+ prefetch?: boolean | "auto" | null;
55
+ /**
56
+ * Unstable App Router option matching Next.js canary: an automatic prefetch
57
+ * is upgraded to a full prefetch when the user shows navigation intent.
58
+ */
59
+ unstable_dynamicOnHover?: boolean; /** Whether to pass the href to the child element */
27
60
  passHref?: boolean; /** Scroll to top on navigation (default: true) */
28
61
  scroll?: boolean; /** Locale for i18n (used for locale-prefixed URLs) */
29
62
  locale?: string | false; /** Called before navigation happens (Next.js 16). Return value is ignored. */
@@ -31,5 +64,5 @@ declare const Link: React.ForwardRefExoticComponent<{
31
64
  children?: React.ReactNode;
32
65
  } & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "href"> & React.RefAttributes<HTMLAnchorElement>>;
33
66
  //#endregion
34
- export { Link as default, useLinkStatus };
67
+ export { canAutoPrefetchFullAppRoute, Link as default, resolveLinkPrefetchMode, useLinkStatus };
35
68
  //# sourceMappingURL=link.d.ts.map