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,6 +1,6 @@
|
|
|
1
|
+
import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
|
|
1
2
|
import { VINEXT_RSC_VARY_HEADER } from "./app-rsc-vary.js";
|
|
2
3
|
import { isNavigationSignalError } from "../utils/navigation-signal.js";
|
|
3
|
-
import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
|
|
4
4
|
import "./app-rsc-cache-busting.js";
|
|
5
5
|
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
|
|
6
6
|
import { markFrameworkLinkHeaders } from "./app-response-header-provenance.js";
|
|
@@ -78,6 +78,7 @@ async function renderAppPageHtmlStream(options) {
|
|
|
78
78
|
sideStream: options.sideStream,
|
|
79
79
|
capturedRscDataRef: options.capturedRscDataRef,
|
|
80
80
|
pprFallbackShellSignal: options.pprFallbackShellSignal,
|
|
81
|
+
preloadRoutePattern: options.preloadRoutePattern,
|
|
81
82
|
waitForAllReady: options.waitForAllReady,
|
|
82
83
|
isStaticGeneration: options.isStaticGeneration,
|
|
83
84
|
isForceStatic: options.isForceStatic,
|
|
@@ -86,6 +87,7 @@ async function renderAppPageHtmlStream(options) {
|
|
|
86
87
|
onSsrError: options.onSsrError,
|
|
87
88
|
mirrorNextFlight: options.mirrorNextFlight,
|
|
88
89
|
fallbackToErrorDocumentOnShellError: options.fallbackToErrorDocumentOnShellError ?? (options.waitForAllReady !== true && options.hasCustomGlobalError === false),
|
|
90
|
+
resolveCaughtNotFoundBoundaries: options.resolveCaughtNotFoundBoundaries,
|
|
89
91
|
dynamicStaleTimeSeconds: options.dynamicStaleTimeSeconds,
|
|
90
92
|
getInitialNavigationCacheMetadata: options.getInitialNavigationCacheMetadata
|
|
91
93
|
};
|
|
@@ -93,6 +95,12 @@ async function renderAppPageHtmlStream(options) {
|
|
|
93
95
|
}
|
|
94
96
|
async function renderAppPageHtmlResponse(options) {
|
|
95
97
|
const { htmlStream, linkHeader: reactLinkHeader } = await renderAppPageHtmlStream(options);
|
|
98
|
+
return buildAppPageHtmlDocumentResponse(htmlStream, {
|
|
99
|
+
...options,
|
|
100
|
+
reactLinkHeader
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
function buildAppPageHtmlDocumentResponse(htmlStream, options) {
|
|
96
104
|
const safeStream = deferUntilStreamConsumed(htmlStream, () => {
|
|
97
105
|
options.clearRequestContext();
|
|
98
106
|
});
|
|
@@ -102,7 +110,7 @@ async function renderAppPageHtmlResponse(options) {
|
|
|
102
110
|
});
|
|
103
111
|
applyEdgeRuntimeHeader(headers, options.isEdgeRuntime);
|
|
104
112
|
mergeMiddlewareResponseHeaders(headers, options.middlewareHeaders ?? null);
|
|
105
|
-
const frameworkLinkHeader = buildAppPageLinkHeader(reactLinkHeader, options.fontLinkHeader, options.reactMaxHeadersLength);
|
|
113
|
+
const frameworkLinkHeader = buildAppPageLinkHeader(options.reactLinkHeader, options.fontLinkHeader, options.reactMaxHeadersLength);
|
|
106
114
|
if (frameworkLinkHeader) headers.append("Link", frameworkLinkHeader);
|
|
107
115
|
const response = new Response(safeStream, {
|
|
108
116
|
status: options.status,
|
|
@@ -113,8 +121,20 @@ async function renderAppPageHtmlResponse(options) {
|
|
|
113
121
|
}
|
|
114
122
|
async function renderAppPageHtmlStreamWithRecovery(options) {
|
|
115
123
|
try {
|
|
116
|
-
const { htmlStream, metadataReady, renderComplete, capturedRscData, linkHeader, shellErrorRecovered } = normalizeAppSsrRenderResult(await options.renderHtmlStream());
|
|
124
|
+
const { htmlStream, metadataReady, renderComplete, capturedRscData, linkHeader, shellErrorRecovered, caughtShellError } = normalizeAppSsrRenderResult(await options.renderHtmlStream());
|
|
117
125
|
options.onShellRendered?.();
|
|
126
|
+
const caughtSpecialError = caughtShellError === void 0 ? null : options.resolveSpecialError(caughtShellError);
|
|
127
|
+
if (caughtSpecialError) return {
|
|
128
|
+
htmlStream: null,
|
|
129
|
+
response: await options.renderSpecialErrorResponse(caughtSpecialError, {
|
|
130
|
+
htmlStream,
|
|
131
|
+
linkHeader
|
|
132
|
+
}),
|
|
133
|
+
metadataReady: resolvedMetadataReady,
|
|
134
|
+
renderComplete: renderComplete ?? resolvedMetadataReady,
|
|
135
|
+
capturedRscData: null,
|
|
136
|
+
shellErrorRecovered: false
|
|
137
|
+
};
|
|
118
138
|
return {
|
|
119
139
|
htmlStream,
|
|
120
140
|
response: null,
|
|
@@ -184,4 +204,4 @@ function createAppPageRscErrorTracker(baseOnError) {
|
|
|
184
204
|
};
|
|
185
205
|
}
|
|
186
206
|
//#endregion
|
|
187
|
-
export { buildAppPageLinkHeader, createAppPageFontData, createAppPageRscErrorTracker, createAppPageSsrErrorHandler, deferUntilStreamConsumed, isAppSsrRenderResult, renderAppPageHtmlResponse, renderAppPageHtmlStream, renderAppPageHtmlStreamWithRecovery };
|
|
207
|
+
export { buildAppPageHtmlDocumentResponse, buildAppPageLinkHeader, createAppPageFontData, createAppPageRscErrorTracker, createAppPageSsrErrorHandler, deferUntilStreamConsumed, isAppSsrRenderResult, renderAppPageHtmlResponse, renderAppPageHtmlStream, renderAppPageHtmlStreamWithRecovery };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AppMiddlewareContext } from "./app-middleware.js";
|
|
2
|
+
import { MiddlewareResponseMergeOptions } from "./middleware-response-headers.js";
|
|
2
3
|
import { EdgeApiExecutionRuntime } from "./edge-api-runtime.js";
|
|
3
4
|
//#region src/server/app-pages-bridge.d.ts
|
|
4
5
|
export type PagesEntry = {
|
|
@@ -24,7 +25,7 @@ type AppRouteMatch = {
|
|
|
24
25
|
type RenderPagesFallbackDependencies = {
|
|
25
26
|
loadPagesEntry: () => Promise<PagesEntry> | PagesEntry;
|
|
26
27
|
buildRequestHeaders: (requestHeaders: Headers, middlewareRequestHeaders: Headers) => Headers | null;
|
|
27
|
-
applyRouteHandlerMiddlewareContext: (response: Response, middlewareContext: AppMiddlewareContext) => Response;
|
|
28
|
+
applyRouteHandlerMiddlewareContext: (response: Response, middlewareContext: AppMiddlewareContext, options?: MiddlewareResponseMergeOptions) => Response;
|
|
28
29
|
/**
|
|
29
30
|
* Returns the `__prerender_bypass` Set-Cookie header emitted by a
|
|
30
31
|
* `draftMode().enable()`/`disable()` call inside middleware, if any. Reading
|
|
@@ -60,4 +61,5 @@ type RenderPagesFallbackOptions = {
|
|
|
60
61
|
* Fallback handler to route App Router requests to the Pages Router when no App Router route matches.
|
|
61
62
|
*/
|
|
62
63
|
export declare function renderPagesFallback(options: RenderPagesFallbackOptions, dependencies: RenderPagesFallbackDependencies): Promise<Response | null>;
|
|
63
|
-
//#endregion
|
|
64
|
+
//#endregion
|
|
65
|
+
export {};
|
|
@@ -23,15 +23,18 @@ async function renderPagesFallback(options, dependencies) {
|
|
|
23
23
|
if (isRscRequest && !allowRscDocumentFallback) return null;
|
|
24
24
|
const pagesEntry = await loadPagesEntry();
|
|
25
25
|
const pagesRequestHeaders = middlewareContext.requestHeaders ? buildRequestHeaders(request.headers, middlewareContext.requestHeaders) : null;
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
const matchRequest = pagesRequestHeaders ? new Request(request.url, {
|
|
27
|
+
headers: pagesRequestHeaders,
|
|
28
|
+
method: request.method
|
|
29
|
+
}) : request;
|
|
30
|
+
const claimPagesRequest = () => pagesRequestHeaders ? cloneRequestWithHeaders(request, pagesRequestHeaders) : request;
|
|
28
31
|
const queryIndex = pathname.indexOf("?");
|
|
29
32
|
const pagesPathname = queryIndex === -1 ? pathname : pathname.slice(0, queryIndex);
|
|
30
33
|
const pagesUrl = pagesPathname + (queryIndex === -1 ? url.search || "" : pathname.slice(queryIndex));
|
|
31
34
|
if (pagesPathname.startsWith("/api/") || pagesPathname === "/api") {
|
|
32
35
|
if (typeof pagesEntry.handleApiRoute !== "function") return null;
|
|
33
36
|
const hasApiMatcher = typeof pagesEntry.matchApiRoute === "function";
|
|
34
|
-
const apiMatch = hasApiMatcher ? pagesEntry.matchApiRoute?.(pagesUrl,
|
|
37
|
+
const apiMatch = hasApiMatcher ? pagesEntry.matchApiRoute?.(pagesUrl, matchRequest) ?? null : null;
|
|
35
38
|
if (hasApiMatcher && apiMatch === null) return null;
|
|
36
39
|
if (apiMatch !== null && matchKind === "static" && apiMatch.route.isDynamic) return null;
|
|
37
40
|
if (apiMatch !== null && matchKind === "dynamic" && !apiMatch.route.isDynamic) return null;
|
|
@@ -41,24 +44,25 @@ async function renderPagesFallback(options, dependencies) {
|
|
|
41
44
|
if (apiMatch !== null) beginRouteCacheability("pages-api", apiMatch.route.pattern);
|
|
42
45
|
const executionContext = getRequestExecutionContext();
|
|
43
46
|
const apiArgs = [
|
|
44
|
-
|
|
47
|
+
claimPagesRequest(),
|
|
45
48
|
pagesUrl,
|
|
46
49
|
executionContext ?? void 0,
|
|
47
|
-
executionContext?.trustedRevalidateOrigin
|
|
50
|
+
executionContext?.trustedRevalidateOrigin,
|
|
48
51
|
executionContext?.hostRuntime ?? "node"
|
|
49
52
|
];
|
|
50
53
|
const pagesApiResponse = await (initialResponseHeaders ? pagesEntry.handleApiRoute(...apiArgs, initialResponseHeaders) : pagesEntry.handleApiRoute(...apiArgs));
|
|
51
54
|
const draftCookie = getDraftModeCookieHeader();
|
|
52
|
-
return applyDraftModeCookie(applyRouteHandlerMiddlewareContext(pagesApiResponse, middlewareContext), draftCookie);
|
|
55
|
+
return applyDraftModeCookie(applyRouteHandlerMiddlewareContext(pagesApiResponse, middlewareContext, { appendResponseChallenges: false }), draftCookie);
|
|
53
56
|
}
|
|
54
57
|
if (typeof pagesEntry.renderPage !== "function") return null;
|
|
55
58
|
const hasPageMatcher = typeof pagesEntry.matchPageRoute === "function";
|
|
56
|
-
const pageMatch = hasPageMatcher ? pagesEntry.matchPageRoute?.(pagesUrl,
|
|
59
|
+
const pageMatch = hasPageMatcher ? pagesEntry.matchPageRoute?.(pagesUrl, matchRequest) ?? null : null;
|
|
57
60
|
if (hasPageMatcher && pageMatch === null) return null;
|
|
58
61
|
if (pageMatch !== null && matchKind === "static" && pageMatch.route.isDynamic) return null;
|
|
59
62
|
if (pageMatch !== null && matchKind === "dynamic" && !pageMatch.route.isDynamic) return null;
|
|
60
63
|
if (appRouteMatch !== null && (pageMatch === null || !pagesRouteHasPriorityOverAppRoute(pageMatch.route, appRouteMatch.route))) return null;
|
|
61
64
|
if (pageMatch !== null) beginRouteCacheability("pages-page", pageMatch.route.pattern);
|
|
65
|
+
const pagesRequest = claimPagesRequest();
|
|
62
66
|
const renderArgs = [
|
|
63
67
|
pagesDataRequest ? cloneRequestWithUrl(pagesRequest, pagesDataRequest.url) : pagesRequest,
|
|
64
68
|
pagesUrl,
|
|
@@ -15,4 +15,5 @@ type HandleAppPrerenderEndpointOptions = {
|
|
|
15
15
|
staticParamsMap: AppPrerenderStaticParamsMap;
|
|
16
16
|
};
|
|
17
17
|
export declare function handleAppPrerenderEndpoint(request: Request, options: HandleAppPrerenderEndpointOptions): Promise<Response | null>;
|
|
18
|
-
//#endregion
|
|
18
|
+
//#endregion
|
|
19
|
+
export {};
|
|
@@ -34,4 +34,5 @@ type CallAppPrerenderStaticParamsOptions = {
|
|
|
34
34
|
rootParamNamesByPattern: Record<string, readonly string[] | undefined>;
|
|
35
35
|
};
|
|
36
36
|
export declare function callAppPrerenderStaticParams(options: CallAppPrerenderStaticParamsOptions): Promise<unknown>;
|
|
37
|
-
//#endregion
|
|
37
|
+
//#endregion
|
|
38
|
+
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isUnknownRecord } from "../utils/record.js";
|
|
2
|
+
import { shareIsolatePromise } from "./isolate-shared-promise.js";
|
|
2
3
|
import { pickRootParams, runWithRootParamsScope } from "../shims/root-params.js";
|
|
3
4
|
//#region src/server/app-prerender-static-params.ts
|
|
4
5
|
/**
|
|
@@ -42,7 +43,7 @@ function createAppPrerenderStaticParamsResolver(sources, rootParamNames) {
|
|
|
42
43
|
let resolvePromise = null;
|
|
43
44
|
const resolveFns = () => {
|
|
44
45
|
if (resolvedFns) return Promise.resolve(resolvedFns);
|
|
45
|
-
if (!resolvePromise) resolvePromise = (async () => {
|
|
46
|
+
if (!resolvePromise) resolvePromise = shareIsolatePromise((async () => {
|
|
46
47
|
resolvedFns = (await Promise.all(usableSources.map(async (source) => {
|
|
47
48
|
if (isGenerateStaticParamsFunction(source)) return source;
|
|
48
49
|
const mod = await source.load();
|
|
@@ -50,7 +51,7 @@ function createAppPrerenderStaticParamsResolver(sources, rootParamNames) {
|
|
|
50
51
|
return isGenerateStaticParamsFunction(fn) ? fn : null;
|
|
51
52
|
}))).filter((fn) => fn !== null);
|
|
52
53
|
return resolvedFns;
|
|
53
|
-
})();
|
|
54
|
+
})());
|
|
54
55
|
return resolvePromise;
|
|
55
56
|
};
|
|
56
57
|
return async (input) => {
|
|
@@ -11,7 +11,17 @@ export type AppPageRenderDependency = AppRenderDependency & {
|
|
|
11
11
|
/** Whether `component` is a "use client" export seen from the RSC environment. */
|
|
12
12
|
export declare function isAppClientReference(component: unknown): boolean;
|
|
13
13
|
export declare function isReactOwnedAppComponent(component: unknown): boolean;
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* `mapError` replaces an error thrown by a CSS-wrapped export's inner
|
|
16
|
+
* component, which renders after this call returns. The caller maps the
|
|
17
|
+
* errors this call throws or rejects with.
|
|
18
|
+
*/
|
|
19
|
+
export declare function invokeAppComponent(component: ComponentType<Record<string, unknown>>, props: Readonly<Record<string, unknown>>, mapError?: (error: unknown) => unknown): ReactNode | Promise<ReactNode>;
|
|
20
|
+
/**
|
|
21
|
+
* `invokeAppComponent()`, with every error the component throws or rejects
|
|
22
|
+
* with replaced by `mapError(error)`, including its CSS-wrapped inner one's.
|
|
23
|
+
*/
|
|
24
|
+
export declare function invokeAppComponentMappingErrors(component: ComponentType<Record<string, unknown>>, props: Readonly<Record<string, unknown>>, mapError: (error: unknown) => unknown): ReactNode | Promise<ReactNode>;
|
|
15
25
|
export declare function registerAppElementRenderDependencies(elements: Readonly<Record<string, unknown>>, dependenciesByElementId: ReadonlyMap<string, AppRenderDependency>): void;
|
|
16
26
|
export declare function releaseAppElementRenderDependency(elements: Readonly<Record<string, unknown>>, elementId: string): void;
|
|
17
27
|
export declare function createAppRenderDependency(): AppRenderDependency;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isPromiseLike } from "../utils/promise.js";
|
|
2
|
-
import { createElement, use } from "react";
|
|
2
|
+
import { Fragment, createElement, isValidElement, use } from "react";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
//#region src/server/app-render-dependency.tsx
|
|
5
5
|
const REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
|
|
@@ -15,13 +15,72 @@ function isReactOwnedAppComponent(component) {
|
|
|
15
15
|
if (candidate?.$$typeof === REACT_MEMO || candidate?.$$typeof === REACT_LAZY || candidate?.$$typeof === REACT_FORWARD_REF) return false;
|
|
16
16
|
return typeof candidate !== "function" || candidate.$$typeof === REACT_CLIENT_REFERENCE || candidate.prototype?.isReactComponent != null;
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* `mapError` replaces an error thrown by a CSS-wrapped export's inner
|
|
20
|
+
* component, which renders after this call returns. The caller maps the
|
|
21
|
+
* errors this call throws or rejects with.
|
|
22
|
+
*/
|
|
23
|
+
function invokeAppComponent(component, props, mapError) {
|
|
19
24
|
const candidate = component;
|
|
20
|
-
if (candidate.$$typeof === REACT_MEMO && candidate.type) return invokeAppComponent(candidate.type, props);
|
|
21
|
-
if (candidate.$$typeof === REACT_LAZY && candidate._init) return invokeAppComponent(candidate._init(candidate._payload), props);
|
|
25
|
+
if (candidate.$$typeof === REACT_MEMO && candidate.type) return invokeAppComponent(candidate.type, props, mapError);
|
|
26
|
+
if (candidate.$$typeof === REACT_LAZY && candidate._init) return invokeAppComponent(candidate._init(candidate._payload), props, mapError);
|
|
22
27
|
if (candidate.$$typeof === REACT_FORWARD_REF && candidate.render) return candidate.render(props, void 0);
|
|
23
28
|
if (isReactOwnedAppComponent(candidate)) return createElement(candidate, props);
|
|
24
|
-
|
|
29
|
+
const result = candidate(props);
|
|
30
|
+
return isPromiseLike(result) ? result : invokeCssWrappedComponent(result, props, mapError);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* `invokeAppComponent()`, with every error the component throws or rejects
|
|
34
|
+
* with replaced by `mapError(error)`, including its CSS-wrapped inner one's.
|
|
35
|
+
*/
|
|
36
|
+
function invokeAppComponentMappingErrors(component, props, mapError) {
|
|
37
|
+
try {
|
|
38
|
+
const result = invokeAppComponent(component, props, mapError);
|
|
39
|
+
return isPromiseLike(result) ? Promise.resolve(result).catch((error) => {
|
|
40
|
+
throw mapError(error);
|
|
41
|
+
}) : result;
|
|
42
|
+
} catch (error) {
|
|
43
|
+
throw mapError(error);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Whether `elementProps` are what `createElement(type, props)` produces: the
|
|
48
|
+
* same values, plus any `type.defaultProps` for keys that are `undefined`.
|
|
49
|
+
* Defaulted values aren't read again, since a default can be a getter.
|
|
50
|
+
*/
|
|
51
|
+
function isElementOfProps(elementProps, props, defaultProps) {
|
|
52
|
+
const keys = new Set(Object.keys(props));
|
|
53
|
+
const defaulted = /* @__PURE__ */ new Set();
|
|
54
|
+
for (const key in defaultProps) if (props[key] === void 0) {
|
|
55
|
+
keys.add(key);
|
|
56
|
+
defaulted.add(key);
|
|
57
|
+
}
|
|
58
|
+
return Object.keys(elementProps).length === keys.size && [...keys].every((key) => Object.hasOwn(elementProps, key) && (defaulted.has(key) || Object.is(elementProps[key], props[key])));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* `@vitejs/plugin-rsc` wraps a server component export whose module imports
|
|
62
|
+
* CSS (`__vite_rsc_wrap_css__`). The wrapper returns
|
|
63
|
+
* `<><Css /><Component {...props} /></>`, so a component vinext invokes
|
|
64
|
+
* directly renders as an element with its props after all. React's dev build
|
|
65
|
+
* serializes an element's props as debug info and calls `then` on `params`
|
|
66
|
+
* and `searchParams`, which counts as reading them. Invoke the inner
|
|
67
|
+
* component from an element without props instead, as for an export without
|
|
68
|
+
* CSS.
|
|
69
|
+
*/
|
|
70
|
+
function invokeCssWrappedComponent(result, props, mapError) {
|
|
71
|
+
if (!isValidElement(result) || result.type !== Fragment || result.key !== null) return result;
|
|
72
|
+
const children = result.props.children;
|
|
73
|
+
if (!Array.isArray(children) || children.length !== 2) return result;
|
|
74
|
+
const [css, inner] = children;
|
|
75
|
+
if (!isValidElement(inner) || typeof inner.type !== "function" || inner.key !== null) return result;
|
|
76
|
+
const component = inner.type;
|
|
77
|
+
if (!isElementOfProps(inner.props, props, component.defaultProps)) return result;
|
|
78
|
+
const componentProps = inner.props;
|
|
79
|
+
function CssWrappedComponent() {
|
|
80
|
+
return mapError ? invokeAppComponentMappingErrors(component, componentProps, mapError) : invokeAppComponent(component, componentProps);
|
|
81
|
+
}
|
|
82
|
+
CssWrappedComponent.displayName = component.displayName ?? component.name;
|
|
83
|
+
return createElement(Fragment, null, css, createElement(CssWrappedComponent));
|
|
25
84
|
}
|
|
26
85
|
const appElementRenderDependencies = /* @__PURE__ */ new WeakMap();
|
|
27
86
|
function registerAppElementRenderDependencies(elements, dependenciesByElementId) {
|
|
@@ -92,4 +151,4 @@ function renderAppComponentWithDependencyBarrier(component, props, dependency) {
|
|
|
92
151
|
return createElement(AppComponentDependencyBarrier);
|
|
93
152
|
}
|
|
94
153
|
//#endregion
|
|
95
|
-
export { createAppPageRenderDependency, createAppRenderDependency, invokeAppComponent, isAppClientReference, isAppRenderSuspension, isReactOwnedAppComponent, registerAppElementRenderDependencies, releaseAppElementRenderDependency, renderAfterAppDependencies, renderAppComponentWithDependencyBarrier };
|
|
154
|
+
export { createAppPageRenderDependency, createAppRenderDependency, invokeAppComponent, invokeAppComponentMappingErrors, isAppClientReference, isAppRenderSuspension, isReactOwnedAppComponent, registerAppElementRenderDependencies, releaseAppElementRenderDependency, renderAfterAppDependencies, renderAppComponentWithDependencyBarrier };
|
|
@@ -5,4 +5,5 @@ import { DispatchAppWorkerResponseStage } from "./app-worker-stages.js";
|
|
|
5
5
|
export type AppRequestStageEnv = Record<string, unknown>;
|
|
6
6
|
type AppRequestStageContext = ExecutionContextLike & VinextRequestStageContext;
|
|
7
7
|
export declare function handleRequestStage(request: Request, env: AppRequestStageEnv | undefined, ctx: AppRequestStageContext | undefined, dispatchResponseStage: DispatchAppWorkerResponseStage): Promise<Response>;
|
|
8
|
-
//#endregion
|
|
8
|
+
//#endregion
|
|
9
|
+
export {};
|
|
@@ -26,7 +26,7 @@ const rejectResponseStage = () => Promise.resolve(new Response(null, { status: 4
|
|
|
26
26
|
function handleRequestStage(request, env, ctx, dispatchResponseStage) {
|
|
27
27
|
const originalRequest = request;
|
|
28
28
|
const handleStage = async () => {
|
|
29
|
-
await __ensureInstrumentation();
|
|
29
|
+
await __ensureInstrumentation(ctx);
|
|
30
30
|
const url = new URL(request.url);
|
|
31
31
|
return traceFrameworkRequest({
|
|
32
32
|
callback: () => handleRequest(request, env, ctx, dispatchResponseStage, ctx?.assets).then((response) => applyCdnResponseIdentityHeaders(response, originalRequest)),
|
|
@@ -56,7 +56,7 @@ async function handleRequest(request, env, platformCtx, dispatchResponseStage, a
|
|
|
56
56
|
if (validationResponse) return validationResponse;
|
|
57
57
|
didValidateCdnRequest = true;
|
|
58
58
|
if (readinessResponse.status !== 204) return readinessResponse;
|
|
59
|
-
await __ensureHybridPagesApplication();
|
|
59
|
+
await __ensureHybridPagesApplication(ctx);
|
|
60
60
|
}
|
|
61
61
|
let probeMode = null;
|
|
62
62
|
let probeRoute = null;
|
|
@@ -6,4 +6,5 @@ type AppResponseStageEnv = Record<string, unknown>;
|
|
|
6
6
|
/** Invoke one transformed public cache function without rendering its owning route. */
|
|
7
7
|
export declare function invokeCacheFunction(invocation: VinextCacheFunctionInvocation, env: AppResponseStageEnv | undefined, platformCtx: ExecutionContextLike | undefined, dispatchRequestStage: VinextRequestStageTransport): Promise<void>;
|
|
8
8
|
export declare function handleResponseStage(request: Request, env: AppResponseStageEnv | undefined, platformCtx: ExecutionContextLike | undefined, props: AppWorkerResponseStageProps, dispatchRequestStage: VinextRequestStageTransport, options?: VinextResponseStageDispatchOptions): Promise<Response>;
|
|
9
|
-
//#endregion
|
|
9
|
+
//#endregion
|
|
10
|
+
export {};
|
|
@@ -19,7 +19,7 @@ import { registerConfiguredCacheAdapters } from "virtual:vinext-cache-adapters";
|
|
|
19
19
|
/** Cacheable App response stage. This is the only multi-stage App entry that imports user routes. */
|
|
20
20
|
/** Invoke one transformed public cache function without rendering its owning route. */
|
|
21
21
|
async function invokeCacheFunction(invocation, env, platformCtx, dispatchRequestStage) {
|
|
22
|
-
await __ensureInstrumentation();
|
|
22
|
+
await __ensureInstrumentation(platformCtx);
|
|
23
23
|
const [{ loadServerAction }, { invokeCacheFunction: invokeRegisteredCacheFunction }] = await Promise.all([import("@vitejs/plugin-rsc/core/rsc"), import("../shims/cache-callable-runtime.js")]);
|
|
24
24
|
registerConfiguredCacheAdapters(env);
|
|
25
25
|
ensureFetchPatch();
|
|
@@ -37,8 +37,8 @@ async function handleResponseStage(request, env, platformCtx, props, dispatchReq
|
|
|
37
37
|
if (props.requestOrigin !== new URL(request.url).origin) return new Response("Invalid vinext App response stage", { status: 400 });
|
|
38
38
|
const currentBuildId = process.env.__VINEXT_BUILD_ID ?? null;
|
|
39
39
|
if (props.buildId !== currentBuildId) return new Response("Incompatible vinext App response stage", { status: 409 });
|
|
40
|
-
await __ensureInstrumentation();
|
|
41
|
-
if (props.kind === "app-full-request" && props.prerenderDiscovery) await __ensureHybridPagesApplication();
|
|
40
|
+
await __ensureInstrumentation(platformCtx);
|
|
41
|
+
if (props.kind === "app-full-request" && props.prerenderDiscovery) await __ensureHybridPagesApplication(platformCtx);
|
|
42
42
|
registerConfiguredImageOptimizer(env);
|
|
43
43
|
let ctx = createWorkerRevalidationContext(platformCtx, (internalRequest) => dispatchRequestStage(internalRequest), "node");
|
|
44
44
|
if (props.kind === "app-full-request" && props.prerenderDiscovery) ctx = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { closeAfterResponse, createRequestContext, runWithRequestContext } from "../shims/unified-request-context.js";
|
|
1
|
+
import { closeAfterResponse, createRequestContext, getRequestContext, runWithRequestContext } from "../shims/unified-request-context.js";
|
|
2
2
|
import "../utils/protocol-headers.js";
|
|
3
3
|
import { getRequestExecutionContext } from "../shims/request-context.js";
|
|
4
4
|
import { runInWorkStoreScope } from "../shims/internal/work-store-scope.js";
|
|
@@ -14,9 +14,9 @@ import { resolveAppRouteHandlerFetchCacheMode } from "./app-segment-config.js";
|
|
|
14
14
|
import { setNavigationContext } from "../shims/navigation-context-state.js";
|
|
15
15
|
import { makeThenableParams } from "../shims/thenable-params.js";
|
|
16
16
|
import { traceResponseStart } from "./response-start-tracing.js";
|
|
17
|
-
import { buildPageCacheTags } from "./implicit-tags.js";
|
|
18
17
|
import { applyRouteHandlerMiddlewareContext, finalizeRouteHandlerResponse } from "./app-route-handler-response.js";
|
|
19
18
|
import "../shims/navigation.js";
|
|
19
|
+
import { buildPageCacheTags } from "./implicit-tags.js";
|
|
20
20
|
import { isKnownDynamicAppRoute, isValidHTTPMethod } from "./app-route-handler-runtime.js";
|
|
21
21
|
import { getAppRouteHandlerRevalidateSeconds, hasAppRouteHandlerDefaultExport, hasNonStaticAppRouteHandlerMethods, resolveAppRouteHandlerMethod, shouldReadAppRouteHandlerCache } from "./app-route-handler-policy.js";
|
|
22
22
|
import { createStaticGenerationHeadersContext } from "./app-static-generation.js";
|
|
@@ -40,6 +40,7 @@ async function runInRouteHandlerRevalidationContext(options, renderFn) {
|
|
|
40
40
|
const requestContext = createRequestContext({
|
|
41
41
|
headersContext,
|
|
42
42
|
executionContext: getRequestExecutionContext(),
|
|
43
|
+
phase: "route-handler",
|
|
43
44
|
unstableCacheRevalidation: "foreground"
|
|
44
45
|
});
|
|
45
46
|
const revalidation = runWithRequestContext(requestContext, () => runInWorkStoreScope(async () => {
|
|
@@ -203,6 +204,7 @@ async function dispatchAppRouteHandlerImpl(options) {
|
|
|
203
204
|
return reportRequestError(error, request, context);
|
|
204
205
|
},
|
|
205
206
|
request: options.request,
|
|
207
|
+
requestSignal: getRequestContext().requestSignal ?? void 0,
|
|
206
208
|
expireSeconds: options.expireSeconds,
|
|
207
209
|
revalidateSeconds,
|
|
208
210
|
revalidateReason,
|
|
@@ -56,6 +56,8 @@ type RunAppRouteHandlerOptions = {
|
|
|
56
56
|
*/
|
|
57
57
|
params: AppRouteParams | null;
|
|
58
58
|
request: Request;
|
|
59
|
+
/** Host signal for the client connection; only the foreground request has one. */
|
|
60
|
+
requestSignal?: AbortSignal;
|
|
59
61
|
routePattern?: string;
|
|
60
62
|
setHeadersAccessPhase?: (phase: HeadersAccessPhase) => HeadersAccessPhase;
|
|
61
63
|
};
|
|
@@ -102,4 +104,5 @@ type ExecuteAppRouteHandlerOptions = {
|
|
|
102
104
|
export declare function runAppRouteHandler(options: RunAppRouteHandlerOptions): Promise<RunAppRouteHandlerResult>;
|
|
103
105
|
export declare function executeAppRouteHandler(options: ExecuteAppRouteHandlerOptions): Promise<Response>;
|
|
104
106
|
export declare function traceAppRouteHandlerExecution<T>(routePattern: string, callback: (span: FrameworkSpan) => T): T;
|
|
105
|
-
//#endregion
|
|
107
|
+
//#endregion
|
|
108
|
+
export {};
|
|
@@ -118,6 +118,7 @@ async function runAppRouteHandler(options) {
|
|
|
118
118
|
options.markDynamicUsage();
|
|
119
119
|
},
|
|
120
120
|
requestMode: options.dynamicConfig === "force-static" || options.dynamicConfig === "error" ? options.dynamicConfig : "auto",
|
|
121
|
+
signal: options.requestSignal,
|
|
121
122
|
staticGenerationErrorMessage(expression) {
|
|
122
123
|
return getAppRouteStaticGenerationErrorMessage(options.routePattern, expression);
|
|
123
124
|
}
|
|
@@ -210,10 +211,16 @@ async function executeAppRouteHandlerImpl(options) {
|
|
|
210
211
|
revalidateSeconds: options.revalidateSeconds,
|
|
211
212
|
requiresCompletedResponseAdmission: isRouteCacheabilityEvaluation()
|
|
212
213
|
})) {
|
|
213
|
-
const completed = await completeAppRouteHandlerResponse(response)
|
|
214
|
+
const completed = await completeAppRouteHandlerResponse(response).catch(async (error) => {
|
|
215
|
+
await _drainPendingRevalidations().catch(() => {});
|
|
216
|
+
throw error;
|
|
217
|
+
});
|
|
214
218
|
response = completed.response;
|
|
215
219
|
cleanupDeferredToBody = !completed.completed;
|
|
216
|
-
if (completed.completed)
|
|
220
|
+
if (completed.completed) {
|
|
221
|
+
markRouteCacheabilityResponseBodyComplete();
|
|
222
|
+
await _drainPendingRevalidations();
|
|
223
|
+
}
|
|
217
224
|
const dynamicUsedDuringCompletion = options.consumeDynamicUsage();
|
|
218
225
|
dynamicUsedInHandler = handlerResult.didAccessDynamicRequest() || dynamicUsedDuringCompletion || dynamicUsedInHandler;
|
|
219
226
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { MiddlewareResponseMergeOptions } from "./middleware-response-headers.js";
|
|
1
2
|
//#region src/server/app-route-handler-middleware-context.d.ts
|
|
2
3
|
export type RouteHandlerMiddlewareContext = {
|
|
3
4
|
headers: Headers | null;
|
|
4
5
|
status: number | null;
|
|
5
6
|
};
|
|
6
7
|
/** Apply request-stage middleware response metadata to a route-handler response. */
|
|
7
|
-
export declare function applyRouteHandlerMiddlewareContext(response: Response, middlewareContext: RouteHandlerMiddlewareContext): Response;
|
|
8
|
+
export declare function applyRouteHandlerMiddlewareContext(response: Response, middlewareContext: RouteHandlerMiddlewareContext, options?: MiddlewareResponseMergeOptions): Response;
|
|
8
9
|
//#endregion
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mergeMiddlewareResponseHeadersOntoResponse } from "./middleware-response-headers.js";
|
|
2
2
|
//#region src/server/app-route-handler-middleware-context.ts
|
|
3
3
|
/** Apply request-stage middleware response metadata to a route-handler response. */
|
|
4
|
-
function applyRouteHandlerMiddlewareContext(response, middlewareContext) {
|
|
4
|
+
function applyRouteHandlerMiddlewareContext(response, middlewareContext, options = {}) {
|
|
5
5
|
if (!middlewareContext.headers && middlewareContext.status == null) return response;
|
|
6
6
|
const responseHeaders = new Headers(response.headers);
|
|
7
|
-
|
|
7
|
+
mergeMiddlewareResponseHeadersOntoResponse(responseHeaders, middlewareContext.headers, options);
|
|
8
8
|
return new Response(response.body, {
|
|
9
9
|
status: middlewareContext.status ?? response.status,
|
|
10
10
|
statusText: response.statusText,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MiddlewareResponseMergeOptions } from "./middleware-response-headers.js";
|
|
1
2
|
import { CacheControlMetadata, CachedRouteValue } from "../shims/cache-handler.js";
|
|
2
3
|
//#region src/server/app-route-handler-response.d.ts
|
|
3
4
|
export type RouteHandlerMiddlewareContext = {
|
|
@@ -16,7 +17,7 @@ type FinalizeRouteHandlerResponseOptions = {
|
|
|
16
17
|
draftCookie?: string | null;
|
|
17
18
|
isHead: boolean;
|
|
18
19
|
};
|
|
19
|
-
export declare function applyRouteHandlerMiddlewareContext(response: Response, middlewareContext: RouteHandlerMiddlewareContext, options?: {
|
|
20
|
+
export declare function applyRouteHandlerMiddlewareContext(response: Response, middlewareContext: RouteHandlerMiddlewareContext, options?: MiddlewareResponseMergeOptions & {
|
|
20
21
|
appendResponseLink?: boolean;
|
|
21
22
|
}): Response;
|
|
22
23
|
export declare function assertSupportedAppRouteHandlerResponse(response: Response): void;
|
|
@@ -25,4 +26,5 @@ export declare function applyRouteHandlerRevalidateHeader(response: Response, re
|
|
|
25
26
|
export declare function markRouteHandlerCacheMiss(response: Response): void;
|
|
26
27
|
export declare function buildAppRouteCacheValue(response: Response, browserCacheControl?: string): Promise<CachedRouteValue>;
|
|
27
28
|
export declare function finalizeRouteHandlerResponse(response: Response, options: FinalizeRouteHandlerResponseOptions): Response;
|
|
28
|
-
//#endregion
|
|
29
|
+
//#endregion
|
|
30
|
+
export {};
|
|
@@ -5,7 +5,7 @@ import { markRouteCacheabilityExplicitResponsePolicy, recordRouteCacheability }
|
|
|
5
5
|
import { applyCdnResponseHeaders } from "./cache-control.js";
|
|
6
6
|
import { buildAppRouteMissIsrCacheControl, decideIsr } from "./isr-decision.js";
|
|
7
7
|
import { setCacheStateHeaders } from "./cache-headers.js";
|
|
8
|
-
import {
|
|
8
|
+
import { mergeMiddlewareResponseHeadersOntoResponse } from "./middleware-response-headers.js";
|
|
9
9
|
import { markEdgeRouteHandlerLinkHeaders } from "./app-response-header-provenance.js";
|
|
10
10
|
import { getSetCookieName } from "./cookie-utils.js";
|
|
11
11
|
//#region src/server/app-route-handler-response.ts
|
|
@@ -22,7 +22,7 @@ function applyRouteHandlerMiddlewareContext(response, middlewareContext, options
|
|
|
22
22
|
return response;
|
|
23
23
|
}
|
|
24
24
|
const responseHeaders = new Headers(response.headers);
|
|
25
|
-
|
|
25
|
+
mergeMiddlewareResponseHeadersOntoResponse(responseHeaders, middlewareContext.headers, options);
|
|
26
26
|
if (responseLink && middlewareContext.headers?.get("link")) responseHeaders.append("link", responseLink);
|
|
27
27
|
const result = new Response(response.body, {
|
|
28
28
|
status: middlewareContext.status ?? response.status,
|
|
@@ -30,6 +30,8 @@ type TrackedAppRouteRequestOptions = {
|
|
|
30
30
|
middlewareHeaders?: Headers | null;
|
|
31
31
|
onDynamicAccess?: (access: AppRouteDynamicRequestAccess) => void;
|
|
32
32
|
requestMode?: AppRouteRequestMode;
|
|
33
|
+
/** Host signal for the client connection (UnifiedRequestContext.requestSignal). */
|
|
34
|
+
signal?: AbortSignal;
|
|
33
35
|
staticGenerationErrorMessage?: (expression?: string) => string;
|
|
34
36
|
};
|
|
35
37
|
type TrackedAppRouteRequest = {
|
|
@@ -37,4 +39,5 @@ type TrackedAppRouteRequest = {
|
|
|
37
39
|
didAccessDynamicRequest(): boolean;
|
|
38
40
|
};
|
|
39
41
|
export declare function createTrackedAppRouteRequest(request: Request, options?: TrackedAppRouteRequestOptions): TrackedAppRouteRequest;
|
|
40
|
-
//#endregion
|
|
42
|
+
//#endregion
|
|
43
|
+
export {};
|
|
@@ -72,7 +72,20 @@ function buildNextConfig(options) {
|
|
|
72
72
|
skipTrailingSlashRedirect: options.skipTrailingSlashRedirect
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Undici's Request follows its input's signal through a WeakRef, and so does
|
|
77
|
+
* every clone between the host signal and the handler's request. A handler
|
|
78
|
+
* that only listens on `request.signal` (e.g. to stop a stream) would miss the
|
|
79
|
+
* abort once GC collects any of them, so the request follows the host signal
|
|
80
|
+
* directly and stays reachable for as long as that signal is.
|
|
81
|
+
*/
|
|
82
|
+
const requestsByHostSignal = /* @__PURE__ */ new WeakMap();
|
|
83
|
+
function retainWhileSignalLives(signal, request) {
|
|
84
|
+
const requests = requestsByHostSignal.get(signal);
|
|
85
|
+
if (requests) requests.push(request);
|
|
86
|
+
else requestsByHostSignal.set(signal, [request]);
|
|
87
|
+
}
|
|
88
|
+
function createForceStaticNextRequest(input, nextConfig, signal) {
|
|
76
89
|
const read = (key) => {
|
|
77
90
|
const descriptor = BUILT_IN_REQUEST_PROPERTY_MAP.get(key)?.descriptor;
|
|
78
91
|
if (descriptor?.get) return descriptor.get.call(input);
|
|
@@ -89,7 +102,7 @@ function createForceStaticNextRequest(input, nextConfig) {
|
|
|
89
102
|
redirect: read("redirect"),
|
|
90
103
|
referrer: read("referrer"),
|
|
91
104
|
referrerPolicy: read("referrerPolicy"),
|
|
92
|
-
signal: read("signal"),
|
|
105
|
+
signal: signal ?? read("signal"),
|
|
93
106
|
nextConfig: nextConfig ?? void 0
|
|
94
107
|
});
|
|
95
108
|
}
|
|
@@ -215,7 +228,11 @@ function createTrackedAppRouteRequest(request, options = {}) {
|
|
|
215
228
|
const sourceCfDescriptor = Reflect.getOwnPropertyDescriptor(requestWithOverrides, "cf");
|
|
216
229
|
const sourceCfAccessor = sourceCfDescriptor?.get;
|
|
217
230
|
const sourceCfMetadata = sourceCfAccessor ? void 0 : Reflect.get(requestWithOverrides, "cf", requestWithOverrides);
|
|
218
|
-
const nextRequest = requestMode === "force-static" ? createForceStaticNextRequest(requestWithOverrides, nextConfig) : requestWithOverrides instanceof NextRequest && sourceCfDescriptor?.configurable !== false ? requestWithOverrides : new NextRequest(requestWithOverrides, {
|
|
231
|
+
const nextRequest = requestMode === "force-static" ? createForceStaticNextRequest(requestWithOverrides, nextConfig, options.signal) : requestWithOverrides instanceof NextRequest && sourceCfDescriptor?.configurable !== false && !options.signal ? requestWithOverrides : new NextRequest(requestWithOverrides, {
|
|
232
|
+
nextConfig: nextConfig ?? void 0,
|
|
233
|
+
signal: options.signal
|
|
234
|
+
});
|
|
235
|
+
if (options.signal) retainWhileSignalLives(options.signal, nextRequest);
|
|
219
236
|
const rawCfMetadata = sourceCfAccessor ? void 0 : sourceCfMetadata === void 0 ? Reflect.get(nextRequest, "cf", nextRequest) : sourceCfMetadata;
|
|
220
237
|
const hasCfMetadata = sourceCfAccessor !== void 0 || rawCfMetadata !== void 0;
|
|
221
238
|
const originalCfDescriptor = sourceCfDescriptor ?? Reflect.getOwnPropertyDescriptor(nextRequest, "cf");
|