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
package/dist/shims/metadata.js
CHANGED
|
@@ -23,12 +23,23 @@ async function resolveModuleViewport(mod, params = {}, searchParams, parent = Pr
|
|
|
23
23
|
params: asyncParams,
|
|
24
24
|
searchParams: makeThenableParams(searchParams, searchParamsObserver)
|
|
25
25
|
});
|
|
26
|
-
return await mod.generateViewport
|
|
26
|
+
return await callSegmentResolver(mod.generateViewport, props, parent);
|
|
27
27
|
}
|
|
28
28
|
if (mod.viewport && typeof mod.viewport === "object") return mod.viewport;
|
|
29
29
|
return null;
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
|
+
* Call a segment's generateMetadata() or generateViewport() with `parent`, as
|
|
33
|
+
* Next.js's getResult does for both.
|
|
34
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/metadata/resolve-metadata.ts (getResult)
|
|
35
|
+
*/
|
|
36
|
+
function callSegmentResolver(resolver, props, parent) {
|
|
37
|
+
if (!(Reflect.get(resolver, USE_CACHE_FUNCTION_SYMBOL) === true)) return resolver(props, parent);
|
|
38
|
+
const acceptsSecondArgument = Reflect.get(resolver, USE_CACHE_ACCEPTS_SECOND_ARGUMENT_SYMBOL);
|
|
39
|
+
if (!(typeof acceptsSecondArgument === "boolean" ? acceptsSecondArgument : resolver.length >= 2)) return resolver(props);
|
|
40
|
+
return parent.then(() => resolver(props, parent));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
32
43
|
* Merge viewport configs from multiple sources (layouts + page).
|
|
33
44
|
* Later entries override earlier ones.
|
|
34
45
|
*/
|
|
@@ -232,13 +243,26 @@ function postProcessMetadata(merged) {
|
|
|
232
243
|
* tags are the exception: Next.js merges those across segments.
|
|
233
244
|
*/
|
|
234
245
|
function mergeMetadataEntries(entries) {
|
|
246
|
+
return mergeEntries(entries, false);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Merge metadata into the `parent` a later segment's resolver receives. Like
|
|
250
|
+
* {@link mergeMetadataEntries}, except the title stays resolved as Next.js's
|
|
251
|
+
* `{ absolute, template }`, so `(await parent).title?.absolute` reads the
|
|
252
|
+
* title so far. `template` is the one the next title gets, so merging this
|
|
253
|
+
* parent with later entries resolves their titles as the full merge does.
|
|
254
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/metadata/resolvers/resolve-title.ts
|
|
255
|
+
*/
|
|
256
|
+
function mergeParentMetadataEntries(entries) {
|
|
257
|
+
return mergeEntries(entries, true);
|
|
258
|
+
}
|
|
259
|
+
function mergeEntries(entries, resolvedTitle) {
|
|
235
260
|
if (entries.length === 0) return {};
|
|
236
261
|
const merged = {};
|
|
237
262
|
let parentTemplate;
|
|
238
263
|
for (const entry of entries) {
|
|
239
264
|
const meta = entry.metadata;
|
|
240
265
|
const isPage = Boolean(entry.isPage);
|
|
241
|
-
const contributesTitle = entry.contributesTitle !== false;
|
|
242
266
|
for (const key of Object.keys(meta)) {
|
|
243
267
|
if (key === "title") continue;
|
|
244
268
|
const incoming = meta[key];
|
|
@@ -249,9 +273,13 @@ function mergeMetadataEntries(entries) {
|
|
|
249
273
|
};
|
|
250
274
|
else merged[key] = incoming;
|
|
251
275
|
}
|
|
252
|
-
if (
|
|
253
|
-
if (
|
|
276
|
+
if (meta.title !== void 0) merged.title = resolveTitle(meta.title, parentTemplate);
|
|
277
|
+
if (!isPage && meta.title && typeof meta.title === "object" && meta.title.template) parentTemplate = meta.title.template;
|
|
254
278
|
}
|
|
279
|
+
if (resolvedTitle && Object.hasOwn(merged, "title")) merged.title = {
|
|
280
|
+
absolute: resolveStringTitle(merged.title) ?? "",
|
|
281
|
+
template: parentTemplate ?? null
|
|
282
|
+
};
|
|
255
283
|
return merged;
|
|
256
284
|
}
|
|
257
285
|
/**
|
|
@@ -268,13 +296,10 @@ async function resolveModuleMetadata(mod, params = {}, searchParams, parent = Pr
|
|
|
268
296
|
if (typeof mod.generateMetadata === "function") {
|
|
269
297
|
const generateMetadata = mod.generateMetadata;
|
|
270
298
|
const asyncParams = makeThenableParams(params);
|
|
271
|
-
|
|
299
|
+
return await callSegmentResolver(generateMetadata, searchParams === void 0 ? withUseCacheLayoutMarker(generateMetadata, { params: asyncParams }) : withUseCachePageMarker(generateMetadata, {
|
|
272
300
|
params: asyncParams,
|
|
273
301
|
searchParams: makeThenableParams(searchParams, searchParamsObserver)
|
|
274
|
-
});
|
|
275
|
-
const isUseCacheFunction = Reflect.get(generateMetadata, USE_CACHE_FUNCTION_SYMBOL) === true;
|
|
276
|
-
const acceptsSecondArgument = Reflect.get(generateMetadata, USE_CACHE_ACCEPTS_SECOND_ARGUMENT_SYMBOL);
|
|
277
|
-
return await (!isUseCacheFunction || (typeof acceptsSecondArgument === "boolean" ? acceptsSecondArgument : generateMetadata.length >= 2) ? generateMetadata(props, parent) : generateMetadata(props));
|
|
302
|
+
}), parent);
|
|
278
303
|
}
|
|
279
304
|
if (mod.metadata && typeof mod.metadata === "object") return mod.metadata;
|
|
280
305
|
return null;
|
|
@@ -607,24 +632,61 @@ function MetadataHead({ metadata, pathname = "/", trailingSlash, streamedIconKey
|
|
|
607
632
|
}
|
|
608
633
|
}
|
|
609
634
|
}
|
|
610
|
-
if (og.videos)
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
635
|
+
if (og.videos) {
|
|
636
|
+
const videos = normalizeUrlDescriptorEntries(og.videos, (url) => ({ url }));
|
|
637
|
+
for (const video of videos) {
|
|
638
|
+
if (video.url) elements.push(/* @__PURE__ */ jsx("meta", {
|
|
639
|
+
property: "og:video",
|
|
640
|
+
content: stringifyUrl(video.url)
|
|
641
|
+
}, key++));
|
|
642
|
+
if (video.secureUrl) elements.push(/* @__PURE__ */ jsx("meta", {
|
|
643
|
+
property: "og:video:secure_url",
|
|
644
|
+
content: stringifyUrl(video.secureUrl)
|
|
645
|
+
}, key++));
|
|
646
|
+
if (video.type) elements.push(/* @__PURE__ */ jsx("meta", {
|
|
647
|
+
property: "og:video:type",
|
|
648
|
+
content: video.type
|
|
649
|
+
}, key++));
|
|
650
|
+
if (video.width) elements.push(/* @__PURE__ */ jsx("meta", {
|
|
651
|
+
property: "og:video:width",
|
|
652
|
+
content: String(video.width)
|
|
653
|
+
}, key++));
|
|
654
|
+
if (video.height) elements.push(/* @__PURE__ */ jsx("meta", {
|
|
655
|
+
property: "og:video:height",
|
|
656
|
+
content: String(video.height)
|
|
657
|
+
}, key++));
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
if (og.audio) {
|
|
661
|
+
const audios = normalizeUrlDescriptorEntries(og.audio, (url) => ({ url }));
|
|
662
|
+
for (const audio of audios) {
|
|
663
|
+
if (audio.url) elements.push(/* @__PURE__ */ jsx("meta", {
|
|
664
|
+
property: "og:audio",
|
|
665
|
+
content: stringifyUrl(audio.url)
|
|
666
|
+
}, key++));
|
|
667
|
+
if (audio.secureUrl) elements.push(/* @__PURE__ */ jsx("meta", {
|
|
668
|
+
property: "og:audio:secure_url",
|
|
669
|
+
content: stringifyUrl(audio.secureUrl)
|
|
670
|
+
}, key++));
|
|
671
|
+
if (audio.type) elements.push(/* @__PURE__ */ jsx("meta", {
|
|
672
|
+
property: "og:audio:type",
|
|
673
|
+
content: audio.type
|
|
674
|
+
}, key++));
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
const ogListTags = [
|
|
678
|
+
["og:email", og.emails],
|
|
679
|
+
["og:phone_number", og.phoneNumbers],
|
|
680
|
+
["og:fax_number", og.faxNumbers],
|
|
681
|
+
["og:locale:alternate", og.alternateLocale]
|
|
682
|
+
];
|
|
683
|
+
for (const [property, value] of ogListTags) {
|
|
684
|
+
if (!value) continue;
|
|
685
|
+
for (const content of Array.isArray(value) ? value : [value]) elements.push(/* @__PURE__ */ jsx("meta", {
|
|
686
|
+
property,
|
|
687
|
+
content
|
|
622
688
|
}, key++));
|
|
623
689
|
}
|
|
624
|
-
if (og.audio) for (const audio of og.audio) elements.push(/* @__PURE__ */ jsx("meta", {
|
|
625
|
-
property: "og:audio",
|
|
626
|
-
content: resolveUrl(audio.url)
|
|
627
|
-
}, key++));
|
|
628
690
|
}
|
|
629
691
|
if (metadata.twitter) {
|
|
630
692
|
const tw = metadata.twitter;
|
|
@@ -867,4 +929,4 @@ function MetadataHead({ metadata, pathname = "/", trailingSlash, streamedIconKey
|
|
|
867
929
|
return /* @__PURE__ */ jsx(Fragment$1, { children: elements });
|
|
868
930
|
}
|
|
869
931
|
//#endregion
|
|
870
|
-
export { DEFAULT_VIEWPORT, MetadataHead, ViewportHead, mergeMetadata, mergeMetadataEntries, mergeViewport, postProcessMetadata, renderMetadataToHtml, resolveModuleMetadata, resolveModuleViewport };
|
|
932
|
+
export { DEFAULT_VIEWPORT, MetadataHead, ViewportHead, mergeMetadata, mergeMetadataEntries, mergeParentMetadataEntries, mergeViewport, postProcessMetadata, renderMetadataToHtml, resolveModuleMetadata, resolveModuleViewport };
|
|
@@ -58,4 +58,5 @@ export declare function isDynamicServerError(error: unknown): error is DynamicSe
|
|
|
58
58
|
* them. This covers the categories vinext can currently produce.
|
|
59
59
|
*/
|
|
60
60
|
export declare function unstable_rethrow(error: unknown): void;
|
|
61
|
-
//#endregion
|
|
61
|
+
//#endregion
|
|
62
|
+
export {};
|
|
@@ -3,6 +3,7 @@ import { NavigationRuntimeVisibleCommitMode } from "../client/navigation-runtime
|
|
|
3
3
|
import { AppElements } from "../server/app-elements-wire.js";
|
|
4
4
|
import "../server/app-elements.js";
|
|
5
5
|
import { AppRouterInstance, NavigateOptions, PrefetchOptions as PrefetchOptions$1 } from "./internal/app-router-context.js";
|
|
6
|
+
import { AppRoutePrefetchPolicy } from "./internal/app-route-prefetch-policy.js";
|
|
6
7
|
import { ReadonlyURLSearchParams } from "./readonly-url-search-params.js";
|
|
7
8
|
import { AppRscRenderMode } from "../server/app-rsc-render-mode.js";
|
|
8
9
|
import { GLOBAL_ACCESSORS_KEY, NavigationContext, NavigationStateAccessors, SegmentMap, ServerInsertedHTMLContext, _registerStateAccessors, clearServerInsertedHTML, flushServerInsertedHTML, getBfcacheIdMapContext, getBfcacheSegmentIdContext, getLayoutSegmentContext, getNavigationContext, renderServerInsertedHTML, setNavigationContext } from "./navigation-context-state.js";
|
|
@@ -67,7 +68,13 @@ export type PrefetchOptions = {
|
|
|
67
68
|
export type PrefetchCacheKind = "loading-shell" | "navigation" | "route-tree";
|
|
68
69
|
export type PrefetchCacheEntry = {
|
|
69
70
|
cacheForNavigation?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Set while a full prefetch would be kept as learning-only if its page
|
|
73
|
+
* renders dynamically. A hover upgrade turns it into a full prefetch.
|
|
74
|
+
*/
|
|
75
|
+
dynamicStaleTime?: "learning-only" | "full-prefetch";
|
|
70
76
|
expiresAt?: number;
|
|
77
|
+
fallbackTtlMs?: number;
|
|
71
78
|
invalidationTimer?: ReturnType<typeof setTimeout>;
|
|
72
79
|
mountedSlotsHeader?: string | null;
|
|
73
80
|
onInvalidateCallbacks?: Set<() => void>;
|
|
@@ -86,7 +93,7 @@ export type PrefetchCacheEntry = {
|
|
|
86
93
|
timestamp: number;
|
|
87
94
|
};
|
|
88
95
|
export declare function getCurrentInterceptionContext(): string | null;
|
|
89
|
-
export declare function getPrefetchInterceptionContext(targetHref: string): string | null;
|
|
96
|
+
export declare function getPrefetchInterceptionContext(targetHref: string, currentPathname?: string): string | null;
|
|
90
97
|
export declare function getCurrentNextUrl(): string;
|
|
91
98
|
export declare function createAppPrefetchRequestHeaders(options: {
|
|
92
99
|
fetchPriority: "auto" | "high" | "low";
|
|
@@ -116,6 +123,10 @@ export declare function hasPrefetchCacheEntryForNavigation(rscUrl: string, inter
|
|
|
116
123
|
additionalRscUrls?: readonly string[];
|
|
117
124
|
notifyInvalidation?: boolean;
|
|
118
125
|
onInvalidate?: () => void;
|
|
126
|
+
/** Called with the matched entry, and the key it was found under, when it is reused. */
|
|
127
|
+
onReuse?: (entry: PrefetchCacheEntry, cacheKey: string) => void;
|
|
128
|
+
/** Whether an in-flight entry counts as reusable. Defaults to true. */
|
|
129
|
+
reusePending?: boolean;
|
|
119
130
|
}): boolean;
|
|
120
131
|
/**
|
|
121
132
|
* Return whether the exact learning-only Link prefetch is still usable.
|
|
@@ -124,7 +135,16 @@ export declare function hasPrefetchCacheEntryForNavigation(rscUrl: string, inter
|
|
|
124
135
|
*/
|
|
125
136
|
export declare function hasFreshLearningOnlyPrefetchCacheEntry(rscUrl: string, interceptionContext?: string | null): boolean;
|
|
126
137
|
export declare function hasSearchAgnosticPrefetchShellForRoute(rscUrl: string, interceptionContext?: string | null, mountedSlotsHeader?: string | null): boolean;
|
|
127
|
-
export declare function discardLearningOnlyPrefetchCacheEntry(rscUrl: string, interceptionContext?: string | null): boolean;
|
|
138
|
+
export declare function discardLearningOnlyPrefetchCacheEntry(rscUrl: string, interceptionContext?: string | null, mountedSlotsHeader?: string | null): boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Make a prefetch reusable by a navigation, as an `unstable_dynamicOnHover`
|
|
141
|
+
* hover does. A pending one that would be kept as learning-only becomes a full
|
|
142
|
+
* prefetch and takes the full-prefetch lifetime. One already kept as
|
|
143
|
+
* learning-only because its page rendered dynamically is left for the full
|
|
144
|
+
* prefetch to replace: Next.js refetches it with `FetchStrategy.Full`, so the
|
|
145
|
+
* page reflects the cookies and headers at hover time.
|
|
146
|
+
*/
|
|
147
|
+
export declare function promotePrefetchCacheEntryForNavigation(cacheKey: string, entry: PrefetchCacheEntry): void;
|
|
128
148
|
export declare function invalidatePrefetchCache(): void;
|
|
129
149
|
/**
|
|
130
150
|
* Prevent completed navigation responses from becoming authoritative again
|
|
@@ -206,7 +226,7 @@ export declare function fetchRouteTreeGatedPrefetch(options: {
|
|
|
206
226
|
*/
|
|
207
227
|
export declare function prefetchRscResponse(rscUrl: string, fetchPromise: Promise<Response>, interceptionContext?: string | null, mountedSlotsHeader?: string | null, options?: PrefetchOptions, behavior?: {
|
|
208
228
|
cacheForNavigation?: boolean;
|
|
209
|
-
dynamicStaleTime?: "
|
|
229
|
+
dynamicStaleTime?: AppRoutePrefetchPolicy["dynamicStaleTime"];
|
|
210
230
|
fallbackTtlMs?: number;
|
|
211
231
|
optimisticRouteShell?: boolean;
|
|
212
232
|
prefetchKind?: PrefetchCacheKind;
|
package/dist/shims/navigation.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isBotUserAgent } from "../utils/html-limited-bots.js";
|
|
2
2
|
import { isExternalUrl } from "../utils/external-url.js";
|
|
3
3
|
import { stripBasePath } from "../utils/base-path.js";
|
|
4
|
-
import { NEXT_ROUTER_PREFETCH_HEADER, NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_RSC_RENDER_MODE_HEADER } from "../server/app-rsc-vary.js";
|
|
4
|
+
import { NEXT_ROUTER_PREFETCH_HEADER, NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, VINEXT_INTERCEPTION_CONTEXT_HEADER, VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_RSC_RENDER_MODE_HEADER } from "../server/app-rsc-vary.js";
|
|
5
5
|
import { NEXT_ROUTER_STALE_TIME_HEADER, VINEXT_DYNAMIC_STALE_TIME_HEADER, VINEXT_PARAMS_HEADER, VINEXT_RENDERED_PATH_AND_SEARCH_HEADER, VINEXT_RSC_COMPLETION_METADATA_HEADER, VINEXT_RSC_REDIRECT_HEADER, VINEXT_RSC_REDIRECT_TYPE_HEADER, VINEXT_STALE_TIME_PENDING_HEADER } from "../server/headers.js";
|
|
6
6
|
import { assertSafeNavigationUrl } from "./url-safety.js";
|
|
7
7
|
import { APP_RSC_RENDER_MODE_PREFETCH_DYNAMIC_SHELL, APP_RSC_RENDER_MODE_PREFETCH_LOADING_SHELL } from "../server/app-rsc-render-mode.js";
|
|
@@ -19,7 +19,7 @@ import { clearAppNavigationFailureTarget, stageAppNavigationFailureTarget } from
|
|
|
19
19
|
import { beginAppRouterScrollIntent, clearAppRouterScrollIntent, consumeAppRouterScrollIntent, getPendingAppRouterScrollIntent, isLatestAppRouterScrollIntent } from "./app-router-scroll-state.js";
|
|
20
20
|
import { VINEXT_RSC_COMPATIBILITY_ID_HEADER, VINEXT_RSC_CONTENT_TYPE, createRscRequestHeaders, createRscRequestUrl, formatRscRequestPath, parseRscRequestPath, stripRscCacheBustingSearchParam, stripRscSuffix } from "../server/app-rsc-cache-busting.js";
|
|
21
21
|
import { notifyAppRouterTransitionStart } from "../client/instrumentation-client-state.js";
|
|
22
|
-
import { getNavigationRuntime, hasAppNavigationRuntime } from "../client/navigation-runtime.js";
|
|
22
|
+
import { getNavigationRuntime, hasAppNavigationRuntime, loadNavigationRuntimeRouteManifest } from "../client/navigation-runtime.js";
|
|
23
23
|
import { UnrecognizedActionError, unstable_isUnrecognizedActionError } from "./unrecognized-action-error.js";
|
|
24
24
|
import { PUBLIC_INITIAL_BFCACHE_ID } from "../server/app-bfcache-id.js";
|
|
25
25
|
import { resolveManifestNavigationInterceptionContext } from "../server/app-browser-interception-context.js";
|
|
@@ -70,9 +70,9 @@ function useChildSegments(parallelRoutesKey = "children") {
|
|
|
70
70
|
return [];
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
const _READONLY_SEARCH_PARAMS = Symbol("vinext.navigation.readonlySearchParams");
|
|
74
|
-
const _READONLY_SEARCH_PARAMS_SOURCE = Symbol("vinext.navigation.readonlySearchParamsSource");
|
|
75
|
-
const _READONLY_SEARCH_PARAMS_SOURCE_KEY = Symbol("vinext.navigation.readonlySearchParamsSourceKey");
|
|
73
|
+
const _READONLY_SEARCH_PARAMS = Symbol.for("vinext.navigation.readonlySearchParams");
|
|
74
|
+
const _READONLY_SEARCH_PARAMS_SOURCE = Symbol.for("vinext.navigation.readonlySearchParamsSource");
|
|
75
|
+
const _READONLY_SEARCH_PARAMS_SOURCE_KEY = Symbol.for("vinext.navigation.readonlySearchParamsSourceKey");
|
|
76
76
|
const PAGES_NAVIGATION_NOTIFY_KEY = Symbol.for("vinext.navigation.pagesNavigationNotify");
|
|
77
77
|
const isServer = typeof window === "undefined";
|
|
78
78
|
/** basePath from next.config.js, injected by the plugin at build time */
|
|
@@ -117,7 +117,7 @@ function getCurrentInterceptionContext() {
|
|
|
117
117
|
if (isServer) return null;
|
|
118
118
|
return stripBasePath(window.location.pathname, __basePath);
|
|
119
119
|
}
|
|
120
|
-
function getPrefetchInterceptionContext(targetHref) {
|
|
120
|
+
function getPrefetchInterceptionContext(targetHref, currentPathname) {
|
|
121
121
|
if (isServer) return null;
|
|
122
122
|
let targetUrl;
|
|
123
123
|
try {
|
|
@@ -127,7 +127,7 @@ function getPrefetchInterceptionContext(targetHref) {
|
|
|
127
127
|
}
|
|
128
128
|
return resolveManifestNavigationInterceptionContext({
|
|
129
129
|
basePath: __basePath,
|
|
130
|
-
currentPathname: window.location.pathname,
|
|
130
|
+
currentPathname: currentPathname ?? window.location.pathname,
|
|
131
131
|
routeManifest: getNavigationRuntime()?.bootstrap.routeManifest ?? null,
|
|
132
132
|
targetPathname: targetUrl.pathname
|
|
133
133
|
});
|
|
@@ -296,9 +296,11 @@ function findPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mounte
|
|
|
296
296
|
function hasPrefetchCacheEntryForNavigation(rscUrl, interceptionContext = null, mountedSlotsHeader = null, options = {}) {
|
|
297
297
|
const match = findPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mountedSlotsHeader, options.additionalRscUrls);
|
|
298
298
|
if (match === null) return false;
|
|
299
|
+
if (match.entry.pending !== void 0 && options.reusePending === false) return false;
|
|
299
300
|
if (match.entry.pending !== void 0 || resolvePrefetchCacheEntryExpiresAt(match.entry) > Date.now()) {
|
|
300
301
|
touchPrefetchCacheEntry(getPrefetchCache(), match.cacheKey, match.entry);
|
|
301
302
|
attachPrefetchInvalidationToEntry(match.cacheKey, match.entry, options.onInvalidate);
|
|
303
|
+
options.onReuse?.(match.entry, match.cacheKey);
|
|
302
304
|
return true;
|
|
303
305
|
}
|
|
304
306
|
deletePrefetchCacheEntry(getPrefetchCache(), getPrefetchedUrls(), match.cacheKey, match.entry, options.notifyInvalidation ?? true);
|
|
@@ -494,7 +496,7 @@ function deletePrefetchCacheEntry(cache, prefetched, cacheKey, entry, notify) {
|
|
|
494
496
|
entry.onInvalidateCallbacks = void 0;
|
|
495
497
|
}
|
|
496
498
|
}
|
|
497
|
-
function discardLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext = null) {
|
|
499
|
+
function discardLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext = null, mountedSlotsHeader = null) {
|
|
498
500
|
const cache = getPrefetchCache();
|
|
499
501
|
const prefetched = getPrefetchedUrls();
|
|
500
502
|
const normalizedTarget = normalizeRscCacheLookupUrl(rscUrl);
|
|
@@ -505,6 +507,7 @@ function discardLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext = nul
|
|
|
505
507
|
const source = parsePrefetchCacheKey(cacheKey);
|
|
506
508
|
if (source.interceptionContext !== interceptionContext) continue;
|
|
507
509
|
if (normalizeRscCacheLookupUrl(source.rscUrl) !== normalizedTarget) continue;
|
|
510
|
+
if (!isPrefetchCacheEntryCompatibleWithMountedSlots(entry, mountedSlotsHeader)) continue;
|
|
508
511
|
superseded.push([cacheKey, entry]);
|
|
509
512
|
}
|
|
510
513
|
for (const [cacheKey, entry] of superseded) {
|
|
@@ -513,6 +516,25 @@ function discardLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext = nul
|
|
|
513
516
|
}
|
|
514
517
|
return superseded.length > 0;
|
|
515
518
|
}
|
|
519
|
+
/**
|
|
520
|
+
* Make a prefetch reusable by a navigation, as an `unstable_dynamicOnHover`
|
|
521
|
+
* hover does. A pending one that would be kept as learning-only becomes a full
|
|
522
|
+
* prefetch and takes the full-prefetch lifetime. One already kept as
|
|
523
|
+
* learning-only because its page rendered dynamically is left for the full
|
|
524
|
+
* prefetch to replace: Next.js refetches it with `FetchStrategy.Full`, so the
|
|
525
|
+
* page reflects the cookies and headers at hover time.
|
|
526
|
+
*/
|
|
527
|
+
function promotePrefetchCacheEntryForNavigation(cacheKey, entry) {
|
|
528
|
+
if (entry.dynamicStaleTime !== "learning-only") {
|
|
529
|
+
entry.cacheForNavigation = true;
|
|
530
|
+
return;
|
|
531
|
+
}
|
|
532
|
+
if (entry.cacheForNavigation === false) return;
|
|
533
|
+
entry.dynamicStaleTime = "full-prefetch";
|
|
534
|
+
if (entry.snapshot === void 0) return;
|
|
535
|
+
entry.expiresAt = resolvePrefetchedRscResponseExpiresAt(entry.timestamp, entry.snapshot, entry.fallbackTtlMs ?? PREFETCH_CACHE_TTL, "full-prefetch");
|
|
536
|
+
schedulePrefetchInvalidation(cacheKey, entry);
|
|
537
|
+
}
|
|
516
538
|
function invalidatePrefetchCacheEntry(cacheKey) {
|
|
517
539
|
const cache = getPrefetchCache();
|
|
518
540
|
const entry = cache.get(cacheKey);
|
|
@@ -837,6 +859,10 @@ function prefetchRscResponse(rscUrl, fetchPromise, interceptionContext = null, m
|
|
|
837
859
|
searchAgnosticShell: behavior.searchAgnosticShell === true,
|
|
838
860
|
timestamp: now
|
|
839
861
|
};
|
|
862
|
+
if (behavior.dynamicStaleTime === "learning-only" && behavior.searchAgnosticShell !== true) {
|
|
863
|
+
entry.dynamicStaleTime = "learning-only";
|
|
864
|
+
entry.fallbackTtlMs = behavior.fallbackTtlMs ?? PREFETCH_CACHE_TTL;
|
|
865
|
+
}
|
|
840
866
|
addPrefetchInvalidationCallback(entry, options?.onInvalidate);
|
|
841
867
|
entry.fetchPromise = fetchPromise;
|
|
842
868
|
entry.pending = fetchPromise.then(async (response) => {
|
|
@@ -847,8 +873,13 @@ function prefetchRscResponse(rscUrl, fetchPromise, interceptionContext = null, m
|
|
|
847
873
|
entry.snapshot = snapshot;
|
|
848
874
|
entry.size = snapshot.buffer.byteLength;
|
|
849
875
|
adjustPrefetchCacheByteSize(cache, entry.size - previousSize);
|
|
850
|
-
|
|
851
|
-
|
|
876
|
+
const fallbackTtlMs = behavior.fallbackTtlMs ?? PREFETCH_CACHE_TTL;
|
|
877
|
+
const dynamicStaleTime = behavior.searchAgnosticShell === true ? "ignore" : entry.dynamicStaleTime ?? behavior.dynamicStaleTime ?? (behavior.optimisticRouteShell === true ? "ignore" : "verbatim");
|
|
878
|
+
if (dynamicStaleTime === "learning-only" && isStaleTimeSeconds(snapshot.dynamicStaleTimeSeconds)) {
|
|
879
|
+
entry.cacheForNavigation = false;
|
|
880
|
+
entry.expiresAt = entry.timestamp + Math.max(fallbackTtlMs, MIN_PREFETCH_STALE_TIME_MS);
|
|
881
|
+
} else entry.expiresAt = resolvePrefetchedRscResponseExpiresAt(entry.timestamp, entry.snapshot, fallbackTtlMs, dynamicStaleTime === "learning-only" ? "verbatim" : dynamicStaleTime);
|
|
882
|
+
if (behavior.prepareSnapshot && entry.cacheForNavigation && snapshot.redirectHeader === void 0) try {
|
|
852
883
|
const preparedElements = await behavior.prepareSnapshot(snapshot);
|
|
853
884
|
if (cache.get(cacheKey) !== entry) return;
|
|
854
885
|
entry.preparedElements = preparedElements;
|
|
@@ -952,8 +983,12 @@ async function consumePrefetchResponseForNavigation(rscUrl, interceptionContext
|
|
|
952
983
|
if (options?.shouldConsume?.() === false) return null;
|
|
953
984
|
const allowExpiredInFlightHandoff = entry.pending !== void 0;
|
|
954
985
|
if (entry.pending !== void 0) {
|
|
955
|
-
promoteAppPrefetchFetch(entry.fetchPromise);
|
|
956
|
-
|
|
986
|
+
const releaseClaim = promoteAppPrefetchFetch(entry.fetchPromise, options?.shouldConsume);
|
|
987
|
+
try {
|
|
988
|
+
await entry.pending.catch(() => {});
|
|
989
|
+
} finally {
|
|
990
|
+
releaseClaim();
|
|
991
|
+
}
|
|
957
992
|
if (cache.get(cacheKey) !== entry) return null;
|
|
958
993
|
if (options?.shouldConsume?.() === false) return null;
|
|
959
994
|
}
|
|
@@ -1040,14 +1075,31 @@ let _cachedEmptyClientSearchParams = null;
|
|
|
1040
1075
|
* be visible until the next commit.
|
|
1041
1076
|
*/
|
|
1042
1077
|
function getSearchParamsSnapshot() {
|
|
1043
|
-
|
|
1078
|
+
const hasAppContext = getNavigationContext() !== null;
|
|
1044
1079
|
const pagesCtx = getPagesNavigationContext();
|
|
1045
|
-
if (pagesCtx) return getReadonlyPagesSearchParams(pagesCtx.searchParams);
|
|
1046
|
-
const
|
|
1047
|
-
if (
|
|
1080
|
+
if (!hasAppContext && pagesCtx) return getReadonlyPagesSearchParams(pagesCtx.searchParams);
|
|
1081
|
+
const state = getClientNavigationState();
|
|
1082
|
+
if (state) {
|
|
1083
|
+
if (hasAppContext) adoptHydrationSearchParams(state);
|
|
1084
|
+
return state.cachedReadonlySearchParams;
|
|
1085
|
+
}
|
|
1048
1086
|
if (_cachedEmptyClientSearchParams === null) _cachedEmptyClientSearchParams = new ReadonlyURLSearchParams();
|
|
1049
1087
|
return _cachedEmptyClientSearchParams;
|
|
1050
1088
|
}
|
|
1089
|
+
let _comparedHydrationSearchParams = null;
|
|
1090
|
+
/**
|
|
1091
|
+
* Keep the hydrated search params object when the browser URL has the same
|
|
1092
|
+
* query. React compares the two snapshots by identity once hydrated, so a new
|
|
1093
|
+
* object would re-render every useSearchParams() caller and re-run effects
|
|
1094
|
+
* keyed on it, where Next.js keeps one object from the first render.
|
|
1095
|
+
*/
|
|
1096
|
+
function adoptHydrationSearchParams(state) {
|
|
1097
|
+
const hydrated = getServerSearchParamsSnapshot();
|
|
1098
|
+
if (hydrated === state.cachedReadonlySearchParams) return;
|
|
1099
|
+
if (hydrated === _comparedHydrationSearchParams) return;
|
|
1100
|
+
_comparedHydrationSearchParams = hydrated;
|
|
1101
|
+
if (hydrated.toString() === state.cachedReadonlySearchParams.toString()) state.cachedReadonlySearchParams = hydrated;
|
|
1102
|
+
}
|
|
1051
1103
|
function syncCommittedUrlStateFromLocation() {
|
|
1052
1104
|
const state = getClientNavigationState();
|
|
1053
1105
|
if (!state) return false;
|
|
@@ -1465,6 +1517,11 @@ async function navigateClientSide(href, mode, scroll, programmaticTransition = f
|
|
|
1465
1517
|
const fullHref = toCanonicalBrowserNavigationHref(normalizedHref, window.location.href, __basePath, __trailingSlash);
|
|
1466
1518
|
notifyAppRouterTransitionStart(fullHref, mode);
|
|
1467
1519
|
if (mode === "push") saveScrollPosition();
|
|
1520
|
+
const mpaNavigate = getNavigationRuntime()?.functions.navigateExternal;
|
|
1521
|
+
if (mpaNavigate) {
|
|
1522
|
+
await mpaNavigate(fullHref, mode);
|
|
1523
|
+
return;
|
|
1524
|
+
}
|
|
1468
1525
|
hardNavigateTo(fullHref, mode);
|
|
1469
1526
|
await new Promise(() => {});
|
|
1470
1527
|
return;
|
|
@@ -1607,7 +1664,8 @@ const _appRouter = {
|
|
|
1607
1664
|
if (prefetchHref == null) return;
|
|
1608
1665
|
const fullHref = toAppPrefetchDestination(prefetchHref);
|
|
1609
1666
|
if (fullHref === null) return;
|
|
1610
|
-
const
|
|
1667
|
+
const currentPathname = window.location.pathname;
|
|
1668
|
+
let interceptionContext = getPrefetchInterceptionContext(fullHref, currentPathname);
|
|
1611
1669
|
const mountedSlotsHeader = getMountedSlotsHeader();
|
|
1612
1670
|
const headers = createAppPrefetchRequestHeaders({
|
|
1613
1671
|
fetchPriority: "low",
|
|
@@ -1616,6 +1674,12 @@ const _appRouter = {
|
|
|
1616
1674
|
});
|
|
1617
1675
|
const setup = beginPrefetchSetup(fullHref);
|
|
1618
1676
|
(async () => {
|
|
1677
|
+
const routeManifestLoad = loadNavigationRuntimeRouteManifest();
|
|
1678
|
+
if (routeManifestLoad !== null) {
|
|
1679
|
+
if (!await routeManifestLoad || setup.cancelled) return;
|
|
1680
|
+
interceptionContext = getPrefetchInterceptionContext(fullHref, currentPathname);
|
|
1681
|
+
if (interceptionContext !== null) headers.set(VINEXT_INTERCEPTION_CONTEXT_HEADER, interceptionContext);
|
|
1682
|
+
}
|
|
1619
1683
|
if (HAS_CLIENT_REWRITES) await preloadHybridClientRouteOwner();
|
|
1620
1684
|
const hybridOwner = resolveHybridClientRouteOwner(fullHref);
|
|
1621
1685
|
if (hybridOwner === "pages" || hybridOwner === "document") return;
|
|
@@ -1623,7 +1687,7 @@ const _appRouter = {
|
|
|
1623
1687
|
const kind = options?.kind === "full" ? "full" : "auto";
|
|
1624
1688
|
const [{ resolveAutoAppRoutePrefetch, resolveFullAppRoutePrefetch }, { resolveAppPrefetchRscRequest }] = await Promise.all([import("./internal/app-route-prefetch-policy.js"), import("./internal/app-prefetch-rsc-request.js")]);
|
|
1625
1689
|
if (setup.cancelled) return;
|
|
1626
|
-
const policy = kind === "full" ? resolveFullAppRoutePrefetch() : resolveAutoAppRoutePrefetch(rewrittenPrefetchHref ?? fullHref);
|
|
1690
|
+
const policy = kind === "full" ? resolveFullAppRoutePrefetch() : resolveAutoAppRoutePrefetch(rewrittenPrefetchHref ?? fullHref, interceptionContext);
|
|
1627
1691
|
const reusable = policy.shouldPrefetch && policy.cacheForNavigation;
|
|
1628
1692
|
const requiresRouteTreePrefetch = policy.requiresRouteTreePrefetch === true;
|
|
1629
1693
|
if (reusable && kind === "full") headers.delete(NEXT_ROUTER_PREFETCH_HEADER);
|
|
@@ -1635,7 +1699,7 @@ const _appRouter = {
|
|
|
1635
1699
|
if (!reusable && kind === "auto") {
|
|
1636
1700
|
headers.set(NEXT_ROUTER_PREFETCH_HEADER, "1");
|
|
1637
1701
|
headers.set(NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, "1");
|
|
1638
|
-
headers.set(VINEXT_RSC_RENDER_MODE_HEADER, hasSearchParams ? APP_RSC_RENDER_MODE_PREFETCH_DYNAMIC_SHELL : APP_RSC_RENDER_MODE_PREFETCH_LOADING_SHELL);
|
|
1702
|
+
headers.set(VINEXT_RSC_RENDER_MODE_HEADER, hasSearchParams && policy.rendersDynamically !== true ? APP_RSC_RENDER_MODE_PREFETCH_DYNAMIC_SHELL : APP_RSC_RENDER_MODE_PREFETCH_LOADING_SHELL);
|
|
1639
1703
|
}
|
|
1640
1704
|
const { additionalRscUrls, rscUrl } = await resolveAppPrefetchRscRequest({
|
|
1641
1705
|
fullHref,
|
|
@@ -1645,15 +1709,17 @@ const _appRouter = {
|
|
|
1645
1709
|
if (setup.cancelled) return;
|
|
1646
1710
|
const cacheKey = AppElementsWire.encodeCacheKey(rscUrl, interceptionContext);
|
|
1647
1711
|
const prefetched = getPrefetchedUrls();
|
|
1712
|
+
if (policy.dynamicStaleTime !== "full-prefetch" && hasFreshLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext)) {
|
|
1713
|
+
attachPrefetchInvalidationCallback(cacheKey, options?.onInvalidate);
|
|
1714
|
+
return;
|
|
1715
|
+
}
|
|
1648
1716
|
if (reusable) {
|
|
1649
|
-
discardLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext);
|
|
1717
|
+
discardLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext, mountedSlotsHeader);
|
|
1650
1718
|
if (hasPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mountedSlotsHeader, {
|
|
1651
1719
|
additionalRscUrls,
|
|
1652
|
-
onInvalidate: options?.onInvalidate
|
|
1720
|
+
onInvalidate: options?.onInvalidate,
|
|
1721
|
+
onReuse: policy.dynamicStaleTime === "full-prefetch" ? (entry, matchedCacheKey) => promotePrefetchCacheEntryForNavigation(matchedCacheKey, entry) : void 0
|
|
1653
1722
|
})) return;
|
|
1654
|
-
} else if (hasFreshLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext)) {
|
|
1655
|
-
attachPrefetchInvalidationCallback(cacheKey, options?.onInvalidate);
|
|
1656
|
-
return;
|
|
1657
1723
|
}
|
|
1658
1724
|
prefetched.add(cacheKey);
|
|
1659
1725
|
const fetchFullRscPayload = () => scheduleAppPrefetchFetch((signal) => fetch(rscUrl, {
|
|
@@ -1848,4 +1914,4 @@ if (!isServer) {
|
|
|
1848
1914
|
}
|
|
1849
1915
|
}
|
|
1850
1916
|
//#endregion
|
|
1851
|
-
export { BailoutToCSRError, DYNAMIC_NAVIGATION_CACHE_TTL, DynamicServerError, GLOBAL_ACCESSORS_KEY, HTTP_ERROR_FALLBACK_ERROR_CODE, MAX_PREFETCH_CACHE_SIZE, PREFETCH_CACHE_TTL, ReadonlyURLSearchParams, RedirectType, ServerInsertedHTMLContext, UnrecognizedActionError, __basePath, _registerStateAccessors, activateNavigationSnapshot, appRouterInstance, applyAppRouterScrollFallback, clearPendingPathname, clearServerInsertedHTML, commitClientNavigationState, consumePrefetchResponse, consumePrefetchResponseForNavigation, createAppPrefetchRequestHeaders, createCachedRscResponseSnapshot, createClientNavigationRenderSnapshot, createSnapshotPathAndSearch, decodeRedirectError, deletePrefetchResponseSnapshot, disableNavigationResponsePrefetchCacheReuse, discardLearningOnlyPrefetchCacheEntry, fetchRouteTreeGatedPrefetch, flushServerInsertedHTML, forbidden, getAccessFallbackHTTPStatus, getBfcacheIdMapContext, getBfcacheSegmentIdContext, getClientNavigationRenderContext, getClientNavigationState, getClientParams, getCurrentInterceptionContext, getCurrentNextUrl, getFreshPrefetchCacheEntry, getLayoutSegmentContext, getMountedSlotsHeader, getNavigationContext, getPrefetchCache, getPrefetchInterceptionContext, getPrefetchedUrls, hasFreshLearningOnlyPrefetchCacheEntry, hasPrefetchCacheEntryForNavigation, hasSearchAgnosticPrefetchShellForRoute, invalidatePrefetchCache, isBailoutToCSRError, isDynamicServerError, isHTTPAccessFallbackError, isNextRouterError, isRedirectError, navigateClientSide, notFound, parseRenderedPathAndSearchHeader, peekPrefetchResponseForNavigation, permanentRedirect, prefetchRscResponse, preloadHybridClientRouteOwner, prepareNavigationPrefetchSnapshot, pushHistoryStateWithoutNotify, redirect, renderServerInsertedHTML, replaceClientParamsWithoutNotify, replaceHistoryStateWithoutNotify, resolveCachedRscResponseExpiresAt, resolveCachedRscResponseTtlMs, resolveLoadedHybridClientRewriteHref, resolvePrefetchCacheEntryMountedSlotsHeader, restoreRscResponse, saveScrollPosition, seedPrefetchResponseSnapshot, setClientParams, setMountedSlotsHeader, setNavigationContext, setPendingPathname, snapshotRscResponse, storePrefetchResponse, unauthorized, unstable_isUnrecognizedActionError, unstable_rethrow, useClientNavigationRenderSnapshot, useParams, usePathname, useRouter, useSearchParams, useSelectedLayoutSegment, useSelectedLayoutSegments, useServerInsertedHTML };
|
|
1917
|
+
export { BailoutToCSRError, DYNAMIC_NAVIGATION_CACHE_TTL, DynamicServerError, GLOBAL_ACCESSORS_KEY, HTTP_ERROR_FALLBACK_ERROR_CODE, MAX_PREFETCH_CACHE_SIZE, PREFETCH_CACHE_TTL, ReadonlyURLSearchParams, RedirectType, ServerInsertedHTMLContext, UnrecognizedActionError, __basePath, _registerStateAccessors, activateNavigationSnapshot, appRouterInstance, applyAppRouterScrollFallback, clearPendingPathname, clearServerInsertedHTML, commitClientNavigationState, consumePrefetchResponse, consumePrefetchResponseForNavigation, createAppPrefetchRequestHeaders, createCachedRscResponseSnapshot, createClientNavigationRenderSnapshot, createSnapshotPathAndSearch, decodeRedirectError, deletePrefetchResponseSnapshot, disableNavigationResponsePrefetchCacheReuse, discardLearningOnlyPrefetchCacheEntry, fetchRouteTreeGatedPrefetch, flushServerInsertedHTML, forbidden, getAccessFallbackHTTPStatus, getBfcacheIdMapContext, getBfcacheSegmentIdContext, getClientNavigationRenderContext, getClientNavigationState, getClientParams, getCurrentInterceptionContext, getCurrentNextUrl, getFreshPrefetchCacheEntry, getLayoutSegmentContext, getMountedSlotsHeader, getNavigationContext, getPrefetchCache, getPrefetchInterceptionContext, getPrefetchedUrls, hasFreshLearningOnlyPrefetchCacheEntry, hasPrefetchCacheEntryForNavigation, hasSearchAgnosticPrefetchShellForRoute, invalidatePrefetchCache, isBailoutToCSRError, isDynamicServerError, isHTTPAccessFallbackError, isNextRouterError, isRedirectError, navigateClientSide, notFound, parseRenderedPathAndSearchHeader, peekPrefetchResponseForNavigation, permanentRedirect, prefetchRscResponse, preloadHybridClientRouteOwner, prepareNavigationPrefetchSnapshot, promotePrefetchCacheEntryForNavigation, pushHistoryStateWithoutNotify, redirect, renderServerInsertedHTML, replaceClientParamsWithoutNotify, replaceHistoryStateWithoutNotify, resolveCachedRscResponseExpiresAt, resolveCachedRscResponseTtlMs, resolveLoadedHybridClientRewriteHref, resolvePrefetchCacheEntryMountedSlotsHeader, restoreRscResponse, saveScrollPosition, seedPrefetchResponseSnapshot, setClientParams, setMountedSlotsHeader, setNavigationContext, setPendingPathname, snapshotRscResponse, storePrefetchResponse, unauthorized, unstable_isUnrecognizedActionError, unstable_rethrow, useClientNavigationRenderSnapshot, useParams, usePathname, useRouter, useSearchParams, useSelectedLayoutSegment, useSelectedLayoutSegments, useServerInsertedHTML };
|
package/dist/shims/og.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { shareIsolatePromise } from "../server/isolate-shared-promise.js";
|
|
1
2
|
//#region src/shims/og.tsx
|
|
3
|
+
let vercelOg;
|
|
2
4
|
const CACHE_HEADERS = {
|
|
3
5
|
noCache: "no-cache, no-store",
|
|
4
6
|
revalidate: "public, max-age=0, must-revalidate"
|
|
@@ -13,21 +15,43 @@ const CACHE_HEADERS = {
|
|
|
13
15
|
var ImageResponse = class extends Response {
|
|
14
16
|
static displayName = "ImageResponse";
|
|
15
17
|
constructor(element, options) {
|
|
18
|
+
let startRendering;
|
|
19
|
+
const constructed = new Promise((resolve) => {
|
|
20
|
+
startRendering = resolve;
|
|
21
|
+
});
|
|
16
22
|
const readable = new ReadableStream({ async start(controller) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
await constructed;
|
|
24
|
+
if (options === null) throw new TypeError("Cannot read properties of null (reading 'headers')");
|
|
25
|
+
let settleInitialization;
|
|
26
|
+
if (!vercelOg) {
|
|
27
|
+
const loading = import("@vercel/og");
|
|
28
|
+
vercelOg = loading;
|
|
29
|
+
loading.catch(() => {
|
|
30
|
+
if (vercelOg === loading) vercelOg = void 0;
|
|
31
|
+
});
|
|
32
|
+
shareIsolatePromise(new Promise((resolve) => {
|
|
33
|
+
settleInitialization = resolve;
|
|
34
|
+
}));
|
|
22
35
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
if (
|
|
36
|
+
try {
|
|
37
|
+
const { ImageResponse: VercelImageResponse } = await vercelOg;
|
|
38
|
+
const imageResponse = new VercelImageResponse(element, options);
|
|
39
|
+
if (!imageResponse.body) {
|
|
27
40
|
controller.close();
|
|
28
41
|
return;
|
|
29
42
|
}
|
|
30
|
-
|
|
43
|
+
const reader = imageResponse.body.getReader();
|
|
44
|
+
while (true) {
|
|
45
|
+
const { done, value } = await reader.read();
|
|
46
|
+
settleInitialization?.();
|
|
47
|
+
if (done) {
|
|
48
|
+
controller.close();
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
controller.enqueue(value);
|
|
52
|
+
}
|
|
53
|
+
} finally {
|
|
54
|
+
settleInitialization?.();
|
|
31
55
|
}
|
|
32
56
|
} });
|
|
33
57
|
const headers = new Headers({
|
|
@@ -42,6 +66,7 @@ var ImageResponse = class extends Response {
|
|
|
42
66
|
status: options?.status,
|
|
43
67
|
statusText: options?.statusText
|
|
44
68
|
});
|
|
69
|
+
startRendering();
|
|
45
70
|
}
|
|
46
71
|
};
|
|
47
72
|
//#endregion
|
|
@@ -29,4 +29,5 @@ export declare function waitForPprFallbackShellCacheReady(state: PprFallbackShel
|
|
|
29
29
|
export declare function preparePprFallbackShellFinalRender(state: PprFallbackShellState): void;
|
|
30
30
|
export declare function beginPprFallbackShellFinalRender(state: PprFallbackShellState): void;
|
|
31
31
|
export declare function isPprFallbackShellAbortError(error: unknown): boolean;
|
|
32
|
-
//#endregion
|
|
32
|
+
//#endregion
|
|
33
|
+
export {};
|
|
@@ -38,6 +38,19 @@ export type ExecutionContextLike = {
|
|
|
38
38
|
cache?: unknown;
|
|
39
39
|
/** Server-owned origin for credential-bearing Pages revalidation loopbacks. */
|
|
40
40
|
trustedRevalidateOrigin?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Node production server signal that aborts when the client disconnects
|
|
43
|
+
* before the response finishes. Its Request only follows this signal, so the
|
|
44
|
+
* App RSC handler takes it from here (UnifiedRequestContext.requestSignal).
|
|
45
|
+
*/
|
|
46
|
+
requestSignal?: AbortSignal;
|
|
47
|
+
/**
|
|
48
|
+
* Server-owned origin middleware runs against. Set by the Node production
|
|
49
|
+
* server, whose request URL comes from the client's Host header. Without it
|
|
50
|
+
* middleware uses the request URL's origin, which Workers can trust because
|
|
51
|
+
* the platform routes by hostname.
|
|
52
|
+
*/
|
|
53
|
+
middlewareOrigin?: string;
|
|
41
54
|
/** Worker-owned in-process dispatcher for authenticated Pages revalidation. */
|
|
42
55
|
dispatchPagesRevalidate?: (request: Request) => Promise<Response>;
|
|
43
56
|
/** Marks a request currently executing through the internal revalidation dispatcher. */
|