vinext 0.0.44 → 0.0.46

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 (323) hide show
  1. package/dist/build/google-fonts/build-url.d.ts +10 -0
  2. package/dist/build/google-fonts/build-url.js +30 -0
  3. package/dist/build/google-fonts/build-url.js.map +1 -0
  4. package/dist/build/google-fonts/font-data.js +24985 -0
  5. package/dist/build/google-fonts/font-data.js.map +1 -0
  6. package/dist/build/google-fonts/font-metadata.d.ts +17 -0
  7. package/dist/build/google-fonts/font-metadata.js +7 -0
  8. package/dist/build/google-fonts/font-metadata.js.map +1 -0
  9. package/dist/build/google-fonts/get-axes.d.ts +7 -0
  10. package/dist/build/google-fonts/get-axes.js +39 -0
  11. package/dist/build/google-fonts/get-axes.js.map +1 -0
  12. package/dist/build/google-fonts/sort-variants.d.ts +5 -0
  13. package/dist/build/google-fonts/sort-variants.js +14 -0
  14. package/dist/build/google-fonts/sort-variants.js.map +1 -0
  15. package/dist/build/google-fonts/validate.d.ts +28 -0
  16. package/dist/build/google-fonts/validate.js +56 -0
  17. package/dist/build/google-fonts/validate.js.map +1 -0
  18. package/dist/build/layout-classification.d.ts +1 -1
  19. package/dist/build/layout-classification.js.map +1 -1
  20. package/dist/build/nitro-route-rules.d.ts +1 -1
  21. package/dist/build/nitro-route-rules.js.map +1 -1
  22. package/dist/build/precompress.d.ts +1 -1
  23. package/dist/build/precompress.js.map +1 -1
  24. package/dist/build/prerender.d.ts +1 -7
  25. package/dist/build/prerender.js +17 -6
  26. package/dist/build/prerender.js.map +1 -1
  27. package/dist/build/run-prerender.d.ts +1 -13
  28. package/dist/build/run-prerender.js +5 -1
  29. package/dist/build/run-prerender.js.map +1 -1
  30. package/dist/build/standalone.d.ts +1 -1
  31. package/dist/build/standalone.js +4 -3
  32. package/dist/build/standalone.js.map +1 -1
  33. package/dist/check.js +30 -18
  34. package/dist/check.js.map +1 -1
  35. package/dist/cli.js +4 -0
  36. package/dist/cli.js.map +1 -1
  37. package/dist/cloudflare/kv-cache-handler.d.ts +5 -0
  38. package/dist/cloudflare/kv-cache-handler.js +56 -35
  39. package/dist/cloudflare/kv-cache-handler.js.map +1 -1
  40. package/dist/cloudflare/tpr.d.ts +1 -16
  41. package/dist/cloudflare/tpr.js +1 -1
  42. package/dist/cloudflare/tpr.js.map +1 -1
  43. package/dist/config/config-matchers.js +1 -0
  44. package/dist/config/config-matchers.js.map +1 -1
  45. package/dist/config/dotenv.d.ts +1 -1
  46. package/dist/config/dotenv.js.map +1 -1
  47. package/dist/config/next-config.d.ts +38 -2
  48. package/dist/config/next-config.js +24 -0
  49. package/dist/config/next-config.js.map +1 -1
  50. package/dist/deploy.d.ts +1 -1
  51. package/dist/deploy.js +18 -23
  52. package/dist/deploy.js.map +1 -1
  53. package/dist/entries/app-rsc-entry.js +387 -1718
  54. package/dist/entries/app-rsc-entry.js.map +1 -1
  55. package/dist/entries/app-rsc-manifest.d.ts +24 -0
  56. package/dist/entries/app-rsc-manifest.js +153 -0
  57. package/dist/entries/app-rsc-manifest.js.map +1 -0
  58. package/dist/entries/pages-server-entry.js +13 -103
  59. package/dist/entries/pages-server-entry.js.map +1 -1
  60. package/dist/index.js +59 -34
  61. package/dist/index.js.map +1 -1
  62. package/dist/init.d.ts +1 -1
  63. package/dist/init.js.map +1 -1
  64. package/dist/plugins/async-hooks-stub.d.ts +1 -2
  65. package/dist/plugins/async-hooks-stub.js +2 -2
  66. package/dist/plugins/async-hooks-stub.js.map +1 -1
  67. package/dist/plugins/fonts.d.ts +1 -20
  68. package/dist/plugins/fonts.js +42 -21
  69. package/dist/plugins/fonts.js.map +1 -1
  70. package/dist/plugins/rsc-client-shim-excludes.d.ts +6 -0
  71. package/dist/plugins/rsc-client-shim-excludes.js +27 -0
  72. package/dist/plugins/rsc-client-shim-excludes.js.map +1 -0
  73. package/dist/plugins/server-externals-manifest.d.ts +1 -11
  74. package/dist/plugins/server-externals-manifest.js +1 -1
  75. package/dist/plugins/server-externals-manifest.js.map +1 -1
  76. package/dist/routing/app-router.d.ts +14 -5
  77. package/dist/routing/app-router.js +82 -5
  78. package/dist/routing/app-router.js.map +1 -1
  79. package/dist/routing/file-matcher.d.ts +1 -3
  80. package/dist/routing/file-matcher.js +1 -1
  81. package/dist/routing/file-matcher.js.map +1 -1
  82. package/dist/routing/route-pattern.d.ts +9 -0
  83. package/dist/routing/route-pattern.js +90 -0
  84. package/dist/routing/route-pattern.js.map +1 -0
  85. package/dist/routing/route-trie.js +10 -11
  86. package/dist/routing/route-trie.js.map +1 -1
  87. package/dist/routing/utils.d.ts +1 -29
  88. package/dist/routing/utils.js +1 -1
  89. package/dist/routing/utils.js.map +1 -1
  90. package/dist/server/app-browser-entry.js +63 -5
  91. package/dist/server/app-browser-entry.js.map +1 -1
  92. package/dist/server/app-browser-state.d.ts +1 -1
  93. package/dist/server/app-browser-state.js.map +1 -1
  94. package/dist/server/app-browser-stream.d.ts +1 -1
  95. package/dist/server/app-browser-stream.js.map +1 -1
  96. package/dist/server/app-elements.d.ts +1 -2
  97. package/dist/server/app-elements.js +1 -1
  98. package/dist/server/app-elements.js.map +1 -1
  99. package/dist/server/app-middleware.d.ts +32 -0
  100. package/dist/server/app-middleware.js +147 -0
  101. package/dist/server/app-middleware.js.map +1 -0
  102. package/dist/server/app-page-boundary-render.d.ts +5 -1
  103. package/dist/server/app-page-boundary-render.js +52 -30
  104. package/dist/server/app-page-boundary-render.js.map +1 -1
  105. package/dist/server/app-page-boundary.d.ts +13 -1
  106. package/dist/server/app-page-boundary.js +37 -17
  107. package/dist/server/app-page-boundary.js.map +1 -1
  108. package/dist/server/app-page-cache.d.ts +4 -1
  109. package/dist/server/app-page-cache.js +38 -2
  110. package/dist/server/app-page-cache.js.map +1 -1
  111. package/dist/server/app-page-dispatch.d.ts +120 -0
  112. package/dist/server/app-page-dispatch.js +332 -0
  113. package/dist/server/app-page-dispatch.js.map +1 -0
  114. package/dist/server/app-page-execution.d.ts +6 -3
  115. package/dist/server/app-page-execution.js +22 -10
  116. package/dist/server/app-page-execution.js.map +1 -1
  117. package/dist/server/app-page-head.d.ts +55 -0
  118. package/dist/server/app-page-head.js +196 -0
  119. package/dist/server/app-page-head.js.map +1 -0
  120. package/dist/server/app-page-method.d.ts +16 -0
  121. package/dist/server/app-page-method.js +30 -0
  122. package/dist/server/app-page-method.js.map +1 -0
  123. package/dist/server/app-page-params.d.ts +7 -0
  124. package/dist/server/app-page-params.js +28 -0
  125. package/dist/server/app-page-params.js.map +1 -0
  126. package/dist/server/app-page-probe.d.ts +1 -1
  127. package/dist/server/app-page-probe.js.map +1 -1
  128. package/dist/server/app-page-render.d.ts +4 -3
  129. package/dist/server/app-page-render.js +54 -8
  130. package/dist/server/app-page-render.js.map +1 -1
  131. package/dist/server/app-page-request.d.ts +5 -5
  132. package/dist/server/app-page-request.js.map +1 -1
  133. package/dist/server/app-page-response.d.ts +1 -1
  134. package/dist/server/app-page-response.js.map +1 -1
  135. package/dist/server/app-page-route-wiring.d.ts +15 -11
  136. package/dist/server/app-page-route-wiring.js +31 -9
  137. package/dist/server/app-page-route-wiring.js.map +1 -1
  138. package/dist/server/app-page-stream.d.ts +12 -1
  139. package/dist/server/app-page-stream.js +10 -4
  140. package/dist/server/app-page-stream.js.map +1 -1
  141. package/dist/server/app-prerender-endpoints.d.ts +19 -0
  142. package/dist/server/app-prerender-endpoints.js +96 -0
  143. package/dist/server/app-prerender-endpoints.js.map +1 -0
  144. package/dist/server/app-prerender-static-params.d.ts +16 -0
  145. package/dist/server/app-prerender-static-params.js +14 -0
  146. package/dist/server/app-prerender-static-params.js.map +1 -0
  147. package/dist/server/app-route-handler-cache.d.ts +4 -1
  148. package/dist/server/app-route-handler-cache.js +6 -2
  149. package/dist/server/app-route-handler-cache.js.map +1 -1
  150. package/dist/server/app-route-handler-dispatch.d.ts +42 -0
  151. package/dist/server/app-route-handler-dispatch.js +147 -0
  152. package/dist/server/app-route-handler-dispatch.js.map +1 -0
  153. package/dist/server/app-route-handler-execution.d.ts +7 -3
  154. package/dist/server/app-route-handler-execution.js +32 -6
  155. package/dist/server/app-route-handler-execution.js.map +1 -1
  156. package/dist/server/app-route-handler-policy.d.ts +6 -2
  157. package/dist/server/app-route-handler-policy.js +8 -3
  158. package/dist/server/app-route-handler-policy.js.map +1 -1
  159. package/dist/server/app-route-handler-response.d.ts +2 -1
  160. package/dist/server/app-route-handler-response.js +44 -4
  161. package/dist/server/app-route-handler-response.js.map +1 -1
  162. package/dist/server/app-route-handler-runtime.d.ts +5 -2
  163. package/dist/server/app-route-handler-runtime.js +108 -2
  164. package/dist/server/app-route-handler-runtime.js.map +1 -1
  165. package/dist/server/app-router-entry.js.map +1 -1
  166. package/dist/server/app-rsc-errors.d.ts +27 -0
  167. package/dist/server/app-rsc-errors.js +42 -0
  168. package/dist/server/app-rsc-errors.js.map +1 -0
  169. package/dist/server/app-rsc-route-matching.d.ts +40 -0
  170. package/dist/server/app-rsc-route-matching.js +66 -0
  171. package/dist/server/app-rsc-route-matching.js.map +1 -0
  172. package/dist/server/app-server-action-execution.d.ts +120 -0
  173. package/dist/server/app-server-action-execution.js +355 -0
  174. package/dist/server/app-server-action-execution.js.map +1 -0
  175. package/dist/server/app-ssr-entry.d.ts +7 -0
  176. package/dist/server/app-ssr-entry.js +30 -9
  177. package/dist/server/app-ssr-entry.js.map +1 -1
  178. package/dist/server/app-ssr-stream.d.ts +5 -3
  179. package/dist/server/app-ssr-stream.js +29 -2
  180. package/dist/server/app-ssr-stream.js.map +1 -1
  181. package/dist/server/app-static-generation.d.ts +15 -0
  182. package/dist/server/app-static-generation.js +20 -0
  183. package/dist/server/app-static-generation.js.map +1 -0
  184. package/dist/server/csp.d.ts +1 -2
  185. package/dist/server/csp.js +1 -1
  186. package/dist/server/csp.js.map +1 -1
  187. package/dist/server/dev-module-runner.d.ts +1 -1
  188. package/dist/server/dev-module-runner.js.map +1 -1
  189. package/dist/server/dev-route-files.d.ts +7 -0
  190. package/dist/server/dev-route-files.js +73 -0
  191. package/dist/server/dev-route-files.js.map +1 -0
  192. package/dist/server/dev-server.js +4 -0
  193. package/dist/server/dev-server.js.map +1 -1
  194. package/dist/server/file-based-metadata.d.ts +17 -0
  195. package/dist/server/file-based-metadata.js +356 -0
  196. package/dist/server/file-based-metadata.js.map +1 -0
  197. package/dist/server/implicit-tags.d.ts +6 -0
  198. package/dist/server/implicit-tags.js +42 -0
  199. package/dist/server/implicit-tags.js.map +1 -0
  200. package/dist/server/instrumentation.js.map +1 -1
  201. package/dist/server/isr-cache.d.ts +20 -2
  202. package/dist/server/isr-cache.js +58 -7
  203. package/dist/server/isr-cache.js.map +1 -1
  204. package/dist/server/metadata-route-build-data.d.ts +25 -0
  205. package/dist/server/metadata-route-build-data.js +150 -0
  206. package/dist/server/metadata-route-build-data.js.map +1 -0
  207. package/dist/server/metadata-route-response.d.ts +17 -0
  208. package/dist/server/metadata-route-response.js +187 -0
  209. package/dist/server/metadata-route-response.js.map +1 -0
  210. package/dist/server/metadata-routes.d.ts +42 -4
  211. package/dist/server/metadata-routes.js +127 -11
  212. package/dist/server/metadata-routes.js.map +1 -1
  213. package/dist/server/middleware-matcher.d.ts +15 -0
  214. package/dist/server/middleware-matcher.js +102 -0
  215. package/dist/server/middleware-matcher.js.map +1 -0
  216. package/dist/server/middleware-request-headers.d.ts +1 -3
  217. package/dist/server/middleware-request-headers.js +5 -4
  218. package/dist/server/middleware-request-headers.js.map +1 -1
  219. package/dist/server/middleware-runtime.d.ts +39 -0
  220. package/dist/server/middleware-runtime.js +159 -0
  221. package/dist/server/middleware-runtime.js.map +1 -0
  222. package/dist/server/middleware.d.ts +5 -37
  223. package/dist/server/middleware.js +18 -228
  224. package/dist/server/middleware.js.map +1 -1
  225. package/dist/server/pages-api-route.d.ts +1 -1
  226. package/dist/server/pages-api-route.js.map +1 -1
  227. package/dist/server/pages-i18n.d.ts +2 -3
  228. package/dist/server/pages-i18n.js +1 -1
  229. package/dist/server/pages-i18n.js.map +1 -1
  230. package/dist/server/pages-node-compat.d.ts +1 -2
  231. package/dist/server/pages-node-compat.js +1 -1
  232. package/dist/server/pages-node-compat.js.map +1 -1
  233. package/dist/server/pages-page-data.d.ts +6 -2
  234. package/dist/server/pages-page-data.js +4 -0
  235. package/dist/server/pages-page-data.js.map +1 -1
  236. package/dist/server/pages-page-response.d.ts +1 -1
  237. package/dist/server/pages-page-response.js +2 -1
  238. package/dist/server/pages-page-response.js.map +1 -1
  239. package/dist/server/prerender-work-unit-setup.d.ts +7 -0
  240. package/dist/server/prerender-work-unit-setup.js +30 -0
  241. package/dist/server/prerender-work-unit-setup.js.map +1 -0
  242. package/dist/server/prod-server.js +12 -14
  243. package/dist/server/prod-server.js.map +1 -1
  244. package/dist/server/request-pipeline.d.ts +46 -5
  245. package/dist/server/request-pipeline.js +84 -5
  246. package/dist/server/request-pipeline.js.map +1 -1
  247. package/dist/server/rsc-stream-hints.d.ts +5 -0
  248. package/dist/server/rsc-stream-hints.js +35 -0
  249. package/dist/server/rsc-stream-hints.js.map +1 -0
  250. package/dist/server/seed-cache.js.map +1 -1
  251. package/dist/server/server-action-not-found.d.ts +9 -0
  252. package/dist/server/server-action-not-found.js +40 -0
  253. package/dist/server/server-action-not-found.js.map +1 -0
  254. package/dist/server/socket-error-backstop.d.ts +17 -0
  255. package/dist/server/socket-error-backstop.js +129 -0
  256. package/dist/server/socket-error-backstop.js.map +1 -0
  257. package/dist/server/static-file-cache.d.ts +1 -1
  258. package/dist/server/static-file-cache.js.map +1 -1
  259. package/dist/shims/cache-runtime.js +16 -3
  260. package/dist/shims/cache-runtime.js.map +1 -1
  261. package/dist/shims/cache.d.ts +27 -2
  262. package/dist/shims/cache.js +135 -24
  263. package/dist/shims/cache.js.map +1 -1
  264. package/dist/shims/error-boundary.d.ts +49 -4
  265. package/dist/shims/error-boundary.js +76 -4
  266. package/dist/shims/error-boundary.js.map +1 -1
  267. package/dist/shims/fetch-cache.d.ts +10 -1
  268. package/dist/shims/fetch-cache.js +24 -4
  269. package/dist/shims/fetch-cache.js.map +1 -1
  270. package/dist/shims/font-google-base.d.ts +21 -22
  271. package/dist/shims/font-google-base.js +86 -29
  272. package/dist/shims/font-google-base.js.map +1 -1
  273. package/dist/shims/form.js +1 -1
  274. package/dist/shims/headers.d.ts +14 -2
  275. package/dist/shims/headers.js +127 -17
  276. package/dist/shims/headers.js.map +1 -1
  277. package/dist/shims/image.js +26 -8
  278. package/dist/shims/image.js.map +1 -1
  279. package/dist/shims/internal/make-hanging-promise.d.ts +16 -0
  280. package/dist/shims/internal/make-hanging-promise.js +46 -0
  281. package/dist/shims/internal/make-hanging-promise.js.map +1 -0
  282. package/dist/shims/internal/work-unit-async-storage.d.ts +26 -3
  283. package/dist/shims/internal/work-unit-async-storage.js +6 -3
  284. package/dist/shims/internal/work-unit-async-storage.js.map +1 -1
  285. package/dist/shims/link.js +1 -1
  286. package/dist/shims/metadata.d.ts +38 -26
  287. package/dist/shims/metadata.js +75 -45
  288. package/dist/shims/metadata.js.map +1 -1
  289. package/dist/shims/navigation.d.ts +17 -4
  290. package/dist/shims/navigation.js +29 -6
  291. package/dist/shims/navigation.js.map +1 -1
  292. package/dist/shims/navigation.react-server.d.ts +2 -2
  293. package/dist/shims/navigation.react-server.js +2 -2
  294. package/dist/shims/navigation.react-server.js.map +1 -1
  295. package/dist/shims/offline.d.ts +5 -0
  296. package/dist/shims/offline.js +17 -0
  297. package/dist/shims/offline.js.map +1 -0
  298. package/dist/shims/request-state-types.d.ts +2 -1
  299. package/dist/shims/root-params.d.ts +11 -0
  300. package/dist/shims/root-params.js +24 -0
  301. package/dist/shims/root-params.js.map +1 -0
  302. package/dist/shims/router.js +1 -1
  303. package/dist/shims/server.d.ts +5 -1
  304. package/dist/shims/server.js +101 -10
  305. package/dist/shims/server.js.map +1 -1
  306. package/dist/shims/thenable-params.d.ts +5 -0
  307. package/dist/shims/thenable-params.js +37 -0
  308. package/dist/shims/thenable-params.js.map +1 -0
  309. package/dist/shims/unified-request-context.d.ts +2 -1
  310. package/dist/shims/unified-request-context.js +4 -0
  311. package/dist/shims/unified-request-context.js.map +1 -1
  312. package/dist/shims/url-safety.d.ts +3 -1
  313. package/dist/shims/url-safety.js +5 -1
  314. package/dist/shims/url-safety.js.map +1 -1
  315. package/dist/utils/error-cause.d.ts +5 -0
  316. package/dist/utils/error-cause.js +97 -0
  317. package/dist/utils/error-cause.js.map +1 -0
  318. package/dist/utils/lazy-chunks.d.ts +1 -1
  319. package/dist/utils/lazy-chunks.js.map +1 -1
  320. package/package.json +6 -1
  321. package/dist/server/middleware-codegen.d.ts +0 -54
  322. package/dist/server/middleware-codegen.js +0 -414
  323. package/dist/server/middleware-codegen.js.map +0 -1
@@ -0,0 +1,16 @@
1
+ //#region src/shims/internal/make-hanging-promise.d.ts
2
+ /**
3
+ * makeHangingPromise — returns a promise that never resolves during prerendering.
4
+ *
5
+ * When prerendering, `unstable_io()` must return a hanging promise to prevent
6
+ * React from executing past the IO boundary. The promise never resolves—it only
7
+ * rejects if the render signal is aborted (e.g., due to a dynamic error or
8
+ * cache-fill completion).
9
+ *
10
+ * Ported from Next.js: packages/next/src/server/dynamic-rendering-utils.ts
11
+ * https://github.com/vercel/next.js/blob/canary/packages/next/src/server/dynamic-rendering-utils.ts
12
+ */
13
+ declare function makeHangingPromise<T>(signal: AbortSignal, route: string, expression: string): Promise<T>;
14
+ //#endregion
15
+ export { makeHangingPromise };
16
+ //# sourceMappingURL=make-hanging-promise.d.ts.map
@@ -0,0 +1,46 @@
1
+ //#region src/shims/internal/make-hanging-promise.ts
2
+ /**
3
+ * makeHangingPromise — returns a promise that never resolves during prerendering.
4
+ *
5
+ * When prerendering, `unstable_io()` must return a hanging promise to prevent
6
+ * React from executing past the IO boundary. The promise never resolves—it only
7
+ * rejects if the render signal is aborted (e.g., due to a dynamic error or
8
+ * cache-fill completion).
9
+ *
10
+ * Ported from Next.js: packages/next/src/server/dynamic-rendering-utils.ts
11
+ * https://github.com/vercel/next.js/blob/canary/packages/next/src/server/dynamic-rendering-utils.ts
12
+ */
13
+ var HangingPromiseRejectionError = class extends Error {
14
+ constructor(route, expression) {
15
+ super(`Route ${route} used ${expression} during prerendering but the render was aborted. This is expected when prerendering is cut short (e.g. due to a dynamic access).`);
16
+ this.name = "HangingPromiseRejectionError";
17
+ }
18
+ };
19
+ const abortListenersBySignal = /* @__PURE__ */ new WeakMap();
20
+ function suppressUnhandledRejection() {}
21
+ function makeHangingPromise(signal, route, expression) {
22
+ if (signal.aborted) {
23
+ const rejected = Promise.reject(new HangingPromiseRejectionError(route, expression));
24
+ rejected.catch(suppressUnhandledRejection);
25
+ return rejected;
26
+ }
27
+ const hangingPromise = new Promise((_, reject) => {
28
+ const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression));
29
+ const currentListeners = abortListenersBySignal.get(signal);
30
+ if (currentListeners) currentListeners.push(boundRejection);
31
+ else {
32
+ const listeners = [boundRejection];
33
+ abortListenersBySignal.set(signal, listeners);
34
+ signal.addEventListener("abort", () => {
35
+ for (let i = 0; i < listeners.length; i++) listeners[i]();
36
+ listeners.length = 0;
37
+ }, { once: true });
38
+ }
39
+ });
40
+ hangingPromise.catch(suppressUnhandledRejection);
41
+ return hangingPromise;
42
+ }
43
+ //#endregion
44
+ export { makeHangingPromise };
45
+
46
+ //# sourceMappingURL=make-hanging-promise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-hanging-promise.js","names":[],"sources":["../../../src/shims/internal/make-hanging-promise.ts"],"sourcesContent":["/**\n * makeHangingPromise — returns a promise that never resolves during prerendering.\n *\n * When prerendering, `unstable_io()` must return a hanging promise to prevent\n * React from executing past the IO boundary. The promise never resolves—it only\n * rejects if the render signal is aborted (e.g., due to a dynamic error or\n * cache-fill completion).\n *\n * Ported from Next.js: packages/next/src/server/dynamic-rendering-utils.ts\n * https://github.com/vercel/next.js/blob/canary/packages/next/src/server/dynamic-rendering-utils.ts\n */\n\nclass HangingPromiseRejectionError extends Error {\n constructor(route: string, expression: string) {\n super(\n `Route ${route} used ${expression} during prerendering but the render was aborted. ` +\n `This is expected when prerendering is cut short (e.g. due to a dynamic access).`,\n );\n this.name = \"HangingPromiseRejectionError\";\n }\n}\n\nconst abortListenersBySignal = new WeakMap<AbortSignal, (() => void)[]>();\n\nfunction suppressUnhandledRejection(): void {\n // intentionally empty — suppresses \"unhandled rejection\" warnings\n}\n\nexport function makeHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n): Promise<T> {\n if (signal.aborted) {\n const rejected = Promise.reject(new HangingPromiseRejectionError(route, expression));\n rejected.catch(suppressUnhandledRejection);\n return rejected;\n }\n const hangingPromise = new Promise<T>((_, reject) => {\n const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression));\n const currentListeners = abortListenersBySignal.get(signal);\n if (currentListeners) {\n currentListeners.push(boundRejection);\n } else {\n const listeners = [boundRejection];\n abortListenersBySignal.set(signal, listeners);\n signal.addEventListener(\n \"abort\",\n () => {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n listeners.length = 0;\n },\n { once: true },\n );\n }\n });\n // Suppress unhandled rejection — the promise is expected to be used with\n // React's use() which handles rejections. If never awaited, the abort\n // rejection is a no-op cleanup.\n hangingPromise.catch(suppressUnhandledRejection);\n return hangingPromise;\n}\n"],"mappings":";;;;;;;;;;;;AAYA,IAAM,+BAAN,cAA2C,MAAM;CAC/C,YAAY,OAAe,YAAoB;AAC7C,QACE,SAAS,MAAM,QAAQ,WAAW,kIAEnC;AACD,OAAK,OAAO;;;AAIhB,MAAM,yCAAyB,IAAI,SAAsC;AAEzE,SAAS,6BAAmC;AAI5C,SAAgB,mBACd,QACA,OACA,YACY;AACZ,KAAI,OAAO,SAAS;EAClB,MAAM,WAAW,QAAQ,OAAO,IAAI,6BAA6B,OAAO,WAAW,CAAC;AACpF,WAAS,MAAM,2BAA2B;AAC1C,SAAO;;CAET,MAAM,iBAAiB,IAAI,SAAY,GAAG,WAAW;EACnD,MAAM,iBAAiB,OAAO,KAAK,MAAM,IAAI,6BAA6B,OAAO,WAAW,CAAC;EAC7F,MAAM,mBAAmB,uBAAuB,IAAI,OAAO;AAC3D,MAAI,iBACF,kBAAiB,KAAK,eAAe;OAChC;GACL,MAAM,YAAY,CAAC,eAAe;AAClC,0BAAuB,IAAI,QAAQ,UAAU;AAC7C,UAAO,iBACL,eACM;AACJ,SAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,IACpC,WAAU,IAAI;AAEhB,cAAU,SAAS;MAErB,EAAE,MAAM,MAAM,CACf;;GAEH;AAIF,gBAAe,MAAM,2BAA2B;AAChD,QAAO"}
@@ -1,8 +1,31 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
2
 
3
3
  //#region src/shims/internal/work-unit-async-storage.d.ts
4
- declare const workUnitAsyncStorage: AsyncLocalStorage<unknown>;
5
- declare const requestAsyncStorage: AsyncLocalStorage<unknown>;
4
+ type RequestStore = {
5
+ readonly type: "request";
6
+ };
7
+ type PrerenderStore = {
8
+ readonly type: "prerender" | "prerender-client" | "prerender-runtime"; /** AbortSignal that fires when the prerender is cancelled or completed. */
9
+ readonly renderSignal: AbortSignal; /** Optional route identifier for debugging and error messages. */
10
+ readonly route?: string;
11
+ };
12
+ type CacheStore = {
13
+ readonly type: "cache" | "private-cache" | "unstable-cache";
14
+ };
15
+ type GenerateStaticParamsStore = {
16
+ readonly type: "generate-static-params";
17
+ };
18
+ type PrerenderLegacyStore = {
19
+ readonly type: "prerender-legacy";
20
+ };
21
+ /**
22
+ * Discriminated union of all known work unit types.
23
+ * Matches Next.js's WorkUnitStore: packages/next/src/server/app-render/work-unit-async-storage.external.ts
24
+ */
25
+ type WorkUnitStore = RequestStore | PrerenderStore | CacheStore | GenerateStaticParamsStore | PrerenderLegacyStore;
26
+ type WorkUnitAsyncStorage = AsyncLocalStorage<WorkUnitStore>;
27
+ declare const workUnitAsyncStorage: WorkUnitAsyncStorage;
28
+ declare const requestAsyncStorage: WorkUnitAsyncStorage;
6
29
  //#endregion
7
- export { requestAsyncStorage, workUnitAsyncStorage };
30
+ export { CacheStore, GenerateStaticParamsStore, PrerenderLegacyStore, PrerenderStore, RequestStore, WorkUnitAsyncStorage, WorkUnitStore, requestAsyncStorage, workUnitAsyncStorage };
8
31
  //# sourceMappingURL=work-unit-async-storage.d.ts.map
@@ -4,9 +4,12 @@ import { AsyncLocalStorage } from "node:async_hooks";
4
4
  * Shim for next/dist/server/app-render/work-unit-async-storage.external
5
5
  * and next/dist/client/components/request-async-storage.external
6
6
  *
7
- * Used by: @sentry/nextjs (runtime resolve for request context injection).
8
- * Provides a minimal AsyncLocalStorage-like export that Sentry can detect
9
- * and use without crashing.
7
+ * Tracks the current rendering context type so that dynamic APIs
8
+ * (unstable_io, headers, cookies, etc.) can branch on whether they're
9
+ * inside a request, prerender, cache scope, or other context.
10
+ *
11
+ * Used by: @sentry/nextjs (runtime resolve for request context injection),
12
+ * unstable_io() for hanging-promise behavior during prerendering.
10
13
  */
11
14
  const workUnitAsyncStorage = new AsyncLocalStorage();
12
15
  const requestAsyncStorage = workUnitAsyncStorage;
@@ -1 +1 @@
1
- {"version":3,"file":"work-unit-async-storage.js","names":[],"sources":["../../../src/shims/internal/work-unit-async-storage.ts"],"sourcesContent":["/**\n * Shim for next/dist/server/app-render/work-unit-async-storage.external\n * and next/dist/client/components/request-async-storage.external\n *\n * Used by: @sentry/nextjs (runtime resolve for request context injection).\n * Provides a minimal AsyncLocalStorage-like export that Sentry can detect\n * and use without crashing.\n */\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\nexport const workUnitAsyncStorage = new AsyncLocalStorage<unknown>();\n\n// Legacy name (Next 13.x–14.x)\nexport const requestAsyncStorage = workUnitAsyncStorage;\n"],"mappings":";;;;;;;;;;AAUA,MAAa,uBAAuB,IAAI,mBAA4B;AAGpE,MAAa,sBAAsB"}
1
+ {"version":3,"file":"work-unit-async-storage.js","names":[],"sources":["../../../src/shims/internal/work-unit-async-storage.ts"],"sourcesContent":["/**\n * Shim for next/dist/server/app-render/work-unit-async-storage.external\n * and next/dist/client/components/request-async-storage.external\n *\n * Tracks the current rendering context type so that dynamic APIs\n * (unstable_io, headers, cookies, etc.) can branch on whether they're\n * inside a request, prerender, cache scope, or other context.\n *\n * Used by: @sentry/nextjs (runtime resolve for request context injection),\n * unstable_io() for hanging-promise behavior during prerendering.\n */\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\n// ── WorkUnitStore discriminated union ───────────────────────────────────\n\nexport type RequestStore = {\n readonly type: \"request\";\n};\n\nexport type PrerenderStore = {\n readonly type: \"prerender\" | \"prerender-client\" | \"prerender-runtime\";\n /** AbortSignal that fires when the prerender is cancelled or completed. */\n readonly renderSignal: AbortSignal;\n /** Optional route identifier for debugging and error messages. */\n readonly route?: string;\n};\n\nexport type CacheStore = {\n readonly type: \"cache\" | \"private-cache\" | \"unstable-cache\";\n};\n\nexport type GenerateStaticParamsStore = {\n readonly type: \"generate-static-params\";\n};\n\nexport type PrerenderLegacyStore = {\n readonly type: \"prerender-legacy\";\n};\n\n/**\n * Discriminated union of all known work unit types.\n * Matches Next.js's WorkUnitStore: packages/next/src/server/app-render/work-unit-async-storage.external.ts\n */\nexport type WorkUnitStore =\n | RequestStore\n | PrerenderStore\n | CacheStore\n | GenerateStaticParamsStore\n | PrerenderLegacyStore;\n\nexport type WorkUnitAsyncStorage = AsyncLocalStorage<WorkUnitStore>;\n\nexport const workUnitAsyncStorage: WorkUnitAsyncStorage = new AsyncLocalStorage();\n\n// Legacy name (Next 13.x–14.x)\nexport const requestAsyncStorage = workUnitAsyncStorage;\n"],"mappings":";;;;;;;;;;;;;AAoDA,MAAa,uBAA6C,IAAI,mBAAmB;AAGjF,MAAa,sBAAsB"}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
+ import { isDangerousScheme } from "./url-safety.js";
2
3
  import { resolveRelativeHref, toBrowserNavigationHref, toSameOriginAppPath, withBasePath } from "./url-utils.js";
3
4
  import { addLocalePrefix, getDomainLocaleUrl } from "../utils/domain-locale.js";
4
5
  import { appendSearchParamsToUrl, urlQueryToSearchParams } from "../utils/query.js";
5
6
  import { createAppPayloadCacheKey } from "../server/app-elements.js";
6
7
  import { getCurrentInterceptionContext, getMountedSlotsHeader, getPrefetchedUrls, navigateClientSide, prefetchRscResponse, toRscUrl } from "./navigation.js";
7
- import { isDangerousScheme } from "./url-safety.js";
8
8
  import { getI18nContext } from "./i18n-context.js";
9
9
  import React, { createContext, forwardRef, useCallback, useContext, useEffect, useRef, useState } from "react";
10
10
  import { jsx } from "react/jsx-runtime";
@@ -73,11 +73,13 @@ type Metadata = {
73
73
  width?: number;
74
74
  height?: number;
75
75
  alt?: string;
76
+ type?: string;
76
77
  } | Array<string | URL | {
77
78
  url: string | URL;
78
79
  width?: number;
79
80
  height?: number;
80
81
  alt?: string;
82
+ type?: string;
81
83
  }>;
82
84
  videos?: Array<{
83
85
  url: string | URL;
@@ -104,37 +106,20 @@ type Metadata = {
104
106
  alt?: string;
105
107
  width?: number;
106
108
  height?: number;
109
+ type?: string;
107
110
  } | Array<string | URL | {
108
111
  url: string | URL;
109
112
  alt?: string;
110
113
  width?: number;
111
114
  height?: number;
115
+ type?: string;
112
116
  }>;
113
117
  creator?: string;
114
118
  creatorId?: string;
115
119
  players?: TwitterPlayerDescriptor | TwitterPlayerDescriptor[];
116
120
  app?: TwitterAppDescriptor;
117
121
  };
118
- icons?: {
119
- icon?: string | URL | Array<{
120
- url: string | URL;
121
- sizes?: string;
122
- type?: string;
123
- media?: string;
124
- }>;
125
- shortcut?: string | URL | Array<string | URL>;
126
- apple?: string | URL | Array<{
127
- url: string | URL;
128
- sizes?: string;
129
- type?: string;
130
- }>;
131
- other?: Array<{
132
- rel: string;
133
- url: string | URL;
134
- sizes?: string;
135
- type?: string;
136
- }>;
137
- };
122
+ icons?: IconsMetadata;
138
123
  manifest?: string | URL;
139
124
  alternates?: {
140
125
  canonical?: string | URL;
@@ -220,6 +205,36 @@ type TwitterAppDescriptor = {
220
205
  };
221
206
  name?: string;
222
207
  };
208
+ type IconDescriptor = {
209
+ url: string | URL;
210
+ sizes?: string;
211
+ type?: string;
212
+ media?: string;
213
+ };
214
+ type AppleIconDescriptor = {
215
+ url: string | URL;
216
+ sizes?: string;
217
+ type?: string;
218
+ };
219
+ type IconInput = string | URL | IconDescriptor;
220
+ type AppleIconInput = string | URL | AppleIconDescriptor;
221
+ type IconsMap = {
222
+ icon?: IconInput | IconInput[];
223
+ shortcut?: string | URL | Array<string | URL>;
224
+ apple?: AppleIconInput | AppleIconInput[];
225
+ other?: Array<{
226
+ rel: string;
227
+ url: string | URL;
228
+ sizes?: string;
229
+ type?: string;
230
+ }>;
231
+ };
232
+ type IconsMetadata = IconInput | IconInput[] | IconsMap;
233
+ type MetadataMergeEntry = {
234
+ contributesTitle?: boolean;
235
+ isPage?: boolean;
236
+ metadata: Metadata;
237
+ };
223
238
  /**
224
239
  * Merge metadata from multiple sources (layouts + page).
225
240
  *
@@ -232,6 +247,7 @@ type TwitterAppDescriptor = {
232
247
  * Shallow merge: later entries override earlier ones (per Next.js docs).
233
248
  */
234
249
  declare function mergeMetadata(metadataList: Metadata[]): Metadata;
250
+ declare function mergeMetadataEntries(entries: readonly MetadataMergeEntry[]): Metadata;
235
251
  /**
236
252
  * Resolve metadata from a module. Handles both static `metadata` export
237
253
  * and async `generateMetadata()` function.
@@ -242,16 +258,12 @@ declare function mergeMetadata(metadataList: Metadata[]): Metadata;
242
258
  * resolution approach. If not provided, defaults to a promise that resolves
243
259
  * to an empty object (so `await parent` never throws).
244
260
  */
245
- declare function resolveModuleMetadata(mod: Record<string, unknown>, params?: Record<string, string | string[]>, searchParams?: Record<string, string>, parent?: Promise<Metadata>): Promise<Metadata | null>;
246
- /**
247
- * React component that renders metadata as HTML head elements.
248
- * Used by the RSC entry to inject into the <head>.
249
- */
261
+ declare function resolveModuleMetadata(mod: Record<string, unknown>, params?: Record<string, string | string[]>, searchParams?: Record<string, string | string[]>, parent?: Promise<Metadata>): Promise<Metadata | null>;
250
262
  declare function MetadataHead({
251
263
  metadata
252
264
  }: {
253
265
  metadata: Metadata;
254
266
  }): _$react_jsx_runtime0.JSX.Element;
255
267
  //#endregion
256
- export { DEFAULT_VIEWPORT, Metadata, MetadataHead, Viewport, ViewportHead, mergeMetadata, mergeViewport, resolveModuleMetadata, resolveModuleViewport };
268
+ export { DEFAULT_VIEWPORT, Metadata, MetadataHead, MetadataMergeEntry, Viewport, ViewportHead, mergeMetadata, mergeMetadataEntries, mergeViewport, resolveModuleMetadata, resolveModuleViewport };
257
269
  //# sourceMappingURL=metadata.d.ts.map
@@ -1,15 +1,8 @@
1
+ import { makeThenableParams } from "./thenable-params.js";
1
2
  import "react";
2
3
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
3
4
  //#region src/shims/metadata.tsx
4
5
  /**
5
- * Normalize null-prototype objects from matchPattern() into thenable objects.
6
- * See entries/app-rsc-entry.ts makeThenableParams() for full explanation.
7
- */
8
- function makeThenableParams(obj) {
9
- const plain = { ...obj };
10
- return Object.assign(Promise.resolve(plain), plain);
11
- }
12
- /**
13
6
  * Resolve viewport config from a module. Handles both static `viewport` export
14
7
  * and async `generateViewport()` function.
15
8
  */
@@ -80,17 +73,25 @@ function ViewportHead({ viewport }) {
80
73
  * Shallow merge: later entries override earlier ones (per Next.js docs).
81
74
  */
82
75
  function mergeMetadata(metadataList) {
83
- if (metadataList.length === 0) return {};
76
+ return mergeMetadataEntries(metadataList.map((metadata, index) => ({
77
+ isPage: index === metadataList.length - 1,
78
+ metadata
79
+ })));
80
+ }
81
+ function mergeMetadataEntries(entries) {
82
+ if (entries.length === 0) return {};
84
83
  const merged = {};
85
84
  let parentTemplate;
86
- for (let i = 0; i < metadataList.length; i++) {
87
- const meta = metadataList[i];
88
- if (!(i === metadataList.length - 1) && meta.title && typeof meta.title === "object" && meta.title.template) parentTemplate = meta.title.template;
85
+ for (const entry of entries) {
86
+ const meta = entry.metadata;
87
+ const isPage = Boolean(entry.isPage);
88
+ const contributesTitle = entry.contributesTitle !== false;
89
+ if (contributesTitle && !isPage && meta.title && typeof meta.title === "object" && meta.title.template) parentTemplate = meta.title.template;
89
90
  for (const key of Object.keys(meta)) {
90
91
  if (key === "title") continue;
91
92
  merged[key] = meta[key];
92
93
  }
93
- if (meta.title !== void 0) merged.title = meta.title;
94
+ if (contributesTitle && meta.title !== void 0) merged.title = meta.title;
94
95
  }
95
96
  const finalTitle = merged.title;
96
97
  if (finalTitle) {
@@ -117,11 +118,11 @@ function mergeMetadata(metadataList) {
117
118
  async function resolveModuleMetadata(mod, params = {}, searchParams, parent = Promise.resolve({})) {
118
119
  if (typeof mod.generateMetadata === "function") {
119
120
  const asyncParams = makeThenableParams(params);
120
- const asyncSp = makeThenableParams(searchParams ?? {});
121
- return await mod.generateMetadata({
121
+ const props = searchParams === void 0 ? { params: asyncParams } : {
122
122
  params: asyncParams,
123
- searchParams: asyncSp
124
- }, parent);
123
+ searchParams: makeThenableParams(searchParams)
124
+ };
125
+ return await mod.generateMetadata(props, parent);
125
126
  }
126
127
  if (mod.metadata && typeof mod.metadata === "object") return mod.metadata;
127
128
  return null;
@@ -130,6 +131,23 @@ async function resolveModuleMetadata(mod, params = {}, searchParams, parent = Pr
130
131
  * React component that renders metadata as HTML head elements.
131
132
  * Used by the RSC entry to inject into the <head>.
132
133
  */
134
+ function isIconDescriptor(value) {
135
+ if (typeof value !== "object" || value === null || value instanceof URL || Array.isArray(value)) return false;
136
+ const urlValue = Reflect.get(value, "url");
137
+ return typeof urlValue === "string" || urlValue instanceof URL;
138
+ }
139
+ function isIconsMap(value) {
140
+ return typeof value === "object" && !(value instanceof URL) && !Array.isArray(value) && !isIconDescriptor(value);
141
+ }
142
+ function normalizeUrlDescriptor(value, createDescriptor) {
143
+ if (typeof value === "string" || value instanceof URL) return createDescriptor(value);
144
+ return value;
145
+ }
146
+ function normalizeUrlDescriptorEntries(value, createDescriptor) {
147
+ if (!value) return [];
148
+ if (Array.isArray(value)) return value.map((entry) => normalizeUrlDescriptor(entry, createDescriptor));
149
+ return [normalizeUrlDescriptor(value, createDescriptor)];
150
+ }
133
151
  function MetadataHead({ metadata }) {
134
152
  const elements = [];
135
153
  let key = 0;
@@ -289,6 +307,10 @@ function MetadataHead({ metadata }) {
289
307
  property: "og:image:height",
290
308
  content: String(img.height)
291
309
  }, key++));
310
+ if (img.type) elements.push(/* @__PURE__ */ jsx("meta", {
311
+ property: "og:image:type",
312
+ content: img.type
313
+ }, key++));
292
314
  if (img.alt) elements.push(/* @__PURE__ */ jsx("meta", {
293
315
  property: "og:image:alt",
294
316
  content: img.alt
@@ -353,10 +375,24 @@ function MetadataHead({ metadata }) {
353
375
  name: "twitter:image",
354
376
  content: resolveUrl(imgUrl)
355
377
  }, key++));
356
- if (typeof img !== "string" && !(img instanceof URL) && img.alt) elements.push(/* @__PURE__ */ jsx("meta", {
357
- name: "twitter:image:alt",
358
- content: img.alt
359
- }, key++));
378
+ if (typeof img !== "string" && !(img instanceof URL)) {
379
+ if (img.type) elements.push(/* @__PURE__ */ jsx("meta", {
380
+ name: "twitter:image:type",
381
+ content: img.type
382
+ }, key++));
383
+ if (img.width) elements.push(/* @__PURE__ */ jsx("meta", {
384
+ name: "twitter:image:width",
385
+ content: String(img.width)
386
+ }, key++));
387
+ if (img.height) elements.push(/* @__PURE__ */ jsx("meta", {
388
+ name: "twitter:image:height",
389
+ content: String(img.height)
390
+ }, key++));
391
+ if (img.alt) elements.push(/* @__PURE__ */ jsx("meta", {
392
+ name: "twitter:image:alt",
393
+ content: img.alt
394
+ }, key++));
395
+ }
360
396
  }
361
397
  }
362
398
  if (tw.players) {
@@ -408,34 +444,28 @@ function MetadataHead({ metadata }) {
408
444
  }
409
445
  }
410
446
  if (metadata.icons) {
411
- const { icon, shortcut, apple, other } = metadata.icons;
412
- if (shortcut) {
413
- const shortcuts = Array.isArray(shortcut) ? shortcut : [shortcut];
447
+ const iconEntries = isIconsMap(metadata.icons) ? normalizeUrlDescriptorEntries(metadata.icons.icon, (url) => ({ url })) : normalizeUrlDescriptorEntries(metadata.icons, (url) => ({ url }));
448
+ if (isIconsMap(metadata.icons) && metadata.icons.shortcut) {
449
+ const shortcuts = Array.isArray(metadata.icons.shortcut) ? metadata.icons.shortcut : [metadata.icons.shortcut];
414
450
  for (const s of shortcuts) elements.push(/* @__PURE__ */ jsx("link", {
415
451
  rel: "shortcut icon",
416
452
  href: resolveUrl(s)
417
453
  }, key++));
418
454
  }
419
- if (icon) {
420
- const icons = typeof icon === "string" || icon instanceof URL ? [{ url: icon }] : icon;
421
- for (const i of icons) elements.push(/* @__PURE__ */ jsx("link", {
422
- rel: "icon",
423
- href: resolveUrl(i.url),
424
- ...i.sizes ? { sizes: i.sizes } : {},
425
- ...i.type ? { type: i.type } : {},
426
- ...i.media ? { media: i.media } : {}
427
- }, key++));
428
- }
429
- if (apple) {
430
- const apples = typeof apple === "string" || apple instanceof URL ? [{ url: apple }] : apple;
431
- for (const a of apples) elements.push(/* @__PURE__ */ jsx("link", {
432
- rel: "apple-touch-icon",
433
- href: resolveUrl(a.url),
434
- ...a.sizes ? { sizes: a.sizes } : {},
435
- ...a.type ? { type: a.type } : {}
436
- }, key++));
437
- }
438
- if (other) for (const o of other) elements.push(/* @__PURE__ */ jsx("link", {
455
+ if (iconEntries.length > 0) for (const i of iconEntries) elements.push(/* @__PURE__ */ jsx("link", {
456
+ rel: "icon",
457
+ href: resolveUrl(i.url),
458
+ ...i.sizes ? { sizes: i.sizes } : {},
459
+ ...i.type ? { type: i.type } : {},
460
+ ...i.media ? { media: i.media } : {}
461
+ }, key++));
462
+ if (isIconsMap(metadata.icons) && metadata.icons.apple) for (const a of normalizeUrlDescriptorEntries(metadata.icons.apple, (url) => ({ url }))) elements.push(/* @__PURE__ */ jsx("link", {
463
+ rel: "apple-touch-icon",
464
+ href: resolveUrl(a.url),
465
+ ...a.sizes ? { sizes: a.sizes } : {},
466
+ ...a.type ? { type: a.type } : {}
467
+ }, key++));
468
+ if (isIconsMap(metadata.icons) && metadata.icons.other) for (const o of metadata.icons.other) elements.push(/* @__PURE__ */ jsx("link", {
439
469
  rel: o.rel,
440
470
  href: resolveUrl(o.url),
441
471
  ...o.sizes ? { sizes: o.sizes } : {}
@@ -557,6 +587,6 @@ function MetadataHead({ metadata }) {
557
587
  return /* @__PURE__ */ jsx(Fragment$1, { children: elements });
558
588
  }
559
589
  //#endregion
560
- export { DEFAULT_VIEWPORT, MetadataHead, ViewportHead, mergeMetadata, mergeViewport, resolveModuleMetadata, resolveModuleViewport };
590
+ export { DEFAULT_VIEWPORT, MetadataHead, ViewportHead, mergeMetadata, mergeMetadataEntries, mergeViewport, resolveModuleMetadata, resolveModuleViewport };
561
591
 
562
592
  //# sourceMappingURL=metadata.js.map