@rangojs/router 0.0.0-experimental.124 → 0.0.0-experimental.125
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/bin/rango.js +3 -4
- package/dist/vite/index.js +9 -43
- package/package.json +1 -1
- package/skills/hooks/SKILL.md +2 -2
- package/skills/route/SKILL.md +6 -0
- package/src/__internal.ts +0 -65
- package/src/browser/action-coordinator.ts +1 -1
- package/src/browser/action-fence.ts +10 -0
- package/src/browser/event-controller.ts +1 -83
- package/src/browser/navigation-store-handle.ts +3 -4
- package/src/browser/navigation-store.ts +0 -39
- package/src/browser/navigation-transaction.ts +0 -32
- package/src/browser/partial-update.ts +1 -83
- package/src/browser/prefetch/cache.ts +6 -45
- package/src/browser/prefetch/queue.ts +6 -3
- package/src/browser/rango-state.ts +2 -23
- package/src/browser/react/Link.tsx +0 -2
- package/src/browser/react/NavigationProvider.tsx +2 -1
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/filter-segment-order.ts +0 -2
- package/src/browser/react/index.ts +0 -45
- package/src/browser/react/location-state-shared.ts +0 -13
- package/src/browser/react/location-state.ts +0 -1
- package/src/browser/react/use-action.ts +6 -15
- package/src/browser/react/use-handle.ts +0 -5
- package/src/browser/react/use-link-status.ts +0 -4
- package/src/browser/react/use-navigation.ts +0 -3
- package/src/browser/react/use-params.ts +0 -2
- package/src/browser/react/use-search-params.ts +0 -5
- package/src/browser/react/use-segments.ts +0 -13
- package/src/browser/rsc-router.tsx +2 -2
- package/src/browser/types.ts +0 -1
- package/src/browser/validate-redirect-origin.ts +4 -5
- package/src/build/route-trie.ts +3 -0
- package/src/build/route-types/param-extraction.ts +6 -3
- package/src/build/route-types/router-processing.ts +0 -8
- package/src/cache/cache-policy.ts +0 -54
- package/src/cache/cache-runtime.ts +27 -24
- package/src/cache/cache-scope.ts +0 -27
- package/src/cache/cache-tag.ts +0 -37
- package/src/cache/cf/cf-cache-store.ts +72 -45
- package/src/cache/cf/index.ts +0 -24
- package/src/cache/document-cache.ts +0 -36
- package/src/cache/handle-snapshot.ts +0 -40
- package/src/cache/index.ts +0 -27
- package/src/cache/memory-segment-store.ts +0 -52
- package/src/cache/profile-registry.ts +7 -3
- package/src/cache/read-through-swr.ts +41 -11
- package/src/cache/segment-codec.ts +0 -16
- package/src/cache/types.ts +0 -98
- package/src/client.rsc.tsx +1 -22
- package/src/client.tsx +14 -32
- package/src/deps/ssr.ts +0 -1
- package/src/handle.ts +2 -12
- package/src/handles/MetaTags.tsx +0 -14
- package/src/handles/meta.ts +0 -39
- package/src/host/cookie-handler.ts +0 -36
- package/src/host/errors.ts +0 -24
- package/src/host/index.ts +6 -0
- package/src/host/pattern-matcher.ts +7 -50
- package/src/host/router.ts +1 -65
- package/src/host/testing.ts +0 -16
- package/src/host/types.ts +6 -2
- package/src/href-client.ts +0 -4
- package/src/index.rsc.ts +20 -2
- package/src/internal-debug.ts +2 -4
- package/src/loader.rsc.ts +4 -15
- package/src/loader.ts +3 -9
- package/src/network-error-thrower.tsx +1 -6
- package/src/outlet-provider.tsx +1 -5
- package/src/prerender/param-hash.ts +10 -11
- package/src/prerender/store.ts +23 -30
- package/src/prerender.ts +34 -0
- package/src/root-error-boundary.tsx +1 -19
- package/src/route-content-wrapper.tsx +1 -44
- package/src/route-definition/dsl-helpers.ts +7 -19
- package/src/route-definition/helpers-types.ts +3 -3
- package/src/route-definition/redirect.ts +11 -1
- package/src/route-map-builder.ts +0 -16
- package/src/router/content-negotiation.ts +0 -13
- package/src/router/error-handling.ts +12 -16
- package/src/router/find-match.ts +4 -30
- package/src/router/intercept-resolution.ts +10 -1
- package/src/router/lazy-includes.ts +1 -57
- package/src/router/loader-resolution.ts +3 -2
- package/src/router/logging.ts +0 -6
- package/src/router/manifest.ts +1 -25
- package/src/router/match-api.ts +0 -20
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +0 -43
- package/src/router/match-middleware/background-revalidation.ts +0 -7
- package/src/router/match-middleware/cache-lookup.ts +1 -54
- package/src/router/match-middleware/cache-store.ts +0 -31
- package/src/router/match-middleware/intercept-resolution.ts +0 -22
- package/src/router/match-middleware/segment-resolution.ts +0 -21
- package/src/router/match-pipelines.ts +1 -42
- package/src/router/match-result.ts +1 -52
- package/src/router/metrics.ts +0 -34
- package/src/router/middleware-cookies.ts +0 -13
- package/src/router/middleware-types.ts +0 -115
- package/src/router/middleware.ts +7 -30
- package/src/router/navigation-snapshot.ts +0 -51
- package/src/router/params-util.ts +23 -0
- package/src/router/pattern-matching.ts +1 -33
- package/src/router/prerender-match.ts +29 -45
- package/src/router/request-classification.ts +1 -38
- package/src/router/revalidation.ts +5 -58
- package/src/router/router-context.ts +0 -26
- package/src/router/segment-resolution/fresh.ts +25 -57
- package/src/router/segment-resolution/helpers.ts +34 -0
- package/src/router/segment-resolution/loader-cache.ts +10 -13
- package/src/router/segment-resolution/revalidation.ts +5 -42
- package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
- package/src/router/segment-resolution.ts +4 -1
- package/src/router/telemetry-otel.ts +0 -20
- package/src/router/telemetry.ts +0 -22
- package/src/router/timeout.ts +0 -20
- package/src/router/trie-matching.ts +63 -40
- package/src/router/types.ts +1 -63
- package/src/router/url-params.ts +0 -5
- package/src/router.ts +4 -2
- package/src/rsc/handler.ts +11 -2
- package/src/rsc/helpers.ts +15 -0
- package/src/rsc/origin-guard.ts +0 -12
- package/src/rsc/progressive-enhancement.ts +2 -1
- package/src/rsc/rsc-rendering.ts +2 -7
- package/src/rsc/runtime-warnings.ts +14 -0
- package/src/rsc/server-action.ts +30 -28
- package/src/rsc/types.ts +0 -1
- package/src/search-params.ts +0 -16
- package/src/segment-loader-promise.ts +14 -2
- package/src/segment-system.tsx +79 -88
- package/src/server/handle-store.ts +7 -24
- package/src/server/loader-registry.ts +5 -24
- package/src/server/request-context.ts +6 -78
- package/src/ssr/index.tsx +14 -14
- package/src/static-handler.ts +2 -27
- package/src/testing/cache-status.ts +0 -47
- package/src/testing/collect-handle.ts +1 -24
- package/src/testing/e2e/index.ts +0 -22
- package/src/testing/e2e/matchers.ts +0 -16
- package/src/testing/flight-matchers.ts +0 -13
- package/src/testing/flight-normalize.ts +3 -30
- package/src/testing/flight.ts +0 -48
- package/src/testing/generated-routes.ts +1 -41
- package/src/testing/index.ts +0 -21
- package/src/testing/internal/context.ts +3 -45
- package/src/testing/internal/seed-vars.ts +0 -26
- package/src/testing/render-handler.ts +0 -49
- package/src/testing/render-route.tsx +0 -90
- package/src/testing/run-loader.ts +0 -96
- package/src/testing/run-middleware.ts +0 -26
- package/src/theme/ThemeProvider.tsx +0 -52
- package/src/theme/ThemeScript.tsx +0 -6
- package/src/theme/constants.ts +0 -12
- package/src/theme/index.ts +0 -7
- package/src/theme/theme-context.ts +1 -5
- package/src/theme/theme-script.ts +0 -14
- package/src/theme/use-theme.ts +0 -3
- package/src/types/boundaries.ts +0 -35
- package/src/types/error-types.ts +25 -89
- package/src/types/global-namespace.ts +4 -14
- package/src/types/handler-context.ts +0 -8
- package/src/types/index.ts +0 -10
- package/src/types/request-scope.ts +0 -19
- package/src/types/route-config.ts +6 -50
- package/src/types/route-entry.ts +0 -6
- package/src/types/segments.ts +0 -13
- package/src/urls/include-helper.ts +0 -4
- package/src/urls/index.ts +0 -6
- package/src/urls/path-helper-types.ts +2 -2
- package/src/urls/path-helper.ts +0 -54
- package/src/urls/urls-function.ts +0 -13
- package/src/use-loader.tsx +0 -186
- package/src/vite/discovery/bundle-postprocess.ts +2 -1
- package/src/vite/discovery/discover-routers.ts +6 -7
- package/src/vite/discovery/virtual-module-codegen.ts +1 -11
- package/src/vite/plugin-types.ts +3 -1
- package/src/vite/plugins/cjs-to-esm.ts +0 -11
- package/src/vite/plugins/client-ref-dedup.ts +0 -11
- package/src/vite/plugins/client-ref-hashing.ts +0 -10
- package/src/vite/plugins/cloudflare-protocol-stub.ts +0 -20
- package/src/vite/plugins/expose-action-id.ts +2 -73
- package/src/vite/plugins/expose-id-utils.ts +0 -55
- package/src/vite/plugins/expose-ids/export-analysis.ts +0 -38
- package/src/vite/plugins/expose-ids/handler-transform.ts +0 -15
- package/src/vite/plugins/expose-ids/loader-transform.ts +0 -15
- package/src/vite/plugins/expose-ids/router-transform.ts +0 -13
- package/src/vite/plugins/expose-internal-ids.ts +10 -0
- package/src/vite/plugins/performance-tracks.ts +0 -3
- package/src/vite/plugins/use-cache-transform.ts +0 -36
- package/src/vite/plugins/version-injector.ts +0 -20
- package/src/vite/plugins/version-plugin.ts +1 -49
- package/src/vite/plugins/virtual-entries.ts +0 -15
- package/src/vite/rango.ts +1 -108
- package/src/vite/router-discovery.ts +2 -1
- package/src/vite/utils/ast-handler-extract.ts +0 -16
- package/src/vite/utils/bundle-analysis.ts +6 -13
- package/src/vite/utils/client-chunks.ts +0 -6
- package/src/vite/utils/forward-user-plugins.ts +0 -22
- package/src/vite/utils/manifest-utils.ts +0 -4
- package/src/vite/utils/package-resolution.ts +1 -73
- package/src/vite/utils/prerender-utils.ts +0 -35
- package/src/vite/utils/shared-utils.ts +3 -35
- package/dist/__internal.d.ts +0 -83
- package/dist/__internal.d.ts.map +0 -1
- package/dist/__internal.js +0 -19
- package/dist/__internal.js.map +0 -1
- package/dist/__mocks__/version.d.ts +0 -7
- package/dist/__mocks__/version.d.ts.map +0 -1
- package/dist/__mocks__/version.js +0 -7
- package/dist/__mocks__/version.js.map +0 -1
- package/dist/__tests__/client-href.test.d.ts +0 -2
- package/dist/__tests__/client-href.test.d.ts.map +0 -1
- package/dist/__tests__/client-href.test.js +0 -74
- package/dist/__tests__/client-href.test.js.map +0 -1
- package/dist/__tests__/component-utils.test.d.ts +0 -2
- package/dist/__tests__/component-utils.test.d.ts.map +0 -1
- package/dist/__tests__/component-utils.test.js +0 -51
- package/dist/__tests__/component-utils.test.js.map +0 -1
- package/dist/__tests__/event-controller.test.d.ts +0 -2
- package/dist/__tests__/event-controller.test.d.ts.map +0 -1
- package/dist/__tests__/event-controller.test.js +0 -538
- package/dist/__tests__/event-controller.test.js.map +0 -1
- package/dist/__tests__/helpers/route-tree.d.ts +0 -118
- package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
- package/dist/__tests__/helpers/route-tree.js +0 -374
- package/dist/__tests__/helpers/route-tree.js.map +0 -1
- package/dist/__tests__/match-result.test.d.ts +0 -2
- package/dist/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/__tests__/match-result.test.js +0 -154
- package/dist/__tests__/match-result.test.js.map +0 -1
- package/dist/__tests__/navigation-store.test.d.ts +0 -2
- package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
- package/dist/__tests__/navigation-store.test.js +0 -440
- package/dist/__tests__/navigation-store.test.js.map +0 -1
- package/dist/__tests__/partial-update.test.d.ts +0 -2
- package/dist/__tests__/partial-update.test.d.ts.map +0 -1
- package/dist/__tests__/partial-update.test.js +0 -1009
- package/dist/__tests__/partial-update.test.js.map +0 -1
- package/dist/__tests__/reverse-types.test.d.ts +0 -8
- package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
- package/dist/__tests__/reverse-types.test.js +0 -656
- package/dist/__tests__/reverse-types.test.js.map +0 -1
- package/dist/__tests__/route-definition.test.d.ts +0 -2
- package/dist/__tests__/route-definition.test.d.ts.map +0 -1
- package/dist/__tests__/route-definition.test.js +0 -55
- package/dist/__tests__/route-definition.test.js.map +0 -1
- package/dist/__tests__/router-helpers.test.d.ts +0 -2
- package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
- package/dist/__tests__/router-helpers.test.js +0 -377
- package/dist/__tests__/router-helpers.test.js.map +0 -1
- package/dist/__tests__/router-integration-2.test.d.ts +0 -2
- package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration-2.test.js +0 -426
- package/dist/__tests__/router-integration-2.test.js.map +0 -1
- package/dist/__tests__/router-integration.test.d.ts +0 -2
- package/dist/__tests__/router-integration.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration.test.js +0 -1051
- package/dist/__tests__/router-integration.test.js.map +0 -1
- package/dist/__tests__/search-params.test.d.ts +0 -5
- package/dist/__tests__/search-params.test.d.ts.map +0 -1
- package/dist/__tests__/search-params.test.js +0 -306
- package/dist/__tests__/search-params.test.js.map +0 -1
- package/dist/__tests__/segment-system.test.d.ts +0 -2
- package/dist/__tests__/segment-system.test.d.ts.map +0 -1
- package/dist/__tests__/segment-system.test.js +0 -627
- package/dist/__tests__/segment-system.test.js.map +0 -1
- package/dist/__tests__/static-handler-types.test.d.ts +0 -8
- package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
- package/dist/__tests__/static-handler-types.test.js +0 -63
- package/dist/__tests__/static-handler-types.test.js.map +0 -1
- package/dist/__tests__/urls.test.d.ts +0 -2
- package/dist/__tests__/urls.test.d.ts.map +0 -1
- package/dist/__tests__/urls.test.js +0 -421
- package/dist/__tests__/urls.test.js.map +0 -1
- package/dist/__tests__/use-mount.test.d.ts +0 -2
- package/dist/__tests__/use-mount.test.d.ts.map +0 -1
- package/dist/__tests__/use-mount.test.js +0 -35
- package/dist/__tests__/use-mount.test.js.map +0 -1
- package/dist/bin/rango.d.ts +0 -2
- package/dist/bin/rango.d.ts.map +0 -1
- package/dist/bin/rango.js.map +0 -1
- package/dist/browser/event-controller.d.ts +0 -191
- package/dist/browser/event-controller.d.ts.map +0 -1
- package/dist/browser/event-controller.js +0 -559
- package/dist/browser/event-controller.js.map +0 -1
- package/dist/browser/index.d.ts +0 -2
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -14
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/link-interceptor.d.ts +0 -38
- package/dist/browser/link-interceptor.d.ts.map +0 -1
- package/dist/browser/link-interceptor.js +0 -99
- package/dist/browser/link-interceptor.js.map +0 -1
- package/dist/browser/logging.d.ts +0 -10
- package/dist/browser/logging.d.ts.map +0 -1
- package/dist/browser/logging.js +0 -29
- package/dist/browser/logging.js.map +0 -1
- package/dist/browser/lru-cache.d.ts +0 -17
- package/dist/browser/lru-cache.d.ts.map +0 -1
- package/dist/browser/lru-cache.js +0 -50
- package/dist/browser/lru-cache.js.map +0 -1
- package/dist/browser/merge-segment-loaders.d.ts +0 -39
- package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
- package/dist/browser/merge-segment-loaders.js +0 -102
- package/dist/browser/merge-segment-loaders.js.map +0 -1
- package/dist/browser/navigation-bridge.d.ts +0 -102
- package/dist/browser/navigation-bridge.d.ts.map +0 -1
- package/dist/browser/navigation-bridge.js +0 -708
- package/dist/browser/navigation-bridge.js.map +0 -1
- package/dist/browser/navigation-client.d.ts +0 -25
- package/dist/browser/navigation-client.d.ts.map +0 -1
- package/dist/browser/navigation-client.js +0 -157
- package/dist/browser/navigation-client.js.map +0 -1
- package/dist/browser/navigation-store.d.ts +0 -101
- package/dist/browser/navigation-store.d.ts.map +0 -1
- package/dist/browser/navigation-store.js +0 -625
- package/dist/browser/navigation-store.js.map +0 -1
- package/dist/browser/partial-update.d.ts +0 -75
- package/dist/browser/partial-update.d.ts.map +0 -1
- package/dist/browser/partial-update.js +0 -426
- package/dist/browser/partial-update.js.map +0 -1
- package/dist/browser/react/Link.d.ts +0 -86
- package/dist/browser/react/Link.d.ts.map +0 -1
- package/dist/browser/react/Link.js +0 -128
- package/dist/browser/react/Link.js.map +0 -1
- package/dist/browser/react/NavigationProvider.d.ts +0 -63
- package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
- package/dist/browser/react/NavigationProvider.js +0 -216
- package/dist/browser/react/NavigationProvider.js.map +0 -1
- package/dist/browser/react/ScrollRestoration.d.ts +0 -75
- package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
- package/dist/browser/react/ScrollRestoration.js +0 -57
- package/dist/browser/react/ScrollRestoration.js.map +0 -1
- package/dist/browser/react/context.d.ts +0 -46
- package/dist/browser/react/context.d.ts.map +0 -1
- package/dist/browser/react/context.js +0 -10
- package/dist/browser/react/context.js.map +0 -1
- package/dist/browser/react/index.d.ts +0 -11
- package/dist/browser/react/index.d.ts.map +0 -1
- package/dist/browser/react/index.js +0 -22
- package/dist/browser/react/index.js.map +0 -1
- package/dist/browser/react/location-state-shared.d.ts +0 -63
- package/dist/browser/react/location-state-shared.d.ts.map +0 -1
- package/dist/browser/react/location-state-shared.js +0 -81
- package/dist/browser/react/location-state-shared.js.map +0 -1
- package/dist/browser/react/location-state.d.ts +0 -23
- package/dist/browser/react/location-state.d.ts.map +0 -1
- package/dist/browser/react/location-state.js +0 -29
- package/dist/browser/react/location-state.js.map +0 -1
- package/dist/browser/react/mount-context.d.ts +0 -24
- package/dist/browser/react/mount-context.d.ts.map +0 -1
- package/dist/browser/react/mount-context.js +0 -24
- package/dist/browser/react/mount-context.js.map +0 -1
- package/dist/browser/react/use-action.d.ts +0 -64
- package/dist/browser/react/use-action.d.ts.map +0 -1
- package/dist/browser/react/use-action.js +0 -134
- package/dist/browser/react/use-action.js.map +0 -1
- package/dist/browser/react/use-client-cache.d.ts +0 -41
- package/dist/browser/react/use-client-cache.d.ts.map +0 -1
- package/dist/browser/react/use-client-cache.js +0 -39
- package/dist/browser/react/use-client-cache.js.map +0 -1
- package/dist/browser/react/use-handle.d.ts +0 -31
- package/dist/browser/react/use-handle.d.ts.map +0 -1
- package/dist/browser/react/use-handle.js +0 -144
- package/dist/browser/react/use-handle.js.map +0 -1
- package/dist/browser/react/use-href.d.ts +0 -33
- package/dist/browser/react/use-href.d.ts.map +0 -1
- package/dist/browser/react/use-href.js +0 -39
- package/dist/browser/react/use-href.js.map +0 -1
- package/dist/browser/react/use-link-status.d.ts +0 -37
- package/dist/browser/react/use-link-status.d.ts.map +0 -1
- package/dist/browser/react/use-link-status.js +0 -99
- package/dist/browser/react/use-link-status.js.map +0 -1
- package/dist/browser/react/use-mount.d.ts +0 -25
- package/dist/browser/react/use-mount.d.ts.map +0 -1
- package/dist/browser/react/use-mount.js +0 -30
- package/dist/browser/react/use-mount.js.map +0 -1
- package/dist/browser/react/use-navigation.d.ts +0 -27
- package/dist/browser/react/use-navigation.d.ts.map +0 -1
- package/dist/browser/react/use-navigation.js +0 -87
- package/dist/browser/react/use-navigation.js.map +0 -1
- package/dist/browser/react/use-segments.d.ts +0 -38
- package/dist/browser/react/use-segments.d.ts.map +0 -1
- package/dist/browser/react/use-segments.js +0 -130
- package/dist/browser/react/use-segments.js.map +0 -1
- package/dist/browser/request-controller.d.ts +0 -26
- package/dist/browser/request-controller.d.ts.map +0 -1
- package/dist/browser/request-controller.js +0 -147
- package/dist/browser/request-controller.js.map +0 -1
- package/dist/browser/rsc-router.d.ts +0 -129
- package/dist/browser/rsc-router.d.ts.map +0 -1
- package/dist/browser/rsc-router.js +0 -195
- package/dist/browser/rsc-router.js.map +0 -1
- package/dist/browser/scroll-restoration.d.ts +0 -93
- package/dist/browser/scroll-restoration.d.ts.map +0 -1
- package/dist/browser/scroll-restoration.js +0 -321
- package/dist/browser/scroll-restoration.js.map +0 -1
- package/dist/browser/segment-structure-assert.d.ts +0 -17
- package/dist/browser/segment-structure-assert.d.ts.map +0 -1
- package/dist/browser/segment-structure-assert.js +0 -59
- package/dist/browser/segment-structure-assert.js.map +0 -1
- package/dist/browser/server-action-bridge.d.ts +0 -26
- package/dist/browser/server-action-bridge.d.ts.map +0 -1
- package/dist/browser/server-action-bridge.js +0 -668
- package/dist/browser/server-action-bridge.js.map +0 -1
- package/dist/browser/shallow.d.ts +0 -12
- package/dist/browser/shallow.d.ts.map +0 -1
- package/dist/browser/shallow.js +0 -34
- package/dist/browser/shallow.js.map +0 -1
- package/dist/browser/types.d.ts +0 -369
- package/dist/browser/types.d.ts.map +0 -1
- package/dist/browser/types.js +0 -2
- package/dist/browser/types.js.map +0 -1
- package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
- package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-cli.test.js +0 -237
- package/dist/build/__tests__/generate-cli.test.js.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.js +0 -119
- package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.js +0 -620
- package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.js +0 -308
- package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
- package/dist/build/generate-manifest.d.ts +0 -81
- package/dist/build/generate-manifest.d.ts.map +0 -1
- package/dist/build/generate-manifest.js +0 -276
- package/dist/build/generate-manifest.js.map +0 -1
- package/dist/build/generate-route-types.d.ts +0 -115
- package/dist/build/generate-route-types.d.ts.map +0 -1
- package/dist/build/generate-route-types.js +0 -740
- package/dist/build/generate-route-types.js.map +0 -1
- package/dist/build/index.d.ts +0 -21
- package/dist/build/index.d.ts.map +0 -1
- package/dist/build/index.js +0 -21
- package/dist/build/index.js.map +0 -1
- package/dist/build/route-trie.d.ts +0 -71
- package/dist/build/route-trie.d.ts.map +0 -1
- package/dist/build/route-trie.js +0 -175
- package/dist/build/route-trie.js.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.js +0 -208
- package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
- package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
- package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
- package/dist/cache/__tests__/document-cache.test.js +0 -345
- package/dist/cache/__tests__/document-cache.test.js.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
- package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
- package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-store.test.js +0 -367
- package/dist/cache/__tests__/memory-store.test.js.map +0 -1
- package/dist/cache/cache-scope.d.ts +0 -102
- package/dist/cache/cache-scope.d.ts.map +0 -1
- package/dist/cache/cache-scope.js +0 -440
- package/dist/cache/cache-scope.js.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
- package/dist/cache/cf/cf-cache-store.d.ts +0 -165
- package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
- package/dist/cache/cf/cf-cache-store.js +0 -242
- package/dist/cache/cf/cf-cache-store.js.map +0 -1
- package/dist/cache/cf/index.d.ts +0 -14
- package/dist/cache/cf/index.d.ts.map +0 -1
- package/dist/cache/cf/index.js +0 -17
- package/dist/cache/cf/index.js.map +0 -1
- package/dist/cache/document-cache.d.ts +0 -64
- package/dist/cache/document-cache.d.ts.map +0 -1
- package/dist/cache/document-cache.js +0 -228
- package/dist/cache/document-cache.js.map +0 -1
- package/dist/cache/index.d.ts +0 -19
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -21
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/memory-segment-store.d.ts +0 -110
- package/dist/cache/memory-segment-store.d.ts.map +0 -1
- package/dist/cache/memory-segment-store.js +0 -117
- package/dist/cache/memory-segment-store.js.map +0 -1
- package/dist/cache/memory-store.d.ts +0 -41
- package/dist/cache/memory-store.d.ts.map +0 -1
- package/dist/cache/memory-store.js +0 -191
- package/dist/cache/memory-store.js.map +0 -1
- package/dist/cache/types.d.ts +0 -317
- package/dist/cache/types.d.ts.map +0 -1
- package/dist/cache/types.js +0 -12
- package/dist/cache/types.js.map +0 -1
- package/dist/client.d.ts +0 -248
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -367
- package/dist/client.js.map +0 -1
- package/dist/client.rsc.d.ts +0 -26
- package/dist/client.rsc.d.ts.map +0 -1
- package/dist/client.rsc.js +0 -46
- package/dist/client.rsc.js.map +0 -1
- package/dist/component-utils.d.ts +0 -36
- package/dist/component-utils.d.ts.map +0 -1
- package/dist/component-utils.js +0 -61
- package/dist/component-utils.js.map +0 -1
- package/dist/components/DefaultDocument.d.ts +0 -13
- package/dist/components/DefaultDocument.d.ts.map +0 -1
- package/dist/components/DefaultDocument.js +0 -15
- package/dist/components/DefaultDocument.js.map +0 -1
- package/dist/debug.d.ts +0 -58
- package/dist/debug.d.ts.map +0 -1
- package/dist/debug.js +0 -157
- package/dist/debug.js.map +0 -1
- package/dist/default-error-boundary.d.ts +0 -11
- package/dist/default-error-boundary.d.ts.map +0 -1
- package/dist/default-error-boundary.js +0 -45
- package/dist/default-error-boundary.js.map +0 -1
- package/dist/deps/browser.d.ts +0 -2
- package/dist/deps/browser.d.ts.map +0 -1
- package/dist/deps/browser.js +0 -3
- package/dist/deps/browser.js.map +0 -1
- package/dist/deps/html-stream-client.d.ts +0 -2
- package/dist/deps/html-stream-client.d.ts.map +0 -1
- package/dist/deps/html-stream-client.js +0 -3
- package/dist/deps/html-stream-client.js.map +0 -1
- package/dist/deps/html-stream-server.d.ts +0 -2
- package/dist/deps/html-stream-server.d.ts.map +0 -1
- package/dist/deps/html-stream-server.js +0 -3
- package/dist/deps/html-stream-server.js.map +0 -1
- package/dist/deps/rsc.d.ts +0 -2
- package/dist/deps/rsc.d.ts.map +0 -1
- package/dist/deps/rsc.js +0 -4
- package/dist/deps/rsc.js.map +0 -1
- package/dist/deps/ssr.d.ts +0 -2
- package/dist/deps/ssr.d.ts.map +0 -1
- package/dist/deps/ssr.js +0 -3
- package/dist/deps/ssr.js.map +0 -1
- package/dist/errors.d.ts +0 -174
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -241
- package/dist/errors.js.map +0 -1
- package/dist/handle.d.ts +0 -78
- package/dist/handle.d.ts.map +0 -1
- package/dist/handle.js +0 -82
- package/dist/handle.js.map +0 -1
- package/dist/handles/MetaTags.d.ts +0 -14
- package/dist/handles/MetaTags.d.ts.map +0 -1
- package/dist/handles/MetaTags.js +0 -136
- package/dist/handles/MetaTags.js.map +0 -1
- package/dist/handles/index.d.ts +0 -6
- package/dist/handles/index.d.ts.map +0 -1
- package/dist/handles/index.js +0 -6
- package/dist/handles/index.js.map +0 -1
- package/dist/handles/meta.d.ts +0 -39
- package/dist/handles/meta.d.ts.map +0 -1
- package/dist/handles/meta.js +0 -202
- package/dist/handles/meta.js.map +0 -1
- package/dist/host/__tests__/errors.test.d.ts +0 -2
- package/dist/host/__tests__/errors.test.d.ts.map +0 -1
- package/dist/host/__tests__/errors.test.js +0 -76
- package/dist/host/__tests__/errors.test.js.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.js +0 -251
- package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
- package/dist/host/__tests__/router.test.d.ts +0 -2
- package/dist/host/__tests__/router.test.d.ts.map +0 -1
- package/dist/host/__tests__/router.test.js +0 -241
- package/dist/host/__tests__/router.test.js.map +0 -1
- package/dist/host/__tests__/testing.test.d.ts +0 -2
- package/dist/host/__tests__/testing.test.d.ts.map +0 -1
- package/dist/host/__tests__/testing.test.js +0 -64
- package/dist/host/__tests__/testing.test.js.map +0 -1
- package/dist/host/__tests__/utils.test.d.ts +0 -2
- package/dist/host/__tests__/utils.test.d.ts.map +0 -1
- package/dist/host/__tests__/utils.test.js +0 -29
- package/dist/host/__tests__/utils.test.js.map +0 -1
- package/dist/host/cookie-handler.d.ts +0 -34
- package/dist/host/cookie-handler.d.ts.map +0 -1
- package/dist/host/cookie-handler.js +0 -124
- package/dist/host/cookie-handler.js.map +0 -1
- package/dist/host/errors.d.ts +0 -56
- package/dist/host/errors.d.ts.map +0 -1
- package/dist/host/errors.js +0 -79
- package/dist/host/errors.js.map +0 -1
- package/dist/host/index.d.ts +0 -29
- package/dist/host/index.d.ts.map +0 -1
- package/dist/host/index.js +0 -32
- package/dist/host/index.js.map +0 -1
- package/dist/host/pattern-matcher.d.ts +0 -36
- package/dist/host/pattern-matcher.d.ts.map +0 -1
- package/dist/host/pattern-matcher.js +0 -172
- package/dist/host/pattern-matcher.js.map +0 -1
- package/dist/host/router.d.ts +0 -26
- package/dist/host/router.d.ts.map +0 -1
- package/dist/host/router.js +0 -218
- package/dist/host/router.js.map +0 -1
- package/dist/host/testing.d.ts +0 -36
- package/dist/host/testing.d.ts.map +0 -1
- package/dist/host/testing.js +0 -55
- package/dist/host/testing.js.map +0 -1
- package/dist/host/types.d.ts +0 -115
- package/dist/host/types.d.ts.map +0 -1
- package/dist/host/types.js +0 -7
- package/dist/host/types.js.map +0 -1
- package/dist/host/utils.d.ts +0 -21
- package/dist/host/utils.d.ts.map +0 -1
- package/dist/host/utils.js +0 -23
- package/dist/host/utils.js.map +0 -1
- package/dist/href-client.d.ts +0 -131
- package/dist/href-client.d.ts.map +0 -1
- package/dist/href-client.js +0 -64
- package/dist/href-client.js.map +0 -1
- package/dist/href-context.d.ts +0 -29
- package/dist/href-context.d.ts.map +0 -1
- package/dist/href-context.js +0 -21
- package/dist/href-context.js.map +0 -1
- package/dist/index.d.ts +0 -73
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -91
- package/dist/index.js.map +0 -1
- package/dist/index.rsc.d.ts +0 -32
- package/dist/index.rsc.d.ts.map +0 -1
- package/dist/index.rsc.js +0 -40
- package/dist/index.rsc.js.map +0 -1
- package/dist/internal-debug.d.ts +0 -2
- package/dist/internal-debug.d.ts.map +0 -1
- package/dist/internal-debug.js +0 -5
- package/dist/internal-debug.js.map +0 -1
- package/dist/loader.d.ts +0 -14
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -20
- package/dist/loader.js.map +0 -1
- package/dist/loader.rsc.d.ts +0 -19
- package/dist/loader.rsc.d.ts.map +0 -1
- package/dist/loader.rsc.js +0 -99
- package/dist/loader.rsc.js.map +0 -1
- package/dist/network-error-thrower.d.ts +0 -17
- package/dist/network-error-thrower.d.ts.map +0 -1
- package/dist/network-error-thrower.js +0 -14
- package/dist/network-error-thrower.js.map +0 -1
- package/dist/outlet-context.d.ts +0 -13
- package/dist/outlet-context.d.ts.map +0 -1
- package/dist/outlet-context.js +0 -3
- package/dist/outlet-context.js.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.js +0 -148
- package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
- package/dist/prerender/param-hash.d.ts +0 -16
- package/dist/prerender/param-hash.d.ts.map +0 -1
- package/dist/prerender/param-hash.js +0 -36
- package/dist/prerender/param-hash.js.map +0 -1
- package/dist/prerender/store.d.ts +0 -38
- package/dist/prerender/store.d.ts.map +0 -1
- package/dist/prerender/store.js +0 -61
- package/dist/prerender/store.js.map +0 -1
- package/dist/prerender.d.ts +0 -66
- package/dist/prerender.d.ts.map +0 -1
- package/dist/prerender.js +0 -57
- package/dist/prerender.js.map +0 -1
- package/dist/reverse.d.ts +0 -196
- package/dist/reverse.d.ts.map +0 -1
- package/dist/reverse.js +0 -78
- package/dist/reverse.js.map +0 -1
- package/dist/root-error-boundary.d.ts +0 -33
- package/dist/root-error-boundary.d.ts.map +0 -1
- package/dist/root-error-boundary.js +0 -165
- package/dist/root-error-boundary.js.map +0 -1
- package/dist/route-content-wrapper.d.ts +0 -46
- package/dist/route-content-wrapper.d.ts.map +0 -1
- package/dist/route-content-wrapper.js +0 -77
- package/dist/route-content-wrapper.js.map +0 -1
- package/dist/route-definition.d.ts +0 -421
- package/dist/route-definition.d.ts.map +0 -1
- package/dist/route-definition.js +0 -868
- package/dist/route-definition.js.map +0 -1
- package/dist/route-map-builder.d.ts +0 -155
- package/dist/route-map-builder.d.ts.map +0 -1
- package/dist/route-map-builder.js +0 -237
- package/dist/route-map-builder.js.map +0 -1
- package/dist/route-types.d.ts +0 -165
- package/dist/route-types.d.ts.map +0 -1
- package/dist/route-types.js +0 -7
- package/dist/route-types.js.map +0 -1
- package/dist/router/__tests__/handler-context.test.d.ts +0 -2
- package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/handler-context.test.js +0 -65
- package/dist/router/__tests__/handler-context.test.js.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
- package/dist/router/__tests__/match-context.test.d.ts +0 -2
- package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-context.test.js +0 -92
- package/dist/router/__tests__/match-context.test.js.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.js +0 -417
- package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
- package/dist/router/__tests__/match-result.test.d.ts +0 -2
- package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-result.test.js +0 -457
- package/dist/router/__tests__/match-result.test.js.map +0 -1
- package/dist/router/__tests__/on-error.test.d.ts +0 -2
- package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
- package/dist/router/__tests__/on-error.test.js +0 -678
- package/dist/router/__tests__/on-error.test.js.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.js +0 -629
- package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
- package/dist/router/error-handling.d.ts +0 -77
- package/dist/router/error-handling.d.ts.map +0 -1
- package/dist/router/error-handling.js +0 -202
- package/dist/router/error-handling.js.map +0 -1
- package/dist/router/handler-context.d.ts +0 -20
- package/dist/router/handler-context.d.ts.map +0 -1
- package/dist/router/handler-context.js +0 -198
- package/dist/router/handler-context.js.map +0 -1
- package/dist/router/intercept-resolution.d.ts +0 -66
- package/dist/router/intercept-resolution.d.ts.map +0 -1
- package/dist/router/intercept-resolution.js +0 -246
- package/dist/router/intercept-resolution.js.map +0 -1
- package/dist/router/loader-resolution.d.ts +0 -64
- package/dist/router/loader-resolution.d.ts.map +0 -1
- package/dist/router/loader-resolution.js +0 -284
- package/dist/router/loader-resolution.js.map +0 -1
- package/dist/router/logging.d.ts +0 -15
- package/dist/router/logging.d.ts.map +0 -1
- package/dist/router/logging.js +0 -99
- package/dist/router/logging.js.map +0 -1
- package/dist/router/manifest.d.ts +0 -22
- package/dist/router/manifest.d.ts.map +0 -1
- package/dist/router/manifest.js +0 -181
- package/dist/router/manifest.js.map +0 -1
- package/dist/router/match-api.d.ts +0 -35
- package/dist/router/match-api.d.ts.map +0 -1
- package/dist/router/match-api.js +0 -406
- package/dist/router/match-api.js.map +0 -1
- package/dist/router/match-context.d.ts +0 -206
- package/dist/router/match-context.d.ts.map +0 -1
- package/dist/router/match-context.js +0 -17
- package/dist/router/match-context.js.map +0 -1
- package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
- package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
- package/dist/router/match-middleware/background-revalidation.js +0 -75
- package/dist/router/match-middleware/background-revalidation.js.map +0 -1
- package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
- package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-lookup.js +0 -257
- package/dist/router/match-middleware/cache-lookup.js.map +0 -1
- package/dist/router/match-middleware/cache-store.d.ts +0 -113
- package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-store.js +0 -108
- package/dist/router/match-middleware/cache-store.js.map +0 -1
- package/dist/router/match-middleware/index.d.ts +0 -81
- package/dist/router/match-middleware/index.d.ts.map +0 -1
- package/dist/router/match-middleware/index.js +0 -80
- package/dist/router/match-middleware/index.js.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.js +0 -134
- package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
- package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
- package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/segment-resolution.js +0 -53
- package/dist/router/match-middleware/segment-resolution.js.map +0 -1
- package/dist/router/match-pipelines.d.ts +0 -147
- package/dist/router/match-pipelines.d.ts.map +0 -1
- package/dist/router/match-pipelines.js +0 -82
- package/dist/router/match-pipelines.js.map +0 -1
- package/dist/router/match-result.d.ts +0 -126
- package/dist/router/match-result.d.ts.map +0 -1
- package/dist/router/match-result.js +0 -93
- package/dist/router/match-result.js.map +0 -1
- package/dist/router/metrics.d.ts +0 -20
- package/dist/router/metrics.d.ts.map +0 -1
- package/dist/router/metrics.js +0 -47
- package/dist/router/metrics.js.map +0 -1
- package/dist/router/middleware.d.ts +0 -249
- package/dist/router/middleware.d.ts.map +0 -1
- package/dist/router/middleware.js +0 -434
- package/dist/router/middleware.js.map +0 -1
- package/dist/router/middleware.test.d.ts +0 -2
- package/dist/router/middleware.test.d.ts.map +0 -1
- package/dist/router/middleware.test.js +0 -816
- package/dist/router/middleware.test.js.map +0 -1
- package/dist/router/pattern-matching.d.ts +0 -149
- package/dist/router/pattern-matching.d.ts.map +0 -1
- package/dist/router/pattern-matching.js +0 -349
- package/dist/router/pattern-matching.js.map +0 -1
- package/dist/router/revalidation.d.ts +0 -44
- package/dist/router/revalidation.d.ts.map +0 -1
- package/dist/router/revalidation.js +0 -147
- package/dist/router/revalidation.js.map +0 -1
- package/dist/router/router-context.d.ts +0 -135
- package/dist/router/router-context.d.ts.map +0 -1
- package/dist/router/router-context.js +0 -36
- package/dist/router/router-context.js.map +0 -1
- package/dist/router/segment-resolution.d.ts +0 -127
- package/dist/router/segment-resolution.d.ts.map +0 -1
- package/dist/router/segment-resolution.js +0 -919
- package/dist/router/segment-resolution.js.map +0 -1
- package/dist/router/trie-matching.d.ts +0 -40
- package/dist/router/trie-matching.d.ts.map +0 -1
- package/dist/router/trie-matching.js +0 -127
- package/dist/router/trie-matching.js.map +0 -1
- package/dist/router/types.d.ts +0 -136
- package/dist/router/types.d.ts.map +0 -1
- package/dist/router/types.js +0 -7
- package/dist/router/types.js.map +0 -1
- package/dist/router.d.ts +0 -753
- package/dist/router.d.ts.map +0 -1
- package/dist/router.gen.d.ts +0 -6
- package/dist/router.gen.d.ts.map +0 -1
- package/dist/router.gen.js +0 -6
- package/dist/router.gen.js.map +0 -1
- package/dist/router.js +0 -1304
- package/dist/router.js.map +0 -1
- package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
- package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
- package/dist/rsc/__tests__/helpers.test.js +0 -140
- package/dist/rsc/__tests__/helpers.test.js.map +0 -1
- package/dist/rsc/handler.d.ts +0 -45
- package/dist/rsc/handler.d.ts.map +0 -1
- package/dist/rsc/handler.js +0 -1172
- package/dist/rsc/handler.js.map +0 -1
- package/dist/rsc/helpers.d.ts +0 -16
- package/dist/rsc/helpers.d.ts.map +0 -1
- package/dist/rsc/helpers.js +0 -55
- package/dist/rsc/helpers.js.map +0 -1
- package/dist/rsc/index.d.ts +0 -22
- package/dist/rsc/index.d.ts.map +0 -1
- package/dist/rsc/index.js +0 -23
- package/dist/rsc/index.js.map +0 -1
- package/dist/rsc/nonce.d.ts +0 -9
- package/dist/rsc/nonce.d.ts.map +0 -1
- package/dist/rsc/nonce.js +0 -18
- package/dist/rsc/nonce.js.map +0 -1
- package/dist/rsc/types.d.ts +0 -206
- package/dist/rsc/types.d.ts.map +0 -1
- package/dist/rsc/types.js +0 -8
- package/dist/rsc/types.js.map +0 -1
- package/dist/search-params.d.ts +0 -103
- package/dist/search-params.d.ts.map +0 -1
- package/dist/search-params.js +0 -74
- package/dist/search-params.js.map +0 -1
- package/dist/segment-system.d.ts +0 -75
- package/dist/segment-system.d.ts.map +0 -1
- package/dist/segment-system.js +0 -336
- package/dist/segment-system.js.map +0 -1
- package/dist/server/context.d.ts +0 -245
- package/dist/server/context.d.ts.map +0 -1
- package/dist/server/context.js +0 -197
- package/dist/server/context.js.map +0 -1
- package/dist/server/fetchable-loader-store.d.ts +0 -18
- package/dist/server/fetchable-loader-store.d.ts.map +0 -1
- package/dist/server/fetchable-loader-store.js +0 -18
- package/dist/server/fetchable-loader-store.js.map +0 -1
- package/dist/server/handle-store.d.ts +0 -85
- package/dist/server/handle-store.d.ts.map +0 -1
- package/dist/server/handle-store.js +0 -142
- package/dist/server/handle-store.js.map +0 -1
- package/dist/server/loader-registry.d.ts +0 -55
- package/dist/server/loader-registry.d.ts.map +0 -1
- package/dist/server/loader-registry.js +0 -132
- package/dist/server/loader-registry.js.map +0 -1
- package/dist/server/request-context.d.ts +0 -226
- package/dist/server/request-context.d.ts.map +0 -1
- package/dist/server/request-context.js +0 -290
- package/dist/server/request-context.js.map +0 -1
- package/dist/server/root-layout.d.ts +0 -4
- package/dist/server/root-layout.d.ts.map +0 -1
- package/dist/server/root-layout.js +0 -5
- package/dist/server/root-layout.js.map +0 -1
- package/dist/server.d.ts +0 -15
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -20
- package/dist/server.js.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
- package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
- package/dist/ssr/index.d.ts +0 -98
- package/dist/ssr/index.d.ts.map +0 -1
- package/dist/ssr/index.js +0 -158
- package/dist/ssr/index.js.map +0 -1
- package/dist/static-handler.d.ts +0 -50
- package/dist/static-handler.d.ts.map +0 -1
- package/dist/static-handler.gen.d.ts +0 -5
- package/dist/static-handler.gen.d.ts.map +0 -1
- package/dist/static-handler.gen.js +0 -5
- package/dist/static-handler.gen.js.map +0 -1
- package/dist/static-handler.js +0 -29
- package/dist/static-handler.js.map +0 -1
- package/dist/theme/ThemeProvider.d.ts +0 -20
- package/dist/theme/ThemeProvider.d.ts.map +0 -1
- package/dist/theme/ThemeProvider.js +0 -240
- package/dist/theme/ThemeProvider.js.map +0 -1
- package/dist/theme/ThemeScript.d.ts +0 -48
- package/dist/theme/ThemeScript.d.ts.map +0 -1
- package/dist/theme/ThemeScript.js +0 -13
- package/dist/theme/ThemeScript.js.map +0 -1
- package/dist/theme/__tests__/theme.test.d.ts +0 -2
- package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
- package/dist/theme/__tests__/theme.test.js +0 -103
- package/dist/theme/__tests__/theme.test.js.map +0 -1
- package/dist/theme/constants.d.ts +0 -29
- package/dist/theme/constants.d.ts.map +0 -1
- package/dist/theme/constants.js +0 -48
- package/dist/theme/constants.js.map +0 -1
- package/dist/theme/index.d.ts +0 -31
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js +0 -36
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/theme-context.d.ts +0 -40
- package/dist/theme/theme-context.d.ts.map +0 -1
- package/dist/theme/theme-context.js +0 -60
- package/dist/theme/theme-context.js.map +0 -1
- package/dist/theme/theme-script.d.ts +0 -27
- package/dist/theme/theme-script.d.ts.map +0 -1
- package/dist/theme/theme-script.js +0 -147
- package/dist/theme/theme-script.js.map +0 -1
- package/dist/theme/types.d.ts +0 -163
- package/dist/theme/types.d.ts.map +0 -1
- package/dist/theme/types.js +0 -11
- package/dist/theme/types.js.map +0 -1
- package/dist/theme/use-theme.d.ts +0 -12
- package/dist/theme/use-theme.d.ts.map +0 -1
- package/dist/theme/use-theme.js +0 -40
- package/dist/theme/use-theme.js.map +0 -1
- package/dist/types.d.ts +0 -1479
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +0 -1
- package/dist/urls.d.ts +0 -441
- package/dist/urls.d.ts.map +0 -1
- package/dist/urls.gen.d.ts +0 -8
- package/dist/urls.gen.d.ts.map +0 -1
- package/dist/urls.gen.js +0 -8
- package/dist/urls.gen.js.map +0 -1
- package/dist/urls.js +0 -443
- package/dist/urls.js.map +0 -1
- package/dist/use-loader.d.ts +0 -127
- package/dist/use-loader.d.ts.map +0 -1
- package/dist/use-loader.js +0 -237
- package/dist/use-loader.js.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
- package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
- package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
- package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.js +0 -39
- package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
- package/dist/vite/ast-handler-extract.d.ts +0 -49
- package/dist/vite/ast-handler-extract.d.ts.map +0 -1
- package/dist/vite/ast-handler-extract.js +0 -249
- package/dist/vite/ast-handler-extract.js.map +0 -1
- package/dist/vite/expose-action-id.d.ts +0 -19
- package/dist/vite/expose-action-id.d.ts.map +0 -1
- package/dist/vite/expose-action-id.js +0 -250
- package/dist/vite/expose-action-id.js.map +0 -1
- package/dist/vite/expose-id-utils.d.ts +0 -69
- package/dist/vite/expose-id-utils.d.ts.map +0 -1
- package/dist/vite/expose-id-utils.js +0 -289
- package/dist/vite/expose-id-utils.js.map +0 -1
- package/dist/vite/expose-internal-ids.d.ts +0 -22
- package/dist/vite/expose-internal-ids.d.ts.map +0 -1
- package/dist/vite/expose-internal-ids.js +0 -886
- package/dist/vite/expose-internal-ids.js.map +0 -1
- package/dist/vite/index.d.ts +0 -149
- package/dist/vite/index.d.ts.map +0 -1
- package/dist/vite/index.js.bak +0 -5448
- package/dist/vite/index.js.map +0 -1
- package/dist/vite/index.named-routes.gen.ts +0 -103
- package/dist/vite/package-resolution.d.ts +0 -43
- package/dist/vite/package-resolution.d.ts.map +0 -1
- package/dist/vite/package-resolution.js +0 -112
- package/dist/vite/package-resolution.js.map +0 -1
- package/dist/vite/virtual-entries.d.ts +0 -25
- package/dist/vite/virtual-entries.d.ts.map +0 -1
- package/dist/vite/virtual-entries.js +0 -110
- package/dist/vite/virtual-entries.js.map +0 -1
- package/src/browser/shallow.ts +0 -40
|
@@ -54,10 +54,8 @@ export interface InterceptResult {
|
|
|
54
54
|
* Instead of passing 20+ parameters, middleware calls getRouterContext() to access them.
|
|
55
55
|
*/
|
|
56
56
|
export interface RouterContext<TEnv = any> {
|
|
57
|
-
// Route matching
|
|
58
57
|
findMatch: (pathname: string) => RouteMatchResult | null;
|
|
59
58
|
|
|
60
|
-
// Manifest loading
|
|
61
59
|
loadManifest: (
|
|
62
60
|
entry: any,
|
|
63
61
|
routeKey: string,
|
|
@@ -66,10 +64,8 @@ export interface RouterContext<TEnv = any> {
|
|
|
66
64
|
isSSR?: boolean,
|
|
67
65
|
) => Promise<EntryData>;
|
|
68
66
|
|
|
69
|
-
// Entry traversal
|
|
70
67
|
traverseBack: (entry: EntryData) => Generator<EntryData>;
|
|
71
68
|
|
|
72
|
-
// Handler context creation
|
|
73
69
|
createHandlerContext: (
|
|
74
70
|
params: Record<string, string>,
|
|
75
71
|
request: Request,
|
|
@@ -83,7 +79,6 @@ export interface RouterContext<TEnv = any> {
|
|
|
83
79
|
isPassthroughRoute?: boolean,
|
|
84
80
|
) => HandlerContext<any, TEnv>;
|
|
85
81
|
|
|
86
|
-
// Loader setup
|
|
87
82
|
setupLoaderAccess: (
|
|
88
83
|
ctx: HandlerContext<any, TEnv>,
|
|
89
84
|
loaderPromises: Map<string, Promise<any>>,
|
|
@@ -94,7 +89,6 @@ export interface RouterContext<TEnv = any> {
|
|
|
94
89
|
loaderPromises: Map<string, Promise<any>>,
|
|
95
90
|
) => void;
|
|
96
91
|
|
|
97
|
-
// Context access
|
|
98
92
|
getContext: () => {
|
|
99
93
|
getOrCreateStore: (key: string) => any;
|
|
100
94
|
runWithStore: <T>(
|
|
@@ -105,16 +99,13 @@ export interface RouterContext<TEnv = any> {
|
|
|
105
99
|
) => T;
|
|
106
100
|
};
|
|
107
101
|
|
|
108
|
-
// Metrics
|
|
109
102
|
getMetricsStore: () => MetricsStore | undefined;
|
|
110
103
|
|
|
111
|
-
// Cache
|
|
112
104
|
createCacheScope: (
|
|
113
105
|
cacheConfig: any,
|
|
114
106
|
parent: CacheScope | null,
|
|
115
107
|
) => CacheScope | null;
|
|
116
108
|
|
|
117
|
-
// Intercept detection
|
|
118
109
|
findInterceptForRoute: (
|
|
119
110
|
routeKey: string,
|
|
120
111
|
parentEntry: EntryData | null,
|
|
@@ -122,7 +113,6 @@ export interface RouterContext<TEnv = any> {
|
|
|
122
113
|
isAction: boolean,
|
|
123
114
|
) => InterceptResult | null;
|
|
124
115
|
|
|
125
|
-
// Segment resolution (with revalidation)
|
|
126
116
|
resolveAllSegmentsWithRevalidation: (
|
|
127
117
|
entries: EntryData[],
|
|
128
118
|
routeKey: string,
|
|
@@ -166,12 +156,10 @@ export interface RouterContext<TEnv = any> {
|
|
|
166
156
|
revalidationContext?: RevalidationContext,
|
|
167
157
|
) => Promise<ResolvedSegment[]>;
|
|
168
158
|
|
|
169
|
-
// Collect with markers
|
|
170
159
|
collectWithMarkers?: <T>(
|
|
171
160
|
gen: AsyncGenerator<T | { __type: "id"; id: string }>,
|
|
172
161
|
) => Promise<{ items: T[]; matchedIds: string[] }>;
|
|
173
162
|
|
|
174
|
-
// Revalidation evaluation
|
|
175
163
|
evaluateRevalidation: (params: {
|
|
176
164
|
segment: ResolvedSegment;
|
|
177
165
|
prevParams: Record<string, string>;
|
|
@@ -195,7 +183,6 @@ export interface RouterContext<TEnv = any> {
|
|
|
195
183
|
| "intercept-loader";
|
|
196
184
|
}) => Promise<boolean>;
|
|
197
185
|
|
|
198
|
-
// Request context
|
|
199
186
|
getRequestContext: () =>
|
|
200
187
|
| {
|
|
201
188
|
waitUntil: (fn: () => Promise<void>) => void;
|
|
@@ -203,7 +190,6 @@ export interface RouterContext<TEnv = any> {
|
|
|
203
190
|
}
|
|
204
191
|
| undefined;
|
|
205
192
|
|
|
206
|
-
// Simple segment resolution (without revalidation - for full match)
|
|
207
193
|
resolveAllSegments: (
|
|
208
194
|
entries: EntryData[],
|
|
209
195
|
routeKey: string,
|
|
@@ -213,7 +199,6 @@ export interface RouterContext<TEnv = any> {
|
|
|
213
199
|
options?: { skipLoaders?: boolean },
|
|
214
200
|
) => Promise<ResolvedSegment[]>;
|
|
215
201
|
|
|
216
|
-
// Generator-based simple resolution
|
|
217
202
|
resolveAllSegmentsGenerator?: (
|
|
218
203
|
entries: EntryData[],
|
|
219
204
|
routeKey: string,
|
|
@@ -222,21 +207,17 @@ export interface RouterContext<TEnv = any> {
|
|
|
222
207
|
loaderPromises: Map<string, Promise<any>>,
|
|
223
208
|
) => AsyncGenerator<ResolvedSegment | { __type: "id"; id: string }>;
|
|
224
209
|
|
|
225
|
-
// Collect segments from generator
|
|
226
210
|
collectSegmentsFromGenerator?: <T>(
|
|
227
211
|
gen: AsyncGenerator<T | { __type: "id"; id: string }>,
|
|
228
212
|
) => Promise<T[]>;
|
|
229
213
|
|
|
230
|
-
// Handle store
|
|
231
214
|
createHandleStore: () => any;
|
|
232
215
|
|
|
233
|
-
// Loaders-only resolution (for full match cache hit - no revalidation)
|
|
234
216
|
resolveLoadersOnly?: (
|
|
235
217
|
entries: EntryData[],
|
|
236
218
|
handlerContext: HandlerContext<any, TEnv>,
|
|
237
219
|
) => Promise<ResolvedSegment[]>;
|
|
238
220
|
|
|
239
|
-
// Loaders-only resolution (for cache hit scenarios)
|
|
240
221
|
resolveLoadersOnlyWithRevalidation?: (
|
|
241
222
|
entries: EntryData[],
|
|
242
223
|
handlerContext: HandlerContext<any, TEnv>,
|
|
@@ -258,10 +239,8 @@ export interface RouterContext<TEnv = any> {
|
|
|
258
239
|
// Telemetry sink (optional, no-op when undefined)
|
|
259
240
|
telemetry?: TelemetrySink;
|
|
260
241
|
|
|
261
|
-
// Request ID for telemetry span correlation (set per-request in match handlers)
|
|
262
242
|
requestId?: string;
|
|
263
243
|
|
|
264
|
-
// Intercept loaders only (for cache hit + intercept scenarios)
|
|
265
244
|
resolveInterceptLoadersOnly?: (
|
|
266
245
|
intercept: InterceptEntry,
|
|
267
246
|
entry: EntryData,
|
|
@@ -284,7 +263,6 @@ export interface RouterContext<TEnv = any> {
|
|
|
284
263
|
} | null>;
|
|
285
264
|
}
|
|
286
265
|
|
|
287
|
-
// AsyncLocalStorage instance for router context
|
|
288
266
|
const routerContext = new AsyncLocalStorage<RouterContext<any>>();
|
|
289
267
|
|
|
290
268
|
/**
|
|
@@ -308,10 +286,6 @@ export function getRouterContext<TEnv = any>(): RouterContext<TEnv> {
|
|
|
308
286
|
*
|
|
309
287
|
* All async code within fn() can call getRouterContext() to access router closures.
|
|
310
288
|
* This works across async boundaries thanks to AsyncLocalStorage.
|
|
311
|
-
*
|
|
312
|
-
* @param deps Router dependencies to make available
|
|
313
|
-
* @param fn Function to run with dependencies available
|
|
314
|
-
* @returns Result of fn()
|
|
315
289
|
*/
|
|
316
290
|
export function runWithRouterContext<T, TEnv = any>(
|
|
317
291
|
deps: RouterContext<TEnv>,
|
|
@@ -27,59 +27,17 @@ import {
|
|
|
27
27
|
tryStaticSlot,
|
|
28
28
|
resolveLayoutComponent,
|
|
29
29
|
resolveWithErrorBoundary,
|
|
30
|
+
warnOnStreamedResponse,
|
|
30
31
|
} from "./helpers.js";
|
|
31
32
|
import { applyViewTransitionDefault } from "./view-transition-default.js";
|
|
32
33
|
import { getRouterContext } from "../router-context.js";
|
|
33
|
-
import {
|
|
34
|
+
import { observeStreamedHandler } from "./streamed-handler-telemetry.js";
|
|
34
35
|
import {
|
|
35
36
|
track,
|
|
36
37
|
RangoContext,
|
|
37
38
|
runInsideLoaderScope,
|
|
38
39
|
} from "../../server/context.js";
|
|
39
40
|
|
|
40
|
-
// ---------------------------------------------------------------------------
|
|
41
|
-
// Streamed handler telemetry
|
|
42
|
-
// ---------------------------------------------------------------------------
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Attach a fire-and-forget rejection observer to a streamed handler promise.
|
|
46
|
-
* React catches the actual error via its error boundary; this only emits
|
|
47
|
-
* the handler.error telemetry event.
|
|
48
|
-
*/
|
|
49
|
-
function observeStreamedHandler(
|
|
50
|
-
promise: Promise<ReactNode>,
|
|
51
|
-
segmentId: string,
|
|
52
|
-
segmentType: string,
|
|
53
|
-
pathname?: string,
|
|
54
|
-
routeKey?: string,
|
|
55
|
-
params?: Record<string, string>,
|
|
56
|
-
): void {
|
|
57
|
-
let routerCtx;
|
|
58
|
-
try {
|
|
59
|
-
routerCtx = getRouterContext();
|
|
60
|
-
} catch {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
if (!routerCtx?.telemetry) return;
|
|
64
|
-
const sink = resolveSink(routerCtx.telemetry);
|
|
65
|
-
const reqId = routerCtx.requestId;
|
|
66
|
-
promise.catch((err: unknown) => {
|
|
67
|
-
const errorObj = err instanceof Error ? err : new Error(String(err));
|
|
68
|
-
safeEmit(sink, {
|
|
69
|
-
type: "handler.error",
|
|
70
|
-
timestamp: performance.now(),
|
|
71
|
-
requestId: reqId,
|
|
72
|
-
segmentId,
|
|
73
|
-
segmentType,
|
|
74
|
-
error: errorObj,
|
|
75
|
-
handledByBoundary: true,
|
|
76
|
-
pathname,
|
|
77
|
-
routeKey,
|
|
78
|
-
params,
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
|
|
83
41
|
// ---------------------------------------------------------------------------
|
|
84
42
|
// Fresh path (full match, no revalidation)
|
|
85
43
|
// ---------------------------------------------------------------------------
|
|
@@ -133,18 +91,32 @@ export async function resolveLoaders<TEnv>(
|
|
|
133
91
|
|
|
134
92
|
// Loading disabled: still start all loaders in parallel, but only emit
|
|
135
93
|
// settled promises so handlers don't stream loading placeholders.
|
|
136
|
-
|
|
94
|
+
//
|
|
95
|
+
// Wrap each loader promise with wrapLoaderPromise BEFORE awaiting. The wrapped
|
|
96
|
+
// promise resolves to a LoaderDataResult and never rejects, routing a failed
|
|
97
|
+
// loader to its own per-loader error boundary. Awaiting the RAW promises here
|
|
98
|
+
// instead would (1) propagate a rejection to the segment-level boundary,
|
|
99
|
+
// collapsing the whole entry and discarding successful sibling data, and
|
|
100
|
+
// (2) leave the other in-flight raw promises without a .catch, producing
|
|
101
|
+
// unhandled rejections. Mirrors the loading path and intercept-resolution.
|
|
102
|
+
const pendingLoaderData = loaderEntries.map((loaderEntry, i) => {
|
|
103
|
+
const { loader } = loaderEntry;
|
|
104
|
+
const segmentId = `${shortCode}D${i}.${loader.$$id}`;
|
|
137
105
|
const start = performance.now();
|
|
138
|
-
const
|
|
139
|
-
|
|
106
|
+
const wrapped = deps.wrapLoaderPromise(
|
|
107
|
+
runInsideLoaderScope(() =>
|
|
108
|
+
resolveLoaderData(loaderEntry, ctx, ctx.pathname),
|
|
109
|
+
),
|
|
110
|
+
entry,
|
|
111
|
+
segmentId,
|
|
112
|
+
ctx.pathname,
|
|
140
113
|
);
|
|
141
|
-
return {
|
|
114
|
+
return { wrapped, start, segmentId, loaderId: loader.$$id };
|
|
142
115
|
});
|
|
143
|
-
await Promise.all(pendingLoaderData.map((p) => p.
|
|
116
|
+
await Promise.all(pendingLoaderData.map((p) => p.wrapped));
|
|
144
117
|
|
|
145
118
|
return loaderEntries.map((loaderEntry, i) => {
|
|
146
119
|
const { loader } = loaderEntry;
|
|
147
|
-
const segmentId = `${shortCode}D${i}.${loader.$$id}`;
|
|
148
120
|
const pending = pendingLoaderData[i]!;
|
|
149
121
|
if (ms && !ms.metrics.some((m) => m.label === `loader:${loader.$$id}`)) {
|
|
150
122
|
// All loaders ran in parallel via Promise.all — each span covers
|
|
@@ -160,19 +132,14 @@ export async function resolveLoaders<TEnv>(
|
|
|
160
132
|
);
|
|
161
133
|
}
|
|
162
134
|
return {
|
|
163
|
-
id: segmentId,
|
|
135
|
+
id: pending.segmentId,
|
|
164
136
|
namespace: entry.id,
|
|
165
137
|
type: "loader" as const,
|
|
166
138
|
index: i,
|
|
167
139
|
component: null,
|
|
168
140
|
params: ctx.params,
|
|
169
141
|
loaderId: loader.$$id,
|
|
170
|
-
loaderData:
|
|
171
|
-
pending.promise,
|
|
172
|
-
entry,
|
|
173
|
-
segmentId,
|
|
174
|
-
ctx.pathname,
|
|
175
|
-
),
|
|
142
|
+
loaderData: pending.wrapped,
|
|
176
143
|
belongsToRoute,
|
|
177
144
|
};
|
|
178
145
|
});
|
|
@@ -297,6 +264,7 @@ export async function resolveSegment<TEnv>(
|
|
|
297
264
|
if (entry.loading) {
|
|
298
265
|
const result = handleHandlerResult(handler(context));
|
|
299
266
|
if (result instanceof Promise) {
|
|
267
|
+
warnOnStreamedResponse(result, entry.id);
|
|
300
268
|
result.finally(doneRouteHandler).catch(() => {});
|
|
301
269
|
const tracked = deps.trackHandler(result, {
|
|
302
270
|
segmentId: entry.shortCode,
|
|
@@ -52,6 +52,40 @@ export function handleHandlerResult(
|
|
|
52
52
|
return result;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Dev-only: warn when a handler on a route that declares loading() resolves or
|
|
57
|
+
* rejects with a Response (e.g. redirect()).
|
|
58
|
+
*
|
|
59
|
+
* On a non-loading route a returned/thrown Response short-circuits to an HTTP
|
|
60
|
+
* redirect. But when the route declares loading(), the handler result is
|
|
61
|
+
* streamed (not awaited at the resolution boundary), so the Response surfaces
|
|
62
|
+
* only during RSC serialization and is rendered into the stream instead of
|
|
63
|
+
* becoming a 302/308 — a silent failure mode. Issue redirects from middleware,
|
|
64
|
+
* a loader, or a synchronous handler return instead. Compiled out in production.
|
|
65
|
+
*/
|
|
66
|
+
export function warnOnStreamedResponse(
|
|
67
|
+
result: Promise<unknown>,
|
|
68
|
+
entryId: string,
|
|
69
|
+
): void {
|
|
70
|
+
if (process.env.NODE_ENV === "production") return;
|
|
71
|
+
// A Response can surface either as a rejection (handleHandlerResult rethrows a
|
|
72
|
+
// resolved Response) or as a resolved value (the raw parallel-slot handler is
|
|
73
|
+
// not run through handleHandlerResult). Check both so every streamed path is
|
|
74
|
+
// covered. Each handler is an independent observer; it does not consume the
|
|
75
|
+
// rejection for the trackHandler/observeStreamedHandler chains.
|
|
76
|
+
const check = (value: unknown) => {
|
|
77
|
+
if (value instanceof Response) {
|
|
78
|
+
console.warn(
|
|
79
|
+
`[rango] Handler for "${entryId}" returned a Response (e.g. ` +
|
|
80
|
+
`redirect()), but it declares loading(): the Response is rendered ` +
|
|
81
|
+
`into the RSC stream, NOT sent as an HTTP redirect. Issue redirects ` +
|
|
82
|
+
`from middleware, a loader, or a synchronous handler return.`,
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
result.then(check, check);
|
|
87
|
+
}
|
|
88
|
+
|
|
55
89
|
// ---------------------------------------------------------------------------
|
|
56
90
|
// Static handler interception
|
|
57
91
|
// ---------------------------------------------------------------------------
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Cache key resolution (3-tier, matching CacheScope.resolveKey):
|
|
9
9
|
* 1. options.key(requestCtx) — full override
|
|
10
10
|
* 2. store.keyGenerator(requestCtx, defaultKey) — store-level modification
|
|
11
|
-
* 3. loader:{loaderId}:{pathname}:{sortedParams} — default
|
|
11
|
+
* 3. loader:{loaderId}:{host}{pathname}:{sortedParams} — default
|
|
12
12
|
*
|
|
13
13
|
* Values are serialized via RSC Flight (serializeResult/deserializeResult),
|
|
14
14
|
* supporting ReactNode, Promises, null, and all RSC-serializable types.
|
|
@@ -57,12 +57,13 @@ function debugLoaderCacheLog(message: string): void {
|
|
|
57
57
|
|
|
58
58
|
function getDefaultLoaderCacheKey(
|
|
59
59
|
loaderId: string,
|
|
60
|
+
host: string,
|
|
60
61
|
pathname: string,
|
|
61
62
|
params: Record<string, string>,
|
|
62
63
|
): string {
|
|
63
64
|
const paramStr = sortedRouteParams(params);
|
|
64
65
|
const base = paramStr ? `${pathname}:${paramStr}` : pathname;
|
|
65
|
-
return `loader:${loaderId}:${base}`;
|
|
66
|
+
return `loader:${loaderId}:${host}${base}`;
|
|
66
67
|
}
|
|
67
68
|
|
|
68
69
|
/**
|
|
@@ -76,7 +77,13 @@ async function resolveLoaderKey(
|
|
|
76
77
|
params: Record<string, string>,
|
|
77
78
|
): Promise<string> {
|
|
78
79
|
const options = loaderEntry.cache!.options;
|
|
79
|
-
|
|
80
|
+
// The host is part of the loader cache identity, matching the route-level
|
|
81
|
+
// cache (cache-scope getCacheKeyBase: `${host}${pathname}`) and "use cache"
|
|
82
|
+
// (cache-runtime pushes ctx.url.host). Without it, a multi-tenant host router
|
|
83
|
+
// serving the same pathname for different hosts would leak one host's cached
|
|
84
|
+
// loader data to another.
|
|
85
|
+
const host = getRequestContext()?.url?.host ?? "localhost";
|
|
86
|
+
const defaultKey = getDefaultLoaderCacheKey(loaderId, host, pathname, params);
|
|
80
87
|
if (options === false) return defaultKey;
|
|
81
88
|
return resolveCacheKey(options.key, store, defaultKey, "LoaderCache");
|
|
82
89
|
}
|
|
@@ -139,14 +146,8 @@ export function resolveLoaderData<TEnv>(
|
|
|
139
146
|
const swrWindow = resolveSwrWindow(options.swr, store.defaults);
|
|
140
147
|
const swr = swrWindow || undefined;
|
|
141
148
|
const tags = resolveTags(loaderEntry);
|
|
142
|
-
// Loader tags are config-derived, so they are the complete set whether this is
|
|
143
|
-
// a cache hit or miss; record them every time so a document built from this
|
|
144
|
-
// loader is tagged for invalidation.
|
|
145
149
|
recordRequestTags(tags);
|
|
146
150
|
|
|
147
|
-
// Wrap ctx.use() so cache HIT primes the handler's memoization map.
|
|
148
|
-
// ctx.use() closes over the match context's loaderPromises (not request context's).
|
|
149
|
-
// By intercepting ctx.use(), we inject cached data into the correct map.
|
|
150
151
|
const originalUse = ctx.use;
|
|
151
152
|
const dataPromise = (async () => {
|
|
152
153
|
const codec = await getCodec();
|
|
@@ -174,10 +175,6 @@ export function resolveLoaderData<TEnv>(
|
|
|
174
175
|
});
|
|
175
176
|
})();
|
|
176
177
|
|
|
177
|
-
// Temporarily replace ctx.use() so the handler's call returns cached data.
|
|
178
|
-
// This is needed because ctx.use() closes over the match context's loaderPromises
|
|
179
|
-
// map which is separate from the request context. By wrapping use(), we intercept
|
|
180
|
-
// the handler's call and return the shared dataPromise.
|
|
181
178
|
const wrappedUse = ((item: any) => {
|
|
182
179
|
if (item === loaderEntry.loader || item?.$$id === loaderId) {
|
|
183
180
|
return dataPromise;
|
|
@@ -34,6 +34,7 @@ import {
|
|
|
34
34
|
import { resolveLoaderData } from "./loader-cache.js";
|
|
35
35
|
import {
|
|
36
36
|
handleHandlerResult,
|
|
37
|
+
warnOnStreamedResponse,
|
|
37
38
|
tryStaticHandler,
|
|
38
39
|
tryStaticSlot,
|
|
39
40
|
resolveLayoutComponent,
|
|
@@ -42,54 +43,13 @@ import {
|
|
|
42
43
|
import { applyViewTransitionDefault } from "./view-transition-default.js";
|
|
43
44
|
import { getRouterContext } from "../router-context.js";
|
|
44
45
|
import { resolveSink, safeEmit } from "../telemetry.js";
|
|
46
|
+
import { observeStreamedHandler } from "./streamed-handler-telemetry.js";
|
|
45
47
|
import {
|
|
46
48
|
track,
|
|
47
49
|
RangoContext,
|
|
48
50
|
runInsideLoaderScope,
|
|
49
51
|
} from "../../server/context.js";
|
|
50
52
|
|
|
51
|
-
// ---------------------------------------------------------------------------
|
|
52
|
-
// Telemetry helpers
|
|
53
|
-
// ---------------------------------------------------------------------------
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Attach a fire-and-forget rejection observer to a streamed handler promise.
|
|
57
|
-
* Silently no-ops when called outside RouterContext (e.g. in unit tests).
|
|
58
|
-
*/
|
|
59
|
-
function observeStreamedHandler(
|
|
60
|
-
promise: Promise<ReactNode>,
|
|
61
|
-
segmentId: string,
|
|
62
|
-
segmentType: string,
|
|
63
|
-
pathname?: string,
|
|
64
|
-
routeKey?: string,
|
|
65
|
-
params?: Record<string, string>,
|
|
66
|
-
): void {
|
|
67
|
-
let routerCtx;
|
|
68
|
-
try {
|
|
69
|
-
routerCtx = getRouterContext();
|
|
70
|
-
} catch {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
if (!routerCtx?.telemetry) return;
|
|
74
|
-
const sink = resolveSink(routerCtx.telemetry);
|
|
75
|
-
const reqId = routerCtx.requestId;
|
|
76
|
-
promise.catch((err: unknown) => {
|
|
77
|
-
const errorObj = err instanceof Error ? err : new Error(String(err));
|
|
78
|
-
safeEmit(sink, {
|
|
79
|
-
type: "handler.error",
|
|
80
|
-
timestamp: performance.now(),
|
|
81
|
-
requestId: reqId,
|
|
82
|
-
segmentId,
|
|
83
|
-
segmentType,
|
|
84
|
-
error: errorObj,
|
|
85
|
-
handledByBoundary: true,
|
|
86
|
-
pathname,
|
|
87
|
-
routeKey,
|
|
88
|
-
params,
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
|
|
93
53
|
/**
|
|
94
54
|
* Trace a parallel slot that's being force-rendered on a full refetch (client
|
|
95
55
|
* has no cached state). User revalidate fns are bypassed in this case — see
|
|
@@ -564,6 +524,7 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
|
|
|
564
524
|
const result =
|
|
565
525
|
typeof handler === "function" ? handler(context) : handler;
|
|
566
526
|
if (result instanceof Promise) {
|
|
527
|
+
warnOnStreamedResponse(result, parallelId);
|
|
567
528
|
const tracked = deps.trackHandler(result, {
|
|
568
529
|
segmentId: parallelId,
|
|
569
530
|
segmentType: "parallel",
|
|
@@ -762,6 +723,7 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
|
|
|
762
723
|
if (!actionContext) {
|
|
763
724
|
const result = handleHandlerResult(handler(context));
|
|
764
725
|
if (result instanceof Promise) {
|
|
726
|
+
warnOnStreamedResponse(result, routeEntry.id);
|
|
765
727
|
result.finally(doneHandler).catch(() => {});
|
|
766
728
|
const tracked = deps.trackHandler(result, {
|
|
767
729
|
segmentId: entry.shortCode,
|
|
@@ -1274,6 +1236,7 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
|
|
|
1274
1236
|
const result =
|
|
1275
1237
|
typeof handler === "function" ? handler(context) : handler;
|
|
1276
1238
|
if (result instanceof Promise) {
|
|
1239
|
+
warnOnStreamedResponse(result, parallelId);
|
|
1277
1240
|
const tracked = deps.trackHandler(result, {
|
|
1278
1241
|
segmentId: parallelId,
|
|
1279
1242
|
segmentType: "parallel",
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streamed Handler Telemetry
|
|
3
|
+
*
|
|
4
|
+
* Shared fire-and-forget rejection observer for streamed handler promises,
|
|
5
|
+
* used by both the fresh and revalidation segment-resolution paths. Lives in
|
|
6
|
+
* its own module (never mocked) so the resolution unit tests that mock
|
|
7
|
+
* helpers.js / telemetry.js with explicit export lists do not resolve it to
|
|
8
|
+
* undefined.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { ReactNode } from "react";
|
|
12
|
+
import { getRouterContext } from "../router-context.js";
|
|
13
|
+
import { resolveSink, safeEmit } from "../telemetry.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Attach a fire-and-forget rejection observer to a streamed handler promise.
|
|
17
|
+
* React catches the actual error via its error boundary; this only emits
|
|
18
|
+
* the handler.error telemetry event.
|
|
19
|
+
*/
|
|
20
|
+
export function observeStreamedHandler(
|
|
21
|
+
promise: Promise<ReactNode>,
|
|
22
|
+
segmentId: string,
|
|
23
|
+
segmentType: string,
|
|
24
|
+
pathname?: string,
|
|
25
|
+
routeKey?: string,
|
|
26
|
+
params?: Record<string, string>,
|
|
27
|
+
): void {
|
|
28
|
+
let routerCtx;
|
|
29
|
+
try {
|
|
30
|
+
routerCtx = getRouterContext();
|
|
31
|
+
} catch {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (!routerCtx?.telemetry) return;
|
|
35
|
+
const sink = resolveSink(routerCtx.telemetry);
|
|
36
|
+
const reqId = routerCtx.requestId;
|
|
37
|
+
promise.catch((err: unknown) => {
|
|
38
|
+
const errorObj = err instanceof Error ? err : new Error(String(err));
|
|
39
|
+
safeEmit(sink, {
|
|
40
|
+
type: "handler.error",
|
|
41
|
+
timestamp: performance.now(),
|
|
42
|
+
requestId: reqId,
|
|
43
|
+
segmentId,
|
|
44
|
+
segmentType,
|
|
45
|
+
error: errorObj,
|
|
46
|
+
handledByBoundary: true,
|
|
47
|
+
pathname,
|
|
48
|
+
routeKey,
|
|
49
|
+
params,
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
// Barrel re-export -- see segment-resolution/ for implementations.
|
|
2
|
-
export {
|
|
2
|
+
export {
|
|
3
|
+
handleHandlerResult,
|
|
4
|
+
warnOnStreamedResponse,
|
|
5
|
+
} from "./segment-resolution/helpers.js";
|
|
3
6
|
export {
|
|
4
7
|
resolveLoaders,
|
|
5
8
|
type ResolveSegmentOptions,
|
|
@@ -125,10 +125,6 @@ export function createOTelSink(tracer: OTelTracer): TelemetrySink {
|
|
|
125
125
|
return {
|
|
126
126
|
emit(event: TelemetryEvent): void {
|
|
127
127
|
switch (event.type) {
|
|
128
|
-
// -----------------------------------------------------------------
|
|
129
|
-
// Request lifecycle
|
|
130
|
-
// -----------------------------------------------------------------
|
|
131
|
-
|
|
132
128
|
case "request.start": {
|
|
133
129
|
const span = tracer.startSpan("rango.request", {
|
|
134
130
|
attributes: {
|
|
@@ -169,10 +165,6 @@ export function createOTelSink(tracer: OTelTracer): TelemetrySink {
|
|
|
169
165
|
break;
|
|
170
166
|
}
|
|
171
167
|
|
|
172
|
-
// -----------------------------------------------------------------
|
|
173
|
-
// Loader lifecycle
|
|
174
|
-
// -----------------------------------------------------------------
|
|
175
|
-
|
|
176
168
|
case "loader.start": {
|
|
177
169
|
const span = tracer.startSpan("rango.loader", {
|
|
178
170
|
attributes: {
|
|
@@ -231,10 +223,6 @@ export function createOTelSink(tracer: OTelTracer): TelemetrySink {
|
|
|
231
223
|
break;
|
|
232
224
|
}
|
|
233
225
|
|
|
234
|
-
// -----------------------------------------------------------------
|
|
235
|
-
// Handler errors (instant span)
|
|
236
|
-
// -----------------------------------------------------------------
|
|
237
|
-
|
|
238
226
|
case "handler.error": {
|
|
239
227
|
const attrs: Record<string, string | number | boolean> = {
|
|
240
228
|
"rango.handled_by_boundary": event.handledByBoundary,
|
|
@@ -257,10 +245,6 @@ export function createOTelSink(tracer: OTelTracer): TelemetrySink {
|
|
|
257
245
|
break;
|
|
258
246
|
}
|
|
259
247
|
|
|
260
|
-
// -----------------------------------------------------------------
|
|
261
|
-
// Cache decision (instant span)
|
|
262
|
-
// -----------------------------------------------------------------
|
|
263
|
-
|
|
264
248
|
case "cache.decision": {
|
|
265
249
|
const attrs: Record<string, string | number | boolean> = {
|
|
266
250
|
"http.route": event.pathname,
|
|
@@ -277,10 +261,6 @@ export function createOTelSink(tracer: OTelTracer): TelemetrySink {
|
|
|
277
261
|
break;
|
|
278
262
|
}
|
|
279
263
|
|
|
280
|
-
// -----------------------------------------------------------------
|
|
281
|
-
// Revalidation decision (instant span)
|
|
282
|
-
// -----------------------------------------------------------------
|
|
283
|
-
|
|
284
264
|
case "revalidation.decision": {
|
|
285
265
|
const span = tracer.startSpan("rango.revalidation.decision", {
|
|
286
266
|
attributes: {
|
package/src/router/telemetry.ts
CHANGED
|
@@ -14,10 +14,6 @@
|
|
|
14
14
|
* - revalidation.decision (revalidation evaluation)
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
// ---------------------------------------------------------------------------
|
|
18
|
-
// Event types
|
|
19
|
-
// ---------------------------------------------------------------------------
|
|
20
|
-
|
|
21
17
|
interface BaseEvent {
|
|
22
18
|
/** Monotonic timestamp from performance.now() */
|
|
23
19
|
timestamp: number;
|
|
@@ -239,10 +235,6 @@ export function formatCacheSignalHeader(
|
|
|
239
235
|
return segments.map((s) => `${s.id}=${s.cacheStatus}`).join(", ");
|
|
240
236
|
}
|
|
241
237
|
|
|
242
|
-
// ---------------------------------------------------------------------------
|
|
243
|
-
// Sink interface
|
|
244
|
-
// ---------------------------------------------------------------------------
|
|
245
|
-
|
|
246
238
|
/**
|
|
247
239
|
* Telemetry sink receives structured lifecycle events from the router.
|
|
248
240
|
* Implement this interface to integrate with any observability backend.
|
|
@@ -253,10 +245,6 @@ export interface TelemetrySink {
|
|
|
253
245
|
emit(event: TelemetryEvent): void;
|
|
254
246
|
}
|
|
255
247
|
|
|
256
|
-
// ---------------------------------------------------------------------------
|
|
257
|
-
// No-op singleton (zero-cost disabled state)
|
|
258
|
-
// ---------------------------------------------------------------------------
|
|
259
|
-
|
|
260
248
|
const noopSink: TelemetrySink = {
|
|
261
249
|
emit() {},
|
|
262
250
|
};
|
|
@@ -284,12 +272,6 @@ export function safeEmit(sink: TelemetrySink, event: TelemetryEvent): void {
|
|
|
284
272
|
}
|
|
285
273
|
}
|
|
286
274
|
|
|
287
|
-
// ---------------------------------------------------------------------------
|
|
288
|
-
// Request ID extraction (for span correlation)
|
|
289
|
-
// ---------------------------------------------------------------------------
|
|
290
|
-
|
|
291
|
-
// Per-request memoization so the same Request object always maps to the
|
|
292
|
-
// same ID. WeakMap allows GC when the Request is no longer referenced.
|
|
293
275
|
const requestIds = new WeakMap<Request, string>();
|
|
294
276
|
let telemetryRequestCounter = 0;
|
|
295
277
|
|
|
@@ -323,10 +305,6 @@ export function getRequestId(request: Request): string {
|
|
|
323
305
|
return id;
|
|
324
306
|
}
|
|
325
307
|
|
|
326
|
-
// ---------------------------------------------------------------------------
|
|
327
|
-
// Console sink (built-in, replaces ad-hoc console.log debug traces)
|
|
328
|
-
// ---------------------------------------------------------------------------
|
|
329
|
-
|
|
330
308
|
/**
|
|
331
309
|
* Built-in console sink that logs events in a structured format.
|
|
332
310
|
* Designed as the default sink for development / debugging.
|