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
|
@@ -131,7 +131,7 @@ function createStaticSegmentGraph(routes) {
|
|
|
131
131
|
treePath
|
|
132
132
|
});
|
|
133
133
|
}
|
|
134
|
-
|
|
134
|
+
addRouteManifestSegmentBoundaryFacts({
|
|
135
135
|
boundaries,
|
|
136
136
|
route
|
|
137
137
|
});
|
|
@@ -303,19 +303,42 @@ function addRouteManifestBoundaryFacts(input) {
|
|
|
303
303
|
addRouteManifestBoundaryFact(input, "forbidden", input.route.forbiddenPaths[input.layoutIndex]);
|
|
304
304
|
addRouteManifestBoundaryFact(input, "unauthorized", input.route.unauthorizedPaths[input.layoutIndex]);
|
|
305
305
|
}
|
|
306
|
-
function
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
306
|
+
function addRouteManifestSegmentBoundaryFacts(input) {
|
|
307
|
+
const { route } = input;
|
|
308
|
+
const segmentBoundaries = [
|
|
309
|
+
[
|
|
310
|
+
"error",
|
|
311
|
+
route.errorPaths,
|
|
312
|
+
route.errorTreePositions
|
|
313
|
+
],
|
|
314
|
+
[
|
|
315
|
+
"notFound",
|
|
316
|
+
route.segmentNotFoundPaths,
|
|
317
|
+
route.segmentNotFoundTreePositions
|
|
318
|
+
],
|
|
319
|
+
[
|
|
320
|
+
"forbidden",
|
|
321
|
+
route.segmentForbiddenPaths,
|
|
322
|
+
route.segmentForbiddenTreePositions
|
|
323
|
+
],
|
|
324
|
+
[
|
|
325
|
+
"unauthorized",
|
|
326
|
+
route.segmentUnauthorizedPaths,
|
|
327
|
+
route.segmentUnauthorizedTreePositions
|
|
328
|
+
]
|
|
329
|
+
];
|
|
330
|
+
for (const [outcome, boundaryPaths, treePositions] of segmentBoundaries) for (const [index, boundaryPath] of (boundaryPaths ?? []).entries()) {
|
|
331
|
+
const treePosition = treePositions?.[index];
|
|
332
|
+
assertRouteManifestBoundaryTreePosition(route, boundaryPath, treePosition);
|
|
333
|
+
const ownerLayoutId = findRouteManifestOwnerLayoutId(route, treePosition);
|
|
311
334
|
if (ownerLayoutId !== null) continue;
|
|
312
|
-
const treePath = createAppRouteGraphTreePath(
|
|
335
|
+
const treePath = createAppRouteGraphTreePath(route.routeSegments, treePosition);
|
|
313
336
|
addRouteManifestBoundaryFact({
|
|
314
337
|
boundaries: input.boundaries,
|
|
315
|
-
route
|
|
338
|
+
route,
|
|
316
339
|
layoutId: ownerLayoutId,
|
|
317
340
|
treePath
|
|
318
|
-
},
|
|
341
|
+
}, outcome, boundaryPath);
|
|
319
342
|
}
|
|
320
343
|
}
|
|
321
344
|
function addRouteManifestBoundaryFact(input, outcome, boundaryPath) {
|
|
@@ -458,14 +481,11 @@ function discoverSlotSubRoutes(routes, matcher, ghostParents = []) {
|
|
|
458
481
|
const subPage = slotPages.get(slot.key);
|
|
459
482
|
if (subPage !== void 0) {
|
|
460
483
|
const configLayoutPaths = findSlotConfigLayoutPaths(slot.ownerDir, subPage, matcher);
|
|
461
|
-
const notFoundBoundary = findSlotNotFoundBoundary(slot.ownerDir, subPage, matcher);
|
|
462
484
|
return withSlotLoadingEntries({
|
|
463
485
|
...slot,
|
|
464
486
|
pagePath: subPage,
|
|
465
487
|
configLayoutPaths,
|
|
466
488
|
configLayoutTreePositions: findSlotConfigLayoutTreePositions(slot.ownerDir, configLayoutPaths),
|
|
467
|
-
notFoundPath: notFoundBoundary.path,
|
|
468
|
-
notFoundTreePosition: notFoundBoundary.treePosition,
|
|
469
489
|
routeSegments: rawSegments
|
|
470
490
|
}, subPage, matcher);
|
|
471
491
|
}
|
|
@@ -547,14 +567,11 @@ function discoverSlotSubRoutes(routes, matcher, ghostParents = []) {
|
|
|
547
567
|
const subSlots = parentRoute.parallelSlots.map((slot) => {
|
|
548
568
|
const subPage = slotPages.get(slot.key);
|
|
549
569
|
const configLayoutPaths = findSlotConfigLayoutPaths(slot.ownerDir, subPage ?? null, matcher);
|
|
550
|
-
const notFoundBoundary = findSlotNotFoundBoundary(slot.ownerDir, subPage ?? null, matcher);
|
|
551
570
|
return withSlotLoadingEntries({
|
|
552
571
|
...slot,
|
|
553
572
|
pagePath: subPage || null,
|
|
554
573
|
configLayoutPaths,
|
|
555
574
|
configLayoutTreePositions: findSlotConfigLayoutTreePositions(slot.ownerDir, configLayoutPaths),
|
|
556
|
-
notFoundPath: notFoundBoundary.path,
|
|
557
|
-
notFoundTreePosition: notFoundBoundary.treePosition,
|
|
558
575
|
routeSegments: subPage ? rawSegments : null
|
|
559
576
|
}, subPage ?? null, matcher);
|
|
560
577
|
});
|
|
@@ -593,6 +610,12 @@ function discoverSlotSubRoutes(routes, matcher, ghostParents = []) {
|
|
|
593
610
|
unauthorizedPath: parentRoute.unauthorizedPath,
|
|
594
611
|
unauthorizedTreePosition: parentRoute.unauthorizedTreePosition,
|
|
595
612
|
unauthorizedPaths: parentRoute.unauthorizedPaths,
|
|
613
|
+
segmentNotFoundPaths: parentRoute.segmentNotFoundPaths,
|
|
614
|
+
segmentNotFoundTreePositions: parentRoute.segmentNotFoundTreePositions,
|
|
615
|
+
segmentForbiddenPaths: parentRoute.segmentForbiddenPaths,
|
|
616
|
+
segmentForbiddenTreePositions: parentRoute.segmentForbiddenTreePositions,
|
|
617
|
+
segmentUnauthorizedPaths: parentRoute.segmentUnauthorizedPaths,
|
|
618
|
+
segmentUnauthorizedTreePositions: parentRoute.segmentUnauthorizedTreePositions,
|
|
596
619
|
routeSegments: [...parentRoute.routeSegments, ...rawSegments],
|
|
597
620
|
childrenRouteSegments: childrenDefault ? parentRoute.routeSegments : void 0,
|
|
598
621
|
templateTreePositions: parentRoute.templateTreePositions,
|
|
@@ -679,53 +702,61 @@ function findSlotConfigLayoutTreePositions(slotDir, layoutPaths) {
|
|
|
679
702
|
return relativeDir ? relativeDir.split(path.sep).filter(Boolean).length : 0;
|
|
680
703
|
});
|
|
681
704
|
}
|
|
705
|
+
/**
|
|
706
|
+
* The tree position of a slot's active page relative to the slot root, in the
|
|
707
|
+
* coordinates of configLayoutTreePositions. Route groups count, unlike in
|
|
708
|
+
* `routeSegments`, since each is its own loader-tree segment.
|
|
709
|
+
*/
|
|
710
|
+
function findSlotPageTreePosition(slot) {
|
|
711
|
+
return slot.pagePath ? findSlotConfigLayoutTreePositions(slot.ownerDir, [slot.pagePath])[0] : null;
|
|
712
|
+
}
|
|
682
713
|
function findSlotLoadingEntries(slotDir, pagePath, matcher) {
|
|
714
|
+
return findSlotSegmentFileEntries(slotDir, pagePath, "loading", matcher);
|
|
715
|
+
}
|
|
716
|
+
/** Find a convention file in each directory from the slot root to the page, outermost first. */
|
|
717
|
+
function findSlotSegmentFileEntries(slotDir, pagePath, fileName, matcher) {
|
|
683
718
|
const pageDir = pagePath ? path.dirname(pagePath) : slotDir;
|
|
684
719
|
if (pageDir !== slotDir && !pageDir.startsWith(`${slotDir}${path.sep}`)) return [];
|
|
685
720
|
const relativeDir = path.relative(slotDir, pageDir);
|
|
686
721
|
const segments = relativeDir ? relativeDir.split(path.sep).filter(Boolean) : [];
|
|
687
|
-
const
|
|
722
|
+
const entries = [];
|
|
688
723
|
let currentDir = slotDir;
|
|
689
|
-
const
|
|
690
|
-
if (
|
|
691
|
-
path:
|
|
724
|
+
const rootEntry = findFile(currentDir, fileName, matcher);
|
|
725
|
+
if (rootEntry) entries.push({
|
|
726
|
+
path: rootEntry,
|
|
692
727
|
treePosition: 0
|
|
693
728
|
});
|
|
694
729
|
for (let index = 0; index < segments.length; index++) {
|
|
695
730
|
currentDir = path.join(currentDir, segments[index]);
|
|
696
|
-
const
|
|
697
|
-
if (
|
|
698
|
-
path:
|
|
731
|
+
const entry = findFile(currentDir, fileName, matcher);
|
|
732
|
+
if (entry) entries.push({
|
|
733
|
+
path: entry,
|
|
699
734
|
treePosition: index + 1
|
|
700
735
|
});
|
|
701
736
|
}
|
|
702
|
-
return
|
|
737
|
+
return entries;
|
|
703
738
|
}
|
|
704
739
|
function withSlotLoadingEntries(slot, pagePath, matcher) {
|
|
705
740
|
const loadingEntries = findSlotLoadingEntries(slot.ownerDir, pagePath, matcher);
|
|
706
741
|
return {
|
|
707
742
|
...slot,
|
|
708
743
|
loadingPaths: loadingEntries.map((entry) => entry.path),
|
|
709
|
-
loadingTreePositions: loadingEntries.map((entry) => entry.treePosition)
|
|
744
|
+
loadingTreePositions: loadingEntries.map((entry) => entry.treePosition),
|
|
745
|
+
...findSlotNotFoundFields(slot.ownerDir, pagePath, matcher)
|
|
710
746
|
};
|
|
711
747
|
}
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
path: boundaryPath,
|
|
720
|
-
treePosition: relativeDir ? relativeDir.split(path.sep).filter(Boolean).length : 0
|
|
721
|
-
};
|
|
722
|
-
}
|
|
723
|
-
if (dir === slotDir) break;
|
|
724
|
-
dir = path.dirname(dir);
|
|
725
|
-
}
|
|
748
|
+
/**
|
|
749
|
+
* Every not-found convention on the slot's active branch, plus the nearest one,
|
|
750
|
+
* which supplies the slot's not-found metadata.
|
|
751
|
+
*/
|
|
752
|
+
function findSlotNotFoundFields(slotDir, pagePath, matcher) {
|
|
753
|
+
const entries = findSlotSegmentFileEntries(slotDir, pagePath, "not-found", matcher);
|
|
754
|
+
const nearest = entries.at(-1);
|
|
726
755
|
return {
|
|
727
|
-
|
|
728
|
-
|
|
756
|
+
notFoundPath: nearest?.path ?? null,
|
|
757
|
+
notFoundTreePosition: nearest?.treePosition ?? null,
|
|
758
|
+
notFoundPaths: entries.map((entry) => entry.path),
|
|
759
|
+
notFoundTreePositions: entries.map((entry) => entry.treePosition)
|
|
729
760
|
};
|
|
730
761
|
}
|
|
731
762
|
/**
|
|
@@ -801,6 +832,10 @@ function directoryToAppRoute(dir, appDir, matcher, pagePath, routePath, includeN
|
|
|
801
832
|
const notFoundPaths = discoverBoundaryFilePerLayout(layouts, "not-found", matcher);
|
|
802
833
|
const forbiddenPaths = discoverBoundaryFilePerLayout(layouts, "forbidden", matcher);
|
|
803
834
|
const unauthorizedPaths = discoverBoundaryFilePerLayout(layouts, "unauthorized", matcher);
|
|
835
|
+
const discoverPageSegmentBoundaryFiles = (fileName) => pagePath === null && routePath !== null ? [] : discoverSegmentBoundaryFiles(segments, appDir, fileName, matcher);
|
|
836
|
+
const segmentNotFounds = discoverPageSegmentBoundaryFiles("not-found");
|
|
837
|
+
const segmentForbiddens = discoverPageSegmentBoundaryFiles("forbidden");
|
|
838
|
+
const segmentUnauthorizeds = discoverPageSegmentBoundaryFiles("unauthorized");
|
|
804
839
|
const parallelSlots = discoverInheritedParallelSlots(segments, appDir, routeDir, matcher, includeNestedOnlySlots);
|
|
805
840
|
return {
|
|
806
841
|
ids: createAppRouteSemanticIds({
|
|
@@ -833,6 +868,12 @@ function directoryToAppRoute(dir, appDir, matcher, pagePath, routePath, includeN
|
|
|
833
868
|
forbiddenTreePosition: forbiddenEntry?.treePosition ?? null,
|
|
834
869
|
unauthorizedPath,
|
|
835
870
|
unauthorizedTreePosition: unauthorizedEntry?.treePosition ?? null,
|
|
871
|
+
segmentNotFoundPaths: segmentNotFounds.map((entry) => entry.path),
|
|
872
|
+
segmentNotFoundTreePositions: segmentNotFounds.map((entry) => entry.treePosition),
|
|
873
|
+
segmentForbiddenPaths: segmentForbiddens.map((entry) => entry.path),
|
|
874
|
+
segmentForbiddenTreePositions: segmentForbiddens.map((entry) => entry.treePosition),
|
|
875
|
+
segmentUnauthorizedPaths: segmentUnauthorizeds.map((entry) => entry.path),
|
|
876
|
+
segmentUnauthorizedTreePositions: segmentUnauthorizeds.map((entry) => entry.treePosition),
|
|
836
877
|
unauthorizedPaths,
|
|
837
878
|
routeSegments: segments,
|
|
838
879
|
templateTreePositions,
|
|
@@ -1034,6 +1075,24 @@ function discoverBoundaryFileEntry(segments, appDir, fileName, matcher) {
|
|
|
1034
1075
|
return null;
|
|
1035
1076
|
}
|
|
1036
1077
|
/**
|
|
1078
|
+
* Discover boundary files (not-found, forbidden, unauthorized) by segment tree
|
|
1079
|
+
* position. As with error.tsx, Next.js wraps each segment's children in its
|
|
1080
|
+
* boundary whether or not the segment has a layout.
|
|
1081
|
+
*/
|
|
1082
|
+
function discoverSegmentBoundaryFiles(segments, appDir, fileName, matcher) {
|
|
1083
|
+
const boundaries = [];
|
|
1084
|
+
let currentDir = appDir;
|
|
1085
|
+
for (let index = 0; index <= segments.length; index++) {
|
|
1086
|
+
if (index > 0) currentDir = path.join(currentDir, segments[index - 1]);
|
|
1087
|
+
const boundary = findFile(currentDir, fileName, matcher);
|
|
1088
|
+
if (boundary) boundaries.push({
|
|
1089
|
+
path: boundary,
|
|
1090
|
+
treePosition: index
|
|
1091
|
+
});
|
|
1092
|
+
}
|
|
1093
|
+
return boundaries;
|
|
1094
|
+
}
|
|
1095
|
+
/**
|
|
1037
1096
|
* Discover boundary files (not-found, forbidden, unauthorized) at each layout directory.
|
|
1038
1097
|
* Returns an array aligned with the layouts array, where each entry is the boundary
|
|
1039
1098
|
* file at that layout's directory, or null if none exists there.
|
|
@@ -1271,7 +1330,6 @@ function discoverParallelSlots(dir, appDir, matcher, includeNestedOnlySlots = fa
|
|
|
1271
1330
|
const ownerTreePath = createAppRouteGraphTreePath(ownerSegments, ownerSegments.length);
|
|
1272
1331
|
const configLayoutPaths = findSlotConfigLayoutPaths(slotDir, pagePath, matcher);
|
|
1273
1332
|
const loadingEntries = findSlotLoadingEntries(slotDir, pagePath, matcher);
|
|
1274
|
-
const notFoundBoundary = findSlotNotFoundBoundary(slotDir, pagePath, matcher);
|
|
1275
1333
|
slots.push({
|
|
1276
1334
|
id: createAppRouteGraphSlotId(slotName, ownerTreePath),
|
|
1277
1335
|
key: `${slotName}@${path.relative(appDir, slotDir)}`,
|
|
@@ -1289,8 +1347,7 @@ function discoverParallelSlots(dir, appDir, matcher, includeNestedOnlySlots = fa
|
|
|
1289
1347
|
loadingPaths: loadingEntries.map((loading) => loading.path),
|
|
1290
1348
|
loadingTreePositions: loadingEntries.map((loading) => loading.treePosition),
|
|
1291
1349
|
errorPath: findFile(slotDir, "error", matcher),
|
|
1292
|
-
|
|
1293
|
-
notFoundTreePosition: notFoundBoundary.treePosition,
|
|
1350
|
+
...findSlotNotFoundFields(slotDir, pagePath, matcher),
|
|
1294
1351
|
interceptingRoutes,
|
|
1295
1352
|
layoutIndex: -1,
|
|
1296
1353
|
routeSegments: pagePath ? [] : null
|
|
@@ -1440,7 +1497,7 @@ function findOwnerRouteForDir(dir, appDir, routes, routesByDir) {
|
|
|
1440
1497
|
* Recursively scan a directory tree for page.tsx files that are inside
|
|
1441
1498
|
* intercepting route directories.
|
|
1442
1499
|
*/
|
|
1443
|
-
function scanForInterceptingPages(currentDir, slotRootDir, routeDir, appDir, results, matcher, parentLoadingEntries = []) {
|
|
1500
|
+
function scanForInterceptingPages(currentDir, slotRootDir, routeDir, appDir, results, matcher, parentLoadingEntries = [], parentLayoutPaths = []) {
|
|
1444
1501
|
if (!fs.existsSync(currentDir)) return;
|
|
1445
1502
|
const entries = fs.readdirSync(currentDir, { withFileTypes: true });
|
|
1446
1503
|
for (const entry of entries) {
|
|
@@ -1450,13 +1507,14 @@ function scanForInterceptingPages(currentDir, slotRootDir, routeDir, appDir, res
|
|
|
1450
1507
|
const interceptDir = path.join(currentDir, entry.name);
|
|
1451
1508
|
if (interceptMatch) {
|
|
1452
1509
|
const restOfName = entry.name.slice(interceptMatch.prefix.length);
|
|
1453
|
-
collectInterceptingPages(interceptDir, interceptDir, interceptMatch.convention, restOfName, routeDir, appDir, currentDir, slotRootDir, results, matcher,
|
|
1510
|
+
collectInterceptingPages(interceptDir, interceptDir, interceptMatch.convention, restOfName, routeDir, appDir, currentDir, slotRootDir, results, matcher, parentLayoutPaths, parentLoadingEntries, path.relative(slotRootDir, currentDir).split(path.sep).filter(Boolean).length);
|
|
1454
1511
|
} else {
|
|
1512
|
+
const layout = findFile(interceptDir, "layout", matcher);
|
|
1455
1513
|
const loading = findFile(interceptDir, "loading", matcher);
|
|
1456
1514
|
scanForInterceptingPages(interceptDir, slotRootDir, routeDir, appDir, results, matcher, loading ? [...parentLoadingEntries, {
|
|
1457
1515
|
path: loading,
|
|
1458
1516
|
treePosition: path.relative(slotRootDir, interceptDir).split(path.sep).filter(Boolean).length
|
|
1459
|
-
}] : parentLoadingEntries);
|
|
1517
|
+
}] : parentLoadingEntries, layout ? [...parentLayoutPaths, layout] : parentLayoutPaths);
|
|
1460
1518
|
}
|
|
1461
1519
|
}
|
|
1462
1520
|
}
|
|
@@ -1486,7 +1544,15 @@ function collectInterceptingPages(currentDir, interceptRoot, convention, interce
|
|
|
1486
1544
|
const targetPattern = computeInterceptTarget(convention, interceptSegment, currentDir, interceptRoot, routeDir, appDir);
|
|
1487
1545
|
if (targetPattern) {
|
|
1488
1546
|
const sourceMatchPattern = computeInterceptSourceMatchPattern(interceptParentDir, appDir);
|
|
1489
|
-
const
|
|
1547
|
+
const notFoundTreePositionOffset = slotRootDir ? 0 : 1;
|
|
1548
|
+
const notFoundFields = findSlotNotFoundFields(slotRootDir ?? interceptRoot, page, matcher);
|
|
1549
|
+
const findInterceptBoundaries = (fileName) => findSlotSegmentFileEntries(slotRootDir ?? interceptRoot, page, fileName, matcher).map((entry) => ({
|
|
1550
|
+
path: entry.path,
|
|
1551
|
+
treePosition: entry.treePosition + notFoundTreePositionOffset
|
|
1552
|
+
}));
|
|
1553
|
+
const forbiddenBoundaries = findInterceptBoundaries("forbidden");
|
|
1554
|
+
const unauthorizedBoundaries = findInterceptBoundaries("unauthorized");
|
|
1555
|
+
const errorBoundaries = findInterceptBoundaries("error");
|
|
1490
1556
|
const slotParentSegments = slotRootDir ? path.relative(slotRootDir, interceptParentDir).split(path.sep).filter(Boolean) : [];
|
|
1491
1557
|
const branchSegments = [
|
|
1492
1558
|
...slotParentSegments,
|
|
@@ -1498,7 +1564,9 @@ function collectInterceptingPages(currentDir, interceptRoot, convention, interce
|
|
|
1498
1564
|
convention,
|
|
1499
1565
|
layoutPaths: [...layoutPaths],
|
|
1500
1566
|
layoutSegments: layoutPaths.map((layoutPath) => {
|
|
1501
|
-
const
|
|
1567
|
+
const layoutDir = path.dirname(layoutPath);
|
|
1568
|
+
if (slotRootDir && layoutDir !== interceptRoot && !layoutDir.startsWith(`${interceptRoot}${path.sep}`)) return path.relative(slotRootDir, layoutDir).split(path.sep).filter(Boolean);
|
|
1569
|
+
const relativeDir = path.relative(interceptRoot, layoutDir);
|
|
1502
1570
|
return [
|
|
1503
1571
|
...slotParentSegments,
|
|
1504
1572
|
interceptSegment,
|
|
@@ -1508,8 +1576,20 @@ function collectInterceptingPages(currentDir, interceptRoot, convention, interce
|
|
|
1508
1576
|
loadingPaths: loadingEntries.map((loading) => loading.path),
|
|
1509
1577
|
loadingTreePositions: loadingEntries.map((loading) => loading.treePosition),
|
|
1510
1578
|
notFoundBranchSegments: branchSegments,
|
|
1511
|
-
notFoundPath:
|
|
1512
|
-
notFoundTreePosition:
|
|
1579
|
+
notFoundPath: notFoundFields.notFoundPath,
|
|
1580
|
+
notFoundTreePosition: notFoundFields.notFoundTreePosition == null ? null : notFoundFields.notFoundTreePosition + notFoundTreePositionOffset,
|
|
1581
|
+
notFoundPaths: notFoundFields.notFoundPaths,
|
|
1582
|
+
notFoundTreePositions: notFoundFields.notFoundTreePositions?.map((treePosition) => treePosition + notFoundTreePositionOffset),
|
|
1583
|
+
forbiddenPath: forbiddenBoundaries.at(-1)?.path ?? null,
|
|
1584
|
+
forbiddenTreePosition: forbiddenBoundaries.at(-1)?.treePosition ?? null,
|
|
1585
|
+
forbiddenPaths: forbiddenBoundaries.map((boundary) => boundary.path),
|
|
1586
|
+
forbiddenTreePositions: forbiddenBoundaries.map((boundary) => boundary.treePosition),
|
|
1587
|
+
unauthorizedPath: unauthorizedBoundaries.at(-1)?.path ?? null,
|
|
1588
|
+
unauthorizedTreePosition: unauthorizedBoundaries.at(-1)?.treePosition ?? null,
|
|
1589
|
+
unauthorizedPaths: unauthorizedBoundaries.map((boundary) => boundary.path),
|
|
1590
|
+
unauthorizedTreePositions: unauthorizedBoundaries.map((boundary) => boundary.treePosition),
|
|
1591
|
+
errorPaths: errorBoundaries.map((boundary) => boundary.path),
|
|
1592
|
+
errorTreePositions: errorBoundaries.map((boundary) => boundary.treePosition),
|
|
1513
1593
|
targetPattern: targetPattern.pattern,
|
|
1514
1594
|
sourceMatchPattern,
|
|
1515
1595
|
pagePath: page,
|
|
@@ -1751,4 +1831,4 @@ function computeAppRouteStaticSiblings(allRoutes, matchedRoute) {
|
|
|
1751
1831
|
return Array.from(siblings);
|
|
1752
1832
|
}
|
|
1753
1833
|
//#endregion
|
|
1754
|
-
export { buildAppRouteGraph, computeAppRouteStaticSiblings, computeRootParamNames, convertSegmentsToRouteParts, findOwnerRouteForDir, isInvisibleSegment, patternsStructurallyEquivalent };
|
|
1834
|
+
export { buildAppRouteGraph, computeAppRouteStaticSiblings, computeRootParamNames, convertSegmentsToRouteParts, findOwnerRouteForDir, findSlotPageTreePosition, isInvisibleSegment, patternsStructurallyEquivalent };
|
|
@@ -40,4 +40,5 @@ export type BrowserRouteManifestWire = {
|
|
|
40
40
|
};
|
|
41
41
|
export declare function toBrowserRouteManifestWire(routeManifest: RouteManifest): BrowserRouteManifestWire;
|
|
42
42
|
export declare function decodeBrowserRouteManifest(wire: BrowserRouteManifestWire): BrowserRouteManifest;
|
|
43
|
-
//#endregion
|
|
43
|
+
//#endregion
|
|
44
|
+
export {};
|
|
@@ -24,4 +24,5 @@ export type OptimisticRouteTrieMatch<Route extends OptimisticTrieRoute> = {
|
|
|
24
24
|
};
|
|
25
25
|
export declare function buildOptimisticRouteTrie<Route extends OptimisticTrieRoute>(routes: Iterable<Route>, onDynamicSegmentConflict?: (existingParamName: string, part: string) => void): OptimisticRouteTrieNode<Route>;
|
|
26
26
|
export declare function matchOptimisticRouteTrie<Route extends OptimisticTrieRoute>(trie: OptimisticRouteTrieNode<Route>, urlParts: readonly string[]): OptimisticRouteTrieMatch<Route> | null;
|
|
27
|
-
//#endregion
|
|
27
|
+
//#endregion
|
|
28
|
+
export {};
|
|
@@ -68,4 +68,5 @@ export declare function normalizeStaticPathname(pathname: string): string;
|
|
|
68
68
|
* locale handling should be added here, not duplicated at call sites.
|
|
69
69
|
*/
|
|
70
70
|
export declare function normalizeStaticPathsEntry(entry: StaticPathsEntry, routePattern: string): NormalizedStaticPathsEntry;
|
|
71
|
-
//#endregion
|
|
71
|
+
//#endregion
|
|
72
|
+
export {};
|
|
@@ -23,4 +23,5 @@ export declare function selectContentEncoding<T extends ContentEncoding>(parsed:
|
|
|
23
23
|
export declare const HAS_ZSTD: boolean;
|
|
24
24
|
/** Select by client q-value first, then zstd > br > gzip > deflate > identity. */
|
|
25
25
|
export declare function negotiateEncoding(req: IncomingMessage): NegotiatedEncoding;
|
|
26
|
-
//#endregion
|
|
26
|
+
//#endregion
|
|
27
|
+
export {};
|
|
@@ -7,13 +7,14 @@ import { importModule, reportRequestError } from "./instrumentation.js";
|
|
|
7
7
|
import { mergeRouteParamsIntoQuery, parseQueryString, urlQueryToSearchParams } from "../utils/query.js";
|
|
8
8
|
import { tracePagesApiHandler } from "./pages-execution-tracing.js";
|
|
9
9
|
import { DEFAULT_PAGES_API_BODY_SIZE_LIMIT, resolveBodyParserConfig } from "./pages-body-parser-config.js";
|
|
10
|
-
import { PagesBodyParseError,
|
|
10
|
+
import { PagesBodyParseError, createPagesBodyDecoder, isJsonMediaType } from "./pages-media-type.js";
|
|
11
11
|
import { performOnDemandRevalidate } from "./pages-revalidate.js";
|
|
12
12
|
import { attachPagesPreviewApi, attachPagesRequestCookies } from "./pages-node-compat.js";
|
|
13
13
|
import { finalizeEdgeApiResponse, isEdgeApiRuntime } from "./edge-api-runtime.js";
|
|
14
14
|
import { signalFromNodeResponse } from "./node-response-signal.js";
|
|
15
15
|
import { Buffer } from "node:buffer";
|
|
16
16
|
import { decode } from "node:querystring";
|
|
17
|
+
import { Stream } from "node:stream";
|
|
17
18
|
//#region src/server/api-handler.ts
|
|
18
19
|
/**
|
|
19
20
|
* Default request body size (1 MB). Matches Next.js default bodyParser sizeLimit.
|
|
@@ -32,6 +33,8 @@ const MAX_BODY_SIZE = DEFAULT_PAGES_API_BODY_SIZE_LIMIT;
|
|
|
32
33
|
* HMAC signature verification).
|
|
33
34
|
*/
|
|
34
35
|
async function parseBody(req, sizeLimit = MAX_BODY_SIZE) {
|
|
36
|
+
const { mediaType, decoder } = await createPagesBodyDecoder(req.headers["content-type"]);
|
|
37
|
+
if (req.destroyed) throw req.errored ?? /* @__PURE__ */ new Error("Request aborted");
|
|
35
38
|
return new Promise((resolve, reject) => {
|
|
36
39
|
const chunks = [];
|
|
37
40
|
let totalSize = 0;
|
|
@@ -55,10 +58,10 @@ async function parseBody(req, sizeLimit = MAX_BODY_SIZE) {
|
|
|
55
58
|
req.on("end", () => {
|
|
56
59
|
if (settled) return;
|
|
57
60
|
settled = true;
|
|
58
|
-
const
|
|
59
|
-
const
|
|
61
|
+
const body = Buffer.concat(chunks);
|
|
62
|
+
const raw = decoder.decode(body);
|
|
60
63
|
if (!raw) {
|
|
61
|
-
resolve(isJsonMediaType(mediaType) ? {} : mediaType === "application/x-www-form-urlencoded" ? decode(raw) : void 0);
|
|
64
|
+
resolve(isJsonMediaType(mediaType) ? {} : mediaType === "application/x-www-form-urlencoded" ? decode(raw) : body.length > 0 ? raw : void 0);
|
|
62
65
|
return;
|
|
63
66
|
}
|
|
64
67
|
if (isJsonMediaType(mediaType)) try {
|
|
@@ -188,6 +191,18 @@ function enhanceApiObjects(req, res, query, body, trustedRevalidateOrigin, allow
|
|
|
188
191
|
this.end(JSON.stringify(data));
|
|
189
192
|
},
|
|
190
193
|
send(data) {
|
|
194
|
+
if (this.statusCode === 204 || this.statusCode === 304) {
|
|
195
|
+
this.removeHeader("Content-Type");
|
|
196
|
+
this.removeHeader("Content-Length");
|
|
197
|
+
this.removeHeader("Transfer-Encoding");
|
|
198
|
+
this.end();
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (data instanceof Stream) {
|
|
202
|
+
if (!this.getHeader("Content-Type")) this.setHeader("Content-Type", "application/octet-stream");
|
|
203
|
+
data.pipe(this);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
191
206
|
if (Buffer.isBuffer(data)) {
|
|
192
207
|
if (!this.getHeader("Content-Type")) this.setHeader("Content-Type", "application/octet-stream");
|
|
193
208
|
this.setHeader("Content-Length", String(data.length));
|
|
@@ -22,4 +22,5 @@ export declare function createForwardedActionContext(executionContext: Execution
|
|
|
22
22
|
actionForwarded: true;
|
|
23
23
|
} & Partial<ExecutionContextLike>;
|
|
24
24
|
export declare function forwardServerActionIfNeeded(options: ForwardServerActionOptions): Promise<Response | null>;
|
|
25
|
-
//#endregion
|
|
25
|
+
//#endregion
|
|
26
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AppElementsWire } from "./app-elements-wire.js";
|
|
2
2
|
import "./app-elements.js";
|
|
3
|
-
import { isNestedBfcacheSlotSegmentIdFor } from "./bfcache-identity.js";
|
|
4
3
|
import { isBfcacheSegmentId } from "./app-bfcache-id.js";
|
|
4
|
+
import { isNestedBfcacheSlotSegmentIdFor } from "./bfcache-identity.js";
|
|
5
5
|
//#region src/server/app-bfcache-identity.ts
|
|
6
6
|
let nextBfcacheId = 0;
|
|
7
7
|
function rememberBfcacheId(value) {
|
|
@@ -62,4 +62,5 @@ type DiscardedServerActionRefreshSchedulerOptions = {
|
|
|
62
62
|
runRefresh: () => void;
|
|
63
63
|
};
|
|
64
64
|
export declare function createDiscardedServerActionRefreshScheduler(options: DiscardedServerActionRefreshSchedulerOptions): DiscardedServerActionRefreshScheduler;
|
|
65
|
-
//#endregion
|
|
65
|
+
//#endregion
|
|
66
|
+
export {};
|