vinext 0.0.49 → 0.0.50
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/dist/build/client-build-config.js.map +1 -1
- package/dist/build/google-fonts/build-url.js.map +1 -1
- package/dist/build/google-fonts/get-axes.js.map +1 -1
- package/dist/build/google-fonts/sort-variants.js.map +1 -1
- package/dist/build/google-fonts/validate.js.map +1 -1
- package/dist/build/layout-classification.js.map +1 -1
- package/dist/build/nitro-route-rules.js.map +1 -1
- package/dist/build/precompress.js.map +1 -1
- package/dist/build/prerender.d.ts +17 -1
- package/dist/build/prerender.js +77 -16
- package/dist/build/prerender.js.map +1 -1
- package/dist/build/report.js.map +1 -1
- package/dist/build/route-classification-injector.js.map +1 -1
- package/dist/build/route-classification-manifest.js.map +1 -1
- package/dist/build/run-prerender.js.map +1 -1
- package/dist/build/server-manifest.js.map +1 -1
- package/dist/build/ssr-manifest.js.map +1 -1
- package/dist/build/standalone.js.map +1 -1
- package/dist/build/static-export.js.map +1 -1
- package/dist/check.js +1 -1
- package/dist/check.js.map +1 -1
- package/dist/cli-args.js.map +1 -1
- package/dist/cli.js +8 -4
- package/dist/cli.js.map +1 -1
- package/dist/client/instrumentation-client-state.js.map +1 -1
- package/dist/client/validate-module-path.js.map +1 -1
- package/dist/client/vinext-next-data.d.ts +5 -1
- package/dist/client/window-next.d.ts +149 -0
- package/dist/client/window-next.js +48 -0
- package/dist/client/window-next.js.map +1 -0
- package/dist/cloudflare/kv-cache-handler.js.map +1 -1
- package/dist/cloudflare/tpr.js +2 -1
- package/dist/cloudflare/tpr.js.map +1 -1
- package/dist/config/config-matchers.d.ts +3 -1
- package/dist/config/config-matchers.js +5 -4
- package/dist/config/config-matchers.js.map +1 -1
- package/dist/config/dotenv.js.map +1 -1
- package/dist/config/next-config.d.ts +6 -3
- package/dist/config/next-config.js +13 -2
- package/dist/config/next-config.js.map +1 -1
- package/dist/deploy.js +13 -5
- package/dist/deploy.js.map +1 -1
- package/dist/entries/app-browser-entry.d.ts +3 -1
- package/dist/entries/app-browser-entry.js +11 -2
- package/dist/entries/app-browser-entry.js.map +1 -1
- package/dist/entries/app-rsc-entry.js +11 -0
- package/dist/entries/app-rsc-entry.js.map +1 -1
- package/dist/entries/app-rsc-manifest.js +4 -0
- package/dist/entries/app-rsc-manifest.js.map +1 -1
- package/dist/entries/app-ssr-entry.js.map +1 -1
- package/dist/entries/pages-client-entry.js.map +1 -1
- package/dist/entries/pages-entry-helpers.js.map +1 -1
- package/dist/entries/pages-server-entry.js +15 -0
- package/dist/entries/pages-server-entry.js.map +1 -1
- package/dist/entries/runtime-entry-module.js.map +1 -1
- package/dist/index.js +76 -18
- package/dist/index.js.map +1 -1
- package/dist/init.js.map +1 -1
- package/dist/plugins/async-hooks-stub.js.map +1 -1
- package/dist/plugins/client-reference-dedup.js.map +1 -1
- package/dist/plugins/fonts.js.map +1 -1
- package/dist/plugins/instrumentation-client.js.map +1 -1
- package/dist/plugins/og-assets.js.map +1 -1
- package/dist/plugins/optimize-imports.js.map +1 -1
- package/dist/plugins/postcss.js.map +1 -1
- package/dist/plugins/rsc-client-reference-loaders.d.ts +7 -0
- package/dist/plugins/rsc-client-reference-loaders.js +48 -0
- package/dist/plugins/rsc-client-reference-loaders.js.map +1 -0
- package/dist/plugins/rsc-client-shim-excludes.js.map +1 -1
- package/dist/plugins/server-externals-manifest.js.map +1 -1
- package/dist/plugins/strip-server-exports.js.map +1 -1
- package/dist/routing/app-route-graph.d.ts +48 -5
- package/dist/routing/app-route-graph.js +159 -15
- package/dist/routing/app-route-graph.js.map +1 -1
- package/dist/routing/app-router.js.map +1 -1
- package/dist/routing/file-matcher.js.map +1 -1
- package/dist/routing/pages-router.js.map +1 -1
- package/dist/routing/route-matching.js.map +1 -1
- package/dist/routing/route-pattern.js.map +1 -1
- package/dist/routing/route-trie.js.map +1 -1
- package/dist/routing/route-validation.js.map +1 -1
- package/dist/routing/utils.js.map +1 -1
- package/dist/server/api-handler.js.map +1 -1
- package/dist/server/app-browser-action-result.d.ts +19 -0
- package/dist/server/app-browser-action-result.js +18 -0
- package/dist/server/app-browser-action-result.js.map +1 -0
- package/dist/server/app-browser-entry.js +91 -48
- package/dist/server/app-browser-entry.js.map +1 -1
- package/dist/server/app-browser-error.js.map +1 -1
- package/dist/server/app-browser-hydration.d.ts +19 -0
- package/dist/server/app-browser-hydration.js +22 -0
- package/dist/server/app-browser-hydration.js.map +1 -0
- package/dist/server/app-browser-navigation-controller.d.ts +6 -3
- package/dist/server/app-browser-navigation-controller.js +67 -19
- package/dist/server/app-browser-navigation-controller.js.map +1 -1
- package/dist/server/app-browser-state.d.ts +17 -17
- package/dist/server/app-browser-state.js +122 -36
- package/dist/server/app-browser-state.js.map +1 -1
- package/dist/server/app-browser-stream.d.ts +4 -0
- package/dist/server/app-browser-stream.js +24 -2
- package/dist/server/app-browser-stream.js.map +1 -1
- package/dist/server/app-browser-visible-commit.d.ts +6 -1
- package/dist/server/app-browser-visible-commit.js +34 -19
- package/dist/server/app-browser-visible-commit.js.map +1 -1
- package/dist/server/app-client-reference-preloader.js.map +1 -1
- package/dist/server/app-elements-wire.d.ts +6 -1
- package/dist/server/app-elements-wire.js +17 -1
- package/dist/server/app-elements-wire.js.map +1 -1
- package/dist/server/app-elements.d.ts +2 -2
- package/dist/server/app-elements.js +2 -2
- package/dist/server/app-elements.js.map +1 -1
- package/dist/server/app-fallback-renderer.js.map +1 -1
- package/dist/server/app-hook-warning-suppression.js.map +1 -1
- package/dist/server/app-middleware.d.ts +1 -1
- package/dist/server/app-middleware.js +4 -9
- package/dist/server/app-middleware.js.map +1 -1
- package/dist/server/app-mounted-slots-header.js.map +1 -1
- package/dist/server/app-page-boundary-render.d.ts +1 -0
- package/dist/server/app-page-boundary-render.js +14 -13
- package/dist/server/app-page-boundary-render.js.map +1 -1
- package/dist/server/app-page-boundary.d.ts +1 -0
- package/dist/server/app-page-boundary.js +7 -5
- package/dist/server/app-page-boundary.js.map +1 -1
- package/dist/server/app-page-cache.d.ts +10 -3
- package/dist/server/app-page-cache.js +42 -23
- package/dist/server/app-page-cache.js.map +1 -1
- package/dist/server/app-page-dispatch.d.ts +6 -1
- package/dist/server/app-page-dispatch.js +21 -7
- package/dist/server/app-page-dispatch.js.map +1 -1
- package/dist/server/app-page-element-builder.d.ts +3 -1
- package/dist/server/app-page-element-builder.js +6 -2
- package/dist/server/app-page-element-builder.js.map +1 -1
- package/dist/server/app-page-execution.js.map +1 -1
- package/dist/server/app-page-head.js +4 -0
- package/dist/server/app-page-head.js.map +1 -1
- package/dist/server/app-page-method.js.map +1 -1
- package/dist/server/app-page-params.js.map +1 -1
- package/dist/server/app-page-probe.js.map +1 -1
- package/dist/server/app-page-render.d.ts +7 -1
- package/dist/server/app-page-render.js +11 -4
- package/dist/server/app-page-render.js.map +1 -1
- package/dist/server/app-page-request.js +2 -1
- package/dist/server/app-page-request.js.map +1 -1
- package/dist/server/app-page-response.d.ts +2 -0
- package/dist/server/app-page-response.js +15 -5
- package/dist/server/app-page-response.js.map +1 -1
- package/dist/server/app-page-route-wiring.d.ts +6 -2
- package/dist/server/app-page-route-wiring.js +50 -49
- package/dist/server/app-page-route-wiring.js.map +1 -1
- package/dist/server/app-page-segment-state.d.ts +10 -0
- package/dist/server/app-page-segment-state.js +87 -0
- package/dist/server/app-page-segment-state.js.map +1 -0
- package/dist/server/app-page-stream.d.ts +7 -2
- package/dist/server/app-page-stream.js +3 -1
- package/dist/server/app-page-stream.js.map +1 -1
- package/dist/server/app-post-middleware-context.js.map +1 -1
- package/dist/server/app-prerender-endpoints.js.map +1 -1
- package/dist/server/app-prerender-static-params.js.map +1 -1
- package/dist/server/app-render-dependency.js.map +1 -1
- package/dist/server/app-request-context.js.map +1 -1
- package/dist/server/app-route-handler-cache.js.map +1 -1
- package/dist/server/app-route-handler-dispatch.js +3 -1
- package/dist/server/app-route-handler-dispatch.js.map +1 -1
- package/dist/server/app-route-handler-execution.js.map +1 -1
- package/dist/server/app-route-handler-policy.js +1 -0
- package/dist/server/app-route-handler-policy.js.map +1 -1
- package/dist/server/app-route-handler-response.js +4 -3
- package/dist/server/app-route-handler-response.js.map +1 -1
- package/dist/server/app-route-handler-runtime.js.map +1 -1
- package/dist/server/app-router-entry.js +6 -2
- package/dist/server/app-router-entry.js.map +1 -1
- package/dist/server/app-rsc-cache-busting.d.ts +5 -2
- package/dist/server/app-rsc-cache-busting.js +40 -19
- package/dist/server/app-rsc-cache-busting.js.map +1 -1
- package/dist/server/app-rsc-error-handler.js.map +1 -1
- package/dist/server/app-rsc-errors.js.map +1 -1
- package/dist/server/app-rsc-handler.d.ts +10 -1
- package/dist/server/app-rsc-handler.js +51 -17
- package/dist/server/app-rsc-handler.js.map +1 -1
- package/dist/server/app-rsc-render-mode.d.ts +11 -0
- package/dist/server/app-rsc-render-mode.js +21 -0
- package/dist/server/app-rsc-render-mode.js.map +1 -0
- package/dist/server/app-rsc-request-normalization.d.ts +4 -1
- package/dist/server/app-rsc-request-normalization.js +7 -2
- package/dist/server/app-rsc-request-normalization.js.map +1 -1
- package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
- package/dist/server/app-rsc-response-finalizer.js +6 -1
- package/dist/server/app-rsc-response-finalizer.js.map +1 -1
- package/dist/server/app-rsc-route-matching.js.map +1 -1
- package/dist/server/app-segment-config.js.map +1 -1
- package/dist/server/app-server-action-execution.d.ts +16 -2
- package/dist/server/app-server-action-execution.js +79 -23
- package/dist/server/app-server-action-execution.js.map +1 -1
- package/dist/server/app-ssr-entry.d.ts +6 -0
- package/dist/server/app-ssr-entry.js +10 -4
- package/dist/server/app-ssr-entry.js.map +1 -1
- package/dist/server/app-ssr-stream.js.map +1 -1
- package/dist/server/app-static-generation.js.map +1 -1
- package/dist/server/artifact-compatibility.js.map +1 -1
- package/dist/server/cache-control.js +1 -0
- package/dist/server/cache-control.js.map +1 -1
- package/dist/server/cache-proof.js.map +1 -1
- package/dist/server/csp.js.map +1 -1
- package/dist/server/dev-error-overlay-store.js.map +1 -1
- package/dist/server/dev-error-overlay.js +5 -0
- package/dist/server/dev-error-overlay.js.map +1 -1
- package/dist/server/dev-module-runner.js.map +1 -1
- package/dist/server/dev-origin-check.js.map +1 -1
- package/dist/server/dev-route-files.js.map +1 -1
- package/dist/server/dev-server.js +8 -5
- package/dist/server/dev-server.js.map +1 -1
- package/dist/server/file-based-metadata.js.map +1 -1
- package/dist/server/headers.d.ts +79 -0
- package/dist/server/headers.js +101 -0
- package/dist/server/headers.js.map +1 -0
- package/dist/server/html.js.map +1 -1
- package/dist/server/http-error-responses.js.map +1 -1
- package/dist/server/image-optimization.d.ts +11 -1
- package/dist/server/image-optimization.js.map +1 -1
- package/dist/server/implicit-tags.js +2 -1
- package/dist/server/implicit-tags.js.map +1 -1
- package/dist/server/instrumentation-runtime.js.map +1 -1
- package/dist/server/instrumentation.js.map +1 -1
- package/dist/server/isr-cache.d.ts +10 -1
- package/dist/server/isr-cache.js +12 -3
- package/dist/server/isr-cache.js.map +1 -1
- package/dist/server/metadata-route-build-data.js.map +1 -1
- package/dist/server/metadata-route-response.js.map +1 -1
- package/dist/server/metadata-routes.js.map +1 -1
- package/dist/server/middleware-matcher.js.map +1 -1
- package/dist/server/middleware-request-headers.d.ts +4 -1
- package/dist/server/middleware-request-headers.js +15 -8
- package/dist/server/middleware-request-headers.js.map +1 -1
- package/dist/server/middleware-response-headers.d.ts +2 -1
- package/dist/server/middleware-response-headers.js +1 -1
- package/dist/server/middleware-response-headers.js.map +1 -1
- package/dist/server/middleware-runtime.d.ts +1 -0
- package/dist/server/middleware-runtime.js +6 -3
- package/dist/server/middleware-runtime.js.map +1 -1
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/navigation-planner.d.ts +119 -0
- package/dist/server/navigation-planner.js +171 -0
- package/dist/server/navigation-planner.js.map +1 -0
- package/dist/server/navigation-trace.d.ts +12 -2
- package/dist/server/navigation-trace.js +13 -1
- package/dist/server/navigation-trace.js.map +1 -1
- package/dist/server/next-error-digest.d.ts +3 -2
- package/dist/server/next-error-digest.js +4 -2
- package/dist/server/next-error-digest.js.map +1 -1
- package/dist/server/normalize-path.js.map +1 -1
- package/dist/server/pages-api-route.js.map +1 -1
- package/dist/server/pages-i18n.js.map +1 -1
- package/dist/server/pages-media-type.js.map +1 -1
- package/dist/server/pages-node-compat.js.map +1 -1
- package/dist/server/pages-page-data.js +5 -2
- package/dist/server/pages-page-data.js.map +1 -1
- package/dist/server/pages-page-response.js +3 -2
- package/dist/server/pages-page-response.js.map +1 -1
- package/dist/server/prerender-work-unit-setup.js +1 -1
- package/dist/server/prerender-work-unit-setup.js.map +1 -1
- package/dist/server/prod-server.js +35 -13
- package/dist/server/prod-server.js.map +1 -1
- package/dist/server/request-log.js.map +1 -1
- package/dist/server/request-pipeline.d.ts +1 -13
- package/dist/server/request-pipeline.js +3 -25
- package/dist/server/request-pipeline.js.map +1 -1
- package/dist/server/rsc-stream-hints.js.map +1 -1
- package/dist/server/seed-cache.js.map +1 -1
- package/dist/server/server-action-not-found.js +3 -3
- package/dist/server/server-action-not-found.js.map +1 -1
- package/dist/server/socket-error-backstop.js.map +1 -1
- package/dist/server/static-file-cache.js.map +1 -1
- package/dist/server/worker-utils.d.ts +0 -7
- package/dist/server/worker-utils.js +3 -2
- package/dist/server/worker-utils.js.map +1 -1
- package/dist/shims/amp.js.map +1 -1
- package/dist/shims/app.d.ts +37 -4
- package/dist/shims/app.js +50 -1
- package/dist/shims/app.js.map +1 -0
- package/dist/shims/cache-for-request.js.map +1 -1
- package/dist/shims/cache-runtime.js +20 -8
- package/dist/shims/cache-runtime.js.map +1 -1
- package/dist/shims/cache.d.ts +15 -3
- package/dist/shims/cache.js +99 -15
- package/dist/shims/cache.js.map +1 -1
- package/dist/shims/client-hook-error.js.map +1 -1
- package/dist/shims/compat-router.js.map +1 -1
- package/dist/shims/config.js.map +1 -1
- package/dist/shims/constants.js.map +1 -1
- package/dist/shims/document.js.map +1 -1
- package/dist/shims/dynamic.d.ts +18 -10
- package/dist/shims/dynamic.js +107 -51
- package/dist/shims/dynamic.js.map +1 -1
- package/dist/shims/error-boundary.d.ts +35 -6
- package/dist/shims/error-boundary.js +118 -33
- package/dist/shims/error-boundary.js.map +1 -1
- package/dist/shims/error.js.map +1 -1
- package/dist/shims/fetch-cache.d.ts +22 -1
- package/dist/shims/fetch-cache.js +124 -13
- package/dist/shims/fetch-cache.js.map +1 -1
- package/dist/shims/font-google-base.js.map +1 -1
- package/dist/shims/font-local.js.map +1 -1
- package/dist/shims/form.js +3 -1
- package/dist/shims/form.js.map +1 -1
- package/dist/shims/head-state.js.map +1 -1
- package/dist/shims/head.d.ts +3 -1
- package/dist/shims/head.js +28 -16
- package/dist/shims/head.js.map +1 -1
- package/dist/shims/headers.d.ts +4 -2
- package/dist/shims/headers.js +24 -7
- package/dist/shims/headers.js.map +1 -1
- package/dist/shims/i18n-context.js.map +1 -1
- package/dist/shims/i18n-state.js.map +1 -1
- package/dist/shims/image-config.d.ts +14 -1
- package/dist/shims/image-config.js +24 -1
- package/dist/shims/image-config.js.map +1 -1
- package/dist/shims/image.js +15 -2
- package/dist/shims/image.js.map +1 -1
- package/dist/shims/internal/als-registry.js.map +1 -1
- package/dist/shims/internal/app-router-context.d.ts +1 -0
- package/dist/shims/internal/app-router-context.js.map +1 -1
- package/dist/shims/internal/cookie-serialize.js.map +1 -1
- package/dist/shims/internal/make-hanging-promise.d.ts +1 -1
- package/dist/shims/internal/make-hanging-promise.js +1 -1
- package/dist/shims/internal/make-hanging-promise.js.map +1 -1
- package/dist/shims/internal/parse-cookie-header.js.map +1 -1
- package/dist/shims/internal/utils.js.map +1 -1
- package/dist/shims/internal/work-unit-async-storage.js +2 -2
- package/dist/shims/internal/work-unit-async-storage.js.map +1 -1
- package/dist/shims/layout-segment-context.js.map +1 -1
- package/dist/shims/legacy-image.js.map +1 -1
- package/dist/shims/link-prefetch.d.ts +34 -0
- package/dist/shims/link-prefetch.js +40 -0
- package/dist/shims/link-prefetch.js.map +1 -0
- package/dist/shims/link.d.ts +27 -4
- package/dist/shims/link.js +91 -27
- package/dist/shims/link.js.map +1 -1
- package/dist/shims/metadata.js.map +1 -1
- package/dist/shims/navigation-state.js.map +1 -1
- package/dist/shims/navigation.d.ts +22 -1
- package/dist/shims/navigation.js +30 -15
- package/dist/shims/navigation.js.map +1 -1
- package/dist/shims/navigation.react-server.js.map +1 -1
- package/dist/shims/offline.js.map +1 -1
- package/dist/shims/readonly-url-search-params.js.map +1 -1
- package/dist/shims/request-context.js.map +1 -1
- package/dist/shims/root-params.js.map +1 -1
- package/dist/shims/router-state.js.map +1 -1
- package/dist/shims/router.d.ts +38 -2
- package/dist/shims/router.js +45 -17
- package/dist/shims/router.js.map +1 -1
- package/dist/shims/script-nonce-context.js.map +1 -1
- package/dist/shims/script.js.map +1 -1
- package/dist/shims/server.js +10 -14
- package/dist/shims/server.js.map +1 -1
- package/dist/shims/slot.d.ts +6 -1
- package/dist/shims/slot.js +20 -7
- package/dist/shims/slot.js.map +1 -1
- package/dist/shims/thenable-params.js.map +1 -1
- package/dist/shims/unified-request-context.js +3 -0
- package/dist/shims/unified-request-context.js.map +1 -1
- package/dist/shims/url-safety.js.map +1 -1
- package/dist/shims/url-utils.d.ts +2 -1
- package/dist/shims/url-utils.js +10 -1
- package/dist/shims/url-utils.js.map +1 -1
- package/dist/shims/use-merged-ref.js.map +1 -1
- package/dist/shims/web-vitals.d.ts +4 -21
- package/dist/shims/web-vitals.js +19 -6
- package/dist/shims/web-vitals.js.map +1 -1
- package/dist/utils/base-path.js.map +1 -1
- package/dist/utils/cache-control-metadata.js.map +1 -1
- package/dist/utils/domain-locale.js.map +1 -1
- package/dist/utils/encode-cache-tag.d.ts +31 -0
- package/dist/utils/encode-cache-tag.js +38 -0
- package/dist/utils/encode-cache-tag.js.map +1 -0
- package/dist/utils/error-cause.js.map +1 -1
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/lazy-chunks.js.map +1 -1
- package/dist/utils/manifest-paths.js.map +1 -1
- package/dist/utils/mdx-scan.js.map +1 -1
- package/dist/utils/navigation-signal.d.ts +6 -0
- package/dist/utils/navigation-signal.js +14 -0
- package/dist/utils/navigation-signal.js.map +1 -0
- package/dist/utils/project.js.map +1 -1
- package/dist/utils/public-routes.js.map +1 -1
- package/dist/utils/query.js.map +1 -1
- package/dist/utils/safe-json-file.js.map +1 -1
- package/dist/utils/text-stream.js.map +1 -1
- package/dist/utils/vinext-root.js.map +1 -1
- package/package.json +6 -4
|
@@ -29,6 +29,9 @@ function createAppRouteGraphTemplateId(treePath) {
|
|
|
29
29
|
function createAppRouteGraphSlotId(slotName, ownerTreePath) {
|
|
30
30
|
return `slot:${slotName}:${ownerTreePath}`;
|
|
31
31
|
}
|
|
32
|
+
function createAppRouteGraphDefaultId(slotId) {
|
|
33
|
+
return `default:${slotId}`;
|
|
34
|
+
}
|
|
32
35
|
function createAppRouteGraphRootBoundaryId(treePath) {
|
|
33
36
|
return `root-boundary:${treePath}`;
|
|
34
37
|
}
|
|
@@ -54,6 +57,9 @@ function createStaticSegmentGraph(routes) {
|
|
|
54
57
|
const layouts = /* @__PURE__ */ new Map();
|
|
55
58
|
const templates = /* @__PURE__ */ new Map();
|
|
56
59
|
const slots = /* @__PURE__ */ new Map();
|
|
60
|
+
const defaults = /* @__PURE__ */ new Map();
|
|
61
|
+
const slotBindings = /* @__PURE__ */ new Map();
|
|
62
|
+
const boundaries = /* @__PURE__ */ new Map();
|
|
57
63
|
const rootBoundaries = /* @__PURE__ */ new Map();
|
|
58
64
|
for (const route of routes) {
|
|
59
65
|
routeEntries.set(route.ids.route, {
|
|
@@ -86,10 +92,18 @@ function createStaticSegmentGraph(routes) {
|
|
|
86
92
|
const treePath = createAppRouteGraphTreePath(route.routeSegments, treePosition);
|
|
87
93
|
const existingLayout = layouts.get(layoutId);
|
|
88
94
|
if (existingLayout) assertRouteManifestRootBoundary("layout", route, layoutId, existingLayout.rootBoundaryId);
|
|
89
|
-
|
|
95
|
+
const layout = {
|
|
90
96
|
id: layoutId,
|
|
91
97
|
treePath,
|
|
92
98
|
rootBoundaryId: route.ids.rootBoundary
|
|
99
|
+
};
|
|
100
|
+
layouts.set(layoutId, layout);
|
|
101
|
+
addRouteManifestBoundaryFacts({
|
|
102
|
+
boundaries,
|
|
103
|
+
route,
|
|
104
|
+
layoutId,
|
|
105
|
+
treePath,
|
|
106
|
+
layoutIndex: index
|
|
93
107
|
});
|
|
94
108
|
if (index === 0 && route.ids.rootBoundary) rootBoundaries.set(route.ids.rootBoundary, {
|
|
95
109
|
id: route.ids.rootBoundary,
|
|
@@ -97,22 +111,51 @@ function createStaticSegmentGraph(routes) {
|
|
|
97
111
|
treePath
|
|
98
112
|
});
|
|
99
113
|
}
|
|
114
|
+
addRouteManifestSegmentErrorBoundaryFacts({
|
|
115
|
+
boundaries,
|
|
116
|
+
route
|
|
117
|
+
});
|
|
100
118
|
for (const [index, templateId] of route.ids.templates.entries()) {
|
|
101
119
|
const treePosition = route.templateTreePositions?.[index];
|
|
102
120
|
assertRouteManifestTreePosition("template", route, templateId, treePosition);
|
|
121
|
+
const treePath = createAppRouteGraphTreePath(route.routeSegments, treePosition);
|
|
103
122
|
const existingTemplate = templates.get(templateId);
|
|
104
123
|
if (existingTemplate) assertRouteManifestRootBoundary("template", route, templateId, existingTemplate.rootBoundaryId);
|
|
105
124
|
templates.set(templateId, {
|
|
106
125
|
id: templateId,
|
|
107
|
-
treePath
|
|
108
|
-
rootBoundaryId: route.ids.rootBoundary
|
|
126
|
+
treePath,
|
|
127
|
+
rootBoundaryId: route.ids.rootBoundary,
|
|
128
|
+
ownerLayoutId: findRouteManifestOwnerLayoutId(route, treePosition),
|
|
129
|
+
reset: {
|
|
130
|
+
kind: "remountSubtree",
|
|
131
|
+
treePath
|
|
132
|
+
}
|
|
109
133
|
});
|
|
110
134
|
}
|
|
111
|
-
for (const slot of route.parallelSlots)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
135
|
+
for (const slot of route.parallelSlots) {
|
|
136
|
+
const ownerLayoutId = findSlotOwnerLayoutId(route, slot);
|
|
137
|
+
const defaultId = slot.defaultPath ? createAppRouteGraphDefaultId(slot.id) : null;
|
|
138
|
+
slots.set(slot.id, {
|
|
139
|
+
id: slot.id,
|
|
140
|
+
key: slot.key,
|
|
141
|
+
name: slot.name,
|
|
142
|
+
ownerTreePath: slot.ownerTreePath,
|
|
143
|
+
ownerLayoutId,
|
|
144
|
+
rootBoundaryId: ownerLayoutId ? route.ids.rootBoundary : null,
|
|
145
|
+
defaultId,
|
|
146
|
+
hasDefault: slot.defaultPath !== null,
|
|
147
|
+
hasPage: slot.hasPage
|
|
148
|
+
});
|
|
149
|
+
if (defaultId) defaults.set(defaultId, {
|
|
150
|
+
id: defaultId,
|
|
151
|
+
slotId: slot.id,
|
|
152
|
+
ownerTreePath: slot.ownerTreePath,
|
|
153
|
+
ownerLayoutId,
|
|
154
|
+
rootBoundaryId: ownerLayoutId ? route.ids.rootBoundary : null
|
|
155
|
+
});
|
|
156
|
+
const binding = createRouteManifestSlotBinding(route, slot, ownerLayoutId, defaultId);
|
|
157
|
+
slotBindings.set(binding.id, binding);
|
|
158
|
+
}
|
|
116
159
|
}
|
|
117
160
|
return {
|
|
118
161
|
routes: routeEntries,
|
|
@@ -121,13 +164,80 @@ function createStaticSegmentGraph(routes) {
|
|
|
121
164
|
layouts,
|
|
122
165
|
templates,
|
|
123
166
|
slots,
|
|
167
|
+
defaults,
|
|
168
|
+
slotBindings,
|
|
169
|
+
boundaries,
|
|
124
170
|
rootBoundaries
|
|
125
171
|
};
|
|
126
172
|
}
|
|
173
|
+
function findRouteManifestOwnerLayoutId(route, treePosition) {
|
|
174
|
+
const layoutIndex = route.layoutTreePositions.indexOf(treePosition);
|
|
175
|
+
return route.ids.layouts[layoutIndex] ?? null;
|
|
176
|
+
}
|
|
177
|
+
function findSlotOwnerLayoutId(route, slot) {
|
|
178
|
+
if (slot.layoutIndex < 0) return null;
|
|
179
|
+
return route.ids.layouts[slot.layoutIndex] ?? null;
|
|
180
|
+
}
|
|
181
|
+
function createRouteManifestSlotBinding(route, slot, ownerLayoutId, defaultId) {
|
|
182
|
+
const state = getRouteManifestSlotBindingState(slot);
|
|
183
|
+
const binding = {
|
|
184
|
+
id: `${route.ids.route}::${slot.id}`,
|
|
185
|
+
routeId: route.ids.route,
|
|
186
|
+
slotId: slot.id,
|
|
187
|
+
ownerLayoutId,
|
|
188
|
+
state,
|
|
189
|
+
defaultId: state === "default" ? defaultId : null,
|
|
190
|
+
routeSegments: slot.routeSegments ? [...slot.routeSegments] : null
|
|
191
|
+
};
|
|
192
|
+
if (slot.slotPatternParts) binding.slotPatternParts = [...slot.slotPatternParts];
|
|
193
|
+
if (slot.slotParamNames) binding.slotParamNames = [...slot.slotParamNames];
|
|
194
|
+
return binding;
|
|
195
|
+
}
|
|
196
|
+
function getRouteManifestSlotBindingState(slot) {
|
|
197
|
+
if (slot.pagePath) return "active";
|
|
198
|
+
if (slot.defaultPath) return "default";
|
|
199
|
+
return "unmatched";
|
|
200
|
+
}
|
|
201
|
+
function addRouteManifestBoundaryFacts(input) {
|
|
202
|
+
addRouteManifestBoundaryFact(input, "error", input.route.layoutErrorPaths[input.layoutIndex]);
|
|
203
|
+
addRouteManifestBoundaryFact(input, "notFound", input.route.notFoundPaths[input.layoutIndex]);
|
|
204
|
+
addRouteManifestBoundaryFact(input, "forbidden", input.route.forbiddenPaths[input.layoutIndex]);
|
|
205
|
+
addRouteManifestBoundaryFact(input, "unauthorized", input.route.unauthorizedPaths[input.layoutIndex]);
|
|
206
|
+
}
|
|
207
|
+
function addRouteManifestSegmentErrorBoundaryFacts(input) {
|
|
208
|
+
for (const [index, boundaryPath] of (input.route.errorPaths ?? []).entries()) {
|
|
209
|
+
const treePosition = input.route.errorTreePositions?.[index];
|
|
210
|
+
assertRouteManifestBoundaryTreePosition(input.route, boundaryPath, treePosition);
|
|
211
|
+
const ownerLayoutId = findRouteManifestOwnerLayoutId(input.route, treePosition);
|
|
212
|
+
if (ownerLayoutId !== null) continue;
|
|
213
|
+
const treePath = createAppRouteGraphTreePath(input.route.routeSegments, treePosition);
|
|
214
|
+
addRouteManifestBoundaryFact({
|
|
215
|
+
boundaries: input.boundaries,
|
|
216
|
+
route: input.route,
|
|
217
|
+
layoutId: ownerLayoutId,
|
|
218
|
+
treePath
|
|
219
|
+
}, "error", boundaryPath);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
function addRouteManifestBoundaryFact(input, outcome, boundaryPath) {
|
|
223
|
+
if (!boundaryPath) return;
|
|
224
|
+
const id = `boundary:${outcome}:${input.treePath}`;
|
|
225
|
+
input.boundaries.set(id, {
|
|
226
|
+
id,
|
|
227
|
+
outcome,
|
|
228
|
+
treePath: input.treePath,
|
|
229
|
+
ownerLayoutId: input.layoutId,
|
|
230
|
+
rootBoundaryId: input.route.ids.rootBoundary
|
|
231
|
+
});
|
|
232
|
+
}
|
|
127
233
|
function assertRouteManifestTreePosition(kind, route, id, treePosition) {
|
|
128
234
|
if (treePosition !== void 0) return;
|
|
129
235
|
throw new Error(`[vinext] App route graph invariant violated: missing ${kind} tree position for ${id} on ${route.pattern}`);
|
|
130
236
|
}
|
|
237
|
+
function assertRouteManifestBoundaryTreePosition(route, boundaryPath, treePosition) {
|
|
238
|
+
if (treePosition !== void 0) return;
|
|
239
|
+
throw new Error(`[vinext] App route graph invariant violated: missing boundary tree position for ${boundaryPath} on ${route.pattern}`);
|
|
240
|
+
}
|
|
131
241
|
function assertRouteManifestRootBoundary(kind, route, id, existingRootBoundaryId) {
|
|
132
242
|
if (existingRootBoundaryId === route.ids.rootBoundary) return;
|
|
133
243
|
throw new Error(`[vinext] App route graph invariant violated: ${kind} ${id} is shared across root boundaries (${existingRootBoundaryId ?? "none"} and ${route.ids.rootBoundary ?? "none"}) on ${route.pattern}`);
|
|
@@ -140,6 +250,9 @@ function createRouteManifestGraphVersion(segmentGraph) {
|
|
|
140
250
|
layouts: sortedMapValues(segmentGraph.layouts),
|
|
141
251
|
templates: sortedMapValues(segmentGraph.templates),
|
|
142
252
|
slots: sortedMapValues(segmentGraph.slots),
|
|
253
|
+
defaults: sortedMapValues(segmentGraph.defaults),
|
|
254
|
+
slotBindings: sortedMapValues(segmentGraph.slotBindings),
|
|
255
|
+
boundaries: sortedMapValues(segmentGraph.boundaries),
|
|
143
256
|
rootBoundaries: sortedMapValues(segmentGraph.rootBoundaries)
|
|
144
257
|
};
|
|
145
258
|
return `graph:${createHash("sha256").update(JSON.stringify(stableShape)).digest("hex")}`;
|
|
@@ -383,6 +496,9 @@ function directoryToAppRoute(dir, appDir, matcher, pagePath, routePath) {
|
|
|
383
496
|
const templateTreePositions = computeLayoutTreePositions(appDir, templates);
|
|
384
497
|
const layoutTreePositions = computeLayoutTreePositions(appDir, layouts);
|
|
385
498
|
const layoutErrorPaths = discoverLayoutAlignedErrors(segments, appDir, matcher);
|
|
499
|
+
const errorEntries = discoverSegmentErrors(segments, appDir, matcher);
|
|
500
|
+
const errorPaths = errorEntries.map((entry) => entry.path);
|
|
501
|
+
const errorTreePositions = errorEntries.map((entry) => entry.treePosition);
|
|
386
502
|
const routeDir = dir === "." ? appDir : path.join(appDir, dir);
|
|
387
503
|
const loadingPath = findFile(routeDir, "loading", matcher);
|
|
388
504
|
const errorPath = findFile(routeDir, "error", matcher);
|
|
@@ -412,6 +528,8 @@ function directoryToAppRoute(dir, appDir, matcher, pagePath, routePath) {
|
|
|
412
528
|
loadingPath,
|
|
413
529
|
errorPath,
|
|
414
530
|
layoutErrorPaths,
|
|
531
|
+
errorPaths,
|
|
532
|
+
errorTreePositions,
|
|
415
533
|
notFoundPath,
|
|
416
534
|
notFoundPaths,
|
|
417
535
|
forbiddenPaths,
|
|
@@ -512,15 +630,39 @@ function discoverTemplates(segments, appDir, matcher) {
|
|
|
512
630
|
return templates;
|
|
513
631
|
}
|
|
514
632
|
/**
|
|
633
|
+
* Discover error.tsx files by segment tree position.
|
|
634
|
+
*
|
|
635
|
+
* Next.js stores conventions on every loader-tree segment; a route-group
|
|
636
|
+
* directory with error.tsx but no sibling layout.tsx must still wrap its
|
|
637
|
+
* descendants. Keeping positions explicit avoids conflating segment boundaries
|
|
638
|
+
* with layout component ownership.
|
|
639
|
+
*/
|
|
640
|
+
function discoverSegmentErrors(segments, appDir, matcher) {
|
|
641
|
+
const errors = [];
|
|
642
|
+
const rootError = findFile(appDir, "error", matcher);
|
|
643
|
+
if (rootError) errors.push({
|
|
644
|
+
path: rootError,
|
|
645
|
+
treePosition: 0
|
|
646
|
+
});
|
|
647
|
+
let currentDir = appDir;
|
|
648
|
+
for (let index = 0; index < segments.length; index++) {
|
|
649
|
+
const segment = segments[index];
|
|
650
|
+
currentDir = path.join(currentDir, segment);
|
|
651
|
+
const error = findFile(currentDir, "error", matcher);
|
|
652
|
+
if (error) errors.push({
|
|
653
|
+
path: error,
|
|
654
|
+
treePosition: index + 1
|
|
655
|
+
});
|
|
656
|
+
}
|
|
657
|
+
return errors;
|
|
658
|
+
}
|
|
659
|
+
/**
|
|
515
660
|
* Discover error.tsx files aligned with the layouts array.
|
|
516
|
-
* Walks the same directory levels as discoverLayouts and, for each level
|
|
517
|
-
* that contributes a layout entry, checks whether error.tsx also exists.
|
|
518
|
-
* Returns an array of the same length as discoverLayouts() would return,
|
|
519
|
-
* with the error path (or null) at each corresponding layout level.
|
|
520
661
|
*
|
|
521
|
-
*
|
|
522
|
-
*
|
|
523
|
-
*
|
|
662
|
+
* Route manifests still model layout-owned boundary facts by layout index.
|
|
663
|
+
* Keep this layout-aligned compatibility shape separate from segment-owned
|
|
664
|
+
* error boundaries so route-group errors without layouts do not get attributed
|
|
665
|
+
* to unrelated layouts.
|
|
524
666
|
*/
|
|
525
667
|
function discoverLayoutAlignedErrors(segments, appDir, matcher) {
|
|
526
668
|
const errors = [];
|
|
@@ -764,6 +906,8 @@ function discoverParallelSlots(dir, appDir, matcher) {
|
|
|
764
906
|
key: `${slotName}@${path.relative(appDir, slotDir).replace(/\\/g, "/")}`,
|
|
765
907
|
name: slotName,
|
|
766
908
|
ownerDir: slotDir,
|
|
909
|
+
ownerTreePath,
|
|
910
|
+
hasPage: pagePath !== null,
|
|
767
911
|
pagePath,
|
|
768
912
|
defaultPath,
|
|
769
913
|
layoutPath: findFile(slotDir, "layout", matcher),
|