vinext 0.0.25 → 0.0.27

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 (226) hide show
  1. package/README.md +95 -86
  2. package/dist/build/static-export.d.ts.map +1 -1
  3. package/dist/build/static-export.js +3 -8
  4. package/dist/build/static-export.js.map +1 -1
  5. package/dist/check.d.ts.map +1 -1
  6. package/dist/check.js +154 -50
  7. package/dist/check.js.map +1 -1
  8. package/dist/cli.js +42 -12
  9. package/dist/cli.js.map +1 -1
  10. package/dist/client/entry.js.map +1 -1
  11. package/dist/client/vinext-next-data.d.ts +22 -0
  12. package/dist/client/vinext-next-data.d.ts.map +1 -0
  13. package/dist/client/vinext-next-data.js +2 -0
  14. package/dist/client/vinext-next-data.js.map +1 -0
  15. package/dist/cloudflare/kv-cache-handler.d.ts +32 -1
  16. package/dist/cloudflare/kv-cache-handler.d.ts.map +1 -1
  17. package/dist/cloudflare/kv-cache-handler.js +47 -21
  18. package/dist/cloudflare/kv-cache-handler.js.map +1 -1
  19. package/dist/cloudflare/tpr.d.ts.map +1 -1
  20. package/dist/cloudflare/tpr.js +15 -4
  21. package/dist/cloudflare/tpr.js.map +1 -1
  22. package/dist/config/config-matchers.d.ts +27 -0
  23. package/dist/config/config-matchers.d.ts.map +1 -1
  24. package/dist/config/config-matchers.js +312 -62
  25. package/dist/config/config-matchers.js.map +1 -1
  26. package/dist/config/dotenv.d.ts.map +1 -1
  27. package/dist/config/dotenv.js +1 -6
  28. package/dist/config/dotenv.js.map +1 -1
  29. package/dist/config/next-config.d.ts +38 -4
  30. package/dist/config/next-config.d.ts.map +1 -1
  31. package/dist/config/next-config.js +194 -31
  32. package/dist/config/next-config.js.map +1 -1
  33. package/dist/deploy.d.ts +11 -0
  34. package/dist/deploy.d.ts.map +1 -1
  35. package/dist/deploy.js +74 -39
  36. package/dist/deploy.js.map +1 -1
  37. package/dist/entries/app-browser-entry.d.ts +9 -0
  38. package/dist/entries/app-browser-entry.d.ts.map +1 -0
  39. package/dist/entries/app-browser-entry.js +340 -0
  40. package/dist/entries/app-browser-entry.js.map +1 -0
  41. package/dist/{server/app-dev-server.d.ts → entries/app-rsc-entry.d.ts} +4 -17
  42. package/dist/entries/app-rsc-entry.d.ts.map +1 -0
  43. package/dist/{server/app-dev-server.js → entries/app-rsc-entry.js} +438 -1232
  44. package/dist/entries/app-rsc-entry.js.map +1 -0
  45. package/dist/entries/app-ssr-entry.d.ts +8 -0
  46. package/dist/entries/app-ssr-entry.d.ts.map +1 -0
  47. package/dist/entries/app-ssr-entry.js +449 -0
  48. package/dist/entries/app-ssr-entry.js.map +1 -0
  49. package/dist/entries/pages-client-entry.d.ts +4 -0
  50. package/dist/entries/pages-client-entry.d.ts.map +1 -0
  51. package/dist/entries/pages-client-entry.js +96 -0
  52. package/dist/entries/pages-client-entry.js.map +1 -0
  53. package/dist/entries/pages-entry-helpers.d.ts +7 -0
  54. package/dist/entries/pages-entry-helpers.d.ts.map +1 -0
  55. package/dist/entries/pages-entry-helpers.js +18 -0
  56. package/dist/entries/pages-entry-helpers.js.map +1 -0
  57. package/dist/entries/pages-server-entry.d.ts +8 -0
  58. package/dist/entries/pages-server-entry.d.ts.map +1 -0
  59. package/dist/entries/pages-server-entry.js +1015 -0
  60. package/dist/entries/pages-server-entry.js.map +1 -0
  61. package/dist/index.d.ts +2 -26
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +407 -1357
  64. package/dist/index.js.map +1 -1
  65. package/dist/init.d.ts.map +1 -1
  66. package/dist/init.js +6 -5
  67. package/dist/init.js.map +1 -1
  68. package/dist/routing/app-router.d.ts +2 -0
  69. package/dist/routing/app-router.d.ts.map +1 -1
  70. package/dist/routing/app-router.js +10 -18
  71. package/dist/routing/app-router.js.map +1 -1
  72. package/dist/routing/file-matcher.d.ts.map +1 -1
  73. package/dist/routing/file-matcher.js.map +1 -1
  74. package/dist/routing/pages-router.d.ts +2 -0
  75. package/dist/routing/pages-router.d.ts.map +1 -1
  76. package/dist/routing/pages-router.js +8 -5
  77. package/dist/routing/pages-router.js.map +1 -1
  78. package/dist/routing/utils.d.ts.map +1 -1
  79. package/dist/routing/utils.js.map +1 -1
  80. package/dist/server/api-handler.d.ts.map +1 -1
  81. package/dist/server/api-handler.js +7 -2
  82. package/dist/server/api-handler.js.map +1 -1
  83. package/dist/server/app-router-entry.d.ts +3 -2
  84. package/dist/server/app-router-entry.d.ts.map +1 -1
  85. package/dist/server/app-router-entry.js +8 -4
  86. package/dist/server/app-router-entry.js.map +1 -1
  87. package/dist/server/dev-module-runner.d.ts.map +1 -1
  88. package/dist/server/dev-module-runner.js +1 -1
  89. package/dist/server/dev-module-runner.js.map +1 -1
  90. package/dist/server/dev-origin-check.d.ts.map +1 -1
  91. package/dist/server/dev-origin-check.js.map +1 -1
  92. package/dist/server/dev-server.d.ts.map +1 -1
  93. package/dist/server/dev-server.js +30 -18
  94. package/dist/server/dev-server.js.map +1 -1
  95. package/dist/server/image-optimization.d.ts.map +1 -1
  96. package/dist/server/image-optimization.js.map +1 -1
  97. package/dist/server/instrumentation.d.ts +1 -1
  98. package/dist/server/instrumentation.js +2 -2
  99. package/dist/server/instrumentation.js.map +1 -1
  100. package/dist/server/isr-cache.d.ts +13 -1
  101. package/dist/server/isr-cache.d.ts.map +1 -1
  102. package/dist/server/isr-cache.js +10 -1
  103. package/dist/server/isr-cache.js.map +1 -1
  104. package/dist/server/metadata-routes.d.ts.map +1 -1
  105. package/dist/server/metadata-routes.js +6 -18
  106. package/dist/server/metadata-routes.js.map +1 -1
  107. package/dist/server/middleware-codegen.d.ts +1 -1
  108. package/dist/server/middleware-codegen.d.ts.map +1 -1
  109. package/dist/server/middleware-codegen.js +13 -11
  110. package/dist/server/middleware-codegen.js.map +1 -1
  111. package/dist/server/middleware-request-headers.d.ts +9 -0
  112. package/dist/server/middleware-request-headers.d.ts.map +1 -0
  113. package/dist/server/middleware-request-headers.js +77 -0
  114. package/dist/server/middleware-request-headers.js.map +1 -0
  115. package/dist/server/middleware.d.ts.map +1 -1
  116. package/dist/server/middleware.js +38 -19
  117. package/dist/server/middleware.js.map +1 -1
  118. package/dist/server/normalize-path.js.map +1 -1
  119. package/dist/server/prod-server.d.ts +1 -1
  120. package/dist/server/prod-server.d.ts.map +1 -1
  121. package/dist/server/prod-server.js +71 -41
  122. package/dist/server/prod-server.js.map +1 -1
  123. package/dist/server/request-pipeline.d.ts +93 -0
  124. package/dist/server/request-pipeline.d.ts.map +1 -0
  125. package/dist/server/request-pipeline.js +200 -0
  126. package/dist/server/request-pipeline.js.map +1 -0
  127. package/dist/shims/cache-runtime.d.ts.map +1 -1
  128. package/dist/shims/cache-runtime.js +21 -16
  129. package/dist/shims/cache-runtime.js.map +1 -1
  130. package/dist/shims/cache.d.ts.map +1 -1
  131. package/dist/shims/cache.js +18 -17
  132. package/dist/shims/cache.js.map +1 -1
  133. package/dist/shims/constants.d.ts +120 -3
  134. package/dist/shims/constants.d.ts.map +1 -1
  135. package/dist/shims/constants.js +165 -3
  136. package/dist/shims/constants.js.map +1 -1
  137. package/dist/shims/dynamic.d.ts.map +1 -1
  138. package/dist/shims/dynamic.js +1 -1
  139. package/dist/shims/dynamic.js.map +1 -1
  140. package/dist/shims/error-boundary.d.ts.map +1 -1
  141. package/dist/shims/error-boundary.js +2 -3
  142. package/dist/shims/error-boundary.js.map +1 -1
  143. package/dist/shims/error.d.ts.map +1 -1
  144. package/dist/shims/error.js +1 -3
  145. package/dist/shims/error.js.map +1 -1
  146. package/dist/shims/fetch-cache.d.ts.map +1 -1
  147. package/dist/shims/fetch-cache.js +53 -29
  148. package/dist/shims/fetch-cache.js.map +1 -1
  149. package/dist/shims/font-google-base.d.ts.map +1 -1
  150. package/dist/shims/font-google-base.js +16 -4
  151. package/dist/shims/font-google-base.js.map +1 -1
  152. package/dist/shims/font-google.d.ts +1 -1
  153. package/dist/shims/font-google.d.ts.map +1 -1
  154. package/dist/shims/font-google.generated.d.ts.map +1 -1
  155. package/dist/shims/font-google.generated.js +412 -206
  156. package/dist/shims/font-google.generated.js.map +1 -1
  157. package/dist/shims/font-google.js +1 -1
  158. package/dist/shims/font-google.js.map +1 -1
  159. package/dist/shims/font-local.d.ts.map +1 -1
  160. package/dist/shims/font-local.js +13 -3
  161. package/dist/shims/font-local.js.map +1 -1
  162. package/dist/shims/form.d.ts.map +1 -1
  163. package/dist/shims/form.js +2 -2
  164. package/dist/shims/form.js.map +1 -1
  165. package/dist/shims/head.d.ts.map +1 -1
  166. package/dist/shims/head.js +10 -8
  167. package/dist/shims/head.js.map +1 -1
  168. package/dist/shims/headers.d.ts +23 -5
  169. package/dist/shims/headers.d.ts.map +1 -1
  170. package/dist/shims/headers.js +98 -37
  171. package/dist/shims/headers.js.map +1 -1
  172. package/dist/shims/image.d.ts.map +1 -1
  173. package/dist/shims/image.js +35 -8
  174. package/dist/shims/image.js.map +1 -1
  175. package/dist/shims/legacy-image.d.ts.map +1 -1
  176. package/dist/shims/legacy-image.js +1 -1
  177. package/dist/shims/legacy-image.js.map +1 -1
  178. package/dist/shims/link.d.ts.map +1 -1
  179. package/dist/shims/link.js +31 -17
  180. package/dist/shims/link.js.map +1 -1
  181. package/dist/shims/metadata.d.ts +19 -3
  182. package/dist/shims/metadata.d.ts.map +1 -1
  183. package/dist/shims/metadata.js +19 -11
  184. package/dist/shims/metadata.js.map +1 -1
  185. package/dist/shims/navigation-state.d.ts.map +1 -1
  186. package/dist/shims/navigation-state.js +3 -2
  187. package/dist/shims/navigation-state.js.map +1 -1
  188. package/dist/shims/navigation.d.ts.map +1 -1
  189. package/dist/shims/navigation.js +26 -19
  190. package/dist/shims/navigation.js.map +1 -1
  191. package/dist/shims/og.d.ts +6 -6
  192. package/dist/shims/og.js +6 -6
  193. package/dist/shims/og.js.map +1 -1
  194. package/dist/shims/request-context.d.ts +50 -0
  195. package/dist/shims/request-context.d.ts.map +1 -0
  196. package/dist/shims/request-context.js +59 -0
  197. package/dist/shims/request-context.js.map +1 -0
  198. package/dist/shims/router-state.d.ts.map +1 -1
  199. package/dist/shims/router-state.js +2 -1
  200. package/dist/shims/router-state.js.map +1 -1
  201. package/dist/shims/router.d.ts.map +1 -1
  202. package/dist/shims/router.js +18 -25
  203. package/dist/shims/router.js.map +1 -1
  204. package/dist/shims/script.d.ts.map +1 -1
  205. package/dist/shims/script.js.map +1 -1
  206. package/dist/shims/server.d.ts +13 -0
  207. package/dist/shims/server.d.ts.map +1 -1
  208. package/dist/shims/server.js +100 -34
  209. package/dist/shims/server.js.map +1 -1
  210. package/dist/shims/url-utils.d.ts.map +1 -1
  211. package/dist/shims/url-utils.js +1 -3
  212. package/dist/shims/url-utils.js.map +1 -1
  213. package/dist/utils/base-path.d.ts +17 -0
  214. package/dist/utils/base-path.d.ts.map +1 -0
  215. package/dist/utils/base-path.js +25 -0
  216. package/dist/utils/base-path.js.map +1 -0
  217. package/dist/utils/project.d.ts +15 -0
  218. package/dist/utils/project.d.ts.map +1 -1
  219. package/dist/utils/project.js +50 -4
  220. package/dist/utils/project.js.map +1 -1
  221. package/dist/utils/query.d.ts.map +1 -1
  222. package/dist/utils/query.js +3 -1
  223. package/dist/utils/query.js.map +1 -1
  224. package/package.json +47 -33
  225. package/dist/server/app-dev-server.d.ts.map +0 -1
  226. package/dist/server/app-dev-server.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/shims/link.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\n/**\n * next/link shim\n *\n * Renders an <a> tag with client-side navigation support.\n * On click, prevents full page reload and triggers client-side\n * page swap via the router's navigation system.\n */\nimport React, { forwardRef, useRef, useEffect, useCallback, useContext, createContext, useState, type AnchorHTMLAttributes, type MouseEvent } from \"react\";\n// Import shared RSC prefetch utilities from navigation shim (relative path\n// so this resolves both via the Vite plugin and in direct vitest imports)\nimport { toRscUrl, getPrefetchedUrls, storePrefetchResponse } from \"./navigation.js\";\nimport { isDangerousScheme } from \"./url-safety.js\";\nimport { toSameOriginPath } from \"./url-utils.js\";\n\ninterface NavigateEvent {\n url: URL;\n /** Call to prevent the Link's default navigation (e.g. for View Transitions). */\n preventDefault(): void;\n /** Whether preventDefault() has been called. */\n defaultPrevented: boolean;\n}\n\ninterface LinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n href: string | { pathname?: string; query?: Record<string, string> };\n /** URL displayed in the browser (when href is a route pattern like /user/[id]) */\n as?: string;\n /** Replace the current history entry instead of pushing */\n replace?: boolean;\n /** Prefetch the page in the background (default: true, uses IntersectionObserver) */\n prefetch?: boolean;\n /** Whether to pass the href to the child element */\n passHref?: boolean;\n /** Scroll to top on navigation (default: true) */\n scroll?: boolean;\n /** Locale for i18n (used for locale-prefixed URLs) */\n locale?: string | false;\n /** Called before navigation happens (Next.js 16). Return value is ignored. */\n onNavigate?: (event: NavigateEvent) => void;\n children?: React.ReactNode;\n}\n\n// ---------------------------------------------------------------------------\n// useLinkStatus — reports the pending state of a parent <Link> navigation\n// ---------------------------------------------------------------------------\n\ninterface LinkStatusContextValue {\n pending: boolean;\n}\n\nconst LinkStatusContext = createContext<LinkStatusContextValue>({ pending: false });\n\n/**\n * useLinkStatus returns the pending state of the enclosing <Link>.\n * In Next.js, this is used to show loading indicators while a\n * prefetch-triggered navigation is in progress.\n */\nexport function useLinkStatus(): LinkStatusContextValue {\n return useContext(LinkStatusContext);\n}\n\n/** basePath from next.config.js, injected by the plugin at build time */\nconst __basePath: string = process.env.__NEXT_ROUTER_BASEPATH ?? \"\";\n\nfunction resolveHref(href: LinkProps[\"href\"]): string {\n if (typeof href === \"string\") return href;\n let url = href.pathname ?? \"/\";\n if (href.query) {\n const params = new URLSearchParams(href.query);\n url += `?${params.toString()}`;\n }\n return url;\n}\n\n/** Prepend basePath to an internal path for browser URLs / fetches */\nfunction withBasePath(path: string): string {\n if (!__basePath || path.startsWith(\"http://\") || path.startsWith(\"https://\") || path.startsWith(\"//\")) {\n return path;\n }\n return __basePath + path;\n}\n\n/**\n * Check if a href is only a hash change (same pathname, different/added hash).\n * Handles relative hashes like \"#foo\" and \"?query#foo\".\n */\nfunction isHashOnlyChange(href: string): boolean {\n if (href.startsWith(\"#\")) return true;\n try {\n const current = new URL(window.location.href);\n const next = new URL(href, window.location.href);\n return current.pathname === next.pathname && current.search === next.search && next.hash !== \"\";\n } catch {\n return false;\n }\n}\n\n/**\n * Resolve a potentially relative href against the current URL.\n * Handles: \"#hash\", \"?query\", \"?query#hash\", relative paths.\n */\nfunction resolveRelativeHref(href: string): string {\n if (typeof window === \"undefined\") return href;\n // Already absolute\n if (href.startsWith(\"/\") || href.startsWith(\"http://\") || href.startsWith(\"https://\") || href.startsWith(\"//\")) {\n return href;\n }\n // Relative: resolve against current location\n try {\n const resolved = new URL(href, window.location.href);\n return resolved.pathname + resolved.search + resolved.hash;\n } catch {\n return href;\n }\n}\n\n/**\n * Scroll to a hash target element, or to the top if no hash.\n */\nfunction scrollToHash(hash: string): void {\n if (!hash || hash === \"#\") {\n window.scrollTo(0, 0);\n return;\n }\n const id = hash.slice(1); // Remove leading #\n const element = document.getElementById(id);\n if (element) {\n element.scrollIntoView({ behavior: \"auto\" });\n }\n}\n\n// ---------------------------------------------------------------------------\n// Prefetching infrastructure\n// ---------------------------------------------------------------------------\n\n/**\n * Prefetch a URL for faster navigation.\n *\n * For App Router (RSC): fetches the .rsc payload in the background and\n * stores it in an in-memory cache for instant use during navigation.\n * For Pages Router: injects a <link rel=\"prefetch\"> for the page module.\n *\n * Uses `requestIdleCallback` (or `setTimeout` fallback) to avoid blocking\n * the main thread during initial page load.\n */\nfunction prefetchUrl(href: string): void {\n if (typeof window === \"undefined\") return;\n\n // Normalize same-origin absolute URLs to local paths before prefetching\n let prefetchHref = href;\n if (href.startsWith(\"http://\") || href.startsWith(\"https://\") || href.startsWith(\"//\")) {\n const localPath = toSameOriginPath(href);\n if (localPath == null) return; // truly external — don't prefetch\n prefetchHref = localPath;\n }\n\n const fullHref = withBasePath(prefetchHref);\n\n // Don't prefetch the same URL twice (keyed by rscUrl so the browser\n // entry can clear the key when a cache entry is consumed)\n const rscUrl = toRscUrl(fullHref);\n const prefetched = getPrefetchedUrls();\n if (prefetched.has(rscUrl)) return;\n prefetched.add(rscUrl);\n\n const schedule = (window as any).requestIdleCallback ?? ((fn: () => void) => setTimeout(fn, 100));\n\n schedule(() => {\n if (typeof window.__VINEXT_RSC_NAVIGATE__ === \"function\") {\n // App Router: prefetch the RSC payload and store in cache\n fetch(rscUrl, {\n headers: { Accept: \"text/x-component\" },\n credentials: \"include\",\n priority: \"low\" as any,\n // @ts-expect-error — purpose is a valid fetch option in some browsers\n purpose: \"prefetch\",\n }).then((response) => {\n if (response.ok) {\n storePrefetchResponse(rscUrl, response);\n } else {\n // Non-ok response: allow retry on next viewport intersection\n prefetched.delete(rscUrl);\n }\n }).catch(() => {\n // Network error: allow retry on next viewport intersection\n prefetched.delete(rscUrl);\n });\n } else if (window.__NEXT_DATA__?.__vinext?.pageModuleUrl) {\n // Pages Router: inject a prefetch link for the target page module\n // We can't easily resolve the target page's module URL from the Link,\n // so we create a <link rel=\"prefetch\"> for the HTML page which helps\n // the browser's preload scanner.\n const link = document.createElement(\"link\");\n link.rel = \"prefetch\";\n link.href = fullHref;\n link.as = \"document\";\n document.head.appendChild(link);\n }\n });\n}\n\n/**\n * Shared IntersectionObserver for viewport-based prefetching.\n * All Link elements use the same observer to minimize resource usage.\n */\nlet sharedObserver: IntersectionObserver | null = null;\nconst observerCallbacks = new WeakMap<Element, () => void>();\n\nfunction getSharedObserver(): IntersectionObserver | null {\n if (typeof window === \"undefined\" || typeof IntersectionObserver === \"undefined\") return null;\n if (sharedObserver) return sharedObserver;\n\n sharedObserver = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n const callback = observerCallbacks.get(entry.target);\n if (callback) {\n callback();\n // Unobserve after prefetching — only prefetch once\n sharedObserver?.unobserve(entry.target);\n observerCallbacks.delete(entry.target);\n }\n }\n }\n },\n {\n // Start prefetching when the link is within 250px of the viewport.\n // This gives the browser a head start before the user scrolls to it.\n rootMargin: \"250px\",\n },\n );\n\n return sharedObserver;\n}\n\nfunction getDefaultLocale(): string | undefined {\n if (typeof window !== \"undefined\") {\n return window.__VINEXT_DEFAULT_LOCALE__;\n }\n return globalThis.__VINEXT_DEFAULT_LOCALE__;\n}\n\n/**\n * Apply locale prefix to a URL path based on the locale prop.\n * - locale=\"fr\" → prepend /fr (unless it already has a locale prefix)\n * - locale={false} → use the href as-is (no locale prefix, link to default)\n * - locale=undefined → use current locale (href as-is in most cases)\n */\nfunction applyLocaleToHref(href: string, locale: string | false | undefined): string {\n if (locale === false) {\n // Explicit false: no locale prefix\n return href;\n }\n\n if (locale === undefined) {\n // No locale prop: keep current behavior (href as-is)\n return href;\n }\n\n // locale is a string: prepend the locale prefix if not already present\n const defaultLocale = getDefaultLocale();\n // For the default locale, Next.js doesn't add a prefix\n if (locale === defaultLocale) {\n return href;\n }\n\n // Check if href already starts with the locale\n if (href.startsWith(`/${locale}/`) || href === `/${locale}`) {\n return href;\n }\n\n return `/${locale}${href.startsWith(\"/\") ? href : `/${href}`}`;\n}\n\nconst Link = forwardRef<HTMLAnchorElement, LinkProps>(function Link(\n { href, as, replace = false, prefetch: prefetchProp, scroll = true, children, onClick, onNavigate, ...rest },\n forwardedRef,\n) {\n // Extract locale from rest props\n const { locale, ...restWithoutLocale } = rest as any;\n\n // If `as` is provided, use it as the actual URL (legacy Next.js pattern\n // where href is a route pattern like \"/user/[id]\" and as is \"/user/1\")\n const resolvedHref = as ?? resolveHref(href);\n\n const isDangerous =\n typeof resolvedHref === \"string\" && isDangerousScheme(resolvedHref);\n\n // Apply locale prefix if specified (safe even for dangerous hrefs since we\n // won't use the result when isDangerous is true)\n const localizedHref = applyLocaleToHref(\n isDangerous ? \"/\" : resolvedHref,\n locale,\n );\n // Full href with basePath for browser URLs and fetches\n const fullHref = withBasePath(localizedHref);\n\n // Track pending state for useLinkStatus()\n const [pending, setPending] = useState(false);\n const mountedRef = useRef(true);\n useEffect(() => {\n mountedRef.current = true;\n return () => { mountedRef.current = false; };\n }, []);\n\n // Prefetching: observe the element when it enters the viewport.\n // prefetch={false} disables, prefetch={true} or undefined/null (default) enables.\n const internalRef = useRef<HTMLAnchorElement | null>(null);\n const shouldPrefetch = prefetchProp !== false && !isDangerous;\n\n const setRefs = useCallback(\n (node: HTMLAnchorElement | null) => {\n internalRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLAnchorElement | null>).current = node;\n },\n [forwardedRef],\n );\n\n useEffect(() => {\n if (!shouldPrefetch || typeof window === \"undefined\") return;\n const node = internalRef.current;\n if (!node) return;\n\n // Normalize same-origin absolute URLs; skip truly external ones\n let hrefToPrefetch = localizedHref;\n if (localizedHref.startsWith(\"http://\") || localizedHref.startsWith(\"https://\") || localizedHref.startsWith(\"//\")) {\n const localPath = toSameOriginPath(localizedHref);\n if (localPath == null) return; // truly external\n hrefToPrefetch = localPath;\n }\n\n const observer = getSharedObserver();\n if (!observer) return;\n\n observerCallbacks.set(node, () => prefetchUrl(hrefToPrefetch));\n observer.observe(node);\n\n return () => {\n observer.unobserve(node);\n observerCallbacks.delete(node);\n };\n }, [shouldPrefetch, localizedHref]);\n\n const handleClick = async (e: MouseEvent<HTMLAnchorElement>) => {\n if (onClick) onClick(e);\n if (e.defaultPrevented) return;\n\n // Only intercept left clicks without modifiers (standard link behavior)\n if (\n e.button !== 0 ||\n e.metaKey ||\n e.ctrlKey ||\n e.shiftKey ||\n e.altKey\n ) {\n return;\n }\n\n // Don't intercept links with target (e.g. target=\"_blank\")\n if (e.currentTarget.target && e.currentTarget.target !== \"_self\") {\n return;\n }\n\n // External links: let the browser handle it.\n // Same-origin absolute URLs (e.g. http://localhost:3000/about) are\n // normalized to local paths so they get client-side navigation.\n let navigateHref = resolvedHref;\n if (\n resolvedHref.startsWith(\"http://\") ||\n resolvedHref.startsWith(\"https://\") ||\n resolvedHref.startsWith(\"//\")\n ) {\n const localPath = toSameOriginPath(resolvedHref);\n if (localPath == null) return; // truly external\n navigateHref = localPath;\n }\n\n e.preventDefault();\n\n // Call onNavigate callback if provided (Next.js 16 View Transitions support)\n if (onNavigate) {\n try {\n const navUrl = new URL(resolvedHref, window.location.origin);\n let prevented = false;\n const navEvent: NavigateEvent = {\n url: navUrl,\n preventDefault() { prevented = true; },\n get defaultPrevented() { return prevented; },\n };\n onNavigate(navEvent);\n // If the callback called preventDefault(), skip Link's default navigation.\n // The callback is responsible for its own navigation (e.g. via View Transitions API).\n if (navEvent.defaultPrevented) {\n return;\n }\n } catch {\n // Ignore URL parsing errors for relative/hash hrefs\n }\n }\n\n // Save scroll position for back/forward restoration\n if (!replace) {\n const state = window.history.state ?? {};\n window.history.replaceState(\n { ...state, __vinext_scrollX: window.scrollX, __vinext_scrollY: window.scrollY },\n \"\",\n );\n }\n\n // Resolve relative hrefs (#hash, ?query) against current URL\n const absoluteHref = resolveRelativeHref(navigateHref);\n const absoluteFullHref = withBasePath(absoluteHref);\n\n // Hash-only change: update URL and scroll to target, skip RSC fetch\n if (typeof window !== \"undefined\" && isHashOnlyChange(absoluteFullHref)) {\n const hash = absoluteFullHref.includes(\"#\") ? absoluteFullHref.slice(absoluteFullHref.indexOf(\"#\")) : \"\";\n if (replace) {\n window.history.replaceState(null, \"\", absoluteFullHref);\n } else {\n window.history.pushState(null, \"\", absoluteFullHref);\n }\n if (scroll) {\n scrollToHash(hash);\n }\n return;\n }\n\n // Extract hash for scroll-after-navigation\n const hashIdx = absoluteFullHref.indexOf(\"#\");\n const hash = hashIdx !== -1 ? absoluteFullHref.slice(hashIdx) : \"\";\n\n // Try RSC navigation first (App Router), then Pages Router\n if (typeof window.__VINEXT_RSC_NAVIGATE__ === \"function\") {\n // App Router: push/replace history state, then fetch RSC stream.\n // Await the RSC navigate so scroll-to-top happens after the new\n // content is committed to the DOM (prevents flash of old page at top).\n if (replace) {\n window.history.replaceState(null, \"\", absoluteFullHref);\n } else {\n window.history.pushState(null, \"\", absoluteFullHref);\n }\n setPending(true);\n try {\n await window.__VINEXT_RSC_NAVIGATE__(absoluteFullHref);\n } finally {\n if (mountedRef.current) setPending(false);\n }\n } else {\n // Pages Router: use the Router singleton\n try {\n const routerModule = await import(\"next/router\");\n // eslint-disable-next-line -- vinext's Router shim accepts (url, as, options)\n const Router = routerModule.default as any;\n if (replace) {\n await Router.replace(absoluteHref, undefined, { scroll });\n } else {\n await Router.push(absoluteHref, undefined, { scroll });\n }\n } catch {\n // Fallback to hard navigation if router fails\n if (replace) {\n window.history.replaceState({}, \"\", absoluteFullHref);\n } else {\n window.history.pushState({}, \"\", absoluteFullHref);\n }\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n }\n }\n\n if (scroll) {\n if (hash) {\n scrollToHash(hash);\n } else {\n window.scrollTo(0, 0);\n }\n }\n };\n\n // Remove props that shouldn't be on <a>\n const { passHref: _p, ...anchorProps } = restWithoutLocale;\n\n const linkStatusValue = React.useMemo(() => ({ pending }), [pending]);\n\n // Block dangerous URI schemes (javascript:, data:, vbscript:).\n // Render an inert <a> without href to prevent XSS while preserving\n // styling and attributes like className, id, aria-*.\n // This check is placed after all hooks to satisfy the Rules of Hooks.\n if (isDangerous) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(`<Link> blocked dangerous href: ${resolvedHref}`);\n }\n return <a {...anchorProps}>{children}</a>;\n }\n\n return (\n <LinkStatusContext.Provider value={linkStatusValue}>\n <a ref={setRefs} href={fullHref} onClick={handleClick} {...anchorProps}>\n {children}\n </a>\n </LinkStatusContext.Provider>\n );\n});\n\nexport default Link;\n"]}
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/shims/link.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\n/**\n * next/link shim\n *\n * Renders an <a> tag with client-side navigation support.\n * On click, prevents full page reload and triggers client-side\n * page swap via the router's navigation system.\n */\nimport React, {\n forwardRef,\n useRef,\n useEffect,\n useCallback,\n useContext,\n createContext,\n useState,\n type AnchorHTMLAttributes,\n type MouseEvent,\n} from \"react\";\n// Import shared RSC prefetch utilities from navigation shim (relative path\n// so this resolves both via the Vite plugin and in direct vitest imports)\nimport { toRscUrl, getPrefetchedUrls, storePrefetchResponse } from \"./navigation.js\";\nimport { isDangerousScheme } from \"./url-safety.js\";\nimport { toSameOriginPath } from \"./url-utils.js\";\nimport type { VinextNextData } from \"../client/vinext-next-data.js\";\n\ninterface NavigateEvent {\n url: URL;\n /** Call to prevent the Link's default navigation (e.g. for View Transitions). */\n preventDefault(): void;\n /** Whether preventDefault() has been called. */\n defaultPrevented: boolean;\n}\n\ninterface LinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n href: string | { pathname?: string; query?: Record<string, string> };\n /** URL displayed in the browser (when href is a route pattern like /user/[id]) */\n as?: string;\n /** Replace the current history entry instead of pushing */\n replace?: boolean;\n /** Prefetch the page in the background (default: true, uses IntersectionObserver) */\n prefetch?: boolean;\n /** Whether to pass the href to the child element */\n passHref?: boolean;\n /** Scroll to top on navigation (default: true) */\n scroll?: boolean;\n /** Locale for i18n (used for locale-prefixed URLs) */\n locale?: string | false;\n /** Called before navigation happens (Next.js 16). Return value is ignored. */\n onNavigate?: (event: NavigateEvent) => void;\n children?: React.ReactNode;\n}\n\n// ---------------------------------------------------------------------------\n// useLinkStatus — reports the pending state of a parent <Link> navigation\n// ---------------------------------------------------------------------------\n\ninterface LinkStatusContextValue {\n pending: boolean;\n}\n\nconst LinkStatusContext = createContext<LinkStatusContextValue>({ pending: false });\n\n/**\n * useLinkStatus returns the pending state of the enclosing <Link>.\n * In Next.js, this is used to show loading indicators while a\n * prefetch-triggered navigation is in progress.\n */\nexport function useLinkStatus(): LinkStatusContextValue {\n return useContext(LinkStatusContext);\n}\n\n/** basePath from next.config.js, injected by the plugin at build time */\nconst __basePath: string = process.env.__NEXT_ROUTER_BASEPATH ?? \"\";\n\nfunction resolveHref(href: LinkProps[\"href\"]): string {\n if (typeof href === \"string\") return href;\n let url = href.pathname ?? \"/\";\n if (href.query) {\n const params = new URLSearchParams(href.query);\n url += `?${params.toString()}`;\n }\n return url;\n}\n\n/** Prepend basePath to an internal path for browser URLs / fetches */\nfunction withBasePath(path: string): string {\n if (\n !__basePath ||\n path.startsWith(\"http://\") ||\n path.startsWith(\"https://\") ||\n path.startsWith(\"//\")\n ) {\n return path;\n }\n return __basePath + path;\n}\n\n/**\n * Check if a href is only a hash change (same pathname, different/added hash).\n * Handles relative hashes like \"#foo\" and \"?query#foo\".\n */\nfunction isHashOnlyChange(href: string): boolean {\n if (href.startsWith(\"#\")) return true;\n try {\n const current = new URL(window.location.href);\n const next = new URL(href, window.location.href);\n return current.pathname === next.pathname && current.search === next.search && next.hash !== \"\";\n } catch {\n return false;\n }\n}\n\n/**\n * Resolve a potentially relative href against the current URL.\n * Handles: \"#hash\", \"?query\", \"?query#hash\", relative paths.\n */\nfunction resolveRelativeHref(href: string): string {\n if (typeof window === \"undefined\") return href;\n // Already absolute\n if (\n href.startsWith(\"/\") ||\n href.startsWith(\"http://\") ||\n href.startsWith(\"https://\") ||\n href.startsWith(\"//\")\n ) {\n return href;\n }\n // Relative: resolve against current location\n try {\n const resolved = new URL(href, window.location.href);\n return resolved.pathname + resolved.search + resolved.hash;\n } catch {\n return href;\n }\n}\n\n/**\n * Scroll to a hash target element, or to the top if no hash.\n */\nfunction scrollToHash(hash: string): void {\n if (!hash || hash === \"#\") {\n window.scrollTo(0, 0);\n return;\n }\n const id = hash.slice(1); // Remove leading #\n const element = document.getElementById(id);\n if (element) {\n element.scrollIntoView({ behavior: \"auto\" });\n }\n}\n\n// ---------------------------------------------------------------------------\n// Prefetching infrastructure\n// ---------------------------------------------------------------------------\n\n/**\n * Prefetch a URL for faster navigation.\n *\n * For App Router (RSC): fetches the .rsc payload in the background and\n * stores it in an in-memory cache for instant use during navigation.\n * For Pages Router: injects a <link rel=\"prefetch\"> for the page module.\n *\n * Uses `requestIdleCallback` (or `setTimeout` fallback) to avoid blocking\n * the main thread during initial page load.\n */\nfunction prefetchUrl(href: string): void {\n if (typeof window === \"undefined\") return;\n\n // Normalize same-origin absolute URLs to local paths before prefetching\n let prefetchHref = href;\n if (href.startsWith(\"http://\") || href.startsWith(\"https://\") || href.startsWith(\"//\")) {\n const localPath = toSameOriginPath(href);\n if (localPath == null) return; // truly external — don't prefetch\n prefetchHref = localPath;\n }\n\n const fullHref = withBasePath(prefetchHref);\n\n // Don't prefetch the same URL twice (keyed by rscUrl so the browser\n // entry can clear the key when a cache entry is consumed)\n const rscUrl = toRscUrl(fullHref);\n const prefetched = getPrefetchedUrls();\n if (prefetched.has(rscUrl)) return;\n prefetched.add(rscUrl);\n\n const schedule = (window as any).requestIdleCallback ?? ((fn: () => void) => setTimeout(fn, 100));\n\n schedule(() => {\n if (typeof window.__VINEXT_RSC_NAVIGATE__ === \"function\") {\n // App Router: prefetch the RSC payload and store in cache\n fetch(rscUrl, {\n headers: { Accept: \"text/x-component\" },\n credentials: \"include\",\n priority: \"low\" as any,\n // @ts-expect-error — purpose is a valid fetch option in some browsers\n purpose: \"prefetch\",\n })\n .then((response) => {\n if (response.ok) {\n storePrefetchResponse(rscUrl, response);\n } else {\n // Non-ok response: allow retry on next viewport intersection\n prefetched.delete(rscUrl);\n }\n })\n .catch(() => {\n // Network error: allow retry on next viewport intersection\n prefetched.delete(rscUrl);\n });\n } else if ((window.__NEXT_DATA__ as VinextNextData | undefined)?.__vinext?.pageModuleUrl) {\n // Pages Router: inject a prefetch link for the target page module\n // We can't easily resolve the target page's module URL from the Link,\n // so we create a <link rel=\"prefetch\"> for the HTML page which helps\n // the browser's preload scanner.\n const link = document.createElement(\"link\");\n link.rel = \"prefetch\";\n link.href = fullHref;\n link.as = \"document\";\n document.head.appendChild(link);\n }\n });\n}\n\n/**\n * Shared IntersectionObserver for viewport-based prefetching.\n * All Link elements use the same observer to minimize resource usage.\n */\nlet sharedObserver: IntersectionObserver | null = null;\nconst observerCallbacks = new WeakMap<Element, () => void>();\n\nfunction getSharedObserver(): IntersectionObserver | null {\n if (typeof window === \"undefined\" || typeof IntersectionObserver === \"undefined\") return null;\n if (sharedObserver) return sharedObserver;\n\n sharedObserver = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n const callback = observerCallbacks.get(entry.target);\n if (callback) {\n callback();\n // Unobserve after prefetching — only prefetch once\n sharedObserver?.unobserve(entry.target);\n observerCallbacks.delete(entry.target);\n }\n }\n }\n },\n {\n // Start prefetching when the link is within 250px of the viewport.\n // This gives the browser a head start before the user scrolls to it.\n rootMargin: \"250px\",\n },\n );\n\n return sharedObserver;\n}\n\nfunction getDefaultLocale(): string | undefined {\n if (typeof window !== \"undefined\") {\n return window.__VINEXT_DEFAULT_LOCALE__;\n }\n return globalThis.__VINEXT_DEFAULT_LOCALE__;\n}\n\n/**\n * Apply locale prefix to a URL path based on the locale prop.\n * - locale=\"fr\" → prepend /fr (unless it already has a locale prefix)\n * - locale={false} → use the href as-is (no locale prefix, link to default)\n * - locale=undefined → use current locale (href as-is in most cases)\n */\nfunction applyLocaleToHref(href: string, locale: string | false | undefined): string {\n if (locale === false) {\n // Explicit false: no locale prefix\n return href;\n }\n\n if (locale === undefined) {\n // No locale prop: keep current behavior (href as-is)\n return href;\n }\n\n // locale is a string: prepend the locale prefix if not already present\n const defaultLocale = getDefaultLocale();\n // For the default locale, Next.js doesn't add a prefix\n if (locale === defaultLocale) {\n return href;\n }\n\n // Check if href already starts with the locale\n if (href.startsWith(`/${locale}/`) || href === `/${locale}`) {\n return href;\n }\n\n return `/${locale}${href.startsWith(\"/\") ? href : `/${href}`}`;\n}\n\nconst Link = forwardRef<HTMLAnchorElement, LinkProps>(function Link(\n {\n href,\n as,\n replace = false,\n prefetch: prefetchProp,\n scroll = true,\n children,\n onClick,\n onNavigate,\n ...rest\n },\n forwardedRef,\n) {\n // Extract locale from rest props\n const { locale, ...restWithoutLocale } = rest as any;\n\n // If `as` is provided, use it as the actual URL (legacy Next.js pattern\n // where href is a route pattern like \"/user/[id]\" and as is \"/user/1\")\n const resolvedHref = as ?? resolveHref(href);\n\n const isDangerous = typeof resolvedHref === \"string\" && isDangerousScheme(resolvedHref);\n\n // Apply locale prefix if specified (safe even for dangerous hrefs since we\n // won't use the result when isDangerous is true)\n const localizedHref = applyLocaleToHref(isDangerous ? \"/\" : resolvedHref, locale);\n // Full href with basePath for browser URLs and fetches\n const fullHref = withBasePath(localizedHref);\n\n // Track pending state for useLinkStatus()\n const [pending, setPending] = useState(false);\n const mountedRef = useRef(true);\n useEffect(() => {\n mountedRef.current = true;\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n // Prefetching: observe the element when it enters the viewport.\n // prefetch={false} disables, prefetch={true} or undefined/null (default) enables.\n const internalRef = useRef<HTMLAnchorElement | null>(null);\n const shouldPrefetch = prefetchProp !== false && !isDangerous;\n\n const setRefs = useCallback(\n (node: HTMLAnchorElement | null) => {\n internalRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef)\n (forwardedRef as React.MutableRefObject<HTMLAnchorElement | null>).current = node;\n },\n [forwardedRef],\n );\n\n useEffect(() => {\n if (!shouldPrefetch || typeof window === \"undefined\") return;\n const node = internalRef.current;\n if (!node) return;\n\n // Normalize same-origin absolute URLs; skip truly external ones\n let hrefToPrefetch = localizedHref;\n if (\n localizedHref.startsWith(\"http://\") ||\n localizedHref.startsWith(\"https://\") ||\n localizedHref.startsWith(\"//\")\n ) {\n const localPath = toSameOriginPath(localizedHref);\n if (localPath == null) return; // truly external\n hrefToPrefetch = localPath;\n }\n\n const observer = getSharedObserver();\n if (!observer) return;\n\n observerCallbacks.set(node, () => prefetchUrl(hrefToPrefetch));\n observer.observe(node);\n\n return () => {\n observer.unobserve(node);\n observerCallbacks.delete(node);\n };\n }, [shouldPrefetch, localizedHref]);\n\n const handleClick = async (e: MouseEvent<HTMLAnchorElement>) => {\n if (onClick) onClick(e);\n if (e.defaultPrevented) return;\n\n // Only intercept left clicks without modifiers (standard link behavior)\n if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) {\n return;\n }\n\n // Don't intercept links with target (e.g. target=\"_blank\")\n if (e.currentTarget.target && e.currentTarget.target !== \"_self\") {\n return;\n }\n\n // External links: let the browser handle it.\n // Same-origin absolute URLs (e.g. http://localhost:3000/about) are\n // normalized to local paths so they get client-side navigation.\n let navigateHref = localizedHref;\n if (\n resolvedHref.startsWith(\"http://\") ||\n resolvedHref.startsWith(\"https://\") ||\n resolvedHref.startsWith(\"//\")\n ) {\n const localPath = toSameOriginPath(resolvedHref);\n if (localPath == null) return; // truly external\n navigateHref = localPath;\n }\n\n e.preventDefault();\n\n // Call onNavigate callback if provided (Next.js 16 View Transitions support)\n if (onNavigate) {\n try {\n const navUrl = new URL(localizedHref, window.location.origin);\n let prevented = false;\n const navEvent: NavigateEvent = {\n url: navUrl,\n preventDefault() {\n prevented = true;\n },\n get defaultPrevented() {\n return prevented;\n },\n };\n onNavigate(navEvent);\n // If the callback called preventDefault(), skip Link's default navigation.\n // The callback is responsible for its own navigation (e.g. via View Transitions API).\n if (navEvent.defaultPrevented) {\n return;\n }\n } catch {\n // Ignore URL parsing errors for relative/hash hrefs\n }\n }\n\n // Save scroll position for back/forward restoration\n if (!replace) {\n const state = window.history.state ?? {};\n window.history.replaceState(\n { ...state, __vinext_scrollX: window.scrollX, __vinext_scrollY: window.scrollY },\n \"\",\n );\n }\n\n // Resolve relative hrefs (#hash, ?query) against current URL\n const absoluteHref = resolveRelativeHref(navigateHref);\n const absoluteFullHref = withBasePath(absoluteHref);\n\n // Hash-only change: update URL and scroll to target, skip RSC fetch\n if (typeof window !== \"undefined\" && isHashOnlyChange(absoluteFullHref)) {\n const hash = absoluteFullHref.includes(\"#\")\n ? absoluteFullHref.slice(absoluteFullHref.indexOf(\"#\"))\n : \"\";\n if (replace) {\n window.history.replaceState(null, \"\", absoluteFullHref);\n } else {\n window.history.pushState(null, \"\", absoluteFullHref);\n }\n if (scroll) {\n scrollToHash(hash);\n }\n return;\n }\n\n // Extract hash for scroll-after-navigation\n const hashIdx = absoluteFullHref.indexOf(\"#\");\n const hash = hashIdx !== -1 ? absoluteFullHref.slice(hashIdx) : \"\";\n\n // Try RSC navigation first (App Router), then Pages Router\n if (typeof window.__VINEXT_RSC_NAVIGATE__ === \"function\") {\n // App Router: push/replace history state, then fetch RSC stream.\n // Await the RSC navigate so scroll-to-top happens after the new\n // content is committed to the DOM (prevents flash of old page at top).\n if (replace) {\n window.history.replaceState(null, \"\", absoluteFullHref);\n } else {\n window.history.pushState(null, \"\", absoluteFullHref);\n }\n setPending(true);\n try {\n await window.__VINEXT_RSC_NAVIGATE__(absoluteFullHref);\n } finally {\n if (mountedRef.current) setPending(false);\n }\n } else {\n // Pages Router: use the Router singleton\n try {\n const routerModule = await import(\"next/router\");\n // eslint-disable-next-line -- vinext's Router shim accepts (url, as, options)\n const Router = routerModule.default as any;\n if (replace) {\n await Router.replace(absoluteHref, undefined, { scroll });\n } else {\n await Router.push(absoluteHref, undefined, { scroll });\n }\n } catch {\n // Fallback to hard navigation if router fails\n if (replace) {\n window.history.replaceState({}, \"\", absoluteFullHref);\n } else {\n window.history.pushState({}, \"\", absoluteFullHref);\n }\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n }\n }\n\n if (scroll) {\n if (hash) {\n scrollToHash(hash);\n } else {\n window.scrollTo(0, 0);\n }\n }\n };\n\n // Remove props that shouldn't be on <a>\n const { passHref: _p, ...anchorProps } = restWithoutLocale;\n\n const linkStatusValue = React.useMemo(() => ({ pending }), [pending]);\n\n // Block dangerous URI schemes (javascript:, data:, vbscript:).\n // Render an inert <a> without href to prevent XSS while preserving\n // styling and attributes like className, id, aria-*.\n // This check is placed after all hooks to satisfy the Rules of Hooks.\n if (isDangerous) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(`<Link> blocked dangerous href: ${resolvedHref}`);\n }\n return <a {...anchorProps}>{children}</a>;\n }\n\n return (\n <LinkStatusContext.Provider value={linkStatusValue}>\n <a ref={setRefs} href={fullHref} onClick={handleClick} {...anchorProps}>\n {children}\n </a>\n </LinkStatusContext.Provider>\n );\n});\n\nexport default Link;\n"]}
@@ -71,7 +71,12 @@ export interface Metadata {
71
71
  description?: string;
72
72
  url?: string;
73
73
  siteName?: string;
74
- images?: string | Array<{
74
+ images?: string | {
75
+ url: string;
76
+ width?: number;
77
+ height?: number;
78
+ alt?: string;
79
+ } | Array<string | {
75
80
  url: string;
76
81
  width?: number;
77
82
  height?: number;
@@ -97,7 +102,12 @@ export interface Metadata {
97
102
  siteId?: string;
98
103
  title?: string;
99
104
  description?: string;
100
- images?: string | string[] | Array<{
105
+ images?: string | {
106
+ url: string;
107
+ alt?: string;
108
+ width?: number;
109
+ height?: number;
110
+ } | Array<string | {
101
111
  url: string;
102
112
  alt?: string;
103
113
  width?: number;
@@ -173,8 +183,14 @@ export declare function mergeMetadata(metadataList: Metadata[]): Metadata;
173
183
  /**
174
184
  * Resolve metadata from a module. Handles both static `metadata` export
175
185
  * and async `generateMetadata()` function.
186
+ *
187
+ * @param parent - A Promise that resolves to the accumulated (merged) metadata
188
+ * from all ancestor segments. Passed as the second argument to
189
+ * `generateMetadata()`, matching Next.js's eager-execution-with-serial-
190
+ * resolution approach. If not provided, defaults to a promise that resolves
191
+ * to an empty object (so `await parent` never throws).
176
192
  */
177
- export declare function resolveModuleMetadata(mod: Record<string, unknown>, params: Record<string, string | string[]>, searchParams?: Record<string, string>): Promise<Metadata | null>;
193
+ export declare function resolveModuleMetadata(mod: Record<string, unknown>, params?: Record<string, string | string[]>, searchParams?: Record<string, string>, parent?: Promise<Metadata>): Promise<Metadata | null>;
178
194
  /**
179
195
  * React component that renders metadata as HTML head elements.
180
196
  * Used by the RSC entry to inject into the <head>.
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/shims/metadata.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/shims/metadata.tsx"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
4
4
  // ---------------------------------------------------------------------------
5
5
  /**
6
6
  * Normalize null-prototype objects from matchPattern() into thenable objects.
7
- * See app-dev-server.ts makeThenableParams() for full explanation.
7
+ * See entries/app-rsc-entry.ts makeThenableParams() for full explanation.
8
8
  */
9
9
  function makeThenableParams(obj) {
10
10
  const plain = { ...obj };
@@ -145,15 +145,21 @@ export function mergeMetadata(metadataList) {
145
145
  /**
146
146
  * Resolve metadata from a module. Handles both static `metadata` export
147
147
  * and async `generateMetadata()` function.
148
+ *
149
+ * @param parent - A Promise that resolves to the accumulated (merged) metadata
150
+ * from all ancestor segments. Passed as the second argument to
151
+ * `generateMetadata()`, matching Next.js's eager-execution-with-serial-
152
+ * resolution approach. If not provided, defaults to a promise that resolves
153
+ * to an empty object (so `await parent` never throws).
148
154
  */
149
- export async function resolveModuleMetadata(mod, params, searchParams) {
155
+ export async function resolveModuleMetadata(mod, params = {}, searchParams, parent = Promise.resolve({})) {
150
156
  if (typeof mod.generateMetadata === "function") {
151
157
  // Next.js 16 passes params/searchParams as Promises (async pattern).
152
158
  // makeThenableParams() normalises null-prototype + preserves sync access.
153
159
  const asyncParams = makeThenableParams(params);
154
160
  const sp = searchParams ?? {};
155
161
  const asyncSp = makeThenableParams(sp);
156
- return await mod.generateMetadata({ params: asyncParams, searchParams: asyncSp });
162
+ return await mod.generateMetadata({ params: asyncParams, searchParams: asyncSp }, parent);
157
163
  }
158
164
  if (mod.metadata && typeof mod.metadata === "object") {
159
165
  return mod.metadata;
@@ -210,16 +216,12 @@ export function MetadataHead({ metadata }) {
210
216
  }
211
217
  // Keywords
212
218
  if (metadata.keywords) {
213
- const kw = Array.isArray(metadata.keywords)
214
- ? metadata.keywords.join(",")
215
- : metadata.keywords;
219
+ const kw = Array.isArray(metadata.keywords) ? metadata.keywords.join(",") : metadata.keywords;
216
220
  elements.push(_jsx("meta", { name: "keywords", content: kw }, key++));
217
221
  }
218
222
  // Authors
219
223
  if (metadata.authors) {
220
- const authorList = Array.isArray(metadata.authors)
221
- ? metadata.authors
222
- : [metadata.authors];
224
+ const authorList = Array.isArray(metadata.authors) ? metadata.authors : [metadata.authors];
223
225
  for (const author of authorList) {
224
226
  if (author.name) {
225
227
  elements.push(_jsx("meta", { name: "author", content: author.name }, key++));
@@ -320,7 +322,11 @@ export function MetadataHead({ metadata }) {
320
322
  }
321
323
  }
322
324
  if (og.images) {
323
- const imgList = typeof og.images === "string" ? [{ url: og.images }] : og.images;
325
+ const imgList = typeof og.images === "string"
326
+ ? [{ url: og.images }]
327
+ : Array.isArray(og.images)
328
+ ? og.images
329
+ : [og.images];
324
330
  for (const img of imgList) {
325
331
  const imgUrl = typeof img === "string" ? img : img.url;
326
332
  elements.push(_jsx("meta", { property: "og:image", content: resolveUrl(imgUrl) ?? imgUrl }, key++));
@@ -369,7 +375,9 @@ export function MetadataHead({ metadata }) {
369
375
  if (tw.images) {
370
376
  const imgList = typeof tw.images === "string"
371
377
  ? [tw.images]
372
- : Array.isArray(tw.images) ? tw.images : [];
378
+ : Array.isArray(tw.images)
379
+ ? tw.images
380
+ : [tw.images];
373
381
  for (const img of imgList) {
374
382
  const imgUrl = typeof img === "string" ? img : img.url;
375
383
  elements.push(_jsx("meta", { name: "twitter:image", content: resolveUrl(imgUrl) ?? imgUrl }, key++));
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/shims/metadata.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Metadata support for App Router.\n *\n * Handles `export const metadata` and `export async function generateMetadata()`.\n * Resolves metadata from layouts and pages (pages override layouts).\n */\nimport React from \"react\";\n\n// ---------------------------------------------------------------------------\n// Viewport types and resolution\n// ---------------------------------------------------------------------------\n\n/**\n * Normalize null-prototype objects from matchPattern() into thenable objects.\n * See app-dev-server.ts makeThenableParams() for full explanation.\n */\nfunction makeThenableParams<T extends Record<string, unknown>>(obj: T): Promise<T> & T {\n const plain = { ...obj } as T;\n return Object.assign(Promise.resolve(plain), plain);\n}\n\nexport interface Viewport {\n /** Viewport width (default: \"device-width\") */\n width?: string | number;\n /** Viewport height */\n height?: string | number;\n /** Initial scale */\n initialScale?: number;\n /** Minimum scale */\n minimumScale?: number;\n /** Maximum scale */\n maximumScale?: number;\n /** Whether user can scale */\n userScalable?: boolean;\n /** Theme color — single color or array of { media, color } */\n themeColor?:\n | string\n | Array<{ media?: string; color: string }>;\n /** Color scheme: 'light' | 'dark' | 'light dark' | 'normal' */\n colorScheme?: string;\n}\n\n/**\n * Resolve viewport config from a module. Handles both static `viewport` export\n * and async `generateViewport()` function.\n */\nexport async function resolveModuleViewport(\n mod: Record<string, unknown>,\n params: Record<string, string | string[]>,\n): Promise<Viewport | null> {\n if (typeof mod.generateViewport === \"function\") {\n const asyncParams = makeThenableParams(params);\n return await mod.generateViewport({ params: asyncParams });\n }\n if (mod.viewport && typeof mod.viewport === \"object\") {\n return mod.viewport as Viewport;\n }\n return null;\n}\n\n/**\n * Merge viewport configs from multiple sources (layouts + page).\n * Later entries override earlier ones.\n */\nexport const DEFAULT_VIEWPORT: Viewport = {\n width: \"device-width\",\n initialScale: 1,\n};\n\nexport function mergeViewport(viewportList: Viewport[]): Viewport {\n const merged: Viewport = { ...DEFAULT_VIEWPORT };\n for (const vp of viewportList) {\n Object.assign(merged, vp);\n }\n return merged;\n}\n\n/**\n * React component that renders viewport meta tags into <head>.\n */\nexport function ViewportHead({ viewport }: { viewport: Viewport }) {\n const elements: React.ReactElement[] = [];\n let key = 0;\n\n // Build viewport content string\n const parts: string[] = [];\n if (viewport.width !== undefined) parts.push(`width=${viewport.width}`);\n if (viewport.height !== undefined) parts.push(`height=${viewport.height}`);\n if (viewport.initialScale !== undefined) parts.push(`initial-scale=${viewport.initialScale}`);\n if (viewport.minimumScale !== undefined) parts.push(`minimum-scale=${viewport.minimumScale}`);\n if (viewport.maximumScale !== undefined) parts.push(`maximum-scale=${viewport.maximumScale}`);\n if (viewport.userScalable !== undefined) parts.push(`user-scalable=${viewport.userScalable ? \"yes\" : \"no\"}`);\n\n if (parts.length > 0) {\n elements.push(\n <meta key={key++} name=\"viewport\" content={parts.join(\", \")} />,\n );\n }\n\n // Theme color\n if (viewport.themeColor) {\n if (typeof viewport.themeColor === \"string\") {\n elements.push(\n <meta key={key++} name=\"theme-color\" content={viewport.themeColor} />,\n );\n } else if (Array.isArray(viewport.themeColor)) {\n for (const entry of viewport.themeColor) {\n elements.push(\n <meta\n key={key++}\n name=\"theme-color\"\n content={entry.color}\n {...(entry.media ? { media: entry.media } : {})}\n />,\n );\n }\n }\n }\n\n // Color scheme\n if (viewport.colorScheme) {\n elements.push(\n <meta key={key++} name=\"color-scheme\" content={viewport.colorScheme} />,\n );\n }\n\n return <>{elements}</>;\n}\n\n// ---------------------------------------------------------------------------\n// Metadata types and resolution\n// ---------------------------------------------------------------------------\n\nexport interface Metadata {\n title?: string | { default?: string; template?: string; absolute?: string };\n description?: string;\n generator?: string;\n applicationName?: string;\n referrer?: string;\n keywords?: string | string[];\n authors?: Array<{ name?: string; url?: string }> | { name?: string; url?: string };\n creator?: string;\n publisher?: string;\n robots?: string | { index?: boolean; follow?: boolean; googleBot?: string | { index?: boolean; follow?: boolean; [key: string]: unknown }; [key: string]: unknown };\n openGraph?: {\n title?: string;\n description?: string;\n url?: string;\n siteName?: string;\n images?: string | Array<{ url: string; width?: number; height?: number; alt?: string }>;\n videos?: Array<{ url: string; width?: number; height?: number }>;\n audio?: Array<{ url: string }>;\n locale?: string;\n type?: string;\n publishedTime?: string;\n modifiedTime?: string;\n authors?: string[];\n };\n twitter?: {\n card?: string;\n site?: string;\n siteId?: string;\n title?: string;\n description?: string;\n images?: string | string[] | Array<{ url: string; alt?: string; width?: number; height?: number }>;\n creator?: string;\n creatorId?: string;\n };\n icons?: {\n icon?: string | Array<{ url: string; sizes?: string; type?: string; media?: string }>;\n shortcut?: string | string[];\n apple?: string | Array<{ url: string; sizes?: string; type?: string }>;\n other?: Array<{ rel: string; url: string; sizes?: string; type?: string }>;\n };\n manifest?: string;\n alternates?: {\n canonical?: string;\n languages?: Record<string, string>;\n media?: Record<string, string>;\n types?: Record<string, string>;\n };\n verification?: {\n google?: string;\n yahoo?: string;\n yandex?: string;\n other?: Record<string, string | string[]>;\n };\n metadataBase?: URL | null;\n appleWebApp?: {\n capable?: boolean;\n title?: string;\n statusBarStyle?: string;\n startupImage?: string | Array<{ url: string; media?: string }>;\n };\n formatDetection?: {\n email?: boolean;\n address?: boolean;\n telephone?: boolean;\n };\n category?: string;\n other?: Record<string, string | string[]>;\n [key: string]: unknown;\n}\n\n/**\n * Merge metadata from multiple sources (layouts + page).\n *\n * The list is ordered [rootLayout, nestedLayout, ..., page].\n * Title template from layouts applies to the page title but NOT to\n * the segment that defines the template itself. `title.absolute`\n * skips all templates. `title.default` is the fallback when no\n * child provides a title.\n *\n * Shallow merge: later entries override earlier ones (per Next.js docs).\n */\nexport function mergeMetadata(metadataList: Metadata[]): Metadata {\n if (metadataList.length === 0) return {};\n\n const merged: Metadata = {};\n\n // Track the most recent title template from LAYOUTS (not from page).\n // The page is always the last entry in metadataList.\n let parentTemplate: string | undefined;\n\n for (let i = 0; i < metadataList.length; i++) {\n const meta = metadataList[i];\n const isPage = i === metadataList.length - 1;\n\n // Collect template from layouts only (page templates are ignored per Next.js spec)\n if (!isPage && meta.title && typeof meta.title === \"object\" && meta.title.template) {\n parentTemplate = meta.title.template;\n }\n\n // Shallow merge — later entries override earlier for top-level keys\n for (const key of Object.keys(meta)) {\n if (key === \"title\") continue; // Handle title separately below\n (merged as Record<string, unknown>)[key] = (meta as Record<string, unknown>)[key];\n }\n\n // Title resolution\n if (meta.title !== undefined) {\n merged.title = meta.title;\n }\n }\n\n // Now resolve the final title, applying the parent template if applicable\n const finalTitle = merged.title;\n if (finalTitle) {\n if (typeof finalTitle === \"string\") {\n // Simple string title — apply parent template\n if (parentTemplate) {\n merged.title = parentTemplate.replace(\"%s\", finalTitle);\n }\n } else if (typeof finalTitle === \"object\") {\n if (finalTitle.absolute) {\n // Absolute title — skip all templates\n merged.title = finalTitle.absolute;\n } else if (finalTitle.default) {\n // Title object with default — this is used when the segment IS the\n // defining layout (its own default doesn't get template-wrapped)\n merged.title = finalTitle.default;\n } else if (finalTitle.template && !finalTitle.default && !finalTitle.absolute) {\n // Template only with no default — no title to render\n merged.title = undefined;\n }\n }\n }\n\n return merged;\n}\n\n/**\n * Resolve metadata from a module. Handles both static `metadata` export\n * and async `generateMetadata()` function.\n */\nexport async function resolveModuleMetadata(\n mod: Record<string, unknown>,\n params: Record<string, string | string[]>,\n searchParams?: Record<string, string>,\n): Promise<Metadata | null> {\n if (typeof mod.generateMetadata === \"function\") {\n // Next.js 16 passes params/searchParams as Promises (async pattern).\n // makeThenableParams() normalises null-prototype + preserves sync access.\n const asyncParams = makeThenableParams(params);\n const sp = searchParams ?? {};\n const asyncSp = makeThenableParams(sp);\n return await mod.generateMetadata({ params: asyncParams, searchParams: asyncSp });\n }\n if (mod.metadata && typeof mod.metadata === \"object\") {\n return mod.metadata as Metadata;\n }\n return null;\n}\n\n/**\n * React component that renders metadata as HTML head elements.\n * Used by the RSC entry to inject into the <head>.\n */\nexport function MetadataHead({ metadata }: { metadata: Metadata }) {\n const elements: React.ReactElement[] = [];\n let key = 0;\n\n // Resolve metadataBase for URL composition\n const base = metadata.metadataBase;\n function resolveUrl(url: string | undefined): string | undefined {\n if (!url) return undefined;\n if (!base) return url;\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\") || url.startsWith(\"//\")) return url;\n try {\n return new URL(url, base).toString();\n } catch {\n return url;\n }\n }\n\n // Title\n const title =\n typeof metadata.title === \"string\"\n ? metadata.title\n : typeof metadata.title === \"object\"\n ? metadata.title.absolute || metadata.title.default\n : undefined;\n if (title) {\n elements.push(<title key={key++}>{title}</title>);\n }\n\n // Description\n if (metadata.description) {\n elements.push(\n <meta key={key++} name=\"description\" content={metadata.description} />,\n );\n }\n\n // Generator\n if (metadata.generator) {\n elements.push(<meta key={key++} name=\"generator\" content={metadata.generator} />);\n }\n\n // Application name\n if (metadata.applicationName) {\n elements.push(<meta key={key++} name=\"application-name\" content={metadata.applicationName} />);\n }\n\n // Referrer\n if (metadata.referrer) {\n elements.push(<meta key={key++} name=\"referrer\" content={metadata.referrer} />);\n }\n\n // Keywords\n if (metadata.keywords) {\n const kw = Array.isArray(metadata.keywords)\n ? metadata.keywords.join(\",\")\n : metadata.keywords;\n elements.push(<meta key={key++} name=\"keywords\" content={kw} />);\n }\n\n // Authors\n if (metadata.authors) {\n const authorList = Array.isArray(metadata.authors)\n ? metadata.authors\n : [metadata.authors];\n for (const author of authorList) {\n if (author.name) {\n elements.push(<meta key={key++} name=\"author\" content={author.name} />);\n }\n if (author.url) {\n elements.push(<link key={key++} rel=\"author\" href={author.url} />);\n }\n }\n }\n\n // Creator\n if (metadata.creator) {\n elements.push(<meta key={key++} name=\"creator\" content={metadata.creator} />);\n }\n\n // Publisher\n if (metadata.publisher) {\n elements.push(<meta key={key++} name=\"publisher\" content={metadata.publisher} />);\n }\n\n // Format detection\n if (metadata.formatDetection) {\n const parts: string[] = [];\n if (metadata.formatDetection.telephone === false) parts.push(\"telephone=no\");\n if (metadata.formatDetection.address === false) parts.push(\"address=no\");\n if (metadata.formatDetection.email === false) parts.push(\"email=no\");\n if (parts.length > 0) {\n elements.push(<meta key={key++} name=\"format-detection\" content={parts.join(\", \")} />);\n }\n }\n\n // Category\n if (metadata.category) {\n elements.push(<meta key={key++} name=\"category\" content={metadata.category} />);\n }\n\n // Robots\n if (metadata.robots) {\n if (typeof metadata.robots === \"string\") {\n elements.push(<meta key={key++} name=\"robots\" content={metadata.robots} />);\n } else {\n const { googleBot, ...robotsRest } = metadata.robots;\n const robotParts: string[] = [];\n for (const [k, v] of Object.entries(robotsRest)) {\n if (v === true) robotParts.push(k);\n else if (v === false) robotParts.push(`no${k}`);\n else if (typeof v === \"string\" || typeof v === \"number\") robotParts.push(`${k}:${v}`);\n }\n if (robotParts.length > 0) {\n elements.push(<meta key={key++} name=\"robots\" content={robotParts.join(\", \")} />);\n }\n // googlebot\n if (googleBot) {\n if (typeof googleBot === \"string\") {\n elements.push(<meta key={key++} name=\"googlebot\" content={googleBot} />);\n } else {\n const gbParts: string[] = [];\n for (const [k, v] of Object.entries(googleBot)) {\n if (v === true) gbParts.push(k);\n else if (v === false) gbParts.push(`no${k}`);\n else if (typeof v === \"string\" || typeof v === \"number\") gbParts.push(`${k}:${v}`);\n }\n if (gbParts.length > 0) {\n elements.push(<meta key={key++} name=\"googlebot\" content={gbParts.join(\", \")} />);\n }\n }\n }\n }\n }\n\n // Open Graph\n if (metadata.openGraph) {\n const og = metadata.openGraph;\n if (og.title)\n elements.push(<meta key={key++} property=\"og:title\" content={og.title} />);\n if (og.description)\n elements.push(<meta key={key++} property=\"og:description\" content={og.description} />);\n if (og.url)\n elements.push(<meta key={key++} property=\"og:url\" content={resolveUrl(og.url) ?? og.url} />);\n if (og.siteName)\n elements.push(<meta key={key++} property=\"og:site_name\" content={og.siteName} />);\n if (og.type)\n elements.push(<meta key={key++} property=\"og:type\" content={og.type} />);\n if (og.locale)\n elements.push(<meta key={key++} property=\"og:locale\" content={og.locale} />);\n if (og.publishedTime)\n elements.push(<meta key={key++} property=\"article:published_time\" content={og.publishedTime} />);\n if (og.modifiedTime)\n elements.push(<meta key={key++} property=\"article:modified_time\" content={og.modifiedTime} />);\n if (og.authors) {\n for (const author of og.authors) {\n elements.push(<meta key={key++} property=\"article:author\" content={author} />);\n }\n }\n if (og.images) {\n const imgList = typeof og.images === \"string\" ? [{ url: og.images }] : og.images;\n for (const img of imgList) {\n const imgUrl = typeof img === \"string\" ? img : img.url;\n elements.push(<meta key={key++} property=\"og:image\" content={resolveUrl(imgUrl) ?? imgUrl} />);\n if (typeof img !== \"string\") {\n if (img.width)\n elements.push(<meta key={key++} property=\"og:image:width\" content={String(img.width)} />);\n if (img.height)\n elements.push(<meta key={key++} property=\"og:image:height\" content={String(img.height)} />);\n if (img.alt)\n elements.push(<meta key={key++} property=\"og:image:alt\" content={img.alt} />);\n }\n }\n }\n if (og.videos) {\n for (const video of og.videos) {\n elements.push(<meta key={key++} property=\"og:video\" content={resolveUrl(video.url) ?? video.url} />);\n if (video.width) elements.push(<meta key={key++} property=\"og:video:width\" content={String(video.width)} />);\n if (video.height) elements.push(<meta key={key++} property=\"og:video:height\" content={String(video.height)} />);\n }\n }\n if (og.audio) {\n for (const audio of og.audio) {\n elements.push(<meta key={key++} property=\"og:audio\" content={resolveUrl(audio.url) ?? audio.url} />);\n }\n }\n }\n\n // Twitter\n if (metadata.twitter) {\n const tw = metadata.twitter;\n if (tw.card)\n elements.push(<meta key={key++} name=\"twitter:card\" content={tw.card} />);\n if (tw.site)\n elements.push(<meta key={key++} name=\"twitter:site\" content={tw.site} />);\n if (tw.siteId)\n elements.push(<meta key={key++} name=\"twitter:site:id\" content={tw.siteId} />);\n if (tw.title)\n elements.push(<meta key={key++} name=\"twitter:title\" content={tw.title} />);\n if (tw.description)\n elements.push(<meta key={key++} name=\"twitter:description\" content={tw.description} />);\n if (tw.creator)\n elements.push(<meta key={key++} name=\"twitter:creator\" content={tw.creator} />);\n if (tw.creatorId)\n elements.push(<meta key={key++} name=\"twitter:creator:id\" content={tw.creatorId} />);\n if (tw.images) {\n const imgList = typeof tw.images === \"string\"\n ? [tw.images]\n : Array.isArray(tw.images) ? tw.images : [];\n for (const img of imgList) {\n const imgUrl = typeof img === \"string\" ? img : img.url;\n elements.push(<meta key={key++} name=\"twitter:image\" content={resolveUrl(imgUrl) ?? imgUrl} />);\n if (typeof img !== \"string\" && img.alt) {\n elements.push(<meta key={key++} name=\"twitter:image:alt\" content={img.alt} />);\n }\n }\n }\n }\n\n // Icons\n if (metadata.icons) {\n const { icon, shortcut, apple, other } = metadata.icons;\n // Shortcut icon\n if (shortcut) {\n const shortcuts = Array.isArray(shortcut) ? shortcut : [shortcut];\n for (const s of shortcuts) {\n elements.push(<link key={key++} rel=\"shortcut icon\" href={resolveUrl(s) ?? s} />);\n }\n }\n // Icon\n if (icon) {\n const icons = typeof icon === \"string\" ? [{ url: icon }] : icon;\n for (const i of icons) {\n elements.push(\n <link\n key={key++}\n rel=\"icon\"\n href={resolveUrl(i.url) ?? i.url}\n {...(i.sizes ? { sizes: i.sizes } : {})}\n {...(i.type ? { type: i.type } : {})}\n {...(i.media ? { media: i.media } : {})}\n />,\n );\n }\n }\n // Apple touch icon\n if (apple) {\n const apples = typeof apple === \"string\" ? [{ url: apple }] : apple;\n for (const a of apples) {\n elements.push(\n <link\n key={key++}\n rel=\"apple-touch-icon\"\n href={resolveUrl(a.url) ?? a.url}\n {...(a.sizes ? { sizes: a.sizes } : {})}\n {...(a.type ? { type: a.type } : {})}\n />,\n );\n }\n }\n // Other custom icon relations\n if (other) {\n for (const o of other) {\n elements.push(\n <link key={key++} rel={o.rel} href={resolveUrl(o.url) ?? o.url} {...(o.sizes ? { sizes: o.sizes } : {})} />,\n );\n }\n }\n }\n\n // Manifest\n if (metadata.manifest) {\n elements.push(<link key={key++} rel=\"manifest\" href={resolveUrl(metadata.manifest) ?? metadata.manifest} />);\n }\n\n // Alternates\n if (metadata.alternates) {\n const alt = metadata.alternates;\n if (alt.canonical) {\n elements.push(<link key={key++} rel=\"canonical\" href={resolveUrl(alt.canonical) ?? alt.canonical} />);\n }\n if (alt.languages) {\n for (const [lang, href] of Object.entries(alt.languages)) {\n elements.push(<link key={key++} rel=\"alternate\" hrefLang={lang} href={resolveUrl(href) ?? href} />);\n }\n }\n if (alt.media) {\n for (const [media, href] of Object.entries(alt.media)) {\n elements.push(<link key={key++} rel=\"alternate\" media={media} href={resolveUrl(href) ?? href} />);\n }\n }\n if (alt.types) {\n for (const [type, href] of Object.entries(alt.types)) {\n elements.push(<link key={key++} rel=\"alternate\" type={type} href={resolveUrl(href) ?? href} />);\n }\n }\n }\n\n // Verification\n if (metadata.verification) {\n const v = metadata.verification;\n if (v.google) elements.push(<meta key={key++} name=\"google-site-verification\" content={v.google} />);\n if (v.yahoo) elements.push(<meta key={key++} name=\"y_key\" content={v.yahoo} />);\n if (v.yandex) elements.push(<meta key={key++} name=\"yandex-verification\" content={v.yandex} />);\n if (v.other) {\n for (const [name, content] of Object.entries(v.other)) {\n const values = Array.isArray(content) ? content : [content];\n for (const val of values) {\n elements.push(<meta key={key++} name={name} content={val} />);\n }\n }\n }\n }\n\n // Apple Web App\n if (metadata.appleWebApp) {\n const awa = metadata.appleWebApp;\n if (awa.capable !== false) {\n elements.push(<meta key={key++} name=\"mobile-web-app-capable\" content=\"yes\" />);\n }\n if (awa.title) {\n elements.push(<meta key={key++} name=\"apple-mobile-web-app-title\" content={awa.title} />);\n }\n if (awa.statusBarStyle) {\n elements.push(<meta key={key++} name=\"apple-mobile-web-app-status-bar-style\" content={awa.statusBarStyle} />);\n }\n if (awa.startupImage) {\n const imgs = typeof awa.startupImage === \"string\" ? [{ url: awa.startupImage }] : awa.startupImage;\n for (const img of imgs) {\n elements.push(\n <link\n key={key++}\n rel=\"apple-touch-startup-image\"\n href={resolveUrl(img.url) ?? img.url}\n {...(img.media ? { media: img.media } : {})}\n />,\n );\n }\n }\n }\n\n // Other custom meta tags\n if (metadata.other) {\n for (const [name, content] of Object.entries(metadata.other)) {\n const values = Array.isArray(content) ? content : [content];\n for (const val of values) {\n elements.push(<meta key={key++} name={name} content={val} />);\n }\n }\n }\n\n return <>{elements}</>;\n}\n"]}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/shims/metadata.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Metadata support for App Router.\n *\n * Handles `export const metadata` and `export async function generateMetadata()`.\n * Resolves metadata from layouts and pages (pages override layouts).\n */\nimport React from \"react\";\n\n// ---------------------------------------------------------------------------\n// Viewport types and resolution\n// ---------------------------------------------------------------------------\n\n/**\n * Normalize null-prototype objects from matchPattern() into thenable objects.\n * See entries/app-rsc-entry.ts makeThenableParams() for full explanation.\n */\nfunction makeThenableParams<T extends Record<string, unknown>>(obj: T): Promise<T> & T {\n const plain = { ...obj } as T;\n return Object.assign(Promise.resolve(plain), plain);\n}\n\nexport interface Viewport {\n /** Viewport width (default: \"device-width\") */\n width?: string | number;\n /** Viewport height */\n height?: string | number;\n /** Initial scale */\n initialScale?: number;\n /** Minimum scale */\n minimumScale?: number;\n /** Maximum scale */\n maximumScale?: number;\n /** Whether user can scale */\n userScalable?: boolean;\n /** Theme color — single color or array of { media, color } */\n themeColor?: string | Array<{ media?: string; color: string }>;\n /** Color scheme: 'light' | 'dark' | 'light dark' | 'normal' */\n colorScheme?: string;\n}\n\n/**\n * Resolve viewport config from a module. Handles both static `viewport` export\n * and async `generateViewport()` function.\n */\nexport async function resolveModuleViewport(\n mod: Record<string, unknown>,\n params: Record<string, string | string[]>,\n): Promise<Viewport | null> {\n if (typeof mod.generateViewport === \"function\") {\n const asyncParams = makeThenableParams(params);\n return await mod.generateViewport({ params: asyncParams });\n }\n if (mod.viewport && typeof mod.viewport === \"object\") {\n return mod.viewport as Viewport;\n }\n return null;\n}\n\n/**\n * Merge viewport configs from multiple sources (layouts + page).\n * Later entries override earlier ones.\n */\nexport const DEFAULT_VIEWPORT: Viewport = {\n width: \"device-width\",\n initialScale: 1,\n};\n\nexport function mergeViewport(viewportList: Viewport[]): Viewport {\n const merged: Viewport = { ...DEFAULT_VIEWPORT };\n for (const vp of viewportList) {\n Object.assign(merged, vp);\n }\n return merged;\n}\n\n/**\n * React component that renders viewport meta tags into <head>.\n */\nexport function ViewportHead({ viewport }: { viewport: Viewport }) {\n const elements: React.ReactElement[] = [];\n let key = 0;\n\n // Build viewport content string\n const parts: string[] = [];\n if (viewport.width !== undefined) parts.push(`width=${viewport.width}`);\n if (viewport.height !== undefined) parts.push(`height=${viewport.height}`);\n if (viewport.initialScale !== undefined) parts.push(`initial-scale=${viewport.initialScale}`);\n if (viewport.minimumScale !== undefined) parts.push(`minimum-scale=${viewport.minimumScale}`);\n if (viewport.maximumScale !== undefined) parts.push(`maximum-scale=${viewport.maximumScale}`);\n if (viewport.userScalable !== undefined)\n parts.push(`user-scalable=${viewport.userScalable ? \"yes\" : \"no\"}`);\n\n if (parts.length > 0) {\n elements.push(<meta key={key++} name=\"viewport\" content={parts.join(\", \")} />);\n }\n\n // Theme color\n if (viewport.themeColor) {\n if (typeof viewport.themeColor === \"string\") {\n elements.push(<meta key={key++} name=\"theme-color\" content={viewport.themeColor} />);\n } else if (Array.isArray(viewport.themeColor)) {\n for (const entry of viewport.themeColor) {\n elements.push(\n <meta\n key={key++}\n name=\"theme-color\"\n content={entry.color}\n {...(entry.media ? { media: entry.media } : {})}\n />,\n );\n }\n }\n }\n\n // Color scheme\n if (viewport.colorScheme) {\n elements.push(<meta key={key++} name=\"color-scheme\" content={viewport.colorScheme} />);\n }\n\n return <>{elements}</>;\n}\n\n// ---------------------------------------------------------------------------\n// Metadata types and resolution\n// ---------------------------------------------------------------------------\n\nexport interface Metadata {\n title?: string | { default?: string; template?: string; absolute?: string };\n description?: string;\n generator?: string;\n applicationName?: string;\n referrer?: string;\n keywords?: string | string[];\n authors?: Array<{ name?: string; url?: string }> | { name?: string; url?: string };\n creator?: string;\n publisher?: string;\n robots?:\n | string\n | {\n index?: boolean;\n follow?: boolean;\n googleBot?: string | { index?: boolean; follow?: boolean; [key: string]: unknown };\n [key: string]: unknown;\n };\n openGraph?: {\n title?: string;\n description?: string;\n url?: string;\n siteName?: string;\n images?:\n | string\n | { url: string; width?: number; height?: number; alt?: string }\n | Array<string | { url: string; width?: number; height?: number; alt?: string }>;\n videos?: Array<{ url: string; width?: number; height?: number }>;\n audio?: Array<{ url: string }>;\n locale?: string;\n type?: string;\n publishedTime?: string;\n modifiedTime?: string;\n authors?: string[];\n };\n twitter?: {\n card?: string;\n site?: string;\n siteId?: string;\n title?: string;\n description?: string;\n images?:\n | string\n | { url: string; alt?: string; width?: number; height?: number }\n | Array<string | { url: string; alt?: string; width?: number; height?: number }>;\n creator?: string;\n creatorId?: string;\n };\n icons?: {\n icon?: string | Array<{ url: string; sizes?: string; type?: string; media?: string }>;\n shortcut?: string | string[];\n apple?: string | Array<{ url: string; sizes?: string; type?: string }>;\n other?: Array<{ rel: string; url: string; sizes?: string; type?: string }>;\n };\n manifest?: string;\n alternates?: {\n canonical?: string;\n languages?: Record<string, string>;\n media?: Record<string, string>;\n types?: Record<string, string>;\n };\n verification?: {\n google?: string;\n yahoo?: string;\n yandex?: string;\n other?: Record<string, string | string[]>;\n };\n metadataBase?: URL | null;\n appleWebApp?: {\n capable?: boolean;\n title?: string;\n statusBarStyle?: string;\n startupImage?: string | Array<{ url: string; media?: string }>;\n };\n formatDetection?: {\n email?: boolean;\n address?: boolean;\n telephone?: boolean;\n };\n category?: string;\n other?: Record<string, string | string[]>;\n [key: string]: unknown;\n}\n\n/**\n * Merge metadata from multiple sources (layouts + page).\n *\n * The list is ordered [rootLayout, nestedLayout, ..., page].\n * Title template from layouts applies to the page title but NOT to\n * the segment that defines the template itself. `title.absolute`\n * skips all templates. `title.default` is the fallback when no\n * child provides a title.\n *\n * Shallow merge: later entries override earlier ones (per Next.js docs).\n */\nexport function mergeMetadata(metadataList: Metadata[]): Metadata {\n if (metadataList.length === 0) return {};\n\n const merged: Metadata = {};\n\n // Track the most recent title template from LAYOUTS (not from page).\n // The page is always the last entry in metadataList.\n let parentTemplate: string | undefined;\n\n for (let i = 0; i < metadataList.length; i++) {\n const meta = metadataList[i];\n const isPage = i === metadataList.length - 1;\n\n // Collect template from layouts only (page templates are ignored per Next.js spec)\n if (!isPage && meta.title && typeof meta.title === \"object\" && meta.title.template) {\n parentTemplate = meta.title.template;\n }\n\n // Shallow merge — later entries override earlier for top-level keys\n for (const key of Object.keys(meta)) {\n if (key === \"title\") continue; // Handle title separately below\n (merged as Record<string, unknown>)[key] = (meta as Record<string, unknown>)[key];\n }\n\n // Title resolution\n if (meta.title !== undefined) {\n merged.title = meta.title;\n }\n }\n\n // Now resolve the final title, applying the parent template if applicable\n const finalTitle = merged.title;\n if (finalTitle) {\n if (typeof finalTitle === \"string\") {\n // Simple string title — apply parent template\n if (parentTemplate) {\n merged.title = parentTemplate.replace(\"%s\", finalTitle);\n }\n } else if (typeof finalTitle === \"object\") {\n if (finalTitle.absolute) {\n // Absolute title — skip all templates\n merged.title = finalTitle.absolute;\n } else if (finalTitle.default) {\n // Title object with default — this is used when the segment IS the\n // defining layout (its own default doesn't get template-wrapped)\n merged.title = finalTitle.default;\n } else if (finalTitle.template && !finalTitle.default && !finalTitle.absolute) {\n // Template only with no default — no title to render\n merged.title = undefined;\n }\n }\n }\n\n return merged;\n}\n\n/**\n * Resolve metadata from a module. Handles both static `metadata` export\n * and async `generateMetadata()` function.\n *\n * @param parent - A Promise that resolves to the accumulated (merged) metadata\n * from all ancestor segments. Passed as the second argument to\n * `generateMetadata()`, matching Next.js's eager-execution-with-serial-\n * resolution approach. If not provided, defaults to a promise that resolves\n * to an empty object (so `await parent` never throws).\n */\nexport async function resolveModuleMetadata(\n mod: Record<string, unknown>,\n params: Record<string, string | string[]> = {},\n searchParams?: Record<string, string>,\n parent: Promise<Metadata> = Promise.resolve({}),\n): Promise<Metadata | null> {\n if (typeof mod.generateMetadata === \"function\") {\n // Next.js 16 passes params/searchParams as Promises (async pattern).\n // makeThenableParams() normalises null-prototype + preserves sync access.\n const asyncParams = makeThenableParams(params);\n const sp = searchParams ?? {};\n const asyncSp = makeThenableParams(sp);\n return await mod.generateMetadata({ params: asyncParams, searchParams: asyncSp }, parent);\n }\n if (mod.metadata && typeof mod.metadata === \"object\") {\n return mod.metadata as Metadata;\n }\n return null;\n}\n\n/**\n * React component that renders metadata as HTML head elements.\n * Used by the RSC entry to inject into the <head>.\n */\nexport function MetadataHead({ metadata }: { metadata: Metadata }) {\n const elements: React.ReactElement[] = [];\n let key = 0;\n\n // Resolve metadataBase for URL composition\n const base = metadata.metadataBase;\n function resolveUrl(url: string | undefined): string | undefined {\n if (!url) return undefined;\n if (!base) return url;\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\") || url.startsWith(\"//\")) return url;\n try {\n return new URL(url, base).toString();\n } catch {\n return url;\n }\n }\n\n // Title\n const title =\n typeof metadata.title === \"string\"\n ? metadata.title\n : typeof metadata.title === \"object\"\n ? metadata.title.absolute || metadata.title.default\n : undefined;\n if (title) {\n elements.push(<title key={key++}>{title}</title>);\n }\n\n // Description\n if (metadata.description) {\n elements.push(<meta key={key++} name=\"description\" content={metadata.description} />);\n }\n\n // Generator\n if (metadata.generator) {\n elements.push(<meta key={key++} name=\"generator\" content={metadata.generator} />);\n }\n\n // Application name\n if (metadata.applicationName) {\n elements.push(<meta key={key++} name=\"application-name\" content={metadata.applicationName} />);\n }\n\n // Referrer\n if (metadata.referrer) {\n elements.push(<meta key={key++} name=\"referrer\" content={metadata.referrer} />);\n }\n\n // Keywords\n if (metadata.keywords) {\n const kw = Array.isArray(metadata.keywords) ? metadata.keywords.join(\",\") : metadata.keywords;\n elements.push(<meta key={key++} name=\"keywords\" content={kw} />);\n }\n\n // Authors\n if (metadata.authors) {\n const authorList = Array.isArray(metadata.authors) ? metadata.authors : [metadata.authors];\n for (const author of authorList) {\n if (author.name) {\n elements.push(<meta key={key++} name=\"author\" content={author.name} />);\n }\n if (author.url) {\n elements.push(<link key={key++} rel=\"author\" href={author.url} />);\n }\n }\n }\n\n // Creator\n if (metadata.creator) {\n elements.push(<meta key={key++} name=\"creator\" content={metadata.creator} />);\n }\n\n // Publisher\n if (metadata.publisher) {\n elements.push(<meta key={key++} name=\"publisher\" content={metadata.publisher} />);\n }\n\n // Format detection\n if (metadata.formatDetection) {\n const parts: string[] = [];\n if (metadata.formatDetection.telephone === false) parts.push(\"telephone=no\");\n if (metadata.formatDetection.address === false) parts.push(\"address=no\");\n if (metadata.formatDetection.email === false) parts.push(\"email=no\");\n if (parts.length > 0) {\n elements.push(<meta key={key++} name=\"format-detection\" content={parts.join(\", \")} />);\n }\n }\n\n // Category\n if (metadata.category) {\n elements.push(<meta key={key++} name=\"category\" content={metadata.category} />);\n }\n\n // Robots\n if (metadata.robots) {\n if (typeof metadata.robots === \"string\") {\n elements.push(<meta key={key++} name=\"robots\" content={metadata.robots} />);\n } else {\n const { googleBot, ...robotsRest } = metadata.robots;\n const robotParts: string[] = [];\n for (const [k, v] of Object.entries(robotsRest)) {\n if (v === true) robotParts.push(k);\n else if (v === false) robotParts.push(`no${k}`);\n else if (typeof v === \"string\" || typeof v === \"number\") robotParts.push(`${k}:${v}`);\n }\n if (robotParts.length > 0) {\n elements.push(<meta key={key++} name=\"robots\" content={robotParts.join(\", \")} />);\n }\n // googlebot\n if (googleBot) {\n if (typeof googleBot === \"string\") {\n elements.push(<meta key={key++} name=\"googlebot\" content={googleBot} />);\n } else {\n const gbParts: string[] = [];\n for (const [k, v] of Object.entries(googleBot)) {\n if (v === true) gbParts.push(k);\n else if (v === false) gbParts.push(`no${k}`);\n else if (typeof v === \"string\" || typeof v === \"number\") gbParts.push(`${k}:${v}`);\n }\n if (gbParts.length > 0) {\n elements.push(<meta key={key++} name=\"googlebot\" content={gbParts.join(\", \")} />);\n }\n }\n }\n }\n }\n\n // Open Graph\n if (metadata.openGraph) {\n const og = metadata.openGraph;\n if (og.title) elements.push(<meta key={key++} property=\"og:title\" content={og.title} />);\n if (og.description)\n elements.push(<meta key={key++} property=\"og:description\" content={og.description} />);\n if (og.url)\n elements.push(<meta key={key++} property=\"og:url\" content={resolveUrl(og.url) ?? og.url} />);\n if (og.siteName)\n elements.push(<meta key={key++} property=\"og:site_name\" content={og.siteName} />);\n if (og.type) elements.push(<meta key={key++} property=\"og:type\" content={og.type} />);\n if (og.locale) elements.push(<meta key={key++} property=\"og:locale\" content={og.locale} />);\n if (og.publishedTime)\n elements.push(\n <meta key={key++} property=\"article:published_time\" content={og.publishedTime} />,\n );\n if (og.modifiedTime)\n elements.push(\n <meta key={key++} property=\"article:modified_time\" content={og.modifiedTime} />,\n );\n if (og.authors) {\n for (const author of og.authors) {\n elements.push(<meta key={key++} property=\"article:author\" content={author} />);\n }\n }\n if (og.images) {\n const imgList =\n typeof og.images === \"string\"\n ? [{ url: og.images }]\n : Array.isArray(og.images)\n ? og.images\n : [og.images];\n for (const img of imgList) {\n const imgUrl = typeof img === \"string\" ? img : img.url;\n elements.push(\n <meta key={key++} property=\"og:image\" content={resolveUrl(imgUrl) ?? imgUrl} />,\n );\n if (typeof img !== \"string\") {\n if (img.width)\n elements.push(\n <meta key={key++} property=\"og:image:width\" content={String(img.width)} />,\n );\n if (img.height)\n elements.push(\n <meta key={key++} property=\"og:image:height\" content={String(img.height)} />,\n );\n if (img.alt)\n elements.push(<meta key={key++} property=\"og:image:alt\" content={img.alt} />);\n }\n }\n }\n if (og.videos) {\n for (const video of og.videos) {\n elements.push(\n <meta key={key++} property=\"og:video\" content={resolveUrl(video.url) ?? video.url} />,\n );\n if (video.width)\n elements.push(\n <meta key={key++} property=\"og:video:width\" content={String(video.width)} />,\n );\n if (video.height)\n elements.push(\n <meta key={key++} property=\"og:video:height\" content={String(video.height)} />,\n );\n }\n }\n if (og.audio) {\n for (const audio of og.audio) {\n elements.push(\n <meta key={key++} property=\"og:audio\" content={resolveUrl(audio.url) ?? audio.url} />,\n );\n }\n }\n }\n\n // Twitter\n if (metadata.twitter) {\n const tw = metadata.twitter;\n if (tw.card) elements.push(<meta key={key++} name=\"twitter:card\" content={tw.card} />);\n if (tw.site) elements.push(<meta key={key++} name=\"twitter:site\" content={tw.site} />);\n if (tw.siteId) elements.push(<meta key={key++} name=\"twitter:site:id\" content={tw.siteId} />);\n if (tw.title) elements.push(<meta key={key++} name=\"twitter:title\" content={tw.title} />);\n if (tw.description)\n elements.push(<meta key={key++} name=\"twitter:description\" content={tw.description} />);\n if (tw.creator) elements.push(<meta key={key++} name=\"twitter:creator\" content={tw.creator} />);\n if (tw.creatorId)\n elements.push(<meta key={key++} name=\"twitter:creator:id\" content={tw.creatorId} />);\n if (tw.images) {\n const imgList =\n typeof tw.images === \"string\"\n ? [tw.images]\n : Array.isArray(tw.images)\n ? tw.images\n : [tw.images];\n for (const img of imgList) {\n const imgUrl = typeof img === \"string\" ? img : img.url;\n elements.push(\n <meta key={key++} name=\"twitter:image\" content={resolveUrl(imgUrl) ?? imgUrl} />,\n );\n if (typeof img !== \"string\" && img.alt) {\n elements.push(<meta key={key++} name=\"twitter:image:alt\" content={img.alt} />);\n }\n }\n }\n }\n\n // Icons\n if (metadata.icons) {\n const { icon, shortcut, apple, other } = metadata.icons;\n // Shortcut icon\n if (shortcut) {\n const shortcuts = Array.isArray(shortcut) ? shortcut : [shortcut];\n for (const s of shortcuts) {\n elements.push(<link key={key++} rel=\"shortcut icon\" href={resolveUrl(s) ?? s} />);\n }\n }\n // Icon\n if (icon) {\n const icons = typeof icon === \"string\" ? [{ url: icon }] : icon;\n for (const i of icons) {\n elements.push(\n <link\n key={key++}\n rel=\"icon\"\n href={resolveUrl(i.url) ?? i.url}\n {...(i.sizes ? { sizes: i.sizes } : {})}\n {...(i.type ? { type: i.type } : {})}\n {...(i.media ? { media: i.media } : {})}\n />,\n );\n }\n }\n // Apple touch icon\n if (apple) {\n const apples = typeof apple === \"string\" ? [{ url: apple }] : apple;\n for (const a of apples) {\n elements.push(\n <link\n key={key++}\n rel=\"apple-touch-icon\"\n href={resolveUrl(a.url) ?? a.url}\n {...(a.sizes ? { sizes: a.sizes } : {})}\n {...(a.type ? { type: a.type } : {})}\n />,\n );\n }\n }\n // Other custom icon relations\n if (other) {\n for (const o of other) {\n elements.push(\n <link\n key={key++}\n rel={o.rel}\n href={resolveUrl(o.url) ?? o.url}\n {...(o.sizes ? { sizes: o.sizes } : {})}\n />,\n );\n }\n }\n }\n\n // Manifest\n if (metadata.manifest) {\n elements.push(\n <link key={key++} rel=\"manifest\" href={resolveUrl(metadata.manifest) ?? metadata.manifest} />,\n );\n }\n\n // Alternates\n if (metadata.alternates) {\n const alt = metadata.alternates;\n if (alt.canonical) {\n elements.push(\n <link key={key++} rel=\"canonical\" href={resolveUrl(alt.canonical) ?? alt.canonical} />,\n );\n }\n if (alt.languages) {\n for (const [lang, href] of Object.entries(alt.languages)) {\n elements.push(\n <link key={key++} rel=\"alternate\" hrefLang={lang} href={resolveUrl(href) ?? href} />,\n );\n }\n }\n if (alt.media) {\n for (const [media, href] of Object.entries(alt.media)) {\n elements.push(\n <link key={key++} rel=\"alternate\" media={media} href={resolveUrl(href) ?? href} />,\n );\n }\n }\n if (alt.types) {\n for (const [type, href] of Object.entries(alt.types)) {\n elements.push(\n <link key={key++} rel=\"alternate\" type={type} href={resolveUrl(href) ?? href} />,\n );\n }\n }\n }\n\n // Verification\n if (metadata.verification) {\n const v = metadata.verification;\n if (v.google)\n elements.push(<meta key={key++} name=\"google-site-verification\" content={v.google} />);\n if (v.yahoo) elements.push(<meta key={key++} name=\"y_key\" content={v.yahoo} />);\n if (v.yandex) elements.push(<meta key={key++} name=\"yandex-verification\" content={v.yandex} />);\n if (v.other) {\n for (const [name, content] of Object.entries(v.other)) {\n const values = Array.isArray(content) ? content : [content];\n for (const val of values) {\n elements.push(<meta key={key++} name={name} content={val} />);\n }\n }\n }\n }\n\n // Apple Web App\n if (metadata.appleWebApp) {\n const awa = metadata.appleWebApp;\n if (awa.capable !== false) {\n elements.push(<meta key={key++} name=\"mobile-web-app-capable\" content=\"yes\" />);\n }\n if (awa.title) {\n elements.push(<meta key={key++} name=\"apple-mobile-web-app-title\" content={awa.title} />);\n }\n if (awa.statusBarStyle) {\n elements.push(\n <meta\n key={key++}\n name=\"apple-mobile-web-app-status-bar-style\"\n content={awa.statusBarStyle}\n />,\n );\n }\n if (awa.startupImage) {\n const imgs =\n typeof awa.startupImage === \"string\" ? [{ url: awa.startupImage }] : awa.startupImage;\n for (const img of imgs) {\n elements.push(\n <link\n key={key++}\n rel=\"apple-touch-startup-image\"\n href={resolveUrl(img.url) ?? img.url}\n {...(img.media ? { media: img.media } : {})}\n />,\n );\n }\n }\n }\n\n // Other custom meta tags\n if (metadata.other) {\n for (const [name, content] of Object.entries(metadata.other)) {\n const values = Array.isArray(content) ? content : [content];\n for (const val of values) {\n elements.push(<meta key={key++} name={name} content={val} />);\n }\n }\n }\n\n return <>{elements}</>;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-state.d.ts","sourceRoot":"","sources":["../../src/shims/navigation-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA+BH;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAMpF"}
1
+ {"version":3,"file":"navigation-state.d.ts","sourceRoot":"","sources":["../../src/shims/navigation-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA6BH;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAMpF"}
@@ -11,11 +11,12 @@
11
11
  * uses a registration pattern so it works in both environments.
12
12
  */
13
13
  import { AsyncLocalStorage } from "node:async_hooks";
14
- import { _registerStateAccessors, } from "./navigation.js";
14
+ import { _registerStateAccessors } from "./navigation.js";
15
15
  const _ALS_KEY = Symbol.for("vinext.navigation.als");
16
16
  const _FALLBACK_KEY = Symbol.for("vinext.navigation.fallback");
17
17
  const _g = globalThis;
18
- const _als = (_g[_ALS_KEY] ??= new AsyncLocalStorage());
18
+ const _als = (_g[_ALS_KEY] ??=
19
+ new AsyncLocalStorage());
19
20
  const _fallbackState = (_g[_FALLBACK_KEY] ??= {
20
21
  serverContext: null,
21
22
  serverInsertedHTMLCallbacks: [],
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-state.js","sourceRoot":"","sources":["../../src/shims/navigation-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,uBAAuB,GAExB,MAAM,iBAAiB,CAAC;AAWzB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACrD,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAC/D,MAAM,EAAE,GAAG,UAAqD,CAAC;AACjE,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,IAAI,iBAAiB,EAAmB,CAAuC,CAAC;AAE/G,MAAM,cAAc,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK;IAC5C,aAAa,EAAE,IAAI;IACnB,2BAA2B,EAAE,EAAE;CACN,CAAoB,CAAC;AAEhD,SAAS,SAAS;IAChB,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,cAAc,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAI,EAAwB;IAClE,MAAM,KAAK,GAAoB;QAC7B,aAAa,EAAE,IAAI;QACnB,2BAA2B,EAAE,EAAE;KAChC,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,mDAAmD;AACnD,8EAA8E;AAE9E,uBAAuB,CAAC;IACtB,gBAAgB;QACd,OAAO,SAAS,EAAE,CAAC,aAAa,CAAC;IACnC,CAAC;IAED,gBAAgB,CAAC,GAA6B;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,cAAc,CAAC,aAAa,GAAG,GAAG,CAAC;QACrC,CAAC;IACH,CAAC;IAED,wBAAwB;QACtB,OAAO,SAAS,EAAE,CAAC,2BAA2B,CAAC;IACjD,CAAC;IAED,0BAA0B;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,2BAA2B,GAAG,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CACF,CAAC,CAAC","sourcesContent":["/**\n * Server-only navigation state backed by AsyncLocalStorage.\n *\n * This module provides request-scoped isolation for navigation context\n * and useServerInsertedHTML callbacks. Without ALS, concurrent requests\n * on Cloudflare Workers would share module-level state and leak data\n * (pathnames, params, CSS-in-JS styles) between requests.\n *\n * This module is server-only — it imports node:async_hooks and must NOT\n * be bundled for the browser. The dual-environment navigation.ts shim\n * uses a registration pattern so it works in both environments.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport {\n _registerStateAccessors,\n type NavigationContext,\n} from \"./navigation.js\";\n\n// ---------------------------------------------------------------------------\n// ALS setup — same pattern as headers.ts\n// ---------------------------------------------------------------------------\n\ninterface NavigationState {\n serverContext: NavigationContext | null;\n serverInsertedHTMLCallbacks: Array<() => unknown>;\n}\n\nconst _ALS_KEY = Symbol.for(\"vinext.navigation.als\");\nconst _FALLBACK_KEY = Symbol.for(\"vinext.navigation.fallback\");\nconst _g = globalThis as unknown as Record<PropertyKey, unknown>;\nconst _als = (_g[_ALS_KEY] ??= new AsyncLocalStorage<NavigationState>()) as AsyncLocalStorage<NavigationState>;\n\nconst _fallbackState = (_g[_FALLBACK_KEY] ??= {\n serverContext: null,\n serverInsertedHTMLCallbacks: [],\n} satisfies NavigationState) as NavigationState;\n\nfunction _getState(): NavigationState {\n return _als.getStore() ?? _fallbackState;\n}\n\n/**\n * Run a function within a navigation ALS scope.\n * Ensures per-request isolation for navigation context and\n * useServerInsertedHTML callbacks on concurrent runtimes.\n */\nexport function runWithNavigationContext<T>(fn: () => T | Promise<T>): T | Promise<T> {\n const state: NavigationState = {\n serverContext: null,\n serverInsertedHTMLCallbacks: [],\n };\n return _als.run(state, fn);\n}\n\n// ---------------------------------------------------------------------------\n// Register ALS-backed accessors into navigation.ts\n// ---------------------------------------------------------------------------\n\n_registerStateAccessors({\n getServerContext(): NavigationContext | null {\n return _getState().serverContext;\n },\n\n setServerContext(ctx: NavigationContext | null): void {\n const state = _als.getStore();\n if (state) {\n state.serverContext = ctx;\n } else {\n // No ALS scope — fallback for environments without als.run() wrapping.\n _fallbackState.serverContext = ctx;\n }\n },\n\n getInsertedHTMLCallbacks(): Array<() => unknown> {\n return _getState().serverInsertedHTMLCallbacks;\n },\n\n clearInsertedHTMLCallbacks(): void {\n const state = _als.getStore();\n if (state) {\n state.serverInsertedHTMLCallbacks = [];\n } else {\n _fallbackState.serverInsertedHTMLCallbacks = [];\n }\n },\n});\n"]}
1
+ {"version":3,"file":"navigation-state.js","sourceRoot":"","sources":["../../src/shims/navigation-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAA0B,MAAM,iBAAiB,CAAC;AAWlF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACrD,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAC/D,MAAM,EAAE,GAAG,UAAqD,CAAC;AACjE,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC;IACxB,IAAI,iBAAiB,EAAmB,CAAuC,CAAC;AAElF,MAAM,cAAc,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK;IAC5C,aAAa,EAAE,IAAI;IACnB,2BAA2B,EAAE,EAAE;CACN,CAAoB,CAAC;AAEhD,SAAS,SAAS;IAChB,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,cAAc,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAI,EAAwB;IAClE,MAAM,KAAK,GAAoB;QAC7B,aAAa,EAAE,IAAI;QACnB,2BAA2B,EAAE,EAAE;KAChC,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,mDAAmD;AACnD,8EAA8E;AAE9E,uBAAuB,CAAC;IACtB,gBAAgB;QACd,OAAO,SAAS,EAAE,CAAC,aAAa,CAAC;IACnC,CAAC;IAED,gBAAgB,CAAC,GAA6B;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,cAAc,CAAC,aAAa,GAAG,GAAG,CAAC;QACrC,CAAC;IACH,CAAC;IAED,wBAAwB;QACtB,OAAO,SAAS,EAAE,CAAC,2BAA2B,CAAC;IACjD,CAAC;IAED,0BAA0B;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,2BAA2B,GAAG,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CACF,CAAC,CAAC","sourcesContent":["/**\n * Server-only navigation state backed by AsyncLocalStorage.\n *\n * This module provides request-scoped isolation for navigation context\n * and useServerInsertedHTML callbacks. Without ALS, concurrent requests\n * on Cloudflare Workers would share module-level state and leak data\n * (pathnames, params, CSS-in-JS styles) between requests.\n *\n * This module is server-only — it imports node:async_hooks and must NOT\n * be bundled for the browser. The dual-environment navigation.ts shim\n * uses a registration pattern so it works in both environments.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { _registerStateAccessors, type NavigationContext } from \"./navigation.js\";\n\n// ---------------------------------------------------------------------------\n// ALS setup — same pattern as headers.ts\n// ---------------------------------------------------------------------------\n\ninterface NavigationState {\n serverContext: NavigationContext | null;\n serverInsertedHTMLCallbacks: Array<() => unknown>;\n}\n\nconst _ALS_KEY = Symbol.for(\"vinext.navigation.als\");\nconst _FALLBACK_KEY = Symbol.for(\"vinext.navigation.fallback\");\nconst _g = globalThis as unknown as Record<PropertyKey, unknown>;\nconst _als = (_g[_ALS_KEY] ??=\n new AsyncLocalStorage<NavigationState>()) as AsyncLocalStorage<NavigationState>;\n\nconst _fallbackState = (_g[_FALLBACK_KEY] ??= {\n serverContext: null,\n serverInsertedHTMLCallbacks: [],\n} satisfies NavigationState) as NavigationState;\n\nfunction _getState(): NavigationState {\n return _als.getStore() ?? _fallbackState;\n}\n\n/**\n * Run a function within a navigation ALS scope.\n * Ensures per-request isolation for navigation context and\n * useServerInsertedHTML callbacks on concurrent runtimes.\n */\nexport function runWithNavigationContext<T>(fn: () => T | Promise<T>): T | Promise<T> {\n const state: NavigationState = {\n serverContext: null,\n serverInsertedHTMLCallbacks: [],\n };\n return _als.run(state, fn);\n}\n\n// ---------------------------------------------------------------------------\n// Register ALS-backed accessors into navigation.ts\n// ---------------------------------------------------------------------------\n\n_registerStateAccessors({\n getServerContext(): NavigationContext | null {\n return _getState().serverContext;\n },\n\n setServerContext(ctx: NavigationContext | null): void {\n const state = _als.getStore();\n if (state) {\n state.serverContext = ctx;\n } else {\n // No ALS scope — fallback for environments without als.run() wrapping.\n _fallbackState.serverContext = ctx;\n }\n },\n\n getInsertedHTMLCallbacks(): Array<() => unknown> {\n return _getState().serverInsertedHTMLCallbacks;\n },\n\n clearInsertedHTMLCallbacks(): void {\n const state = _als.getStore();\n if (state) {\n state.serverInsertedHTMLCallbacks = [];\n } else {\n _fallbackState.serverInsertedHTMLCallbacks = [];\n }\n },\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/shims/navigation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/shims/navigation.ts"],"names":[],"mappings":"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"}