vinext 0.0.51 → 0.0.53

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 (423) hide show
  1. package/README.md +1 -1
  2. package/dist/build/clean-output.d.ts +14 -0
  3. package/dist/build/clean-output.js +36 -0
  4. package/dist/build/clean-output.js.map +1 -0
  5. package/dist/build/precompress.d.ts +7 -7
  6. package/dist/build/precompress.js +18 -17
  7. package/dist/build/precompress.js.map +1 -1
  8. package/dist/build/prerender.d.ts +9 -16
  9. package/dist/build/prerender.js +88 -50
  10. package/dist/build/prerender.js.map +1 -1
  11. package/dist/build/run-prerender.js +10 -1
  12. package/dist/build/run-prerender.js.map +1 -1
  13. package/dist/build/static-export.d.ts +5 -0
  14. package/dist/build/static-export.js +8 -3
  15. package/dist/build/static-export.js.map +1 -1
  16. package/dist/check.js +4 -0
  17. package/dist/check.js.map +1 -1
  18. package/dist/cli-args.d.ts +1 -0
  19. package/dist/cli-args.js +5 -0
  20. package/dist/cli-args.js.map +1 -1
  21. package/dist/cli.js +58 -4
  22. package/dist/cli.js.map +1 -1
  23. package/dist/client/instrumentation-client-inject.d.ts +34 -0
  24. package/dist/client/instrumentation-client-inject.js +57 -0
  25. package/dist/client/instrumentation-client-inject.js.map +1 -0
  26. package/dist/client/navigation-runtime.d.ts +60 -0
  27. package/dist/client/navigation-runtime.js +171 -0
  28. package/dist/client/navigation-runtime.js.map +1 -0
  29. package/dist/client/pages-router-link-navigation.d.ts +26 -0
  30. package/dist/client/pages-router-link-navigation.js +14 -0
  31. package/dist/client/pages-router-link-navigation.js.map +1 -0
  32. package/dist/client/vinext-next-data.d.ts +14 -3
  33. package/dist/client/vinext-next-data.js +50 -1
  34. package/dist/client/vinext-next-data.js.map +1 -0
  35. package/dist/client/window-next.d.ts +10 -2
  36. package/dist/client/window-next.js.map +1 -1
  37. package/dist/cloudflare/kv-cache-handler.js +2 -1
  38. package/dist/cloudflare/kv-cache-handler.js.map +1 -1
  39. package/dist/cloudflare/tpr.js +1 -1
  40. package/dist/cloudflare/tpr.js.map +1 -1
  41. package/dist/config/config-matchers.d.ts +63 -16
  42. package/dist/config/config-matchers.js +145 -9
  43. package/dist/config/config-matchers.js.map +1 -1
  44. package/dist/config/next-config.d.ts +32 -5
  45. package/dist/config/next-config.js +55 -15
  46. package/dist/config/next-config.js.map +1 -1
  47. package/dist/deploy.js +130 -46
  48. package/dist/deploy.js.map +1 -1
  49. package/dist/entries/app-browser-entry.js +9 -3
  50. package/dist/entries/app-browser-entry.js.map +1 -1
  51. package/dist/entries/app-rsc-entry.d.ts +4 -2
  52. package/dist/entries/app-rsc-entry.js +76 -16
  53. package/dist/entries/app-rsc-entry.js.map +1 -1
  54. package/dist/entries/app-rsc-manifest.d.ts +1 -0
  55. package/dist/entries/app-rsc-manifest.js +53 -6
  56. package/dist/entries/app-rsc-manifest.js.map +1 -1
  57. package/dist/entries/app-ssr-entry.d.ts +3 -3
  58. package/dist/entries/app-ssr-entry.js +4 -4
  59. package/dist/entries/app-ssr-entry.js.map +1 -1
  60. package/dist/entries/pages-client-entry.js +40 -3
  61. package/dist/entries/pages-client-entry.js.map +1 -1
  62. package/dist/entries/pages-server-entry.js +261 -31
  63. package/dist/entries/pages-server-entry.js.map +1 -1
  64. package/dist/entries/runtime-entry-module.d.ts +2 -1
  65. package/dist/entries/runtime-entry-module.js +9 -3
  66. package/dist/entries/runtime-entry-module.js.map +1 -1
  67. package/dist/index.js +161 -46
  68. package/dist/index.js.map +1 -1
  69. package/dist/plugins/css-data-url.d.ts +7 -0
  70. package/dist/plugins/css-data-url.js +81 -0
  71. package/dist/plugins/css-data-url.js.map +1 -0
  72. package/dist/plugins/fonts.js +30 -5
  73. package/dist/plugins/fonts.js.map +1 -1
  74. package/dist/plugins/middleware-server-only.d.ts +54 -0
  75. package/dist/plugins/middleware-server-only.js +91 -0
  76. package/dist/plugins/middleware-server-only.js.map +1 -0
  77. package/dist/plugins/optimize-imports.js +4 -4
  78. package/dist/plugins/optimize-imports.js.map +1 -1
  79. package/dist/plugins/strip-server-exports.js +5 -8
  80. package/dist/plugins/strip-server-exports.js.map +1 -1
  81. package/dist/routing/app-route-graph.d.ts +20 -1
  82. package/dist/routing/app-route-graph.js +58 -6
  83. package/dist/routing/app-route-graph.js.map +1 -1
  84. package/dist/routing/app-router.d.ts +2 -2
  85. package/dist/routing/app-router.js +2 -2
  86. package/dist/routing/app-router.js.map +1 -1
  87. package/dist/routing/route-trie.js +13 -18
  88. package/dist/routing/route-trie.js.map +1 -1
  89. package/dist/routing/utils.d.ts +12 -1
  90. package/dist/routing/utils.js +18 -1
  91. package/dist/routing/utils.js.map +1 -1
  92. package/dist/server/api-handler.js +153 -42
  93. package/dist/server/api-handler.js.map +1 -1
  94. package/dist/server/app-browser-action-result.d.ts +16 -1
  95. package/dist/server/app-browser-action-result.js +15 -1
  96. package/dist/server/app-browser-action-result.js.map +1 -1
  97. package/dist/server/app-browser-entry.js +309 -155
  98. package/dist/server/app-browser-entry.js.map +1 -1
  99. package/dist/server/app-browser-interception-context.d.ts +24 -0
  100. package/dist/server/app-browser-interception-context.js +32 -0
  101. package/dist/server/app-browser-interception-context.js.map +1 -0
  102. package/dist/server/app-browser-navigation-controller.d.ts +3 -1
  103. package/dist/server/app-browser-navigation-controller.js +5 -1
  104. package/dist/server/app-browser-navigation-controller.js.map +1 -1
  105. package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
  106. package/dist/server/app-browser-rsc-redirect.js +2 -2
  107. package/dist/server/app-browser-rsc-redirect.js.map +1 -1
  108. package/dist/server/app-browser-state.d.ts +18 -1
  109. package/dist/server/app-browser-state.js +19 -1
  110. package/dist/server/app-browser-state.js.map +1 -1
  111. package/dist/server/app-browser-stream.d.ts +5 -14
  112. package/dist/server/app-browser-stream.js +13 -7
  113. package/dist/server/app-browser-stream.js.map +1 -1
  114. package/dist/server/app-browser-visible-commit.d.ts +2 -1
  115. package/dist/server/app-browser-visible-commit.js +1 -0
  116. package/dist/server/app-browser-visible-commit.js.map +1 -1
  117. package/dist/server/app-elements-wire.d.ts +10 -5
  118. package/dist/server/app-elements-wire.js +84 -2
  119. package/dist/server/app-elements-wire.js.map +1 -1
  120. package/dist/server/app-elements.d.ts +3 -2
  121. package/dist/server/app-elements.js +3 -2
  122. package/dist/server/app-elements.js.map +1 -1
  123. package/dist/server/app-fallback-renderer.d.ts +12 -3
  124. package/dist/server/app-fallback-renderer.js +15 -8
  125. package/dist/server/app-fallback-renderer.js.map +1 -1
  126. package/dist/server/app-history-state.js +6 -2
  127. package/dist/server/app-history-state.js.map +1 -1
  128. package/dist/server/app-interception-context-header.d.ts +33 -0
  129. package/dist/server/app-interception-context-header.js +44 -0
  130. package/dist/server/app-interception-context-header.js.map +1 -0
  131. package/dist/server/app-middleware.d.ts +13 -0
  132. package/dist/server/app-middleware.js +3 -1
  133. package/dist/server/app-middleware.js.map +1 -1
  134. package/dist/server/app-mounted-slots-header.d.ts +19 -0
  135. package/dist/server/app-mounted-slots-header.js +40 -1
  136. package/dist/server/app-mounted-slots-header.js.map +1 -1
  137. package/dist/server/app-optimistic-routing.d.ts +54 -0
  138. package/dist/server/app-optimistic-routing.js +208 -0
  139. package/dist/server/app-optimistic-routing.js.map +1 -0
  140. package/dist/server/app-page-boundary-render.d.ts +1 -0
  141. package/dist/server/app-page-boundary-render.js +2 -0
  142. package/dist/server/app-page-boundary-render.js.map +1 -1
  143. package/dist/server/app-page-boundary.d.ts +1 -0
  144. package/dist/server/app-page-boundary.js +2 -0
  145. package/dist/server/app-page-boundary.js.map +1 -1
  146. package/dist/server/app-page-cache.d.ts +15 -1
  147. package/dist/server/app-page-cache.js +68 -7
  148. package/dist/server/app-page-cache.js.map +1 -1
  149. package/dist/server/app-page-dispatch.d.ts +5 -0
  150. package/dist/server/app-page-dispatch.js +39 -5
  151. package/dist/server/app-page-dispatch.js.map +1 -1
  152. package/dist/server/app-page-element-builder.d.ts +2 -1
  153. package/dist/server/app-page-element-builder.js +7 -3
  154. package/dist/server/app-page-element-builder.js.map +1 -1
  155. package/dist/server/app-page-execution.d.ts +29 -1
  156. package/dist/server/app-page-execution.js +91 -4
  157. package/dist/server/app-page-execution.js.map +1 -1
  158. package/dist/server/app-page-head.d.ts +1 -0
  159. package/dist/server/app-page-head.js +29 -2
  160. package/dist/server/app-page-head.js.map +1 -1
  161. package/dist/server/app-page-probe.js +1 -1
  162. package/dist/server/app-page-render-observation.js +1 -1
  163. package/dist/server/app-page-render.d.ts +3 -0
  164. package/dist/server/app-page-render.js +7 -3
  165. package/dist/server/app-page-render.js.map +1 -1
  166. package/dist/server/app-page-response.d.ts +11 -1
  167. package/dist/server/app-page-response.js +18 -5
  168. package/dist/server/app-page-response.js.map +1 -1
  169. package/dist/server/app-page-route-wiring.d.ts +1 -0
  170. package/dist/server/app-page-route-wiring.js +35 -15
  171. package/dist/server/app-page-route-wiring.js.map +1 -1
  172. package/dist/server/app-page-stream.d.ts +4 -0
  173. package/dist/server/app-page-stream.js +3 -0
  174. package/dist/server/app-page-stream.js.map +1 -1
  175. package/dist/server/app-prerender-static-params.d.ts +2 -1
  176. package/dist/server/app-prerender-static-params.js +44 -8
  177. package/dist/server/app-prerender-static-params.js.map +1 -1
  178. package/dist/server/app-route-handler-cache.d.ts +2 -2
  179. package/dist/server/app-route-handler-cache.js +3 -2
  180. package/dist/server/app-route-handler-cache.js.map +1 -1
  181. package/dist/server/app-route-handler-dispatch.d.ts +7 -1
  182. package/dist/server/app-route-handler-dispatch.js +4 -1
  183. package/dist/server/app-route-handler-dispatch.js.map +1 -1
  184. package/dist/server/app-route-handler-execution.d.ts +18 -2
  185. package/dist/server/app-route-handler-execution.js +1 -0
  186. package/dist/server/app-route-handler-execution.js.map +1 -1
  187. package/dist/server/app-route-handler-response.js +6 -5
  188. package/dist/server/app-route-handler-response.js.map +1 -1
  189. package/dist/server/app-router-entry.js +6 -2
  190. package/dist/server/app-router-entry.js.map +1 -1
  191. package/dist/server/app-rsc-handler.d.ts +11 -1
  192. package/dist/server/app-rsc-handler.js +48 -21
  193. package/dist/server/app-rsc-handler.js.map +1 -1
  194. package/dist/server/app-rsc-render-mode.d.ts +4 -3
  195. package/dist/server/app-rsc-render-mode.js +7 -1
  196. package/dist/server/app-rsc-render-mode.js.map +1 -1
  197. package/dist/server/app-rsc-request-normalization.d.ts +4 -1
  198. package/dist/server/app-rsc-request-normalization.js +6 -2
  199. package/dist/server/app-rsc-request-normalization.js.map +1 -1
  200. package/dist/server/app-rsc-response-finalizer.d.ts +8 -1
  201. package/dist/server/app-rsc-response-finalizer.js +10 -3
  202. package/dist/server/app-rsc-response-finalizer.js.map +1 -1
  203. package/dist/server/app-rsc-route-matching.js +2 -2
  204. package/dist/server/app-rsc-route-matching.js.map +1 -1
  205. package/dist/server/app-segment-config.d.ts +4 -1
  206. package/dist/server/app-segment-config.js +6 -1
  207. package/dist/server/app-segment-config.js.map +1 -1
  208. package/dist/server/app-server-action-execution.d.ts +1 -0
  209. package/dist/server/app-server-action-execution.js +5 -1
  210. package/dist/server/app-server-action-execution.js.map +1 -1
  211. package/dist/server/app-ssr-entry.d.ts +2 -0
  212. package/dist/server/app-ssr-entry.js +92 -55
  213. package/dist/server/app-ssr-entry.js.map +1 -1
  214. package/dist/server/app-ssr-stream.d.ts +30 -2
  215. package/dist/server/app-ssr-stream.js +95 -8
  216. package/dist/server/app-ssr-stream.js.map +1 -1
  217. package/dist/server/app-static-generation.d.ts +1 -0
  218. package/dist/server/app-static-generation.js +2 -1
  219. package/dist/server/app-static-generation.js.map +1 -1
  220. package/dist/server/artifact-compatibility.d.ts +1 -1
  221. package/dist/server/artifact-compatibility.js.map +1 -1
  222. package/dist/server/cache-headers.d.ts +7 -0
  223. package/dist/server/cache-headers.js +19 -0
  224. package/dist/server/cache-headers.js.map +1 -0
  225. package/dist/server/cache-proof.d.ts +49 -3
  226. package/dist/server/cache-proof.js +78 -22
  227. package/dist/server/cache-proof.js.map +1 -1
  228. package/dist/server/client-reuse-manifest.d.ts +99 -0
  229. package/dist/server/client-reuse-manifest.js +212 -0
  230. package/dist/server/client-reuse-manifest.js.map +1 -0
  231. package/dist/server/default-global-error-module.d.ts +20 -0
  232. package/dist/server/default-global-error-module.js +20 -0
  233. package/dist/server/default-global-error-module.js.map +1 -0
  234. package/dist/server/default-not-found-module.d.ts +20 -0
  235. package/dist/server/default-not-found-module.js +20 -0
  236. package/dist/server/default-not-found-module.js.map +1 -0
  237. package/dist/server/dev-server.d.ts +10 -2
  238. package/dist/server/dev-server.js +99 -36
  239. package/dist/server/dev-server.js.map +1 -1
  240. package/dist/server/edge-api-runtime.d.ts +5 -0
  241. package/dist/server/edge-api-runtime.js +8 -0
  242. package/dist/server/edge-api-runtime.js.map +1 -0
  243. package/dist/server/headers.d.ts +22 -1
  244. package/dist/server/headers.js +22 -1
  245. package/dist/server/headers.js.map +1 -1
  246. package/dist/server/http-error-responses.d.ts +16 -1
  247. package/dist/server/http-error-responses.js +21 -1
  248. package/dist/server/http-error-responses.js.map +1 -1
  249. package/dist/server/image-optimization.d.ts +13 -4
  250. package/dist/server/image-optimization.js +15 -4
  251. package/dist/server/image-optimization.js.map +1 -1
  252. package/dist/server/isr-cache.d.ts +6 -2
  253. package/dist/server/isr-cache.js +20 -4
  254. package/dist/server/isr-cache.js.map +1 -1
  255. package/dist/server/middleware-runtime.d.ts +15 -0
  256. package/dist/server/middleware-runtime.js +59 -7
  257. package/dist/server/middleware-runtime.js.map +1 -1
  258. package/dist/server/middleware.d.ts +1 -1
  259. package/dist/server/middleware.js +5 -3
  260. package/dist/server/middleware.js.map +1 -1
  261. package/dist/server/navigation-planner.d.ts +9 -3
  262. package/dist/server/navigation-planner.js +98 -25
  263. package/dist/server/navigation-planner.js.map +1 -1
  264. package/dist/server/navigation-trace.d.ts +2 -1
  265. package/dist/server/navigation-trace.js +1 -0
  266. package/dist/server/navigation-trace.js.map +1 -1
  267. package/dist/server/pages-api-route.d.ts +45 -1
  268. package/dist/server/pages-api-route.js +27 -4
  269. package/dist/server/pages-api-route.js.map +1 -1
  270. package/dist/server/pages-body-parser-config.d.ts +60 -0
  271. package/dist/server/pages-body-parser-config.js +79 -0
  272. package/dist/server/pages-body-parser-config.js.map +1 -0
  273. package/dist/server/pages-data-route.d.ts +77 -0
  274. package/dist/server/pages-data-route.js +98 -0
  275. package/dist/server/pages-data-route.js.map +1 -0
  276. package/dist/server/pages-default-404.d.ts +31 -0
  277. package/dist/server/pages-default-404.js +40 -0
  278. package/dist/server/pages-default-404.js.map +1 -0
  279. package/dist/server/pages-i18n.d.ts +51 -1
  280. package/dist/server/pages-i18n.js +61 -1
  281. package/dist/server/pages-i18n.js.map +1 -1
  282. package/dist/server/pages-node-compat.d.ts +10 -0
  283. package/dist/server/pages-node-compat.js +12 -1
  284. package/dist/server/pages-node-compat.js.map +1 -1
  285. package/dist/server/pages-page-data.d.ts +69 -2
  286. package/dist/server/pages-page-data.js +47 -31
  287. package/dist/server/pages-page-data.js.map +1 -1
  288. package/dist/server/pages-page-response.d.ts +13 -1
  289. package/dist/server/pages-page-response.js +16 -11
  290. package/dist/server/pages-page-response.js.map +1 -1
  291. package/dist/server/prerender-route-params.d.ts +14 -0
  292. package/dist/server/prerender-route-params.js +94 -0
  293. package/dist/server/prerender-route-params.js.map +1 -0
  294. package/dist/server/prod-server.d.ts +15 -37
  295. package/dist/server/prod-server.js +143 -107
  296. package/dist/server/prod-server.js.map +1 -1
  297. package/dist/server/proxy-trust.d.ts +41 -0
  298. package/dist/server/proxy-trust.js +70 -0
  299. package/dist/server/proxy-trust.js.map +1 -0
  300. package/dist/server/request-pipeline.d.ts +13 -4
  301. package/dist/server/request-pipeline.js +32 -14
  302. package/dist/server/request-pipeline.js.map +1 -1
  303. package/dist/server/seed-cache.d.ts +12 -31
  304. package/dist/server/seed-cache.js +30 -37
  305. package/dist/server/seed-cache.js.map +1 -1
  306. package/dist/server/server-action-not-found.js +8 -3
  307. package/dist/server/server-action-not-found.js.map +1 -1
  308. package/dist/server/skip-cache-proof.d.ts +41 -0
  309. package/dist/server/skip-cache-proof.js +101 -0
  310. package/dist/server/skip-cache-proof.js.map +1 -0
  311. package/dist/server/static-file-cache.d.ts +1 -1
  312. package/dist/server/static-file-cache.js +8 -7
  313. package/dist/server/static-file-cache.js.map +1 -1
  314. package/dist/server/streaming-metadata.d.ts +5 -0
  315. package/dist/server/streaming-metadata.js +10 -0
  316. package/dist/server/streaming-metadata.js.map +1 -0
  317. package/dist/shims/app-router-scroll-state.d.ts +12 -0
  318. package/dist/shims/app-router-scroll-state.js +38 -0
  319. package/dist/shims/app-router-scroll-state.js.map +1 -0
  320. package/dist/shims/app-router-scroll.d.ts +14 -0
  321. package/dist/shims/app-router-scroll.js +100 -0
  322. package/dist/shims/app-router-scroll.js.map +1 -0
  323. package/dist/shims/before-interactive-context.d.ts +30 -0
  324. package/dist/shims/before-interactive-context.js +10 -0
  325. package/dist/shims/before-interactive-context.js.map +1 -0
  326. package/dist/shims/cache-runtime.d.ts +1 -1
  327. package/dist/shims/cache-runtime.js +14 -1
  328. package/dist/shims/cache-runtime.js.map +1 -1
  329. package/dist/shims/client-locale.d.ts +15 -0
  330. package/dist/shims/client-locale.js +13 -0
  331. package/dist/shims/client-locale.js.map +1 -0
  332. package/dist/shims/default-global-error.d.ts +32 -0
  333. package/dist/shims/default-global-error.js +181 -0
  334. package/dist/shims/default-global-error.js.map +1 -0
  335. package/dist/shims/default-not-found.d.ts +12 -0
  336. package/dist/shims/default-not-found.js +61 -0
  337. package/dist/shims/default-not-found.js.map +1 -0
  338. package/dist/shims/document.d.ts +59 -3
  339. package/dist/shims/document.js +36 -5
  340. package/dist/shims/document.js.map +1 -1
  341. package/dist/shims/error-boundary.d.ts +2 -2
  342. package/dist/shims/font-local.d.ts +5 -0
  343. package/dist/shims/font-local.js +6 -2
  344. package/dist/shims/font-local.js.map +1 -1
  345. package/dist/shims/form.js +13 -6
  346. package/dist/shims/form.js.map +1 -1
  347. package/dist/shims/head.js +4 -4
  348. package/dist/shims/head.js.map +1 -1
  349. package/dist/shims/headers.d.ts +6 -2
  350. package/dist/shims/headers.js +64 -21
  351. package/dist/shims/headers.js.map +1 -1
  352. package/dist/shims/image.d.ts +1 -1
  353. package/dist/shims/image.js +4 -4
  354. package/dist/shims/image.js.map +1 -1
  355. package/dist/shims/internal/pages-data-target.d.ts +58 -0
  356. package/dist/shims/internal/pages-data-target.js +91 -0
  357. package/dist/shims/internal/pages-data-target.js.map +1 -0
  358. package/dist/shims/internal/pages-data-url.d.ts +42 -0
  359. package/dist/shims/internal/pages-data-url.js +73 -0
  360. package/dist/shims/internal/pages-data-url.js.map +1 -0
  361. package/dist/shims/link.d.ts +21 -3
  362. package/dist/shims/link.js +189 -30
  363. package/dist/shims/link.js.map +1 -1
  364. package/dist/shims/metadata.d.ts +2 -1
  365. package/dist/shims/metadata.js +65 -6
  366. package/dist/shims/metadata.js.map +1 -1
  367. package/dist/shims/navigation.d.ts +8 -2
  368. package/dist/shims/navigation.js +67 -23
  369. package/dist/shims/navigation.js.map +1 -1
  370. package/dist/shims/og.d.ts +18 -2
  371. package/dist/shims/og.js +49 -1
  372. package/dist/shims/og.js.map +1 -0
  373. package/dist/shims/request-state-types.d.ts +1 -1
  374. package/dist/shims/root-params.d.ts +3 -1
  375. package/dist/shims/root-params.js +11 -3
  376. package/dist/shims/root-params.js.map +1 -1
  377. package/dist/shims/router-state.d.ts +1 -0
  378. package/dist/shims/router-state.js.map +1 -1
  379. package/dist/shims/router.d.ts +12 -5
  380. package/dist/shims/router.js +535 -86
  381. package/dist/shims/router.js.map +1 -1
  382. package/dist/shims/script.js +86 -12
  383. package/dist/shims/script.js.map +1 -1
  384. package/dist/shims/server.d.ts +21 -4
  385. package/dist/shims/server.js +30 -9
  386. package/dist/shims/server.js.map +1 -1
  387. package/dist/shims/slot.js +5 -1
  388. package/dist/shims/slot.js.map +1 -1
  389. package/dist/shims/unified-request-context.d.ts +1 -1
  390. package/dist/shims/url-safety.d.ts +23 -1
  391. package/dist/shims/url-safety.js +29 -2
  392. package/dist/shims/url-safety.js.map +1 -1
  393. package/dist/shims/url-utils.d.ts +2 -1
  394. package/dist/shims/url-utils.js +15 -4
  395. package/dist/shims/url-utils.js.map +1 -1
  396. package/dist/typegen.d.ts +10 -0
  397. package/dist/typegen.js +242 -0
  398. package/dist/typegen.js.map +1 -0
  399. package/dist/utils/asset-prefix.d.ts +33 -5
  400. package/dist/utils/asset-prefix.js +39 -6
  401. package/dist/utils/asset-prefix.js.map +1 -1
  402. package/dist/utils/cache-control-metadata.d.ts +2 -1
  403. package/dist/utils/cache-control-metadata.js +1 -3
  404. package/dist/utils/cache-control-metadata.js.map +1 -1
  405. package/dist/utils/domain-locale.d.ts +2 -1
  406. package/dist/utils/domain-locale.js +9 -1
  407. package/dist/utils/domain-locale.js.map +1 -1
  408. package/dist/utils/html-limited-bots.d.ts +5 -0
  409. package/dist/utils/html-limited-bots.js +15 -0
  410. package/dist/utils/html-limited-bots.js.map +1 -0
  411. package/dist/utils/lazy-chunks.d.ts +1 -1
  412. package/dist/utils/lazy-chunks.js +1 -1
  413. package/dist/utils/lazy-chunks.js.map +1 -1
  414. package/dist/utils/prerender-output-paths.d.ts +15 -0
  415. package/dist/utils/prerender-output-paths.js +24 -0
  416. package/dist/utils/prerender-output-paths.js.map +1 -0
  417. package/dist/utils/query.d.ts +23 -1
  418. package/dist/utils/query.js +46 -2
  419. package/dist/utils/query.js.map +1 -1
  420. package/dist/utils/record.d.ts +5 -0
  421. package/dist/utils/record.js +8 -0
  422. package/dist/utils/record.js.map +1 -0
  423. package/package.json +11 -3
package/dist/deploy.js CHANGED
@@ -273,7 +273,7 @@ function generateAppRouterWorkerEntry(hasISR = false) {
273
273
  * For apps without image optimization, you can use vinext/server/app-router-entry
274
274
  * directly in wrangler.jsonc: "main": "vinext/server/app-router-entry"
275
275
  */
276
- import { handleImageOptimization, DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES } from "vinext/server/image-optimization";
276
+ import { handleImageOptimization, DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, isImageOptimizationPath } from "vinext/server/image-optimization";
277
277
  import type { ImageConfig } from "vinext/server/image-optimization";
278
278
  import handler from "vinext/server/app-router-entry";
279
279
  ${hasISR ? `import { KVCacheHandler } from "vinext/cloudflare";
@@ -312,7 +312,7 @@ ${hasISR ? ` // Wire up KV-backed ISR cache. The vinext RSC entry automatical
312
312
  // Image optimization via Cloudflare Images binding.
313
313
  // The parseImageParams validation inside handleImageOptimization
314
314
  // normalizes backslashes and validates the origin hasn't changed.
315
- if (url.pathname === "/_vinext/image") {
315
+ if (isImageOptimizationPath(url.pathname)) {
316
316
  const allowedWidths = [...DEFAULT_DEVICE_SIZES, ...DEFAULT_IMAGE_SIZES];
317
317
  return handleImageOptimization(request, {
318
318
  fetchAsset: (path) => env.ASSETS.fetch(new Request(new URL(path, request.url))),
@@ -337,7 +337,7 @@ function generatePagesRouterWorkerEntry() {
337
337
  * Cloudflare Worker entry point -- auto-generated by vinext deploy.
338
338
  * Edit freely or delete to regenerate on next deploy.
339
339
  */
340
- import { handleImageOptimization, DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES } from "vinext/server/image-optimization";
340
+ import { handleImageOptimization, DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, isImageOptimizationPath } from "vinext/server/image-optimization";
341
341
  import type { ImageConfig } from "vinext/server/image-optimization";
342
342
  import {
343
343
  matchRedirect,
@@ -352,7 +352,11 @@ import {
352
352
  applyConfigHeadersToHeaderRecord,
353
353
  cloneRequestWithHeaders,
354
354
  filterInternalHeaders,
355
+ isOpenRedirectShaped,
356
+ normalizeTrailingSlash,
355
357
  } from "vinext/server/request-pipeline";
358
+ import { normalizeDefaultLocalePathname, stripI18nLocaleForApiRoute } from "vinext/server/pages-i18n";
359
+ import { mergeRewriteQuery } from "vinext/utils/query";
356
360
 
357
361
  // @ts-expect-error -- virtual module resolved by vinext at build time
358
362
  import { renderPage, handleApiRoute, runMiddleware, vinextConfig, matchPageRoute } from "virtual:vinext-server-entry";
@@ -376,6 +380,7 @@ interface ExecutionContext {
376
380
  // Extract config values (embedded at build time in the server entry)
377
381
  const basePath: string = vinextConfig?.basePath ?? "";
378
382
  const trailingSlash: boolean = vinextConfig?.trailingSlash ?? false;
383
+ const i18nConfig = vinextConfig?.i18n ?? null;
379
384
  const configRedirects = vinextConfig?.redirects ?? [];
380
385
  const configRewrites = vinextConfig?.rewrites ?? { beforeFiles: [], afterFiles: [], fallback: [] };
381
386
  const configHeaders = vinextConfig?.headers ?? [];
@@ -396,20 +401,6 @@ function stripBasePath(pathname: string, basePath: string): string {
396
401
  return pathname.slice(basePath.length) || "/";
397
402
  }
398
403
 
399
- // Mirror of isOpenRedirectShaped in server/request-pipeline.ts. Inlined here
400
- // because this worker runs in the Cloudflare Workers environment and can't
401
- // import from our local source at build time. Keep in sync.
402
- function isOpenRedirectShaped(rawPathname: string): boolean {
403
- if (!rawPathname.startsWith("/")) return false;
404
- const afterSlash = rawPathname.slice(1);
405
- if (afterSlash.startsWith("/") || afterSlash.startsWith("\\")) return true;
406
- if (afterSlash.length >= 3 && afterSlash[0] === "%") {
407
- const encoded = afterSlash.slice(0, 3).toLowerCase();
408
- if (encoded === "%5c" || encoded === "%2f") return true;
409
- }
410
- return false;
411
- }
412
-
413
404
  export default {
414
405
  async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
415
406
  try {
@@ -427,6 +418,11 @@ export default {
427
418
  return new Response("This page could not be found", { status: 404 });
428
419
  }
429
420
 
421
+ // Capture x-nextjs-data before filterInternalHeaders strips it -- the
422
+ // middleware redirect protocol needs to know whether the inbound request
423
+ // was a _next/data fetch to emit x-nextjs-redirect instead of a 3xx.
424
+ const isDataRequest = request.headers.get("x-nextjs-data") === "1";
425
+
430
426
  // Strip internal headers from inbound requests so they cannot be
431
427
  // forged to influence routing or impersonate internal state.
432
428
  // Request.headers is immutable in Workers, so build a clean copy.
@@ -436,6 +432,10 @@ export default {
436
432
  }
437
433
 
438
434
  // ── 1. Strip basePath ─────────────────────────────────────────
435
+ // Track basePath presence on the original request so the matcher
436
+ // gating below can distinguish requests inside basePath (default
437
+ // rules apply) from requests outside it (only opt-out rules apply).
438
+ const hadBasePath = !basePath || hasBasePath(pathname, basePath);
439
439
  {
440
440
  const stripped = stripBasePath(pathname, basePath);
441
441
  if (stripped !== pathname) {
@@ -443,10 +443,11 @@ export default {
443
443
  pathname = stripped;
444
444
  }
445
445
  }
446
+ const basePathState = { basePath, hadBasePath };
446
447
 
447
448
  // ── Image optimization via Cloudflare Images binding ──────────
448
- // Checked after basePath stripping so /<basePath>/_vinext/image works.
449
- if (pathname === "/_vinext/image") {
449
+ // Checked after basePath stripping so /<basePath>/_next/image works.
450
+ if (isImageOptimizationPath(pathname)) {
450
451
  const allowedWidths = [...DEFAULT_DEVICE_SIZES, ...DEFAULT_IMAGE_SIZES];
451
452
  return handleImageOptimization(request, {
452
453
  fetchAsset: (path) => env.ASSETS.fetch(new Request(new URL(path, request.url))),
@@ -458,18 +459,15 @@ export default {
458
459
  }
459
460
 
460
461
  // ── 2. Trailing slash normalization ────────────────────────────
461
- if (pathname !== "/" && pathname !== "/api" && !pathname.startsWith("/api/")) {
462
- const hasTrailing = pathname.endsWith("/");
463
- if (trailingSlash && !hasTrailing) {
464
- return new Response(null, {
465
- status: 308,
466
- headers: { Location: basePath + pathname + "/" + url.search },
467
- });
468
- } else if (!trailingSlash && hasTrailing) {
469
- return new Response(null, {
470
- status: 308,
471
- headers: { Location: basePath + pathname.replace(/\\/+$/, "") + url.search },
472
- });
462
+ {
463
+ const trailingSlashRedirect = normalizeTrailingSlash(
464
+ pathname,
465
+ basePath,
466
+ trailingSlash,
467
+ url.search,
468
+ );
469
+ if (trailingSlashRedirect) {
470
+ return trailingSlashRedirect;
473
471
  }
474
472
  }
475
473
 
@@ -492,12 +490,27 @@ export default {
492
490
  // x-middleware-request-* headers are unpacked into request.
493
491
  const reqCtx = requestContextFromRequest(request);
494
492
 
493
+ // Default-locale path normalisation (issue #1336, item 4). Mirrors
494
+ // Next.js's resolve-routes.ts: every request without a locale prefix
495
+ // gets the (domain-aware) default locale prepended before config rule
496
+ // matching so that locale-aware rules with :locale placeholders or
497
+ // locale: false overrides still match default-locale URLs.
498
+ const matchPathname = i18nConfig
499
+ ? normalizeDefaultLocalePathname(pathname, i18nConfig, {
500
+ hostname: url.hostname,
501
+ })
502
+ : pathname;
503
+
495
504
  // ── 3. Apply redirects from next.config.js ────────────────────
496
505
  if (configRedirects.length) {
497
- const redirect = matchRedirect(pathname, configRedirects, reqCtx);
506
+ const redirect = matchRedirect(matchPathname, configRedirects, reqCtx, basePathState);
498
507
  if (redirect) {
508
+ // Only prepend basePath when the request was actually under basePath.
509
+ // Opt-out rules running on out-of-basepath requests must not receive
510
+ // a basePath prefix.
499
511
  const dest = sanitizeDestination(
500
512
  basePath &&
513
+ hadBasePath &&
501
514
  !isExternalUrl(redirect.destination) &&
502
515
  !hasBasePath(redirect.destination, basePath)
503
516
  ? basePath + redirect.destination
@@ -515,7 +528,7 @@ export default {
515
528
  const middlewareHeaders: Record<string, string | string[]> = {};
516
529
  let middlewareRewriteStatus: number | undefined;
517
530
  if (typeof runMiddleware === "function") {
518
- const result = await runMiddleware(request, ctx);
531
+ const result = await runMiddleware(request, ctx, { isDataRequest });
519
532
 
520
533
  // Bubble up waitUntil promises (e.g. Clerk telemetry/session sync)
521
534
  if (result.waitUntilPromises?.length) {
@@ -591,8 +604,9 @@ export default {
591
604
  if (configHeaders.length) {
592
605
  applyConfigHeadersToHeaderRecord(middlewareHeaders, {
593
606
  configHeaders,
594
- pathname,
607
+ pathname: matchPathname,
595
608
  requestContext: reqCtx,
609
+ basePathState,
596
610
  });
597
611
  }
598
612
 
@@ -601,22 +615,55 @@ export default {
601
615
  return mergeHeaders(proxyResponse, middlewareHeaders, undefined);
602
616
  }
603
617
 
618
+ // Default-locale-normalised form of resolvedPathname for matching
619
+ // against next.config.js rewrites (beforeFiles, afterFiles, fallback).
620
+ const matchResolvedPathname = (p: string): string =>
621
+ i18nConfig
622
+ ? normalizeDefaultLocalePathname(p, i18nConfig, { hostname: url.hostname })
623
+ : p;
624
+
604
625
  // ── 6. Apply beforeFiles rewrites from next.config.js ─────────
626
+ let configRewriteFired = false;
605
627
  if (configRewrites.beforeFiles?.length) {
606
- const rewritten = matchRewrite(resolvedPathname, configRewrites.beforeFiles, postMwReqCtx);
628
+ const rewritten = matchRewrite(
629
+ matchResolvedPathname(resolvedPathname),
630
+ configRewrites.beforeFiles,
631
+ postMwReqCtx,
632
+ basePathState,
633
+ );
607
634
  if (rewritten) {
608
635
  if (isExternalUrl(rewritten)) {
609
636
  return proxyExternalRequest(request, rewritten);
610
637
  }
611
- resolvedUrl = rewritten;
612
- resolvedPathname = rewritten.split("?")[0];
638
+ // Preserve original query params across rewrites (Next.js parity).
639
+ resolvedUrl = mergeRewriteQuery(resolvedUrl, rewritten);
640
+ resolvedPathname = resolvedUrl.split("?")[0];
641
+ configRewriteFired = true;
613
642
  }
614
643
  }
615
644
 
645
+ // Reject out-of-basePath requests that no rule rewrote. See the
646
+ // matching comment in prod-server.ts step 7b.
647
+ if (basePath && !hadBasePath && !configRewriteFired) {
648
+ return new Response("This page could not be found", {
649
+ status: 404,
650
+ headers: { "Content-Type": "text/html; charset=utf-8" },
651
+ });
652
+ }
653
+
616
654
  // ── 7. API routes ─────────────────────────────────────────────
617
- if (resolvedPathname.startsWith("/api/") || resolvedPathname === "/api") {
655
+ // Forward ctx so handlePagesApiRoute can wrap the user handler in
656
+ // runWithExecutionContext, making ctx.waitUntil() reachable from
657
+ // after() and other shims that schedule deferred work.
658
+ //
659
+ // Strip the i18n locale prefix before the /api/ check so
660
+ // /fr/api/ok resolves to the pages/api/ok handler (Next.js
661
+ // parity -- see base-server.ts's normalizeLocalePath call).
662
+ const apiLookupUrl = stripI18nLocaleForApiRoute(resolvedUrl, vinextConfig?.i18n ?? null);
663
+ const apiLookupPathname = apiLookupUrl.split("?")[0];
664
+ if (apiLookupPathname.startsWith("/api/") || apiLookupPathname === "/api") {
618
665
  const response = typeof handleApiRoute === "function"
619
- ? await handleApiRoute(request, resolvedUrl)
666
+ ? await handleApiRoute(request, apiLookupUrl, ctx)
620
667
  : new Response("404 - API route not found", { status: 404 });
621
668
  return mergeHeaders(response, middlewareHeaders, middlewareRewriteStatus);
622
669
  }
@@ -627,31 +674,68 @@ export default {
627
674
  // ── 8. Apply afterFiles rewrites from next.config.js ──────────
628
675
  // These run after non-dynamic page routes but before dynamic routes.
629
676
  if ((!pageMatch || pageMatch.route.isDynamic) && configRewrites.afterFiles?.length) {
630
- const rewritten = matchRewrite(resolvedPathname, configRewrites.afterFiles, postMwReqCtx);
677
+ const rewritten = matchRewrite(
678
+ matchResolvedPathname(resolvedPathname),
679
+ configRewrites.afterFiles,
680
+ postMwReqCtx,
681
+ basePathState,
682
+ );
631
683
  if (rewritten) {
632
684
  if (isExternalUrl(rewritten)) {
633
685
  return proxyExternalRequest(request, rewritten);
634
686
  }
635
- resolvedUrl = rewritten;
636
- resolvedPathname = rewritten.split("?")[0];
687
+ resolvedUrl = mergeRewriteQuery(resolvedUrl, rewritten);
688
+ resolvedPathname = resolvedUrl.split("?")[0];
637
689
  }
638
690
  }
639
691
 
640
692
  // ── 9. Page routes ────────────────────────────────────────────
641
693
  let response: Response | undefined;
642
694
  if (typeof renderPage === "function") {
643
- response = await renderPage(request, resolvedUrl, null, ctx);
695
+ const renderPageMatch =
696
+ typeof matchPageRoute === "function" ? matchPageRoute(resolvedPathname, request) : null;
697
+ const shouldDeferErrorPageOnMiss =
698
+ !isDataRequest && typeof matchPageRoute === "function" && !renderPageMatch;
699
+ const initialRenderOptions = shouldDeferErrorPageOnMiss
700
+ ? { renderErrorPageOnMiss: false }
701
+ : undefined;
702
+ response = await renderPage(request, resolvedUrl, null, ctx, undefined, initialRenderOptions);
644
703
 
645
704
  // ── 10. Fallback rewrites (if SSR returned 404) ─────────────
646
- if (response && response.status === 404 && configRewrites.fallback?.length) {
647
- const fallbackRewrite = matchRewrite(resolvedPathname, configRewrites.fallback, postMwReqCtx);
705
+ let matchedFallbackRewrite = false;
706
+ if (
707
+ response &&
708
+ response.status === 404 &&
709
+ shouldDeferErrorPageOnMiss &&
710
+ configRewrites.fallback?.length
711
+ ) {
712
+ const fallbackRewrite = matchRewrite(
713
+ matchResolvedPathname(resolvedPathname),
714
+ configRewrites.fallback,
715
+ postMwReqCtx,
716
+ basePathState,
717
+ );
648
718
  if (fallbackRewrite) {
649
719
  if (isExternalUrl(fallbackRewrite)) {
650
720
  return proxyExternalRequest(request, fallbackRewrite);
651
721
  }
652
- response = await renderPage(request, fallbackRewrite, null, ctx);
722
+ matchedFallbackRewrite = true;
723
+ response = await renderPage(
724
+ request,
725
+ mergeRewriteQuery(resolvedUrl, fallbackRewrite),
726
+ null,
727
+ ctx,
728
+ );
653
729
  }
654
730
  }
731
+ if (
732
+ response &&
733
+ response.status === 404 &&
734
+ shouldDeferErrorPageOnMiss &&
735
+ !matchedFallbackRewrite
736
+ ) {
737
+ response = await renderPage(request, resolvedUrl, null, ctx);
738
+ }
655
739
  }
656
740
 
657
741
  if (!response) {