vinext 0.0.51 → 0.0.53
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 +1 -1
- package/dist/build/clean-output.d.ts +14 -0
- package/dist/build/clean-output.js +36 -0
- package/dist/build/clean-output.js.map +1 -0
- package/dist/build/precompress.d.ts +7 -7
- package/dist/build/precompress.js +18 -17
- package/dist/build/precompress.js.map +1 -1
- package/dist/build/prerender.d.ts +9 -16
- package/dist/build/prerender.js +88 -50
- package/dist/build/prerender.js.map +1 -1
- package/dist/build/run-prerender.js +10 -1
- package/dist/build/run-prerender.js.map +1 -1
- package/dist/build/static-export.d.ts +5 -0
- package/dist/build/static-export.js +8 -3
- package/dist/build/static-export.js.map +1 -1
- package/dist/check.js +4 -0
- package/dist/check.js.map +1 -1
- package/dist/cli-args.d.ts +1 -0
- package/dist/cli-args.js +5 -0
- package/dist/cli-args.js.map +1 -1
- package/dist/cli.js +58 -4
- package/dist/cli.js.map +1 -1
- package/dist/client/instrumentation-client-inject.d.ts +34 -0
- package/dist/client/instrumentation-client-inject.js +57 -0
- package/dist/client/instrumentation-client-inject.js.map +1 -0
- package/dist/client/navigation-runtime.d.ts +60 -0
- package/dist/client/navigation-runtime.js +171 -0
- package/dist/client/navigation-runtime.js.map +1 -0
- package/dist/client/pages-router-link-navigation.d.ts +26 -0
- package/dist/client/pages-router-link-navigation.js +14 -0
- package/dist/client/pages-router-link-navigation.js.map +1 -0
- package/dist/client/vinext-next-data.d.ts +14 -3
- package/dist/client/vinext-next-data.js +50 -1
- package/dist/client/vinext-next-data.js.map +1 -0
- package/dist/client/window-next.d.ts +10 -2
- package/dist/client/window-next.js.map +1 -1
- package/dist/cloudflare/kv-cache-handler.js +2 -1
- package/dist/cloudflare/kv-cache-handler.js.map +1 -1
- package/dist/cloudflare/tpr.js +1 -1
- package/dist/cloudflare/tpr.js.map +1 -1
- package/dist/config/config-matchers.d.ts +63 -16
- package/dist/config/config-matchers.js +145 -9
- package/dist/config/config-matchers.js.map +1 -1
- package/dist/config/next-config.d.ts +32 -5
- package/dist/config/next-config.js +55 -15
- package/dist/config/next-config.js.map +1 -1
- package/dist/deploy.js +130 -46
- package/dist/deploy.js.map +1 -1
- package/dist/entries/app-browser-entry.js +9 -3
- package/dist/entries/app-browser-entry.js.map +1 -1
- package/dist/entries/app-rsc-entry.d.ts +4 -2
- package/dist/entries/app-rsc-entry.js +76 -16
- package/dist/entries/app-rsc-entry.js.map +1 -1
- package/dist/entries/app-rsc-manifest.d.ts +1 -0
- package/dist/entries/app-rsc-manifest.js +53 -6
- package/dist/entries/app-rsc-manifest.js.map +1 -1
- package/dist/entries/app-ssr-entry.d.ts +3 -3
- package/dist/entries/app-ssr-entry.js +4 -4
- package/dist/entries/app-ssr-entry.js.map +1 -1
- package/dist/entries/pages-client-entry.js +40 -3
- package/dist/entries/pages-client-entry.js.map +1 -1
- package/dist/entries/pages-server-entry.js +261 -31
- package/dist/entries/pages-server-entry.js.map +1 -1
- package/dist/entries/runtime-entry-module.d.ts +2 -1
- package/dist/entries/runtime-entry-module.js +9 -3
- package/dist/entries/runtime-entry-module.js.map +1 -1
- package/dist/index.js +161 -46
- package/dist/index.js.map +1 -1
- package/dist/plugins/css-data-url.d.ts +7 -0
- package/dist/plugins/css-data-url.js +81 -0
- package/dist/plugins/css-data-url.js.map +1 -0
- package/dist/plugins/fonts.js +30 -5
- package/dist/plugins/fonts.js.map +1 -1
- package/dist/plugins/middleware-server-only.d.ts +54 -0
- package/dist/plugins/middleware-server-only.js +91 -0
- package/dist/plugins/middleware-server-only.js.map +1 -0
- package/dist/plugins/optimize-imports.js +4 -4
- package/dist/plugins/optimize-imports.js.map +1 -1
- package/dist/plugins/strip-server-exports.js +5 -8
- package/dist/plugins/strip-server-exports.js.map +1 -1
- package/dist/routing/app-route-graph.d.ts +20 -1
- package/dist/routing/app-route-graph.js +58 -6
- package/dist/routing/app-route-graph.js.map +1 -1
- package/dist/routing/app-router.d.ts +2 -2
- package/dist/routing/app-router.js +2 -2
- package/dist/routing/app-router.js.map +1 -1
- package/dist/routing/route-trie.js +13 -18
- package/dist/routing/route-trie.js.map +1 -1
- package/dist/routing/utils.d.ts +12 -1
- package/dist/routing/utils.js +18 -1
- package/dist/routing/utils.js.map +1 -1
- package/dist/server/api-handler.js +153 -42
- package/dist/server/api-handler.js.map +1 -1
- package/dist/server/app-browser-action-result.d.ts +16 -1
- package/dist/server/app-browser-action-result.js +15 -1
- package/dist/server/app-browser-action-result.js.map +1 -1
- package/dist/server/app-browser-entry.js +309 -155
- package/dist/server/app-browser-entry.js.map +1 -1
- package/dist/server/app-browser-interception-context.d.ts +24 -0
- package/dist/server/app-browser-interception-context.js +32 -0
- package/dist/server/app-browser-interception-context.js.map +1 -0
- package/dist/server/app-browser-navigation-controller.d.ts +3 -1
- package/dist/server/app-browser-navigation-controller.js +5 -1
- package/dist/server/app-browser-navigation-controller.js.map +1 -1
- package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
- package/dist/server/app-browser-rsc-redirect.js +2 -2
- package/dist/server/app-browser-rsc-redirect.js.map +1 -1
- package/dist/server/app-browser-state.d.ts +18 -1
- package/dist/server/app-browser-state.js +19 -1
- package/dist/server/app-browser-state.js.map +1 -1
- package/dist/server/app-browser-stream.d.ts +5 -14
- package/dist/server/app-browser-stream.js +13 -7
- package/dist/server/app-browser-stream.js.map +1 -1
- package/dist/server/app-browser-visible-commit.d.ts +2 -1
- package/dist/server/app-browser-visible-commit.js +1 -0
- package/dist/server/app-browser-visible-commit.js.map +1 -1
- package/dist/server/app-elements-wire.d.ts +10 -5
- package/dist/server/app-elements-wire.js +84 -2
- package/dist/server/app-elements-wire.js.map +1 -1
- package/dist/server/app-elements.d.ts +3 -2
- package/dist/server/app-elements.js +3 -2
- package/dist/server/app-elements.js.map +1 -1
- package/dist/server/app-fallback-renderer.d.ts +12 -3
- package/dist/server/app-fallback-renderer.js +15 -8
- package/dist/server/app-fallback-renderer.js.map +1 -1
- package/dist/server/app-history-state.js +6 -2
- package/dist/server/app-history-state.js.map +1 -1
- package/dist/server/app-interception-context-header.d.ts +33 -0
- package/dist/server/app-interception-context-header.js +44 -0
- package/dist/server/app-interception-context-header.js.map +1 -0
- package/dist/server/app-middleware.d.ts +13 -0
- package/dist/server/app-middleware.js +3 -1
- package/dist/server/app-middleware.js.map +1 -1
- package/dist/server/app-mounted-slots-header.d.ts +19 -0
- package/dist/server/app-mounted-slots-header.js +40 -1
- package/dist/server/app-mounted-slots-header.js.map +1 -1
- package/dist/server/app-optimistic-routing.d.ts +54 -0
- package/dist/server/app-optimistic-routing.js +208 -0
- package/dist/server/app-optimistic-routing.js.map +1 -0
- package/dist/server/app-page-boundary-render.d.ts +1 -0
- package/dist/server/app-page-boundary-render.js +2 -0
- package/dist/server/app-page-boundary-render.js.map +1 -1
- package/dist/server/app-page-boundary.d.ts +1 -0
- package/dist/server/app-page-boundary.js +2 -0
- package/dist/server/app-page-boundary.js.map +1 -1
- package/dist/server/app-page-cache.d.ts +15 -1
- package/dist/server/app-page-cache.js +68 -7
- package/dist/server/app-page-cache.js.map +1 -1
- package/dist/server/app-page-dispatch.d.ts +5 -0
- package/dist/server/app-page-dispatch.js +39 -5
- package/dist/server/app-page-dispatch.js.map +1 -1
- package/dist/server/app-page-element-builder.d.ts +2 -1
- package/dist/server/app-page-element-builder.js +7 -3
- package/dist/server/app-page-element-builder.js.map +1 -1
- package/dist/server/app-page-execution.d.ts +29 -1
- package/dist/server/app-page-execution.js +91 -4
- package/dist/server/app-page-execution.js.map +1 -1
- package/dist/server/app-page-head.d.ts +1 -0
- package/dist/server/app-page-head.js +29 -2
- package/dist/server/app-page-head.js.map +1 -1
- package/dist/server/app-page-probe.js +1 -1
- package/dist/server/app-page-render-observation.js +1 -1
- package/dist/server/app-page-render.d.ts +3 -0
- package/dist/server/app-page-render.js +7 -3
- package/dist/server/app-page-render.js.map +1 -1
- package/dist/server/app-page-response.d.ts +11 -1
- package/dist/server/app-page-response.js +18 -5
- package/dist/server/app-page-response.js.map +1 -1
- package/dist/server/app-page-route-wiring.d.ts +1 -0
- package/dist/server/app-page-route-wiring.js +35 -15
- package/dist/server/app-page-route-wiring.js.map +1 -1
- package/dist/server/app-page-stream.d.ts +4 -0
- package/dist/server/app-page-stream.js +3 -0
- package/dist/server/app-page-stream.js.map +1 -1
- package/dist/server/app-prerender-static-params.d.ts +2 -1
- package/dist/server/app-prerender-static-params.js +44 -8
- package/dist/server/app-prerender-static-params.js.map +1 -1
- package/dist/server/app-route-handler-cache.d.ts +2 -2
- package/dist/server/app-route-handler-cache.js +3 -2
- package/dist/server/app-route-handler-cache.js.map +1 -1
- package/dist/server/app-route-handler-dispatch.d.ts +7 -1
- package/dist/server/app-route-handler-dispatch.js +4 -1
- package/dist/server/app-route-handler-dispatch.js.map +1 -1
- package/dist/server/app-route-handler-execution.d.ts +18 -2
- package/dist/server/app-route-handler-execution.js +1 -0
- package/dist/server/app-route-handler-execution.js.map +1 -1
- package/dist/server/app-route-handler-response.js +6 -5
- package/dist/server/app-route-handler-response.js.map +1 -1
- package/dist/server/app-router-entry.js +6 -2
- package/dist/server/app-router-entry.js.map +1 -1
- package/dist/server/app-rsc-handler.d.ts +11 -1
- package/dist/server/app-rsc-handler.js +48 -21
- package/dist/server/app-rsc-handler.js.map +1 -1
- package/dist/server/app-rsc-render-mode.d.ts +4 -3
- package/dist/server/app-rsc-render-mode.js +7 -1
- package/dist/server/app-rsc-render-mode.js.map +1 -1
- package/dist/server/app-rsc-request-normalization.d.ts +4 -1
- package/dist/server/app-rsc-request-normalization.js +6 -2
- package/dist/server/app-rsc-request-normalization.js.map +1 -1
- package/dist/server/app-rsc-response-finalizer.d.ts +8 -1
- package/dist/server/app-rsc-response-finalizer.js +10 -3
- package/dist/server/app-rsc-response-finalizer.js.map +1 -1
- package/dist/server/app-rsc-route-matching.js +2 -2
- package/dist/server/app-rsc-route-matching.js.map +1 -1
- package/dist/server/app-segment-config.d.ts +4 -1
- package/dist/server/app-segment-config.js +6 -1
- package/dist/server/app-segment-config.js.map +1 -1
- package/dist/server/app-server-action-execution.d.ts +1 -0
- package/dist/server/app-server-action-execution.js +5 -1
- package/dist/server/app-server-action-execution.js.map +1 -1
- package/dist/server/app-ssr-entry.d.ts +2 -0
- package/dist/server/app-ssr-entry.js +92 -55
- package/dist/server/app-ssr-entry.js.map +1 -1
- package/dist/server/app-ssr-stream.d.ts +30 -2
- package/dist/server/app-ssr-stream.js +95 -8
- package/dist/server/app-ssr-stream.js.map +1 -1
- package/dist/server/app-static-generation.d.ts +1 -0
- package/dist/server/app-static-generation.js +2 -1
- package/dist/server/app-static-generation.js.map +1 -1
- package/dist/server/artifact-compatibility.d.ts +1 -1
- package/dist/server/artifact-compatibility.js.map +1 -1
- package/dist/server/cache-headers.d.ts +7 -0
- package/dist/server/cache-headers.js +19 -0
- package/dist/server/cache-headers.js.map +1 -0
- package/dist/server/cache-proof.d.ts +49 -3
- package/dist/server/cache-proof.js +78 -22
- package/dist/server/cache-proof.js.map +1 -1
- package/dist/server/client-reuse-manifest.d.ts +99 -0
- package/dist/server/client-reuse-manifest.js +212 -0
- package/dist/server/client-reuse-manifest.js.map +1 -0
- package/dist/server/default-global-error-module.d.ts +20 -0
- package/dist/server/default-global-error-module.js +20 -0
- package/dist/server/default-global-error-module.js.map +1 -0
- package/dist/server/default-not-found-module.d.ts +20 -0
- package/dist/server/default-not-found-module.js +20 -0
- package/dist/server/default-not-found-module.js.map +1 -0
- package/dist/server/dev-server.d.ts +10 -2
- package/dist/server/dev-server.js +99 -36
- package/dist/server/dev-server.js.map +1 -1
- package/dist/server/edge-api-runtime.d.ts +5 -0
- package/dist/server/edge-api-runtime.js +8 -0
- package/dist/server/edge-api-runtime.js.map +1 -0
- package/dist/server/headers.d.ts +22 -1
- package/dist/server/headers.js +22 -1
- package/dist/server/headers.js.map +1 -1
- package/dist/server/http-error-responses.d.ts +16 -1
- package/dist/server/http-error-responses.js +21 -1
- package/dist/server/http-error-responses.js.map +1 -1
- package/dist/server/image-optimization.d.ts +13 -4
- package/dist/server/image-optimization.js +15 -4
- package/dist/server/image-optimization.js.map +1 -1
- package/dist/server/isr-cache.d.ts +6 -2
- package/dist/server/isr-cache.js +20 -4
- package/dist/server/isr-cache.js.map +1 -1
- package/dist/server/middleware-runtime.d.ts +15 -0
- package/dist/server/middleware-runtime.js +59 -7
- package/dist/server/middleware-runtime.js.map +1 -1
- package/dist/server/middleware.d.ts +1 -1
- package/dist/server/middleware.js +5 -3
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/navigation-planner.d.ts +9 -3
- package/dist/server/navigation-planner.js +98 -25
- package/dist/server/navigation-planner.js.map +1 -1
- package/dist/server/navigation-trace.d.ts +2 -1
- package/dist/server/navigation-trace.js +1 -0
- package/dist/server/navigation-trace.js.map +1 -1
- package/dist/server/pages-api-route.d.ts +45 -1
- package/dist/server/pages-api-route.js +27 -4
- package/dist/server/pages-api-route.js.map +1 -1
- package/dist/server/pages-body-parser-config.d.ts +60 -0
- package/dist/server/pages-body-parser-config.js +79 -0
- package/dist/server/pages-body-parser-config.js.map +1 -0
- package/dist/server/pages-data-route.d.ts +77 -0
- package/dist/server/pages-data-route.js +98 -0
- package/dist/server/pages-data-route.js.map +1 -0
- package/dist/server/pages-default-404.d.ts +31 -0
- package/dist/server/pages-default-404.js +40 -0
- package/dist/server/pages-default-404.js.map +1 -0
- package/dist/server/pages-i18n.d.ts +51 -1
- package/dist/server/pages-i18n.js +61 -1
- package/dist/server/pages-i18n.js.map +1 -1
- package/dist/server/pages-node-compat.d.ts +10 -0
- package/dist/server/pages-node-compat.js +12 -1
- package/dist/server/pages-node-compat.js.map +1 -1
- package/dist/server/pages-page-data.d.ts +69 -2
- package/dist/server/pages-page-data.js +47 -31
- package/dist/server/pages-page-data.js.map +1 -1
- package/dist/server/pages-page-response.d.ts +13 -1
- package/dist/server/pages-page-response.js +16 -11
- package/dist/server/pages-page-response.js.map +1 -1
- package/dist/server/prerender-route-params.d.ts +14 -0
- package/dist/server/prerender-route-params.js +94 -0
- package/dist/server/prerender-route-params.js.map +1 -0
- package/dist/server/prod-server.d.ts +15 -37
- package/dist/server/prod-server.js +143 -107
- package/dist/server/prod-server.js.map +1 -1
- package/dist/server/proxy-trust.d.ts +41 -0
- package/dist/server/proxy-trust.js +70 -0
- package/dist/server/proxy-trust.js.map +1 -0
- package/dist/server/request-pipeline.d.ts +13 -4
- package/dist/server/request-pipeline.js +32 -14
- package/dist/server/request-pipeline.js.map +1 -1
- package/dist/server/seed-cache.d.ts +12 -31
- package/dist/server/seed-cache.js +30 -37
- package/dist/server/seed-cache.js.map +1 -1
- package/dist/server/server-action-not-found.js +8 -3
- package/dist/server/server-action-not-found.js.map +1 -1
- package/dist/server/skip-cache-proof.d.ts +41 -0
- package/dist/server/skip-cache-proof.js +101 -0
- package/dist/server/skip-cache-proof.js.map +1 -0
- package/dist/server/static-file-cache.d.ts +1 -1
- package/dist/server/static-file-cache.js +8 -7
- package/dist/server/static-file-cache.js.map +1 -1
- package/dist/server/streaming-metadata.d.ts +5 -0
- package/dist/server/streaming-metadata.js +10 -0
- package/dist/server/streaming-metadata.js.map +1 -0
- package/dist/shims/app-router-scroll-state.d.ts +12 -0
- package/dist/shims/app-router-scroll-state.js +38 -0
- package/dist/shims/app-router-scroll-state.js.map +1 -0
- package/dist/shims/app-router-scroll.d.ts +14 -0
- package/dist/shims/app-router-scroll.js +100 -0
- package/dist/shims/app-router-scroll.js.map +1 -0
- package/dist/shims/before-interactive-context.d.ts +30 -0
- package/dist/shims/before-interactive-context.js +10 -0
- package/dist/shims/before-interactive-context.js.map +1 -0
- package/dist/shims/cache-runtime.d.ts +1 -1
- package/dist/shims/cache-runtime.js +14 -1
- package/dist/shims/cache-runtime.js.map +1 -1
- package/dist/shims/client-locale.d.ts +15 -0
- package/dist/shims/client-locale.js +13 -0
- package/dist/shims/client-locale.js.map +1 -0
- package/dist/shims/default-global-error.d.ts +32 -0
- package/dist/shims/default-global-error.js +181 -0
- package/dist/shims/default-global-error.js.map +1 -0
- package/dist/shims/default-not-found.d.ts +12 -0
- package/dist/shims/default-not-found.js +61 -0
- package/dist/shims/default-not-found.js.map +1 -0
- package/dist/shims/document.d.ts +59 -3
- package/dist/shims/document.js +36 -5
- package/dist/shims/document.js.map +1 -1
- package/dist/shims/error-boundary.d.ts +2 -2
- package/dist/shims/font-local.d.ts +5 -0
- package/dist/shims/font-local.js +6 -2
- package/dist/shims/font-local.js.map +1 -1
- package/dist/shims/form.js +13 -6
- package/dist/shims/form.js.map +1 -1
- package/dist/shims/head.js +4 -4
- package/dist/shims/head.js.map +1 -1
- package/dist/shims/headers.d.ts +6 -2
- package/dist/shims/headers.js +64 -21
- package/dist/shims/headers.js.map +1 -1
- package/dist/shims/image.d.ts +1 -1
- package/dist/shims/image.js +4 -4
- package/dist/shims/image.js.map +1 -1
- package/dist/shims/internal/pages-data-target.d.ts +58 -0
- package/dist/shims/internal/pages-data-target.js +91 -0
- package/dist/shims/internal/pages-data-target.js.map +1 -0
- package/dist/shims/internal/pages-data-url.d.ts +42 -0
- package/dist/shims/internal/pages-data-url.js +73 -0
- package/dist/shims/internal/pages-data-url.js.map +1 -0
- package/dist/shims/link.d.ts +21 -3
- package/dist/shims/link.js +189 -30
- package/dist/shims/link.js.map +1 -1
- package/dist/shims/metadata.d.ts +2 -1
- package/dist/shims/metadata.js +65 -6
- package/dist/shims/metadata.js.map +1 -1
- package/dist/shims/navigation.d.ts +8 -2
- package/dist/shims/navigation.js +67 -23
- package/dist/shims/navigation.js.map +1 -1
- package/dist/shims/og.d.ts +18 -2
- package/dist/shims/og.js +49 -1
- package/dist/shims/og.js.map +1 -0
- package/dist/shims/request-state-types.d.ts +1 -1
- package/dist/shims/root-params.d.ts +3 -1
- package/dist/shims/root-params.js +11 -3
- package/dist/shims/root-params.js.map +1 -1
- package/dist/shims/router-state.d.ts +1 -0
- package/dist/shims/router-state.js.map +1 -1
- package/dist/shims/router.d.ts +12 -5
- package/dist/shims/router.js +535 -86
- package/dist/shims/router.js.map +1 -1
- package/dist/shims/script.js +86 -12
- package/dist/shims/script.js.map +1 -1
- package/dist/shims/server.d.ts +21 -4
- package/dist/shims/server.js +30 -9
- package/dist/shims/server.js.map +1 -1
- package/dist/shims/slot.js +5 -1
- package/dist/shims/slot.js.map +1 -1
- package/dist/shims/unified-request-context.d.ts +1 -1
- package/dist/shims/url-safety.d.ts +23 -1
- package/dist/shims/url-safety.js +29 -2
- package/dist/shims/url-safety.js.map +1 -1
- package/dist/shims/url-utils.d.ts +2 -1
- package/dist/shims/url-utils.js +15 -4
- package/dist/shims/url-utils.js.map +1 -1
- package/dist/typegen.d.ts +10 -0
- package/dist/typegen.js +242 -0
- package/dist/typegen.js.map +1 -0
- package/dist/utils/asset-prefix.d.ts +33 -5
- package/dist/utils/asset-prefix.js +39 -6
- package/dist/utils/asset-prefix.js.map +1 -1
- package/dist/utils/cache-control-metadata.d.ts +2 -1
- package/dist/utils/cache-control-metadata.js +1 -3
- package/dist/utils/cache-control-metadata.js.map +1 -1
- package/dist/utils/domain-locale.d.ts +2 -1
- package/dist/utils/domain-locale.js +9 -1
- package/dist/utils/domain-locale.js.map +1 -1
- package/dist/utils/html-limited-bots.d.ts +5 -0
- package/dist/utils/html-limited-bots.js +15 -0
- package/dist/utils/html-limited-bots.js.map +1 -0
- package/dist/utils/lazy-chunks.d.ts +1 -1
- package/dist/utils/lazy-chunks.js +1 -1
- package/dist/utils/lazy-chunks.js.map +1 -1
- package/dist/utils/prerender-output-paths.d.ts +15 -0
- package/dist/utils/prerender-output-paths.js +24 -0
- package/dist/utils/prerender-output-paths.js.map +1 -0
- package/dist/utils/query.d.ts +23 -1
- package/dist/utils/query.js +46 -2
- package/dist/utils/query.js.map +1 -1
- package/dist/utils/record.d.ts +5 -0
- package/dist/utils/record.js +8 -0
- package/dist/utils/record.js.map +1 -0
- package/package.json +11 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-rsc-manifest.js","names":[],"sources":["../../src/entries/app-rsc-manifest.ts"],"sourcesContent":["import type { AppRoute } from \"../routing/app-router.js\";\nimport { createMetadataRouteEntriesSource } from \"../server/metadata-route-build-data.js\";\nimport type { MetadataFileRoute } from \"../server/metadata-routes.js\";\nimport { normalizePathSeparators } from \"./runtime-entry-module.js\";\n\ntype AppRscManifestCode = {\n imports: string[];\n routeEntries: string[];\n metaRouteEntries: string[];\n generateStaticParamsEntries: string[];\n rootNotFoundVar: string | null;\n rootForbiddenVar: string | null;\n rootUnauthorizedVar: string | null;\n rootLayoutVars: string[];\n globalErrorVar: string | null;\n globalNotFoundVar: string | null;\n};\n\ntype BuildAppRscManifestCodeOptions = {\n routes: AppRoute[];\n metadataRoutes?: MetadataFileRoute[];\n globalErrorPath?: string | null;\n /**\n * Optional `app/global-not-found.tsx` path. When present, route-miss 404s\n * render this module standalone (it provides its own <html>/<body>) instead\n * of wrapping the regular not-found boundary inside the root layout.\n * Mirrors Next.js 16's `experimental.globalNotFound` behavior.\n * @see https://github.com/vercel/next.js/blob/canary/packages/next/src/server/app-render/app-render.tsx\n */\n globalNotFoundPath?: string | null;\n};\n\ntype ImportAllocator = {\n getImportVar(filePath: string): string;\n importMap: ReadonlyMap<string, string>;\n imports: string[];\n};\n\nfunction createImportAllocator(): ImportAllocator {\n const imports: string[] = [];\n const importMap = new Map<string, string>();\n let importIdx = 0;\n\n return {\n importMap,\n imports,\n getImportVar(filePath) {\n const existing = importMap.get(filePath);\n if (existing) return existing;\n\n const varName = `mod_${importIdx++}`;\n const absPath = normalizePathSeparators(filePath);\n imports.push(`import * as ${varName} from ${JSON.stringify(absPath)};`);\n importMap.set(filePath, varName);\n return varName;\n },\n };\n}\n\nfunction registerRouteModules(routes: AppRoute[], imports: ImportAllocator): void {\n for (const route of routes) {\n if (route.pagePath) imports.getImportVar(route.pagePath);\n if (route.routePath) imports.getImportVar(route.routePath);\n for (const layout of route.layouts) imports.getImportVar(layout);\n for (const tmpl of route.templates) imports.getImportVar(tmpl);\n if (route.loadingPath) imports.getImportVar(route.loadingPath);\n if (route.errorPath) imports.getImportVar(route.errorPath);\n if (route.layoutErrorPaths) {\n for (const ep of route.layoutErrorPaths) {\n if (ep) imports.getImportVar(ep);\n }\n }\n if (route.errorPaths) {\n for (const ep of route.errorPaths) {\n imports.getImportVar(ep);\n }\n }\n if (route.notFoundPath) imports.getImportVar(route.notFoundPath);\n if (route.notFoundPaths) {\n for (const nfp of route.notFoundPaths) {\n if (nfp) imports.getImportVar(nfp);\n }\n }\n if (route.forbiddenPath) imports.getImportVar(route.forbiddenPath);\n if (route.forbiddenPaths) {\n for (const fp of route.forbiddenPaths) {\n if (fp) imports.getImportVar(fp);\n }\n }\n if (route.unauthorizedPath) imports.getImportVar(route.unauthorizedPath);\n if (route.unauthorizedPaths) {\n for (const up of route.unauthorizedPaths) {\n if (up) imports.getImportVar(up);\n }\n }\n for (const slot of route.parallelSlots) {\n if (slot.pagePath) imports.getImportVar(slot.pagePath);\n if (slot.defaultPath) imports.getImportVar(slot.defaultPath);\n if (slot.layoutPath) imports.getImportVar(slot.layoutPath);\n if (slot.loadingPath) imports.getImportVar(slot.loadingPath);\n if (slot.errorPath) imports.getImportVar(slot.errorPath);\n for (const ir of slot.interceptingRoutes) {\n imports.getImportVar(ir.pagePath);\n for (const layoutPath of ir.layoutPaths) {\n imports.getImportVar(layoutPath);\n }\n }\n }\n }\n}\n\nfunction buildRouteEntries(routes: AppRoute[], imports: ImportAllocator): string[] {\n return routes.map((route, routeIdx) => {\n const layoutVars = route.layouts.map((l) => imports.getImportVar(l));\n const templateVars = route.templates.map((t) => imports.getImportVar(t));\n const notFoundVars = (route.notFoundPaths ?? []).map((nf) =>\n nf ? imports.getImportVar(nf) : \"null\",\n );\n const forbiddenVars = (route.forbiddenPaths ?? []).map((fp) =>\n fp ? imports.getImportVar(fp) : \"null\",\n );\n const unauthorizedVars = (route.unauthorizedPaths ?? []).map((up) =>\n up ? imports.getImportVar(up) : \"null\",\n );\n const slotEntries = route.parallelSlots.map((slot) => {\n const interceptEntries = slot.interceptingRoutes.map(\n (ir) => ` {\n convention: ${JSON.stringify(ir.convention)},\n targetPattern: ${JSON.stringify(ir.targetPattern)},\n sourceMatchPattern: ${JSON.stringify(ir.sourceMatchPattern)},\n interceptLayouts: [${ir.layoutPaths.map((layoutPath) => imports.getImportVar(layoutPath)).join(\", \")}],\n page: ${imports.getImportVar(ir.pagePath)},\n params: ${JSON.stringify(ir.params)},\n }`,\n );\n return ` ${JSON.stringify(slot.key)}: {\n id: ${JSON.stringify(slot.id ?? null)},\n name: ${JSON.stringify(slot.name)},\n page: ${slot.pagePath ? imports.getImportVar(slot.pagePath) : \"null\"},\n default: ${slot.defaultPath ? imports.getImportVar(slot.defaultPath) : \"null\"},\n layout: ${slot.layoutPath ? imports.getImportVar(slot.layoutPath) : \"null\"},\n loading: ${slot.loadingPath ? imports.getImportVar(slot.loadingPath) : \"null\"},\n error: ${slot.errorPath ? imports.getImportVar(slot.errorPath) : \"null\"},\n layoutIndex: ${slot.layoutIndex},\n routeSegments: ${JSON.stringify(slot.routeSegments)},\n slotPatternParts: ${slot.slotPatternParts ? JSON.stringify(slot.slotPatternParts) : \"null\"},\n slotParamNames: ${slot.slotParamNames ? JSON.stringify(slot.slotParamNames) : \"null\"},\n intercepts: [\n${interceptEntries.join(\",\\n\")}\n ],\n }`;\n });\n const layoutErrorVars = (route.layoutErrorPaths || []).map((ep) =>\n ep ? imports.getImportVar(ep) : \"null\",\n );\n const errorVars = (route.errorPaths ?? []).map((ep) => imports.getImportVar(ep));\n return ` {\n __buildTimeClassifications: __VINEXT_CLASS(${routeIdx}), // evaluated once at module load\n __buildTimeReasons: __classDebug ? __VINEXT_CLASS_REASONS(${routeIdx}) : null,\n ids: ${JSON.stringify(route.ids ?? null)},\n pattern: ${JSON.stringify(route.pattern)},\n patternParts: ${JSON.stringify(route.patternParts)},\n isDynamic: ${route.isDynamic},\n params: ${JSON.stringify(route.params)},\n rootParamNames: ${JSON.stringify(route.rootParamNames ?? [])},\n page: ${route.pagePath ? imports.getImportVar(route.pagePath) : \"null\"},\n routeHandler: ${route.routePath ? imports.getImportVar(route.routePath) : \"null\"},\n layouts: [${layoutVars.join(\", \")}],\n routeSegments: ${JSON.stringify(route.routeSegments)},\n templateTreePositions: ${JSON.stringify(route.templateTreePositions)},\n layoutTreePositions: ${JSON.stringify(route.layoutTreePositions)},\n templates: [${templateVars.join(\", \")}],\n errors: [${layoutErrorVars.join(\", \")}],\n errorPaths: [${errorVars.join(\", \")}],\n errorTreePositions: ${JSON.stringify(route.errorTreePositions ?? null)},\n slots: {\n${slotEntries.join(\",\\n\")}\n },\n loading: ${route.loadingPath ? imports.getImportVar(route.loadingPath) : \"null\"},\n error: ${route.errorPath ? imports.getImportVar(route.errorPath) : \"null\"},\n notFound: ${route.notFoundPath ? imports.getImportVar(route.notFoundPath) : \"null\"},\n notFounds: [${notFoundVars.join(\", \")}],\n forbidden: ${route.forbiddenPath ? imports.getImportVar(route.forbiddenPath) : \"null\"},\n forbiddens: [${forbiddenVars.join(\", \")}],\n unauthorized: ${route.unauthorizedPath ? imports.getImportVar(route.unauthorizedPath) : \"null\"},\n unauthorizeds: [${unauthorizedVars.join(\", \")}],\n }`;\n });\n}\n\nfunction buildGenerateStaticParamsEntries(routes: AppRoute[], imports: ImportAllocator): string[] {\n const entries: string[] = [];\n for (const route of routes) {\n if (!route.isDynamic || !route.pagePath) continue;\n entries.push(\n ` ${JSON.stringify(route.pattern)}: ${imports.getImportVar(route.pagePath)}?.generateStaticParams ?? null,`,\n );\n }\n return entries;\n}\n\nexport function buildAppRscManifestCode(\n options: BuildAppRscManifestCodeOptions,\n): AppRscManifestCode {\n const imports = createImportAllocator();\n const metadataRoutes = options.metadataRoutes ?? [];\n\n registerRouteModules(options.routes, imports);\n const routeEntries = buildRouteEntries(options.routes, imports);\n\n const rootRoute = options.routes.find((r) => r.pattern === \"/\");\n const rootNotFoundVar = rootRoute?.notFoundPath\n ? imports.getImportVar(rootRoute.notFoundPath)\n : null;\n const rootForbiddenVar = rootRoute?.forbiddenPath\n ? imports.getImportVar(rootRoute.forbiddenPath)\n : null;\n const rootUnauthorizedVar = rootRoute?.unauthorizedPath\n ? imports.getImportVar(rootRoute.unauthorizedPath)\n : null;\n const rootLayoutVars = rootRoute ? rootRoute.layouts.map((l) => imports.getImportVar(l)) : [];\n const globalErrorVar = options.globalErrorPath\n ? imports.getImportVar(options.globalErrorPath)\n : null;\n const globalNotFoundVar = options.globalNotFoundPath\n ? imports.getImportVar(options.globalNotFoundPath)\n : null;\n\n const dynamicMetadataRoutes = metadataRoutes.filter((r) => r.isDynamic);\n for (const route of dynamicMetadataRoutes) {\n imports.getImportVar(route.filePath);\n }\n\n return {\n imports: imports.imports,\n routeEntries,\n metaRouteEntries: createMetadataRouteEntriesSource(metadataRoutes, imports.importMap),\n generateStaticParamsEntries: buildGenerateStaticParamsEntries(options.routes, imports),\n rootNotFoundVar,\n rootForbiddenVar,\n rootUnauthorizedVar,\n rootLayoutVars,\n globalErrorVar,\n globalNotFoundVar,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-rsc-manifest.js","names":[],"sources":["../../src/entries/app-rsc-manifest.ts"],"sourcesContent":["import { convertSegmentsToRouteParts, type AppRoute } from \"../routing/app-router.js\";\nimport { createMetadataRouteEntriesSource } from \"../server/metadata-route-build-data.js\";\nimport type { MetadataFileRoute } from \"../server/metadata-routes.js\";\nimport { normalizePathSeparators } from \"./runtime-entry-module.js\";\n\ntype AppRscManifestCode = {\n imports: string[];\n routeEntries: string[];\n metaRouteEntries: string[];\n generateStaticParamsEntries: string[];\n rootParamNameEntries: string[];\n rootNotFoundVar: string | null;\n rootForbiddenVar: string | null;\n rootUnauthorizedVar: string | null;\n rootLayoutVars: string[];\n globalErrorVar: string | null;\n globalNotFoundVar: string | null;\n};\n\ntype BuildAppRscManifestCodeOptions = {\n routes: AppRoute[];\n metadataRoutes?: MetadataFileRoute[];\n globalErrorPath?: string | null;\n /**\n * Optional `app/global-not-found.tsx` path. When present, route-miss 404s\n * render this module standalone (it provides its own <html>/<body>) instead\n * of wrapping the regular not-found boundary inside the root layout.\n * Mirrors Next.js 16's `experimental.globalNotFound` behavior.\n * @see https://github.com/vercel/next.js/blob/canary/packages/next/src/server/app-render/app-render.tsx\n */\n globalNotFoundPath?: string | null;\n};\n\ntype ImportAllocator = {\n getImportVar(filePath: string): string;\n importMap: ReadonlyMap<string, string>;\n imports: string[];\n};\n\nfunction createImportAllocator(): ImportAllocator {\n const imports: string[] = [];\n const importMap = new Map<string, string>();\n let importIdx = 0;\n\n return {\n importMap,\n imports,\n getImportVar(filePath) {\n const existing = importMap.get(filePath);\n if (existing) return existing;\n\n const varName = `mod_${importIdx++}`;\n const absPath = normalizePathSeparators(filePath);\n imports.push(`import * as ${varName} from ${JSON.stringify(absPath)};`);\n importMap.set(filePath, varName);\n return varName;\n },\n };\n}\n\nfunction registerRouteModules(routes: AppRoute[], imports: ImportAllocator): void {\n for (const route of routes) {\n if (route.pagePath) imports.getImportVar(route.pagePath);\n if (route.routePath) imports.getImportVar(route.routePath);\n for (const layout of route.layouts) imports.getImportVar(layout);\n for (const tmpl of route.templates) imports.getImportVar(tmpl);\n if (route.loadingPath) imports.getImportVar(route.loadingPath);\n if (route.errorPath) imports.getImportVar(route.errorPath);\n if (route.layoutErrorPaths) {\n for (const ep of route.layoutErrorPaths) {\n if (ep) imports.getImportVar(ep);\n }\n }\n if (route.errorPaths) {\n for (const ep of route.errorPaths) {\n imports.getImportVar(ep);\n }\n }\n if (route.notFoundPath) imports.getImportVar(route.notFoundPath);\n if (route.notFoundPaths) {\n for (const nfp of route.notFoundPaths) {\n if (nfp) imports.getImportVar(nfp);\n }\n }\n if (route.forbiddenPath) imports.getImportVar(route.forbiddenPath);\n if (route.forbiddenPaths) {\n for (const fp of route.forbiddenPaths) {\n if (fp) imports.getImportVar(fp);\n }\n }\n if (route.unauthorizedPath) imports.getImportVar(route.unauthorizedPath);\n if (route.unauthorizedPaths) {\n for (const up of route.unauthorizedPaths) {\n if (up) imports.getImportVar(up);\n }\n }\n for (const slot of route.parallelSlots) {\n if (slot.pagePath) imports.getImportVar(slot.pagePath);\n if (slot.defaultPath) imports.getImportVar(slot.defaultPath);\n if (slot.layoutPath) imports.getImportVar(slot.layoutPath);\n if (slot.loadingPath) imports.getImportVar(slot.loadingPath);\n if (slot.errorPath) imports.getImportVar(slot.errorPath);\n for (const ir of slot.interceptingRoutes) {\n imports.getImportVar(ir.pagePath);\n for (const layoutPath of ir.layoutPaths) {\n imports.getImportVar(layoutPath);\n }\n }\n }\n }\n}\n\nfunction buildRouteEntries(routes: AppRoute[], imports: ImportAllocator): string[] {\n return routes.map((route, routeIdx) => {\n const layoutVars = route.layouts.map((l) => imports.getImportVar(l));\n const templateVars = route.templates.map((t) => imports.getImportVar(t));\n const notFoundVars = (route.notFoundPaths ?? []).map((nf) =>\n nf ? imports.getImportVar(nf) : \"null\",\n );\n const forbiddenVars = (route.forbiddenPaths ?? []).map((fp) =>\n fp ? imports.getImportVar(fp) : \"null\",\n );\n const unauthorizedVars = (route.unauthorizedPaths ?? []).map((up) =>\n up ? imports.getImportVar(up) : \"null\",\n );\n const slotEntries = route.parallelSlots.map((slot) => {\n const interceptEntries = slot.interceptingRoutes.map(\n (ir) => ` {\n convention: ${JSON.stringify(ir.convention)},\n targetPattern: ${JSON.stringify(ir.targetPattern)},\n sourceMatchPattern: ${JSON.stringify(ir.sourceMatchPattern)},\n interceptLayouts: [${ir.layoutPaths.map((layoutPath) => imports.getImportVar(layoutPath)).join(\", \")}],\n page: ${imports.getImportVar(ir.pagePath)},\n params: ${JSON.stringify(ir.params)},\n }`,\n );\n return ` ${JSON.stringify(slot.key)}: {\n id: ${JSON.stringify(slot.id ?? null)},\n name: ${JSON.stringify(slot.name)},\n page: ${slot.pagePath ? imports.getImportVar(slot.pagePath) : \"null\"},\n default: ${slot.defaultPath ? imports.getImportVar(slot.defaultPath) : \"null\"},\n layout: ${slot.layoutPath ? imports.getImportVar(slot.layoutPath) : \"null\"},\n loading: ${slot.loadingPath ? imports.getImportVar(slot.loadingPath) : \"null\"},\n error: ${slot.errorPath ? imports.getImportVar(slot.errorPath) : \"null\"},\n layoutIndex: ${slot.layoutIndex},\n routeSegments: ${JSON.stringify(slot.routeSegments)},\n slotPatternParts: ${slot.slotPatternParts ? JSON.stringify(slot.slotPatternParts) : \"null\"},\n slotParamNames: ${slot.slotParamNames ? JSON.stringify(slot.slotParamNames) : \"null\"},\n intercepts: [\n${interceptEntries.join(\",\\n\")}\n ],\n }`;\n });\n const layoutErrorVars = (route.layoutErrorPaths || []).map((ep) =>\n ep ? imports.getImportVar(ep) : \"null\",\n );\n const errorVars = (route.errorPaths ?? []).map((ep) => imports.getImportVar(ep));\n return ` {\n __buildTimeClassifications: __VINEXT_CLASS(${routeIdx}), // evaluated once at module load\n __buildTimeReasons: __classDebug ? __VINEXT_CLASS_REASONS(${routeIdx}) : null,\n ids: ${JSON.stringify(route.ids ?? null)},\n pattern: ${JSON.stringify(route.pattern)},\n patternParts: ${JSON.stringify(route.patternParts)},\n isDynamic: ${route.isDynamic},\n params: ${JSON.stringify(route.params)},\n rootParamNames: ${JSON.stringify(route.rootParamNames ?? [])},\n page: ${route.pagePath ? imports.getImportVar(route.pagePath) : \"null\"},\n routeHandler: ${route.routePath ? imports.getImportVar(route.routePath) : \"null\"},\n layouts: [${layoutVars.join(\", \")}],\n routeSegments: ${JSON.stringify(route.routeSegments)},\n templateTreePositions: ${JSON.stringify(route.templateTreePositions)},\n layoutTreePositions: ${JSON.stringify(route.layoutTreePositions)},\n templates: [${templateVars.join(\", \")}],\n errors: [${layoutErrorVars.join(\", \")}],\n errorPaths: [${errorVars.join(\", \")}],\n errorTreePositions: ${JSON.stringify(route.errorTreePositions ?? null)},\n slots: {\n${slotEntries.join(\",\\n\")}\n },\n loading: ${route.loadingPath ? imports.getImportVar(route.loadingPath) : \"null\"},\n error: ${route.errorPath ? imports.getImportVar(route.errorPath) : \"null\"},\n notFound: ${route.notFoundPath ? imports.getImportVar(route.notFoundPath) : \"null\"},\n notFounds: [${notFoundVars.join(\", \")}],\n forbidden: ${route.forbiddenPath ? imports.getImportVar(route.forbiddenPath) : \"null\"},\n forbiddens: [${forbiddenVars.join(\", \")}],\n unauthorized: ${route.unauthorizedPath ? imports.getImportVar(route.unauthorizedPath) : \"null\"},\n unauthorizeds: [${unauthorizedVars.join(\", \")}],\n }`;\n });\n}\n\ntype RoutePatternPrefix = {\n pattern: string;\n paramNames: string[];\n};\n\nfunction createRoutePatternPrefix(\n routeSegments: readonly string[],\n treePosition: number,\n): RoutePatternPrefix | null {\n // treePosition is always non-negative (represents tree depth).\n const limit = Math.min(treePosition, routeSegments.length);\n const converted = convertSegmentsToRouteParts(routeSegments.slice(0, limit));\n if (!converted) return null;\n\n return {\n pattern: converted.urlSegments.length === 0 ? \"/\" : `/${converted.urlSegments.join(\"/\")}`,\n paramNames: converted.params,\n };\n}\n\nfunction appendStaticParamSource(\n sourcesByPattern: Map<string, string[]>,\n pattern: string | null,\n sourceVar: string,\n): void {\n if (!pattern || pattern === \"/\" || !pattern.includes(\":\")) return;\n const sources = sourcesByPattern.get(pattern) ?? [];\n // ImportAllocator is path-stable, so the generated member expression is a\n // deterministic key for deduping the same module across inherited routes.\n if (!sources.includes(sourceVar)) sources.push(sourceVar);\n sourcesByPattern.set(pattern, sources);\n}\n\nfunction buildRootParamNamesByPattern(routes: AppRoute[]): Map<string, string[]> {\n const namesByPattern = new Map<string, string[]>();\n\n function append(\n pattern: string | null,\n rootParamNames: readonly string[] | undefined,\n paramNames: readonly string[],\n ): void {\n if (!pattern || pattern === \"/\" || !pattern.includes(\":\")) return;\n const patternParams = new Set(paramNames);\n const names = (rootParamNames ?? []).filter((name) => patternParams.has(name));\n if (names.length === 0) return;\n\n const existing = namesByPattern.get(pattern) ?? [];\n for (const name of names) {\n if (!existing.includes(name)) existing.push(name);\n }\n namesByPattern.set(pattern, existing);\n }\n\n for (const route of routes) {\n if (!route.isDynamic) continue;\n append(route.pattern, route.rootParamNames, route.params);\n for (const treePosition of route.layoutTreePositions) {\n const prefix = createRoutePatternPrefix(route.routeSegments, treePosition);\n append(prefix?.pattern ?? null, route.rootParamNames, prefix?.paramNames ?? []);\n }\n }\n\n return namesByPattern;\n}\n\nfunction buildGenerateStaticParamsEntries(\n routes: AppRoute[],\n imports: ImportAllocator,\n namesByPattern: Map<string, string[]>,\n): string[] {\n const sourcesByPattern = new Map<string, string[]>();\n\n for (const route of routes) {\n if (!route.isDynamic) continue;\n\n for (const [index, layoutPath] of route.layouts.entries()) {\n appendStaticParamSource(\n sourcesByPattern,\n createRoutePatternPrefix(route.routeSegments, route.layoutTreePositions[index] ?? 0)\n ?.pattern ?? null,\n `${imports.getImportVar(layoutPath)}?.generateStaticParams`,\n );\n }\n\n if (route.pagePath) {\n appendStaticParamSource(\n sourcesByPattern,\n route.pattern,\n `${imports.getImportVar(route.pagePath)}?.generateStaticParams`,\n );\n }\n }\n\n return Array.from(sourcesByPattern.entries()).map(([pattern, sources]) => {\n const rootParamNames = namesByPattern.get(pattern) ?? [];\n return ` ${JSON.stringify(pattern)}: __createAppPrerenderStaticParamsResolver([${sources.join(\n \", \",\n )}], ${JSON.stringify(rootParamNames)}),`;\n });\n}\n\nfunction buildRootParamNameEntries(namesByPattern: Map<string, string[]>): string[] {\n return Array.from(namesByPattern.entries()).map(\n ([pattern, names]) => ` ${JSON.stringify(pattern)}: ${JSON.stringify(names)},`,\n );\n}\n\nexport function buildAppRscManifestCode(\n options: BuildAppRscManifestCodeOptions,\n): AppRscManifestCode {\n const imports = createImportAllocator();\n const metadataRoutes = options.metadataRoutes ?? [];\n\n registerRouteModules(options.routes, imports);\n const routeEntries = buildRouteEntries(options.routes, imports);\n\n const rootRoute = options.routes.find((r) => r.pattern === \"/\");\n const rootNotFoundVar = rootRoute?.notFoundPath\n ? imports.getImportVar(rootRoute.notFoundPath)\n : null;\n const rootForbiddenVar = rootRoute?.forbiddenPath\n ? imports.getImportVar(rootRoute.forbiddenPath)\n : null;\n const rootUnauthorizedVar = rootRoute?.unauthorizedPath\n ? imports.getImportVar(rootRoute.unauthorizedPath)\n : null;\n const rootLayoutVars = rootRoute ? rootRoute.layouts.map((l) => imports.getImportVar(l)) : [];\n const globalErrorVar = options.globalErrorPath\n ? imports.getImportVar(options.globalErrorPath)\n : null;\n const globalNotFoundVar = options.globalNotFoundPath\n ? imports.getImportVar(options.globalNotFoundPath)\n : null;\n\n const dynamicMetadataRoutes = metadataRoutes.filter((r) => r.isDynamic);\n for (const route of dynamicMetadataRoutes) {\n imports.getImportVar(route.filePath);\n }\n\n const namesByPattern = buildRootParamNamesByPattern(options.routes);\n\n return {\n imports: imports.imports,\n routeEntries,\n metaRouteEntries: createMetadataRouteEntriesSource(metadataRoutes, imports.importMap),\n generateStaticParamsEntries: buildGenerateStaticParamsEntries(\n options.routes,\n imports,\n namesByPattern,\n ),\n rootParamNameEntries: buildRootParamNameEntries(namesByPattern),\n rootNotFoundVar,\n rootForbiddenVar,\n rootUnauthorizedVar,\n rootLayoutVars,\n globalErrorVar,\n globalNotFoundVar,\n };\n}\n"],"mappings":"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"}
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* deserializes it to a React tree, and renders to HTML.
|
|
7
7
|
*
|
|
8
8
|
* When `hasPagesDir` is true (hybrid App + Pages Router project), the SSR
|
|
9
|
-
* entry also re-exports
|
|
10
|
-
*
|
|
11
|
-
* metadata
|
|
9
|
+
* entry also re-exports selected Pages server entry hooks from
|
|
10
|
+
* `virtual:vinext-server-entry` so the RSC bundle can access Pages Router
|
|
11
|
+
* route metadata and fallback dispatchers via `import("./ssr/index.js")`.
|
|
12
12
|
*/
|
|
13
13
|
declare function generateSsrEntry(hasPagesDir?: boolean): string;
|
|
14
14
|
//#endregion
|
|
@@ -7,9 +7,9 @@ import { resolveRuntimeEntryModule } from "./runtime-entry-module.js";
|
|
|
7
7
|
* deserializes it to a React tree, and renders to HTML.
|
|
8
8
|
*
|
|
9
9
|
* When `hasPagesDir` is true (hybrid App + Pages Router project), the SSR
|
|
10
|
-
* entry also re-exports
|
|
11
|
-
*
|
|
12
|
-
* metadata
|
|
10
|
+
* entry also re-exports selected Pages server entry hooks from
|
|
11
|
+
* `virtual:vinext-server-entry` so the RSC bundle can access Pages Router
|
|
12
|
+
* route metadata and fallback dispatchers via `import("./ssr/index.js")`.
|
|
13
13
|
*/
|
|
14
14
|
function generateSsrEntry(hasPagesDir = false) {
|
|
15
15
|
const entryPath = resolveRuntimeEntryModule("app-ssr-entry");
|
|
@@ -17,7 +17,7 @@ function generateSsrEntry(hasPagesDir = false) {
|
|
|
17
17
|
export * from ${JSON.stringify(entryPath)};
|
|
18
18
|
export { default } from ${JSON.stringify(entryPath)};
|
|
19
19
|
${hasPagesDir ? `
|
|
20
|
-
export { pageRoutes, renderPage } from "virtual:vinext-server-entry";
|
|
20
|
+
export { handleApiRoute, pageRoutes, renderPage } from "virtual:vinext-server-entry";
|
|
21
21
|
` : ""}`;
|
|
22
22
|
}
|
|
23
23
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-ssr-entry.js","names":[],"sources":["../../src/entries/app-ssr-entry.ts"],"sourcesContent":["import { resolveRuntimeEntryModule } from \"./runtime-entry-module.js\";\n\n/**\n * Generate the virtual SSR entry module.\n *\n * This runs in the `ssr` Vite environment. It receives an RSC stream,\n * deserializes it to a React tree, and renders to HTML.\n *\n * When `hasPagesDir` is true (hybrid App + Pages Router project), the SSR\n * entry also re-exports
|
|
1
|
+
{"version":3,"file":"app-ssr-entry.js","names":[],"sources":["../../src/entries/app-ssr-entry.ts"],"sourcesContent":["import { resolveRuntimeEntryModule } from \"./runtime-entry-module.js\";\n\n/**\n * Generate the virtual SSR entry module.\n *\n * This runs in the `ssr` Vite environment. It receives an RSC stream,\n * deserializes it to a React tree, and renders to HTML.\n *\n * When `hasPagesDir` is true (hybrid App + Pages Router project), the SSR\n * entry also re-exports selected Pages server entry hooks from\n * `virtual:vinext-server-entry` so the RSC bundle can access Pages Router\n * route metadata and fallback dispatchers via `import(\"./ssr/index.js\")`.\n */\nexport function generateSsrEntry(hasPagesDir = false): string {\n const entryPath = resolveRuntimeEntryModule(\"app-ssr-entry\");\n\n return `\nexport * from ${JSON.stringify(entryPath)};\nexport { default } from ${JSON.stringify(entryPath)};\n${\n hasPagesDir\n ? `\nexport { handleApiRoute, pageRoutes, renderPage } from \"virtual:vinext-server-entry\";\n`\n : \"\"\n}`;\n}\n"],"mappings":";;;;;;;;;;;;;AAaA,SAAgB,iBAAiB,cAAc,OAAe;CAC5D,MAAM,YAAY,0BAA0B,gBAAgB;CAE5D,OAAO;gBACO,KAAK,UAAU,UAAU,CAAC;0BAChB,KAAK,UAAU,UAAU,CAAC;EAElD,cACI;;IAGA"}
|
|
@@ -29,10 +29,44 @@ import "vinext/instrumentation-client";
|
|
|
29
29
|
import React from "react";
|
|
30
30
|
import { hydrateRoot } from "react-dom/client";
|
|
31
31
|
import { installPagesRouterRuntime } from "vinext/pages-router-runtime";
|
|
32
|
+
// Statically import next/router as the very first vinext shim so that
|
|
33
|
+
// (a) installWindowNext runs at top-level — \`window.next.router\` is
|
|
34
|
+
// available to test harnesses and third-party scripts BEFORE
|
|
35
|
+
// hydrate() resolves (see .nextjs-ref/packages/next/src/client/next.ts
|
|
36
|
+
// line 13, which also sets window.next as a top-level side effect),
|
|
37
|
+
// and (b) the popstate handler is registered before
|
|
38
|
+
// installPagesRouterRuntime() runs, removing the race window where a
|
|
39
|
+
// popstate event could fire between hydration and runtime install.
|
|
40
|
+
//
|
|
41
|
+
// Mirrors Next.js's bootstrap order: client/next.ts statically imports
|
|
42
|
+
// from './' before calling initialize/hydrate, so window.next is set up
|
|
43
|
+
// before any async work.
|
|
44
|
+
import { wrapWithRouterContext } from "next/router";
|
|
32
45
|
|
|
33
46
|
const pageLoaders = {
|
|
34
47
|
${loaderEntries.join(",\n")}
|
|
35
48
|
};
|
|
49
|
+
${hasApp ? `
|
|
50
|
+
const appLoader = () => import(${JSON.stringify(appFileBase)});
|
|
51
|
+
` : `
|
|
52
|
+
const appLoader = undefined;
|
|
53
|
+
`}
|
|
54
|
+
// Expose the code-split loader manifest on window so client-side
|
|
55
|
+
// _next/data navigations in shims/router.ts can resolve the correct page
|
|
56
|
+
// chunk for any route. Without this, navigateClient() would have to extract
|
|
57
|
+
// the chunk URL from an HTML response — the whole point of switching to the
|
|
58
|
+
// JSON data endpoint is to avoid that round trip.
|
|
59
|
+
//
|
|
60
|
+
// Keys are route patterns in Next.js bracket format (matching __NEXT_DATA__.page
|
|
61
|
+
// and the keys of pageLoaders above). The patterns list is the same as
|
|
62
|
+
// Object.keys(pageLoaders), exposed separately so navigateClient() can iterate
|
|
63
|
+
// it without re-keying the map. Ordering is the insertion order of pageRoutes,
|
|
64
|
+
// which pagesRouter() has already sorted by specificity (static → dynamic →
|
|
65
|
+
// catch-all → optional catch-all) via compareRoutes — so matchPagesPattern()
|
|
66
|
+
// can iterate in order and trust the first match.
|
|
67
|
+
window.__VINEXT_PAGE_LOADERS__ = pageLoaders;
|
|
68
|
+
window.__VINEXT_PAGE_PATTERNS__ = Object.keys(pageLoaders);
|
|
69
|
+
window.__VINEXT_APP_LOADER__ = appLoader;
|
|
36
70
|
|
|
37
71
|
async function hydrate() {
|
|
38
72
|
const nextData = window.__NEXT_DATA__;
|
|
@@ -58,7 +92,7 @@ async function hydrate() {
|
|
|
58
92
|
let element;
|
|
59
93
|
${hasApp ? `
|
|
60
94
|
try {
|
|
61
|
-
const appModule = await
|
|
95
|
+
const appModule = await appLoader();
|
|
62
96
|
const AppComponent = appModule.default;
|
|
63
97
|
window.__VINEXT_APP__ = AppComponent;
|
|
64
98
|
element = React.createElement(AppComponent, { Component: PageComponent, pageProps });
|
|
@@ -70,7 +104,6 @@ async function hydrate() {
|
|
|
70
104
|
`}
|
|
71
105
|
|
|
72
106
|
// Wrap with RouterContext.Provider so next/router and next/compat/router work during hydration.
|
|
73
|
-
const { wrapWithRouterContext } = await import("next/router");
|
|
74
107
|
element = wrapWithRouterContext(element);
|
|
75
108
|
|
|
76
109
|
const container = document.getElementById("__next");
|
|
@@ -82,7 +115,11 @@ async function hydrate() {
|
|
|
82
115
|
const root = hydrateRoot(container, element);
|
|
83
116
|
window.__VINEXT_ROOT__ = root;
|
|
84
117
|
installPagesRouterRuntime();
|
|
85
|
-
|
|
118
|
+
const hydratedAt = performance.now();
|
|
119
|
+
window.__VINEXT_HYDRATED_AT = hydratedAt;
|
|
120
|
+
window.__NEXT_HYDRATED = true;
|
|
121
|
+
window.__NEXT_HYDRATED_AT = hydratedAt;
|
|
122
|
+
window.__NEXT_HYDRATED_CB?.();
|
|
86
123
|
}
|
|
87
124
|
|
|
88
125
|
hydrate();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages-client-entry.js","names":["pagesPatternToNextFormat"],"sources":["../../src/entries/pages-client-entry.ts"],"sourcesContent":["/**\n * Pages Router client hydration entry generator.\n *\n * Generates the virtual client entry module (`virtual:vinext-client-entry`).\n * This is the entry point for `vite build` (client bundle). It maps route\n * patterns to dynamic imports of page modules so Vite code-splits each page\n * into its own chunk. At runtime it reads __NEXT_DATA__ to determine which\n * page to hydrate.\n *\n * Extracted from index.ts.\n */\nimport {\n pagesRouter,\n patternToNextFormat as pagesPatternToNextFormat,\n type Route,\n} from \"../routing/pages-router.js\";\nimport { createValidFileMatcher } from \"../routing/file-matcher.js\";\nimport { type ResolvedNextConfig } from \"../config/next-config.js\";\nimport { findFileWithExts } from \"./pages-entry-helpers.js\";\nimport { normalizePathSeparators } from \"./runtime-entry-module.js\";\n\nexport async function generateClientEntry(\n pagesDir: string,\n nextConfig: ResolvedNextConfig,\n fileMatcher: ReturnType<typeof createValidFileMatcher>,\n): Promise<string> {\n const pageRoutes = await pagesRouter(pagesDir, nextConfig?.pageExtensions, fileMatcher);\n\n const appFilePath = findFileWithExts(pagesDir, \"_app\", fileMatcher);\n const hasApp = appFilePath !== null;\n\n // Build a map of route pattern -> dynamic import.\n // Keys must use Next.js bracket format (e.g. \"/user/[id]\") to match\n // __NEXT_DATA__.page which is set via patternToNextFormat() during SSR.\n const loaderEntries = pageRoutes.map((r: Route) => {\n const absPath = normalizePathSeparators(r.filePath);\n const nextFormatPattern = pagesPatternToNextFormat(r.pattern);\n // JSON.stringify safely escapes quotes, backslashes, and special chars in\n // both the route pattern and the absolute file path.\n // lgtm[js/bad-code-sanitization]\n return ` ${JSON.stringify(nextFormatPattern)}: () => import(${JSON.stringify(absPath)})`;\n });\n\n const appFileBase = appFilePath ? normalizePathSeparators(appFilePath) : undefined;\n\n return `\nimport \"vinext/instrumentation-client\";\nimport React from \"react\";\nimport { hydrateRoot } from \"react-dom/client\";\nimport { installPagesRouterRuntime } from \"vinext/pages-router-runtime\";\n\nconst pageLoaders = {\n${loaderEntries.join(\",\\n\")}\n};\n\nasync function hydrate() {\n const nextData = window.__NEXT_DATA__;\n if (!nextData) {\n console.error(\"[vinext] No __NEXT_DATA__ found\");\n return;\n }\n\n const { pageProps } = nextData.props;\n const loader = pageLoaders[nextData.page];\n if (!loader) {\n console.error(\"[vinext] No page loader for route:\", nextData.page);\n return;\n }\n\n const pageModule = await loader();\n const PageComponent = pageModule.default;\n if (!PageComponent) {\n console.error(\"[vinext] Page module has no default export\");\n return;\n }\n\n let element;\n ${\n hasApp\n ? `\n try {\n const appModule = await
|
|
1
|
+
{"version":3,"file":"pages-client-entry.js","names":["pagesPatternToNextFormat"],"sources":["../../src/entries/pages-client-entry.ts"],"sourcesContent":["/**\n * Pages Router client hydration entry generator.\n *\n * Generates the virtual client entry module (`virtual:vinext-client-entry`).\n * This is the entry point for `vite build` (client bundle). It maps route\n * patterns to dynamic imports of page modules so Vite code-splits each page\n * into its own chunk. At runtime it reads __NEXT_DATA__ to determine which\n * page to hydrate.\n *\n * Extracted from index.ts.\n */\nimport {\n pagesRouter,\n patternToNextFormat as pagesPatternToNextFormat,\n type Route,\n} from \"../routing/pages-router.js\";\nimport { createValidFileMatcher } from \"../routing/file-matcher.js\";\nimport { type ResolvedNextConfig } from \"../config/next-config.js\";\nimport { findFileWithExts } from \"./pages-entry-helpers.js\";\nimport { normalizePathSeparators } from \"./runtime-entry-module.js\";\n\nexport async function generateClientEntry(\n pagesDir: string,\n nextConfig: ResolvedNextConfig,\n fileMatcher: ReturnType<typeof createValidFileMatcher>,\n): Promise<string> {\n const pageRoutes = await pagesRouter(pagesDir, nextConfig?.pageExtensions, fileMatcher);\n\n const appFilePath = findFileWithExts(pagesDir, \"_app\", fileMatcher);\n const hasApp = appFilePath !== null;\n\n // Build a map of route pattern -> dynamic import.\n // Keys must use Next.js bracket format (e.g. \"/user/[id]\") to match\n // __NEXT_DATA__.page which is set via patternToNextFormat() during SSR.\n const loaderEntries = pageRoutes.map((r: Route) => {\n const absPath = normalizePathSeparators(r.filePath);\n const nextFormatPattern = pagesPatternToNextFormat(r.pattern);\n // JSON.stringify safely escapes quotes, backslashes, and special chars in\n // both the route pattern and the absolute file path.\n // lgtm[js/bad-code-sanitization]\n return ` ${JSON.stringify(nextFormatPattern)}: () => import(${JSON.stringify(absPath)})`;\n });\n\n const appFileBase = appFilePath ? normalizePathSeparators(appFilePath) : undefined;\n\n return `\nimport \"vinext/instrumentation-client\";\nimport React from \"react\";\nimport { hydrateRoot } from \"react-dom/client\";\nimport { installPagesRouterRuntime } from \"vinext/pages-router-runtime\";\n// Statically import next/router as the very first vinext shim so that\n// (a) installWindowNext runs at top-level — \\`window.next.router\\` is\n// available to test harnesses and third-party scripts BEFORE\n// hydrate() resolves (see .nextjs-ref/packages/next/src/client/next.ts\n// line 13, which also sets window.next as a top-level side effect),\n// and (b) the popstate handler is registered before\n// installPagesRouterRuntime() runs, removing the race window where a\n// popstate event could fire between hydration and runtime install.\n//\n// Mirrors Next.js's bootstrap order: client/next.ts statically imports\n// from './' before calling initialize/hydrate, so window.next is set up\n// before any async work.\nimport { wrapWithRouterContext } from \"next/router\";\n\nconst pageLoaders = {\n${loaderEntries.join(\",\\n\")}\n};\n${\n hasApp\n ? `\nconst appLoader = () => import(${JSON.stringify(appFileBase!)});\n`\n : `\nconst appLoader = undefined;\n`\n}\n// Expose the code-split loader manifest on window so client-side\n// _next/data navigations in shims/router.ts can resolve the correct page\n// chunk for any route. Without this, navigateClient() would have to extract\n// the chunk URL from an HTML response — the whole point of switching to the\n// JSON data endpoint is to avoid that round trip.\n//\n// Keys are route patterns in Next.js bracket format (matching __NEXT_DATA__.page\n// and the keys of pageLoaders above). The patterns list is the same as\n// Object.keys(pageLoaders), exposed separately so navigateClient() can iterate\n// it without re-keying the map. Ordering is the insertion order of pageRoutes,\n// which pagesRouter() has already sorted by specificity (static → dynamic →\n// catch-all → optional catch-all) via compareRoutes — so matchPagesPattern()\n// can iterate in order and trust the first match.\nwindow.__VINEXT_PAGE_LOADERS__ = pageLoaders;\nwindow.__VINEXT_PAGE_PATTERNS__ = Object.keys(pageLoaders);\nwindow.__VINEXT_APP_LOADER__ = appLoader;\n\nasync function hydrate() {\n const nextData = window.__NEXT_DATA__;\n if (!nextData) {\n console.error(\"[vinext] No __NEXT_DATA__ found\");\n return;\n }\n\n const { pageProps } = nextData.props;\n const loader = pageLoaders[nextData.page];\n if (!loader) {\n console.error(\"[vinext] No page loader for route:\", nextData.page);\n return;\n }\n\n const pageModule = await loader();\n const PageComponent = pageModule.default;\n if (!PageComponent) {\n console.error(\"[vinext] Page module has no default export\");\n return;\n }\n\n let element;\n ${\n hasApp\n ? `\n try {\n const appModule = await appLoader();\n const AppComponent = appModule.default;\n window.__VINEXT_APP__ = AppComponent;\n element = React.createElement(AppComponent, { Component: PageComponent, pageProps });\n } catch {\n element = React.createElement(PageComponent, pageProps);\n }\n `\n : `\n element = React.createElement(PageComponent, pageProps);\n `\n }\n\n // Wrap with RouterContext.Provider so next/router and next/compat/router work during hydration.\n element = wrapWithRouterContext(element);\n\n const container = document.getElementById(\"__next\");\n if (!container) {\n console.error(\"[vinext] No #__next element found\");\n return;\n }\n\n const root = hydrateRoot(container, element);\n window.__VINEXT_ROOT__ = root;\n installPagesRouterRuntime();\n const hydratedAt = performance.now();\n window.__VINEXT_HYDRATED_AT = hydratedAt;\n window.__NEXT_HYDRATED = true;\n window.__NEXT_HYDRATED_AT = hydratedAt;\n window.__NEXT_HYDRATED_CB?.();\n}\n\nhydrate();\n`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAqBA,eAAsB,oBACpB,UACA,YACA,aACiB;CACjB,MAAM,aAAa,MAAM,YAAY,UAAU,YAAY,gBAAgB,YAAY;CAEvF,MAAM,cAAc,iBAAiB,UAAU,QAAQ,YAAY;CACnE,MAAM,SAAS,gBAAgB;CAK/B,MAAM,gBAAgB,WAAW,KAAK,MAAa;EACjD,MAAM,UAAU,wBAAwB,EAAE,SAAS;EACnD,MAAM,oBAAoBA,oBAAyB,EAAE,QAAQ;EAI7D,OAAO,KAAK,KAAK,UAAU,kBAAkB,CAAC,iBAAiB,KAAK,UAAU,QAAQ,CAAC;GACvF;CAEF,MAAM,cAAc,cAAc,wBAAwB,YAAY,GAAG,KAAA;CAEzE,OAAO;;;;;;;;;;;;;;;;;;;;EAoBP,cAAc,KAAK,MAAM,CAAC;;EAG1B,SACI;iCAC2B,KAAK,UAAU,YAAa,CAAC;IAExD;;EAGL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyCG,SACI;;;;;;;;;MAUA;;IAGL"}
|