vinext 1.3.0 → 1.4.0
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 +5 -2
- package/THIRD_PARTY_LICENSES.md +47 -0
- package/dist/_virtual/_rolldown/runtime.js +4 -3
- package/dist/build/action-owner-manifest.d.ts +3 -2
- package/dist/build/action-owner-manifest.js +18 -2
- package/dist/build/app-page-static-eligibility.d.ts +17 -1
- package/dist/build/app-page-static-eligibility.js +80 -13
- package/dist/build/clean-output.d.ts +2 -1
- package/dist/build/client-build-config.d.ts +13 -3
- package/dist/build/client-build-config.js +46 -9
- package/dist/build/client-reference-async.d.ts +48 -0
- package/dist/build/client-reference-async.js +123 -0
- package/dist/build/client-reference-chunks.d.ts +32 -0
- package/dist/build/client-reference-chunks.js +111 -0
- package/dist/build/client-reference-groups.d.ts +9 -1
- package/dist/build/client-reference-groups.js +40 -2
- package/dist/build/css-url-assets.d.ts +2 -1
- package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
- package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
- package/dist/build/google-fonts/font-metadata.d.ts +2 -1
- package/dist/build/google-fonts/validate.d.ts +2 -1
- package/dist/build/inline-css.d.ts +2 -1
- package/dist/build/module-dependency-cache.d.ts +2 -1
- package/dist/build/next-client-runtime-manifests.d.ts +2 -1
- package/dist/build/precompress.d.ts +2 -1
- package/dist/build/precompress.js +1 -1
- package/dist/build/prerender-paths.d.ts +2 -1
- package/dist/build/prerender-phase.d.ts +2 -1
- package/dist/build/prerender-server-pool.js +1 -1
- package/dist/build/prerender.d.ts +3 -2
- package/dist/build/prerender.js +6 -5
- package/dist/build/report.d.ts +2 -15
- package/dist/build/report.js +1 -51
- package/dist/build/run-prerender.d.ts +2 -1
- package/dist/build/server-actions-encryption-key.d.ts +2 -1
- package/dist/build/ssr-manifest.js +25 -2
- package/dist/build/standalone.d.ts +2 -1
- package/dist/cache/cache-adapters-virtual.d.ts +2 -1
- package/dist/cache.js +1 -2
- package/dist/check.d.ts +2 -1
- package/dist/check.js +5 -1
- package/dist/cli-args.d.ts +2 -1
- package/dist/cli.js +5 -0
- package/dist/client/client-redirect-matcher.js +2 -1
- package/dist/client/client-redirects.d.ts +4 -3
- package/dist/client/client-redirects.js +2 -1
- package/dist/client/client-rewrites.d.ts +2 -1
- package/dist/client/dev-error-overlay-store.d.ts +2 -1
- package/dist/client/dev-error-overlay.js +1 -1
- package/dist/client/index.js +1 -2
- package/dist/client/instrumentation-client-state.js +5 -5
- package/dist/client/navigation-runtime.d.ts +16 -2
- package/dist/client/navigation-runtime.js +2 -2
- package/dist/client/pages-router-link-navigation.d.ts +2 -1
- package/dist/client/vinext-next-data.d.ts +25 -1
- package/dist/client/window-next.d.ts +2 -1
- package/dist/config/config-matchers.d.ts +12 -1
- package/dist/config/config-matchers.js +111 -16
- package/dist/config/dotenv.d.ts +2 -1
- package/dist/config/next-config.d.ts +32 -1
- package/dist/config/next-config.js +93 -5
- package/dist/config/tsconfig-paths.d.ts +2 -1
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-codec.js +327 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-data.js +123 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/index.js +29 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/internal.js +134 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-codec.js +50 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data-generated.js +455 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data.js +147 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/big5-added.json.js +169 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp936.json.js +2584 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp949.json.js +2220 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp950.json.js +227 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/eucjp.json.js +425 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gb18030-ranges.json.js +427 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gbk-added.json.js +229 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/shiftjis.json.js +292 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf16.js +106 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf7.js +182 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/bom-handling.js +42 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/extend-node.js +147 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/index.js +94 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/streams.js +95 -0
- 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/safer-buffer@2.1.2/deps/safer-buffer/safer.js +45 -0
- package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
- package/dist/entries/app-browser-entry.d.ts +20 -5
- package/dist/entries/app-browser-entry.js +79 -6
- package/dist/entries/app-rsc-entry.d.ts +2 -1
- package/dist/entries/app-rsc-entry.js +59 -60
- package/dist/entries/app-rsc-manifest.d.ts +2 -1
- package/dist/entries/app-rsc-manifest.js +56 -4
- package/dist/entries/app-ssr-entry.js +1 -0
- package/dist/entries/pages-entry-helpers.js +1 -2
- package/dist/entries/pages-server-entry.d.ts +2 -1
- package/dist/entries/pages-server-entry.js +34 -9
- package/dist/entries/runtime-entry-module.d.ts +1 -0
- package/dist/entries/runtime-entry-module.js +4 -1
- package/dist/image/image-adapters-virtual.d.ts +2 -1
- package/dist/index.js +184 -103
- package/dist/init-cloudflare.d.ts +1 -3
- package/dist/init-cloudflare.js +10 -48
- package/dist/init-platform.d.ts +2 -0
- package/dist/init-platform.js +4 -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/extensionless-dynamic-import.js +6 -2
- 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/next-intl-catalog.d.ts +12 -0
- package/dist/plugins/next-intl-catalog.js +85 -0
- package/dist/plugins/og-assets.d.ts +2 -1
- package/dist/plugins/og-assets.js +2 -3
- package/dist/plugins/optimize-imports.d.ts +2 -1
- package/dist/plugins/pages-node-externals.d.ts +3 -1
- package/dist/plugins/pages-node-externals.js +1 -1
- package/dist/plugins/remove-console.d.ts +2 -1
- package/dist/plugins/require-condition-resolution.d.ts +2 -1
- package/dist/plugins/rsc-client-reference-loaders.d.ts +8 -0
- package/dist/plugins/rsc-client-reference-loaders.js +170 -68
- package/dist/plugins/rsc-client-shim-excludes.js +2 -0
- package/dist/plugins/sass.d.ts +2 -1
- package/dist/plugins/strip-server-exports.d.ts +2 -1
- package/dist/plugins/styled-jsx.d.ts +2 -1
- package/dist/plugins/transform-result.d.ts +2 -1
- package/dist/plugins/typeof-window.d.ts +2 -1
- package/dist/plugins/use-cache-callable.d.ts +1 -1
- package/dist/plugins/use-cache-callable.js +136 -94
- package/dist/plugins/worker-image-imports.js +1 -1
- package/dist/plugins/worker-use-server.d.ts +2 -1
- package/dist/routing/app-route-graph.d.ts +46 -0
- package/dist/routing/app-route-graph.js +131 -51
- package/dist/routing/browser-route-manifest.d.ts +2 -1
- package/dist/routing/optimistic-route-trie.d.ts +2 -1
- package/dist/routing/route-matching.d.ts +2 -1
- package/dist/routing/route-pattern.d.ts +2 -1
- package/dist/server/accept-encoding.d.ts +2 -1
- package/dist/server/api-handler.js +19 -4
- package/dist/server/app-action-forwarding.d.ts +2 -1
- package/dist/server/app-bfcache-identity.d.ts +2 -1
- package/dist/server/app-bfcache-identity.js +1 -1
- package/dist/server/app-browser-action-result.d.ts +2 -1
- package/dist/server/app-browser-entry.js +106 -66
- package/dist/server/app-browser-error.d.ts +2 -1
- package/dist/server/app-browser-history-controller.d.ts +7 -5
- package/dist/server/app-browser-history-controller.js +93 -15
- package/dist/server/app-browser-hydration.d.ts +2 -1
- package/dist/server/app-browser-interception-context.d.ts +2 -1
- package/dist/server/app-browser-navigation-controller.d.ts +2 -2
- package/dist/server/app-browser-navigation-controller.js +16 -12
- 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-rsc-redirect.js +4 -4
- package/dist/server/app-browser-server-action-client.d.ts +4 -1
- package/dist/server/app-browser-server-action-client.js +4 -3
- package/dist/server/app-browser-state.d.ts +2 -4
- package/dist/server/app-browser-state.js +9 -4
- package/dist/server/app-browser-stream.d.ts +2 -1
- package/dist/server/app-browser-supplemental-refresh.js +16 -1
- package/dist/server/app-browser-visible-commit.d.ts +3 -2
- package/dist/server/app-browser-visible-commit.js +2 -12
- package/dist/server/app-client-reference-manifest.d.ts +31 -0
- package/dist/server/app-client-reference-manifest.js +46 -0
- package/dist/server/app-client-reference-preloader.d.ts +25 -5
- package/dist/server/app-client-reference-preloader.js +22 -7
- package/dist/server/app-elements-wire.d.ts +8 -39
- package/dist/server/app-elements-wire.js +4 -41
- package/dist/server/app-elements.d.ts +4 -2
- package/dist/server/app-elements.js +4 -2
- package/dist/server/app-fallback-renderer.d.ts +9 -2
- package/dist/server/app-fallback-renderer.js +4 -1
- package/dist/server/app-history-state.d.ts +4 -3
- package/dist/server/app-history-state.js +5 -2
- package/dist/server/app-inline-css-client.d.ts +2 -1
- package/dist/server/app-metadata-tracing.d.ts +2 -1
- package/dist/server/app-mounted-layouts.d.ts +21 -0
- package/dist/server/app-mounted-layouts.js +67 -0
- package/dist/server/app-optimistic-routing.d.ts +37 -2
- package/dist/server/app-optimistic-routing.js +75 -2
- package/dist/server/app-page-boundary-render.d.ts +20 -2
- package/dist/server/app-page-boundary-render.js +224 -40
- package/dist/server/app-page-boundary.d.ts +34 -5
- package/dist/server/app-page-boundary.js +41 -8
- package/dist/server/app-page-cache-finalizer.d.ts +14 -2
- package/dist/server/app-page-cache-finalizer.js +71 -30
- package/dist/server/app-page-cache-render.d.ts +10 -2
- package/dist/server/app-page-cache-render.js +14 -2
- package/dist/server/app-page-cache.d.ts +13 -1
- package/dist/server/app-page-cache.js +33 -11
- package/dist/server/app-page-dispatch.d.ts +39 -11
- package/dist/server/app-page-dispatch.js +236 -177
- package/dist/server/app-page-element-builder.d.ts +19 -3
- package/dist/server/app-page-element-builder.js +193 -71
- package/dist/server/app-page-execution.d.ts +43 -51
- package/dist/server/app-page-execution.js +205 -92
- package/dist/server/app-page-head.d.ts +108 -3
- package/dist/server/app-page-head.js +337 -154
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +49 -2
- package/dist/server/app-page-http-access-fallback-metadata.js +77 -2
- package/dist/server/app-page-layout-gate.d.ts +35 -0
- package/dist/server/app-page-layout-gate.js +50 -0
- package/dist/server/app-page-method.d.ts +2 -1
- package/dist/server/app-page-params.d.ts +0 -1
- package/dist/server/app-page-params.js +1 -14
- package/dist/server/app-page-probe.d.ts +5 -22
- package/dist/server/app-page-probe.js +4 -37
- package/dist/server/app-page-render-identity.d.ts +2 -1
- package/dist/server/app-page-render.d.ts +9 -13
- package/dist/server/app-page-render.js +108 -214
- package/dist/server/app-page-request.d.ts +15 -4
- package/dist/server/app-page-request.js +2 -2
- package/dist/server/app-page-response.js +3 -3
- package/dist/server/app-page-route-wiring.d.ts +65 -8
- package/dist/server/app-page-route-wiring.js +259 -103
- package/dist/server/app-page-rsc-render-status.d.ts +29 -2
- package/dist/server/app-page-rsc-render-status.js +121 -13
- package/dist/server/app-page-search-params-observation.d.ts +7 -2
- package/dist/server/app-page-search-params-observation.js +8 -1
- package/dist/server/app-page-segment-plan.d.ts +2 -1
- package/dist/server/app-page-stream.d.ts +33 -1
- package/dist/server/app-page-stream.js +25 -6
- package/dist/server/app-pages-bridge.d.ts +6 -1
- package/dist/server/app-pages-bridge.js +7 -3
- package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
- package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
- package/dist/server/app-prerender-endpoints.d.ts +2 -1
- package/dist/server/app-prerender-static-params.d.ts +2 -1
- package/dist/server/app-render-dependency.d.ts +21 -4
- package/dist/server/app-render-dependency.js +100 -33
- package/dist/server/app-request-stage-dispatch.js +1 -1
- package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
- package/dist/server/app-response-stage-entry.d.ts +2 -1
- package/dist/server/app-route-handler-cache.d.ts +2 -1
- package/dist/server/app-route-handler-cache.js +2 -2
- package/dist/server/app-route-handler-dispatch.d.ts +2 -1
- package/dist/server/app-route-handler-dispatch.js +15 -10
- package/dist/server/app-route-handler-execution.d.ts +2 -1
- package/dist/server/app-route-handler-execution.js +8 -3
- package/dist/server/app-route-handler-policy.d.ts +1 -1
- package/dist/server/app-route-handler-policy.js +3 -3
- package/dist/server/app-route-handler-response.d.ts +2 -1
- package/dist/server/app-route-handler-response.js +1 -1
- package/dist/server/app-route-handler-runtime.d.ts +2 -1
- package/dist/server/app-route-handler-runtime.js +17 -4
- package/dist/server/app-route-module-loader.d.ts +18 -1
- package/dist/server/app-route-module-loader.js +8 -0
- package/dist/server/app-route-tree-prefetch.d.ts +2 -1
- package/dist/server/app-rsc-cache-busting.d.ts +2 -2
- package/dist/server/app-rsc-cache-busting.js +4 -4
- package/dist/server/app-rsc-error-handler.d.ts +4 -2
- package/dist/server/app-rsc-error-handler.js +9 -1
- package/dist/server/app-rsc-errors.d.ts +10 -1
- package/dist/server/app-rsc-errors.js +8 -1
- package/dist/server/app-rsc-handler.d.ts +7 -6
- package/dist/server/app-rsc-handler.js +36 -34
- package/dist/server/app-rsc-request-normalization.d.ts +0 -4
- package/dist/server/app-rsc-request-normalization.js +1 -4
- package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
- package/dist/server/app-rsc-response-finalizer.js +2 -2
- package/dist/server/app-rsc-response-stage.js +5 -3
- package/dist/server/app-rsc-route-matching.d.ts +38 -1
- package/dist/server/app-rsc-route-matching.js +24 -0
- package/dist/server/app-segment-config.d.ts +2 -1
- package/dist/server/app-segment-config.js +1 -14
- package/dist/server/app-server-action-execution.d.ts +5 -2
- package/dist/server/app-server-action-execution.js +10 -7
- package/dist/server/app-ssr-entry.d.ts +8 -0
- package/dist/server/app-ssr-entry.js +98 -50
- package/dist/server/app-ssr-error-meta.d.ts +2 -1
- package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
- package/dist/server/app-ssr-stream.d.ts +22 -10
- package/dist/server/app-ssr-stream.js +300 -68
- 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 +38 -2
- package/dist/server/app-visited-response-cache.js +46 -5
- package/dist/server/app-worker-stages.d.ts +27 -4
- package/dist/server/app-worker-stages.js +45 -6
- package/dist/server/artifact-compatibility.d.ts +2 -2
- package/dist/server/artifact-compatibility.js +1 -10
- package/dist/server/bfcache-identity.d.ts +2 -1
- package/dist/server/cache-headers.d.ts +2 -1
- package/dist/server/cache-proof.d.ts +1 -115
- package/dist/server/cache-proof.js +1 -544
- package/dist/server/cacheability-request.d.ts +2 -1
- package/dist/server/cacheability-request.js +13 -8
- package/dist/server/config-headers.d.ts +2 -1
- package/dist/server/csp.d.ts +2 -1
- package/dist/server/default-global-not-found-module.d.ts +2 -1
- package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
- package/dist/server/default-http-access-fallback-modules.js +31 -0
- package/dist/server/defer-until-stream-consumed.d.ts +34 -0
- package/dist/server/defer-until-stream-consumed.js +154 -21
- package/dist/server/dev-lockfile.d.ts +32 -2
- package/dist/server/dev-lockfile.js +46 -2
- package/dist/server/dev-module-runner.d.ts +2 -1
- package/dist/server/dev-server.js +14 -6
- 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/headers.d.ts +6 -3
- package/dist/server/headers.js +9 -5
- 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/isr-cache.d.ts +8 -2
- package/dist/server/isr-cache.js +26 -1
- package/dist/server/metadata-route-build-data.d.ts +2 -1
- package/dist/server/metadata-route-build-data.js +1 -1
- package/dist/server/metadata-route-response.d.ts +2 -1
- package/dist/server/metadata-route-response.js +32 -15
- package/dist/server/metadata-routes.d.ts +2 -1
- package/dist/server/middleware-runtime.d.ts +2 -1
- package/dist/server/multi-stage.d.ts +52 -11
- package/dist/server/multi-stage.js +13 -1
- package/dist/server/navigation-planner.js +1 -1
- package/dist/server/navigation-trace.d.ts +2 -1
- package/dist/server/next-error-digest.d.ts +2 -1
- package/dist/server/nitro-public-files-plugin.d.ts +2 -1
- package/dist/server/nitro-public-files.d.ts +2 -1
- package/dist/server/opentelemetry-api.d.ts +2 -1
- package/dist/server/operation-token.d.ts +2 -1
- package/dist/server/pages-api-route.d.ts +2 -1
- package/dist/server/pages-api-route.js +28 -19
- package/dist/server/pages-asset-tags.d.ts +2 -1
- package/dist/server/pages-body-parser-config.d.ts +2 -1
- package/dist/server/pages-client-assets.d.ts +4 -0
- package/dist/server/pages-data-route.d.ts +2 -1
- package/dist/server/pages-document-asset-props.d.ts +2 -1
- package/dist/server/pages-document-initial-props.d.ts +2 -1
- package/dist/server/pages-execution-tracing.d.ts +2 -1
- package/dist/server/pages-execution-tracing.js +1 -1
- package/dist/server/pages-get-initial-props.d.ts +2 -1
- package/dist/server/pages-media-type.d.ts +21 -1
- package/dist/server/pages-media-type.js +69 -5
- package/dist/server/pages-node-compat.js +52 -27
- 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 +27 -27
- 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 +10 -1
- package/dist/server/pages-request-pipeline.js +6 -7
- package/dist/server/pages-request-stage-entry.d.ts +2 -1
- package/dist/server/pages-request-stage-entry.js +14 -12
- package/dist/server/pages-response-stage-entry.d.ts +2 -1
- package/dist/server/pages-response-stage-entry.js +9 -3
- package/dist/server/pages-route-data-kind.d.ts +2 -1
- package/dist/server/prerender-cache-life-header.d.ts +2 -1
- package/dist/server/prerender-route-params.d.ts +2 -1
- package/dist/server/prod-server.js +14 -4
- package/dist/server/request-log.d.ts +2 -1
- package/dist/server/request-pipeline.d.ts +6 -0
- package/dist/server/request-pipeline.js +21 -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/shared-cache-identity.d.ts +23 -0
- package/dist/server/shared-cache-identity.js +36 -0
- package/dist/server/static-file-cache.d.ts +2 -1
- package/dist/server/static-file-cache.js +1 -0
- package/dist/server/worker-revalidation-context.d.ts +2 -1
- package/dist/server/worker-stages.d.ts +18 -4
- package/dist/server/worker-stages.js +23 -4
- 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 +31 -11
- package/dist/shims/cache-request-state.d.ts +17 -20
- package/dist/shims/cache-request-state.js +16 -21
- package/dist/shims/cache-runtime.js +27 -11
- package/dist/shims/cache.d.ts +8 -7
- package/dist/shims/cache.js +17 -19
- package/dist/shims/cacheability-classification.d.ts +2 -0
- 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-cache.d.ts +22 -5
- package/dist/shims/cdn-purge-routes.d.ts +2 -1
- package/dist/shims/client-locale.js +2 -1
- package/dist/shims/client-page-root.d.ts +2 -1
- package/dist/shims/client-page-root.js +2 -2
- 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 +9 -6
- package/dist/shims/error-boundary.d.ts +39 -3
- package/dist/shims/error-boundary.js +33 -18
- package/dist/shims/fetch-cache-state.d.ts +5 -1
- package/dist/shims/fetch-cache-state.js +1 -3
- package/dist/shims/fetch-cache.d.ts +2 -1
- package/dist/shims/fetch-cache.js +34 -24
- 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 +3 -3
- package/dist/shims/headers.d.ts +8 -23
- package/dist/shims/headers.js +17 -67
- package/dist/shims/http-access-error-fallback.d.ts +7 -0
- package/dist/shims/http-access-error-fallback.js +47 -0
- package/dist/shims/image.d.ts +1 -22
- package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
- package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
- package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
- package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
- package/dist/shims/internal/client-reference-loader.d.ts +7 -0
- package/dist/shims/internal/client-reference-loader.js +91 -0
- package/dist/shims/internal/cookie-serialize.d.ts +2 -1
- package/dist/shims/internal/cookies.js +1 -2
- package/dist/shims/internal/headers-state.d.ts +2 -0
- package/dist/shims/internal/headers-state.js +6 -1
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +2 -1
- package/dist/shims/internal/interpolate-as.d.ts +2 -1
- package/dist/shims/internal/navigation-untracked.js +1 -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 +197 -52
- package/dist/shims/metadata.d.ts +52 -29
- package/dist/shims/metadata.js +142 -42
- package/dist/shims/navigation-errors.d.ts +2 -1
- package/dist/shims/navigation-server.js +1 -1
- package/dist/shims/navigation.d.ts +95 -8
- package/dist/shims/navigation.js +255 -47
- package/dist/shims/navigation.react-server.js +2 -2
- package/dist/shims/pages-router-runtime.d.ts +2 -1
- package/dist/shims/ppr-fallback-shell.d.ts +2 -1
- package/dist/shims/request-state-types.d.ts +2 -2
- package/dist/shims/router.js +14 -3
- package/dist/shims/slot.d.ts +12 -0
- package/dist/shims/slot.js +37 -9
- package/dist/shims/unified-request-context.d.ts +1 -1
- package/dist/shims/unified-request-context.js +5 -6
- package/dist/typegen.d.ts +2 -1
- package/dist/utils/cache-control-metadata.d.ts +5 -0
- package/dist/utils/cache-control-metadata.js +9 -1
- package/dist/utils/client-build-manifest.d.ts +4 -1
- package/dist/utils/client-build-manifest.js +9 -2
- package/dist/utils/client-entry-manifest.d.ts +13 -0
- package/dist/utils/client-entry-manifest.js +20 -1
- package/dist/utils/client-reference-chunks.d.ts +45 -0
- package/dist/utils/client-reference-chunks.js +30 -0
- package/dist/utils/client-runtime-metadata.d.ts +9 -1
- package/dist/utils/client-runtime-metadata.js +40 -9
- package/dist/utils/compare.d.ts +9 -0
- package/dist/utils/compare.js +15 -1
- package/dist/utils/lazy-chunks.d.ts +14 -0
- package/dist/utils/lazy-chunks.js +27 -1
- package/dist/utils/middleware-request-headers.d.ts +2 -1
- package/dist/utils/project.d.ts +4 -3
- package/dist/utils/project.js +12 -17
- package/dist/utils/query.d.ts +2 -1
- package/dist/utils/regex.d.ts +5 -0
- package/dist/utils/regex.js +11 -1
- package/dist/utils/text-stream.d.ts +10 -5
- package/dist/utils/text-stream.js +6 -6
- package/dist/utils/vite-cli-invocation.d.ts +2 -1
- package/package.json +6 -5
- package/dist/build/layout-classification-types.d.ts +0 -60
- package/dist/build/layout-classification-types.js +0 -1
- package/dist/build/layout-classification.d.ts +0 -61
- package/dist/build/layout-classification.js +0 -98
- package/dist/build/route-classification-injector.d.ts +0 -32
- package/dist/build/route-classification-injector.js +0 -59
- package/dist/build/route-classification-manifest.d.ts +0 -53
- package/dist/build/route-classification-manifest.js +0 -143
- package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
- package/dist/server/app-browser-client-reuse-manifest.d.ts +0 -10
- package/dist/server/app-browser-client-reuse-manifest.js +0 -101
- package/dist/server/app-layout-param-observation.d.ts +0 -41
- package/dist/server/app-layout-param-observation.js +0 -168
- package/dist/server/client-reuse-manifest.d.ts +0 -102
- package/dist/server/client-reuse-manifest.js +0 -209
- package/dist/server/default-not-found-module.d.ts +0 -19
- package/dist/server/default-not-found-module.js +0 -18
- package/dist/server/rsc-stream-hints.d.ts +0 -21
- package/dist/server/rsc-stream-hints.js +0 -227
- package/dist/server/skip-cache-proof.d.ts +0 -60
- package/dist/server/skip-cache-proof.js +0 -168
- package/dist/server/static-layout-client-reuse-proof.d.ts +0 -13
- package/dist/server/static-layout-client-reuse-proof.js +0 -33
- package/dist/utils/sorted-array.d.ts +0 -7
- package/dist/utils/sorted-array.js +0 -20
|
@@ -20,4 +20,5 @@ type ResolveManifestNavigationInterceptionContextOptions = {
|
|
|
20
20
|
*/
|
|
21
21
|
export declare function resolveManifestNavigationInterceptionContext(options: ResolveManifestNavigationInterceptionContextOptions): string | null;
|
|
22
22
|
export declare function resolveMiddlewareRewriteNavigationInterceptionContext(options: ResolveManifestNavigationInterceptionContextOptions): string | null;
|
|
23
|
-
//#endregion
|
|
23
|
+
//#endregion
|
|
24
|
+
export {};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { BrowserRouteManifest } from "../routing/browser-route-manifest.js";
|
|
2
2
|
import { AppRouterScrollIntent } from "../shims/app-router-scroll-state.js";
|
|
3
|
-
import { NavigationRuntimeVisibleCommitMode } from "../client/navigation-runtime.js";
|
|
4
3
|
import { AppElements } from "./app-elements-wire.js";
|
|
5
4
|
import "./app-elements.js";
|
|
5
|
+
import { ClientNavigationRenderSnapshot, commitClientNavigationState, createSnapshotPathAndSearch } from "../shims/navigation.js";
|
|
6
|
+
import { NavigationRuntimeVisibleCommitMode } from "../client/navigation-runtime.js";
|
|
6
7
|
import { OperationLane } from "./operation-token.js";
|
|
7
8
|
import { ServerActionRevalidationKind } from "./app-browser-action-result.js";
|
|
8
|
-
import { ClientNavigationRenderSnapshot, commitClientNavigationState, createSnapshotPathAndSearch } from "../shims/navigation.js";
|
|
9
9
|
import { AppNavigationPayloadOrigin, AppRouterState } from "./app-browser-state.js";
|
|
10
10
|
import { Dispatch, ReactNode } from "react";
|
|
11
11
|
//#region src/server/app-browser-navigation-controller.d.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { stripBasePath } from "../utils/base-path.js";
|
|
2
2
|
import { withBasePath } from "../shims/url-utils.js";
|
|
3
3
|
import { clearAppNavigationFailureTarget, getAppNavigationFailureTarget } from "../client/app-nav-failure-handler.js";
|
|
4
|
-
import { claimAppRouterScrollIntentForCommit, clearAppRouterScrollIntent, consumeAppRouterScrollIntent } from "../shims/app-router-scroll-state.js";
|
|
5
4
|
import { resolveServerActionOperationLane, shouldScheduleRefreshForDiscardedServerAction } from "./app-browser-action-result.js";
|
|
6
5
|
import { resolveActiveRoutePaths } from "./app-history-state.js";
|
|
6
|
+
import { claimAppRouterScrollIntentForCommit, clearAppRouterScrollIntent, consumeAppRouterScrollIntent } from "../shims/app-router-scroll-state.js";
|
|
7
7
|
import { activateNavigationSnapshot, clearPendingPathname, commitClientNavigationState, createSnapshotPathAndSearch } from "../shims/navigation.js";
|
|
8
8
|
import { FRESH_APP_NAVIGATION_PAYLOAD_ORIGIN, createPendingNavigationCommit, createPendingNavigationCommitFromElements } from "./app-browser-state.js";
|
|
9
9
|
import { applyApprovedVisibleCommit, approveHmrVisibleCommit, approvePendingNavigationCommit, resolveAndClassifyNavigationCommit } from "./app-browser-visible-commit.js";
|
|
@@ -333,8 +333,12 @@ function createAppBrowserNavigationController(deps = {}) {
|
|
|
333
333
|
routeManifest: deps.getRouteManifest?.() ?? null,
|
|
334
334
|
targetHref: createSnapshotPathAndSearch(navigationSnapshot)
|
|
335
335
|
});
|
|
336
|
-
if (approval.approvedCommit)
|
|
337
|
-
|
|
336
|
+
if (approval.approvedCommit) {
|
|
337
|
+
const approvedHmrCommit = approval.approvedCommit;
|
|
338
|
+
startTransition(() => {
|
|
339
|
+
dispatchVisibleCommit(approvedHmrCommit);
|
|
340
|
+
});
|
|
341
|
+
} else if (approval.decision.disposition === "hard-navigate") performHardNavigation(createSnapshotPathAndSearch(navigationSnapshot));
|
|
338
342
|
}
|
|
339
343
|
/**
|
|
340
344
|
* Rendered before the route tree (see createAppRouteTree). Insertion effects
|
|
@@ -357,7 +361,7 @@ function createAppBrowserNavigationController(deps = {}) {
|
|
|
357
361
|
}, [renderId]);
|
|
358
362
|
return children;
|
|
359
363
|
}
|
|
360
|
-
function dispatchApprovedVisibleCommit(renderId, commit, pendingRouterState, visibleCommitMode) {
|
|
364
|
+
function dispatchApprovedVisibleCommit(renderId, commit, pendingRouterState, visibleCommitMode, republishPendingRouterState) {
|
|
361
365
|
const setter = getBrowserRouterStateSetter();
|
|
362
366
|
const pendingCommit = pendingNavigationCommits.get(renderId);
|
|
363
367
|
const captureCandidateState = (state) => {
|
|
@@ -370,7 +374,7 @@ function createAppBrowserNavigationController(deps = {}) {
|
|
|
370
374
|
pendingRouterState.settled = true;
|
|
371
375
|
pendingRouterState.resolve(committedState);
|
|
372
376
|
if (activePendingBrowserRouterState === pendingRouterState) activePendingBrowserRouterState = null;
|
|
373
|
-
if (
|
|
377
|
+
if (republishPendingRouterState) startTransition(() => {
|
|
374
378
|
setter(committedState);
|
|
375
379
|
});
|
|
376
380
|
return;
|
|
@@ -387,7 +391,8 @@ function createAppBrowserNavigationController(deps = {}) {
|
|
|
387
391
|
setter(committedState);
|
|
388
392
|
});
|
|
389
393
|
}
|
|
390
|
-
|
|
394
|
+
/** Calls the setter directly; the caller chooses the update's priority. */
|
|
395
|
+
function dispatchVisibleCommit(commit) {
|
|
391
396
|
getBrowserRouterStateSetter()(applyApprovedVisibleCommit(getBrowserRouterState(), commit));
|
|
392
397
|
}
|
|
393
398
|
function createRestoredHistorySnapshotCommit(options) {
|
|
@@ -403,7 +408,6 @@ function createAppBrowserNavigationController(deps = {}) {
|
|
|
403
408
|
elements: options.restoredState.elements,
|
|
404
409
|
interception: options.restoredState.interception,
|
|
405
410
|
interceptionContext: options.restoredState.interceptionContext,
|
|
406
|
-
layoutFlags: options.restoredState.layoutFlags,
|
|
407
411
|
layoutIds: options.restoredState.layoutIds,
|
|
408
412
|
navigationSnapshot: options.restoredState.navigationSnapshot,
|
|
409
413
|
operation,
|
|
@@ -444,7 +448,7 @@ function createAppBrowserNavigationController(deps = {}) {
|
|
|
444
448
|
});
|
|
445
449
|
if (approval.approvedCommit === null) return false;
|
|
446
450
|
options.beforeCommit?.();
|
|
447
|
-
|
|
451
|
+
dispatchVisibleCommit(approval.approvedCommit);
|
|
448
452
|
return true;
|
|
449
453
|
}
|
|
450
454
|
function notifyDiscardedServerActionRevalidation(lifecycleOptions) {
|
|
@@ -462,7 +466,7 @@ function createAppBrowserNavigationController(deps = {}) {
|
|
|
462
466
|
return false;
|
|
463
467
|
}
|
|
464
468
|
}
|
|
465
|
-
function
|
|
469
|
+
function shouldRepublishPendingRouterState(options) {
|
|
466
470
|
if (options.actionType === "traverse") return false;
|
|
467
471
|
if (options.historyUpdateMode === void 0) return false;
|
|
468
472
|
if (options.scrollIntent?.hash == null) return false;
|
|
@@ -566,12 +570,12 @@ function createAppBrowserNavigationController(deps = {}) {
|
|
|
566
570
|
activateNavigationSnapshot();
|
|
567
571
|
snapshotRenderIds.add(renderId);
|
|
568
572
|
}
|
|
569
|
-
dispatchApprovedVisibleCommit(renderId, approvedCommit, options.pendingRouterState,
|
|
573
|
+
dispatchApprovedVisibleCommit(renderId, approvedCommit, options.pendingRouterState, options.visibleCommitMode ?? "transition", shouldRepublishPendingRouterState(options));
|
|
570
574
|
if (options.navigationResponseCompletion) options.navigationResponseCompletion.then(() => {
|
|
571
575
|
if (!isCurrentNavigation(options.navId) || !hasBrowserRouterState()) return;
|
|
572
576
|
const committedState = pendingNavigationCommits.get(renderId)?.committedState;
|
|
573
577
|
if (!committedState) return;
|
|
574
|
-
|
|
578
|
+
startTransition(() => {
|
|
575
579
|
getBrowserRouterStateSetter()(committedState);
|
|
576
580
|
});
|
|
577
581
|
}, () => {});
|
|
@@ -634,7 +638,7 @@ function createAppBrowserNavigationController(deps = {}) {
|
|
|
634
638
|
if (latestApproval.approvedCommit) {
|
|
635
639
|
const approvedRevalidationCommit = latestApproval.approvedCommit;
|
|
636
640
|
startTransition(() => {
|
|
637
|
-
|
|
641
|
+
dispatchVisibleCommit(approvedRevalidationCommit);
|
|
638
642
|
});
|
|
639
643
|
syncHistoryStatePreviousNextUrl(approvedRevalidationCommit.previousNextUrl, approvedRevalidationCommit.action.bfcacheIds);
|
|
640
644
|
} else notifyDiscardedServerActionRevalidation(lifecycleOptions);
|
|
@@ -26,4 +26,5 @@ export declare function shouldCommitPopstateUrlWithoutNavigation(options: {
|
|
|
26
26
|
isSameAppRouteTarget: boolean;
|
|
27
27
|
}): boolean;
|
|
28
28
|
export declare function createPopstateRestoreHandler(deps: BrowserPopstateRestoreDeps): (event: PopStateEvent) => void;
|
|
29
|
-
//#endregion
|
|
29
|
+
//#endregion
|
|
30
|
+
export {};
|
|
@@ -13,8 +13,7 @@ function toVisibleAppHref(href, origin) {
|
|
|
13
13
|
stripRscCacheBustingSearchParam(url);
|
|
14
14
|
return `${stripRscSuffix(url.pathname)}${url.search}${url.hash}`;
|
|
15
15
|
}
|
|
16
|
-
function toStreamedRedirectVisibleAppHref(
|
|
17
|
-
const url = new URL(href, origin);
|
|
16
|
+
function toStreamedRedirectVisibleAppHref(url) {
|
|
18
17
|
return `${url.pathname}${url.search}${url.hash}`;
|
|
19
18
|
}
|
|
20
19
|
function resolveRedirectLifecycleHopFromTarget(options) {
|
|
@@ -53,10 +52,11 @@ function resolveRscRedirectLifecycleHop(options) {
|
|
|
53
52
|
});
|
|
54
53
|
}
|
|
55
54
|
function resolveStreamedRscRedirectLifecycleHop(options) {
|
|
56
|
-
const
|
|
55
|
+
const requestedUrl = new URL(options.currentHref, options.origin);
|
|
56
|
+
const streamedRedirectUrl = new URL(options.streamedRedirectTarget, requestedUrl);
|
|
57
57
|
return resolveRedirectLifecycleHopFromTarget({
|
|
58
58
|
...options,
|
|
59
|
-
redirectedHref: toStreamedRedirectVisibleAppHref(
|
|
59
|
+
redirectedHref: toStreamedRedirectVisibleAppHref(streamedRedirectUrl),
|
|
60
60
|
targetUrl: streamedRedirectUrl
|
|
61
61
|
});
|
|
62
62
|
}
|
|
@@ -21,6 +21,8 @@ type ActionRedirectTarget = {
|
|
|
21
21
|
export type ClientServerActionDeps = {
|
|
22
22
|
basePath: string;
|
|
23
23
|
clearClientNavigationCaches(): void;
|
|
24
|
+
/** Evict only the cached navigation data that may be dynamic. */
|
|
25
|
+
clearDynamicClientNavigationCaches(): void;
|
|
24
26
|
clientRscCompatibilityId: string | null;
|
|
25
27
|
commitSameUrlNavigatePayload(elements: Promise<AppElements>, actionInitiation: ClientServerActionInitiation, returnValue: ServerActionResult["returnValue"] | undefined, revalidation: ServerActionRevalidationKind, renderedPathAndSearch: string | null): Promise<unknown>;
|
|
26
28
|
navigationPlanner: typeof navigationPlanner;
|
|
@@ -30,4 +32,5 @@ export type ClientServerActionDeps = {
|
|
|
30
32
|
syncServerActionHttpFallbackHead(status: number | null): void;
|
|
31
33
|
};
|
|
32
34
|
export declare function invokeClientServerAction(id: string, args: unknown[], actionInitiation: ClientServerActionInitiation, deps: ClientServerActionDeps): Promise<unknown>;
|
|
33
|
-
//#endregion
|
|
35
|
+
//#endregion
|
|
36
|
+
export {};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { hasBasePath } from "../utils/base-path.js";
|
|
2
2
|
import { ACTION_REDIRECT_HEADER, ACTION_REDIRECT_STATUS_HEADER, VINEXT_RENDERED_PATH_AND_SEARCH_HEADER } from "./headers.js";
|
|
3
3
|
import { DANGEROUS_URL_BLOCK_MESSAGE, isDangerousScheme } from "../shims/url-safety.js";
|
|
4
|
-
import { AppElementsWire } from "./app-elements-wire.js";
|
|
5
|
-
import "./app-elements.js";
|
|
6
4
|
import { VINEXT_RSC_COMPATIBILITY_ID_HEADER, createServerActionRequestUrl } from "./app-rsc-cache-busting.js";
|
|
7
5
|
import { throwOnServerActionNotFound } from "./server-action-not-found.js";
|
|
6
|
+
import { AppElementsWire } from "./app-elements-wire.js";
|
|
7
|
+
import "./app-elements.js";
|
|
8
8
|
import { createServerActionResultFacts, isServerActionResult, normalizeServerActionThrownValue, parseServerActionRevalidationHeader, readInvalidServerActionResponseError, shouldClearClientNavigationCachesForServerActionResult, shouldSyncServerActionHttpFallbackHead } from "./app-browser-action-result.js";
|
|
9
9
|
import { parseRenderedPathAndSearchHeader } from "../shims/navigation.js";
|
|
10
10
|
import { resolveServerActionRequestState } from "./app-browser-state.js";
|
|
@@ -89,7 +89,8 @@ async function invokeClientServerAction(id, args, actionInitiation, deps) {
|
|
|
89
89
|
const actionResultDecision = deps.navigationPlanner.classifyServerActionResult(actionResultFacts);
|
|
90
90
|
if (applyServerActionResultDecision(actionResultDecision, () => deps.clearClientNavigationCaches(), (url, historyMode) => deps.performHardNavigation(url, historyMode))) return;
|
|
91
91
|
const revalidation = parseServerActionRevalidationHeader(fetchResponse.headers);
|
|
92
|
-
if (revalidation
|
|
92
|
+
if (revalidation === "staticAndDynamic") deps.clearClientNavigationCaches();
|
|
93
|
+
else if (revalidation === "dynamicOnly") deps.clearDynamicClientNavigationCaches();
|
|
93
94
|
const invalidResponseError = await readInvalidServerActionResponseError(fetchResponse.clone(), actionRedirectTarget !== null);
|
|
94
95
|
if (invalidResponseError) throw invalidResponseError;
|
|
95
96
|
if (actionRedirectTarget && !fetchResponseIsRsc) {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { BrowserRouteManifest } from "../routing/browser-route-manifest.js";
|
|
2
2
|
import { CacheEntryReuseProof } from "./cache-proof.js";
|
|
3
|
-
import { AppElements, AppElementsInterception, AppElementsSlotBinding
|
|
3
|
+
import { AppElements, AppElementsInterception, AppElementsSlotBinding } from "./app-elements-wire.js";
|
|
4
4
|
import "./app-elements.js";
|
|
5
|
+
import { ClientNavigationRenderSnapshot } from "../shims/navigation.js";
|
|
5
6
|
import { NavigationTrace } from "./navigation-trace.js";
|
|
6
7
|
import { OperationLane } from "./operation-token.js";
|
|
7
8
|
import "./navigation-planner.js";
|
|
8
9
|
import { BfcacheIdMap, HistoryTraversalIntent, createAppOwnedHistoryState, createExternalHistoryStatePreservingMetadata, createHistoryStateWithNavigationMetadata, createHistoryStateWithPreviousNextUrl, createHistoryStateWithTreeSnapshotId, isExternalHistoryState, isHistoryStateBfcacheVersionCurrent, readHistoryStateActiveRoutePaths, readHistoryStateBfcacheIds, readHistoryStateBfcacheVersion, readHistoryStatePreviousNextUrl, readHistoryStateTraversalIndex, resolveActiveRoutePaths, resolveHistoryTraversalIntent } from "./app-history-state.js";
|
|
9
10
|
import { createBfcacheSegmentIdentityMap, createInitialBfcacheIdMap, createNextBfcacheIdMap, preserveBfcacheIdsForMergedElements } from "./app-bfcache-identity.js";
|
|
10
|
-
import { ClientNavigationRenderSnapshot } from "../shims/navigation.js";
|
|
11
11
|
//#region src/server/app-browser-state.d.ts
|
|
12
12
|
type OperationRecordBase = {
|
|
13
13
|
id: number;
|
|
@@ -30,7 +30,6 @@ export type AppRouterState = {
|
|
|
30
30
|
elements: AppElements;
|
|
31
31
|
interception: AppElementsInterception | null;
|
|
32
32
|
interceptionContext: string | null;
|
|
33
|
-
layoutFlags: LayoutFlags;
|
|
34
33
|
layoutIds: readonly string[];
|
|
35
34
|
previousNextUrl: string | null;
|
|
36
35
|
renderId: number;
|
|
@@ -46,7 +45,6 @@ export type AppRouterAction = {
|
|
|
46
45
|
elements: AppElements;
|
|
47
46
|
interception: AppElementsInterception | null;
|
|
48
47
|
interceptionContext: string | null;
|
|
49
|
-
layoutFlags: LayoutFlags;
|
|
50
48
|
layoutIds: readonly string[];
|
|
51
49
|
navigationSnapshot: ClientNavigationRenderSnapshot;
|
|
52
50
|
operation: PendingOperationRecord;
|
|
@@ -3,17 +3,18 @@ import { VINEXT_INTERCEPTION_CONTEXT_HEADER, VINEXT_MOUNTED_SLOTS_HEADER } from
|
|
|
3
3
|
import { NEXT_ACTION_HEADER, RSC_ACTION_HEADER } from "./headers.js";
|
|
4
4
|
import { normalizePathnameForRouteMatch } from "../routing/utils.js";
|
|
5
5
|
import { normalizePath } from "./normalize-path.js";
|
|
6
|
+
import { createRscRequestHeaders } from "./app-rsc-cache-busting.js";
|
|
6
7
|
import { AppElementsWire } from "./app-elements-wire.js";
|
|
7
8
|
import { getMountedSlotIds, getMountedSlotIdsHeader } from "./app-elements.js";
|
|
8
|
-
import { bindAppElementsRenderedSearch } from "../shims/slot.js";
|
|
9
|
-
import { createRscRequestHeaders } from "./app-rsc-cache-busting.js";
|
|
10
|
-
import { createCacheEntryReuseProof } from "./cache-proof.js";
|
|
11
9
|
import { createBfcacheSegmentIdentityMap, createInitialBfcacheIdMap, createNextBfcacheIdMap, preserveBfcacheIdsForMergedElements } from "./app-bfcache-identity.js";
|
|
12
10
|
import { createAppOwnedHistoryState, createExternalHistoryStatePreservingMetadata, createHistoryStateWithNavigationMetadata, createHistoryStateWithPreviousNextUrl, createHistoryStateWithTreeSnapshotId, isExternalHistoryState, isHistoryStateBfcacheVersionCurrent, readHistoryStateActiveRoutePaths, readHistoryStateBfcacheIds, readHistoryStateBfcacheVersion, readHistoryStatePreviousNextUrl, readHistoryStateTraversalIndex, resolveActiveRoutePaths, resolveHistoryTraversalIntent } from "./app-history-state.js";
|
|
13
11
|
import { NavigationTraceReasonCodes, createNavigationLifecycleTraceFields, createNavigationTrace } from "./navigation-trace.js";
|
|
14
12
|
import { verifyOperationTokenForCommit } from "./operation-token.js";
|
|
15
13
|
import { navigationPlanner, resolveDefaultOrUnmatchedSlotPersistenceForLayouts } from "./navigation-planner.js";
|
|
16
14
|
import { createSnapshotPathAndSearch } from "../shims/navigation.js";
|
|
15
|
+
import { holdsSkippedLayouts } from "./app-mounted-layouts.js";
|
|
16
|
+
import { createCacheEntryReuseProof } from "./cache-proof.js";
|
|
17
|
+
import { bindAppElementsRenderedSearch } from "../shims/slot.js";
|
|
17
18
|
//#region src/server/app-browser-state.ts
|
|
18
19
|
const COMMITTED_CACHE_APP_NAVIGATION_PAYLOAD_ORIGIN = { origin: "committed-cache" };
|
|
19
20
|
const FRESH_APP_NAVIGATION_PAYLOAD_ORIGIN = { origin: "fresh" };
|
|
@@ -239,6 +240,11 @@ function mapNavigationDecisionToPendingDisposition(decision) {
|
|
|
239
240
|
function mergeSkippedLayoutPreservation(options) {
|
|
240
241
|
if (options.decision.disposition !== "dispatch") return options.decision;
|
|
241
242
|
if (options.pending.skippedLayoutIds.length === 0) return options.decision;
|
|
243
|
+
if (!holdsSkippedLayouts(options.currentState, options.pending.action.elements)) return {
|
|
244
|
+
disposition: "hard-navigate",
|
|
245
|
+
preserveElementIds: [],
|
|
246
|
+
trace: options.decision.trace
|
|
247
|
+
};
|
|
242
248
|
const currentLayoutIds = new Set(options.currentState.layoutIds);
|
|
243
249
|
const targetLayoutIds = new Set(options.pending.action.layoutIds);
|
|
244
250
|
const preserveElementIds = [...options.decision.preserveElementIds];
|
|
@@ -303,7 +309,6 @@ function createPendingNavigationCommitFromElements(options) {
|
|
|
303
309
|
interception: metadata.interception,
|
|
304
310
|
interceptionContext: metadata.interceptionContext,
|
|
305
311
|
layoutIds: metadata.layoutIds,
|
|
306
|
-
layoutFlags: metadata.layoutFlags,
|
|
307
312
|
slotBindings: metadata.slotBindings,
|
|
308
313
|
navigationSnapshot: options.navigationSnapshot,
|
|
309
314
|
operation: createOperationRecord({
|
|
@@ -21,4 +21,5 @@ export declare function chunksToReadableStream(chunks: readonly RscEmbeddedChunk
|
|
|
21
21
|
* immediately instead of polling with setTimeout.
|
|
22
22
|
*/
|
|
23
23
|
export declare function createProgressiveRscStream(): ReadableStream<Uint8Array>;
|
|
24
|
-
//#endregion
|
|
24
|
+
//#endregion
|
|
25
|
+
export {};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { addBasePathToPathname, removeTrailingSlash, stripBasePath } from "../utils/base-path.js";
|
|
2
2
|
import { normalizePathnameForRouteMatch } from "../routing/utils.js";
|
|
3
3
|
import { normalizePath } from "./normalize-path.js";
|
|
4
|
-
import { APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_SLOT_BINDINGS_KEY, AppElementsWire, normalizeAppElementsSlotBindings } from "./app-elements-wire.js";
|
|
4
|
+
import { APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_SLOT_BINDINGS_KEY, AppElementsWire, normalizeAppElementsSlotBindings } from "./app-elements-wire.js";
|
|
5
5
|
import "./app-elements.js";
|
|
6
|
+
import { isNestedBfcacheSlotSegmentIdFor } from "./bfcache-identity.js";
|
|
6
7
|
//#region src/server/app-browser-supplemental-refresh.ts
|
|
7
8
|
const SUPPLEMENTAL_REFRESH_TIMEOUT_MS = 1e4;
|
|
8
9
|
var SupplementalRefreshError = class extends Error {
|
|
@@ -67,6 +68,7 @@ function mergeRefreshedParallelSlot(currentElements, refreshedElements) {
|
|
|
67
68
|
[APP_SLOT_BINDINGS_KEY]: normalizeAppElementsSlotBindings(slotBindings, { layoutIds: refreshedMetadata.layoutIds })
|
|
68
69
|
};
|
|
69
70
|
for (const binding of retainedBindings) merged[binding.slotId] = currentElements[binding.slotId];
|
|
71
|
+
copySlotIdentities(merged, refreshedElements, currentElements, retainedBindings.map((binding) => binding.slotId));
|
|
70
72
|
if (promotedBindings.length === 1) merged[promotedBindings[0].slotId] = refreshedElements[refreshedChildrenBindings[0].slotId];
|
|
71
73
|
copyRefreshedBranchElements(merged, currentElements, { overwrite: false });
|
|
72
74
|
return merged;
|
|
@@ -79,6 +81,7 @@ function mergeRefreshedParallelSlot(currentElements, refreshedElements) {
|
|
|
79
81
|
[APP_SLOT_BINDINGS_KEY]: normalizeAppElementsSlotBindings(slotBindings, { layoutIds: currentMetadata.layoutIds })
|
|
80
82
|
};
|
|
81
83
|
for (const binding of refreshedBindings) merged[binding.slotId] = refreshedElements[binding.slotId];
|
|
84
|
+
copySlotIdentities(merged, currentElements, refreshedElements, refreshedBindings.map((binding) => binding.slotId));
|
|
82
85
|
copyRefreshedBranchElements(merged, refreshedElements);
|
|
83
86
|
return merged;
|
|
84
87
|
}
|
|
@@ -93,9 +96,21 @@ function mergeRefreshedParallelSlot(currentElements, refreshedElements) {
|
|
|
93
96
|
[interception.slotId]: refreshedSlot,
|
|
94
97
|
[APP_SLOT_BINDINGS_KEY]: normalizeAppElementsSlotBindings(slotBindings, { layoutIds: currentMetadata.layoutIds })
|
|
95
98
|
};
|
|
99
|
+
copySlotIdentities(merged, currentElements, refreshedElements, [interception.slotId]);
|
|
96
100
|
copyRefreshedBranchElements(merged, refreshedElements);
|
|
97
101
|
return merged;
|
|
98
102
|
}
|
|
103
|
+
function copySlotIdentities(target, baseElements, slotElements, slotIds) {
|
|
104
|
+
const isSlotSegment = (id) => slotIds.some((slotId) => id === slotId || isNestedBfcacheSlotSegmentIdFor(id, slotId));
|
|
105
|
+
const isNestedSegment = (id) => !slotIds.includes(id) && isSlotSegment(id);
|
|
106
|
+
for (const id of Object.keys(baseElements)) if (isNestedSegment(id)) delete target[id];
|
|
107
|
+
for (const [id, element] of Object.entries(slotElements)) if (isNestedSegment(id)) target[id] = element;
|
|
108
|
+
const identities = {};
|
|
109
|
+
for (const [id, identity] of Object.entries(AppElementsWire.readMetadata(baseElements).bfcacheSegmentIdentities)) if (!isSlotSegment(id)) identities[id] = identity;
|
|
110
|
+
for (const [id, identity] of Object.entries(AppElementsWire.readMetadata(slotElements).bfcacheSegmentIdentities)) if (isSlotSegment(id)) identities[id] = identity;
|
|
111
|
+
if (Object.keys(identities).length > 0) target[APP_BFCACHE_SEGMENT_IDENTITIES_KEY] = identities;
|
|
112
|
+
else delete target[APP_BFCACHE_SEGMENT_IDENTITIES_KEY];
|
|
113
|
+
}
|
|
99
114
|
function copyRefreshedBranchElements(target, refreshedElements, options = {}) {
|
|
100
115
|
for (const [elementId, element] of Object.entries(refreshedElements)) {
|
|
101
116
|
const parsed = AppElementsWire.parseElementKey(elementId);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BrowserRouteManifest } from "../routing/browser-route-manifest.js";
|
|
2
2
|
import { AppElements } from "./app-elements-wire.js";
|
|
3
3
|
import "./app-elements.js";
|
|
4
|
+
import { ClientNavigationRenderSnapshot } from "../shims/navigation.js";
|
|
4
5
|
import { NavigationTrace } from "./navigation-trace.js";
|
|
5
6
|
import { OperationLane } from "./operation-token.js";
|
|
6
|
-
import { ClientNavigationRenderSnapshot } from "../shims/navigation.js";
|
|
7
7
|
import { AppNavigationPayloadOrigin, AppRouterAction, AppRouterState, PendingNavigationCommit } from "./app-browser-state.js";
|
|
8
8
|
//#region src/server/app-browser-visible-commit.d.ts
|
|
9
9
|
type VisibleCommitDecision = {
|
|
@@ -79,4 +79,5 @@ export declare function resolveAndClassifyNavigationCommit(options: {
|
|
|
79
79
|
targetHref: string;
|
|
80
80
|
type: "navigate" | "replace" | "traverse";
|
|
81
81
|
}): Promise<ClassifiedPendingNavigationCommit>;
|
|
82
|
-
//#endregion
|
|
82
|
+
//#endregion
|
|
83
|
+
export {};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AppElementsWire, normalizeAppElementsSlotBindings } from "./app-elements-wire.js";
|
|
2
2
|
import "./app-elements.js";
|
|
3
|
-
import { mergeElements } from "../shims/slot.js";
|
|
4
|
-
import { resolveAppPageRouteStateKey } from "./app-page-segment-state.js";
|
|
5
3
|
import { createBfcacheSegmentIdentityMap, preserveBfcacheIdsForMergedElements } from "./app-bfcache-identity.js";
|
|
6
4
|
import { NavigationTraceReasonCodes, NavigationTraceTransactionCodes, createNavigationTrace, prependNavigationTraceEntry } from "./navigation-trace.js";
|
|
5
|
+
import { mergeElements } from "../shims/slot.js";
|
|
7
6
|
import { createPendingNavigationCommit, resolvePendingNavigationCommitDispositionDecision } from "./app-browser-state.js";
|
|
7
|
+
import { resolveAppPageRouteStateKey } from "./app-page-segment-state.js";
|
|
8
8
|
//#region src/server/app-browser-visible-commit.ts
|
|
9
9
|
const approvedVisibleCommitBrand = Symbol("ApprovedVisibleCommit");
|
|
10
10
|
function hasSameServerTemplateSeedIdentity(id, currentSnapshot, nextSnapshot) {
|
|
@@ -105,7 +105,6 @@ function reduceApprovedVisibleCommitState(state, commit) {
|
|
|
105
105
|
elements: mergedElements,
|
|
106
106
|
interception: action.interception,
|
|
107
107
|
interceptionContext: action.interceptionContext,
|
|
108
|
-
layoutFlags: mergeLayoutFlags(state.layoutFlags, action.layoutFlags, preserveElementIds),
|
|
109
108
|
layoutIds: action.layoutIds,
|
|
110
109
|
navigationSnapshot: action.navigationSnapshot,
|
|
111
110
|
previousNextUrl: action.previousNextUrl,
|
|
@@ -145,15 +144,6 @@ function createVisibleCommitDecision(trace = createNavigationTrace(NavigationTra
|
|
|
145
144
|
trace
|
|
146
145
|
};
|
|
147
146
|
}
|
|
148
|
-
function mergeLayoutFlags(previousFlags, nextFlags, preserveElementIds) {
|
|
149
|
-
const merged = { ...nextFlags };
|
|
150
|
-
for (const id of preserveElementIds) {
|
|
151
|
-
if (Object.hasOwn(merged, id)) continue;
|
|
152
|
-
const value = previousFlags[id];
|
|
153
|
-
if (value) merged[id] = value;
|
|
154
|
-
}
|
|
155
|
-
return merged;
|
|
156
|
-
}
|
|
157
147
|
function createApprovedVisibleCommit(options) {
|
|
158
148
|
return {
|
|
159
149
|
[approvedVisibleCommitBrand]: true,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ClientReferenceChunks } from "../utils/client-reference-chunks.js";
|
|
2
|
+
//#region src/server/app-client-reference-manifest.d.ts
|
|
3
|
+
type ClientManifestEntry = {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
chunks: string[];
|
|
7
|
+
async?: boolean;
|
|
8
|
+
};
|
|
9
|
+
type ClientManifest = Record<string, ClientManifestEntry>;
|
|
10
|
+
/**
|
|
11
|
+
* Names the chunks each client reference loads in its Flight row, as Next.js
|
|
12
|
+
* does, so the browser loads a reference without a registry of every client
|
|
13
|
+
* reference in the app (see shims/internal/client-reference-loader.ts). Returns a
|
|
14
|
+
* function that wraps @vitejs/plugin-rsc's client manifest, which leaves the
|
|
15
|
+
* chunks empty. Without chunk data (development, or `rsc: false`) it returns
|
|
16
|
+
* the manifest unchanged.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createClientReferenceChunksManifest(referenceChunks: ClientReferenceChunks | undefined): (manifest: ClientManifest) => ClientManifest;
|
|
19
|
+
/**
|
|
20
|
+
* The SSR Flight client's consumer manifest. React's webpack binding loads the
|
|
21
|
+
* chunks a client reference's row names before requiring the reference, which
|
|
22
|
+
* only the browser can do, so SSR resolves each reference to itself without
|
|
23
|
+
* them. A null `moduleLoading` keeps React from preinitializing the chunks as
|
|
24
|
+
* classic scripts; SSR preloads them through @vitejs/plugin-rsc instead.
|
|
25
|
+
*/
|
|
26
|
+
export declare const ssrServerConsumerManifest: {
|
|
27
|
+
moduleMap: Record<string, Record<string, ClientManifestEntry>>;
|
|
28
|
+
moduleLoading: null;
|
|
29
|
+
};
|
|
30
|
+
//#endregion
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { toFlightChunks } from "../utils/client-reference-chunks.js";
|
|
2
|
+
//#region src/server/app-client-reference-manifest.ts
|
|
3
|
+
/**
|
|
4
|
+
* Names the chunks each client reference loads in its Flight row, as Next.js
|
|
5
|
+
* does, so the browser loads a reference without a registry of every client
|
|
6
|
+
* reference in the app (see shims/internal/client-reference-loader.ts). Returns a
|
|
7
|
+
* function that wraps @vitejs/plugin-rsc's client manifest, which leaves the
|
|
8
|
+
* chunks empty. Without chunk data (development, or `rsc: false`) it returns
|
|
9
|
+
* the manifest unchanged.
|
|
10
|
+
*/
|
|
11
|
+
function createClientReferenceChunksManifest(referenceChunks) {
|
|
12
|
+
if (!referenceChunks) return (manifest) => manifest;
|
|
13
|
+
const flightChunks = referenceChunks.modules.map(toFlightChunks);
|
|
14
|
+
return (manifest) => new Proxy(manifest, { get(target, id, receiver) {
|
|
15
|
+
const entry = Reflect.get(target, id, receiver);
|
|
16
|
+
if (typeof id !== "string" || !entry || typeof entry !== "object") return entry;
|
|
17
|
+
const reference = entry;
|
|
18
|
+
const index = Object.hasOwn(referenceChunks.references, reference.id) ? referenceChunks.references[reference.id] : void 0;
|
|
19
|
+
return index === void 0 ? reference : {
|
|
20
|
+
...reference,
|
|
21
|
+
chunks: flightChunks[index]
|
|
22
|
+
};
|
|
23
|
+
} });
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The SSR Flight client's consumer manifest. React's webpack binding loads the
|
|
27
|
+
* chunks a client reference's row names before requiring the reference, which
|
|
28
|
+
* only the browser can do, so SSR resolves each reference to itself without
|
|
29
|
+
* them. A null `moduleLoading` keeps React from preinitializing the chunks as
|
|
30
|
+
* classic scripts; SSR preloads them through @vitejs/plugin-rsc instead.
|
|
31
|
+
*/
|
|
32
|
+
const ssrServerConsumerManifest = {
|
|
33
|
+
moduleMap: new Proxy({}, { get(_target, id) {
|
|
34
|
+
if (typeof id !== "string") return void 0;
|
|
35
|
+
return new Proxy({}, { get(_exports, name) {
|
|
36
|
+
return typeof name === "string" ? {
|
|
37
|
+
id,
|
|
38
|
+
chunks: [],
|
|
39
|
+
name
|
|
40
|
+
} : void 0;
|
|
41
|
+
} });
|
|
42
|
+
} }),
|
|
43
|
+
moduleLoading: null
|
|
44
|
+
};
|
|
45
|
+
//#endregion
|
|
46
|
+
export { createClientReferenceChunksManifest, ssrServerConsumerManifest };
|
|
@@ -7,7 +7,11 @@ type ClientReferencePreloaderOptions = {
|
|
|
7
7
|
onPreloadError?: (id: string, error: unknown) => void;
|
|
8
8
|
};
|
|
9
9
|
type ClientReferencePreloader = {
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Load `referenceIds` in order, or every reference without them. The
|
|
12
|
+
* returned promise doesn't wait for those in `streamedIds`.
|
|
13
|
+
*/
|
|
14
|
+
preload: (referenceIds?: Iterable<string>, streamedIds?: ReadonlySet<string>) => Promise<void>;
|
|
11
15
|
};
|
|
12
16
|
/**
|
|
13
17
|
* The client references each App Router route preloads before SSR, generated
|
|
@@ -25,12 +29,28 @@ export type RouteClientReferences = {
|
|
|
25
29
|
routes: Readonly<Record<string, readonly number[]>>;
|
|
26
30
|
/** The files of a render without a route, such as a route-miss 404. */
|
|
27
31
|
routeless: readonly number[];
|
|
32
|
+
/**
|
|
33
|
+
* References whose SSR modules evaluate asynchronously (top-level await),
|
|
34
|
+
* which a render streams instead of waiting for.
|
|
35
|
+
*/
|
|
36
|
+
async: readonly number[];
|
|
37
|
+
};
|
|
38
|
+
/** The client references a render loads, and those it streams instead of waiting for. */
|
|
39
|
+
export type RouteClientReferenceSet = {
|
|
40
|
+
/**
|
|
41
|
+
* In import order: the `always` set, then each route file's references in
|
|
42
|
+
* the order its route files render.
|
|
43
|
+
*/
|
|
44
|
+
references: string[];
|
|
45
|
+
streamed: string[];
|
|
28
46
|
};
|
|
29
47
|
/**
|
|
30
48
|
* The client references a render of `routePattern` preloads, or of no route
|
|
31
|
-
* when it is null
|
|
32
|
-
*
|
|
49
|
+
* when it is null, and those it streams.
|
|
50
|
+
* Undefined, meaning every reference, without a plan or a route to look up,
|
|
51
|
+
* or for a pattern the plan doesn't know.
|
|
33
52
|
*/
|
|
34
|
-
export declare function resolveRouteClientReferences(plan: RouteClientReferences | null, routePattern: string | null | undefined):
|
|
53
|
+
export declare function resolveRouteClientReferences(plan: RouteClientReferences | null, routePattern: string | null | undefined): RouteClientReferenceSet | undefined;
|
|
35
54
|
export declare function createClientReferencePreloader(options: ClientReferencePreloaderOptions): ClientReferencePreloader;
|
|
36
|
-
//#endregion
|
|
55
|
+
//#endregion
|
|
56
|
+
export {};
|
|
@@ -3,8 +3,9 @@ import { shareIsolatePromise } from "./isolate-shared-promise.js";
|
|
|
3
3
|
const resolvedPreload = Promise.resolve();
|
|
4
4
|
/**
|
|
5
5
|
* The client references a render of `routePattern` preloads, or of no route
|
|
6
|
-
* when it is null
|
|
7
|
-
*
|
|
6
|
+
* when it is null, and those it streams.
|
|
7
|
+
* Undefined, meaning every reference, without a plan or a route to look up,
|
|
8
|
+
* or for a pattern the plan doesn't know.
|
|
8
9
|
*/
|
|
9
10
|
function resolveRouteClientReferences(plan, routePattern) {
|
|
10
11
|
if (!plan || routePattern === void 0) return void 0;
|
|
@@ -14,7 +15,18 @@ function resolveRouteClientReferences(plan, routePattern) {
|
|
|
14
15
|
else return;
|
|
15
16
|
const indices = new Set(plan.always);
|
|
16
17
|
for (const file of files) for (const index of plan.files[file]) indices.add(index);
|
|
17
|
-
|
|
18
|
+
const asyncIndices = new Set(plan.async);
|
|
19
|
+
const references = [];
|
|
20
|
+
const streamed = [];
|
|
21
|
+
for (const index of indices) {
|
|
22
|
+
const id = plan.references[index];
|
|
23
|
+
references.push(id);
|
|
24
|
+
if (asyncIndices.has(index)) streamed.push(id);
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
references,
|
|
28
|
+
streamed
|
|
29
|
+
};
|
|
18
30
|
}
|
|
19
31
|
function createClientReferencePreloader(options) {
|
|
20
32
|
let allReferencesPreloaded = false;
|
|
@@ -42,17 +54,20 @@ function createClientReferencePreloader(options) {
|
|
|
42
54
|
referencePreloadPromises.set(id, preloadPromise);
|
|
43
55
|
return preloadPromise;
|
|
44
56
|
}
|
|
45
|
-
function preloadReferenceSet(referenceIds, refs, clientRequire) {
|
|
57
|
+
function preloadReferenceSet(referenceIds, refs, clientRequire, streamedIds) {
|
|
46
58
|
const pending = [];
|
|
47
|
-
for (const id of referenceIds) if (Object.hasOwn(refs, id) && !preloadedReferences.has(id))
|
|
59
|
+
for (const id of referenceIds) if (Object.hasOwn(refs, id) && !preloadedReferences.has(id)) {
|
|
60
|
+
const loading = preloadReference(id, clientRequire);
|
|
61
|
+
if (!streamedIds?.has(id)) pending.push(loading);
|
|
62
|
+
}
|
|
48
63
|
if (pending.length === 0) return resolvedPreload;
|
|
49
64
|
return Promise.all(pending).then(() => {});
|
|
50
65
|
}
|
|
51
|
-
return { preload(referenceIds) {
|
|
66
|
+
return { preload(referenceIds, streamedIds) {
|
|
52
67
|
const refs = options.getReferences();
|
|
53
68
|
const clientRequire = options.getClientRequire();
|
|
54
69
|
if (!refs || !clientRequire) return resolvedPreload;
|
|
55
|
-
if (referenceIds) return preloadReferenceSet(referenceIds, refs, clientRequire);
|
|
70
|
+
if (referenceIds) return preloadReferenceSet(referenceIds, refs, clientRequire, streamedIds);
|
|
56
71
|
if (allReferencesPreloaded) return resolvedPreload;
|
|
57
72
|
if (allReferencesPreloadPromise) return allReferencesPreloadPromise;
|
|
58
73
|
allReferencesPreloadPromise = shareIsolatePromise(preloadReferenceSet(Object.keys(refs), refs, clientRequire).then(() => {
|