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
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS } from "./client-reuse-manifest.js";
|
|
2
|
-
import { AppRouterState } from "./app-browser-state.js";
|
|
3
|
-
//#region src/server/app-browser-client-reuse-manifest.d.ts
|
|
4
|
-
type ClientReuseManifestLimits = typeof DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS;
|
|
5
|
-
type VisibleAppState = Pick<AppRouterState, "elements" | "visibleCommitVersion">;
|
|
6
|
-
type CreateClientReuseManifestHeaderOptions = Readonly<{
|
|
7
|
-
limits?: ClientReuseManifestLimits;
|
|
8
|
-
}>;
|
|
9
|
-
export declare function createClientReuseManifestHeaderFromVisibleAppState(state: VisibleAppState, options?: CreateClientReuseManifestHeaderOptions): string | null;
|
|
10
|
-
//#endregion
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { AppElementsWire } from "./app-elements-wire.js";
|
|
2
|
-
import "./app-elements.js";
|
|
3
|
-
import { DEFAULT_CACHE_VARIANT_BUDGET, buildCacheVariantWithRouteBudget } from "./cache-proof.js";
|
|
4
|
-
import { DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS, countUtf8Bytes, serializeClientReuseManifest } from "./client-reuse-manifest.js";
|
|
5
|
-
import { createStaticLayoutClientReuseArtifactCompatibility, createStaticLayoutClientReusePayloadHash, createStaticLayoutClientReuseRouteId } from "./static-layout-client-reuse-proof.js";
|
|
6
|
-
//#region src/server/app-browser-client-reuse-manifest.ts
|
|
7
|
-
function capClientReuseManifestProducerLimits(limits) {
|
|
8
|
-
return {
|
|
9
|
-
...limits,
|
|
10
|
-
maxEntryCount: Math.min(limits.maxEntryCount, 8)
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
function serializeBoundedClientReuseManifest(input) {
|
|
14
|
-
const entries = input.entries.slice(0, input.limits.maxEntryCount);
|
|
15
|
-
let low = 1;
|
|
16
|
-
let high = entries.length;
|
|
17
|
-
let best = null;
|
|
18
|
-
while (low <= high) {
|
|
19
|
-
const size = Math.floor((low + high) / 2);
|
|
20
|
-
const serialized = serializeClientReuseManifest({
|
|
21
|
-
entries: entries.slice(0, size),
|
|
22
|
-
replayWindow: {
|
|
23
|
-
validFromVisibleCommitVersion: input.visibleCommitVersion,
|
|
24
|
-
validUntilVisibleCommitVersion: input.visibleCommitVersion
|
|
25
|
-
},
|
|
26
|
-
visibleCommitVersion: input.visibleCommitVersion
|
|
27
|
-
});
|
|
28
|
-
if (countUtf8Bytes(serialized) <= input.limits.maxManifestBytes) {
|
|
29
|
-
best = serialized;
|
|
30
|
-
low = size + 1;
|
|
31
|
-
} else high = size - 1;
|
|
32
|
-
}
|
|
33
|
-
return best;
|
|
34
|
-
}
|
|
35
|
-
function hasRetainedElement(elements, elementId) {
|
|
36
|
-
return Object.hasOwn(elements, elementId);
|
|
37
|
-
}
|
|
38
|
-
function createStaticLayoutEntry(input) {
|
|
39
|
-
const routeId = createStaticLayoutClientReuseRouteId(input.layoutId);
|
|
40
|
-
const output = {
|
|
41
|
-
kind: "layout",
|
|
42
|
-
layoutId: input.layoutId,
|
|
43
|
-
rootBoundaryId: input.artifactCompatibility.rootBoundaryId,
|
|
44
|
-
routeId
|
|
45
|
-
};
|
|
46
|
-
const candidateVariant = buildCacheVariantWithRouteBudget({
|
|
47
|
-
budget: DEFAULT_CACHE_VARIANT_BUDGET,
|
|
48
|
-
dimensions: [],
|
|
49
|
-
output,
|
|
50
|
-
routeBudget: {
|
|
51
|
-
routeId: output.routeId,
|
|
52
|
-
variantCacheKeys: []
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
if (candidateVariant.kind !== "variant") return null;
|
|
56
|
-
const artifactCompatibility = createStaticLayoutClientReuseArtifactCompatibility({
|
|
57
|
-
artifactCompatibility: input.artifactCompatibility,
|
|
58
|
-
layoutId: input.layoutId,
|
|
59
|
-
rootBoundaryId: output.rootBoundaryId,
|
|
60
|
-
routeId: output.routeId,
|
|
61
|
-
variantCacheKey: candidateVariant.variant.cacheKey
|
|
62
|
-
});
|
|
63
|
-
return {
|
|
64
|
-
artifactCompatibility,
|
|
65
|
-
id: input.layoutId,
|
|
66
|
-
payloadHash: createStaticLayoutClientReusePayloadHash({
|
|
67
|
-
artifactCompatibility,
|
|
68
|
-
layoutId: input.layoutId,
|
|
69
|
-
rootBoundaryId: output.rootBoundaryId,
|
|
70
|
-
routeId: output.routeId,
|
|
71
|
-
variantCacheKey: candidateVariant.variant.cacheKey
|
|
72
|
-
}),
|
|
73
|
-
privacy: "public",
|
|
74
|
-
variantCacheKey: candidateVariant.variant.cacheKey
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
function createClientReuseManifestHeaderFromVisibleAppState(state, options = {}) {
|
|
78
|
-
const limits = capClientReuseManifestProducerLimits(options.limits ?? DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS);
|
|
79
|
-
const metadata = AppElementsWire.readMetadata(state.elements);
|
|
80
|
-
const entries = [];
|
|
81
|
-
for (const layoutId of metadata.layoutIds) {
|
|
82
|
-
if (entries.length >= limits.maxEntryCount) break;
|
|
83
|
-
if (layoutId.length > limits.maxEntryIdLength) continue;
|
|
84
|
-
if (metadata.layoutFlags[layoutId] !== "s") continue;
|
|
85
|
-
if (!hasRetainedElement(state.elements, layoutId)) continue;
|
|
86
|
-
if (AppElementsWire.parseElementKey(layoutId)?.kind !== "layout") continue;
|
|
87
|
-
const entry = createStaticLayoutEntry({
|
|
88
|
-
artifactCompatibility: metadata.artifactCompatibility,
|
|
89
|
-
layoutId
|
|
90
|
-
});
|
|
91
|
-
if (entry) entries.push(entry);
|
|
92
|
-
}
|
|
93
|
-
if (entries.length === 0) return null;
|
|
94
|
-
return serializeBoundedClientReuseManifest({
|
|
95
|
-
entries,
|
|
96
|
-
limits,
|
|
97
|
-
visibleCommitVersion: state.visibleCommitVersion
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
//#endregion
|
|
101
|
-
export { createClientReuseManifestHeaderFromVisibleAppState };
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { RenderRequestApiKind } from "./cache-proof.js";
|
|
2
|
-
import { ClientReuseManifestRejectionCode, ClientReuseManifestTraceFields } from "./client-reuse-manifest.js";
|
|
3
|
-
import { ThenableParamsObserver } from "../shims/thenable-params.js";
|
|
4
|
-
import { UnstableCacheObservation } from "../shims/cache-request-state.js";
|
|
5
|
-
//#region src/server/app-layout-param-observation.d.ts
|
|
6
|
-
export type AppLayoutParamAccessObservation = Readonly<{
|
|
7
|
-
cacheLifeObserved: boolean;
|
|
8
|
-
cacheTags: readonly string[];
|
|
9
|
-
cacheableFetchCount: number;
|
|
10
|
-
completeness: "complete" | "unknown";
|
|
11
|
-
dynamicFetchCount: number;
|
|
12
|
-
/**
|
|
13
|
-
* `markDynamicUsage()` fired during the probe (e.g. `"use cache: private"`,
|
|
14
|
-
* `connection()`) with no other observable trace. Folded in from the
|
|
15
|
-
* isolated probe scope so this signal can't diverge from the Layer-3
|
|
16
|
-
* `dynamicDetected` path it replaced.
|
|
17
|
-
*/
|
|
18
|
-
dynamicUsageObserved: boolean;
|
|
19
|
-
finiteRevalidateSeconds: number | null;
|
|
20
|
-
keys: readonly string[];
|
|
21
|
-
observed: boolean;
|
|
22
|
-
paramScopeKeys: readonly string[];
|
|
23
|
-
requestApis: readonly RenderRequestApiKind[];
|
|
24
|
-
unstableCaches: readonly UnstableCacheObservation[];
|
|
25
|
-
}>;
|
|
26
|
-
export type AppLayoutParamAccessTracker = Readonly<{
|
|
27
|
-
createThenableParamsObserver: (layoutId: string) => ThenableParamsObserver;
|
|
28
|
-
getLayoutObservation: (layoutId: string) => AppLayoutParamAccessObservation;
|
|
29
|
-
recordLayoutFiniteRevalidate: (layoutId: string, revalidateSeconds: number) => void;
|
|
30
|
-
recordLayoutParamScope: (layoutId: string, paramScopeKeys: readonly string[]) => void;
|
|
31
|
-
runLayoutProbe: (layoutId: string, probe: () => unknown) => unknown;
|
|
32
|
-
}>;
|
|
33
|
-
type StaticLayoutObservationSkipCode = Extract<ClientReuseManifestRejectionCode, `SKIP_LAYOUT_${string}`>;
|
|
34
|
-
export type StaticLayoutObservationSkipRejection = Readonly<{
|
|
35
|
-
code: StaticLayoutObservationSkipCode;
|
|
36
|
-
fields: ClientReuseManifestTraceFields;
|
|
37
|
-
}>;
|
|
38
|
-
export declare function getStaticLayoutObservationSkipRejection(observation: AppLayoutParamAccessObservation): StaticLayoutObservationSkipRejection | null;
|
|
39
|
-
export declare function isAppLayoutObservationUnsafeForStaticReuse(observation: AppLayoutParamAccessObservation): boolean;
|
|
40
|
-
export declare function createAppLayoutParamAccessTracker(): AppLayoutParamAccessTracker;
|
|
41
|
-
//#endregion
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { isInsideUnifiedScope, runWithUnifiedStateMutation } from "../shims/unified-request-context.js";
|
|
2
|
-
import { isPromiseLike } from "../utils/promise.js";
|
|
3
|
-
import { peekDynamicUsage, peekRenderRequestApiUsage } from "../shims/headers.js";
|
|
4
|
-
import { _peekRequestScopedCacheLife, _peekUnstableCacheObservations } from "../shims/cache-request-state.js";
|
|
5
|
-
import { getCollectedFetchTags, peekCacheableFetchObservations, peekDynamicFetchObservations } from "../shims/fetch-cache.js";
|
|
6
|
-
//#region src/server/app-layout-param-observation.ts
|
|
7
|
-
const STATIC_LAYOUT_OBSERVATION_SKIP_RULES = [
|
|
8
|
-
["SKIP_LAYOUT_PARAMS_OBSERVATION_INCOMPLETE", (observation) => observation.completeness !== "complete"],
|
|
9
|
-
["SKIP_LAYOUT_PARAMS_PRESENT", (observation) => observation.paramScopeKeys.length > 0],
|
|
10
|
-
["SKIP_LAYOUT_PARAMS_OBSERVED", (observation) => observation.observed],
|
|
11
|
-
["SKIP_LAYOUT_DYNAMIC_USAGE_OBSERVED", (observation) => observation.dynamicUsageObserved],
|
|
12
|
-
["SKIP_LAYOUT_REQUEST_API_OBSERVED", (observation) => observation.requestApis.length > 0],
|
|
13
|
-
["SKIP_LAYOUT_REVALIDATE_PRESENT", (observation) => observation.finiteRevalidateSeconds !== null],
|
|
14
|
-
["SKIP_LAYOUT_CACHE_LIFE_OBSERVED", (observation) => observation.cacheLifeObserved],
|
|
15
|
-
["SKIP_LAYOUT_UNSTABLE_CACHE_OBSERVED", (observation) => observation.unstableCaches.length > 0],
|
|
16
|
-
["SKIP_LAYOUT_CACHE_TAGS_OBSERVED", (observation) => observation.cacheTags.length > 0],
|
|
17
|
-
["SKIP_LAYOUT_CACHEABLE_FETCHES_OBSERVED", (observation) => observation.cacheableFetchCount > 0],
|
|
18
|
-
["SKIP_LAYOUT_DYNAMIC_FETCHES_OBSERVED", (observation) => observation.dynamicFetchCount > 0]
|
|
19
|
-
];
|
|
20
|
-
function createStaticLayoutObservationTraceFields(observation) {
|
|
21
|
-
return {
|
|
22
|
-
cacheLifeObserved: observation.cacheLifeObserved,
|
|
23
|
-
cacheTags: observation.cacheTags,
|
|
24
|
-
cacheableFetchCount: observation.cacheableFetchCount,
|
|
25
|
-
dynamicFetchCount: observation.dynamicFetchCount,
|
|
26
|
-
dynamicUsageObserved: observation.dynamicUsageObserved,
|
|
27
|
-
finiteRevalidateSeconds: observation.finiteRevalidateSeconds,
|
|
28
|
-
observedParamKeys: observation.keys,
|
|
29
|
-
paramScopeKeys: observation.paramScopeKeys,
|
|
30
|
-
requestApis: observation.requestApis,
|
|
31
|
-
unstableCacheCount: observation.unstableCaches.length,
|
|
32
|
-
unstableCacheKeyHashes: observation.unstableCaches.map((cache) => cache.keyHash),
|
|
33
|
-
unstableCacheRevalidates: observation.unstableCaches.map((cache) => String(cache.revalidate)),
|
|
34
|
-
unstableCacheTagCounts: observation.unstableCaches.map((cache) => String(cache.tagCount)),
|
|
35
|
-
unstableCacheTagHashes: observation.unstableCaches.map((cache) => cache.tagHash ?? "none")
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
function getStaticLayoutObservationSkipRejection(observation) {
|
|
39
|
-
for (const [code, matches] of STATIC_LAYOUT_OBSERVATION_SKIP_RULES) if (matches(observation)) return {
|
|
40
|
-
code,
|
|
41
|
-
fields: createStaticLayoutObservationTraceFields(observation)
|
|
42
|
-
};
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
function isAppLayoutObservationUnsafeForStaticReuse(observation) {
|
|
46
|
-
return getStaticLayoutObservationSkipRejection(observation) !== null;
|
|
47
|
-
}
|
|
48
|
-
function createAppLayoutParamAccessTracker() {
|
|
49
|
-
const observations = /* @__PURE__ */ new Map();
|
|
50
|
-
const ensureObservation = (layoutId) => {
|
|
51
|
-
const existing = observations.get(layoutId);
|
|
52
|
-
if (existing) return existing;
|
|
53
|
-
const created = {
|
|
54
|
-
cacheLifeObserved: false,
|
|
55
|
-
cacheTags: /* @__PURE__ */ new Set(),
|
|
56
|
-
cacheableFetches: /* @__PURE__ */ new Set(),
|
|
57
|
-
dynamicFetches: /* @__PURE__ */ new Set(),
|
|
58
|
-
dynamicUsageObserved: false,
|
|
59
|
-
finiteRevalidateSeconds: null,
|
|
60
|
-
keys: /* @__PURE__ */ new Set(),
|
|
61
|
-
observed: false,
|
|
62
|
-
paramScopeKeys: /* @__PURE__ */ new Set(),
|
|
63
|
-
probeComplete: false,
|
|
64
|
-
requestApis: /* @__PURE__ */ new Set(),
|
|
65
|
-
unstableCaches: /* @__PURE__ */ new Map()
|
|
66
|
-
};
|
|
67
|
-
observations.set(layoutId, created);
|
|
68
|
-
return created;
|
|
69
|
-
};
|
|
70
|
-
const markObserved = (layoutId, keys) => {
|
|
71
|
-
const observation = ensureObservation(layoutId);
|
|
72
|
-
observation.observed = true;
|
|
73
|
-
for (const key of keys) observation.keys.add(key);
|
|
74
|
-
};
|
|
75
|
-
const markProbeComplete = (layoutId) => {
|
|
76
|
-
ensureObservation(layoutId).probeComplete = true;
|
|
77
|
-
};
|
|
78
|
-
const runWithIsolatedProbeDependencies = (probe) => {
|
|
79
|
-
if (!isInsideUnifiedScope()) return probe();
|
|
80
|
-
return runWithUnifiedStateMutation((ctx) => {
|
|
81
|
-
ctx.cacheableFetchUrls = /* @__PURE__ */ new Set();
|
|
82
|
-
ctx.currentRequestTags = [];
|
|
83
|
-
ctx.currentFetchSoftTags = [];
|
|
84
|
-
ctx.dynamicFetchUrls = /* @__PURE__ */ new Set();
|
|
85
|
-
ctx.dynamicUsageDetected = false;
|
|
86
|
-
ctx.renderRequestApiUsage = /* @__PURE__ */ new Set();
|
|
87
|
-
ctx.requestScopedCacheLife = null;
|
|
88
|
-
ctx.unstableCacheObservations = /* @__PURE__ */ new Map();
|
|
89
|
-
}, probe);
|
|
90
|
-
};
|
|
91
|
-
const recordProbeDependencies = (layoutId) => {
|
|
92
|
-
const observation = ensureObservation(layoutId);
|
|
93
|
-
if (peekDynamicUsage()) observation.dynamicUsageObserved = true;
|
|
94
|
-
if (_peekRequestScopedCacheLife() !== null) observation.cacheLifeObserved = true;
|
|
95
|
-
for (const tag of getCollectedFetchTags()) observation.cacheTags.add(tag);
|
|
96
|
-
for (const url of peekCacheableFetchObservations()) observation.cacheableFetches.add(url);
|
|
97
|
-
for (const url of peekDynamicFetchObservations()) observation.dynamicFetches.add(url);
|
|
98
|
-
for (const requestApi of peekRenderRequestApiUsage()) observation.requestApis.add(requestApi);
|
|
99
|
-
for (const unstableCache of _peekUnstableCacheObservations()) observation.unstableCaches.set(unstableCache.keyHash, unstableCache);
|
|
100
|
-
};
|
|
101
|
-
return {
|
|
102
|
-
createThenableParamsObserver(layoutId) {
|
|
103
|
-
return { observeParamAccess(keys) {
|
|
104
|
-
markObserved(layoutId, keys);
|
|
105
|
-
} };
|
|
106
|
-
},
|
|
107
|
-
getLayoutObservation(layoutId) {
|
|
108
|
-
const observation = observations.get(layoutId);
|
|
109
|
-
if (!observation) return {
|
|
110
|
-
cacheLifeObserved: false,
|
|
111
|
-
cacheTags: [],
|
|
112
|
-
cacheableFetchCount: 0,
|
|
113
|
-
completeness: "unknown",
|
|
114
|
-
dynamicFetchCount: 0,
|
|
115
|
-
dynamicUsageObserved: false,
|
|
116
|
-
finiteRevalidateSeconds: null,
|
|
117
|
-
keys: [],
|
|
118
|
-
observed: false,
|
|
119
|
-
paramScopeKeys: [],
|
|
120
|
-
requestApis: [],
|
|
121
|
-
unstableCaches: []
|
|
122
|
-
};
|
|
123
|
-
return {
|
|
124
|
-
cacheLifeObserved: observation.cacheLifeObserved,
|
|
125
|
-
cacheTags: [...observation.cacheTags].sort(),
|
|
126
|
-
cacheableFetchCount: observation.cacheableFetches.size,
|
|
127
|
-
completeness: observation.probeComplete ? "complete" : "unknown",
|
|
128
|
-
dynamicFetchCount: observation.dynamicFetches.size,
|
|
129
|
-
dynamicUsageObserved: observation.dynamicUsageObserved,
|
|
130
|
-
finiteRevalidateSeconds: observation.finiteRevalidateSeconds,
|
|
131
|
-
keys: [...observation.keys].sort(),
|
|
132
|
-
observed: observation.observed,
|
|
133
|
-
paramScopeKeys: [...observation.paramScopeKeys].sort(),
|
|
134
|
-
requestApis: [...observation.requestApis].sort(),
|
|
135
|
-
unstableCaches: [...observation.unstableCaches.values()].sort((a, b) => a.keyHash.localeCompare(b.keyHash))
|
|
136
|
-
};
|
|
137
|
-
},
|
|
138
|
-
recordLayoutFiniteRevalidate(layoutId, revalidateSeconds) {
|
|
139
|
-
if (!Number.isFinite(revalidateSeconds) || revalidateSeconds <= 0) return;
|
|
140
|
-
const observation = ensureObservation(layoutId);
|
|
141
|
-
observation.finiteRevalidateSeconds = observation.finiteRevalidateSeconds === null ? revalidateSeconds : Math.min(observation.finiteRevalidateSeconds, revalidateSeconds);
|
|
142
|
-
},
|
|
143
|
-
recordLayoutParamScope(layoutId, paramScopeKeys) {
|
|
144
|
-
const observation = ensureObservation(layoutId);
|
|
145
|
-
for (const key of paramScopeKeys) observation.paramScopeKeys.add(key);
|
|
146
|
-
},
|
|
147
|
-
runLayoutProbe(layoutId, probe) {
|
|
148
|
-
return runWithIsolatedProbeDependencies(() => {
|
|
149
|
-
const result = probe();
|
|
150
|
-
if (!isPromiseLike(result)) {
|
|
151
|
-
recordProbeDependencies(layoutId);
|
|
152
|
-
markProbeComplete(layoutId);
|
|
153
|
-
return result;
|
|
154
|
-
}
|
|
155
|
-
return Promise.resolve(result).then((resolved) => {
|
|
156
|
-
recordProbeDependencies(layoutId);
|
|
157
|
-
markProbeComplete(layoutId);
|
|
158
|
-
return resolved;
|
|
159
|
-
}, (error) => {
|
|
160
|
-
recordProbeDependencies(layoutId);
|
|
161
|
-
throw error;
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
//#endregion
|
|
168
|
-
export { createAppLayoutParamAccessTracker, getStaticLayoutObservationSkipRejection, isAppLayoutObservationUnsafeForStaticReuse };
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { ArtifactCompatibilityEnvelope } from "./artifact-compatibility.js";
|
|
2
|
-
//#region src/server/client-reuse-manifest.d.ts
|
|
3
|
-
export declare const CLIENT_REUSE_MANIFEST_SCHEMA_VERSION = 1;
|
|
4
|
-
type ClientReuseManifestSchemaVersion = 1;
|
|
5
|
-
export declare const CLIENT_REUSE_MANIFEST_HASH_ALGORITHM = "fnv1a64";
|
|
6
|
-
type ClientReuseManifestHashAlgorithm = typeof CLIENT_REUSE_MANIFEST_HASH_ALGORITHM;
|
|
7
|
-
type ClientReuseManifestLimits = Readonly<{
|
|
8
|
-
maxEntryCount: number;
|
|
9
|
-
maxEntryIdLength: number;
|
|
10
|
-
maxManifestBytes: number;
|
|
11
|
-
maxPayloadHashLength: number;
|
|
12
|
-
maxVariantCacheKeyLength: number;
|
|
13
|
-
}>;
|
|
14
|
-
export declare const DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS: {
|
|
15
|
-
maxEntryCount: number;
|
|
16
|
-
maxEntryIdLength: number;
|
|
17
|
-
maxManifestBytes: number;
|
|
18
|
-
maxPayloadHashLength: number;
|
|
19
|
-
maxVariantCacheKeyLength: number;
|
|
20
|
-
};
|
|
21
|
-
export declare const CLIENT_REUSE_MANIFEST_SKIP_VERIFICATION_ENTRY_BUDGET = 8;
|
|
22
|
-
type ClientReuseManifestEntryKind = "layout" | "page" | "route" | "slot" | "template";
|
|
23
|
-
type ClientReuseManifestEntryPrivacy = "private" | "public";
|
|
24
|
-
type ClientReuseManifestReplayWindow = Readonly<{
|
|
25
|
-
validFromVisibleCommitVersion: number;
|
|
26
|
-
validUntilVisibleCommitVersion: number;
|
|
27
|
-
}>;
|
|
28
|
-
export type ClientReuseManifestEntry = Readonly<{
|
|
29
|
-
artifactCompatibility: ArtifactCompatibilityEnvelope;
|
|
30
|
-
id: string;
|
|
31
|
-
kind: ClientReuseManifestEntryKind;
|
|
32
|
-
payloadHash: string;
|
|
33
|
-
privacy: "public";
|
|
34
|
-
variantCacheKey: string;
|
|
35
|
-
}>;
|
|
36
|
-
type ClientReuseManifestWireEntry = Readonly<{
|
|
37
|
-
artifactCompatibility: ArtifactCompatibilityEnvelope;
|
|
38
|
-
id: string;
|
|
39
|
-
payloadHash: string;
|
|
40
|
-
privacy: ClientReuseManifestEntryPrivacy;
|
|
41
|
-
variantCacheKey: string;
|
|
42
|
-
}>;
|
|
43
|
-
type ClientReuseManifest = Readonly<{
|
|
44
|
-
entries: readonly ClientReuseManifestEntry[];
|
|
45
|
-
hashAlgorithm: ClientReuseManifestHashAlgorithm;
|
|
46
|
-
replayWindow: ClientReuseManifestReplayWindow;
|
|
47
|
-
schemaVersion: ClientReuseManifestSchemaVersion;
|
|
48
|
-
visibleCommitVersion: number;
|
|
49
|
-
}>;
|
|
50
|
-
type ClientReuseManifestWire = Readonly<{
|
|
51
|
-
entries: readonly ClientReuseManifestWireEntry[];
|
|
52
|
-
hashAlgorithm: ClientReuseManifestHashAlgorithm;
|
|
53
|
-
replayWindow: ClientReuseManifestReplayWindow;
|
|
54
|
-
schemaVersion: ClientReuseManifestSchemaVersion;
|
|
55
|
-
visibleCommitVersion: number;
|
|
56
|
-
}>;
|
|
57
|
-
type CreateClientReuseManifestInput = Readonly<{
|
|
58
|
-
entries: readonly ClientReuseManifestWireEntry[];
|
|
59
|
-
replayWindow?: ClientReuseManifestReplayWindow;
|
|
60
|
-
visibleCommitVersion: number;
|
|
61
|
-
}>;
|
|
62
|
-
export type ClientReuseManifestRejectionCode = "SKIP_CACHE_ARTIFACT_COMPATIBILITY_INCOMPATIBLE" | "SKIP_CACHE_ARTIFACT_COMPATIBILITY_UNKNOWN" | "SKIP_CACHE_ARTIFACT_PROOF_MISMATCH" | "SKIP_CACHE_ENTRY_ID_MISMATCH" | "SKIP_CACHE_INVALIDATED" | "SKIP_CACHE_INVALIDATION_UNKNOWN" | "SKIP_CACHE_PAYLOAD_HASH_MISMATCH" | "SKIP_CACHE_PAYLOAD_HASH_MISSING" | "SKIP_CACHE_PROOF_MISSING" | "SKIP_CACHE_PROOF_REJECTED" | "SKIP_CACHE_REUSE_CLASS_UNSUPPORTED" | "SKIP_CACHE_VARIANT_MISMATCH" | "SKIP_LAYOUT_CACHE_LIFE_OBSERVED" | "SKIP_LAYOUT_CACHE_TAGS_OBSERVED" | "SKIP_LAYOUT_CACHEABLE_FETCHES_OBSERVED" | "SKIP_LAYOUT_DYNAMIC_FETCHES_OBSERVED" | "SKIP_LAYOUT_DYNAMIC_USAGE_OBSERVED" | "SKIP_LAYOUT_PARAMS_OBSERVED" | "SKIP_LAYOUT_PARAMS_OBSERVATION_INCOMPLETE" | "SKIP_LAYOUT_PARAMS_PRESENT" | "SKIP_LAYOUT_REVALIDATE_PRESENT" | "SKIP_LAYOUT_REQUEST_API_OBSERVED" | "SKIP_LAYOUT_UNSTABLE_CACHE_OBSERVED" | "SKIP_ARTIFACT_COMPATIBILITY_INVALID" | "SKIP_ENTRY_COUNT_EXCEEDED" | "SKIP_VERIFICATION_BUDGET_EXCEEDED" | "SKIP_ENTRY_HASH_INVALID" | "SKIP_ENTRY_ID_INVALID" | "SKIP_ENTRY_ID_TOO_LONG" | "SKIP_ENTRY_MALFORMED" | "SKIP_ENTRY_ORDER_NON_CANONICAL" | "SKIP_HASH_ALGORITHM_UNSUPPORTED" | "SKIP_MANIFEST_MALFORMED" | "SKIP_MANIFEST_SCHEMA_UNSUPPORTED" | "SKIP_MANIFEST_TOO_LARGE" | "SKIP_PRIVATE_ENTRY" | "SKIP_REPLAY_WINDOW_INVALID" | "SKIP_UNKNOWN_ENTRY" | "SKIP_VARIANT_CACHE_KEY_INVALID" | "SKIP_VARIANT_CACHE_KEY_TOO_LONG" | "SKIP_VISIBLE_COMMIT_VERSION_INVALID" | "SKIP_VISIBLE_COMMIT_VERSION_MISMATCH";
|
|
63
|
-
type ClientReuseManifestTraceFieldValue = string | number | boolean | null | readonly string[];
|
|
64
|
-
export type ClientReuseManifestTraceFields = Readonly<Record<string, ClientReuseManifestTraceFieldValue>>;
|
|
65
|
-
export type ClientReuseManifestRejection = Readonly<{
|
|
66
|
-
code: ClientReuseManifestRejectionCode;
|
|
67
|
-
fields: ClientReuseManifestTraceFields;
|
|
68
|
-
}>;
|
|
69
|
-
export type ClientReuseManifestEntryRejection = ClientReuseManifestRejection & Readonly<{
|
|
70
|
-
entryId: string | null;
|
|
71
|
-
}>;
|
|
72
|
-
export type ClientReuseManifestSkipDisposition = Readonly<{
|
|
73
|
-
code: "SKIP_MODEL_DISABLED";
|
|
74
|
-
enabled: false;
|
|
75
|
-
mode: "renderAndSend";
|
|
76
|
-
}> | Readonly<{
|
|
77
|
-
code: "SKIP_STATIC_LAYOUT_VERIFIED";
|
|
78
|
-
enabled: true;
|
|
79
|
-
mode: "skipStaticLayout";
|
|
80
|
-
skippedEntryIds: readonly string[];
|
|
81
|
-
}>;
|
|
82
|
-
export type ClientReuseManifestParseResult = Readonly<{
|
|
83
|
-
kind: "absent";
|
|
84
|
-
}> | Readonly<{
|
|
85
|
-
kind: "rejected";
|
|
86
|
-
rejection: ClientReuseManifestRejection;
|
|
87
|
-
}> | Readonly<{
|
|
88
|
-
entryRejections: readonly ClientReuseManifestEntryRejection[];
|
|
89
|
-
kind: "parsed";
|
|
90
|
-
manifest: ClientReuseManifest;
|
|
91
|
-
skipDisposition: ClientReuseManifestSkipDisposition;
|
|
92
|
-
}>;
|
|
93
|
-
type ParseClientReuseManifestOptions = Readonly<{
|
|
94
|
-
currentVisibleCommitVersion?: number;
|
|
95
|
-
limits?: ClientReuseManifestLimits;
|
|
96
|
-
}>;
|
|
97
|
-
export declare function countUtf8Bytes(input: string): number;
|
|
98
|
-
export declare function createClientReusePayloadHash(input: string): string;
|
|
99
|
-
export declare function createClientReuseManifest(input: CreateClientReuseManifestInput): ClientReuseManifestWire;
|
|
100
|
-
export declare function serializeClientReuseManifest(input: CreateClientReuseManifestInput): string;
|
|
101
|
-
export declare function parseClientReuseManifestHeader(rawHeader: string | null | undefined, options?: ParseClientReuseManifestOptions): ClientReuseManifestParseResult;
|
|
102
|
-
//#endregion
|
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
import { isUnknownRecord } from "../utils/record.js";
|
|
2
|
-
import { parseAppElementsWireElementKey } from "./app-elements-wire-key.js";
|
|
3
|
-
import { fnv1a64 } from "../utils/hash.js";
|
|
4
|
-
import { parseArtifactCompatibilityEnvelope } from "./artifact-compatibility.js";
|
|
5
|
-
import { isNonNegativeSafeInteger } from "../utils/number.js";
|
|
6
|
-
//#region src/server/client-reuse-manifest.ts
|
|
7
|
-
const CLIENT_REUSE_MANIFEST_SCHEMA_VERSION = 1;
|
|
8
|
-
const CLIENT_REUSE_MANIFEST_HASH_ALGORITHM = "fnv1a64";
|
|
9
|
-
const DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS = {
|
|
10
|
-
maxEntryCount: 64,
|
|
11
|
-
maxEntryIdLength: 512,
|
|
12
|
-
maxManifestBytes: 4096,
|
|
13
|
-
maxPayloadHashLength: 16,
|
|
14
|
-
maxVariantCacheKeyLength: 256
|
|
15
|
-
};
|
|
16
|
-
const CLIENT_REUSE_MANIFEST_SKIP_VERIFICATION_ENTRY_BUDGET = 8;
|
|
17
|
-
const HASH_DIGEST_PATTERN = /^[0-9a-z]+$/;
|
|
18
|
-
const textEncoder = new TextEncoder();
|
|
19
|
-
function createRejection(code, fields = {}) {
|
|
20
|
-
return {
|
|
21
|
-
code,
|
|
22
|
-
fields
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
function rejectManifest(code, fields = {}) {
|
|
26
|
-
return {
|
|
27
|
-
kind: "rejected",
|
|
28
|
-
rejection: createRejection(code, fields)
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function rejectEntry(code, entryId, fields = {}) {
|
|
32
|
-
return {
|
|
33
|
-
code,
|
|
34
|
-
entryId,
|
|
35
|
-
fields
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
function compareManifestEntries(left, right) {
|
|
39
|
-
if (left.id < right.id) return -1;
|
|
40
|
-
if (left.id > right.id) return 1;
|
|
41
|
-
return 0;
|
|
42
|
-
}
|
|
43
|
-
function createCanonicalWireEntries(entries) {
|
|
44
|
-
const entriesById = /* @__PURE__ */ new Map();
|
|
45
|
-
for (const entry of entries) if (!entriesById.has(entry.id)) entriesById.set(entry.id, entry);
|
|
46
|
-
return Array.from(entriesById.values()).sort(compareManifestEntries);
|
|
47
|
-
}
|
|
48
|
-
function countUtf8Bytes(input) {
|
|
49
|
-
return textEncoder.encode(input).length;
|
|
50
|
-
}
|
|
51
|
-
function parseReplayWindow(value, visibleCommitVersion) {
|
|
52
|
-
if (!isUnknownRecord(value)) return {
|
|
53
|
-
kind: "rejected",
|
|
54
|
-
rejection: createRejection("SKIP_REPLAY_WINDOW_INVALID", { field: "replayWindow" })
|
|
55
|
-
};
|
|
56
|
-
const validFromVisibleCommitVersion = value.validFromVisibleCommitVersion;
|
|
57
|
-
const validUntilVisibleCommitVersion = value.validUntilVisibleCommitVersion;
|
|
58
|
-
if (!isNonNegativeSafeInteger(validFromVisibleCommitVersion) || !isNonNegativeSafeInteger(validUntilVisibleCommitVersion) || validFromVisibleCommitVersion > validUntilVisibleCommitVersion || visibleCommitVersion < validFromVisibleCommitVersion || visibleCommitVersion > validUntilVisibleCommitVersion) return {
|
|
59
|
-
kind: "rejected",
|
|
60
|
-
rejection: createRejection("SKIP_REPLAY_WINDOW_INVALID", {
|
|
61
|
-
validFromVisibleCommitVersion: isNonNegativeSafeInteger(validFromVisibleCommitVersion) ? validFromVisibleCommitVersion : null,
|
|
62
|
-
validUntilVisibleCommitVersion: isNonNegativeSafeInteger(validUntilVisibleCommitVersion) ? validUntilVisibleCommitVersion : null,
|
|
63
|
-
visibleCommitVersion
|
|
64
|
-
})
|
|
65
|
-
};
|
|
66
|
-
return {
|
|
67
|
-
kind: "parsed",
|
|
68
|
-
replayWindow: {
|
|
69
|
-
validFromVisibleCommitVersion,
|
|
70
|
-
validUntilVisibleCommitVersion
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
function currentCommitVersionMatchesReplayWindow(currentVisibleCommitVersion, replayWindow) {
|
|
75
|
-
if (currentVisibleCommitVersion === void 0) return true;
|
|
76
|
-
return currentVisibleCommitVersion >= replayWindow.validFromVisibleCommitVersion && currentVisibleCommitVersion <= replayWindow.validUntilVisibleCommitVersion;
|
|
77
|
-
}
|
|
78
|
-
function parseEntryKind(id) {
|
|
79
|
-
const parsed = parseAppElementsWireElementKey(id);
|
|
80
|
-
if (parsed === null) return null;
|
|
81
|
-
return parsed.kind;
|
|
82
|
-
}
|
|
83
|
-
function isValidPayloadHash(value, limits) {
|
|
84
|
-
return typeof value === "string" && value.length > 0 && value.length <= limits.maxPayloadHashLength && HASH_DIGEST_PATTERN.test(value);
|
|
85
|
-
}
|
|
86
|
-
function parseManifestEntry(value, limits, index) {
|
|
87
|
-
if (!isUnknownRecord(value)) return rejectEntry("SKIP_ENTRY_MALFORMED", null, { index });
|
|
88
|
-
const id = value.id;
|
|
89
|
-
if (typeof id !== "string" || id.length === 0) return rejectEntry("SKIP_ENTRY_ID_INVALID", null, { index });
|
|
90
|
-
if (id.length > limits.maxEntryIdLength) return rejectEntry("SKIP_ENTRY_ID_TOO_LONG", id, {
|
|
91
|
-
idHash: createClientReusePayloadHash(id),
|
|
92
|
-
maxEntryIdLength: limits.maxEntryIdLength
|
|
93
|
-
});
|
|
94
|
-
const kind = parseEntryKind(id);
|
|
95
|
-
if (kind === null) return rejectEntry("SKIP_UNKNOWN_ENTRY", id, { idHash: createClientReusePayloadHash(id) });
|
|
96
|
-
const privacy = value.privacy;
|
|
97
|
-
if (privacy === "private") return rejectEntry("SKIP_PRIVATE_ENTRY", id, { privacy });
|
|
98
|
-
if (privacy !== "public") return rejectEntry("SKIP_ENTRY_MALFORMED", id, { field: "privacy" });
|
|
99
|
-
const payloadHash = value.payloadHash;
|
|
100
|
-
if (!isValidPayloadHash(payloadHash, limits)) return rejectEntry("SKIP_ENTRY_HASH_INVALID", id, { maxPayloadHashLength: limits.maxPayloadHashLength });
|
|
101
|
-
const variantCacheKey = value.variantCacheKey;
|
|
102
|
-
if (typeof variantCacheKey !== "string" || variantCacheKey.length === 0) return rejectEntry("SKIP_VARIANT_CACHE_KEY_INVALID", id, { field: "variantCacheKey" });
|
|
103
|
-
if (variantCacheKey.length > limits.maxVariantCacheKeyLength) return rejectEntry("SKIP_VARIANT_CACHE_KEY_TOO_LONG", id, {
|
|
104
|
-
maxVariantCacheKeyLength: limits.maxVariantCacheKeyLength,
|
|
105
|
-
variantCacheKeyHash: createClientReusePayloadHash(variantCacheKey)
|
|
106
|
-
});
|
|
107
|
-
const artifactCompatibility = parseArtifactCompatibilityEnvelope(value.artifactCompatibility);
|
|
108
|
-
if (artifactCompatibility === null) return rejectEntry("SKIP_ARTIFACT_COMPATIBILITY_INVALID", id, { field: "artifactCompatibility" });
|
|
109
|
-
return {
|
|
110
|
-
artifactCompatibility,
|
|
111
|
-
id,
|
|
112
|
-
kind,
|
|
113
|
-
payloadHash,
|
|
114
|
-
privacy,
|
|
115
|
-
variantCacheKey
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
function createClientReusePayloadHash(input) {
|
|
119
|
-
return fnv1a64(input);
|
|
120
|
-
}
|
|
121
|
-
function createClientReuseManifest(input) {
|
|
122
|
-
const replayWindow = input.replayWindow ?? {
|
|
123
|
-
validFromVisibleCommitVersion: input.visibleCommitVersion,
|
|
124
|
-
validUntilVisibleCommitVersion: input.visibleCommitVersion
|
|
125
|
-
};
|
|
126
|
-
return {
|
|
127
|
-
entries: createCanonicalWireEntries(input.entries),
|
|
128
|
-
hashAlgorithm: CLIENT_REUSE_MANIFEST_HASH_ALGORITHM,
|
|
129
|
-
replayWindow,
|
|
130
|
-
schemaVersion: 1,
|
|
131
|
-
visibleCommitVersion: input.visibleCommitVersion
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
function serializeClientReuseManifest(input) {
|
|
135
|
-
return JSON.stringify(createClientReuseManifest(input));
|
|
136
|
-
}
|
|
137
|
-
function parseClientReuseManifestHeader(rawHeader, options = {}) {
|
|
138
|
-
const header = rawHeader?.trim();
|
|
139
|
-
if (!header) return { kind: "absent" };
|
|
140
|
-
const limits = options.limits ?? DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS;
|
|
141
|
-
const manifestBytes = countUtf8Bytes(header);
|
|
142
|
-
if (manifestBytes > limits.maxManifestBytes) return rejectManifest("SKIP_MANIFEST_TOO_LARGE", {
|
|
143
|
-
manifestBytes,
|
|
144
|
-
maxManifestBytes: limits.maxManifestBytes
|
|
145
|
-
});
|
|
146
|
-
let decoded;
|
|
147
|
-
try {
|
|
148
|
-
decoded = JSON.parse(header);
|
|
149
|
-
} catch {
|
|
150
|
-
return rejectManifest("SKIP_MANIFEST_MALFORMED");
|
|
151
|
-
}
|
|
152
|
-
if (!isUnknownRecord(decoded)) return rejectManifest("SKIP_MANIFEST_MALFORMED", { field: "manifest" });
|
|
153
|
-
if (decoded.schemaVersion !== 1) return rejectManifest("SKIP_MANIFEST_SCHEMA_UNSUPPORTED", { schemaVersion: typeof decoded.schemaVersion === "number" || typeof decoded.schemaVersion === "string" ? decoded.schemaVersion : null });
|
|
154
|
-
if (decoded.hashAlgorithm !== "fnv1a64") return rejectManifest("SKIP_HASH_ALGORITHM_UNSUPPORTED", { hashAlgorithm: typeof decoded.hashAlgorithm === "string" ? decoded.hashAlgorithm : null });
|
|
155
|
-
const visibleCommitVersion = decoded.visibleCommitVersion;
|
|
156
|
-
if (!isNonNegativeSafeInteger(visibleCommitVersion)) return rejectManifest("SKIP_VISIBLE_COMMIT_VERSION_INVALID", { visibleCommitVersion: null });
|
|
157
|
-
const replayWindowResult = parseReplayWindow(decoded.replayWindow, visibleCommitVersion);
|
|
158
|
-
if (replayWindowResult.kind === "rejected") return {
|
|
159
|
-
kind: "rejected",
|
|
160
|
-
rejection: replayWindowResult.rejection
|
|
161
|
-
};
|
|
162
|
-
const { replayWindow } = replayWindowResult;
|
|
163
|
-
if (!currentCommitVersionMatchesReplayWindow(options.currentVisibleCommitVersion, replayWindow)) return rejectManifest("SKIP_VISIBLE_COMMIT_VERSION_MISMATCH", {
|
|
164
|
-
currentVisibleCommitVersion: options.currentVisibleCommitVersion ?? null,
|
|
165
|
-
validFromVisibleCommitVersion: replayWindow.validFromVisibleCommitVersion,
|
|
166
|
-
validUntilVisibleCommitVersion: replayWindow.validUntilVisibleCommitVersion,
|
|
167
|
-
visibleCommitVersion
|
|
168
|
-
});
|
|
169
|
-
const entriesValue = decoded.entries;
|
|
170
|
-
if (!Array.isArray(entriesValue)) return rejectManifest("SKIP_MANIFEST_MALFORMED", { field: "entries" });
|
|
171
|
-
if (entriesValue.length > limits.maxEntryCount) return rejectManifest("SKIP_ENTRY_COUNT_EXCEEDED", {
|
|
172
|
-
entryCount: entriesValue.length,
|
|
173
|
-
maxEntryCount: limits.maxEntryCount
|
|
174
|
-
});
|
|
175
|
-
const entries = [];
|
|
176
|
-
const entryRejections = [];
|
|
177
|
-
let previousEntryId = null;
|
|
178
|
-
for (let index = 0; index < entriesValue.length; index++) {
|
|
179
|
-
const value = entriesValue[index];
|
|
180
|
-
if (isUnknownRecord(value) && typeof value.id === "string") {
|
|
181
|
-
if (previousEntryId !== null && value.id <= previousEntryId) return rejectManifest("SKIP_ENTRY_ORDER_NON_CANONICAL", {
|
|
182
|
-
entryIdHash: createClientReusePayloadHash(value.id),
|
|
183
|
-
previousEntryIdHash: createClientReusePayloadHash(previousEntryId)
|
|
184
|
-
});
|
|
185
|
-
previousEntryId = value.id;
|
|
186
|
-
}
|
|
187
|
-
const parsedEntry = parseManifestEntry(value, limits, index);
|
|
188
|
-
if ("code" in parsedEntry) entryRejections.push(parsedEntry);
|
|
189
|
-
else entries.push(parsedEntry);
|
|
190
|
-
}
|
|
191
|
-
return {
|
|
192
|
-
entryRejections,
|
|
193
|
-
kind: "parsed",
|
|
194
|
-
manifest: {
|
|
195
|
-
entries,
|
|
196
|
-
hashAlgorithm: CLIENT_REUSE_MANIFEST_HASH_ALGORITHM,
|
|
197
|
-
replayWindow,
|
|
198
|
-
schemaVersion: 1,
|
|
199
|
-
visibleCommitVersion
|
|
200
|
-
},
|
|
201
|
-
skipDisposition: {
|
|
202
|
-
code: "SKIP_MODEL_DISABLED",
|
|
203
|
-
enabled: false,
|
|
204
|
-
mode: "renderAndSend"
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
//#endregion
|
|
209
|
-
export { CLIENT_REUSE_MANIFEST_HASH_ALGORITHM, CLIENT_REUSE_MANIFEST_SCHEMA_VERSION, CLIENT_REUSE_MANIFEST_SKIP_VERIFICATION_ENTRY_BUDGET, DEFAULT_CLIENT_REUSE_MANIFEST_LIMITS, countUtf8Bytes, createClientReuseManifest, createClientReusePayloadHash, parseClientReuseManifestHeader, serializeClientReuseManifest };
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import DefaultNotFound from "../shims/default-not-found.js";
|
|
2
|
-
//#region src/server/default-not-found-module.d.ts
|
|
3
|
-
/**
|
|
4
|
-
* Module-shaped wrapper around vinext's built-in default not-found component.
|
|
5
|
-
* Used as the fallback when an app does not define its own `app/not-found.tsx`
|
|
6
|
-
* (and has not opted into `app/global-not-found.tsx`). The runtime treats any
|
|
7
|
-
* `{ default: Component }` record as a "not-found module", so wrapping the
|
|
8
|
-
* component this way lets us thread the default through the existing
|
|
9
|
-
* `rootNotFoundModule` plumbing without introducing a parallel code path.
|
|
10
|
-
*
|
|
11
|
-
* Mirrors Next.js's `defaultNotFoundPath`
|
|
12
|
-
* (`next/dist/client/components/builtin/not-found.js`), which is selected
|
|
13
|
-
* automatically when the user has not supplied a custom not-found file:
|
|
14
|
-
* https://github.com/vercel/next.js/blob/canary/packages/next/src/build/webpack/loaders/next-app-loader/index.ts
|
|
15
|
-
*/
|
|
16
|
-
export declare const DEFAULT_NOT_FOUND_MODULE: {
|
|
17
|
-
readonly default: typeof DefaultNotFound;
|
|
18
|
-
};
|
|
19
|
-
//#endregion
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import DefaultNotFound from "../shims/default-not-found.js";
|
|
2
|
-
//#region src/server/default-not-found-module.ts
|
|
3
|
-
/**
|
|
4
|
-
* Module-shaped wrapper around vinext's built-in default not-found component.
|
|
5
|
-
* Used as the fallback when an app does not define its own `app/not-found.tsx`
|
|
6
|
-
* (and has not opted into `app/global-not-found.tsx`). The runtime treats any
|
|
7
|
-
* `{ default: Component }` record as a "not-found module", so wrapping the
|
|
8
|
-
* component this way lets us thread the default through the existing
|
|
9
|
-
* `rootNotFoundModule` plumbing without introducing a parallel code path.
|
|
10
|
-
*
|
|
11
|
-
* Mirrors Next.js's `defaultNotFoundPath`
|
|
12
|
-
* (`next/dist/client/components/builtin/not-found.js`), which is selected
|
|
13
|
-
* automatically when the user has not supplied a custom not-found file:
|
|
14
|
-
* https://github.com/vercel/next.js/blob/canary/packages/next/src/build/webpack/loaders/next-app-loader/index.ts
|
|
15
|
-
*/
|
|
16
|
-
const DEFAULT_NOT_FOUND_MODULE = { default: DefaultNotFound };
|
|
17
|
-
//#endregion
|
|
18
|
-
export { DEFAULT_NOT_FOUND_MODULE };
|