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
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { getOrCreateAls } from "../shims/internal/als-registry.js";
|
|
2
|
+
import { escapeHtmlAttr } from "./html.js";
|
|
3
|
+
import * as ReactDOM from "react-dom";
|
|
4
|
+
import { setOnClientReference } from "@vitejs/plugin-rsc/ssr";
|
|
5
|
+
//#region src/server/app-streamed-client-references.ts
|
|
6
|
+
/**
|
|
7
|
+
* Stream the client references an SSR render may show before they load, and
|
|
8
|
+
* link every client reference's scripts with the render's CSP nonce and the
|
|
9
|
+
* configured crossOrigin, and its stylesheets with the configured crossOrigin.
|
|
10
|
+
*
|
|
11
|
+
* A render waits for its route's client references before it starts, except
|
|
12
|
+
* those whose modules evaluate asynchronously (top-level await). Like Next.js,
|
|
13
|
+
* it streams those: React suspends on one until it loads, showing the nearest
|
|
14
|
+
* Suspense fallback first.
|
|
15
|
+
*
|
|
16
|
+
* plugin-rsc links a client module's stylesheets as the render reads its
|
|
17
|
+
* exports, so a streamed module would link them wherever it rendered once
|
|
18
|
+
* loaded, which depends on how long it took. Instead, a render links a
|
|
19
|
+
* streamed reference's stylesheets in the route's import order, as Next.js's
|
|
20
|
+
* Turbopack build does: just before the first reference after it links its
|
|
21
|
+
* own, or after the shell's stylesheets when none does. Its scripts link as the
|
|
22
|
+
* Flight stream names it.
|
|
23
|
+
*
|
|
24
|
+
* plugin-rsc hints a client module's scripts without the render's nonce, which
|
|
25
|
+
* a nonce-based CSP blocks, and always as anonymous, so under
|
|
26
|
+
* `crossOrigin: "use-credentials"` the browser fetches the module the page
|
|
27
|
+
* then imports without credentials. React keeps the first hint for each
|
|
28
|
+
* script, so a render with either hints them first, with both, as Next.js does.
|
|
29
|
+
* plugin-rsc also links its stylesheets as anonymous whatever the config, so a
|
|
30
|
+
* render links them first with the configured crossOrigin too. Unlike Next.js,
|
|
31
|
+
* it links them as anonymous when that's unset: Vite's preload helper always
|
|
32
|
+
* links a lazily imported module's stylesheets as anonymous, and a later page
|
|
33
|
+
* doing so would fail the CORS check on the no-cors copy the browser cached.
|
|
34
|
+
*/
|
|
35
|
+
const WRAPPED = Symbol.for("vinext.streamedClientReferences.wrapped");
|
|
36
|
+
const STYLESHEET_PRECEDENCE = "vite-rsc/client-reference";
|
|
37
|
+
const referenceDeps = /* @__PURE__ */ new Map();
|
|
38
|
+
const renderStorage = getOrCreateAls("vinext.streamedClientReferences");
|
|
39
|
+
function hintsScripts(render) {
|
|
40
|
+
return !!render.nonce || render.crossOrigin === "use-credentials";
|
|
41
|
+
}
|
|
42
|
+
function linkScripts(deps, render) {
|
|
43
|
+
const options = {
|
|
44
|
+
as: "script",
|
|
45
|
+
crossOrigin: render.crossOrigin,
|
|
46
|
+
fetchPriority: "low",
|
|
47
|
+
nonce: render.nonce
|
|
48
|
+
};
|
|
49
|
+
for (const href of deps.js) ReactDOM.preloadModule(href, options);
|
|
50
|
+
}
|
|
51
|
+
function linkStylesheets(hrefs, render) {
|
|
52
|
+
const options = {
|
|
53
|
+
as: "style",
|
|
54
|
+
crossOrigin: render.crossOrigin,
|
|
55
|
+
precedence: STYLESHEET_PRECEDENCE
|
|
56
|
+
};
|
|
57
|
+
for (const href of hrefs) ReactDOM.preinit(href, options);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Before reference `id` links its stylesheets, link those of the streamed
|
|
61
|
+
* references that come before it in import order.
|
|
62
|
+
*/
|
|
63
|
+
function linkStreamedStylesheetsBefore(render, id) {
|
|
64
|
+
const position = render.positions.get(id);
|
|
65
|
+
if (position === void 0) return;
|
|
66
|
+
while (render.unlinked.length > 0 && render.positions.get(render.unlinked[0]) < position) {
|
|
67
|
+
const hrefs = referenceDeps.get(render.unlinked.shift())?.css ?? [];
|
|
68
|
+
for (const href of hrefs) render.linkedStylesheets.add(href);
|
|
69
|
+
linkStylesheets(hrefs, render);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Wrap plugin-rsc's client-reference loader before any client reference
|
|
74
|
+
* loads; a production build calls this as its SSR entry starts. `asyncIds` are
|
|
75
|
+
* the references any route may stream, and `getLoader` returns a reference's
|
|
76
|
+
* own loader from the client-references module.
|
|
77
|
+
*/
|
|
78
|
+
function wrapClientReferenceRequire(asyncIds, getLoader) {
|
|
79
|
+
const load = globalThis.__vite_rsc_client_require__;
|
|
80
|
+
if (typeof load !== "function" || WRAPPED in load) return;
|
|
81
|
+
setOnClientReference(({ id, deps }) => {
|
|
82
|
+
referenceDeps.set(id, deps);
|
|
83
|
+
const render = renderStorage.getStore();
|
|
84
|
+
if (render && !render.streamed.has(id)) for (const href of deps.css) render.linkedStylesheets.add(href);
|
|
85
|
+
});
|
|
86
|
+
const loads = /* @__PURE__ */ new Map();
|
|
87
|
+
const wrapped = (id) => {
|
|
88
|
+
const render = renderStorage.getStore();
|
|
89
|
+
if (render?.streamed.has(id)) {
|
|
90
|
+
const deps = referenceDeps.get(id);
|
|
91
|
+
if (deps) linkScripts(deps, render);
|
|
92
|
+
}
|
|
93
|
+
let loading = loads.get(id);
|
|
94
|
+
if (!loading) {
|
|
95
|
+
const loader = asyncIds.has(id) ? getLoader(id) : void 0;
|
|
96
|
+
loading = Promise.all([load(id), loader?.()]).then(([mod, exports]) => new Proxy(mod, { get(target, key, receiver) {
|
|
97
|
+
const render = renderStorage.getStore();
|
|
98
|
+
if (render) {
|
|
99
|
+
if (exports !== void 0 && render.streamed.has(id)) return Reflect.get(exports, key);
|
|
100
|
+
linkStreamedStylesheetsBefore(render, id);
|
|
101
|
+
const deps = referenceDeps.get(id);
|
|
102
|
+
if (deps && key in target) {
|
|
103
|
+
linkStylesheets(deps.css, render);
|
|
104
|
+
if (hintsScripts(render)) linkScripts(deps, render);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return Reflect.get(target, key, receiver);
|
|
108
|
+
} }));
|
|
109
|
+
loads.set(id, loading);
|
|
110
|
+
}
|
|
111
|
+
return loading;
|
|
112
|
+
};
|
|
113
|
+
Object.defineProperty(wrapped, WRAPPED, { value: true });
|
|
114
|
+
globalThis.__vite_rsc_client_require__ = wrapped;
|
|
115
|
+
}
|
|
116
|
+
function createStreamedClientReferences(route, nonce, crossOrigin) {
|
|
117
|
+
const streamed = new Set(route?.streamed);
|
|
118
|
+
return {
|
|
119
|
+
nonce,
|
|
120
|
+
crossOrigin,
|
|
121
|
+
streamed,
|
|
122
|
+
positions: new Map(route?.references.map((id, index) => [id, index])),
|
|
123
|
+
unlinked: route?.references.filter((id) => streamed.has(id)) ?? [],
|
|
124
|
+
linkedStylesheets: /* @__PURE__ */ new Set()
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Forget the stylesheets a discarded render linked, so the render that
|
|
129
|
+
* replaces it links them again.
|
|
130
|
+
*/
|
|
131
|
+
function resetStreamedClientReferences(render, route) {
|
|
132
|
+
if (!render) return;
|
|
133
|
+
render.unlinked = route?.references.filter((id) => render.streamed.has(id)) ?? [];
|
|
134
|
+
render.linkedStylesheets.clear();
|
|
135
|
+
}
|
|
136
|
+
/** Run a render, and the Flight stream it reads, with its streamed references. */
|
|
137
|
+
function runWithStreamedClientReferences(render, fn) {
|
|
138
|
+
return renderStorage.run(render, fn);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* The `<head>` links of the streamed stylesheets a render's shell left
|
|
142
|
+
* unlinked, those of streamed references after every reference it rendered.
|
|
143
|
+
*/
|
|
144
|
+
function renderStreamedStylesheets(render) {
|
|
145
|
+
const hrefs = /* @__PURE__ */ new Set();
|
|
146
|
+
for (const id of render.unlinked.splice(0)) for (const href of referenceDeps.get(id)?.css ?? []) if (!render.linkedStylesheets.has(href)) hrefs.add(href);
|
|
147
|
+
const crossOrigin = render.crossOrigin === "use-credentials" ? "use-credentials" : "";
|
|
148
|
+
let html = "";
|
|
149
|
+
for (const href of hrefs) {
|
|
150
|
+
render.linkedStylesheets.add(href);
|
|
151
|
+
html += `<link rel="stylesheet" href="${escapeHtmlAttr(href)}" data-precedence="${STYLESHEET_PRECEDENCE}" crossorigin="${crossOrigin}"/>`;
|
|
152
|
+
}
|
|
153
|
+
return html;
|
|
154
|
+
}
|
|
155
|
+
//#endregion
|
|
156
|
+
export { createStreamedClientReferences, renderStreamedStylesheets, resetStreamedClientReferences, runWithStreamedClientReferences, wrapClientReferenceRequire };
|
|
@@ -7,7 +7,17 @@ export type VisitedResponseCacheEntry = {
|
|
|
7
7
|
createdAt: number;
|
|
8
8
|
elements?: AppElements;
|
|
9
9
|
expiresAt: number;
|
|
10
|
+
/**
|
|
11
|
+
* Stored by initial hydration, which Next.js keeps out of its route cache
|
|
12
|
+
* (outside Cache Components), so a visible Link still prefetches the URL.
|
|
13
|
+
*/
|
|
14
|
+
fromHydration?: true;
|
|
10
15
|
mountedSlotsHeader: string | null;
|
|
16
|
+
/**
|
|
17
|
+
* A history restore revoked navigation reuse. The entry stays only as the
|
|
18
|
+
* BFCache that a full prefetch reads (see `findVisitedResponseForFullPrefetch`).
|
|
19
|
+
*/
|
|
20
|
+
navigationReuseRevoked?: true;
|
|
11
21
|
params: Record<string, string | string[]>;
|
|
12
22
|
response: CachedRscResponse;
|
|
13
23
|
reuseAfterHistoryRestore: boolean;
|
|
@@ -18,6 +28,7 @@ export declare function hasNavigationResponseHistoryLifetime(snapshot: CachedRsc
|
|
|
18
28
|
export declare function createVisitedResponseCacheEntry(options: {
|
|
19
29
|
elements?: AppElements;
|
|
20
30
|
fallbackTtlMs?: number;
|
|
31
|
+
fromHydration?: boolean;
|
|
21
32
|
now: number;
|
|
22
33
|
mountedSlotsHeader?: string | null;
|
|
23
34
|
params: Record<string, string | string[]>;
|
|
@@ -34,5 +45,30 @@ export declare function findVisitedResponseCacheEntry(cache: Map<string, Visited
|
|
|
34
45
|
} | null;
|
|
35
46
|
export declare function deleteVisitedResponseCacheEntry(cache: Map<string, VisitedResponseCacheEntry>, rscUrl: string, interceptionContext: string | null): boolean;
|
|
36
47
|
export declare function deleteAllVisitedResponseCacheEntries(cache: Map<string, VisitedResponseCacheEntry>, rscUrl: string, interceptionContext: string | null): number;
|
|
37
|
-
export declare function
|
|
38
|
-
|
|
48
|
+
export declare function revokeHistoryRestoreNavigationReuse(cache: Map<string, VisitedResponseCacheEntry>): void;
|
|
49
|
+
/**
|
|
50
|
+
* Next.js fulfills a full prefetch from the BFCache, which holds the data of
|
|
51
|
+
* every navigation, while it is within the static stale time of that
|
|
52
|
+
* navigation (`attemptToFulfillDynamicSegmentFromBFCache`). Navigation reuse
|
|
53
|
+
* that a history restore revoked does not matter here.
|
|
54
|
+
*
|
|
55
|
+
* Next.js dates a BFCache entry from its navigation, even one that committed an
|
|
56
|
+
* older prefetched payload. Its re-prefetch of an expired route still waits for
|
|
57
|
+
* a fresh route tree first, so a navigation made then fetches fresh data
|
|
58
|
+
* (`client-cache.experimental.test.ts`, "re-use the cache for 5 minutes").
|
|
59
|
+
* vinext seeds the full prefetch synchronously, so dating it from the
|
|
60
|
+
* navigation would replay that expired payload. It dates from when the payload
|
|
61
|
+
* arrived instead, which only costs a request Next.js might have saved.
|
|
62
|
+
*
|
|
63
|
+
* The match follows direct visited reuse: an entry with committed elements
|
|
64
|
+
* replays them, because its raw response may be skip-pruned against the tree
|
|
65
|
+
* it was requested from; otherwise the request-time or response-declared slot
|
|
66
|
+
* context must match.
|
|
67
|
+
*/
|
|
68
|
+
export declare function findVisitedResponseForFullPrefetch(cache: Map<string, VisitedResponseCacheEntry>, rscUrls: readonly string[], interceptionContext: string | null, mountedSlotsHeader: string | null): {
|
|
69
|
+
navigatedAt: number;
|
|
70
|
+
navigationFreshUntil: number | null;
|
|
71
|
+
response: CachedRscResponse;
|
|
72
|
+
} | null;
|
|
73
|
+
//#endregion
|
|
74
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { parseRscRequestPath, stripRscCacheBustingSearchParam } from "./app-rsc-cache-busting.js";
|
|
1
2
|
import { AppElementsWire } from "./app-elements-wire.js";
|
|
2
3
|
import "./app-elements.js";
|
|
3
|
-
import { parseRscRequestPath, stripRscCacheBustingSearchParam } from "./app-rsc-cache-busting.js";
|
|
4
4
|
import { resolveCachedRscResponseExpiresAt } from "../shims/navigation.js";
|
|
5
5
|
//#region src/server/app-visited-response-cache.ts
|
|
6
6
|
const VISITED_RESPONSE_CACHE_TTL = 3e5;
|
|
@@ -14,6 +14,7 @@ function createVisitedResponseCacheEntry(options) {
|
|
|
14
14
|
createdAt: options.now,
|
|
15
15
|
...options.elements ? { elements: options.elements } : {},
|
|
16
16
|
expiresAt: resolveCachedRscResponseExpiresAt(options.now, options.response, options.fallbackTtlMs ?? 3e5),
|
|
17
|
+
...options.fromHydration === true ? { fromHydration: true } : {},
|
|
17
18
|
mountedSlotsHeader: options.mountedSlotsHeader ?? null,
|
|
18
19
|
params: options.params,
|
|
19
20
|
response: options.response,
|
|
@@ -75,11 +76,51 @@ function deleteAllVisitedResponseCacheEntries(cache, rscUrl, interceptionContext
|
|
|
75
76
|
while (deleteVisitedResponseCacheEntry(cache, rscUrl, interceptionContext)) deleted++;
|
|
76
77
|
return deleted;
|
|
77
78
|
}
|
|
78
|
-
function
|
|
79
|
-
for (const
|
|
79
|
+
function revokeHistoryRestoreNavigationReuse(cache) {
|
|
80
|
+
for (const entry of cache.values()) {
|
|
80
81
|
if (entry.reuseAfterHistoryRestore) continue;
|
|
81
|
-
|
|
82
|
+
entry.navigationReuseRevoked = true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Next.js fulfills a full prefetch from the BFCache, which holds the data of
|
|
87
|
+
* every navigation, while it is within the static stale time of that
|
|
88
|
+
* navigation (`attemptToFulfillDynamicSegmentFromBFCache`). Navigation reuse
|
|
89
|
+
* that a history restore revoked does not matter here.
|
|
90
|
+
*
|
|
91
|
+
* Next.js dates a BFCache entry from its navigation, even one that committed an
|
|
92
|
+
* older prefetched payload. Its re-prefetch of an expired route still waits for
|
|
93
|
+
* a fresh route tree first, so a navigation made then fetches fresh data
|
|
94
|
+
* (`client-cache.experimental.test.ts`, "re-use the cache for 5 minutes").
|
|
95
|
+
* vinext seeds the full prefetch synchronously, so dating it from the
|
|
96
|
+
* navigation would replay that expired payload. It dates from when the payload
|
|
97
|
+
* arrived instead, which only costs a request Next.js might have saved.
|
|
98
|
+
*
|
|
99
|
+
* The match follows direct visited reuse: an entry with committed elements
|
|
100
|
+
* replays them, because its raw response may be skip-pruned against the tree
|
|
101
|
+
* it was requested from; otherwise the request-time or response-declared slot
|
|
102
|
+
* context must match.
|
|
103
|
+
*/
|
|
104
|
+
function findVisitedResponseForFullPrefetch(cache, rscUrls, interceptionContext, mountedSlotsHeader) {
|
|
105
|
+
for (const rscUrl of rscUrls) {
|
|
106
|
+
const match = findVisitedResponseCacheEntry(cache, rscUrl, interceptionContext);
|
|
107
|
+
if (match === null) continue;
|
|
108
|
+
const { entry } = match;
|
|
109
|
+
if (entry.elements === void 0 && entry.mountedSlotsHeader !== mountedSlotsHeader && (entry.response.mountedSlotsHeader ?? null) !== mountedSlotsHeader) continue;
|
|
110
|
+
const navigationFresh = entry.fromHydration !== true && entry.navigationReuseRevoked !== true && (entry.elements !== void 0 || entry.mountedSlotsHeader === mountedSlotsHeader) && isVisitedResponseCacheEntryFresh(entry, {
|
|
111
|
+
navigationKind: "navigate",
|
|
112
|
+
now: Date.now()
|
|
113
|
+
});
|
|
114
|
+
return {
|
|
115
|
+
navigatedAt: entry.response.receivedAt ?? entry.createdAt,
|
|
116
|
+
navigationFreshUntil: navigationFresh ? entry.expiresAt : null,
|
|
117
|
+
response: entry.elements === void 0 ? entry.response : {
|
|
118
|
+
...entry.response,
|
|
119
|
+
preparedElements: entry.elements
|
|
120
|
+
}
|
|
121
|
+
};
|
|
82
122
|
}
|
|
123
|
+
return null;
|
|
83
124
|
}
|
|
84
125
|
//#endregion
|
|
85
|
-
export { MAX_TRAVERSAL_CACHE_TTL, VISITED_RESPONSE_CACHE_TTL, createVisitedResponseCacheEntry, deleteAllVisitedResponseCacheEntries,
|
|
126
|
+
export { MAX_TRAVERSAL_CACHE_TTL, VISITED_RESPONSE_CACHE_TTL, createVisitedResponseCacheEntry, deleteAllVisitedResponseCacheEntries, deleteVisitedResponseCacheEntry, findVisitedResponseCacheEntry, findVisitedResponseForFullPrefetch, hasNavigationResponseHistoryLifetime, isVisitedResponseCacheEntryFresh, revokeHistoryRestoreNavigationReuse };
|
|
@@ -3,7 +3,7 @@ import { VinextResponseStageCacheability, VinextResponseStageDispatchOptions, Vi
|
|
|
3
3
|
import { AppRscRenderMode } from "./app-rsc-render-mode.js";
|
|
4
4
|
import { TrustedPrerenderState } from "./prerender-route-params.js";
|
|
5
5
|
//#region src/server/app-worker-stages.d.ts
|
|
6
|
-
export declare const APP_WORKER_RESPONSE_STAGE_PROTOCOL_VERSION =
|
|
6
|
+
export declare const APP_WORKER_RESPONSE_STAGE_PROTOCOL_VERSION = 13;
|
|
7
7
|
export declare const APP_METADATA_RESPONSE_STAGE_NO_MATCH_HEADER = "x-vinext-app-metadata-stage-no-match";
|
|
8
8
|
type AppPageParams = Record<string, string | string[]>;
|
|
9
9
|
type AppWorkerResponseStageEnvelope = {
|
|
@@ -66,7 +66,7 @@ type AppMetadataWorkerResponseStageProps = AppWorkerResponseStageEnvelope & {
|
|
|
66
66
|
resolvedUrl: string;
|
|
67
67
|
routePathname: string;
|
|
68
68
|
};
|
|
69
|
-
type HybridPagesWorkerResponseStageProps = AppWorkerResponseStageEnvelope & {
|
|
69
|
+
export type HybridPagesWorkerResponseStageProps = AppWorkerResponseStageEnvelope & {
|
|
70
70
|
kind: "hybrid-pages";
|
|
71
71
|
allowRscDocumentFallback: boolean;
|
|
72
72
|
appRouteMatch: {
|
|
@@ -83,19 +83,41 @@ type HybridPagesWorkerResponseStageProps = AppWorkerResponseStageEnvelope & {
|
|
|
83
83
|
resourceKind: "api" | "page";
|
|
84
84
|
requestUrl: string;
|
|
85
85
|
resolvedUrl: string;
|
|
86
|
+
/**
|
|
87
|
+
* The shared cache entry answers every host, as Next.js keys a static page
|
|
88
|
+
* by its path, so a getInitialProps render of a page without
|
|
89
|
+
* getStaticProps, which reads the request, is not stored.
|
|
90
|
+
*/
|
|
91
|
+
sharedAcrossHosts: boolean;
|
|
86
92
|
};
|
|
87
93
|
export type AppWorkerResponseStageProps = AppFullRequestWorkerResponseStageProps | AppMatchedWorkerResponseStageProps | AppMetadataWorkerResponseStageProps | AppNotFoundWorkerResponseStageProps | HybridPagesWorkerResponseStageProps;
|
|
88
94
|
export type DispatchAppWorkerResponseStage = VinextResponseStageTransport<AppWorkerResponseStageProps>;
|
|
89
95
|
export type RenderAppWorkerResponseStageLocally = (request: Request, props: AppWorkerResponseStageProps) => Promise<Response>;
|
|
90
96
|
/** Normalize a shared App page HEAD request onto its method-invariant GET representation. */
|
|
91
97
|
export declare function prepareSharedAppPageDispatch(request: Request, cache: VinextResponseStageDispatchOptions["cache"]): Request;
|
|
98
|
+
type SharedAppCacheIdentity = NonNullable<VinextResponseStageDispatchOptions["cacheIdentity"]>;
|
|
99
|
+
/** App Router dispatches whose shared cache entry every host can reuse. */
|
|
100
|
+
export type SharedAppCacheIdentityProps = Exclude<AppWorkerResponseStageProps, {
|
|
101
|
+
kind: "app-full-request" | "hybrid-pages";
|
|
102
|
+
}>;
|
|
103
|
+
/**
|
|
104
|
+
* Build the cache identity of a shared App Router dispatch: the dispatched
|
|
105
|
+
* request and props under the cache identity origin.
|
|
106
|
+
*/
|
|
107
|
+
export declare function createSharedAppCacheIdentity(request: Request, props: SharedAppCacheIdentityProps): SharedAppCacheIdentity;
|
|
92
108
|
/**
|
|
93
109
|
* Build the query-free cache identity of a shared App page dispatch. The user
|
|
94
110
|
* query leaves both the URL and `resolvedUrl`; the `.rsc` suffix, an RSC
|
|
95
111
|
* request's validated `_rsc`, and the render mode stay because they select the
|
|
96
112
|
* representation. HTML identities also drop the RSC selector headers.
|
|
97
113
|
*/
|
|
98
|
-
export declare function createSharedAppPageCacheIdentity(request: Request, props: AppMatchedWorkerResponseStageProps):
|
|
114
|
+
export declare function createSharedAppPageCacheIdentity(request: Request, props: AppMatchedWorkerResponseStageProps): SharedAppCacheIdentity;
|
|
115
|
+
/**
|
|
116
|
+
* Build the cache identity of a shared hybrid Pages page dispatch: the
|
|
117
|
+
* dispatched request and props under `origin`, so every host that names it
|
|
118
|
+
* shares one entry.
|
|
119
|
+
*/
|
|
120
|
+
export declare function createSharedHybridPagesCacheIdentity(request: Request, props: HybridPagesWorkerResponseStageProps, origin: string): SharedAppCacheIdentity;
|
|
99
121
|
/**
|
|
100
122
|
* Drop the user query from an App page dispatch URL and its `resolvedUrl`,
|
|
101
123
|
* keeping an RSC request's validated `_rsc`, the rule the query-free cache
|
|
@@ -114,4 +136,5 @@ export declare function withoutAppPageDispatchQuery(requestUrl: string, props: A
|
|
|
114
136
|
*/
|
|
115
137
|
export declare function isStaticCandidateAppPageDispatch(projection: CacheabilityManifest, request: Request, props: AppMatchedWorkerResponseStageProps): boolean;
|
|
116
138
|
export declare function isAppWorkerResponseStageProps(value: unknown): value is AppWorkerResponseStageProps;
|
|
117
|
-
//#endregion
|
|
139
|
+
//#endregion
|
|
140
|
+
export {};
|
|
@@ -2,14 +2,34 @@ import { VINEXT_RSC_VARY_HEADER } from "./app-rsc-vary.js";
|
|
|
2
2
|
import { cacheabilityManifestPageState, cacheabilityRequestIdentity, cacheabilityRoutePathname } from "./cacheability-manifest.js";
|
|
3
3
|
import { keepOnlyValidatedRscCacheBustingSearchParam } from "./app-rsc-cache-busting.js";
|
|
4
4
|
import { isTrustedPrerenderState } from "./prerender-route-params.js";
|
|
5
|
+
import { VINEXT_CACHE_IDENTITY_ORIGIN, withCacheIdentityOrigin } from "./multi-stage.js";
|
|
5
6
|
//#region src/server/app-worker-stages.ts
|
|
6
|
-
const APP_WORKER_RESPONSE_STAGE_PROTOCOL_VERSION =
|
|
7
|
+
const APP_WORKER_RESPONSE_STAGE_PROTOCOL_VERSION = 13;
|
|
7
8
|
const APP_METADATA_RESPONSE_STAGE_NO_MATCH_HEADER = "x-vinext-app-metadata-stage-no-match";
|
|
8
9
|
const STATIC_FILE_SIGNAL_TOKEN_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
9
10
|
/** Normalize a shared App page HEAD request onto its method-invariant GET representation. */
|
|
10
11
|
function prepareSharedAppPageDispatch(request, cache) {
|
|
11
12
|
return cache !== "bypass" && request.method.toUpperCase() === "HEAD" ? new Request(request, { method: "GET" }) : request;
|
|
12
13
|
}
|
|
14
|
+
function sharedAppCacheIdentity(requestUrl, init, props) {
|
|
15
|
+
return {
|
|
16
|
+
props: {
|
|
17
|
+
...props,
|
|
18
|
+
requestOrigin: VINEXT_CACHE_IDENTITY_ORIGIN
|
|
19
|
+
},
|
|
20
|
+
request: new Request(withCacheIdentityOrigin(requestUrl), init)
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Build the cache identity of a shared App Router dispatch: the dispatched
|
|
25
|
+
* request and props under the cache identity origin.
|
|
26
|
+
*/
|
|
27
|
+
function createSharedAppCacheIdentity(request, props) {
|
|
28
|
+
return sharedAppCacheIdentity(request.url, {
|
|
29
|
+
headers: new Headers(request.headers),
|
|
30
|
+
method: request.method
|
|
31
|
+
}, props);
|
|
32
|
+
}
|
|
13
33
|
/**
|
|
14
34
|
* Build the query-free cache identity of a shared App page dispatch. The user
|
|
15
35
|
* query leaves both the URL and `resolvedUrl`; the `.rsc` suffix, an RSC
|
|
@@ -21,10 +41,29 @@ function createSharedAppPageCacheIdentity(request, props) {
|
|
|
21
41
|
const headers = new Headers(request.headers);
|
|
22
42
|
if (!props.isRscRequest) for (const name of VINEXT_RSC_VARY_HEADER.split(",")) headers.delete(name.trim());
|
|
23
43
|
return {
|
|
24
|
-
|
|
25
|
-
request: new Request(queryFree.url, {
|
|
44
|
+
...sharedAppCacheIdentity(queryFree.url, {
|
|
26
45
|
headers,
|
|
27
46
|
method: request.method
|
|
47
|
+
}, queryFree.props),
|
|
48
|
+
queryFree: true
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Build the cache identity of a shared hybrid Pages page dispatch: the
|
|
53
|
+
* dispatched request and props under `origin`, so every host that names it
|
|
54
|
+
* shares one entry.
|
|
55
|
+
*/
|
|
56
|
+
function createSharedHybridPagesCacheIdentity(request, props, origin) {
|
|
57
|
+
return {
|
|
58
|
+
props: {
|
|
59
|
+
...props,
|
|
60
|
+
requestOrigin: origin,
|
|
61
|
+
requestUrl: withCacheIdentityOrigin(props.requestUrl, origin)
|
|
62
|
+
},
|
|
63
|
+
regenerateFromDispatch: true,
|
|
64
|
+
request: new Request(withCacheIdentityOrigin(request.url, origin), {
|
|
65
|
+
headers: new Headers(request.headers),
|
|
66
|
+
method: request.method
|
|
28
67
|
})
|
|
29
68
|
};
|
|
30
69
|
}
|
|
@@ -80,12 +119,12 @@ function isCanonicalHttpOrigin(value) {
|
|
|
80
119
|
function isAppWorkerResponseStageProps(value) {
|
|
81
120
|
if (!value || typeof value !== "object") return false;
|
|
82
121
|
const props = value;
|
|
83
|
-
if (props.protocolVersion !==
|
|
122
|
+
if (props.protocolVersion !== 13 || props.buildId !== null && typeof props.buildId !== "string" || !isResponseStageCacheability(props.cacheability) || props.draftModeCookie !== null && typeof props.draftModeCookie !== "string" || props.middlewareCookieOverlay !== null && typeof props.middlewareCookieOverlay !== "string" || !isCanonicalHttpOrigin(props.requestOrigin) || props.scriptNonce !== null && typeof props.scriptNonce !== "string") return false;
|
|
84
123
|
if (props.kind === "app-full-request") return typeof props.headRequest === "boolean" && typeof props.prerenderDiscovery === "boolean" && typeof props.staticFileSignalToken === "string" && STATIC_FILE_SIGNAL_TOKEN_RE.test(props.staticFileSignalToken) && (props.trustedPrerenderState === null || isTrustedPrerenderState(props.trustedPrerenderState));
|
|
85
124
|
if (props.kind === "hybrid-pages") {
|
|
86
125
|
const hybrid = props;
|
|
87
126
|
const appRouteMatch = hybrid.appRouteMatch;
|
|
88
|
-
return typeof hybrid.allowRscDocumentFallback === "boolean" && (appRouteMatch === null || typeof appRouteMatch === "object" && typeof appRouteMatch.isDynamic === "boolean" && typeof appRouteMatch.pattern === "string" && appRouteMatch.pattern.startsWith("/")) && typeof hybrid.canonicalPathname === "string" && hybrid.canonicalPathname.startsWith("/") && typeof hybrid.cleanPathname === "string" && hybrid.cleanPathname.startsWith("/") && typeof hybrid.isDataRequest === "boolean" && typeof hybrid.isRscRequest === "boolean" && (hybrid.matchKind === "dynamic" || hybrid.matchKind === "static") && (hybrid.preHandlerHeaders === null || isSerializedHeaders(hybrid.preHandlerHeaders)) && (hybrid.resourceKind === "api" || hybrid.resourceKind === "page") && typeof hybrid.requestUrl === "string" && typeof hybrid.resolvedUrl === "string" && hybrid.resolvedUrl.startsWith("/");
|
|
127
|
+
return typeof hybrid.allowRscDocumentFallback === "boolean" && (appRouteMatch === null || typeof appRouteMatch === "object" && typeof appRouteMatch.isDynamic === "boolean" && typeof appRouteMatch.pattern === "string" && appRouteMatch.pattern.startsWith("/")) && typeof hybrid.canonicalPathname === "string" && hybrid.canonicalPathname.startsWith("/") && typeof hybrid.cleanPathname === "string" && hybrid.cleanPathname.startsWith("/") && typeof hybrid.isDataRequest === "boolean" && typeof hybrid.isRscRequest === "boolean" && (hybrid.matchKind === "dynamic" || hybrid.matchKind === "static") && (hybrid.preHandlerHeaders === null || isSerializedHeaders(hybrid.preHandlerHeaders)) && (hybrid.resourceKind === "api" || hybrid.resourceKind === "page") && typeof hybrid.requestUrl === "string" && typeof hybrid.resolvedUrl === "string" && hybrid.resolvedUrl.startsWith("/") && typeof hybrid.sharedAcrossHosts === "boolean";
|
|
89
128
|
}
|
|
90
129
|
if (props.kind === "app-metadata" || props.kind === "app-not-found") {
|
|
91
130
|
const special = props;
|
|
@@ -102,4 +141,4 @@ function isResponseStageCacheability(value) {
|
|
|
102
141
|
return (cacheability.probeMode === null || cacheability.probeMode === "probe" || cacheability.probeMode === "identity") && (cacheability.policyHeaders === null || Array.isArray(cacheability.policyHeaders) && cacheability.policyHeaders.every((entry) => Array.isArray(entry) && entry.length === 2 && typeof entry[0] === "string" && typeof entry[1] === "string")) && (cacheability.representation === void 0 || cacheability.representation === "app-route" || cacheability.representation === "html" || cacheability.representation === "pages-data" || cacheability.representation === "rsc-full" || cacheability.representation === "rsc-loading-shell") && typeof cacheability.resolvedRoutePathname === "string" && cacheability.resolvedRoutePathname.startsWith("/");
|
|
103
142
|
}
|
|
104
143
|
//#endregion
|
|
105
|
-
export { APP_METADATA_RESPONSE_STAGE_NO_MATCH_HEADER, APP_WORKER_RESPONSE_STAGE_PROTOCOL_VERSION, createSharedAppPageCacheIdentity, isAppWorkerResponseStageProps, isStaticCandidateAppPageDispatch, prepareSharedAppPageDispatch, withoutAppPageDispatchQuery };
|
|
144
|
+
export { APP_METADATA_RESPONSE_STAGE_NO_MATCH_HEADER, APP_WORKER_RESPONSE_STAGE_PROTOCOL_VERSION, createSharedAppCacheIdentity, createSharedAppPageCacheIdentity, createSharedHybridPagesCacheIdentity, isAppWorkerResponseStageProps, isStaticCandidateAppPageDispatch, prepareSharedAppPageDispatch, withoutAppPageDispatchQuery };
|
|
@@ -11,7 +11,6 @@ export type ArtifactCompatibilityEnvelope = Readonly<{
|
|
|
11
11
|
rootBoundaryId: string | null;
|
|
12
12
|
renderEpoch: string | null;
|
|
13
13
|
}>;
|
|
14
|
-
export declare const ARTIFACT_COMPATIBILITY_PROOF_FIELDS: readonly (keyof ArtifactCompatibilityEnvelope)[];
|
|
15
14
|
type ArtifactCompatibilityEnvelopeInput = Readonly<{
|
|
16
15
|
graphVersion?: string | null;
|
|
17
16
|
deploymentVersion?: string | null;
|
|
@@ -50,4 +49,5 @@ export declare function createArtifactCompatibilityEnvelope(input?: ArtifactComp
|
|
|
50
49
|
export declare function createArtifactCompatibilityGraphVersion(input: ArtifactCompatibilityGraphVersionInput): string;
|
|
51
50
|
export declare function parseArtifactCompatibilityEnvelope(value: unknown): ArtifactCompatibilityEnvelope | null;
|
|
52
51
|
export declare function evaluateArtifactCompatibility(current: ArtifactCompatibilityEnvelope, candidate: ArtifactCompatibilityEnvelope, options?: ArtifactCompatibilityEvaluationOptions): ArtifactCompatibilityDecision;
|
|
53
|
-
//#endregion
|
|
52
|
+
//#endregion
|
|
53
|
+
export {};
|
|
@@ -4,15 +4,6 @@ import { fnv1a64 } from "../utils/hash.js";
|
|
|
4
4
|
const ARTIFACT_COMPATIBILITY_SCHEMA_VERSION = 1;
|
|
5
5
|
const APP_ELEMENTS_SCHEMA_VERSION = 1;
|
|
6
6
|
const RSC_PAYLOAD_SCHEMA_VERSION = 1;
|
|
7
|
-
const ARTIFACT_COMPATIBILITY_PROOF_FIELDS = [
|
|
8
|
-
"schemaVersion",
|
|
9
|
-
"graphVersion",
|
|
10
|
-
"deploymentVersion",
|
|
11
|
-
"appElementsSchemaVersion",
|
|
12
|
-
"rscPayloadSchemaVersion",
|
|
13
|
-
"rootBoundaryId",
|
|
14
|
-
"renderEpoch"
|
|
15
|
-
];
|
|
16
7
|
function createArtifactCompatibilityEnvelope(input = {}) {
|
|
17
8
|
return {
|
|
18
9
|
schemaVersion: 1,
|
|
@@ -88,4 +79,4 @@ function evaluateArtifactCompatibility(current, candidate, options = {}) {
|
|
|
88
79
|
return { kind: "compatible" };
|
|
89
80
|
}
|
|
90
81
|
//#endregion
|
|
91
|
-
export { APP_ELEMENTS_SCHEMA_VERSION,
|
|
82
|
+
export { APP_ELEMENTS_SCHEMA_VERSION, ARTIFACT_COMPATIBILITY_SCHEMA_VERSION, RSC_PAYLOAD_SCHEMA_VERSION, createArtifactCompatibilityEnvelope, createArtifactCompatibilityGraphVersion, evaluateArtifactCompatibility, parseArtifactCompatibilityEnvelope };
|
|
@@ -2,4 +2,5 @@
|
|
|
2
2
|
type VinextCacheState = "HIT" | "MISS" | "STALE" | "STATIC";
|
|
3
3
|
export declare function setCacheStateHeaders(headers: Headers, cacheState: VinextCacheState): void;
|
|
4
4
|
export declare function buildCacheStateHeaders(cacheState: VinextCacheState): Record<string, string>;
|
|
5
|
-
//#endregion
|
|
5
|
+
//#endregion
|
|
6
|
+
export {};
|