vinext 1.2.1 → 1.3.1
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 +12 -9
- package/dist/_virtual/_rolldown/runtime.js +1 -1
- package/dist/build/action-owner-manifest.d.ts +3 -2
- package/dist/build/action-owner-manifest.js +18 -2
- package/dist/build/app-page-static-eligibility.d.ts +17 -1
- package/dist/build/app-page-static-eligibility.js +80 -13
- package/dist/build/clean-output.d.ts +2 -1
- package/dist/build/client-build-config.d.ts +77 -6
- package/dist/build/client-build-config.js +176 -12
- package/dist/build/client-reference-async.d.ts +48 -0
- package/dist/build/client-reference-async.js +123 -0
- package/dist/build/client-reference-chunks.d.ts +32 -0
- package/dist/build/client-reference-chunks.js +111 -0
- package/dist/build/client-reference-groups.d.ts +171 -0
- package/dist/build/client-reference-groups.js +572 -0
- package/dist/build/css-url-assets.d.ts +2 -1
- package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
- package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
- package/dist/build/google-fonts/font-metadata.d.ts +2 -1
- package/dist/build/google-fonts/validate.d.ts +2 -1
- package/dist/build/inline-css.d.ts +2 -1
- package/dist/build/layout-classification.d.ts +2 -1
- package/dist/build/module-dependency-cache.d.ts +33 -1
- package/dist/build/module-dependency-cache.js +51 -1
- package/dist/build/next-client-runtime-manifests.d.ts +12 -2
- package/dist/build/next-client-runtime-manifests.js +19 -4
- package/dist/build/nitro-public-files.d.ts +24 -0
- package/dist/build/nitro-public-files.js +60 -0
- package/dist/build/pages-client-assets-module.js +1 -1
- package/dist/build/precompress.d.ts +2 -1
- package/dist/build/precompress.js +1 -1
- package/dist/build/prerender-paths.d.ts +2 -1
- package/dist/build/prerender-paths.js +5 -2
- package/dist/build/prerender-phase.d.ts +2 -1
- package/dist/build/prerender-server-pool.js +1 -1
- package/dist/build/prerender.d.ts +3 -2
- package/dist/build/prerender.js +5 -4
- package/dist/build/report.d.ts +2 -1
- package/dist/build/route-classification-injector.d.ts +2 -1
- package/dist/build/route-classification-manifest.d.ts +2 -1
- package/dist/build/run-prerender.d.ts +2 -1
- package/dist/build/server-actions-encryption-key.d.ts +24 -0
- package/dist/build/server-actions-encryption-key.js +101 -0
- package/dist/build/ssr-manifest.d.ts +3 -0
- package/dist/build/ssr-manifest.js +34 -2
- package/dist/build/standalone.d.ts +2 -1
- package/dist/cache/cache-adapters-virtual.d.ts +2 -1
- package/dist/cache.js +1 -2
- package/dist/check.d.ts +2 -1
- package/dist/check.js +4 -0
- package/dist/cli-args.d.ts +2 -1
- package/dist/cli.js +2 -0
- package/dist/client/client-redirect-matcher.js +2 -1
- package/dist/client/client-redirects.d.ts +4 -3
- package/dist/client/client-redirects.js +2 -1
- package/dist/client/client-rewrite-params.d.ts +9 -0
- package/dist/client/client-rewrite-params.js +20 -0
- package/dist/client/client-rewrites.d.ts +2 -1
- package/dist/client/dev-error-overlay-store.d.ts +2 -1
- package/dist/client/dev-error-overlay.js +2 -1
- package/dist/client/index.js +1 -2
- package/dist/client/instrumentation-client-state.js +5 -5
- package/dist/client/navigation-runtime.d.ts +28 -3
- package/dist/client/navigation-runtime.js +42 -11
- package/dist/client/pages-router-link-navigation.d.ts +2 -1
- package/dist/client/vinext-next-data.d.ts +25 -2
- package/dist/client/window-next.d.ts +2 -1
- package/dist/config/config-matchers.d.ts +27 -41
- package/dist/config/config-matchers.js +293 -270
- package/dist/config/config-source.d.ts +34 -0
- package/dist/config/config-source.js +141 -0
- package/dist/config/dotenv.d.ts +2 -1
- package/dist/config/header-params.d.ts +29 -0
- package/dist/config/header-params.js +106 -0
- package/dist/config/next-config.d.ts +20 -6
- package/dist/config/next-config.js +149 -11
- package/dist/config/tsconfig-paths.d.ts +2 -1
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
- package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
- package/dist/entries/app-browser-entry.d.ts +34 -6
- package/dist/entries/app-browser-entry.js +103 -40
- package/dist/entries/app-rsc-entry.d.ts +4 -1
- package/dist/entries/app-rsc-entry.js +131 -66
- package/dist/entries/app-rsc-manifest.d.ts +12 -1
- package/dist/entries/app-rsc-manifest.js +73 -1
- package/dist/entries/app-ssr-entry.d.ts +4 -1
- package/dist/entries/app-ssr-entry.js +9 -2
- package/dist/entries/pages-client-entry.d.ts +1 -0
- package/dist/entries/pages-client-entry.js +6 -6
- package/dist/entries/pages-entry-helpers.js +1 -2
- package/dist/entries/pages-server-entry.d.ts +2 -1
- package/dist/entries/pages-server-entry.js +18 -15
- package/dist/entries/runtime-entry-module.d.ts +1 -0
- package/dist/entries/runtime-entry-module.js +4 -1
- package/dist/image/image-adapters-virtual.d.ts +2 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.js +340 -116
- package/dist/init.js +17 -0
- package/dist/plugins/client-compile-hints.d.ts +30 -0
- package/dist/plugins/client-compile-hints.js +88 -0
- package/dist/plugins/client-reference-dedup.d.ts +2 -1
- package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
- package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
- package/dist/plugins/dynamic-preload-metadata.js +1 -1
- package/dist/plugins/environment.d.ts +2 -1
- package/dist/plugins/fonts.js +9 -12
- package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
- package/dist/plugins/import-meta-url.d.ts +2 -1
- package/dist/plugins/og-assets.d.ts +2 -1
- package/dist/plugins/og-assets.js +2 -3
- package/dist/plugins/optimize-imports.d.ts +27 -3
- package/dist/plugins/optimize-imports.js +106 -20
- package/dist/plugins/pages-node-externals.d.ts +2 -1
- package/dist/plugins/remove-console.d.ts +2 -1
- package/dist/plugins/require-condition-resolution.d.ts +2 -1
- package/dist/plugins/rsc-client-reference-loaders.d.ts +53 -1
- package/dist/plugins/rsc-client-reference-loaders.js +447 -27
- package/dist/plugins/rsc-client-shim-excludes.js +2 -0
- package/dist/plugins/sass.d.ts +2 -1
- package/dist/plugins/strip-server-exports.d.ts +2 -1
- package/dist/plugins/styled-jsx.d.ts +2 -1
- package/dist/plugins/transform-result.d.ts +2 -1
- package/dist/plugins/typeof-window.d.ts +2 -1
- package/dist/plugins/use-cache-callable.d.ts +5 -0
- package/dist/plugins/use-cache-callable.js +30 -8
- package/dist/plugins/worker-image-imports.d.ts +1 -0
- package/dist/plugins/worker-image-imports.js +2 -2
- package/dist/plugins/worker-use-server.d.ts +2 -1
- package/dist/routing/app-route-graph.d.ts +41 -1
- package/dist/routing/app-route-graph.js +122 -50
- package/dist/routing/browser-route-manifest.d.ts +44 -0
- package/dist/routing/browser-route-manifest.js +195 -0
- package/dist/routing/hashed-route-patterns.d.ts +4 -0
- package/dist/routing/hashed-route-patterns.js +22 -0
- package/dist/routing/optimistic-route-trie.d.ts +28 -0
- package/dist/routing/optimistic-route-trie.js +102 -0
- package/dist/routing/route-matching.d.ts +2 -1
- package/dist/routing/route-pattern.d.ts +2 -1
- package/dist/routing/route-validation.d.ts +6 -1
- package/dist/routing/route-validation.js +26 -10
- package/dist/server/accept-encoding.d.ts +2 -1
- package/dist/server/app-action-forwarding.d.ts +10 -1
- package/dist/server/app-action-forwarding.js +15 -1
- package/dist/server/app-bfcache-identity.d.ts +2 -1
- package/dist/server/app-browser-action-result.d.ts +2 -1
- package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -1
- package/dist/server/app-browser-entry.js +175 -64
- package/dist/server/app-browser-error.d.ts +5 -2
- package/dist/server/app-browser-error.js +7 -2
- package/dist/server/app-browser-history-controller.d.ts +2 -1
- package/dist/server/app-browser-hydration.d.ts +2 -1
- package/dist/server/app-browser-interception-context.d.ts +4 -3
- package/dist/server/app-browser-mpa-navigation.d.ts +1 -0
- package/dist/server/app-browser-mpa-navigation.js +6 -5
- package/dist/server/app-browser-navigation-controller.d.ts +17 -6
- package/dist/server/app-browser-navigation-controller.js +103 -36
- package/dist/server/app-browser-popstate.d.ts +2 -1
- package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
- package/dist/server/app-browser-server-action-client.d.ts +2 -1
- package/dist/server/app-browser-state.d.ts +2 -2
- package/dist/server/app-browser-state.js +1 -1
- package/dist/server/app-browser-stream.d.ts +2 -1
- package/dist/server/app-browser-visible-commit.d.ts +6 -5
- package/dist/server/app-client-reference-manifest.d.ts +31 -0
- package/dist/server/app-client-reference-manifest.js +46 -0
- package/dist/server/app-client-reference-preloader.d.ts +45 -2
- package/dist/server/app-client-reference-preloader.js +48 -10
- package/dist/server/app-elements-wire.d.ts +2 -1
- package/dist/server/app-elements.d.ts +2 -0
- package/dist/server/app-elements.js +3 -1
- package/dist/server/app-fallback-renderer.d.ts +9 -2
- package/dist/server/app-fallback-renderer.js +6 -2
- package/dist/server/app-history-state.d.ts +2 -1
- package/dist/server/app-inline-css-client.d.ts +2 -1
- package/dist/server/app-layout-param-observation.d.ts +2 -1
- package/dist/server/app-metadata-tracing.d.ts +2 -1
- package/dist/server/app-middleware.d.ts +6 -0
- package/dist/server/app-middleware.js +8 -10
- package/dist/server/app-optimistic-routing.d.ts +26 -11
- package/dist/server/app-optimistic-routing.js +38 -96
- package/dist/server/app-page-boundary-render.d.ts +20 -2
- package/dist/server/app-page-boundary-render.js +229 -39
- package/dist/server/app-page-boundary.d.ts +34 -5
- package/dist/server/app-page-boundary.js +40 -7
- package/dist/server/app-page-cache-finalizer.d.ts +2 -1
- package/dist/server/app-page-cache-finalizer.js +1 -1
- package/dist/server/app-page-cache-render.d.ts +10 -2
- package/dist/server/app-page-cache-render.js +15 -2
- package/dist/server/app-page-cache.js +2 -2
- package/dist/server/app-page-dispatch.d.ts +34 -1
- package/dist/server/app-page-dispatch.js +165 -34
- package/dist/server/app-page-element-builder.d.ts +17 -1
- package/dist/server/app-page-element-builder.js +187 -66
- package/dist/server/app-page-execution.d.ts +28 -1
- package/dist/server/app-page-execution.js +114 -5
- package/dist/server/app-page-head.d.ts +95 -3
- package/dist/server/app-page-head.js +307 -152
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +48 -2
- package/dist/server/app-page-http-access-fallback-metadata.js +76 -1
- package/dist/server/app-page-method.d.ts +2 -1
- package/dist/server/app-page-probe.d.ts +2 -1
- package/dist/server/app-page-render-identity.d.ts +2 -1
- package/dist/server/app-page-render.d.ts +7 -1
- package/dist/server/app-page-render.js +38 -11
- package/dist/server/app-page-request.d.ts +14 -1
- package/dist/server/app-page-request.js +1 -1
- package/dist/server/app-page-route-wiring.d.ts +52 -2
- package/dist/server/app-page-route-wiring.js +197 -47
- package/dist/server/app-page-rsc-render-status.d.ts +3 -1
- package/dist/server/app-page-rsc-render-status.js +1 -0
- package/dist/server/app-page-search-params-observation.d.ts +8 -6
- package/dist/server/app-page-search-params-observation.js +16 -11
- package/dist/server/app-page-segment-plan.d.ts +2 -1
- package/dist/server/app-page-stream.d.ts +38 -1
- package/dist/server/app-page-stream.js +24 -4
- package/dist/server/app-pages-bridge.d.ts +4 -2
- package/dist/server/app-pages-bridge.js +11 -7
- package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
- package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
- package/dist/server/app-prerender-endpoints.d.ts +2 -1
- package/dist/server/app-prerender-static-params.d.ts +2 -1
- package/dist/server/app-prerender-static-params.js +3 -2
- package/dist/server/app-render-dependency.d.ts +11 -1
- package/dist/server/app-render-dependency.js +65 -6
- package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
- package/dist/server/app-request-stage-independent-entry.js +2 -2
- package/dist/server/app-response-stage-entry.d.ts +2 -1
- package/dist/server/app-response-stage-entry.js +3 -3
- package/dist/server/app-route-handler-cache.d.ts +2 -1
- package/dist/server/app-route-handler-dispatch.d.ts +2 -1
- package/dist/server/app-route-handler-dispatch.js +4 -2
- package/dist/server/app-route-handler-execution.d.ts +4 -1
- package/dist/server/app-route-handler-execution.js +9 -2
- package/dist/server/app-route-handler-middleware-context.d.ts +2 -1
- package/dist/server/app-route-handler-middleware-context.js +3 -3
- package/dist/server/app-route-handler-response.d.ts +4 -2
- package/dist/server/app-route-handler-response.js +2 -2
- package/dist/server/app-route-handler-runtime.d.ts +4 -1
- package/dist/server/app-route-handler-runtime.js +20 -3
- package/dist/server/app-route-module-loader.d.ts +18 -1
- package/dist/server/app-route-module-loader.js +15 -6
- package/dist/server/app-route-tree-prefetch.d.ts +2 -1
- package/dist/server/app-route-tree.d.ts +20 -0
- package/dist/server/app-route-tree.js +18 -0
- package/dist/server/app-router-entry.js +2 -2
- package/dist/server/app-rsc-combined-handler.js +8 -1
- package/dist/server/app-rsc-error-handler.d.ts +2 -1
- package/dist/server/app-rsc-errors.d.ts +9 -1
- package/dist/server/app-rsc-errors.js +9 -2
- package/dist/server/app-rsc-handler.d.ts +6 -2
- package/dist/server/app-rsc-handler.js +152 -140
- package/dist/server/app-rsc-response-finalizer.d.ts +7 -1
- package/dist/server/app-rsc-response-finalizer.js +4 -1
- package/dist/server/app-rsc-response-stage.js +3 -1
- package/dist/server/app-rsc-route-matching.d.ts +39 -1
- package/dist/server/app-rsc-route-matching.js +25 -1
- package/dist/server/app-segment-config.d.ts +2 -1
- package/dist/server/app-segment-config.js +1 -14
- package/dist/server/app-server-action-execution.d.ts +25 -7
- package/dist/server/app-server-action-execution.js +53 -59
- package/dist/server/app-ssr-entry.d.ts +12 -0
- package/dist/server/app-ssr-entry.js +104 -48
- package/dist/server/app-ssr-error-meta.d.ts +2 -1
- package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
- package/dist/server/app-ssr-stream.d.ts +29 -10
- package/dist/server/app-ssr-stream.js +311 -67
- package/dist/server/app-static-generation.d.ts +2 -1
- package/dist/server/app-streamed-client-references.d.ts +39 -0
- package/dist/server/app-streamed-client-references.js +156 -0
- package/dist/server/app-visited-response-cache.d.ts +2 -1
- package/dist/server/app-worker-stages.d.ts +2 -1
- package/dist/server/artifact-compatibility.d.ts +2 -1
- package/dist/server/bfcache-identity.d.ts +2 -1
- package/dist/server/cache-headers.d.ts +2 -1
- package/dist/server/cacheability-request.d.ts +2 -1
- package/dist/server/client-reuse-manifest.d.ts +2 -1
- package/dist/server/config-headers.d.ts +2 -1
- package/dist/server/config-headers.js +12 -3
- package/dist/server/csp.d.ts +2 -1
- package/dist/server/default-global-not-found-module.d.ts +2 -1
- package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
- package/dist/server/default-http-access-fallback-modules.js +31 -0
- package/dist/server/defer-until-stream-consumed.d.ts +34 -0
- package/dist/server/defer-until-stream-consumed.js +154 -21
- package/dist/server/dev-lockfile.d.ts +32 -2
- package/dist/server/dev-lockfile.js +46 -2
- package/dist/server/dev-module-runner.d.ts +2 -1
- package/dist/server/dev-server.js +10 -3
- package/dist/server/fetch-handler.js +1 -2
- package/dist/server/file-based-metadata.d.ts +2 -1
- package/dist/server/framework-tracer.d.ts +2 -1
- package/dist/server/html.d.ts +1 -0
- package/dist/server/html.js +19 -1
- package/dist/server/http-conditional.d.ts +2 -1
- package/dist/server/http-error-responses.d.ts +2 -1
- package/dist/server/implicit-tags.d.ts +2 -1
- package/dist/server/isolate-shared-promise.d.ts +10 -0
- package/dist/server/isolate-shared-promise.js +33 -0
- package/dist/server/isr-cache.js +3 -2
- package/dist/server/metadata-route-build-data.d.ts +2 -1
- package/dist/server/metadata-route-build-data.js +1 -1
- package/dist/server/metadata-route-response.d.ts +2 -1
- package/dist/server/metadata-route-response.js +1 -1
- package/dist/server/metadata-routes.d.ts +2 -1
- package/dist/server/middleware-matcher-pattern.d.ts +0 -1
- package/dist/server/middleware-matcher-pattern.js +11 -140
- package/dist/server/middleware-matcher.js +5 -6
- package/dist/server/middleware-response-headers.d.ts +31 -0
- package/dist/server/middleware-response-headers.js +57 -1
- package/dist/server/middleware-runtime.d.ts +2 -1
- package/dist/server/middleware-runtime.js +26 -13
- package/dist/server/navigation-planner.d.ts +2 -2
- package/dist/server/navigation-trace.d.ts +2 -1
- package/dist/server/next-error-digest.d.ts +2 -1
- package/dist/server/nitro-public-files-plugin.d.ts +39 -0
- package/dist/server/nitro-public-files-plugin.js +106 -0
- package/dist/server/nitro-public-files.d.ts +22 -0
- package/dist/server/nitro-public-files.js +39 -0
- package/dist/server/opentelemetry-api.d.ts +2 -1
- package/dist/server/operation-token.d.ts +2 -1
- package/dist/server/pages-api-route.d.ts +2 -1
- package/dist/server/pages-asset-tags.d.ts +7 -1
- package/dist/server/pages-asset-tags.js +9 -2
- package/dist/server/pages-body-parser-config.d.ts +2 -1
- package/dist/server/pages-client-assets.d.ts +8 -1
- package/dist/server/pages-data-route.d.ts +2 -1
- package/dist/server/pages-document-asset-props.d.ts +2 -1
- package/dist/server/pages-document-initial-props.d.ts +2 -1
- package/dist/server/pages-execution-tracing.d.ts +2 -1
- package/dist/server/pages-execution-tracing.js +1 -1
- package/dist/server/pages-get-initial-props.d.ts +2 -1
- package/dist/server/pages-i18n.d.ts +18 -0
- package/dist/server/pages-i18n.js +18 -2
- package/dist/server/pages-node-compat.d.ts +5 -3
- package/dist/server/pages-node-compat.js +35 -16
- package/dist/server/pages-page-data.d.ts +7 -1
- package/dist/server/pages-page-data.js +35 -12
- package/dist/server/pages-page-handler.d.ts +3 -2
- package/dist/server/pages-page-handler.js +16 -7
- package/dist/server/pages-page-method.d.ts +2 -1
- package/dist/server/pages-page-response.d.ts +2 -1
- package/dist/server/pages-preview.d.ts +2 -1
- package/dist/server/pages-readiness.d.ts +2 -1
- package/dist/server/pages-request-pipeline.d.ts +8 -2
- package/dist/server/pages-request-pipeline.js +35 -40
- package/dist/server/pages-request-stage-entry.d.ts +2 -1
- package/dist/server/pages-request-stage-entry.js +16 -6
- package/dist/server/pages-response-stage-entry.d.ts +2 -1
- package/dist/server/pages-response-stage-entry.js +1 -1
- package/dist/server/pages-revalidate.js +1 -0
- package/dist/server/pages-route-data-kind.d.ts +2 -1
- package/dist/server/pages-router-entry.js +1 -1
- package/dist/server/prerender-cache-life-header.d.ts +2 -1
- package/dist/server/prerender-route-params.d.ts +2 -1
- package/dist/server/prod-server.d.ts +2 -2
- package/dist/server/prod-server.js +80 -36
- package/dist/server/proxy-trust.d.ts +6 -0
- package/dist/server/proxy-trust.js +12 -6
- package/dist/server/request-log.d.ts +2 -1
- package/dist/server/request-pipeline.d.ts +5 -0
- package/dist/server/request-pipeline.js +12 -1
- package/dist/server/request-tracing.d.ts +2 -1
- package/dist/server/request-tracing.js +1 -1
- package/dist/server/response-start-tracing.js +7 -29
- package/dist/server/rsc-render-stream.d.ts +4 -0
- package/dist/server/rsc-render-stream.js +25 -0
- package/dist/server/seed-cache.d.ts +2 -1
- package/dist/server/seed-cache.js +1 -1
- package/dist/server/server-reference-loader.js +10 -1
- package/dist/server/static-file-cache.d.ts +2 -1
- package/dist/server/static-file-cache.js +16 -3
- package/dist/server/static-layout-client-reuse-proof.d.ts +2 -1
- package/dist/server/worker-revalidation-context.d.ts +2 -1
- package/dist/server/worker-stages.d.ts +2 -1
- package/dist/server/worker-utils.js +1 -1
- package/dist/shims/app.d.ts +2 -1
- package/dist/shims/cache-callable-runtime.d.ts +2 -1
- package/dist/shims/cache-handler.d.ts +8 -3
- package/dist/shims/cache-handler.js +32 -11
- package/dist/shims/cache-request-state.d.ts +40 -3
- package/dist/shims/cache-request-state.js +70 -5
- package/dist/shims/cache-runtime.js +47 -19
- package/dist/shims/cache.d.ts +2 -2
- package/dist/shims/cache.js +17 -8
- package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
- package/dist/shims/caught-not-found-boundaries.js +48 -0
- package/dist/shims/cdn-purge-routes.d.ts +25 -0
- package/dist/shims/cdn-purge-routes.js +77 -0
- package/dist/shims/client-locale.js +2 -1
- package/dist/shims/client-page-root.d.ts +2 -1
- package/dist/shims/config.d.ts +2 -1
- package/dist/shims/default-forbidden.d.ts +4 -0
- package/dist/shims/default-forbidden.js +18 -0
- package/dist/shims/default-not-found.d.ts +0 -5
- package/dist/shims/default-not-found.js +5 -41
- package/dist/shims/default-unauthorized.d.ts +4 -0
- package/dist/shims/default-unauthorized.js +18 -0
- package/dist/shims/dynamic.js +17 -4
- package/dist/shims/error-boundary.d.ts +39 -3
- package/dist/shims/error-boundary.js +31 -16
- package/dist/shims/font-google.js +1 -2
- package/dist/shims/font-utils.d.ts +3 -2
- package/dist/shims/font-utils.js +5 -3
- package/dist/shims/form.js +9 -4
- package/dist/shims/http-access-error-fallback.d.ts +7 -0
- package/dist/shims/http-access-error-fallback.js +47 -0
- package/dist/shims/image-props.d.ts +93 -0
- package/dist/shims/image-props.js +323 -0
- package/dist/shims/image.d.ts +4 -39
- package/dist/shims/image.js +4 -319
- package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
- package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
- package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
- package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
- package/dist/shims/internal/client-reference-loader.d.ts +7 -0
- package/dist/shims/internal/client-reference-loader.js +91 -0
- package/dist/shims/internal/cookie-serialize.d.ts +2 -1
- package/dist/shims/internal/cookies.js +1 -2
- package/dist/shims/internal/headers-state.d.ts +9 -0
- package/dist/shims/internal/headers-state.js +19 -2
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -2
- package/dist/shims/internal/hybrid-client-route-owner-direct.js +31 -14
- package/dist/shims/internal/hybrid-client-route-owner.js +8 -8
- package/dist/shims/internal/interpolate-as.d.ts +2 -1
- package/dist/shims/internal/pages-data-target.d.ts +2 -1
- package/dist/shims/internal/pages-data-url.d.ts +2 -1
- package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
- package/dist/shims/link.js +198 -53
- package/dist/shims/metadata.d.ts +32 -11
- package/dist/shims/metadata.js +88 -26
- package/dist/shims/navigation-errors.d.ts +2 -1
- package/dist/shims/navigation.d.ts +23 -3
- package/dist/shims/navigation.js +91 -25
- package/dist/shims/og.js +35 -10
- package/dist/shims/pages-router-runtime.d.ts +2 -1
- package/dist/shims/ppr-fallback-shell.d.ts +2 -1
- package/dist/shims/request-context.d.ts +13 -0
- package/dist/shims/router.js +33 -43
- package/dist/shims/server.d.ts +31 -4
- package/dist/shims/server.js +58 -10
- package/dist/shims/thenable-params.d.ts +6 -1
- package/dist/shims/thenable-params.js +11 -2
- package/dist/shims/unified-request-context.d.ts +5 -0
- package/dist/shims/unified-request-context.js +5 -3
- package/dist/typegen.d.ts +2 -1
- package/dist/utils/asset-prefix.d.ts +7 -0
- package/dist/utils/asset-prefix.js +10 -1
- package/dist/utils/client-build-manifest.d.ts +4 -1
- package/dist/utils/client-build-manifest.js +20 -6
- package/dist/utils/client-entry-manifest.d.ts +13 -0
- package/dist/utils/client-entry-manifest.js +20 -1
- package/dist/utils/client-reference-chunks.d.ts +45 -0
- package/dist/utils/client-reference-chunks.js +30 -0
- package/dist/utils/client-runtime-metadata.d.ts +10 -1
- package/dist/utils/client-runtime-metadata.js +53 -9
- package/dist/utils/compare.d.ts +9 -0
- package/dist/utils/compare.js +15 -1
- package/dist/utils/lazy-chunks.d.ts +18 -0
- package/dist/utils/lazy-chunks.js +27 -1
- package/dist/utils/manifest-paths.d.ts +14 -0
- package/dist/utils/manifest-paths.js +22 -1
- package/dist/utils/middleware-request-headers.d.ts +2 -1
- package/dist/utils/path-to-regexp.d.ts +21 -0
- package/dist/{server/middleware-path-to-regexp.js → utils/path-to-regexp.js} +14 -11
- package/dist/utils/plugin-react-version.d.ts +15 -0
- package/dist/utils/plugin-react-version.js +64 -0
- package/dist/utils/project.d.ts +2 -1
- package/dist/utils/project.js +9 -1
- package/dist/utils/public-routes.d.ts +2 -0
- package/dist/utils/public-routes.js +18 -7
- package/dist/utils/query.d.ts +2 -1
- package/dist/utils/sorted-array.d.ts +2 -1
- package/dist/utils/vite-cli-invocation.d.ts +2 -1
- package/package.json +5 -5
- package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
- package/dist/server/default-not-found-module.d.ts +0 -19
- package/dist/server/default-not-found-module.js +0 -18
- package/dist/server/middleware-path-to-regexp.d.ts +0 -13
- package/dist/server/rsc-stream-hints.d.ts +0 -21
- package/dist/server/rsc-stream-hints.js +0 -227
- package/dist/utils/regex-safety.d.ts +0 -17
- package/dist/utils/regex-safety.js +0 -789
|
@@ -1,44 +1,82 @@
|
|
|
1
|
+
import { shareIsolatePromise } from "./isolate-shared-promise.js";
|
|
1
2
|
//#region src/server/app-client-reference-preloader.ts
|
|
2
3
|
const resolvedPreload = Promise.resolve();
|
|
4
|
+
/**
|
|
5
|
+
* The client references a render of `routePattern` preloads, or of no route
|
|
6
|
+
* when it is null, and those it streams.
|
|
7
|
+
* Undefined, meaning every reference, without a plan or a route to look up,
|
|
8
|
+
* or for a pattern the plan doesn't know.
|
|
9
|
+
*/
|
|
10
|
+
function resolveRouteClientReferences(plan, routePattern) {
|
|
11
|
+
if (!plan || routePattern === void 0) return void 0;
|
|
12
|
+
let files;
|
|
13
|
+
if (routePattern === null) files = plan.routeless;
|
|
14
|
+
else if (Object.hasOwn(plan.routes, routePattern)) files = plan.routes[routePattern];
|
|
15
|
+
else return;
|
|
16
|
+
const indices = new Set(plan.always);
|
|
17
|
+
for (const file of files) for (const index of plan.files[file]) indices.add(index);
|
|
18
|
+
const asyncIndices = new Set(plan.async);
|
|
19
|
+
const references = [];
|
|
20
|
+
const streamed = [];
|
|
21
|
+
for (const index of indices) {
|
|
22
|
+
const id = plan.references[index];
|
|
23
|
+
references.push(id);
|
|
24
|
+
if (asyncIndices.has(index)) streamed.push(id);
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
references,
|
|
28
|
+
streamed
|
|
29
|
+
};
|
|
30
|
+
}
|
|
3
31
|
function createClientReferencePreloader(options) {
|
|
4
32
|
let allReferencesPreloaded = false;
|
|
5
33
|
let allReferencesPreloadPromise = null;
|
|
6
34
|
const preloadedReferences = /* @__PURE__ */ new Set();
|
|
7
35
|
const referencePreloadPromises = /* @__PURE__ */ new Map();
|
|
8
36
|
function preloadReference(id, clientRequire) {
|
|
9
|
-
if (preloadedReferences.has(id)) return resolvedPreload;
|
|
10
37
|
const existing = referencePreloadPromises.get(id);
|
|
11
38
|
if (existing) return existing;
|
|
12
|
-
const
|
|
39
|
+
const loading = clientRequire(id);
|
|
40
|
+
const preloadPromise = shareIsolatePromise(loading.then((value) => {
|
|
41
|
+
loading.status = "fulfilled";
|
|
42
|
+
loading.value = value;
|
|
43
|
+
}, (error) => {
|
|
44
|
+
loading.status = "rejected";
|
|
45
|
+
loading.reason = error;
|
|
46
|
+
throw error;
|
|
47
|
+
}).catch((error) => {
|
|
13
48
|
options.onPreloadError?.(id, error);
|
|
14
49
|
}).then(() => {
|
|
15
50
|
preloadedReferences.add(id);
|
|
16
51
|
}).finally(() => {
|
|
17
52
|
referencePreloadPromises.delete(id);
|
|
18
|
-
});
|
|
53
|
+
}));
|
|
19
54
|
referencePreloadPromises.set(id, preloadPromise);
|
|
20
55
|
return preloadPromise;
|
|
21
56
|
}
|
|
22
|
-
function preloadReferenceSet(referenceIds, refs, clientRequire) {
|
|
57
|
+
function preloadReferenceSet(referenceIds, refs, clientRequire, streamedIds) {
|
|
23
58
|
const pending = [];
|
|
24
|
-
for (const id of referenceIds) if (Object.hasOwn(refs, id)
|
|
59
|
+
for (const id of referenceIds) if (Object.hasOwn(refs, id) && !preloadedReferences.has(id)) {
|
|
60
|
+
const loading = preloadReference(id, clientRequire);
|
|
61
|
+
if (!streamedIds?.has(id)) pending.push(loading);
|
|
62
|
+
}
|
|
25
63
|
if (pending.length === 0) return resolvedPreload;
|
|
26
64
|
return Promise.all(pending).then(() => {});
|
|
27
65
|
}
|
|
28
|
-
return { preload(referenceIds) {
|
|
66
|
+
return { preload(referenceIds, streamedIds) {
|
|
29
67
|
const refs = options.getReferences();
|
|
30
68
|
const clientRequire = options.getClientRequire();
|
|
31
69
|
if (!refs || !clientRequire) return resolvedPreload;
|
|
32
|
-
if (referenceIds) return preloadReferenceSet(referenceIds, refs, clientRequire);
|
|
70
|
+
if (referenceIds) return preloadReferenceSet(referenceIds, refs, clientRequire, streamedIds);
|
|
33
71
|
if (allReferencesPreloaded) return resolvedPreload;
|
|
34
72
|
if (allReferencesPreloadPromise) return allReferencesPreloadPromise;
|
|
35
|
-
allReferencesPreloadPromise = preloadReferenceSet(Object.keys(refs), refs, clientRequire).then(() => {
|
|
73
|
+
allReferencesPreloadPromise = shareIsolatePromise(preloadReferenceSet(Object.keys(refs), refs, clientRequire).then(() => {
|
|
36
74
|
allReferencesPreloaded = true;
|
|
37
75
|
}).finally(() => {
|
|
38
76
|
allReferencesPreloadPromise = null;
|
|
39
|
-
});
|
|
77
|
+
}));
|
|
40
78
|
return allReferencesPreloadPromise;
|
|
41
79
|
} };
|
|
42
80
|
}
|
|
43
81
|
//#endregion
|
|
44
|
-
export { createClientReferencePreloader };
|
|
82
|
+
export { createClientReferencePreloader, resolveRouteClientReferences };
|
|
@@ -183,4 +183,5 @@ export declare function buildOutgoingAppPayload(input: {
|
|
|
183
183
|
}): ReactNode | AppOutgoingElements;
|
|
184
184
|
export declare function readAppElementsMetadata(elements: Readonly<Record<string, unknown>>): AppElementsMetadata;
|
|
185
185
|
export declare const AppElementsWire: AppElementsWireCodec;
|
|
186
|
-
//#endregion
|
|
186
|
+
//#endregion
|
|
187
|
+
export {};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { APP_ARTIFACT_COMPATIBILITY_KEY, APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_CACHE_ENTRY_REUSE_PROOF_KEY, APP_DYNAMIC_STALE_TIME_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_LAYOUT_FLAGS_KEY, APP_LAYOUT_IDS_KEY, APP_ROOT_LAYOUT_KEY, APP_ROUTE_KEY, APP_SKIPPED_LAYOUT_IDS_KEY, APP_SLOT_BINDINGS_KEY, APP_SOURCE_PAGE_SEGMENTS_KEY, APP_STATIC_SIBLINGS_KEY, APP_UNMATCHED_SLOT_WIRE_VALUE, AppElementValue, AppElements, AppElementsBfcacheSegmentIdentities, AppElementsInterception, AppElementsSlotBinding, AppElementsWire, AppOutgoingElements, AppWireElements, LayoutFlags, UNMATCHED_SLOT, buildOutgoingAppPayload, compareAppElementsSlotIds, isAppElementsRecord, normalizeAppElements, normalizeAppElementsSlotBindings, readAppElementsMetadata, withLayoutFlags } from "./app-elements-wire.js";
|
|
2
2
|
//#region src/server/app-elements.d.ts
|
|
3
3
|
export declare const APP_PREFETCH_LOADING_SHELL_MARKER_KEY = "__prefetchLoadingShell";
|
|
4
|
+
/** Prefix of the element that streams a route's generateMetadata() tags in the body. */
|
|
5
|
+
export declare const APP_STREAMING_METADATA_BODY_ID_PREFIX = "__vinext_streaming_metadata_body:";
|
|
4
6
|
export declare function getMountedSlotIds(elements: AppElements): string[];
|
|
5
7
|
export declare function getMountedSlotIdsHeader(elements: AppElements): string | null;
|
|
6
8
|
export declare function resolveVisitedResponseInterceptionContext(requestInterceptionContext: string | null, payloadInterceptionContext: string | null): string | null;
|
|
@@ -2,6 +2,8 @@ import { normalizeMountedSlotsHeader } from "./app-mounted-slots-header.js";
|
|
|
2
2
|
import { APP_ARTIFACT_COMPATIBILITY_KEY, APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_CACHE_ENTRY_REUSE_PROOF_KEY, APP_DYNAMIC_STALE_TIME_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_LAYOUT_FLAGS_KEY, APP_LAYOUT_IDS_KEY, APP_ROOT_LAYOUT_KEY, APP_ROUTE_KEY, APP_SKIPPED_LAYOUT_IDS_KEY, APP_SLOT_BINDINGS_KEY, APP_SOURCE_PAGE_SEGMENTS_KEY, APP_STATIC_SIBLINGS_KEY, APP_UNMATCHED_SLOT_WIRE_VALUE, AppElementsWire, UNMATCHED_SLOT, buildOutgoingAppPayload, compareAppElementsSlotIds, isAppElementsRecord, normalizeAppElements, normalizeAppElementsSlotBindings, readAppElementsMetadata, withLayoutFlags } from "./app-elements-wire.js";
|
|
3
3
|
//#region src/server/app-elements.ts
|
|
4
4
|
const APP_PREFETCH_LOADING_SHELL_MARKER_KEY = "__prefetchLoadingShell";
|
|
5
|
+
/** Prefix of the element that streams a route's generateMetadata() tags in the body. */
|
|
6
|
+
const APP_STREAMING_METADATA_BODY_ID_PREFIX = "__vinext_streaming_metadata_body:";
|
|
5
7
|
function getMountedSlotIds(elements) {
|
|
6
8
|
return Object.keys(elements).filter((key) => {
|
|
7
9
|
const value = elements[key];
|
|
@@ -16,4 +18,4 @@ function resolveVisitedResponseInterceptionContext(requestInterceptionContext, p
|
|
|
16
18
|
return payloadInterceptionContext ?? requestInterceptionContext;
|
|
17
19
|
}
|
|
18
20
|
//#endregion
|
|
19
|
-
export { APP_ARTIFACT_COMPATIBILITY_KEY, APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_CACHE_ENTRY_REUSE_PROOF_KEY, APP_DYNAMIC_STALE_TIME_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_LAYOUT_FLAGS_KEY, APP_LAYOUT_IDS_KEY, APP_PREFETCH_LOADING_SHELL_MARKER_KEY, APP_ROOT_LAYOUT_KEY, APP_ROUTE_KEY, APP_SKIPPED_LAYOUT_IDS_KEY, APP_SLOT_BINDINGS_KEY, APP_SOURCE_PAGE_SEGMENTS_KEY, APP_STATIC_SIBLINGS_KEY, APP_UNMATCHED_SLOT_WIRE_VALUE, AppElementsWire, UNMATCHED_SLOT, buildOutgoingAppPayload, compareAppElementsSlotIds, getMountedSlotIds, getMountedSlotIdsHeader, isAppElementsRecord, normalizeAppElements, normalizeAppElementsSlotBindings, readAppElementsMetadata, resolveVisitedResponseInterceptionContext, withLayoutFlags };
|
|
21
|
+
export { APP_ARTIFACT_COMPATIBILITY_KEY, APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_CACHE_ENTRY_REUSE_PROOF_KEY, APP_DYNAMIC_STALE_TIME_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_LAYOUT_FLAGS_KEY, APP_LAYOUT_IDS_KEY, APP_PREFETCH_LOADING_SHELL_MARKER_KEY, APP_ROOT_LAYOUT_KEY, APP_ROUTE_KEY, APP_SKIPPED_LAYOUT_IDS_KEY, APP_SLOT_BINDINGS_KEY, APP_SOURCE_PAGE_SEGMENTS_KEY, APP_STATIC_SIBLINGS_KEY, APP_STREAMING_METADATA_BODY_ID_PREFIX, APP_UNMATCHED_SLOT_WIRE_VALUE, AppElementsWire, UNMATCHED_SLOT, buildOutgoingAppPayload, compareAppElementsSlotIds, getMountedSlotIds, getMountedSlotIdsHeader, isAppElementsRecord, normalizeAppElements, normalizeAppElementsSlotBindings, readAppElementsMetadata, resolveVisitedResponseInterceptionContext, withLayoutFlags };
|
|
@@ -6,7 +6,7 @@ import "../shims/navigation.js";
|
|
|
6
6
|
import { AppPageParams } from "./app-page-boundary.js";
|
|
7
7
|
import { AppPageFontPreload } from "./app-page-execution.js";
|
|
8
8
|
import { AppPageMiddlewareContext } from "./app-page-response.js";
|
|
9
|
-
import { ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
|
|
9
|
+
import { AppPageFallbackRouteHead, ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
|
|
10
10
|
import { AppPageInterceptOptions } from "./app-page-element-builder.js";
|
|
11
11
|
import { AppPageSsrHandler } from "./app-page-stream.js";
|
|
12
12
|
import { AppRenderErrorContextOverrides } from "./app-rsc-error-handler.js";
|
|
@@ -95,13 +95,20 @@ type AppFallbackRenderer<TModule extends AppPageModule = AppPageModule> = {
|
|
|
95
95
|
renderHttpAccessFallback: (route: AppPageBoundaryRoute<TModule> | null, statusCode: number, isRscRequest: boolean, request: Request, opts: {
|
|
96
96
|
boundaryComponent?: AppPageComponent | null;
|
|
97
97
|
boundaryModule?: TModule | null;
|
|
98
|
+
/** Boundary whose metadata the head uses, when not `boundaryModule`. */
|
|
99
|
+
headBoundaryModule?: TModule | null;
|
|
100
|
+
/** Layouts whose metadata the head uses, when more than `layouts`. */
|
|
101
|
+
headLayouts?: readonly (TModule | null | undefined)[] | null;
|
|
98
102
|
intercept?: AppPageInterceptOptions<TModule> | null;
|
|
99
103
|
/** The document may be stored, so it must not carry the request's query. */
|
|
100
104
|
isCacheCandidate?: boolean;
|
|
101
105
|
layouts?: readonly (TModule | null | undefined)[] | null;
|
|
102
106
|
matchedParams?: AppPageParams;
|
|
107
|
+
/** The route's render threw the signal, so the document keeps the route's head. */
|
|
108
|
+
routeHead?: AppPageFallbackRouteHead | null;
|
|
103
109
|
}, scriptNonce: string | undefined, middlewareContext: AppPageMiddlewareContext, callContext?: AppFallbackRendererCallContext) => Promise<Response | null>;
|
|
104
110
|
renderNotFound: (route: AppPageBoundaryRoute<TModule> | null, isRscRequest: boolean, request: Request, matchedParams: AppPageParams | undefined, scriptNonce: string | undefined, middlewareContext: AppPageMiddlewareContext, callContext?: AppFallbackRendererCallContext) => Promise<Response | null>;
|
|
105
111
|
};
|
|
106
112
|
export declare function createAppFallbackRenderer<TModule extends AppPageModule>(options: AppFallbackRendererOptions<TModule>): AppFallbackRenderer<TModule>;
|
|
107
|
-
//#endregion
|
|
113
|
+
//#endregion
|
|
114
|
+
export {};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { runOutsideRequestScopes } from "../shims/internal/als-registry.js";
|
|
2
|
+
import { shareIsolatePromise } from "./isolate-shared-promise.js";
|
|
2
3
|
import { DEFAULT_GLOBAL_ERROR_MODULE } from "./default-global-error-module.js";
|
|
3
4
|
import { shouldServeStreamingMetadata } from "./streaming-metadata.js";
|
|
4
5
|
import { renderAppPageErrorBoundary, renderAppPageHttpAccessFallback } from "./app-page-boundary-render.js";
|
|
5
6
|
import { DEFAULT_GLOBAL_NOT_FOUND_MODULE } from "./default-global-not-found-module.js";
|
|
6
|
-
import { DEFAULT_NOT_FOUND_MODULE } from "./default-
|
|
7
|
+
import { DEFAULT_NOT_FOUND_MODULE } from "./default-http-access-fallback-modules.js";
|
|
7
8
|
//#region src/server/app-fallback-renderer.ts
|
|
8
9
|
const EMPTY_MW_CTX = {
|
|
9
10
|
headers: null,
|
|
@@ -17,7 +18,7 @@ function createAppFallbackRenderer(options) {
|
|
|
17
18
|
let globalNotFoundModulePromise = null;
|
|
18
19
|
function resolveGlobalNotFoundModule() {
|
|
19
20
|
if (!loadGlobalNotFoundModule) return null;
|
|
20
|
-
if (globalNotFoundModulePromise === null) globalNotFoundModulePromise = runOutsideRequestScopes(() => Promise.resolve().then(loadGlobalNotFoundModule));
|
|
21
|
+
if (globalNotFoundModulePromise === null) globalNotFoundModulePromise = shareIsolatePromise(runOutsideRequestScopes(() => Promise.resolve().then(loadGlobalNotFoundModule)));
|
|
21
22
|
return globalNotFoundModulePromise;
|
|
22
23
|
}
|
|
23
24
|
return {
|
|
@@ -85,6 +86,8 @@ function createAppFallbackRenderer(options) {
|
|
|
85
86
|
getAndClearPendingCookies,
|
|
86
87
|
getNavigationContext,
|
|
87
88
|
globalErrorModule: effectiveGlobalErrorModule,
|
|
89
|
+
headBoundaryModule: opts?.headBoundaryModule ?? null,
|
|
90
|
+
headLayoutModules: useGlobalNotFound ? [] : opts?.headLayouts ?? null,
|
|
88
91
|
intercept: opts?.intercept ?? null,
|
|
89
92
|
isCacheCandidate: opts?.isCacheCandidate,
|
|
90
93
|
isEdgeRuntime: callContext?.isEdgeRuntime,
|
|
@@ -103,6 +106,7 @@ function createAppFallbackRenderer(options) {
|
|
|
103
106
|
rootNotFoundModule: routeMissRootNotFoundModule,
|
|
104
107
|
rootUnauthorizedModule,
|
|
105
108
|
route: useGlobalNotFound ? null : route,
|
|
109
|
+
routeHead: opts?.routeHead ?? null,
|
|
106
110
|
routePathname: callContext?.routePathname,
|
|
107
111
|
renderToReadableStream: rscRenderer,
|
|
108
112
|
scriptNonce,
|
|
@@ -2,4 +2,5 @@
|
|
|
2
2
|
type InlineCssStylesheetLinkElement = Pick<HTMLLinkElement, "getAttribute" | "hasAttribute">;
|
|
3
3
|
export declare function isInlineCssStylesheetLinkElement(link: InlineCssStylesheetLinkElement): boolean;
|
|
4
4
|
export declare function removeStylesheetLinksCoveredByInlineCss(): void;
|
|
5
|
-
//#endregion
|
|
5
|
+
//#endregion
|
|
6
|
+
export {};
|
|
@@ -38,4 +38,5 @@ export type StaticLayoutObservationSkipRejection = Readonly<{
|
|
|
38
38
|
export declare function getStaticLayoutObservationSkipRejection(observation: AppLayoutParamAccessObservation): StaticLayoutObservationSkipRejection | null;
|
|
39
39
|
export declare function isAppLayoutObservationUnsafeForStaticReuse(observation: AppLayoutParamAccessObservation): boolean;
|
|
40
40
|
export declare function createAppLayoutParamAccessTracker(): AppLayoutParamAccessTracker;
|
|
41
|
-
//#endregion
|
|
41
|
+
//#endregion
|
|
42
|
+
export {};
|
|
@@ -50,6 +50,12 @@ export type ApplyAppMiddlewareResult = {
|
|
|
50
50
|
search: string | null;
|
|
51
51
|
} | {
|
|
52
52
|
kind: "response";
|
|
53
|
+
/**
|
|
54
|
+
* True when `response` proxies a middleware external rewrite. It carries
|
|
55
|
+
* middleware's headers, and the caller still stages next.config headers
|
|
56
|
+
* beneath them.
|
|
57
|
+
*/
|
|
58
|
+
externalRewrite?: boolean;
|
|
53
59
|
/** Present on real middleware results; optional for older generated callers. */
|
|
54
60
|
matched?: boolean;
|
|
55
61
|
/** True when this pathname can match middleware for some request context. */
|
|
@@ -6,7 +6,7 @@ import { internalServerErrorResponse } from "./http-error-responses.js";
|
|
|
6
6
|
import { cloneRequestWithHeaders, processMiddlewareHeaders } from "./request-pipeline.js";
|
|
7
7
|
import { executeMiddleware } from "./middleware-runtime.js";
|
|
8
8
|
import { applyMiddlewareRequestHeaders, setHeadersContext } from "../shims/headers.js";
|
|
9
|
-
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
|
|
9
|
+
import { mergeMiddlewareResponseHeaders, withExternalRewriteResponseHeaders } from "./middleware-response-headers.js";
|
|
10
10
|
import { setNavigationContext } from "../shims/navigation-context-accessors.js";
|
|
11
11
|
//#region src/server/app-middleware.ts
|
|
12
12
|
const FLIGHT_HEADER_SET = new Set(FLIGHT_HEADERS);
|
|
@@ -92,19 +92,15 @@ async function proxyExternalMiddlewareRewrite(request, rewriteUrl, context) {
|
|
|
92
92
|
const proxyResponse = await proxyExternalRequest(proxyRequest, rewriteUrl);
|
|
93
93
|
const headers = new Headers(proxyResponse.headers);
|
|
94
94
|
processMiddlewareHeaders(headers);
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
statusText: proxyResponse.statusText,
|
|
98
|
-
headers
|
|
99
|
-
});
|
|
100
|
-
const middlewareHeaders = new Headers(context.headers);
|
|
95
|
+
const stagedHeaders = new Headers();
|
|
96
|
+
const middlewareHeaders = new Headers(context.headers ?? void 0);
|
|
101
97
|
processMiddlewareHeaders(middlewareHeaders);
|
|
102
|
-
mergeMiddlewareResponseHeaders(
|
|
103
|
-
return new Response(proxyResponse.body, {
|
|
98
|
+
mergeMiddlewareResponseHeaders(stagedHeaders, middlewareHeaders);
|
|
99
|
+
return withExternalRewriteResponseHeaders(new Response(proxyResponse.body, {
|
|
104
100
|
status: proxyResponse.status,
|
|
105
101
|
statusText: proxyResponse.statusText,
|
|
106
102
|
headers
|
|
107
|
-
});
|
|
103
|
+
}), stagedHeaders, middlewareHeaders.getSetCookie());
|
|
108
104
|
}
|
|
109
105
|
function validationResponseWithMiddlewareHeaders(response, context) {
|
|
110
106
|
if (!context.headers) return response;
|
|
@@ -171,6 +167,7 @@ async function applyAppMiddleware(options) {
|
|
|
171
167
|
const externalRequest = options.externalRewriteRequest ?? options.request;
|
|
172
168
|
return {
|
|
173
169
|
kind: "response",
|
|
170
|
+
externalRewrite: true,
|
|
174
171
|
matched,
|
|
175
172
|
pathnameEligible,
|
|
176
173
|
response: await proxyExternalMiddlewareRewrite(externalRequest, forwarded.rewriteUrl, options.context)
|
|
@@ -248,6 +245,7 @@ async function applyAppMiddleware(options) {
|
|
|
248
245
|
const externalRequest = options.externalRewriteRequest ?? options.request;
|
|
249
246
|
return {
|
|
250
247
|
kind: "response",
|
|
248
|
+
externalRewrite: true,
|
|
251
249
|
matched,
|
|
252
250
|
pathnameEligible,
|
|
253
251
|
response: await proxyExternalMiddlewareRewrite(externalRequest, result.rewriteUrl, options.context)
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BrowserRouteManifest, BrowserRouteManifestRoute } from "../routing/browser-route-manifest.js";
|
|
2
|
+
import { OptimisticRouteTrieMatch } from "../routing/optimistic-route-trie.js";
|
|
2
3
|
import { AppElements } from "./app-elements-wire.js";
|
|
3
4
|
import "./app-elements.js";
|
|
4
5
|
//#region src/server/app-optimistic-routing.d.ts
|
|
5
|
-
type OptimisticRouteMatch =
|
|
6
|
-
params: Record<string, string | string[]>;
|
|
7
|
-
route: RouteManifestRoute;
|
|
8
|
-
};
|
|
6
|
+
type OptimisticRouteMatch = OptimisticRouteTrieMatch<BrowserRouteManifestRoute>;
|
|
9
7
|
export type OptimisticRouteTemplate = {
|
|
10
8
|
elements: AppElements;
|
|
11
9
|
mountedSlotsHeader: string | null;
|
|
@@ -34,12 +32,12 @@ export declare function getOptimisticPrefetchSourceKey(options: {
|
|
|
34
32
|
export declare function matchOptimisticRouteManifestRoute(options: {
|
|
35
33
|
basePath: string;
|
|
36
34
|
href: string;
|
|
37
|
-
routeManifest:
|
|
35
|
+
routeManifest: BrowserRouteManifest;
|
|
38
36
|
}): OptimisticRouteMatch | null;
|
|
39
37
|
export declare function resolveOptimisticNavigationParamsForHref(options: {
|
|
40
38
|
basePath: string;
|
|
41
39
|
href: string;
|
|
42
|
-
routeManifest:
|
|
40
|
+
routeManifest: BrowserRouteManifest;
|
|
43
41
|
}): Record<string, string | string[]> | null;
|
|
44
42
|
export declare function createOptimisticRouteTemplate(options: {
|
|
45
43
|
allowLoadingShell?: boolean;
|
|
@@ -48,9 +46,25 @@ export declare function createOptimisticRouteTemplate(options: {
|
|
|
48
46
|
href: string;
|
|
49
47
|
interceptionContext: string | null;
|
|
50
48
|
mountedSlotsHeader: string | null;
|
|
51
|
-
routeManifest:
|
|
49
|
+
routeManifest: BrowserRouteManifest;
|
|
52
50
|
}): OptimisticRouteTemplate | null;
|
|
53
51
|
export declare function createOptimisticRouteElements(template: OptimisticRouteTemplate): AppElements;
|
|
52
|
+
/**
|
|
53
|
+
* The optimistic shell reveals the prefetch's streamed metadata, such as its
|
|
54
|
+
* title. React won't hide revealed content again in a transition, so while the
|
|
55
|
+
* authoritative payload's own metadata streams, its whole commit, page
|
|
56
|
+
* included, would wait for it. Render that metadata in a new boundary whose
|
|
57
|
+
* fallback is the shell's instead, so the page commits as it streams and the
|
|
58
|
+
* prefetched title stays until the payload's arrives. Next.js likewise renders
|
|
59
|
+
* the prefetched head until the dynamic one resolves (`Head` in app-router.tsx).
|
|
60
|
+
*
|
|
61
|
+
* A payload streams at most one route's metadata. The shell's may carry
|
|
62
|
+
* another concrete route id, since a template learned for one set of params
|
|
63
|
+
* is reused for others. `navigationKey` remounts the boundary on every
|
|
64
|
+
* navigation, so one that already revealed an earlier navigation's metadata
|
|
65
|
+
* can't hold back the next, as Next.js keys `Head` by its vary path.
|
|
66
|
+
*/
|
|
67
|
+
export declare function keepOptimisticStreamingMetadata(elements: AppElements, optimisticElements: AppElements, navigationKey: string): AppElements;
|
|
54
68
|
/**
|
|
55
69
|
* A loading-shell prefetch stops at the first loading boundary, so layouts
|
|
56
70
|
* below that boundary are present in the route metadata but absent from the
|
|
@@ -63,7 +77,7 @@ export declare function canCommitOptimisticRouteTemplate(options: {
|
|
|
63
77
|
currentElements: AppElements;
|
|
64
78
|
currentLayoutIds: readonly string[];
|
|
65
79
|
currentParams: Readonly<Record<string, string | string[]>>;
|
|
66
|
-
routeManifest:
|
|
80
|
+
routeManifest: BrowserRouteManifest;
|
|
67
81
|
targetRouteParams: Readonly<Record<string, string | string[]>>;
|
|
68
82
|
targetUrlParts: readonly string[];
|
|
69
83
|
template: OptimisticRouteTemplate;
|
|
@@ -73,7 +87,8 @@ export declare function resolveOptimisticNavigationPayload(options: {
|
|
|
73
87
|
href: string;
|
|
74
88
|
interceptionContext: string | null;
|
|
75
89
|
mountedSlotsHeader: string | null;
|
|
76
|
-
routeManifest:
|
|
90
|
+
routeManifest: BrowserRouteManifest;
|
|
77
91
|
templates: ReadonlyMap<string, OptimisticRouteTemplate>;
|
|
78
92
|
}): OptimisticNavigationPayload | null;
|
|
79
|
-
//#endregion
|
|
93
|
+
//#endregion
|
|
94
|
+
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { isUnknownRecord } from "../utils/record.js";
|
|
2
2
|
import { stripBasePath } from "../utils/base-path.js";
|
|
3
|
-
import {
|
|
3
|
+
import { decodeMatchedParams, splitPathnameForRouteMatch } from "../routing/utils.js";
|
|
4
4
|
import { extractRawRoutePatternParams, matchRoutePattern } from "../routing/route-pattern.js";
|
|
5
|
+
import { buildOptimisticRouteTrie, matchOptimisticRouteTrie } from "../routing/optimistic-route-trie.js";
|
|
5
6
|
import { AppElementsWire } from "./app-elements-wire.js";
|
|
6
7
|
import "./app-elements.js";
|
|
7
8
|
import { createNestedBfcacheSlotSegmentId, deriveBfcacheSegmentIdentity, isNestedBfcacheSlotSegmentId } from "./bfcache-identity.js";
|
|
@@ -17,61 +18,8 @@ function getOptimisticRouteTemplateKey(options) {
|
|
|
17
18
|
function getOptimisticPrefetchSourceKey(options) {
|
|
18
19
|
return `${options.cacheKey}\0${options.interceptionContext ?? ""}\0${options.mountedSlotsHeader ?? ""}`;
|
|
19
20
|
}
|
|
20
|
-
function createNode() {
|
|
21
|
-
return {
|
|
22
|
-
catchAllChild: null,
|
|
23
|
-
dynamicChild: null,
|
|
24
|
-
optionalCatchAllChild: null,
|
|
25
|
-
route: null,
|
|
26
|
-
staticChildren: /* @__PURE__ */ new Map()
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
21
|
function buildRouteTrie(routeManifest) {
|
|
30
|
-
|
|
31
|
-
for (const route of routeManifest.segmentGraph.routes.values()) {
|
|
32
|
-
let node = root;
|
|
33
|
-
const parts = route.patternParts;
|
|
34
|
-
if (parts.length === 0) {
|
|
35
|
-
node.route ??= route;
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
for (const [index, part] of parts.entries()) {
|
|
39
|
-
const isTerminal = index === parts.length - 1;
|
|
40
|
-
if (part.startsWith(":") && part.endsWith("+")) {
|
|
41
|
-
if (isTerminal && node.catchAllChild === null) node.catchAllChild = {
|
|
42
|
-
paramName: part.slice(1, -1),
|
|
43
|
-
route
|
|
44
|
-
};
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
if (part.startsWith(":") && part.endsWith("*")) {
|
|
48
|
-
if (isTerminal && node.optionalCatchAllChild === null) node.optionalCatchAllChild = {
|
|
49
|
-
paramName: part.slice(1, -1),
|
|
50
|
-
route
|
|
51
|
-
};
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
if (part.startsWith(":")) {
|
|
55
|
-
const paramName = part.slice(1);
|
|
56
|
-
if (node.dynamicChild === null) node.dynamicChild = {
|
|
57
|
-
node: createNode(),
|
|
58
|
-
paramName
|
|
59
|
-
};
|
|
60
|
-
else if (node.dynamicChild.paramName !== paramName && import.meta.env.DEV) console.warn(`[vinext] Optimistic route trie found conflicting dynamic segments at the same level: :${node.dynamicChild.paramName} vs ${part}`);
|
|
61
|
-
node = node.dynamicChild.node;
|
|
62
|
-
if (isTerminal) node.route ??= route;
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
let staticChild = node.staticChildren.get(part);
|
|
66
|
-
if (staticChild === void 0) {
|
|
67
|
-
staticChild = createNode();
|
|
68
|
-
node.staticChildren.set(part, staticChild);
|
|
69
|
-
}
|
|
70
|
-
node = staticChild;
|
|
71
|
-
if (isTerminal) node.route ??= route;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return root;
|
|
22
|
+
return buildOptimisticRouteTrie(routeManifest.segmentGraph.routes.values(), import.meta.env.DEV ? (existingParamName, part) => console.warn(`[vinext] Optimistic route trie found conflicting dynamic segments at the same level: :${existingParamName} vs ${part}`) : void 0);
|
|
75
23
|
}
|
|
76
24
|
function getRouteTrie(routeManifest) {
|
|
77
25
|
const existing = routeTrieCache.get(routeManifest);
|
|
@@ -80,45 +28,6 @@ function getRouteTrie(routeManifest) {
|
|
|
80
28
|
routeTrieCache.set(routeManifest, trie);
|
|
81
29
|
return trie;
|
|
82
30
|
}
|
|
83
|
-
function matchNode(node, urlParts, index, entries) {
|
|
84
|
-
if (index === urlParts.length) {
|
|
85
|
-
if (node.route !== null) return {
|
|
86
|
-
route: node.route,
|
|
87
|
-
params: buildParams(entries)
|
|
88
|
-
};
|
|
89
|
-
if (node.optionalCatchAllChild !== null) return {
|
|
90
|
-
route: node.optionalCatchAllChild.route,
|
|
91
|
-
params: buildParams(entries)
|
|
92
|
-
};
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
const segment = urlParts[index];
|
|
96
|
-
const staticChild = node.staticChildren.get(segment);
|
|
97
|
-
if (staticChild !== void 0) return matchNode(staticChild, urlParts, index + 1, entries);
|
|
98
|
-
if (node.dynamicChild !== null) {
|
|
99
|
-
entries.push([node.dynamicChild.paramName, segment]);
|
|
100
|
-
const match = matchNode(node.dynamicChild.node, urlParts, index + 1, entries);
|
|
101
|
-
if (match !== null) return match;
|
|
102
|
-
entries.pop();
|
|
103
|
-
}
|
|
104
|
-
if (node.catchAllChild !== null) {
|
|
105
|
-
const params = buildParams(entries);
|
|
106
|
-
params[node.catchAllChild.paramName] = urlParts.slice(index);
|
|
107
|
-
return {
|
|
108
|
-
route: node.catchAllChild.route,
|
|
109
|
-
params
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
if (node.optionalCatchAllChild !== null) {
|
|
113
|
-
const params = buildParams(entries);
|
|
114
|
-
params[node.optionalCatchAllChild.paramName] = urlParts.slice(index);
|
|
115
|
-
return {
|
|
116
|
-
route: node.optionalCatchAllChild.route,
|
|
117
|
-
params
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
return null;
|
|
121
|
-
}
|
|
122
31
|
function hrefToRouteParts(href, basePath) {
|
|
123
32
|
let url;
|
|
124
33
|
try {
|
|
@@ -138,7 +47,7 @@ function hrefToRouteParts(href, basePath) {
|
|
|
138
47
|
function matchOptimisticRouteManifestRoute(options) {
|
|
139
48
|
const urlParts = hrefToRouteParts(options.href, options.basePath);
|
|
140
49
|
if (urlParts === null) return null;
|
|
141
|
-
const match =
|
|
50
|
+
const match = matchOptimisticRouteTrie(getRouteTrie(options.routeManifest), urlParts.normalized);
|
|
142
51
|
if (match === null) return null;
|
|
143
52
|
decodeMatchedParams(match.params);
|
|
144
53
|
return match;
|
|
@@ -294,6 +203,39 @@ function createOptimisticRouteElements(template) {
|
|
|
294
203
|
for (const pageElementId of template.pageElementIds) elements[pageElementId] = createElement(OptimisticRouteSegment);
|
|
295
204
|
return elements;
|
|
296
205
|
}
|
|
206
|
+
function findStreamingMetadataBody(elements) {
|
|
207
|
+
for (const id of Object.keys(elements)) if (id.startsWith("__vinext_streaming_metadata_body:")) return id;
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* The optimistic shell reveals the prefetch's streamed metadata, such as its
|
|
212
|
+
* title. React won't hide revealed content again in a transition, so while the
|
|
213
|
+
* authoritative payload's own metadata streams, its whole commit, page
|
|
214
|
+
* included, would wait for it. Render that metadata in a new boundary whose
|
|
215
|
+
* fallback is the shell's instead, so the page commits as it streams and the
|
|
216
|
+
* prefetched title stays until the payload's arrives. Next.js likewise renders
|
|
217
|
+
* the prefetched head until the dynamic one resolves (`Head` in app-router.tsx).
|
|
218
|
+
*
|
|
219
|
+
* A payload streams at most one route's metadata. The shell's may carry
|
|
220
|
+
* another concrete route id, since a template learned for one set of params
|
|
221
|
+
* is reused for others. `navigationKey` remounts the boundary on every
|
|
222
|
+
* navigation, so one that already revealed an earlier navigation's metadata
|
|
223
|
+
* can't hold back the next, as Next.js keys `Head` by its vary path.
|
|
224
|
+
*/
|
|
225
|
+
function keepOptimisticStreamingMetadata(elements, optimisticElements, navigationKey) {
|
|
226
|
+
const id = findStreamingMetadataBody(elements);
|
|
227
|
+
const optimisticId = findStreamingMetadataBody(optimisticElements);
|
|
228
|
+
if (id === null || optimisticId === null) return elements;
|
|
229
|
+
const optimisticMetadata = optimisticElements[optimisticId];
|
|
230
|
+
if (optimisticMetadata == null) return elements;
|
|
231
|
+
return {
|
|
232
|
+
...elements,
|
|
233
|
+
[id]: createElement(Suspense, {
|
|
234
|
+
fallback: optimisticMetadata,
|
|
235
|
+
key: navigationKey
|
|
236
|
+
}, elements[id])
|
|
237
|
+
};
|
|
238
|
+
}
|
|
297
239
|
/**
|
|
298
240
|
* A loading-shell prefetch stops at the first loading boundary, so layouts
|
|
299
241
|
* below that boundary are present in the route metadata but absent from the
|
|
@@ -369,4 +311,4 @@ function resolveOptimisticNavigationPayload(options) {
|
|
|
369
311
|
};
|
|
370
312
|
}
|
|
371
313
|
//#endregion
|
|
372
|
-
export { canCommitOptimisticRouteTemplate, createOptimisticRouteElements, createOptimisticRouteTemplate, getOptimisticPrefetchSourceKey, getOptimisticRouteTemplateKey, matchOptimisticRouteManifestRoute, resolveOptimisticNavigationParamsForHref, resolveOptimisticNavigationPayload };
|
|
314
|
+
export { canCommitOptimisticRouteTemplate, createOptimisticRouteElements, createOptimisticRouteTemplate, getOptimisticPrefetchSourceKey, getOptimisticRouteTemplateKey, keepOptimisticStreamingMetadata, matchOptimisticRouteManifestRoute, resolveOptimisticNavigationParamsForHref, resolveOptimisticNavigationPayload };
|
|
@@ -6,7 +6,7 @@ import "../shims/navigation.js";
|
|
|
6
6
|
import { AppPageParams } from "./app-page-boundary.js";
|
|
7
7
|
import { AppPageFontPreload } from "./app-page-execution.js";
|
|
8
8
|
import { AppPageMiddlewareContext } from "./app-page-response.js";
|
|
9
|
-
import { ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
|
|
9
|
+
import { AppPageFallbackRouteHead, ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
|
|
10
10
|
import { AppPageRouteWiringRoute } from "./app-page-route-wiring.js";
|
|
11
11
|
import { AppPageInterceptOptions } from "./app-page-element-builder.js";
|
|
12
12
|
import { AppPageSsrHandler } from "./app-page-stream.js";
|
|
@@ -30,9 +30,17 @@ export type AppPageBoundaryRoute<TModule extends AppPageModule = AppPageModule>
|
|
|
30
30
|
notFound?: TModule | null;
|
|
31
31
|
notFounds?: readonly (TModule | null | undefined)[] | null;
|
|
32
32
|
notFoundTreePosition?: number | null;
|
|
33
|
+
page?: TModule | null;
|
|
33
34
|
params?: AppPageParams;
|
|
34
35
|
pattern?: string;
|
|
35
36
|
routeSegments?: readonly string[];
|
|
37
|
+
childrenSlot?: AppPageRouteWiringRoute<TModule>["childrenSlot"];
|
|
38
|
+
segmentForbiddens?: readonly (TModule | null | undefined)[] | null;
|
|
39
|
+
segmentForbiddenTreePositions?: readonly number[] | null;
|
|
40
|
+
segmentNotFounds?: readonly (TModule | null | undefined)[] | null;
|
|
41
|
+
segmentNotFoundTreePositions?: readonly number[] | null;
|
|
42
|
+
segmentUnauthorizeds?: readonly (TModule | null | undefined)[] | null;
|
|
43
|
+
segmentUnauthorizedTreePositions?: readonly number[] | null;
|
|
36
44
|
slots?: AppPageRouteWiringRoute<TModule>["slots"];
|
|
37
45
|
unauthorized?: TModule | null;
|
|
38
46
|
unauthorizedTreePosition?: number | null;
|
|
@@ -88,12 +96,21 @@ type AppPageBoundaryRenderCommonOptions<TModule extends AppPageModule = AppPageM
|
|
|
88
96
|
type RenderAppPageHttpAccessFallbackOptions<TModule extends AppPageModule = AppPageModule> = {
|
|
89
97
|
boundaryComponent?: AppPageComponent | null;
|
|
90
98
|
boundaryModule?: TModule | null;
|
|
99
|
+
/** Boundary whose metadata the head uses, when not the rendered boundary. */
|
|
100
|
+
headBoundaryModule?: TModule | null;
|
|
101
|
+
/** Layouts whose metadata the head uses, when more than render around the boundary. */
|
|
102
|
+
headLayoutModules?: readonly (TModule | null | undefined)[] | null;
|
|
91
103
|
intercept?: AppPageInterceptOptions<TModule> | null;
|
|
92
104
|
layoutModules?: readonly (TModule | null | undefined)[] | null;
|
|
93
105
|
matchedParams: AppPageParams;
|
|
94
106
|
rootForbiddenModule?: TModule | null;
|
|
95
107
|
rootNotFoundModule?: TModule | null;
|
|
96
108
|
rootUnauthorizedModule?: TModule | null;
|
|
109
|
+
/**
|
|
110
|
+
* The matched route's render threw the signal, so the document keeps the
|
|
111
|
+
* route's own head rather than the boundary convention's.
|
|
112
|
+
*/
|
|
113
|
+
routeHead?: AppPageFallbackRouteHead | null;
|
|
97
114
|
/** Normalized, basePath-free application pathname used for route matching. */
|
|
98
115
|
routePathname?: string;
|
|
99
116
|
route?: AppPageBoundaryRoute<TModule> | null;
|
|
@@ -116,4 +133,5 @@ type RenderAppPageErrorBoundaryOptions<TModule extends AppPageModule = AppPageMo
|
|
|
116
133
|
} & AppPageBoundaryRenderCommonOptions<TModule>;
|
|
117
134
|
export declare function renderAppPageHttpAccessFallback<TModule extends AppPageModule>(options: RenderAppPageHttpAccessFallbackOptions<TModule>): Promise<Response | null>;
|
|
118
135
|
export declare function renderAppPageErrorBoundary<TModule extends AppPageModule>(options: RenderAppPageErrorBoundaryOptions<TModule>): Promise<Response | null>;
|
|
119
|
-
//#endregion
|
|
136
|
+
//#endregion
|
|
137
|
+
export {};
|