vinext 1.3.0 → 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/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 +13 -3
- package/dist/build/client-build-config.js +46 -9
- 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 +9 -1
- package/dist/build/client-reference-groups.js +40 -2
- 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 +2 -1
- package/dist/build/next-client-runtime-manifests.d.ts +2 -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-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 +2 -1
- package/dist/build/ssr-manifest.js +25 -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-rewrites.d.ts +2 -1
- package/dist/client/dev-error-overlay-store.d.ts +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 +3 -1
- package/dist/client/navigation-runtime.js +1 -1
- package/dist/client/pages-router-link-navigation.d.ts +2 -1
- package/dist/client/vinext-next-data.d.ts +25 -1
- package/dist/client/window-next.d.ts +2 -1
- package/dist/config/config-matchers.d.ts +12 -1
- package/dist/config/config-matchers.js +111 -16
- package/dist/config/dotenv.d.ts +2 -1
- package/dist/config/next-config.d.ts +13 -1
- package/dist/config/next-config.js +29 -4
- 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 +20 -5
- package/dist/entries/app-browser-entry.js +79 -6
- package/dist/entries/app-rsc-entry.d.ts +2 -1
- package/dist/entries/app-rsc-entry.js +42 -12
- package/dist/entries/app-rsc-manifest.d.ts +2 -1
- package/dist/entries/app-rsc-manifest.js +53 -0
- 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 +1 -1
- 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.js +102 -34
- 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 +2 -1
- 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 +8 -0
- package/dist/plugins/rsc-client-reference-loaders.js +170 -68
- 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/worker-image-imports.js +1 -1
- package/dist/plugins/worker-use-server.d.ts +2 -1
- package/dist/routing/app-route-graph.d.ts +40 -0
- package/dist/routing/app-route-graph.js +122 -50
- package/dist/routing/browser-route-manifest.d.ts +2 -1
- package/dist/routing/optimistic-route-trie.d.ts +2 -1
- package/dist/routing/route-matching.d.ts +2 -1
- package/dist/routing/route-pattern.d.ts +2 -1
- package/dist/server/accept-encoding.d.ts +2 -1
- package/dist/server/app-action-forwarding.d.ts +2 -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 +30 -6
- package/dist/server/app-browser-error.d.ts +2 -1
- 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 +2 -1
- package/dist/server/app-browser-navigation-controller.js +15 -10
- 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.js +1 -1
- package/dist/server/app-browser-stream.d.ts +2 -1
- package/dist/server/app-browser-visible-commit.d.ts +2 -1
- 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 +25 -5
- package/dist/server/app-client-reference-preloader.js +22 -7
- 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 +4 -1
- 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-optimistic-routing.d.ts +18 -1
- package/dist/server/app-optimistic-routing.js +34 -1
- package/dist/server/app-page-boundary-render.d.ts +20 -2
- package/dist/server/app-page-boundary-render.js +221 -38
- 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 +14 -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 +163 -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 +35 -10
- 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 +2 -1
- package/dist/server/app-page-search-params-observation.d.ts +7 -2
- package/dist/server/app-page-search-params-observation.js +8 -1
- package/dist/server/app-page-segment-plan.d.ts +2 -1
- package/dist/server/app-page-stream.d.ts +31 -1
- package/dist/server/app-page-stream.js +23 -4
- package/dist/server/app-pages-bridge.d.ts +2 -1
- 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-render-dependency.d.ts +11 -1
- package/dist/server/app-render-dependency.js +26 -7
- package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
- package/dist/server/app-response-stage-entry.d.ts +2 -1
- 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 +1 -1
- package/dist/server/app-route-handler-execution.d.ts +2 -1
- package/dist/server/app-route-handler-response.d.ts +2 -1
- package/dist/server/app-route-handler-runtime.d.ts +2 -1
- package/dist/server/app-route-module-loader.d.ts +18 -1
- package/dist/server/app-route-module-loader.js +8 -0
- package/dist/server/app-route-tree-prefetch.d.ts +2 -1
- package/dist/server/app-rsc-error-handler.d.ts +2 -1
- package/dist/server/app-rsc-errors.d.ts +2 -1
- package/dist/server/app-rsc-handler.d.ts +2 -1
- package/dist/server/app-rsc-handler.js +6 -10
- package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
- package/dist/server/app-rsc-route-matching.d.ts +38 -1
- package/dist/server/app-rsc-route-matching.js +24 -0
- 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 +2 -1
- package/dist/server/app-server-action-execution.js +3 -3
- package/dist/server/app-ssr-entry.d.ts +6 -0
- package/dist/server/app-ssr-entry.js +91 -44
- 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 +22 -10
- package/dist/server/app-ssr-stream.js +299 -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/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/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-runtime.d.ts +2 -1
- 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 +2 -1
- package/dist/server/nitro-public-files.d.ts +2 -1
- 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 +2 -1
- package/dist/server/pages-body-parser-config.d.ts +2 -1
- package/dist/server/pages-client-assets.d.ts +4 -0
- 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-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 +2 -1
- package/dist/server/pages-request-pipeline.js +4 -5
- package/dist/server/pages-request-stage-entry.d.ts +2 -1
- package/dist/server/pages-response-stage-entry.d.ts +2 -1
- package/dist/server/pages-route-data-kind.d.ts +2 -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.js +9 -3
- package/dist/server/request-log.d.ts +2 -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/static-file-cache.d.ts +2 -1
- package/dist/server/static-file-cache.js +1 -0
- 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/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 +29 -9
- 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 +2 -1
- 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/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 +1 -1
- 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.d.ts +1 -22
- 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 +2 -0
- package/dist/shims/internal/headers-state.js +6 -1
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +2 -1
- 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 +195 -52
- 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 +22 -2
- package/dist/shims/navigation.js +74 -20
- package/dist/shims/pages-router-runtime.d.ts +2 -1
- package/dist/shims/ppr-fallback-shell.d.ts +2 -1
- package/dist/shims/router.js +14 -3
- package/dist/shims/unified-request-context.js +3 -3
- package/dist/typegen.d.ts +2 -1
- package/dist/utils/client-build-manifest.d.ts +4 -1
- package/dist/utils/client-build-manifest.js +9 -2
- 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 +9 -1
- package/dist/utils/client-runtime-metadata.js +40 -9
- package/dist/utils/compare.d.ts +9 -0
- package/dist/utils/compare.js +15 -1
- package/dist/utils/lazy-chunks.d.ts +14 -0
- package/dist/utils/lazy-chunks.js +27 -1
- package/dist/utils/middleware-request-headers.d.ts +2 -1
- package/dist/utils/project.d.ts +2 -1
- package/dist/utils/project.js +9 -1
- 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/rsc-stream-hints.d.ts +0 -21
- package/dist/server/rsc-stream-hints.js +0 -227
|
@@ -7,8 +7,8 @@ import { AppElementsWire } from "./app-elements-wire.js";
|
|
|
7
7
|
import { getMountedSlotIds, getMountedSlotIdsHeader } from "./app-elements.js";
|
|
8
8
|
import { bindAppElementsRenderedSearch } from "../shims/slot.js";
|
|
9
9
|
import { createRscRequestHeaders } from "./app-rsc-cache-busting.js";
|
|
10
|
-
import { createCacheEntryReuseProof } from "./cache-proof.js";
|
|
11
10
|
import { createBfcacheSegmentIdentityMap, createInitialBfcacheIdMap, createNextBfcacheIdMap, preserveBfcacheIdsForMergedElements } from "./app-bfcache-identity.js";
|
|
11
|
+
import { createCacheEntryReuseProof } from "./cache-proof.js";
|
|
12
12
|
import { createAppOwnedHistoryState, createExternalHistoryStatePreservingMetadata, createHistoryStateWithNavigationMetadata, createHistoryStateWithPreviousNextUrl, createHistoryStateWithTreeSnapshotId, isExternalHistoryState, isHistoryStateBfcacheVersionCurrent, readHistoryStateActiveRoutePaths, readHistoryStateBfcacheIds, readHistoryStateBfcacheVersion, readHistoryStatePreviousNextUrl, readHistoryStateTraversalIndex, resolveActiveRoutePaths, resolveHistoryTraversalIntent } from "./app-history-state.js";
|
|
13
13
|
import { NavigationTraceReasonCodes, createNavigationLifecycleTraceFields, createNavigationTrace } from "./navigation-trace.js";
|
|
14
14
|
import { verifyOperationTokenForCommit } from "./operation-token.js";
|
|
@@ -21,4 +21,5 @@ export declare function chunksToReadableStream(chunks: readonly RscEmbeddedChunk
|
|
|
21
21
|
* immediately instead of polling with setTimeout.
|
|
22
22
|
*/
|
|
23
23
|
export declare function createProgressiveRscStream(): ReadableStream<Uint8Array>;
|
|
24
|
-
//#endregion
|
|
24
|
+
//#endregion
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ClientReferenceChunks } from "../utils/client-reference-chunks.js";
|
|
2
|
+
//#region src/server/app-client-reference-manifest.d.ts
|
|
3
|
+
type ClientManifestEntry = {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
chunks: string[];
|
|
7
|
+
async?: boolean;
|
|
8
|
+
};
|
|
9
|
+
type ClientManifest = Record<string, ClientManifestEntry>;
|
|
10
|
+
/**
|
|
11
|
+
* Names the chunks each client reference loads in its Flight row, as Next.js
|
|
12
|
+
* does, so the browser loads a reference without a registry of every client
|
|
13
|
+
* reference in the app (see shims/internal/client-reference-loader.ts). Returns a
|
|
14
|
+
* function that wraps @vitejs/plugin-rsc's client manifest, which leaves the
|
|
15
|
+
* chunks empty. Without chunk data (development, or `rsc: false`) it returns
|
|
16
|
+
* the manifest unchanged.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createClientReferenceChunksManifest(referenceChunks: ClientReferenceChunks | undefined): (manifest: ClientManifest) => ClientManifest;
|
|
19
|
+
/**
|
|
20
|
+
* The SSR Flight client's consumer manifest. React's webpack binding loads the
|
|
21
|
+
* chunks a client reference's row names before requiring the reference, which
|
|
22
|
+
* only the browser can do, so SSR resolves each reference to itself without
|
|
23
|
+
* them. A null `moduleLoading` keeps React from preinitializing the chunks as
|
|
24
|
+
* classic scripts; SSR preloads them through @vitejs/plugin-rsc instead.
|
|
25
|
+
*/
|
|
26
|
+
export declare const ssrServerConsumerManifest: {
|
|
27
|
+
moduleMap: Record<string, Record<string, ClientManifestEntry>>;
|
|
28
|
+
moduleLoading: null;
|
|
29
|
+
};
|
|
30
|
+
//#endregion
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { toFlightChunks } from "../utils/client-reference-chunks.js";
|
|
2
|
+
//#region src/server/app-client-reference-manifest.ts
|
|
3
|
+
/**
|
|
4
|
+
* Names the chunks each client reference loads in its Flight row, as Next.js
|
|
5
|
+
* does, so the browser loads a reference without a registry of every client
|
|
6
|
+
* reference in the app (see shims/internal/client-reference-loader.ts). Returns a
|
|
7
|
+
* function that wraps @vitejs/plugin-rsc's client manifest, which leaves the
|
|
8
|
+
* chunks empty. Without chunk data (development, or `rsc: false`) it returns
|
|
9
|
+
* the manifest unchanged.
|
|
10
|
+
*/
|
|
11
|
+
function createClientReferenceChunksManifest(referenceChunks) {
|
|
12
|
+
if (!referenceChunks) return (manifest) => manifest;
|
|
13
|
+
const flightChunks = referenceChunks.modules.map(toFlightChunks);
|
|
14
|
+
return (manifest) => new Proxy(manifest, { get(target, id, receiver) {
|
|
15
|
+
const entry = Reflect.get(target, id, receiver);
|
|
16
|
+
if (typeof id !== "string" || !entry || typeof entry !== "object") return entry;
|
|
17
|
+
const reference = entry;
|
|
18
|
+
const index = Object.hasOwn(referenceChunks.references, reference.id) ? referenceChunks.references[reference.id] : void 0;
|
|
19
|
+
return index === void 0 ? reference : {
|
|
20
|
+
...reference,
|
|
21
|
+
chunks: flightChunks[index]
|
|
22
|
+
};
|
|
23
|
+
} });
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The SSR Flight client's consumer manifest. React's webpack binding loads the
|
|
27
|
+
* chunks a client reference's row names before requiring the reference, which
|
|
28
|
+
* only the browser can do, so SSR resolves each reference to itself without
|
|
29
|
+
* them. A null `moduleLoading` keeps React from preinitializing the chunks as
|
|
30
|
+
* classic scripts; SSR preloads them through @vitejs/plugin-rsc instead.
|
|
31
|
+
*/
|
|
32
|
+
const ssrServerConsumerManifest = {
|
|
33
|
+
moduleMap: new Proxy({}, { get(_target, id) {
|
|
34
|
+
if (typeof id !== "string") return void 0;
|
|
35
|
+
return new Proxy({}, { get(_exports, name) {
|
|
36
|
+
return typeof name === "string" ? {
|
|
37
|
+
id,
|
|
38
|
+
chunks: [],
|
|
39
|
+
name
|
|
40
|
+
} : void 0;
|
|
41
|
+
} });
|
|
42
|
+
} }),
|
|
43
|
+
moduleLoading: null
|
|
44
|
+
};
|
|
45
|
+
//#endregion
|
|
46
|
+
export { createClientReferenceChunksManifest, ssrServerConsumerManifest };
|
|
@@ -7,7 +7,11 @@ type ClientReferencePreloaderOptions = {
|
|
|
7
7
|
onPreloadError?: (id: string, error: unknown) => void;
|
|
8
8
|
};
|
|
9
9
|
type ClientReferencePreloader = {
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Load `referenceIds` in order, or every reference without them. The
|
|
12
|
+
* returned promise doesn't wait for those in `streamedIds`.
|
|
13
|
+
*/
|
|
14
|
+
preload: (referenceIds?: Iterable<string>, streamedIds?: ReadonlySet<string>) => Promise<void>;
|
|
11
15
|
};
|
|
12
16
|
/**
|
|
13
17
|
* The client references each App Router route preloads before SSR, generated
|
|
@@ -25,12 +29,28 @@ export type RouteClientReferences = {
|
|
|
25
29
|
routes: Readonly<Record<string, readonly number[]>>;
|
|
26
30
|
/** The files of a render without a route, such as a route-miss 404. */
|
|
27
31
|
routeless: readonly number[];
|
|
32
|
+
/**
|
|
33
|
+
* References whose SSR modules evaluate asynchronously (top-level await),
|
|
34
|
+
* which a render streams instead of waiting for.
|
|
35
|
+
*/
|
|
36
|
+
async: readonly number[];
|
|
37
|
+
};
|
|
38
|
+
/** The client references a render loads, and those it streams instead of waiting for. */
|
|
39
|
+
export type RouteClientReferenceSet = {
|
|
40
|
+
/**
|
|
41
|
+
* In import order: the `always` set, then each route file's references in
|
|
42
|
+
* the order its route files render.
|
|
43
|
+
*/
|
|
44
|
+
references: string[];
|
|
45
|
+
streamed: string[];
|
|
28
46
|
};
|
|
29
47
|
/**
|
|
30
48
|
* The client references a render of `routePattern` preloads, or of no route
|
|
31
|
-
* when it is null
|
|
32
|
-
*
|
|
49
|
+
* when it is null, and those it streams.
|
|
50
|
+
* Undefined, meaning every reference, without a plan or a route to look up,
|
|
51
|
+
* or for a pattern the plan doesn't know.
|
|
33
52
|
*/
|
|
34
|
-
export declare function resolveRouteClientReferences(plan: RouteClientReferences | null, routePattern: string | null | undefined):
|
|
53
|
+
export declare function resolveRouteClientReferences(plan: RouteClientReferences | null, routePattern: string | null | undefined): RouteClientReferenceSet | undefined;
|
|
35
54
|
export declare function createClientReferencePreloader(options: ClientReferencePreloaderOptions): ClientReferencePreloader;
|
|
36
|
-
//#endregion
|
|
55
|
+
//#endregion
|
|
56
|
+
export {};
|
|
@@ -3,8 +3,9 @@ import { shareIsolatePromise } from "./isolate-shared-promise.js";
|
|
|
3
3
|
const resolvedPreload = Promise.resolve();
|
|
4
4
|
/**
|
|
5
5
|
* The client references a render of `routePattern` preloads, or of no route
|
|
6
|
-
* when it is null
|
|
7
|
-
*
|
|
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.
|
|
8
9
|
*/
|
|
9
10
|
function resolveRouteClientReferences(plan, routePattern) {
|
|
10
11
|
if (!plan || routePattern === void 0) return void 0;
|
|
@@ -14,7 +15,18 @@ function resolveRouteClientReferences(plan, routePattern) {
|
|
|
14
15
|
else return;
|
|
15
16
|
const indices = new Set(plan.always);
|
|
16
17
|
for (const file of files) for (const index of plan.files[file]) indices.add(index);
|
|
17
|
-
|
|
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
|
+
};
|
|
18
30
|
}
|
|
19
31
|
function createClientReferencePreloader(options) {
|
|
20
32
|
let allReferencesPreloaded = false;
|
|
@@ -42,17 +54,20 @@ function createClientReferencePreloader(options) {
|
|
|
42
54
|
referencePreloadPromises.set(id, preloadPromise);
|
|
43
55
|
return preloadPromise;
|
|
44
56
|
}
|
|
45
|
-
function preloadReferenceSet(referenceIds, refs, clientRequire) {
|
|
57
|
+
function preloadReferenceSet(referenceIds, refs, clientRequire, streamedIds) {
|
|
46
58
|
const pending = [];
|
|
47
|
-
for (const id of referenceIds) if (Object.hasOwn(refs, id) && !preloadedReferences.has(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
|
+
}
|
|
48
63
|
if (pending.length === 0) return resolvedPreload;
|
|
49
64
|
return Promise.all(pending).then(() => {});
|
|
50
65
|
}
|
|
51
|
-
return { preload(referenceIds) {
|
|
66
|
+
return { preload(referenceIds, streamedIds) {
|
|
52
67
|
const refs = options.getReferences();
|
|
53
68
|
const clientRequire = options.getClientRequire();
|
|
54
69
|
if (!refs || !clientRequire) return resolvedPreload;
|
|
55
|
-
if (referenceIds) return preloadReferenceSet(referenceIds, refs, clientRequire);
|
|
70
|
+
if (referenceIds) return preloadReferenceSet(referenceIds, refs, clientRequire, streamedIds);
|
|
56
71
|
if (allReferencesPreloaded) return resolvedPreload;
|
|
57
72
|
if (allReferencesPreloadPromise) return allReferencesPreloadPromise;
|
|
58
73
|
allReferencesPreloadPromise = shareIsolatePromise(preloadReferenceSet(Object.keys(refs), refs, clientRequire).then(() => {
|
|
@@ -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 {};
|
|
@@ -4,7 +4,7 @@ import { DEFAULT_GLOBAL_ERROR_MODULE } from "./default-global-error-module.js";
|
|
|
4
4
|
import { shouldServeStreamingMetadata } from "./streaming-metadata.js";
|
|
5
5
|
import { renderAppPageErrorBoundary, renderAppPageHttpAccessFallback } from "./app-page-boundary-render.js";
|
|
6
6
|
import { DEFAULT_GLOBAL_NOT_FOUND_MODULE } from "./default-global-not-found-module.js";
|
|
7
|
-
import { DEFAULT_NOT_FOUND_MODULE } from "./default-
|
|
7
|
+
import { DEFAULT_NOT_FOUND_MODULE } from "./default-http-access-fallback-modules.js";
|
|
8
8
|
//#region src/server/app-fallback-renderer.ts
|
|
9
9
|
const EMPTY_MW_CTX = {
|
|
10
10
|
headers: null,
|
|
@@ -86,6 +86,8 @@ function createAppFallbackRenderer(options) {
|
|
|
86
86
|
getAndClearPendingCookies,
|
|
87
87
|
getNavigationContext,
|
|
88
88
|
globalErrorModule: effectiveGlobalErrorModule,
|
|
89
|
+
headBoundaryModule: opts?.headBoundaryModule ?? null,
|
|
90
|
+
headLayoutModules: useGlobalNotFound ? [] : opts?.headLayouts ?? null,
|
|
89
91
|
intercept: opts?.intercept ?? null,
|
|
90
92
|
isCacheCandidate: opts?.isCacheCandidate,
|
|
91
93
|
isEdgeRuntime: callContext?.isEdgeRuntime,
|
|
@@ -104,6 +106,7 @@ function createAppFallbackRenderer(options) {
|
|
|
104
106
|
rootNotFoundModule: routeMissRootNotFoundModule,
|
|
105
107
|
rootUnauthorizedModule,
|
|
106
108
|
route: useGlobalNotFound ? null : route,
|
|
109
|
+
routeHead: opts?.routeHead ?? null,
|
|
107
110
|
routePathname: callContext?.routePathname,
|
|
108
111
|
renderToReadableStream: rscRenderer,
|
|
109
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 {};
|
|
@@ -49,6 +49,22 @@ export declare function createOptimisticRouteTemplate(options: {
|
|
|
49
49
|
routeManifest: BrowserRouteManifest;
|
|
50
50
|
}): OptimisticRouteTemplate | null;
|
|
51
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;
|
|
52
68
|
/**
|
|
53
69
|
* A loading-shell prefetch stops at the first loading boundary, so layouts
|
|
54
70
|
* below that boundary are present in the route metadata but absent from the
|
|
@@ -74,4 +90,5 @@ export declare function resolveOptimisticNavigationPayload(options: {
|
|
|
74
90
|
routeManifest: BrowserRouteManifest;
|
|
75
91
|
templates: ReadonlyMap<string, OptimisticRouteTemplate>;
|
|
76
92
|
}): OptimisticNavigationPayload | null;
|
|
77
|
-
//#endregion
|
|
93
|
+
//#endregion
|
|
94
|
+
export {};
|
|
@@ -203,6 +203,39 @@ function createOptimisticRouteElements(template) {
|
|
|
203
203
|
for (const pageElementId of template.pageElementIds) elements[pageElementId] = createElement(OptimisticRouteSegment);
|
|
204
204
|
return elements;
|
|
205
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
|
+
}
|
|
206
239
|
/**
|
|
207
240
|
* A loading-shell prefetch stops at the first loading boundary, so layouts
|
|
208
241
|
* below that boundary are present in the route metadata but absent from the
|
|
@@ -278,4 +311,4 @@ function resolveOptimisticNavigationPayload(options) {
|
|
|
278
311
|
};
|
|
279
312
|
}
|
|
280
313
|
//#endregion
|
|
281
|
-
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 {};
|