vinext 0.0.30 → 0.0.31

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 (435) hide show
  1. package/README.md +12 -6
  2. package/dist/build/prerender.d.ts +188 -0
  3. package/dist/build/prerender.js +675 -0
  4. package/dist/build/prerender.js.map +1 -0
  5. package/dist/build/report.d.ts +45 -46
  6. package/dist/build/report.js +247 -276
  7. package/dist/build/report.js.map +1 -1
  8. package/dist/build/run-prerender.d.ts +62 -0
  9. package/dist/build/run-prerender.js +183 -0
  10. package/dist/build/run-prerender.js.map +1 -0
  11. package/dist/build/server-manifest.d.ts +19 -0
  12. package/dist/build/server-manifest.js +29 -0
  13. package/dist/build/server-manifest.js.map +1 -0
  14. package/dist/build/static-export.d.ts +51 -66
  15. package/dist/build/static-export.js +51 -545
  16. package/dist/build/static-export.js.map +1 -1
  17. package/dist/check.d.ts +26 -24
  18. package/dist/check.js +591 -571
  19. package/dist/check.js.map +1 -1
  20. package/dist/cli.d.ts +1 -15
  21. package/dist/cli.js +430 -491
  22. package/dist/cli.js.map +1 -1
  23. package/dist/client/entry.d.ts +1 -2
  24. package/dist/client/entry.js +49 -62
  25. package/dist/client/entry.js.map +1 -1
  26. package/dist/client/validate-module-path.d.ts +4 -1
  27. package/dist/client/validate-module-path.js +23 -28
  28. package/dist/client/validate-module-path.js.map +1 -1
  29. package/dist/client/vinext-next-data.d.ts +15 -20
  30. package/dist/client/vinext-next-data.js +0 -1
  31. package/dist/cloudflare/index.d.ts +3 -8
  32. package/dist/cloudflare/index.js +3 -8
  33. package/dist/cloudflare/kv-cache-handler.d.ts +95 -105
  34. package/dist/cloudflare/kv-cache-handler.js +354 -380
  35. package/dist/cloudflare/kv-cache-handler.js.map +1 -1
  36. package/dist/cloudflare/tpr.d.ts +36 -34
  37. package/dist/cloudflare/tpr.js +460 -603
  38. package/dist/cloudflare/tpr.js.map +1 -1
  39. package/dist/config/config-matchers.d.ts +31 -40
  40. package/dist/config/config-matchers.js +727 -936
  41. package/dist/config/config-matchers.js.map +1 -1
  42. package/dist/config/dotenv.d.ts +18 -11
  43. package/dist/config/dotenv.js +79 -84
  44. package/dist/config/dotenv.js.map +1 -1
  45. package/dist/config/next-config.d.ts +156 -146
  46. package/dist/config/next-config.js +374 -464
  47. package/dist/config/next-config.js.map +1 -1
  48. package/dist/deploy.d.ts +87 -96
  49. package/dist/deploy.js +490 -628
  50. package/dist/deploy.js.map +1 -1
  51. package/dist/entries/app-browser-entry.d.ts +4 -1
  52. package/dist/entries/app-browser-entry.js +12 -8
  53. package/dist/entries/app-browser-entry.js.map +1 -1
  54. package/dist/entries/app-rsc-entry.d.ts +33 -20
  55. package/dist/entries/app-rsc-entry.js +442 -211
  56. package/dist/entries/app-rsc-entry.js.map +1 -1
  57. package/dist/entries/app-ssr-entry.d.ts +9 -1
  58. package/dist/entries/app-ssr-entry.js +61 -28
  59. package/dist/entries/app-ssr-entry.js.map +1 -1
  60. package/dist/entries/pages-client-entry.d.ts +6 -2
  61. package/dist/entries/pages-client-entry.js +30 -33
  62. package/dist/entries/pages-client-entry.js.map +1 -1
  63. package/dist/entries/pages-entry-helpers.d.ts +5 -1
  64. package/dist/entries/pages-entry-helpers.js +17 -14
  65. package/dist/entries/pages-entry-helpers.js.map +1 -1
  66. package/dist/entries/pages-server-entry.d.ts +6 -2
  67. package/dist/entries/pages-server-entry.js +84 -113
  68. package/dist/entries/pages-server-entry.js.map +1 -1
  69. package/dist/index.d.ts +82 -62
  70. package/dist/index.js +2172 -3133
  71. package/dist/index.js.map +1 -1
  72. package/dist/init.d.ts +40 -37
  73. package/dist/init.js +201 -258
  74. package/dist/init.js.map +1 -1
  75. package/dist/plugins/async-hooks-stub.d.ts +7 -3
  76. package/dist/plugins/async-hooks-stub.js +39 -42
  77. package/dist/plugins/async-hooks-stub.js.map +1 -1
  78. package/dist/plugins/client-reference-dedup.d.ts +7 -3
  79. package/dist/plugins/client-reference-dedup.js +63 -88
  80. package/dist/plugins/client-reference-dedup.js.map +1 -1
  81. package/dist/routing/app-router.d.ts +100 -96
  82. package/dist/routing/app-router.js +560 -670
  83. package/dist/routing/app-router.js.map +1 -1
  84. package/dist/routing/file-matcher.d.ts +18 -15
  85. package/dist/routing/file-matcher.js +65 -65
  86. package/dist/routing/file-matcher.js.map +1 -1
  87. package/dist/routing/pages-router.d.ts +23 -24
  88. package/dist/routing/pages-router.js +147 -172
  89. package/dist/routing/pages-router.js.map +1 -1
  90. package/dist/routing/route-trie.d.ts +23 -20
  91. package/dist/routing/route-trie.js +131 -151
  92. package/dist/routing/route-trie.js.map +1 -1
  93. package/dist/routing/route-validation.d.ts +5 -2
  94. package/dist/routing/route-validation.js +98 -130
  95. package/dist/routing/route-validation.js.map +1 -1
  96. package/dist/routing/utils.d.ts +10 -7
  97. package/dist/routing/utils.js +75 -111
  98. package/dist/routing/utils.js.map +1 -1
  99. package/dist/server/api-handler.d.ts +8 -13
  100. package/dist/server/api-handler.js +161 -193
  101. package/dist/server/api-handler.js.map +1 -1
  102. package/dist/server/app-router-entry.d.ts +6 -16
  103. package/dist/server/app-router-entry.js +26 -54
  104. package/dist/server/app-router-entry.js.map +1 -1
  105. package/dist/server/dev-module-runner.d.ts +11 -64
  106. package/dist/server/dev-module-runner.js +89 -101
  107. package/dist/server/dev-module-runner.js.map +1 -1
  108. package/dist/server/dev-origin-check.d.ts +12 -10
  109. package/dist/server/dev-origin-check.js +98 -108
  110. package/dist/server/dev-origin-check.js.map +1 -1
  111. package/dist/server/dev-server.d.ts +17 -14
  112. package/dist/server/dev-server.js +542 -869
  113. package/dist/server/dev-server.js.map +1 -1
  114. package/dist/server/html.d.ts +4 -1
  115. package/dist/server/html.js +25 -26
  116. package/dist/server/html.js.map +1 -1
  117. package/dist/server/image-optimization.d.ts +31 -28
  118. package/dist/server/image-optimization.js +181 -210
  119. package/dist/server/image-optimization.js.map +1 -1
  120. package/dist/server/instrumentation.d.ts +25 -22
  121. package/dist/server/instrumentation.js +110 -122
  122. package/dist/server/instrumentation.js.map +1 -1
  123. package/dist/server/isr-cache.d.ts +16 -26
  124. package/dist/server/isr-cache.js +106 -128
  125. package/dist/server/isr-cache.js.map +1 -1
  126. package/dist/server/metadata-routes.d.ts +85 -88
  127. package/dist/server/metadata-routes.js +270 -317
  128. package/dist/server/metadata-routes.js.map +1 -1
  129. package/dist/server/middleware-codegen.d.ts +7 -4
  130. package/dist/server/middleware-codegen.js +61 -61
  131. package/dist/server/middleware-codegen.js.map +1 -1
  132. package/dist/server/middleware-request-headers.d.ts +8 -6
  133. package/dist/server/middleware-request-headers.js +47 -65
  134. package/dist/server/middleware-request-headers.js.map +1 -1
  135. package/dist/server/middleware.d.ts +31 -47
  136. package/dist/server/middleware.js +273 -404
  137. package/dist/server/middleware.js.map +1 -1
  138. package/dist/server/normalize-path.d.ts +4 -1
  139. package/dist/server/normalize-path.js +33 -47
  140. package/dist/server/normalize-path.js.map +1 -1
  141. package/dist/server/pages-i18n.d.ts +38 -30
  142. package/dist/server/pages-i18n.js +112 -139
  143. package/dist/server/pages-i18n.js.map +1 -1
  144. package/dist/server/prod-server.d.ts +19 -31
  145. package/dist/server/prod-server.js +714 -945
  146. package/dist/server/prod-server.js.map +1 -1
  147. package/dist/server/request-log.d.ts +18 -12
  148. package/dist/server/request-log.js +45 -52
  149. package/dist/server/request-log.js.map +1 -1
  150. package/dist/server/request-pipeline.d.ts +9 -17
  151. package/dist/server/request-pipeline.js +133 -184
  152. package/dist/server/request-pipeline.js.map +1 -1
  153. package/dist/server/worker-utils.d.ts +4 -1
  154. package/dist/server/worker-utils.js +31 -37
  155. package/dist/server/worker-utils.js.map +1 -1
  156. package/dist/shims/amp.d.ts +5 -2
  157. package/dist/shims/amp.js +19 -15
  158. package/dist/shims/amp.js.map +1 -1
  159. package/dist/shims/app.d.ts +8 -10
  160. package/dist/shims/app.js +0 -1
  161. package/dist/shims/cache-runtime.d.ts +20 -45
  162. package/dist/shims/cache-runtime.js +271 -422
  163. package/dist/shims/cache-runtime.js.map +1 -1
  164. package/dist/shims/cache.d.ts +130 -121
  165. package/dist/shims/cache.js +339 -427
  166. package/dist/shims/cache.js.map +1 -1
  167. package/dist/shims/client-only.d.ts +1 -18
  168. package/dist/shims/client-only.js +0 -17
  169. package/dist/shims/compat-router.d.ts +4 -1
  170. package/dist/shims/compat-router.js +23 -19
  171. package/dist/shims/compat-router.js.map +1 -1
  172. package/dist/shims/config.d.ts +7 -5
  173. package/dist/shims/config.js +16 -23
  174. package/dist/shims/config.js.map +1 -1
  175. package/dist/shims/constants.d.ts +119 -118
  176. package/dist/shims/constants.js +159 -164
  177. package/dist/shims/constants.js.map +1 -1
  178. package/dist/shims/document.d.ts +20 -16
  179. package/dist/shims/document.js +41 -22
  180. package/dist/shims/document.js.map +1 -1
  181. package/dist/shims/dynamic.d.ts +13 -22
  182. package/dist/shims/dynamic.js +122 -136
  183. package/dist/shims/dynamic.js.map +1 -1
  184. package/dist/shims/error-boundary.d.ts +22 -15
  185. package/dist/shims/error-boundary.js +81 -79
  186. package/dist/shims/error-boundary.js.map +1 -1
  187. package/dist/shims/error.d.ts +11 -12
  188. package/dist/shims/error.js +35 -39
  189. package/dist/shims/error.js.map +1 -1
  190. package/dist/shims/fetch-cache.d.ts +16 -14
  191. package/dist/shims/fetch-cache.js +437 -645
  192. package/dist/shims/fetch-cache.js.map +1 -1
  193. package/dist/shims/font-google-base.d.ts +28 -26
  194. package/dist/shims/font-google-base.js +238 -325
  195. package/dist/shims/font-google-base.js.map +1 -1
  196. package/dist/shims/font-google.d.ts +3 -3
  197. package/dist/shims/font-google.generated.d.ts +1928 -1924
  198. package/dist/shims/font-google.generated.js +1928 -2133
  199. package/dist/shims/font-google.generated.js.map +1 -1
  200. package/dist/shims/font-google.js +3 -3
  201. package/dist/shims/font-local.d.ts +28 -26
  202. package/dist/shims/font-local.js +204 -260
  203. package/dist/shims/font-local.js.map +1 -1
  204. package/dist/shims/form.d.ts +13 -27
  205. package/dist/shims/form.js +128 -180
  206. package/dist/shims/form.js.map +1 -1
  207. package/dist/shims/head-state.d.ts +8 -13
  208. package/dist/shims/head-state.js +25 -42
  209. package/dist/shims/head-state.js.map +1 -1
  210. package/dist/shims/head.d.ts +16 -20
  211. package/dist/shims/head.js +172 -250
  212. package/dist/shims/head.js.map +1 -1
  213. package/dist/shims/headers.d.ts +84 -78
  214. package/dist/shims/headers.js +447 -575
  215. package/dist/shims/headers.js.map +1 -1
  216. package/dist/shims/i18n-context.d.ts +16 -20
  217. package/dist/shims/i18n-context.js +35 -48
  218. package/dist/shims/i18n-context.js.map +1 -1
  219. package/dist/shims/i18n-state.d.ts +8 -14
  220. package/dist/shims/i18n-state.js +34 -42
  221. package/dist/shims/i18n-state.js.map +1 -1
  222. package/dist/shims/image-config.d.ts +11 -8
  223. package/dist/shims/image-config.js +50 -83
  224. package/dist/shims/image-config.js.map +1 -1
  225. package/dist/shims/image.d.ts +37 -46
  226. package/dist/shims/image.js +283 -308
  227. package/dist/shims/image.js.map +1 -1
  228. package/dist/shims/internal/api-utils.d.ts +7 -4
  229. package/dist/shims/internal/api-utils.js +0 -6
  230. package/dist/shims/internal/app-router-context.d.ts +22 -17
  231. package/dist/shims/internal/app-router-context.js +17 -13
  232. package/dist/shims/internal/app-router-context.js.map +1 -1
  233. package/dist/shims/internal/cookies.d.ts +2 -9
  234. package/dist/shims/internal/cookies.js +2 -9
  235. package/dist/shims/internal/parse-cookie-header.d.ts +4 -1
  236. package/dist/shims/internal/parse-cookie-header.js +29 -29
  237. package/dist/shims/internal/parse-cookie-header.js.map +1 -1
  238. package/dist/shims/internal/router-context.d.ts +6 -1
  239. package/dist/shims/internal/router-context.js +11 -7
  240. package/dist/shims/internal/router-context.js.map +1 -1
  241. package/dist/shims/internal/utils.d.ts +40 -37
  242. package/dist/shims/internal/utils.js +24 -30
  243. package/dist/shims/internal/utils.js.map +1 -1
  244. package/dist/shims/internal/work-unit-async-storage.d.ts +6 -10
  245. package/dist/shims/internal/work-unit-async-storage.js +14 -11
  246. package/dist/shims/internal/work-unit-async-storage.js.map +1 -1
  247. package/dist/shims/layout-segment-context.d.ts +11 -14
  248. package/dist/shims/layout-segment-context.js +24 -23
  249. package/dist/shims/layout-segment-context.js.map +1 -1
  250. package/dist/shims/legacy-image.d.ts +39 -46
  251. package/dist/shims/legacy-image.js +47 -42
  252. package/dist/shims/legacy-image.js.map +1 -1
  253. package/dist/shims/link.d.ts +32 -36
  254. package/dist/shims/link.js +255 -391
  255. package/dist/shims/link.js.map +1 -1
  256. package/dist/shims/metadata.d.ts +210 -202
  257. package/dist/shims/metadata.js +545 -546
  258. package/dist/shims/metadata.js.map +1 -1
  259. package/dist/shims/navigation-state.d.ts +10 -18
  260. package/dist/shims/navigation-state.js +66 -74
  261. package/dist/shims/navigation-state.js.map +1 -1
  262. package/dist/shims/navigation.d.ts +59 -63
  263. package/dist/shims/navigation.js +505 -704
  264. package/dist/shims/navigation.js.map +1 -1
  265. package/dist/shims/og.d.ts +2 -20
  266. package/dist/shims/og.js +2 -19
  267. package/dist/shims/readonly-url-search-params.d.ts +8 -5
  268. package/dist/shims/readonly-url-search-params.js +26 -22
  269. package/dist/shims/readonly-url-search-params.js.map +1 -1
  270. package/dist/shims/request-context.d.ts +8 -5
  271. package/dist/shims/request-context.js +50 -60
  272. package/dist/shims/request-context.js.map +1 -1
  273. package/dist/shims/request-state-types.d.ts +11 -11
  274. package/dist/shims/request-state-types.js +0 -1
  275. package/dist/shims/router-state.d.ts +13 -10
  276. package/dist/shims/router-state.js +34 -43
  277. package/dist/shims/router-state.js.map +1 -1
  278. package/dist/shims/router.d.ts +81 -85
  279. package/dist/shims/router.js +506 -628
  280. package/dist/shims/router.js.map +1 -1
  281. package/dist/shims/script.d.ts +39 -48
  282. package/dist/shims/script.js +107 -160
  283. package/dist/shims/script.js.map +1 -1
  284. package/dist/shims/server-only.d.ts +1 -19
  285. package/dist/shims/server-only.js +0 -18
  286. package/dist/shims/server.d.ts +175 -164
  287. package/dist/shims/server.js +462 -478
  288. package/dist/shims/server.js.map +1 -1
  289. package/dist/shims/unified-request-context.d.ts +20 -20
  290. package/dist/shims/unified-request-context.js +81 -99
  291. package/dist/shims/unified-request-context.js.map +1 -1
  292. package/dist/shims/url-safety.d.ts +4 -1
  293. package/dist/shims/url-safety.js +15 -11
  294. package/dist/shims/url-safety.js.map +1 -1
  295. package/dist/shims/url-utils.d.ts +8 -5
  296. package/dist/shims/url-utils.js +62 -93
  297. package/dist/shims/url-utils.js.map +1 -1
  298. package/dist/shims/web-vitals.d.ts +10 -8
  299. package/dist/shims/web-vitals.js +9 -15
  300. package/dist/shims/web-vitals.js.map +1 -1
  301. package/dist/utils/base-path.d.ts +5 -2
  302. package/dist/utils/base-path.js +21 -19
  303. package/dist/utils/base-path.js.map +1 -1
  304. package/dist/utils/domain-locale.d.ts +17 -9
  305. package/dist/utils/domain-locale.js +36 -56
  306. package/dist/utils/domain-locale.js.map +1 -1
  307. package/dist/utils/hash.d.ts +4 -1
  308. package/dist/utils/hash.js +19 -17
  309. package/dist/utils/hash.js.map +1 -1
  310. package/dist/utils/manifest-paths.d.ts +6 -3
  311. package/dist/utils/manifest-paths.js +15 -16
  312. package/dist/utils/manifest-paths.js.map +1 -1
  313. package/dist/utils/project.d.ts +13 -11
  314. package/dist/utils/project.js +169 -216
  315. package/dist/utils/project.js.map +1 -1
  316. package/dist/utils/query.d.ts +8 -6
  317. package/dist/utils/query.js +57 -67
  318. package/dist/utils/query.js.map +1 -1
  319. package/package.json +10 -9
  320. package/dist/build/report.d.ts.map +0 -1
  321. package/dist/build/static-export.d.ts.map +0 -1
  322. package/dist/check.d.ts.map +0 -1
  323. package/dist/cli.d.ts.map +0 -1
  324. package/dist/client/entry.d.ts.map +0 -1
  325. package/dist/client/validate-module-path.d.ts.map +0 -1
  326. package/dist/client/vinext-next-data.d.ts.map +0 -1
  327. package/dist/client/vinext-next-data.js.map +0 -1
  328. package/dist/cloudflare/index.d.ts.map +0 -1
  329. package/dist/cloudflare/index.js.map +0 -1
  330. package/dist/cloudflare/kv-cache-handler.d.ts.map +0 -1
  331. package/dist/cloudflare/tpr.d.ts.map +0 -1
  332. package/dist/config/config-matchers.d.ts.map +0 -1
  333. package/dist/config/dotenv.d.ts.map +0 -1
  334. package/dist/config/next-config.d.ts.map +0 -1
  335. package/dist/deploy.d.ts.map +0 -1
  336. package/dist/entries/app-browser-entry.d.ts.map +0 -1
  337. package/dist/entries/app-rsc-entry.d.ts.map +0 -1
  338. package/dist/entries/app-ssr-entry.d.ts.map +0 -1
  339. package/dist/entries/pages-client-entry.d.ts.map +0 -1
  340. package/dist/entries/pages-entry-helpers.d.ts.map +0 -1
  341. package/dist/entries/pages-server-entry.d.ts.map +0 -1
  342. package/dist/index.d.ts.map +0 -1
  343. package/dist/init.d.ts.map +0 -1
  344. package/dist/plugins/async-hooks-stub.d.ts.map +0 -1
  345. package/dist/plugins/client-reference-dedup.d.ts.map +0 -1
  346. package/dist/routing/app-router.d.ts.map +0 -1
  347. package/dist/routing/file-matcher.d.ts.map +0 -1
  348. package/dist/routing/pages-router.d.ts.map +0 -1
  349. package/dist/routing/route-trie.d.ts.map +0 -1
  350. package/dist/routing/route-validation.d.ts.map +0 -1
  351. package/dist/routing/utils.d.ts.map +0 -1
  352. package/dist/server/api-handler.d.ts.map +0 -1
  353. package/dist/server/app-router-entry.d.ts.map +0 -1
  354. package/dist/server/dev-module-runner.d.ts.map +0 -1
  355. package/dist/server/dev-origin-check.d.ts.map +0 -1
  356. package/dist/server/dev-server.d.ts.map +0 -1
  357. package/dist/server/html.d.ts.map +0 -1
  358. package/dist/server/image-optimization.d.ts.map +0 -1
  359. package/dist/server/instrumentation.d.ts.map +0 -1
  360. package/dist/server/isr-cache.d.ts.map +0 -1
  361. package/dist/server/metadata-routes.d.ts.map +0 -1
  362. package/dist/server/middleware-codegen.d.ts.map +0 -1
  363. package/dist/server/middleware-request-headers.d.ts.map +0 -1
  364. package/dist/server/middleware.d.ts.map +0 -1
  365. package/dist/server/normalize-path.d.ts.map +0 -1
  366. package/dist/server/pages-i18n.d.ts.map +0 -1
  367. package/dist/server/prod-server.d.ts.map +0 -1
  368. package/dist/server/request-log.d.ts.map +0 -1
  369. package/dist/server/request-pipeline.d.ts.map +0 -1
  370. package/dist/server/worker-utils.d.ts.map +0 -1
  371. package/dist/shims/amp.d.ts.map +0 -1
  372. package/dist/shims/app.d.ts.map +0 -1
  373. package/dist/shims/app.js.map +0 -1
  374. package/dist/shims/cache-runtime.d.ts.map +0 -1
  375. package/dist/shims/cache.d.ts.map +0 -1
  376. package/dist/shims/client-only.d.ts.map +0 -1
  377. package/dist/shims/client-only.js.map +0 -1
  378. package/dist/shims/compat-router.d.ts.map +0 -1
  379. package/dist/shims/config.d.ts.map +0 -1
  380. package/dist/shims/constants.d.ts.map +0 -1
  381. package/dist/shims/document.d.ts.map +0 -1
  382. package/dist/shims/dynamic.d.ts.map +0 -1
  383. package/dist/shims/error-boundary.d.ts.map +0 -1
  384. package/dist/shims/error.d.ts.map +0 -1
  385. package/dist/shims/fetch-cache.d.ts.map +0 -1
  386. package/dist/shims/font-google-base.d.ts.map +0 -1
  387. package/dist/shims/font-google.d.ts.map +0 -1
  388. package/dist/shims/font-google.generated.d.ts.map +0 -1
  389. package/dist/shims/font-google.js.map +0 -1
  390. package/dist/shims/font-local.d.ts.map +0 -1
  391. package/dist/shims/form.d.ts.map +0 -1
  392. package/dist/shims/head-state.d.ts.map +0 -1
  393. package/dist/shims/head.d.ts.map +0 -1
  394. package/dist/shims/headers.d.ts.map +0 -1
  395. package/dist/shims/i18n-context.d.ts.map +0 -1
  396. package/dist/shims/i18n-state.d.ts.map +0 -1
  397. package/dist/shims/image-config.d.ts.map +0 -1
  398. package/dist/shims/image.d.ts.map +0 -1
  399. package/dist/shims/internal/api-utils.d.ts.map +0 -1
  400. package/dist/shims/internal/api-utils.js.map +0 -1
  401. package/dist/shims/internal/app-router-context.d.ts.map +0 -1
  402. package/dist/shims/internal/cookies.d.ts.map +0 -1
  403. package/dist/shims/internal/cookies.js.map +0 -1
  404. package/dist/shims/internal/parse-cookie-header.d.ts.map +0 -1
  405. package/dist/shims/internal/router-context.d.ts.map +0 -1
  406. package/dist/shims/internal/utils.d.ts.map +0 -1
  407. package/dist/shims/internal/work-unit-async-storage.d.ts.map +0 -1
  408. package/dist/shims/layout-segment-context.d.ts.map +0 -1
  409. package/dist/shims/legacy-image.d.ts.map +0 -1
  410. package/dist/shims/link.d.ts.map +0 -1
  411. package/dist/shims/metadata.d.ts.map +0 -1
  412. package/dist/shims/navigation-state.d.ts.map +0 -1
  413. package/dist/shims/navigation.d.ts.map +0 -1
  414. package/dist/shims/og.d.ts.map +0 -1
  415. package/dist/shims/og.js.map +0 -1
  416. package/dist/shims/readonly-url-search-params.d.ts.map +0 -1
  417. package/dist/shims/request-context.d.ts.map +0 -1
  418. package/dist/shims/request-state-types.d.ts.map +0 -1
  419. package/dist/shims/request-state-types.js.map +0 -1
  420. package/dist/shims/router-state.d.ts.map +0 -1
  421. package/dist/shims/router.d.ts.map +0 -1
  422. package/dist/shims/script.d.ts.map +0 -1
  423. package/dist/shims/server-only.d.ts.map +0 -1
  424. package/dist/shims/server-only.js.map +0 -1
  425. package/dist/shims/server.d.ts.map +0 -1
  426. package/dist/shims/unified-request-context.d.ts.map +0 -1
  427. package/dist/shims/url-safety.d.ts.map +0 -1
  428. package/dist/shims/url-utils.d.ts.map +0 -1
  429. package/dist/shims/web-vitals.d.ts.map +0 -1
  430. package/dist/utils/base-path.d.ts.map +0 -1
  431. package/dist/utils/domain-locale.d.ts.map +0 -1
  432. package/dist/utils/hash.d.ts.map +0 -1
  433. package/dist/utils/manifest-paths.d.ts.map +0 -1
  434. package/dist/utils/project.d.ts.map +0 -1
  435. package/dist/utils/query.d.ts.map +0 -1
@@ -1,30 +1,16 @@
1
- /**
2
- * next/form shim
3
- *
4
- * Progressive enhancement form component. In Next.js, this replaces
5
- * the standard <form> element with one that intercepts submissions
6
- * and performs client-side navigation for GET forms (search forms).
7
- *
8
- * For POST forms with server actions, it delegates to React's built-in
9
- * form action handling.
10
- *
11
- * Usage:
12
- * import Form from 'next/form';
13
- * <Form action="/search">
14
- * <input name="q" />
15
- * <button type="submit">Search</button>
16
- * </Form>
17
- */
18
- import { useActionState, type FormHTMLAttributes } from "react";
19
- export { useActionState };
1
+ import * as react from "react";
2
+ import { FormHTMLAttributes, useActionState } from "react";
3
+
4
+ //#region src/shims/form.d.ts
20
5
  interface FormProps extends FormHTMLAttributes<HTMLFormElement> {
21
- /** Target URL for GET forms, or server action for POST forms */
22
- action: string | ((formData: FormData) => void | Promise<void>);
23
- /** Replace instead of push in history (default: false) */
24
- replace?: boolean;
25
- /** Scroll to top after navigation (default: true) */
26
- scroll?: boolean;
6
+ /** Target URL for GET forms, or server action for POST forms */
7
+ action: string | ((formData: FormData) => void | Promise<void>);
8
+ /** Replace instead of push in history (default: false) */
9
+ replace?: boolean;
10
+ /** Scroll to top after navigation (default: true) */
11
+ scroll?: boolean;
27
12
  }
28
- declare const Form: import("react").ForwardRefExoticComponent<FormProps & import("react").RefAttributes<HTMLFormElement>>;
29
- export default Form;
13
+ declare const Form: react.ForwardRefExoticComponent<FormProps & react.RefAttributes<HTMLFormElement>>;
14
+ //#endregion
15
+ export { Form as default, useActionState };
30
16
  //# sourceMappingURL=form.d.ts.map
@@ -1,204 +1,152 @@
1
1
  "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- /**
4
- * next/form shim
5
- *
6
- * Progressive enhancement form component. In Next.js, this replaces
7
- * the standard <form> element with one that intercepts submissions
8
- * and performs client-side navigation for GET forms (search forms).
9
- *
10
- * For POST forms with server actions, it delegates to React's built-in
11
- * form action handling.
12
- *
13
- * Usage:
14
- * import Form from 'next/form';
15
- * <Form action="/search">
16
- * <input name="q" />
17
- * <button type="submit">Search</button>
18
- * </Form>
19
- */
20
- import { forwardRef, useActionState } from "react";
21
- import { isDangerousScheme } from "./url-safety.js";
22
2
  import { toSameOriginPath } from "./url-utils.js";
23
- // Re-export useActionState from React 19 to match Next.js's next/form module
24
- export { useActionState };
3
+ import { isDangerousScheme } from "./url-safety.js";
4
+ import { forwardRef, useActionState } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/shims/form.tsx
7
+ /**
8
+ * next/form shim
9
+ *
10
+ * Progressive enhancement form component. In Next.js, this replaces
11
+ * the standard <form> element with one that intercepts submissions
12
+ * and performs client-side navigation for GET forms (search forms).
13
+ *
14
+ * For POST forms with server actions, it delegates to React's built-in
15
+ * form action handling.
16
+ *
17
+ * Usage:
18
+ * import Form from 'next/form';
19
+ * <Form action="/search">
20
+ * <input name="q" />
21
+ * <button type="submit">Search</button>
22
+ * </Form>
23
+ */
25
24
  const SUPPORTED_FORM_ENCTYPE = "application/x-www-form-urlencoded";
26
25
  const SUPPORTED_FORM_METHOD = "GET";
27
26
  const SUPPORTED_FORM_TARGET = "_self";
28
27
  function isSafeAction(action) {
29
- // Block dangerous URI schemes
30
- if (isDangerousScheme(action))
31
- return false;
32
- // Block protocol-relative URLs (//evil.com/...)
33
- if (action.startsWith("//"))
34
- return false;
35
- // Block absolute URLs to external origins (client-side: compare origins)
36
- if (/^https?:\/\//i.test(action)) {
37
- if (typeof window !== "undefined") {
38
- try {
39
- const actionUrl = new URL(action);
40
- return actionUrl.origin === window.location.origin;
41
- }
42
- catch {
43
- return false;
44
- }
45
- }
46
- // Server-side: block all absolute URLs (can't compare origins)
47
- return false;
48
- }
49
- return true;
28
+ if (isDangerousScheme(action)) return false;
29
+ if (action.startsWith("//")) return false;
30
+ if (/^https?:\/\//i.test(action)) {
31
+ if (typeof window !== "undefined") try {
32
+ return new URL(action).origin === window.location.origin;
33
+ } catch {
34
+ return false;
35
+ }
36
+ return false;
37
+ }
38
+ return true;
50
39
  }
51
40
  function getSubmitter(nativeEvent) {
52
- const submitter = nativeEvent &&
53
- typeof nativeEvent === "object" &&
54
- "submitter" in nativeEvent &&
55
- nativeEvent.submitter instanceof Element
56
- ? nativeEvent.submitter
57
- : null;
58
- if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {
59
- return submitter;
60
- }
61
- return null;
41
+ const submitter = nativeEvent && typeof nativeEvent === "object" && "submitter" in nativeEvent && nativeEvent.submitter instanceof Element ? nativeEvent.submitter : null;
42
+ if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) return submitter;
43
+ return null;
62
44
  }
63
45
  function getEffectiveMethod(submitter, formMethod) {
64
- const override = submitter?.getAttribute("formmethod");
65
- return (override ?? formMethod ?? "GET").toUpperCase();
46
+ return (submitter?.getAttribute("formmethod") ?? formMethod ?? "GET").toUpperCase();
66
47
  }
67
48
  function getEffectiveAction(submitter, formAction) {
68
- return submitter?.getAttribute("formaction") ?? formAction;
49
+ return submitter?.getAttribute("formaction") ?? formAction;
69
50
  }
70
51
  function checkFormActionUrl(action, source) {
71
- const aPropName = source === "action" ? "an `action`" : "a `formAction`";
72
- let testUrl;
73
- try {
74
- testUrl = new URL(action, "http://n");
75
- }
76
- catch {
77
- console.error(`<Form> received ${aPropName} that cannot be parsed as a URL: "${action}".`);
78
- return;
79
- }
80
- if (testUrl.searchParams.size) {
81
- console.warn(`<Form> received ${aPropName} that contains search params: "${action}". This is not supported, and they will be ignored. ` +
82
- `If you need to pass in additional search params, use an \`<input type="hidden" />\` instead.`);
83
- }
52
+ const aPropName = source === "action" ? "an `action`" : "a `formAction`";
53
+ let testUrl;
54
+ try {
55
+ testUrl = new URL(action, "http://n");
56
+ } catch {
57
+ console.error(`<Form> received ${aPropName} that cannot be parsed as a URL: "${action}".`);
58
+ return;
59
+ }
60
+ if (testUrl.searchParams.size) console.warn(`<Form> received ${aPropName} that contains search params: "${action}". This is not supported, and they will be ignored. If you need to pass in additional search params, use an \`<input type="hidden" />\` instead.`);
84
61
  }
85
62
  function hasUnsupportedSubmitterAttributes(submitter) {
86
- const formEncType = submitter.getAttribute("formenctype");
87
- if (formEncType !== null && formEncType !== SUPPORTED_FORM_ENCTYPE) {
88
- console.error(`<Form>'s \`encType\` was set to an unsupported value via \`formEncType="${formEncType}"\`. ` +
89
- `This will disable <Form>'s navigation functionality. If you need this, use a native <form> element instead.`);
90
- return true;
91
- }
92
- const formMethod = submitter.getAttribute("formmethod");
93
- if (formMethod !== null && formMethod.toUpperCase() !== SUPPORTED_FORM_METHOD) {
94
- console.error(`<Form>'s \`method\` was set to an unsupported value via \`formMethod="${formMethod}"\`. ` +
95
- `This will disable <Form>'s navigation functionality. If you need this, use a native <form> element instead.`);
96
- return true;
97
- }
98
- const formTarget = submitter.getAttribute("formtarget");
99
- if (formTarget !== null && formTarget !== SUPPORTED_FORM_TARGET) {
100
- console.error(`<Form>'s \`target\` was set to an unsupported value via \`formTarget="${formTarget}"\`. ` +
101
- `This will disable <Form>'s navigation functionality. If you need this, use a native <form> element instead.`);
102
- return true;
103
- }
104
- return false;
63
+ const formEncType = submitter.getAttribute("formenctype");
64
+ if (formEncType !== null && formEncType !== SUPPORTED_FORM_ENCTYPE) {
65
+ console.error(`<Form>'s \`encType\` was set to an unsupported value via \`formEncType="${formEncType}"\`. This will disable <Form>'s navigation functionality. If you need this, use a native <form> element instead.`);
66
+ return true;
67
+ }
68
+ const formMethod = submitter.getAttribute("formmethod");
69
+ if (formMethod !== null && formMethod.toUpperCase() !== SUPPORTED_FORM_METHOD) {
70
+ console.error(`<Form>'s \`method\` was set to an unsupported value via \`formMethod="${formMethod}"\`. This will disable <Form>'s navigation functionality. If you need this, use a native <form> element instead.`);
71
+ return true;
72
+ }
73
+ const formTarget = submitter.getAttribute("formtarget");
74
+ if (formTarget !== null && formTarget !== SUPPORTED_FORM_TARGET) {
75
+ console.error(`<Form>'s \`target\` was set to an unsupported value via \`formTarget="${formTarget}"\`. This will disable <Form>'s navigation functionality. If you need this, use a native <form> element instead.`);
76
+ return true;
77
+ }
78
+ return false;
105
79
  }
106
80
  function createFormSubmitDestinationUrl(action, form, submitter) {
107
- const targetUrl = new URL(action, window.location.href);
108
- if (targetUrl.searchParams.size) {
109
- targetUrl.search = "";
110
- }
111
- const formData = buildFormData(form, submitter);
112
- for (const [name, value] of formData) {
113
- targetUrl.searchParams.append(name, typeof value === "string" ? value : value.name);
114
- }
115
- return toSameOriginPath(targetUrl.href) ?? targetUrl.href;
81
+ const targetUrl = new URL(action, window.location.href);
82
+ if (targetUrl.searchParams.size) targetUrl.search = "";
83
+ const formData = buildFormData(form, submitter);
84
+ for (const [name, value] of formData) targetUrl.searchParams.append(name, typeof value === "string" ? value : value.name);
85
+ return toSameOriginPath(targetUrl.href) ?? targetUrl.href;
116
86
  }
117
87
  function buildFormData(form, submitter) {
118
- if (!submitter)
119
- return new FormData(form);
120
- try {
121
- return new FormData(form, submitter);
122
- }
123
- catch {
124
- const formData = new FormData(form);
125
- if (!submitter.disabled && submitter.name) {
126
- formData.append(submitter.name, submitter.value);
127
- }
128
- return formData;
129
- }
88
+ if (!submitter) return new FormData(form);
89
+ try {
90
+ return new FormData(form, submitter);
91
+ } catch {
92
+ const formData = new FormData(form);
93
+ if (!submitter.disabled && submitter.name) formData.append(submitter.name, submitter.value);
94
+ return formData;
95
+ }
130
96
  }
131
97
  const Form = forwardRef(function Form(props, ref) {
132
- const { action, replace = false, scroll = true, onSubmit, ...rest } = props;
133
- // If action is a function (server action), pass it directly to React
134
- if (typeof action === "function") {
135
- return _jsx("form", { ref: ref, action: action, onSubmit: onSubmit, ...rest });
136
- }
137
- // Block dangerous action URLs. Render <form> without action attribute
138
- // so it submits to the current page (safe default).
139
- if (process.env.NODE_ENV !== "production") {
140
- checkFormActionUrl(action, "action");
141
- }
142
- if (!isSafeAction(action)) {
143
- if (process.env.NODE_ENV !== "production") {
144
- console.warn(`<Form> blocked unsafe action: ${action}`);
145
- }
146
- return _jsx("form", { ref: ref, onSubmit: onSubmit, ...rest });
147
- }
148
- async function handleSubmit(e) {
149
- // Call user's onSubmit first
150
- if (onSubmit) {
151
- onSubmit(e);
152
- if (e.defaultPrevented)
153
- return;
154
- }
155
- const submitter = getSubmitter(e.nativeEvent);
156
- if (submitter && hasUnsupportedSubmitterAttributes(submitter)) {
157
- return;
158
- }
159
- // Only intercept GET forms for client-side navigation
160
- const method = getEffectiveMethod(submitter, rest.method);
161
- if (method !== "GET")
162
- return;
163
- const effectiveAction = getEffectiveAction(submitter, action);
164
- if (process.env.NODE_ENV !== "production" && submitter?.getAttribute("formaction") !== null) {
165
- checkFormActionUrl(effectiveAction, "formAction");
166
- }
167
- if (!isSafeAction(effectiveAction)) {
168
- if (process.env.NODE_ENV !== "production") {
169
- console.warn(`<Form> blocked unsafe action: ${effectiveAction}`);
170
- }
171
- e.preventDefault();
172
- return;
173
- }
174
- e.preventDefault();
175
- const url = createFormSubmitDestinationUrl(effectiveAction, e.currentTarget, submitter);
176
- // Navigate client-side
177
- if (typeof window.__VINEXT_RSC_NAVIGATE__ === "function") {
178
- // App Router: RSC navigation. Await so scroll happens after new content renders.
179
- if (replace) {
180
- window.history.replaceState(null, "", url);
181
- }
182
- else {
183
- window.history.pushState(null, "", url);
184
- }
185
- await window.__VINEXT_RSC_NAVIGATE__(url);
186
- }
187
- else {
188
- // Pages Router: use router or fallback
189
- if (replace) {
190
- window.history.replaceState({}, "", url);
191
- }
192
- else {
193
- window.history.pushState({}, "", url);
194
- }
195
- window.dispatchEvent(new PopStateEvent("popstate"));
196
- }
197
- if (scroll) {
198
- window.scrollTo(0, 0);
199
- }
200
- }
201
- return _jsx("form", { ref: ref, action: action, onSubmit: handleSubmit, ...rest });
98
+ const { action, replace = false, scroll = true, onSubmit, ...rest } = props;
99
+ if (typeof action === "function") return /* @__PURE__ */ jsx("form", {
100
+ ref,
101
+ action,
102
+ onSubmit,
103
+ ...rest
104
+ });
105
+ if (process.env.NODE_ENV !== "production") checkFormActionUrl(action, "action");
106
+ if (!isSafeAction(action)) {
107
+ if (process.env.NODE_ENV !== "production") console.warn(`<Form> blocked unsafe action: ${action}`);
108
+ return /* @__PURE__ */ jsx("form", {
109
+ ref,
110
+ onSubmit,
111
+ ...rest
112
+ });
113
+ }
114
+ async function handleSubmit(e) {
115
+ if (onSubmit) {
116
+ onSubmit(e);
117
+ if (e.defaultPrevented) return;
118
+ }
119
+ const submitter = getSubmitter(e.nativeEvent);
120
+ if (submitter && hasUnsupportedSubmitterAttributes(submitter)) return;
121
+ if (getEffectiveMethod(submitter, rest.method) !== "GET") return;
122
+ const effectiveAction = getEffectiveAction(submitter, action);
123
+ if (process.env.NODE_ENV !== "production" && submitter?.getAttribute("formaction") !== null) checkFormActionUrl(effectiveAction, "formAction");
124
+ if (!isSafeAction(effectiveAction)) {
125
+ if (process.env.NODE_ENV !== "production") console.warn(`<Form> blocked unsafe action: ${effectiveAction}`);
126
+ e.preventDefault();
127
+ return;
128
+ }
129
+ e.preventDefault();
130
+ const url = createFormSubmitDestinationUrl(effectiveAction, e.currentTarget, submitter);
131
+ if (typeof window.__VINEXT_RSC_NAVIGATE__ === "function") {
132
+ if (replace) window.history.replaceState(null, "", url);
133
+ else window.history.pushState(null, "", url);
134
+ await window.__VINEXT_RSC_NAVIGATE__(url);
135
+ } else {
136
+ if (replace) window.history.replaceState({}, "", url);
137
+ else window.history.pushState({}, "", url);
138
+ window.dispatchEvent(new PopStateEvent("popstate"));
139
+ }
140
+ if (scroll) window.scrollTo(0, 0);
141
+ }
142
+ return /* @__PURE__ */ jsx("form", {
143
+ ref,
144
+ action,
145
+ onSubmit: handleSubmit,
146
+ ...rest
147
+ });
202
148
  });
203
- export default Form;
149
+ //#endregion
150
+ export { Form as default, useActionState };
151
+
204
152
  //# sourceMappingURL=form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/shims/form.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\n/**\n * next/form shim\n *\n * Progressive enhancement form component. In Next.js, this replaces\n * the standard <form> element with one that intercepts submissions\n * and performs client-side navigation for GET forms (search forms).\n *\n * For POST forms with server actions, it delegates to React's built-in\n * form action handling.\n *\n * Usage:\n * import Form from 'next/form';\n * <Form action=\"/search\">\n * <input name=\"q\" />\n * <button type=\"submit\">Search</button>\n * </Form>\n */\n\nimport { forwardRef, useActionState, type FormHTMLAttributes, type ForwardedRef } from \"react\";\nimport { isDangerousScheme } from \"./url-safety.js\";\nimport { toSameOriginPath } from \"./url-utils.js\";\n\n// Re-export useActionState from React 19 to match Next.js's next/form module\nexport { useActionState };\n\ntype FormSubmitter = HTMLButtonElement | HTMLInputElement;\nconst SUPPORTED_FORM_ENCTYPE = \"application/x-www-form-urlencoded\";\nconst SUPPORTED_FORM_METHOD = \"GET\";\nconst SUPPORTED_FORM_TARGET = \"_self\";\n\nfunction isSafeAction(action: string): boolean {\n // Block dangerous URI schemes\n if (isDangerousScheme(action)) return false;\n // Block protocol-relative URLs (//evil.com/...)\n if (action.startsWith(\"//\")) return false;\n // Block absolute URLs to external origins (client-side: compare origins)\n if (/^https?:\\/\\//i.test(action)) {\n if (typeof window !== \"undefined\") {\n try {\n const actionUrl = new URL(action);\n return actionUrl.origin === window.location.origin;\n } catch {\n return false;\n }\n }\n // Server-side: block all absolute URLs (can't compare origins)\n return false;\n }\n return true;\n}\n\nfunction getSubmitter(nativeEvent: unknown): FormSubmitter | null {\n const submitter =\n nativeEvent &&\n typeof nativeEvent === \"object\" &&\n \"submitter\" in nativeEvent &&\n nativeEvent.submitter instanceof Element\n ? nativeEvent.submitter\n : null;\n\n if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n return submitter;\n }\n return null;\n}\n\nfunction getEffectiveMethod(\n submitter: FormSubmitter | null,\n formMethod: FormHTMLAttributes<HTMLFormElement>[\"method\"],\n): string {\n const override = submitter?.getAttribute(\"formmethod\");\n return (override ?? formMethod ?? \"GET\").toUpperCase();\n}\n\nfunction getEffectiveAction(submitter: FormSubmitter | null, formAction: string): string {\n return submitter?.getAttribute(\"formaction\") ?? formAction;\n}\n\nfunction checkFormActionUrl(action: string, source: \"action\" | \"formAction\"): void {\n const aPropName = source === \"action\" ? \"an `action`\" : \"a `formAction`\";\n\n let testUrl: URL;\n try {\n testUrl = new URL(action, \"http://n\");\n } catch {\n console.error(`<Form> received ${aPropName} that cannot be parsed as a URL: \"${action}\".`);\n return;\n }\n\n if (testUrl.searchParams.size) {\n console.warn(\n `<Form> received ${aPropName} that contains search params: \"${action}\". This is not supported, and they will be ignored. ` +\n `If you need to pass in additional search params, use an \\`<input type=\"hidden\" />\\` instead.`,\n );\n }\n}\n\nfunction hasUnsupportedSubmitterAttributes(submitter: FormSubmitter): boolean {\n const formEncType = submitter.getAttribute(\"formenctype\");\n if (formEncType !== null && formEncType !== SUPPORTED_FORM_ENCTYPE) {\n console.error(\n `<Form>'s \\`encType\\` was set to an unsupported value via \\`formEncType=\"${formEncType}\"\\`. ` +\n `This will disable <Form>'s navigation functionality. If you need this, use a native <form> element instead.`,\n );\n return true;\n }\n\n const formMethod = submitter.getAttribute(\"formmethod\");\n if (formMethod !== null && formMethod.toUpperCase() !== SUPPORTED_FORM_METHOD) {\n console.error(\n `<Form>'s \\`method\\` was set to an unsupported value via \\`formMethod=\"${formMethod}\"\\`. ` +\n `This will disable <Form>'s navigation functionality. If you need this, use a native <form> element instead.`,\n );\n return true;\n }\n\n const formTarget = submitter.getAttribute(\"formtarget\");\n if (formTarget !== null && formTarget !== SUPPORTED_FORM_TARGET) {\n console.error(\n `<Form>'s \\`target\\` was set to an unsupported value via \\`formTarget=\"${formTarget}\"\\`. ` +\n `This will disable <Form>'s navigation functionality. If you need this, use a native <form> element instead.`,\n );\n return true;\n }\n\n return false;\n}\n\nfunction createFormSubmitDestinationUrl(\n action: string,\n form: HTMLFormElement,\n submitter: FormSubmitter | null,\n): string {\n const targetUrl = new URL(action, window.location.href);\n if (targetUrl.searchParams.size) {\n targetUrl.search = \"\";\n }\n\n const formData = buildFormData(form, submitter);\n for (const [name, value] of formData) {\n targetUrl.searchParams.append(name, typeof value === \"string\" ? value : value.name);\n }\n\n return toSameOriginPath(targetUrl.href) ?? targetUrl.href;\n}\n\nfunction buildFormData(form: HTMLFormElement, submitter: FormSubmitter | null): FormData {\n if (!submitter) return new FormData(form);\n\n try {\n return new FormData(form, submitter);\n } catch {\n const formData = new FormData(form);\n if (!submitter.disabled && submitter.name) {\n formData.append(submitter.name, submitter.value);\n }\n return formData;\n }\n}\n\ninterface FormProps extends FormHTMLAttributes<HTMLFormElement> {\n /** Target URL for GET forms, or server action for POST forms */\n action: string | ((formData: FormData) => void | Promise<void>);\n /** Replace instead of push in history (default: false) */\n replace?: boolean;\n /** Scroll to top after navigation (default: true) */\n scroll?: boolean;\n}\n\nconst Form = forwardRef(function Form(props: FormProps, ref: ForwardedRef<HTMLFormElement>) {\n const { action, replace = false, scroll = true, onSubmit, ...rest } = props;\n\n // If action is a function (server action), pass it directly to React\n if (typeof action === \"function\") {\n return <form ref={ref} action={action as any} onSubmit={onSubmit as any} {...rest} />;\n }\n\n // Block dangerous action URLs. Render <form> without action attribute\n // so it submits to the current page (safe default).\n if (process.env.NODE_ENV !== \"production\") {\n checkFormActionUrl(action, \"action\");\n }\n\n if (!isSafeAction(action)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(`<Form> blocked unsafe action: ${action}`);\n }\n return <form ref={ref} onSubmit={onSubmit as any} {...rest} />;\n }\n\n async function handleSubmit(e: any) {\n // Call user's onSubmit first\n if (onSubmit) {\n (onSubmit as any)(e);\n if (e.defaultPrevented) return;\n }\n\n const submitter = getSubmitter(e.nativeEvent);\n if (submitter && hasUnsupportedSubmitterAttributes(submitter)) {\n return;\n }\n\n // Only intercept GET forms for client-side navigation\n const method = getEffectiveMethod(submitter, rest.method);\n if (method !== \"GET\") return;\n\n const effectiveAction = getEffectiveAction(submitter, action as string);\n if (process.env.NODE_ENV !== \"production\" && submitter?.getAttribute(\"formaction\") !== null) {\n checkFormActionUrl(effectiveAction, \"formAction\");\n }\n if (!isSafeAction(effectiveAction)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(`<Form> blocked unsafe action: ${effectiveAction}`);\n }\n e.preventDefault();\n return;\n }\n\n e.preventDefault();\n const url = createFormSubmitDestinationUrl(effectiveAction, e.currentTarget, submitter);\n\n // Navigate client-side\n if (typeof window.__VINEXT_RSC_NAVIGATE__ === \"function\") {\n // App Router: RSC navigation. Await so scroll happens after new content renders.\n if (replace) {\n window.history.replaceState(null, \"\", url);\n } else {\n window.history.pushState(null, \"\", url);\n }\n await window.__VINEXT_RSC_NAVIGATE__(url);\n } else {\n // Pages Router: use router or fallback\n if (replace) {\n window.history.replaceState({}, \"\", url);\n } else {\n window.history.pushState({}, \"\", url);\n }\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n }\n\n if (scroll) {\n window.scrollTo(0, 0);\n }\n }\n\n return <form ref={ref} action={action} onSubmit={handleSubmit} {...rest} />;\n});\n\nexport default Form;\n"]}
1
+ {"version":3,"file":"form.js","names":[],"sources":["../../src/shims/form.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * next/form shim\n *\n * Progressive enhancement form component. In Next.js, this replaces\n * the standard <form> element with one that intercepts submissions\n * and performs client-side navigation for GET forms (search forms).\n *\n * For POST forms with server actions, it delegates to React's built-in\n * form action handling.\n *\n * Usage:\n * import Form from 'next/form';\n * <Form action=\"/search\">\n * <input name=\"q\" />\n * <button type=\"submit\">Search</button>\n * </Form>\n */\n\nimport { forwardRef, useActionState, type FormHTMLAttributes, type ForwardedRef } from \"react\";\nimport { isDangerousScheme } from \"./url-safety.js\";\nimport { toSameOriginPath } from \"./url-utils.js\";\n\n// Re-export useActionState from React 19 to match Next.js's next/form module\nexport { useActionState };\n\ntype FormSubmitter = HTMLButtonElement | HTMLInputElement;\nconst SUPPORTED_FORM_ENCTYPE = \"application/x-www-form-urlencoded\";\nconst SUPPORTED_FORM_METHOD = \"GET\";\nconst SUPPORTED_FORM_TARGET = \"_self\";\n\nfunction isSafeAction(action: string): boolean {\n // Block dangerous URI schemes\n if (isDangerousScheme(action)) return false;\n // Block protocol-relative URLs (//evil.com/...)\n if (action.startsWith(\"//\")) return false;\n // Block absolute URLs to external origins (client-side: compare origins)\n if (/^https?:\\/\\//i.test(action)) {\n if (typeof window !== \"undefined\") {\n try {\n const actionUrl = new URL(action);\n return actionUrl.origin === window.location.origin;\n } catch {\n return false;\n }\n }\n // Server-side: block all absolute URLs (can't compare origins)\n return false;\n }\n return true;\n}\n\nfunction getSubmitter(nativeEvent: unknown): FormSubmitter | null {\n const submitter =\n nativeEvent &&\n typeof nativeEvent === \"object\" &&\n \"submitter\" in nativeEvent &&\n nativeEvent.submitter instanceof Element\n ? nativeEvent.submitter\n : null;\n\n if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n return submitter;\n }\n return null;\n}\n\nfunction getEffectiveMethod(\n submitter: FormSubmitter | null,\n formMethod: FormHTMLAttributes<HTMLFormElement>[\"method\"],\n): string {\n const override = submitter?.getAttribute(\"formmethod\");\n return (override ?? formMethod ?? \"GET\").toUpperCase();\n}\n\nfunction getEffectiveAction(submitter: FormSubmitter | null, formAction: string): string {\n return submitter?.getAttribute(\"formaction\") ?? formAction;\n}\n\nfunction checkFormActionUrl(action: string, source: \"action\" | \"formAction\"): void {\n const aPropName = source === \"action\" ? \"an `action`\" : \"a `formAction`\";\n\n let testUrl: URL;\n try {\n testUrl = new URL(action, \"http://n\");\n } catch {\n console.error(`<Form> received ${aPropName} that cannot be parsed as a URL: \"${action}\".`);\n return;\n }\n\n if (testUrl.searchParams.size) {\n console.warn(\n `<Form> received ${aPropName} that contains search params: \"${action}\". This is not supported, and they will be ignored. ` +\n `If you need to pass in additional search params, use an \\`<input type=\"hidden\" />\\` instead.`,\n );\n }\n}\n\nfunction hasUnsupportedSubmitterAttributes(submitter: FormSubmitter): boolean {\n const formEncType = submitter.getAttribute(\"formenctype\");\n if (formEncType !== null && formEncType !== SUPPORTED_FORM_ENCTYPE) {\n console.error(\n `<Form>'s \\`encType\\` was set to an unsupported value via \\`formEncType=\"${formEncType}\"\\`. ` +\n `This will disable <Form>'s navigation functionality. If you need this, use a native <form> element instead.`,\n );\n return true;\n }\n\n const formMethod = submitter.getAttribute(\"formmethod\");\n if (formMethod !== null && formMethod.toUpperCase() !== SUPPORTED_FORM_METHOD) {\n console.error(\n `<Form>'s \\`method\\` was set to an unsupported value via \\`formMethod=\"${formMethod}\"\\`. ` +\n `This will disable <Form>'s navigation functionality. If you need this, use a native <form> element instead.`,\n );\n return true;\n }\n\n const formTarget = submitter.getAttribute(\"formtarget\");\n if (formTarget !== null && formTarget !== SUPPORTED_FORM_TARGET) {\n console.error(\n `<Form>'s \\`target\\` was set to an unsupported value via \\`formTarget=\"${formTarget}\"\\`. ` +\n `This will disable <Form>'s navigation functionality. If you need this, use a native <form> element instead.`,\n );\n return true;\n }\n\n return false;\n}\n\nfunction createFormSubmitDestinationUrl(\n action: string,\n form: HTMLFormElement,\n submitter: FormSubmitter | null,\n): string {\n const targetUrl = new URL(action, window.location.href);\n if (targetUrl.searchParams.size) {\n targetUrl.search = \"\";\n }\n\n const formData = buildFormData(form, submitter);\n for (const [name, value] of formData) {\n targetUrl.searchParams.append(name, typeof value === \"string\" ? value : value.name);\n }\n\n return toSameOriginPath(targetUrl.href) ?? targetUrl.href;\n}\n\nfunction buildFormData(form: HTMLFormElement, submitter: FormSubmitter | null): FormData {\n if (!submitter) return new FormData(form);\n\n try {\n return new FormData(form, submitter);\n } catch {\n const formData = new FormData(form);\n if (!submitter.disabled && submitter.name) {\n formData.append(submitter.name, submitter.value);\n }\n return formData;\n }\n}\n\ninterface FormProps extends FormHTMLAttributes<HTMLFormElement> {\n /** Target URL for GET forms, or server action for POST forms */\n action: string | ((formData: FormData) => void | Promise<void>);\n /** Replace instead of push in history (default: false) */\n replace?: boolean;\n /** Scroll to top after navigation (default: true) */\n scroll?: boolean;\n}\n\nconst Form = forwardRef(function Form(props: FormProps, ref: ForwardedRef<HTMLFormElement>) {\n const { action, replace = false, scroll = true, onSubmit, ...rest } = props;\n\n // If action is a function (server action), pass it directly to React\n if (typeof action === \"function\") {\n return <form ref={ref} action={action as any} onSubmit={onSubmit as any} {...rest} />;\n }\n\n // Block dangerous action URLs. Render <form> without action attribute\n // so it submits to the current page (safe default).\n if (process.env.NODE_ENV !== \"production\") {\n checkFormActionUrl(action, \"action\");\n }\n\n if (!isSafeAction(action)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(`<Form> blocked unsafe action: ${action}`);\n }\n return <form ref={ref} onSubmit={onSubmit as any} {...rest} />;\n }\n\n async function handleSubmit(e: any) {\n // Call user's onSubmit first\n if (onSubmit) {\n (onSubmit as any)(e);\n if (e.defaultPrevented) return;\n }\n\n const submitter = getSubmitter(e.nativeEvent);\n if (submitter && hasUnsupportedSubmitterAttributes(submitter)) {\n return;\n }\n\n // Only intercept GET forms for client-side navigation\n const method = getEffectiveMethod(submitter, rest.method);\n if (method !== \"GET\") return;\n\n const effectiveAction = getEffectiveAction(submitter, action as string);\n if (process.env.NODE_ENV !== \"production\" && submitter?.getAttribute(\"formaction\") !== null) {\n checkFormActionUrl(effectiveAction, \"formAction\");\n }\n if (!isSafeAction(effectiveAction)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(`<Form> blocked unsafe action: ${effectiveAction}`);\n }\n e.preventDefault();\n return;\n }\n\n e.preventDefault();\n const url = createFormSubmitDestinationUrl(effectiveAction, e.currentTarget, submitter);\n\n // Navigate client-side\n if (typeof window.__VINEXT_RSC_NAVIGATE__ === \"function\") {\n // App Router: RSC navigation. Await so scroll happens after new content renders.\n if (replace) {\n window.history.replaceState(null, \"\", url);\n } else {\n window.history.pushState(null, \"\", url);\n }\n await window.__VINEXT_RSC_NAVIGATE__(url);\n } else {\n // Pages Router: use router or fallback\n if (replace) {\n window.history.replaceState({}, \"\", url);\n } else {\n window.history.pushState({}, \"\", url);\n }\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n }\n\n if (scroll) {\n window.scrollTo(0, 0);\n }\n }\n\n return <form ref={ref} action={action} onSubmit={handleSubmit} {...rest} />;\n});\n\nexport default Form;\n"],"mappings":"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"}
@@ -1,20 +1,15 @@
1
- /**
2
- * Server-only head state backed by AsyncLocalStorage.
3
- *
4
- * Provides request-scoped isolation for SSR head elements so concurrent
5
- * requests on Workers don't leak <Head> tags between responses.
6
- *
7
- * This module is server-only — it imports node:async_hooks and must NOT
8
- * be bundled for the browser.
9
- */
10
- import type React from "react";
11
- export interface HeadState {
12
- ssrHeadChildren: React.ReactNode[];
1
+ import React from "react";
2
+
3
+ //#region src/shims/head-state.d.ts
4
+ interface HeadState {
5
+ ssrHeadChildren: React.ReactNode[];
13
6
  }
14
7
  /**
15
8
  * Run a function within a head state ALS scope.
16
9
  * Ensures per-request isolation for Pages Router <Head> elements
17
10
  * on concurrent runtimes.
18
11
  */
19
- export declare function runWithHeadState<T>(fn: () => T | Promise<T>): T | Promise<T>;
12
+ declare function runWithHeadState<T>(fn: () => T | Promise<T>): T | Promise<T>;
13
+ //#endregion
14
+ export { HeadState, runWithHeadState };
20
15
  //# sourceMappingURL=head-state.d.ts.map
@@ -1,53 +1,36 @@
1
- /**
2
- * Server-only head state backed by AsyncLocalStorage.
3
- *
4
- * Provides request-scoped isolation for SSR head elements so concurrent
5
- * requests on Workers don't leak <Head> tags between responses.
6
- *
7
- * This module is server-only — it imports node:async_hooks and must NOT
8
- * be bundled for the browser.
9
- */
10
- import { AsyncLocalStorage } from "node:async_hooks";
1
+ import { getRequestContext, isInsideUnifiedScope, runWithUnifiedStateMutation } from "./unified-request-context.js";
11
2
  import { _registerHeadStateAccessors } from "./head.js";
12
- import { getRequestContext, isInsideUnifiedScope, runWithUnifiedStateMutation, } from "./unified-request-context.js";
3
+ import { AsyncLocalStorage } from "node:async_hooks";
4
+ //#region src/shims/head-state.ts
13
5
  const _ALS_KEY = Symbol.for("vinext.head.als");
14
6
  const _FALLBACK_KEY = Symbol.for("vinext.head.fallback");
15
7
  const _g = globalThis;
16
- const _als = (_g[_ALS_KEY] ??= new AsyncLocalStorage());
17
- const _fallbackState = (_g[_FALLBACK_KEY] ??= {
18
- ssrHeadChildren: [],
19
- });
8
+ const _als = _g[_ALS_KEY] ??= new AsyncLocalStorage();
9
+ const _fallbackState = _g[_FALLBACK_KEY] ??= { ssrHeadChildren: [] };
20
10
  function _getState() {
21
- if (isInsideUnifiedScope()) {
22
- return getRequestContext();
23
- }
24
- return _als.getStore() ?? _fallbackState;
11
+ if (isInsideUnifiedScope()) return getRequestContext();
12
+ return _als.getStore() ?? _fallbackState;
25
13
  }
26
14
  /**
27
- * Run a function within a head state ALS scope.
28
- * Ensures per-request isolation for Pages Router <Head> elements
29
- * on concurrent runtimes.
30
- */
31
- export function runWithHeadState(fn) {
32
- if (isInsideUnifiedScope()) {
33
- return runWithUnifiedStateMutation((uCtx) => {
34
- uCtx.ssrHeadChildren = [];
35
- }, fn);
36
- }
37
- const state = {
38
- ssrHeadChildren: [],
39
- };
40
- return _als.run(state, fn);
15
+ * Run a function within a head state ALS scope.
16
+ * Ensures per-request isolation for Pages Router <Head> elements
17
+ * on concurrent runtimes.
18
+ */
19
+ function runWithHeadState(fn) {
20
+ if (isInsideUnifiedScope()) return runWithUnifiedStateMutation((uCtx) => {
21
+ uCtx.ssrHeadChildren = [];
22
+ }, fn);
23
+ return _als.run({ ssrHeadChildren: [] }, fn);
41
24
  }
42
- // ---------------------------------------------------------------------------
43
- // Register ALS-backed accessors into head.ts
44
- // ---------------------------------------------------------------------------
45
25
  _registerHeadStateAccessors({
46
- getSSRHeadChildren() {
47
- return _getState().ssrHeadChildren;
48
- },
49
- resetSSRHead() {
50
- _getState().ssrHeadChildren = [];
51
- },
26
+ getSSRHeadChildren() {
27
+ return _getState().ssrHeadChildren;
28
+ },
29
+ resetSSRHead() {
30
+ _getState().ssrHeadChildren = [];
31
+ }
52
32
  });
33
+ //#endregion
34
+ export { runWithHeadState };
35
+
53
36
  //# sourceMappingURL=head-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"head-state.js","sourceRoot":"","sources":["../../src/shims/head-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AAUtC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACzD,MAAM,EAAE,GAAG,UAAqD,CAAC;AACjE,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,iBAAiB,EAAa,CAAiC,CAAC;AAEnG,MAAM,cAAc,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK;IAC5C,eAAe,EAAE,EAAE;CACA,CAAc,CAAC;AAEpC,SAAS,SAAS;IAChB,IAAI,oBAAoB,EAAE,EAAE,CAAC;QAC3B,OAAO,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,cAAc,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAI,EAAwB;IAC1D,IAAI,oBAAoB,EAAE,EAAE,CAAC;QAC3B,OAAO,2BAA2B,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1C,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC5B,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,MAAM,KAAK,GAAc;QACvB,eAAe,EAAE,EAAE;KACpB,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,6CAA6C;AAC7C,8EAA8E;AAE9E,2BAA2B,CAAC;IAC1B,kBAAkB;QAChB,OAAO,SAAS,EAAE,CAAC,eAAe,CAAC;IACrC,CAAC;IAED,YAAY;QACV,SAAS,EAAE,CAAC,eAAe,GAAG,EAAE,CAAC;IACnC,CAAC;CACF,CAAC,CAAC","sourcesContent":["/**\n * Server-only head state backed by AsyncLocalStorage.\n *\n * Provides request-scoped isolation for SSR head elements so concurrent\n * requests on Workers don't leak <Head> tags between responses.\n *\n * This module is server-only — it imports node:async_hooks and must NOT\n * be bundled for the browser.\n */\n\nimport type React from \"react\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { _registerHeadStateAccessors } from \"./head.js\";\nimport {\n getRequestContext,\n isInsideUnifiedScope,\n runWithUnifiedStateMutation,\n} from \"./unified-request-context.js\";\n\n// ---------------------------------------------------------------------------\n// ALS setup\n// ---------------------------------------------------------------------------\n\nexport interface HeadState {\n ssrHeadChildren: React.ReactNode[];\n}\n\nconst _ALS_KEY = Symbol.for(\"vinext.head.als\");\nconst _FALLBACK_KEY = Symbol.for(\"vinext.head.fallback\");\nconst _g = globalThis as unknown as Record<PropertyKey, unknown>;\nconst _als = (_g[_ALS_KEY] ??= new AsyncLocalStorage<HeadState>()) as AsyncLocalStorage<HeadState>;\n\nconst _fallbackState = (_g[_FALLBACK_KEY] ??= {\n ssrHeadChildren: [],\n} satisfies HeadState) as HeadState;\n\nfunction _getState(): HeadState {\n if (isInsideUnifiedScope()) {\n return getRequestContext();\n }\n return _als.getStore() ?? _fallbackState;\n}\n\n/**\n * Run a function within a head state ALS scope.\n * Ensures per-request isolation for Pages Router <Head> elements\n * on concurrent runtimes.\n */\nexport function runWithHeadState<T>(fn: () => T | Promise<T>): T | Promise<T> {\n if (isInsideUnifiedScope()) {\n return runWithUnifiedStateMutation((uCtx) => {\n uCtx.ssrHeadChildren = [];\n }, fn);\n }\n\n const state: HeadState = {\n ssrHeadChildren: [],\n };\n return _als.run(state, fn);\n}\n\n// ---------------------------------------------------------------------------\n// Register ALS-backed accessors into head.ts\n// ---------------------------------------------------------------------------\n\n_registerHeadStateAccessors({\n getSSRHeadChildren(): React.ReactNode[] {\n return _getState().ssrHeadChildren;\n },\n\n resetSSRHead(): void {\n _getState().ssrHeadChildren = [];\n },\n});\n"]}
1
+ {"version":3,"file":"head-state.js","names":[],"sources":["../../src/shims/head-state.ts"],"sourcesContent":["/**\n * Server-only head state backed by AsyncLocalStorage.\n *\n * Provides request-scoped isolation for SSR head elements so concurrent\n * requests on Workers don't leak <Head> tags between responses.\n *\n * This module is server-only — it imports node:async_hooks and must NOT\n * be bundled for the browser.\n */\n\nimport type React from \"react\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { _registerHeadStateAccessors } from \"./head.js\";\nimport {\n getRequestContext,\n isInsideUnifiedScope,\n runWithUnifiedStateMutation,\n} from \"./unified-request-context.js\";\n\n// ---------------------------------------------------------------------------\n// ALS setup\n// ---------------------------------------------------------------------------\n\nexport interface HeadState {\n ssrHeadChildren: React.ReactNode[];\n}\n\nconst _ALS_KEY = Symbol.for(\"vinext.head.als\");\nconst _FALLBACK_KEY = Symbol.for(\"vinext.head.fallback\");\nconst _g = globalThis as unknown as Record<PropertyKey, unknown>;\nconst _als = (_g[_ALS_KEY] ??= new AsyncLocalStorage<HeadState>()) as AsyncLocalStorage<HeadState>;\n\nconst _fallbackState = (_g[_FALLBACK_KEY] ??= {\n ssrHeadChildren: [],\n} satisfies HeadState) as HeadState;\n\nfunction _getState(): HeadState {\n if (isInsideUnifiedScope()) {\n return getRequestContext();\n }\n return _als.getStore() ?? _fallbackState;\n}\n\n/**\n * Run a function within a head state ALS scope.\n * Ensures per-request isolation for Pages Router <Head> elements\n * on concurrent runtimes.\n */\nexport function runWithHeadState<T>(fn: () => T | Promise<T>): T | Promise<T> {\n if (isInsideUnifiedScope()) {\n return runWithUnifiedStateMutation((uCtx) => {\n uCtx.ssrHeadChildren = [];\n }, fn);\n }\n\n const state: HeadState = {\n ssrHeadChildren: [],\n };\n return _als.run(state, fn);\n}\n\n// ---------------------------------------------------------------------------\n// Register ALS-backed accessors into head.ts\n// ---------------------------------------------------------------------------\n\n_registerHeadStateAccessors({\n getSSRHeadChildren(): React.ReactNode[] {\n return _getState().ssrHeadChildren;\n },\n\n resetSSRHead(): void {\n _getState().ssrHeadChildren = [];\n },\n});\n"],"mappings":";;;;AA2BA,MAAM,WAAW,OAAO,IAAI,kBAAkB;AAC9C,MAAM,gBAAgB,OAAO,IAAI,uBAAuB;AACxD,MAAM,KAAK;AACX,MAAM,OAAQ,GAAG,cAAc,IAAI,mBAA8B;AAEjE,MAAM,iBAAkB,GAAG,mBAAmB,EAC5C,iBAAiB,EAAE,EACpB;AAED,SAAS,YAAuB;AAC9B,KAAI,sBAAsB,CACxB,QAAO,mBAAmB;AAE5B,QAAO,KAAK,UAAU,IAAI;;;;;;;AAQ5B,SAAgB,iBAAoB,IAA0C;AAC5E,KAAI,sBAAsB,CACxB,QAAO,6BAA6B,SAAS;AAC3C,OAAK,kBAAkB,EAAE;IACxB,GAAG;AAMR,QAAO,KAAK,IAHa,EACvB,iBAAiB,EAAE,EACpB,EACsB,GAAG;;AAO5B,4BAA4B;CAC1B,qBAAwC;AACtC,SAAO,WAAW,CAAC;;CAGrB,eAAqB;AACnB,aAAW,CAAC,kBAAkB,EAAE;;CAEnC,CAAC"}
@@ -1,30 +1,23 @@
1
- /**
2
- * next/head shim
3
- *
4
- * In the Pages Router, <Head> manages document <head> elements.
5
- * - On the server: collects elements into a module-level array that the
6
- * dev-server reads after render and injects into the HTML <head>.
7
- * - On the client: reduces all mounted <Head> instances into one deduped
8
- * document.head projection and applies it with DOM manipulation.
9
- */
10
1
  import React from "react";
2
+
3
+ //#region src/shims/head.d.ts
11
4
  interface HeadProps {
12
- children?: React.ReactNode;
5
+ children?: React.ReactNode;
13
6
  }
14
7
  /**
15
8
  * Register ALS-backed state accessors. Called by head-state.ts on import.
16
9
  * @internal
17
10
  */
18
- export declare function _registerHeadStateAccessors(accessors: {
19
- getSSRHeadChildren: () => React.ReactNode[];
20
- resetSSRHead: () => void;
11
+ declare function _registerHeadStateAccessors(accessors: {
12
+ getSSRHeadChildren: () => React.ReactNode[];
13
+ resetSSRHead: () => void;
21
14
  }): void;
22
15
  /** Reset the SSR head collector. Call before render. */
23
- export declare function resetSSRHead(): void;
16
+ declare function resetSSRHead(): void;
24
17
  /** Get collected head HTML. Call after render. */
25
- export declare function getSSRHeadHTML(): string;
26
- export declare function reduceHeadChildren(headChildren: React.ReactNode[]): React.ReactElement[];
27
- export declare function escapeAttr(s: string): string;
18
+ declare function getSSRHeadHTML(): string;
19
+ declare function reduceHeadChildren(headChildren: React.ReactNode[]): React.ReactElement[];
20
+ declare function escapeAttr(s: string): string;
28
21
  /**
29
22
  * Escape content that will be placed inside a raw <script> or <style> tag
30
23
  * during SSR. The HTML parser treats `</script>` (or `</style>`) as the end
@@ -35,7 +28,10 @@ export declare function escapeAttr(s: string): string;
35
28
  * and `<\/style` respectively. The `<\/` form is harmless in JS/CSS string
36
29
  * context but prevents the HTML parser from seeing a closing tag.
37
30
  */
38
- export declare function escapeInlineContent(content: string, tag: string): string;
39
- declare function Head({ children }: HeadProps): null;
40
- export default Head;
31
+ declare function escapeInlineContent(content: string, tag: string): string;
32
+ declare function Head({
33
+ children
34
+ }: HeadProps): null;
35
+ //#endregion
36
+ export { _registerHeadStateAccessors, Head as default, escapeAttr, escapeInlineContent, getSSRHeadHTML, reduceHeadChildren, resetSSRHead };
41
37
  //# sourceMappingURL=head.d.ts.map