@timber-js/app 0.2.0-alpha.9 → 0.2.0-alpha.91
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/_chunks/actions-DLnUaR65.js +421 -0
- package/dist/_chunks/actions-DLnUaR65.js.map +1 -0
- package/dist/_chunks/{als-registry-B7DbZ2hS.js → als-registry-HS0LGUl2.js} +1 -1
- package/dist/_chunks/als-registry-HS0LGUl2.js.map +1 -0
- package/dist/_chunks/chunk-BYIpzuS7.js +39 -0
- package/dist/_chunks/{debug-gwlJkDuf.js → debug-ECi_61pb.js} +2 -2
- package/dist/_chunks/debug-ECi_61pb.js.map +1 -0
- package/dist/_chunks/define-C77ScO0m.js +106 -0
- package/dist/_chunks/define-C77ScO0m.js.map +1 -0
- package/dist/_chunks/define-Itxvcd7F.js +199 -0
- package/dist/_chunks/define-Itxvcd7F.js.map +1 -0
- package/dist/_chunks/define-cookie-BowvzoP0.js +94 -0
- package/dist/_chunks/define-cookie-BowvzoP0.js.map +1 -0
- package/dist/_chunks/{format-DviM89f0.js → dev-warnings-DpGRGoDi.js} +5 -44
- package/dist/_chunks/dev-warnings-DpGRGoDi.js.map +1 -0
- package/dist/_chunks/format-CYBGxKtc.js +14 -0
- package/dist/_chunks/format-CYBGxKtc.js.map +1 -0
- package/dist/_chunks/{interception-BOoWmLUA.js → interception-ErnB33JX.js} +301 -133
- package/dist/_chunks/interception-ErnB33JX.js.map +1 -0
- package/dist/_chunks/merge-search-params-Cm_KIWDX.js +41 -0
- package/dist/_chunks/merge-search-params-Cm_KIWDX.js.map +1 -0
- package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js → metadata-routes-DS3eKNmf.js} +1 -1
- package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js.map → metadata-routes-DS3eKNmf.js.map} +1 -1
- package/dist/_chunks/request-context-CK5tZqIP.js +478 -0
- package/dist/_chunks/request-context-CK5tZqIP.js.map +1 -0
- package/dist/_chunks/schema-bridge-C3xl_vfb.js +86 -0
- package/dist/_chunks/schema-bridge-C3xl_vfb.js.map +1 -0
- package/dist/_chunks/segment-classify-BDNn6EzD.js +65 -0
- package/dist/_chunks/segment-classify-BDNn6EzD.js.map +1 -0
- package/dist/_chunks/segment-context-fHFLF1PE.js +34 -0
- package/dist/_chunks/segment-context-fHFLF1PE.js.map +1 -0
- package/dist/_chunks/{ssr-data-MjmprTmO.js → ssr-data-DzuI0bIV.js} +1 -1
- package/dist/_chunks/{ssr-data-MjmprTmO.js.map → ssr-data-DzuI0bIV.js.map} +1 -1
- package/dist/_chunks/stale-reload-BX5gL1r-.js +64 -0
- package/dist/_chunks/stale-reload-BX5gL1r-.js.map +1 -0
- package/dist/_chunks/{tracing-CemImE6h.js → tracing-CCYbKn5n.js} +60 -9
- package/dist/_chunks/tracing-CCYbKn5n.js.map +1 -0
- package/dist/_chunks/use-params-Br9YSUFV.js +295 -0
- package/dist/_chunks/use-params-Br9YSUFV.js.map +1 -0
- package/dist/_chunks/{use-query-states-D5KaffOK.js → use-query-states-BiV5GJgm.js} +7 -4
- package/dist/_chunks/use-query-states-BiV5GJgm.js.map +1 -0
- package/dist/adapters/cloudflare-dev.d.ts +109 -0
- package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.js +73 -0
- package/dist/adapters/cloudflare-dev.js.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts +64 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.js +95 -0
- package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
- package/dist/adapters/cloudflare.d.ts +148 -12
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +135 -11
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/adapters/compress-module.d.ts.map +1 -1
- package/dist/adapters/nitro.d.ts +17 -1
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js +56 -13
- package/dist/adapters/nitro.js.map +1 -1
- package/dist/cache/cache-api.d.ts +24 -0
- package/dist/cache/cache-api.d.ts.map +1 -0
- package/dist/cache/handler-store.d.ts +31 -0
- package/dist/cache/handler-store.d.ts.map +1 -0
- package/dist/cache/index.d.ts +23 -7
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +142 -80
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/singleflight.d.ts +18 -1
- package/dist/cache/singleflight.d.ts.map +1 -1
- package/dist/cache/sizeof.d.ts +22 -0
- package/dist/cache/sizeof.d.ts.map +1 -0
- package/dist/cache/timber-cache.d.ts +1 -1
- package/dist/cache/timber-cache.d.ts.map +1 -1
- package/dist/cli.d.ts +6 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +8 -3
- package/dist/cli.js.map +1 -1
- package/dist/client/browser-dev.d.ts +27 -1
- package/dist/client/browser-dev.d.ts.map +1 -1
- package/dist/client/browser-entry/action-dispatch.d.ts +17 -0
- package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
- package/dist/client/browser-entry/hmr.d.ts +21 -0
- package/dist/client/browser-entry/hmr.d.ts.map +1 -0
- package/dist/client/browser-entry/hydrate.d.ts +46 -0
- package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
- package/dist/client/browser-entry/index.d.ts +30 -0
- package/dist/client/browser-entry/index.d.ts.map +1 -0
- package/dist/client/browser-entry/post-hydration.d.ts +26 -0
- package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
- package/dist/client/browser-entry/router-init.d.ts +23 -0
- package/dist/client/browser-entry/router-init.d.ts.map +1 -0
- package/dist/client/browser-entry/rsc-stream.d.ts +24 -0
- package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
- package/dist/client/browser-entry/scroll.d.ts +19 -0
- package/dist/client/browser-entry/scroll.d.ts.map +1 -0
- package/dist/client/error-boundary.d.ts +12 -5
- package/dist/client/error-boundary.d.ts.map +1 -1
- package/dist/client/error-boundary.js +10 -4
- package/dist/client/error-boundary.js.map +1 -1
- package/dist/client/error-reconstituter.d.ts +54 -0
- package/dist/client/error-reconstituter.d.ts.map +1 -0
- package/dist/client/form.d.ts +6 -3
- package/dist/client/form.d.ts.map +1 -1
- package/dist/client/history.d.ts +19 -4
- package/dist/client/history.d.ts.map +1 -1
- package/dist/client/index.d.ts +9 -21
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +229 -1018
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal.d.ts +18 -0
- package/dist/client/internal.d.ts.map +1 -0
- package/dist/client/internal.js +890 -0
- package/dist/client/internal.js.map +1 -0
- package/dist/client/link-pending-store.d.ts +63 -0
- package/dist/client/link-pending-store.d.ts.map +1 -0
- package/dist/client/link.d.ts +62 -55
- package/dist/client/link.d.ts.map +1 -1
- package/dist/client/nav-link-store.d.ts +36 -0
- package/dist/client/nav-link-store.d.ts.map +1 -0
- package/dist/client/navigation-api-types.d.ts +90 -0
- package/dist/client/navigation-api-types.d.ts.map +1 -0
- package/dist/client/navigation-api.d.ts +115 -0
- package/dist/client/navigation-api.d.ts.map +1 -0
- package/dist/client/navigation-context.d.ts +13 -2
- package/dist/client/navigation-context.d.ts.map +1 -1
- package/dist/client/{transition-root.d.ts → navigation-root.d.ts} +42 -8
- package/dist/client/navigation-root.d.ts.map +1 -0
- package/dist/client/nuqs-adapter.d.ts.map +1 -1
- package/dist/client/router-ref.d.ts +1 -1
- package/dist/client/router.d.ts +70 -4
- package/dist/client/router.d.ts.map +1 -1
- package/dist/client/rsc-fetch.d.ts +38 -3
- package/dist/client/rsc-fetch.d.ts.map +1 -1
- package/dist/client/segment-cache.d.ts +1 -1
- package/dist/client/segment-cache.d.ts.map +1 -1
- package/dist/client/segment-outlet.d.ts +63 -0
- package/dist/client/segment-outlet.d.ts.map +1 -0
- package/dist/client/ssr-data.d.ts +13 -4
- package/dist/client/ssr-data.d.ts.map +1 -1
- package/dist/client/stale-reload.d.ts +15 -0
- package/dist/client/stale-reload.d.ts.map +1 -1
- package/dist/client/top-loader.d.ts +5 -5
- package/dist/client/top-loader.d.ts.map +1 -1
- package/dist/client/use-link-status.d.ts +5 -5
- package/dist/client/use-link-status.d.ts.map +1 -1
- package/dist/client/use-params.d.ts +6 -4
- package/dist/client/use-params.d.ts.map +1 -1
- package/dist/client/{use-navigation-pending.d.ts → use-pending-navigation.d.ts} +4 -4
- package/dist/client/use-pending-navigation.d.ts.map +1 -0
- package/dist/client/use-query-states.d.ts +1 -1
- package/dist/client/use-query-states.d.ts.map +1 -1
- package/dist/client/use-router.d.ts +1 -1
- package/dist/codec.d.ts +33 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +2 -0
- package/dist/config-types.d.ts +266 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-validation.d.ts +51 -0
- package/dist/config-validation.d.ts.map +1 -0
- package/dist/content/index.d.ts +1 -10
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +0 -2
- package/dist/cookies/define-cookie.d.ts +35 -14
- package/dist/cookies/define-cookie.d.ts.map +1 -1
- package/dist/cookies/index.js +1 -83
- package/dist/fonts/bundle.d.ts +48 -0
- package/dist/fonts/bundle.d.ts.map +1 -0
- package/dist/fonts/css.d.ts +1 -0
- package/dist/fonts/css.d.ts.map +1 -1
- package/dist/fonts/dev-middleware.d.ts +22 -0
- package/dist/fonts/dev-middleware.d.ts.map +1 -0
- package/dist/fonts/pipeline.d.ts +138 -0
- package/dist/fonts/pipeline.d.ts.map +1 -0
- package/dist/fonts/transform.d.ts +72 -0
- package/dist/fonts/transform.d.ts.map +1 -0
- package/dist/fonts/types.d.ts +45 -1
- package/dist/fonts/types.d.ts.map +1 -1
- package/dist/fonts/virtual-modules.d.ts +59 -0
- package/dist/fonts/virtual-modules.d.ts.map +1 -0
- package/dist/index.d.ts +45 -190
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4294 -2453
- package/dist/index.js.map +1 -1
- package/dist/plugin-context.d.ts +107 -0
- package/dist/plugin-context.d.ts.map +1 -0
- package/dist/plugins/adapter-build.d.ts +1 -1
- package/dist/plugins/adapter-build.d.ts.map +1 -1
- package/dist/plugins/build-manifest.d.ts +2 -2
- package/dist/plugins/build-manifest.d.ts.map +1 -1
- package/dist/plugins/build-report.d.ts +3 -3
- package/dist/plugins/build-report.d.ts.map +1 -1
- package/dist/plugins/client-chunks.d.ts +32 -0
- package/dist/plugins/client-chunks.d.ts.map +1 -0
- package/dist/plugins/content.d.ts +1 -1
- package/dist/plugins/content.d.ts.map +1 -1
- package/dist/plugins/dev-404-page.d.ts +56 -0
- package/dist/plugins/dev-404-page.d.ts.map +1 -0
- package/dist/plugins/dev-browser-logs.d.ts +84 -0
- package/dist/plugins/dev-browser-logs.d.ts.map +1 -0
- package/dist/plugins/dev-error-overlay.d.ts +49 -9
- package/dist/plugins/dev-error-overlay.d.ts.map +1 -1
- package/dist/plugins/dev-error-page.d.ts +58 -0
- package/dist/plugins/dev-error-page.d.ts.map +1 -0
- package/dist/plugins/dev-logs.d.ts +1 -1
- package/dist/plugins/dev-logs.d.ts.map +1 -1
- package/dist/plugins/dev-server.d.ts +1 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/dev-terminal-error.d.ts +28 -0
- package/dist/plugins/dev-terminal-error.d.ts.map +1 -0
- package/dist/plugins/entries.d.ts +1 -1
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/fonts.d.ts +17 -73
- package/dist/plugins/fonts.d.ts.map +1 -1
- package/dist/plugins/mdx.d.ts +1 -1
- package/dist/plugins/mdx.d.ts.map +1 -1
- package/dist/plugins/routing.d.ts +1 -1
- package/dist/plugins/routing.d.ts.map +1 -1
- package/dist/plugins/server-bundle.d.ts.map +1 -1
- package/dist/plugins/shims.d.ts +6 -5
- package/dist/plugins/shims.d.ts.map +1 -1
- package/dist/plugins/static-build.d.ts +4 -4
- package/dist/plugins/static-build.d.ts.map +1 -1
- package/dist/routing/codegen-shared.d.ts +38 -0
- package/dist/routing/codegen-shared.d.ts.map +1 -0
- package/dist/routing/codegen-types.d.ts +36 -0
- package/dist/routing/codegen-types.d.ts.map +1 -0
- package/dist/routing/codegen.d.ts +2 -2
- package/dist/routing/codegen.d.ts.map +1 -1
- package/dist/routing/convention-lint.d.ts +41 -0
- package/dist/routing/convention-lint.d.ts.map +1 -0
- package/dist/routing/index.d.ts +2 -0
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +3 -2
- package/dist/routing/link-codegen.d.ts +90 -0
- package/dist/routing/link-codegen.d.ts.map +1 -0
- package/dist/routing/scanner.d.ts.map +1 -1
- package/dist/routing/segment-classify.d.ts +46 -0
- package/dist/routing/segment-classify.d.ts.map +1 -0
- package/dist/routing/status-file-lint.d.ts +2 -1
- package/dist/routing/status-file-lint.d.ts.map +1 -1
- package/dist/routing/types.d.ts +16 -4
- package/dist/routing/types.d.ts.map +1 -1
- package/dist/rsc-runtime/rsc.d.ts +1 -1
- package/dist/rsc-runtime/rsc.d.ts.map +1 -1
- package/dist/rsc-runtime/ssr.d.ts +12 -0
- package/dist/rsc-runtime/ssr.d.ts.map +1 -1
- package/dist/schema-bridge.d.ts +76 -0
- package/dist/schema-bridge.d.ts.map +1 -0
- package/dist/search-params/define.d.ts +139 -0
- package/dist/search-params/define.d.ts.map +1 -0
- package/dist/search-params/index.d.ts +4 -7
- package/dist/search-params/index.d.ts.map +1 -1
- package/dist/search-params/index.js +32 -441
- package/dist/search-params/index.js.map +1 -1
- package/dist/search-params/registry.d.ts +2 -2
- package/dist/search-params/registry.d.ts.map +1 -1
- package/dist/search-params/wrappers.d.ts +53 -0
- package/dist/search-params/wrappers.d.ts.map +1 -0
- package/dist/segment-params/define.d.ts +78 -0
- package/dist/segment-params/define.d.ts.map +1 -0
- package/dist/segment-params/index.d.ts +3 -0
- package/dist/segment-params/index.d.ts.map +1 -0
- package/dist/segment-params/index.js +2 -0
- package/dist/server/access-gate.d.ts +4 -0
- package/dist/server/access-gate.d.ts.map +1 -1
- package/dist/server/action-client.d.ts +41 -6
- package/dist/server/action-client.d.ts.map +1 -1
- package/dist/server/action-encryption.d.ts +76 -0
- package/dist/server/action-encryption.d.ts.map +1 -0
- package/dist/server/action-handler.d.ts +7 -0
- package/dist/server/action-handler.d.ts.map +1 -1
- package/dist/server/actions.d.ts +3 -6
- package/dist/server/actions.d.ts.map +1 -1
- package/dist/server/als-registry.d.ts +32 -4
- package/dist/server/als-registry.d.ts.map +1 -1
- package/dist/server/build-manifest.d.ts +2 -2
- package/dist/server/build-manifest.d.ts.map +1 -1
- package/dist/server/debug.d.ts +1 -1
- package/dist/server/default-logger.d.ts +22 -0
- package/dist/server/default-logger.d.ts.map +1 -0
- package/dist/server/deny-page-resolver.d.ts +52 -0
- package/dist/server/deny-page-resolver.d.ts.map +1 -0
- package/dist/server/deny-renderer.d.ts.map +1 -1
- package/dist/server/dev-holding-server.d.ts +52 -0
- package/dist/server/dev-holding-server.d.ts.map +1 -0
- package/dist/server/dev-source-map.d.ts +22 -0
- package/dist/server/dev-source-map.d.ts.map +1 -0
- package/dist/server/dev-warnings.d.ts +1 -21
- package/dist/server/dev-warnings.d.ts.map +1 -1
- package/dist/server/early-hints.d.ts +13 -5
- package/dist/server/early-hints.d.ts.map +1 -1
- package/dist/server/error-boundary-wrapper.d.ts +7 -1
- package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
- package/dist/server/fallback-error.d.ts +12 -7
- package/dist/server/fallback-error.d.ts.map +1 -1
- package/dist/server/flight-injection-state.d.ts +66 -0
- package/dist/server/flight-injection-state.d.ts.map +1 -0
- package/dist/server/flight-scripts.d.ts +42 -0
- package/dist/server/flight-scripts.d.ts.map +1 -0
- package/dist/server/flush.d.ts.map +1 -1
- package/dist/server/form-data.d.ts +29 -0
- package/dist/server/form-data.d.ts.map +1 -1
- package/dist/server/html-injectors.d.ts +51 -11
- package/dist/server/html-injectors.d.ts.map +1 -1
- package/dist/server/index.d.ts +5 -43
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +195 -2800
- package/dist/server/index.js.map +1 -1
- package/dist/server/internal.d.ts +46 -0
- package/dist/server/internal.d.ts.map +1 -0
- package/dist/server/internal.js +2900 -0
- package/dist/server/internal.js.map +1 -0
- package/dist/server/logger.d.ts +25 -7
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/middleware-runner.d.ts +19 -4
- package/dist/server/middleware-runner.d.ts.map +1 -1
- package/dist/server/node-stream-transforms.d.ts +113 -0
- package/dist/server/node-stream-transforms.d.ts.map +1 -0
- package/dist/server/page-deny-boundary.d.ts +31 -0
- package/dist/server/page-deny-boundary.d.ts.map +1 -0
- package/dist/server/pipeline-interception.d.ts +1 -1
- package/dist/server/pipeline-interception.d.ts.map +1 -1
- package/dist/server/pipeline-metadata.d.ts +6 -0
- package/dist/server/pipeline-metadata.d.ts.map +1 -1
- package/dist/server/pipeline.d.ts +52 -10
- package/dist/server/pipeline.d.ts.map +1 -1
- package/dist/server/primitives.d.ts +69 -18
- package/dist/server/primitives.d.ts.map +1 -1
- package/dist/server/render-timeout.d.ts +51 -0
- package/dist/server/render-timeout.d.ts.map +1 -0
- package/dist/server/request-context.d.ts +112 -43
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/route-element-builder.d.ts +27 -1
- package/dist/server/route-element-builder.d.ts.map +1 -1
- package/dist/server/route-handler.d.ts.map +1 -1
- package/dist/server/route-matcher.d.ts +16 -2
- package/dist/server/route-matcher.d.ts.map +1 -1
- package/dist/server/rsc-entry/api-handler.d.ts +2 -2
- package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
- package/dist/server/rsc-entry/error-renderer.d.ts +26 -13
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/helpers.d.ts +48 -5
- package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts +20 -3
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-payload.d.ts +3 -3
- package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts +14 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts +1 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts +19 -4
- package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
- package/dist/server/safe-load.d.ts +46 -0
- package/dist/server/safe-load.d.ts.map +1 -0
- package/dist/server/sensitive-fields.d.ts +74 -0
- package/dist/server/sensitive-fields.d.ts.map +1 -0
- package/dist/server/sitemap-generator.d.ts +129 -0
- package/dist/server/sitemap-generator.d.ts.map +1 -0
- package/dist/server/sitemap-handler.d.ts +22 -0
- package/dist/server/sitemap-handler.d.ts.map +1 -0
- package/dist/server/slot-resolver.d.ts +1 -1
- package/dist/server/slot-resolver.d.ts.map +1 -1
- package/dist/server/ssr-entry.d.ts +23 -0
- package/dist/server/ssr-entry.d.ts.map +1 -1
- package/dist/server/ssr-render.d.ts +39 -21
- package/dist/server/ssr-render.d.ts.map +1 -1
- package/dist/server/ssr-wrappers.d.ts +50 -0
- package/dist/server/ssr-wrappers.d.ts.map +1 -0
- package/dist/server/status-code-resolver.d.ts +1 -1
- package/dist/server/status-code-resolver.d.ts.map +1 -1
- package/dist/server/stream-utils.d.ts +36 -0
- package/dist/server/stream-utils.d.ts.map +1 -0
- package/dist/server/tracing.d.ts +4 -4
- package/dist/server/tracing.d.ts.map +1 -1
- package/dist/server/tree-builder.d.ts +22 -19
- package/dist/server/tree-builder.d.ts.map +1 -1
- package/dist/server/types.d.ts +1 -4
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/version-skew.d.ts +61 -0
- package/dist/server/version-skew.d.ts.map +1 -0
- package/dist/shared/merge-search-params.d.ts +22 -0
- package/dist/shared/merge-search-params.d.ts.map +1 -0
- package/dist/shims/font-google.d.ts +1 -1
- package/dist/shims/font-google.d.ts.map +1 -1
- package/dist/shims/font-google.js +42 -0
- package/dist/shims/font-google.js.map +1 -0
- package/dist/shims/font-local.d.ts +26 -0
- package/dist/shims/font-local.d.ts.map +1 -0
- package/dist/shims/font-local.js +20 -0
- package/dist/shims/font-local.js.map +1 -0
- package/dist/shims/headers.d.ts +2 -1
- package/dist/shims/headers.d.ts.map +1 -1
- package/dist/shims/navigation-client.d.ts +1 -1
- package/dist/shims/navigation-client.d.ts.map +1 -1
- package/dist/shims/navigation.d.ts +3 -2
- package/dist/shims/navigation.d.ts.map +1 -1
- package/dist/utils/directive-parser.d.ts +5 -2
- package/dist/utils/directive-parser.d.ts.map +1 -1
- package/dist/utils/state-machine.d.ts +80 -0
- package/dist/utils/state-machine.d.ts.map +1 -0
- package/package.json +51 -16
- package/src/adapters/cloudflare-dev.ts +177 -0
- package/src/adapters/cloudflare-kv-cache.ts +142 -0
- package/src/adapters/cloudflare.ts +342 -28
- package/src/adapters/compress-module.ts +24 -4
- package/src/adapters/nitro.ts +52 -8
- package/src/adapters/wrangler.d.ts +7 -0
- package/src/cache/cache-api.ts +38 -0
- package/src/cache/handler-store.ts +68 -0
- package/src/cache/index.ts +81 -18
- package/src/cache/singleflight.ts +62 -4
- package/src/cache/sizeof.ts +31 -0
- package/src/cache/timber-cache.ts +24 -20
- package/src/cli.ts +16 -6
- package/src/client/browser-dev.ts +128 -1
- package/src/client/browser-entry/action-dispatch.ts +116 -0
- package/src/client/browser-entry/hmr.ts +81 -0
- package/src/client/browser-entry/hydrate.ts +145 -0
- package/src/client/browser-entry/index.ts +143 -0
- package/src/client/browser-entry/post-hydration.ts +119 -0
- package/src/client/browser-entry/router-init.ts +193 -0
- package/src/client/browser-entry/rsc-stream.ts +157 -0
- package/src/client/browser-entry/scroll.ts +27 -0
- package/src/client/error-boundary.tsx +48 -16
- package/src/client/error-reconstituter.tsx +65 -0
- package/src/client/form.tsx +14 -7
- package/src/client/history.ts +26 -4
- package/src/client/index.ts +65 -38
- package/src/client/internal.ts +57 -0
- package/src/client/link-pending-store.ts +111 -0
- package/src/client/link.tsx +342 -113
- package/src/client/nav-link-store.ts +47 -0
- package/src/client/navigation-api-types.ts +112 -0
- package/src/client/navigation-api.ts +332 -0
- package/src/client/navigation-context.ts +31 -6
- package/src/client/navigation-root.tsx +342 -0
- package/src/client/nuqs-adapter.tsx +16 -3
- package/src/client/router-ref.ts +1 -1
- package/src/client/router.ts +299 -72
- package/src/client/rsc-fetch.ts +97 -8
- package/src/client/segment-cache.ts +1 -1
- package/src/client/segment-outlet.tsx +86 -0
- package/src/client/ssr-data.ts +13 -5
- package/src/client/stale-reload.ts +72 -3
- package/src/client/top-loader.tsx +18 -6
- package/src/client/use-link-status.ts +7 -7
- package/src/client/use-params.ts +7 -5
- package/src/client/{use-navigation-pending.ts → use-pending-navigation.ts} +6 -6
- package/src/client/use-query-states.ts +9 -3
- package/src/client/use-router.ts +1 -1
- package/src/codec.ts +49 -0
- package/src/config-types.ts +264 -0
- package/src/config-validation.ts +303 -0
- package/src/content/index.ts +5 -13
- package/src/cookies/define-cookie.ts +78 -25
- package/src/cookies/index.ts +8 -0
- package/src/fonts/bundle.ts +142 -0
- package/src/fonts/css.ts +2 -1
- package/src/fonts/dev-middleware.ts +74 -0
- package/src/fonts/pipeline.ts +275 -0
- package/src/fonts/transform.ts +353 -0
- package/src/fonts/types.ts +50 -1
- package/src/fonts/virtual-modules.ts +159 -0
- package/src/index.ts +314 -355
- package/src/plugin-context.ts +240 -0
- package/src/plugins/adapter-build.ts +9 -3
- package/src/plugins/build-manifest.ts +13 -2
- package/src/plugins/build-report.ts +3 -3
- package/src/plugins/client-chunks.ts +65 -0
- package/src/plugins/content.ts +1 -1
- package/src/plugins/dev-404-page.ts +418 -0
- package/src/plugins/dev-browser-logs.ts +288 -0
- package/src/plugins/dev-error-overlay.ts +286 -42
- package/src/plugins/dev-error-page.ts +536 -0
- package/src/plugins/dev-logs.ts +1 -1
- package/src/plugins/dev-server.ts +146 -19
- package/src/plugins/dev-terminal-error.ts +217 -0
- package/src/plugins/entries.ts +111 -10
- package/src/plugins/fonts.ts +133 -638
- package/src/plugins/mdx.ts +1 -1
- package/src/plugins/routing.ts +213 -31
- package/src/plugins/server-action-exports.ts +1 -1
- package/src/plugins/server-bundle.ts +32 -1
- package/src/plugins/shims.ts +136 -35
- package/src/plugins/static-build.ts +17 -11
- package/src/routing/codegen-shared.ts +74 -0
- package/src/routing/codegen-types.ts +37 -0
- package/src/routing/codegen.ts +112 -173
- package/src/routing/convention-lint.ts +356 -0
- package/src/routing/index.ts +2 -0
- package/src/routing/link-codegen.ts +262 -0
- package/src/routing/scanner.ts +93 -23
- package/src/routing/segment-classify.ts +89 -0
- package/src/routing/status-file-lint.ts +3 -2
- package/src/routing/types.ts +17 -4
- package/src/rsc-runtime/rsc.ts +2 -0
- package/src/rsc-runtime/ssr.ts +50 -0
- package/src/rsc-runtime/vendor-types.d.ts +7 -0
- package/src/{search-params/codecs.ts → schema-bridge.ts} +57 -20
- package/src/search-params/define.ts +482 -0
- package/src/search-params/index.ts +14 -20
- package/src/search-params/registry.ts +2 -2
- package/src/search-params/wrappers.ts +85 -0
- package/src/segment-params/define.ts +279 -0
- package/src/segment-params/index.ts +9 -0
- package/src/server/access-gate.tsx +70 -29
- package/src/server/action-client.ts +88 -15
- package/src/server/action-encryption.ts +144 -0
- package/src/server/action-handler.ts +53 -6
- package/src/server/actions.ts +10 -9
- package/src/server/als-registry.ts +34 -6
- package/src/server/build-manifest.ts +10 -4
- package/src/server/compress.ts +25 -7
- package/src/server/debug.ts +1 -1
- package/src/server/default-logger.ts +99 -0
- package/src/server/deny-page-resolver.ts +154 -0
- package/src/server/deny-renderer.ts +24 -38
- package/src/server/dev-holding-server.ts +185 -0
- package/src/server/dev-source-map.ts +31 -0
- package/src/server/dev-warnings.ts +4 -49
- package/src/server/early-hints.ts +36 -15
- package/src/server/error-boundary-wrapper.ts +74 -22
- package/src/server/fallback-error.ts +74 -102
- package/src/server/flight-injection-state.ts +113 -0
- package/src/server/flight-scripts.ts +62 -0
- package/src/server/flush.ts +2 -1
- package/src/server/form-data.ts +76 -0
- package/src/server/html-injectors.ts +280 -120
- package/src/server/index.ts +25 -177
- package/src/server/internal.ts +169 -0
- package/src/server/logger.ts +44 -36
- package/src/server/middleware-runner.ts +31 -4
- package/src/server/node-stream-transforms.ts +509 -0
- package/src/server/page-deny-boundary.tsx +56 -0
- package/src/server/pipeline-interception.ts +17 -16
- package/src/server/pipeline-metadata.ts +13 -0
- package/src/server/pipeline.ts +261 -66
- package/src/server/primitives.ts +111 -28
- package/src/server/render-timeout.ts +108 -0
- package/src/server/request-context.ts +293 -132
- package/src/server/route-element-builder.ts +283 -191
- package/src/server/route-handler.ts +24 -4
- package/src/server/route-matcher.ts +31 -20
- package/src/server/rsc-entry/api-handler.ts +15 -16
- package/src/server/rsc-entry/error-renderer.ts +305 -89
- package/src/server/rsc-entry/helpers.ts +134 -5
- package/src/server/rsc-entry/index.ts +304 -111
- package/src/server/rsc-entry/rsc-payload.ts +65 -18
- package/src/server/rsc-entry/rsc-stream.ts +81 -13
- package/src/server/rsc-entry/ssr-bridge.ts +14 -5
- package/src/server/rsc-entry/ssr-renderer.ts +171 -38
- package/src/server/safe-load.ts +60 -0
- package/src/server/sensitive-fields.ts +230 -0
- package/src/server/sitemap-generator.ts +338 -0
- package/src/server/sitemap-handler.ts +126 -0
- package/src/server/slot-resolver.ts +244 -229
- package/src/server/ssr-entry.ts +215 -32
- package/src/server/ssr-render.ts +289 -67
- package/src/server/ssr-wrappers.tsx +139 -0
- package/src/server/status-code-resolver.ts +1 -1
- package/src/server/stream-utils.ts +213 -0
- package/src/server/tracing.ts +20 -9
- package/src/server/tree-builder.ts +92 -58
- package/src/server/types.ts +3 -6
- package/src/server/version-skew.ts +104 -0
- package/src/shared/merge-search-params.ts +55 -0
- package/src/shims/font-google.ts +1 -1
- package/src/shims/font-local.ts +34 -0
- package/src/shims/headers.ts +5 -1
- package/src/shims/navigation-client.ts +1 -1
- package/src/shims/navigation.ts +7 -2
- package/src/utils/directive-parser.ts +5 -2
- package/src/utils/state-machine.ts +111 -0
- package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
- package/dist/_chunks/debug-gwlJkDuf.js.map +0 -1
- package/dist/_chunks/format-DviM89f0.js.map +0 -1
- package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
- package/dist/_chunks/request-context-DIkVh_jG.js +0 -330
- package/dist/_chunks/request-context-DIkVh_jG.js.map +0 -1
- package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
- package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
- package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
- package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
- package/dist/cache/register-cached-function.d.ts +0 -17
- package/dist/cache/register-cached-function.d.ts.map +0 -1
- package/dist/client/browser-entry.d.ts +0 -21
- package/dist/client/browser-entry.d.ts.map +0 -1
- package/dist/client/link-status-provider.d.ts +0 -11
- package/dist/client/link-status-provider.d.ts.map +0 -1
- package/dist/client/transition-root.d.ts.map +0 -1
- package/dist/client/use-navigation-pending.d.ts.map +0 -1
- package/dist/cookies/index.js.map +0 -1
- package/dist/plugins/cache-transform.d.ts +0 -36
- package/dist/plugins/cache-transform.d.ts.map +0 -1
- package/dist/plugins/dynamic-transform.d.ts +0 -72
- package/dist/plugins/dynamic-transform.d.ts.map +0 -1
- package/dist/search-params/analyze.d.ts +0 -54
- package/dist/search-params/analyze.d.ts.map +0 -1
- package/dist/search-params/builtin-codecs.d.ts +0 -105
- package/dist/search-params/builtin-codecs.d.ts.map +0 -1
- package/dist/search-params/codecs.d.ts +0 -53
- package/dist/search-params/codecs.d.ts.map +0 -1
- package/dist/search-params/create.d.ts +0 -106
- package/dist/search-params/create.d.ts.map +0 -1
- package/dist/server/prerender.d.ts +0 -77
- package/dist/server/prerender.d.ts.map +0 -1
- package/dist/server/response-cache.d.ts +0 -54
- package/dist/server/response-cache.d.ts.map +0 -1
- package/src/cache/register-cached-function.ts +0 -103
- package/src/client/browser-entry.ts +0 -678
- package/src/client/link-status-provider.tsx +0 -30
- package/src/client/transition-root.tsx +0 -166
- package/src/plugins/cache-transform.ts +0 -199
- package/src/plugins/dynamic-transform.ts +0 -161
- package/src/search-params/analyze.ts +0 -192
- package/src/search-params/builtin-codecs.ts +0 -228
- package/src/search-params/create.ts +0 -321
- package/src/server/prerender.ts +0 -139
- package/src/server/response-cache.ts +0 -410
|
@@ -1,13 +1,53 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Dev error overlay — formats and sends errors to Vite's browser overlay and stderr.
|
|
3
3
|
*
|
|
4
|
-
* Integrates with Vite's built-in error overlay (`server.
|
|
5
|
-
*
|
|
4
|
+
* Integrates with Vite's built-in error overlay (`server.hot.send`) rather
|
|
5
|
+
* than implementing a custom overlay.
|
|
6
|
+
*
|
|
7
|
+
* Stack trace source-mapping uses the correct Vite environment module graph:
|
|
8
|
+
* RSC errors use `server.environments.rsc.moduleGraph`, SSR/other errors use
|
|
9
|
+
* `server.environments.ssr.moduleGraph`. `server.ssrFixStacktrace()` is NOT
|
|
10
|
+
* used because it hardcodes the SSR module graph, which doesn't contain
|
|
11
|
+
* source maps for RSC modules (separate Vite environment with its own
|
|
12
|
+
* module graph). This caused RSC errors to show transpiled line numbers
|
|
13
|
+
* instead of original source positions.
|
|
6
14
|
*
|
|
7
15
|
* Design doc: 21-dev-server.md §"Error Overlay"
|
|
8
16
|
*/
|
|
9
17
|
|
|
10
|
-
import type { ViteDevServer } from 'vite';
|
|
18
|
+
import type { ViteDevServer, DevEnvironment } from 'vite';
|
|
19
|
+
import { createRequire } from 'node:module';
|
|
20
|
+
import { resolve, dirname } from 'node:path';
|
|
21
|
+
|
|
22
|
+
// ─── Trace Mapping (lazy-loaded) ─────────────────────────────────────────────
|
|
23
|
+
|
|
24
|
+
interface TraceMappingModule {
|
|
25
|
+
TraceMap: new (map: unknown) => unknown;
|
|
26
|
+
originalPositionFor: (
|
|
27
|
+
map: unknown,
|
|
28
|
+
needle: { line: number; column: number }
|
|
29
|
+
) => { source: string | null; line: number | null; column: number | null };
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
let _traceMapping: TraceMappingModule | null = null;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Lazy-load @jridgewell/trace-mapping from Vite's dependency tree.
|
|
36
|
+
* Vite bundles it internally; we resolve from Vite's package to avoid
|
|
37
|
+
* adding a direct dependency.
|
|
38
|
+
*/
|
|
39
|
+
function getTraceMapping(): TraceMappingModule {
|
|
40
|
+
if (_traceMapping) return _traceMapping;
|
|
41
|
+
// Resolve from Vite's package location so we pick up its transitive
|
|
42
|
+
// @jridgewell/trace-mapping without declaring it as a direct dependency.
|
|
43
|
+
// createRequire(import.meta.url) gives us ESM-compatible require (TIM-796),
|
|
44
|
+
// then we hop to Vite's path to reach its dependency tree (TIM-804).
|
|
45
|
+
const esmRequire = createRequire(import.meta.url);
|
|
46
|
+
const vitePath = esmRequire.resolve('vite');
|
|
47
|
+
const viteRequire = createRequire(vitePath);
|
|
48
|
+
_traceMapping = viteRequire('@jridgewell/trace-mapping') as TraceMappingModule;
|
|
49
|
+
return _traceMapping;
|
|
50
|
+
}
|
|
11
51
|
|
|
12
52
|
// ─── Types ──────────────────────────────────────────────────────────────────
|
|
13
53
|
|
|
@@ -21,7 +61,7 @@ export type ErrorPhase =
|
|
|
21
61
|
| 'handler';
|
|
22
62
|
|
|
23
63
|
/** Labels for terminal output. */
|
|
24
|
-
const PHASE_LABELS: Record<ErrorPhase, string> = {
|
|
64
|
+
export const PHASE_LABELS: Record<ErrorPhase, string> = {
|
|
25
65
|
'module-transform': 'Module Transform',
|
|
26
66
|
'proxy': 'Proxy',
|
|
27
67
|
'middleware': 'Middleware',
|
|
@@ -131,55 +171,243 @@ export function classifyErrorPhase(error: Error, projectRoot: string): ErrorPhas
|
|
|
131
171
|
|
|
132
172
|
// ─── Terminal Formatting ────────────────────────────────────────────────────
|
|
133
173
|
|
|
134
|
-
//
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
const
|
|
174
|
+
// formatTerminalError is implemented in the dedicated terminal formatter module
|
|
175
|
+
// (dev-terminal-error.ts) to keep this file under 500 lines.
|
|
176
|
+
// Import for use in sendErrorToOverlay, and re-export for external consumers.
|
|
177
|
+
import { formatTerminalError as _formatTerminalError } from './dev-terminal-error.js';
|
|
178
|
+
export const formatTerminalError = _formatTerminalError;
|
|
179
|
+
|
|
180
|
+
// ─── RSC Debug Context ──────────────────────────────────────────────────────
|
|
139
181
|
|
|
140
182
|
/**
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
* - Red for the error message and phase label
|
|
144
|
-
* - Dim for framework-internal frames
|
|
145
|
-
* - Normal for application frames
|
|
146
|
-
* - Separate section for component stack (if present)
|
|
183
|
+
* Component info extracted from the RSC debug channel.
|
|
184
|
+
* Contains only names, environments, and stack frames — never source code.
|
|
147
185
|
*/
|
|
148
|
-
export
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
lines.push(`${RED}${error.message}${RESET}`);
|
|
154
|
-
lines.push('');
|
|
186
|
+
export interface RscDebugComponentInfo {
|
|
187
|
+
name: string;
|
|
188
|
+
env: string | null;
|
|
189
|
+
stack: unknown[] | null;
|
|
190
|
+
}
|
|
155
191
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
192
|
+
/**
|
|
193
|
+
* Format RSC debug component info into a readable string for the overlay.
|
|
194
|
+
*
|
|
195
|
+
* Renders the server component tree that was active when an error occurred,
|
|
196
|
+
* including component names and source locations from stack frames. This
|
|
197
|
+
* gives developers visibility into which server components were rendering
|
|
198
|
+
* without exposing source code.
|
|
199
|
+
*
|
|
200
|
+
* Returns an empty string if no components are provided.
|
|
201
|
+
*/
|
|
202
|
+
export function formatRscDebugContext(components: RscDebugComponentInfo[]): string {
|
|
203
|
+
if (!components || components.length === 0) return '';
|
|
204
|
+
|
|
205
|
+
// Deduplicate by name — the debug channel may emit the same component
|
|
206
|
+
// multiple times (e.g., when re-rendered or when multiple instances exist).
|
|
207
|
+
const seen = new Set<string>();
|
|
208
|
+
const unique: RscDebugComponentInfo[] = [];
|
|
209
|
+
for (const c of components) {
|
|
210
|
+
if (!seen.has(c.name)) {
|
|
211
|
+
seen.add(c.name);
|
|
212
|
+
unique.push(c);
|
|
162
213
|
}
|
|
163
|
-
lines.push('');
|
|
164
214
|
}
|
|
165
215
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
216
|
+
const lines: string[] = ['Server Component Tree:'];
|
|
217
|
+
for (let i = 0; i < unique.length; i++) {
|
|
218
|
+
const c = unique[i]!;
|
|
219
|
+
const indent = ' '.repeat(i + 1);
|
|
220
|
+
const envLabel = c.env ? ` [${c.env}]` : '';
|
|
221
|
+
|
|
222
|
+
// Extract file location from stack frames if available
|
|
223
|
+
let locStr = '';
|
|
224
|
+
if (c.stack && c.stack.length > 0) {
|
|
225
|
+
const frame = c.stack[0] as [string, string, number, number] | undefined;
|
|
226
|
+
if (Array.isArray(frame) && frame.length >= 3) {
|
|
227
|
+
locStr = ` (${frame[1]}:${frame[2]})`;
|
|
176
228
|
}
|
|
177
229
|
}
|
|
230
|
+
|
|
231
|
+
lines.push(`${indent}${c.name}${envLabel}${locStr}`);
|
|
178
232
|
}
|
|
179
233
|
|
|
180
234
|
return lines.join('\n');
|
|
181
235
|
}
|
|
182
236
|
|
|
237
|
+
// ─── Module Runner Offset ───────────────────────────────────────────────────
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Dynamically compute the line offset that Vite's module runner adds
|
|
241
|
+
* when wrapping modules in an async function.
|
|
242
|
+
*
|
|
243
|
+
* Vite's `calculateOffsetOnce()` uses the same technique: create a new
|
|
244
|
+
* AsyncFunction, throw from line 1, and check where the engine reports
|
|
245
|
+
* the error. The difference between the reported line and 1 is the offset.
|
|
246
|
+
*
|
|
247
|
+
* This is engine-dependent (currently 2 on Node 18-22) and could change
|
|
248
|
+
* in future Node.js or V8 versions. Computing it at runtime ensures we
|
|
249
|
+
* always match the actual behavior.
|
|
250
|
+
*/
|
|
251
|
+
let _cachedOffset: number | null = null;
|
|
252
|
+
|
|
253
|
+
export function calculateModuleRunnerOffset(): number {
|
|
254
|
+
if (_cachedOffset !== null) return _cachedOffset;
|
|
255
|
+
|
|
256
|
+
try {
|
|
257
|
+
// Parse the AsyncFunction source to count wrapper lines before the body.
|
|
258
|
+
// AsyncFunction.toString() returns something like:
|
|
259
|
+
// "async function anonymous(\n) {\nBODY\n}"
|
|
260
|
+
// The number of newlines before BODY is the offset Vite's module runner adds.
|
|
261
|
+
// eslint-disable-next-line no-new-func -- intentional: mirrors Vite's technique
|
|
262
|
+
const AsyncFunction = async function () {}.constructor as typeof Function;
|
|
263
|
+
const wrapper = new AsyncFunction('BODY');
|
|
264
|
+
const src = wrapper.toString();
|
|
265
|
+
const bodyIndex = src.indexOf('BODY');
|
|
266
|
+
if (bodyIndex === -1) {
|
|
267
|
+
_cachedOffset = 2; // fallback
|
|
268
|
+
return _cachedOffset;
|
|
269
|
+
}
|
|
270
|
+
const beforeBody = src.slice(0, bodyIndex);
|
|
271
|
+
const newlineCount = (beforeBody.match(/\n/g) || []).length;
|
|
272
|
+
_cachedOffset = newlineCount;
|
|
273
|
+
} catch {
|
|
274
|
+
_cachedOffset = 2; // fallback to known-good value
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
return _cachedOffset;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// ─── Stack Trace Source-Mapping ──────────────────────────────────────────────
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Phases where the error originated in the RSC environment.
|
|
284
|
+
* These use `server.environments.rsc.moduleGraph` for source-mapping.
|
|
285
|
+
*/
|
|
286
|
+
const RSC_PHASES: ReadonlySet<ErrorPhase> = new Set(['render', 'access', 'middleware', 'handler']);
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Rewrite an error's stack trace using the correct Vite environment module graph.
|
|
290
|
+
*
|
|
291
|
+
* `server.ssrFixStacktrace()` hardcodes `server.environments.ssr.moduleGraph`,
|
|
292
|
+
* but RSC errors have stack frames pointing to modules loaded in the RSC
|
|
293
|
+
* environment — a separate Vite module graph with separate transform results
|
|
294
|
+
* and source maps. Using the SSR module graph silently fails to find the
|
|
295
|
+
* modules, leaving transpiled/bundled line numbers in the stack trace.
|
|
296
|
+
*
|
|
297
|
+
* This function picks the RSC module graph for render-phase errors and falls
|
|
298
|
+
* back to SSR for module-transform/proxy errors. If the first pass doesn't
|
|
299
|
+
* rewrite any frames (e.g., mixed RSC+SSR stack), it tries the other graph.
|
|
300
|
+
*/
|
|
301
|
+
function fixStacktraceForEnvironment(server: ViteDevServer, error: Error, phase: ErrorPhase): void {
|
|
302
|
+
if (!error.stack) return;
|
|
303
|
+
|
|
304
|
+
// Pick the primary environment based on error phase
|
|
305
|
+
const primaryEnvName = RSC_PHASES.has(phase) ? 'rsc' : 'ssr';
|
|
306
|
+
const fallbackEnvName = primaryEnvName === 'rsc' ? 'ssr' : 'rsc';
|
|
307
|
+
|
|
308
|
+
const primaryEnv = server.environments[primaryEnvName] as DevEnvironment | undefined;
|
|
309
|
+
const fallbackEnv = server.environments[fallbackEnvName] as DevEnvironment | undefined;
|
|
310
|
+
|
|
311
|
+
// Try primary environment first
|
|
312
|
+
if (primaryEnv?.moduleGraph) {
|
|
313
|
+
const rewritten = rewriteStacktrace(error.stack, primaryEnv.moduleGraph);
|
|
314
|
+
if (rewritten.changed) {
|
|
315
|
+
error.stack = rewritten.stack;
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// Fall back to the other environment if primary didn't rewrite anything
|
|
321
|
+
if (fallbackEnv?.moduleGraph) {
|
|
322
|
+
const rewritten = rewriteStacktrace(error.stack, fallbackEnv.moduleGraph);
|
|
323
|
+
if (rewritten.changed) {
|
|
324
|
+
error.stack = rewritten.stack;
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Rewrite stack trace frames using source maps from an environment's module graph.
|
|
332
|
+
*
|
|
333
|
+
* Mirrors Vite's internal `ssrRewriteStacktrace` logic but works with any
|
|
334
|
+
* `EnvironmentModuleGraph`, not just the SSR one.
|
|
335
|
+
*
|
|
336
|
+
* Returns the rewritten stack and whether any frames were actually changed.
|
|
337
|
+
*/
|
|
338
|
+
function rewriteStacktrace(
|
|
339
|
+
stack: string,
|
|
340
|
+
moduleGraph: DevEnvironment['moduleGraph']
|
|
341
|
+
): { stack: string; changed: boolean } {
|
|
342
|
+
let changed = false;
|
|
343
|
+
|
|
344
|
+
const result = stack
|
|
345
|
+
.split('\n')
|
|
346
|
+
.map((line) => {
|
|
347
|
+
return line.replace(
|
|
348
|
+
/^ {4}at (?:(\S.*?)\s\()?(.+?):(\d+)(?::(\d+))?\)?/,
|
|
349
|
+
(input, varName, id, lineStr, colStr) => {
|
|
350
|
+
if (!id) return input;
|
|
351
|
+
|
|
352
|
+
const mod = moduleGraph.getModuleById(id);
|
|
353
|
+
const rawSourceMap = mod?.transformResult?.map;
|
|
354
|
+
if (!rawSourceMap) return input;
|
|
355
|
+
|
|
356
|
+
// Vite's module runner wraps each module in an async function,
|
|
357
|
+
// adding N lines before the module body. The offset is computed
|
|
358
|
+
// dynamically to match the actual engine behavior (see TIM-783).
|
|
359
|
+
const OFFSET = calculateModuleRunnerOffset();
|
|
360
|
+
const origLine = Number(lineStr) - OFFSET;
|
|
361
|
+
const origCol = Number(colStr) - 1;
|
|
362
|
+
if (origLine <= 0 || origCol < 0) return input;
|
|
363
|
+
|
|
364
|
+
// Use @jridgewell/trace-mapping resolved from Vite's dependency tree.
|
|
365
|
+
// Vite bundles it internally; we resolve from Vite's package location
|
|
366
|
+
// to avoid adding a direct dependency.
|
|
367
|
+
let pos: { source: string | null; line: number | null; column: number | null };
|
|
368
|
+
try {
|
|
369
|
+
const { TraceMap: TM, originalPositionFor: opf } = getTraceMapping();
|
|
370
|
+
const traced = new TM(rawSourceMap);
|
|
371
|
+
pos = opf(traced, { line: origLine, column: origCol });
|
|
372
|
+
} catch {
|
|
373
|
+
return input;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
if (!pos.source || pos.line == null) return input;
|
|
377
|
+
|
|
378
|
+
changed = true;
|
|
379
|
+
const source = `${resolve(dirname(id), pos.source)}:${pos.line}:${(pos.column ?? 0) + 1}`;
|
|
380
|
+
const trimmedVarName = varName?.trim();
|
|
381
|
+
if (!trimmedVarName || trimmedVarName === 'eval') return ` at ${source}`;
|
|
382
|
+
return ` at ${trimmedVarName} (${source})`;
|
|
383
|
+
}
|
|
384
|
+
);
|
|
385
|
+
})
|
|
386
|
+
.join('\n');
|
|
387
|
+
|
|
388
|
+
return { stack: result, changed };
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
// ─── Error Source-Mapping (exported for use by fallback-error.ts) ────────────
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Source-map an error's stack trace using the Vite dev server's module graph.
|
|
395
|
+
*
|
|
396
|
+
* Exported so that the fallback error renderer (fallback-error.ts) can
|
|
397
|
+
* source-map errors before rendering the dev error page. Without this,
|
|
398
|
+
* the dev error page shows transpiled positions (e.g. page.tsx:1:1 instead
|
|
399
|
+
* of page.tsx:4:9).
|
|
400
|
+
*
|
|
401
|
+
* See TIM-811.
|
|
402
|
+
*/
|
|
403
|
+
export function fixErrorStacktrace(server: ViteDevServer, error: Error, phase?: ErrorPhase): void {
|
|
404
|
+
fixStacktraceForEnvironment(
|
|
405
|
+
server,
|
|
406
|
+
error,
|
|
407
|
+
phase ?? classifyErrorPhase(error, server.config.root)
|
|
408
|
+
);
|
|
409
|
+
}
|
|
410
|
+
|
|
183
411
|
// ─── Overlay Integration ────────────────────────────────────────────────────
|
|
184
412
|
|
|
185
413
|
/**
|
|
@@ -188,16 +416,26 @@ export function formatTerminalError(error: Error, phase: ErrorPhase, projectRoot
|
|
|
188
416
|
* Uses `server.ssrFixStacktrace()` to map stack traces back to source,
|
|
189
417
|
* then sends the error via `server.hot.send()` for the browser overlay.
|
|
190
418
|
*
|
|
419
|
+
* When `rscDebugComponents` is provided (dev mode only), the server
|
|
420
|
+
* component tree context is appended to the error message. This helps
|
|
421
|
+
* developers identify which server component caused the error without
|
|
422
|
+
* exposing source code.
|
|
423
|
+
*
|
|
191
424
|
* The dev server remains running — errors are handled, not fatal.
|
|
192
425
|
*/
|
|
193
426
|
export function sendErrorToOverlay(
|
|
194
427
|
server: ViteDevServer,
|
|
195
428
|
error: Error,
|
|
196
429
|
phase: ErrorPhase,
|
|
197
|
-
projectRoot: string
|
|
430
|
+
projectRoot: string,
|
|
431
|
+
rscDebugComponents?: RscDebugComponentInfo[]
|
|
198
432
|
): void {
|
|
199
|
-
// Fix stack trace to use source-mapped positions
|
|
200
|
-
|
|
433
|
+
// Fix stack trace to use source-mapped positions.
|
|
434
|
+
// Use the RSC environment's module graph for render/access/middleware errors
|
|
435
|
+
// (which originate in the RSC environment), and fall back to SSR for others.
|
|
436
|
+
// server.ssrFixStacktrace() is NOT used — it hardcodes the SSR module graph
|
|
437
|
+
// which doesn't contain source maps for RSC-loaded modules.
|
|
438
|
+
fixStacktraceForEnvironment(server, error, phase);
|
|
201
439
|
|
|
202
440
|
// Log to stderr with frame dimming
|
|
203
441
|
const formatted = formatTerminalError(error, phase, projectRoot);
|
|
@@ -212,6 +450,12 @@ export function sendErrorToOverlay(
|
|
|
212
450
|
message = `${error.message}\n\nComponent Stack:\n${componentStack.trim()}`;
|
|
213
451
|
}
|
|
214
452
|
|
|
453
|
+
// Append RSC debug context if available (dev mode only)
|
|
454
|
+
const debugContext = formatRscDebugContext(rscDebugComponents ?? []);
|
|
455
|
+
if (debugContext) {
|
|
456
|
+
message = `${message}\n\n${debugContext}`;
|
|
457
|
+
}
|
|
458
|
+
|
|
215
459
|
// Send to browser via Vite's error overlay protocol
|
|
216
460
|
try {
|
|
217
461
|
server.hot.send({
|