vinext 0.0.30 → 0.0.32
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/README.md +15 -7
- package/dist/build/prerender.d.ts +188 -0
- package/dist/build/prerender.js +675 -0
- package/dist/build/prerender.js.map +1 -0
- package/dist/build/report.d.ts +45 -46
- package/dist/build/report.js +581 -276
- package/dist/build/report.js.map +1 -1
- package/dist/build/run-prerender.d.ts +62 -0
- package/dist/build/run-prerender.js +183 -0
- package/dist/build/run-prerender.js.map +1 -0
- package/dist/build/server-manifest.d.ts +19 -0
- package/dist/build/server-manifest.js +29 -0
- package/dist/build/server-manifest.js.map +1 -0
- package/dist/build/static-export.d.ts +51 -66
- package/dist/build/static-export.js +51 -545
- package/dist/build/static-export.js.map +1 -1
- package/dist/check.d.ts +26 -24
- package/dist/check.js +681 -571
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts +1 -15
- package/dist/cli.js +432 -491
- package/dist/cli.js.map +1 -1
- package/dist/client/entry.d.ts +1 -2
- package/dist/client/entry.js +49 -62
- package/dist/client/entry.js.map +1 -1
- package/dist/client/validate-module-path.d.ts +4 -1
- package/dist/client/validate-module-path.js +23 -28
- package/dist/client/validate-module-path.js.map +1 -1
- package/dist/client/vinext-next-data.d.ts +15 -20
- package/dist/client/vinext-next-data.js +0 -1
- package/dist/cloudflare/index.d.ts +3 -8
- package/dist/cloudflare/index.js +3 -8
- package/dist/cloudflare/kv-cache-handler.d.ts +95 -105
- package/dist/cloudflare/kv-cache-handler.js +354 -380
- package/dist/cloudflare/kv-cache-handler.js.map +1 -1
- package/dist/cloudflare/tpr.d.ts +36 -34
- package/dist/cloudflare/tpr.js +460 -603
- package/dist/cloudflare/tpr.js.map +1 -1
- package/dist/config/config-matchers.d.ts +31 -40
- package/dist/config/config-matchers.js +727 -936
- package/dist/config/config-matchers.js.map +1 -1
- package/dist/config/dotenv.d.ts +18 -11
- package/dist/config/dotenv.js +79 -84
- package/dist/config/dotenv.js.map +1 -1
- package/dist/config/next-config.d.ts +156 -146
- package/dist/config/next-config.js +376 -464
- package/dist/config/next-config.js.map +1 -1
- package/dist/deploy.d.ts +87 -96
- package/dist/deploy.js +490 -628
- package/dist/deploy.js.map +1 -1
- package/dist/entries/app-browser-entry.d.ts +4 -1
- package/dist/entries/app-browser-entry.js +12 -8
- package/dist/entries/app-browser-entry.js.map +1 -1
- package/dist/entries/app-rsc-entry.d.ts +33 -20
- package/dist/entries/app-rsc-entry.js +444 -212
- package/dist/entries/app-rsc-entry.js.map +1 -1
- package/dist/entries/app-ssr-entry.d.ts +9 -1
- package/dist/entries/app-ssr-entry.js +61 -28
- package/dist/entries/app-ssr-entry.js.map +1 -1
- package/dist/entries/pages-client-entry.d.ts +6 -2
- package/dist/entries/pages-client-entry.js +30 -33
- package/dist/entries/pages-client-entry.js.map +1 -1
- package/dist/entries/pages-entry-helpers.d.ts +5 -1
- package/dist/entries/pages-entry-helpers.js +17 -14
- package/dist/entries/pages-entry-helpers.js.map +1 -1
- package/dist/entries/pages-server-entry.d.ts +6 -2
- package/dist/entries/pages-server-entry.js +86 -114
- package/dist/entries/pages-server-entry.js.map +1 -1
- package/dist/index.d.ts +92 -60
- package/dist/index.js +2151 -3133
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +40 -37
- package/dist/init.js +201 -258
- package/dist/init.js.map +1 -1
- package/dist/plugins/async-hooks-stub.d.ts +7 -3
- package/dist/plugins/async-hooks-stub.js +39 -42
- package/dist/plugins/async-hooks-stub.js.map +1 -1
- package/dist/plugins/client-reference-dedup.d.ts +7 -3
- package/dist/plugins/client-reference-dedup.js +63 -88
- package/dist/plugins/client-reference-dedup.js.map +1 -1
- package/dist/routing/app-router.d.ts +100 -96
- package/dist/routing/app-router.js +560 -670
- package/dist/routing/app-router.js.map +1 -1
- package/dist/routing/file-matcher.d.ts +18 -15
- package/dist/routing/file-matcher.js +65 -65
- package/dist/routing/file-matcher.js.map +1 -1
- package/dist/routing/pages-router.d.ts +23 -24
- package/dist/routing/pages-router.js +147 -172
- package/dist/routing/pages-router.js.map +1 -1
- package/dist/routing/route-trie.d.ts +23 -20
- package/dist/routing/route-trie.js +131 -151
- package/dist/routing/route-trie.js.map +1 -1
- package/dist/routing/route-validation.d.ts +5 -2
- package/dist/routing/route-validation.js +98 -130
- package/dist/routing/route-validation.js.map +1 -1
- package/dist/routing/utils.d.ts +10 -7
- package/dist/routing/utils.js +75 -111
- package/dist/routing/utils.js.map +1 -1
- package/dist/server/api-handler.d.ts +8 -13
- package/dist/server/api-handler.js +160 -193
- package/dist/server/api-handler.js.map +1 -1
- package/dist/server/app-router-entry.d.ts +6 -16
- package/dist/server/app-router-entry.js +26 -54
- package/dist/server/app-router-entry.js.map +1 -1
- package/dist/server/dev-module-runner.d.ts +11 -64
- package/dist/server/dev-module-runner.js +89 -101
- package/dist/server/dev-module-runner.js.map +1 -1
- package/dist/server/dev-origin-check.d.ts +12 -10
- package/dist/server/dev-origin-check.js +98 -108
- package/dist/server/dev-origin-check.js.map +1 -1
- package/dist/server/dev-server.d.ts +19 -15
- package/dist/server/dev-server.js +543 -871
- package/dist/server/dev-server.js.map +1 -1
- package/dist/server/html.d.ts +4 -1
- package/dist/server/html.js +25 -26
- package/dist/server/html.js.map +1 -1
- package/dist/server/image-optimization.d.ts +31 -28
- package/dist/server/image-optimization.js +181 -210
- package/dist/server/image-optimization.js.map +1 -1
- package/dist/server/instrumentation.d.ts +34 -59
- package/dist/server/instrumentation.js +112 -125
- package/dist/server/instrumentation.js.map +1 -1
- package/dist/server/isr-cache.d.ts +16 -26
- package/dist/server/isr-cache.js +106 -128
- package/dist/server/isr-cache.js.map +1 -1
- package/dist/server/metadata-routes.d.ts +85 -88
- package/dist/server/metadata-routes.js +270 -317
- package/dist/server/metadata-routes.js.map +1 -1
- package/dist/server/middleware-codegen.d.ts +7 -4
- package/dist/server/middleware-codegen.js +61 -61
- package/dist/server/middleware-codegen.js.map +1 -1
- package/dist/server/middleware-request-headers.d.ts +8 -6
- package/dist/server/middleware-request-headers.js +47 -65
- package/dist/server/middleware-request-headers.js.map +1 -1
- package/dist/server/middleware.d.ts +32 -47
- package/dist/server/middleware.js +261 -409
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/normalize-path.d.ts +4 -1
- package/dist/server/normalize-path.js +33 -47
- package/dist/server/normalize-path.js.map +1 -1
- package/dist/server/pages-i18n.d.ts +38 -30
- package/dist/server/pages-i18n.js +112 -139
- package/dist/server/pages-i18n.js.map +1 -1
- package/dist/server/prod-server.d.ts +19 -31
- package/dist/server/prod-server.js +715 -945
- package/dist/server/prod-server.js.map +1 -1
- package/dist/server/request-log.d.ts +18 -12
- package/dist/server/request-log.js +45 -52
- package/dist/server/request-log.js.map +1 -1
- package/dist/server/request-pipeline.d.ts +9 -17
- package/dist/server/request-pipeline.js +133 -184
- package/dist/server/request-pipeline.js.map +1 -1
- package/dist/server/worker-utils.d.ts +4 -1
- package/dist/server/worker-utils.js +31 -37
- package/dist/server/worker-utils.js.map +1 -1
- package/dist/shims/amp.d.ts +5 -2
- package/dist/shims/amp.js +19 -15
- package/dist/shims/amp.js.map +1 -1
- package/dist/shims/app.d.ts +8 -10
- package/dist/shims/app.js +0 -1
- package/dist/shims/cache-runtime.d.ts +20 -45
- package/dist/shims/cache-runtime.js +271 -422
- package/dist/shims/cache-runtime.js.map +1 -1
- package/dist/shims/cache.d.ts +130 -121
- package/dist/shims/cache.js +339 -427
- package/dist/shims/cache.js.map +1 -1
- package/dist/shims/client-only.d.ts +1 -18
- package/dist/shims/client-only.js +0 -17
- package/dist/shims/compat-router.d.ts +6 -1
- package/dist/shims/compat-router.js +23 -19
- package/dist/shims/compat-router.js.map +1 -1
- package/dist/shims/config.d.ts +7 -5
- package/dist/shims/config.js +16 -23
- package/dist/shims/config.js.map +1 -1
- package/dist/shims/constants.d.ts +119 -118
- package/dist/shims/constants.js +159 -164
- package/dist/shims/constants.js.map +1 -1
- package/dist/shims/document.d.ts +20 -16
- package/dist/shims/document.js +41 -22
- package/dist/shims/document.js.map +1 -1
- package/dist/shims/dynamic.d.ts +13 -22
- package/dist/shims/dynamic.js +122 -136
- package/dist/shims/dynamic.js.map +1 -1
- package/dist/shims/error-boundary.d.ts +22 -15
- package/dist/shims/error-boundary.js +81 -79
- package/dist/shims/error-boundary.js.map +1 -1
- package/dist/shims/error.d.ts +11 -12
- package/dist/shims/error.js +35 -39
- package/dist/shims/error.js.map +1 -1
- package/dist/shims/fetch-cache.d.ts +16 -14
- package/dist/shims/fetch-cache.js +439 -645
- package/dist/shims/fetch-cache.js.map +1 -1
- package/dist/shims/font-google-base.d.ts +28 -26
- package/dist/shims/font-google-base.js +238 -325
- package/dist/shims/font-google-base.js.map +1 -1
- package/dist/shims/font-google.d.ts +3 -3
- package/dist/shims/font-google.generated.d.ts +1928 -1924
- package/dist/shims/font-google.generated.js +1928 -2133
- package/dist/shims/font-google.generated.js.map +1 -1
- package/dist/shims/font-google.js +3 -3
- package/dist/shims/font-local.d.ts +28 -26
- package/dist/shims/font-local.js +204 -260
- package/dist/shims/font-local.js.map +1 -1
- package/dist/shims/form.d.ts +13 -27
- package/dist/shims/form.js +128 -180
- package/dist/shims/form.js.map +1 -1
- package/dist/shims/head-state.d.ts +8 -13
- package/dist/shims/head-state.js +25 -42
- package/dist/shims/head-state.js.map +1 -1
- package/dist/shims/head.d.ts +17 -20
- package/dist/shims/head.js +194 -250
- package/dist/shims/head.js.map +1 -1
- package/dist/shims/headers.d.ts +84 -78
- package/dist/shims/headers.js +447 -575
- package/dist/shims/headers.js.map +1 -1
- package/dist/shims/i18n-context.d.ts +16 -20
- package/dist/shims/i18n-context.js +35 -48
- package/dist/shims/i18n-context.js.map +1 -1
- package/dist/shims/i18n-state.d.ts +8 -14
- package/dist/shims/i18n-state.js +34 -42
- package/dist/shims/i18n-state.js.map +1 -1
- package/dist/shims/image-config.d.ts +11 -8
- package/dist/shims/image-config.js +50 -83
- package/dist/shims/image-config.js.map +1 -1
- package/dist/shims/image.d.ts +37 -46
- package/dist/shims/image.js +283 -308
- package/dist/shims/image.js.map +1 -1
- package/dist/shims/internal/api-utils.d.ts +7 -4
- package/dist/shims/internal/api-utils.js +0 -6
- package/dist/shims/internal/app-router-context.d.ts +22 -17
- package/dist/shims/internal/app-router-context.js +17 -13
- package/dist/shims/internal/app-router-context.js.map +1 -1
- package/dist/shims/internal/cookies.d.ts +2 -9
- package/dist/shims/internal/cookies.js +2 -9
- package/dist/shims/internal/parse-cookie-header.d.ts +4 -1
- package/dist/shims/internal/parse-cookie-header.js +29 -29
- package/dist/shims/internal/parse-cookie-header.js.map +1 -1
- package/dist/shims/internal/router-context.d.ts +7 -1
- package/dist/shims/internal/router-context.js +11 -7
- package/dist/shims/internal/router-context.js.map +1 -1
- package/dist/shims/internal/utils.d.ts +40 -37
- package/dist/shims/internal/utils.js +24 -30
- package/dist/shims/internal/utils.js.map +1 -1
- package/dist/shims/internal/work-unit-async-storage.d.ts +6 -10
- package/dist/shims/internal/work-unit-async-storage.js +14 -11
- package/dist/shims/internal/work-unit-async-storage.js.map +1 -1
- package/dist/shims/layout-segment-context.d.ts +11 -14
- package/dist/shims/layout-segment-context.js +24 -23
- package/dist/shims/layout-segment-context.js.map +1 -1
- package/dist/shims/legacy-image.d.ts +39 -46
- package/dist/shims/legacy-image.js +47 -42
- package/dist/shims/legacy-image.js.map +1 -1
- package/dist/shims/link.d.ts +32 -36
- package/dist/shims/link.js +255 -391
- package/dist/shims/link.js.map +1 -1
- package/dist/shims/metadata.d.ts +210 -202
- package/dist/shims/metadata.js +545 -546
- package/dist/shims/metadata.js.map +1 -1
- package/dist/shims/navigation-state.d.ts +10 -18
- package/dist/shims/navigation-state.js +66 -74
- package/dist/shims/navigation-state.js.map +1 -1
- package/dist/shims/navigation.d.ts +59 -63
- package/dist/shims/navigation.js +505 -704
- package/dist/shims/navigation.js.map +1 -1
- package/dist/shims/og.d.ts +2 -20
- package/dist/shims/og.js +2 -19
- package/dist/shims/readonly-url-search-params.d.ts +8 -5
- package/dist/shims/readonly-url-search-params.js +26 -22
- package/dist/shims/readonly-url-search-params.js.map +1 -1
- package/dist/shims/request-context.d.ts +8 -5
- package/dist/shims/request-context.js +50 -60
- package/dist/shims/request-context.js.map +1 -1
- package/dist/shims/request-state-types.d.ts +11 -11
- package/dist/shims/request-state-types.js +0 -1
- package/dist/shims/router-state.d.ts +13 -10
- package/dist/shims/router-state.js +34 -43
- package/dist/shims/router-state.js.map +1 -1
- package/dist/shims/router.d.ts +81 -85
- package/dist/shims/router.js +506 -628
- package/dist/shims/router.js.map +1 -1
- package/dist/shims/script.d.ts +39 -48
- package/dist/shims/script.js +107 -160
- package/dist/shims/script.js.map +1 -1
- package/dist/shims/server-only.d.ts +1 -19
- package/dist/shims/server-only.js +0 -18
- package/dist/shims/server.d.ts +213 -164
- package/dist/shims/server.js +545 -478
- package/dist/shims/server.js.map +1 -1
- package/dist/shims/unified-request-context.d.ts +20 -20
- package/dist/shims/unified-request-context.js +81 -99
- package/dist/shims/unified-request-context.js.map +1 -1
- package/dist/shims/url-safety.d.ts +4 -1
- package/dist/shims/url-safety.js +15 -11
- package/dist/shims/url-safety.js.map +1 -1
- package/dist/shims/url-utils.d.ts +8 -5
- package/dist/shims/url-utils.js +62 -93
- package/dist/shims/url-utils.js.map +1 -1
- package/dist/shims/web-vitals.d.ts +10 -8
- package/dist/shims/web-vitals.js +9 -15
- package/dist/shims/web-vitals.js.map +1 -1
- package/dist/utils/base-path.d.ts +5 -2
- package/dist/utils/base-path.js +21 -19
- package/dist/utils/base-path.js.map +1 -1
- package/dist/utils/domain-locale.d.ts +17 -9
- package/dist/utils/domain-locale.js +36 -56
- package/dist/utils/domain-locale.js.map +1 -1
- package/dist/utils/hash.d.ts +4 -1
- package/dist/utils/hash.js +19 -17
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/manifest-paths.d.ts +6 -3
- package/dist/utils/manifest-paths.js +15 -16
- package/dist/utils/manifest-paths.js.map +1 -1
- package/dist/utils/project.d.ts +13 -11
- package/dist/utils/project.js +169 -216
- package/dist/utils/project.js.map +1 -1
- package/dist/utils/query.d.ts +8 -6
- package/dist/utils/query.js +57 -67
- package/dist/utils/query.js.map +1 -1
- package/package.json +10 -9
- package/dist/build/report.d.ts.map +0 -1
- package/dist/build/static-export.d.ts.map +0 -1
- package/dist/check.d.ts.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/client/entry.d.ts.map +0 -1
- package/dist/client/validate-module-path.d.ts.map +0 -1
- package/dist/client/vinext-next-data.d.ts.map +0 -1
- package/dist/client/vinext-next-data.js.map +0 -1
- package/dist/cloudflare/index.d.ts.map +0 -1
- package/dist/cloudflare/index.js.map +0 -1
- package/dist/cloudflare/kv-cache-handler.d.ts.map +0 -1
- package/dist/cloudflare/tpr.d.ts.map +0 -1
- package/dist/config/config-matchers.d.ts.map +0 -1
- package/dist/config/dotenv.d.ts.map +0 -1
- package/dist/config/next-config.d.ts.map +0 -1
- package/dist/deploy.d.ts.map +0 -1
- package/dist/entries/app-browser-entry.d.ts.map +0 -1
- package/dist/entries/app-rsc-entry.d.ts.map +0 -1
- package/dist/entries/app-ssr-entry.d.ts.map +0 -1
- package/dist/entries/pages-client-entry.d.ts.map +0 -1
- package/dist/entries/pages-entry-helpers.d.ts.map +0 -1
- package/dist/entries/pages-server-entry.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/init.d.ts.map +0 -1
- package/dist/plugins/async-hooks-stub.d.ts.map +0 -1
- package/dist/plugins/client-reference-dedup.d.ts.map +0 -1
- package/dist/routing/app-router.d.ts.map +0 -1
- package/dist/routing/file-matcher.d.ts.map +0 -1
- package/dist/routing/pages-router.d.ts.map +0 -1
- package/dist/routing/route-trie.d.ts.map +0 -1
- package/dist/routing/route-validation.d.ts.map +0 -1
- package/dist/routing/utils.d.ts.map +0 -1
- package/dist/server/api-handler.d.ts.map +0 -1
- package/dist/server/app-router-entry.d.ts.map +0 -1
- package/dist/server/dev-module-runner.d.ts.map +0 -1
- package/dist/server/dev-origin-check.d.ts.map +0 -1
- package/dist/server/dev-server.d.ts.map +0 -1
- package/dist/server/html.d.ts.map +0 -1
- package/dist/server/image-optimization.d.ts.map +0 -1
- package/dist/server/instrumentation.d.ts.map +0 -1
- package/dist/server/isr-cache.d.ts.map +0 -1
- package/dist/server/metadata-routes.d.ts.map +0 -1
- package/dist/server/middleware-codegen.d.ts.map +0 -1
- package/dist/server/middleware-request-headers.d.ts.map +0 -1
- package/dist/server/middleware.d.ts.map +0 -1
- package/dist/server/normalize-path.d.ts.map +0 -1
- package/dist/server/pages-i18n.d.ts.map +0 -1
- package/dist/server/prod-server.d.ts.map +0 -1
- package/dist/server/request-log.d.ts.map +0 -1
- package/dist/server/request-pipeline.d.ts.map +0 -1
- package/dist/server/worker-utils.d.ts.map +0 -1
- package/dist/shims/amp.d.ts.map +0 -1
- package/dist/shims/app.d.ts.map +0 -1
- package/dist/shims/app.js.map +0 -1
- package/dist/shims/cache-runtime.d.ts.map +0 -1
- package/dist/shims/cache.d.ts.map +0 -1
- package/dist/shims/client-only.d.ts.map +0 -1
- package/dist/shims/client-only.js.map +0 -1
- package/dist/shims/compat-router.d.ts.map +0 -1
- package/dist/shims/config.d.ts.map +0 -1
- package/dist/shims/constants.d.ts.map +0 -1
- package/dist/shims/document.d.ts.map +0 -1
- package/dist/shims/dynamic.d.ts.map +0 -1
- package/dist/shims/error-boundary.d.ts.map +0 -1
- package/dist/shims/error.d.ts.map +0 -1
- package/dist/shims/fetch-cache.d.ts.map +0 -1
- package/dist/shims/font-google-base.d.ts.map +0 -1
- package/dist/shims/font-google.d.ts.map +0 -1
- package/dist/shims/font-google.generated.d.ts.map +0 -1
- package/dist/shims/font-google.js.map +0 -1
- package/dist/shims/font-local.d.ts.map +0 -1
- package/dist/shims/form.d.ts.map +0 -1
- package/dist/shims/head-state.d.ts.map +0 -1
- package/dist/shims/head.d.ts.map +0 -1
- package/dist/shims/headers.d.ts.map +0 -1
- package/dist/shims/i18n-context.d.ts.map +0 -1
- package/dist/shims/i18n-state.d.ts.map +0 -1
- package/dist/shims/image-config.d.ts.map +0 -1
- package/dist/shims/image.d.ts.map +0 -1
- package/dist/shims/internal/api-utils.d.ts.map +0 -1
- package/dist/shims/internal/api-utils.js.map +0 -1
- package/dist/shims/internal/app-router-context.d.ts.map +0 -1
- package/dist/shims/internal/cookies.d.ts.map +0 -1
- package/dist/shims/internal/cookies.js.map +0 -1
- package/dist/shims/internal/parse-cookie-header.d.ts.map +0 -1
- package/dist/shims/internal/router-context.d.ts.map +0 -1
- package/dist/shims/internal/utils.d.ts.map +0 -1
- package/dist/shims/internal/work-unit-async-storage.d.ts.map +0 -1
- package/dist/shims/layout-segment-context.d.ts.map +0 -1
- package/dist/shims/legacy-image.d.ts.map +0 -1
- package/dist/shims/link.d.ts.map +0 -1
- package/dist/shims/metadata.d.ts.map +0 -1
- package/dist/shims/navigation-state.d.ts.map +0 -1
- package/dist/shims/navigation.d.ts.map +0 -1
- package/dist/shims/og.d.ts.map +0 -1
- package/dist/shims/og.js.map +0 -1
- package/dist/shims/readonly-url-search-params.d.ts.map +0 -1
- package/dist/shims/request-context.d.ts.map +0 -1
- package/dist/shims/request-state-types.d.ts.map +0 -1
- package/dist/shims/request-state-types.js.map +0 -1
- package/dist/shims/router-state.d.ts.map +0 -1
- package/dist/shims/router.d.ts.map +0 -1
- package/dist/shims/script.d.ts.map +0 -1
- package/dist/shims/server-only.d.ts.map +0 -1
- package/dist/shims/server-only.js.map +0 -1
- package/dist/shims/server.d.ts.map +0 -1
- package/dist/shims/unified-request-context.d.ts.map +0 -1
- package/dist/shims/url-safety.d.ts.map +0 -1
- package/dist/shims/url-utils.d.ts.map +0 -1
- package/dist/shims/web-vitals.d.ts.map +0 -1
- package/dist/utils/base-path.d.ts.map +0 -1
- package/dist/utils/domain-locale.d.ts.map +0 -1
- package/dist/utils/hash.d.ts.map +0 -1
- package/dist/utils/manifest-paths.d.ts.map +0 -1
- package/dist/utils/project.d.ts.map +0 -1
- package/dist/utils/query.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/shims/metadata.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Metadata support for App Router.\n *\n * Handles `export const metadata` and `export async function generateMetadata()`.\n * Resolves metadata from layouts and pages (pages override layouts).\n */\nimport React from \"react\";\n\n// ---------------------------------------------------------------------------\n// Viewport types and resolution\n// ---------------------------------------------------------------------------\n\n/**\n * Normalize null-prototype objects from matchPattern() into thenable objects.\n * See entries/app-rsc-entry.ts makeThenableParams() for full explanation.\n */\nfunction makeThenableParams<T extends Record<string, unknown>>(obj: T): Promise<T> & T {\n const plain = { ...obj } as T;\n return Object.assign(Promise.resolve(plain), plain);\n}\n\nexport interface Viewport {\n /** Viewport width (default: \"device-width\") */\n width?: string | number;\n /** Viewport height */\n height?: string | number;\n /** Initial scale */\n initialScale?: number;\n /** Minimum scale */\n minimumScale?: number;\n /** Maximum scale */\n maximumScale?: number;\n /** Whether user can scale */\n userScalable?: boolean;\n /** Theme color — single color or array of { media, color } */\n themeColor?: string | Array<{ media?: string; color: string }>;\n /** Color scheme: 'light' | 'dark' | 'light dark' | 'normal' */\n colorScheme?: string;\n}\n\n/**\n * Resolve viewport config from a module. Handles both static `viewport` export\n * and async `generateViewport()` function.\n */\nexport async function resolveModuleViewport(\n mod: Record<string, unknown>,\n params: Record<string, string | string[]>,\n): Promise<Viewport | null> {\n if (typeof mod.generateViewport === \"function\") {\n const asyncParams = makeThenableParams(params);\n return await mod.generateViewport({ params: asyncParams });\n }\n if (mod.viewport && typeof mod.viewport === \"object\") {\n return mod.viewport as Viewport;\n }\n return null;\n}\n\n/**\n * Merge viewport configs from multiple sources (layouts + page).\n * Later entries override earlier ones.\n */\nexport const DEFAULT_VIEWPORT: Viewport = {\n width: \"device-width\",\n initialScale: 1,\n};\n\nexport function mergeViewport(viewportList: Viewport[]): Viewport {\n const merged: Viewport = { ...DEFAULT_VIEWPORT };\n for (const vp of viewportList) {\n Object.assign(merged, vp);\n }\n return merged;\n}\n\n/**\n * React component that renders viewport meta tags into <head>.\n */\nexport function ViewportHead({ viewport }: { viewport: Viewport }) {\n const elements: React.ReactElement[] = [];\n let key = 0;\n\n // Build viewport content string\n const parts: string[] = [];\n if (viewport.width !== undefined) parts.push(`width=${viewport.width}`);\n if (viewport.height !== undefined) parts.push(`height=${viewport.height}`);\n if (viewport.initialScale !== undefined) parts.push(`initial-scale=${viewport.initialScale}`);\n if (viewport.minimumScale !== undefined) parts.push(`minimum-scale=${viewport.minimumScale}`);\n if (viewport.maximumScale !== undefined) parts.push(`maximum-scale=${viewport.maximumScale}`);\n if (viewport.userScalable !== undefined)\n parts.push(`user-scalable=${viewport.userScalable ? \"yes\" : \"no\"}`);\n\n if (parts.length > 0) {\n elements.push(<meta key={key++} name=\"viewport\" content={parts.join(\", \")} />);\n }\n\n // Theme color\n if (viewport.themeColor) {\n if (typeof viewport.themeColor === \"string\") {\n elements.push(<meta key={key++} name=\"theme-color\" content={viewport.themeColor} />);\n } else if (Array.isArray(viewport.themeColor)) {\n for (const entry of viewport.themeColor) {\n elements.push(\n <meta\n key={key++}\n name=\"theme-color\"\n content={entry.color}\n {...(entry.media ? { media: entry.media } : {})}\n />,\n );\n }\n }\n }\n\n // Color scheme\n if (viewport.colorScheme) {\n elements.push(<meta key={key++} name=\"color-scheme\" content={viewport.colorScheme} />);\n }\n\n return <>{elements}</>;\n}\n\n// ---------------------------------------------------------------------------\n// Metadata types and resolution\n// ---------------------------------------------------------------------------\n\nexport interface Metadata {\n title?: string | { default?: string; template?: string; absolute?: string };\n description?: string;\n generator?: string;\n applicationName?: string;\n referrer?: string;\n keywords?: string | string[];\n authors?: Array<{ name?: string; url?: string }> | { name?: string; url?: string };\n creator?: string;\n publisher?: string;\n robots?:\n | string\n | {\n index?: boolean;\n follow?: boolean;\n googleBot?: string | { index?: boolean; follow?: boolean; [key: string]: unknown };\n [key: string]: unknown;\n };\n openGraph?: {\n title?: string;\n description?: string;\n url?: string | URL;\n siteName?: string;\n images?:\n | string\n | URL\n | { url: string | URL; width?: number; height?: number; alt?: string }\n | Array<string | URL | { url: string | URL; width?: number; height?: number; alt?: string }>;\n videos?: Array<{ url: string | URL; width?: number; height?: number }>;\n audio?: Array<{ url: string | URL }>;\n locale?: string;\n type?: string;\n publishedTime?: string;\n modifiedTime?: string;\n authors?: string[];\n };\n twitter?: {\n card?: string;\n site?: string;\n siteId?: string;\n title?: string;\n description?: string;\n images?:\n | string\n | URL\n | { url: string | URL; alt?: string; width?: number; height?: number }\n | Array<string | URL | { url: string | URL; alt?: string; width?: number; height?: number }>;\n creator?: string;\n creatorId?: string;\n players?: TwitterPlayerDescriptor | TwitterPlayerDescriptor[];\n app?: TwitterAppDescriptor;\n };\n icons?: {\n icon?:\n | string\n | URL\n | Array<{ url: string | URL; sizes?: string; type?: string; media?: string }>;\n shortcut?: string | URL | Array<string | URL>;\n apple?: string | URL | Array<{ url: string | URL; sizes?: string; type?: string }>;\n other?: Array<{ rel: string; url: string | URL; sizes?: string; type?: string }>;\n };\n manifest?: string | URL;\n alternates?: {\n canonical?: string | URL;\n languages?: Record<string, string | URL>;\n media?: Record<string, string | URL>;\n types?: Record<string, string | URL>;\n };\n verification?: {\n google?: string;\n yahoo?: string;\n yandex?: string;\n other?: Record<string, string | string[]>;\n };\n metadataBase?: URL | null;\n appleWebApp?: {\n capable?: boolean;\n title?: string;\n statusBarStyle?: string;\n startupImage?: string | Array<{ url: string; media?: string }>;\n };\n formatDetection?: {\n email?: boolean;\n address?: boolean;\n telephone?: boolean;\n };\n category?: string;\n itunes?: {\n appId: string;\n appArgument?: string;\n };\n appLinks?: {\n ios?: AppLinksApple | AppLinksApple[];\n iphone?: AppLinksApple | AppLinksApple[];\n ipad?: AppLinksApple | AppLinksApple[];\n android?: AppLinksAndroid | AppLinksAndroid[];\n windows_phone?: AppLinksWindows | AppLinksWindows[];\n windows?: AppLinksWindows | AppLinksWindows[];\n windows_universal?: AppLinksWindows | AppLinksWindows[];\n web?: AppLinksWeb | AppLinksWeb[];\n };\n other?: Record<string, string | string[]>;\n [key: string]: unknown;\n}\n\ninterface AppLinksApple {\n url: string | URL;\n app_store_id?: string | number;\n app_name?: string;\n}\n\ninterface AppLinksAndroid {\n package: string;\n url?: string | URL;\n class?: string;\n app_name?: string;\n}\n\ninterface AppLinksWindows {\n url: string | URL;\n app_id?: string;\n app_name?: string;\n}\n\ninterface AppLinksWeb {\n url: string | URL;\n should_fallback?: boolean;\n}\n\ninterface TwitterPlayerDescriptor {\n playerUrl: string | URL;\n streamUrl: string | URL;\n width: number;\n height: number;\n}\n\ninterface TwitterAppDescriptor {\n id: {\n iphone?: string | number;\n ipad?: string | number;\n googleplay?: string;\n };\n url?: {\n iphone?: string | URL;\n ipad?: string | URL;\n googleplay?: string | URL;\n };\n name?: string;\n}\n\n/**\n * Merge metadata from multiple sources (layouts + page).\n *\n * The list is ordered [rootLayout, nestedLayout, ..., page].\n * Title template from layouts applies to the page title but NOT to\n * the segment that defines the template itself. `title.absolute`\n * skips all templates. `title.default` is the fallback when no\n * child provides a title.\n *\n * Shallow merge: later entries override earlier ones (per Next.js docs).\n */\nexport function mergeMetadata(metadataList: Metadata[]): Metadata {\n if (metadataList.length === 0) return {};\n\n const merged: Metadata = {};\n\n // Track the most recent title template from LAYOUTS (not from page).\n // The page is always the last entry in metadataList.\n let parentTemplate: string | undefined;\n\n for (let i = 0; i < metadataList.length; i++) {\n const meta = metadataList[i];\n const isPage = i === metadataList.length - 1;\n\n // Collect template from layouts only (page templates are ignored per Next.js spec)\n if (!isPage && meta.title && typeof meta.title === \"object\" && meta.title.template) {\n parentTemplate = meta.title.template;\n }\n\n // Shallow merge — later entries override earlier for top-level keys\n for (const key of Object.keys(meta)) {\n if (key === \"title\") continue; // Handle title separately below\n (merged as Record<string, unknown>)[key] = (meta as Record<string, unknown>)[key];\n }\n\n // Title resolution\n if (meta.title !== undefined) {\n merged.title = meta.title;\n }\n }\n\n // Now resolve the final title, applying the parent template if applicable\n const finalTitle = merged.title;\n if (finalTitle) {\n if (typeof finalTitle === \"string\") {\n // Simple string title — apply parent template\n if (parentTemplate) {\n merged.title = parentTemplate.replace(\"%s\", finalTitle);\n }\n } else if (typeof finalTitle === \"object\") {\n if (finalTitle.absolute) {\n // Absolute title — skip all templates\n merged.title = finalTitle.absolute;\n } else if (finalTitle.default) {\n // Title object with default — this is used when the segment IS the\n // defining layout (its own default doesn't get template-wrapped)\n merged.title = finalTitle.default;\n } else if (finalTitle.template && !finalTitle.default && !finalTitle.absolute) {\n // Template only with no default — no title to render\n merged.title = undefined;\n }\n }\n }\n\n return merged;\n}\n\n/**\n * Resolve metadata from a module. Handles both static `metadata` export\n * and async `generateMetadata()` function.\n *\n * @param parent - A Promise that resolves to the accumulated (merged) metadata\n * from all ancestor segments. Passed as the second argument to\n * `generateMetadata()`, matching Next.js's eager-execution-with-serial-\n * resolution approach. If not provided, defaults to a promise that resolves\n * to an empty object (so `await parent` never throws).\n */\nexport async function resolveModuleMetadata(\n mod: Record<string, unknown>,\n params: Record<string, string | string[]> = {},\n searchParams?: Record<string, string>,\n parent: Promise<Metadata> = Promise.resolve({}),\n): Promise<Metadata | null> {\n if (typeof mod.generateMetadata === \"function\") {\n // Next.js 16 passes params/searchParams as Promises (async pattern).\n // makeThenableParams() normalises null-prototype + preserves sync access.\n const asyncParams = makeThenableParams(params);\n const sp = searchParams ?? {};\n const asyncSp = makeThenableParams(sp);\n return await mod.generateMetadata({ params: asyncParams, searchParams: asyncSp }, parent);\n }\n if (mod.metadata && typeof mod.metadata === \"object\") {\n return mod.metadata as Metadata;\n }\n return null;\n}\n\n/**\n * React component that renders metadata as HTML head elements.\n * Used by the RSC entry to inject into the <head>.\n */\nexport function MetadataHead({ metadata }: { metadata: Metadata }) {\n const elements: React.ReactElement[] = [];\n let key = 0;\n\n // Resolve metadataBase for URL composition\n const base = metadata.metadataBase;\n function resolveUrl(url: string | URL): string;\n function resolveUrl(url: string | URL | undefined): string | undefined;\n function resolveUrl(url: string | URL | undefined): string | undefined {\n if (!url) return undefined;\n // Coerce URL objects to strings (Next.js metadata allows string | URL)\n const s = typeof url === \"string\" ? url : url instanceof URL ? url.toString() : String(url);\n if (!base) return s;\n if (s.startsWith(\"http://\") || s.startsWith(\"https://\") || s.startsWith(\"//\")) return s;\n try {\n return new URL(s, base).toString();\n } catch {\n return s;\n }\n }\n\n // Title\n const title =\n typeof metadata.title === \"string\"\n ? metadata.title\n : typeof metadata.title === \"object\"\n ? metadata.title.absolute || metadata.title.default\n : undefined;\n if (title) {\n elements.push(<title key={key++}>{title}</title>);\n }\n\n // Description\n if (metadata.description) {\n elements.push(<meta key={key++} name=\"description\" content={metadata.description} />);\n }\n\n // Generator\n if (metadata.generator) {\n elements.push(<meta key={key++} name=\"generator\" content={metadata.generator} />);\n }\n\n // Application name\n if (metadata.applicationName) {\n elements.push(<meta key={key++} name=\"application-name\" content={metadata.applicationName} />);\n }\n\n // Referrer\n if (metadata.referrer) {\n elements.push(<meta key={key++} name=\"referrer\" content={metadata.referrer} />);\n }\n\n // Keywords\n if (metadata.keywords) {\n const kw = Array.isArray(metadata.keywords) ? metadata.keywords.join(\",\") : metadata.keywords;\n elements.push(<meta key={key++} name=\"keywords\" content={kw} />);\n }\n\n // Authors\n if (metadata.authors) {\n const authorList = Array.isArray(metadata.authors) ? metadata.authors : [metadata.authors];\n for (const author of authorList) {\n if (author.name) {\n elements.push(<meta key={key++} name=\"author\" content={author.name} />);\n }\n if (author.url) {\n elements.push(<link key={key++} rel=\"author\" href={author.url} />);\n }\n }\n }\n\n // Creator\n if (metadata.creator) {\n elements.push(<meta key={key++} name=\"creator\" content={metadata.creator} />);\n }\n\n // Publisher\n if (metadata.publisher) {\n elements.push(<meta key={key++} name=\"publisher\" content={metadata.publisher} />);\n }\n\n // Format detection\n if (metadata.formatDetection) {\n const parts: string[] = [];\n if (metadata.formatDetection.telephone === false) parts.push(\"telephone=no\");\n if (metadata.formatDetection.address === false) parts.push(\"address=no\");\n if (metadata.formatDetection.email === false) parts.push(\"email=no\");\n if (parts.length > 0) {\n elements.push(<meta key={key++} name=\"format-detection\" content={parts.join(\", \")} />);\n }\n }\n\n // Category\n if (metadata.category) {\n elements.push(<meta key={key++} name=\"category\" content={metadata.category} />);\n }\n\n // Robots\n if (metadata.robots) {\n if (typeof metadata.robots === \"string\") {\n elements.push(<meta key={key++} name=\"robots\" content={metadata.robots} />);\n } else {\n const { googleBot, ...robotsRest } = metadata.robots;\n const robotParts: string[] = [];\n for (const [k, v] of Object.entries(robotsRest)) {\n if (v === true) robotParts.push(k);\n else if (v === false) robotParts.push(`no${k}`);\n else if (typeof v === \"string\" || typeof v === \"number\") robotParts.push(`${k}:${v}`);\n }\n if (robotParts.length > 0) {\n elements.push(<meta key={key++} name=\"robots\" content={robotParts.join(\", \")} />);\n }\n // googlebot\n if (googleBot) {\n if (typeof googleBot === \"string\") {\n elements.push(<meta key={key++} name=\"googlebot\" content={googleBot} />);\n } else {\n const gbParts: string[] = [];\n for (const [k, v] of Object.entries(googleBot)) {\n if (v === true) gbParts.push(k);\n else if (v === false) gbParts.push(`no${k}`);\n else if (typeof v === \"string\" || typeof v === \"number\") gbParts.push(`${k}:${v}`);\n }\n if (gbParts.length > 0) {\n elements.push(<meta key={key++} name=\"googlebot\" content={gbParts.join(\", \")} />);\n }\n }\n }\n }\n }\n\n // Open Graph\n if (metadata.openGraph) {\n const og = metadata.openGraph;\n if (og.title) elements.push(<meta key={key++} property=\"og:title\" content={og.title} />);\n if (og.description)\n elements.push(<meta key={key++} property=\"og:description\" content={og.description} />);\n if (og.url) elements.push(<meta key={key++} property=\"og:url\" content={resolveUrl(og.url)} />);\n if (og.siteName)\n elements.push(<meta key={key++} property=\"og:site_name\" content={og.siteName} />);\n if (og.type) elements.push(<meta key={key++} property=\"og:type\" content={og.type} />);\n if (og.locale) elements.push(<meta key={key++} property=\"og:locale\" content={og.locale} />);\n if (og.publishedTime)\n elements.push(\n <meta key={key++} property=\"article:published_time\" content={og.publishedTime} />,\n );\n if (og.modifiedTime)\n elements.push(\n <meta key={key++} property=\"article:modified_time\" content={og.modifiedTime} />,\n );\n if (og.authors) {\n for (const author of og.authors) {\n elements.push(<meta key={key++} property=\"article:author\" content={author} />);\n }\n }\n if (og.images) {\n const imgList =\n typeof og.images === \"string\" || og.images instanceof URL\n ? [{ url: og.images }]\n : Array.isArray(og.images)\n ? og.images\n : [og.images];\n for (const img of imgList) {\n const imgUrl = typeof img === \"string\" || img instanceof URL ? img : img.url;\n elements.push(<meta key={key++} property=\"og:image\" content={resolveUrl(imgUrl)} />);\n if (typeof img !== \"string\" && !(img instanceof URL)) {\n if (img.width)\n elements.push(\n <meta key={key++} property=\"og:image:width\" content={String(img.width)} />,\n );\n if (img.height)\n elements.push(\n <meta key={key++} property=\"og:image:height\" content={String(img.height)} />,\n );\n if (img.alt)\n elements.push(<meta key={key++} property=\"og:image:alt\" content={img.alt} />);\n }\n }\n }\n if (og.videos) {\n for (const video of og.videos) {\n elements.push(<meta key={key++} property=\"og:video\" content={resolveUrl(video.url)} />);\n if (video.width)\n elements.push(\n <meta key={key++} property=\"og:video:width\" content={String(video.width)} />,\n );\n if (video.height)\n elements.push(\n <meta key={key++} property=\"og:video:height\" content={String(video.height)} />,\n );\n }\n }\n if (og.audio) {\n for (const audio of og.audio) {\n elements.push(<meta key={key++} property=\"og:audio\" content={resolveUrl(audio.url)} />);\n }\n }\n }\n\n // Twitter\n if (metadata.twitter) {\n const tw = metadata.twitter;\n if (tw.card) elements.push(<meta key={key++} name=\"twitter:card\" content={tw.card} />);\n if (tw.site) elements.push(<meta key={key++} name=\"twitter:site\" content={tw.site} />);\n if (tw.siteId) elements.push(<meta key={key++} name=\"twitter:site:id\" content={tw.siteId} />);\n if (tw.title) elements.push(<meta key={key++} name=\"twitter:title\" content={tw.title} />);\n if (tw.description)\n elements.push(<meta key={key++} name=\"twitter:description\" content={tw.description} />);\n if (tw.creator) elements.push(<meta key={key++} name=\"twitter:creator\" content={tw.creator} />);\n if (tw.creatorId)\n elements.push(<meta key={key++} name=\"twitter:creator:id\" content={tw.creatorId} />);\n if (tw.images) {\n const imgList =\n typeof tw.images === \"string\" || tw.images instanceof URL\n ? [tw.images]\n : Array.isArray(tw.images)\n ? tw.images\n : [tw.images];\n for (const img of imgList) {\n const imgUrl = typeof img === \"string\" || img instanceof URL ? img : img.url;\n elements.push(<meta key={key++} name=\"twitter:image\" content={resolveUrl(imgUrl)} />);\n if (typeof img !== \"string\" && !(img instanceof URL) && img.alt) {\n elements.push(<meta key={key++} name=\"twitter:image:alt\" content={img.alt} />);\n }\n }\n }\n // Twitter player cards\n if (tw.players) {\n const players = Array.isArray(tw.players) ? tw.players : [tw.players];\n for (const player of players) {\n const playerUrl = player.playerUrl.toString();\n const streamUrl = player.streamUrl.toString();\n elements.push(<meta key={key++} name=\"twitter:player\" content={resolveUrl(playerUrl)} />);\n elements.push(\n <meta key={key++} name=\"twitter:player:stream\" content={resolveUrl(streamUrl)} />,\n );\n elements.push(\n <meta key={key++} name=\"twitter:player:width\" content={String(player.width)} />,\n );\n elements.push(\n <meta key={key++} name=\"twitter:player:height\" content={String(player.height)} />,\n );\n }\n }\n // Twitter app cards\n if (tw.app) {\n const { app } = tw;\n for (const platform of [\"iphone\", \"ipad\", \"googleplay\"] as const) {\n if (app.name) {\n elements.push(\n <meta key={key++} name={`twitter:app:name:${platform}`} content={app.name} />,\n );\n }\n if (app.id[platform] !== undefined) {\n elements.push(\n <meta\n key={key++}\n name={`twitter:app:id:${platform}`}\n content={String(app.id[platform])}\n />,\n );\n }\n if (app.url?.[platform] !== undefined) {\n const appUrl = app.url[platform]!.toString();\n elements.push(\n <meta key={key++} name={`twitter:app:url:${platform}`} content={resolveUrl(appUrl)} />,\n );\n }\n }\n }\n }\n\n // Icons\n if (metadata.icons) {\n const { icon, shortcut, apple, other } = metadata.icons;\n // Shortcut icon\n if (shortcut) {\n const shortcuts = Array.isArray(shortcut) ? shortcut : [shortcut];\n for (const s of shortcuts) {\n elements.push(<link key={key++} rel=\"shortcut icon\" href={resolveUrl(s)} />);\n }\n }\n // Icon\n if (icon) {\n const icons = typeof icon === \"string\" || icon instanceof URL ? [{ url: icon }] : icon;\n for (const i of icons) {\n elements.push(\n <link\n key={key++}\n rel=\"icon\"\n href={resolveUrl(i.url)}\n {...(i.sizes ? { sizes: i.sizes } : {})}\n {...(i.type ? { type: i.type } : {})}\n {...(i.media ? { media: i.media } : {})}\n />,\n );\n }\n }\n // Apple touch icon\n if (apple) {\n const apples = typeof apple === \"string\" || apple instanceof URL ? [{ url: apple }] : apple;\n for (const a of apples) {\n elements.push(\n <link\n key={key++}\n rel=\"apple-touch-icon\"\n href={resolveUrl(a.url)}\n {...(a.sizes ? { sizes: a.sizes } : {})}\n {...(a.type ? { type: a.type } : {})}\n />,\n );\n }\n }\n // Other custom icon relations\n if (other) {\n for (const o of other) {\n elements.push(\n <link\n key={key++}\n rel={o.rel}\n href={resolveUrl(o.url)}\n {...(o.sizes ? { sizes: o.sizes } : {})}\n />,\n );\n }\n }\n }\n\n // Manifest\n if (metadata.manifest) {\n elements.push(<link key={key++} rel=\"manifest\" href={resolveUrl(metadata.manifest)} />);\n }\n\n // Alternates\n if (metadata.alternates) {\n const alt = metadata.alternates;\n if (alt.canonical) {\n elements.push(<link key={key++} rel=\"canonical\" href={resolveUrl(alt.canonical)} />);\n }\n if (alt.languages) {\n for (const [lang, href] of Object.entries(alt.languages)) {\n elements.push(<link key={key++} rel=\"alternate\" hrefLang={lang} href={resolveUrl(href)} />);\n }\n }\n if (alt.media) {\n for (const [media, href] of Object.entries(alt.media)) {\n elements.push(<link key={key++} rel=\"alternate\" media={media} href={resolveUrl(href)} />);\n }\n }\n if (alt.types) {\n for (const [type, href] of Object.entries(alt.types)) {\n elements.push(<link key={key++} rel=\"alternate\" type={type} href={resolveUrl(href)} />);\n }\n }\n }\n\n // Verification\n if (metadata.verification) {\n const v = metadata.verification;\n if (v.google)\n elements.push(<meta key={key++} name=\"google-site-verification\" content={v.google} />);\n if (v.yahoo) elements.push(<meta key={key++} name=\"y_key\" content={v.yahoo} />);\n if (v.yandex) elements.push(<meta key={key++} name=\"yandex-verification\" content={v.yandex} />);\n if (v.other) {\n for (const [name, content] of Object.entries(v.other)) {\n const values = Array.isArray(content) ? content : [content];\n for (const val of values) {\n elements.push(<meta key={key++} name={name} content={val} />);\n }\n }\n }\n }\n\n // Apple Web App\n if (metadata.appleWebApp) {\n const awa = metadata.appleWebApp;\n if (awa.capable !== false) {\n elements.push(<meta key={key++} name=\"mobile-web-app-capable\" content=\"yes\" />);\n }\n if (awa.title) {\n elements.push(<meta key={key++} name=\"apple-mobile-web-app-title\" content={awa.title} />);\n }\n if (awa.statusBarStyle) {\n elements.push(\n <meta\n key={key++}\n name=\"apple-mobile-web-app-status-bar-style\"\n content={awa.statusBarStyle}\n />,\n );\n }\n if (awa.startupImage) {\n const imgs =\n typeof awa.startupImage === \"string\" ? [{ url: awa.startupImage }] : awa.startupImage;\n for (const img of imgs) {\n elements.push(\n <link\n key={key++}\n rel=\"apple-touch-startup-image\"\n href={resolveUrl(img.url)}\n {...(img.media ? { media: img.media } : {})}\n />,\n );\n }\n }\n }\n\n // iTunes\n if (metadata.itunes) {\n const { appId, appArgument } = metadata.itunes;\n let content = `app-id=${appId}`;\n if (appArgument) {\n content += `, app-argument=${appArgument}`;\n }\n elements.push(<meta key={key++} name=\"apple-itunes-app\" content={content} />);\n }\n\n // App Links\n if (metadata.appLinks) {\n const al = metadata.appLinks;\n const platforms = [\n \"ios\",\n \"iphone\",\n \"ipad\",\n \"android\",\n \"windows_phone\",\n \"windows\",\n \"windows_universal\",\n \"web\",\n ] as const;\n for (const platform of platforms) {\n const entries = al[platform];\n if (!entries) continue;\n const list = Array.isArray(entries) ? entries : [entries];\n for (const entry of list) {\n for (const [k, v] of Object.entries(entry)) {\n if (v === undefined || v === null) continue;\n const str = String(v);\n const content = k === \"url\" ? resolveUrl(str) : str;\n elements.push(<meta key={key++} property={`al:${platform}:${k}`} content={content} />);\n }\n }\n }\n }\n\n // Other custom meta tags\n if (metadata.other) {\n for (const [name, content] of Object.entries(metadata.other)) {\n const values = Array.isArray(content) ? content : [content];\n for (const val of values) {\n elements.push(<meta key={key++} name={name} content={val} />);\n }\n }\n }\n\n return <>{elements}</>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"metadata.js","names":[],"sources":["../../src/shims/metadata.tsx"],"sourcesContent":["/**\n * Metadata support for App Router.\n *\n * Handles `export const metadata` and `export async function generateMetadata()`.\n * Resolves metadata from layouts and pages (pages override layouts).\n */\nimport React from \"react\";\n\n// ---------------------------------------------------------------------------\n// Viewport types and resolution\n// ---------------------------------------------------------------------------\n\n/**\n * Normalize null-prototype objects from matchPattern() into thenable objects.\n * See entries/app-rsc-entry.ts makeThenableParams() for full explanation.\n */\nfunction makeThenableParams<T extends Record<string, unknown>>(obj: T): Promise<T> & T {\n const plain = { ...obj } as T;\n return Object.assign(Promise.resolve(plain), plain);\n}\n\nexport interface Viewport {\n /** Viewport width (default: \"device-width\") */\n width?: string | number;\n /** Viewport height */\n height?: string | number;\n /** Initial scale */\n initialScale?: number;\n /** Minimum scale */\n minimumScale?: number;\n /** Maximum scale */\n maximumScale?: number;\n /** Whether user can scale */\n userScalable?: boolean;\n /** Theme color — single color or array of { media, color } */\n themeColor?: string | Array<{ media?: string; color: string }>;\n /** Color scheme: 'light' | 'dark' | 'light dark' | 'normal' */\n colorScheme?: string;\n}\n\n/**\n * Resolve viewport config from a module. Handles both static `viewport` export\n * and async `generateViewport()` function.\n */\nexport async function resolveModuleViewport(\n mod: Record<string, unknown>,\n params: Record<string, string | string[]>,\n): Promise<Viewport | null> {\n if (typeof mod.generateViewport === \"function\") {\n const asyncParams = makeThenableParams(params);\n return await mod.generateViewport({ params: asyncParams });\n }\n if (mod.viewport && typeof mod.viewport === \"object\") {\n return mod.viewport as Viewport;\n }\n return null;\n}\n\n/**\n * Merge viewport configs from multiple sources (layouts + page).\n * Later entries override earlier ones.\n */\nexport const DEFAULT_VIEWPORT: Viewport = {\n width: \"device-width\",\n initialScale: 1,\n};\n\nexport function mergeViewport(viewportList: Viewport[]): Viewport {\n const merged: Viewport = { ...DEFAULT_VIEWPORT };\n for (const vp of viewportList) {\n Object.assign(merged, vp);\n }\n return merged;\n}\n\n/**\n * React component that renders viewport meta tags into <head>.\n */\nexport function ViewportHead({ viewport }: { viewport: Viewport }) {\n const elements: React.ReactElement[] = [];\n let key = 0;\n\n // Build viewport content string\n const parts: string[] = [];\n if (viewport.width !== undefined) parts.push(`width=${viewport.width}`);\n if (viewport.height !== undefined) parts.push(`height=${viewport.height}`);\n if (viewport.initialScale !== undefined) parts.push(`initial-scale=${viewport.initialScale}`);\n if (viewport.minimumScale !== undefined) parts.push(`minimum-scale=${viewport.minimumScale}`);\n if (viewport.maximumScale !== undefined) parts.push(`maximum-scale=${viewport.maximumScale}`);\n if (viewport.userScalable !== undefined)\n parts.push(`user-scalable=${viewport.userScalable ? \"yes\" : \"no\"}`);\n\n if (parts.length > 0) {\n elements.push(<meta key={key++} name=\"viewport\" content={parts.join(\", \")} />);\n }\n\n // Theme color\n if (viewport.themeColor) {\n if (typeof viewport.themeColor === \"string\") {\n elements.push(<meta key={key++} name=\"theme-color\" content={viewport.themeColor} />);\n } else if (Array.isArray(viewport.themeColor)) {\n for (const entry of viewport.themeColor) {\n elements.push(\n <meta\n key={key++}\n name=\"theme-color\"\n content={entry.color}\n {...(entry.media ? { media: entry.media } : {})}\n />,\n );\n }\n }\n }\n\n // Color scheme\n if (viewport.colorScheme) {\n elements.push(<meta key={key++} name=\"color-scheme\" content={viewport.colorScheme} />);\n }\n\n return <>{elements}</>;\n}\n\n// ---------------------------------------------------------------------------\n// Metadata types and resolution\n// ---------------------------------------------------------------------------\n\nexport interface Metadata {\n title?: string | { default?: string; template?: string; absolute?: string };\n description?: string;\n generator?: string;\n applicationName?: string;\n referrer?: string;\n keywords?: string | string[];\n authors?: Array<{ name?: string; url?: string }> | { name?: string; url?: string };\n creator?: string;\n publisher?: string;\n robots?:\n | string\n | {\n index?: boolean;\n follow?: boolean;\n googleBot?: string | { index?: boolean; follow?: boolean; [key: string]: unknown };\n [key: string]: unknown;\n };\n openGraph?: {\n title?: string;\n description?: string;\n url?: string | URL;\n siteName?: string;\n images?:\n | string\n | URL\n | { url: string | URL; width?: number; height?: number; alt?: string }\n | Array<string | URL | { url: string | URL; width?: number; height?: number; alt?: string }>;\n videos?: Array<{ url: string | URL; width?: number; height?: number }>;\n audio?: Array<{ url: string | URL }>;\n locale?: string;\n type?: string;\n publishedTime?: string;\n modifiedTime?: string;\n authors?: string[];\n };\n twitter?: {\n card?: string;\n site?: string;\n siteId?: string;\n title?: string;\n description?: string;\n images?:\n | string\n | URL\n | { url: string | URL; alt?: string; width?: number; height?: number }\n | Array<string | URL | { url: string | URL; alt?: string; width?: number; height?: number }>;\n creator?: string;\n creatorId?: string;\n players?: TwitterPlayerDescriptor | TwitterPlayerDescriptor[];\n app?: TwitterAppDescriptor;\n };\n icons?: {\n icon?:\n | string\n | URL\n | Array<{ url: string | URL; sizes?: string; type?: string; media?: string }>;\n shortcut?: string | URL | Array<string | URL>;\n apple?: string | URL | Array<{ url: string | URL; sizes?: string; type?: string }>;\n other?: Array<{ rel: string; url: string | URL; sizes?: string; type?: string }>;\n };\n manifest?: string | URL;\n alternates?: {\n canonical?: string | URL;\n languages?: Record<string, string | URL>;\n media?: Record<string, string | URL>;\n types?: Record<string, string | URL>;\n };\n verification?: {\n google?: string;\n yahoo?: string;\n yandex?: string;\n other?: Record<string, string | string[]>;\n };\n metadataBase?: URL | null;\n appleWebApp?: {\n capable?: boolean;\n title?: string;\n statusBarStyle?: string;\n startupImage?: string | Array<{ url: string; media?: string }>;\n };\n formatDetection?: {\n email?: boolean;\n address?: boolean;\n telephone?: boolean;\n };\n category?: string;\n itunes?: {\n appId: string;\n appArgument?: string;\n };\n appLinks?: {\n ios?: AppLinksApple | AppLinksApple[];\n iphone?: AppLinksApple | AppLinksApple[];\n ipad?: AppLinksApple | AppLinksApple[];\n android?: AppLinksAndroid | AppLinksAndroid[];\n windows_phone?: AppLinksWindows | AppLinksWindows[];\n windows?: AppLinksWindows | AppLinksWindows[];\n windows_universal?: AppLinksWindows | AppLinksWindows[];\n web?: AppLinksWeb | AppLinksWeb[];\n };\n other?: Record<string, string | string[]>;\n [key: string]: unknown;\n}\n\ninterface AppLinksApple {\n url: string | URL;\n app_store_id?: string | number;\n app_name?: string;\n}\n\ninterface AppLinksAndroid {\n package: string;\n url?: string | URL;\n class?: string;\n app_name?: string;\n}\n\ninterface AppLinksWindows {\n url: string | URL;\n app_id?: string;\n app_name?: string;\n}\n\ninterface AppLinksWeb {\n url: string | URL;\n should_fallback?: boolean;\n}\n\ninterface TwitterPlayerDescriptor {\n playerUrl: string | URL;\n streamUrl: string | URL;\n width: number;\n height: number;\n}\n\ninterface TwitterAppDescriptor {\n id: {\n iphone?: string | number;\n ipad?: string | number;\n googleplay?: string;\n };\n url?: {\n iphone?: string | URL;\n ipad?: string | URL;\n googleplay?: string | URL;\n };\n name?: string;\n}\n\n/**\n * Merge metadata from multiple sources (layouts + page).\n *\n * The list is ordered [rootLayout, nestedLayout, ..., page].\n * Title template from layouts applies to the page title but NOT to\n * the segment that defines the template itself. `title.absolute`\n * skips all templates. `title.default` is the fallback when no\n * child provides a title.\n *\n * Shallow merge: later entries override earlier ones (per Next.js docs).\n */\nexport function mergeMetadata(metadataList: Metadata[]): Metadata {\n if (metadataList.length === 0) return {};\n\n const merged: Metadata = {};\n\n // Track the most recent title template from LAYOUTS (not from page).\n // The page is always the last entry in metadataList.\n let parentTemplate: string | undefined;\n\n for (let i = 0; i < metadataList.length; i++) {\n const meta = metadataList[i];\n const isPage = i === metadataList.length - 1;\n\n // Collect template from layouts only (page templates are ignored per Next.js spec)\n if (!isPage && meta.title && typeof meta.title === \"object\" && meta.title.template) {\n parentTemplate = meta.title.template;\n }\n\n // Shallow merge — later entries override earlier for top-level keys\n for (const key of Object.keys(meta)) {\n if (key === \"title\") continue; // Handle title separately below\n (merged as Record<string, unknown>)[key] = (meta as Record<string, unknown>)[key];\n }\n\n // Title resolution\n if (meta.title !== undefined) {\n merged.title = meta.title;\n }\n }\n\n // Now resolve the final title, applying the parent template if applicable\n const finalTitle = merged.title;\n if (finalTitle) {\n if (typeof finalTitle === \"string\") {\n // Simple string title — apply parent template\n if (parentTemplate) {\n merged.title = parentTemplate.replace(\"%s\", finalTitle);\n }\n } else if (typeof finalTitle === \"object\") {\n if (finalTitle.absolute) {\n // Absolute title — skip all templates\n merged.title = finalTitle.absolute;\n } else if (finalTitle.default) {\n // Title object with default — this is used when the segment IS the\n // defining layout (its own default doesn't get template-wrapped)\n merged.title = finalTitle.default;\n } else if (finalTitle.template && !finalTitle.default && !finalTitle.absolute) {\n // Template only with no default — no title to render\n merged.title = undefined;\n }\n }\n }\n\n return merged;\n}\n\n/**\n * Resolve metadata from a module. Handles both static `metadata` export\n * and async `generateMetadata()` function.\n *\n * @param parent - A Promise that resolves to the accumulated (merged) metadata\n * from all ancestor segments. Passed as the second argument to\n * `generateMetadata()`, matching Next.js's eager-execution-with-serial-\n * resolution approach. If not provided, defaults to a promise that resolves\n * to an empty object (so `await parent` never throws).\n */\nexport async function resolveModuleMetadata(\n mod: Record<string, unknown>,\n params: Record<string, string | string[]> = {},\n searchParams?: Record<string, string>,\n parent: Promise<Metadata> = Promise.resolve({}),\n): Promise<Metadata | null> {\n if (typeof mod.generateMetadata === \"function\") {\n // Next.js 16 passes params/searchParams as Promises (async pattern).\n // makeThenableParams() normalises null-prototype + preserves sync access.\n const asyncParams = makeThenableParams(params);\n const sp = searchParams ?? {};\n const asyncSp = makeThenableParams(sp);\n return await mod.generateMetadata({ params: asyncParams, searchParams: asyncSp }, parent);\n }\n if (mod.metadata && typeof mod.metadata === \"object\") {\n return mod.metadata as Metadata;\n }\n return null;\n}\n\n/**\n * React component that renders metadata as HTML head elements.\n * Used by the RSC entry to inject into the <head>.\n */\nexport function MetadataHead({ metadata }: { metadata: Metadata }) {\n const elements: React.ReactElement[] = [];\n let key = 0;\n\n // Resolve metadataBase for URL composition\n const base = metadata.metadataBase;\n function resolveUrl(url: string | URL): string;\n function resolveUrl(url: string | URL | undefined): string | undefined;\n function resolveUrl(url: string | URL | undefined): string | undefined {\n if (!url) return undefined;\n // Coerce URL objects to strings (Next.js metadata allows string | URL)\n const s = typeof url === \"string\" ? url : url instanceof URL ? url.toString() : String(url);\n if (!base) return s;\n if (s.startsWith(\"http://\") || s.startsWith(\"https://\") || s.startsWith(\"//\")) return s;\n try {\n return new URL(s, base).toString();\n } catch {\n return s;\n }\n }\n\n // Title\n const title =\n typeof metadata.title === \"string\"\n ? metadata.title\n : typeof metadata.title === \"object\"\n ? metadata.title.absolute || metadata.title.default\n : undefined;\n if (title) {\n elements.push(<title key={key++}>{title}</title>);\n }\n\n // Description\n if (metadata.description) {\n elements.push(<meta key={key++} name=\"description\" content={metadata.description} />);\n }\n\n // Generator\n if (metadata.generator) {\n elements.push(<meta key={key++} name=\"generator\" content={metadata.generator} />);\n }\n\n // Application name\n if (metadata.applicationName) {\n elements.push(<meta key={key++} name=\"application-name\" content={metadata.applicationName} />);\n }\n\n // Referrer\n if (metadata.referrer) {\n elements.push(<meta key={key++} name=\"referrer\" content={metadata.referrer} />);\n }\n\n // Keywords\n if (metadata.keywords) {\n const kw = Array.isArray(metadata.keywords) ? metadata.keywords.join(\",\") : metadata.keywords;\n elements.push(<meta key={key++} name=\"keywords\" content={kw} />);\n }\n\n // Authors\n if (metadata.authors) {\n const authorList = Array.isArray(metadata.authors) ? metadata.authors : [metadata.authors];\n for (const author of authorList) {\n if (author.name) {\n elements.push(<meta key={key++} name=\"author\" content={author.name} />);\n }\n if (author.url) {\n elements.push(<link key={key++} rel=\"author\" href={author.url} />);\n }\n }\n }\n\n // Creator\n if (metadata.creator) {\n elements.push(<meta key={key++} name=\"creator\" content={metadata.creator} />);\n }\n\n // Publisher\n if (metadata.publisher) {\n elements.push(<meta key={key++} name=\"publisher\" content={metadata.publisher} />);\n }\n\n // Format detection\n if (metadata.formatDetection) {\n const parts: string[] = [];\n if (metadata.formatDetection.telephone === false) parts.push(\"telephone=no\");\n if (metadata.formatDetection.address === false) parts.push(\"address=no\");\n if (metadata.formatDetection.email === false) parts.push(\"email=no\");\n if (parts.length > 0) {\n elements.push(<meta key={key++} name=\"format-detection\" content={parts.join(\", \")} />);\n }\n }\n\n // Category\n if (metadata.category) {\n elements.push(<meta key={key++} name=\"category\" content={metadata.category} />);\n }\n\n // Robots\n if (metadata.robots) {\n if (typeof metadata.robots === \"string\") {\n elements.push(<meta key={key++} name=\"robots\" content={metadata.robots} />);\n } else {\n const { googleBot, ...robotsRest } = metadata.robots;\n const robotParts: string[] = [];\n for (const [k, v] of Object.entries(robotsRest)) {\n if (v === true) robotParts.push(k);\n else if (v === false) robotParts.push(`no${k}`);\n else if (typeof v === \"string\" || typeof v === \"number\") robotParts.push(`${k}:${v}`);\n }\n if (robotParts.length > 0) {\n elements.push(<meta key={key++} name=\"robots\" content={robotParts.join(\", \")} />);\n }\n // googlebot\n if (googleBot) {\n if (typeof googleBot === \"string\") {\n elements.push(<meta key={key++} name=\"googlebot\" content={googleBot} />);\n } else {\n const gbParts: string[] = [];\n for (const [k, v] of Object.entries(googleBot)) {\n if (v === true) gbParts.push(k);\n else if (v === false) gbParts.push(`no${k}`);\n else if (typeof v === \"string\" || typeof v === \"number\") gbParts.push(`${k}:${v}`);\n }\n if (gbParts.length > 0) {\n elements.push(<meta key={key++} name=\"googlebot\" content={gbParts.join(\", \")} />);\n }\n }\n }\n }\n }\n\n // Open Graph\n if (metadata.openGraph) {\n const og = metadata.openGraph;\n if (og.title) elements.push(<meta key={key++} property=\"og:title\" content={og.title} />);\n if (og.description)\n elements.push(<meta key={key++} property=\"og:description\" content={og.description} />);\n if (og.url) elements.push(<meta key={key++} property=\"og:url\" content={resolveUrl(og.url)} />);\n if (og.siteName)\n elements.push(<meta key={key++} property=\"og:site_name\" content={og.siteName} />);\n if (og.type) elements.push(<meta key={key++} property=\"og:type\" content={og.type} />);\n if (og.locale) elements.push(<meta key={key++} property=\"og:locale\" content={og.locale} />);\n if (og.publishedTime)\n elements.push(\n <meta key={key++} property=\"article:published_time\" content={og.publishedTime} />,\n );\n if (og.modifiedTime)\n elements.push(\n <meta key={key++} property=\"article:modified_time\" content={og.modifiedTime} />,\n );\n if (og.authors) {\n for (const author of og.authors) {\n elements.push(<meta key={key++} property=\"article:author\" content={author} />);\n }\n }\n if (og.images) {\n const imgList =\n typeof og.images === \"string\" || og.images instanceof URL\n ? [{ url: og.images }]\n : Array.isArray(og.images)\n ? og.images\n : [og.images];\n for (const img of imgList) {\n const imgUrl = typeof img === \"string\" || img instanceof URL ? img : img.url;\n elements.push(<meta key={key++} property=\"og:image\" content={resolveUrl(imgUrl)} />);\n if (typeof img !== \"string\" && !(img instanceof URL)) {\n if (img.width)\n elements.push(\n <meta key={key++} property=\"og:image:width\" content={String(img.width)} />,\n );\n if (img.height)\n elements.push(\n <meta key={key++} property=\"og:image:height\" content={String(img.height)} />,\n );\n if (img.alt)\n elements.push(<meta key={key++} property=\"og:image:alt\" content={img.alt} />);\n }\n }\n }\n if (og.videos) {\n for (const video of og.videos) {\n elements.push(<meta key={key++} property=\"og:video\" content={resolveUrl(video.url)} />);\n if (video.width)\n elements.push(\n <meta key={key++} property=\"og:video:width\" content={String(video.width)} />,\n );\n if (video.height)\n elements.push(\n <meta key={key++} property=\"og:video:height\" content={String(video.height)} />,\n );\n }\n }\n if (og.audio) {\n for (const audio of og.audio) {\n elements.push(<meta key={key++} property=\"og:audio\" content={resolveUrl(audio.url)} />);\n }\n }\n }\n\n // Twitter\n if (metadata.twitter) {\n const tw = metadata.twitter;\n if (tw.card) elements.push(<meta key={key++} name=\"twitter:card\" content={tw.card} />);\n if (tw.site) elements.push(<meta key={key++} name=\"twitter:site\" content={tw.site} />);\n if (tw.siteId) elements.push(<meta key={key++} name=\"twitter:site:id\" content={tw.siteId} />);\n if (tw.title) elements.push(<meta key={key++} name=\"twitter:title\" content={tw.title} />);\n if (tw.description)\n elements.push(<meta key={key++} name=\"twitter:description\" content={tw.description} />);\n if (tw.creator) elements.push(<meta key={key++} name=\"twitter:creator\" content={tw.creator} />);\n if (tw.creatorId)\n elements.push(<meta key={key++} name=\"twitter:creator:id\" content={tw.creatorId} />);\n if (tw.images) {\n const imgList =\n typeof tw.images === \"string\" || tw.images instanceof URL\n ? [tw.images]\n : Array.isArray(tw.images)\n ? tw.images\n : [tw.images];\n for (const img of imgList) {\n const imgUrl = typeof img === \"string\" || img instanceof URL ? img : img.url;\n elements.push(<meta key={key++} name=\"twitter:image\" content={resolveUrl(imgUrl)} />);\n if (typeof img !== \"string\" && !(img instanceof URL) && img.alt) {\n elements.push(<meta key={key++} name=\"twitter:image:alt\" content={img.alt} />);\n }\n }\n }\n // Twitter player cards\n if (tw.players) {\n const players = Array.isArray(tw.players) ? tw.players : [tw.players];\n for (const player of players) {\n const playerUrl = player.playerUrl.toString();\n const streamUrl = player.streamUrl.toString();\n elements.push(<meta key={key++} name=\"twitter:player\" content={resolveUrl(playerUrl)} />);\n elements.push(\n <meta key={key++} name=\"twitter:player:stream\" content={resolveUrl(streamUrl)} />,\n );\n elements.push(\n <meta key={key++} name=\"twitter:player:width\" content={String(player.width)} />,\n );\n elements.push(\n <meta key={key++} name=\"twitter:player:height\" content={String(player.height)} />,\n );\n }\n }\n // Twitter app cards\n if (tw.app) {\n const { app } = tw;\n for (const platform of [\"iphone\", \"ipad\", \"googleplay\"] as const) {\n if (app.name) {\n elements.push(\n <meta key={key++} name={`twitter:app:name:${platform}`} content={app.name} />,\n );\n }\n if (app.id[platform] !== undefined) {\n elements.push(\n <meta\n key={key++}\n name={`twitter:app:id:${platform}`}\n content={String(app.id[platform])}\n />,\n );\n }\n if (app.url?.[platform] !== undefined) {\n const appUrl = app.url[platform]!.toString();\n elements.push(\n <meta key={key++} name={`twitter:app:url:${platform}`} content={resolveUrl(appUrl)} />,\n );\n }\n }\n }\n }\n\n // Icons\n if (metadata.icons) {\n const { icon, shortcut, apple, other } = metadata.icons;\n // Shortcut icon\n if (shortcut) {\n const shortcuts = Array.isArray(shortcut) ? shortcut : [shortcut];\n for (const s of shortcuts) {\n elements.push(<link key={key++} rel=\"shortcut icon\" href={resolveUrl(s)} />);\n }\n }\n // Icon\n if (icon) {\n const icons = typeof icon === \"string\" || icon instanceof URL ? [{ url: icon }] : icon;\n for (const i of icons) {\n elements.push(\n <link\n key={key++}\n rel=\"icon\"\n href={resolveUrl(i.url)}\n {...(i.sizes ? { sizes: i.sizes } : {})}\n {...(i.type ? { type: i.type } : {})}\n {...(i.media ? { media: i.media } : {})}\n />,\n );\n }\n }\n // Apple touch icon\n if (apple) {\n const apples = typeof apple === \"string\" || apple instanceof URL ? [{ url: apple }] : apple;\n for (const a of apples) {\n elements.push(\n <link\n key={key++}\n rel=\"apple-touch-icon\"\n href={resolveUrl(a.url)}\n {...(a.sizes ? { sizes: a.sizes } : {})}\n {...(a.type ? { type: a.type } : {})}\n />,\n );\n }\n }\n // Other custom icon relations\n if (other) {\n for (const o of other) {\n elements.push(\n <link\n key={key++}\n rel={o.rel}\n href={resolveUrl(o.url)}\n {...(o.sizes ? { sizes: o.sizes } : {})}\n />,\n );\n }\n }\n }\n\n // Manifest\n if (metadata.manifest) {\n elements.push(<link key={key++} rel=\"manifest\" href={resolveUrl(metadata.manifest)} />);\n }\n\n // Alternates\n if (metadata.alternates) {\n const alt = metadata.alternates;\n if (alt.canonical) {\n elements.push(<link key={key++} rel=\"canonical\" href={resolveUrl(alt.canonical)} />);\n }\n if (alt.languages) {\n for (const [lang, href] of Object.entries(alt.languages)) {\n elements.push(<link key={key++} rel=\"alternate\" hrefLang={lang} href={resolveUrl(href)} />);\n }\n }\n if (alt.media) {\n for (const [media, href] of Object.entries(alt.media)) {\n elements.push(<link key={key++} rel=\"alternate\" media={media} href={resolveUrl(href)} />);\n }\n }\n if (alt.types) {\n for (const [type, href] of Object.entries(alt.types)) {\n elements.push(<link key={key++} rel=\"alternate\" type={type} href={resolveUrl(href)} />);\n }\n }\n }\n\n // Verification\n if (metadata.verification) {\n const v = metadata.verification;\n if (v.google)\n elements.push(<meta key={key++} name=\"google-site-verification\" content={v.google} />);\n if (v.yahoo) elements.push(<meta key={key++} name=\"y_key\" content={v.yahoo} />);\n if (v.yandex) elements.push(<meta key={key++} name=\"yandex-verification\" content={v.yandex} />);\n if (v.other) {\n for (const [name, content] of Object.entries(v.other)) {\n const values = Array.isArray(content) ? content : [content];\n for (const val of values) {\n elements.push(<meta key={key++} name={name} content={val} />);\n }\n }\n }\n }\n\n // Apple Web App\n if (metadata.appleWebApp) {\n const awa = metadata.appleWebApp;\n if (awa.capable !== false) {\n elements.push(<meta key={key++} name=\"mobile-web-app-capable\" content=\"yes\" />);\n }\n if (awa.title) {\n elements.push(<meta key={key++} name=\"apple-mobile-web-app-title\" content={awa.title} />);\n }\n if (awa.statusBarStyle) {\n elements.push(\n <meta\n key={key++}\n name=\"apple-mobile-web-app-status-bar-style\"\n content={awa.statusBarStyle}\n />,\n );\n }\n if (awa.startupImage) {\n const imgs =\n typeof awa.startupImage === \"string\" ? [{ url: awa.startupImage }] : awa.startupImage;\n for (const img of imgs) {\n elements.push(\n <link\n key={key++}\n rel=\"apple-touch-startup-image\"\n href={resolveUrl(img.url)}\n {...(img.media ? { media: img.media } : {})}\n />,\n );\n }\n }\n }\n\n // iTunes\n if (metadata.itunes) {\n const { appId, appArgument } = metadata.itunes;\n let content = `app-id=${appId}`;\n if (appArgument) {\n content += `, app-argument=${appArgument}`;\n }\n elements.push(<meta key={key++} name=\"apple-itunes-app\" content={content} />);\n }\n\n // App Links\n if (metadata.appLinks) {\n const al = metadata.appLinks;\n const platforms = [\n \"ios\",\n \"iphone\",\n \"ipad\",\n \"android\",\n \"windows_phone\",\n \"windows\",\n \"windows_universal\",\n \"web\",\n ] as const;\n for (const platform of platforms) {\n const entries = al[platform];\n if (!entries) continue;\n const list = Array.isArray(entries) ? entries : [entries];\n for (const entry of list) {\n for (const [k, v] of Object.entries(entry)) {\n if (v === undefined || v === null) continue;\n const str = String(v);\n const content = k === \"url\" ? resolveUrl(str) : str;\n elements.push(<meta key={key++} property={`al:${platform}:${k}`} content={content} />);\n }\n }\n }\n }\n\n // Other custom meta tags\n if (metadata.other) {\n for (const [name, content] of Object.entries(metadata.other)) {\n const values = Array.isArray(content) ? content : [content];\n for (const val of values) {\n elements.push(<meta key={key++} name={name} content={val} />);\n }\n }\n }\n\n return <>{elements}</>;\n}\n"],"mappings":"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"}
|
|
@@ -1,26 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* (pathnames, params, CSS-in-JS styles) between requests.
|
|
8
|
-
*
|
|
9
|
-
* This module is server-only — it imports node:async_hooks and must NOT
|
|
10
|
-
* be bundled for the browser. The dual-environment navigation.ts shim
|
|
11
|
-
* uses a registration pattern so it works in both environments.
|
|
12
|
-
*/
|
|
13
|
-
import { type NavigationContext } from "./navigation.js";
|
|
14
|
-
export interface NavigationState {
|
|
15
|
-
serverContext: NavigationContext | null;
|
|
16
|
-
serverInsertedHTMLCallbacks: Array<() => unknown>;
|
|
1
|
+
import { NavigationContext } from "./navigation.js";
|
|
2
|
+
|
|
3
|
+
//#region src/shims/navigation-state.d.ts
|
|
4
|
+
interface NavigationState {
|
|
5
|
+
serverContext: NavigationContext | null;
|
|
6
|
+
serverInsertedHTMLCallbacks: Array<() => unknown>;
|
|
17
7
|
}
|
|
18
8
|
/**
|
|
19
9
|
* Run a function within a navigation ALS scope.
|
|
20
10
|
* Ensures per-request isolation for navigation context and
|
|
21
11
|
* useServerInsertedHTML callbacks on concurrent runtimes.
|
|
22
12
|
*/
|
|
23
|
-
|
|
13
|
+
declare function runWithNavigationContext<T>(fn: () => T | Promise<T>): T | Promise<T>;
|
|
24
14
|
/**
|
|
25
15
|
* Run a function with a fresh useServerInsertedHTML callback list while
|
|
26
16
|
* preserving the current navigation context.
|
|
@@ -29,5 +19,7 @@ export declare function runWithNavigationContext<T>(fn: () => T | Promise<T>): T
|
|
|
29
19
|
* but it needs a fresh callback collection so CSS-in-JS insertions from the
|
|
30
20
|
* streamed render cannot accumulate into the cache-fill render.
|
|
31
21
|
*/
|
|
32
|
-
|
|
22
|
+
declare function runWithServerInsertedHTMLState<T>(fn: () => T | Promise<T>): T | Promise<T>;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { NavigationState, runWithNavigationContext, runWithServerInsertedHTMLState };
|
|
33
25
|
//# sourceMappingURL=navigation-state.d.ts.map
|
|
@@ -1,87 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
* Server-only navigation state backed by AsyncLocalStorage.
|
|
3
|
-
*
|
|
4
|
-
* This module provides request-scoped isolation for navigation context
|
|
5
|
-
* and useServerInsertedHTML callbacks. Without ALS, concurrent requests
|
|
6
|
-
* on Cloudflare Workers would share module-level state and leak data
|
|
7
|
-
* (pathnames, params, CSS-in-JS styles) between requests.
|
|
8
|
-
*
|
|
9
|
-
* This module is server-only — it imports node:async_hooks and must NOT
|
|
10
|
-
* be bundled for the browser. The dual-environment navigation.ts shim
|
|
11
|
-
* uses a registration pattern so it works in both environments.
|
|
12
|
-
*/
|
|
13
|
-
import { AsyncLocalStorage } from "node:async_hooks";
|
|
1
|
+
import { getRequestContext, isInsideUnifiedScope, runWithUnifiedStateMutation } from "./unified-request-context.js";
|
|
14
2
|
import { _registerStateAccessors } from "./navigation.js";
|
|
15
|
-
import {
|
|
3
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
4
|
+
//#region src/shims/navigation-state.ts
|
|
5
|
+
/**
|
|
6
|
+
* Server-only navigation state backed by AsyncLocalStorage.
|
|
7
|
+
*
|
|
8
|
+
* This module provides request-scoped isolation for navigation context
|
|
9
|
+
* and useServerInsertedHTML callbacks. Without ALS, concurrent requests
|
|
10
|
+
* on Cloudflare Workers would share module-level state and leak data
|
|
11
|
+
* (pathnames, params, CSS-in-JS styles) between requests.
|
|
12
|
+
*
|
|
13
|
+
* This module is server-only — it imports node:async_hooks and must NOT
|
|
14
|
+
* be bundled for the browser. The dual-environment navigation.ts shim
|
|
15
|
+
* uses a registration pattern so it works in both environments.
|
|
16
|
+
*/
|
|
16
17
|
const _ALS_KEY = Symbol.for("vinext.navigation.als");
|
|
17
18
|
const _FALLBACK_KEY = Symbol.for("vinext.navigation.fallback");
|
|
18
19
|
const _g = globalThis;
|
|
19
|
-
const _als =
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
});
|
|
20
|
+
const _als = _g[_ALS_KEY] ??= new AsyncLocalStorage();
|
|
21
|
+
const _fallbackState = _g[_FALLBACK_KEY] ??= {
|
|
22
|
+
serverContext: null,
|
|
23
|
+
serverInsertedHTMLCallbacks: []
|
|
24
|
+
};
|
|
25
25
|
function _getState() {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
return _als.getStore() ?? _fallbackState;
|
|
26
|
+
if (isInsideUnifiedScope()) return getRequestContext();
|
|
27
|
+
return _als.getStore() ?? _fallbackState;
|
|
30
28
|
}
|
|
31
29
|
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
serverInsertedHTMLCallbacks: [],
|
|
46
|
-
};
|
|
47
|
-
return _als.run(state, fn);
|
|
30
|
+
* Run a function within a navigation ALS scope.
|
|
31
|
+
* Ensures per-request isolation for navigation context and
|
|
32
|
+
* useServerInsertedHTML callbacks on concurrent runtimes.
|
|
33
|
+
*/
|
|
34
|
+
function runWithNavigationContext(fn) {
|
|
35
|
+
if (isInsideUnifiedScope()) return runWithUnifiedStateMutation((uCtx) => {
|
|
36
|
+
uCtx.serverContext = null;
|
|
37
|
+
uCtx.serverInsertedHTMLCallbacks = [];
|
|
38
|
+
}, fn);
|
|
39
|
+
return _als.run({
|
|
40
|
+
serverContext: null,
|
|
41
|
+
serverInsertedHTMLCallbacks: []
|
|
42
|
+
}, fn);
|
|
48
43
|
}
|
|
49
44
|
/**
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
serverInsertedHTMLCallbacks: [],
|
|
67
|
-
};
|
|
68
|
-
return _als.run(state, fn);
|
|
45
|
+
* Run a function with a fresh useServerInsertedHTML callback list while
|
|
46
|
+
* preserving the current navigation context.
|
|
47
|
+
*
|
|
48
|
+
* Used by the Pages Router ISR cache-fill pass: it is the same request/path,
|
|
49
|
+
* but it needs a fresh callback collection so CSS-in-JS insertions from the
|
|
50
|
+
* streamed render cannot accumulate into the cache-fill render.
|
|
51
|
+
*/
|
|
52
|
+
function runWithServerInsertedHTMLState(fn) {
|
|
53
|
+
if (isInsideUnifiedScope()) return runWithUnifiedStateMutation((uCtx) => {
|
|
54
|
+
uCtx.serverInsertedHTMLCallbacks = [];
|
|
55
|
+
}, fn);
|
|
56
|
+
const state = {
|
|
57
|
+
serverContext: (_als.getStore() ?? _fallbackState).serverContext,
|
|
58
|
+
serverInsertedHTMLCallbacks: []
|
|
59
|
+
};
|
|
60
|
+
return _als.run(state, fn);
|
|
69
61
|
}
|
|
70
|
-
// ---------------------------------------------------------------------------
|
|
71
|
-
// Register ALS-backed accessors into navigation.ts
|
|
72
|
-
// ---------------------------------------------------------------------------
|
|
73
62
|
_registerStateAccessors({
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
63
|
+
getServerContext() {
|
|
64
|
+
return _getState().serverContext;
|
|
65
|
+
},
|
|
66
|
+
setServerContext(ctx) {
|
|
67
|
+
_getState().serverContext = ctx;
|
|
68
|
+
},
|
|
69
|
+
getInsertedHTMLCallbacks() {
|
|
70
|
+
return _getState().serverInsertedHTMLCallbacks;
|
|
71
|
+
},
|
|
72
|
+
clearInsertedHTMLCallbacks() {
|
|
73
|
+
_getState().serverInsertedHTMLCallbacks = [];
|
|
74
|
+
}
|
|
86
75
|
});
|
|
76
|
+
//#endregion
|
|
77
|
+
export { runWithNavigationContext, runWithServerInsertedHTMLState };
|
|
78
|
+
|
|
87
79
|
//# sourceMappingURL=navigation-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-state.js","
|
|
1
|
+
{"version":3,"file":"navigation-state.js","names":[],"sources":["../../src/shims/navigation-state.ts"],"sourcesContent":["/**\n * Server-only navigation state backed by AsyncLocalStorage.\n *\n * This module provides request-scoped isolation for navigation context\n * and useServerInsertedHTML callbacks. Without ALS, concurrent requests\n * on Cloudflare Workers would share module-level state and leak data\n * (pathnames, params, CSS-in-JS styles) between requests.\n *\n * This module is server-only — it imports node:async_hooks and must NOT\n * be bundled for the browser. The dual-environment navigation.ts shim\n * uses a registration pattern so it works in both environments.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { _registerStateAccessors, type NavigationContext } from \"./navigation.js\";\nimport {\n isInsideUnifiedScope,\n getRequestContext,\n runWithUnifiedStateMutation,\n} from \"./unified-request-context.js\";\n\n// ---------------------------------------------------------------------------\n// ALS setup — same pattern as headers.ts\n// ---------------------------------------------------------------------------\n\nexport interface NavigationState {\n serverContext: NavigationContext | null;\n serverInsertedHTMLCallbacks: Array<() => unknown>;\n}\n\nconst _ALS_KEY = Symbol.for(\"vinext.navigation.als\");\nconst _FALLBACK_KEY = Symbol.for(\"vinext.navigation.fallback\");\nconst _g = globalThis as unknown as Record<PropertyKey, unknown>;\nconst _als = (_g[_ALS_KEY] ??=\n new AsyncLocalStorage<NavigationState>()) as AsyncLocalStorage<NavigationState>;\n\nconst _fallbackState = (_g[_FALLBACK_KEY] ??= {\n serverContext: null,\n serverInsertedHTMLCallbacks: [],\n} satisfies NavigationState) as NavigationState;\n\nfunction _getState(): NavigationState {\n if (isInsideUnifiedScope()) {\n return getRequestContext();\n }\n return _als.getStore() ?? _fallbackState;\n}\n\n/**\n * Run a function within a navigation ALS scope.\n * Ensures per-request isolation for navigation context and\n * useServerInsertedHTML callbacks on concurrent runtimes.\n */\nexport function runWithNavigationContext<T>(fn: () => T | Promise<T>): T | Promise<T> {\n if (isInsideUnifiedScope()) {\n return runWithUnifiedStateMutation((uCtx) => {\n uCtx.serverContext = null;\n uCtx.serverInsertedHTMLCallbacks = [];\n }, fn);\n }\n const state: NavigationState = {\n serverContext: null,\n serverInsertedHTMLCallbacks: [],\n };\n return _als.run(state, fn);\n}\n\n/**\n * Run a function with a fresh useServerInsertedHTML callback list while\n * preserving the current navigation context.\n *\n * Used by the Pages Router ISR cache-fill pass: it is the same request/path,\n * but it needs a fresh callback collection so CSS-in-JS insertions from the\n * streamed render cannot accumulate into the cache-fill render.\n */\nexport function runWithServerInsertedHTMLState<T>(fn: () => T | Promise<T>): T | Promise<T> {\n if (isInsideUnifiedScope()) {\n return runWithUnifiedStateMutation((uCtx) => {\n uCtx.serverInsertedHTMLCallbacks = [];\n }, fn);\n }\n\n const parentState = _als.getStore() ?? _fallbackState;\n const state: NavigationState = {\n serverContext: parentState.serverContext,\n serverInsertedHTMLCallbacks: [],\n };\n return _als.run(state, fn);\n}\n\n// ---------------------------------------------------------------------------\n// Register ALS-backed accessors into navigation.ts\n// ---------------------------------------------------------------------------\n\n_registerStateAccessors({\n getServerContext(): NavigationContext | null {\n return _getState().serverContext;\n },\n\n setServerContext(ctx: NavigationContext | null): void {\n _getState().serverContext = ctx;\n },\n\n getInsertedHTMLCallbacks(): Array<() => unknown> {\n return _getState().serverInsertedHTMLCallbacks;\n },\n\n clearInsertedHTMLCallbacks(): void {\n _getState().serverInsertedHTMLCallbacks = [];\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;AA8BA,MAAM,WAAW,OAAO,IAAI,wBAAwB;AACpD,MAAM,gBAAgB,OAAO,IAAI,6BAA6B;AAC9D,MAAM,KAAK;AACX,MAAM,OAAQ,GAAG,cACf,IAAI,mBAAoC;AAE1C,MAAM,iBAAkB,GAAG,mBAAmB;CAC5C,eAAe;CACf,6BAA6B,EAAE;CAChC;AAED,SAAS,YAA6B;AACpC,KAAI,sBAAsB,CACxB,QAAO,mBAAmB;AAE5B,QAAO,KAAK,UAAU,IAAI;;;;;;;AAQ5B,SAAgB,yBAA4B,IAA0C;AACpF,KAAI,sBAAsB,CACxB,QAAO,6BAA6B,SAAS;AAC3C,OAAK,gBAAgB;AACrB,OAAK,8BAA8B,EAAE;IACpC,GAAG;AAMR,QAAO,KAAK,IAJmB;EAC7B,eAAe;EACf,6BAA6B,EAAE;EAChC,EACsB,GAAG;;;;;;;;;;AAW5B,SAAgB,+BAAkC,IAA0C;AAC1F,KAAI,sBAAsB,CACxB,QAAO,6BAA6B,SAAS;AAC3C,OAAK,8BAA8B,EAAE;IACpC,GAAG;CAIR,MAAM,QAAyB;EAC7B,gBAFkB,KAAK,UAAU,IAAI,gBAEV;EAC3B,6BAA6B,EAAE;EAChC;AACD,QAAO,KAAK,IAAI,OAAO,GAAG;;AAO5B,wBAAwB;CACtB,mBAA6C;AAC3C,SAAO,WAAW,CAAC;;CAGrB,iBAAiB,KAAqC;AACpD,aAAW,CAAC,gBAAgB;;CAG9B,2BAAiD;AAC/C,SAAO,WAAW,CAAC;;CAGrB,6BAAmC;AACjC,aAAW,CAAC,8BAA8B,EAAE;;CAE/C,CAAC"}
|