@ahmedrowaihi/pdf-forge-preview 1.0.0-canary.0
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.
- package/.next/BUILD_ID +1 -0
- package/.next/app-path-routes-manifest.json +7 -0
- package/.next/build/chunks/[root-of-the-server]__12fb5caf._.js +233 -0
- package/.next/build/chunks/[root-of-the-server]__12fb5caf._.js.map +8 -0
- package/.next/build/chunks/[root-of-the-server]__242deb00._.js +500 -0
- package/.next/build/chunks/[root-of-the-server]__242deb00._.js.map +11 -0
- package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_ad9a1eec._.js +13 -0
- package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_ad9a1eec._.js.map +5 -0
- package/.next/build/chunks/[turbopack]_runtime.js +795 -0
- package/.next/build/chunks/[turbopack]_runtime.js.map +10 -0
- package/.next/build/chunks/node_modules__pnpm_806d01c0._.js +6758 -0
- package/.next/build/chunks/node_modules__pnpm_806d01c0._.js.map +47 -0
- package/.next/build/package.json +1 -0
- package/.next/build/postcss.js +6 -0
- package/.next/build/postcss.js.map +5 -0
- package/.next/build-manifest.json +20 -0
- package/.next/diagnostics/build-diagnostics.json +6 -0
- package/.next/diagnostics/framework.json +1 -0
- package/.next/export-marker.json +6 -0
- package/.next/fallback-build-manifest.json +12 -0
- package/.next/images-manifest.json +66 -0
- package/.next/next-minimal-server.js.nft.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +65 -0
- package/.next/required-server-files.js +163 -0
- package/.next/required-server-files.json +163 -0
- package/.next/routes-manifest.json +77 -0
- package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/.next/server/app/_global-error/page/build-manifest.json +17 -0
- package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
- package/.next/server/app/_global-error/page.js +11 -0
- package/.next/server/app/_global-error/page.js.map +5 -0
- package/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/.next/server/app/_global-error/page_client-reference-manifest.js +2 -0
- package/.next/server/app/_global-error.html +2 -0
- package/.next/server/app/_global-error.meta +15 -0
- package/.next/server/app/_global-error.rsc +13 -0
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_full.segment.rsc +13 -0
- package/.next/server/app/_global-error.segments/_head.segment.rsc +6 -0
- package/.next/server/app/_global-error.segments/_index.segment.rsc +4 -0
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/.next/server/app/_not-found/page/build-manifest.json +17 -0
- package/.next/server/app/_not-found/page/next-font-manifest.json +16 -0
- package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/_not-found/page/server-reference-manifest.json +20 -0
- package/.next/server/app/_not-found/page.js +14 -0
- package/.next/server/app/_not-found/page.js.map +5 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +2 -0
- package/.next/server/app/favicon.ico/route/app-paths-manifest.json +3 -0
- package/.next/server/app/favicon.ico/route/build-manifest.json +11 -0
- package/.next/server/app/favicon.ico/route.js +6 -0
- package/.next/server/app/favicon.ico/route.js.map +5 -0
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
- package/.next/server/app/favicon.ico.body +0 -0
- package/.next/server/app/favicon.ico.meta +1 -0
- package/.next/server/app/page/app-paths-manifest.json +3 -0
- package/.next/server/app/page/build-manifest.json +17 -0
- package/.next/server/app/page/next-font-manifest.json +16 -0
- package/.next/server/app/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/page/server-reference-manifest.json +20 -0
- package/.next/server/app/page.js +17 -0
- package/.next/server/app/page.js.map +5 -0
- package/.next/server/app/page.js.nft.json +1 -0
- package/.next/server/app/page_client-reference-manifest.js +2 -0
- package/.next/server/app/preview/[...slug]/page/app-paths-manifest.json +3 -0
- package/.next/server/app/preview/[...slug]/page/build-manifest.json +17 -0
- package/.next/server/app/preview/[...slug]/page/next-font-manifest.json +16 -0
- package/.next/server/app/preview/[...slug]/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/preview/[...slug]/page/server-reference-manifest.json +65 -0
- package/.next/server/app/preview/[...slug]/page.js +19 -0
- package/.next/server/app/preview/[...slug]/page.js.map +5 -0
- package/.next/server/app/preview/[...slug]/page.js.nft.json +1 -0
- package/.next/server/app/preview/[...slug]/page_client-reference-manifest.js +2 -0
- package/.next/server/app-paths-manifest.json +7 -0
- package/.next/server/chunks/730ea_preview-server__next-internal_server_app_favicon_ico_route_actions_a71a8ae7.js +3 -0
- package/.next/server/chunks/730ea_preview-server__next-internal_server_app_favicon_ico_route_actions_a71a8ae7.js.map +1 -0
- package/.next/server/chunks/[externals]_next_dist_a6d89067._.js +3 -0
- package/.next/server/chunks/[externals]_next_dist_a6d89067._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__a62cd78d._.js +21 -0
- package/.next/server/chunks/[root-of-the-server]__a62cd78d._.js.map +1 -0
- package/.next/server/chunks/[turbopack]_runtime.js +795 -0
- package/.next/server/chunks/[turbopack]_runtime.js.map +10 -0
- package/.next/server/chunks/ssr/730ea_preview-server__next-internal_server_app__global-error_page_actions_986e2de5.js +3 -0
- package/.next/server/chunks/ssr/730ea_preview-server__next-internal_server_app__global-error_page_actions_986e2de5.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__025eaae9._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__025eaae9._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1536282c._.js +4 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1536282c._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__15cf9d36._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__15cf9d36._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__450f653e._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__450f653e._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__4874d0d7._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__4874d0d7._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__49771cdc._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__49771cdc._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__9ff74047._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__9ff74047._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__a9be37b1._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__a9be37b1._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__aeefe74e._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__aeefe74e._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__b13738d2._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__b13738d2._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__bb428c83._.js +4 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__bb428c83._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__c61333e3._.js +10 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__c61333e3._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__cb0c7b1a._.js +4 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__cb0c7b1a._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__dafcae4c._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__dafcae4c._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__e47d0c07._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__e47d0c07._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__ecac8617._.js +31 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__ecac8617._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__fd4bda25._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__fd4bda25._.js.map +1 -0
- package/.next/server/chunks/ssr/[turbopack]_runtime.js +795 -0
- package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +10 -0
- package/.next/server/chunks/ssr/_19494208._.js +19 -0
- package/.next/server/chunks/ssr/_19494208._.js.map +1 -0
- package/.next/server/chunks/ssr/_810f54e9._.js +4 -0
- package/.next/server/chunks/ssr/_810f54e9._.js.map +1 -0
- package/.next/server/chunks/ssr/_aa01e67e._.js +4 -0
- package/.next/server/chunks/ssr/_aa01e67e._.js.map +1 -0
- package/.next/server/chunks/ssr/_bf10718b._.js +4 -0
- package/.next/server/chunks/ssr/_bf10718b._.js.map +1 -0
- package/.next/server/chunks/ssr/_c57c12df._.js +4 -0
- package/.next/server/chunks/ssr/_c57c12df._.js.map +1 -0
- package/.next/server/chunks/ssr/_d9b57cb8._.js +5 -0
- package/.next/server/chunks/ssr/_d9b57cb8._.js.map +1 -0
- package/.next/server/chunks/ssr/_e2a766a8._.js +3 -0
- package/.next/server/chunks/ssr/_e2a766a8._.js.map +1 -0
- package/.next/server/chunks/ssr/_e2b86512._.js +8 -0
- package/.next/server/chunks/ssr/_e2b86512._.js.map +1 -0
- package/.next/server/chunks/ssr/_ee8ea3aa._.js +19 -0
- package/.next/server/chunks/ssr/_ee8ea3aa._.js.map +1 -0
- package/.next/server/chunks/ssr/e8449_next_dist_5870db32._.js +3 -0
- package/.next/server/chunks/ssr/e8449_next_dist_5870db32._.js.map +1 -0
- package/.next/server/chunks/ssr/e8449_next_dist_client_components_builtin_forbidden_5542069c.js +3 -0
- package/.next/server/chunks/ssr/e8449_next_dist_client_components_builtin_forbidden_5542069c.js.map +1 -0
- package/.next/server/chunks/ssr/e8449_next_dist_client_components_builtin_global-error_d0870f3a.js +3 -0
- package/.next/server/chunks/ssr/e8449_next_dist_client_components_builtin_global-error_d0870f3a.js.map +1 -0
- package/.next/server/chunks/ssr/e8449_next_dist_client_components_builtin_unauthorized_4c01c8d5.js +3 -0
- package/.next/server/chunks/ssr/e8449_next_dist_client_components_builtin_unauthorized_4c01c8d5.js.map +1 -0
- package/.next/server/chunks/ssr/e8449_next_dist_client_components_d90ace34._.js +3 -0
- package/.next/server/chunks/ssr/e8449_next_dist_client_components_d90ace34._.js.map +1 -0
- package/.next/server/chunks/ssr/e8449_next_dist_esm_af7aafb8._.js +6 -0
- package/.next/server/chunks/ssr/e8449_next_dist_esm_af7aafb8._.js.map +1 -0
- package/.next/server/chunks/ssr/e8449_next_dist_esm_build_templates_app-page_f16f0848.js +4 -0
- package/.next/server/chunks/ssr/e8449_next_dist_esm_build_templates_app-page_f16f0848.js.map +1 -0
- package/.next/server/chunks/ssr/e8449_next_dist_f0d8a2cc._.js +4 -0
- package/.next/server/chunks/ssr/e8449_next_dist_f0d8a2cc._.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_37510d96._.js +5 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_37510d96._.js.map +1 -0
- package/.next/server/chunks/ssr/packages_preview-server_src_app_897ecf1c._.js +3 -0
- package/.next/server/chunks/ssr/packages_preview-server_src_app_897ecf1c._.js.map +1 -0
- package/.next/server/chunks/ssr/packages_preview-server_src_e17a2a9b._.js +3 -0
- package/.next/server/chunks/ssr/packages_preview-server_src_e17a2a9b._.js.map +1 -0
- package/.next/server/functions-config-manifest.json +4 -0
- package/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/.next/server/middleware-build-manifest.js +21 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/next-font-manifest.js +1 -0
- package/.next/server/next-font-manifest.json +34 -0
- package/.next/server/pages/500.html +2 -0
- package/.next/server/pages-manifest.json +3 -0
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +80 -0
- package/.next/static/cdYIhKFtJ0GB-yJK5ywz_/_buildManifest.js +11 -0
- package/.next/static/cdYIhKFtJ0GB-yJK5ywz_/_clientMiddlewareManifest.json +1 -0
- package/.next/static/cdYIhKFtJ0GB-yJK5ywz_/_ssgManifest.js +1 -0
- package/.next/static/chunks/0464c7ff175ee6ff.js +1 -0
- package/.next/static/chunks/10468413db24762a.js +14 -0
- package/.next/static/chunks/2de338262e51ef94.js +3 -0
- package/.next/static/chunks/37adc260f85da877.js +1 -0
- package/.next/static/chunks/521eee9903bc4d1f.js +5 -0
- package/.next/static/chunks/6051bd38272cb442.js +14 -0
- package/.next/static/chunks/8d433d4b9d701456.js +1 -0
- package/.next/static/chunks/92ba72595aad9df6.js +1 -0
- package/.next/static/chunks/959ed978a6e89a66.js +1 -0
- package/.next/static/chunks/a6dad97d9634a72d.js +1 -0
- package/.next/static/chunks/a6dad97d9634a72d.js.map +1 -0
- package/.next/static/chunks/a6db6456c5b75734.js +1 -0
- package/.next/static/chunks/c3ece0a7e3e07076.js +1 -0
- package/.next/static/chunks/d1b29a74f6814a03.css +3 -0
- package/.next/static/chunks/f7ec22614fe1c1fe.js +1 -0
- package/.next/static/chunks/turbopack-e062a8e6d6034eb0.js +4 -0
- package/.next/static/media/1bffadaabf893a1e-s.7cd81963.woff2 +0 -0
- package/.next/static/media/2bbe8d2671613f1f-s.76dcb0b2.woff2 +0 -0
- package/.next/static/media/2c55a0e60120577a-s.2a48534a.woff2 +0 -0
- package/.next/static/media/5476f68d60460930-s.c995e352.woff2 +0 -0
- package/.next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2 +0 -0
- package/.next/static/media/9c72aa0f40e4eef8-s.18a48cbc.woff2 +0 -0
- package/.next/static/media/SFMonoBold-s.p.b90ec775.otf +0 -0
- package/.next/static/media/SFMonoHeavy-s.p.545fe93b.otf +0 -0
- package/.next/static/media/SFMonoLight-s.p.7c5363a6.otf +0 -0
- package/.next/static/media/SFMonoMedium-s.p.a4fc9904.otf +0 -0
- package/.next/static/media/SFMonoRegular-s.p.04ea7bf3.otf +0 -0
- package/.next/static/media/SFMonoSemibold-s.p.2d2ddb43.otf +0 -0
- package/.next/static/media/ad66f9afd8947f86-s.7a40eb73.woff2 +0 -0
- package/.next/static/media/favicon.678eb597.ico +0 -0
- package/.next/static/media/logo.22a370b0.png +0 -0
- package/.next/trace +1 -0
- package/.next/trace-build +1 -0
- package/.next/turbopack +0 -0
- package/.next/types/routes.d.ts +58 -0
- package/.next/types/validator.ts +70 -0
- package/CHANGELOG.md +12 -0
- package/LICENSE.md +8 -0
- package/index.mjs +17 -0
- package/jsx-runtime/jsx-dev-runtime.js +26 -0
- package/module-punycode.d.ts +3 -0
- package/next-env.d.ts +6 -0
- package/next.config.mjs +15 -0
- package/package.json +78 -0
- package/postcss.config.js +5 -0
- package/readme.md +33 -0
- package/scripts/build-preview-server.mts +25 -0
- package/scripts/dev.mts +57 -0
- package/scripts/seed.mts +36 -0
- package/src/actions/export-single-template.ts +74 -0
- package/src/actions/get-template-path-from-slug.ts +32 -0
- package/src/actions/get-templates-directory-metadata-action.ts +19 -0
- package/src/actions/render-template-by-path.tsx +313 -0
- package/src/actions/safe-action.ts +15 -0
- package/src/animated-icons-data/help.json +1082 -0
- package/src/animated-icons-data/link.json +1309 -0
- package/src/animated-icons-data/load.json +443 -0
- package/src/animated-icons-data/mail.json +1320 -0
- package/src/app/env.ts +14 -0
- package/src/app/favicon.ico +0 -0
- package/src/app/fonts/SFMono/SFMonoBold.otf +0 -0
- package/src/app/fonts/SFMono/SFMonoBoldItalic.otf +0 -0
- package/src/app/fonts/SFMono/SFMonoHeavy.otf +0 -0
- package/src/app/fonts/SFMono/SFMonoHeavyItalic.otf +0 -0
- package/src/app/fonts/SFMono/SFMonoLight.otf +0 -0
- package/src/app/fonts/SFMono/SFMonoLightItalic.otf +0 -0
- package/src/app/fonts/SFMono/SFMonoMedium.otf +0 -0
- package/src/app/fonts/SFMono/SFMonoMediumItalic.otf +0 -0
- package/src/app/fonts/SFMono/SFMonoRegular.otf +0 -0
- package/src/app/fonts/SFMono/SFMonoRegularItalic.otf +0 -0
- package/src/app/fonts/SFMono/SFMonoSemibold.otf +0 -0
- package/src/app/fonts/SFMono/SFMonoSemiboldItalic.otf +0 -0
- package/src/app/fonts.ts +39 -0
- package/src/app/globals.css +136 -0
- package/src/app/layout.tsx +46 -0
- package/src/app/logo.png +0 -0
- package/src/app/page.tsx +52 -0
- package/src/app/preview/[...slug]/download-button.tsx +138 -0
- package/src/app/preview/[...slug]/error-overlay.tsx +58 -0
- package/src/app/preview/[...slug]/page.tsx +90 -0
- package/src/app/preview/[...slug]/preview.tsx +249 -0
- package/src/app/preview/[...slug]/template-frame.tsx +68 -0
- package/src/components/button.tsx +101 -0
- package/src/components/code-container.tsx +169 -0
- package/src/components/code-snippet.tsx +9 -0
- package/src/components/code.tsx +185 -0
- package/src/components/heading.tsx +113 -0
- package/src/components/icons/icon-arrow-down.tsx +16 -0
- package/src/components/icons/icon-base.tsx +26 -0
- package/src/components/icons/icon-bug.tsx +19 -0
- package/src/components/icons/icon-button.tsx +23 -0
- package/src/components/icons/icon-check.tsx +19 -0
- package/src/components/icons/icon-clipboard.tsx +40 -0
- package/src/components/icons/icon-cloud-alert.tsx +18 -0
- package/src/components/icons/icon-cloud-check.tsx +17 -0
- package/src/components/icons/icon-download.tsx +19 -0
- package/src/components/icons/icon-file.tsx +19 -0
- package/src/components/icons/icon-folder-open.tsx +19 -0
- package/src/components/icons/icon-folder.tsx +18 -0
- package/src/components/icons/icon-hide-sidebar.tsx +23 -0
- package/src/components/icons/icon-image.tsx +19 -0
- package/src/components/icons/icon-info.tsx +18 -0
- package/src/components/icons/icon-link.tsx +14 -0
- package/src/components/icons/icon-loader.tsx +16 -0
- package/src/components/icons/icon-monitor.tsx +19 -0
- package/src/components/icons/icon-moon.tsx +16 -0
- package/src/components/icons/icon-phone.tsx +26 -0
- package/src/components/icons/icon-reload.tsx +18 -0
- package/src/components/icons/icon-source.tsx +19 -0
- package/src/components/icons/icon-stamp.tsx +14 -0
- package/src/components/icons/icon-sun.tsx +74 -0
- package/src/components/icons/icon-warning.tsx +31 -0
- package/src/components/index.ts +7 -0
- package/src/components/logo.tsx +41 -0
- package/src/components/resizable-wrapper.tsx +269 -0
- package/src/components/shell.tsx +95 -0
- package/src/components/sidebar/file-tree-directory-children.tsx +142 -0
- package/src/components/sidebar/file-tree-directory.tsx +92 -0
- package/src/components/sidebar/file-tree.tsx +31 -0
- package/src/components/sidebar/index.ts +1 -0
- package/src/components/sidebar/sidebar.tsx +46 -0
- package/src/components/text.tsx +99 -0
- package/src/components/toolbar/checking-results.tsx +150 -0
- package/src/components/toolbar/code-preview-line-link.tsx +39 -0
- package/src/components/toolbar/results-table.tsx +0 -0
- package/src/components/toolbar/results.tsx +52 -0
- package/src/components/toolbar/toolbar-button.tsx +52 -0
- package/src/components/toolbar/use-cached-state.ts +36 -0
- package/src/components/toolbar.tsx +182 -0
- package/src/components/tooltip-content.tsx +31 -0
- package/src/components/tooltip.tsx +19 -0
- package/src/components/topbar/active-view-toggle-group.tsx +86 -0
- package/src/components/topbar/emulated-dark-mode-toggle.tsx +58 -0
- package/src/components/topbar/view-size-controls.tsx +173 -0
- package/src/components/topbar.tsx +59 -0
- package/src/contexts/preview.tsx +91 -0
- package/src/contexts/templates.tsx +57 -0
- package/src/contexts/toolbar.tsx +22 -0
- package/src/hooks/use-clamped-state.ts +24 -0
- package/src/hooks/use-fragment-identifier.ts +14 -0
- package/src/hooks/use-hot-reload.ts +31 -0
- package/src/hooks/use-rendering-metadata.ts +37 -0
- package/src/hooks/use-template-rendering-result.ts +58 -0
- package/src/utils/cn.ts +6 -0
- package/src/utils/constants.ts +8 -0
- package/src/utils/contains-template.ts +52 -0
- package/src/utils/convert-stack-with-sourcemap.ts +79 -0
- package/src/utils/copy-text-to-clipboard.ts +7 -0
- package/src/utils/create-jsx-runtime.ts +47 -0
- package/src/utils/esbuild/escape-string-for-regex.ts +3 -0
- package/src/utils/esbuild/renderring-utilities-exporter.ts +64 -0
- package/src/utils/get-line-and-column-from-offset.ts +11 -0
- package/src/utils/get-template-component.ts +158 -0
- package/src/utils/get-templates-directory-metadata.ts +195 -0
- package/src/utils/index.ts +6 -0
- package/src/utils/language-map.ts +7 -0
- package/src/utils/load-stream.ts +15 -0
- package/src/utils/register-spinner-autostopping.ts +28 -0
- package/src/utils/result.ts +49 -0
- package/src/utils/run-bundled-code.ts +86 -0
- package/src/utils/sanitize.ts +6 -0
- package/src/utils/sleep.ts +3 -0
- package/src/utils/snake-to-camel.ts +5 -0
- package/src/utils/static-node-modules-for-vm.ts +93 -0
- package/src/utils/style-text.ts +11 -0
- package/src/utils/types/as.ts +26 -0
- package/src/utils/types/error-object.ts +11 -0
- package/src/utils/types/hot-reload-change.ts +13 -0
- package/src/utils/types/template.ts +8 -0
- package/src/utils/unreachable.ts +8 -0
- package/templates/.gitkeep +0 -0
- package/tsconfig.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/page-path/normalize-path-sep.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/page-path/ensure-leading-slash.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/segment.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/app-paths.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/lib/is-app-route-route.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/lib/metadata/is-metadata-route.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/isomorphic/path.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/i18n/normalize-locale-path.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/compiled/path-to-regexp/index.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/path-match.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/lib/constants.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/interception-routes.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/escape-regexp.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/remove-trailing-slash.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/parse-loader-tree.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/get-segment-param.tsx","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/routes/app.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/interception-prefix-from-param-type.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/resolve-param-value.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/get-dynamic-param.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/route-regex.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/utils.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/lib/route-pattern-normalizer.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/route-match-utils.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/route-matcher.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/querystring.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/parse-relative-url.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/parse-url.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/server/api-utils/get-cookie-parser.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/prepare-destination.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/server/web/utils.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/server/lib/decode-query-path-parameter.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/client/components/app-router-headers.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/lib/url.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/router/utils/format-url.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/server/server-utils.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/shared/lib/hash.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/lib/metadata/get-metadata-route.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/server/route-modules/app-page/vendored/rsc/react-server-dom-turbopack-static.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/client/components/layout-router.js/__nextjs-internal-proxy.cjs","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/client/components/layout-router.tsx","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/client/components/render-from-template-context.js/__nextjs-internal-proxy.cjs","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/client/components/render-from-template-context.tsx","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/client/components/client-page.js/__nextjs-internal-proxy.cjs","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/client/components/client-page.tsx","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/client/components/client-segment.js/__nextjs-internal-proxy.cjs","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/client/components/client-segment.tsx","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js/__nextjs-internal-proxy.cjs","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/client/components/http-access-fallback/error-boundary.tsx","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js/__nextjs-internal-proxy.cjs","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/lib/metadata/generate/icon-mark.tsx","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/framework/boundary-components.js/__nextjs-internal-proxy.cjs","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/lib/framework/boundary-components.tsx","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/src/server/route-modules/app-page/vendored/rsc/react-dom.ts","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.node.production.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/compiled/react-server-dom-turbopack/client.node.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/compiled/string-hash/index.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/lib/clone-response.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/client/components/static-generation-bailout.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/client/components/hooks-server-context.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/app-render/entry-base.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/shared/lib/utils/reflect-utils.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/metadata.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/generate/utils.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/resolve-metadata.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/resolvers/resolve-url.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/resolvers/resolve-title.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/url.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/picocolors.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/lib/lru-cache.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/lib/app-dir-module.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/request/search-params.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/lib/router-utils/is-postpone.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/app-render/rsc/preloads.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/app-render/create-error-handler.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/format-server-error.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/client/components/redirect-error.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/error-telemetry-utils.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/shared/lib/promise-with-resolvers.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/non-nullable.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/constants.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/default-metadata.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/framework/boundary-constants.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/interop-default.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/client/components/http-access-fallback/http-access-fallback.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/dynamic-rendering-utils.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/shared/lib/is-plain-object.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/request/utils.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/generate/icons.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/app-render/collect-segment-data.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/create-deduped-by-callsite-server-error-logger.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/is-error.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/client-and-server-references.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/shared/lib/segment-cache/segment-value-encoding.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/generate/opengraph.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/lib/patch-fetch.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/resolvers/resolve-basics.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/app-render/staged-rendering.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/app-render/react-large-shell-error.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/app-render/prospective-render-utils.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/build/output/log.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/generate/alternate.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/generate/meta.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/resolvers/resolve-icons.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/generate/basic.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/request/pathname.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/lib/lazy-result.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/lib/dedupe-fetch.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/app-render/rsc/taint.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/lib/metadata/resolvers/resolve-opengraph.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/client/components/is-next-router-error.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/request/params.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/shared/lib/server-reference-info.js","../../../../../../node_modules/.pnpm/next%4016.1.1_%40babel%2Bcore%407.26.10_react-dom%4019.2.3_react%4019.2.3__react%4019.2.3/node_modules/next/dist/esm/server/app-render/dynamic-rendering.js"],"sourcesContent":["/**\n * For a given page path, this function ensures that there is no backslash\n * escaping slashes in the path. Example:\n * - `foo\\/bar\\/baz` -> `foo/bar/baz`\n */\nexport function normalizePathSep(path: string): string {\n return path.replace(/\\\\/g, '/')\n}\n","/**\n * For a given page path, this function ensures that there is a leading slash.\n * If there is not a leading slash, one is added, otherwise it is noop.\n */\nexport function ensureLeadingSlash(path: string) {\n return path.startsWith('/') ? path : `/${path}`\n}\n","import type { FlightRouterState, Segment } from './app-router-types'\n\nexport function getSegmentValue(segment: Segment) {\n return Array.isArray(segment) ? segment[1] : segment\n}\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record<string, string | string[] | undefined>\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport function computeSelectedLayoutSegment(\n segments: string[] | null,\n parallelRouteKey: string\n): string | null {\n if (!segments || segments.length === 0) {\n return null\n }\n\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment =\n parallelRouteKey === 'children'\n ? segments[0]\n : segments[segments.length - 1]\n\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment\n}\n\n/** Get the canonical parameters from the current level to the leaf node. */\nexport function getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey]\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1]\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]\n }\n\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found'\n","import { ensureLeadingSlash } from '../../page-path/ensure-leading-slash'\nimport { isGroupSegment } from '../../segment'\n\n/**\n * Normalizes an app route so it represents the actual request path. Essentially\n * performing the following transformations:\n *\n * - `/(dashboard)/user/[id]/page` to `/user/[id]`\n * - `/(dashboard)/account/page` to `/account`\n * - `/user/[id]/page` to `/user/[id]`\n * - `/account/page` to `/account`\n * - `/page` to `/`\n * - `/(dashboard)/user/[id]/route` to `/user/[id]`\n * - `/(dashboard)/account/route` to `/account`\n * - `/user/[id]/route` to `/user/[id]`\n * - `/account/route` to `/account`\n * - `/route` to `/`\n * - `/` to `/`\n *\n * @param route the app route to normalize\n * @returns the normalized pathname\n */\nexport function normalizeAppPath(route: string) {\n return ensureLeadingSlash(\n route.split('/').reduce((pathname, segment, index, segments) => {\n // Empty segments are ignored.\n if (!segment) {\n return pathname\n }\n\n // Groups are ignored.\n if (isGroupSegment(segment)) {\n return pathname\n }\n\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname\n }\n\n // The last segment (if it's a leaf) should be ignored.\n if (\n (segment === 'page' || segment === 'route') &&\n index === segments.length - 1\n ) {\n return pathname\n }\n\n return `${pathname}/${segment}`\n }, '')\n )\n}\n\n/**\n * Strips the `.rsc` extension if it's in the pathname.\n * Since this function is used on full urls it checks `?` for searchParams handling.\n */\nexport function normalizeRscURL(url: string) {\n return url.replace(\n /\\.rsc($|\\?)/,\n // $1 ensures `?` is preserved\n '$1'\n )\n}\n","export function isAppRouteRoute(route: string): boolean {\n return route.endsWith('/route')\n}\n","import type { PageExtensions } from '../../build/page-extensions-type'\nimport { normalizePathSep } from '../../shared/lib/page-path/normalize-path-sep'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { isAppRouteRoute } from '../is-app-route-route'\n\nexport const STATIC_METADATA_IMAGES = {\n icon: {\n filename: 'icon',\n extensions: ['ico', 'jpg', 'jpeg', 'png', 'svg'],\n },\n apple: {\n filename: 'apple-icon',\n extensions: ['jpg', 'jpeg', 'png'],\n },\n favicon: {\n filename: 'favicon',\n extensions: ['ico'],\n },\n openGraph: {\n filename: 'opengraph-image',\n extensions: ['jpg', 'jpeg', 'png', 'gif'],\n },\n twitter: {\n filename: 'twitter-image',\n extensions: ['jpg', 'jpeg', 'png', 'gif'],\n },\n} as const\n\n// Match routes that are metadata routes, e.g. /sitemap.xml, /favicon.<ext>, /<icon>.<ext>, etc.\n// TODO-METADATA: support more metadata routes with more extensions\nexport const DEFAULT_METADATA_ROUTE_EXTENSIONS = ['js', 'jsx', 'ts', 'tsx']\n\n// Match the file extension with the dynamic multi-routes extensions\n// e.g. ([xml, js], null) -> can match `/sitemap.xml/route`, `sitemap.js/route`\n// e.g. ([png], [ts]) -> can match `/opengraph-image.png`, `/opengraph-image.ts`\nexport const getExtensionRegexString = (\n staticExtensions: readonly string[],\n dynamicExtensions: readonly string[] | null\n) => {\n let result: string\n // If there's no possible multi dynamic routes, will not match any <name>[].<ext> files\n if (!dynamicExtensions || dynamicExtensions.length === 0) {\n result = `(\\\\.(?:${staticExtensions.join('|')}))`\n } else {\n result = `(?:\\\\.(${staticExtensions.join('|')})|(\\\\.(${dynamicExtensions.join('|')})))`\n }\n return result\n}\n\n/**\n * Matches the static metadata files, e.g. /robots.txt, /sitemap.xml, /favicon.ico, etc.\n * @param appDirRelativePath the relative file path to app/\n * @returns if the path is a static metadata file route\n */\nexport function isStaticMetadataFile(appDirRelativePath: string) {\n return isMetadataRouteFile(appDirRelativePath, [], true)\n}\n\n// Pre-compiled static regexes for common cases\nconst FAVICON_REGEX = /^[\\\\/]favicon\\.ico$/\nconst ROBOTS_TXT_REGEX = /^[\\\\/]robots\\.txt$/\nconst MANIFEST_JSON_REGEX = /^[\\\\/]manifest\\.json$/\nconst MANIFEST_WEBMANIFEST_REGEX = /^[\\\\/]manifest\\.webmanifest$/\nconst SITEMAP_XML_REGEX = /[\\\\/]sitemap\\.xml$/\n\n// Cache for compiled regex patterns based on parameters\nconst compiledRegexCache = new Map<string, RegExp[]>()\n\n// Fast path checks for common metadata files\nfunction fastPathCheck(normalizedPath: string): boolean | null {\n // Check favicon.ico first (most common)\n if (FAVICON_REGEX.test(normalizedPath)) return true\n\n // Check other common static files\n if (ROBOTS_TXT_REGEX.test(normalizedPath)) return true\n if (MANIFEST_JSON_REGEX.test(normalizedPath)) return true\n if (MANIFEST_WEBMANIFEST_REGEX.test(normalizedPath)) return true\n if (SITEMAP_XML_REGEX.test(normalizedPath)) return true\n\n // Quick negative check - if it doesn't contain any metadata keywords, skip\n if (\n !normalizedPath.includes('robots') &&\n !normalizedPath.includes('manifest') &&\n !normalizedPath.includes('sitemap') &&\n !normalizedPath.includes('icon') &&\n !normalizedPath.includes('apple-icon') &&\n !normalizedPath.includes('opengraph-image') &&\n !normalizedPath.includes('twitter-image') &&\n !normalizedPath.includes('favicon')\n ) {\n return false\n }\n\n return null // Continue with full regex matching\n}\n\nfunction getCompiledRegexes(\n pageExtensions: PageExtensions,\n strictlyMatchExtensions: boolean\n): RegExp[] {\n // Create cache key\n const cacheKey = `${pageExtensions.join(',')}|${strictlyMatchExtensions}`\n\n const cached = compiledRegexCache.get(cacheKey)\n if (cached) {\n return cached\n }\n\n // Pre-compute common strings\n const trailingMatcher = strictlyMatchExtensions ? '$' : '?$'\n const variantsMatcher = '\\\\d?'\n const groupSuffix = strictlyMatchExtensions ? '' : '(-\\\\w{6})?'\n const suffixMatcher = variantsMatcher + groupSuffix\n\n // Pre-compute extension arrays to avoid repeated concatenation\n const robotsExts =\n pageExtensions.length > 0 ? [...pageExtensions, 'txt'] : ['txt']\n const manifestExts =\n pageExtensions.length > 0\n ? [...pageExtensions, 'webmanifest', 'json']\n : ['webmanifest', 'json']\n\n const regexes = [\n new RegExp(\n `^[\\\\\\\\/]robots${getExtensionRegexString(robotsExts, null)}${trailingMatcher}`\n ),\n new RegExp(\n `^[\\\\\\\\/]manifest${getExtensionRegexString(manifestExts, null)}${trailingMatcher}`\n ),\n // FAVICON_REGEX removed - already handled in fastPathCheck\n new RegExp(\n `[\\\\\\\\/]sitemap${getExtensionRegexString(['xml'], pageExtensions)}${trailingMatcher}`\n ),\n new RegExp(\n `[\\\\\\\\/]icon${suffixMatcher}${getExtensionRegexString(\n STATIC_METADATA_IMAGES.icon.extensions,\n pageExtensions\n )}${trailingMatcher}`\n ),\n new RegExp(\n `[\\\\\\\\/]apple-icon${suffixMatcher}${getExtensionRegexString(\n STATIC_METADATA_IMAGES.apple.extensions,\n pageExtensions\n )}${trailingMatcher}`\n ),\n new RegExp(\n `[\\\\\\\\/]opengraph-image${suffixMatcher}${getExtensionRegexString(\n STATIC_METADATA_IMAGES.openGraph.extensions,\n pageExtensions\n )}${trailingMatcher}`\n ),\n new RegExp(\n `[\\\\\\\\/]twitter-image${suffixMatcher}${getExtensionRegexString(\n STATIC_METADATA_IMAGES.twitter.extensions,\n pageExtensions\n )}${trailingMatcher}`\n ),\n ]\n\n compiledRegexCache.set(cacheKey, regexes)\n return regexes\n}\n\n/**\n * Determine if the file is a metadata route file entry\n * @param appDirRelativePath the relative file path to app/\n * @param pageExtensions the js extensions, such as ['js', 'jsx', 'ts', 'tsx']\n * @param strictlyMatchExtensions if it's true, match the file with page extension, otherwise match the file with default corresponding extension\n * @returns if the file is a metadata route file\n */\nexport function isMetadataRouteFile(\n appDirRelativePath: string,\n pageExtensions: PageExtensions,\n strictlyMatchExtensions: boolean\n): boolean {\n // Early exit for empty or obviously non-metadata paths\n if (!appDirRelativePath || appDirRelativePath.length < 2) {\n return false\n }\n\n const normalizedPath = normalizePathSep(appDirRelativePath)\n\n // Fast path check for common cases\n const fastResult = fastPathCheck(normalizedPath)\n if (fastResult !== null) {\n return fastResult\n }\n\n // Get compiled regexes from cache\n const regexes = getCompiledRegexes(pageExtensions, strictlyMatchExtensions)\n\n // Use for loop instead of .some() for better performance\n for (let i = 0; i < regexes.length; i++) {\n if (regexes[i].test(normalizedPath)) {\n return true\n }\n }\n\n return false\n}\n\n// Check if the route is a static metadata route, with /route suffix\n// e.g. /favicon.ico/route, /icon.png/route, etc.\n// But skip the text routes like robots.txt since they might also be dynamic.\n// Checking route path is not enough to determine if text routes is dynamic.\nexport function isStaticMetadataRoute(route: string) {\n // extract ext with regex\n const pathname = route.replace(/\\/route$/, '')\n\n const matched =\n isAppRouteRoute(route) &&\n isMetadataRouteFile(pathname, [], true) &&\n // These routes can either be built by static or dynamic entrypoints,\n // so we assume they're dynamic\n pathname !== '/robots.txt' &&\n pathname !== '/manifest.webmanifest' &&\n !pathname.endsWith('/sitemap.xml')\n\n return matched\n}\n\n/**\n * Determine if a page or pathname is a metadata page.\n *\n * The input is a page or pathname, which can be with or without page suffix /foo/page or /foo.\n * But it will not contain the /route suffix.\n *\n * .e.g\n * /robots -> true\n * /sitemap -> true\n * /foo -> false\n */\nexport function isMetadataPage(page: string) {\n const matched = !isAppRouteRoute(page) && isMetadataRouteFile(page, [], false)\n\n return matched\n}\n\n/*\n * Determine if a Next.js route is a metadata route.\n * `route` will has a route suffix.\n *\n * e.g.\n * /app/robots/route -> true\n * /robots/route -> true\n * /sitemap/[__metadata_id__]/route -> true\n * /app/sitemap/page -> false\n * /icon-a102f4/route -> true\n */\nexport function isMetadataRoute(route: string): boolean {\n let page = normalizeAppPath(route)\n .replace(/^\\/?app\\//, '')\n // Remove the dynamic route id\n .replace('/[__metadata_id__]', '')\n // Remove the /route suffix\n .replace(/\\/route$/, '')\n\n if (page[0] !== '/') page = '/' + page\n\n const matched = isAppRouteRoute(route) && isMetadataRouteFile(page, [], false)\n\n return matched\n}\n","/**\n * This module is for next.js server internal usage of path module.\n * It will use native path module for nodejs runtime.\n * It will use path-browserify polyfill for edge runtime.\n */\nlet path\n\nif (process.env.NEXT_RUNTIME === 'edge') {\n path = require('next/dist/compiled/path-browserify')\n} else {\n path = require('path')\n}\n\nmodule.exports = path\n","export interface PathLocale {\n detectedLocale?: string\n pathname: string\n}\n\n/**\n * A cache of lowercased locales for each list of locales. This is stored as a\n * WeakMap so if the locales are garbage collected, the cache entry will be\n * removed as well.\n */\nconst cache = new WeakMap<readonly string[], readonly string[]>()\n\n/**\n * For a pathname that may include a locale from a list of locales, it\n * removes the locale from the pathname returning it alongside with the\n * detected locale.\n *\n * @param pathname A pathname that may include a locale.\n * @param locales A list of locales.\n * @returns The detected locale and pathname without locale\n */\nexport function normalizeLocalePath(\n pathname: string,\n locales?: readonly string[]\n): PathLocale {\n // If locales is undefined, return the pathname as is.\n if (!locales) return { pathname }\n\n // Get the cached lowercased locales or create a new cache entry.\n let lowercasedLocales = cache.get(locales)\n if (!lowercasedLocales) {\n lowercasedLocales = locales.map((locale) => locale.toLowerCase())\n cache.set(locales, lowercasedLocales)\n }\n\n let detectedLocale: string | undefined\n\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2)\n\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return { pathname }\n\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase()\n\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = lowercasedLocales.indexOf(segment)\n if (index < 0) return { pathname }\n\n // Return the case-sensitive locale.\n detectedLocale = locales[index]\n\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/'\n\n return { pathname, detectedLocale }\n}\n","(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var n=e;Object.defineProperty(n,\"__esModule\",{value:true});n.pathToRegexp=n.tokensToRegexp=n.regexpToFunction=n.match=n.tokensToFunction=n.compile=n.parse=void 0;function lexer(e){var n=[];var r=0;while(r<e.length){var t=e[r];if(t===\"*\"||t===\"+\"||t===\"?\"){n.push({type:\"MODIFIER\",index:r,value:e[r++]});continue}if(t===\"\\\\\"){n.push({type:\"ESCAPED_CHAR\",index:r++,value:e[r++]});continue}if(t===\"{\"){n.push({type:\"OPEN\",index:r,value:e[r++]});continue}if(t===\"}\"){n.push({type:\"CLOSE\",index:r,value:e[r++]});continue}if(t===\":\"){var a=\"\";var i=r+1;while(i<e.length){var o=e.charCodeAt(i);if(o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122||o===95){a+=e[i++];continue}break}if(!a)throw new TypeError(\"Missing parameter name at \".concat(r));n.push({type:\"NAME\",index:r,value:a});r=i;continue}if(t===\"(\"){var c=1;var f=\"\";var i=r+1;if(e[i]===\"?\"){throw new TypeError('Pattern cannot start with \"?\" at '.concat(i))}while(i<e.length){if(e[i]===\"\\\\\"){f+=e[i++]+e[i++];continue}if(e[i]===\")\"){c--;if(c===0){i++;break}}else if(e[i]===\"(\"){c++;if(e[i+1]!==\"?\"){throw new TypeError(\"Capturing groups are not allowed at \".concat(i))}}f+=e[i++]}if(c)throw new TypeError(\"Unbalanced pattern at \".concat(r));if(!f)throw new TypeError(\"Missing pattern at \".concat(r));n.push({type:\"PATTERN\",index:r,value:f});r=i;continue}n.push({type:\"CHAR\",index:r,value:e[r++]})}n.push({type:\"END\",index:r,value:\"\"});return n}function parse(e,n){if(n===void 0){n={}}var r=lexer(e);var t=n.prefixes,a=t===void 0?\"./\":t,i=n.delimiter,o=i===void 0?\"/#?\":i;var c=[];var f=0;var u=0;var p=\"\";var tryConsume=function(e){if(u<r.length&&r[u].type===e)return r[u++].value};var mustConsume=function(e){var n=tryConsume(e);if(n!==undefined)return n;var t=r[u],a=t.type,i=t.index;throw new TypeError(\"Unexpected \".concat(a,\" at \").concat(i,\", expected \").concat(e))};var consumeText=function(){var e=\"\";var n;while(n=tryConsume(\"CHAR\")||tryConsume(\"ESCAPED_CHAR\")){e+=n}return e};var isSafe=function(e){for(var n=0,r=o;n<r.length;n++){var t=r[n];if(e.indexOf(t)>-1)return true}return false};var safePattern=function(e){var n=c[c.length-1];var r=e||(n&&typeof n===\"string\"?n:\"\");if(n&&!r){throw new TypeError('Must have text between two parameters, missing text after \"'.concat(n.name,'\"'))}if(!r||isSafe(r))return\"[^\".concat(escapeString(o),\"]+?\");return\"(?:(?!\".concat(escapeString(r),\")[^\").concat(escapeString(o),\"])+?\")};while(u<r.length){var v=tryConsume(\"CHAR\");var s=tryConsume(\"NAME\");var d=tryConsume(\"PATTERN\");if(s||d){var g=v||\"\";if(a.indexOf(g)===-1){p+=g;g=\"\"}if(p){c.push(p);p=\"\"}c.push({name:s||f++,prefix:g,suffix:\"\",pattern:d||safePattern(g),modifier:tryConsume(\"MODIFIER\")||\"\"});continue}var x=v||tryConsume(\"ESCAPED_CHAR\");if(x){p+=x;continue}if(p){c.push(p);p=\"\"}var h=tryConsume(\"OPEN\");if(h){var g=consumeText();var l=tryConsume(\"NAME\")||\"\";var m=tryConsume(\"PATTERN\")||\"\";var T=consumeText();mustConsume(\"CLOSE\");c.push({name:l||(m?f++:\"\"),pattern:l&&!m?safePattern(g):m,prefix:g,suffix:T,modifier:tryConsume(\"MODIFIER\")||\"\"});continue}mustConsume(\"END\")}return c}n.parse=parse;function compile(e,n){return tokensToFunction(parse(e,n),n)}n.compile=compile;function tokensToFunction(e,n){if(n===void 0){n={}}var r=flags(n);var t=n.encode,a=t===void 0?function(e){return e}:t,i=n.validate,o=i===void 0?true:i;var c=e.map((function(e){if(typeof e===\"object\"){return new RegExp(\"^(?:\".concat(e.pattern,\")$\"),r)}}));return function(n){var r=\"\";for(var t=0;t<e.length;t++){var i=e[t];if(typeof i===\"string\"){r+=i;continue}var f=n?n[i.name]:undefined;var u=i.modifier===\"?\"||i.modifier===\"*\";var p=i.modifier===\"*\"||i.modifier===\"+\";if(Array.isArray(f)){if(!p){throw new TypeError('Expected \"'.concat(i.name,'\" to not repeat, but got an array'))}if(f.length===0){if(u)continue;throw new TypeError('Expected \"'.concat(i.name,'\" to not be empty'))}for(var v=0;v<f.length;v++){var s=a(f[v],i);if(o&&!c[t].test(s)){throw new TypeError('Expected all \"'.concat(i.name,'\" to match \"').concat(i.pattern,'\", but got \"').concat(s,'\"'))}r+=i.prefix+s+i.suffix}continue}if(typeof f===\"string\"||typeof f===\"number\"){var s=a(String(f),i);if(o&&!c[t].test(s)){throw new TypeError('Expected \"'.concat(i.name,'\" to match \"').concat(i.pattern,'\", but got \"').concat(s,'\"'))}r+=i.prefix+s+i.suffix;continue}if(u)continue;var d=p?\"an array\":\"a string\";throw new TypeError('Expected \"'.concat(i.name,'\" to be ').concat(d))}return r}}n.tokensToFunction=tokensToFunction;function match(e,n){var r=[];var t=pathToRegexp(e,r,n);return regexpToFunction(t,r,n)}n.match=match;function regexpToFunction(e,n,r){if(r===void 0){r={}}var t=r.decode,a=t===void 0?function(e){return e}:t;return function(r){var t=e.exec(r);if(!t)return false;var i=t[0],o=t.index;var c=Object.create(null);var _loop_1=function(e){if(t[e]===undefined)return\"continue\";var r=n[e-1];if(r.modifier===\"*\"||r.modifier===\"+\"){c[r.name]=t[e].split(r.prefix+r.suffix).map((function(e){return a(e,r)}))}else{c[r.name]=a(t[e],r)}};for(var f=1;f<t.length;f++){_loop_1(f)}return{path:i,index:o,params:c}}}n.regexpToFunction=regexpToFunction;function escapeString(e){return e.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g,\"\\\\$1\")}function flags(e){return e&&e.sensitive?\"\":\"i\"}function regexpToRegexp(e,n){if(!n)return e;var r=/\\((?:\\?<(.*?)>)?(?!\\?)/g;var t=0;var a=r.exec(e.source);while(a){n.push({name:a[1]||t++,prefix:\"\",suffix:\"\",modifier:\"\",pattern:\"\"});a=r.exec(e.source)}return e}function arrayToRegexp(e,n,r){var t=e.map((function(e){return pathToRegexp(e,n,r).source}));return new RegExp(\"(?:\".concat(t.join(\"|\"),\")\"),flags(r))}function stringToRegexp(e,n,r){return tokensToRegexp(parse(e,r),n,r)}function tokensToRegexp(e,n,r){if(r===void 0){r={}}var t=r.strict,a=t===void 0?false:t,i=r.start,o=i===void 0?true:i,c=r.end,f=c===void 0?true:c,u=r.encode,p=u===void 0?function(e){return e}:u,v=r.delimiter,s=v===void 0?\"/#?\":v,d=r.endsWith,g=d===void 0?\"\":d;var x=\"[\".concat(escapeString(g),\"]|$\");var h=\"[\".concat(escapeString(s),\"]\");var l=o?\"^\":\"\";for(var m=0,T=e;m<T.length;m++){var E=T[m];if(typeof E===\"string\"){l+=escapeString(p(E))}else{var w=escapeString(p(E.prefix));var y=escapeString(p(E.suffix));if(E.pattern){if(n)n.push(E);if(w||y){if(E.modifier===\"+\"||E.modifier===\"*\"){var R=E.modifier===\"*\"?\"?\":\"\";l+=\"(?:\".concat(w,\"((?:\").concat(E.pattern,\")(?:\").concat(y).concat(w,\"(?:\").concat(E.pattern,\"))*)\").concat(y,\")\").concat(R)}else{l+=\"(?:\".concat(w,\"(\").concat(E.pattern,\")\").concat(y,\")\").concat(E.modifier)}}else{if(E.modifier===\"+\"||E.modifier===\"*\"){throw new TypeError('Can not repeat \"'.concat(E.name,'\" without a prefix and suffix'))}l+=\"(\".concat(E.pattern,\")\").concat(E.modifier)}}else{l+=\"(?:\".concat(w).concat(y,\")\").concat(E.modifier)}}}if(f){if(!a)l+=\"\".concat(h,\"?\");l+=!r.endsWith?\"$\":\"(?=\".concat(x,\")\")}else{var A=e[e.length-1];var _=typeof A===\"string\"?h.indexOf(A[A.length-1])>-1:A===undefined;if(!a){l+=\"(?:\".concat(h,\"(?=\").concat(x,\"))?\")}if(!_){l+=\"(?=\".concat(h,\"|\").concat(x,\")\")}}return new RegExp(l,flags(r))}n.tokensToRegexp=tokensToRegexp;function pathToRegexp(e,n,r){if(e instanceof RegExp)return regexpToRegexp(e,n);if(Array.isArray(e))return arrayToRegexp(e,n,r);return stringToRegexp(e,n,r)}n.pathToRegexp=pathToRegexp})();module.exports=e})();","import type { Key } from 'next/dist/compiled/path-to-regexp'\nimport { regexpToFunction } from 'next/dist/compiled/path-to-regexp'\nimport { pathToRegexp } from 'next/dist/compiled/path-to-regexp'\n\ninterface Options {\n /**\n * A transformer function that will be applied to the regexp generated\n * from the provided path and path-to-regexp.\n */\n regexModifier?: (regex: string) => string\n /**\n * When true the function will remove all unnamed parameters\n * from the matched parameters.\n */\n removeUnnamedParams?: boolean\n /**\n * When true the regexp won't allow an optional trailing delimiter\n * to match.\n */\n strict?: boolean\n\n /**\n * When true the matcher will be case-sensitive, defaults to false\n */\n sensitive?: boolean\n}\n\nexport type PatchMatcher = (\n pathname: string,\n params?: Record<string, any>\n) => Record<string, any> | false\n\n/**\n * Generates a path matcher function for a given path and options based on\n * path-to-regexp. By default the match will be case insensitive, non strict\n * and delimited by `/`.\n */\nexport function getPathMatch(path: string, options?: Options): PatchMatcher {\n const keys: Key[] = []\n const regexp = pathToRegexp(path, keys, {\n delimiter: '/',\n sensitive:\n typeof options?.sensitive === 'boolean' ? options.sensitive : false,\n strict: options?.strict,\n })\n\n const matcher = regexpToFunction<Record<string, any>>(\n options?.regexModifier\n ? new RegExp(options.regexModifier(regexp.source), regexp.flags)\n : regexp,\n keys\n )\n\n /**\n * A matcher function that will check if a given pathname matches the path\n * given in the builder function. When the path does not match it will return\n * `false` but if it does it will return an object with the matched params\n * merged with the params provided in the second argument.\n */\n return (pathname, params) => {\n // If no pathname is provided it's not a match.\n if (typeof pathname !== 'string') return false\n\n const match = matcher(pathname)\n\n // If the path did not match `false` will be returned.\n if (!match) return false\n\n /**\n * If unnamed params are not allowed they must be removed from\n * the matched parameters. path-to-regexp uses \"string\" for named and\n * \"number\" for unnamed parameters.\n */\n if (options?.removeUnnamedParams) {\n for (const key of keys) {\n if (typeof key.name === 'number') {\n delete match.params[key.name]\n }\n }\n }\n\n return { ...params, ...match.params }\n }\n}\n","import type { ServerRuntime } from '../types'\n\nexport const TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain'\nexport const HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8'\nexport const JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8'\nexport const NEXT_QUERY_PARAM_PREFIX = 'nxtP'\nexport const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI'\n\nexport const MATCHED_PATH_HEADER = 'x-matched-path'\nexport const PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate'\nexport const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER =\n 'x-prerender-revalidate-if-generated'\n\nexport const RSC_SEGMENTS_DIR_SUFFIX = '.segments'\nexport const RSC_SEGMENT_SUFFIX = '.segment.rsc'\nexport const RSC_SUFFIX = '.rsc'\nexport const ACTION_SUFFIX = '.action'\nexport const NEXT_DATA_SUFFIX = '.json'\nexport const NEXT_META_SUFFIX = '.meta'\nexport const NEXT_BODY_SUFFIX = '.body'\n\nexport const NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags'\nexport const NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags'\nexport const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER =\n 'x-next-revalidate-tag-token'\n\nexport const NEXT_RESUME_HEADER = 'next-resume'\n\n// if these change make sure we update the related\n// documentation as well\nexport const NEXT_CACHE_TAG_MAX_ITEMS = 128\nexport const NEXT_CACHE_TAG_MAX_LENGTH = 256\nexport const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024\nexport const NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_'\n\n// in seconds\nexport const CACHE_ONE_YEAR = 31536000\n\n// in seconds, represents revalidate=false. I.e. never revaliate.\n// We use this value since it can be represented as a V8 SMI for optimal performance.\n// It can also be serialized as JSON if it ever leaks accidentally as an actual value.\nexport const INFINITE_CACHE = 0xfffffffe\n\n// Patterns to detect middleware files\nexport const MIDDLEWARE_FILENAME = 'middleware'\nexport const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`\n\n// Patterns to detect proxy files (replacement for middleware)\nexport const PROXY_FILENAME = 'proxy'\nexport const PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`\n\n// Pattern to detect instrumentation hooks file\nexport const INSTRUMENTATION_HOOK_FILENAME = 'instrumentation'\n\n// Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path,\n// we have to use a private alias\nexport const PAGES_DIR_ALIAS = 'private-next-pages'\nexport const DOT_NEXT_ALIAS = 'private-dot-next'\nexport const ROOT_DIR_ALIAS = 'private-next-root-dir'\nexport const APP_DIR_ALIAS = 'private-next-app-dir'\nexport const RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy'\nexport const RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate'\nexport const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference'\nexport const RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper'\nexport const RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS =\n 'private-next-rsc-track-dynamic-import'\nexport const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption'\nexport const RSC_ACTION_CLIENT_WRAPPER_ALIAS =\n 'private-next-rsc-action-client-wrapper'\n\nexport const PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`\n\nexport const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`\n\nexport const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`\n\nexport const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`\n\nexport const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`\n\nexport const SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`\n\nexport const GSP_NO_RETURNED_VALUE =\n 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?'\nexport const GSSP_NO_RETURNED_VALUE =\n 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?'\n\nexport const UNSTABLE_REVALIDATE_RENAME_ERROR =\n 'The `unstable_revalidate` property is available for general use.\\n' +\n 'Please use `revalidate` instead.'\n\nexport const GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`\n\nexport const NON_STANDARD_NODE_ENV = `You are using a non-standard \"NODE_ENV\" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`\n\nexport const SSG_FALLBACK_EXPORT_ERROR = `Pages with \\`fallback\\` enabled in \\`getStaticPaths\\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`\n\nexport const ESLINT_DEFAULT_DIRS = ['app', 'pages', 'components', 'lib', 'src']\n\nexport const SERVER_RUNTIME: Record<string, ServerRuntime> = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs',\n}\n\nexport const WEB_SOCKET_MAX_RECONNECTIONS = 12\n\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */\nconst WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */\n shared: 'shared',\n /**\n * The layer for server-only runtime and picking up `react-server` export conditions.\n * Including app router RSC pages and app router custom routes and metadata routes.\n */\n reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */\n serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */\n actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */\n apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */\n apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */\n middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */\n instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */\n edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */\n appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */\n pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */\n pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */\n pagesDirNode: 'pages-dir-node',\n} as const\n\nexport type WebpackLayerName =\n (typeof WEBPACK_LAYERS_NAMES)[keyof typeof WEBPACK_LAYERS_NAMES]\n\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n builtinReact: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n neutralTarget: [\n // pages api\n WEBPACK_LAYERS_NAMES.apiNode,\n WEBPACK_LAYERS_NAMES.apiEdge,\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n ],\n bundled: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n appPages: [\n // app router pages and layouts\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n },\n}\n\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: '__next_edge_ssr_entry__',\n metadata: '__next_metadata__',\n metadataRoute: '__next_metadata_route__',\n metadataImageMeta: '__next_metadata_image_meta__',\n}\n\nexport { WEBPACK_LAYERS, WEBPACK_RESOURCE_QUERIES }\n","import { normalizeAppPath } from './app-paths'\n\n// order matters here, the first match will be used\nexport const INTERCEPTION_ROUTE_MARKERS = [\n '(..)(..)',\n '(.)',\n '(..)',\n '(...)',\n] as const\n\nexport type InterceptionMarker = (typeof INTERCEPTION_ROUTE_MARKERS)[number]\n\nexport function isInterceptionRouteAppPath(path: string): boolean {\n // TODO-APP: add more serious validation\n return (\n path\n .split('/')\n .find((segment) =>\n INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m))\n ) !== undefined\n )\n}\n\ntype InterceptionRouteInformation = {\n /**\n * The intercepting route. This is the route that is being intercepted or the\n * route that the user was coming from. This is matched by the Next-Url\n * header.\n */\n interceptingRoute: string\n\n /**\n * The intercepted route. This is the route that is being intercepted or the\n * route that the user is going to. This is matched by the request pathname.\n */\n interceptedRoute: string\n}\n\nexport function extractInterceptionRouteInformation(\n path: string\n): InterceptionRouteInformation {\n let interceptingRoute: string | undefined\n let marker: (typeof INTERCEPTION_ROUTE_MARKERS)[number] | undefined\n let interceptedRoute: string | undefined\n\n for (const segment of path.split('/')) {\n marker = INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m))\n if (marker) {\n ;[interceptingRoute, interceptedRoute] = path.split(marker, 2)\n break\n }\n }\n\n if (!interceptingRoute || !marker || !interceptedRoute) {\n throw new Error(\n `Invalid interception route: ${path}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`\n )\n }\n\n interceptingRoute = normalizeAppPath(interceptingRoute) // normalize the path, e.g. /(blog)/feed -> /feed\n\n switch (marker) {\n case '(.)':\n // (.) indicates that we should match with sibling routes, so we just need to append the intercepted route to the intercepting route\n if (interceptingRoute === '/') {\n interceptedRoute = `/${interceptedRoute}`\n } else {\n interceptedRoute = interceptingRoute + '/' + interceptedRoute\n }\n break\n case '(..)':\n // (..) indicates that we should match at one level up, so we need to remove the last segment of the intercepting route\n if (interceptingRoute === '/') {\n throw new Error(\n `Invalid interception route: ${path}. Cannot use (..) marker at the root level, use (.) instead.`\n )\n }\n interceptedRoute = interceptingRoute\n .split('/')\n .slice(0, -1)\n .concat(interceptedRoute)\n .join('/')\n break\n case '(...)':\n // (...) will match the route segment in the root directory, so we need to use the root directory to prepend the intercepted route\n interceptedRoute = '/' + interceptedRoute\n break\n case '(..)(..)':\n // (..)(..) indicates that we should match at two levels up, so we need to remove the last two segments of the intercepting route\n\n const splitInterceptingRoute = interceptingRoute.split('/')\n if (splitInterceptingRoute.length <= 2) {\n throw new Error(\n `Invalid interception route: ${path}. Cannot use (..)(..) marker at the root level or one level up.`\n )\n }\n\n interceptedRoute = splitInterceptingRoute\n .slice(0, -2)\n .concat(interceptedRoute)\n .join('/')\n break\n default:\n throw new Error('Invariant: unexpected marker')\n }\n\n return { interceptingRoute, interceptedRoute }\n}\n","// regexp is based on https://github.com/sindresorhus/escape-string-regexp\nconst reHasRegExp = /[|\\\\{}()[\\]^$+*?.-]/\nconst reReplaceRegExp = /[|\\\\{}()[\\]^$+*?.-]/g\n\nexport function escapeStringRegexp(str: string) {\n // see also: https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/escapeRegExp.js#L23\n if (reHasRegExp.test(str)) {\n return str.replace(reReplaceRegExp, '\\\\$&')\n }\n return str\n}\n","/**\n * Removes the trailing slash for a given route or page path. Preserves the\n * root page. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n * - `/` -> `/`\n */\nexport function removeTrailingSlash(route: string) {\n return route.replace(/\\/$/, '') || '/'\n}\n","import { DEFAULT_SEGMENT_KEY } from '../../segment'\nimport type { LoaderTree } from '../../../../server/lib/app-dir-module'\n\nexport function parseLoaderTree(tree: LoaderTree) {\n const [segment, parallelRoutes, modules] = tree\n const { layout, template } = modules\n let { page } = modules\n // a __DEFAULT__ segment means that this route didn't match any of the\n // segments in the route, so we should use the default page\n page = segment === DEFAULT_SEGMENT_KEY ? modules.defaultPage : page\n\n const conventionPath = layout?.[1] || template?.[1] || page?.[1]\n\n return {\n page,\n segment,\n modules,\n /* it can be either layout / template / page */\n conventionPath,\n parallelRoutes,\n }\n}\n","import { INTERCEPTION_ROUTE_MARKERS } from './interception-routes'\nimport type { DynamicParamTypes } from '../../app-router-types'\n\nexport type SegmentParam = {\n paramName: string\n paramType: DynamicParamTypes\n}\n\n/**\n * Parse dynamic route segment to type of parameter\n */\nexport function getSegmentParam(segment: string): SegmentParam | null {\n const interceptionMarker = INTERCEPTION_ROUTE_MARKERS.find((marker) =>\n segment.startsWith(marker)\n )\n\n // if an interception marker is part of the path segment, we need to jump ahead\n // to the relevant portion for param parsing\n if (interceptionMarker) {\n segment = segment.slice(interceptionMarker.length)\n }\n\n if (segment.startsWith('[[...') && segment.endsWith(']]')) {\n return {\n // TODO-APP: Optional catchall does not currently work with parallel routes,\n // so for now aren't handling a potential interception marker.\n paramType: 'optional-catchall',\n paramName: segment.slice(5, -2),\n }\n }\n\n if (segment.startsWith('[...') && segment.endsWith(']')) {\n return {\n paramType: interceptionMarker\n ? `catchall-intercepted-${interceptionMarker}`\n : 'catchall',\n paramName: segment.slice(4, -1),\n }\n }\n\n if (segment.startsWith('[') && segment.endsWith(']')) {\n return {\n paramType: interceptionMarker\n ? `dynamic-intercepted-${interceptionMarker}`\n : 'dynamic',\n paramName: segment.slice(1, -1),\n }\n }\n\n return null\n}\n\nexport function isCatchAll(\n type: DynamicParamTypes\n): type is\n | 'catchall'\n | 'catchall-intercepted-(..)(..)'\n | 'catchall-intercepted-(.)'\n | 'catchall-intercepted-(..)'\n | 'catchall-intercepted-(...)'\n | 'optional-catchall' {\n return (\n type === 'catchall' ||\n type === 'catchall-intercepted-(..)(..)' ||\n type === 'catchall-intercepted-(.)' ||\n type === 'catchall-intercepted-(..)' ||\n type === 'catchall-intercepted-(...)' ||\n type === 'optional-catchall'\n )\n}\n\nexport function getParamProperties(paramType: DynamicParamTypes): {\n repeat: boolean\n optional: boolean\n} {\n let repeat = false\n let optional = false\n\n switch (paramType) {\n case 'catchall':\n case 'catchall-intercepted-(..)(..)':\n case 'catchall-intercepted-(.)':\n case 'catchall-intercepted-(..)':\n case 'catchall-intercepted-(...)':\n repeat = true\n break\n case 'optional-catchall':\n repeat = true\n optional = true\n break\n case 'dynamic':\n case 'dynamic-intercepted-(..)(..)':\n case 'dynamic-intercepted-(.)':\n case 'dynamic-intercepted-(..)':\n case 'dynamic-intercepted-(...)':\n break\n default:\n paramType satisfies never\n }\n\n return { repeat, optional }\n}\n","import { InvariantError } from '../../invariant-error'\nimport { getSegmentParam, type SegmentParam } from '../utils/get-segment-param'\nimport {\n INTERCEPTION_ROUTE_MARKERS,\n type InterceptionMarker,\n} from '../utils/interception-routes'\n\nexport type RouteGroupAppRouteSegment = {\n type: 'route-group'\n name: string\n\n /**\n * If present, this segment has an interception marker prefixing it.\n */\n interceptionMarker?: InterceptionMarker\n}\n\nexport type ParallelRouteAppRouteSegment = {\n type: 'parallel-route'\n name: string\n\n /**\n * If present, this segment has an interception marker prefixing it.\n */\n interceptionMarker?: InterceptionMarker\n}\n\nexport type StaticAppRouteSegment = {\n type: 'static'\n name: string\n\n /**\n * If present, this segment has an interception marker prefixing it.\n */\n interceptionMarker?: InterceptionMarker\n}\n\nexport type DynamicAppRouteSegment = {\n type: 'dynamic'\n name: string\n param: SegmentParam\n\n /**\n * If present, this segment has an interception marker prefixing it.\n */\n interceptionMarker?: InterceptionMarker\n}\n\n/**\n * Represents a single segment in a route path.\n * Can be either static (e.g., \"blog\") or dynamic (e.g., \"[slug]\").\n */\nexport type AppRouteSegment =\n | StaticAppRouteSegment\n | DynamicAppRouteSegment\n | RouteGroupAppRouteSegment\n | ParallelRouteAppRouteSegment\n\nexport type NormalizedAppRouteSegment =\n | StaticAppRouteSegment\n | DynamicAppRouteSegment\n\nexport function parseAppRouteSegment(segment: string): AppRouteSegment | null {\n if (segment === '') {\n return null\n }\n\n // Check if the segment starts with an interception marker\n const interceptionMarker = INTERCEPTION_ROUTE_MARKERS.find((m) =>\n segment.startsWith(m)\n )\n\n const param = getSegmentParam(segment)\n if (param) {\n return {\n type: 'dynamic',\n name: segment,\n param,\n interceptionMarker,\n }\n } else if (segment.startsWith('(') && segment.endsWith(')')) {\n return {\n type: 'route-group',\n name: segment,\n interceptionMarker,\n }\n } else if (segment.startsWith('@')) {\n return {\n type: 'parallel-route',\n name: segment,\n interceptionMarker,\n }\n } else {\n return {\n type: 'static',\n name: segment,\n interceptionMarker,\n }\n }\n}\n\nexport type AppRoute = {\n normalized: boolean\n pathname: string\n segments: AppRouteSegment[]\n dynamicSegments: DynamicAppRouteSegment[]\n interceptionMarker: InterceptionMarker | undefined\n interceptingRoute: AppRoute | undefined\n interceptedRoute: AppRoute | undefined\n}\n\nexport type NormalizedAppRoute = Omit<AppRoute, 'normalized' | 'segments'> & {\n normalized: true\n segments: NormalizedAppRouteSegment[]\n}\n\nexport function isNormalizedAppRoute(\n route: InterceptionAppRoute\n): route is NormalizedInterceptionAppRoute\nexport function isNormalizedAppRoute(\n route: AppRoute | InterceptionAppRoute\n): route is NormalizedAppRoute {\n return route.normalized\n}\n\nexport type InterceptionAppRoute = Omit<\n AppRoute,\n 'interceptionMarker' | 'interceptingRoute' | 'interceptedRoute'\n> & {\n interceptionMarker: InterceptionMarker\n interceptingRoute: AppRoute\n interceptedRoute: AppRoute\n}\n\nexport type NormalizedInterceptionAppRoute = Omit<\n InterceptionAppRoute,\n | 'normalized'\n | 'segments'\n | 'interceptionMarker'\n | 'interceptingRoute'\n | 'interceptedRoute'\n> & {\n normalized: true\n segments: NormalizedAppRouteSegment[]\n interceptionMarker: InterceptionMarker\n interceptingRoute: NormalizedAppRoute\n interceptedRoute: NormalizedAppRoute\n}\n\nexport function isInterceptionAppRoute(\n route: NormalizedAppRoute\n): route is NormalizedInterceptionAppRoute\nexport function isInterceptionAppRoute(\n route: AppRoute\n): route is InterceptionAppRoute {\n return (\n route.interceptionMarker !== undefined &&\n route.interceptingRoute !== undefined &&\n route.interceptedRoute !== undefined\n )\n}\n\nexport function parseAppRoute(\n pathname: string,\n normalized: true\n): NormalizedAppRoute\nexport function parseAppRoute(pathname: string, normalized: false): AppRoute\nexport function parseAppRoute(\n pathname: string,\n normalized: boolean\n): AppRoute | NormalizedAppRoute {\n const pathnameSegments = pathname.split('/').filter(Boolean)\n\n // Build segments array with static and dynamic segments\n const segments: AppRouteSegment[] = []\n\n // Parse if this is an interception route.\n let interceptionMarker: InterceptionMarker | undefined\n let interceptingRoute: AppRoute | NormalizedAppRoute | undefined\n let interceptedRoute: AppRoute | NormalizedAppRoute | undefined\n\n for (const segment of pathnameSegments) {\n // Parse the segment into an AppSegment.\n const appSegment = parseAppRouteSegment(segment)\n if (!appSegment) {\n continue\n }\n\n if (\n normalized &&\n (appSegment.type === 'route-group' ||\n appSegment.type === 'parallel-route')\n ) {\n throw new InvariantError(\n `${pathname} is being parsed as a normalized route, but it has a route group or parallel route segment.`\n )\n }\n\n segments.push(appSegment)\n\n if (appSegment.interceptionMarker) {\n const parts = pathname.split(appSegment.interceptionMarker)\n if (parts.length !== 2) {\n throw new Error(`Invalid interception route: ${pathname}`)\n }\n\n interceptingRoute = normalized\n ? parseAppRoute(parts[0], true)\n : parseAppRoute(parts[0], false)\n interceptedRoute = normalized\n ? parseAppRoute(parts[1], true)\n : parseAppRoute(parts[1], false)\n interceptionMarker = appSegment.interceptionMarker\n }\n }\n\n const dynamicSegments = segments.filter(\n (segment) => segment.type === 'dynamic'\n )\n\n return {\n normalized,\n pathname,\n segments,\n dynamicSegments,\n interceptionMarker,\n interceptingRoute,\n interceptedRoute,\n }\n}\n","import type { DynamicParamTypes } from '../../app-router-types'\n\nexport function interceptionPrefixFromParamType(\n paramType: DynamicParamTypes\n): string | null {\n switch (paramType) {\n case 'catchall-intercepted-(..)(..)':\n case 'dynamic-intercepted-(..)(..)':\n return '(..)(..)'\n case 'catchall-intercepted-(.)':\n case 'dynamic-intercepted-(.)':\n return '(.)'\n case 'catchall-intercepted-(..)':\n case 'dynamic-intercepted-(..)':\n return '(..)'\n case 'catchall-intercepted-(...)':\n case 'dynamic-intercepted-(...)':\n return '(...)'\n case 'catchall':\n case 'dynamic':\n case 'optional-catchall':\n default:\n return null\n }\n}\n","import type { Params } from '../../../../server/request/params'\nimport type { DynamicParamTypes } from '../../app-router-types'\nimport { InvariantError } from '../../invariant-error'\nimport type {\n NormalizedAppRoute,\n NormalizedAppRouteSegment,\n} from '../routes/app'\nimport { interceptionPrefixFromParamType } from './interception-prefix-from-param-type'\n\n/**\n * Extracts the param value from a path segment, handling interception markers\n * based on the expected param type.\n *\n * @param pathSegment - The path segment to extract the value from\n * @param params - The current params object for resolving dynamic param references\n * @param paramType - The expected param type which may include interception marker info\n * @returns The extracted param value\n */\nfunction getParamValueFromSegment(\n pathSegment: NormalizedAppRouteSegment,\n params: Params,\n paramType: DynamicParamTypes\n): string {\n // If the segment is dynamic, resolve it from the params object\n if (pathSegment.type === 'dynamic') {\n return params[pathSegment.param.paramName] as string\n }\n\n // If the paramType indicates this is an intercepted param, strip the marker\n // that matches the interception marker in the param type\n const interceptionPrefix = interceptionPrefixFromParamType(paramType)\n if (interceptionPrefix === pathSegment.interceptionMarker) {\n return pathSegment.name.replace(pathSegment.interceptionMarker, '')\n }\n\n // For static segments, use the name\n return pathSegment.name\n}\n\n/**\n * Resolves a route parameter value from the route segments at the given depth.\n * This shared logic is used by both extractPathnameRouteParamSegmentsFromLoaderTree\n * and resolveRouteParamsFromTree.\n *\n * @param paramName - The parameter name to resolve\n * @param paramType - The parameter type (dynamic, catchall, etc.)\n * @param depth - The current depth in the route tree\n * @param route - The normalized route containing segments\n * @param params - The current params object (used to resolve embedded param references)\n * @param options - Configuration options\n * @returns The resolved parameter value, or undefined if it cannot be resolved\n */\nexport function resolveParamValue(\n paramName: string,\n paramType: DynamicParamTypes,\n depth: number,\n route: NormalizedAppRoute,\n params: Params\n): string | string[] | undefined {\n switch (paramType) {\n case 'catchall':\n case 'optional-catchall':\n case 'catchall-intercepted-(..)(..)':\n case 'catchall-intercepted-(.)':\n case 'catchall-intercepted-(..)':\n case 'catchall-intercepted-(...)':\n // For catchall routes, derive from pathname using depth to determine\n // which segments to use\n const processedSegments: string[] = []\n\n // Process segments to handle any embedded dynamic params\n for (let index = depth; index < route.segments.length; index++) {\n const pathSegment = route.segments[index]\n\n if (pathSegment.type === 'static') {\n let value = pathSegment.name\n\n // For intercepted catch-all params, strip the marker from the first segment\n const interceptionPrefix = interceptionPrefixFromParamType(paramType)\n if (\n interceptionPrefix &&\n index === depth &&\n interceptionPrefix === pathSegment.interceptionMarker\n ) {\n // Strip the interception marker from the value\n value = value.replace(pathSegment.interceptionMarker, '')\n }\n\n processedSegments.push(value)\n } else {\n // If the segment is a param placeholder, check if we have its value\n if (!params.hasOwnProperty(pathSegment.param.paramName)) {\n // If the segment is an optional catchall, we can break out of the\n // loop because it's optional!\n if (pathSegment.param.paramType === 'optional-catchall') {\n break\n }\n\n // Unknown param placeholder in pathname - can't derive full value\n return undefined\n }\n\n // If the segment matches a param, use the param value\n // We don't encode values here as that's handled during retrieval.\n const paramValue = params[pathSegment.param.paramName]\n if (Array.isArray(paramValue)) {\n processedSegments.push(...paramValue)\n } else {\n processedSegments.push(paramValue as string)\n }\n }\n }\n\n if (processedSegments.length > 0) {\n return processedSegments\n } else if (paramType === 'optional-catchall') {\n return undefined\n } else {\n // We shouldn't be able to match a catchall segment without any path\n // segments if it's not an optional catchall\n throw new InvariantError(\n `Unexpected empty path segments match for a route \"${route.pathname}\" with param \"${paramName}\" of type \"${paramType}\"`\n )\n }\n case 'dynamic':\n case 'dynamic-intercepted-(..)(..)':\n case 'dynamic-intercepted-(.)':\n case 'dynamic-intercepted-(..)':\n case 'dynamic-intercepted-(...)':\n // For regular dynamic parameters, take the segment at this depth\n if (depth < route.segments.length) {\n const pathSegment = route.segments[depth]\n\n // Check if the segment at this depth is a placeholder for an unknown param\n if (\n pathSegment.type === 'dynamic' &&\n !params.hasOwnProperty(pathSegment.param.paramName)\n ) {\n // The segment is a placeholder like [category] and we don't have the value\n return undefined\n }\n\n // If the segment matches a param, use the param value from params object\n // Otherwise it's a static segment, just use it directly\n // We don't encode values here as that's handled during retrieval\n return getParamValueFromSegment(pathSegment, params, paramType)\n }\n\n return undefined\n\n default:\n paramType satisfies never\n }\n}\n","import type { DynamicParam } from '../../../../server/app-render/app-render'\nimport type { LoaderTree } from '../../../../server/lib/app-dir-module'\nimport type { OpaqueFallbackRouteParams } from '../../../../server/request/fallback-params'\nimport type { Params } from '../../../../server/request/params'\nimport type { DynamicParamTypesShort } from '../../app-router-types'\nimport { InvariantError } from '../../invariant-error'\nimport { parseLoaderTree } from './parse-loader-tree'\nimport { parseAppRoute, parseAppRouteSegment } from '../routes/app'\nimport { resolveParamValue } from './resolve-param-value'\n\n/**\n * Gets the value of a param from the params object. This correctly handles the\n * case where the param is a fallback route param and encodes the resulting\n * value.\n *\n * @param interpolatedParams - The params object.\n * @param segmentKey - The key of the segment.\n * @param fallbackRouteParams - The fallback route params.\n * @returns The value of the param.\n */\nfunction getParamValue(\n interpolatedParams: Params,\n segmentKey: string,\n fallbackRouteParams: OpaqueFallbackRouteParams | null\n) {\n let value = interpolatedParams[segmentKey]\n\n if (fallbackRouteParams?.has(segmentKey)) {\n // We know that the fallback route params has the segment key because we\n // checked that above.\n const [searchValue] = fallbackRouteParams.get(segmentKey)!\n value = searchValue\n } else if (Array.isArray(value)) {\n value = value.map((i) => encodeURIComponent(i))\n } else if (typeof value === 'string') {\n value = encodeURIComponent(value)\n }\n\n return value\n}\n\nexport function interpolateParallelRouteParams(\n loaderTree: LoaderTree,\n params: Params,\n pagePath: string,\n fallbackRouteParams: OpaqueFallbackRouteParams | null\n): Params {\n const interpolated = structuredClone(params)\n\n // Stack-based traversal with depth tracking\n const stack: Array<{ tree: LoaderTree; depth: number }> = [\n { tree: loaderTree, depth: 0 },\n ]\n\n // Parse the route from the provided page path.\n const route = parseAppRoute(pagePath, true)\n\n while (stack.length > 0) {\n const { tree, depth } = stack.pop()!\n const { segment, parallelRoutes } = parseLoaderTree(tree)\n\n const appSegment = parseAppRouteSegment(segment)\n\n if (\n appSegment?.type === 'dynamic' &&\n !interpolated.hasOwnProperty(appSegment.param.paramName) &&\n // If the param is in the fallback route params, we don't need to\n // interpolate it because it's already marked as being unknown.\n !fallbackRouteParams?.has(appSegment.param.paramName)\n ) {\n const { paramName, paramType } = appSegment.param\n\n const paramValue = resolveParamValue(\n paramName,\n paramType,\n depth,\n route,\n interpolated\n )\n\n if (paramValue !== undefined) {\n interpolated[paramName] = paramValue\n } else if (paramType !== 'optional-catchall') {\n throw new InvariantError(\n `Could not resolve param value for segment: ${paramName}`\n )\n }\n }\n\n // Calculate next depth - increment if this is not a route group and not empty\n let nextDepth = depth\n if (\n appSegment &&\n appSegment.type !== 'route-group' &&\n appSegment.type !== 'parallel-route'\n ) {\n nextDepth++\n }\n\n // Add all parallel routes to the stack for processing\n for (const parallelRoute of Object.values(parallelRoutes)) {\n stack.push({ tree: parallelRoute, depth: nextDepth })\n }\n }\n\n return interpolated\n}\n\n/**\n *\n * Shared logic on client and server for creating a dynamic param value.\n *\n * This code needs to be shared with the client so it can extract dynamic route\n * params from the URL without a server request.\n *\n * Because everything in this module is sent to the client, we should aim to\n * keep this code as simple as possible. The special case handling for catchall\n * and optional is, alas, unfortunate.\n */\nexport function getDynamicParam(\n interpolatedParams: Params,\n segmentKey: string,\n dynamicParamType: DynamicParamTypesShort,\n fallbackRouteParams: OpaqueFallbackRouteParams | null\n): DynamicParam {\n let value: string | string[] | undefined = getParamValue(\n interpolatedParams,\n segmentKey,\n fallbackRouteParams\n )\n\n // handle the case where an optional catchall does not have a value,\n // e.g. `/dashboard/[[...slug]]` when requesting `/dashboard`\n if (!value || value.length === 0) {\n if (dynamicParamType === 'oc') {\n return {\n param: segmentKey,\n value: null,\n type: dynamicParamType,\n treeSegment: [segmentKey, '', dynamicParamType],\n }\n }\n\n throw new InvariantError(\n `Missing value for segment key: \"${segmentKey}\" with dynamic param type: ${dynamicParamType}`\n )\n }\n\n return {\n param: segmentKey,\n // The value that is passed to user code.\n value,\n // The value that is rendered in the router tree.\n treeSegment: [\n segmentKey,\n Array.isArray(value) ? value.join('/') : value,\n dynamicParamType,\n ],\n type: dynamicParamType,\n }\n}\n\n/**\n * Regular expression pattern used to match route parameters.\n * Matches both single parameters and parameter groups.\n * Examples:\n * - `[[...slug]]` matches parameter group with key 'slug', repeat: true, optional: true\n * - `[...slug]` matches parameter group with key 'slug', repeat: true, optional: false\n * - `[[foo]]` matches parameter with key 'foo', repeat: false, optional: true\n * - `[bar]` matches parameter with key 'bar', repeat: false, optional: false\n */\nexport const PARAMETER_PATTERN = /^([^[]*)\\[((?:\\[[^\\]]*\\])|[^\\]]+)\\](.*)$/\n\n/**\n * Parses a given parameter from a route to a data structure that can be used\n * to generate the parametrized route.\n * Examples:\n * - `[[...slug]]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[[foo]]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `[bar]` -> `{ key: 'bar', repeat: false, optional: false }`\n * - `fizz` -> `{ key: 'fizz', repeat: false, optional: false }`\n * @param param - The parameter to parse.\n * @returns The parsed parameter as a data structure.\n */\nexport function parseParameter(param: string) {\n const match = param.match(PARAMETER_PATTERN)\n\n if (!match) {\n return parseMatchedParameter(param)\n }\n\n return parseMatchedParameter(match[2])\n}\n\n/**\n * Parses a matched parameter from the PARAMETER_PATTERN regex to a data structure that can be used\n * to generate the parametrized route.\n * Examples:\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `...slug` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[foo]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `bar` -> `{ key: 'bar', repeat: false, optional: false }`\n * @param param - The matched parameter to parse.\n * @returns The parsed parameter as a data structure.\n */\nexport function parseMatchedParameter(param: string) {\n const optional = param.startsWith('[') && param.endsWith(']')\n if (optional) {\n param = param.slice(1, -1)\n }\n const repeat = param.startsWith('...')\n if (repeat) {\n param = param.slice(3)\n }\n return { key: param, repeat, optional }\n}\n","import {\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../../../../lib/constants'\nimport { INTERCEPTION_ROUTE_MARKERS } from './interception-routes'\nimport { escapeStringRegexp } from '../../escape-regexp'\nimport { removeTrailingSlash } from './remove-trailing-slash'\nimport { PARAMETER_PATTERN, parseMatchedParameter } from './get-dynamic-param'\n\nexport interface Group {\n pos: number\n repeat: boolean\n optional: boolean\n}\n\nexport interface RouteRegex {\n groups: { [groupName: string]: Group }\n re: RegExp\n}\n\nexport type RegexReference = {\n names: Record<string, string>\n intercepted: Record<string, string>\n}\n\ntype GetNamedRouteRegexOptions = {\n /**\n * Whether to prefix the route keys with the NEXT_INTERCEPTION_MARKER_PREFIX\n * or NEXT_QUERY_PARAM_PREFIX. This is only relevant when creating the\n * routes-manifest during the build.\n */\n prefixRouteKeys: boolean\n\n /**\n * Whether to include the suffix in the route regex. This means that when you\n * have something like `/[...slug].json` the `.json` part will be included\n * in the regex, yielding `/(.*).json` as the regex.\n */\n includeSuffix?: boolean\n\n /**\n * Whether to include the prefix in the route regex. This means that when you\n * have something like `/[...slug].json` the `/` part will be included\n * in the regex, yielding `^/(.*).json$` as the regex.\n *\n * Note that interception markers will already be included without the need\n */\n includePrefix?: boolean\n\n /**\n * Whether to exclude the optional trailing slash from the route regex.\n */\n excludeOptionalTrailingSlash?: boolean\n\n /**\n * Whether to backtrack duplicate keys. This is only relevant when creating\n * the routes-manifest during the build.\n */\n backreferenceDuplicateKeys?: boolean\n\n /**\n * If provided, this will be used as the reference for the dynamic parameter\n * keys instead of generating them in context. This is currently only used for\n * interception routes.\n */\n reference?: RegexReference\n}\n\ntype GetRouteRegexOptions = {\n /**\n * Whether to include extra parts in the route regex. This means that when you\n * have something like `/[...slug].json` the `.json` part will be included\n * in the regex, yielding `/(.*).json` as the regex.\n */\n includeSuffix?: boolean\n\n /**\n * Whether to include the prefix in the route regex. This means that when you\n * have something like `/[...slug].json` the `/` part will be included\n * in the regex, yielding `^/(.*).json$` as the regex.\n *\n * Note that interception markers will already be included without the need\n * of adding this option.\n */\n includePrefix?: boolean\n\n /**\n * Whether to exclude the optional trailing slash from the route regex.\n */\n excludeOptionalTrailingSlash?: boolean\n}\n\nfunction getParametrizedRoute(\n route: string,\n includeSuffix: boolean,\n includePrefix: boolean\n) {\n const groups: { [groupName: string]: Group } = {}\n let groupIndex = 1\n\n const segments: string[] = []\n for (const segment of removeTrailingSlash(route).slice(1).split('/')) {\n const markerMatch = INTERCEPTION_ROUTE_MARKERS.find((m) =>\n segment.startsWith(m)\n )\n const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters\n\n if (markerMatch && paramMatches && paramMatches[2]) {\n const { key, optional, repeat } = parseMatchedParameter(paramMatches[2])\n groups[key] = { pos: groupIndex++, repeat, optional }\n segments.push(`/${escapeStringRegexp(markerMatch)}([^/]+?)`)\n } else if (paramMatches && paramMatches[2]) {\n const { key, repeat, optional } = parseMatchedParameter(paramMatches[2])\n groups[key] = { pos: groupIndex++, repeat, optional }\n\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${escapeStringRegexp(paramMatches[1])}`)\n }\n\n let s = repeat ? (optional ? '(?:/(.+?))?' : '/(.+?)') : '/([^/]+?)'\n\n // Remove the leading slash if includePrefix already added it.\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1)\n }\n\n segments.push(s)\n } else {\n segments.push(`/${escapeStringRegexp(segment)}`)\n }\n\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push(escapeStringRegexp(paramMatches[3]))\n }\n }\n\n return {\n parameterizedRoute: segments.join(''),\n groups,\n }\n}\n\n/**\n * From a normalized route this function generates a regular expression and\n * a corresponding groups object intended to be used to store matching groups\n * from the regular expression.\n */\nexport function getRouteRegex(\n normalizedRoute: string,\n {\n includeSuffix = false,\n includePrefix = false,\n excludeOptionalTrailingSlash = false,\n }: GetRouteRegexOptions = {}\n): RouteRegex {\n const { parameterizedRoute, groups } = getParametrizedRoute(\n normalizedRoute,\n includeSuffix,\n includePrefix\n )\n\n let re = parameterizedRoute\n if (!excludeOptionalTrailingSlash) {\n re += '(?:/)?'\n }\n\n return {\n re: new RegExp(`^${re}$`),\n groups: groups,\n }\n}\n\n/**\n * Builds a function to generate a minimal routeKey using only a-z and minimal\n * number of characters.\n */\nfunction buildGetSafeRouteKey() {\n let i = 0\n\n return () => {\n let routeKey = ''\n let j = ++i\n while (j > 0) {\n routeKey += String.fromCharCode(97 + ((j - 1) % 26))\n j = Math.floor((j - 1) / 26)\n }\n return routeKey\n }\n}\n\nfunction getSafeKeyFromSegment({\n interceptionMarker,\n getSafeRouteKey,\n segment,\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys,\n}: {\n interceptionMarker?: string\n getSafeRouteKey: () => string\n segment: string\n routeKeys: Record<string, string>\n keyPrefix?: string\n backreferenceDuplicateKeys: boolean\n}) {\n const { key, optional, repeat } = parseMatchedParameter(segment)\n\n // replace any non-word characters since they can break\n // the named regex\n let cleanedKey = key.replace(/\\W/g, '')\n\n if (keyPrefix) {\n cleanedKey = `${keyPrefix}${cleanedKey}`\n }\n let invalidKey = false\n\n // check if the key is still invalid and fallback to using a known\n // safe key\n if (cleanedKey.length === 0 || cleanedKey.length > 30) {\n invalidKey = true\n }\n if (!isNaN(parseInt(cleanedKey.slice(0, 1)))) {\n invalidKey = true\n }\n\n if (invalidKey) {\n cleanedKey = getSafeRouteKey()\n }\n\n const duplicateKey = cleanedKey in routeKeys\n\n if (keyPrefix) {\n routeKeys[cleanedKey] = `${keyPrefix}${key}`\n } else {\n routeKeys[cleanedKey] = key\n }\n\n // if the segment has an interception marker, make sure that's part of the regex pattern\n // this is to ensure that the route with the interception marker doesn't incorrectly match\n // the non-intercepted route (ie /app/(.)[username] should not match /app/[username])\n const interceptionPrefix = interceptionMarker\n ? escapeStringRegexp(interceptionMarker)\n : ''\n\n let pattern: string\n if (duplicateKey && backreferenceDuplicateKeys) {\n // Use a backreference to the key to ensure that the key is the same value\n // in each of the placeholders.\n pattern = `\\\\k<${cleanedKey}>`\n } else if (repeat) {\n pattern = `(?<${cleanedKey}>.+?)`\n } else {\n pattern = `(?<${cleanedKey}>[^/]+?)`\n }\n\n return {\n key,\n pattern: optional\n ? `(?:/${interceptionPrefix}${pattern})?`\n : `/${interceptionPrefix}${pattern}`,\n cleanedKey: cleanedKey,\n optional,\n repeat,\n }\n}\n\nfunction getNamedParametrizedRoute(\n route: string,\n prefixRouteKeys: boolean,\n includeSuffix: boolean,\n includePrefix: boolean,\n backreferenceDuplicateKeys: boolean,\n reference: RegexReference = { names: {}, intercepted: {} }\n) {\n const getSafeRouteKey = buildGetSafeRouteKey()\n const routeKeys: { [named: string]: string } = {}\n\n const segments: string[] = []\n const inverseParts: string[] = []\n\n // Ensure we don't mutate the original reference object.\n reference = structuredClone(reference)\n\n for (const segment of removeTrailingSlash(route).slice(1).split('/')) {\n const hasInterceptionMarker = INTERCEPTION_ROUTE_MARKERS.some((m) =>\n segment.startsWith(m)\n )\n\n const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters\n\n const interceptionMarker = hasInterceptionMarker\n ? paramMatches?.[1]\n : undefined\n\n let keyPrefix: string | undefined\n if (interceptionMarker && paramMatches?.[2]) {\n keyPrefix = prefixRouteKeys ? NEXT_INTERCEPTION_MARKER_PREFIX : undefined\n reference.intercepted[paramMatches[2]] = interceptionMarker\n } else if (paramMatches?.[2] && reference.intercepted[paramMatches[2]]) {\n keyPrefix = prefixRouteKeys ? NEXT_INTERCEPTION_MARKER_PREFIX : undefined\n } else {\n keyPrefix = prefixRouteKeys ? NEXT_QUERY_PARAM_PREFIX : undefined\n }\n\n if (interceptionMarker && paramMatches && paramMatches[2]) {\n // If there's an interception marker, add it to the segments.\n const { key, pattern, cleanedKey, repeat, optional } =\n getSafeKeyFromSegment({\n getSafeRouteKey,\n interceptionMarker,\n segment: paramMatches[2],\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys,\n })\n\n segments.push(pattern)\n inverseParts.push(\n `/${paramMatches[1]}:${reference.names[key] ?? cleanedKey}${repeat ? (optional ? '*' : '+') : ''}`\n )\n reference.names[key] ??= cleanedKey\n } else if (paramMatches && paramMatches[2]) {\n // If there's a prefix, add it to the segments if it's enabled.\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${escapeStringRegexp(paramMatches[1])}`)\n inverseParts.push(`/${paramMatches[1]}`)\n }\n\n const { key, pattern, cleanedKey, repeat, optional } =\n getSafeKeyFromSegment({\n getSafeRouteKey,\n segment: paramMatches[2],\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys,\n })\n\n // Remove the leading slash if includePrefix already added it.\n let s = pattern\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1)\n }\n\n segments.push(s)\n inverseParts.push(\n `/:${reference.names[key] ?? cleanedKey}${repeat ? (optional ? '*' : '+') : ''}`\n )\n reference.names[key] ??= cleanedKey\n } else {\n segments.push(`/${escapeStringRegexp(segment)}`)\n inverseParts.push(`/${segment}`)\n }\n\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push(escapeStringRegexp(paramMatches[3]))\n inverseParts.push(paramMatches[3])\n }\n }\n\n return {\n namedParameterizedRoute: segments.join(''),\n routeKeys,\n pathToRegexpPattern: inverseParts.join(''),\n reference,\n }\n}\n\n/**\n * This function extends `getRouteRegex` generating also a named regexp where\n * each group is named along with a routeKeys object that indexes the assigned\n * named group with its corresponding key. When the routeKeys need to be\n * prefixed to uniquely identify internally the \"prefixRouteKey\" arg should\n * be \"true\" currently this is only the case when creating the routes-manifest\n * during the build\n */\nexport function getNamedRouteRegex(\n normalizedRoute: string,\n options: GetNamedRouteRegexOptions\n) {\n const result = getNamedParametrizedRoute(\n normalizedRoute,\n options.prefixRouteKeys,\n options.includeSuffix ?? false,\n options.includePrefix ?? false,\n options.backreferenceDuplicateKeys ?? false,\n options.reference\n )\n\n let namedRegex = result.namedParameterizedRoute\n if (!options.excludeOptionalTrailingSlash) {\n namedRegex += '(?:/)?'\n }\n\n return {\n ...getRouteRegex(normalizedRoute, options),\n namedRegex: `^${namedRegex}$`,\n routeKeys: result.routeKeys,\n pathToRegexpPattern: result.pathToRegexpPattern,\n reference: result.reference,\n }\n}\n\n/**\n * Generates a named regexp.\n * This is intended to be using for build time only.\n */\nexport function getNamedMiddlewareRegex(\n normalizedRoute: string,\n options: {\n catchAll?: boolean\n }\n) {\n const { parameterizedRoute } = getParametrizedRoute(\n normalizedRoute,\n false,\n false\n )\n const { catchAll = true } = options\n if (parameterizedRoute === '/') {\n let catchAllRegex = catchAll ? '.*' : ''\n return {\n namedRegex: `^/${catchAllRegex}$`,\n }\n }\n\n const { namedParameterizedRoute } = getNamedParametrizedRoute(\n normalizedRoute,\n false,\n false,\n false,\n false,\n undefined\n )\n let catchAllGroupedRegex = catchAll ? '(?:(/.*)?)' : ''\n return {\n namedRegex: `^${namedParameterizedRoute}${catchAllGroupedRegex}$`,\n }\n}\n","import type { HtmlProps } from './html-context.shared-runtime'\nimport type { ComponentType, JSX } from 'react'\nimport type { DomainLocale } from '../../server/config'\nimport type { Env } from '@next/env'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextRouter } from './router/router'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { PreviewData } from '../../types'\nimport type { COMPILER_NAMES } from './constants'\nimport type fs from 'fs'\n\nexport type NextComponentType<\n Context extends BaseContext = NextPageContext,\n InitialProps = {},\n Props = {},\n> = ComponentType<Props> & {\n /**\n * Used for initial page load data population. Data returned from `getInitialProps` is serialized when server rendered.\n * Make sure to return plain `Object` without using `Date`, `Map`, `Set`.\n * @param context Context of `page`\n */\n getInitialProps?(context: Context): InitialProps | Promise<InitialProps>\n}\n\nexport type DocumentType = NextComponentType<\n DocumentContext,\n DocumentInitialProps,\n DocumentProps\n>\n\nexport type AppType<P = {}> = NextComponentType<\n AppContextType,\n P,\n AppPropsType<any, P>\n>\n\nexport type AppTreeType = ComponentType<\n AppInitialProps & { [name: string]: any }\n>\n\n/**\n * Web vitals provided to _app.reportWebVitals by Core Web Vitals plugin developed by Google Chrome team.\n * https://nextjs.org/blog/next-9-4#integrated-web-vitals-reporting\n */\nexport const WEB_VITALS = ['CLS', 'FCP', 'FID', 'INP', 'LCP', 'TTFB'] as const\nexport type NextWebVitalsMetric = {\n id: string\n startTime: number\n value: number\n attribution?: { [key: string]: unknown }\n} & (\n | {\n label: 'web-vital'\n name: (typeof WEB_VITALS)[number]\n }\n | {\n label: 'custom'\n name:\n | 'Next.js-hydration'\n | 'Next.js-route-change-to-render'\n | 'Next.js-render'\n }\n)\n\nexport type Enhancer<C> = (Component: C) => C\n\nexport type ComponentsEnhancer =\n | {\n enhanceApp?: Enhancer<AppType>\n enhanceComponent?: Enhancer<NextComponentType>\n }\n | Enhancer<NextComponentType>\n\nexport type RenderPageResult = {\n html: string\n head?: Array<JSX.Element | null>\n}\n\nexport type RenderPage = (\n options?: ComponentsEnhancer\n) => DocumentInitialProps | Promise<DocumentInitialProps>\n\nexport type BaseContext = {\n res?: ServerResponse\n [k: string]: any\n}\n\nexport type NEXT_DATA = {\n props: Record<string, any>\n page: string\n query: ParsedUrlQuery\n buildId: string\n assetPrefix?: string\n nextExport?: boolean\n autoExport?: boolean\n isFallback?: boolean\n isExperimentalCompile?: boolean\n dynamicIds?: (string | number)[]\n err?: Error & {\n statusCode?: number\n source?: typeof COMPILER_NAMES.server | typeof COMPILER_NAMES.edgeServer\n }\n gsp?: boolean\n gssp?: boolean\n customServer?: boolean\n gip?: boolean\n appGip?: boolean\n locale?: string\n locales?: readonly string[]\n defaultLocale?: string\n domainLocales?: readonly DomainLocale[]\n scriptLoader?: any[]\n isPreview?: boolean\n notFoundSrcPage?: string\n}\n\n/**\n * `Next` context\n */\nexport interface NextPageContext {\n /**\n * Error object if encountered during rendering\n */\n err?: (Error & { statusCode?: number }) | null\n /**\n * `HTTP` request object.\n */\n req?: IncomingMessage\n /**\n * `HTTP` response object.\n */\n res?: ServerResponse\n /**\n * Path section of `URL`.\n */\n pathname: string\n /**\n * Query string section of `URL` parsed as an object.\n */\n query: ParsedUrlQuery\n /**\n * `String` of the actual path including query.\n */\n asPath?: string\n /**\n * The currently active locale\n */\n locale?: string\n /**\n * All configured locales\n */\n locales?: readonly string[]\n /**\n * The configured default locale\n */\n defaultLocale?: string\n /**\n * `Component` the tree of the App to use if needing to render separately\n */\n AppTree: AppTreeType\n}\n\nexport type AppContextType<Router extends NextRouter = NextRouter> = {\n Component: NextComponentType<NextPageContext>\n AppTree: AppTreeType\n ctx: NextPageContext\n router: Router\n}\n\nexport type AppInitialProps<PageProps = any> = {\n pageProps: PageProps\n}\n\nexport type AppPropsType<\n Router extends NextRouter = NextRouter,\n PageProps = {},\n> = AppInitialProps<PageProps> & {\n Component: NextComponentType<NextPageContext, any, any>\n router: Router\n __N_SSG?: boolean\n __N_SSP?: boolean\n}\n\nexport type DocumentContext = NextPageContext & {\n renderPage: RenderPage\n defaultGetInitialProps(\n ctx: DocumentContext,\n options?: { nonce?: string }\n ): Promise<DocumentInitialProps>\n}\n\nexport type DocumentInitialProps = RenderPageResult & {\n styles?: React.ReactElement[] | Iterable<React.ReactNode> | JSX.Element\n}\n\nexport type DocumentProps = DocumentInitialProps & HtmlProps\n\n/**\n * Next `API` route request\n */\nexport interface NextApiRequest extends IncomingMessage {\n /**\n * Object of `query` values from url\n */\n query: Partial<{\n [key: string]: string | string[]\n }>\n /**\n * Object of `cookies` from header\n */\n cookies: Partial<{\n [key: string]: string\n }>\n\n body: any\n\n env: Env\n\n draftMode?: boolean\n\n preview?: boolean\n /**\n * Preview data set on the request, if any\n * */\n previewData?: PreviewData\n}\n\n/**\n * Send body of response\n */\ntype Send<T> = (body: T) => void\n\n/**\n * Next `API` route response\n */\nexport type NextApiResponse<Data = any> = ServerResponse & {\n /**\n * Send data `any` data in response\n */\n send: Send<Data>\n /**\n * Send data `json` data in response\n */\n json: Send<Data>\n status: (statusCode: number) => NextApiResponse<Data>\n redirect(url: string): NextApiResponse<Data>\n redirect(status: number, url: string): NextApiResponse<Data>\n\n /**\n * Set draft mode\n */\n setDraftMode: (options: { enable: boolean }) => NextApiResponse<Data>\n\n /**\n * Set preview data for Next.js' prerender mode\n */\n setPreviewData: (\n data: object | string,\n options?: {\n /**\n * Specifies the number (in seconds) for the preview session to last for.\n * The given number will be converted to an integer by rounding down.\n * By default, no maximum age is set and the preview session finishes\n * when the client shuts down (browser is closed).\n */\n maxAge?: number\n /**\n * Specifies the path for the preview session to work under. By default,\n * the path is considered the \"default path\", i.e., any pages under \"/\".\n */\n path?: string\n }\n ) => NextApiResponse<Data>\n\n /**\n * Clear preview data for Next.js' prerender mode\n */\n clearPreviewData: (options?: { path?: string }) => NextApiResponse<Data>\n\n /**\n * Revalidate a specific page and regenerate it using On-Demand Incremental\n * Static Regeneration.\n * The path should be an actual path, not a rewritten path. E.g. for\n * \"/blog/[slug]\" this should be \"/blog/post-1\".\n * @link https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration#on-demand-revalidation-with-revalidatepath\n */\n revalidate: (\n urlPath: string,\n opts?: {\n unstable_onlyGenerated?: boolean\n }\n ) => Promise<void>\n}\n\n/**\n * Next `API` route handler\n */\nexport type NextApiHandler<T = any> = (\n req: NextApiRequest,\n res: NextApiResponse<T>\n) => unknown | Promise<unknown>\n\n/**\n * Utils\n */\nexport function execOnce<T extends (...args: any[]) => ReturnType<T>>(\n fn: T\n): T {\n let used = false\n let result: ReturnType<T>\n\n return ((...args: any[]) => {\n if (!used) {\n used = true\n result = fn(...args)\n }\n return result\n }) as T\n}\n\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/\nexport const isAbsoluteUrl = (url: string) => ABSOLUTE_URL_REGEX.test(url)\n\nexport function getLocationOrigin() {\n const { protocol, hostname, port } = window.location\n return `${protocol}//${hostname}${port ? ':' + port : ''}`\n}\n\nexport function getURL() {\n const { href } = window.location\n const origin = getLocationOrigin()\n return href.substring(origin.length)\n}\n\nexport function getDisplayName<P>(Component: ComponentType<P>) {\n return typeof Component === 'string'\n ? Component\n : Component.displayName || Component.name || 'Unknown'\n}\n\nexport function isResSent(res: ServerResponse) {\n return res.finished || res.headersSent\n}\n\nexport function normalizeRepeatedSlashes(url: string) {\n const urlParts = url.split('?')\n const urlNoQuery = urlParts[0]\n\n return (\n urlNoQuery\n // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, '/')\n .replace(/\\/\\/+/g, '/') +\n (urlParts[1] ? `?${urlParts.slice(1).join('?')}` : '')\n )\n}\n\nexport async function loadGetInitialProps<\n C extends BaseContext,\n IP = {},\n P = {},\n>(App: NextComponentType<C, IP, P>, ctx: C): Promise<IP> {\n if (process.env.NODE_ENV !== 'production') {\n if (App.prototype?.getInitialProps) {\n const message = `\"${getDisplayName(\n App\n )}.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.`\n throw new Error(message)\n }\n }\n // when called from _app `ctx` is nested in `ctx`\n const res = ctx.res || (ctx.ctx && ctx.ctx.res)\n\n if (!App.getInitialProps) {\n if (ctx.ctx && ctx.Component) {\n // @ts-ignore pageProps default\n return {\n pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx),\n }\n }\n return {} as IP\n }\n\n const props = await App.getInitialProps(ctx)\n\n if (res && isResSent(res)) {\n return props\n }\n\n if (!props) {\n const message = `\"${getDisplayName(\n App\n )}.getInitialProps()\" should resolve to an object. But found \"${props}\" instead.`\n throw new Error(message)\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(\n `${getDisplayName(\n App\n )} returned an empty object from \\`getInitialProps\\`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps`\n )\n }\n }\n\n return props\n}\n\nexport const SP = typeof performance !== 'undefined'\nexport const ST =\n SP &&\n (['mark', 'measure', 'getEntriesByName'] as const).every(\n (method) => typeof performance[method] === 'function'\n )\n\nexport class DecodeError extends Error {}\nexport class NormalizeError extends Error {}\nexport class PageNotFoundError extends Error {\n code: string\n\n constructor(page: string) {\n super()\n this.code = 'ENOENT'\n this.name = 'PageNotFoundError'\n this.message = `Cannot find module for page: ${page}`\n }\n}\n\nexport class MissingStaticPage extends Error {\n constructor(page: string, message: string) {\n super()\n this.message = `Failed to load static file for page: ${page} ${message}`\n }\n}\n\nexport class MiddlewareNotFoundError extends Error {\n code: string\n constructor() {\n super()\n this.code = 'ENOENT'\n this.message = `Cannot find the middleware module`\n }\n}\n\nexport interface CacheFs {\n existsSync: typeof fs.existsSync\n readFile: typeof fs.promises.readFile\n readFileSync: typeof fs.readFileSync\n writeFile(f: string, d: any): Promise<void>\n mkdir(dir: string): Promise<void | string>\n stat(f: string): Promise<{ mtime: Date }>\n}\n\nexport function stringifyError(error: Error) {\n return JSON.stringify({ message: error.message, stack: error.stack })\n}\n","import type { Token } from 'next/dist/compiled/path-to-regexp'\n\n/**\n * Route pattern normalization utilities for path-to-regexp compatibility.\n *\n * path-to-regexp 6.3.0+ introduced stricter validation that rejects certain\n * patterns commonly used in Next.js interception routes. This module provides\n * normalization functions to make Next.js route patterns compatible with the\n * updated library while preserving all functionality.\n */\n\n/**\n * Internal separator used to normalize adjacent parameter patterns.\n * This unique marker is inserted between adjacent parameters and stripped out\n * during parameter extraction to avoid conflicts with real URL content.\n */\nexport const PARAM_SEPARATOR = '_NEXTSEP_'\n\n/**\n * Detects if a route pattern needs normalization for path-to-regexp compatibility.\n */\nexport function hasAdjacentParameterIssues(route: string): boolean {\n if (typeof route !== 'string') return false\n\n // Check for interception route markers followed immediately by parameters\n // Pattern: /(.):param, /(..):param, /(...):param, /(.)(.):param etc.\n // These patterns cause \"Must have text between two parameters\" errors\n if (/\\/\\(\\.{1,3}\\):[^/\\s]+/.test(route)) {\n return true\n }\n\n // Check for basic adjacent parameters without separators\n // Pattern: :param1:param2 (but not :param* or other URL patterns)\n if (/:[a-zA-Z_][a-zA-Z0-9_]*:[a-zA-Z_][a-zA-Z0-9_]*/.test(route)) {\n return true\n }\n\n return false\n}\n\n/**\n * Normalizes route patterns that have adjacent parameters without text between them.\n * Inserts a unique separator that can be safely stripped out later.\n */\nexport function normalizeAdjacentParameters(route: string): string {\n let normalized = route\n\n // Handle interception route patterns: (.):param -> (.)_NEXTSEP_:param\n normalized = normalized.replace(\n /(\\([^)]*\\)):([^/\\s]+)/g,\n `$1${PARAM_SEPARATOR}:$2`\n )\n\n // Handle other adjacent parameter patterns: :param1:param2 -> :param1_NEXTSEP_:param2\n normalized = normalized.replace(/:([^:/\\s)]+)(?=:)/g, `:$1${PARAM_SEPARATOR}`)\n\n return normalized\n}\n\n/**\n * Normalizes tokens that have repeating modifiers (* or +) but empty prefix and suffix.\n *\n * path-to-regexp 6.3.0+ introduced validation that throws:\n * \"Can not repeat without prefix/suffix\"\n *\n * This occurs when a token has modifier: '*' or '+' with both prefix: '' and suffix: ''\n */\nexport function normalizeTokensForRegexp(tokens: Token[]): Token[] {\n return tokens.map((token) => {\n // Token union type: Token = string | TokenObject\n // Literal path segments are strings, parameters/wildcards are objects\n if (\n typeof token === 'object' &&\n token !== null &&\n // Not all token objects have 'modifier' property (e.g., simple text tokens)\n 'modifier' in token &&\n // Only repeating modifiers (* or +) cause the validation error\n // Other modifiers like '?' (optional) are fine\n (token.modifier === '*' || token.modifier === '+') &&\n // Token objects can have different shapes depending on route pattern\n 'prefix' in token &&\n 'suffix' in token &&\n // Both prefix and suffix must be empty strings\n // This is what causes the validation error in path-to-regexp\n token.prefix === '' &&\n token.suffix === ''\n ) {\n // Add minimal prefix to satisfy path-to-regexp validation\n // We use '/' as it's the most common path delimiter and won't break route matching\n // The prefix gets used in regex generation but doesn't affect parameter extraction\n return {\n ...token,\n prefix: '/',\n }\n }\n return token\n })\n}\n\n/**\n * Strips normalization separators from compiled pathname.\n * This removes separators that were inserted by normalizeAdjacentParameters\n * to satisfy path-to-regexp validation.\n *\n * Only removes separators in the specific contexts where they were inserted:\n * - After interception route markers: (.)_NEXTSEP_ -> (.)\n *\n * This targeted approach ensures we don't accidentally remove the separator\n * from legitimate user content.\n */\nexport function stripNormalizedSeparators(pathname: string): string {\n // Remove separator after interception route markers\n // Pattern: (.)_NEXTSEP_ -> (.), (..)_NEXTSEP_ -> (..), etc.\n // The separator appears after the closing paren of interception markers\n return pathname.replace(new RegExp(`\\\\)${PARAM_SEPARATOR}`, 'g'), ')')\n}\n\n/**\n * Strips normalization separators from extracted route parameters.\n * Used by both server and client code to clean up parameters after route matching.\n */\nexport function stripParameterSeparators(\n params: Record<string, any>\n): Record<string, any> {\n const cleaned: Record<string, any> = {}\n\n for (const [key, value] of Object.entries(params)) {\n if (typeof value === 'string') {\n // Remove the separator if it appears at the start of parameter values\n cleaned[key] = value.replace(new RegExp(`^${PARAM_SEPARATOR}`), '')\n } else if (Array.isArray(value)) {\n // Handle array parameters (from repeated route segments)\n cleaned[key] = value.map((item) =>\n typeof item === 'string'\n ? item.replace(new RegExp(`^${PARAM_SEPARATOR}`), '')\n : item\n )\n } else {\n cleaned[key] = value\n }\n }\n\n return cleaned\n}\n","/**\n * Client-safe utilities for route matching that don't import server-side\n * utilities to avoid bundling issues with Turbopack\n */\n\nimport type {\n Key,\n TokensToRegexpOptions,\n ParseOptions,\n TokensToFunctionOptions,\n} from 'next/dist/compiled/path-to-regexp'\nimport {\n pathToRegexp,\n compile,\n regexpToFunction,\n} from 'next/dist/compiled/path-to-regexp'\nimport {\n hasAdjacentParameterIssues,\n normalizeAdjacentParameters,\n stripParameterSeparators,\n stripNormalizedSeparators,\n} from '../../../../lib/route-pattern-normalizer'\n\n/**\n * Client-safe wrapper around pathToRegexp that handles path-to-regexp 6.3.0+ validation errors.\n * This includes both \"Can not repeat without prefix/suffix\" and \"Must have text between parameters\" errors.\n */\nexport function safePathToRegexp(\n route: string | RegExp | Array<string | RegExp>,\n keys?: Key[],\n options?: TokensToRegexpOptions & ParseOptions\n): RegExp {\n if (typeof route !== 'string') {\n return pathToRegexp(route, keys, options)\n }\n\n // Check if normalization is needed and cache the result\n const needsNormalization = hasAdjacentParameterIssues(route)\n const routeToUse = needsNormalization\n ? normalizeAdjacentParameters(route)\n : route\n\n try {\n return pathToRegexp(routeToUse, keys, options)\n } catch (error) {\n // Only try normalization if we haven't already normalized\n if (!needsNormalization) {\n try {\n const normalizedRoute = normalizeAdjacentParameters(route)\n return pathToRegexp(normalizedRoute, keys, options)\n } catch (retryError) {\n // If that doesn't work, fall back to original error\n throw error\n }\n }\n throw error\n }\n}\n\n/**\n * Client-safe wrapper around compile that handles path-to-regexp 6.3.0+ validation errors.\n * No server-side error reporting to avoid bundling issues.\n * When normalization is applied, the returned compiler function automatically strips\n * the internal separator from the output URL.\n */\nexport function safeCompile(\n route: string,\n options?: TokensToFunctionOptions & ParseOptions\n) {\n // Check if normalization is needed and cache the result\n const needsNormalization = hasAdjacentParameterIssues(route)\n const routeToUse = needsNormalization\n ? normalizeAdjacentParameters(route)\n : route\n\n try {\n const compiler = compile(routeToUse, options)\n\n // If we normalized the route, wrap the compiler to strip separators from output\n // The normalization inserts _NEXTSEP_ as a literal string in the pattern to satisfy\n // path-to-regexp validation, but we don't want it in the final compiled URL\n if (needsNormalization) {\n return (params: any) => {\n return stripNormalizedSeparators(compiler(params))\n }\n }\n\n return compiler\n } catch (error) {\n // Only try normalization if we haven't already normalized\n if (!needsNormalization) {\n try {\n const normalizedRoute = normalizeAdjacentParameters(route)\n const compiler = compile(normalizedRoute, options)\n\n // Wrap the compiler to strip separators from output\n return (params: any) => {\n return stripNormalizedSeparators(compiler(params))\n }\n } catch (retryError) {\n // If that doesn't work, fall back to original error\n throw error\n }\n }\n throw error\n }\n}\n\n/**\n * Client-safe wrapper around regexpToFunction that automatically cleans parameters.\n */\nexport function safeRegexpToFunction<\n T extends Record<string, any> = Record<string, any>,\n>(regexp: RegExp, keys?: Key[]): (pathname: string) => { params: T } | false {\n const originalMatcher = regexpToFunction<T>(regexp, keys || [])\n\n return (pathname: string) => {\n const result = originalMatcher(pathname)\n if (!result) return false\n\n // Clean parameters before returning\n return {\n ...result,\n params: stripParameterSeparators(result.params as any) as T,\n }\n }\n}\n\n/**\n * Safe wrapper for route matcher functions that automatically cleans parameters.\n * This is client-safe and doesn't import path-to-regexp.\n */\nexport function safeRouteMatcher<T extends Record<string, any>>(\n matcherFn: (pathname: string) => false | T\n): (pathname: string) => false | T {\n return (pathname: string) => {\n const result = matcherFn(pathname)\n if (!result) return false\n\n // Clean parameters before returning\n return stripParameterSeparators(result) as T\n }\n}\n","import type { Group } from './route-regex'\nimport { DecodeError } from '../../utils'\nimport type { Params } from '../../../../server/request/params'\nimport { safeRouteMatcher } from './route-match-utils'\n\nexport interface RouteMatchFn {\n (pathname: string): false | Params\n}\n\ntype RouteMatcherOptions = {\n // We only use the exec method of the RegExp object. This helps us avoid using\n // type assertions that the passed in properties are of the correct type.\n re: Pick<RegExp, 'exec'>\n groups: Record<string, Group>\n}\n\nexport function getRouteMatcher({\n re,\n groups,\n}: RouteMatcherOptions): RouteMatchFn {\n const rawMatcher = (pathname: string) => {\n const routeMatch = re.exec(pathname)\n if (!routeMatch) return false\n\n const decode = (param: string) => {\n try {\n return decodeURIComponent(param)\n } catch {\n throw new DecodeError('failed to decode param')\n }\n }\n\n const params: Params = {}\n for (const [key, group] of Object.entries(groups)) {\n const match = routeMatch[group.pos]\n if (match !== undefined) {\n if (group.repeat) {\n params[key] = match.split('/').map((entry) => decode(entry))\n } else {\n params[key] = decode(match)\n }\n }\n }\n\n return params\n }\n\n // Wrap with safe matcher to handle parameter cleaning\n return safeRouteMatcher(rawMatcher)\n}\n","import type { ParsedUrlQuery } from 'querystring'\n\nexport function searchParamsToUrlQuery(\n searchParams: URLSearchParams\n): ParsedUrlQuery {\n const query: ParsedUrlQuery = {}\n for (const [key, value] of searchParams.entries()) {\n const existing = query[key]\n if (typeof existing === 'undefined') {\n query[key] = value\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n query[key] = [existing, value]\n }\n }\n return query\n}\n\nfunction stringifyUrlQueryParam(param: unknown): string {\n if (typeof param === 'string') {\n return param\n }\n\n if (\n (typeof param === 'number' && !isNaN(param)) ||\n typeof param === 'boolean'\n ) {\n return String(param)\n } else {\n return ''\n }\n}\n\nexport function urlQueryToSearchParams(query: ParsedUrlQuery): URLSearchParams {\n const searchParams = new URLSearchParams()\n for (const [key, value] of Object.entries(query)) {\n if (Array.isArray(value)) {\n for (const item of value) {\n searchParams.append(key, stringifyUrlQueryParam(item))\n }\n } else {\n searchParams.set(key, stringifyUrlQueryParam(value))\n }\n }\n return searchParams\n}\n\nexport function assign(\n target: URLSearchParams,\n ...searchParamsList: URLSearchParams[]\n): URLSearchParams {\n for (const searchParams of searchParamsList) {\n for (const key of searchParams.keys()) {\n target.delete(key)\n }\n\n for (const [key, value] of searchParams.entries()) {\n target.append(key, value)\n }\n }\n\n return target\n}\n","import type { ParsedUrlQuery } from 'querystring'\nimport { getLocationOrigin } from '../../utils'\nimport { searchParamsToUrlQuery } from './querystring'\n\nexport interface ParsedRelativeUrl {\n hash: string\n href: string\n pathname: string\n query: ParsedUrlQuery\n search: string\n slashes: undefined\n}\n\n/**\n * Parses path-relative urls (e.g. `/hello/world?foo=bar`). If url isn't path-relative\n * (e.g. `./hello`) then at least base must be.\n * Absolute urls are rejected with one exception, in the browser, absolute urls that are on\n * the current origin will be parsed as relative\n */\nexport function parseRelativeUrl(\n url: string,\n base?: string,\n parseQuery?: true\n): ParsedRelativeUrl\nexport function parseRelativeUrl(\n url: string,\n base: string | undefined,\n parseQuery: false\n): Omit<ParsedRelativeUrl, 'query'>\nexport function parseRelativeUrl(\n url: string,\n base?: string,\n parseQuery = true\n): ParsedRelativeUrl | Omit<ParsedRelativeUrl, 'query'> {\n const globalBase = new URL(\n typeof window === 'undefined' ? 'http://n' : getLocationOrigin()\n )\n\n const resolvedBase = base\n ? new URL(base, globalBase)\n : url.startsWith('.')\n ? new URL(\n typeof window === 'undefined' ? 'http://n' : window.location.href\n )\n : globalBase\n\n const { pathname, searchParams, search, hash, href, origin } = new URL(\n url,\n resolvedBase\n )\n\n if (origin !== globalBase.origin) {\n throw new Error(`invariant: invalid relative URL, router received ${url}`)\n }\n\n return {\n pathname,\n query: parseQuery ? searchParamsToUrlQuery(searchParams) : undefined,\n search,\n hash,\n href: href.slice(origin.length),\n // We don't know for relative URLs at this point since we set a custom, internal\n // base that isn't surfaced to users.\n slashes: undefined,\n }\n}\n","import type { ParsedUrlQuery } from 'querystring'\n\nimport { searchParamsToUrlQuery } from './querystring'\nimport { parseRelativeUrl } from './parse-relative-url'\n\nexport interface ParsedUrl {\n hash: string\n hostname?: string | null\n href: string\n pathname: string\n port?: string | null\n protocol?: string | null\n query: ParsedUrlQuery\n origin?: string | null\n search: string\n slashes: boolean | undefined\n}\n\nexport function parseUrl(url: string): ParsedUrl {\n if (url.startsWith('/')) {\n return parseRelativeUrl(url)\n }\n\n const parsedURL = new URL(url)\n return {\n hash: parsedURL.hash,\n hostname: parsedURL.hostname,\n href: parsedURL.href,\n pathname: parsedURL.pathname,\n port: parsedURL.port,\n protocol: parsedURL.protocol,\n query: searchParamsToUrlQuery(parsedURL.searchParams),\n search: parsedURL.search,\n origin: parsedURL.origin,\n slashes:\n parsedURL.href.slice(\n parsedURL.protocol.length,\n parsedURL.protocol.length + 2\n ) === '//',\n }\n}\n","import type { NextApiRequestCookies } from '.'\n\n/**\n * Parse cookies from the `headers` of request\n * @param req request object\n */\n\nexport function getCookieParser(headers: {\n [key: string]: string | string[] | null | undefined\n}): () => NextApiRequestCookies {\n return function parseCookie(): NextApiRequestCookies {\n const { cookie } = headers\n\n if (!cookie) {\n return {}\n }\n\n const { parse: parseCookieFn } =\n require('next/dist/compiled/cookie') as typeof import('next/dist/compiled/cookie')\n return parseCookieFn(Array.isArray(cookie) ? cookie.join('; ') : cookie)\n }\n}\n","import type { IncomingMessage } from 'http'\nimport type { Key } from 'next/dist/compiled/path-to-regexp'\nimport type { NextParsedUrlQuery } from '../../../../server/request-meta'\nimport type { RouteHas } from '../../../../lib/load-custom-routes'\nimport type { BaseNextRequest } from '../../../../server/base-http'\n\nimport { escapeStringRegexp } from '../../escape-regexp'\nimport { parseUrl } from './parse-url'\nimport {\n INTERCEPTION_ROUTE_MARKERS,\n isInterceptionRouteAppPath,\n} from './interception-routes'\nimport { getCookieParser } from '../../../../server/api-utils/get-cookie-parser'\nimport type { Params } from '../../../../server/request/params'\nimport { safePathToRegexp, safeCompile } from './route-match-utils'\n\n/**\n * Ensure only a-zA-Z are used for param names for proper interpolating\n * with path-to-regexp\n */\nfunction getSafeParamName(paramName: string) {\n let newParamName = ''\n\n for (let i = 0; i < paramName.length; i++) {\n const charCode = paramName.charCodeAt(i)\n\n if (\n (charCode > 64 && charCode < 91) || // A-Z\n (charCode > 96 && charCode < 123) // a-z\n ) {\n newParamName += paramName[i]\n }\n }\n return newParamName\n}\n\nfunction escapeSegment(str: string, segmentName: string) {\n return str.replace(\n new RegExp(`:${escapeStringRegexp(segmentName)}`, 'g'),\n `__ESC_COLON_${segmentName}`\n )\n}\n\nfunction unescapeSegments(str: string) {\n return str.replace(/__ESC_COLON_/gi, ':')\n}\n\nexport function matchHas(\n req: BaseNextRequest | IncomingMessage,\n query: Params,\n has: RouteHas[] = [],\n missing: RouteHas[] = []\n): false | Params {\n const params: Params = {}\n\n const hasMatch = (hasItem: RouteHas) => {\n let value\n let key = hasItem.key\n\n switch (hasItem.type) {\n case 'header': {\n key = key!.toLowerCase()\n value = req.headers[key] as string\n break\n }\n case 'cookie': {\n if ('cookies' in req) {\n value = req.cookies[hasItem.key]\n } else {\n const cookies = getCookieParser(req.headers)()\n value = cookies[hasItem.key]\n }\n\n break\n }\n case 'query': {\n value = query[key!]\n break\n }\n case 'host': {\n const { host } = req?.headers || {}\n // remove port from host if present\n const hostname = host?.split(':', 1)[0].toLowerCase()\n value = hostname\n break\n }\n default: {\n break\n }\n }\n\n if (!hasItem.value && value) {\n params[getSafeParamName(key!)] = value\n return true\n } else if (value) {\n const matcher = new RegExp(`^${hasItem.value}$`)\n const matches = Array.isArray(value)\n ? value.slice(-1)[0].match(matcher)\n : value.match(matcher)\n\n if (matches) {\n if (Array.isArray(matches)) {\n if (matches.groups) {\n Object.keys(matches.groups).forEach((groupKey) => {\n params[groupKey] = matches.groups![groupKey]\n })\n } else if (hasItem.type === 'host' && matches[0]) {\n params.host = matches[0]\n }\n }\n return true\n }\n }\n return false\n }\n\n const allMatch =\n has.every((item) => hasMatch(item)) &&\n !missing.some((item) => hasMatch(item))\n\n if (allMatch) {\n return params\n }\n return false\n}\n\nexport function compileNonPath(value: string, params: Params): string {\n if (!value.includes(':')) {\n return value\n }\n\n for (const key of Object.keys(params)) {\n if (value.includes(`:${key}`)) {\n value = value\n .replace(\n new RegExp(`:${key}\\\\*`, 'g'),\n `:${key}--ESCAPED_PARAM_ASTERISKS`\n )\n .replace(\n new RegExp(`:${key}\\\\?`, 'g'),\n `:${key}--ESCAPED_PARAM_QUESTION`\n )\n .replace(new RegExp(`:${key}\\\\+`, 'g'), `:${key}--ESCAPED_PARAM_PLUS`)\n .replace(\n new RegExp(`:${key}(?!\\\\w)`, 'g'),\n `--ESCAPED_PARAM_COLON${key}`\n )\n }\n }\n value = value\n .replace(/(:|\\*|\\?|\\+|\\(|\\)|\\{|\\})/g, '\\\\$1')\n .replace(/--ESCAPED_PARAM_PLUS/g, '+')\n .replace(/--ESCAPED_PARAM_COLON/g, ':')\n .replace(/--ESCAPED_PARAM_QUESTION/g, '?')\n .replace(/--ESCAPED_PARAM_ASTERISKS/g, '*')\n\n // the value needs to start with a forward-slash to be compiled\n // correctly\n return safeCompile(`/${value}`, { validate: false })(params).slice(1)\n}\n\nexport function parseDestination(args: {\n destination: string\n params: Readonly<Params>\n query: Readonly<NextParsedUrlQuery>\n}) {\n let escaped = args.destination\n for (const param of Object.keys({ ...args.params, ...args.query })) {\n if (!param) continue\n\n escaped = escapeSegment(escaped, param)\n }\n\n const parsed = parseUrl(escaped)\n\n let pathname = parsed.pathname\n if (pathname) {\n pathname = unescapeSegments(pathname)\n }\n\n let href = parsed.href\n if (href) {\n href = unescapeSegments(href)\n }\n\n let hostname = parsed.hostname\n if (hostname) {\n hostname = unescapeSegments(hostname)\n }\n\n let hash = parsed.hash\n if (hash) {\n hash = unescapeSegments(hash)\n }\n\n let search = parsed.search\n if (search) {\n search = unescapeSegments(search)\n }\n\n let origin = parsed.origin\n if (origin) {\n origin = unescapeSegments(origin)\n }\n\n return {\n ...parsed,\n pathname,\n hostname,\n href,\n hash,\n search,\n origin,\n }\n}\n\nexport function prepareDestination(args: {\n appendParamsToQuery: boolean\n destination: string\n params: Params\n query: NextParsedUrlQuery\n}) {\n const parsedDestination = parseDestination(args)\n\n const {\n hostname: destHostname,\n query: destQuery,\n search: destSearch,\n } = parsedDestination\n\n // The following code assumes that the pathname here includes the hash if it's\n // present.\n let destPath = parsedDestination.pathname\n if (parsedDestination.hash) {\n destPath = `${destPath}${parsedDestination.hash}`\n }\n\n const destParams: (string | number)[] = []\n\n const destPathParamKeys: Key[] = []\n safePathToRegexp(destPath, destPathParamKeys)\n for (const key of destPathParamKeys) {\n destParams.push(key.name)\n }\n\n if (destHostname) {\n const destHostnameParamKeys: Key[] = []\n safePathToRegexp(destHostname, destHostnameParamKeys)\n for (const key of destHostnameParamKeys) {\n destParams.push(key.name)\n }\n }\n\n const destPathCompiler = safeCompile(\n destPath,\n // we don't validate while compiling the destination since we should\n // have already validated before we got to this point and validating\n // breaks compiling destinations with named pattern params from the source\n // e.g. /something:hello(.*) -> /another/:hello is broken with validation\n // since compile validation is meant for reversing and not for inserting\n // params from a separate path-regex into another\n { validate: false }\n )\n\n let destHostnameCompiler\n if (destHostname) {\n destHostnameCompiler = safeCompile(destHostname, { validate: false })\n }\n\n // update any params in query values\n for (const [key, strOrArray] of Object.entries(destQuery)) {\n // the value needs to start with a forward-slash to be compiled\n // correctly\n if (Array.isArray(strOrArray)) {\n destQuery[key] = strOrArray.map((value) =>\n compileNonPath(unescapeSegments(value), args.params)\n )\n } else if (typeof strOrArray === 'string') {\n destQuery[key] = compileNonPath(unescapeSegments(strOrArray), args.params)\n }\n }\n\n // add path params to query if it's not a redirect and not\n // already defined in destination query or path\n let paramKeys = Object.keys(args.params).filter(\n (name) => name !== 'nextInternalLocale'\n )\n\n if (\n args.appendParamsToQuery &&\n !paramKeys.some((key) => destParams.includes(key))\n ) {\n for (const key of paramKeys) {\n if (!(key in destQuery)) {\n destQuery[key] = args.params[key]\n }\n }\n }\n\n let newUrl\n\n // The compiler also that the interception route marker is an unnamed param, hence '0',\n // so we need to add it to the params object.\n if (isInterceptionRouteAppPath(destPath)) {\n for (const segment of destPath.split('/')) {\n const marker = INTERCEPTION_ROUTE_MARKERS.find((m) =>\n segment.startsWith(m)\n )\n if (marker) {\n if (marker === '(..)(..)') {\n args.params['0'] = '(..)'\n args.params['1'] = '(..)'\n } else {\n args.params['0'] = marker\n }\n break\n }\n }\n }\n\n try {\n newUrl = destPathCompiler(args.params)\n\n const [pathname, hash] = newUrl.split('#', 2)\n if (destHostnameCompiler) {\n parsedDestination.hostname = destHostnameCompiler(args.params)\n }\n parsedDestination.pathname = pathname\n parsedDestination.hash = `${hash ? '#' : ''}${hash || ''}`\n parsedDestination.search = destSearch\n ? compileNonPath(destSearch, args.params)\n : ''\n } catch (err: any) {\n if (err.message.match(/Expected .*? to not repeat, but got an array/)) {\n throw new Error(\n `To use a multi-match in the destination you must add \\`*\\` at the end of the param name to signify it should repeat. https://nextjs.org/docs/messages/invalid-multi-match`\n )\n }\n throw err\n }\n\n // Query merge order lowest priority to highest\n // 1. initial URL query values\n // 2. path segment values\n // 3. destination specified query values\n parsedDestination.query = {\n ...args.query,\n ...parsedDestination.query,\n }\n\n return {\n newUrl,\n destQuery,\n parsedDestination,\n }\n}\n","import type { OutgoingHttpHeaders } from 'http'\nimport {\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../../lib/constants'\n\n/**\n * Converts a Node.js IncomingHttpHeaders object to a Headers object. Any\n * headers with multiple values will be joined with a comma and space. Any\n * headers that have an undefined value will be ignored and others will be\n * coerced to strings.\n *\n * @param nodeHeaders the headers object to convert\n * @returns the converted headers object\n */\nexport function fromNodeOutgoingHttpHeaders(\n nodeHeaders: OutgoingHttpHeaders\n): Headers {\n const headers = new Headers()\n for (let [key, value] of Object.entries(nodeHeaders)) {\n const values = Array.isArray(value) ? value : [value]\n for (let v of values) {\n if (typeof v === 'undefined') continue\n if (typeof v === 'number') {\n v = v.toString()\n }\n\n headers.append(key, v)\n }\n }\n return headers\n}\n\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n \n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nexport function splitCookiesString(cookiesString: string) {\n var cookiesStrings = []\n var pos = 0\n var start\n var ch\n var lastComma\n var nextStart\n var cookiesSeparatorFound\n\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1\n }\n return pos < cookiesString.length\n }\n\n function notSpecialChar() {\n ch = cookiesString.charAt(pos)\n\n return ch !== '=' && ch !== ';' && ch !== ','\n }\n\n while (pos < cookiesString.length) {\n start = pos\n cookiesSeparatorFound = false\n\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos)\n if (ch === ',') {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos\n pos += 1\n\n skipWhitespace()\n nextStart = pos\n\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1\n }\n\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') {\n // we found cookies separator\n cookiesSeparatorFound = true\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart\n cookiesStrings.push(cookiesString.substring(start, lastComma))\n start = pos\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1\n }\n } else {\n pos += 1\n }\n }\n\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length))\n }\n }\n\n return cookiesStrings\n}\n\n/**\n * Converts a Headers object to a Node.js OutgoingHttpHeaders object. This is\n * required to support the set-cookie header, which may have multiple values.\n *\n * @param headers the headers object to convert\n * @returns the converted headers object\n */\nexport function toNodeOutgoingHttpHeaders(\n headers: Headers\n): OutgoingHttpHeaders {\n const nodeHeaders: OutgoingHttpHeaders = {}\n const cookies: string[] = []\n if (headers) {\n for (const [key, value] of headers.entries()) {\n if (key.toLowerCase() === 'set-cookie') {\n // We may have gotten a comma joined string of cookies, or multiple\n // set-cookie headers. We need to merge them into one header array\n // to represent all the cookies.\n cookies.push(...splitCookiesString(value))\n nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies\n } else {\n nodeHeaders[key] = value\n }\n }\n }\n return nodeHeaders\n}\n\n/**\n * Validate the correctness of a user-provided URL.\n */\nexport function validateURL(url: string | URL): string {\n try {\n return String(new URL(String(url)))\n } catch (error: any) {\n throw new Error(\n `URL is malformed \"${String(\n url\n )}\". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`,\n { cause: error }\n )\n }\n}\n\n/**\n * Normalizes `nxtP` and `nxtI` query param values to remove the prefix.\n * This function does not mutate the input key.\n */\nexport function normalizeNextQueryParam(key: string): null | string {\n const prefixes = [NEXT_QUERY_PARAM_PREFIX, NEXT_INTERCEPTION_MARKER_PREFIX]\n for (const prefix of prefixes) {\n if (key !== prefix && key.startsWith(prefix)) {\n return key.substring(prefix.length)\n }\n }\n return null\n}\n","/**\n * Decodes a query path parameter.\n *\n * @param value - The value to decode.\n * @returns The decoded value.\n */\nexport function decodeQueryPathParameter(value: string) {\n // When deployed to Vercel, the value may be encoded, so this attempts to\n // decode it and returns the original value if it fails.\n try {\n return decodeURIComponent(value)\n } catch {\n return value\n }\n}\n","export const RSC_HEADER = 'rsc' as const\nexport const ACTION_HEADER = 'next-action' as const\n// TODO: Instead of sending the full router state, we only need to send the\n// segment path. Saves bytes. Then we could also use this field for segment\n// prefetches, which also need to specify a particular segment.\nexport const NEXT_ROUTER_STATE_TREE_HEADER = 'next-router-state-tree' as const\nexport const NEXT_ROUTER_PREFETCH_HEADER = 'next-router-prefetch' as const\n// This contains the path to the segment being prefetched.\n// TODO: If we change next-router-state-tree to be a segment path, we can use\n// that instead. Then next-router-prefetch and next-router-segment-prefetch can\n// be merged into a single enum.\nexport const NEXT_ROUTER_SEGMENT_PREFETCH_HEADER =\n 'next-router-segment-prefetch' as const\nexport const NEXT_HMR_REFRESH_HEADER = 'next-hmr-refresh' as const\nexport const NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__' as const\nexport const NEXT_URL = 'next-url' as const\nexport const RSC_CONTENT_TYPE_HEADER = 'text/x-component' as const\n\nexport const FLIGHT_HEADERS = [\n RSC_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER,\n] as const\n\nexport const NEXT_RSC_UNION_QUERY = '_rsc' as const\n\nexport const NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time' as const\nexport const NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed' as const\nexport const NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path' as const\nexport const NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query' as const\nexport const NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender' as const\nexport const NEXT_ACTION_NOT_FOUND_HEADER = 'x-nextjs-action-not-found' as const\nexport const NEXT_REQUEST_ID_HEADER = 'x-nextjs-request-id' as const\nexport const NEXT_HTML_REQUEST_ID_HEADER = 'x-nextjs-html-request-id' as const\n\n// TODO: Should this include nextjs in the name, like the others?\nexport const NEXT_ACTION_REVALIDATED_HEADER = 'x-action-revalidated' as const\n","import type { UrlWithParsedQuery } from 'url'\nimport { NEXT_RSC_UNION_QUERY } from '../client/components/app-router-headers'\n\nconst DUMMY_ORIGIN = 'http://n'\n\nexport function isFullStringUrl(url: string) {\n return /https?:\\/\\//.test(url)\n}\n\nexport function parseUrl(url: string): URL | undefined {\n let parsed: URL | undefined = undefined\n try {\n parsed = new URL(url, DUMMY_ORIGIN)\n } catch {}\n return parsed\n}\n\nexport function parseReqUrl(url: string): UrlWithParsedQuery | undefined {\n const parsedUrl: URL | undefined = parseUrl(url)\n\n if (!parsedUrl) {\n return\n }\n\n const query: Record<string, string | string[]> = {}\n\n for (const key of parsedUrl.searchParams.keys()) {\n const values = parsedUrl.searchParams.getAll(key)\n query[key] = values.length > 1 ? values : values[0]\n }\n\n const legacyUrl: UrlWithParsedQuery = {\n query,\n hash: parsedUrl.hash,\n search: parsedUrl.search,\n path: parsedUrl.pathname,\n pathname: parsedUrl.pathname,\n href: `${parsedUrl.pathname}${parsedUrl.search}${parsedUrl.hash}`,\n host: '',\n hostname: '',\n auth: '',\n protocol: '',\n slashes: null,\n port: '',\n }\n return legacyUrl\n}\n\nexport function stripNextRscUnionQuery(relativeUrl: string): string {\n const urlInstance = new URL(relativeUrl, DUMMY_ORIGIN)\n urlInstance.searchParams.delete(NEXT_RSC_UNION_QUERY)\n\n return urlInstance.pathname + urlInstance.search\n}\n","// Format function modified from nodejs\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { UrlObject } from 'url'\nimport type { ParsedUrlQuery } from 'querystring'\nimport * as querystring from './querystring'\n\nconst slashedProtocols = /https?|ftp|gopher|file/\n\nexport function formatUrl(urlObj: UrlObject) {\n let { auth, hostname } = urlObj\n let protocol = urlObj.protocol || ''\n let pathname = urlObj.pathname || ''\n let hash = urlObj.hash || ''\n let query = urlObj.query || ''\n let host: string | false = false\n\n auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : ''\n\n if (urlObj.host) {\n host = auth + urlObj.host\n } else if (hostname) {\n host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname)\n if (urlObj.port) {\n host += ':' + urlObj.port\n }\n }\n\n if (query && typeof query === 'object') {\n query = String(querystring.urlQueryToSearchParams(query as ParsedUrlQuery))\n }\n\n let search = urlObj.search || (query && `?${query}`) || ''\n\n if (protocol && !protocol.endsWith(':')) protocol += ':'\n\n if (\n urlObj.slashes ||\n ((!protocol || slashedProtocols.test(protocol)) && host !== false)\n ) {\n host = '//' + (host || '')\n if (pathname && pathname[0] !== '/') pathname = '/' + pathname\n } else if (!host) {\n host = ''\n }\n\n if (hash && hash[0] !== '#') hash = '#' + hash\n if (search && search[0] !== '?') search = '?' + search\n\n pathname = pathname.replace(/[?#]/g, encodeURIComponent)\n search = search.replace('#', '%23')\n\n return `${protocol}${host}${pathname}${search}${hash}`\n}\n\nexport const urlObjectKeys = [\n 'auth',\n 'hash',\n 'host',\n 'hostname',\n 'href',\n 'path',\n 'pathname',\n 'port',\n 'protocol',\n 'query',\n 'search',\n 'slashes',\n]\n\nexport function formatWithValidation(url: UrlObject): string {\n if (process.env.NODE_ENV === 'development') {\n if (url !== null && typeof url === 'object') {\n Object.keys(url).forEach((key) => {\n if (!urlObjectKeys.includes(key)) {\n console.warn(\n `Unknown key passed via urlObject into url.format: ${key}`\n )\n }\n })\n }\n }\n\n return formatUrl(url)\n}\n","import type { Rewrite } from '../lib/load-custom-routes'\nimport type { RouteMatchFn } from '../shared/lib/router/utils/route-matcher'\nimport type { NextConfig } from './config'\nimport type { BaseNextRequest } from './base-http'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { UrlWithParsedQuery } from 'url'\n\nimport { normalizeLocalePath } from '../shared/lib/i18n/normalize-locale-path'\nimport { getPathMatch } from '../shared/lib/router/utils/path-match'\nimport { getNamedRouteRegex } from '../shared/lib/router/utils/route-regex'\nimport { getRouteMatcher } from '../shared/lib/router/utils/route-matcher'\nimport {\n matchHas,\n prepareDestination,\n} from '../shared/lib/router/utils/prepare-destination'\nimport { removeTrailingSlash } from '../shared/lib/router/utils/remove-trailing-slash'\nimport { normalizeRscURL } from '../shared/lib/router/utils/app-paths'\nimport {\n NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER,\n NEXT_CACHE_REVALIDATED_TAGS_HEADER,\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../lib/constants'\nimport { normalizeNextQueryParam } from './web/utils'\nimport type { IncomingHttpHeaders, IncomingMessage } from 'http'\nimport { decodeQueryPathParameter } from './lib/decode-query-path-parameter'\nimport type { DeepReadonly } from '../shared/lib/deep-readonly'\nimport { parseReqUrl } from '../lib/url'\nimport { formatUrl } from '../shared/lib/router/utils/format-url'\n\nfunction filterInternalQuery(\n query: Record<string, undefined | string | string[]>,\n paramKeys: string[]\n) {\n // this is used to pass query information in rewrites\n // but should not be exposed in final query\n delete query['nextInternalLocale']\n\n for (const key in query) {\n const isNextQueryPrefix =\n key !== NEXT_QUERY_PARAM_PREFIX && key.startsWith(NEXT_QUERY_PARAM_PREFIX)\n\n const isNextInterceptionMarkerPrefix =\n key !== NEXT_INTERCEPTION_MARKER_PREFIX &&\n key.startsWith(NEXT_INTERCEPTION_MARKER_PREFIX)\n\n if (\n isNextQueryPrefix ||\n isNextInterceptionMarkerPrefix ||\n paramKeys.includes(key)\n ) {\n delete query[key]\n }\n }\n}\n\nexport function normalizeCdnUrl(\n req: BaseNextRequest | IncomingMessage,\n paramKeys: string[]\n) {\n // make sure to normalize req.url from CDNs to strip dynamic and rewrite\n // params from the query which are added during routing\n const _parsedUrl = parseReqUrl(req.url!)\n\n // we can't normalize if we can't parse\n if (!_parsedUrl) {\n return req.url\n }\n delete (_parsedUrl as any).search\n filterInternalQuery(_parsedUrl.query, paramKeys)\n\n req.url = formatUrl(_parsedUrl)\n}\n\nexport function interpolateDynamicPath(\n pathname: string,\n params: ParsedUrlQuery,\n defaultRouteRegex?: ReturnType<typeof getNamedRouteRegex> | undefined\n) {\n if (!defaultRouteRegex) return pathname\n\n for (const param of Object.keys(defaultRouteRegex.groups)) {\n const { optional, repeat } = defaultRouteRegex.groups[param]\n let builtParam = `[${repeat ? '...' : ''}${param}]`\n\n if (optional) {\n builtParam = `[${builtParam}]`\n }\n\n let paramValue: string\n const value = params[param]\n\n if (Array.isArray(value)) {\n paramValue = value.map((v) => v && encodeURIComponent(v)).join('/')\n } else if (value) {\n paramValue = encodeURIComponent(value)\n } else {\n paramValue = ''\n }\n\n if (paramValue || optional) {\n pathname = pathname.replaceAll(builtParam, paramValue)\n }\n }\n\n return pathname\n}\n\nexport function normalizeDynamicRouteParams(\n query: ParsedUrlQuery,\n defaultRouteRegex: ReturnType<typeof getNamedRouteRegex>,\n defaultRouteMatches: ParsedUrlQuery,\n ignoreMissingOptional: boolean\n) {\n let hasValidParams = true\n let params: ParsedUrlQuery = {}\n\n for (const key of Object.keys(defaultRouteRegex.groups)) {\n let value: string | string[] | undefined = query[key]\n\n if (typeof value === 'string') {\n value = normalizeRscURL(value)\n } else if (Array.isArray(value)) {\n value = value.map(normalizeRscURL)\n }\n\n // if the value matches the default value we can't rely\n // on the parsed params, this is used to signal if we need\n // to parse x-now-route-matches or not\n const defaultValue = defaultRouteMatches![key]\n const isOptional = defaultRouteRegex!.groups[key].optional\n\n const isDefaultValue = Array.isArray(defaultValue)\n ? defaultValue.some((defaultVal) => {\n return Array.isArray(value)\n ? value.some((val) => val.includes(defaultVal))\n : value?.includes(defaultVal)\n })\n : value?.includes(defaultValue as string)\n\n if (\n isDefaultValue ||\n (typeof value === 'undefined' && !(isOptional && ignoreMissingOptional))\n ) {\n return { params: {}, hasValidParams: false }\n }\n\n // non-provided optional values should be undefined so normalize\n // them to undefined\n if (\n isOptional &&\n (!value ||\n (Array.isArray(value) &&\n value.length === 1 &&\n // fallback optional catch-all SSG pages have\n // [[...paramName]] for the root path on Vercel\n (value[0] === 'index' || value[0] === `[[...${key}]]`)) ||\n value === 'index' ||\n value === `[[...${key}]]`)\n ) {\n value = undefined\n delete query[key]\n }\n\n // query values from the proxy aren't already split into arrays\n // so make sure to normalize catch-all values\n if (\n value &&\n typeof value === 'string' &&\n defaultRouteRegex!.groups[key].repeat\n ) {\n value = value.split('/')\n }\n\n if (value) {\n params[key] = value\n }\n }\n\n return {\n params,\n hasValidParams,\n }\n}\n\nexport function getServerUtils({\n page,\n i18n,\n basePath,\n rewrites,\n pageIsDynamic,\n trailingSlash,\n caseSensitive,\n}: {\n page: string\n i18n?: NextConfig['i18n']\n basePath: string\n rewrites: DeepReadonly<{\n fallback?: ReadonlyArray<Rewrite>\n afterFiles?: ReadonlyArray<Rewrite>\n beforeFiles?: ReadonlyArray<Rewrite>\n }>\n pageIsDynamic: boolean\n trailingSlash?: boolean\n caseSensitive: boolean\n}) {\n let defaultRouteRegex: ReturnType<typeof getNamedRouteRegex> | undefined\n let dynamicRouteMatcher: RouteMatchFn | undefined\n let defaultRouteMatches: ParsedUrlQuery | undefined\n\n if (pageIsDynamic) {\n defaultRouteRegex = getNamedRouteRegex(page, {\n prefixRouteKeys: false,\n })\n dynamicRouteMatcher = getRouteMatcher(defaultRouteRegex)\n defaultRouteMatches = dynamicRouteMatcher(page) as ParsedUrlQuery\n }\n\n function handleRewrites(\n req: BaseNextRequest | IncomingMessage,\n parsedUrl: DeepReadonly<UrlWithParsedQuery>\n ) {\n // Here we deep clone the parsedUrl to avoid mutating the original. We also\n // cast this to a mutable type so we can mutate it within this scope.\n const rewrittenParsedUrl = structuredClone(parsedUrl) as UrlWithParsedQuery\n const rewriteParams: Record<string, string> = {}\n let fsPathname = rewrittenParsedUrl.pathname\n\n const matchesPage = () => {\n const fsPathnameNoSlash = removeTrailingSlash(fsPathname || '')\n return (\n fsPathnameNoSlash === removeTrailingSlash(page) ||\n dynamicRouteMatcher?.(fsPathnameNoSlash)\n )\n }\n\n const checkRewrite = (rewrite: DeepReadonly<Rewrite>): boolean => {\n const matcher = getPathMatch(\n rewrite.source + (trailingSlash ? '(/)?' : ''),\n {\n removeUnnamedParams: true,\n strict: true,\n sensitive: !!caseSensitive,\n }\n )\n\n if (!rewrittenParsedUrl.pathname) return false\n\n let params = matcher(rewrittenParsedUrl.pathname)\n\n if ((rewrite.has || rewrite.missing) && params) {\n const hasParams = matchHas(\n req,\n rewrittenParsedUrl.query,\n rewrite.has as Rewrite['has'],\n rewrite.missing as Rewrite['missing']\n )\n\n if (hasParams) {\n Object.assign(params, hasParams)\n } else {\n params = false\n }\n }\n\n if (params) {\n const { parsedDestination, destQuery } = prepareDestination({\n appendParamsToQuery: true,\n destination: rewrite.destination,\n params: params,\n query: rewrittenParsedUrl.query,\n })\n\n // if the rewrite destination is external break rewrite chain\n if (parsedDestination.protocol) {\n return true\n }\n\n Object.assign(rewriteParams, destQuery, params)\n Object.assign(rewrittenParsedUrl.query, parsedDestination.query)\n delete (parsedDestination as any).query\n\n Object.assign(rewrittenParsedUrl, parsedDestination)\n\n fsPathname = rewrittenParsedUrl.pathname\n if (!fsPathname) return false\n\n if (basePath) {\n fsPathname = fsPathname.replace(new RegExp(`^${basePath}`), '') || '/'\n }\n\n if (i18n) {\n const result = normalizeLocalePath(fsPathname, i18n.locales)\n fsPathname = result.pathname\n rewrittenParsedUrl.query.nextInternalLocale =\n result.detectedLocale || params.nextInternalLocale\n }\n\n if (fsPathname === page) {\n return true\n }\n\n if (pageIsDynamic && dynamicRouteMatcher) {\n const dynamicParams = dynamicRouteMatcher(fsPathname)\n if (dynamicParams) {\n rewrittenParsedUrl.query = {\n ...rewrittenParsedUrl.query,\n ...dynamicParams,\n }\n return true\n }\n }\n }\n\n return false\n }\n\n for (const rewrite of rewrites.beforeFiles || []) {\n checkRewrite(rewrite)\n }\n\n if (fsPathname !== page) {\n let finished = false\n\n for (const rewrite of rewrites.afterFiles || []) {\n finished = checkRewrite(rewrite)\n if (finished) break\n }\n\n if (!finished && !matchesPage()) {\n for (const rewrite of rewrites.fallback || []) {\n finished = checkRewrite(rewrite)\n if (finished) break\n }\n }\n }\n\n return { rewriteParams, rewrittenParsedUrl }\n }\n\n function getParamsFromRouteMatches(routeMatchesHeader: string) {\n // If we don't have a default route regex, we can't get params from route\n // matches\n if (!defaultRouteRegex) return null\n\n const { groups, routeKeys } = defaultRouteRegex\n\n const matcher = getRouteMatcher({\n re: {\n // Simulate a RegExp match from the \\`req.url\\` input\n exec: (str: string) => {\n // Normalize all the prefixed query params.\n const obj: Record<string, string> = Object.fromEntries(\n new URLSearchParams(str)\n )\n for (const [key, value] of Object.entries(obj)) {\n const normalizedKey = normalizeNextQueryParam(key)\n if (!normalizedKey) continue\n\n obj[normalizedKey] = value\n delete obj[key]\n }\n\n // Use all the named route keys.\n const result = {} as RegExpExecArray\n for (const keyName of Object.keys(routeKeys)) {\n const paramName = routeKeys[keyName]\n\n // If this param name is not a valid parameter name, then skip it.\n if (!paramName) continue\n\n const group = groups[paramName]\n const value = obj[keyName]\n\n // When we're missing a required param, we can't match the route.\n if (!group.optional && !value) return null\n\n result[group.pos] = value\n }\n\n return result\n },\n },\n groups,\n })\n\n const routeMatches = matcher(routeMatchesHeader)\n if (!routeMatches) return null\n\n return routeMatches\n }\n\n function normalizeQueryParams(\n query: Record<string, string | string[] | undefined>,\n routeParamKeys: Set<string>\n ) {\n // this is used to pass query information in rewrites\n // but should not be exposed in final query\n delete query['nextInternalLocale']\n\n for (const [key, value] of Object.entries(query)) {\n const normalizedKey = normalizeNextQueryParam(key)\n if (!normalizedKey) continue\n\n // Remove the prefixed key from the query params because we want\n // to consume it for the dynamic route matcher.\n delete query[key]\n routeParamKeys.add(normalizedKey)\n\n if (typeof value === 'undefined') continue\n\n query[normalizedKey] = Array.isArray(value)\n ? value.map((v) => decodeQueryPathParameter(v))\n : decodeQueryPathParameter(value)\n }\n }\n\n return {\n handleRewrites,\n defaultRouteRegex,\n dynamicRouteMatcher,\n defaultRouteMatches,\n normalizeQueryParams,\n getParamsFromRouteMatches,\n /**\n * Normalize dynamic route params.\n *\n * @param query - The query params to normalize.\n * @param ignoreMissingOptional - Whether to ignore missing optional params.\n * @returns The normalized params and whether they are valid.\n */\n normalizeDynamicRouteParams: (\n query: ParsedUrlQuery,\n ignoreMissingOptional: boolean\n ) => {\n if (!defaultRouteRegex || !defaultRouteMatches) {\n return { params: {}, hasValidParams: false }\n }\n\n return normalizeDynamicRouteParams(\n query,\n defaultRouteRegex,\n defaultRouteMatches,\n ignoreMissingOptional\n )\n },\n\n normalizeCdnUrl: (\n req: BaseNextRequest | IncomingMessage,\n paramKeys: string[]\n ) => normalizeCdnUrl(req, paramKeys),\n\n interpolateDynamicPath: (\n pathname: string,\n params: Record<string, undefined | string | string[]>\n ) => interpolateDynamicPath(pathname, params, defaultRouteRegex),\n\n filterInternalQuery: (query: ParsedUrlQuery, paramKeys: string[]) =>\n filterInternalQuery(query, paramKeys),\n }\n}\n\nexport function getPreviouslyRevalidatedTags(\n headers: IncomingHttpHeaders,\n previewModeId: string | undefined\n): string[] {\n return typeof headers[NEXT_CACHE_REVALIDATED_TAGS_HEADER] === 'string' &&\n headers[NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER] === previewModeId\n ? headers[NEXT_CACHE_REVALIDATED_TAGS_HEADER].split(',')\n : []\n}\n","// http://www.cse.yorku.ca/~oz/hash.html\n// More specifically, 32-bit hash via djbxor\n// (ref: https://gist.github.com/eplawless/52813b1d8ad9af510d85?permalink_comment_id=3367765#gistcomment-3367765)\n// This is due to number type differences between rust for turbopack to js number types,\n// where rust does not have easy way to repreesnt js's 53-bit float number type for the matching\n// overflow behavior. This is more `correct` in terms of having canonical hash across different runtime / implementation\n// as can gaurantee determinstic output from 32bit hash.\nexport function djb2Hash(str: string) {\n let hash = 5381\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i)\n hash = ((hash << 5) + hash + char) & 0xffffffff\n }\n return hash >>> 0\n}\n\nexport function hexHash(str: string) {\n return djb2Hash(str).toString(36).slice(0, 5)\n}\n","import { isMetadataPage } from './is-metadata-route'\nimport path from '../../shared/lib/isomorphic/path'\nimport { interpolateDynamicPath } from '../../server/server-utils'\nimport { getNamedRouteRegex } from '../../shared/lib/router/utils/route-regex'\nimport { djb2Hash } from '../../shared/lib/hash'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { normalizePathSep } from '../../shared/lib/page-path/normalize-path-sep'\nimport {\n isGroupSegment,\n isParallelRouteSegment,\n} from '../../shared/lib/segment'\n\n/*\n * If there's special convention like (...) or @ in the page path,\n * Give it a unique hash suffix to avoid conflicts\n *\n * e.g.\n * /opengraph-image -> /opengraph-image\n * /(post)/opengraph-image.tsx -> /opengraph-image-[0-9a-z]{6}\n *\n * Sitemap is an exception, it should not have a suffix.\n * Each sitemap contains all the urls of sub routes, we don't have the case of duplicates `/(group)/sitemap.[ext]` and `/sitemap.[ext]` since they should be the same.\n * Hence we always normalize the urls for sitemap and do not append hash suffix, and ensure user-land only contains one sitemap per pathname.\n *\n * /sitemap -> /sitemap\n * /(post)/sitemap -> /sitemap\n */\nfunction getMetadataRouteSuffix(page: string) {\n // Remove the last segment and get the parent pathname\n // e.g. /parent/a/b/c -> /parent/a/b\n // e.g. /parent/opengraph-image -> /parent\n const parentPathname = path.dirname(page)\n // Only apply suffix to metadata routes except for sitemaps\n if (page.endsWith('/sitemap') || page.endsWith('/sitemap.xml')) {\n return ''\n }\n\n // Calculate the hash suffix based on the parent path\n let suffix = ''\n // Check if there's any special characters in the parent pathname.\n const segments = parentPathname.split('/')\n if (\n segments.some((seg) => isGroupSegment(seg) || isParallelRouteSegment(seg))\n ) {\n // Hash the parent path to get a unique suffix\n suffix = djb2Hash(parentPathname).toString(36).slice(0, 6)\n }\n return suffix\n}\n\n/**\n * Fill the dynamic segment in the metadata route\n *\n * Example:\n * fillMetadataSegment('/a/[slug]', { params: { slug: 'b' } }, 'open-graph') -> '/a/b/open-graph'\n *\n */\nexport function fillMetadataSegment(\n segment: string,\n params: any,\n lastSegment: string\n) {\n const pathname = normalizeAppPath(segment)\n const routeRegex = getNamedRouteRegex(pathname, {\n prefixRouteKeys: false,\n })\n const route = interpolateDynamicPath(pathname, params, routeRegex)\n const { name, ext } = path.parse(lastSegment)\n const pagePath = path.posix.join(segment, name)\n const suffix = getMetadataRouteSuffix(pagePath)\n const routeSuffix = suffix ? `-${suffix}` : ''\n\n return normalizePathSep(path.join(route, `${name}${routeSuffix}${ext}`))\n}\n\n/**\n * Map metadata page key to the corresponding route\n *\n * static file page key: /app/robots.txt -> /robots.xml -> /robots.txt/route\n * dynamic route page key: /app/robots.tsx -> /robots -> /robots.txt/route\n *\n * @param page\n * @returns\n */\nexport function normalizeMetadataRoute(page: string) {\n if (!isMetadataPage(page)) {\n return page\n }\n let route = page\n let suffix = ''\n if (page === '/robots') {\n route += '.txt'\n } else if (page === '/manifest') {\n route += '.webmanifest'\n } else {\n suffix = getMetadataRouteSuffix(page)\n }\n // Support both /<metadata-route.ext> and custom routes /<metadata-route>/route.ts.\n // If it's a metadata file route, we need to append /[id]/route to the page.\n if (!route.endsWith('/route')) {\n const { dir, name: baseName, ext } = path.parse(route)\n route = path.posix.join(\n dir,\n `${baseName}${suffix ? `-${suffix}` : ''}${ext}`,\n 'route'\n )\n }\n\n return route\n}\n\n// Normalize metadata route page to either a single route or a dynamic route.\n// e.g. Input: /sitemap/route\n// when isDynamic is false, single route -> /sitemap.xml/route\n// when isDynamic is false, dynamic route -> /sitemap/[__metadata_id__]/route\n// also works for pathname such as /sitemap -> /sitemap.xml, but will not append /route suffix\nexport function normalizeMetadataPageToRoute(page: string, isDynamic: boolean) {\n const isRoute = page.endsWith('/route')\n const routePagePath = isRoute ? page.slice(0, -'/route'.length) : page\n const metadataRouteExtension = routePagePath.endsWith('/sitemap')\n ? '.xml'\n : ''\n const mapped = isDynamic\n ? `${routePagePath}/[__metadata_id__]`\n : `${routePagePath}${metadataRouteExtension}`\n\n return mapped + (isRoute ? '/route' : '')\n}\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-rsc']!.ReactServerDOMTurbopackStatic\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nconst { createClientModuleProxy } = require(\"react-server-dom-turbopack/server\");\n\n__turbopack_context__.n(createClientModuleProxy(\"[project]/node_modules/.pnpm/next@16.1.1_@babel+core@7.26.10_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/layout-router.js\"));\n","'use client'\n\nimport type { CacheNode } from '../../shared/lib/app-router-types'\nimport type { LoadingModuleData } from '../../shared/lib/app-router-types'\nimport type {\n FlightRouterState,\n FlightSegmentPath,\n Segment,\n} from '../../shared/lib/app-router-types'\nimport type { ErrorComponent } from './error-boundary'\nimport type { FocusAndScrollRef } from './router-reducer/router-reducer-types'\n\nimport React, {\n Activity,\n useContext,\n use,\n Suspense,\n useDeferredValue,\n type JSX,\n type ActivityProps,\n} from 'react'\nimport ReactDOM from 'react-dom'\nimport {\n LayoutRouterContext,\n GlobalLayoutRouterContext,\n TemplateContext,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport { unresolvedThenable } from './unresolved-thenable'\nimport { ErrorBoundary } from './error-boundary'\nimport { matchSegment } from './match-segments'\nimport { disableSmoothScrollDuringRouteTransition } from '../../shared/lib/router/utils/disable-smooth-scroll'\nimport { RedirectBoundary } from './redirect-boundary'\nimport { HTTPAccessFallbackBoundary } from './http-access-fallback/error-boundary'\nimport { createRouterCacheKey } from './router-reducer/create-router-cache-key'\nimport { useRouterBFCache, type RouterBFCacheEntry } from './bfcache'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport {\n NavigationPromisesContext,\n type NavigationPromises,\n} from '../../shared/lib/hooks-client-context.shared-runtime'\nimport { getParamValueFromCacheKey } from '../route-params'\nimport type { Params } from '../../server/request/params'\nimport { isDeferredRsc } from './router-reducer/ppr-navigations'\n\nconst __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = (\n ReactDOM as any\n).__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE\n\n// TODO-APP: Replace with new React API for finding dom nodes without a `ref` when available\n/**\n * Wraps ReactDOM.findDOMNode with additional logic to hide React Strict Mode warning\n */\nfunction findDOMNode(\n instance: React.ReactInstance | null | undefined\n): Element | Text | null {\n // Tree-shake for server bundle\n if (typeof window === 'undefined') return null\n\n // __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode is null during module init.\n // We need to lazily reference it.\n const internal_reactDOMfindDOMNode =\n __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode\n return internal_reactDOMfindDOMNode(instance)\n}\n\nconst rectProperties = [\n 'bottom',\n 'height',\n 'left',\n 'right',\n 'top',\n 'width',\n 'x',\n 'y',\n] as const\n/**\n * Check if a HTMLElement is hidden or fixed/sticky position\n */\nfunction shouldSkipElement(element: HTMLElement) {\n // we ignore fixed or sticky positioned elements since they'll likely pass the \"in-viewport\" check\n // and will result in a situation we bail on scroll because of something like a fixed nav,\n // even though the actual page content is offscreen\n if (['sticky', 'fixed'].includes(getComputedStyle(element).position)) {\n return true\n }\n\n // Uses `getBoundingClientRect` to check if the element is hidden instead of `offsetParent`\n // because `offsetParent` doesn't consider document/body\n const rect = element.getBoundingClientRect()\n return rectProperties.every((item) => rect[item] === 0)\n}\n\n/**\n * Check if the top corner of the HTMLElement is in the viewport.\n */\nfunction topOfElementInViewport(element: HTMLElement, viewportHeight: number) {\n const rect = element.getBoundingClientRect()\n return rect.top >= 0 && rect.top <= viewportHeight\n}\n\n/**\n * Find the DOM node for a hash fragment.\n * If `top` the page has to scroll to the top of the page. This mirrors the browser's behavior.\n * If the hash fragment is an id, the page has to scroll to the element with that id.\n * If the hash fragment is a name, the page has to scroll to the first element with that name.\n */\nfunction getHashFragmentDomNode(hashFragment: string) {\n // If the hash fragment is `top` the page has to scroll to the top of the page.\n if (hashFragment === 'top') {\n return document.body\n }\n\n // If the hash fragment is an id, the page has to scroll to the element with that id.\n return (\n document.getElementById(hashFragment) ??\n // If the hash fragment is a name, the page has to scroll to the first element with that name.\n document.getElementsByName(hashFragment)[0]\n )\n}\ninterface ScrollAndFocusHandlerProps {\n focusAndScrollRef: FocusAndScrollRef\n children: React.ReactNode\n segmentPath: FlightSegmentPath\n}\nclass InnerScrollAndFocusHandler extends React.Component<ScrollAndFocusHandlerProps> {\n handlePotentialScroll = () => {\n // Handle scroll and focus, it's only applied once in the first useEffect that triggers that changed.\n const { focusAndScrollRef, segmentPath } = this.props\n\n if (focusAndScrollRef.apply) {\n // segmentPaths is an array of segment paths that should be scrolled to\n // if the current segment path is not in the array, the scroll is not applied\n // unless the array is empty, in which case the scroll is always applied\n if (\n focusAndScrollRef.segmentPaths.length !== 0 &&\n !focusAndScrollRef.segmentPaths.some((scrollRefSegmentPath) =>\n segmentPath.every((segment, index) =>\n matchSegment(segment, scrollRefSegmentPath[index])\n )\n )\n ) {\n return\n }\n\n let domNode:\n | ReturnType<typeof getHashFragmentDomNode>\n | ReturnType<typeof findDOMNode> = null\n const hashFragment = focusAndScrollRef.hashFragment\n\n if (hashFragment) {\n domNode = getHashFragmentDomNode(hashFragment)\n }\n\n // `findDOMNode` is tricky because it returns just the first child if the component is a fragment.\n // This already caused a bug where the first child was a <link/> in head.\n if (!domNode) {\n domNode = findDOMNode(this)\n }\n\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (!(domNode instanceof Element)) {\n return\n }\n\n // Verify if the element is a HTMLElement and if we want to consider it for scroll behavior.\n // If the element is skipped, try to select the next sibling and try again.\n while (!(domNode instanceof HTMLElement) || shouldSkipElement(domNode)) {\n if (process.env.NODE_ENV !== 'production') {\n if (domNode.parentElement?.localName === 'head') {\n // TODO: We enter this state when metadata was rendered as part of the page or via Next.js.\n // This is always a bug in Next.js and caused by React hoisting metadata.\n // We need to replace `findDOMNode` in favor of Fragment Refs (when available) so that we can skip over metadata.\n }\n }\n\n // No siblings found that match the criteria are found, so handle scroll higher up in the tree instead.\n if (domNode.nextElementSibling === null) {\n return\n }\n domNode = domNode.nextElementSibling\n }\n\n // State is mutated to ensure that the focus and scroll is applied only once.\n focusAndScrollRef.apply = false\n focusAndScrollRef.hashFragment = null\n focusAndScrollRef.segmentPaths = []\n\n disableSmoothScrollDuringRouteTransition(\n () => {\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n ;(domNode as HTMLElement).scrollIntoView()\n\n return\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement\n const viewportHeight = htmlElement.clientHeight\n\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(domNode as HTMLElement, viewportHeight)) {\n return\n }\n\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `<html/>` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0\n\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(domNode as HTMLElement, viewportHeight)) {\n // Scroll into view doesn't scroll horizontally by default when not needed\n ;(domNode as HTMLElement).scrollIntoView()\n }\n },\n {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange,\n }\n )\n\n // Mutate after scrolling so that it can be read by `disableSmoothScrollDuringRouteTransition`\n focusAndScrollRef.onlyHashChange = false\n\n // Set focus on the element\n domNode.focus()\n }\n }\n\n componentDidMount() {\n this.handlePotentialScroll()\n }\n\n componentDidUpdate() {\n // Because this property is overwritten in handlePotentialScroll it's fine to always run it when true as it'll be set to false for subsequent renders.\n if (this.props.focusAndScrollRef.apply) {\n this.handlePotentialScroll()\n }\n }\n\n render() {\n return this.props.children\n }\n}\n\nfunction ScrollAndFocusHandler({\n segmentPath,\n children,\n}: {\n segmentPath: FlightSegmentPath\n children: React.ReactNode\n}) {\n const context = useContext(GlobalLayoutRouterContext)\n if (!context) {\n throw new Error('invariant global layout router not mounted')\n }\n\n return (\n <InnerScrollAndFocusHandler\n segmentPath={segmentPath}\n focusAndScrollRef={context.focusAndScrollRef}\n >\n {children}\n </InnerScrollAndFocusHandler>\n )\n}\n\n/**\n * InnerLayoutRouter handles rendering the provided segment based on the cache.\n */\nfunction InnerLayoutRouter({\n tree,\n segmentPath,\n debugNameContext,\n cacheNode: maybeCacheNode,\n params,\n url,\n isActive,\n}: {\n tree: FlightRouterState\n segmentPath: FlightSegmentPath\n debugNameContext: string\n cacheNode: CacheNode | null\n params: Params\n url: string\n isActive: boolean\n}) {\n const context = useContext(GlobalLayoutRouterContext)\n const parentNavPromises = useContext(NavigationPromisesContext)\n\n if (!context) {\n throw new Error('invariant global layout router not mounted')\n }\n\n const cacheNode =\n maybeCacheNode !== null\n ? maybeCacheNode\n : // This segment is not in the cache. Suspend indefinitely.\n //\n // This should only be reachable for inactive/hidden segments, during\n // prerendering The active segment should always be consistent with the\n // CacheNode tree. Regardless, if we don't have a matching CacheNode, we\n // must suspend rather than render nothing, to prevent showing an\n // inconsistent route.\n\n (use(unresolvedThenable) as never)\n\n // `rsc` represents the renderable node for this segment.\n\n // If this segment has a `prefetchRsc`, it's the statically prefetched data.\n // We should use that on initial render instead of `rsc`. Then we'll switch\n // to `rsc` when the dynamic response streams in.\n //\n // If no prefetch data is available, then we go straight to rendering `rsc`.\n const resolvedPrefetchRsc =\n cacheNode.prefetchRsc !== null ? cacheNode.prefetchRsc : cacheNode.rsc\n\n // We use `useDeferredValue` to handle switching between the prefetched and\n // final values. The second argument is returned on initial render, then it\n // re-renders with the first argument.\n const rsc: any = useDeferredValue(cacheNode.rsc, resolvedPrefetchRsc)\n\n // `rsc` is either a React node or a promise for a React node, except we\n // special case `null` to represent that this segment's data is missing. If\n // it's a promise, we need to unwrap it so we can determine whether or not the\n // data is missing.\n let resolvedRsc: React.ReactNode\n if (isDeferredRsc(rsc)) {\n const unwrappedRsc = use(rsc)\n if (unwrappedRsc === null) {\n // If the promise was resolved to `null`, it means the data for this\n // segment was not returned by the server. Suspend indefinitely. When this\n // happens, the router is responsible for triggering a new state update to\n // un-suspend this segment.\n use(unresolvedThenable) as never\n }\n resolvedRsc = unwrappedRsc\n } else {\n // This is not a deferred RSC promise. Don't need to unwrap it.\n if (rsc === null) {\n use(unresolvedThenable) as never\n }\n resolvedRsc = rsc\n }\n\n // In dev, we create a NavigationPromisesContext containing the instrumented promises that provide\n // `useSelectedLayoutSegment` and `useSelectedLayoutSegments`.\n // Promises are cached outside of render to survive suspense retries.\n let navigationPromises: NavigationPromises | null = null\n if (process.env.NODE_ENV !== 'production') {\n const { createNestedLayoutNavigationPromises } =\n require('./navigation-devtools') as typeof import('./navigation-devtools')\n\n navigationPromises = createNestedLayoutNavigationPromises(\n tree,\n parentNavPromises\n )\n }\n\n let children = resolvedRsc\n\n if (navigationPromises) {\n children = (\n <NavigationPromisesContext.Provider value={navigationPromises}>\n {resolvedRsc}\n </NavigationPromisesContext.Provider>\n )\n }\n\n children = (\n // The layout router context narrows down tree and childNodes at each level.\n <LayoutRouterContext.Provider\n value={{\n parentTree: tree,\n parentCacheNode: cacheNode,\n parentSegmentPath: segmentPath,\n parentParams: params,\n debugNameContext: debugNameContext,\n\n // TODO-APP: overriding of url for parallel routes\n url: url,\n isActive: isActive,\n }}\n >\n {children}\n </LayoutRouterContext.Provider>\n )\n\n return children\n}\n\n/**\n * Renders suspense boundary with the provided \"loading\" property as the fallback.\n * If no loading property is provided it renders the children without a suspense boundary.\n */\nfunction LoadingBoundary({\n name,\n loading,\n children,\n}: {\n name: ActivityProps['name']\n loading: LoadingModuleData | Promise<LoadingModuleData>\n children: React.ReactNode\n}): JSX.Element {\n // If loading is a promise, unwrap it. This happens in cases where we haven't\n // yet received the loading data from the server — which includes whether or\n // not this layout has a loading component at all.\n //\n // It's OK to suspend here instead of inside the fallback because this\n // promise will resolve simultaneously with the data for the segment itself.\n // So it will never suspend for longer than it would have if we didn't use\n // a Suspense fallback at all.\n let loadingModuleData\n if (\n typeof loading === 'object' &&\n loading !== null &&\n typeof (loading as any).then === 'function'\n ) {\n const promiseForLoading = loading as Promise<LoadingModuleData>\n loadingModuleData = use(promiseForLoading)\n } else {\n loadingModuleData = loading as LoadingModuleData\n }\n\n if (loadingModuleData) {\n const loadingRsc = loadingModuleData[0]\n const loadingStyles = loadingModuleData[1]\n const loadingScripts = loadingModuleData[2]\n return (\n <Suspense\n name={name}\n fallback={\n <>\n {loadingStyles}\n {loadingScripts}\n {loadingRsc}\n </>\n }\n >\n {children}\n </Suspense>\n )\n }\n\n return <>{children}</>\n}\n\n/**\n * OuterLayoutRouter handles the current segment as well as <Offscreen> rendering of other segments.\n * It can be rendered next to each other with a different `parallelRouterKey`, allowing for Parallel routes.\n */\nexport default function OuterLayoutRouter({\n parallelRouterKey,\n error,\n errorStyles,\n errorScripts,\n templateStyles,\n templateScripts,\n template,\n notFound,\n forbidden,\n unauthorized,\n segmentViewBoundaries,\n}: {\n parallelRouterKey: string\n error: ErrorComponent | undefined\n errorStyles: React.ReactNode | undefined\n errorScripts: React.ReactNode | undefined\n templateStyles: React.ReactNode | undefined\n templateScripts: React.ReactNode | undefined\n template: React.ReactNode\n notFound: React.ReactNode | undefined\n forbidden: React.ReactNode | undefined\n unauthorized: React.ReactNode | undefined\n segmentViewBoundaries?: React.ReactNode\n}) {\n const context = useContext(LayoutRouterContext)\n if (!context) {\n throw new Error('invariant expected layout router to be mounted')\n }\n\n const {\n parentTree,\n parentCacheNode,\n parentSegmentPath,\n parentParams,\n url,\n isActive,\n debugNameContext,\n } = context\n\n // Get the CacheNode for this segment by reading it from the parent segment's\n // child map.\n const parentParallelRoutes = parentCacheNode.parallelRoutes\n let segmentMap = parentParallelRoutes.get(parallelRouterKey)\n // If the parallel router cache node does not exist yet, create it.\n // This writes to the cache when there is no item in the cache yet. It never *overwrites* existing cache items which is why it's safe in concurrent mode.\n if (!segmentMap) {\n segmentMap = new Map()\n parentParallelRoutes.set(parallelRouterKey, segmentMap)\n }\n const parentTreeSegment = parentTree[0]\n const segmentPath =\n parentSegmentPath === null\n ? // TODO: The root segment value is currently omitted from the segment\n // path. This has led to a bunch of special cases scattered throughout\n // the code. We should clean this up.\n [parallelRouterKey]\n : parentSegmentPath.concat([parentTreeSegment, parallelRouterKey])\n\n // The \"state\" key of a segment is the one passed to React — it represents the\n // identity of the UI tree. Whenever the state key changes, the tree is\n // recreated and the state is reset. In the App Router model, search params do\n // not cause state to be lost, so two segments with the same segment path but\n // different search params should have the same state key.\n //\n // The \"cache\" key of a segment, however, *does* include the search params, if\n // it's possible that the segment accessed the search params on the server.\n // (This only applies to page segments; layout segments cannot access search\n // params on the server.)\n const activeTree = parentTree[1][parallelRouterKey]\n if (activeTree === undefined) {\n // Could not find a matching segment. The client tree is inconsistent with\n // the server tree. Suspend indefinitely; the router will have already\n // detected the inconsistency when handling the server response, and\n // triggered a refresh of the page to recover.\n use(unresolvedThenable) as never\n }\n\n const activeSegment = activeTree[0]\n const activeStateKey = createRouterCacheKey(activeSegment, true) // no search params\n\n // At each level of the route tree, not only do we render the currently\n // active segment — we also render the last N segments that were active at\n // this level inside a hidden <Activity> boundary, to preserve their state\n // if or when the user navigates to them again.\n //\n // bfcacheEntry is a linked list of FlightRouterStates.\n let bfcacheEntry: RouterBFCacheEntry | null = useRouterBFCache(\n activeTree,\n activeStateKey\n )\n let children: Array<React.ReactNode> = []\n do {\n const tree = bfcacheEntry.tree\n const stateKey = bfcacheEntry.stateKey\n const segment = tree[0]\n const cacheKey = createRouterCacheKey(segment)\n\n // Read segment path from the parallel router cache node.\n const cacheNode = segmentMap.get(cacheKey) ?? null\n\n /*\n - Error boundary\n - Only renders error boundary if error component is provided.\n - Rendered for each segment to ensure they have their own error state.\n - When gracefully degrade for bots, skip rendering error boundary.\n - Loading boundary\n - Only renders suspense boundary if loading components is provided.\n - Rendered for each segment to ensure they have their own loading state.\n - Passed to the router during rendering to ensure it can be immediately rendered when suspending on a Flight fetch.\n */\n\n let segmentBoundaryTriggerNode: React.ReactNode = null\n let segmentViewStateNode: React.ReactNode = null\n if (process.env.NODE_ENV !== 'production') {\n const { SegmentBoundaryTriggerNode, SegmentViewStateNode } =\n require('../../next-devtools/userspace/app/segment-explorer-node') as typeof import('../../next-devtools/userspace/app/segment-explorer-node')\n\n const pagePrefix = normalizeAppPath(url)\n segmentViewStateNode = (\n <SegmentViewStateNode key={pagePrefix} page={pagePrefix} />\n )\n\n segmentBoundaryTriggerNode = (\n <>\n <SegmentBoundaryTriggerNode />\n </>\n )\n }\n\n let params = parentParams\n if (Array.isArray(segment)) {\n // This segment contains a route param. Accumulate these as we traverse\n // down the router tree. The result represents the set of params that\n // the layout/page components are permitted to access below this point.\n const paramName = segment[0]\n const paramCacheKey = segment[1]\n const paramType = segment[2]\n const paramValue = getParamValueFromCacheKey(paramCacheKey, paramType)\n if (paramValue !== null) {\n params = {\n ...parentParams,\n [paramName]: paramValue,\n }\n }\n }\n\n const debugName = getBoundaryDebugNameFromSegment(segment)\n // `debugNameContext` represents the nearest non-\"virtual\" parent segment.\n // `getBoundaryDebugNameFromSegment` returns undefined for virtual segments.\n // So if `debugName` is undefined, the context is passed through unchanged.\n const childDebugNameContext = debugName ?? debugNameContext\n\n // In practical terms, clicking this name in the Suspense DevTools\n // should select the child slots of that layout.\n //\n // So the name we apply to the Activity boundary is actually based on\n // the nearest parent segments.\n //\n // We skip over \"virtual\" parents, i.e. ones inserted by Next.js that\n // don't correspond to application-defined code.\n const isVirtual = debugName === undefined\n const debugNameToDisplay = isVirtual ? undefined : debugNameContext\n\n // TODO: The loading module data for a segment is stored on the parent, then\n // applied to each of that parent segment's parallel route slots. In the\n // simple case where there's only one parallel route (the `children` slot),\n // this is no different from if the loading module data where stored on the\n // child directly. But I'm not sure this actually makes sense when there are\n // multiple parallel routes. It's not a huge issue because you always have\n // the option to define a narrower loading boundary for a particular slot. But\n // this sort of smells like an implementation accident to me.\n const loadingModuleData = parentCacheNode.loading\n let child = (\n <TemplateContext.Provider\n key={stateKey}\n value={\n <ScrollAndFocusHandler segmentPath={segmentPath}>\n <ErrorBoundary\n errorComponent={error}\n errorStyles={errorStyles}\n errorScripts={errorScripts}\n >\n <LoadingBoundary\n name={debugNameToDisplay}\n loading={loadingModuleData}\n >\n <HTTPAccessFallbackBoundary\n notFound={notFound}\n forbidden={forbidden}\n unauthorized={unauthorized}\n >\n <RedirectBoundary>\n <InnerLayoutRouter\n url={url}\n tree={tree}\n params={params}\n cacheNode={cacheNode}\n segmentPath={segmentPath}\n debugNameContext={childDebugNameContext}\n isActive={isActive && stateKey === activeStateKey}\n />\n {segmentBoundaryTriggerNode}\n </RedirectBoundary>\n </HTTPAccessFallbackBoundary>\n </LoadingBoundary>\n </ErrorBoundary>\n {segmentViewStateNode}\n </ScrollAndFocusHandler>\n }\n >\n {templateStyles}\n {templateScripts}\n {template}\n </TemplateContext.Provider>\n )\n\n if (process.env.NODE_ENV !== 'production') {\n const { SegmentStateProvider } =\n require('../../next-devtools/userspace/app/segment-explorer-node') as typeof import('../../next-devtools/userspace/app/segment-explorer-node')\n\n child = (\n <SegmentStateProvider key={stateKey}>\n {child}\n {segmentViewBoundaries}\n </SegmentStateProvider>\n )\n }\n\n if (process.env.__NEXT_CACHE_COMPONENTS) {\n child = (\n <Activity\n name={debugNameToDisplay}\n key={stateKey}\n mode={stateKey === activeStateKey ? 'visible' : 'hidden'}\n >\n {child}\n </Activity>\n )\n }\n\n children.push(child)\n\n bfcacheEntry = bfcacheEntry.next\n } while (bfcacheEntry !== null)\n\n return children\n}\n\nfunction getBoundaryDebugNameFromSegment(segment: Segment): string | undefined {\n if (segment === '/') {\n // Reached the root\n return '/'\n }\n if (typeof segment === 'string') {\n if (isVirtualLayout(segment)) {\n return undefined\n } else {\n return segment + '/'\n }\n }\n const paramCacheKey = segment[1]\n return paramCacheKey + '/'\n}\n\nfunction isVirtualLayout(segment: string): boolean {\n return (\n // This is inserted by the loader. We should consider encoding these\n // in a more special way instead of checking the name, to distinguish them\n // from app-defined groups.\n segment === '(slot)'\n )\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nconst { createClientModuleProxy } = require(\"react-server-dom-turbopack/server\");\n\n__turbopack_context__.n(createClientModuleProxy(\"[project]/node_modules/.pnpm/next@16.1.1_@babel+core@7.26.10_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/render-from-template-context.js\"));\n","'use client'\n\nimport React, { useContext, type JSX } from 'react'\nimport { TemplateContext } from '../../shared/lib/app-router-context.shared-runtime'\n\nexport default function RenderFromTemplateContext(): JSX.Element {\n const children = useContext(TemplateContext)\n return <>{children}</>\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nconst { createClientModuleProxy } = require(\"react-server-dom-turbopack/server\");\n\n__turbopack_context__.n(createClientModuleProxy(\"[project]/node_modules/.pnpm/next@16.1.1_@babel+core@7.26.10_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/client-page.js\"));\n","'use client'\n\nimport type { ParsedUrlQuery } from 'querystring'\nimport { InvariantError } from '../../shared/lib/invariant-error'\n\nimport type { Params } from '../../server/request/params'\nimport { LayoutRouterContext } from '../../shared/lib/app-router-context.shared-runtime'\nimport { use } from 'react'\nimport { urlSearchParamsToParsedUrlQuery } from '../route-params'\nimport { SearchParamsContext } from '../../shared/lib/hooks-client-context.shared-runtime'\n\n/**\n * When the Page is a client component we send the params and searchParams to this client wrapper\n * where they are turned into dynamically tracked values before being passed to the actual Page component.\n *\n * additionally we may send promises representing the params and searchParams. We don't ever use these passed\n * values but it can be necessary for the sender to send a Promise that doesn't resolve in certain situations.\n * It is up to the caller to decide if the promises are needed.\n */\nexport function ClientPageRoot({\n Component,\n serverProvidedParams,\n}: {\n Component: React.ComponentType<any>\n serverProvidedParams: null | {\n searchParams: ParsedUrlQuery\n params: Params\n promises: Array<Promise<any>> | null\n }\n}) {\n let searchParams: ParsedUrlQuery\n let params: Params\n if (serverProvidedParams !== null) {\n searchParams = serverProvidedParams.searchParams\n params = serverProvidedParams.params\n } else {\n // When Cache Components is enabled, the server does not pass the params as\n // props; they are parsed on the client and passed via context.\n const layoutRouterContext = use(LayoutRouterContext)\n params =\n layoutRouterContext !== null ? layoutRouterContext.parentParams : {}\n\n // This is an intentional behavior change: when Cache Components is enabled,\n // client segments receive the \"canonical\" search params, not the\n // rewritten ones. Users should either call useSearchParams directly or pass\n // the rewritten ones in from a Server Component.\n // TODO: Log a deprecation error when this object is accessed\n searchParams = urlSearchParamsToParsedUrlQuery(use(SearchParamsContext)!)\n }\n\n if (typeof window === 'undefined') {\n const { workAsyncStorage } =\n require('../../server/app-render/work-async-storage.external') as typeof import('../../server/app-render/work-async-storage.external')\n\n let clientSearchParams: Promise<ParsedUrlQuery>\n let clientParams: Promise<Params>\n // We are going to instrument the searchParams prop with tracking for the\n // appropriate context. We wrap differently in prerendering vs rendering\n const store = workAsyncStorage.getStore()\n if (!store) {\n throw new InvariantError(\n 'Expected workStore to exist when handling searchParams in a client Page.'\n )\n }\n\n const { createSearchParamsFromClient } =\n require('../../server/request/search-params') as typeof import('../../server/request/search-params')\n clientSearchParams = createSearchParamsFromClient(searchParams, store)\n\n const { createParamsFromClient } =\n require('../../server/request/params') as typeof import('../../server/request/params')\n clientParams = createParamsFromClient(params, store)\n\n return <Component params={clientParams} searchParams={clientSearchParams} />\n } else {\n const { createRenderSearchParamsFromClient } =\n require('../request/search-params.browser') as typeof import('../request/search-params.browser')\n const clientSearchParams = createRenderSearchParamsFromClient(searchParams)\n const { createRenderParamsFromClient } =\n require('../request/params.browser') as typeof import('../request/params.browser')\n const clientParams = createRenderParamsFromClient(params)\n\n return <Component params={clientParams} searchParams={clientSearchParams} />\n }\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nconst { createClientModuleProxy } = require(\"react-server-dom-turbopack/server\");\n\n__turbopack_context__.n(createClientModuleProxy(\"[project]/node_modules/.pnpm/next@16.1.1_@babel+core@7.26.10_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/client-segment.js\"));\n","'use client'\n\nimport { InvariantError } from '../../shared/lib/invariant-error'\n\nimport type { Params } from '../../server/request/params'\nimport { LayoutRouterContext } from '../../shared/lib/app-router-context.shared-runtime'\nimport { use } from 'react'\n\n/**\n * When the Page is a client component we send the params to this client wrapper\n * where they are turned into dynamically tracked values before being passed to the actual Segment component.\n *\n * additionally we may send a promise representing params. We don't ever use this passed\n * value but it can be necessary for the sender to send a Promise that doesn't resolve in certain situations\n * such as when cacheComponents is enabled. It is up to the caller to decide if the promises are needed.\n */\nexport function ClientSegmentRoot({\n Component,\n slots,\n serverProvidedParams,\n}: {\n Component: React.ComponentType<any>\n slots: { [key: string]: React.ReactNode }\n serverProvidedParams: null | {\n params: Params\n promises: Array<Promise<any>> | null\n }\n}) {\n let params: Params\n if (serverProvidedParams !== null) {\n params = serverProvidedParams.params\n } else {\n // When Cache Components is enabled, the server does not pass the params\n // as props; they are parsed on the client and passed via context.\n const layoutRouterContext = use(LayoutRouterContext)\n params =\n layoutRouterContext !== null ? layoutRouterContext.parentParams : {}\n }\n\n if (typeof window === 'undefined') {\n const { workAsyncStorage } =\n require('../../server/app-render/work-async-storage.external') as typeof import('../../server/app-render/work-async-storage.external')\n\n let clientParams: Promise<Params>\n // We are going to instrument the searchParams prop with tracking for the\n // appropriate context. We wrap differently in prerendering vs rendering\n const store = workAsyncStorage.getStore()\n if (!store) {\n throw new InvariantError(\n 'Expected workStore to exist when handling params in a client segment such as a Layout or Template.'\n )\n }\n\n const { createParamsFromClient } =\n require('../../server/request/params') as typeof import('../../server/request/params')\n clientParams = createParamsFromClient(params, store)\n\n return <Component {...slots} params={clientParams} />\n } else {\n const { createRenderParamsFromClient } =\n require('../request/params.browser') as typeof import('../request/params.browser')\n const clientParams = createRenderParamsFromClient(params)\n return <Component {...slots} params={clientParams} />\n }\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nconst { createClientModuleProxy } = require(\"react-server-dom-turbopack/server\");\n\n__turbopack_context__.n(createClientModuleProxy(\"[project]/node_modules/.pnpm/next@16.1.1_@babel+core@7.26.10_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js\"));\n","'use client'\n\n/**\n * HTTPAccessFallbackBoundary is a boundary that catches errors and renders a\n * fallback component for HTTP errors.\n *\n * It receives the status code, and determine if it should render fallbacks for few HTTP 4xx errors.\n *\n * e.g. 404\n * 404 represents not found, and the fallback component pair contains the component and its styles.\n *\n */\n\nimport React, { useContext } from 'react'\nimport { useUntrackedPathname } from '../navigation-untracked'\nimport {\n HTTPAccessErrorStatus,\n getAccessFallbackHTTPStatus,\n getAccessFallbackErrorTypeByStatus,\n isHTTPAccessFallbackError,\n} from './http-access-fallback'\nimport { warnOnce } from '../../../shared/lib/utils/warn-once'\nimport { MissingSlotContext } from '../../../shared/lib/app-router-context.shared-runtime'\n\ninterface HTTPAccessFallbackBoundaryProps {\n notFound?: React.ReactNode\n forbidden?: React.ReactNode\n unauthorized?: React.ReactNode\n // TODO: Make this required once `React.createElement` understands that positional args go into children\n children?: React.ReactNode\n missingSlots?: Set<string>\n}\n\ninterface HTTPAccessFallbackErrorBoundaryProps\n extends HTTPAccessFallbackBoundaryProps {\n pathname: string | null\n missingSlots?: Set<string>\n}\n\ninterface HTTPAccessBoundaryState {\n triggeredStatus: number | undefined\n previousPathname: string | null\n}\n\nclass HTTPAccessFallbackErrorBoundary extends React.Component<\n HTTPAccessFallbackErrorBoundaryProps,\n HTTPAccessBoundaryState\n> {\n constructor(props: HTTPAccessFallbackErrorBoundaryProps) {\n super(props)\n this.state = {\n triggeredStatus: undefined,\n previousPathname: props.pathname,\n }\n }\n\n componentDidCatch(): void {\n if (\n process.env.NODE_ENV === 'development' &&\n this.props.missingSlots &&\n this.props.missingSlots.size > 0 &&\n // A missing children slot is the typical not-found case, so no need to warn\n !this.props.missingSlots.has('children')\n ) {\n let warningMessage =\n 'No default component was found for a parallel route rendered on this page. Falling back to nearest NotFound boundary.\\n' +\n 'Learn more: https://nextjs.org/docs/app/building-your-application/routing/parallel-routes#defaultjs\\n\\n'\n\n const formattedSlots = Array.from(this.props.missingSlots)\n .sort((a, b) => a.localeCompare(b))\n .map((slot) => `@${slot}`)\n .join(', ')\n\n warningMessage += 'Missing slots: ' + formattedSlots\n\n warnOnce(warningMessage)\n }\n }\n\n static getDerivedStateFromError(error: any) {\n if (isHTTPAccessFallbackError(error)) {\n const httpStatus = getAccessFallbackHTTPStatus(error)\n return {\n triggeredStatus: httpStatus,\n }\n }\n // Re-throw if error is not for 404\n throw error\n }\n\n static getDerivedStateFromProps(\n props: HTTPAccessFallbackErrorBoundaryProps,\n state: HTTPAccessBoundaryState\n ): HTTPAccessBoundaryState | null {\n /**\n * Handles reset of the error boundary when a navigation happens.\n * Ensures the error boundary does not stay enabled when navigating to a new page.\n * Approach of setState in render is safe as it checks the previous pathname and then overrides\n * it as outlined in https://react.dev/reference/react/useState#storing-information-from-previous-renders\n */\n if (props.pathname !== state.previousPathname && state.triggeredStatus) {\n return {\n triggeredStatus: undefined,\n previousPathname: props.pathname,\n }\n }\n return {\n triggeredStatus: state.triggeredStatus,\n previousPathname: props.pathname,\n }\n }\n\n render() {\n const { notFound, forbidden, unauthorized, children } = this.props\n const { triggeredStatus } = this.state\n const errorComponents = {\n [HTTPAccessErrorStatus.NOT_FOUND]: notFound,\n [HTTPAccessErrorStatus.FORBIDDEN]: forbidden,\n [HTTPAccessErrorStatus.UNAUTHORIZED]: unauthorized,\n }\n\n if (triggeredStatus) {\n const isNotFound =\n triggeredStatus === HTTPAccessErrorStatus.NOT_FOUND && notFound\n const isForbidden =\n triggeredStatus === HTTPAccessErrorStatus.FORBIDDEN && forbidden\n const isUnauthorized =\n triggeredStatus === HTTPAccessErrorStatus.UNAUTHORIZED && unauthorized\n\n // If there's no matched boundary in this layer, keep throwing the error by rendering the children\n if (!(isNotFound || isForbidden || isUnauthorized)) {\n return children\n }\n\n return (\n <>\n <meta name=\"robots\" content=\"noindex\" />\n {process.env.NODE_ENV === 'development' && (\n <meta\n name=\"boundary-next-error\"\n content={getAccessFallbackErrorTypeByStatus(triggeredStatus)}\n />\n )}\n {errorComponents[triggeredStatus]}\n </>\n )\n }\n\n return children\n }\n}\n\nexport function HTTPAccessFallbackBoundary({\n notFound,\n forbidden,\n unauthorized,\n children,\n}: HTTPAccessFallbackBoundaryProps) {\n // When we're rendering the missing params shell, this will return null. This\n // is because we won't be rendering any not found boundaries or error\n // boundaries for the missing params shell. When this runs on the client\n // (where these error can occur), we will get the correct pathname.\n const pathname = useUntrackedPathname()\n const missingSlots = useContext(MissingSlotContext)\n const hasErrorFallback = !!(notFound || forbidden || unauthorized)\n\n if (hasErrorFallback) {\n return (\n <HTTPAccessFallbackErrorBoundary\n pathname={pathname}\n notFound={notFound}\n forbidden={forbidden}\n unauthorized={unauthorized}\n missingSlots={missingSlots}\n >\n {children}\n </HTTPAccessFallbackErrorBoundary>\n )\n }\n\n return <>{children}</>\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nconst { createClientModuleProxy } = require(\"react-server-dom-turbopack/server\");\n\n__turbopack_context__.n(createClientModuleProxy(\"[project]/node_modules/.pnpm/next@16.1.1_@babel+core@7.26.10_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js\"));\n","'use client'\n\n// This is a client component that only renders during SSR,\n// but will be replaced during streaming with an icon insertion script tag.\n// We don't want it to be presented anywhere so it's only visible during streaming,\n// right after the icon meta tags so that browser can pick it up as soon as it's rendered.\n// Note: we don't just emit the script here because we only need the script if it's not in the head,\n// and we need it to be hoistable alongside the other metadata but sync scripts are not hoistable.\nexport const IconMark = () => {\n if (typeof window !== 'undefined') {\n return null\n }\n return <meta name=\"«nxt-icon»\" />\n}\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nconst { createClientModuleProxy } = require(\"react-server-dom-turbopack/server\");\n\n__turbopack_context__.n(createClientModuleProxy(\"[project]/node_modules/.pnpm/next@16.1.1_@babel+core@7.26.10_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/lib/framework/boundary-components.js\"));\n","'use client'\n\nimport type { ReactNode } from 'react'\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n OUTLET_BOUNDARY_NAME,\n ROOT_LAYOUT_BOUNDARY_NAME,\n} from './boundary-constants'\n\n// We use a namespace object to allow us to recover the name of the function\n// at runtime even when production bundling/minification is used.\nconst NameSpace = {\n [METADATA_BOUNDARY_NAME]: function ({ children }: { children: ReactNode }) {\n return children\n },\n [VIEWPORT_BOUNDARY_NAME]: function ({ children }: { children: ReactNode }) {\n return children\n },\n [OUTLET_BOUNDARY_NAME]: function ({ children }: { children: ReactNode }) {\n return children\n },\n [ROOT_LAYOUT_BOUNDARY_NAME]: function ({\n children,\n }: {\n children: ReactNode\n }) {\n return children\n },\n}\n\nexport const MetadataBoundary =\n // We use slice(0) to trick the bundler into not inlining/minifying the function\n // so it retains the name inferred from the namespace object\n NameSpace[METADATA_BOUNDARY_NAME.slice(0) as typeof METADATA_BOUNDARY_NAME]\n\nexport const ViewportBoundary =\n // We use slice(0) to trick the bundler into not inlining/minifying the function\n // so it retains the name inferred from the namespace object\n NameSpace[VIEWPORT_BOUNDARY_NAME.slice(0) as typeof VIEWPORT_BOUNDARY_NAME]\n\nexport const OutletBoundary =\n // We use slice(0) to trick the bundler into not inlining/minifying the function\n // so it retains the name inferred from the namespace object\n NameSpace[OUTLET_BOUNDARY_NAME.slice(0) as typeof OUTLET_BOUNDARY_NAME]\n\nexport const RootLayoutBoundary =\n // We use slice(0) to trick the bundler into not inlining/minifying the function\n // so it retains the name inferred from the namespace object\n NameSpace[\n ROOT_LAYOUT_BOUNDARY_NAME.slice(0) as typeof ROOT_LAYOUT_BOUNDARY_NAME\n ]\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-rsc']!.ReactDOM\n","/**\n * @license React\n * react-server-dom-turbopack-client.node.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar util = require(\"util\"),\n ReactDOM = require(\"react-dom\"),\n decoderOptions = { stream: !0 },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction resolveClientReference(bundlerConfig, metadata) {\n if (bundlerConfig) {\n var moduleExports = bundlerConfig[metadata[0]];\n if ((bundlerConfig = moduleExports && moduleExports[metadata[2]]))\n moduleExports = bundlerConfig.name;\n else {\n bundlerConfig = moduleExports && moduleExports[\"*\"];\n if (!bundlerConfig)\n throw Error(\n 'Could not find the module \"' +\n metadata[0] +\n '\" in the React Server Consumer Manifest. This is probably a bug in the React Server Components bundler.'\n );\n moduleExports = metadata[2];\n }\n return 4 === metadata.length\n ? [bundlerConfig.id, bundlerConfig.chunks, moduleExports, 1]\n : [bundlerConfig.id, bundlerConfig.chunks, moduleExports];\n }\n return metadata;\n}\nfunction resolveServerReference(bundlerConfig, id) {\n var name = \"\",\n resolvedModuleData = bundlerConfig[id];\n if (resolvedModuleData) name = resolvedModuleData.name;\n else {\n var idx = id.lastIndexOf(\"#\");\n -1 !== idx &&\n ((name = id.slice(idx + 1)),\n (resolvedModuleData = bundlerConfig[id.slice(0, idx)]));\n if (!resolvedModuleData)\n throw Error(\n 'Could not find the module \"' +\n id +\n '\" in the React Server Manifest. This is probably a bug in the React Server Components bundler.'\n );\n }\n return resolvedModuleData.async\n ? [resolvedModuleData.id, resolvedModuleData.chunks, name, 1]\n : [resolvedModuleData.id, resolvedModuleData.chunks, name];\n}\nfunction requireAsyncModule(id) {\n var promise = globalThis.__next_require__(id);\n if (\"function\" !== typeof promise.then || \"fulfilled\" === promise.status)\n return null;\n promise.then(\n function (value) {\n promise.status = \"fulfilled\";\n promise.value = value;\n },\n function (reason) {\n promise.status = \"rejected\";\n promise.reason = reason;\n }\n );\n return promise;\n}\nvar instrumentedChunks = new WeakSet(),\n loadedChunks = new WeakSet();\nfunction ignoreReject() {}\nfunction preloadModule(metadata) {\n for (var chunks = metadata[1], promises = [], i = 0; i < chunks.length; i++) {\n var thenable = globalThis.__next_chunk_load__(chunks[i]);\n loadedChunks.has(thenable) || promises.push(thenable);\n if (!instrumentedChunks.has(thenable)) {\n var resolve = loadedChunks.add.bind(loadedChunks, thenable);\n thenable.then(resolve, ignoreReject);\n instrumentedChunks.add(thenable);\n }\n }\n return 4 === metadata.length\n ? 0 === promises.length\n ? requireAsyncModule(metadata[0])\n : Promise.all(promises).then(function () {\n return requireAsyncModule(metadata[0]);\n })\n : 0 < promises.length\n ? Promise.all(promises)\n : null;\n}\nfunction requireModule(metadata) {\n var moduleExports = globalThis.__next_require__(metadata[0]);\n if (4 === metadata.length && \"function\" === typeof moduleExports.then)\n if (\"fulfilled\" === moduleExports.status)\n moduleExports = moduleExports.value;\n else throw moduleExports.reason;\n if (\"*\" === metadata[2]) return moduleExports;\n if (\"\" === metadata[2])\n return moduleExports.__esModule ? moduleExports.default : moduleExports;\n if (hasOwnProperty.call(moduleExports, metadata[2]))\n return moduleExports[metadata[2]];\n}\nfunction prepareDestinationWithChunks(moduleLoading, chunks, nonce$jscomp$0) {\n if (null !== moduleLoading)\n for (var i = 0; i < chunks.length; i++) {\n var nonce = nonce$jscomp$0,\n JSCompiler_temp_const = ReactDOMSharedInternals.d,\n JSCompiler_temp_const$jscomp$0 = JSCompiler_temp_const.X,\n JSCompiler_temp_const$jscomp$1 = moduleLoading.prefix + chunks[i];\n var JSCompiler_inline_result = moduleLoading.crossOrigin;\n JSCompiler_inline_result =\n \"string\" === typeof JSCompiler_inline_result\n ? \"use-credentials\" === JSCompiler_inline_result\n ? JSCompiler_inline_result\n : \"\"\n : void 0;\n JSCompiler_temp_const$jscomp$0.call(\n JSCompiler_temp_const,\n JSCompiler_temp_const$jscomp$1,\n { crossOrigin: JSCompiler_inline_result, nonce: nonce }\n );\n }\n}\nvar ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ASYNC_ITERATOR = Symbol.asyncIterator,\n isArrayImpl = Array.isArray,\n getPrototypeOf = Object.getPrototypeOf,\n ObjectPrototype = Object.prototype,\n knownServerReferences = new WeakMap();\nfunction serializeNumber(number) {\n return Number.isFinite(number)\n ? 0 === number && -Infinity === 1 / number\n ? \"$-0\"\n : number\n : Infinity === number\n ? \"$Infinity\"\n : -Infinity === number\n ? \"$-Infinity\"\n : \"$NaN\";\n}\nfunction processReply(\n root,\n formFieldPrefix,\n temporaryReferences,\n resolve,\n reject\n) {\n function serializeTypedArray(tag, typedArray) {\n typedArray = new Blob([\n new Uint8Array(\n typedArray.buffer,\n typedArray.byteOffset,\n typedArray.byteLength\n )\n ]);\n var blobId = nextPartId++;\n null === formData && (formData = new FormData());\n formData.append(formFieldPrefix + blobId, typedArray);\n return \"$\" + tag + blobId.toString(16);\n }\n function serializeBinaryReader(reader) {\n function progress(entry) {\n entry.done\n ? ((entry = nextPartId++),\n data.append(formFieldPrefix + entry, new Blob(buffer)),\n data.append(\n formFieldPrefix + streamId,\n '\"$o' + entry.toString(16) + '\"'\n ),\n data.append(formFieldPrefix + streamId, \"C\"),\n pendingParts--,\n 0 === pendingParts && resolve(data))\n : (buffer.push(entry.value),\n reader.read(new Uint8Array(1024)).then(progress, reject));\n }\n null === formData && (formData = new FormData());\n var data = formData;\n pendingParts++;\n var streamId = nextPartId++,\n buffer = [];\n reader.read(new Uint8Array(1024)).then(progress, reject);\n return \"$r\" + streamId.toString(16);\n }\n function serializeReader(reader) {\n function progress(entry) {\n if (entry.done)\n data.append(formFieldPrefix + streamId, \"C\"),\n pendingParts--,\n 0 === pendingParts && resolve(data);\n else\n try {\n var partJSON = JSON.stringify(entry.value, resolveToJSON);\n data.append(formFieldPrefix + streamId, partJSON);\n reader.read().then(progress, reject);\n } catch (x) {\n reject(x);\n }\n }\n null === formData && (formData = new FormData());\n var data = formData;\n pendingParts++;\n var streamId = nextPartId++;\n reader.read().then(progress, reject);\n return \"$R\" + streamId.toString(16);\n }\n function serializeReadableStream(stream) {\n try {\n var binaryReader = stream.getReader({ mode: \"byob\" });\n } catch (x) {\n return serializeReader(stream.getReader());\n }\n return serializeBinaryReader(binaryReader);\n }\n function serializeAsyncIterable(iterable, iterator) {\n function progress(entry) {\n if (entry.done) {\n if (void 0 === entry.value)\n data.append(formFieldPrefix + streamId, \"C\");\n else\n try {\n var partJSON = JSON.stringify(entry.value, resolveToJSON);\n data.append(formFieldPrefix + streamId, \"C\" + partJSON);\n } catch (x) {\n reject(x);\n return;\n }\n pendingParts--;\n 0 === pendingParts && resolve(data);\n } else\n try {\n var partJSON$21 = JSON.stringify(entry.value, resolveToJSON);\n data.append(formFieldPrefix + streamId, partJSON$21);\n iterator.next().then(progress, reject);\n } catch (x$22) {\n reject(x$22);\n }\n }\n null === formData && (formData = new FormData());\n var data = formData;\n pendingParts++;\n var streamId = nextPartId++;\n iterable = iterable === iterator;\n iterator.next().then(progress, reject);\n return \"$\" + (iterable ? \"x\" : \"X\") + streamId.toString(16);\n }\n function resolveToJSON(key, value) {\n if (null === value) return null;\n if (\"object\" === typeof value) {\n switch (value.$$typeof) {\n case REACT_ELEMENT_TYPE:\n if (void 0 !== temporaryReferences && -1 === key.indexOf(\":\")) {\n var parentReference = writtenObjects.get(this);\n if (void 0 !== parentReference)\n return (\n temporaryReferences.set(parentReference + \":\" + key, value),\n \"$T\"\n );\n }\n throw Error(\n \"React Element cannot be passed to Server Functions from the Client without a temporary reference set. Pass a TemporaryReferenceSet to the options.\"\n );\n case REACT_LAZY_TYPE:\n parentReference = value._payload;\n var init = value._init;\n null === formData && (formData = new FormData());\n pendingParts++;\n try {\n var resolvedModel = init(parentReference),\n lazyId = nextPartId++,\n partJSON = serializeModel(resolvedModel, lazyId);\n formData.append(formFieldPrefix + lazyId, partJSON);\n return \"$\" + lazyId.toString(16);\n } catch (x) {\n if (\n \"object\" === typeof x &&\n null !== x &&\n \"function\" === typeof x.then\n ) {\n pendingParts++;\n var lazyId$23 = nextPartId++;\n parentReference = function () {\n try {\n var partJSON$24 = serializeModel(value, lazyId$23),\n data$25 = formData;\n data$25.append(formFieldPrefix + lazyId$23, partJSON$24);\n pendingParts--;\n 0 === pendingParts && resolve(data$25);\n } catch (reason) {\n reject(reason);\n }\n };\n x.then(parentReference, parentReference);\n return \"$\" + lazyId$23.toString(16);\n }\n reject(x);\n return null;\n } finally {\n pendingParts--;\n }\n }\n parentReference = writtenObjects.get(value);\n if (\"function\" === typeof value.then) {\n if (void 0 !== parentReference)\n if (modelRoot === value) modelRoot = null;\n else return parentReference;\n null === formData && (formData = new FormData());\n pendingParts++;\n var promiseId = nextPartId++;\n key = \"$@\" + promiseId.toString(16);\n writtenObjects.set(value, key);\n value.then(function (partValue) {\n try {\n var previousReference = writtenObjects.get(partValue);\n var partJSON$27 =\n void 0 !== previousReference\n ? JSON.stringify(previousReference)\n : serializeModel(partValue, promiseId);\n partValue = formData;\n partValue.append(formFieldPrefix + promiseId, partJSON$27);\n pendingParts--;\n 0 === pendingParts && resolve(partValue);\n } catch (reason) {\n reject(reason);\n }\n }, reject);\n return key;\n }\n if (void 0 !== parentReference)\n if (modelRoot === value) modelRoot = null;\n else return parentReference;\n else\n -1 === key.indexOf(\":\") &&\n ((parentReference = writtenObjects.get(this)),\n void 0 !== parentReference &&\n ((key = parentReference + \":\" + key),\n writtenObjects.set(value, key),\n void 0 !== temporaryReferences &&\n temporaryReferences.set(key, value)));\n if (isArrayImpl(value)) return value;\n if (value instanceof FormData) {\n null === formData && (formData = new FormData());\n var data$31 = formData;\n key = nextPartId++;\n var prefix = formFieldPrefix + key + \"_\";\n value.forEach(function (originalValue, originalKey) {\n data$31.append(prefix + originalKey, originalValue);\n });\n return \"$K\" + key.toString(16);\n }\n if (value instanceof Map)\n return (\n (key = nextPartId++),\n (parentReference = serializeModel(Array.from(value), key)),\n null === formData && (formData = new FormData()),\n formData.append(formFieldPrefix + key, parentReference),\n \"$Q\" + key.toString(16)\n );\n if (value instanceof Set)\n return (\n (key = nextPartId++),\n (parentReference = serializeModel(Array.from(value), key)),\n null === formData && (formData = new FormData()),\n formData.append(formFieldPrefix + key, parentReference),\n \"$W\" + key.toString(16)\n );\n if (value instanceof ArrayBuffer)\n return (\n (key = new Blob([value])),\n (parentReference = nextPartId++),\n null === formData && (formData = new FormData()),\n formData.append(formFieldPrefix + parentReference, key),\n \"$A\" + parentReference.toString(16)\n );\n if (value instanceof Int8Array) return serializeTypedArray(\"O\", value);\n if (value instanceof Uint8Array) return serializeTypedArray(\"o\", value);\n if (value instanceof Uint8ClampedArray)\n return serializeTypedArray(\"U\", value);\n if (value instanceof Int16Array) return serializeTypedArray(\"S\", value);\n if (value instanceof Uint16Array) return serializeTypedArray(\"s\", value);\n if (value instanceof Int32Array) return serializeTypedArray(\"L\", value);\n if (value instanceof Uint32Array) return serializeTypedArray(\"l\", value);\n if (value instanceof Float32Array) return serializeTypedArray(\"G\", value);\n if (value instanceof Float64Array) return serializeTypedArray(\"g\", value);\n if (value instanceof BigInt64Array)\n return serializeTypedArray(\"M\", value);\n if (value instanceof BigUint64Array)\n return serializeTypedArray(\"m\", value);\n if (value instanceof DataView) return serializeTypedArray(\"V\", value);\n if (\"function\" === typeof Blob && value instanceof Blob)\n return (\n null === formData && (formData = new FormData()),\n (key = nextPartId++),\n formData.append(formFieldPrefix + key, value),\n \"$B\" + key.toString(16)\n );\n if ((key = getIteratorFn(value)))\n return (\n (parentReference = key.call(value)),\n parentReference === value\n ? ((key = nextPartId++),\n (parentReference = serializeModel(\n Array.from(parentReference),\n key\n )),\n null === formData && (formData = new FormData()),\n formData.append(formFieldPrefix + key, parentReference),\n \"$i\" + key.toString(16))\n : Array.from(parentReference)\n );\n if (\n \"function\" === typeof ReadableStream &&\n value instanceof ReadableStream\n )\n return serializeReadableStream(value);\n key = value[ASYNC_ITERATOR];\n if (\"function\" === typeof key)\n return serializeAsyncIterable(value, key.call(value));\n key = getPrototypeOf(value);\n if (\n key !== ObjectPrototype &&\n (null === key || null !== getPrototypeOf(key))\n ) {\n if (void 0 === temporaryReferences)\n throw Error(\n \"Only plain objects, and a few built-ins, can be passed to Server Functions. Classes or null prototypes are not supported.\"\n );\n return \"$T\";\n }\n return value;\n }\n if (\"string\" === typeof value) {\n if (\"Z\" === value[value.length - 1] && this[key] instanceof Date)\n return \"$D\" + value;\n key = \"$\" === value[0] ? \"$\" + value : value;\n return key;\n }\n if (\"boolean\" === typeof value) return value;\n if (\"number\" === typeof value) return serializeNumber(value);\n if (\"undefined\" === typeof value) return \"$undefined\";\n if (\"function\" === typeof value) {\n parentReference = knownServerReferences.get(value);\n if (void 0 !== parentReference)\n return (\n (key = JSON.stringify(\n { id: parentReference.id, bound: parentReference.bound },\n resolveToJSON\n )),\n null === formData && (formData = new FormData()),\n (parentReference = nextPartId++),\n formData.set(formFieldPrefix + parentReference, key),\n \"$h\" + parentReference.toString(16)\n );\n if (\n void 0 !== temporaryReferences &&\n -1 === key.indexOf(\":\") &&\n ((parentReference = writtenObjects.get(this)),\n void 0 !== parentReference)\n )\n return (\n temporaryReferences.set(parentReference + \":\" + key, value), \"$T\"\n );\n throw Error(\n \"Client Functions cannot be passed directly to Server Functions. Only Functions passed from the Server can be passed back again.\"\n );\n }\n if (\"symbol\" === typeof value) {\n if (\n void 0 !== temporaryReferences &&\n -1 === key.indexOf(\":\") &&\n ((parentReference = writtenObjects.get(this)),\n void 0 !== parentReference)\n )\n return (\n temporaryReferences.set(parentReference + \":\" + key, value), \"$T\"\n );\n throw Error(\n \"Symbols cannot be passed to a Server Function without a temporary reference set. Pass a TemporaryReferenceSet to the options.\"\n );\n }\n if (\"bigint\" === typeof value) return \"$n\" + value.toString(10);\n throw Error(\n \"Type \" +\n typeof value +\n \" is not supported as an argument to a Server Function.\"\n );\n }\n function serializeModel(model, id) {\n \"object\" === typeof model &&\n null !== model &&\n ((id = \"$\" + id.toString(16)),\n writtenObjects.set(model, id),\n void 0 !== temporaryReferences && temporaryReferences.set(id, model));\n modelRoot = model;\n return JSON.stringify(model, resolveToJSON);\n }\n var nextPartId = 1,\n pendingParts = 0,\n formData = null,\n writtenObjects = new WeakMap(),\n modelRoot = root,\n json = serializeModel(root, 0);\n null === formData\n ? resolve(json)\n : (formData.set(formFieldPrefix + \"0\", json),\n 0 === pendingParts && resolve(formData));\n return function () {\n 0 < pendingParts &&\n ((pendingParts = 0),\n null === formData ? resolve(json) : resolve(formData));\n };\n}\nvar boundCache = new WeakMap();\nfunction encodeFormData(reference) {\n var resolve,\n reject,\n thenable = new Promise(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n processReply(\n reference,\n \"\",\n void 0,\n function (body) {\n if (\"string\" === typeof body) {\n var data = new FormData();\n data.append(\"0\", body);\n body = data;\n }\n thenable.status = \"fulfilled\";\n thenable.value = body;\n resolve(body);\n },\n function (e) {\n thenable.status = \"rejected\";\n thenable.reason = e;\n reject(e);\n }\n );\n return thenable;\n}\nfunction defaultEncodeFormAction(identifierPrefix) {\n var referenceClosure = knownServerReferences.get(this);\n if (!referenceClosure)\n throw Error(\n \"Tried to encode a Server Action from a different instance than the encoder is from. This is a bug in React.\"\n );\n var data = null;\n if (null !== referenceClosure.bound) {\n data = boundCache.get(referenceClosure);\n data ||\n ((data = encodeFormData({\n id: referenceClosure.id,\n bound: referenceClosure.bound\n })),\n boundCache.set(referenceClosure, data));\n if (\"rejected\" === data.status) throw data.reason;\n if (\"fulfilled\" !== data.status) throw data;\n referenceClosure = data.value;\n var prefixedData = new FormData();\n referenceClosure.forEach(function (value, key) {\n prefixedData.append(\"$ACTION_\" + identifierPrefix + \":\" + key, value);\n });\n data = prefixedData;\n referenceClosure = \"$ACTION_REF_\" + identifierPrefix;\n } else referenceClosure = \"$ACTION_ID_\" + referenceClosure.id;\n return {\n name: referenceClosure,\n method: \"POST\",\n encType: \"multipart/form-data\",\n data: data\n };\n}\nfunction isSignatureEqual(referenceId, numberOfBoundArgs) {\n var referenceClosure = knownServerReferences.get(this);\n if (!referenceClosure)\n throw Error(\n \"Tried to encode a Server Action from a different instance than the encoder is from. This is a bug in React.\"\n );\n if (referenceClosure.id !== referenceId) return !1;\n var boundPromise = referenceClosure.bound;\n if (null === boundPromise) return 0 === numberOfBoundArgs;\n switch (boundPromise.status) {\n case \"fulfilled\":\n return boundPromise.value.length === numberOfBoundArgs;\n case \"pending\":\n throw boundPromise;\n case \"rejected\":\n throw boundPromise.reason;\n default:\n throw (\n (\"string\" !== typeof boundPromise.status &&\n ((boundPromise.status = \"pending\"),\n boundPromise.then(\n function (boundArgs) {\n boundPromise.status = \"fulfilled\";\n boundPromise.value = boundArgs;\n },\n function (error) {\n boundPromise.status = \"rejected\";\n boundPromise.reason = error;\n }\n )),\n boundPromise)\n );\n }\n}\nfunction registerBoundServerReference(reference, id, bound, encodeFormAction) {\n knownServerReferences.has(reference) ||\n (knownServerReferences.set(reference, {\n id: id,\n originalBind: reference.bind,\n bound: bound\n }),\n Object.defineProperties(reference, {\n $$FORM_ACTION: {\n value:\n void 0 === encodeFormAction\n ? defaultEncodeFormAction\n : function () {\n var referenceClosure = knownServerReferences.get(this);\n if (!referenceClosure)\n throw Error(\n \"Tried to encode a Server Action from a different instance than the encoder is from. This is a bug in React.\"\n );\n var boundPromise = referenceClosure.bound;\n null === boundPromise && (boundPromise = Promise.resolve([]));\n return encodeFormAction(referenceClosure.id, boundPromise);\n }\n },\n $$IS_SIGNATURE_EQUAL: { value: isSignatureEqual },\n bind: { value: bind }\n }));\n}\nvar FunctionBind = Function.prototype.bind,\n ArraySlice = Array.prototype.slice;\nfunction bind() {\n var referenceClosure = knownServerReferences.get(this);\n if (!referenceClosure) return FunctionBind.apply(this, arguments);\n var newFn = referenceClosure.originalBind.apply(this, arguments),\n args = ArraySlice.call(arguments, 1),\n boundPromise = null;\n boundPromise =\n null !== referenceClosure.bound\n ? Promise.resolve(referenceClosure.bound).then(function (boundArgs) {\n return boundArgs.concat(args);\n })\n : Promise.resolve(args);\n knownServerReferences.set(newFn, {\n id: referenceClosure.id,\n originalBind: newFn.bind,\n bound: boundPromise\n });\n Object.defineProperties(newFn, {\n $$FORM_ACTION: { value: this.$$FORM_ACTION },\n $$IS_SIGNATURE_EQUAL: { value: isSignatureEqual },\n bind: { value: bind }\n });\n return newFn;\n}\nfunction createBoundServerReference(metaData, callServer, encodeFormAction) {\n function action() {\n var args = Array.prototype.slice.call(arguments);\n return bound\n ? \"fulfilled\" === bound.status\n ? callServer(id, bound.value.concat(args))\n : Promise.resolve(bound).then(function (boundArgs) {\n return callServer(id, boundArgs.concat(args));\n })\n : callServer(id, args);\n }\n var id = metaData.id,\n bound = metaData.bound;\n registerBoundServerReference(action, id, bound, encodeFormAction);\n return action;\n}\nfunction createServerReference$1(id, callServer, encodeFormAction) {\n function action() {\n var args = Array.prototype.slice.call(arguments);\n return callServer(id, args);\n }\n registerBoundServerReference(action, id, null, encodeFormAction);\n return action;\n}\nfunction ReactPromise(status, value, reason) {\n this.status = status;\n this.value = value;\n this.reason = reason;\n}\nReactPromise.prototype = Object.create(Promise.prototype);\nReactPromise.prototype.then = function (resolve, reject) {\n switch (this.status) {\n case \"resolved_model\":\n initializeModelChunk(this);\n break;\n case \"resolved_module\":\n initializeModuleChunk(this);\n }\n switch (this.status) {\n case \"fulfilled\":\n \"function\" === typeof resolve && resolve(this.value);\n break;\n case \"pending\":\n case \"blocked\":\n \"function\" === typeof resolve &&\n (null === this.value && (this.value = []), this.value.push(resolve));\n \"function\" === typeof reject &&\n (null === this.reason && (this.reason = []), this.reason.push(reject));\n break;\n case \"halted\":\n break;\n default:\n \"function\" === typeof reject && reject(this.reason);\n }\n};\nfunction readChunk(chunk) {\n switch (chunk.status) {\n case \"resolved_model\":\n initializeModelChunk(chunk);\n break;\n case \"resolved_module\":\n initializeModuleChunk(chunk);\n }\n switch (chunk.status) {\n case \"fulfilled\":\n return chunk.value;\n case \"pending\":\n case \"blocked\":\n case \"halted\":\n throw chunk;\n default:\n throw chunk.reason;\n }\n}\nfunction wakeChunk(response, listeners, value, chunk) {\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n \"function\" === typeof listener\n ? listener(value)\n : fulfillReference(response, listener, value, chunk);\n }\n}\nfunction rejectChunk(response, listeners, error) {\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n \"function\" === typeof listener\n ? listener(error)\n : rejectReference(response, listener.handler, error);\n }\n}\nfunction resolveBlockedCycle(resolvedChunk, reference) {\n var referencedChunk = reference.handler.chunk;\n if (null === referencedChunk) return null;\n if (referencedChunk === resolvedChunk) return reference.handler;\n reference = referencedChunk.value;\n if (null !== reference)\n for (\n referencedChunk = 0;\n referencedChunk < reference.length;\n referencedChunk++\n ) {\n var listener = reference[referencedChunk];\n if (\n \"function\" !== typeof listener &&\n ((listener = resolveBlockedCycle(resolvedChunk, listener)),\n null !== listener)\n )\n return listener;\n }\n return null;\n}\nfunction wakeChunkIfInitialized(\n response,\n chunk,\n resolveListeners,\n rejectListeners\n) {\n switch (chunk.status) {\n case \"fulfilled\":\n wakeChunk(response, resolveListeners, chunk.value, chunk);\n break;\n case \"blocked\":\n for (var i = 0; i < resolveListeners.length; i++) {\n var listener = resolveListeners[i];\n if (\"function\" !== typeof listener) {\n var cyclicHandler = resolveBlockedCycle(chunk, listener);\n if (null !== cyclicHandler)\n switch (\n (fulfillReference(response, listener, cyclicHandler.value, chunk),\n resolveListeners.splice(i, 1),\n i--,\n null !== rejectListeners &&\n ((listener = rejectListeners.indexOf(listener)),\n -1 !== listener && rejectListeners.splice(listener, 1)),\n chunk.status)\n ) {\n case \"fulfilled\":\n wakeChunk(response, resolveListeners, chunk.value, chunk);\n return;\n case \"rejected\":\n null !== rejectListeners &&\n rejectChunk(response, rejectListeners, chunk.reason);\n return;\n }\n }\n }\n case \"pending\":\n if (chunk.value)\n for (response = 0; response < resolveListeners.length; response++)\n chunk.value.push(resolveListeners[response]);\n else chunk.value = resolveListeners;\n if (chunk.reason) {\n if (rejectListeners)\n for (\n resolveListeners = 0;\n resolveListeners < rejectListeners.length;\n resolveListeners++\n )\n chunk.reason.push(rejectListeners[resolveListeners]);\n } else chunk.reason = rejectListeners;\n break;\n case \"rejected\":\n rejectListeners && rejectChunk(response, rejectListeners, chunk.reason);\n }\n}\nfunction triggerErrorOnChunk(response, chunk, error) {\n if (\"pending\" !== chunk.status && \"blocked\" !== chunk.status)\n chunk.reason.error(error);\n else {\n var listeners = chunk.reason;\n chunk.status = \"rejected\";\n chunk.reason = error;\n null !== listeners && rejectChunk(response, listeners, error);\n }\n}\nfunction createResolvedIteratorResultChunk(response, value, done) {\n return new ReactPromise(\n \"resolved_model\",\n (done ? '{\"done\":true,\"value\":' : '{\"done\":false,\"value\":') + value + \"}\",\n response\n );\n}\nfunction resolveIteratorResultChunk(response, chunk, value, done) {\n resolveModelChunk(\n response,\n chunk,\n (done ? '{\"done\":true,\"value\":' : '{\"done\":false,\"value\":') + value + \"}\"\n );\n}\nfunction resolveModelChunk(response, chunk, value) {\n if (\"pending\" !== chunk.status) chunk.reason.enqueueModel(value);\n else {\n var resolveListeners = chunk.value,\n rejectListeners = chunk.reason;\n chunk.status = \"resolved_model\";\n chunk.value = value;\n chunk.reason = response;\n null !== resolveListeners &&\n (initializeModelChunk(chunk),\n wakeChunkIfInitialized(\n response,\n chunk,\n resolveListeners,\n rejectListeners\n ));\n }\n}\nfunction resolveModuleChunk(response, chunk, value) {\n if (\"pending\" === chunk.status || \"blocked\" === chunk.status) {\n var resolveListeners = chunk.value,\n rejectListeners = chunk.reason;\n chunk.status = \"resolved_module\";\n chunk.value = value;\n chunk.reason = null;\n null !== resolveListeners &&\n (initializeModuleChunk(chunk),\n wakeChunkIfInitialized(\n response,\n chunk,\n resolveListeners,\n rejectListeners\n ));\n }\n}\nvar initializingHandler = null;\nfunction initializeModelChunk(chunk) {\n var prevHandler = initializingHandler;\n initializingHandler = null;\n var resolvedModel = chunk.value,\n response = chunk.reason;\n chunk.status = \"blocked\";\n chunk.value = null;\n chunk.reason = null;\n try {\n var value = JSON.parse(resolvedModel, response._fromJSON),\n resolveListeners = chunk.value;\n if (null !== resolveListeners)\n for (\n chunk.value = null, chunk.reason = null, resolvedModel = 0;\n resolvedModel < resolveListeners.length;\n resolvedModel++\n ) {\n var listener = resolveListeners[resolvedModel];\n \"function\" === typeof listener\n ? listener(value)\n : fulfillReference(response, listener, value, chunk);\n }\n if (null !== initializingHandler) {\n if (initializingHandler.errored) throw initializingHandler.reason;\n if (0 < initializingHandler.deps) {\n initializingHandler.value = value;\n initializingHandler.chunk = chunk;\n return;\n }\n }\n chunk.status = \"fulfilled\";\n chunk.value = value;\n } catch (error) {\n (chunk.status = \"rejected\"), (chunk.reason = error);\n } finally {\n initializingHandler = prevHandler;\n }\n}\nfunction initializeModuleChunk(chunk) {\n try {\n var value = requireModule(chunk.value);\n chunk.status = \"fulfilled\";\n chunk.value = value;\n } catch (error) {\n (chunk.status = \"rejected\"), (chunk.reason = error);\n }\n}\nfunction reportGlobalError(weakResponse, error) {\n weakResponse._closed = !0;\n weakResponse._closedReason = error;\n weakResponse._chunks.forEach(function (chunk) {\n \"pending\" === chunk.status\n ? triggerErrorOnChunk(weakResponse, chunk, error)\n : \"fulfilled\" === chunk.status &&\n null !== chunk.reason &&\n chunk.reason.error(error);\n });\n}\nfunction createLazyChunkWrapper(chunk) {\n return { $$typeof: REACT_LAZY_TYPE, _payload: chunk, _init: readChunk };\n}\nfunction getChunk(response, id) {\n var chunks = response._chunks,\n chunk = chunks.get(id);\n chunk ||\n ((chunk = response._closed\n ? new ReactPromise(\"rejected\", null, response._closedReason)\n : new ReactPromise(\"pending\", null, null)),\n chunks.set(id, chunk));\n return chunk;\n}\nfunction fulfillReference(response, reference, value) {\n var handler = reference.handler,\n parentObject = reference.parentObject,\n key = reference.key,\n map = reference.map,\n path = reference.path;\n try {\n for (var i = 1; i < path.length; i++) {\n for (\n ;\n \"object\" === typeof value &&\n null !== value &&\n value.$$typeof === REACT_LAZY_TYPE;\n\n ) {\n var referencedChunk = value._payload;\n if (referencedChunk === handler.chunk) value = handler.value;\n else {\n switch (referencedChunk.status) {\n case \"resolved_model\":\n initializeModelChunk(referencedChunk);\n break;\n case \"resolved_module\":\n initializeModuleChunk(referencedChunk);\n }\n switch (referencedChunk.status) {\n case \"fulfilled\":\n value = referencedChunk.value;\n continue;\n case \"blocked\":\n var cyclicHandler = resolveBlockedCycle(\n referencedChunk,\n reference\n );\n if (null !== cyclicHandler) {\n value = cyclicHandler.value;\n continue;\n }\n case \"pending\":\n path.splice(0, i - 1);\n null === referencedChunk.value\n ? (referencedChunk.value = [reference])\n : referencedChunk.value.push(reference);\n null === referencedChunk.reason\n ? (referencedChunk.reason = [reference])\n : referencedChunk.reason.push(reference);\n return;\n case \"halted\":\n return;\n default:\n rejectReference(\n response,\n reference.handler,\n referencedChunk.reason\n );\n return;\n }\n }\n }\n value = value[path[i]];\n }\n for (\n ;\n \"object\" === typeof value &&\n null !== value &&\n value.$$typeof === REACT_LAZY_TYPE;\n\n ) {\n var referencedChunk$43 = value._payload;\n if (referencedChunk$43 === handler.chunk) value = handler.value;\n else {\n switch (referencedChunk$43.status) {\n case \"resolved_model\":\n initializeModelChunk(referencedChunk$43);\n break;\n case \"resolved_module\":\n initializeModuleChunk(referencedChunk$43);\n }\n switch (referencedChunk$43.status) {\n case \"fulfilled\":\n value = referencedChunk$43.value;\n continue;\n }\n break;\n }\n }\n var mappedValue = map(response, value, parentObject, key);\n parentObject[key] = mappedValue;\n \"\" === key && null === handler.value && (handler.value = mappedValue);\n if (\n parentObject[0] === REACT_ELEMENT_TYPE &&\n \"object\" === typeof handler.value &&\n null !== handler.value &&\n handler.value.$$typeof === REACT_ELEMENT_TYPE\n ) {\n var element = handler.value;\n switch (key) {\n case \"3\":\n element.props = mappedValue;\n }\n }\n } catch (error) {\n rejectReference(response, reference.handler, error);\n return;\n }\n handler.deps--;\n 0 === handler.deps &&\n ((reference = handler.chunk),\n null !== reference &&\n \"blocked\" === reference.status &&\n ((value = reference.value),\n (reference.status = \"fulfilled\"),\n (reference.value = handler.value),\n (reference.reason = handler.reason),\n null !== value && wakeChunk(response, value, handler.value, reference)));\n}\nfunction rejectReference(response, handler, error) {\n handler.errored ||\n ((handler.errored = !0),\n (handler.value = null),\n (handler.reason = error),\n (handler = handler.chunk),\n null !== handler &&\n \"blocked\" === handler.status &&\n triggerErrorOnChunk(response, handler, error));\n}\nfunction waitForReference(\n referencedChunk,\n parentObject,\n key,\n response,\n map,\n path\n) {\n initializingHandler\n ? ((response = initializingHandler), response.deps++)\n : (response = initializingHandler =\n {\n parent: null,\n chunk: null,\n value: null,\n reason: null,\n deps: 1,\n errored: !1\n });\n parentObject = {\n handler: response,\n parentObject: parentObject,\n key: key,\n map: map,\n path: path\n };\n null === referencedChunk.value\n ? (referencedChunk.value = [parentObject])\n : referencedChunk.value.push(parentObject);\n null === referencedChunk.reason\n ? (referencedChunk.reason = [parentObject])\n : referencedChunk.reason.push(parentObject);\n return null;\n}\nfunction loadServerReference(response, metaData, parentObject, key) {\n if (!response._serverReferenceConfig)\n return createBoundServerReference(\n metaData,\n response._callServer,\n response._encodeFormAction\n );\n var serverReference = resolveServerReference(\n response._serverReferenceConfig,\n metaData.id\n ),\n promise = preloadModule(serverReference);\n if (promise)\n metaData.bound && (promise = Promise.all([promise, metaData.bound]));\n else if (metaData.bound) promise = Promise.resolve(metaData.bound);\n else\n return (\n (promise = requireModule(serverReference)),\n registerBoundServerReference(\n promise,\n metaData.id,\n metaData.bound,\n response._encodeFormAction\n ),\n promise\n );\n if (initializingHandler) {\n var handler = initializingHandler;\n handler.deps++;\n } else\n handler = initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: null,\n deps: 1,\n errored: !1\n };\n promise.then(\n function () {\n var resolvedValue = requireModule(serverReference);\n if (metaData.bound) {\n var boundArgs = metaData.bound.value.slice(0);\n boundArgs.unshift(null);\n resolvedValue = resolvedValue.bind.apply(resolvedValue, boundArgs);\n }\n registerBoundServerReference(\n resolvedValue,\n metaData.id,\n metaData.bound,\n response._encodeFormAction\n );\n parentObject[key] = resolvedValue;\n \"\" === key && null === handler.value && (handler.value = resolvedValue);\n if (\n parentObject[0] === REACT_ELEMENT_TYPE &&\n \"object\" === typeof handler.value &&\n null !== handler.value &&\n handler.value.$$typeof === REACT_ELEMENT_TYPE\n )\n switch (((boundArgs = handler.value), key)) {\n case \"3\":\n boundArgs.props = resolvedValue;\n }\n handler.deps--;\n 0 === handler.deps &&\n ((resolvedValue = handler.chunk),\n null !== resolvedValue &&\n \"blocked\" === resolvedValue.status &&\n ((boundArgs = resolvedValue.value),\n (resolvedValue.status = \"fulfilled\"),\n (resolvedValue.value = handler.value),\n (resolvedValue.reason = null),\n null !== boundArgs &&\n wakeChunk(response, boundArgs, handler.value, resolvedValue)));\n },\n function (error) {\n if (!handler.errored) {\n handler.errored = !0;\n handler.value = null;\n handler.reason = error;\n var chunk = handler.chunk;\n null !== chunk &&\n \"blocked\" === chunk.status &&\n triggerErrorOnChunk(response, chunk, error);\n }\n }\n );\n return null;\n}\nfunction getOutlinedModel(response, reference, parentObject, key, map) {\n reference = reference.split(\":\");\n var id = parseInt(reference[0], 16);\n id = getChunk(response, id);\n switch (id.status) {\n case \"resolved_model\":\n initializeModelChunk(id);\n break;\n case \"resolved_module\":\n initializeModuleChunk(id);\n }\n switch (id.status) {\n case \"fulfilled\":\n id = id.value;\n for (var i = 1; i < reference.length; i++) {\n for (\n ;\n \"object\" === typeof id &&\n null !== id &&\n id.$$typeof === REACT_LAZY_TYPE;\n\n ) {\n id = id._payload;\n switch (id.status) {\n case \"resolved_model\":\n initializeModelChunk(id);\n break;\n case \"resolved_module\":\n initializeModuleChunk(id);\n }\n switch (id.status) {\n case \"fulfilled\":\n id = id.value;\n break;\n case \"blocked\":\n case \"pending\":\n return waitForReference(\n id,\n parentObject,\n key,\n response,\n map,\n reference.slice(i - 1)\n );\n case \"halted\":\n return (\n initializingHandler\n ? ((response = initializingHandler), response.deps++)\n : (initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: null,\n deps: 1,\n errored: !1\n }),\n null\n );\n default:\n return (\n initializingHandler\n ? ((initializingHandler.errored = !0),\n (initializingHandler.value = null),\n (initializingHandler.reason = id.reason))\n : (initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: id.reason,\n deps: 0,\n errored: !0\n }),\n null\n );\n }\n }\n id = id[reference[i]];\n }\n for (\n ;\n \"object\" === typeof id &&\n null !== id &&\n id.$$typeof === REACT_LAZY_TYPE;\n\n ) {\n reference = id._payload;\n switch (reference.status) {\n case \"resolved_model\":\n initializeModelChunk(reference);\n break;\n case \"resolved_module\":\n initializeModuleChunk(reference);\n }\n switch (reference.status) {\n case \"fulfilled\":\n id = reference.value;\n continue;\n }\n break;\n }\n return map(response, id, parentObject, key);\n case \"pending\":\n case \"blocked\":\n return waitForReference(id, parentObject, key, response, map, reference);\n case \"halted\":\n return (\n initializingHandler\n ? ((response = initializingHandler), response.deps++)\n : (initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: null,\n deps: 1,\n errored: !1\n }),\n null\n );\n default:\n return (\n initializingHandler\n ? ((initializingHandler.errored = !0),\n (initializingHandler.value = null),\n (initializingHandler.reason = id.reason))\n : (initializingHandler = {\n parent: null,\n chunk: null,\n value: null,\n reason: id.reason,\n deps: 0,\n errored: !0\n }),\n null\n );\n }\n}\nfunction createMap(response, model) {\n return new Map(model);\n}\nfunction createSet(response, model) {\n return new Set(model);\n}\nfunction createBlob(response, model) {\n return new Blob(model.slice(1), { type: model[0] });\n}\nfunction createFormData(response, model) {\n response = new FormData();\n for (var i = 0; i < model.length; i++)\n response.append(model[i][0], model[i][1]);\n return response;\n}\nfunction extractIterator(response, model) {\n return model[Symbol.iterator]();\n}\nfunction createModel(response, model) {\n return model;\n}\nfunction parseModelString(response, parentObject, key, value) {\n if (\"$\" === value[0]) {\n if (\"$\" === value)\n return (\n null !== initializingHandler &&\n \"0\" === key &&\n (initializingHandler = {\n parent: initializingHandler,\n chunk: null,\n value: null,\n reason: null,\n deps: 0,\n errored: !1\n }),\n REACT_ELEMENT_TYPE\n );\n switch (value[1]) {\n case \"$\":\n return value.slice(1);\n case \"L\":\n return (\n (parentObject = parseInt(value.slice(2), 16)),\n (response = getChunk(response, parentObject)),\n createLazyChunkWrapper(response)\n );\n case \"@\":\n return (\n (parentObject = parseInt(value.slice(2), 16)),\n getChunk(response, parentObject)\n );\n case \"S\":\n return Symbol.for(value.slice(2));\n case \"h\":\n return (\n (value = value.slice(2)),\n getOutlinedModel(\n response,\n value,\n parentObject,\n key,\n loadServerReference\n )\n );\n case \"T\":\n parentObject = \"$\" + value.slice(2);\n response = response._tempRefs;\n if (null == response)\n throw Error(\n \"Missing a temporary reference set but the RSC response returned a temporary reference. Pass a temporaryReference option with the set that was used with the reply.\"\n );\n return response.get(parentObject);\n case \"Q\":\n return (\n (value = value.slice(2)),\n getOutlinedModel(response, value, parentObject, key, createMap)\n );\n case \"W\":\n return (\n (value = value.slice(2)),\n getOutlinedModel(response, value, parentObject, key, createSet)\n );\n case \"B\":\n return (\n (value = value.slice(2)),\n getOutlinedModel(response, value, parentObject, key, createBlob)\n );\n case \"K\":\n return (\n (value = value.slice(2)),\n getOutlinedModel(response, value, parentObject, key, createFormData)\n );\n case \"Z\":\n return resolveErrorProd();\n case \"i\":\n return (\n (value = value.slice(2)),\n getOutlinedModel(response, value, parentObject, key, extractIterator)\n );\n case \"I\":\n return Infinity;\n case \"-\":\n return \"$-0\" === value ? -0 : -Infinity;\n case \"N\":\n return NaN;\n case \"u\":\n return;\n case \"D\":\n return new Date(Date.parse(value.slice(2)));\n case \"n\":\n return BigInt(value.slice(2));\n default:\n return (\n (value = value.slice(1)),\n getOutlinedModel(response, value, parentObject, key, createModel)\n );\n }\n }\n return value;\n}\nfunction missingCall() {\n throw Error(\n 'Trying to call a function from \"use server\" but the callServer option was not implemented in your router runtime.'\n );\n}\nfunction ResponseInstance(\n bundlerConfig,\n serverReferenceConfig,\n moduleLoading,\n callServer,\n encodeFormAction,\n nonce,\n temporaryReferences\n) {\n var chunks = new Map();\n this._bundlerConfig = bundlerConfig;\n this._serverReferenceConfig = serverReferenceConfig;\n this._moduleLoading = moduleLoading;\n this._callServer = void 0 !== callServer ? callServer : missingCall;\n this._encodeFormAction = encodeFormAction;\n this._nonce = nonce;\n this._chunks = chunks;\n this._stringDecoder = new util.TextDecoder();\n this._fromJSON = null;\n this._closed = !1;\n this._closedReason = null;\n this._tempRefs = temporaryReferences;\n this._fromJSON = createFromJSONCallback(this);\n}\nfunction createStreamState() {\n return { _rowState: 0, _rowID: 0, _rowTag: 0, _rowLength: 0, _buffer: [] };\n}\nfunction resolveBuffer(response, id, buffer) {\n response = response._chunks;\n var chunk = response.get(id);\n chunk && \"pending\" !== chunk.status\n ? chunk.reason.enqueueValue(buffer)\n : ((buffer = new ReactPromise(\"fulfilled\", buffer, null)),\n response.set(id, buffer));\n}\nfunction resolveModule(response, id, model) {\n var chunks = response._chunks,\n chunk = chunks.get(id);\n model = JSON.parse(model, response._fromJSON);\n var clientReference = resolveClientReference(response._bundlerConfig, model);\n prepareDestinationWithChunks(\n response._moduleLoading,\n model[1],\n response._nonce\n );\n if ((model = preloadModule(clientReference))) {\n if (chunk) {\n var blockedChunk = chunk;\n blockedChunk.status = \"blocked\";\n } else\n (blockedChunk = new ReactPromise(\"blocked\", null, null)),\n chunks.set(id, blockedChunk);\n model.then(\n function () {\n return resolveModuleChunk(response, blockedChunk, clientReference);\n },\n function (error) {\n return triggerErrorOnChunk(response, blockedChunk, error);\n }\n );\n } else\n chunk\n ? resolveModuleChunk(response, chunk, clientReference)\n : ((chunk = new ReactPromise(\"resolved_module\", clientReference, null)),\n chunks.set(id, chunk));\n}\nfunction resolveStream(response, id, stream, controller) {\n var chunks = response._chunks,\n chunk = chunks.get(id);\n chunk\n ? \"pending\" === chunk.status &&\n ((id = chunk.value),\n (chunk.status = \"fulfilled\"),\n (chunk.value = stream),\n (chunk.reason = controller),\n null !== id && wakeChunk(response, id, chunk.value, chunk))\n : ((response = new ReactPromise(\"fulfilled\", stream, controller)),\n chunks.set(id, response));\n}\nfunction startReadableStream(response, id, type) {\n var controller = null,\n closed = !1;\n type = new ReadableStream({\n type: type,\n start: function (c) {\n controller = c;\n }\n });\n var previousBlockedChunk = null;\n resolveStream(response, id, type, {\n enqueueValue: function (value) {\n null === previousBlockedChunk\n ? controller.enqueue(value)\n : previousBlockedChunk.then(function () {\n controller.enqueue(value);\n });\n },\n enqueueModel: function (json) {\n if (null === previousBlockedChunk) {\n var chunk = new ReactPromise(\"resolved_model\", json, response);\n initializeModelChunk(chunk);\n \"fulfilled\" === chunk.status\n ? controller.enqueue(chunk.value)\n : (chunk.then(\n function (v) {\n return controller.enqueue(v);\n },\n function (e) {\n return controller.error(e);\n }\n ),\n (previousBlockedChunk = chunk));\n } else {\n chunk = previousBlockedChunk;\n var chunk$54 = new ReactPromise(\"pending\", null, null);\n chunk$54.then(\n function (v) {\n return controller.enqueue(v);\n },\n function (e) {\n return controller.error(e);\n }\n );\n previousBlockedChunk = chunk$54;\n chunk.then(function () {\n previousBlockedChunk === chunk$54 && (previousBlockedChunk = null);\n resolveModelChunk(response, chunk$54, json);\n });\n }\n },\n close: function () {\n if (!closed)\n if (((closed = !0), null === previousBlockedChunk)) controller.close();\n else {\n var blockedChunk = previousBlockedChunk;\n previousBlockedChunk = null;\n blockedChunk.then(function () {\n return controller.close();\n });\n }\n },\n error: function (error) {\n if (!closed)\n if (((closed = !0), null === previousBlockedChunk))\n controller.error(error);\n else {\n var blockedChunk = previousBlockedChunk;\n previousBlockedChunk = null;\n blockedChunk.then(function () {\n return controller.error(error);\n });\n }\n }\n });\n}\nfunction asyncIterator() {\n return this;\n}\nfunction createIterator(next) {\n next = { next: next };\n next[ASYNC_ITERATOR] = asyncIterator;\n return next;\n}\nfunction startAsyncIterable(response, id, iterator) {\n var buffer = [],\n closed = !1,\n nextWriteIndex = 0,\n iterable = {};\n iterable[ASYNC_ITERATOR] = function () {\n var nextReadIndex = 0;\n return createIterator(function (arg) {\n if (void 0 !== arg)\n throw Error(\n \"Values cannot be passed to next() of AsyncIterables passed to Client Components.\"\n );\n if (nextReadIndex === buffer.length) {\n if (closed)\n return new ReactPromise(\n \"fulfilled\",\n { done: !0, value: void 0 },\n null\n );\n buffer[nextReadIndex] = new ReactPromise(\"pending\", null, null);\n }\n return buffer[nextReadIndex++];\n });\n };\n resolveStream(\n response,\n id,\n iterator ? iterable[ASYNC_ITERATOR]() : iterable,\n {\n enqueueValue: function (value) {\n if (nextWriteIndex === buffer.length)\n buffer[nextWriteIndex] = new ReactPromise(\n \"fulfilled\",\n { done: !1, value: value },\n null\n );\n else {\n var chunk = buffer[nextWriteIndex],\n resolveListeners = chunk.value,\n rejectListeners = chunk.reason;\n chunk.status = \"fulfilled\";\n chunk.value = { done: !1, value: value };\n chunk.reason = null;\n null !== resolveListeners &&\n wakeChunkIfInitialized(\n response,\n chunk,\n resolveListeners,\n rejectListeners\n );\n }\n nextWriteIndex++;\n },\n enqueueModel: function (value) {\n nextWriteIndex === buffer.length\n ? (buffer[nextWriteIndex] = createResolvedIteratorResultChunk(\n response,\n value,\n !1\n ))\n : resolveIteratorResultChunk(\n response,\n buffer[nextWriteIndex],\n value,\n !1\n );\n nextWriteIndex++;\n },\n close: function (value) {\n if (!closed)\n for (\n closed = !0,\n nextWriteIndex === buffer.length\n ? (buffer[nextWriteIndex] = createResolvedIteratorResultChunk(\n response,\n value,\n !0\n ))\n : resolveIteratorResultChunk(\n response,\n buffer[nextWriteIndex],\n value,\n !0\n ),\n nextWriteIndex++;\n nextWriteIndex < buffer.length;\n\n )\n resolveIteratorResultChunk(\n response,\n buffer[nextWriteIndex++],\n '\"$undefined\"',\n !0\n );\n },\n error: function (error) {\n if (!closed)\n for (\n closed = !0,\n nextWriteIndex === buffer.length &&\n (buffer[nextWriteIndex] = new ReactPromise(\n \"pending\",\n null,\n null\n ));\n nextWriteIndex < buffer.length;\n\n )\n triggerErrorOnChunk(response, buffer[nextWriteIndex++], error);\n }\n }\n );\n}\nfunction resolveErrorProd() {\n var error = Error(\n \"An error occurred in the Server Components render. The specific message is omitted in production builds to avoid leaking sensitive details. A digest property is included on this error instance which may provide additional details about the nature of the error.\"\n );\n error.stack = \"Error: \" + error.message;\n return error;\n}\nfunction mergeBuffer(buffer, lastChunk) {\n for (var l = buffer.length, byteLength = lastChunk.length, i = 0; i < l; i++)\n byteLength += buffer[i].byteLength;\n byteLength = new Uint8Array(byteLength);\n for (var i$55 = (i = 0); i$55 < l; i$55++) {\n var chunk = buffer[i$55];\n byteLength.set(chunk, i);\n i += chunk.byteLength;\n }\n byteLength.set(lastChunk, i);\n return byteLength;\n}\nfunction resolveTypedArray(\n response,\n id,\n buffer,\n lastChunk,\n constructor,\n bytesPerElement\n) {\n buffer =\n 0 === buffer.length && 0 === lastChunk.byteOffset % bytesPerElement\n ? lastChunk\n : mergeBuffer(buffer, lastChunk);\n constructor = new constructor(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength / bytesPerElement\n );\n resolveBuffer(response, id, constructor);\n}\nfunction processFullBinaryRow(response, streamState, id, tag, buffer, chunk) {\n switch (tag) {\n case 65:\n resolveBuffer(response, id, mergeBuffer(buffer, chunk).buffer);\n return;\n case 79:\n resolveTypedArray(response, id, buffer, chunk, Int8Array, 1);\n return;\n case 111:\n resolveBuffer(\n response,\n id,\n 0 === buffer.length ? chunk : mergeBuffer(buffer, chunk)\n );\n return;\n case 85:\n resolveTypedArray(response, id, buffer, chunk, Uint8ClampedArray, 1);\n return;\n case 83:\n resolveTypedArray(response, id, buffer, chunk, Int16Array, 2);\n return;\n case 115:\n resolveTypedArray(response, id, buffer, chunk, Uint16Array, 2);\n return;\n case 76:\n resolveTypedArray(response, id, buffer, chunk, Int32Array, 4);\n return;\n case 108:\n resolveTypedArray(response, id, buffer, chunk, Uint32Array, 4);\n return;\n case 71:\n resolveTypedArray(response, id, buffer, chunk, Float32Array, 4);\n return;\n case 103:\n resolveTypedArray(response, id, buffer, chunk, Float64Array, 8);\n return;\n case 77:\n resolveTypedArray(response, id, buffer, chunk, BigInt64Array, 8);\n return;\n case 109:\n resolveTypedArray(response, id, buffer, chunk, BigUint64Array, 8);\n return;\n case 86:\n resolveTypedArray(response, id, buffer, chunk, DataView, 1);\n return;\n }\n for (\n var stringDecoder = response._stringDecoder, row = \"\", i = 0;\n i < buffer.length;\n i++\n )\n row += stringDecoder.decode(buffer[i], decoderOptions);\n row += stringDecoder.decode(chunk);\n processFullStringRow(response, streamState, id, tag, row);\n}\nfunction processFullStringRow(response, streamState, id, tag, row) {\n switch (tag) {\n case 73:\n resolveModule(response, id, row);\n break;\n case 72:\n id = row[0];\n row = row.slice(1);\n response = JSON.parse(row, response._fromJSON);\n row = ReactDOMSharedInternals.d;\n switch (id) {\n case \"D\":\n row.D(response);\n break;\n case \"C\":\n \"string\" === typeof response\n ? row.C(response)\n : row.C(response[0], response[1]);\n break;\n case \"L\":\n id = response[0];\n streamState = response[1];\n 3 === response.length\n ? row.L(id, streamState, response[2])\n : row.L(id, streamState);\n break;\n case \"m\":\n \"string\" === typeof response\n ? row.m(response)\n : row.m(response[0], response[1]);\n break;\n case \"X\":\n \"string\" === typeof response\n ? row.X(response)\n : row.X(response[0], response[1]);\n break;\n case \"S\":\n \"string\" === typeof response\n ? row.S(response)\n : row.S(\n response[0],\n 0 === response[1] ? void 0 : response[1],\n 3 === response.length ? response[2] : void 0\n );\n break;\n case \"M\":\n \"string\" === typeof response\n ? row.M(response)\n : row.M(response[0], response[1]);\n }\n break;\n case 69:\n streamState = response._chunks;\n tag = streamState.get(id);\n row = JSON.parse(row);\n var error = resolveErrorProd();\n error.digest = row.digest;\n tag\n ? triggerErrorOnChunk(response, tag, error)\n : ((response = new ReactPromise(\"rejected\", null, error)),\n streamState.set(id, response));\n break;\n case 84:\n response = response._chunks;\n (streamState = response.get(id)) && \"pending\" !== streamState.status\n ? streamState.reason.enqueueValue(row)\n : ((row = new ReactPromise(\"fulfilled\", row, null)),\n response.set(id, row));\n break;\n case 78:\n case 68:\n case 74:\n case 87:\n throw Error(\n \"Failed to read a RSC payload created by a development version of React on the server while using a production version on the client. Always use matching versions on the server and the client.\"\n );\n case 82:\n startReadableStream(response, id, void 0);\n break;\n case 114:\n startReadableStream(response, id, \"bytes\");\n break;\n case 88:\n startAsyncIterable(response, id, !1);\n break;\n case 120:\n startAsyncIterable(response, id, !0);\n break;\n case 67:\n (id = response._chunks.get(id)) &&\n \"fulfilled\" === id.status &&\n id.reason.close(\"\" === row ? '\"$undefined\"' : row);\n break;\n default:\n (streamState = response._chunks),\n (tag = streamState.get(id))\n ? resolveModelChunk(response, tag, row)\n : ((response = new ReactPromise(\"resolved_model\", row, response)),\n streamState.set(id, response));\n }\n}\nfunction processBinaryChunk(weakResponse, streamState, chunk) {\n for (\n var i = 0,\n rowState = streamState._rowState,\n rowID = streamState._rowID,\n rowTag = streamState._rowTag,\n rowLength = streamState._rowLength,\n buffer = streamState._buffer,\n chunkLength = chunk.length;\n i < chunkLength;\n\n ) {\n var lastIdx = -1;\n switch (rowState) {\n case 0:\n lastIdx = chunk[i++];\n 58 === lastIdx\n ? (rowState = 1)\n : (rowID =\n (rowID << 4) | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48));\n continue;\n case 1:\n rowState = chunk[i];\n 84 === rowState ||\n 65 === rowState ||\n 79 === rowState ||\n 111 === rowState ||\n 98 === rowState ||\n 85 === rowState ||\n 83 === rowState ||\n 115 === rowState ||\n 76 === rowState ||\n 108 === rowState ||\n 71 === rowState ||\n 103 === rowState ||\n 77 === rowState ||\n 109 === rowState ||\n 86 === rowState\n ? ((rowTag = rowState), (rowState = 2), i++)\n : (64 < rowState && 91 > rowState) ||\n 35 === rowState ||\n 114 === rowState ||\n 120 === rowState\n ? ((rowTag = rowState), (rowState = 3), i++)\n : ((rowTag = 0), (rowState = 3));\n continue;\n case 2:\n lastIdx = chunk[i++];\n 44 === lastIdx\n ? (rowState = 4)\n : (rowLength =\n (rowLength << 4) | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48));\n continue;\n case 3:\n lastIdx = chunk.indexOf(10, i);\n break;\n case 4:\n (lastIdx = i + rowLength), lastIdx > chunk.length && (lastIdx = -1);\n }\n var offset = chunk.byteOffset + i;\n if (-1 < lastIdx)\n (rowLength = new Uint8Array(chunk.buffer, offset, lastIdx - i)),\n 98 === rowTag\n ? resolveBuffer(\n weakResponse,\n rowID,\n lastIdx === chunkLength ? rowLength : rowLength.slice()\n )\n : processFullBinaryRow(\n weakResponse,\n streamState,\n rowID,\n rowTag,\n buffer,\n rowLength\n ),\n (i = lastIdx),\n 3 === rowState && i++,\n (rowLength = rowID = rowTag = rowState = 0),\n (buffer.length = 0);\n else {\n chunk = new Uint8Array(chunk.buffer, offset, chunk.byteLength - i);\n 98 === rowTag\n ? ((rowLength -= chunk.byteLength),\n resolveBuffer(weakResponse, rowID, chunk))\n : (buffer.push(chunk), (rowLength -= chunk.byteLength));\n break;\n }\n }\n streamState._rowState = rowState;\n streamState._rowID = rowID;\n streamState._rowTag = rowTag;\n streamState._rowLength = rowLength;\n}\nfunction createFromJSONCallback(response) {\n return function (key, value) {\n if (\"string\" === typeof value)\n return parseModelString(response, this, key, value);\n if (\"object\" === typeof value && null !== value) {\n if (value[0] === REACT_ELEMENT_TYPE) {\n if (\n ((key = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: value[1],\n key: value[2],\n ref: null,\n props: value[3]\n }),\n null !== initializingHandler)\n )\n if (\n ((value = initializingHandler),\n (initializingHandler = value.parent),\n value.errored)\n )\n (key = new ReactPromise(\"rejected\", null, value.reason)),\n (key = createLazyChunkWrapper(key));\n else if (0 < value.deps) {\n var blockedChunk = new ReactPromise(\"blocked\", null, null);\n value.value = key;\n value.chunk = blockedChunk;\n key = createLazyChunkWrapper(blockedChunk);\n }\n } else key = value;\n return key;\n }\n return value;\n };\n}\nfunction close(weakResponse) {\n reportGlobalError(weakResponse, Error(\"Connection closed.\"));\n}\nfunction noServerCall$1() {\n throw Error(\n \"Server Functions cannot be called during initial render. This would create a fetch waterfall. Try to use a Server Component to pass data to Client Components instead.\"\n );\n}\nfunction createResponseFromOptions(options) {\n return new ResponseInstance(\n options.serverConsumerManifest.moduleMap,\n options.serverConsumerManifest.serverModuleMap,\n options.serverConsumerManifest.moduleLoading,\n noServerCall$1,\n options.encodeFormAction,\n \"string\" === typeof options.nonce ? options.nonce : void 0,\n options && options.temporaryReferences\n ? options.temporaryReferences\n : void 0\n );\n}\nfunction startReadingFromStream$1(response, stream, onDone) {\n function progress(_ref) {\n var value = _ref.value;\n if (_ref.done) return onDone();\n processBinaryChunk(response, streamState, value);\n return reader.read().then(progress).catch(error);\n }\n function error(e) {\n reportGlobalError(response, e);\n }\n var streamState = createStreamState(),\n reader = stream.getReader();\n reader.read().then(progress).catch(error);\n}\nfunction noServerCall() {\n throw Error(\n \"Server Functions cannot be called during initial render. This would create a fetch waterfall. Try to use a Server Component to pass data to Client Components instead.\"\n );\n}\nfunction startReadingFromStream(response, stream, onEnd) {\n var streamState = createStreamState();\n stream.on(\"data\", function (chunk) {\n if (\"string\" === typeof chunk) {\n for (\n var i = 0,\n rowState = streamState._rowState,\n rowID = streamState._rowID,\n rowTag = streamState._rowTag,\n rowLength = streamState._rowLength,\n buffer = streamState._buffer,\n chunkLength = chunk.length;\n i < chunkLength;\n\n ) {\n var lastIdx = -1;\n switch (rowState) {\n case 0:\n lastIdx = chunk.charCodeAt(i++);\n 58 === lastIdx\n ? (rowState = 1)\n : (rowID =\n (rowID << 4) | (96 < lastIdx ? lastIdx - 87 : lastIdx - 48));\n continue;\n case 1:\n rowState = chunk.charCodeAt(i);\n 84 === rowState ||\n 65 === rowState ||\n 79 === rowState ||\n 111 === rowState ||\n 85 === rowState ||\n 83 === rowState ||\n 115 === rowState ||\n 76 === rowState ||\n 108 === rowState ||\n 71 === rowState ||\n 103 === rowState ||\n 77 === rowState ||\n 109 === rowState ||\n 86 === rowState\n ? ((rowTag = rowState), (rowState = 2), i++)\n : (64 < rowState && 91 > rowState) ||\n 114 === rowState ||\n 120 === rowState\n ? ((rowTag = rowState), (rowState = 3), i++)\n : ((rowTag = 0), (rowState = 3));\n continue;\n case 2:\n lastIdx = chunk.charCodeAt(i++);\n 44 === lastIdx\n ? (rowState = 4)\n : (rowLength =\n (rowLength << 4) |\n (96 < lastIdx ? lastIdx - 87 : lastIdx - 48));\n continue;\n case 3:\n lastIdx = chunk.indexOf(\"\\n\", i);\n break;\n case 4:\n if (84 !== rowTag)\n throw Error(\n \"Binary RSC chunks cannot be encoded as strings. This is a bug in the wiring of the React streams.\"\n );\n if (rowLength < chunk.length || chunk.length > 3 * rowLength)\n throw Error(\n \"String chunks need to be passed in their original shape. Not split into smaller string chunks. This is a bug in the wiring of the React streams.\"\n );\n lastIdx = chunk.length;\n }\n if (-1 < lastIdx) {\n if (0 < buffer.length)\n throw Error(\n \"String chunks need to be passed in their original shape. Not split into smaller string chunks. This is a bug in the wiring of the React streams.\"\n );\n i = chunk.slice(i, lastIdx);\n processFullStringRow(response, streamState, rowID, rowTag, i);\n i = lastIdx;\n 3 === rowState && i++;\n rowLength = rowID = rowTag = rowState = 0;\n buffer.length = 0;\n } else if (chunk.length !== i)\n throw Error(\n \"String chunks need to be passed in their original shape. Not split into smaller string chunks. This is a bug in the wiring of the React streams.\"\n );\n }\n streamState._rowState = rowState;\n streamState._rowID = rowID;\n streamState._rowTag = rowTag;\n streamState._rowLength = rowLength;\n } else processBinaryChunk(response, streamState, chunk);\n });\n stream.on(\"error\", function (error) {\n reportGlobalError(response, error);\n });\n stream.on(\"end\", onEnd);\n}\nexports.createFromFetch = function (promiseForResponse, options) {\n var response = createResponseFromOptions(options);\n promiseForResponse.then(\n function (r) {\n startReadingFromStream$1(response, r.body, close.bind(null, response));\n },\n function (e) {\n reportGlobalError(response, e);\n }\n );\n return getChunk(response, 0);\n};\nexports.createFromNodeStream = function (\n stream,\n serverConsumerManifest,\n options\n) {\n serverConsumerManifest = new ResponseInstance(\n serverConsumerManifest.moduleMap,\n serverConsumerManifest.serverModuleMap,\n serverConsumerManifest.moduleLoading,\n noServerCall,\n options ? options.encodeFormAction : void 0,\n options && \"string\" === typeof options.nonce ? options.nonce : void 0,\n void 0\n );\n startReadingFromStream(\n serverConsumerManifest,\n stream,\n close.bind(null, serverConsumerManifest)\n );\n return getChunk(serverConsumerManifest, 0);\n};\nexports.createFromReadableStream = function (stream, options) {\n options = createResponseFromOptions(options);\n startReadingFromStream$1(options, stream, close.bind(null, options));\n return getChunk(options, 0);\n};\nexports.createServerReference = function (id) {\n return createServerReference$1(id, noServerCall$1);\n};\nexports.createTemporaryReferenceSet = function () {\n return new Map();\n};\nexports.encodeReply = function (value, options) {\n return new Promise(function (resolve, reject) {\n var abort = processReply(\n value,\n \"\",\n options && options.temporaryReferences\n ? options.temporaryReferences\n : void 0,\n resolve,\n reject\n );\n if (options && options.signal) {\n var signal = options.signal;\n if (signal.aborted) abort(signal.reason);\n else {\n var listener = function () {\n abort(signal.reason);\n signal.removeEventListener(\"abort\", listener);\n };\n signal.addEventListener(\"abort\", listener);\n }\n }\n });\n};\nexports.registerServerReference = function (reference, id, encodeFormAction) {\n registerBoundServerReference(reference, id, null, encodeFormAction);\n return reference;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-server-dom-turbopack-client.node.production.js');\n} else {\n module.exports = require('./cjs/react-server-dom-turbopack-client.node.development.js');\n}\n","(()=>{\"use strict\";var e={328:e=>{function hash(e){var r=5381,_=e.length;while(_){r=r*33^e.charCodeAt(--_)}return r>>>0}e.exports=hash}};var r={};function __nccwpck_require__(_){var a=r[_];if(a!==undefined){return a.exports}var t=r[_]={exports:{}};var i=true;try{e[_](t,t.exports,__nccwpck_require__);i=false}finally{if(i)delete r[_]}return t.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var _=__nccwpck_require__(328);module.exports=_})();","const noop = ()=>{};\nlet registry;\nif (globalThis.FinalizationRegistry) {\n registry = new FinalizationRegistry((weakRef)=>{\n const stream = weakRef.deref();\n if (stream && !stream.locked) {\n stream.cancel('Response object has been garbage collected').then(noop);\n }\n });\n}\n/**\n * Clones a response by teeing the body so we can return two independent\n * ReadableStreams from it. This avoids the bug in the undici library around\n * response cloning.\n *\n * After cloning, the original response's body will be consumed and closed.\n *\n * @see https://github.com/vercel/next.js/pull/73274\n *\n * @param original - The original response to clone.\n * @returns A tuple containing two independent clones of the original response.\n */ export function cloneResponse(original) {\n // If the response has no body, then we can just return the original response\n // twice because it's immutable.\n if (!original.body) {\n return [\n original,\n original\n ];\n }\n const [body1, body2] = original.body.tee();\n const cloned1 = new Response(body1, {\n status: original.status,\n statusText: original.statusText,\n headers: original.headers\n });\n Object.defineProperty(cloned1, 'url', {\n value: original.url,\n // How the original response.url behaves\n configurable: true,\n enumerable: true,\n writable: false\n });\n // The Fetch Standard allows users to skip consuming the response body by\n // relying on garbage collection to release connection resources.\n // https://github.com/nodejs/undici?tab=readme-ov-file#garbage-collection\n //\n // To cancel the stream you then need to cancel both resulting branches.\n // Teeing a stream will generally lock it for the duration, preventing other\n // readers from locking it.\n // https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/tee\n // cloned2 is stored in a react cache and cloned for subsequent requests.\n // It is the original request, and is is garbage collected by a\n // FinalizationRegistry in Undici, but since we're tee-ing the stream\n // ourselves, we need to cancel clone1's stream (the response returned from\n // our dedupe fetch) when clone1 is reclaimed, otherwise we leak memory.\n if (registry && cloned1.body) {\n registry.register(cloned1, new WeakRef(cloned1.body));\n }\n const cloned2 = new Response(body2, {\n status: original.status,\n statusText: original.statusText,\n headers: original.headers\n });\n Object.defineProperty(cloned2, 'url', {\n value: original.url,\n // How the original response.url behaves\n configurable: true,\n enumerable: true,\n writable: false\n });\n return [\n cloned1,\n cloned2\n ];\n}\n\n//# sourceMappingURL=clone-response.js.map","const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT';\nexport class StaticGenBailoutError extends Error {\n constructor(...args){\n super(...args), this.code = NEXT_STATIC_GEN_BAILOUT;\n }\n}\nexport function isStaticGenBailoutError(error) {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false;\n }\n return error.code === NEXT_STATIC_GEN_BAILOUT;\n}\n\n//# sourceMappingURL=static-generation-bailout.js.map","const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE';\nexport class DynamicServerError extends Error {\n constructor(description){\n super(`Dynamic server usage: ${description}`), this.description = description, this.digest = DYNAMIC_ERROR_CODE;\n }\n}\nexport function isDynamicServerError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err) || typeof err.digest !== 'string') {\n return false;\n }\n return err.digest === DYNAMIC_ERROR_CODE;\n}\n\n//# sourceMappingURL=hooks-server-context.js.map","// This has to be a shared module which is shared between client component error boundary and dynamic component\nconst BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING';\n/** An error that should be thrown when we want to bail out to client-side rendering. */ export class BailoutToCSRError extends Error {\n constructor(reason){\n super(`Bail out to client-side rendering: ${reason}`), this.reason = reason, this.digest = BAILOUT_TO_CSR;\n }\n}\n/** Checks if a passed argument is an error that is thrown if we want to bail out to client-side rendering. */ export function isBailoutToCSRError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false;\n }\n return err.digest === BAILOUT_TO_CSR;\n}\n\n//# sourceMappingURL=bailout-to-csr.js.map","// eslint-disable-next-line import/no-extraneous-dependencies\nexport { createTemporaryReferenceSet, renderToReadableStream, decodeReply, decodeAction, decodeFormState } from 'react-server-dom-webpack/server';\n// eslint-disable-next-line import/no-extraneous-dependencies\nexport { prerender } from 'react-server-dom-webpack/static';\n// TODO: Just re-export `* as ReactServer`\nexport { captureOwnerStack, createElement, Fragment } from 'react';\nexport { default as LayoutRouter } from '../../client/components/layout-router';\nexport { default as RenderFromTemplateContext } from '../../client/components/render-from-template-context';\nexport { workAsyncStorage } from '../app-render/work-async-storage.external';\nexport { workUnitAsyncStorage } from './work-unit-async-storage.external';\nexport { actionAsyncStorage } from '../app-render/action-async-storage.external';\nexport { ClientPageRoot } from '../../client/components/client-page';\nexport { ClientSegmentRoot } from '../../client/components/client-segment';\nexport { createServerSearchParamsForServerPage, createPrerenderSearchParamsForClientPage } from '../request/search-params';\nexport { createServerParamsForServerSegment, createPrerenderParamsForClientSegment } from '../request/params';\nexport * as serverHooks from '../../client/components/hooks-server-context';\nexport { HTTPAccessFallbackBoundary } from '../../client/components/http-access-fallback/error-boundary';\nexport { createMetadataComponents } from '../../lib/metadata/metadata';\nexport { RootLayoutBoundary } from '../../lib/framework/boundary-components';\nexport { preloadStyle, preloadFont, preconnect } from './rsc/preloads';\nexport { Postpone } from './rsc/postpone';\nexport { taintObjectReference } from './rsc/taint';\nexport { collectSegmentData } from './collect-segment-data';\nimport { workAsyncStorage } from '../app-render/work-async-storage.external';\nimport { workUnitAsyncStorage } from './work-unit-async-storage.external';\nimport { patchFetch as _patchFetch } from '../lib/patch-fetch';\nlet SegmentViewNode = ()=>null;\nlet SegmentViewStateNode = ()=>null;\nif (process.env.NODE_ENV === 'development') {\n const mod = require('../../next-devtools/userspace/app/segment-explorer-node');\n SegmentViewNode = mod.SegmentViewNode;\n SegmentViewStateNode = mod.SegmentViewStateNode;\n}\n// hot-reloader modules are not bundled so we need to inject `__next__clear_chunk_cache__`\n// into globalThis from this file which is bundled.\nif (process.env.TURBOPACK) {\n globalThis.__next__clear_chunk_cache__ = __turbopack_clear_chunk_cache__;\n} else {\n // Webpack does not have chunks on the server\n globalThis.__next__clear_chunk_cache__ = null;\n}\n// patchFetch makes use of APIs such as `React.unstable_postpone` which are only available\n// in the experimental channel of React, so export it from here so that it comes from the bundled runtime\nexport function patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\n// Development only\nexport { SegmentViewNode, SegmentViewStateNode };\n\n//# sourceMappingURL=entry-base.js.map","// This regex will have fast negatives meaning valid identifiers may not pass\n// this test. However this is only used during static generation to provide hints\n// about why a page bailed out of some or all prerendering and we can use bracket notation\n// for example while `ಠ_ಠ` is a valid identifier it's ok to print `searchParams['ಠ_ಠ']`\n// even if this would have been fine too `searchParams.ಠ_ಠ`\nconst isDefinitelyAValidIdentifier = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\nexport function describeStringPropertyAccess(target, prop) {\n if (isDefinitelyAValidIdentifier.test(prop)) {\n return `\\`${target}.${prop}\\``;\n }\n return `\\`${target}[${JSON.stringify(prop)}]\\``;\n}\nexport function describeHasCheckingStringProperty(target, prop) {\n const stringifiedProp = JSON.stringify(prop);\n return `\\`Reflect.has(${target}, ${stringifiedProp})\\`, \\`${stringifiedProp} in ${target}\\`, or similar`;\n}\nexport const wellKnownProperties = new Set([\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toString',\n 'valueOf',\n 'toLocaleString',\n // Promise prototype\n 'then',\n 'catch',\n 'finally',\n // React Promise extension\n 'status',\n // 'value',\n // 'error',\n // React introspection\n 'displayName',\n '_debugInfo',\n // Common tested properties\n 'toJSON',\n '$$typeof',\n '__esModule'\n]);\n\n//# sourceMappingURL=reflect-utils.js.map","import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React, { Suspense, cache, cloneElement } from 'react';\nimport { AppleWebAppMeta, FormatDetectionMeta, ItunesMeta, BasicMeta, ViewportMeta, VerificationMeta, FacebookMeta, PinterestMeta } from './generate/basic';\nimport { AlternatesMetadata } from './generate/alternate';\nimport { OpenGraphMetadata, TwitterMetadata, AppLinksMeta } from './generate/opengraph';\nimport { IconsMetadata } from './generate/icons';\nimport { resolveMetadata, resolveViewport } from './resolve-metadata';\nimport { MetaFilter } from './generate/meta';\nimport { isHTTPAccessFallbackError } from '../../client/components/http-access-fallback/http-access-fallback';\nimport { createServerSearchParamsForMetadata } from '../../server/request/search-params';\nimport { createServerPathnameForMetadata } from '../../server/request/pathname';\nimport { isPostpone } from '../../server/lib/router-utils/is-postpone';\nimport { MetadataBoundary, ViewportBoundary, OutletBoundary } from '../framework/boundary-components';\n// Use a promise to share the status of the metadata resolving,\n// returning two components `MetadataTree` and `MetadataOutlet`\n// `MetadataTree` is the one that will be rendered at first in the content sequence for metadata tags.\n// `MetadataOutlet` is the one that will be rendered under error boundaries for metadata resolving errors.\n// In this way we can let the metadata tags always render successfully,\n// and the error will be caught by the error boundary and trigger fallbacks.\nexport function createMetadataComponents({ tree, pathname, parsedQuery, metadataContext, getDynamicParamFromSegment, errorType, workStore, serveStreamingMetadata }) {\n const searchParams = createServerSearchParamsForMetadata(parsedQuery, workStore);\n const pathnameForMetadata = createServerPathnameForMetadata(pathname, workStore);\n async function Viewport() {\n const tags = await getResolvedViewport(tree, searchParams, getDynamicParamFromSegment, workStore, errorType).catch((viewportErr)=>{\n // When Legacy PPR is enabled viewport can reject with a Postpone type\n // This will go away once Legacy PPR is removed and dynamic metadata will\n // stay pending until after the prerender is complete when it is dynamic\n if (isPostpone(viewportErr)) {\n throw viewportErr;\n }\n if (!errorType && isHTTPAccessFallbackError(viewportErr)) {\n return getNotFoundViewport(tree, searchParams, getDynamicParamFromSegment, workStore).catch(()=>null);\n }\n // We're going to throw the error from the metadata outlet so we just render null here instead\n return null;\n });\n return tags;\n }\n Viewport.displayName = 'Next.Viewport';\n function ViewportWrapper() {\n return /*#__PURE__*/ _jsx(ViewportBoundary, {\n children: /*#__PURE__*/ _jsx(Viewport, {})\n });\n }\n async function Metadata() {\n const tags = await getResolvedMetadata(tree, pathnameForMetadata, searchParams, getDynamicParamFromSegment, metadataContext, workStore, errorType).catch((metadataErr)=>{\n // When Legacy PPR is enabled metadata can reject with a Postpone type\n // This will go away once Legacy PPR is removed and dynamic metadata will\n // stay pending until after the prerender is complete when it is dynamic\n if (isPostpone(metadataErr)) {\n throw metadataErr;\n }\n if (!errorType && isHTTPAccessFallbackError(metadataErr)) {\n return getNotFoundMetadata(tree, pathnameForMetadata, searchParams, getDynamicParamFromSegment, metadataContext, workStore).catch(()=>null);\n }\n // We're going to throw the error from the metadata outlet so we just render null here instead\n return null;\n });\n return tags;\n }\n Metadata.displayName = 'Next.Metadata';\n function MetadataWrapper() {\n // TODO: We shouldn't change what we render based on whether we are streaming or not.\n // If we aren't streaming we should just block the response until we have resolved the\n // metadata.\n if (!serveStreamingMetadata) {\n return /*#__PURE__*/ _jsx(MetadataBoundary, {\n children: /*#__PURE__*/ _jsx(Metadata, {})\n });\n }\n return /*#__PURE__*/ _jsx(\"div\", {\n hidden: true,\n children: /*#__PURE__*/ _jsx(MetadataBoundary, {\n children: /*#__PURE__*/ _jsx(Suspense, {\n name: \"Next.Metadata\",\n children: /*#__PURE__*/ _jsx(Metadata, {})\n })\n })\n });\n }\n function MetadataOutlet() {\n const pendingOutlet = Promise.all([\n getResolvedMetadata(tree, pathnameForMetadata, searchParams, getDynamicParamFromSegment, metadataContext, workStore, errorType),\n getResolvedViewport(tree, searchParams, getDynamicParamFromSegment, workStore, errorType)\n ]).then(()=>null);\n // TODO: We shouldn't change what we render based on whether we are streaming or not.\n // If we aren't streaming we should just block the response until we have resolved the\n // metadata.\n if (!serveStreamingMetadata) {\n return /*#__PURE__*/ _jsx(OutletBoundary, {\n children: pendingOutlet\n });\n }\n return /*#__PURE__*/ _jsx(OutletBoundary, {\n children: /*#__PURE__*/ _jsx(Suspense, {\n name: \"Next.MetadataOutlet\",\n children: pendingOutlet\n })\n });\n }\n MetadataOutlet.displayName = 'Next.MetadataOutlet';\n return {\n Viewport: ViewportWrapper,\n Metadata: MetadataWrapper,\n MetadataOutlet\n };\n}\nconst getResolvedMetadata = cache(getResolvedMetadataImpl);\nasync function getResolvedMetadataImpl(tree, pathname, searchParams, getDynamicParamFromSegment, metadataContext, workStore, errorType) {\n const errorConvention = errorType === 'redirect' ? undefined : errorType;\n return renderMetadata(tree, pathname, searchParams, getDynamicParamFromSegment, metadataContext, workStore, errorConvention);\n}\nconst getNotFoundMetadata = cache(getNotFoundMetadataImpl);\nasync function getNotFoundMetadataImpl(tree, pathname, searchParams, getDynamicParamFromSegment, metadataContext, workStore) {\n const notFoundErrorConvention = 'not-found';\n return renderMetadata(tree, pathname, searchParams, getDynamicParamFromSegment, metadataContext, workStore, notFoundErrorConvention);\n}\nconst getResolvedViewport = cache(getResolvedViewportImpl);\nasync function getResolvedViewportImpl(tree, searchParams, getDynamicParamFromSegment, workStore, errorType) {\n const errorConvention = errorType === 'redirect' ? undefined : errorType;\n return renderViewport(tree, searchParams, getDynamicParamFromSegment, workStore, errorConvention);\n}\nconst getNotFoundViewport = cache(getNotFoundViewportImpl);\nasync function getNotFoundViewportImpl(tree, searchParams, getDynamicParamFromSegment, workStore) {\n const notFoundErrorConvention = 'not-found';\n return renderViewport(tree, searchParams, getDynamicParamFromSegment, workStore, notFoundErrorConvention);\n}\nasync function renderMetadata(tree, pathname, searchParams, getDynamicParamFromSegment, metadataContext, workStore, errorConvention) {\n const resolvedMetadata = await resolveMetadata(tree, pathname, searchParams, errorConvention, getDynamicParamFromSegment, workStore, metadataContext);\n const elements = createMetadataElements(resolvedMetadata);\n return /*#__PURE__*/ _jsx(_Fragment, {\n children: elements.map((el, index)=>{\n return /*#__PURE__*/ cloneElement(el, {\n key: index\n });\n })\n });\n}\nasync function renderViewport(tree, searchParams, getDynamicParamFromSegment, workStore, errorConvention) {\n const resolvedViewport = await resolveViewport(tree, searchParams, errorConvention, getDynamicParamFromSegment, workStore);\n const elements = createViewportElements(resolvedViewport);\n return /*#__PURE__*/ _jsx(_Fragment, {\n children: elements.map((el, index)=>{\n return /*#__PURE__*/ cloneElement(el, {\n key: index\n });\n })\n });\n}\nfunction createMetadataElements(metadata) {\n return MetaFilter([\n BasicMeta({\n metadata\n }),\n AlternatesMetadata({\n alternates: metadata.alternates\n }),\n ItunesMeta({\n itunes: metadata.itunes\n }),\n FacebookMeta({\n facebook: metadata.facebook\n }),\n PinterestMeta({\n pinterest: metadata.pinterest\n }),\n FormatDetectionMeta({\n formatDetection: metadata.formatDetection\n }),\n VerificationMeta({\n verification: metadata.verification\n }),\n AppleWebAppMeta({\n appleWebApp: metadata.appleWebApp\n }),\n OpenGraphMetadata({\n openGraph: metadata.openGraph\n }),\n TwitterMetadata({\n twitter: metadata.twitter\n }),\n AppLinksMeta({\n appLinks: metadata.appLinks\n }),\n IconsMetadata({\n icons: metadata.icons\n })\n ]);\n}\nfunction createViewportElements(viewport) {\n return MetaFilter([\n ViewportMeta({\n viewport: viewport\n })\n ]);\n}\n\n//# sourceMappingURL=metadata.js.map","function resolveArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n return [\n value\n ];\n}\nfunction resolveAsArrayOrUndefined(value) {\n if (typeof value === 'undefined' || value === null) {\n return undefined;\n }\n return resolveArray(value);\n}\nfunction getOrigin(url) {\n let origin = undefined;\n if (typeof url === 'string') {\n try {\n url = new URL(url);\n origin = url.origin;\n } catch {}\n }\n return origin;\n}\nexport { resolveAsArrayOrUndefined, resolveArray, getOrigin };\n\n//# sourceMappingURL=utils.js.map","// eslint-disable-next-line import/no-extraneous-dependencies\nimport 'server-only';\nimport { cache } from 'react';\nimport { createDefaultMetadata, createDefaultViewport } from './default-metadata';\nimport { resolveOpenGraph, resolveTwitter } from './resolvers/resolve-opengraph';\nimport { resolveTitle } from './resolvers/resolve-title';\nimport { resolveAsArrayOrUndefined } from './generate/utils';\nimport { getComponentTypeModule, getLayoutOrPageModule } from '../../server/lib/app-dir-module';\nimport { interopDefault } from '../interop-default';\nimport { resolveAlternates, resolveAppleWebApp, resolveAppLinks, resolveRobots, resolveThemeColor, resolveVerification, resolveItunes, resolveFacebook, resolvePagination } from './resolvers/resolve-basics';\nimport { resolveIcons } from './resolvers/resolve-icons';\nimport { getTracer } from '../../server/lib/trace/tracer';\nimport { ResolveMetadataSpan } from '../../server/lib/trace/constants';\nimport { PAGE_SEGMENT_KEY } from '../../shared/lib/segment';\nimport * as Log from '../../build/output/log';\nimport { createServerParamsForMetadata } from '../../server/request/params';\nimport { getUseCacheFunctionInfo, isUseCacheFunction } from '../client-and-server-references';\nimport { createLazyResult } from '../../server/lib/lazy-result';\nfunction isFavicon(icon) {\n if (!icon) {\n return false;\n }\n // turbopack appends a hash to all images\n return (icon.url === '/favicon.ico' || icon.url.toString().startsWith('/favicon.ico?')) && icon.type === 'image/x-icon';\n}\nfunction convertUrlsToStrings(input) {\n if (input instanceof URL) {\n return input.toString();\n } else if (Array.isArray(input)) {\n return input.map((item)=>convertUrlsToStrings(item));\n } else if (input && typeof input === 'object') {\n const result = {};\n for (const [key, value] of Object.entries(input)){\n result[key] = convertUrlsToStrings(value);\n }\n return result;\n }\n return input;\n}\nfunction normalizeMetadataBase(metadataBase) {\n if (typeof metadataBase === 'string') {\n try {\n metadataBase = new URL(metadataBase);\n } catch {\n throw Object.defineProperty(new Error(`metadataBase is not a valid URL: ${metadataBase}`), \"__NEXT_ERROR_CODE\", {\n value: \"E850\",\n enumerable: false,\n configurable: true\n });\n }\n }\n return metadataBase;\n}\nasync function mergeStaticMetadata(metadataBase, source, target, staticFilesMetadata, metadataContext, titleTemplates, leafSegmentStaticIcons, pathname) {\n var _source_twitter, _source_openGraph;\n if (!staticFilesMetadata) return target;\n const { icon, apple, openGraph, twitter, manifest } = staticFilesMetadata;\n // Keep updating the static icons in the most leaf node\n if (icon) {\n leafSegmentStaticIcons.icon = icon;\n }\n if (apple) {\n leafSegmentStaticIcons.apple = apple;\n }\n // file based metadata is specified and current level metadata twitter.images is not specified\n if (twitter && !(source == null ? void 0 : (_source_twitter = source.twitter) == null ? void 0 : _source_twitter.hasOwnProperty('images'))) {\n const resolvedTwitter = resolveTwitter({\n ...target.twitter,\n images: twitter\n }, metadataBase, {\n ...metadataContext,\n isStaticMetadataRouteFile: true\n }, titleTemplates.twitter);\n target.twitter = convertUrlsToStrings(resolvedTwitter);\n }\n // file based metadata is specified and current level metadata openGraph.images is not specified\n if (openGraph && !(source == null ? void 0 : (_source_openGraph = source.openGraph) == null ? void 0 : _source_openGraph.hasOwnProperty('images'))) {\n const resolvedOpenGraph = await resolveOpenGraph({\n ...target.openGraph,\n images: openGraph\n }, metadataBase, pathname, {\n ...metadataContext,\n isStaticMetadataRouteFile: true\n }, titleTemplates.openGraph);\n target.openGraph = convertUrlsToStrings(resolvedOpenGraph);\n }\n if (manifest) {\n target.manifest = manifest;\n }\n return target;\n}\n/**\n * Merges the given metadata with the resolved metadata. Returns a new object.\n */ async function mergeMetadata(route, pathname, { metadata, resolvedMetadata, staticFilesMetadata, titleTemplates, metadataContext, buildState, leafSegmentStaticIcons }) {\n const newResolvedMetadata = structuredClone(resolvedMetadata);\n const metadataBase = normalizeMetadataBase((metadata == null ? void 0 : metadata.metadataBase) !== undefined ? metadata.metadataBase : resolvedMetadata.metadataBase);\n for(const key_ in metadata){\n const key = key_;\n switch(key){\n case 'title':\n {\n newResolvedMetadata.title = resolveTitle(metadata.title, titleTemplates.title);\n break;\n }\n case 'alternates':\n {\n newResolvedMetadata.alternates = convertUrlsToStrings(await resolveAlternates(metadata.alternates, metadataBase, pathname, metadataContext));\n break;\n }\n case 'openGraph':\n {\n newResolvedMetadata.openGraph = convertUrlsToStrings(await resolveOpenGraph(metadata.openGraph, metadataBase, pathname, metadataContext, titleTemplates.openGraph));\n break;\n }\n case 'twitter':\n {\n newResolvedMetadata.twitter = convertUrlsToStrings(resolveTwitter(metadata.twitter, metadataBase, metadataContext, titleTemplates.twitter));\n break;\n }\n case 'facebook':\n newResolvedMetadata.facebook = resolveFacebook(metadata.facebook);\n break;\n case 'verification':\n newResolvedMetadata.verification = resolveVerification(metadata.verification);\n break;\n case 'icons':\n {\n newResolvedMetadata.icons = convertUrlsToStrings(resolveIcons(metadata.icons));\n break;\n }\n case 'appleWebApp':\n newResolvedMetadata.appleWebApp = resolveAppleWebApp(metadata.appleWebApp);\n break;\n case 'appLinks':\n newResolvedMetadata.appLinks = convertUrlsToStrings(resolveAppLinks(metadata.appLinks));\n break;\n case 'robots':\n {\n newResolvedMetadata.robots = resolveRobots(metadata.robots);\n break;\n }\n case 'archives':\n case 'assets':\n case 'bookmarks':\n case 'keywords':\n {\n newResolvedMetadata[key] = resolveAsArrayOrUndefined(metadata[key]);\n break;\n }\n case 'authors':\n {\n newResolvedMetadata[key] = convertUrlsToStrings(resolveAsArrayOrUndefined(metadata.authors));\n break;\n }\n case 'itunes':\n {\n newResolvedMetadata[key] = await resolveItunes(metadata.itunes, metadataBase, pathname, metadataContext);\n break;\n }\n case 'pagination':\n {\n newResolvedMetadata.pagination = await resolvePagination(metadata.pagination, metadataBase, pathname, metadataContext);\n break;\n }\n // directly assign fields that fallback to null\n case 'abstract':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'applicationName':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'description':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'generator':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'creator':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'publisher':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'category':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'classification':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'referrer':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'formatDetection':\n newResolvedMetadata[key] = metadata[key] ?? null;\n break;\n case 'manifest':\n newResolvedMetadata[key] = convertUrlsToStrings(metadata[key]) ?? null;\n break;\n case 'pinterest':\n newResolvedMetadata[key] = convertUrlsToStrings(metadata[key]) ?? null;\n break;\n case 'other':\n newResolvedMetadata.other = Object.assign({}, newResolvedMetadata.other, metadata.other);\n break;\n case 'metadataBase':\n newResolvedMetadata.metadataBase = metadataBase ? metadataBase.toString() : null;\n break;\n case 'apple-touch-fullscreen':\n {\n buildState.warnings.add(`Use appleWebApp instead\\nRead more: https://nextjs.org/docs/app/api-reference/functions/generate-metadata`);\n break;\n }\n case 'apple-touch-icon-precomposed':\n {\n buildState.warnings.add(`Use icons.apple instead\\nRead more: https://nextjs.org/docs/app/api-reference/functions/generate-metadata`);\n break;\n }\n case 'themeColor':\n case 'colorScheme':\n case 'viewport':\n if (metadata[key] != null) {\n buildState.warnings.add(`Unsupported metadata ${key} is configured in metadata export in ${route}. Please move it to viewport export instead.\\nRead more: https://nextjs.org/docs/app/api-reference/functions/generate-viewport`);\n }\n break;\n default:\n {\n key;\n }\n }\n }\n return mergeStaticMetadata(metadataBase, metadata, newResolvedMetadata, staticFilesMetadata, metadataContext, titleTemplates, leafSegmentStaticIcons, pathname);\n}\n/**\n * Merges the given viewport with the resolved viewport. Returns a new object.\n */ function mergeViewport({ resolvedViewport, viewport }) {\n const newResolvedViewport = structuredClone(resolvedViewport);\n if (viewport) {\n for(const key_ in viewport){\n const key = key_;\n switch(key){\n case 'themeColor':\n {\n newResolvedViewport.themeColor = resolveThemeColor(viewport.themeColor);\n break;\n }\n case 'colorScheme':\n newResolvedViewport.colorScheme = viewport.colorScheme || null;\n break;\n case 'width':\n case 'height':\n case 'initialScale':\n case 'minimumScale':\n case 'maximumScale':\n case 'userScalable':\n case 'viewportFit':\n case 'interactiveWidget':\n // always override the target with the source\n // @ts-ignore viewport properties\n newResolvedViewport[key] = viewport[key];\n break;\n default:\n key;\n }\n }\n }\n return newResolvedViewport;\n}\nfunction getDefinedViewport(mod, props, tracingProps) {\n if (typeof mod.generateViewport === 'function') {\n const { route } = tracingProps;\n const segmentProps = createSegmentProps(mod.generateViewport, props);\n return Object.assign((parent)=>getTracer().trace(ResolveMetadataSpan.generateViewport, {\n spanName: `generateViewport ${route}`,\n attributes: {\n 'next.page': route\n }\n }, ()=>mod.generateViewport(segmentProps, parent)), {\n $$original: mod.generateViewport\n });\n }\n return mod.viewport || null;\n}\nfunction getDefinedMetadata(mod, props, tracingProps) {\n if (typeof mod.generateMetadata === 'function') {\n const { route } = tracingProps;\n const segmentProps = createSegmentProps(mod.generateMetadata, props);\n return Object.assign((parent)=>getTracer().trace(ResolveMetadataSpan.generateMetadata, {\n spanName: `generateMetadata ${route}`,\n attributes: {\n 'next.page': route\n }\n }, ()=>mod.generateMetadata(segmentProps, parent)), {\n $$original: mod.generateMetadata\n });\n }\n return mod.metadata || null;\n}\n/**\n * If `fn` is a `'use cache'` function, we add special markers to the props,\n * that the cache wrapper reads and removes, before passing the props to the\n * user function.\n */ function createSegmentProps(fn, props) {\n return isUseCacheFunction(fn) ? 'searchParams' in props ? {\n ...props,\n $$isPage: true\n } : {\n ...props,\n $$isLayout: true\n } : props;\n}\nasync function collectStaticImagesFiles(metadata, props, type) {\n var _this;\n if (!(metadata == null ? void 0 : metadata[type])) return undefined;\n const iconPromises = metadata[type].map(async (imageModule)=>interopDefault(await imageModule(props)));\n return (iconPromises == null ? void 0 : iconPromises.length) > 0 ? (_this = await Promise.all(iconPromises)) == null ? void 0 : _this.flat() : undefined;\n}\nasync function resolveStaticMetadata(modules, props) {\n const { metadata } = modules;\n if (!metadata) return null;\n const [icon, apple, openGraph, twitter] = await Promise.all([\n collectStaticImagesFiles(metadata, props, 'icon'),\n collectStaticImagesFiles(metadata, props, 'apple'),\n collectStaticImagesFiles(metadata, props, 'openGraph'),\n collectStaticImagesFiles(metadata, props, 'twitter')\n ]);\n const staticMetadata = {\n icon,\n apple,\n openGraph,\n twitter,\n manifest: metadata.manifest\n };\n return staticMetadata;\n}\n// [layout.metadata, static files metadata] -> ... -> [page.metadata, static files metadata]\nasync function collectMetadata({ tree, metadataItems, errorMetadataItem, props, route, errorConvention }) {\n let mod;\n let modType;\n const hasErrorConventionComponent = Boolean(errorConvention && tree[2][errorConvention]);\n if (errorConvention) {\n mod = await getComponentTypeModule(tree, 'layout');\n modType = errorConvention;\n } else {\n const { mod: layoutOrPageMod, modType: layoutOrPageModType } = await getLayoutOrPageModule(tree);\n mod = layoutOrPageMod;\n modType = layoutOrPageModType;\n }\n if (modType) {\n route += `/${modType}`;\n }\n const staticFilesMetadata = await resolveStaticMetadata(tree[2], props);\n const metadataExport = mod ? getDefinedMetadata(mod, props, {\n route\n }) : null;\n metadataItems.push([\n metadataExport,\n staticFilesMetadata\n ]);\n if (hasErrorConventionComponent && errorConvention) {\n const errorMod = await getComponentTypeModule(tree, errorConvention);\n const errorMetadataExport = errorMod ? getDefinedMetadata(errorMod, props, {\n route\n }) : null;\n errorMetadataItem[0] = errorMetadataExport;\n errorMetadataItem[1] = staticFilesMetadata;\n }\n}\n// [layout.metadata, static files metadata] -> ... -> [page.metadata, static files metadata]\nasync function collectViewport({ tree, viewportItems, errorViewportItemRef, props, route, errorConvention }) {\n let mod;\n let modType;\n const hasErrorConventionComponent = Boolean(errorConvention && tree[2][errorConvention]);\n if (errorConvention) {\n mod = await getComponentTypeModule(tree, 'layout');\n modType = errorConvention;\n } else {\n const { mod: layoutOrPageMod, modType: layoutOrPageModType } = await getLayoutOrPageModule(tree);\n mod = layoutOrPageMod;\n modType = layoutOrPageModType;\n }\n if (modType) {\n route += `/${modType}`;\n }\n const viewportExport = mod ? getDefinedViewport(mod, props, {\n route\n }) : null;\n viewportItems.push(viewportExport);\n if (hasErrorConventionComponent && errorConvention) {\n const errorMod = await getComponentTypeModule(tree, errorConvention);\n const errorViewportExport = errorMod ? getDefinedViewport(errorMod, props, {\n route\n }) : null;\n errorViewportItemRef.current = errorViewportExport;\n }\n}\nconst resolveMetadataItems = cache(async function(tree, searchParams, errorConvention, getDynamicParamFromSegment, workStore) {\n const parentParams = {};\n const metadataItems = [];\n const errorMetadataItem = [\n null,\n null\n ];\n const treePrefix = undefined;\n return resolveMetadataItemsImpl(metadataItems, tree, treePrefix, parentParams, searchParams, errorConvention, errorMetadataItem, getDynamicParamFromSegment, workStore);\n});\nasync function resolveMetadataItemsImpl(metadataItems, tree, /** Provided tree can be nested subtree, this argument says what is the path of such subtree */ treePrefix, parentParams, searchParams, errorConvention, errorMetadataItem, getDynamicParamFromSegment, workStore) {\n const [segment, parallelRoutes, { page }] = tree;\n const currentTreePrefix = treePrefix && treePrefix.length ? [\n ...treePrefix,\n segment\n ] : [\n segment\n ];\n const isPage = typeof page !== 'undefined';\n // Handle dynamic segment params.\n const segmentParam = getDynamicParamFromSegment(segment);\n /**\n * Create object holding the parent params and current params\n */ let currentParams = parentParams;\n if (segmentParam && segmentParam.value !== null) {\n currentParams = {\n ...parentParams,\n [segmentParam.param]: segmentParam.value\n };\n }\n const params = createServerParamsForMetadata(currentParams, workStore);\n const props = isPage ? {\n params,\n searchParams\n } : {\n params\n };\n await collectMetadata({\n tree,\n metadataItems,\n errorMetadataItem,\n errorConvention,\n props,\n route: currentTreePrefix// __PAGE__ shouldn't be shown in a route\n .filter((s)=>s !== PAGE_SEGMENT_KEY).join('/')\n });\n for(const key in parallelRoutes){\n const childTree = parallelRoutes[key];\n await resolveMetadataItemsImpl(metadataItems, childTree, currentTreePrefix, currentParams, searchParams, errorConvention, errorMetadataItem, getDynamicParamFromSegment, workStore);\n }\n if (Object.keys(parallelRoutes).length === 0 && errorConvention) {\n // If there are no parallel routes, place error metadata as the last item.\n // e.g. layout -> layout -> not-found\n metadataItems.push(errorMetadataItem);\n }\n return metadataItems;\n}\nconst resolveViewportItems = cache(async function(tree, searchParams, errorConvention, getDynamicParamFromSegment, workStore) {\n const parentParams = {};\n const viewportItems = [];\n const errorViewportItemRef = {\n current: null\n };\n const treePrefix = undefined;\n return resolveViewportItemsImpl(viewportItems, tree, treePrefix, parentParams, searchParams, errorConvention, errorViewportItemRef, getDynamicParamFromSegment, workStore);\n});\nasync function resolveViewportItemsImpl(viewportItems, tree, /** Provided tree can be nested subtree, this argument says what is the path of such subtree */ treePrefix, parentParams, searchParams, errorConvention, errorViewportItemRef, getDynamicParamFromSegment, workStore) {\n const [segment, parallelRoutes, { page }] = tree;\n const currentTreePrefix = treePrefix && treePrefix.length ? [\n ...treePrefix,\n segment\n ] : [\n segment\n ];\n const isPage = typeof page !== 'undefined';\n // Handle dynamic segment params.\n const segmentParam = getDynamicParamFromSegment(segment);\n /**\n * Create object holding the parent params and current params\n */ let currentParams = parentParams;\n if (segmentParam && segmentParam.value !== null) {\n currentParams = {\n ...parentParams,\n [segmentParam.param]: segmentParam.value\n };\n }\n const params = createServerParamsForMetadata(currentParams, workStore);\n let layerProps;\n if (isPage) {\n layerProps = {\n params,\n searchParams\n };\n } else {\n layerProps = {\n params\n };\n }\n await collectViewport({\n tree,\n viewportItems,\n errorViewportItemRef,\n errorConvention,\n props: layerProps,\n route: currentTreePrefix// __PAGE__ shouldn't be shown in a route\n .filter((s)=>s !== PAGE_SEGMENT_KEY).join('/')\n });\n for(const key in parallelRoutes){\n const childTree = parallelRoutes[key];\n await resolveViewportItemsImpl(viewportItems, childTree, currentTreePrefix, currentParams, searchParams, errorConvention, errorViewportItemRef, getDynamicParamFromSegment, workStore);\n }\n if (Object.keys(parallelRoutes).length === 0 && errorConvention) {\n // If there are no parallel routes, place error metadata as the last item.\n // e.g. layout -> layout -> not-found\n viewportItems.push(errorViewportItemRef.current);\n }\n return viewportItems;\n}\nconst isTitleTruthy = (title)=>!!(title == null ? void 0 : title.absolute);\nconst hasTitle = (metadata)=>isTitleTruthy(metadata == null ? void 0 : metadata.title);\nfunction inheritFromMetadata(target, metadata) {\n if (target) {\n if (!hasTitle(target) && hasTitle(metadata)) {\n target.title = metadata.title;\n }\n if (!target.description && metadata.description) {\n target.description = metadata.description;\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst commonOgKeys = [\n 'title',\n 'description',\n 'images'\n];\nfunction postProcessMetadata(metadata, favicon, titleTemplates, metadataContext) {\n const { openGraph, twitter } = metadata;\n if (openGraph) {\n // If there's openGraph information but not configured in twitter,\n // inherit them from openGraph metadata.\n let autoFillProps = {};\n const hasTwTitle = hasTitle(twitter);\n const hasTwDescription = twitter == null ? void 0 : twitter.description;\n const hasTwImages = Boolean((twitter == null ? void 0 : twitter.hasOwnProperty('images')) && twitter.images);\n if (!hasTwTitle) {\n if (isTitleTruthy(openGraph.title)) {\n autoFillProps.title = openGraph.title;\n } else if (metadata.title && isTitleTruthy(metadata.title)) {\n autoFillProps.title = metadata.title;\n }\n }\n if (!hasTwDescription) autoFillProps.description = openGraph.description || metadata.description || undefined;\n if (!hasTwImages) autoFillProps.images = openGraph.images;\n if (Object.keys(autoFillProps).length > 0) {\n const partialTwitter = resolveTwitter(autoFillProps, normalizeMetadataBase(metadata.metadataBase), metadataContext, titleTemplates.twitter);\n if (metadata.twitter) {\n metadata.twitter = Object.assign({}, metadata.twitter, {\n ...!hasTwTitle && {\n title: partialTwitter == null ? void 0 : partialTwitter.title\n },\n ...!hasTwDescription && {\n description: partialTwitter == null ? void 0 : partialTwitter.description\n },\n ...!hasTwImages && {\n images: partialTwitter == null ? void 0 : partialTwitter.images\n }\n });\n } else {\n metadata.twitter = convertUrlsToStrings(partialTwitter);\n }\n }\n }\n // If there's no title and description configured in openGraph or twitter,\n // use the title and description from metadata.\n inheritFromMetadata(openGraph, metadata);\n inheritFromMetadata(twitter, metadata);\n if (favicon) {\n if (!metadata.icons) {\n metadata.icons = {\n icon: [],\n apple: []\n };\n }\n metadata.icons.icon.unshift(favicon);\n }\n return metadata;\n}\nfunction prerenderMetadata(metadataItems) {\n // If the index is a function then it is a resolver and the next slot\n // is the corresponding result. If the index is not a function it is the result\n // itself.\n const resolversAndResults = [];\n for(let i = 0; i < metadataItems.length; i++){\n const metadataExport = metadataItems[i][0];\n getResult(resolversAndResults, metadataExport);\n }\n return resolversAndResults;\n}\nfunction prerenderViewport(viewportItems) {\n // If the index is a function then it is a resolver and the next slot\n // is the corresponding result. If the index is not a function it is the result\n // itself.\n const resolversAndResults = [];\n for(let i = 0; i < viewportItems.length; i++){\n const viewportExport = viewportItems[i];\n getResult(resolversAndResults, viewportExport);\n }\n return resolversAndResults;\n}\nconst noop = ()=>{};\nfunction getResult(resolversAndResults, exportForResult) {\n if (typeof exportForResult === 'function') {\n // If the function is a 'use cache' function that uses the parent data as\n // the second argument, we don't want to eagerly execute it during\n // metadata/viewport pre-rendering, as the parent data might also be\n // computed from another 'use cache' function. To ensure that the hanging\n // input abort signal handling works in this case (i.e. the depending\n // function waits for the cached input to resolve while encoding its args),\n // they must be called sequentially. This can be accomplished by wrapping\n // the call in a lazy promise, so that the original function is only called\n // when the result is actually awaited.\n const useCacheFunctionInfo = getUseCacheFunctionInfo(exportForResult.$$original);\n if (useCacheFunctionInfo && useCacheFunctionInfo.usedArgs[1]) {\n const promise = new Promise((resolve)=>resolversAndResults.push(resolve));\n resolversAndResults.push(createLazyResult(async ()=>exportForResult(promise)));\n } else {\n let result;\n if (useCacheFunctionInfo) {\n resolversAndResults.push(noop);\n // @ts-expect-error We intentionally omit the parent argument, because\n // we know from the check above that the 'use cache' function does not\n // use it.\n result = exportForResult();\n } else {\n result = exportForResult(new Promise((resolve)=>resolversAndResults.push(resolve)));\n }\n resolversAndResults.push(result);\n if (result instanceof Promise) {\n // since we eager execute generateMetadata and\n // they can reject at anytime we need to ensure\n // we attach the catch handler right away to\n // prevent unhandled rejections crashing the process\n result.catch((err)=>{\n return {\n __nextError: err\n };\n });\n }\n }\n } else if (typeof exportForResult === 'object') {\n resolversAndResults.push(exportForResult);\n } else {\n resolversAndResults.push(null);\n }\n}\nfunction freezeInDev(obj) {\n if (process.env.NODE_ENV === 'development') {\n return require('../../shared/lib/deep-freeze').deepFreeze(obj);\n }\n return obj;\n}\nexport async function accumulateMetadata(route, metadataItems, pathname, metadataContext) {\n let resolvedMetadata = createDefaultMetadata();\n let titleTemplates = {\n title: null,\n twitter: null,\n openGraph: null\n };\n const buildState = {\n warnings: new Set()\n };\n let favicon;\n // Collect the static icons in the most leaf node,\n // since we don't collect all the static metadata icons in the parent segments.\n const leafSegmentStaticIcons = {\n icon: [],\n apple: []\n };\n const resolversAndResults = prerenderMetadata(metadataItems);\n let resultIndex = 0;\n for(let i = 0; i < metadataItems.length; i++){\n var _staticFilesMetadata_icon;\n const staticFilesMetadata = metadataItems[i][1];\n // Treat favicon as special case, it should be the first icon in the list\n // i <= 1 represents root layout, and if current page is also at root\n if (i <= 1 && isFavicon(staticFilesMetadata == null ? void 0 : (_staticFilesMetadata_icon = staticFilesMetadata.icon) == null ? void 0 : _staticFilesMetadata_icon[0])) {\n var _staticFilesMetadata_icon1;\n const iconMod = staticFilesMetadata == null ? void 0 : (_staticFilesMetadata_icon1 = staticFilesMetadata.icon) == null ? void 0 : _staticFilesMetadata_icon1.shift();\n if (i === 0) favicon = iconMod;\n }\n let pendingMetadata = resolversAndResults[resultIndex++];\n if (typeof pendingMetadata === 'function') {\n // This metadata item had a `generateMetadata` and\n // we need to provide the currently resolved metadata\n // to it before we continue;\n const resolveParentMetadata = pendingMetadata;\n // we know that the next item is a result if this item\n // was a resolver\n pendingMetadata = resolversAndResults[resultIndex++];\n resolveParentMetadata(freezeInDev(resolvedMetadata));\n }\n // Otherwise the item was either null or a static export\n let metadata;\n if (isPromiseLike(pendingMetadata)) {\n metadata = await pendingMetadata;\n } else {\n metadata = pendingMetadata;\n }\n resolvedMetadata = await mergeMetadata(route, pathname, {\n resolvedMetadata,\n metadata,\n metadataContext,\n staticFilesMetadata,\n titleTemplates,\n buildState,\n leafSegmentStaticIcons\n });\n // If the layout is the same layer with page, skip the leaf layout and leaf page\n // The leaf layout and page are the last two items\n if (i < metadataItems.length - 2) {\n var _resolvedMetadata_title, _resolvedMetadata_openGraph, _resolvedMetadata_twitter;\n titleTemplates = {\n title: ((_resolvedMetadata_title = resolvedMetadata.title) == null ? void 0 : _resolvedMetadata_title.template) || null,\n openGraph: ((_resolvedMetadata_openGraph = resolvedMetadata.openGraph) == null ? void 0 : _resolvedMetadata_openGraph.title.template) || null,\n twitter: ((_resolvedMetadata_twitter = resolvedMetadata.twitter) == null ? void 0 : _resolvedMetadata_twitter.title.template) || null\n };\n }\n }\n if (leafSegmentStaticIcons.icon.length > 0 || leafSegmentStaticIcons.apple.length > 0) {\n if (!resolvedMetadata.icons) {\n resolvedMetadata.icons = {\n icon: [],\n apple: []\n };\n if (leafSegmentStaticIcons.icon.length > 0) {\n resolvedMetadata.icons.icon.unshift(...leafSegmentStaticIcons.icon);\n }\n if (leafSegmentStaticIcons.apple.length > 0) {\n resolvedMetadata.icons.apple.unshift(...leafSegmentStaticIcons.apple);\n }\n }\n }\n // Only log warnings if there are any, and only once after the metadata resolving process is finished\n if (buildState.warnings.size > 0) {\n for (const warning of buildState.warnings){\n Log.warn(warning);\n }\n }\n return postProcessMetadata(resolvedMetadata, favicon, titleTemplates, metadataContext);\n}\nexport async function accumulateViewport(viewportItems) {\n let resolvedViewport = createDefaultViewport();\n const resolversAndResults = prerenderViewport(viewportItems);\n let i = 0;\n while(i < resolversAndResults.length){\n let pendingViewport = resolversAndResults[i++];\n if (typeof pendingViewport === 'function') {\n // this viewport item had a `generateViewport` and\n // we need to provide the currently resolved viewport\n // to it before we continue;\n const resolveParentViewport = pendingViewport;\n // we know that the next item is a result if this item\n // was a resolver\n pendingViewport = resolversAndResults[i++];\n resolveParentViewport(freezeInDev(resolvedViewport));\n }\n // Otherwise the item was either null or a static export\n let viewport;\n if (isPromiseLike(pendingViewport)) {\n viewport = await pendingViewport;\n } else {\n viewport = pendingViewport;\n }\n resolvedViewport = mergeViewport({\n resolvedViewport,\n viewport\n });\n }\n return resolvedViewport;\n}\n// Exposed API for metadata component, that directly resolve the loader tree and related context as resolved metadata.\nexport async function resolveMetadata(tree, pathname, searchParams, errorConvention, getDynamicParamFromSegment, workStore, metadataContext) {\n const metadataItems = await resolveMetadataItems(tree, searchParams, errorConvention, getDynamicParamFromSegment, workStore);\n return accumulateMetadata(workStore.route, metadataItems, pathname, metadataContext);\n}\n// Exposed API for viewport component, that directly resolve the loader tree and related context as resolved viewport.\nexport async function resolveViewport(tree, searchParams, errorConvention, getDynamicParamFromSegment, workStore) {\n const viewportItems = await resolveViewportItems(tree, searchParams, errorConvention, getDynamicParamFromSegment, workStore);\n return accumulateViewport(viewportItems);\n}\nfunction isPromiseLike(value) {\n return typeof value === 'object' && value !== null && typeof value.then === 'function';\n}\n\n//# sourceMappingURL=resolve-metadata.js.map","import path from '../../../shared/lib/isomorphic/path';\nfunction isStringOrURL(icon) {\n return typeof icon === 'string' || icon instanceof URL;\n}\nfunction createLocalMetadataBase() {\n // Check if experimental HTTPS is enabled\n const isExperimentalHttps = Boolean(process.env.__NEXT_EXPERIMENTAL_HTTPS);\n const protocol = isExperimentalHttps ? 'https' : 'http';\n return new URL(`${protocol}://localhost:${process.env.PORT || 3000}`);\n}\nfunction getPreviewDeploymentUrl() {\n const origin = process.env.VERCEL_BRANCH_URL || process.env.VERCEL_URL;\n return origin ? new URL(`https://${origin}`) : undefined;\n}\nfunction getProductionDeploymentUrl() {\n const origin = process.env.VERCEL_PROJECT_PRODUCTION_URL;\n return origin ? new URL(`https://${origin}`) : undefined;\n}\n/**\n * Given an optional user-provided metadataBase, this determines what the metadataBase should\n * fallback to. Specifically:\n * - In dev, it should always be localhost\n * - In Vercel preview builds, it should be the preview build ID\n * - In start, it should be the user-provided metadataBase value. Otherwise,\n * it'll fall back to the Vercel production deployment, and localhost as a last resort.\n */ export function getSocialImageMetadataBaseFallback(metadataBase) {\n const defaultMetadataBase = createLocalMetadataBase();\n const previewDeploymentUrl = getPreviewDeploymentUrl();\n const productionDeploymentUrl = getProductionDeploymentUrl();\n let fallbackMetadataBase;\n if (process.env.NODE_ENV === 'development') {\n fallbackMetadataBase = defaultMetadataBase;\n } else {\n fallbackMetadataBase = process.env.NODE_ENV === 'production' && previewDeploymentUrl && process.env.VERCEL_ENV === 'preview' ? previewDeploymentUrl : metadataBase || productionDeploymentUrl || defaultMetadataBase;\n }\n return fallbackMetadataBase;\n}\nfunction resolveUrl(url, metadataBase) {\n if (url instanceof URL) return url;\n if (!url) return null;\n try {\n // If we can construct a URL instance from url, ignore metadataBase\n const parsedUrl = new URL(url);\n return parsedUrl;\n } catch {}\n if (!metadataBase) {\n metadataBase = createLocalMetadataBase();\n }\n // Handle relative or absolute paths\n const pathname = metadataBase.pathname || '';\n const joinedPath = path.posix.join(pathname, url);\n return new URL(joinedPath, metadataBase);\n}\n// Resolve with `pathname` if `url` is a relative path.\nfunction resolveRelativeUrl(url, pathname) {\n if (typeof url === 'string' && url.startsWith('./')) {\n return path.posix.resolve(pathname, url);\n }\n return url;\n}\n// The regex is matching logic from packages/next/src/lib/load-custom-routes.ts\nconst FILE_REGEX = /^(?:\\/((?!\\.well-known(?:\\/.*)?)(?:[^/]+\\/)*[^/]+\\.\\w+))(\\/?|$)/i;\nfunction isFilePattern(pathname) {\n return FILE_REGEX.test(pathname);\n}\n// Resolve `pathname` if `url` is a relative path the compose with `metadataBase`.\nfunction resolveAbsoluteUrlWithPathname(url, metadataBase, pathname, { trailingSlash }) {\n // Resolve url with pathname that always starts with `/`\n url = resolveRelativeUrl(url, pathname);\n // Convert string url or URL instance to absolute url string,\n // if there's case needs to be resolved with metadataBase\n let resolvedUrl = '';\n const result = metadataBase ? resolveUrl(url, metadataBase) : url;\n if (typeof result === 'string') {\n resolvedUrl = result;\n } else {\n resolvedUrl = result.pathname === '/' && result.searchParams.size === 0 ? result.origin : result.href;\n }\n // Add trailing slash if it's enabled for urls matches the condition\n // - Not external, same origin with metadataBase\n // - Doesn't have query\n if (trailingSlash && !resolvedUrl.endsWith('/')) {\n let isRelative = resolvedUrl.startsWith('/');\n let hasQuery = resolvedUrl.includes('?');\n let isExternal = false;\n let isFileUrl = false;\n if (!isRelative) {\n try {\n const parsedUrl = new URL(resolvedUrl);\n isExternal = metadataBase != null && parsedUrl.origin !== metadataBase.origin;\n isFileUrl = isFilePattern(parsedUrl.pathname);\n } catch {\n // If it's not a valid URL, treat it as external\n isExternal = true;\n }\n if (// Do not apply trailing slash for file like urls, aligning with the behavior with `trailingSlash`\n !isFileUrl && !isExternal && !hasQuery) return `${resolvedUrl}/`;\n }\n }\n return resolvedUrl;\n}\nexport { isStringOrURL, resolveUrl, resolveRelativeUrl, resolveAbsoluteUrlWithPathname, };\n\n//# sourceMappingURL=resolve-url.js.map","function resolveTitleTemplate(template, title) {\n return template ? template.replace(/%s/g, title) : title;\n}\nexport function resolveTitle(title, stashedTemplate) {\n let resolved;\n const template = typeof title !== 'string' && title && 'template' in title ? title.template : null;\n if (typeof title === 'string') {\n resolved = resolveTitleTemplate(stashedTemplate, title);\n } else if (title) {\n if ('default' in title) {\n resolved = resolveTitleTemplate(stashedTemplate, title.default);\n }\n if ('absolute' in title && title.absolute) {\n resolved = title.absolute;\n }\n }\n if (title && typeof title !== 'string') {\n return {\n template,\n absolute: resolved || ''\n };\n } else {\n return {\n absolute: resolved || title || '',\n template\n };\n }\n}\n\n//# sourceMappingURL=resolve-title.js.map","import { NEXT_RSC_UNION_QUERY } from '../client/components/app-router-headers';\nconst DUMMY_ORIGIN = 'http://n';\nexport function isFullStringUrl(url) {\n return /https?:\\/\\//.test(url);\n}\nexport function parseUrl(url) {\n let parsed = undefined;\n try {\n parsed = new URL(url, DUMMY_ORIGIN);\n } catch {}\n return parsed;\n}\nexport function parseReqUrl(url) {\n const parsedUrl = parseUrl(url);\n if (!parsedUrl) {\n return;\n }\n const query = {};\n for (const key of parsedUrl.searchParams.keys()){\n const values = parsedUrl.searchParams.getAll(key);\n query[key] = values.length > 1 ? values : values[0];\n }\n const legacyUrl = {\n query,\n hash: parsedUrl.hash,\n search: parsedUrl.search,\n path: parsedUrl.pathname,\n pathname: parsedUrl.pathname,\n href: `${parsedUrl.pathname}${parsedUrl.search}${parsedUrl.hash}`,\n host: '',\n hostname: '',\n auth: '',\n protocol: '',\n slashes: null,\n port: ''\n };\n return legacyUrl;\n}\nexport function stripNextRscUnionQuery(relativeUrl) {\n const urlInstance = new URL(relativeUrl, DUMMY_ORIGIN);\n urlInstance.searchParams.delete(NEXT_RSC_UNION_QUERY);\n return urlInstance.pathname + urlInstance.search;\n}\n\n//# sourceMappingURL=url.js.map","// ISC License\n// Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n//\n// https://github.com/alexeyraspopov/picocolors/blob/b6261487e7b81aaab2440e397a356732cad9e342/picocolors.js#L1\nvar _globalThis;\nconst { env, stdout } = ((_globalThis = globalThis) == null ? void 0 : _globalThis.process) ?? {};\nconst enabled = env && !env.NO_COLOR && (env.FORCE_COLOR || (stdout == null ? void 0 : stdout.isTTY) && !env.CI && env.TERM !== 'dumb');\nconst replaceClose = (str, close, replace, index)=>{\n const start = str.substring(0, index) + replace;\n const end = str.substring(index + close.length);\n const nextIndex = end.indexOf(close);\n return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end;\n};\nconst formatter = (open, close, replace = open)=>{\n if (!enabled) return String;\n return (input)=>{\n const string = '' + input;\n const index = string.indexOf(close, open.length);\n return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;\n };\n};\nexport const reset = enabled ? (s)=>`\\x1b[0m${s}\\x1b[0m` : String;\nexport const bold = formatter('\\x1b[1m', '\\x1b[22m', '\\x1b[22m\\x1b[1m');\nexport const dim = formatter('\\x1b[2m', '\\x1b[22m', '\\x1b[22m\\x1b[2m');\nexport const italic = formatter('\\x1b[3m', '\\x1b[23m');\nexport const underline = formatter('\\x1b[4m', '\\x1b[24m');\nexport const inverse = formatter('\\x1b[7m', '\\x1b[27m');\nexport const hidden = formatter('\\x1b[8m', '\\x1b[28m');\nexport const strikethrough = formatter('\\x1b[9m', '\\x1b[29m');\nexport const black = formatter('\\x1b[30m', '\\x1b[39m');\nexport const red = formatter('\\x1b[31m', '\\x1b[39m');\nexport const green = formatter('\\x1b[32m', '\\x1b[39m');\nexport const yellow = formatter('\\x1b[33m', '\\x1b[39m');\nexport const blue = formatter('\\x1b[34m', '\\x1b[39m');\nexport const magenta = formatter('\\x1b[35m', '\\x1b[39m');\nexport const purple = formatter('\\x1b[38;2;173;127;168m', '\\x1b[39m');\nexport const cyan = formatter('\\x1b[36m', '\\x1b[39m');\nexport const white = formatter('\\x1b[37m', '\\x1b[39m');\nexport const gray = formatter('\\x1b[90m', '\\x1b[39m');\nexport const bgBlack = formatter('\\x1b[40m', '\\x1b[49m');\nexport const bgRed = formatter('\\x1b[41m', '\\x1b[49m');\nexport const bgGreen = formatter('\\x1b[42m', '\\x1b[49m');\nexport const bgYellow = formatter('\\x1b[43m', '\\x1b[49m');\nexport const bgBlue = formatter('\\x1b[44m', '\\x1b[49m');\nexport const bgMagenta = formatter('\\x1b[45m', '\\x1b[49m');\nexport const bgCyan = formatter('\\x1b[46m', '\\x1b[49m');\nexport const bgWhite = formatter('\\x1b[47m', '\\x1b[49m');\n\n//# sourceMappingURL=picocolors.js.map","/**\n * Node in the doubly-linked list used for LRU tracking.\n * Each node represents a cache entry with bidirectional pointers.\n */ class LRUNode {\n constructor(key, data, size){\n this.prev = null;\n this.next = null;\n this.key = key;\n this.data = data;\n this.size = size;\n }\n}\n/**\n * Sentinel node used for head/tail boundaries.\n * These nodes don't contain actual cache data but simplify list operations.\n */ class SentinelNode {\n constructor(){\n this.prev = null;\n this.next = null;\n }\n}\n/**\n * LRU (Least Recently Used) Cache implementation using a doubly-linked list\n * and hash map for O(1) operations.\n *\n * Algorithm:\n * - Uses a doubly-linked list to maintain access order (most recent at head)\n * - Hash map provides O(1) key-to-node lookup\n * - Sentinel head/tail nodes simplify edge case handling\n * - Size-based eviction supports custom size calculation functions\n *\n * Data Structure Layout:\n * HEAD <-> [most recent] <-> ... <-> [least recent] <-> TAIL\n *\n * Operations:\n * - get(): Move accessed node to head (mark as most recent)\n * - set(): Add new node at head, evict from tail if over capacity\n * - Eviction: Remove least recent node (tail.prev) when size exceeds limit\n */ export class LRUCache {\n constructor(maxSize, calculateSize){\n this.cache = new Map();\n this.totalSize = 0;\n this.maxSize = maxSize;\n this.calculateSize = calculateSize;\n // Create sentinel nodes to simplify doubly-linked list operations\n // HEAD <-> TAIL (empty list)\n this.head = new SentinelNode();\n this.tail = new SentinelNode();\n this.head.next = this.tail;\n this.tail.prev = this.head;\n }\n /**\n * Adds a node immediately after the head (marks as most recently used).\n * Used when inserting new items or when an item is accessed.\n * PRECONDITION: node must be disconnected (prev/next should be null)\n */ addToHead(node) {\n node.prev = this.head;\n node.next = this.head.next;\n // head.next is always non-null (points to tail or another node)\n this.head.next.prev = node;\n this.head.next = node;\n }\n /**\n * Removes a node from its current position in the doubly-linked list.\n * Updates the prev/next pointers of adjacent nodes to maintain list integrity.\n * PRECONDITION: node must be connected (prev/next are non-null)\n */ removeNode(node) {\n // Connected nodes always have non-null prev/next\n node.prev.next = node.next;\n node.next.prev = node.prev;\n }\n /**\n * Moves an existing node to the head position (marks as most recently used).\n * This is the core LRU operation - accessed items become most recent.\n */ moveToHead(node) {\n this.removeNode(node);\n this.addToHead(node);\n }\n /**\n * Removes and returns the least recently used node (the one before tail).\n * This is called during eviction when the cache exceeds capacity.\n * PRECONDITION: cache is not empty (ensured by caller)\n */ removeTail() {\n const lastNode = this.tail.prev;\n // tail.prev is always non-null and always LRUNode when cache is not empty\n this.removeNode(lastNode);\n return lastNode;\n }\n /**\n * Sets a key-value pair in the cache.\n * If the key exists, updates the value and moves to head.\n * If new, adds at head and evicts from tail if necessary.\n *\n * Time Complexity:\n * - O(1) for uniform item sizes\n * - O(k) where k is the number of items evicted (can be O(N) for variable sizes)\n */ set(key, value) {\n const size = (this.calculateSize == null ? void 0 : this.calculateSize.call(this, value)) ?? 1;\n if (size > this.maxSize) {\n console.warn('Single item size exceeds maxSize');\n return;\n }\n const existing = this.cache.get(key);\n if (existing) {\n // Update existing node: adjust size and move to head (most recent)\n existing.data = value;\n this.totalSize = this.totalSize - existing.size + size;\n existing.size = size;\n this.moveToHead(existing);\n } else {\n // Add new node at head (most recent position)\n const newNode = new LRUNode(key, value, size);\n this.cache.set(key, newNode);\n this.addToHead(newNode);\n this.totalSize += size;\n }\n // Evict least recently used items until under capacity\n while(this.totalSize > this.maxSize && this.cache.size > 0){\n const tail = this.removeTail();\n this.cache.delete(tail.key);\n this.totalSize -= tail.size;\n }\n }\n /**\n * Checks if a key exists in the cache.\n * This is a pure query operation - does NOT update LRU order.\n *\n * Time Complexity: O(1)\n */ has(key) {\n return this.cache.has(key);\n }\n /**\n * Retrieves a value by key and marks it as most recently used.\n * Moving to head maintains the LRU property for future evictions.\n *\n * Time Complexity: O(1)\n */ get(key) {\n const node = this.cache.get(key);\n if (!node) return undefined;\n // Mark as most recently used by moving to head\n this.moveToHead(node);\n return node.data;\n }\n /**\n * Returns an iterator over the cache entries. The order is outputted in the\n * order of most recently used to least recently used.\n */ *[Symbol.iterator]() {\n let current = this.head.next;\n while(current && current !== this.tail){\n // Between head and tail, current is always LRUNode\n const node = current;\n yield [\n node.key,\n node.data\n ];\n current = current.next;\n }\n }\n /**\n * Removes a specific key from the cache.\n * Updates both the hash map and doubly-linked list.\n *\n * Time Complexity: O(1)\n */ remove(key) {\n const node = this.cache.get(key);\n if (!node) return;\n this.removeNode(node);\n this.cache.delete(key);\n this.totalSize -= node.size;\n }\n /**\n * Returns the number of items in the cache.\n */ get size() {\n return this.cache.size;\n }\n /**\n * Returns the current total size of all cached items.\n * This uses the custom size calculation if provided.\n */ get currentSize() {\n return this.totalSize;\n }\n}\n\n//# sourceMappingURL=lru-cache.js.map","import { DEFAULT_SEGMENT_KEY } from '../../shared/lib/segment';\nexport async function getLayoutOrPageModule(loaderTree) {\n const { layout, page, defaultPage } = loaderTree[2];\n const isLayout = typeof layout !== 'undefined';\n const isPage = typeof page !== 'undefined';\n const isDefaultPage = typeof defaultPage !== 'undefined' && loaderTree[0] === DEFAULT_SEGMENT_KEY;\n let mod = undefined;\n let modType = undefined;\n let filePath = undefined;\n if (isLayout) {\n mod = await layout[0]();\n modType = 'layout';\n filePath = layout[1];\n } else if (isPage) {\n mod = await page[0]();\n modType = 'page';\n filePath = page[1];\n } else if (isDefaultPage) {\n mod = await defaultPage[0]();\n modType = 'page';\n filePath = defaultPage[1];\n }\n return {\n mod,\n modType,\n filePath\n };\n}\nexport async function getComponentTypeModule(loaderTree, moduleType) {\n const { [moduleType]: module } = loaderTree[2];\n if (typeof module !== 'undefined') {\n return await module[0]();\n }\n return undefined;\n}\n\n//# sourceMappingURL=app-dir-module.js.map","import { ReflectAdapter } from '../web/spec-extension/adapters/reflect';\nimport { throwToInterruptStaticGeneration, postponeWithTracking, annotateDynamicAccess, delayUntilRuntimeStage } from '../app-render/dynamic-rendering';\nimport { workUnitAsyncStorage, throwInvariantForMissingStore } from '../app-render/work-unit-async-storage.external';\nimport { InvariantError } from '../../shared/lib/invariant-error';\nimport { makeDevtoolsIOAwarePromise, makeHangingPromise } from '../dynamic-rendering-utils';\nimport { createDedupedByCallsiteServerErrorLoggerDev } from '../create-deduped-by-callsite-server-error-logger';\nimport { describeStringPropertyAccess, describeHasCheckingStringProperty, wellKnownProperties } from '../../shared/lib/utils/reflect-utils';\nimport { throwWithStaticGenerationBailoutErrorWithDynamicError, throwForSearchParamsAccessInUseCache } from './utils';\nimport { RenderStage } from '../app-render/staged-rendering';\nexport function createSearchParamsFromClient(underlyingSearchParams, workStore) {\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderSearchParams(workStore, workUnitStore);\n case 'prerender-runtime':\n throw Object.defineProperty(new InvariantError('createSearchParamsFromClient should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E769\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new InvariantError('createSearchParamsFromClient should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E739\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n return createRenderSearchParams(underlyingSearchParams, workStore, workUnitStore);\n default:\n workUnitStore;\n }\n }\n throwInvariantForMissingStore();\n}\n// generateMetadata always runs in RSC context so it is equivalent to a Server Page Component\nexport const createServerSearchParamsForMetadata = createServerSearchParamsForServerPage;\nexport function createServerSearchParamsForServerPage(underlyingSearchParams, workStore) {\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderSearchParams(workStore, workUnitStore);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new InvariantError('createServerSearchParamsForServerPage should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E747\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderSearchParams(underlyingSearchParams, workUnitStore);\n case 'request':\n return createRenderSearchParams(underlyingSearchParams, workStore, workUnitStore);\n default:\n workUnitStore;\n }\n }\n throwInvariantForMissingStore();\n}\nexport function createPrerenderSearchParamsForClientPage(workStore) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n }\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n // We're prerendering in a mode that aborts (cacheComponents) and should stall\n // the promise to ensure the RSC side is considered dynamic\n return makeHangingPromise(workUnitStore.renderSignal, workStore.route, '`searchParams`');\n case 'prerender-runtime':\n throw Object.defineProperty(new InvariantError('createPrerenderSearchParamsForClientPage should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E768\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new InvariantError('createPrerenderSearchParamsForClientPage should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E746\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n return Promise.resolve({});\n default:\n workUnitStore;\n }\n }\n throwInvariantForMissingStore();\n}\nfunction createStaticPrerenderSearchParams(workStore, prerenderStore) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n }\n switch(prerenderStore.type){\n case 'prerender':\n case 'prerender-client':\n // We are in a cacheComponents (PPR or otherwise) prerender\n return makeHangingSearchParams(workStore, prerenderStore);\n case 'prerender-ppr':\n case 'prerender-legacy':\n // We are in a legacy static generation and need to interrupt the\n // prerender when search params are accessed.\n return makeErroringSearchParams(workStore, prerenderStore);\n default:\n return prerenderStore;\n }\n}\nfunction createRuntimePrerenderSearchParams(underlyingSearchParams, workUnitStore) {\n return delayUntilRuntimeStage(workUnitStore, makeUntrackedSearchParams(underlyingSearchParams));\n}\nfunction createRenderSearchParams(underlyingSearchParams, workStore, requestStore) {\n if (workStore.forceStatic) {\n // When using forceStatic we override all other logic and always just return an empty\n // dictionary object.\n return Promise.resolve({});\n } else {\n if (process.env.NODE_ENV === 'development') {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n return makeUntrackedSearchParamsWithDevWarnings(underlyingSearchParams, workStore, requestStore);\n } else {\n return makeUntrackedSearchParams(underlyingSearchParams);\n }\n }\n}\nconst CachedSearchParams = new WeakMap();\nconst CachedSearchParamsForUseCache = new WeakMap();\nfunction makeHangingSearchParams(workStore, prerenderStore) {\n const cachedSearchParams = CachedSearchParams.get(prerenderStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = makeHangingPromise(prerenderStore.renderSignal, workStore.route, '`searchParams`');\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it.\n // We know it isn't a dynamic access because it can only be something\n // that was previously written to the promise and thus not an underlying searchParam value\n return ReflectAdapter.get(target, prop, receiver);\n }\n switch(prop){\n case 'then':\n {\n const expression = '`await searchParams`, `searchParams.then`, or similar';\n annotateDynamicAccess(expression, prerenderStore);\n return ReflectAdapter.get(target, prop, receiver);\n }\n case 'status':\n {\n const expression = '`use(searchParams)`, `searchParams.status`, or similar';\n annotateDynamicAccess(expression, prerenderStore);\n return ReflectAdapter.get(target, prop, receiver);\n }\n default:\n {\n return ReflectAdapter.get(target, prop, receiver);\n }\n }\n }\n });\n CachedSearchParams.set(prerenderStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeErroringSearchParams(workStore, prerenderStore) {\n const cachedSearchParams = CachedSearchParams.get(workStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const underlyingSearchParams = {};\n // For search params we don't construct a ReactPromise because we want to interrupt\n // rendering on any property access that was not set from outside and so we only want\n // to have properties like value and status if React sets them.\n const promise = Promise.resolve(underlyingSearchParams);\n const proxiedPromise = new Proxy(promise, {\n get (target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it.\n // We know it isn't a dynamic access because it can only be something\n // that was previously written to the promise and thus not an underlying searchParam value\n return ReflectAdapter.get(target, prop, receiver);\n }\n if (typeof prop === 'string' && prop === 'then') {\n const expression = '`await searchParams`, `searchParams.then`, or similar';\n if (workStore.dynamicShouldError) {\n throwWithStaticGenerationBailoutErrorWithDynamicError(workStore.route, expression);\n } else if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n postponeWithTracking(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n throwToInterruptStaticGeneration(expression, workStore, prerenderStore);\n }\n }\n return ReflectAdapter.get(target, prop, receiver);\n }\n });\n CachedSearchParams.set(workStore, proxiedPromise);\n return proxiedPromise;\n}\n/**\n * This is a variation of `makeErroringSearchParams` that always throws an\n * error on access, because accessing searchParams inside of `\"use cache\"` is\n * not allowed.\n */ export function makeErroringSearchParamsForUseCache(workStore) {\n const cachedSearchParams = CachedSearchParamsForUseCache.get(workStore);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = Promise.resolve({});\n const proxiedPromise = new Proxy(promise, {\n get: function get(target, prop, receiver) {\n if (Object.hasOwn(promise, prop)) {\n // The promise has this property directly. we must return it. We know it\n // isn't a dynamic access because it can only be something that was\n // previously written to the promise and thus not an underlying\n // searchParam value\n return ReflectAdapter.get(target, prop, receiver);\n }\n if (typeof prop === 'string' && (prop === 'then' || !wellKnownProperties.has(prop))) {\n throwForSearchParamsAccessInUseCache(workStore, get);\n }\n return ReflectAdapter.get(target, prop, receiver);\n }\n });\n CachedSearchParamsForUseCache.set(workStore, proxiedPromise);\n return proxiedPromise;\n}\nfunction makeUntrackedSearchParams(underlyingSearchParams) {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = Promise.resolve(underlyingSearchParams);\n CachedSearchParams.set(underlyingSearchParams, promise);\n return promise;\n}\nfunction makeUntrackedSearchParamsWithDevWarnings(underlyingSearchParams, workStore, requestStore) {\n if (requestStore.asyncApiPromises) {\n // Do not cache the resulting promise. If we do, we'll only show the first \"awaited at\"\n // across all segments that receive searchParams.\n return makeUntrackedSearchParamsWithDevWarningsImpl(underlyingSearchParams, workStore, requestStore);\n } else {\n const cachedSearchParams = CachedSearchParams.get(underlyingSearchParams);\n if (cachedSearchParams) {\n return cachedSearchParams;\n }\n const promise = makeUntrackedSearchParamsWithDevWarningsImpl(underlyingSearchParams, workStore, requestStore);\n CachedSearchParams.set(requestStore, promise);\n return promise;\n }\n}\nfunction makeUntrackedSearchParamsWithDevWarningsImpl(underlyingSearchParams, workStore, requestStore) {\n const promiseInitialized = {\n current: false\n };\n const proxiedUnderlying = instrumentSearchParamsObjectWithDevWarnings(underlyingSearchParams, workStore, promiseInitialized);\n let promise;\n if (requestStore.asyncApiPromises) {\n // We wrap each instance of searchParams in a `new Promise()`.\n // This is important when all awaits are in third party which would otherwise\n // track all the way to the internal params.\n const sharedSearchParamsParent = requestStore.asyncApiPromises.sharedSearchParamsParent;\n promise = new Promise((resolve, reject)=>{\n sharedSearchParamsParent.then(()=>resolve(proxiedUnderlying), reject);\n });\n // @ts-expect-error\n promise.displayName = 'searchParams';\n } else {\n promise = makeDevtoolsIOAwarePromise(proxiedUnderlying, requestStore, RenderStage.Runtime);\n }\n promise.then(()=>{\n promiseInitialized.current = true;\n }, // If we're in staged rendering, this promise will reject if the render\n // is aborted before it can reach the runtime stage.\n // In that case, we have to prevent an unhandled rejection from the promise\n // created by this `.then()` call.\n // This does not affect the `promiseInitialized` logic above,\n // because `proxiedUnderlying` will not be used to resolve the promise,\n // so there's no risk of any of its properties being accessed and triggering\n // an undesireable warning.\n ignoreReject);\n return instrumentSearchParamsPromiseWithDevWarnings(underlyingSearchParams, promise, workStore);\n}\nfunction ignoreReject() {}\nfunction instrumentSearchParamsObjectWithDevWarnings(underlyingSearchParams, workStore, promiseInitialized) {\n // We have an unfortunate sequence of events that requires this initialization logic. We want to instrument the underlying\n // searchParams object to detect if you are accessing values in dev. This is used for warnings and for things like the static prerender\n // indicator. However when we pass this proxy to our Promise.resolve() below the VM checks if the resolved value is a promise by looking\n // at the `.then` property. To our dynamic tracking logic this is indistinguishable from a `then` searchParam and so we would normally trigger\n // dynamic tracking. However we know that this .then is not real dynamic access, it's just how thenables resolve in sequence. So we introduce\n // this initialization concept so we omit the dynamic check until after we've constructed our resolved promise.\n return new Proxy(underlyingSearchParams, {\n get (target, prop, receiver) {\n if (typeof prop === 'string' && promiseInitialized.current) {\n if (workStore.dynamicShouldError) {\n const expression = describeStringPropertyAccess('searchParams', prop);\n throwWithStaticGenerationBailoutErrorWithDynamicError(workStore.route, expression);\n }\n }\n return ReflectAdapter.get(target, prop, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string') {\n if (workStore.dynamicShouldError) {\n const expression = describeHasCheckingStringProperty('searchParams', prop);\n throwWithStaticGenerationBailoutErrorWithDynamicError(workStore.route, expression);\n }\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n if (workStore.dynamicShouldError) {\n const expression = '`{...searchParams}`, `Object.keys(searchParams)`, or similar';\n throwWithStaticGenerationBailoutErrorWithDynamicError(workStore.route, expression);\n }\n return Reflect.ownKeys(target);\n }\n });\n}\nfunction instrumentSearchParamsPromiseWithDevWarnings(underlyingSearchParams, promise, workStore) {\n // Track which properties we should warn for.\n const proxiedProperties = new Set();\n Object.keys(underlyingSearchParams).forEach((prop)=>{\n if (wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n proxiedProperties.add(prop);\n }\n });\n return new Proxy(promise, {\n get (target, prop, receiver) {\n if (prop === 'then' && workStore.dynamicShouldError) {\n const expression = '`searchParams.then`';\n throwWithStaticGenerationBailoutErrorWithDynamicError(workStore.route, expression);\n }\n if (typeof prop === 'string') {\n if (!wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = describeStringPropertyAccess('searchParams', prop);\n warnForSyncAccess(workStore.route, expression);\n }\n }\n return ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return Reflect.set(target, prop, value, receiver);\n },\n has (target, prop) {\n if (typeof prop === 'string') {\n if (!wellKnownProperties.has(prop) && (proxiedProperties.has(prop) || // We are accessing a property that doesn't exist on the promise nor\n // the underlying searchParams.\n Reflect.has(target, prop) === false)) {\n const expression = describeHasCheckingStringProperty('searchParams', prop);\n warnForSyncAccess(workStore.route, expression);\n }\n }\n return Reflect.has(target, prop);\n },\n ownKeys (target) {\n const expression = '`Object.keys(searchParams)` or similar';\n warnForSyncAccess(workStore.route, expression);\n return Reflect.ownKeys(target);\n }\n });\n}\nconst warnForSyncAccess = createDedupedByCallsiteServerErrorLoggerDev(createSearchAccessError);\nfunction createSearchAccessError(route, expression) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`searchParams\\` is a Promise and must be unwrapped with \\`await\\` or \\`React.use()\\` before accessing its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E848\",\n enumerable: false,\n configurable: true\n });\n}\n\n//# sourceMappingURL=search-params.js.map","const REACT_POSTPONE_TYPE = Symbol.for('react.postpone');\nexport function isPostpone(error) {\n return typeof error === 'object' && error !== null && error.$$typeof === REACT_POSTPONE_TYPE;\n}\n\n//# sourceMappingURL=is-postpone.js.map","/*\n\nFiles in the rsc directory are meant to be packaged as part of the RSC graph using next-app-loader.\n\n*/ import ReactDOM from 'react-dom';\nexport function preloadStyle(href, crossOrigin, nonce) {\n const opts = {\n as: 'style'\n };\n if (typeof crossOrigin === 'string') {\n opts.crossOrigin = crossOrigin;\n }\n if (typeof nonce === 'string') {\n opts.nonce = nonce;\n }\n ReactDOM.preload(href, opts);\n}\nexport function preloadFont(href, type, crossOrigin, nonce) {\n const opts = {\n as: 'font',\n type\n };\n if (typeof crossOrigin === 'string') {\n opts.crossOrigin = crossOrigin;\n }\n if (typeof nonce === 'string') {\n opts.nonce = nonce;\n }\n ReactDOM.preload(href, opts);\n}\nexport function preconnect(href, crossOrigin, nonce) {\n const opts = {};\n if (typeof crossOrigin === 'string') {\n opts.crossOrigin = crossOrigin;\n }\n if (typeof nonce === 'string') {\n opts.nonce = nonce;\n }\n ;\n ReactDOM.preconnect(href, opts);\n}\n\n//# sourceMappingURL=preloads.js.map","import stringHash from 'next/dist/compiled/string-hash';\nimport { formatServerError } from '../../lib/format-server-error';\nimport { SpanStatusCode, getTracer } from '../lib/trace/tracer';\nimport { isAbortError } from '../pipe-readable';\nimport { isBailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr';\nimport { isDynamicServerError } from '../../client/components/hooks-server-context';\nimport { isNextRouterError } from '../../client/components/is-next-router-error';\nimport { isPrerenderInterruptedError } from './dynamic-rendering';\nimport { getProperError } from '../../lib/is-error';\nimport { createDigestWithErrorCode } from '../../lib/error-telemetry-utils';\nimport { isReactLargeShellError } from './react-large-shell-error';\n/**\n * Returns a digest for well-known Next.js errors, otherwise `undefined`. If a\n * digest is returned this also means that the error does not need to be\n * reported.\n */ export function getDigestForWellKnownError(error) {\n // If we're bailing out to CSR, we don't need to log the error.\n if (isBailoutToCSRError(error)) return error.digest;\n // If this is a navigation error, we don't need to log the error.\n if (isNextRouterError(error)) return error.digest;\n // If this error occurs, we know that we should be stopping the static\n // render. This is only thrown in static generation when PPR is not enabled,\n // which causes the whole page to be marked as dynamic. We don't need to\n // tell the user about this error, as it's not actionable.\n if (isDynamicServerError(error)) return error.digest;\n // If this is a prerender interrupted error, we don't need to log the error.\n if (isPrerenderInterruptedError(error)) return error.digest;\n return undefined;\n}\nexport function createReactServerErrorHandler(shouldFormatError, isNextExport, reactServerErrors, onReactServerRenderError, spanToRecordOn) {\n return (thrownValue)=>{\n var _err_message;\n if (typeof thrownValue === 'string') {\n // TODO-APP: look at using webcrypto instead. Requires a promise to be awaited.\n return stringHash(thrownValue).toString();\n }\n // If the response was closed, we don't need to log the error.\n if (isAbortError(thrownValue)) return;\n const digest = getDigestForWellKnownError(thrownValue);\n if (digest) {\n return digest;\n }\n if (isReactLargeShellError(thrownValue)) {\n // TODO: Aggregate\n console.error(thrownValue);\n return undefined;\n }\n let err = getProperError(thrownValue);\n let silenceLog = false;\n // If the error already has a digest, respect the original digest,\n // so it won't get re-generated into another new error.\n if (err.digest) {\n if (process.env.NODE_ENV === 'production' && reactServerErrors.has(err.digest)) {\n // This error is likely an obfuscated error from another react-server\n // environment (e.g. 'use cache'). We recover the original error here\n // for reporting purposes.\n err = reactServerErrors.get(err.digest);\n // We don't log it again though, as it was already logged in the\n // original environment.\n silenceLog = true;\n } else {\n // Either we're in development (where we want to keep the transported\n // error with environmentName), or the error is not in reactServerErrors\n // but has a digest from other means. Keep the error as-is.\n }\n } else {\n err.digest = createDigestWithErrorCode(err, // TODO-APP: look at using webcrypto instead. Requires a promise to be awaited.\n stringHash(err.message + (err.stack || '')).toString());\n }\n // @TODO by putting this here and not at the top it is possible that\n // we don't error the build in places we actually expect to\n if (!reactServerErrors.has(err.digest)) {\n reactServerErrors.set(err.digest, err);\n }\n // Format server errors in development to add more helpful error messages\n if (shouldFormatError) {\n formatServerError(err);\n }\n // Don't log the suppressed error during export\n if (!(isNextExport && (err == null ? void 0 : (_err_message = err.message) == null ? void 0 : _err_message.includes('The specific message is omitted in production builds to avoid leaking sensitive details.')))) {\n // Record exception on the provided span if available, otherwise try active span.\n const span = spanToRecordOn ?? getTracer().getActiveScopeSpan();\n if (span) {\n span.recordException(err);\n span.setAttribute('error.type', err.name);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message\n });\n }\n onReactServerRenderError(err, silenceLog);\n }\n return err.digest;\n };\n}\nexport function createHTMLErrorHandler(shouldFormatError, isNextExport, reactServerErrors, allCapturedErrors, onHTMLRenderSSRError, spanToRecordOn) {\n return (thrownValue, errorInfo)=>{\n var _err_message;\n if (isReactLargeShellError(thrownValue)) {\n // TODO: Aggregate\n console.error(thrownValue);\n return undefined;\n }\n let isSSRError = true;\n allCapturedErrors.push(thrownValue);\n // If the response was closed, we don't need to log the error.\n if (isAbortError(thrownValue)) return;\n const digest = getDigestForWellKnownError(thrownValue);\n if (digest) {\n return digest;\n }\n const err = getProperError(thrownValue);\n // If the error already has a digest, respect the original digest,\n // so it won't get re-generated into another new error.\n if (err.digest) {\n if (reactServerErrors.has(err.digest)) {\n // This error is likely an obfuscated error from react-server.\n // We recover the original error here.\n thrownValue = reactServerErrors.get(err.digest);\n isSSRError = false;\n } else {\n // The error is not from react-server but has a digest\n // from other means so we don't need to produce a new one\n }\n } else {\n err.digest = createDigestWithErrorCode(err, stringHash(err.message + ((errorInfo == null ? void 0 : errorInfo.componentStack) || err.stack || '')).toString());\n }\n // Format server errors in development to add more helpful error messages\n if (shouldFormatError) {\n formatServerError(err);\n }\n // Don't log the suppressed error during export\n if (!(isNextExport && (err == null ? void 0 : (_err_message = err.message) == null ? void 0 : _err_message.includes('The specific message is omitted in production builds to avoid leaking sensitive details.')))) {\n // HTML errors contain RSC errors as well, filter them out before reporting\n if (isSSRError) {\n // Record exception on the provided span if available, otherwise try active span.\n const span = spanToRecordOn ?? getTracer().getActiveScopeSpan();\n if (span) {\n span.recordException(err);\n span.setAttribute('error.type', err.name);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message\n });\n }\n onHTMLRenderSSRError(err, errorInfo);\n }\n }\n return err.digest;\n };\n}\nexport function isUserLandError(err) {\n return !isAbortError(err) && !isBailoutToCSRError(err) && !isNextRouterError(err);\n}\n\n//# sourceMappingURL=create-error-handler.js.map","const invalidServerComponentReactHooks = [\n 'useDeferredValue',\n 'useEffect',\n 'useImperativeHandle',\n 'useInsertionEffect',\n 'useLayoutEffect',\n 'useReducer',\n 'useRef',\n 'useState',\n 'useSyncExternalStore',\n 'useTransition',\n 'experimental_useOptimistic',\n 'useOptimistic'\n];\nfunction setMessage(error, message) {\n error.message = message;\n if (error.stack) {\n const lines = error.stack.split('\\n');\n lines[0] = message;\n error.stack = lines.join('\\n');\n }\n}\n/**\n * Input:\n * Error: Something went wrong\n at funcName (/path/to/file.js:10:5)\n at anotherFunc (/path/to/file.js:15:10)\n \n * Output:\n at funcName (/path/to/file.js:10:5)\n at anotherFunc (/path/to/file.js:15:10) \n */ export function getStackWithoutErrorMessage(error) {\n const stack = error.stack;\n if (!stack) return '';\n return stack.replace(/^[^\\n]*\\n/, '');\n}\nexport function formatServerError(error) {\n if (typeof (error == null ? void 0 : error.message) !== 'string') return;\n if (error.message.includes('Class extends value undefined is not a constructor or null')) {\n const addedMessage = 'This might be caused by a React Class Component being rendered in a Server Component, React Class Components only works in Client Components. Read more: https://nextjs.org/docs/messages/class-component-in-server-component';\n // If this error instance already has the message, don't add it again\n if (error.message.includes(addedMessage)) return;\n setMessage(error, `${error.message}\n\n${addedMessage}`);\n return;\n }\n if (error.message.includes('createContext is not a function')) {\n setMessage(error, 'createContext only works in Client Components. Add the \"use client\" directive at the top of the file to use it. Read more: https://nextjs.org/docs/messages/context-in-server-component');\n return;\n }\n for (const clientHook of invalidServerComponentReactHooks){\n const regex = new RegExp(`\\\\b${clientHook}\\\\b.*is not a function`);\n if (regex.test(error.message)) {\n setMessage(error, `${clientHook} only works in Client Components. Add the \"use client\" directive at the top of the file to use it. Read more: https://nextjs.org/docs/messages/react-client-hook-in-server-component`);\n return;\n }\n }\n}\n\n//# sourceMappingURL=format-server-error.js.map","import { RedirectStatusCode } from './redirect-status-code';\nexport const REDIRECT_ERROR_CODE = 'NEXT_REDIRECT';\nexport var RedirectType = /*#__PURE__*/ function(RedirectType) {\n RedirectType[\"push\"] = \"push\";\n RedirectType[\"replace\"] = \"replace\";\n return RedirectType;\n}({});\n/**\n * Checks an error to determine if it's an error generated by the\n * `redirect(url)` helper.\n *\n * @param error the error that may reference a redirect error\n * @returns true if the error is a redirect error\n */ export function isRedirectError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const digest = error.digest.split(';');\n const [errorCode, type] = digest;\n const destination = digest.slice(2, -2).join(';');\n const status = digest.at(-2);\n const statusCode = Number(status);\n return errorCode === REDIRECT_ERROR_CODE && (type === 'replace' || type === 'push') && typeof destination === 'string' && !isNaN(statusCode) && statusCode in RedirectStatusCode;\n}\n\n//# sourceMappingURL=redirect-error.js.map","const ERROR_CODE_DELIMITER = '@';\n/**\n * Augments the digest field of errors thrown in React Server Components (RSC) with an error code.\n * Since RSC errors can only be serialized through the digest field, this provides a way to include\n * an additional error code that can be extracted client-side via `extractNextErrorCode`.\n *\n * The error code is appended to the digest string with a semicolon separator, allowing it to be\n * parsed out later while preserving the original digest value.\n */ export const createDigestWithErrorCode = (thrownValue, originalDigest)=>{\n if (typeof thrownValue === 'object' && thrownValue !== null && '__NEXT_ERROR_CODE' in thrownValue) {\n return `${originalDigest}${ERROR_CODE_DELIMITER}${thrownValue.__NEXT_ERROR_CODE}`;\n }\n return originalDigest;\n};\nexport const extractNextErrorCode = (error)=>{\n if (typeof error === 'object' && error !== null && '__NEXT_ERROR_CODE' in error && typeof error.__NEXT_ERROR_CODE === 'string') {\n return error.__NEXT_ERROR_CODE;\n }\n if (typeof error === 'object' && error !== null && 'digest' in error && typeof error.digest === 'string') {\n const segments = error.digest.split(ERROR_CODE_DELIMITER);\n const errorCode = segments.find((segment)=>segment.startsWith('E'));\n return errorCode;\n }\n return undefined;\n};\n\n//# sourceMappingURL=error-telemetry-utils.js.map","export function createPromiseWithResolvers() {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve;\n let reject;\n const promise = new Promise((res, rej)=>{\n resolve = res;\n reject = rej;\n });\n return {\n resolve: resolve,\n reject: reject,\n promise\n };\n}\n\n//# sourceMappingURL=promise-with-resolvers.js.map","export function nonNullable(value) {\n return value !== null && value !== undefined;\n}\n\n//# sourceMappingURL=non-nullable.js.map","export const ViewportMetaKeys = {\n width: 'width',\n height: 'height',\n initialScale: 'initial-scale',\n minimumScale: 'minimum-scale',\n maximumScale: 'maximum-scale',\n viewportFit: 'viewport-fit',\n userScalable: 'user-scalable',\n interactiveWidget: 'interactive-widget'\n};\nexport const IconKeys = [\n 'icon',\n 'shortcut',\n 'apple',\n 'other'\n];\n\n//# sourceMappingURL=constants.js.map","export function createDefaultViewport() {\n return {\n // name=viewport\n width: 'device-width',\n initialScale: 1,\n // visual metadata\n themeColor: null,\n colorScheme: null\n };\n}\nexport function createDefaultMetadata() {\n return {\n // Deprecated ones\n viewport: null,\n themeColor: null,\n colorScheme: null,\n metadataBase: null,\n // Other values are all null\n title: null,\n description: null,\n applicationName: null,\n authors: null,\n generator: null,\n keywords: null,\n referrer: null,\n creator: null,\n publisher: null,\n robots: null,\n manifest: null,\n alternates: {\n canonical: null,\n languages: null,\n media: null,\n types: null\n },\n icons: null,\n openGraph: null,\n twitter: null,\n verification: {},\n appleWebApp: null,\n formatDetection: null,\n itunes: null,\n facebook: null,\n pinterest: null,\n abstract: null,\n appLinks: null,\n archives: null,\n assets: null,\n bookmarks: null,\n category: null,\n classification: null,\n pagination: {\n previous: null,\n next: null\n },\n other: {}\n };\n}\n\n//# sourceMappingURL=default-metadata.js.map","export const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__';\nexport const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__';\nexport const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__';\nexport const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__';\n\n//# sourceMappingURL=boundary-constants.js.map","export function interopDefault(mod) {\n return mod.default || mod;\n}\n\n//# sourceMappingURL=interop-default.js.map","export const HTTPAccessErrorStatus = {\n NOT_FOUND: 404,\n FORBIDDEN: 403,\n UNAUTHORIZED: 401\n};\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus));\nexport const HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK';\n/**\n * Checks an error to determine if it's an error generated by\n * the HTTP navigation APIs `notFound()`, `forbidden()` or `unauthorized()`.\n *\n * @param error the error that may reference a HTTP access error\n * @returns true if the error is a HTTP access error\n */ export function isHTTPAccessFallbackError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const [prefix, httpStatus] = error.digest.split(';');\n return prefix === HTTP_ERROR_FALLBACK_ERROR_CODE && ALLOWED_CODES.has(Number(httpStatus));\n}\nexport function getAccessFallbackHTTPStatus(error) {\n const httpStatus = error.digest.split(';')[1];\n return Number(httpStatus);\n}\nexport function getAccessFallbackErrorTypeByStatus(status) {\n switch(status){\n case 401:\n return 'unauthorized';\n case 403:\n return 'forbidden';\n case 404:\n return 'not-found';\n default:\n return;\n }\n}\n\n//# sourceMappingURL=http-access-fallback.js.map","export function isHangingPromiseRejectionError(err) {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false;\n }\n return err.digest === HANGING_PROMISE_REJECTION;\n}\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION';\nclass HangingPromiseRejectionError extends Error {\n constructor(route, expression){\n super(`During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`), this.route = route, this.expression = expression, this.digest = HANGING_PROMISE_REJECTION;\n }\n}\nconst abortListenersBySignal = new WeakMap();\n/**\n * This function constructs a promise that will never resolve. This is primarily\n * useful for cacheComponents where we use promise resolution timing to determine which\n * parts of a render can be included in a prerender.\n *\n * @internal\n */ export function makeHangingPromise(signal, route, expression) {\n if (signal.aborted) {\n return Promise.reject(new HangingPromiseRejectionError(route, expression));\n } else {\n const hangingPromise = new Promise((_, reject)=>{\n const boundRejection = reject.bind(null, new HangingPromiseRejectionError(route, expression));\n let currentListeners = abortListenersBySignal.get(signal);\n if (currentListeners) {\n currentListeners.push(boundRejection);\n } else {\n const listeners = [\n boundRejection\n ];\n abortListenersBySignal.set(signal, listeners);\n signal.addEventListener('abort', ()=>{\n for(let i = 0; i < listeners.length; i++){\n listeners[i]();\n }\n }, {\n once: true\n });\n }\n });\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject);\n return hangingPromise;\n }\n}\nfunction ignoreReject() {}\nexport function makeDevtoolsIOAwarePromise(underlying, requestStore, stage) {\n if (requestStore.stagedRendering) {\n // We resolve each stage in a timeout, so React DevTools will pick this up as IO.\n return requestStore.stagedRendering.delayUntilStage(stage, undefined, underlying);\n }\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise((resolve)=>{\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(()=>{\n resolve(underlying);\n }, 0);\n });\n}\n\n//# sourceMappingURL=dynamic-rendering-utils.js.map","export function getObjectClassLabel(value) {\n return Object.prototype.toString.call(value);\n}\nexport function isPlainObject(value) {\n if (getObjectClassLabel(value) !== '[object Object]') {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n /**\n * this used to be previously:\n *\n * `return prototype === null || prototype === Object.prototype`\n *\n * but Edge Runtime expose Object from vm, being that kind of type-checking wrongly fail.\n *\n * It was changed to the current implementation since it's resilient to serialization.\n */ return prototype === null || prototype.hasOwnProperty('isPrototypeOf');\n}\n\n//# sourceMappingURL=is-plain-object.js.map","import { StaticGenBailoutError } from '../../client/components/static-generation-bailout';\nimport { afterTaskAsyncStorage } from '../app-render/after-task-async-storage.external';\nexport function throwWithStaticGenerationBailoutErrorWithDynamicError(route, expression) {\n throw Object.defineProperty(new StaticGenBailoutError(`Route ${route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), \"__NEXT_ERROR_CODE\", {\n value: \"E543\",\n enumerable: false,\n configurable: true\n });\n}\nexport function throwForSearchParamsAccessInUseCache(workStore, constructorOpt) {\n const error = Object.defineProperty(new Error(`Route ${workStore.route} used \\`searchParams\\` inside \"use cache\". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \\`searchParams\\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`), \"__NEXT_ERROR_CODE\", {\n value: \"E842\",\n enumerable: false,\n configurable: true\n });\n Error.captureStackTrace(error, constructorOpt);\n workStore.invalidDynamicUsageError ??= error;\n throw error;\n}\nexport function isRequestAPICallableInsideAfter() {\n const afterTaskStore = afterTaskAsyncStorage.getStore();\n return (afterTaskStore == null ? void 0 : afterTaskStore.rootTaskSpawnPhase) === 'action';\n}\n\n//# sourceMappingURL=utils.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { IconMark } from './icon-mark';\nimport { MetaFilter } from './meta';\nfunction IconDescriptorLink({ icon }) {\n const { url, rel = 'icon', ...props } = icon;\n return /*#__PURE__*/ _jsx(\"link\", {\n rel: rel,\n href: url.toString(),\n ...props\n });\n}\nfunction IconLink({ rel, icon }) {\n if (typeof icon === 'object' && !(icon instanceof URL)) {\n if (!icon.rel && rel) icon.rel = rel;\n return IconDescriptorLink({\n icon\n });\n } else {\n const href = icon.toString();\n return /*#__PURE__*/ _jsx(\"link\", {\n rel: rel,\n href: href\n });\n }\n}\nexport function IconsMetadata({ icons }) {\n if (!icons) return null;\n const shortcutList = icons.shortcut;\n const iconList = icons.icon;\n const appleList = icons.apple;\n const otherList = icons.other;\n const hasIcon = Boolean((shortcutList == null ? void 0 : shortcutList.length) || (iconList == null ? void 0 : iconList.length) || (appleList == null ? void 0 : appleList.length) || (otherList == null ? void 0 : otherList.length));\n if (!hasIcon) return null;\n return MetaFilter([\n shortcutList ? shortcutList.map((icon)=>IconLink({\n rel: 'shortcut icon',\n icon\n })) : null,\n iconList ? iconList.map((icon)=>IconLink({\n rel: 'icon',\n icon\n })) : null,\n appleList ? appleList.map((icon)=>IconLink({\n rel: 'apple-touch-icon',\n icon\n })) : null,\n otherList ? otherList.map((icon)=>IconDescriptorLink({\n icon\n })) : null,\n hasIcon ? /*#__PURE__*/ _jsx(IconMark, {}) : null\n ]);\n}\n\n//# sourceMappingURL=icons.js.map","/* eslint-disable @next/internal/no-ambiguous-jsx -- Bundled in entry-base so it gets the right JSX runtime. */ import { jsx as _jsx } from \"react/jsx-runtime\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { createFromReadableStream } from 'react-server-dom-webpack/client';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { prerender } from 'react-server-dom-webpack/static';\nimport { streamFromBuffer, streamToBuffer } from '../stream-utils/node-web-streams-helper';\nimport { waitAtLeastOneReactRenderTask } from '../../lib/scheduler';\nimport { createSegmentRequestKeyPart, appendSegmentRequestKeyPart, ROOT_SEGMENT_REQUEST_KEY, HEAD_REQUEST_KEY } from '../../shared/lib/segment-cache/segment-value-encoding';\nimport { getDigestForWellKnownError } from './create-error-handler';\nimport { Phase, printDebugThrownValueForProspectiveRender } from './prospective-render-utils';\nimport { workAsyncStorage } from './work-async-storage.external';\nconst filterStackFrame = process.env.NODE_ENV !== 'production' ? require('../lib/source-maps').filterStackFrameDEV : undefined;\nconst findSourceMapURL = process.env.NODE_ENV !== 'production' ? require('../lib/source-maps').findSourceMapURLDEV : undefined;\nfunction onSegmentPrerenderError(error) {\n const digest = getDigestForWellKnownError(error);\n if (digest) {\n return digest;\n }\n // We don't need to log the errors because we would have already done that\n // when generating the original Flight stream for the whole page.\n if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) {\n const workStore = workAsyncStorage.getStore();\n printDebugThrownValueForProspectiveRender(error, (workStore == null ? void 0 : workStore.route) ?? 'unknown route', Phase.SegmentCollection);\n }\n}\nexport async function collectSegmentData(isCacheComponentsEnabled, fullPageDataBuffer, staleTime, clientModules, serverConsumerManifest) {\n // Traverse the router tree and generate a prefetch response for each segment.\n // A mutable map to collect the results as we traverse the route tree.\n const resultMap = new Map();\n // Before we start, warm up the module cache by decoding the page data once.\n // Then we can assume that any remaining async tasks that occur the next time\n // are due to hanging promises caused by dynamic data access. Note we only\n // have to do this once per page, not per individual segment.\n //\n try {\n await createFromReadableStream(streamFromBuffer(fullPageDataBuffer), {\n findSourceMapURL,\n serverConsumerManifest\n });\n await waitAtLeastOneReactRenderTask();\n } catch {}\n // Create an abort controller that we'll use to stop the stream.\n const abortController = new AbortController();\n const onCompletedProcessingRouteTree = async ()=>{\n // Since all we're doing is decoding and re-encoding a cached prerender, if\n // serializing the stream takes longer than a microtask, it must because of\n // hanging promises caused by dynamic data.\n await waitAtLeastOneReactRenderTask();\n abortController.abort();\n };\n // Generate a stream for the route tree prefetch. While we're walking the\n // tree, we'll also spawn additional tasks to generate the segment prefetches.\n // The promises for these tasks are pushed to a mutable array that we will\n // await once the route tree is fully rendered.\n const segmentTasks = [];\n const { prelude: treeStream } = await prerender(// RootTreePrefetch is not a valid return type for a React component, but\n // we need to use a component so that when we decode the original stream\n // inside of it, the side effects are transferred to the new stream.\n // @ts-expect-error\n /*#__PURE__*/ _jsx(PrefetchTreeData, {\n isClientParamParsingEnabled: isCacheComponentsEnabled,\n fullPageDataBuffer: fullPageDataBuffer,\n serverConsumerManifest: serverConsumerManifest,\n clientModules: clientModules,\n staleTime: staleTime,\n segmentTasks: segmentTasks,\n onCompletedProcessingRouteTree: onCompletedProcessingRouteTree\n }), clientModules, {\n filterStackFrame,\n signal: abortController.signal,\n onError: onSegmentPrerenderError\n });\n // Write the route tree to a special `/_tree` segment.\n const treeBuffer = await streamToBuffer(treeStream);\n resultMap.set('/_tree', treeBuffer);\n // Also output the entire full page data response\n resultMap.set('/_full', fullPageDataBuffer);\n // Now that we've finished rendering the route tree, all the segment tasks\n // should have been spawned. Await them in parallel and write the segment\n // prefetches to the result map.\n for (const [segmentPath, buffer] of (await Promise.all(segmentTasks))){\n resultMap.set(segmentPath, buffer);\n }\n return resultMap;\n}\nasync function PrefetchTreeData({ isClientParamParsingEnabled, fullPageDataBuffer, serverConsumerManifest, clientModules, staleTime, segmentTasks, onCompletedProcessingRouteTree }) {\n // We're currently rendering a Flight response for the route tree prefetch.\n // Inside this component, decode the Flight stream for the whole page. This is\n // a hack to transfer the side effects from the original Flight stream (e.g.\n // Float preloads) onto the Flight stream for the tree prefetch.\n // TODO: React needs a better way to do this. Needed for Server Actions, too.\n const initialRSCPayload = await createFromReadableStream(createUnclosingPrefetchStream(streamFromBuffer(fullPageDataBuffer)), {\n findSourceMapURL,\n serverConsumerManifest\n });\n const buildId = initialRSCPayload.b;\n // FlightDataPath is an unsound type, hence the additional checks.\n const flightDataPaths = initialRSCPayload.f;\n if (flightDataPaths.length !== 1 && flightDataPaths[0].length !== 3) {\n console.error('Internal Next.js error: InitialRSCPayload does not match the expected ' + 'shape for a prerendered page during segment prefetch generation.');\n return null;\n }\n const flightRouterState = flightDataPaths[0][0];\n const seedData = flightDataPaths[0][1];\n const head = flightDataPaths[0][2];\n // Compute the route metadata tree by traversing the FlightRouterState. As we\n // walk the tree, we will also spawn a task to produce a prefetch response for\n // each segment.\n const tree = collectSegmentDataImpl(isClientParamParsingEnabled, flightRouterState, buildId, seedData, clientModules, ROOT_SEGMENT_REQUEST_KEY, segmentTasks);\n // Also spawn a task to produce a prefetch response for the \"head\" segment.\n // The head contains metadata, like the title; it's not really a route\n // segment, but it contains RSC data, so it's treated like a segment by\n // the client cache.\n segmentTasks.push(waitAtLeastOneReactRenderTask().then(()=>renderSegmentPrefetch(buildId, head, null, HEAD_REQUEST_KEY, clientModules)));\n // Notify the abort controller that we're done processing the route tree.\n // Anything async that happens after this point must be due to hanging\n // promises in the original stream.\n onCompletedProcessingRouteTree();\n // Render the route tree to a special `/_tree` segment.\n const treePrefetch = {\n buildId,\n tree,\n staleTime\n };\n return treePrefetch;\n}\nfunction collectSegmentDataImpl(isClientParamParsingEnabled, route, buildId, seedData, clientModules, requestKey, segmentTasks) {\n // Metadata about the segment. Sent as part of the tree prefetch. Null if\n // there are no children.\n let slotMetadata = null;\n const children = route[1];\n const seedDataChildren = seedData !== null ? seedData[1] : null;\n for(const parallelRouteKey in children){\n const childRoute = children[parallelRouteKey];\n const childSegment = childRoute[0];\n const childSeedData = seedDataChildren !== null ? seedDataChildren[parallelRouteKey] : null;\n const childRequestKey = appendSegmentRequestKeyPart(requestKey, parallelRouteKey, createSegmentRequestKeyPart(childSegment));\n const childTree = collectSegmentDataImpl(isClientParamParsingEnabled, childRoute, buildId, childSeedData, clientModules, childRequestKey, segmentTasks);\n if (slotMetadata === null) {\n slotMetadata = {};\n }\n slotMetadata[parallelRouteKey] = childTree;\n }\n const hasRuntimePrefetch = seedData !== null ? seedData[4] : false;\n if (seedData !== null) {\n // Spawn a task to write the segment data to a new Flight stream.\n segmentTasks.push(// Since we're already in the middle of a render, wait until after the\n // current task to escape the current rendering context.\n waitAtLeastOneReactRenderTask().then(()=>renderSegmentPrefetch(buildId, seedData[0], seedData[2], requestKey, clientModules)));\n } else {\n // This segment does not have any seed data. Skip generating a prefetch\n // response for it. We'll still include it in the route tree, though.\n // TODO: We should encode in the route tree whether a segment is missing\n // so we don't attempt to fetch it for no reason. As of now this shouldn't\n // ever happen in practice, though.\n }\n const segment = route[0];\n let name;\n let paramType = null;\n let paramKey = null;\n if (typeof segment === 'string') {\n name = segment;\n paramKey = segment;\n paramType = null;\n } else {\n name = segment[0];\n paramKey = segment[1];\n paramType = segment[2];\n }\n // Metadata about the segment. Sent to the client as part of the\n // tree prefetch.\n return {\n name,\n paramType,\n // This value is ommitted from the prefetch response when cacheComponents\n // is enabled.\n paramKey: isClientParamParsingEnabled ? null : paramKey,\n hasRuntimePrefetch,\n slots: slotMetadata,\n isRootLayout: route[4] === true\n };\n}\nasync function renderSegmentPrefetch(buildId, rsc, loading, requestKey, clientModules) {\n // Render the segment data to a stream.\n // In the future, this is where we can include additional metadata, like the\n // stale time and cache tags.\n const segmentPrefetch = {\n buildId,\n rsc,\n loading,\n isPartial: await isPartialRSCData(rsc, clientModules)\n };\n // Since all we're doing is decoding and re-encoding a cached prerender, if\n // it takes longer than a microtask, it must because of hanging promises\n // caused by dynamic data. Abort the stream at the end of the current task.\n const abortController = new AbortController();\n waitAtLeastOneReactRenderTask().then(()=>abortController.abort());\n const { prelude: segmentStream } = await prerender(segmentPrefetch, clientModules, {\n filterStackFrame,\n signal: abortController.signal,\n onError: onSegmentPrerenderError\n });\n const segmentBuffer = await streamToBuffer(segmentStream);\n if (requestKey === ROOT_SEGMENT_REQUEST_KEY) {\n return [\n '/_index',\n segmentBuffer\n ];\n } else {\n return [\n requestKey,\n segmentBuffer\n ];\n }\n}\nasync function isPartialRSCData(rsc, clientModules) {\n // We can determine if a segment contains only partial data if it takes longer\n // than a task to encode, because dynamic data is encoded as an infinite\n // promise. We must do this in a separate Flight prerender from the one that\n // actually generates the prefetch stream because we need to include\n // `isPartial` in the stream itself.\n let isPartial = false;\n const abortController = new AbortController();\n waitAtLeastOneReactRenderTask().then(()=>{\n // If we haven't yet finished the outer task, then it must be because we\n // accessed dynamic data.\n isPartial = true;\n abortController.abort();\n });\n await prerender(rsc, clientModules, {\n filterStackFrame,\n signal: abortController.signal,\n onError () {}\n });\n return isPartial;\n}\nfunction createUnclosingPrefetchStream(originalFlightStream) {\n // When PPR is enabled, prefetch streams may contain references that never\n // resolve, because that's how we encode dynamic data access. In the decoded\n // object returned by the Flight client, these are reified into hanging\n // promises that suspend during render, which is effectively what we want.\n // The UI resolves when it switches to the dynamic data stream\n // (via useDeferredValue(dynamic, static)).\n //\n // However, the Flight implementation currently errors if the server closes\n // the response before all the references are resolved. As a cheat to work\n // around this, we wrap the original stream in a new stream that never closes,\n // and therefore doesn't error.\n const reader = originalFlightStream.getReader();\n return new ReadableStream({\n async pull (controller) {\n while(true){\n const { done, value } = await reader.read();\n if (!done) {\n // Pass to the target stream and keep consuming the Flight response\n // from the server.\n controller.enqueue(value);\n continue;\n }\n // The server stream has closed. Exit, but intentionally do not close\n // the target stream.\n return;\n }\n }\n });\n}\n\n//# sourceMappingURL=collect-segment-data.js.map","import * as React from 'react';\nconst errorRef = {\n current: null\n};\n// React.cache is currently only available in canary/experimental React channels.\nconst cache = typeof React.cache === 'function' ? React.cache : (fn)=>fn;\n// When Cache Components is enabled, we record these as errors so that they\n// are captured by the dev overlay as it's more critical to fix these\n// when enabled.\nconst logErrorOrWarn = process.env.__NEXT_CACHE_COMPONENTS ? console.error : console.warn;\n// We don't want to dedupe across requests.\n// The developer might've just attempted to fix the warning so we should warn again if it still happens.\nconst flushCurrentErrorIfNew = cache(// eslint-disable-next-line @typescript-eslint/no-unused-vars -- cache key\n(key)=>{\n try {\n logErrorOrWarn(errorRef.current);\n } finally{\n errorRef.current = null;\n }\n});\n/**\n * Creates a function that logs an error message that is deduped by the userland\n * callsite.\n * This requires no indirection between the call of this function and the userland\n * callsite i.e. there's only a single library frame above this.\n * Do not use on the Client where sourcemaps and ignore listing might be enabled.\n * Only use that for warnings need a fix independent of the callstack.\n *\n * @param getMessage\n * @returns\n */ export function createDedupedByCallsiteServerErrorLoggerDev(getMessage) {\n return function logDedupedError(...args) {\n const message = getMessage(...args);\n if (process.env.NODE_ENV !== 'production') {\n var _stack;\n const callStackFrames = (_stack = new Error().stack) == null ? void 0 : _stack.split('\\n');\n if (callStackFrames === undefined || callStackFrames.length < 4) {\n logErrorOrWarn(message);\n } else {\n // Error:\n // logDedupedError\n // asyncApiBeingAccessedSynchronously\n // <userland callsite>\n // TODO: This breaks if sourcemaps with ignore lists are enabled.\n const key = callStackFrames[4];\n errorRef.current = message;\n flushCurrentErrorIfNew(key);\n }\n } else {\n logErrorOrWarn(message);\n }\n };\n}\n\n//# sourceMappingURL=create-deduped-by-callsite-server-error-logger.js.map","import { isPlainObject } from '../shared/lib/is-plain-object';\n/**\n * This is a safe stringify function that handles circular references.\n * We're using a simpler version here to avoid introducing\n * the dependency `safe-stable-stringify` into production bundle.\n *\n * This helper is used both in development and production.\n */ function safeStringifyLite(obj) {\n const seen = new WeakSet();\n return JSON.stringify(obj, (_key, value)=>{\n // If value is an object and already seen, replace with \"[Circular]\"\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return '[Circular]';\n }\n seen.add(value);\n }\n return value;\n });\n}\n/**\n * Checks whether the given value is a NextError.\n * This can be used to print a more detailed error message with properties like `code` & `digest`.\n */ export default function isError(err) {\n return typeof err === 'object' && err !== null && 'name' in err && 'message' in err;\n}\nexport function getProperError(err) {\n if (isError(err)) {\n return err;\n }\n if (process.env.NODE_ENV === 'development') {\n // provide better error for case where `throw undefined`\n // is called in development\n if (typeof err === 'undefined') {\n return Object.defineProperty(new Error('An undefined error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E98\",\n enumerable: false,\n configurable: true\n });\n }\n if (err === null) {\n return Object.defineProperty(new Error('A null error was thrown, ' + 'see here for more info: https://nextjs.org/docs/messages/threw-undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E336\",\n enumerable: false,\n configurable: true\n });\n }\n }\n return Object.defineProperty(new Error(isPlainObject(err) ? safeStringifyLite(err) : err + ''), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n}\n\n//# sourceMappingURL=is-error.js.map","import { extractInfoFromServerReferenceId } from '../shared/lib/server-reference-info';\nexport function isServerReference(value) {\n return value.$$typeof === Symbol.for('react.server.reference');\n}\nexport function isUseCacheFunction(value) {\n if (!isServerReference(value)) {\n return false;\n }\n const { type } = extractInfoFromServerReferenceId(value.$$id);\n return type === 'use-cache';\n}\nexport function getUseCacheFunctionInfo(value) {\n if (!isServerReference(value)) {\n return null;\n }\n const info = extractInfoFromServerReferenceId(value.$$id);\n return info.type === 'use-cache' ? info : null;\n}\nexport function isClientReference(mod) {\n const defaultExport = (mod == null ? void 0 : mod.default) || mod;\n return (defaultExport == null ? void 0 : defaultExport.$$typeof) === Symbol.for('react.client.reference');\n}\n\n//# sourceMappingURL=client-and-server-references.js.map","import { PAGE_SEGMENT_KEY } from '../segment';\nexport const ROOT_SEGMENT_REQUEST_KEY = '';\nexport const HEAD_REQUEST_KEY = '/_head';\nexport function createSegmentRequestKeyPart(segment) {\n if (typeof segment === 'string') {\n if (segment.startsWith(PAGE_SEGMENT_KEY)) {\n // The Flight Router State type sometimes includes the search params in\n // the page segment. However, the Segment Cache tracks this as a separate\n // key. So, we strip the search params here, and then add them back when\n // the cache entry is turned back into a FlightRouterState. This is an\n // unfortunate consequence of the FlightRouteState being used both as a\n // transport type and as a cache key; we'll address this once more of the\n // Segment Cache implementation has settled.\n // TODO: We should hoist the search params out of the FlightRouterState\n // type entirely, This is our plan for dynamic route params, too.\n return PAGE_SEGMENT_KEY;\n }\n const safeName = // TODO: FlightRouterState encodes Not Found routes as \"/_not-found\".\n // But params typically don't include the leading slash. We should use\n // a different encoding to avoid this special case.\n segment === '/_not-found' ? '_not-found' : encodeToFilesystemAndURLSafeString(segment);\n // Since this is not a dynamic segment, it's fully encoded. It does not\n // need to be \"hydrated\" with a param value.\n return safeName;\n }\n const name = segment[0];\n const paramType = segment[2];\n const safeName = encodeToFilesystemAndURLSafeString(name);\n const encodedName = '$' + paramType + '$' + safeName;\n return encodedName;\n}\nexport function appendSegmentRequestKeyPart(parentRequestKey, parallelRouteKey, childRequestKeyPart) {\n // Aside from being filesystem safe, segment keys are also designed so that\n // each segment and parallel route creates its own subdirectory. Roughly in\n // the same shape as the source app directory. This is mostly just for easier\n // debugging (you can open up the build folder and navigate the output); if\n // we wanted to do we could just use a flat structure.\n // Omit the parallel route key for children, since this is the most\n // common case. Saves some bytes (and it's what the app directory does).\n const slotKey = parallelRouteKey === 'children' ? childRequestKeyPart : `@${encodeToFilesystemAndURLSafeString(parallelRouteKey)}/${childRequestKeyPart}`;\n return parentRequestKey + '/' + slotKey;\n}\n// Define a regex pattern to match the most common characters found in a route\n// param. It excludes anything that might not be cross-platform filesystem\n// compatible, like |. It does not need to be precise because the fallback is to\n// just base64url-encode the whole parameter, which is fine; we just don't do it\n// by default for compactness, and for easier debugging.\nconst simpleParamValueRegex = /^[a-zA-Z0-9\\-_@]+$/;\nfunction encodeToFilesystemAndURLSafeString(value) {\n if (simpleParamValueRegex.test(value)) {\n return value;\n }\n // If there are any unsafe characters, base64url-encode the entire value.\n // We also add a ! prefix so it doesn't collide with the simple case.\n const base64url = btoa(value).replace(/\\+/g, '-') // Replace '+' with '-'\n .replace(/\\//g, '_') // Replace '/' with '_'\n .replace(/=+$/, '') // Remove trailing '='\n ;\n return '!' + base64url;\n}\nexport function convertSegmentPathToStaticExportFilename(segmentPath) {\n return `__next${segmentPath.replace(/\\//g, '.')}.txt`;\n}\n\n//# sourceMappingURL=segment-value-encoding.js.map","import { Meta, MetaFilter, MultiMeta } from './meta';\nexport function OpenGraphMetadata({ openGraph }) {\n var _openGraph_title, _openGraph_url, _openGraph_ttl;\n if (!openGraph) {\n return null;\n }\n let typedOpenGraph;\n if ('type' in openGraph) {\n const openGraphType = openGraph.type;\n switch(openGraphType){\n case 'website':\n typedOpenGraph = [\n Meta({\n property: 'og:type',\n content: 'website'\n })\n ];\n break;\n case 'article':\n var _openGraph_publishedTime, _openGraph_modifiedTime, _openGraph_expirationTime;\n typedOpenGraph = [\n Meta({\n property: 'og:type',\n content: 'article'\n }),\n Meta({\n property: 'article:published_time',\n content: (_openGraph_publishedTime = openGraph.publishedTime) == null ? void 0 : _openGraph_publishedTime.toString()\n }),\n Meta({\n property: 'article:modified_time',\n content: (_openGraph_modifiedTime = openGraph.modifiedTime) == null ? void 0 : _openGraph_modifiedTime.toString()\n }),\n Meta({\n property: 'article:expiration_time',\n content: (_openGraph_expirationTime = openGraph.expirationTime) == null ? void 0 : _openGraph_expirationTime.toString()\n }),\n MultiMeta({\n propertyPrefix: 'article:author',\n contents: openGraph.authors\n }),\n Meta({\n property: 'article:section',\n content: openGraph.section\n }),\n MultiMeta({\n propertyPrefix: 'article:tag',\n contents: openGraph.tags\n })\n ];\n break;\n case 'book':\n typedOpenGraph = [\n Meta({\n property: 'og:type',\n content: 'book'\n }),\n Meta({\n property: 'book:isbn',\n content: openGraph.isbn\n }),\n Meta({\n property: 'book:release_date',\n content: openGraph.releaseDate\n }),\n MultiMeta({\n propertyPrefix: 'book:author',\n contents: openGraph.authors\n }),\n MultiMeta({\n propertyPrefix: 'book:tag',\n contents: openGraph.tags\n })\n ];\n break;\n case 'profile':\n typedOpenGraph = [\n Meta({\n property: 'og:type',\n content: 'profile'\n }),\n Meta({\n property: 'profile:first_name',\n content: openGraph.firstName\n }),\n Meta({\n property: 'profile:last_name',\n content: openGraph.lastName\n }),\n Meta({\n property: 'profile:username',\n content: openGraph.username\n }),\n Meta({\n property: 'profile:gender',\n content: openGraph.gender\n })\n ];\n break;\n case 'music.song':\n var _openGraph_duration;\n typedOpenGraph = [\n Meta({\n property: 'og:type',\n content: 'music.song'\n }),\n Meta({\n property: 'music:duration',\n content: (_openGraph_duration = openGraph.duration) == null ? void 0 : _openGraph_duration.toString()\n }),\n MultiMeta({\n propertyPrefix: 'music:album',\n contents: openGraph.albums\n }),\n MultiMeta({\n propertyPrefix: 'music:musician',\n contents: openGraph.musicians\n })\n ];\n break;\n case 'music.album':\n typedOpenGraph = [\n Meta({\n property: 'og:type',\n content: 'music.album'\n }),\n MultiMeta({\n propertyPrefix: 'music:song',\n contents: openGraph.songs\n }),\n MultiMeta({\n propertyPrefix: 'music:musician',\n contents: openGraph.musicians\n }),\n Meta({\n property: 'music:release_date',\n content: openGraph.releaseDate\n })\n ];\n break;\n case 'music.playlist':\n typedOpenGraph = [\n Meta({\n property: 'og:type',\n content: 'music.playlist'\n }),\n MultiMeta({\n propertyPrefix: 'music:song',\n contents: openGraph.songs\n }),\n MultiMeta({\n propertyPrefix: 'music:creator',\n contents: openGraph.creators\n })\n ];\n break;\n case 'music.radio_station':\n typedOpenGraph = [\n Meta({\n property: 'og:type',\n content: 'music.radio_station'\n }),\n MultiMeta({\n propertyPrefix: 'music:creator',\n contents: openGraph.creators\n })\n ];\n break;\n case 'video.movie':\n typedOpenGraph = [\n Meta({\n property: 'og:type',\n content: 'video.movie'\n }),\n MultiMeta({\n propertyPrefix: 'video:actor',\n contents: openGraph.actors\n }),\n MultiMeta({\n propertyPrefix: 'video:director',\n contents: openGraph.directors\n }),\n MultiMeta({\n propertyPrefix: 'video:writer',\n contents: openGraph.writers\n }),\n Meta({\n property: 'video:duration',\n content: openGraph.duration\n }),\n Meta({\n property: 'video:release_date',\n content: openGraph.releaseDate\n }),\n MultiMeta({\n propertyPrefix: 'video:tag',\n contents: openGraph.tags\n })\n ];\n break;\n case 'video.episode':\n typedOpenGraph = [\n Meta({\n property: 'og:type',\n content: 'video.episode'\n }),\n MultiMeta({\n propertyPrefix: 'video:actor',\n contents: openGraph.actors\n }),\n MultiMeta({\n propertyPrefix: 'video:director',\n contents: openGraph.directors\n }),\n MultiMeta({\n propertyPrefix: 'video:writer',\n contents: openGraph.writers\n }),\n Meta({\n property: 'video:duration',\n content: openGraph.duration\n }),\n Meta({\n property: 'video:release_date',\n content: openGraph.releaseDate\n }),\n MultiMeta({\n propertyPrefix: 'video:tag',\n contents: openGraph.tags\n }),\n Meta({\n property: 'video:series',\n content: openGraph.series\n })\n ];\n break;\n case 'video.tv_show':\n typedOpenGraph = [\n Meta({\n property: 'og:type',\n content: 'video.tv_show'\n })\n ];\n break;\n case 'video.other':\n typedOpenGraph = [\n Meta({\n property: 'og:type',\n content: 'video.other'\n })\n ];\n break;\n default:\n const _exhaustiveCheck = openGraphType;\n throw Object.defineProperty(new Error(`Invalid OpenGraph type: ${_exhaustiveCheck}`), \"__NEXT_ERROR_CODE\", {\n value: \"E237\",\n enumerable: false,\n configurable: true\n });\n }\n }\n return MetaFilter([\n Meta({\n property: 'og:determiner',\n content: openGraph.determiner\n }),\n Meta({\n property: 'og:title',\n content: (_openGraph_title = openGraph.title) == null ? void 0 : _openGraph_title.absolute\n }),\n Meta({\n property: 'og:description',\n content: openGraph.description\n }),\n Meta({\n property: 'og:url',\n content: (_openGraph_url = openGraph.url) == null ? void 0 : _openGraph_url.toString()\n }),\n Meta({\n property: 'og:site_name',\n content: openGraph.siteName\n }),\n Meta({\n property: 'og:locale',\n content: openGraph.locale\n }),\n Meta({\n property: 'og:country_name',\n content: openGraph.countryName\n }),\n Meta({\n property: 'og:ttl',\n content: (_openGraph_ttl = openGraph.ttl) == null ? void 0 : _openGraph_ttl.toString()\n }),\n MultiMeta({\n propertyPrefix: 'og:image',\n contents: openGraph.images\n }),\n MultiMeta({\n propertyPrefix: 'og:video',\n contents: openGraph.videos\n }),\n MultiMeta({\n propertyPrefix: 'og:audio',\n contents: openGraph.audio\n }),\n MultiMeta({\n propertyPrefix: 'og:email',\n contents: openGraph.emails\n }),\n MultiMeta({\n propertyPrefix: 'og:phone_number',\n contents: openGraph.phoneNumbers\n }),\n MultiMeta({\n propertyPrefix: 'og:fax_number',\n contents: openGraph.faxNumbers\n }),\n MultiMeta({\n propertyPrefix: 'og:locale:alternate',\n contents: openGraph.alternateLocale\n }),\n ...typedOpenGraph ? typedOpenGraph : []\n ]);\n}\nfunction TwitterAppItem({ app, type }) {\n var _app_url_type, _app_url;\n return [\n Meta({\n name: `twitter:app:name:${type}`,\n content: app.name\n }),\n Meta({\n name: `twitter:app:id:${type}`,\n content: app.id[type]\n }),\n Meta({\n name: `twitter:app:url:${type}`,\n content: (_app_url = app.url) == null ? void 0 : (_app_url_type = _app_url[type]) == null ? void 0 : _app_url_type.toString()\n })\n ];\n}\nexport function TwitterMetadata({ twitter }) {\n var _twitter_title;\n if (!twitter) return null;\n const { card } = twitter;\n return MetaFilter([\n Meta({\n name: 'twitter:card',\n content: card\n }),\n Meta({\n name: 'twitter:site',\n content: twitter.site\n }),\n Meta({\n name: 'twitter:site:id',\n content: twitter.siteId\n }),\n Meta({\n name: 'twitter:creator',\n content: twitter.creator\n }),\n Meta({\n name: 'twitter:creator:id',\n content: twitter.creatorId\n }),\n Meta({\n name: 'twitter:title',\n content: (_twitter_title = twitter.title) == null ? void 0 : _twitter_title.absolute\n }),\n Meta({\n name: 'twitter:description',\n content: twitter.description\n }),\n MultiMeta({\n namePrefix: 'twitter:image',\n contents: twitter.images\n }),\n ...card === 'player' ? twitter.players.flatMap((player)=>[\n Meta({\n name: 'twitter:player',\n content: player.playerUrl.toString()\n }),\n Meta({\n name: 'twitter:player:stream',\n content: player.streamUrl.toString()\n }),\n Meta({\n name: 'twitter:player:width',\n content: player.width\n }),\n Meta({\n name: 'twitter:player:height',\n content: player.height\n })\n ]) : [],\n ...card === 'app' ? [\n TwitterAppItem({\n app: twitter.app,\n type: 'iphone'\n }),\n TwitterAppItem({\n app: twitter.app,\n type: 'ipad'\n }),\n TwitterAppItem({\n app: twitter.app,\n type: 'googleplay'\n })\n ] : []\n ]);\n}\nexport function AppLinksMeta({ appLinks }) {\n if (!appLinks) return null;\n return MetaFilter([\n MultiMeta({\n propertyPrefix: 'al:ios',\n contents: appLinks.ios\n }),\n MultiMeta({\n propertyPrefix: 'al:iphone',\n contents: appLinks.iphone\n }),\n MultiMeta({\n propertyPrefix: 'al:ipad',\n contents: appLinks.ipad\n }),\n MultiMeta({\n propertyPrefix: 'al:android',\n contents: appLinks.android\n }),\n MultiMeta({\n propertyPrefix: 'al:windows_phone',\n contents: appLinks.windows_phone\n }),\n MultiMeta({\n propertyPrefix: 'al:windows',\n contents: appLinks.windows\n }),\n MultiMeta({\n propertyPrefix: 'al:windows_universal',\n contents: appLinks.windows_universal\n }),\n MultiMeta({\n propertyPrefix: 'al:web',\n contents: appLinks.web\n })\n ]);\n}\n\n//# sourceMappingURL=opengraph.js.map","import { AppRenderSpan, NextNodeServerSpan } from './trace/constants';\nimport { getTracer, SpanKind } from './trace/tracer';\nimport { CACHE_ONE_YEAR, INFINITE_CACHE, NEXT_CACHE_TAG_MAX_ITEMS, NEXT_CACHE_TAG_MAX_LENGTH } from '../../lib/constants';\nimport { markCurrentScopeAsDynamic } from '../app-render/dynamic-rendering';\nimport { makeHangingPromise } from '../dynamic-rendering-utils';\nimport { createDedupeFetch } from './dedupe-fetch';\nimport { getCacheSignal } from '../app-render/work-unit-async-storage.external';\nimport { CachedRouteKind, IncrementalCacheKind } from '../response-cache';\nimport { cloneResponse } from './clone-response';\nimport { RenderStage } from '../app-render/staged-rendering';\nconst isEdgeRuntime = process.env.NEXT_RUNTIME === 'edge';\nexport const NEXT_PATCH_SYMBOL = Symbol.for('next-patch');\nfunction isFetchPatched() {\n return globalThis[NEXT_PATCH_SYMBOL] === true;\n}\nexport function validateRevalidate(revalidateVal, route) {\n try {\n let normalizedRevalidate = undefined;\n if (revalidateVal === false) {\n normalizedRevalidate = INFINITE_CACHE;\n } else if (typeof revalidateVal === 'number' && !isNaN(revalidateVal) && revalidateVal > -1) {\n normalizedRevalidate = revalidateVal;\n } else if (typeof revalidateVal !== 'undefined') {\n throw Object.defineProperty(new Error(`Invalid revalidate value \"${revalidateVal}\" on \"${route}\", must be a non-negative number or false`), \"__NEXT_ERROR_CODE\", {\n value: \"E179\",\n enumerable: false,\n configurable: true\n });\n }\n return normalizedRevalidate;\n } catch (err) {\n // handle client component error from attempting to check revalidate value\n if (err instanceof Error && err.message.includes('Invalid revalidate')) {\n throw err;\n }\n return undefined;\n }\n}\nexport function validateTags(tags, description) {\n const validTags = [];\n const invalidTags = [];\n for(let i = 0; i < tags.length; i++){\n const tag = tags[i];\n if (typeof tag !== 'string') {\n invalidTags.push({\n tag,\n reason: 'invalid type, must be a string'\n });\n } else if (tag.length > NEXT_CACHE_TAG_MAX_LENGTH) {\n invalidTags.push({\n tag,\n reason: `exceeded max length of ${NEXT_CACHE_TAG_MAX_LENGTH}`\n });\n } else {\n validTags.push(tag);\n }\n if (validTags.length > NEXT_CACHE_TAG_MAX_ITEMS) {\n console.warn(`Warning: exceeded max tag count for ${description}, dropped tags:`, tags.slice(i).join(', '));\n break;\n }\n }\n if (invalidTags.length > 0) {\n console.warn(`Warning: invalid tags passed to ${description}: `);\n for (const { tag, reason } of invalidTags){\n console.log(`tag: \"${tag}\" ${reason}`);\n }\n }\n return validTags;\n}\nfunction trackFetchMetric(workStore, ctx) {\n if (!workStore.shouldTrackFetchMetrics) {\n return;\n }\n workStore.fetchMetrics ??= [];\n workStore.fetchMetrics.push({\n ...ctx,\n end: performance.timeOrigin + performance.now(),\n idx: workStore.nextFetchId || 0\n });\n}\nasync function createCachedPrerenderResponse(res, cacheKey, incrementalCacheContext, incrementalCache, revalidate, handleUnlock) {\n // We are prerendering at build time or revalidate time with cacheComponents so we\n // need to buffer the response so we can guarantee it can be read in a\n // microtask.\n const bodyBuffer = await res.arrayBuffer();\n const fetchedData = {\n headers: Object.fromEntries(res.headers.entries()),\n body: Buffer.from(bodyBuffer).toString('base64'),\n status: res.status,\n url: res.url\n };\n // We can skip setting the serverComponentsHmrCache because we aren't in dev\n // mode.\n if (incrementalCacheContext) {\n await incrementalCache.set(cacheKey, {\n kind: CachedRouteKind.FETCH,\n data: fetchedData,\n revalidate\n }, incrementalCacheContext);\n }\n await handleUnlock();\n // We return a new Response to the caller.\n return new Response(bodyBuffer, {\n headers: res.headers,\n status: res.status,\n statusText: res.statusText\n });\n}\nasync function createCachedDynamicResponse(workStore, res, cacheKey, incrementalCacheContext, incrementalCache, serverComponentsHmrCache, revalidate, input, handleUnlock) {\n // We're cloning the response using this utility because there exists a bug in\n // the undici library around response cloning. See the following pull request\n // for more details: https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = cloneResponse(res);\n // We are dynamically rendering including dev mode. We want to return the\n // response to the caller as soon as possible because it might stream over a\n // very long time.\n const cacheSetPromise = cloned1.arrayBuffer().then(async (arrayBuffer)=>{\n const bodyBuffer = Buffer.from(arrayBuffer);\n const fetchedData = {\n headers: Object.fromEntries(cloned1.headers.entries()),\n body: bodyBuffer.toString('base64'),\n status: cloned1.status,\n url: cloned1.url\n };\n serverComponentsHmrCache == null ? void 0 : serverComponentsHmrCache.set(cacheKey, fetchedData);\n if (incrementalCacheContext) {\n await incrementalCache.set(cacheKey, {\n kind: CachedRouteKind.FETCH,\n data: fetchedData,\n revalidate\n }, incrementalCacheContext);\n }\n }).catch((error)=>console.warn(`Failed to set fetch cache`, input, error)).finally(handleUnlock);\n const pendingRevalidateKey = `cache-set-${cacheKey}`;\n const pendingRevalidates = workStore.pendingRevalidates ??= {};\n let pendingRevalidatePromise = Promise.resolve();\n if (pendingRevalidateKey in pendingRevalidates) {\n // There is already a pending revalidate entry that we need to await to\n // avoid race conditions.\n pendingRevalidatePromise = pendingRevalidates[pendingRevalidateKey];\n }\n pendingRevalidates[pendingRevalidateKey] = pendingRevalidatePromise.then(()=>cacheSetPromise).finally(()=>{\n // If the pending revalidate is not present in the store, then we have\n // nothing to delete.\n if (!(pendingRevalidates == null ? void 0 : pendingRevalidates[pendingRevalidateKey])) {\n return;\n }\n delete pendingRevalidates[pendingRevalidateKey];\n });\n return cloned2;\n}\nexport function createPatchedFetcher(originFetch, { workAsyncStorage, workUnitAsyncStorage }) {\n // Create the patched fetch function.\n const patched = async function fetch(input, init) {\n var _init_method, _init_next;\n let url;\n try {\n url = new URL(input instanceof Request ? input.url : input);\n url.username = '';\n url.password = '';\n } catch {\n // Error caused by malformed URL should be handled by native fetch\n url = undefined;\n }\n const fetchUrl = (url == null ? void 0 : url.href) ?? '';\n const method = (init == null ? void 0 : (_init_method = init.method) == null ? void 0 : _init_method.toUpperCase()) || 'GET';\n // Do create a new span trace for internal fetches in the\n // non-verbose mode.\n const isInternal = (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next.internal) === true;\n const hideSpan = process.env.NEXT_OTEL_FETCH_DISABLED === '1';\n // We don't track fetch metrics for internal fetches\n // so it's not critical that we have a start time, as it won't be recorded.\n // This is to workaround a flaky issue where performance APIs might\n // not be available and will require follow-up investigation.\n const fetchStart = isInternal ? undefined : performance.timeOrigin + performance.now();\n const workStore = workAsyncStorage.getStore();\n const workUnitStore = workUnitAsyncStorage.getStore();\n let cacheSignal = workUnitStore ? getCacheSignal(workUnitStore) : null;\n if (cacheSignal) {\n cacheSignal.beginRead();\n }\n const result = getTracer().trace(isInternal ? NextNodeServerSpan.internalFetch : AppRenderSpan.fetch, {\n hideSpan,\n kind: SpanKind.CLIENT,\n spanName: [\n 'fetch',\n method,\n fetchUrl\n ].filter(Boolean).join(' '),\n attributes: {\n 'http.url': fetchUrl,\n 'http.method': method,\n 'net.peer.name': url == null ? void 0 : url.hostname,\n 'net.peer.port': (url == null ? void 0 : url.port) || undefined\n }\n }, async ()=>{\n var _getRequestMeta;\n // If this is an internal fetch, we should not do any special treatment.\n if (isInternal) {\n return originFetch(input, init);\n }\n // If the workStore is not available, we can't do any\n // special treatment of fetch, therefore fallback to the original\n // fetch implementation.\n if (!workStore) {\n return originFetch(input, init);\n }\n // We should also fallback to the original fetch implementation if we\n // are in draft mode, it does not constitute a static generation.\n if (workStore.isDraftMode) {\n return originFetch(input, init);\n }\n const isRequestInput = input && typeof input === 'object' && typeof input.method === 'string';\n const getRequestMeta = (field)=>{\n // If request input is present but init is not, retrieve from input first.\n const value = init == null ? void 0 : init[field];\n return value || (isRequestInput ? input[field] : null);\n };\n let finalRevalidate = undefined;\n const getNextField = (field)=>{\n var _init_next, _init_next1, _input_next;\n return typeof (init == null ? void 0 : (_init_next = init.next) == null ? void 0 : _init_next[field]) !== 'undefined' ? init == null ? void 0 : (_init_next1 = init.next) == null ? void 0 : _init_next1[field] : isRequestInput ? (_input_next = input.next) == null ? void 0 : _input_next[field] : undefined;\n };\n // RequestInit doesn't keep extra fields e.g. next so it's\n // only available if init is used separate\n const originalFetchRevalidate = getNextField('revalidate');\n let currentFetchRevalidate = originalFetchRevalidate;\n const tags = validateTags(getNextField('tags') || [], `fetch ${input.toString()}`);\n let revalidateStore;\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n // TODO: Stop accumulating tags in client prerender. (fallthrough)\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n revalidateStore = workUnitStore;\n break;\n case 'request':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n if (revalidateStore) {\n if (Array.isArray(tags)) {\n // Collect tags onto parent caches or parent prerenders.\n const collectedTags = revalidateStore.tags ?? (revalidateStore.tags = []);\n for (const tag of tags){\n if (!collectedTags.includes(tag)) {\n collectedTags.push(tag);\n }\n }\n }\n }\n const implicitTags = workUnitStore == null ? void 0 : workUnitStore.implicitTags;\n let pageFetchCacheMode = workStore.fetchCache;\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'unstable-cache':\n // Inside unstable-cache we treat it the same as force-no-store on\n // the page.\n pageFetchCacheMode = 'force-no-store';\n break;\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n break;\n default:\n workUnitStore;\n }\n }\n const isUsingNoStore = !!workStore.isUnstableNoStore;\n let currentFetchCacheConfig = getRequestMeta('cache');\n let cacheReason = '';\n let cacheWarning;\n if (typeof currentFetchCacheConfig === 'string' && typeof currentFetchRevalidate !== 'undefined') {\n // If the revalidate value conflicts with the cache value, we should warn the user and unset the conflicting values.\n const isConflictingRevalidate = // revalidate: 0 and cache: force-cache\n currentFetchCacheConfig === 'force-cache' && currentFetchRevalidate === 0 || // revalidate: >0 or revalidate: false and cache: no-store\n currentFetchCacheConfig === 'no-store' && (currentFetchRevalidate > 0 || currentFetchRevalidate === false);\n if (isConflictingRevalidate) {\n cacheWarning = `Specified \"cache: ${currentFetchCacheConfig}\" and \"revalidate: ${currentFetchRevalidate}\", only one should be specified.`;\n currentFetchCacheConfig = undefined;\n currentFetchRevalidate = undefined;\n }\n }\n const hasExplicitFetchCacheOptOut = // fetch config itself signals not to cache\n currentFetchCacheConfig === 'no-cache' || currentFetchCacheConfig === 'no-store' || // the fetch isn't explicitly caching and the segment level cache config signals not to cache\n // note: `pageFetchCacheMode` is also set by being in an unstable_cache context.\n pageFetchCacheMode === 'force-no-store' || pageFetchCacheMode === 'only-no-store';\n // If no explicit fetch cache mode is set, but dynamic = `force-dynamic` is set,\n // we shouldn't consider caching the fetch. This is because the `dynamic` cache\n // is considered a \"top-level\" cache mode, whereas something like `fetchCache` is more\n // fine-grained. Top-level modes are responsible for setting reasonable defaults for the\n // other configurations.\n const noFetchConfigAndForceDynamic = !pageFetchCacheMode && !currentFetchCacheConfig && !currentFetchRevalidate && workStore.forceDynamic;\n if (// force-cache was specified without a revalidate value. We set the revalidate value to false\n // which will signal the cache to not revalidate\n currentFetchCacheConfig === 'force-cache' && typeof currentFetchRevalidate === 'undefined') {\n currentFetchRevalidate = false;\n } else if (hasExplicitFetchCacheOptOut || noFetchConfigAndForceDynamic) {\n currentFetchRevalidate = 0;\n }\n if (currentFetchCacheConfig === 'no-cache' || currentFetchCacheConfig === 'no-store') {\n cacheReason = `cache: ${currentFetchCacheConfig}`;\n }\n finalRevalidate = validateRevalidate(currentFetchRevalidate, workStore.route);\n const _headers = getRequestMeta('headers');\n const initHeaders = typeof (_headers == null ? void 0 : _headers.get) === 'function' ? _headers : new Headers(_headers || {});\n const hasUnCacheableHeader = initHeaders.get('authorization') || initHeaders.get('cookie');\n const isUnCacheableMethod = ![\n 'get',\n 'head'\n ].includes(((_getRequestMeta = getRequestMeta('method')) == null ? void 0 : _getRequestMeta.toLowerCase()) || 'get');\n /**\n * We automatically disable fetch caching under the following conditions:\n * - Fetch cache configs are not set. Specifically:\n * - A page fetch cache mode is not set (export const fetchCache=...)\n * - A fetch cache mode is not set in the fetch call (fetch(url, { cache: ... }))\n * or the fetch cache mode is set to 'default'\n * - A fetch revalidate value is not set in the fetch call (fetch(url, { revalidate: ... }))\n * - OR the fetch comes after a configuration that triggered dynamic rendering (e.g., reading cookies())\n * and the fetch was considered uncacheable (e.g., POST method or has authorization headers)\n */ const hasNoExplicitCacheConfig = // eslint-disable-next-line eqeqeq\n pageFetchCacheMode == undefined && // eslint-disable-next-line eqeqeq\n (currentFetchCacheConfig == undefined || // when considering whether to opt into the default \"no-cache\" fetch semantics,\n // a \"default\" cache config should be treated the same as no cache config\n currentFetchCacheConfig === 'default') && // eslint-disable-next-line eqeqeq\n currentFetchRevalidate == undefined;\n let autoNoCache = Boolean((hasUnCacheableHeader || isUnCacheableMethod) && (revalidateStore == null ? void 0 : revalidateStore.revalidate) === 0);\n let isImplicitBuildTimeCache = false;\n if (!autoNoCache && hasNoExplicitCacheConfig) {\n // We don't enable automatic no-cache behavior during build-time\n // prerendering so that we can still leverage the fetch cache between\n // export workers.\n if (workStore.isBuildTimePrerendering) {\n isImplicitBuildTimeCache = true;\n } else {\n autoNoCache = true;\n }\n }\n // If we have no cache config, and we're in Dynamic I/O prerendering,\n // it'll be a dynamic call. We don't have to issue that dynamic call.\n if (hasNoExplicitCacheConfig && workUnitStore !== undefined) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n // While we don't want to do caching in the client scope we know the\n // fetch will be dynamic for cacheComponents so we may as well avoid the\n // call here. (fallthrough)\n case 'prerender-client':\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n return makeHangingPromise(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'request':\n if (process.env.NODE_ENV === 'development' && workUnitStore.stagedRendering) {\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n await workUnitStore.stagedRendering.waitForStage(RenderStage.Dynamic);\n }\n break;\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n switch(pageFetchCacheMode){\n case 'force-no-store':\n {\n cacheReason = 'fetchCache = force-no-store';\n break;\n }\n case 'only-no-store':\n {\n if (currentFetchCacheConfig === 'force-cache' || typeof finalRevalidate !== 'undefined' && finalRevalidate > 0) {\n throw Object.defineProperty(new Error(`cache: 'force-cache' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-no-store'`), \"__NEXT_ERROR_CODE\", {\n value: \"E448\",\n enumerable: false,\n configurable: true\n });\n }\n cacheReason = 'fetchCache = only-no-store';\n break;\n }\n case 'only-cache':\n {\n if (currentFetchCacheConfig === 'no-store') {\n throw Object.defineProperty(new Error(`cache: 'no-store' used on fetch for ${fetchUrl} with 'export const fetchCache = 'only-cache'`), \"__NEXT_ERROR_CODE\", {\n value: \"E521\",\n enumerable: false,\n configurable: true\n });\n }\n break;\n }\n case 'force-cache':\n {\n if (typeof currentFetchRevalidate === 'undefined' || currentFetchRevalidate === 0) {\n cacheReason = 'fetchCache = force-cache';\n finalRevalidate = INFINITE_CACHE;\n }\n break;\n }\n case 'default-cache':\n case 'default-no-store':\n case 'auto':\n case undefined:\n break;\n default:\n pageFetchCacheMode;\n }\n if (typeof finalRevalidate === 'undefined') {\n if (pageFetchCacheMode === 'default-cache' && !isUsingNoStore) {\n finalRevalidate = INFINITE_CACHE;\n cacheReason = 'fetchCache = default-cache';\n } else if (pageFetchCacheMode === 'default-no-store') {\n finalRevalidate = 0;\n cacheReason = 'fetchCache = default-no-store';\n } else if (isUsingNoStore) {\n finalRevalidate = 0;\n cacheReason = 'noStore call';\n } else if (autoNoCache) {\n finalRevalidate = 0;\n cacheReason = 'auto no cache';\n } else {\n // TODO: should we consider this case an invariant?\n cacheReason = 'auto cache';\n finalRevalidate = revalidateStore ? revalidateStore.revalidate : INFINITE_CACHE;\n }\n } else if (!cacheReason) {\n cacheReason = `revalidate: ${finalRevalidate}`;\n }\n if (// when force static is configured we don't bail from\n // `revalidate: 0` values\n !(workStore.forceStatic && finalRevalidate === 0) && // we don't consider autoNoCache to switch to dynamic for ISR\n !autoNoCache && // If the revalidate value isn't currently set or the value is less\n // than the current revalidate value, we should update the revalidate\n // value.\n revalidateStore && finalRevalidate < revalidateStore.revalidate) {\n // If we were setting the revalidate value to 0, we should try to\n // postpone instead first.\n if (finalRevalidate === 0) {\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n return makeHangingPromise(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'request':\n if (process.env.NODE_ENV === 'development' && workUnitStore.stagedRendering) {\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n await workUnitStore.stagedRendering.waitForStage(RenderStage.Dynamic);\n }\n break;\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n markCurrentScopeAsDynamic(workStore, workUnitStore, `revalidate: 0 fetch ${input} ${workStore.route}`);\n }\n // We only want to set the revalidate store's revalidate time if it\n // was explicitly set for the fetch call, i.e.\n // originalFetchRevalidate.\n if (revalidateStore && originalFetchRevalidate === finalRevalidate) {\n revalidateStore.revalidate = finalRevalidate;\n }\n }\n const isCacheableRevalidate = typeof finalRevalidate === 'number' && finalRevalidate > 0;\n let cacheKey;\n const { incrementalCache } = workStore;\n let isHmrRefresh = false;\n let serverComponentsHmrCache;\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'request':\n case 'cache':\n case 'private-cache':\n isHmrRefresh = workUnitStore.isHmrRefresh ?? false;\n serverComponentsHmrCache = workUnitStore.serverComponentsHmrCache;\n break;\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n if (incrementalCache && (isCacheableRevalidate || serverComponentsHmrCache)) {\n try {\n cacheKey = await incrementalCache.generateCacheKey(fetchUrl, isRequestInput ? input : init);\n } catch (err) {\n console.error(`Failed to generate cache key for`, input);\n }\n }\n const fetchIdx = workStore.nextFetchId ?? 1;\n workStore.nextFetchId = fetchIdx + 1;\n let handleUnlock = ()=>{};\n const doOriginalFetch = async (isStale, cacheReasonOverride)=>{\n const requestInputFields = [\n 'cache',\n 'credentials',\n 'headers',\n 'integrity',\n 'keepalive',\n 'method',\n 'mode',\n 'redirect',\n 'referrer',\n 'referrerPolicy',\n 'window',\n 'duplex',\n // don't pass through signal when revalidating\n ...isStale ? [] : [\n 'signal'\n ]\n ];\n if (isRequestInput) {\n const reqInput = input;\n const reqOptions = {\n body: reqInput._ogBody || reqInput.body\n };\n for (const field of requestInputFields){\n // @ts-expect-error custom fields\n reqOptions[field] = reqInput[field];\n }\n input = new Request(reqInput.url, reqOptions);\n } else if (init) {\n const { _ogBody, body, signal, ...otherInput } = init;\n init = {\n ...otherInput,\n body: _ogBody || body,\n signal: isStale ? undefined : signal\n };\n }\n // add metadata to init without editing the original\n const clonedInit = {\n ...init,\n next: {\n ...init == null ? void 0 : init.next,\n fetchType: 'origin',\n fetchIdx\n }\n };\n return originFetch(input, clonedInit).then(async (res)=>{\n if (!isStale && fetchStart) {\n trackFetchMetric(workStore, {\n start: fetchStart,\n url: fetchUrl,\n cacheReason: cacheReasonOverride || cacheReason,\n cacheStatus: finalRevalidate === 0 || cacheReasonOverride ? 'skip' : 'miss',\n cacheWarning,\n status: res.status,\n method: clonedInit.method || 'GET'\n });\n }\n if (res.status === 200 && incrementalCache && cacheKey && (isCacheableRevalidate || serverComponentsHmrCache)) {\n const normalizedRevalidate = finalRevalidate >= INFINITE_CACHE ? CACHE_ONE_YEAR : finalRevalidate;\n const incrementalCacheConfig = isCacheableRevalidate ? {\n fetchCache: true,\n fetchUrl,\n fetchIdx,\n tags,\n isImplicitBuildTimeCache\n } : undefined;\n switch(workUnitStore == null ? void 0 : workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n return createCachedPrerenderResponse(res, cacheKey, incrementalCacheConfig, incrementalCache, normalizedRevalidate, handleUnlock);\n case 'request':\n if (process.env.NODE_ENV === 'development' && workUnitStore.stagedRendering && workUnitStore.cacheSignal) {\n // We're filling caches for a staged render,\n // so we need to wait for the response to finish instead of streaming.\n return createCachedPrerenderResponse(res, cacheKey, incrementalCacheConfig, incrementalCache, normalizedRevalidate, handleUnlock);\n }\n // fallthrough\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case undefined:\n return createCachedDynamicResponse(workStore, res, cacheKey, incrementalCacheConfig, incrementalCache, serverComponentsHmrCache, normalizedRevalidate, input, handleUnlock);\n default:\n workUnitStore;\n }\n }\n // we had response that we determined shouldn't be cached so we return it\n // and don't cache it. This also needs to unlock the cache lock we acquired.\n await handleUnlock();\n return res;\n }).catch((error)=>{\n handleUnlock();\n throw error;\n });\n };\n let cacheReasonOverride;\n let isForegroundRevalidate = false;\n let isHmrRefreshCache = false;\n if (cacheKey && incrementalCache) {\n let cachedFetchData;\n if (isHmrRefresh && serverComponentsHmrCache) {\n cachedFetchData = serverComponentsHmrCache.get(cacheKey);\n isHmrRefreshCache = true;\n }\n if (isCacheableRevalidate && !cachedFetchData) {\n handleUnlock = await incrementalCache.lock(cacheKey);\n const entry = workStore.isOnDemandRevalidate ? null : await incrementalCache.get(cacheKey, {\n kind: IncrementalCacheKind.FETCH,\n revalidate: finalRevalidate,\n fetchUrl,\n fetchIdx,\n tags,\n softTags: implicitTags == null ? void 0 : implicitTags.tags\n });\n if (hasNoExplicitCacheConfig && workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n // We sometimes use the cache to dedupe fetches that do not\n // specify a cache configuration. In these cases we want to\n // make sure we still exclude them from prerenders if\n // cacheComponents is on so we introduce an artificial task boundary\n // here.\n await getTimeoutBoundary();\n break;\n case 'request':\n if (process.env.NODE_ENV === 'development' && workUnitStore.stagedRendering) {\n await workUnitStore.stagedRendering.waitForStage(RenderStage.Dynamic);\n }\n break;\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n if (entry) {\n await handleUnlock();\n } else {\n // in dev, incremental cache response will be null in case the browser adds `cache-control: no-cache` in the request headers\n // TODO: it seems like we also hit this after revalidates in dev?\n cacheReasonOverride = 'cache-control: no-cache (hard refresh)';\n }\n if ((entry == null ? void 0 : entry.value) && entry.value.kind === CachedRouteKind.FETCH) {\n // when stale and is revalidating we wait for fresh data\n // so the revalidated entry has the updated data\n if (workStore.isStaticGeneration && entry.isStale) {\n isForegroundRevalidate = true;\n } else {\n if (entry.isStale) {\n workStore.pendingRevalidates ??= {};\n if (!workStore.pendingRevalidates[cacheKey]) {\n const pendingRevalidate = doOriginalFetch(true).then(async (response)=>({\n body: await response.arrayBuffer(),\n headers: response.headers,\n status: response.status,\n statusText: response.statusText\n })).finally(()=>{\n workStore.pendingRevalidates ??= {};\n delete workStore.pendingRevalidates[cacheKey || ''];\n });\n // Attach the empty catch here so we don't get a \"unhandled\n // promise rejection\" warning.\n pendingRevalidate.catch(console.error);\n workStore.pendingRevalidates[cacheKey] = pendingRevalidate;\n }\n }\n cachedFetchData = entry.value.data;\n }\n }\n }\n if (cachedFetchData) {\n if (fetchStart) {\n trackFetchMetric(workStore, {\n start: fetchStart,\n url: fetchUrl,\n cacheReason,\n cacheStatus: isHmrRefreshCache ? 'hmr' : 'hit',\n cacheWarning,\n status: cachedFetchData.status || 200,\n method: (init == null ? void 0 : init.method) || 'GET'\n });\n }\n const response = new Response(Buffer.from(cachedFetchData.body, 'base64'), {\n headers: cachedFetchData.headers,\n status: cachedFetchData.status\n });\n Object.defineProperty(response, 'url', {\n value: cachedFetchData.url\n });\n return response;\n }\n }\n if ((workStore.isStaticGeneration || process.env.NODE_ENV === 'development' && process.env.__NEXT_CACHE_COMPONENTS && workUnitStore && // eslint-disable-next-line no-restricted-syntax\n workUnitStore.type === 'request' && workUnitStore.stagedRendering) && init && typeof init === 'object') {\n const { cache } = init;\n // Delete `cache` property as Cloudflare Workers will throw an error\n if (isEdgeRuntime) delete init.cache;\n if (cache === 'no-store') {\n // If enabled, we should bail out of static generation.\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n return makeHangingPromise(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'request':\n if (process.env.NODE_ENV === 'development' && workUnitStore.stagedRendering) {\n if (cacheSignal) {\n cacheSignal.endRead();\n cacheSignal = null;\n }\n await workUnitStore.stagedRendering.waitForStage(RenderStage.Dynamic);\n }\n break;\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n markCurrentScopeAsDynamic(workStore, workUnitStore, `no-store fetch ${input} ${workStore.route}`);\n }\n const hasNextConfig = 'next' in init;\n const { next = {} } = init;\n if (typeof next.revalidate === 'number' && revalidateStore && next.revalidate < revalidateStore.revalidate) {\n if (next.revalidate === 0) {\n // If enabled, we should bail out of static generation.\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n return makeHangingPromise(workUnitStore.renderSignal, workStore.route, 'fetch()');\n case 'request':\n if (process.env.NODE_ENV === 'development' && workUnitStore.stagedRendering) {\n await workUnitStore.stagedRendering.waitForStage(RenderStage.Dynamic);\n }\n break;\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'prerender-legacy':\n case 'prerender-ppr':\n break;\n default:\n workUnitStore;\n }\n }\n markCurrentScopeAsDynamic(workStore, workUnitStore, `revalidate: 0 fetch ${input} ${workStore.route}`);\n }\n if (!workStore.forceStatic || next.revalidate !== 0) {\n revalidateStore.revalidate = next.revalidate;\n }\n }\n if (hasNextConfig) delete init.next;\n }\n // if we are revalidating the whole page via time or on-demand and\n // the fetch cache entry is stale we should still de-dupe the\n // origin hit if it's a cache-able entry\n if (cacheKey && isForegroundRevalidate) {\n const pendingRevalidateKey = cacheKey;\n workStore.pendingRevalidates ??= {};\n let pendingRevalidate = workStore.pendingRevalidates[pendingRevalidateKey];\n if (pendingRevalidate) {\n const revalidatedResult = await pendingRevalidate;\n return new Response(revalidatedResult.body, {\n headers: revalidatedResult.headers,\n status: revalidatedResult.status,\n statusText: revalidatedResult.statusText\n });\n }\n // We used to just resolve the Response and clone it however for\n // static generation with cacheComponents we need the response to be able to\n // be resolved in a microtask and cloning the response will never have\n // a body that can resolve in a microtask in node (as observed through\n // experimentation) So instead we await the body and then when it is\n // available we construct manually cloned Response objects with the\n // body as an ArrayBuffer. This will be resolvable in a microtask\n // making it compatible with cacheComponents.\n const pendingResponse = doOriginalFetch(true, cacheReasonOverride)// We're cloning the response using this utility because there\n // exists a bug in the undici library around response cloning.\n // See the following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n .then(cloneResponse);\n pendingRevalidate = pendingResponse.then(async (responses)=>{\n const response = responses[0];\n return {\n body: await response.arrayBuffer(),\n headers: response.headers,\n status: response.status,\n statusText: response.statusText\n };\n }).finally(()=>{\n var _workStore_pendingRevalidates;\n // If the pending revalidate is not present in the store, then\n // we have nothing to delete.\n if (!((_workStore_pendingRevalidates = workStore.pendingRevalidates) == null ? void 0 : _workStore_pendingRevalidates[pendingRevalidateKey])) {\n return;\n }\n delete workStore.pendingRevalidates[pendingRevalidateKey];\n });\n // Attach the empty catch here so we don't get a \"unhandled promise\n // rejection\" warning\n pendingRevalidate.catch(()=>{});\n workStore.pendingRevalidates[pendingRevalidateKey] = pendingRevalidate;\n return pendingResponse.then((responses)=>responses[1]);\n } else {\n return doOriginalFetch(false, cacheReasonOverride);\n }\n });\n if (cacheSignal) {\n try {\n return await result;\n } finally{\n if (cacheSignal) {\n cacheSignal.endRead();\n }\n }\n }\n return result;\n };\n // Attach the necessary properties to the patched fetch function.\n // We don't use this to determine if the fetch function has been patched,\n // but for external consumers to determine if the fetch function has been\n // patched.\n patched.__nextPatched = true;\n patched.__nextGetStaticStore = ()=>workAsyncStorage;\n patched._nextOriginalFetch = originFetch;\n globalThis[NEXT_PATCH_SYMBOL] = true;\n // Assign the function name also as a name property, so that it's preserved\n // even when mangling is enabled.\n Object.defineProperty(patched, 'name', {\n value: 'fetch',\n writable: false\n });\n return patched;\n}\n// we patch fetch to collect cache information used for\n// determining if a page is static or not\nexport function patchFetch(options) {\n // If we've already patched fetch, we should not patch it again.\n if (isFetchPatched()) return;\n // Grab the original fetch function. We'll attach this so we can use it in\n // the patched fetch function.\n const original = createDedupeFetch(globalThis.fetch);\n // Set the global fetch to the patched fetch.\n globalThis.fetch = createPatchedFetcher(original, options);\n}\nlet currentTimeoutBoundary = null;\nfunction getTimeoutBoundary() {\n if (!currentTimeoutBoundary) {\n currentTimeoutBoundary = new Promise((r)=>{\n setTimeout(()=>{\n currentTimeoutBoundary = null;\n r();\n }, 0);\n });\n }\n return currentTimeoutBoundary;\n}\n\n//# sourceMappingURL=patch-fetch.js.map","import { resolveAsArrayOrUndefined } from '../generate/utils';\nimport { resolveAbsoluteUrlWithPathname } from './resolve-url';\nfunction resolveAlternateUrl(url, metadataBase, pathname, metadataContext) {\n // If alter native url is an URL instance,\n // we treat it as a URL base and resolve with current pathname\n if (url instanceof URL) {\n const newUrl = new URL(pathname, url);\n url.searchParams.forEach((value, key)=>newUrl.searchParams.set(key, value));\n url = newUrl;\n }\n return resolveAbsoluteUrlWithPathname(url, metadataBase, pathname, metadataContext);\n}\nexport const resolveThemeColor = (themeColor)=>{\n var _resolveAsArrayOrUndefined;\n if (!themeColor) return null;\n const themeColorDescriptors = [];\n (_resolveAsArrayOrUndefined = resolveAsArrayOrUndefined(themeColor)) == null ? void 0 : _resolveAsArrayOrUndefined.forEach((descriptor)=>{\n if (typeof descriptor === 'string') themeColorDescriptors.push({\n color: descriptor\n });\n else if (typeof descriptor === 'object') themeColorDescriptors.push({\n color: descriptor.color,\n media: descriptor.media\n });\n });\n return themeColorDescriptors;\n};\nasync function resolveUrlValuesOfObject(obj, metadataBase, pathname, metadataContext) {\n if (!obj) return null;\n const result = {};\n for (const [key, value] of Object.entries(obj)){\n if (typeof value === 'string' || value instanceof URL) {\n const pathnameForUrl = await pathname;\n result[key] = [\n {\n url: resolveAlternateUrl(value, metadataBase, pathnameForUrl, metadataContext)\n }\n ];\n } else if (value && value.length) {\n result[key] = [];\n const pathnameForUrl = await pathname;\n value.forEach((item, index)=>{\n const url = resolveAlternateUrl(item.url, metadataBase, pathnameForUrl, metadataContext);\n result[key][index] = {\n url,\n title: item.title\n };\n });\n }\n }\n return result;\n}\nasync function resolveCanonicalUrl(urlOrDescriptor, metadataBase, pathname, metadataContext) {\n if (!urlOrDescriptor) return null;\n const url = typeof urlOrDescriptor === 'string' || urlOrDescriptor instanceof URL ? urlOrDescriptor : urlOrDescriptor.url;\n const pathnameForUrl = await pathname;\n // Return string url because structureClone can't handle URL instance\n return {\n url: resolveAlternateUrl(url, metadataBase, pathnameForUrl, metadataContext)\n };\n}\nexport const resolveAlternates = async (alternates, metadataBase, pathname, context)=>{\n if (!alternates) return null;\n const canonical = await resolveCanonicalUrl(alternates.canonical, metadataBase, pathname, context);\n const languages = await resolveUrlValuesOfObject(alternates.languages, metadataBase, pathname, context);\n const media = await resolveUrlValuesOfObject(alternates.media, metadataBase, pathname, context);\n const types = await resolveUrlValuesOfObject(alternates.types, metadataBase, pathname, context);\n return {\n canonical,\n languages,\n media,\n types\n };\n};\nconst robotsKeys = [\n 'noarchive',\n 'nosnippet',\n 'noimageindex',\n 'nocache',\n 'notranslate',\n 'indexifembedded',\n 'nositelinkssearchbox',\n 'unavailable_after',\n 'max-video-preview',\n 'max-image-preview',\n 'max-snippet'\n];\nconst resolveRobotsValue = (robots)=>{\n if (!robots) return null;\n if (typeof robots === 'string') return robots;\n const values = [];\n if (robots.index) values.push('index');\n else if (typeof robots.index === 'boolean') values.push('noindex');\n if (robots.follow) values.push('follow');\n else if (typeof robots.follow === 'boolean') values.push('nofollow');\n for (const key of robotsKeys){\n const value = robots[key];\n if (typeof value !== 'undefined' && value !== false) {\n values.push(typeof value === 'boolean' ? key : `${key}:${value}`);\n }\n }\n return values.join(', ');\n};\nexport const resolveRobots = (robots)=>{\n if (!robots) return null;\n return {\n basic: resolveRobotsValue(robots),\n googleBot: typeof robots !== 'string' ? resolveRobotsValue(robots.googleBot) : null\n };\n};\nconst VerificationKeys = [\n 'google',\n 'yahoo',\n 'yandex',\n 'me',\n 'other'\n];\nexport const resolveVerification = (verification)=>{\n if (!verification) return null;\n const res = {};\n for (const key of VerificationKeys){\n const value = verification[key];\n if (value) {\n if (key === 'other') {\n res.other = {};\n for(const otherKey in verification.other){\n const otherValue = resolveAsArrayOrUndefined(verification.other[otherKey]);\n if (otherValue) res.other[otherKey] = otherValue;\n }\n } else res[key] = resolveAsArrayOrUndefined(value);\n }\n }\n return res;\n};\nexport const resolveAppleWebApp = (appWebApp)=>{\n var _resolveAsArrayOrUndefined;\n if (!appWebApp) return null;\n if (appWebApp === true) {\n return {\n capable: true\n };\n }\n const startupImages = appWebApp.startupImage ? (_resolveAsArrayOrUndefined = resolveAsArrayOrUndefined(appWebApp.startupImage)) == null ? void 0 : _resolveAsArrayOrUndefined.map((item)=>typeof item === 'string' ? {\n url: item\n } : item) : null;\n return {\n capable: 'capable' in appWebApp ? !!appWebApp.capable : true,\n title: appWebApp.title || null,\n startupImage: startupImages,\n statusBarStyle: appWebApp.statusBarStyle || 'default'\n };\n};\nexport const resolveAppLinks = (appLinks)=>{\n if (!appLinks) return null;\n for(const key in appLinks){\n // @ts-ignore // TODO: type infer\n appLinks[key] = resolveAsArrayOrUndefined(appLinks[key]);\n }\n return appLinks;\n};\nexport const resolveItunes = async (itunes, metadataBase, pathname, context)=>{\n if (!itunes) return null;\n return {\n appId: itunes.appId,\n appArgument: itunes.appArgument ? resolveAlternateUrl(itunes.appArgument, metadataBase, await pathname, context) : undefined\n };\n};\nexport const resolveFacebook = (facebook)=>{\n if (!facebook) return null;\n return {\n appId: facebook.appId,\n admins: resolveAsArrayOrUndefined(facebook.admins)\n };\n};\nexport const resolvePagination = async (pagination, metadataBase, pathname, context)=>{\n return {\n previous: (pagination == null ? void 0 : pagination.previous) ? resolveAlternateUrl(pagination.previous, metadataBase, await pathname, context) : null,\n next: (pagination == null ? void 0 : pagination.next) ? resolveAlternateUrl(pagination.next, metadataBase, await pathname, context) : null\n };\n};\n\n//# sourceMappingURL=resolve-basics.js.map","import { InvariantError } from '../../shared/lib/invariant-error';\nimport { createPromiseWithResolvers } from '../../shared/lib/promise-with-resolvers';\nexport var RenderStage = /*#__PURE__*/ function(RenderStage) {\n RenderStage[RenderStage[\"Before\"] = 1] = \"Before\";\n RenderStage[RenderStage[\"Static\"] = 2] = \"Static\";\n RenderStage[RenderStage[\"Runtime\"] = 3] = \"Runtime\";\n RenderStage[RenderStage[\"Dynamic\"] = 4] = \"Dynamic\";\n RenderStage[RenderStage[\"Abandoned\"] = 5] = \"Abandoned\";\n return RenderStage;\n}({});\nexport class StagedRenderingController {\n constructor(abortSignal = null, hasRuntimePrefetch){\n this.abortSignal = abortSignal;\n this.hasRuntimePrefetch = hasRuntimePrefetch;\n this.currentStage = 1;\n this.staticInterruptReason = null;\n this.runtimeInterruptReason = null;\n this.staticStageEndTime = Infinity;\n this.runtimeStageEndTime = Infinity;\n this.runtimeStageListeners = [];\n this.dynamicStageListeners = [];\n this.runtimeStagePromise = createPromiseWithResolvers();\n this.dynamicStagePromise = createPromiseWithResolvers();\n this.mayAbandon = false;\n if (abortSignal) {\n abortSignal.addEventListener('abort', ()=>{\n const { reason } = abortSignal;\n if (this.currentStage < 3) {\n this.runtimeStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections\n ;\n this.runtimeStagePromise.reject(reason);\n }\n if (this.currentStage < 4 || this.currentStage === 5) {\n this.dynamicStagePromise.promise.catch(ignoreReject) // avoid unhandled rejections\n ;\n this.dynamicStagePromise.reject(reason);\n }\n }, {\n once: true\n });\n this.mayAbandon = true;\n }\n }\n onStage(stage, callback) {\n if (this.currentStage >= stage) {\n callback();\n } else if (stage === 3) {\n this.runtimeStageListeners.push(callback);\n } else if (stage === 4) {\n this.dynamicStageListeners.push(callback);\n } else {\n // This should never happen\n throw Object.defineProperty(new InvariantError(`Invalid render stage: ${stage}`), \"__NEXT_ERROR_CODE\", {\n value: \"E881\",\n enumerable: false,\n configurable: true\n });\n }\n }\n canSyncInterrupt() {\n // If we haven't started the render yet, it can't be interrupted.\n if (this.currentStage === 1) {\n return false;\n }\n const boundaryStage = this.hasRuntimePrefetch ? 4 : 3;\n return this.currentStage < boundaryStage;\n }\n syncInterruptCurrentStageWithReason(reason) {\n if (this.currentStage === 1) {\n return;\n }\n // If Sync IO occurs during the initial (abandonable) render, we'll retry it,\n // so we want a slightly different flow.\n // See the implementation of `abandonRenderImpl` for more explanation.\n if (this.mayAbandon) {\n return this.abandonRenderImpl();\n }\n // If we're in the final render, we cannot abandon it. We need to advance to the Dynamic stage\n // and capture the interruption reason.\n switch(this.currentStage){\n case 2:\n {\n this.staticInterruptReason = reason;\n this.advanceStage(4);\n return;\n }\n case 3:\n {\n // We only error for Sync IO in the runtime stage if the route\n // is configured to use runtime prefetching.\n // We do this to reflect the fact that during a runtime prefetch,\n // Sync IO aborts aborts the render.\n // Note that `canSyncInterrupt` should prevent us from getting here at all\n // if runtime prefetching isn't enabled.\n if (this.hasRuntimePrefetch) {\n this.runtimeInterruptReason = reason;\n this.advanceStage(4);\n }\n return;\n }\n case 4:\n case 5:\n default:\n }\n }\n getStaticInterruptReason() {\n return this.staticInterruptReason;\n }\n getRuntimeInterruptReason() {\n return this.runtimeInterruptReason;\n }\n getStaticStageEndTime() {\n return this.staticStageEndTime;\n }\n getRuntimeStageEndTime() {\n return this.runtimeStageEndTime;\n }\n abandonRender() {\n if (!this.mayAbandon) {\n throw Object.defineProperty(new InvariantError('`abandonRender` called on a stage controller that cannot be abandoned.'), \"__NEXT_ERROR_CODE\", {\n value: \"E938\",\n enumerable: false,\n configurable: true\n });\n }\n this.abandonRenderImpl();\n }\n abandonRenderImpl() {\n // In staged rendering, only the initial render is abandonable.\n // We can abandon the initial render if\n // 1. We notice a cache miss, and need to wait for caches to fill\n // 2. A sync IO error occurs, and the render should be interrupted\n // (this might be a lazy intitialization of a module,\n // so we still want to restart in this case and see if it still occurs)\n // In either case, we'll be doing another render after this one,\n // so we only want to unblock the Runtime stage, not Dynamic, because\n // unblocking the dynamic stage would likely lead to wasted (uncached) IO.\n const { currentStage } = this;\n switch(currentStage){\n case 2:\n {\n this.currentStage = 5;\n this.resolveRuntimeStage();\n return;\n }\n case 3:\n {\n this.currentStage = 5;\n return;\n }\n case 4:\n case 1:\n case 5:\n break;\n default:\n {\n currentStage;\n }\n }\n }\n advanceStage(stage) {\n // If we're already at the target stage or beyond, do nothing.\n // (this can happen e.g. if sync IO advanced us to the dynamic stage)\n if (stage <= this.currentStage) {\n return;\n }\n let currentStage = this.currentStage;\n this.currentStage = stage;\n if (currentStage < 3 && stage >= 3) {\n this.staticStageEndTime = performance.now() + performance.timeOrigin;\n this.resolveRuntimeStage();\n }\n if (currentStage < 4 && stage >= 4) {\n this.runtimeStageEndTime = performance.now() + performance.timeOrigin;\n this.resolveDynamicStage();\n return;\n }\n }\n /** Fire the `onStage` listeners for the runtime stage and unblock any promises waiting for it. */ resolveRuntimeStage() {\n const runtimeListeners = this.runtimeStageListeners;\n for(let i = 0; i < runtimeListeners.length; i++){\n runtimeListeners[i]();\n }\n runtimeListeners.length = 0;\n this.runtimeStagePromise.resolve();\n }\n /** Fire the `onStage` listeners for the dynamic stage and unblock any promises waiting for it. */ resolveDynamicStage() {\n const dynamicListeners = this.dynamicStageListeners;\n for(let i = 0; i < dynamicListeners.length; i++){\n dynamicListeners[i]();\n }\n dynamicListeners.length = 0;\n this.dynamicStagePromise.resolve();\n }\n getStagePromise(stage) {\n switch(stage){\n case 3:\n {\n return this.runtimeStagePromise.promise;\n }\n case 4:\n {\n return this.dynamicStagePromise.promise;\n }\n default:\n {\n stage;\n throw Object.defineProperty(new InvariantError(`Invalid render stage: ${stage}`), \"__NEXT_ERROR_CODE\", {\n value: \"E881\",\n enumerable: false,\n configurable: true\n });\n }\n }\n }\n waitForStage(stage) {\n return this.getStagePromise(stage);\n }\n delayUntilStage(stage, displayName, resolvedValue) {\n const ioTriggerPromise = this.getStagePromise(stage);\n const promise = makeDevtoolsIOPromiseFromIOTrigger(ioTriggerPromise, displayName, resolvedValue);\n // Analogously to `makeHangingPromise`, we might reject this promise if the signal is invoked.\n // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it).\n // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning.\n if (this.abortSignal) {\n promise.catch(ignoreReject);\n }\n return promise;\n }\n}\nfunction ignoreReject() {}\n// TODO(restart-on-cache-miss): the layering of `delayUntilStage`,\n// `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise`\n// is confusing, we should clean it up.\nfunction makeDevtoolsIOPromiseFromIOTrigger(ioTrigger, displayName, resolvedValue) {\n // If we create a `new Promise` and give it a displayName\n // (with no userspace code above us in the stack)\n // React Devtools will use it as the IO cause when determining \"suspended by\".\n // In particular, it should shadow any inner IO that resolved/rejected the promise\n // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage)\n const promise = new Promise((resolve, reject)=>{\n ioTrigger.then(resolve.bind(null, resolvedValue), reject);\n });\n if (displayName !== undefined) {\n // @ts-expect-error\n promise.displayName = displayName;\n }\n return promise;\n}\n\n//# sourceMappingURL=staged-rendering.js.map","// TODO: isWellKnownError -> isNextInternalError\n// isReactLargeShellError -> isWarning\nexport function isReactLargeShellError(error) {\n return typeof error === 'object' && error !== null && 'message' in error && typeof error.message === 'string' && error.message.startsWith('This rendered a large document (>');\n}\n\n//# sourceMappingURL=react-large-shell-error.js.map","import { getDigestForWellKnownError } from './create-error-handler';\nimport { isReactLargeShellError } from './react-large-shell-error';\nexport var Phase = /*#__PURE__*/ function(Phase) {\n Phase[\"ProspectiveRender\"] = \"the prospective render\";\n Phase[\"SegmentCollection\"] = \"segment collection\";\n return Phase;\n}({});\nexport function printDebugThrownValueForProspectiveRender(thrownValue, route, phase) {\n // We don't need to print well-known Next.js errors.\n if (getDigestForWellKnownError(thrownValue)) {\n return;\n }\n if (isReactLargeShellError(thrownValue)) {\n // TODO: Aggregate\n console.error(thrownValue);\n return undefined;\n }\n let message;\n if (typeof thrownValue === 'object' && thrownValue !== null && typeof thrownValue.message === 'string') {\n message = thrownValue.message;\n if (typeof thrownValue.stack === 'string') {\n const originalErrorStack = thrownValue.stack;\n const stackStart = originalErrorStack.indexOf('\\n');\n if (stackStart > -1) {\n const error = Object.defineProperty(new Error(`Route ${route} errored during ${phase}. These errors are normally ignored and may not prevent the route from prerendering but are logged here because build debugging is enabled.\n \nOriginal Error: ${message}`), \"__NEXT_ERROR_CODE\", {\n value: \"E949\",\n enumerable: false,\n configurable: true\n });\n error.stack = 'Error: ' + error.message + originalErrorStack.slice(stackStart);\n console.error(error);\n return;\n }\n }\n } else if (typeof thrownValue === 'string') {\n message = thrownValue;\n }\n if (message) {\n console.error(`Route ${route} errored during ${phase}. These errors are normally ignored and may not prevent the route from prerendering but are logged here because build debugging is enabled. No stack was provided.\n \nOriginal Message: ${message}`);\n return;\n }\n console.error(`Route ${route} errored during ${phase}. These errors are normally ignored and may not prevent the route from prerendering but are logged here because build debugging is enabled. The thrown value is logged just following this message`);\n console.error(thrownValue);\n return;\n}\n\n//# sourceMappingURL=prospective-render-utils.js.map","import { bold, green, magenta, red, yellow, white } from '../../lib/picocolors';\nimport { LRUCache } from '../../server/lib/lru-cache';\nexport const prefixes = {\n wait: white(bold('○')),\n error: red(bold('⨯')),\n warn: yellow(bold('⚠')),\n ready: '▲',\n info: white(bold(' ')),\n event: green(bold('✓')),\n trace: magenta(bold('»'))\n};\nconst LOGGING_METHOD = {\n log: 'log',\n warn: 'warn',\n error: 'error'\n};\nfunction prefixedLog(prefixType, ...message) {\n if ((message[0] === '' || message[0] === undefined) && message.length === 1) {\n message.shift();\n }\n const consoleMethod = prefixType in LOGGING_METHOD ? LOGGING_METHOD[prefixType] : 'log';\n const prefix = prefixes[prefixType];\n // If there's no message, don't print the prefix but a new line\n if (message.length === 0) {\n console[consoleMethod]('');\n } else {\n // Ensure if there's ANSI escape codes it's concatenated into one string.\n // Chrome DevTool can only handle color if it's in one string.\n if (message.length === 1 && typeof message[0] === 'string') {\n console[consoleMethod](prefix + ' ' + message[0]);\n } else {\n console[consoleMethod](prefix, ...message);\n }\n }\n}\nexport function bootstrap(message) {\n console.log(message);\n}\nexport function wait(...message) {\n prefixedLog('wait', ...message);\n}\nexport function error(...message) {\n prefixedLog('error', ...message);\n}\nexport function warn(...message) {\n prefixedLog('warn', ...message);\n}\nexport function ready(...message) {\n prefixedLog('ready', ...message);\n}\nexport function info(...message) {\n prefixedLog('info', ...message);\n}\nexport function event(...message) {\n prefixedLog('event', ...message);\n}\nexport function trace(...message) {\n prefixedLog('trace', ...message);\n}\nconst warnOnceCache = new LRUCache(10000, (value)=>value.length);\nexport function warnOnce(...message) {\n const key = message.join(' ');\n if (!warnOnceCache.has(key)) {\n warnOnceCache.set(key, key);\n warn(...message);\n }\n}\nconst errorOnceCache = new LRUCache(10000, (value)=>value.length);\nexport function errorOnce(...message) {\n const key = message.join(' ');\n if (!errorOnceCache.has(key)) {\n errorOnceCache.set(key, key);\n error(...message);\n }\n}\n\n//# sourceMappingURL=log.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { MetaFilter } from './meta';\nfunction AlternateLink({ descriptor, ...props }) {\n if (!descriptor.url) return null;\n return /*#__PURE__*/ _jsx(\"link\", {\n ...props,\n ...descriptor.title && {\n title: descriptor.title\n },\n href: descriptor.url.toString()\n });\n}\nexport function AlternatesMetadata({ alternates }) {\n if (!alternates) return null;\n const { canonical, languages, media, types } = alternates;\n return MetaFilter([\n canonical ? AlternateLink({\n rel: 'canonical',\n descriptor: canonical\n }) : null,\n languages ? Object.entries(languages).flatMap(([locale, descriptors])=>descriptors == null ? void 0 : descriptors.map((descriptor)=>AlternateLink({\n rel: 'alternate',\n hrefLang: locale,\n descriptor\n }))) : null,\n media ? Object.entries(media).flatMap(([mediaName, descriptors])=>descriptors == null ? void 0 : descriptors.map((descriptor)=>AlternateLink({\n rel: 'alternate',\n media: mediaName,\n descriptor\n }))) : null,\n types ? Object.entries(types).flatMap(([type, descriptors])=>descriptors == null ? void 0 : descriptors.map((descriptor)=>AlternateLink({\n rel: 'alternate',\n type,\n descriptor\n }))) : null\n ]);\n}\n\n//# sourceMappingURL=alternate.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { nonNullable } from '../../non-nullable';\nexport function Meta({ name, property, content, media }) {\n if (typeof content !== 'undefined' && content !== null && content !== '') {\n return /*#__PURE__*/ _jsx(\"meta\", {\n ...name ? {\n name\n } : {\n property\n },\n ...media ? {\n media\n } : undefined,\n content: typeof content === 'string' ? content : content.toString()\n });\n }\n return null;\n}\nexport function MetaFilter(items) {\n const acc = [];\n for (const item of items){\n if (Array.isArray(item)) {\n acc.push(...item.filter(nonNullable));\n } else if (nonNullable(item)) {\n acc.push(item);\n }\n }\n return acc;\n}\nfunction camelToSnake(camelCaseStr) {\n return camelCaseStr.replace(/([A-Z])/g, function(match) {\n return '_' + match.toLowerCase();\n });\n}\nconst aliasPropPrefixes = new Set([\n 'og:image',\n 'twitter:image',\n 'og:video',\n 'og:audio'\n]);\nfunction getMetaKey(prefix, key) {\n // Use `twitter:image` and `og:image` instead of `twitter:image:url` and `og:image:url`\n // to be more compatible as it's a more common format.\n // `og:video` & `og:audio` do not have a `:url` suffix alias\n if (aliasPropPrefixes.has(prefix) && key === 'url') {\n return prefix;\n }\n if (prefix.startsWith('og:') || prefix.startsWith('twitter:')) {\n key = camelToSnake(key);\n }\n return prefix + ':' + key;\n}\nfunction ExtendMeta({ content, namePrefix, propertyPrefix }) {\n if (!content) return null;\n return MetaFilter(Object.entries(content).map(([k, v])=>{\n return typeof v === 'undefined' ? null : Meta({\n ...propertyPrefix && {\n property: getMetaKey(propertyPrefix, k)\n },\n ...namePrefix && {\n name: getMetaKey(namePrefix, k)\n },\n content: typeof v === 'string' ? v : v == null ? void 0 : v.toString()\n });\n }));\n}\nexport function MultiMeta({ propertyPrefix, namePrefix, contents }) {\n if (typeof contents === 'undefined' || contents === null) {\n return null;\n }\n return MetaFilter(contents.map((content)=>{\n if (typeof content === 'string' || typeof content === 'number' || content instanceof URL) {\n return Meta({\n ...propertyPrefix ? {\n property: propertyPrefix\n } : {\n name: namePrefix\n },\n content\n });\n } else {\n return ExtendMeta({\n namePrefix,\n propertyPrefix,\n content\n });\n }\n }));\n}\n\n//# sourceMappingURL=meta.js.map","import { resolveAsArrayOrUndefined } from '../generate/utils';\nimport { isStringOrURL } from './resolve-url';\nimport { IconKeys } from '../constants';\nexport function resolveIcon(icon) {\n if (isStringOrURL(icon)) return {\n url: icon\n };\n else if (Array.isArray(icon)) return icon;\n return icon;\n}\nexport const resolveIcons = (icons)=>{\n if (!icons) {\n return null;\n }\n const resolved = {\n icon: [],\n apple: []\n };\n if (Array.isArray(icons)) {\n resolved.icon = icons.map(resolveIcon).filter(Boolean);\n } else if (isStringOrURL(icons)) {\n resolved.icon = [\n resolveIcon(icons)\n ];\n } else {\n for (const key of IconKeys){\n const values = resolveAsArrayOrUndefined(icons[key]);\n if (values) resolved[key] = values.map(resolveIcon);\n }\n }\n return resolved;\n};\n\n//# sourceMappingURL=resolve-icons.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Meta, MetaFilter, MultiMeta } from './meta';\nimport { ViewportMetaKeys } from '../constants';\nimport { getOrigin } from './utils';\n// convert viewport object to string for viewport meta tag\nfunction resolveViewportLayout(viewport) {\n let resolved = null;\n if (viewport && typeof viewport === 'object') {\n resolved = '';\n for(const viewportKey_ in ViewportMetaKeys){\n const viewportKey = viewportKey_;\n if (viewportKey in viewport) {\n let value = viewport[viewportKey];\n if (typeof value === 'boolean') {\n value = value ? 'yes' : 'no';\n } else if (!value && viewportKey === 'initialScale') {\n value = undefined;\n }\n if (value) {\n if (resolved) resolved += ', ';\n resolved += `${ViewportMetaKeys[viewportKey]}=${value}`;\n }\n }\n }\n }\n return resolved;\n}\nexport function ViewportMeta({ viewport }) {\n return MetaFilter([\n /*#__PURE__*/ _jsx(\"meta\", {\n charSet: \"utf-8\"\n }),\n Meta({\n name: 'viewport',\n content: resolveViewportLayout(viewport)\n }),\n ...viewport.themeColor ? viewport.themeColor.map((themeColor)=>Meta({\n name: 'theme-color',\n content: themeColor.color,\n media: themeColor.media\n })) : [],\n Meta({\n name: 'color-scheme',\n content: viewport.colorScheme\n })\n ]);\n}\nexport function BasicMeta({ metadata }) {\n var _metadata_keywords, _metadata_robots, _metadata_robots1;\n const manifestOrigin = metadata.manifest ? getOrigin(metadata.manifest) : undefined;\n return MetaFilter([\n metadata.title !== null && metadata.title.absolute ? /*#__PURE__*/ _jsx(\"title\", {\n children: metadata.title.absolute\n }) : null,\n Meta({\n name: 'description',\n content: metadata.description\n }),\n Meta({\n name: 'application-name',\n content: metadata.applicationName\n }),\n ...metadata.authors ? metadata.authors.map((author)=>[\n author.url ? /*#__PURE__*/ _jsx(\"link\", {\n rel: \"author\",\n href: author.url.toString()\n }) : null,\n Meta({\n name: 'author',\n content: author.name\n })\n ]) : [],\n metadata.manifest ? /*#__PURE__*/ _jsx(\"link\", {\n rel: \"manifest\",\n href: metadata.manifest.toString(),\n // If it's same origin, and it's a preview deployment,\n // including credentials for manifest request.\n crossOrigin: !manifestOrigin && process.env.VERCEL_ENV === 'preview' ? 'use-credentials' : undefined\n }) : null,\n Meta({\n name: 'generator',\n content: metadata.generator\n }),\n Meta({\n name: 'keywords',\n content: (_metadata_keywords = metadata.keywords) == null ? void 0 : _metadata_keywords.join(',')\n }),\n Meta({\n name: 'referrer',\n content: metadata.referrer\n }),\n Meta({\n name: 'creator',\n content: metadata.creator\n }),\n Meta({\n name: 'publisher',\n content: metadata.publisher\n }),\n Meta({\n name: 'robots',\n content: (_metadata_robots = metadata.robots) == null ? void 0 : _metadata_robots.basic\n }),\n Meta({\n name: 'googlebot',\n content: (_metadata_robots1 = metadata.robots) == null ? void 0 : _metadata_robots1.googleBot\n }),\n Meta({\n name: 'abstract',\n content: metadata.abstract\n }),\n ...metadata.archives ? metadata.archives.map((archive)=>/*#__PURE__*/ _jsx(\"link\", {\n rel: \"archives\",\n href: archive\n })) : [],\n ...metadata.assets ? metadata.assets.map((asset)=>/*#__PURE__*/ _jsx(\"link\", {\n rel: \"assets\",\n href: asset\n })) : [],\n ...metadata.bookmarks ? metadata.bookmarks.map((bookmark)=>/*#__PURE__*/ _jsx(\"link\", {\n rel: \"bookmarks\",\n href: bookmark\n })) : [],\n ...metadata.pagination ? [\n metadata.pagination.previous ? /*#__PURE__*/ _jsx(\"link\", {\n rel: \"prev\",\n href: metadata.pagination.previous\n }) : null,\n metadata.pagination.next ? /*#__PURE__*/ _jsx(\"link\", {\n rel: \"next\",\n href: metadata.pagination.next\n }) : null\n ] : [],\n Meta({\n name: 'category',\n content: metadata.category\n }),\n Meta({\n name: 'classification',\n content: metadata.classification\n }),\n ...metadata.other ? Object.entries(metadata.other).map(([name, content])=>{\n if (Array.isArray(content)) {\n return content.map((contentItem)=>Meta({\n name,\n content: contentItem\n }));\n } else {\n return Meta({\n name,\n content\n });\n }\n }) : []\n ]);\n}\nexport function ItunesMeta({ itunes }) {\n if (!itunes) return null;\n const { appId, appArgument } = itunes;\n let content = `app-id=${appId}`;\n if (appArgument) {\n content += `, app-argument=${appArgument}`;\n }\n return /*#__PURE__*/ _jsx(\"meta\", {\n name: \"apple-itunes-app\",\n content: content\n });\n}\nexport function FacebookMeta({ facebook }) {\n if (!facebook) return null;\n const { appId, admins } = facebook;\n return MetaFilter([\n appId ? /*#__PURE__*/ _jsx(\"meta\", {\n property: \"fb:app_id\",\n content: appId\n }) : null,\n ...admins ? admins.map((admin)=>/*#__PURE__*/ _jsx(\"meta\", {\n property: \"fb:admins\",\n content: admin\n })) : []\n ]);\n}\nexport function PinterestMeta({ pinterest }) {\n if (!pinterest || pinterest.richPin === undefined) return null;\n const { richPin } = pinterest;\n return /*#__PURE__*/ _jsx(\"meta\", {\n property: \"pinterest-rich-pin\",\n content: richPin.toString()\n });\n}\nconst formatDetectionKeys = [\n 'telephone',\n 'date',\n 'address',\n 'email',\n 'url'\n];\nexport function FormatDetectionMeta({ formatDetection }) {\n if (!formatDetection) return null;\n let content = '';\n for (const key of formatDetectionKeys){\n if (formatDetection[key] === false) {\n if (content) content += ', ';\n content += `${key}=no`;\n }\n }\n return content ? /*#__PURE__*/ _jsx(\"meta\", {\n name: \"format-detection\",\n content: content\n }) : null;\n}\nexport function AppleWebAppMeta({ appleWebApp }) {\n if (!appleWebApp) return null;\n const { capable, title, startupImage, statusBarStyle } = appleWebApp;\n return MetaFilter([\n capable ? Meta({\n name: 'mobile-web-app-capable',\n content: 'yes'\n }) : null,\n Meta({\n name: 'apple-mobile-web-app-title',\n content: title\n }),\n startupImage ? startupImage.map((image)=>/*#__PURE__*/ _jsx(\"link\", {\n href: image.url,\n media: image.media,\n rel: \"apple-touch-startup-image\"\n })) : null,\n statusBarStyle ? Meta({\n name: 'apple-mobile-web-app-status-bar-style',\n content: statusBarStyle\n }) : null\n ]);\n}\nexport function VerificationMeta({ verification }) {\n if (!verification) return null;\n return MetaFilter([\n MultiMeta({\n namePrefix: 'google-site-verification',\n contents: verification.google\n }),\n MultiMeta({\n namePrefix: 'y_key',\n contents: verification.yahoo\n }),\n MultiMeta({\n namePrefix: 'yandex-verification',\n contents: verification.yandex\n }),\n MultiMeta({\n namePrefix: 'me',\n contents: verification.me\n }),\n ...verification.other ? Object.entries(verification.other).map(([key, value])=>MultiMeta({\n namePrefix: key,\n contents: value\n })) : []\n ]);\n}\n\n//# sourceMappingURL=basic.js.map","import { delayUntilRuntimeStage, postponeWithTracking } from '../app-render/dynamic-rendering';\nimport { throwInvariantForMissingStore, workUnitAsyncStorage } from '../app-render/work-unit-async-storage.external';\nimport { makeHangingPromise } from '../dynamic-rendering-utils';\nimport { InvariantError } from '../../shared/lib/invariant-error';\nexport function createServerPathnameForMetadata(underlyingPathname, workStore) {\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n {\n return createPrerenderPathname(underlyingPathname, workStore, workUnitStore);\n }\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new InvariantError('createServerPathnameForMetadata should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E740\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return delayUntilRuntimeStage(workUnitStore, createRenderPathname(underlyingPathname));\n case 'request':\n return createRenderPathname(underlyingPathname);\n default:\n workUnitStore;\n }\n }\n throwInvariantForMissingStore();\n}\nfunction createPrerenderPathname(underlyingPathname, workStore, prerenderStore) {\n switch(prerenderStore.type){\n case 'prerender-client':\n throw Object.defineProperty(new InvariantError('createPrerenderPathname was called inside a client component scope.'), \"__NEXT_ERROR_CODE\", {\n value: \"E694\",\n enumerable: false,\n configurable: true\n });\n case 'prerender':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n return makeHangingPromise(prerenderStore.renderSignal, workStore.route, '`pathname`');\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n return makeErroringPathname(workStore, prerenderStore.dynamicTracking);\n }\n break;\n }\n case 'prerender-legacy':\n break;\n default:\n prerenderStore;\n }\n // We don't have any fallback params so we have an entirely static safe params object\n return Promise.resolve(underlyingPathname);\n}\nfunction makeErroringPathname(workStore, dynamicTracking) {\n let reject = null;\n const promise = new Promise((_, re)=>{\n reject = re;\n });\n const originalThen = promise.then.bind(promise);\n // We instrument .then so that we can generate a tracking event only if you actually\n // await this promise, not just that it is created.\n promise.then = (onfulfilled, onrejected)=>{\n if (reject) {\n try {\n postponeWithTracking(workStore.route, 'metadata relative url resolving', dynamicTracking);\n } catch (error) {\n reject(error);\n reject = null;\n }\n }\n return originalThen(onfulfilled, onrejected);\n };\n // We wrap in a noop proxy to trick the runtime into thinking it\n // isn't a native promise (it's not really). This is so that awaiting\n // the promise will call the `then` property triggering the lazy postpone\n return new Proxy(promise, {});\n}\nfunction createRenderPathname(underlyingPathname) {\n return Promise.resolve(underlyingPathname);\n}\n\n//# sourceMappingURL=pathname.js.map","/**\n * Calls the given function only when the returned promise-like object is\n * awaited. Afterwards, it provides the resolved value synchronously as `value`\n * property.\n */ export function createLazyResult(fn) {\n let pendingResult;\n const result = {\n then (onfulfilled, onrejected) {\n if (!pendingResult) {\n pendingResult = Promise.resolve(fn());\n }\n pendingResult.then((value)=>{\n result.value = value;\n }).catch(()=>{\n // The externally awaited result will be rejected via `onrejected`. We\n // don't need to handle it here. But we do want to avoid an unhandled\n // rejection.\n });\n return pendingResult.then(onfulfilled, onrejected);\n }\n };\n return result;\n}\nexport function isResolvedLazyResult(result) {\n return result.hasOwnProperty('value');\n}\n\n//# sourceMappingURL=lazy-result.js.map","/**\n * Based on https://github.com/facebook/react/blob/d4e78c42a94be027b4dc7ed2659a5fddfbf9bd4e/packages/react/src/ReactFetch.js\n */ import * as React from 'react';\nimport { cloneResponse } from './clone-response';\nimport { InvariantError } from '../../shared/lib/invariant-error';\nconst simpleCacheKey = '[\"GET\",[],null,\"follow\",null,null,null,null]' // generateCacheKey(new Request('https://blank'));\n;\n// Headers that should not affect deduplication\n// traceparent and tracestate are used for distributed tracing and should not affect cache keys\nconst headersToExcludeInCacheKey = new Set([\n 'traceparent',\n 'tracestate'\n]);\nfunction generateCacheKey(request) {\n // We pick the fields that goes into the key used to dedupe requests.\n // We don't include the `cache` field, because we end up using whatever\n // caching resulted from the first request.\n // Notably we currently don't consider non-standard (or future) options.\n // This might not be safe. TODO: warn for non-standard extensions differing.\n // IF YOU CHANGE THIS UPDATE THE simpleCacheKey ABOVE.\n const filteredHeaders = Array.from(request.headers.entries()).filter(([key])=>!headersToExcludeInCacheKey.has(key.toLowerCase()));\n return JSON.stringify([\n request.method,\n filteredHeaders,\n request.mode,\n request.redirect,\n request.credentials,\n request.referrer,\n request.referrerPolicy,\n request.integrity\n ]);\n}\nexport function createDedupeFetch(originalFetch) {\n const getCacheEntries = React.cache(// eslint-disable-next-line @typescript-eslint/no-unused-vars -- url is the cache key\n (url)=>[]);\n return function dedupeFetch(resource, options) {\n if (options && options.signal) {\n // If we're passed a signal, then we assume that\n // someone else controls the lifetime of this object and opts out of\n // caching. It's effectively the opt-out mechanism.\n // Ideally we should be able to check this on the Request but\n // it always gets initialized with its own signal so we don't\n // know if it's supposed to override - unless we also override the\n // Request constructor.\n return originalFetch(resource, options);\n }\n // Normalize the Request\n let url;\n let cacheKey;\n if (typeof resource === 'string' && !options) {\n // Fast path.\n cacheKey = simpleCacheKey;\n url = resource;\n } else {\n // Normalize the request.\n // if resource is not a string or a URL (its an instance of Request)\n // then do not instantiate a new Request but instead\n // reuse the request as to not disturb the body in the event it's a ReadableStream.\n const request = typeof resource === 'string' || resource instanceof URL ? new Request(resource, options) : resource;\n if (request.method !== 'GET' && request.method !== 'HEAD' || request.keepalive) {\n // We currently don't dedupe requests that might have side-effects. Those\n // have to be explicitly cached. We assume that the request doesn't have a\n // body if it's GET or HEAD.\n // keepalive gets treated the same as if you passed a custom cache signal.\n return originalFetch(resource, options);\n }\n cacheKey = generateCacheKey(request);\n url = request.url;\n }\n const cacheEntries = getCacheEntries(url);\n for(let i = 0, j = cacheEntries.length; i < j; i += 1){\n const [key, promise] = cacheEntries[i];\n if (key === cacheKey) {\n return promise.then(()=>{\n const response = cacheEntries[i][2];\n if (!response) throw Object.defineProperty(new InvariantError('No cached response'), \"__NEXT_ERROR_CODE\", {\n value: \"E579\",\n enumerable: false,\n configurable: true\n });\n // We're cloning the response using this utility because there exists\n // a bug in the undici library around response cloning. See the\n // following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = cloneResponse(response);\n cacheEntries[i][2] = cloned2;\n return cloned1;\n });\n }\n }\n // We pass the original arguments here in case normalizing the Request\n // doesn't include all the options in this environment.\n const promise = originalFetch(resource, options);\n const entry = [\n cacheKey,\n promise,\n null\n ];\n cacheEntries.push(entry);\n return promise.then((response)=>{\n // We're cloning the response using this utility because there exists\n // a bug in the undici library around response cloning. See the\n // following pull request for more details:\n // https://github.com/vercel/next.js/pull/73274\n const [cloned1, cloned2] = cloneResponse(response);\n entry[2] = cloned2;\n return cloned1;\n });\n };\n}\n\n//# sourceMappingURL=dedupe-fetch.js.map","/*\n\nFiles in the rsc directory are meant to be packaged as part of the RSC graph using next-app-loader.\n\n*/ import * as React from 'react';\nfunction notImplemented() {\n throw Object.defineProperty(new Error('Taint can only be used with the taint flag.'), \"__NEXT_ERROR_CODE\", {\n value: \"E354\",\n enumerable: false,\n configurable: true\n });\n}\nexport const taintObjectReference = process.env.__NEXT_EXPERIMENTAL_REACT ? React.experimental_taintObjectReference : notImplemented;\nexport const taintUniqueValue = process.env.__NEXT_EXPERIMENTAL_REACT ? React.experimental_taintUniqueValue : notImplemented;\n\n//# sourceMappingURL=taint.js.map","import { resolveArray, resolveAsArrayOrUndefined } from '../generate/utils';\nimport { getSocialImageMetadataBaseFallback, isStringOrURL, resolveUrl, resolveAbsoluteUrlWithPathname } from './resolve-url';\nimport { resolveTitle } from './resolve-title';\nimport { isFullStringUrl } from '../../url';\nimport { warnOnce } from '../../../build/output/log';\nconst OgTypeFields = {\n article: [\n 'authors',\n 'tags'\n ],\n song: [\n 'albums',\n 'musicians'\n ],\n playlist: [\n 'albums',\n 'musicians'\n ],\n radio: [\n 'creators'\n ],\n video: [\n 'actors',\n 'directors',\n 'writers',\n 'tags'\n ],\n basic: [\n 'emails',\n 'phoneNumbers',\n 'faxNumbers',\n 'alternateLocale',\n 'audio',\n 'videos'\n ]\n};\nfunction resolveAndValidateImage(item, metadataBase, isStaticMetadataRouteFile) {\n if (!item) return undefined;\n const isItemUrl = isStringOrURL(item);\n const inputUrl = isItemUrl ? item : item.url;\n if (!inputUrl) return undefined;\n // process.env.VERCEL is set to \"1\" when System Environment Variables are\n // exposed. When exposed, validation is not necessary since we are falling back to\n // process.env.VERCEL_PROJECT_PRODUCTION_URL, process.env.VERCEL_BRANCH_URL, or\n // process.env.VERCEL_URL for the `metadataBase`. process.env.VERCEL is undefined\n // when System Environment Variables are not exposed. When not exposed, we cannot\n // detect in the build environment if the deployment is a Vercel deployment or not.\n //\n // x-ref: https://vercel.com/docs/projects/environment-variables/system-environment-variables#system-environment-variables\n const isUsingVercelSystemEnvironmentVariables = Boolean(process.env.VERCEL);\n const isRelativeUrl = typeof inputUrl === 'string' && !isFullStringUrl(inputUrl);\n // When no explicit metadataBase is specified by the user, we'll override it with the fallback metadata\n // under the following conditions:\n // - The provided URL is relative (ie ./og-image).\n // - The image is statically generated by Next.js (such as the special `opengraph-image` route)\n // In both cases, we want to ensure that across all environments, the ogImage is a fully qualified URL.\n // In the `opengraph-image` case, since the user isn't explicitly passing a relative path, this ensures\n // the ogImage will be properly discovered across different environments without the user needing to\n // have a bunch of `process.env` checks when defining their `metadataBase`.\n if (isRelativeUrl && (!metadataBase || isStaticMetadataRouteFile)) {\n const fallbackMetadataBase = getSocialImageMetadataBaseFallback(metadataBase);\n // When not using Vercel environment variables for URL injection, we aren't able to determine\n // a fallback value for `metadataBase`. For self-hosted setups, we want to warn\n // about this since the only fallback we'll be able to generate is `localhost`.\n // In development, we'll only warn for relative metadata that isn't part of the static\n // metadata conventions (eg `opengraph-image`), as otherwise it's currently very noisy\n // for common cases. Eventually we should remove this warning all together in favor of\n // devtools.\n const shouldWarn = !isUsingVercelSystemEnvironmentVariables && !metadataBase && (process.env.NODE_ENV === 'production' || !isStaticMetadataRouteFile);\n if (shouldWarn) {\n warnOnce(`metadataBase property in metadata export is not set for resolving social open graph or twitter images, using \"${fallbackMetadataBase.origin}\". See https://nextjs.org/docs/app/api-reference/functions/generate-metadata#metadatabase`);\n }\n metadataBase = fallbackMetadataBase;\n }\n return isItemUrl ? {\n url: resolveUrl(inputUrl, metadataBase)\n } : {\n ...item,\n // Update image descriptor url\n url: resolveUrl(inputUrl, metadataBase)\n };\n}\nexport function resolveImages(images, metadataBase, isStaticMetadataRouteFile) {\n const resolvedImages = resolveAsArrayOrUndefined(images);\n if (!resolvedImages) return resolvedImages;\n const nonNullableImages = [];\n for (const item of resolvedImages){\n const resolvedItem = resolveAndValidateImage(item, metadataBase, isStaticMetadataRouteFile);\n if (!resolvedItem) continue;\n nonNullableImages.push(resolvedItem);\n }\n return nonNullableImages;\n}\nconst ogTypeToFields = {\n article: OgTypeFields.article,\n book: OgTypeFields.article,\n 'music.song': OgTypeFields.song,\n 'music.album': OgTypeFields.song,\n 'music.playlist': OgTypeFields.playlist,\n 'music.radio_station': OgTypeFields.radio,\n 'video.movie': OgTypeFields.video,\n 'video.episode': OgTypeFields.video\n};\nfunction getFieldsByOgType(ogType) {\n if (!ogType || !(ogType in ogTypeToFields)) return OgTypeFields.basic;\n return ogTypeToFields[ogType].concat(OgTypeFields.basic);\n}\nexport const resolveOpenGraph = async (openGraph, metadataBase, pathname, metadataContext, titleTemplate)=>{\n if (!openGraph) return null;\n function resolveProps(target, og) {\n const ogType = og && 'type' in og ? og.type : undefined;\n const keys = getFieldsByOgType(ogType);\n for (const k of keys){\n const key = k;\n if (key in og && key !== 'url') {\n const value = og[key];\n target[key] = value ? resolveArray(value) : null;\n }\n }\n target.images = resolveImages(og.images, metadataBase, metadataContext.isStaticMetadataRouteFile);\n }\n const resolved = {\n ...openGraph,\n title: resolveTitle(openGraph.title, titleTemplate)\n };\n resolveProps(resolved, openGraph);\n resolved.url = openGraph.url ? resolveAbsoluteUrlWithPathname(openGraph.url, metadataBase, await pathname, metadataContext) : null;\n return resolved;\n};\nconst TwitterBasicInfoKeys = [\n 'site',\n 'siteId',\n 'creator',\n 'creatorId',\n 'description'\n];\nexport const resolveTwitter = (twitter, metadataBase, metadataContext, titleTemplate)=>{\n var _resolved_images;\n if (!twitter) return null;\n let card = 'card' in twitter ? twitter.card : undefined;\n const resolved = {\n ...twitter,\n title: resolveTitle(twitter.title, titleTemplate)\n };\n for (const infoKey of TwitterBasicInfoKeys){\n resolved[infoKey] = twitter[infoKey] || null;\n }\n resolved.images = resolveImages(twitter.images, metadataBase, metadataContext.isStaticMetadataRouteFile);\n card = card || (((_resolved_images = resolved.images) == null ? void 0 : _resolved_images.length) ? 'summary_large_image' : 'summary');\n resolved.card = card;\n if ('card' in resolved) {\n switch(resolved.card){\n case 'player':\n {\n resolved.players = resolveAsArrayOrUndefined(resolved.players) || [];\n break;\n }\n case 'app':\n {\n resolved.app = resolved.app || {};\n break;\n }\n case 'summary':\n case 'summary_large_image':\n break;\n default:\n resolved;\n }\n }\n return resolved;\n};\n\n//# sourceMappingURL=resolve-opengraph.js.map","import { isHTTPAccessFallbackError } from './http-access-fallback/http-access-fallback';\nimport { isRedirectError } from './redirect-error';\n/**\n * Returns true if the error is a navigation signal error. These errors are\n * thrown by user code to perform navigation operations and interrupt the React\n * render.\n */ export function isNextRouterError(error) {\n return isRedirectError(error) || isHTTPAccessFallbackError(error);\n}\n\n//# sourceMappingURL=is-next-router-error.js.map","import { workAsyncStorage } from '../app-render/work-async-storage.external';\nimport { ReflectAdapter } from '../web/spec-extension/adapters/reflect';\nimport { throwToInterruptStaticGeneration, postponeWithTracking, delayUntilRuntimeStage } from '../app-render/dynamic-rendering';\nimport { workUnitAsyncStorage, throwInvariantForMissingStore } from '../app-render/work-unit-async-storage.external';\nimport { InvariantError } from '../../shared/lib/invariant-error';\nimport { describeStringPropertyAccess, wellKnownProperties } from '../../shared/lib/utils/reflect-utils';\nimport { makeDevtoolsIOAwarePromise, makeHangingPromise } from '../dynamic-rendering-utils';\nimport { createDedupedByCallsiteServerErrorLoggerDev } from '../create-deduped-by-callsite-server-error-logger';\nimport { dynamicAccessAsyncStorage } from '../app-render/dynamic-access-async-storage.external';\nimport { RenderStage } from '../app-render/staged-rendering';\nexport function createParamsFromClient(underlyingParams, workStore) {\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, workStore, workUnitStore);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new InvariantError('createParamsFromClient should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E736\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n throw Object.defineProperty(new InvariantError('createParamsFromClient should not be called in a runtime prerender.'), \"__NEXT_ERROR_CODE\", {\n value: \"E770\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n if (process.env.NODE_ENV === 'development') {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const devFallbackParams = workUnitStore.devFallbackParams;\n return createRenderParamsInDev(underlyingParams, devFallbackParams, workStore, workUnitStore);\n } else {\n return createRenderParamsInProd(underlyingParams);\n }\n default:\n workUnitStore;\n }\n }\n throwInvariantForMissingStore();\n}\nexport const createServerParamsForMetadata = createServerParamsForServerSegment;\n// routes always runs in RSC context so it is equivalent to a Server Page Component\nexport function createServerParamsForRoute(underlyingParams, workStore) {\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, workStore, workUnitStore);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new InvariantError('createServerParamsForRoute should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E738\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderParams(underlyingParams, workUnitStore);\n case 'request':\n if (process.env.NODE_ENV === 'development') {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const devFallbackParams = workUnitStore.devFallbackParams;\n return createRenderParamsInDev(underlyingParams, devFallbackParams, workStore, workUnitStore);\n } else {\n return createRenderParamsInProd(underlyingParams);\n }\n default:\n workUnitStore;\n }\n }\n throwInvariantForMissingStore();\n}\nexport function createServerParamsForServerSegment(underlyingParams, workStore) {\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n return createStaticPrerenderParams(underlyingParams, workStore, workUnitStore);\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new InvariantError('createServerParamsForServerSegment should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E743\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-runtime':\n return createRuntimePrerenderParams(underlyingParams, workUnitStore);\n case 'request':\n if (process.env.NODE_ENV === 'development') {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n const devFallbackParams = workUnitStore.devFallbackParams;\n return createRenderParamsInDev(underlyingParams, devFallbackParams, workStore, workUnitStore);\n } else {\n return createRenderParamsInProd(underlyingParams);\n }\n default:\n workUnitStore;\n }\n }\n throwInvariantForMissingStore();\n}\nexport function createPrerenderParamsForClientSegment(underlyingParams) {\n const workStore = workAsyncStorage.getStore();\n if (!workStore) {\n throw Object.defineProperty(new InvariantError('Missing workStore in createPrerenderParamsForClientSegment'), \"__NEXT_ERROR_CODE\", {\n value: \"E773\",\n enumerable: false,\n configurable: true\n });\n }\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-client':\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams) {\n for(let key in underlyingParams){\n if (fallbackParams.has(key)) {\n // This params object has one or more fallback params, so we need\n // to consider the awaiting of this params object \"dynamic\". Since\n // we are in cacheComponents mode we encode this as a promise that never\n // resolves.\n return makeHangingPromise(workUnitStore.renderSignal, workStore.route, '`params`');\n }\n }\n }\n break;\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n throw Object.defineProperty(new InvariantError('createPrerenderParamsForClientSegment should not be called in cache contexts.'), \"__NEXT_ERROR_CODE\", {\n value: \"E734\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'request':\n break;\n default:\n workUnitStore;\n }\n }\n // We're prerendering in a mode that does not abort. We resolve the promise without\n // any tracking because we're just transporting a value from server to client where the tracking\n // will be applied.\n return Promise.resolve(underlyingParams);\n}\nfunction createStaticPrerenderParams(underlyingParams, workStore, prerenderStore) {\n switch(prerenderStore.type){\n case 'prerender':\n case 'prerender-client':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams) {\n for(const key in underlyingParams){\n if (fallbackParams.has(key)) {\n // This params object has one or more fallback params, so we need\n // to consider the awaiting of this params object \"dynamic\". Since\n // we are in cacheComponents mode we encode this as a promise that never\n // resolves.\n return makeHangingParams(underlyingParams, workStore, prerenderStore);\n }\n }\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = prerenderStore.fallbackRouteParams;\n if (fallbackParams) {\n for(const key in underlyingParams){\n if (fallbackParams.has(key)) {\n return makeErroringParams(underlyingParams, fallbackParams, workStore, prerenderStore);\n }\n }\n }\n break;\n }\n case 'prerender-legacy':\n break;\n default:\n prerenderStore;\n }\n return makeUntrackedParams(underlyingParams);\n}\nfunction createRuntimePrerenderParams(underlyingParams, workUnitStore) {\n return delayUntilRuntimeStage(workUnitStore, makeUntrackedParams(underlyingParams));\n}\nfunction createRenderParamsInProd(underlyingParams) {\n return makeUntrackedParams(underlyingParams);\n}\nfunction createRenderParamsInDev(underlyingParams, devFallbackParams, workStore, requestStore) {\n let hasFallbackParams = false;\n if (devFallbackParams) {\n for(let key in underlyingParams){\n if (devFallbackParams.has(key)) {\n hasFallbackParams = true;\n break;\n }\n }\n }\n return makeDynamicallyTrackedParamsWithDevWarnings(underlyingParams, hasFallbackParams, workStore, requestStore);\n}\nconst CachedParams = new WeakMap();\nconst fallbackParamsProxyHandler = {\n get: function get(target, prop, receiver) {\n if (prop === 'then' || prop === 'catch' || prop === 'finally') {\n const originalMethod = ReflectAdapter.get(target, prop, receiver);\n return ({\n [prop]: (...args)=>{\n const store = dynamicAccessAsyncStorage.getStore();\n if (store) {\n store.abortController.abort(Object.defineProperty(new Error(`Accessed fallback \\`params\\` during prerendering.`), \"__NEXT_ERROR_CODE\", {\n value: \"E691\",\n enumerable: false,\n configurable: true\n }));\n }\n return new Proxy(originalMethod.apply(target, args), fallbackParamsProxyHandler);\n }\n })[prop];\n }\n return ReflectAdapter.get(target, prop, receiver);\n }\n};\nfunction makeHangingParams(underlyingParams, workStore, prerenderStore) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const promise = new Proxy(makeHangingPromise(prerenderStore.renderSignal, workStore.route, '`params`'), fallbackParamsProxyHandler);\n CachedParams.set(underlyingParams, promise);\n return promise;\n}\nfunction makeErroringParams(underlyingParams, fallbackParams, workStore, prerenderStore) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const augmentedUnderlying = {\n ...underlyingParams\n };\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = Promise.resolve(augmentedUnderlying);\n CachedParams.set(underlyingParams, promise);\n Object.keys(underlyingParams).forEach((prop)=>{\n if (wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n if (fallbackParams.has(prop)) {\n Object.defineProperty(augmentedUnderlying, prop, {\n get () {\n const expression = describeStringPropertyAccess('params', prop);\n // In most dynamic APIs we also throw if `dynamic = \"error\"` however\n // for params is only dynamic when we're generating a fallback shell\n // and even when `dynamic = \"error\"` we still support generating dynamic\n // fallback shells\n // TODO remove this comment when cacheComponents is the default since there\n // will be no `dynamic = \"error\"`\n if (prerenderStore.type === 'prerender-ppr') {\n // PPR Prerender (no cacheComponents)\n postponeWithTracking(workStore.route, expression, prerenderStore.dynamicTracking);\n } else {\n // Legacy Prerender\n throwToInterruptStaticGeneration(expression, workStore, prerenderStore);\n }\n },\n enumerable: true\n });\n }\n }\n });\n return promise;\n}\nfunction makeUntrackedParams(underlyingParams) {\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n const promise = Promise.resolve(underlyingParams);\n CachedParams.set(underlyingParams, promise);\n return promise;\n}\nfunction makeDynamicallyTrackedParamsWithDevWarnings(underlyingParams, hasFallbackParams, workStore, requestStore) {\n if (requestStore.asyncApiPromises && hasFallbackParams) {\n // We wrap each instance of params in a `new Promise()`, because deduping\n // them across requests doesn't work anyway and this let us show each\n // await a different set of values. This is important when all awaits\n // are in third party which would otherwise track all the way to the\n // internal params.\n const sharedParamsParent = requestStore.asyncApiPromises.sharedParamsParent;\n const promise = new Promise((resolve, reject)=>{\n sharedParamsParent.then(()=>resolve(underlyingParams), reject);\n });\n // @ts-expect-error\n promise.displayName = 'params';\n return instrumentParamsPromiseWithDevWarnings(underlyingParams, promise, workStore);\n }\n const cachedParams = CachedParams.get(underlyingParams);\n if (cachedParams) {\n return cachedParams;\n }\n // We don't use makeResolvedReactPromise here because params\n // supports copying with spread and we don't want to unnecessarily\n // instrument the promise with spreadable properties of ReactPromise.\n const promise = hasFallbackParams ? makeDevtoolsIOAwarePromise(underlyingParams, requestStore, RenderStage.Runtime) : Promise.resolve(underlyingParams);\n const proxiedPromise = instrumentParamsPromiseWithDevWarnings(underlyingParams, promise, workStore);\n CachedParams.set(underlyingParams, proxiedPromise);\n return proxiedPromise;\n}\nfunction instrumentParamsPromiseWithDevWarnings(underlyingParams, promise, workStore) {\n // Track which properties we should warn for.\n const proxiedProperties = new Set();\n Object.keys(underlyingParams).forEach((prop)=>{\n if (wellKnownProperties.has(prop)) {\n // These properties cannot be shadowed because they need to be the\n // true underlying value for Promises to work correctly at runtime\n } else {\n proxiedProperties.add(prop);\n }\n });\n return new Proxy(promise, {\n get (target, prop, receiver) {\n if (typeof prop === 'string') {\n if (// We are accessing a property that was proxied to the promise instance\n proxiedProperties.has(prop)) {\n const expression = describeStringPropertyAccess('params', prop);\n warnForSyncAccess(workStore.route, expression);\n }\n }\n return ReflectAdapter.get(target, prop, receiver);\n },\n set (target, prop, value, receiver) {\n if (typeof prop === 'string') {\n proxiedProperties.delete(prop);\n }\n return ReflectAdapter.set(target, prop, value, receiver);\n },\n ownKeys (target) {\n const expression = '`...params` or similar expression';\n warnForSyncAccess(workStore.route, expression);\n return Reflect.ownKeys(target);\n }\n });\n}\nconst warnForSyncAccess = createDedupedByCallsiteServerErrorLoggerDev(createParamsAccessError);\nfunction createParamsAccessError(route, expression) {\n const prefix = route ? `Route \"${route}\" ` : 'This route ';\n return Object.defineProperty(new Error(`${prefix}used ${expression}. ` + `\\`params\\` is a Promise and must be unwrapped with \\`await\\` or \\`React.use()\\` before accessing its properties. ` + `Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`), \"__NEXT_ERROR_CODE\", {\n value: \"E834\",\n enumerable: false,\n configurable: true\n });\n}\n\n//# sourceMappingURL=params.js.map","/**\n * Extracts info about the server reference for the given server reference ID by\n * parsing the first byte of the hex-encoded ID.\n *\n * ```\n * Bit positions: [7] [6] [5] [4] [3] [2] [1] [0]\n * Bits: typeBit argMask restArgs\n * ```\n *\n * If the `typeBit` is `1` the server reference represents a `\"use cache\"`\n * function, otherwise a server action.\n *\n * The `argMask` encodes whether the function uses the argument at the\n * respective position.\n *\n * The `restArgs` bit indicates whether the function uses a rest parameter. It's\n * also set to 1 if the function has more than 6 args.\n *\n * @param id hex-encoded server reference ID\n */ export function extractInfoFromServerReferenceId(id) {\n const infoByte = parseInt(id.slice(0, 2), 16);\n const typeBit = infoByte >> 7 & 0x1;\n const argMask = infoByte >> 1 & 0x3f;\n const restArgs = infoByte & 0x1;\n const usedArgs = Array(6);\n for(let index = 0; index < 6; index++){\n const bitPosition = 5 - index;\n const bit = argMask >> bitPosition & 0x1;\n usedArgs[index] = bit === 1;\n }\n return {\n type: typeBit === 1 ? 'use-cache' : 'server-action',\n usedArgs: usedArgs,\n hasRestArgs: restArgs === 1\n };\n}\n/**\n * Creates a sparse array containing only the used arguments based on the\n * provided action info.\n */ export function omitUnusedArgs(args, info) {\n const filteredArgs = new Array(args.length);\n for(let index = 0; index < args.length; index++){\n if (index < 6 && info.usedArgs[index] || // This assumes that the server reference info byte has the restArgs bit\n // set to 1 if there are more than 6 args.\n index >= 6 && info.hasRestArgs) {\n filteredArgs[index] = args[index];\n }\n }\n return filteredArgs;\n}\n\n//# sourceMappingURL=server-reference-info.js.map","/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */ // Once postpone is in stable we should switch to importing the postpone export directly\nimport React from 'react';\nimport { DynamicServerError } from '../../client/components/hooks-server-context';\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout';\nimport { getRuntimeStagePromise, throwForMissingRequestStore, workUnitAsyncStorage } from './work-unit-async-storage.external';\nimport { workAsyncStorage } from '../app-render/work-async-storage.external';\nimport { makeHangingPromise } from '../dynamic-rendering-utils';\nimport { METADATA_BOUNDARY_NAME, VIEWPORT_BOUNDARY_NAME, OUTLET_BOUNDARY_NAME, ROOT_LAYOUT_BOUNDARY_NAME } from '../../lib/framework/boundary-constants';\nimport { scheduleOnNextTick } from '../../lib/scheduler';\nimport { BailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr';\nimport { InvariantError } from '../../shared/lib/invariant-error';\nconst hasPostpone = typeof React.unstable_postpone === 'function';\nexport function createDynamicTrackingState(isDebugDynamicAccesses) {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null\n };\n}\nexport function createDynamicValidationState() {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: []\n };\n}\nexport function getFirstDynamicReason(trackingState) {\n var _trackingState_dynamicAccesses_;\n return (_trackingState_dynamicAccesses_ = trackingState.dynamicAccesses[0]) == null ? void 0 : _trackingState_dynamicAccesses_.expression;\n}\n/**\n * This function communicates that the current scope should be treated as dynamic.\n *\n * In most cases this function is a no-op but if called during\n * a PPR prerender it will postpone the current sub-tree and calling\n * it during a normal prerender will cause the entire prerender to abort\n */ export function markCurrentScopeAsDynamic(store, workUnitStore, expression) {\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return;\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return;\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'request':\n break;\n default:\n workUnitStore;\n }\n }\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return;\n if (store.dynamicShouldError) {\n throw Object.defineProperty(new StaticGenBailoutError(`Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`), \"__NEXT_ERROR_CODE\", {\n value: \"E553\",\n enumerable: false,\n configurable: true\n });\n }\n if (workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender-ppr':\n return postponeWithTracking(store.route, expression, workUnitStore.dynamicTracking);\n case 'prerender-legacy':\n workUnitStore.revalidate = 0;\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = Object.defineProperty(new DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E550\",\n enumerable: false,\n configurable: true\n });\n store.dynamicUsageDescription = expression;\n store.dynamicUsageStack = err.stack;\n throw err;\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true;\n }\n break;\n default:\n workUnitStore;\n }\n }\n}\n/**\n * This function is meant to be used when prerendering without cacheComponents or PPR.\n * When called during a build it will cause Next.js to consider the route as dynamic.\n *\n * @internal\n */ export function throwToInterruptStaticGeneration(expression, store, prerenderStore) {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = Object.defineProperty(new DynamicServerError(`Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E558\",\n enumerable: false,\n configurable: true\n });\n prerenderStore.revalidate = 0;\n store.dynamicUsageDescription = expression;\n store.dynamicUsageStack = err.stack;\n throw err;\n}\n/**\n * This function should be used to track whether something dynamic happened even when\n * we are in a dynamic render. This is useful for Dev where all renders are dynamic but\n * we still track whether dynamic APIs were accessed for helpful messaging\n *\n * @internal\n */ export function trackDynamicDataInDynamicRender(workUnitStore) {\n switch(workUnitStore.type){\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return;\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return;\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n break;\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true;\n }\n break;\n default:\n workUnitStore;\n }\n}\nfunction abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore) {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`;\n const error = createPrerenderInterruptedError(reason);\n prerenderStore.controller.abort(error);\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n}\nexport function abortOnSynchronousPlatformIOAccess(route, expression, errorWithStack, prerenderStore) {\n const dynamicTracking = prerenderStore.dynamicTracking;\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore);\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack;\n }\n }\n}\n/**\n * use this function when prerendering with cacheComponents. If we are doing a\n * prospective prerender we don't actually abort because we want to discover\n * all caches for the shell. If this is the actual prerender we do abort.\n *\n * This function accepts a prerenderStore but the caller should ensure we're\n * actually running in cacheComponents mode.\n *\n * @internal\n */ export function abortAndThrowOnSynchronousRequestDataAccess(route, expression, errorWithStack, prerenderStore) {\n const prerenderSignal = prerenderStore.controller.signal;\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore);\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack;\n }\n }\n }\n throw createPrerenderInterruptedError(`Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`);\n}\nexport function Postpone({ reason, route }) {\n const prerenderStore = workUnitAsyncStorage.getStore();\n const dynamicTracking = prerenderStore && prerenderStore.type === 'prerender-ppr' ? prerenderStore.dynamicTracking : null;\n postponeWithTracking(route, reason, dynamicTracking);\n}\nexport function postponeWithTracking(route, expression, dynamicTracking) {\n assertPostpone();\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n React.unstable_postpone(createPostponeReason(route, expression));\n}\nfunction createPostponeReason(route, expression) {\n return `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` + `React throws this special object to indicate where. It should not be caught by ` + `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;\n}\nexport function isDynamicPostpone(err) {\n if (typeof err === 'object' && err !== null && typeof err.message === 'string') {\n return isDynamicPostponeReason(err.message);\n }\n return false;\n}\nfunction isDynamicPostponeReason(reason) {\n return reason.includes('needs to bail out of prerendering at this point because it used') && reason.includes('Learn more: https://nextjs.org/docs/messages/ppr-caught-error');\n}\nif (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) {\n throw Object.defineProperty(new Error('Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'), \"__NEXT_ERROR_CODE\", {\n value: \"E296\",\n enumerable: false,\n configurable: true\n });\n}\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED';\nfunction createPrerenderInterruptedError(message) {\n const error = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = NEXT_PRERENDER_INTERRUPTED;\n return error;\n}\nexport function isPrerenderInterruptedError(error) {\n return typeof error === 'object' && error !== null && error.digest === NEXT_PRERENDER_INTERRUPTED && 'name' in error && 'message' in error && error instanceof Error;\n}\nexport function accessedDynamicData(dynamicAccesses) {\n return dynamicAccesses.length > 0;\n}\nexport function consumeDynamicAccess(serverDynamic, clientDynamic) {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses);\n return serverDynamic.dynamicAccesses;\n}\nexport function formatDynamicAPIAccesses(dynamicAccesses) {\n return dynamicAccesses.filter((access)=>typeof access.stack === 'string' && access.stack.length > 0).map(({ expression, stack })=>{\n stack = stack.split('\\n')// Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4).filter((line)=>{\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false;\n }\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' (<anonymous>)')) {\n return false;\n }\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false;\n }\n return true;\n }).join('\\n');\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`;\n });\n}\nfunction assertPostpone() {\n if (!hasPostpone) {\n throw Object.defineProperty(new Error(`Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`), \"__NEXT_ERROR_CODE\", {\n value: \"E224\",\n enumerable: false,\n configurable: true\n });\n }\n}\n/**\n * This is a bit of a hack to allow us to abort a render using a Postpone instance instead of an Error which changes React's\n * abort semantics slightly.\n */ export function createRenderInBrowserAbortSignal() {\n const controller = new AbortController();\n controller.abort(Object.defineProperty(new BailoutToCSRError('Render in Browser'), \"__NEXT_ERROR_CODE\", {\n value: \"E721\",\n enumerable: false,\n configurable: true\n }));\n return controller.signal;\n}\n/**\n * In a prerender, we may end up with hanging Promises as inputs due them\n * stalling on connection() or because they're loading dynamic data. In that\n * case we need to abort the encoding of arguments since they'll never complete.\n */ export function createHangingInputAbortSignal(workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController();\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(()=>{\n controller.abort();\n });\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the runtime stage,\n // at which point all runtime inputs will be resolved.\n // (otherwise, a runtime prerender might consider `cookies()` hanging\n // even though they'd resolve in the next task.)\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n const runtimeStagePromise = getRuntimeStagePromise(workUnitStore);\n if (runtimeStagePromise) {\n runtimeStagePromise.then(()=>scheduleOnNextTick(()=>controller.abort()));\n } else {\n scheduleOnNextTick(()=>controller.abort());\n }\n }\n return controller.signal;\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n return undefined;\n default:\n workUnitStore;\n }\n}\nexport function annotateDynamicAccess(expression, prerenderStore) {\n const dynamicTracking = prerenderStore.dynamicTracking;\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses ? new Error().stack : undefined,\n expression\n });\n }\n}\nexport function useDynamicRouteParams(expression) {\n const workStore = workAsyncStorage.getStore();\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (workStore && workUnitStore) {\n switch(workUnitStore.type){\n case 'prerender-client':\n case 'prerender':\n {\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n // We are in a prerender with cacheComponents semantics. We are going to\n // hang here and never resolve. This will cause the currently\n // rendering component to effectively be a dynamic hole.\n React.use(makeHangingPromise(workUnitStore.renderSignal, workStore.route, expression));\n }\n break;\n }\n case 'prerender-ppr':\n {\n const fallbackParams = workUnitStore.fallbackRouteParams;\n if (fallbackParams && fallbackParams.size > 0) {\n return postponeWithTracking(workStore.route, expression, workUnitStore.dynamicTracking);\n }\n break;\n }\n case 'prerender-runtime':\n throw Object.defineProperty(new InvariantError(`\\`${expression}\\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E771\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'private-cache':\n throw Object.defineProperty(new InvariantError(`\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E745\",\n enumerable: false,\n configurable: true\n });\n case 'prerender-legacy':\n case 'request':\n case 'unstable-cache':\n break;\n default:\n workUnitStore;\n }\n }\n}\nexport function useDynamicSearchParams(expression) {\n const workStore = workAsyncStorage.getStore();\n const workUnitStore = workUnitAsyncStorage.getStore();\n if (!workStore) {\n // We assume pages router context and just return\n return;\n }\n if (!workUnitStore) {\n throwForMissingRequestStore(expression);\n }\n switch(workUnitStore.type){\n case 'prerender-client':\n {\n React.use(makeHangingPromise(workUnitStore.renderSignal, workStore.route, expression));\n break;\n }\n case 'prerender-legacy':\n case 'prerender-ppr':\n {\n if (workStore.forceStatic) {\n return;\n }\n throw Object.defineProperty(new BailoutToCSRError(expression), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n }\n case 'prerender':\n case 'prerender-runtime':\n throw Object.defineProperty(new InvariantError(`\\`${expression}\\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E795\",\n enumerable: false,\n configurable: true\n });\n case 'cache':\n case 'unstable-cache':\n case 'private-cache':\n throw Object.defineProperty(new InvariantError(`\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`), \"__NEXT_ERROR_CODE\", {\n value: \"E745\",\n enumerable: false,\n configurable: true\n });\n case 'request':\n return;\n default:\n workUnitStore;\n }\n}\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(<anonymous>\\)/;\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags = 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6';\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense (<anonymous>)\n// at SomeComponent (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(`\\\\n\\\\s+at Suspense \\\\(<anonymous>\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(<anonymous>\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`);\nconst hasMetadataRegex = new RegExp(`\\\\n\\\\s+at ${METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasViewportRegex = new RegExp(`\\\\n\\\\s+at ${VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`);\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`);\nexport function trackAllowedDynamicAccess(workStore, componentStack, dynamicValidation, clientDynamic) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true;\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack);\n return;\n } else {\n const message = `Route \"${workStore.route}\": Uncached data was accessed outside of ` + '<Suspense>. This delays the entire page from rendering, resulting in a ' + 'slow user experience. Learn more: ' + 'https://nextjs.org/docs/messages/blocking-route';\n const error = createErrorWithComponentOrOwnerStack(message, componentStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n }\n}\nexport function trackDynamicHoleInRuntimeShell(workStore, componentStack, dynamicValidation, clientDynamic) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed inside \\`generateMetadata\\`. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`;\n const error = createErrorWithComponentOrOwnerStack(message, componentStack);\n dynamicValidation.dynamicMetadata = error;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed inside \\`generateViewport\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`;\n const error = createErrorWithComponentOrOwnerStack(message, componentStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack);\n return;\n } else {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed outside of \\`<Suspense>\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`;\n const error = createErrorWithComponentOrOwnerStack(message, componentStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n }\n}\nexport function trackDynamicHoleInStaticShell(workStore, componentStack, dynamicValidation, clientDynamic) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return;\n } else if (hasMetadataRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateMetadata\\` or you have file-based metadata such as icons that depend on dynamic params segments. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`;\n const error = createErrorWithComponentOrOwnerStack(message, componentStack);\n dynamicValidation.dynamicMetadata = error;\n return;\n } else if (hasViewportRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateViewport\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`;\n const error = createErrorWithComponentOrOwnerStack(message, componentStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true;\n dynamicValidation.hasSuspenseAboveBody = true;\n return;\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true;\n return;\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(clientDynamic.syncDynamicErrorWithStack);\n return;\n } else {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed outside of \\`<Suspense>\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`;\n const error = createErrorWithComponentOrOwnerStack(message, componentStack);\n dynamicValidation.dynamicErrors.push(error);\n return;\n }\n}\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n */ function createErrorWithComponentOrOwnerStack(message, componentStack) {\n const ownerStack = process.env.NODE_ENV !== 'production' && React.captureOwnerStack ? React.captureOwnerStack() : null;\n const error = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right\n //\n error.stack = error.name + ': ' + message + (ownerStack || componentStack);\n return error;\n}\nexport var PreludeState = /*#__PURE__*/ function(PreludeState) {\n PreludeState[PreludeState[\"Full\"] = 0] = \"Full\";\n PreludeState[PreludeState[\"Empty\"] = 1] = \"Empty\";\n PreludeState[PreludeState[\"Errored\"] = 2] = \"Errored\";\n return PreludeState;\n}({});\nexport function logDisallowedDynamicError(workStore, error) {\n console.error(error);\n if (!workStore.dev) {\n if (workStore.hasReadableErrorStacks) {\n console.error(`To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \\`next dev\\`, then open \"${workStore.route}\" in your browser to investigate the error.`);\n } else {\n console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following:\n - Start the app in development mode by running \\`next dev\\`, then open \"${workStore.route}\" in your browser to investigate the error.\n - Rerun the production build with \\`next build --debug-prerender\\` to generate better stack traces.`);\n }\n }\n}\nexport function throwIfDisallowedDynamic(workStore, prelude, dynamicValidation, serverDynamic) {\n if (serverDynamic.syncDynamicErrorWithStack) {\n logDisallowedDynamicError(workStore, serverDynamic.syncDynamicErrorWithStack);\n throw new StaticGenBailoutError();\n }\n if (prelude !== 0) {\n if (dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return;\n }\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n for(let i = 0; i < dynamicErrors.length; i++){\n logDisallowedDynamicError(workStore, dynamicErrors[i]);\n }\n throw new StaticGenBailoutError();\n }\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(`Route \"${workStore.route}\" has a \\`generateViewport\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`);\n throw new StaticGenBailoutError();\n }\n if (prelude === 1) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(`Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`);\n throw new StaticGenBailoutError();\n }\n } else {\n if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.hasDynamicMetadata) {\n console.error(`Route \"${workStore.route}\" has a \\`generateMetadata\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`);\n throw new StaticGenBailoutError();\n }\n }\n}\nexport function getStaticShellDisallowedDynamicReasons(workStore, prelude, dynamicValidation) {\n if (dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return [];\n }\n if (prelude !== 0) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors;\n if (dynamicErrors.length > 0) {\n return dynamicErrors;\n }\n if (prelude === 1) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n return [\n Object.defineProperty(new InvariantError(`Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`), \"__NEXT_ERROR_CODE\", {\n value: \"E936\",\n enumerable: false,\n configurable: true\n })\n ];\n }\n } else {\n // We have a prelude but we might still have dynamic metadata without any other dynamic access\n if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.dynamicErrors.length === 0 && dynamicValidation.dynamicMetadata) {\n return [\n dynamicValidation.dynamicMetadata\n ];\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return [];\n}\nexport function delayUntilRuntimeStage(prerenderStore, result) {\n if (prerenderStore.runtimeStagePromise) {\n return prerenderStore.runtimeStagePromise.then(()=>result);\n }\n return result;\n}\n\n//# sourceMappingURL=dynamic-rendering.js.map"],"names":["normalizePathSep","path","replace","ensureLeadingSlash","startsWith","DEFAULT_SEGMENT_KEY","NOT_FOUND_SEGMENT_KEY","PAGE_SEGMENT_KEY","addSearchParamsIfPageSegment","computeSelectedLayoutSegment","getSegmentValue","getSelectedLayoutSegmentPath","isGroupSegment","isParallelRouteSegment","segment","Array","isArray","endsWith","searchParams","isPageSegment","includes","stringifiedQuery","JSON","stringify","segments","parallelRouteKey","length","rawSegment","tree","first","segmentPath","node","parallelRoutes","children","Object","values","segmentValue","push","normalizeAppPath","normalizeRscURL","route","split","reduce","pathname","index","url","isAppRouteRoute","DEFAULT_METADATA_ROUTE_EXTENSIONS","STATIC_METADATA_IMAGES","getExtensionRegexString","isMetadataPage","isMetadataRoute","isMetadataRouteFile","isStaticMetadataFile","isStaticMetadataRoute","icon","filename","extensions","apple","favicon","openGraph","twitter","staticExtensions","dynamicExtensions","result","join","appDirRelativePath","FAVICON_REGEX","ROBOTS_TXT_REGEX","MANIFEST_JSON_REGEX","MANIFEST_WEBMANIFEST_REGEX","SITEMAP_XML_REGEX","compiledRegexCache","Map","fastPathCheck","normalizedPath","test","getCompiledRegexes","pageExtensions","strictlyMatchExtensions","cacheKey","cached","get","trailingMatcher","variantsMatcher","groupSuffix","suffixMatcher","robotsExts","manifestExts","regexes","RegExp","set","fastResult","i","matched","page","process","env","NEXT_RUNTIME","require","module","exports","normalizeLocalePath","cache","WeakMap","locales","lowercasedLocales","map","locale","toLowerCase","detectedLocale","indexOf","slice","getPathMatch","options","keys","regexp","pathToRegexp","delimiter","sensitive","strict","matcher","regexpToFunction","regexModifier","source","flags","params","match","removeUnnamedParams","key","name","ACTION_SUFFIX","APP_DIR_ALIAS","CACHE_ONE_YEAR","DOT_NEXT_ALIAS","ESLINT_DEFAULT_DIRS","GSP_NO_RETURNED_VALUE","GSSP_COMPONENT_MEMBER_ERROR","GSSP_NO_RETURNED_VALUE","HTML_CONTENT_TYPE_HEADER","INFINITE_CACHE","INSTRUMENTATION_HOOK_FILENAME","JSON_CONTENT_TYPE_HEADER","MATCHED_PATH_HEADER","MIDDLEWARE_FILENAME","MIDDLEWARE_LOCATION_REGEXP","NEXT_BODY_SUFFIX","NEXT_CACHE_IMPLICIT_TAG_ID","NEXT_CACHE_REVALIDATED_TAGS_HEADER","NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER","NEXT_CACHE_SOFT_TAG_MAX_LENGTH","NEXT_CACHE_TAGS_HEADER","NEXT_CACHE_TAG_MAX_ITEMS","NEXT_CACHE_TAG_MAX_LENGTH","NEXT_DATA_SUFFIX","NEXT_INTERCEPTION_MARKER_PREFIX","NEXT_META_SUFFIX","NEXT_QUERY_PARAM_PREFIX","NEXT_RESUME_HEADER","NON_STANDARD_NODE_ENV","PAGES_DIR_ALIAS","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","PROXY_FILENAME","PROXY_LOCATION_REGEXP","PUBLIC_DIR_MIDDLEWARE_CONFLICT","ROOT_DIR_ALIAS","RSC_ACTION_CLIENT_WRAPPER_ALIAS","RSC_ACTION_ENCRYPTION_ALIAS","RSC_ACTION_PROXY_ALIAS","RSC_ACTION_VALIDATE_ALIAS","RSC_CACHE_WRAPPER_ALIAS","RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS","RSC_MOD_REF_PROXY_ALIAS","RSC_SEGMENTS_DIR_SUFFIX","RSC_SEGMENT_SUFFIX","RSC_SUFFIX","SERVER_PROPS_EXPORT_ERROR","SERVER_PROPS_GET_INIT_PROPS_CONFLICT","SERVER_PROPS_SSG_CONFLICT","SERVER_RUNTIME","SSG_FALLBACK_EXPORT_ERROR","SSG_GET_INITIAL_PROPS_CONFLICT","STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR","TEXT_PLAIN_CONTENT_TYPE_HEADER","UNSTABLE_REVALIDATE_RENAME_ERROR","WEBPACK_LAYERS","WEBPACK_RESOURCE_QUERIES","WEB_SOCKET_MAX_RECONNECTIONS","edge","experimentalEdge","nodejs","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","apiNode","apiEdge","middleware","instrument","edgeAsset","appPagesBrowser","pagesDirBrowser","pagesDirEdge","pagesDirNode","GROUP","builtinReact","serverOnly","neutralTarget","clientOnly","bundled","appPages","edgeSSREntry","metadata","metadataRoute","metadataImageMeta","INTERCEPTION_ROUTE_MARKERS","extractInterceptionRouteInformation","isInterceptionRouteAppPath","find","m","undefined","interceptingRoute","marker","interceptedRoute","Error","concat","splitInterceptingRoute","escapeStringRegexp","reHasRegExp","reReplaceRegExp","str","removeTrailingSlash","parseLoaderTree","modules","layout","template","defaultPage","conventionPath","getParamProperties","getSegmentParam","isCatchAll","interceptionMarker","paramType","paramName","type","repeat","optional","isInterceptionAppRoute","isNormalizedAppRoute","parseAppRoute","parseAppRouteSegment","param","normalized","pathnameSegments","filter","Boolean","appSegment","InvariantError","parts","dynamicSegments","interceptionPrefixFromParamType","resolveParamValue","getParamValueFromSegment","pathSegment","interceptionPrefix","depth","processedSegments","value","hasOwnProperty","paramValue","PARAMETER_PATTERN","getDynamicParam","interpolateParallelRouteParams","parseMatchedParameter","parseParameter","getParamValue","interpolatedParams","segmentKey","fallbackRouteParams","has","searchValue","encodeURIComponent","loaderTree","pagePath","interpolated","structuredClone","stack","pop","nextDepth","parallelRoute","dynamicParamType","treeSegment","getNamedMiddlewareRegex","getNamedRouteRegex","getRouteRegex","getParametrizedRoute","includeSuffix","includePrefix","groups","groupIndex","markerMatch","paramMatches","pos","s","substring","parameterizedRoute","normalizedRoute","excludeOptionalTrailingSlash","re","buildGetSafeRouteKey","routeKey","j","String","fromCharCode","Math","floor","getSafeKeyFromSegment","getSafeRouteKey","routeKeys","keyPrefix","backreferenceDuplicateKeys","cleanedKey","invalidKey","isNaN","parseInt","duplicateKey","pattern","getNamedParametrizedRoute","prefixRouteKeys","reference","names","intercepted","inverseParts","hasInterceptionMarker","some","namedParameterizedRoute","pathToRegexpPattern","namedRegex","catchAll","catchAllRegex","catchAllGroupedRegex","DecodeError","MiddlewareNotFoundError","MissingStaticPage","NormalizeError","PageNotFoundError","SP","ST","WEB_VITALS","execOnce","getDisplayName","getLocationOrigin","getURL","isAbsoluteUrl","isResSent","loadGetInitialProps","normalizeRepeatedSlashes","stringifyError","fn","used","args","ABSOLUTE_URL_REGEX","protocol","hostname","port","window","location","href","origin","Component","displayName","res","finished","headersSent","urlParts","urlNoQuery","App","ctx","NODE_ENV","prototype","getInitialProps","message","pageProps","props","console","warn","performance","every","method","constructor","code","error","PARAM_SEPARATOR","hasAdjacentParameterIssues","normalizeAdjacentParameters","normalizeTokensForRegexp","stripNormalizedSeparators","stripParameterSeparators","tokens","token","modifier","prefix","suffix","cleaned","entries","item","safeCompile","safePathToRegexp","safeRegexpToFunction","safeRouteMatcher","needsNormalization","routeToUse","retryError","compiler","compile","originalMatcher","matcherFn","getRouteMatcher","rawMatcher","routeMatch","exec","decode","decodeURIComponent","group","entry","assign","searchParamsToUrlQuery","urlQueryToSearchParams","query","existing","stringifyUrlQueryParam","URLSearchParams","append","target","searchParamsList","delete","parseRelativeUrl","base","parseQuery","globalBase","URL","resolvedBase","search","hash","slashes","parseUrl","parsedURL","getCookieParser","headers","parseCookie","cookie","parse","parseCookieFn","compileNonPath","matchHas","parseDestination","prepareDestination","getSafeParamName","newParamName","charCode","charCodeAt","escapeSegment","segmentName","unescapeSegments","req","missing","hasMatch","hasItem","cookies","host","matches","forEach","groupKey","allMatch","validate","escaped","destination","parsed","parsedDestination","destHostname","destQuery","destSearch","destPath","destParams","destPathParamKeys","destHostnameParamKeys","destPathCompiler","destHostnameCompiler","strOrArray","paramKeys","appendParamsToQuery","newUrl","err","fromNodeOutgoingHttpHeaders","normalizeNextQueryParam","splitCookiesString","toNodeOutgoingHttpHeaders","validateURL","nodeHeaders","Headers","v","toString","cookiesString","cookiesStrings","start","ch","lastComma","nextStart","cookiesSeparatorFound","skipWhitespace","charAt","notSpecialChar","cause","prefixes","decodeQueryPathParameter","ACTION_HEADER","FLIGHT_HEADERS","NEXT_ACTION_NOT_FOUND_HEADER","NEXT_ACTION_REVALIDATED_HEADER","NEXT_DID_POSTPONE_HEADER","NEXT_HMR_REFRESH_HASH_COOKIE","NEXT_HMR_REFRESH_HEADER","NEXT_HTML_REQUEST_ID_HEADER","NEXT_IS_PRERENDER_HEADER","NEXT_REQUEST_ID_HEADER","NEXT_REWRITTEN_PATH_HEADER","NEXT_REWRITTEN_QUERY_HEADER","NEXT_ROUTER_PREFETCH_HEADER","NEXT_ROUTER_SEGMENT_PREFETCH_HEADER","NEXT_ROUTER_STALE_TIME_HEADER","NEXT_ROUTER_STATE_TREE_HEADER","NEXT_RSC_UNION_QUERY","NEXT_URL","RSC_CONTENT_TYPE_HEADER","RSC_HEADER","isFullStringUrl","parseReqUrl","stripNextRscUnionQuery","DUMMY_ORIGIN","parsedUrl","getAll","legacyUrl","auth","relativeUrl","urlInstance","formatUrl","formatWithValidation","urlObjectKeys","slashedProtocols","urlObj","querystring","getPreviouslyRevalidatedTags","getServerUtils","interpolateDynamicPath","normalizeCdnUrl","normalizeDynamicRouteParams","filterInternalQuery","isNextQueryPrefix","isNextInterceptionMarkerPrefix","_parsedUrl","defaultRouteRegex","builtParam","replaceAll","defaultRouteMatches","ignoreMissingOptional","hasValidParams","defaultValue","isOptional","isDefaultValue","defaultVal","val","i18n","basePath","rewrites","pageIsDynamic","trailingSlash","caseSensitive","dynamicRouteMatcher","handleRewrites","rewrittenParsedUrl","rewriteParams","fsPathname","matchesPage","fsPathnameNoSlash","checkRewrite","rewrite","hasParams","nextInternalLocale","dynamicParams","beforeFiles","afterFiles","fallback","getParamsFromRouteMatches","routeMatchesHeader","obj","fromEntries","normalizedKey","keyName","routeMatches","normalizeQueryParams","routeParamKeys","add","previewModeId","djb2Hash","hexHash","char","fillMetadataSegment","normalizeMetadataPageToRoute","normalizeMetadataRoute","getMetadataRouteSuffix","parentPathname","dirname","seg","lastSegment","routeRegex","ext","posix","routeSuffix","dir","baseName","isDynamic","isRoute","routePagePath","metadataRouteExtension","mapped","vendored","ReactServerDOMTurbopackStatic","React","Activity","useContext","use","Suspense","useDeferredValue","ReactDOM","LayoutRouterContext","GlobalLayoutRouterContext","TemplateContext","unresolvedThenable","ErrorBoundary","matchSegment","disableSmoothScrollDuringRouteTransition","RedirectBoundary","HTTPAccessFallbackBoundary","createRouterCacheKey","useRouterBFCache","NavigationPromisesContext","getParamValueFromCacheKey","isDeferredRsc","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","findDOMNode","instance","internal_reactDOMfindDOMNode","rectProperties","shouldSkipElement","element","getComputedStyle","position","rect","getBoundingClientRect","topOfElementInViewport","viewportHeight","top","getHashFragmentDomNode","hashFragment","document","body","getElementById","getElementsByName","InnerScrollAndFocusHandler","componentDidMount","handlePotentialScroll","componentDidUpdate","focusAndScrollRef","apply","render","segmentPaths","scrollRefSegmentPath","domNode","Element","HTMLElement","parentElement","localName","nextElementSibling","scrollIntoView","htmlElement","documentElement","clientHeight","scrollTop","dontForceLayout","onlyHashChange","focus","ScrollAndFocusHandler","context","InnerLayoutRouter","debugNameContext","cacheNode","maybeCacheNode","isActive","parentNavPromises","resolvedPrefetchRsc","prefetchRsc","rsc","resolvedRsc","unwrappedRsc","navigationPromises","createNestedLayoutNavigationPromises","Provider","parentTree","parentCacheNode","parentSegmentPath","parentParams","LoadingBoundary","loading","loadingModuleData","then","promiseForLoading","loadingRsc","loadingStyles","loadingScripts","OuterLayoutRouter","parallelRouterKey","errorStyles","errorScripts","templateStyles","templateScripts","notFound","forbidden","unauthorized","segmentViewBoundaries","parentParallelRoutes","segmentMap","parentTreeSegment","activeTree","activeSegment","activeStateKey","bfcacheEntry","stateKey","segmentBoundaryTriggerNode","segmentViewStateNode","SegmentBoundaryTriggerNode","SegmentViewStateNode","pagePrefix","paramCacheKey","debugName","getBoundaryDebugNameFromSegment","childDebugNameContext","isVirtual","debugNameToDisplay","child","errorComponent","SegmentStateProvider","__NEXT_CACHE_COMPONENTS","mode","next","isVirtualLayout","RenderFromTemplateContext","urlSearchParamsToParsedUrlQuery","SearchParamsContext","ClientPageRoot","serverProvidedParams","layoutRouterContext","workAsyncStorage","clientSearchParams","clientParams","store","getStore","createSearchParamsFromClient","createParamsFromClient","createRenderSearchParamsFromClient","createRenderParamsFromClient","ClientSegmentRoot","slots","useUntrackedPathname","HTTPAccessErrorStatus","getAccessFallbackHTTPStatus","getAccessFallbackErrorTypeByStatus","isHTTPAccessFallbackError","warnOnce","MissingSlotContext","HTTPAccessFallbackErrorBoundary","state","triggeredStatus","previousPathname","componentDidCatch","missingSlots","size","warningMessage","formattedSlots","from","sort","a","b","localeCompare","slot","getDerivedStateFromError","httpStatus","getDerivedStateFromProps","errorComponents","NOT_FOUND","FORBIDDEN","UNAUTHORIZED","isNotFound","isForbidden","isUnauthorized","meta","content","hasErrorFallback","IconMark","METADATA_BOUNDARY_NAME","VIEWPORT_BOUNDARY_NAME","OUTLET_BOUNDARY_NAME","ROOT_LAYOUT_BOUNDARY_NAME","NameSpace","MetadataBoundary","ViewportBoundary","OutletBoundary","RootLayoutBoundary"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,41,43,45,47,49,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114]}
|