@rangojs/router 0.4.2 → 0.4.3
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/types/browser/prefetch/cache.d.ts +11 -8
- package/dist/types/cache/read-through-swr.d.ts +7 -6
- package/dist/types/cloudflare/tracing.d.ts +16 -12
- package/dist/types/router/instrument.d.ts +45 -15
- package/dist/types/router/telemetry-otel.d.ts +4 -4
- package/dist/types/router/timeout.d.ts +12 -1
- package/dist/types/router/tracing.d.ts +31 -17
- package/dist/types/rsc/capture-queue.d.ts +22 -1
- package/dist/types/rsc/shell-capture.d.ts +7 -1
- package/dist/types/rsc/stream-idle.d.ts +60 -0
- package/dist/types/server/request-context.d.ts +7 -1
- package/dist/types/vercel/tracing.d.ts +9 -8
- package/dist/vite/index.js +1 -1
- package/package.json +1 -1
- package/skills/observability/SKILL.md +33 -4
- package/src/browser/prefetch/cache.ts +22 -10
- package/src/cache/cache-runtime.ts +39 -25
- package/src/cache/document-cache.ts +39 -23
- package/src/cache/read-through-swr.ts +22 -16
- package/src/cloudflare/tracing.ts +16 -12
- package/src/router/instrument.ts +61 -15
- package/src/router/segment-resolution/loader-cache.ts +12 -1
- package/src/router/segment-resolution/revalidation.ts +16 -1
- package/src/router/telemetry-otel.ts +4 -4
- package/src/router/timeout.ts +12 -1
- package/src/router/tracing.ts +37 -17
- package/src/rsc/capture-queue.ts +72 -17
- package/src/rsc/handler.ts +171 -73
- package/src/rsc/shell-capture.ts +64 -12
- package/src/rsc/stream-idle.ts +137 -0
- package/src/server/request-context.ts +8 -0
- package/src/testing/dispatch.ts +55 -1
- package/src/vercel/tracing.ts +9 -8
- 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
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
* scopes are in play:
|
|
11
11
|
* - Wildcard (default): built by `buildPrefetchKey(rangoState, target)` —
|
|
12
12
|
* shape `rangoState\0/target?...`. Shared across all source pages and
|
|
13
|
-
*
|
|
14
|
-
* server-action invalidation).
|
|
13
|
+
* source segment trees; `_rsc_segments` is omitted from this key. Invalidated
|
|
14
|
+
* automatically when Rango state bumps (deploy or server-action invalidation).
|
|
15
15
|
* - Source-scoped: built by `buildSourceKey(rangoState, sourceHref, target)`
|
|
16
16
|
* — shape `rangoState\0sourceHref\0/target?...`. Embeds the Rango state
|
|
17
|
-
* (so rotation invalidates source-scoped entries too)
|
|
18
|
-
*
|
|
17
|
+
* (so rotation invalidates source-scoped entries too), the source href, and
|
|
18
|
+
* the exact source segment tree. Populated when the
|
|
19
19
|
* server tags a response with `X-RSC-Prefetch-Scope: source` (intercept
|
|
20
20
|
* modals etc.), OR when a Link opts in with `prefetchKey=":source"` — in
|
|
21
21
|
* both cases so source-sensitive responses cannot bleed into navigations
|
|
@@ -141,7 +141,9 @@ let generation = 0;
|
|
|
141
141
|
* - Wildcard (source-agnostic): prefix is the Rango state value from
|
|
142
142
|
* `getRangoState()`. Shared across all source pages. Invalidated
|
|
143
143
|
* automatically when Rango state bumps (deploy or server-action).
|
|
144
|
-
*
|
|
144
|
+
* `_rsc_segments` is omitted so sibling payloads prefetched from one page
|
|
145
|
+
* remain reusable after another prefetched navigation commits. Key shape:
|
|
146
|
+
* `rangoState\0/target?...`.
|
|
145
147
|
* - Source-scoped: use `buildSourceKey()`. Key shape:
|
|
146
148
|
* `rangoState\0sourceHref\0/target?...` — embeds the Rango state so
|
|
147
149
|
* rotation invalidates source-scoped entries alongside wildcard ones,
|
|
@@ -150,12 +152,15 @@ let generation = 0;
|
|
|
150
152
|
* `X-RSC-Prefetch-Scope: source` (intercept modals, etc.) or when a
|
|
151
153
|
* Link opts in via `prefetchKey=":source"`.
|
|
152
154
|
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
155
|
+
* Source-scoped keys retain `_rsc_segments` because their exact source tree is
|
|
156
|
+
* part of the opt-in contract. Wildcard responses are source-agnostic by
|
|
157
|
+
* contract; callers use source scope when a custom revalidation decision makes
|
|
158
|
+
* the response depend on the current URL or segment tree.
|
|
156
159
|
*/
|
|
157
160
|
export function buildPrefetchKey(prefix: string, targetUrl: URL): string {
|
|
158
|
-
|
|
161
|
+
const normalizedTarget = new URL(targetUrl);
|
|
162
|
+
normalizedTarget.searchParams.delete("_rsc_segments");
|
|
163
|
+
return prefix + "\0" + normalizedTarget.pathname + normalizedTarget.search;
|
|
159
164
|
}
|
|
160
165
|
|
|
161
166
|
/**
|
|
@@ -171,7 +176,14 @@ export function buildSourceKey(
|
|
|
171
176
|
sourceHref: string,
|
|
172
177
|
targetUrl: URL,
|
|
173
178
|
): string {
|
|
174
|
-
return
|
|
179
|
+
return (
|
|
180
|
+
rangoState +
|
|
181
|
+
"\0" +
|
|
182
|
+
sourceHref +
|
|
183
|
+
"\0" +
|
|
184
|
+
targetUrl.pathname +
|
|
185
|
+
targetUrl.search
|
|
186
|
+
);
|
|
175
187
|
}
|
|
176
188
|
|
|
177
189
|
/**
|
|
@@ -45,6 +45,7 @@ import { startHandleCapture, type HandleCapture } from "./handle-capture.js";
|
|
|
45
45
|
import { sortedSearchString } from "./cache-key-utils.js";
|
|
46
46
|
import { encodeKV } from "../encode-kv.js";
|
|
47
47
|
import { runBackground } from "./background-task.js";
|
|
48
|
+
import { observePhase, PHASES } from "../router/instrument.js";
|
|
48
49
|
import {
|
|
49
50
|
normalizeTags,
|
|
50
51
|
recordRequestTags,
|
|
@@ -464,32 +465,45 @@ export function registerCachedFunction<T extends (...args: any[]) => any>(
|
|
|
464
465
|
// synchronous kickoff; its async continuations inherit it. The
|
|
465
466
|
// DERIVED context goes in, so ambient _handleStore reads inside
|
|
466
467
|
// the body resolve to the isolated store.
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
468
|
+
//
|
|
469
|
+
// The span opens inside the request ALS and wraps the WHOLE task —
|
|
470
|
+
// fn kickoff through the store write — so its platform spans nest
|
|
471
|
+
// under rango.background and a slow or failing setItem is part of
|
|
472
|
+
// the traced revalidation, not an untraced tail.
|
|
473
|
+
await runWithRequestContext(bgCtx, () =>
|
|
474
|
+
observePhase(
|
|
475
|
+
PHASES.background("use-cache-revalidation"),
|
|
476
|
+
async () => {
|
|
477
|
+
const scoped = runWithCacheTagScope(() =>
|
|
478
|
+
fn.apply(this, args),
|
|
479
|
+
);
|
|
480
|
+
const freshResult = await scoped.result;
|
|
481
|
+
bgStopCapture?.();
|
|
482
|
+
// Merge profile/DSL tags with runtime cacheTag() tags, read
|
|
483
|
+
// after awaiting so post-await cacheTag() calls are included.
|
|
484
|
+
// Normalize (drops empty profile tags, matching the
|
|
485
|
+
// invalidate path) + dedupe.
|
|
486
|
+
const freshTags = [
|
|
487
|
+
...new Set(
|
|
488
|
+
normalizeTags([...(profile.tags ?? []), ...scoped.tags]),
|
|
489
|
+
),
|
|
490
|
+
];
|
|
491
|
+
recordRequestTags(freshTags, requestCtx);
|
|
492
|
+
const serialized = await serializeResult(freshResult);
|
|
493
|
+
if (serialized !== null) {
|
|
494
|
+
const encodedHandles = bgCapture?.data
|
|
495
|
+
? await encodeHandles(bgCapture.data)
|
|
496
|
+
: undefined;
|
|
497
|
+
await store.setItem!(cacheKey, serialized, {
|
|
498
|
+
handles: encodedHandles,
|
|
499
|
+
ttl: profile.ttl,
|
|
500
|
+
swr: profile.swr,
|
|
501
|
+
tags: freshTags.length > 0 ? freshTags : undefined,
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
},
|
|
478
505
|
),
|
|
479
|
-
|
|
480
|
-
recordRequestTags(freshTags, requestCtx);
|
|
481
|
-
const serialized = await serializeResult(freshResult);
|
|
482
|
-
if (serialized !== null) {
|
|
483
|
-
const encodedHandles = bgCapture?.data
|
|
484
|
-
? await encodeHandles(bgCapture.data)
|
|
485
|
-
: undefined;
|
|
486
|
-
await store.setItem!(cacheKey, serialized, {
|
|
487
|
-
handles: encodedHandles,
|
|
488
|
-
ttl: profile.ttl,
|
|
489
|
-
swr: profile.swr,
|
|
490
|
-
tags: freshTags.length > 0 ? freshTags : undefined,
|
|
491
|
-
});
|
|
492
|
-
}
|
|
506
|
+
);
|
|
493
507
|
} catch (bgError) {
|
|
494
508
|
bgStopCapture?.();
|
|
495
509
|
// Pass requestCtx explicitly: this runs in a detached background
|
|
@@ -24,6 +24,7 @@ import { mayNeedSSR } from "../rsc/ssr-setup.js";
|
|
|
24
24
|
import { cacheKeyBase } from "./cache-key-utils.js";
|
|
25
25
|
import { runBackground } from "./background-task.js";
|
|
26
26
|
import { reportCacheError } from "./cache-error.js";
|
|
27
|
+
import { observePhase, PHASES } from "../router/instrument.js";
|
|
27
28
|
import {
|
|
28
29
|
SEGMENT_FRAGMENT_CAPABILITY_HEADER,
|
|
29
30
|
SEGMENT_FRAGMENT_RECOVERY_HEADER,
|
|
@@ -378,29 +379,44 @@ export function createDocumentCacheMiddleware<TEnv = any>(
|
|
|
378
379
|
|
|
379
380
|
runBackground(requestCtx, async () => {
|
|
380
381
|
try {
|
|
381
|
-
// Re-establish the request-context ALS around the background
|
|
382
|
-
//
|
|
383
|
-
//
|
|
384
|
-
//
|
|
385
|
-
//
|
|
386
|
-
// revalidation paths.
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
382
|
+
// Re-establish the request-context ALS around the whole background
|
|
383
|
+
// task: next() re-runs the full handler pipeline, and on workerd a
|
|
384
|
+
// waitUntil task runs detached from the request's I/O context, so a
|
|
385
|
+
// handler/component reading getRequestContext() would otherwise
|
|
386
|
+
// throw. Same fix as the route-level/use-cache background
|
|
387
|
+
// revalidation paths. The rango.background span (kind=
|
|
388
|
+
// document-revalidation) wraps the re-render AND the store write so
|
|
389
|
+
// the task's spans — the re-run's own rango.* set and the drain/put
|
|
390
|
+
// platform spans — nest under one explanatory parent instead of
|
|
391
|
+
// dangling under the ended foreground phases. Running the put
|
|
392
|
+
// inside the ALS matches the MISS path, where putResponse already
|
|
393
|
+
// executes within the foreground request context.
|
|
394
|
+
await runWithRequestContext(requestCtx, () =>
|
|
395
|
+
observePhase(
|
|
396
|
+
PHASES.background("document-revalidation"),
|
|
397
|
+
async () => {
|
|
398
|
+
const fresh = await next();
|
|
399
|
+
const directives = shouldCacheResponse(fresh);
|
|
400
|
+
|
|
401
|
+
if (!directives || !fresh.body) return;
|
|
402
|
+
|
|
403
|
+
// Background revalidation: nothing streams to a client, so
|
|
404
|
+
// drain the fresh render fully before snapshotting tags
|
|
405
|
+
// (same render-complete barrier as the miss path).
|
|
406
|
+
const body = await new Response(fresh.body).arrayBuffer();
|
|
407
|
+
await store.putResponse!(
|
|
408
|
+
cacheKey,
|
|
409
|
+
new Response(body, fresh),
|
|
410
|
+
directives.sMaxAge!,
|
|
411
|
+
directives.staleWhileRevalidate,
|
|
412
|
+
collectRequestTags(requestCtx),
|
|
413
|
+
);
|
|
414
|
+
log(
|
|
415
|
+
`[DocumentCache] REVALIDATED ${typeLabel}: ${url.pathname}`,
|
|
416
|
+
);
|
|
417
|
+
},
|
|
418
|
+
),
|
|
419
|
+
);
|
|
404
420
|
} catch (error) {
|
|
405
421
|
// Pass requestCtx explicitly: this runs in a detached waitUntil task
|
|
406
422
|
// where the ALS context is gone, so onError only fires if we hand it
|
|
@@ -37,13 +37,14 @@ export interface ReadThroughItemConfig<T> {
|
|
|
37
37
|
/** Execute the underlying function/loader on miss or revalidation */
|
|
38
38
|
execute: () => Promise<T>;
|
|
39
39
|
/**
|
|
40
|
-
* Optional wrapper applied to
|
|
41
|
-
*
|
|
42
|
-
* is already established
|
|
43
|
-
* a detached waitUntil task loses on workerd
|
|
44
|
-
*
|
|
40
|
+
* Optional wrapper applied to the WHOLE background stale-revalidation task
|
|
41
|
+
* (execute + serialize + setItem) — not the foreground miss, where the
|
|
42
|
+
* caller's context is already established. Used to re-establish the
|
|
43
|
+
* request-context ALS, which a detached waitUntil task loses on workerd,
|
|
44
|
+
* and to open the rango.background span so the write is covered too.
|
|
45
|
+
* Defaults to running the task directly.
|
|
45
46
|
*/
|
|
46
|
-
wrapBackground?: (run: () => Promise<
|
|
47
|
+
wrapBackground?: (run: () => Promise<void>) => Promise<void>;
|
|
47
48
|
/** Serialize result for storage. Return null to skip caching. */
|
|
48
49
|
serialize: (data: T) => Promise<string | null>;
|
|
49
50
|
/** Deserialize cached value back to the original type */
|
|
@@ -111,20 +112,25 @@ export async function readThroughItem<T>(
|
|
|
111
112
|
|
|
112
113
|
// Stale hit — return stale data, revalidate in background
|
|
113
114
|
onStale?.(cached);
|
|
115
|
+
// The whole task — execute AND serialize/setItem — goes through
|
|
116
|
+
// wrapBackground so the ALS re-establishment and the rango.background
|
|
117
|
+
// span cover the write too (a slow or failing store write is part of
|
|
118
|
+
// the revalidation, not an untraced tail). The foreground miss below
|
|
119
|
+
// stays unwrapped: its context is already established.
|
|
120
|
+
const revalidateTask = async () => {
|
|
121
|
+
const fresh = await execute();
|
|
122
|
+
const serialized = await serialize(fresh);
|
|
123
|
+
if (serialized !== null) {
|
|
124
|
+
await setItem(key, serialized, storeOptions);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
114
127
|
runBackground(
|
|
115
128
|
host,
|
|
116
129
|
async () => {
|
|
117
130
|
try {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
const fresh = await (wrapBackground
|
|
122
|
-
? wrapBackground(execute)
|
|
123
|
-
: execute());
|
|
124
|
-
const serialized = await serialize(fresh);
|
|
125
|
-
if (serialized !== null) {
|
|
126
|
-
await setItem(key, serialized, storeOptions);
|
|
127
|
-
}
|
|
131
|
+
await (wrapBackground
|
|
132
|
+
? wrapBackground(revalidateTask)
|
|
133
|
+
: revalidateTask());
|
|
128
134
|
} catch (error) {
|
|
129
135
|
reportCacheError(
|
|
130
136
|
error,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cloudflare custom-spans integration.
|
|
3
3
|
*
|
|
4
|
-
* Bridges the router's
|
|
5
|
-
*
|
|
6
|
-
* up in the trace waterfall and OpenTelemetry exports next
|
|
7
|
-
* automatic spans (KV reads, D1 queries, fetch calls), with
|
|
4
|
+
* Bridges the router's observable phases (request, middleware, action, loaders,
|
|
5
|
+
* handler, render, ssr, response, background) onto Cloudflare Workers custom
|
|
6
|
+
* spans so they show up in the trace waterfall and OpenTelemetry exports next
|
|
7
|
+
* to the platform's automatic spans (KV reads, D1 queries, fetch calls), with
|
|
8
|
+
* correct nesting.
|
|
8
9
|
*
|
|
9
10
|
* Usage (Cloudflare preset only):
|
|
10
11
|
*
|
|
@@ -27,12 +28,15 @@
|
|
|
27
28
|
*
|
|
28
29
|
* Span duration note: enterSpan ends a span when its callback's returned value
|
|
29
30
|
* (or promise) settles. For the streaming phases (request/render/ssr) that is at
|
|
30
|
-
* stream CONSTRUCTION, not body-drain.
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
31
|
+
* stream CONSTRUCTION, not body-drain; rango.response marks that handoff
|
|
32
|
+
* boundary explicitly (it wraps only response finalization, never the body).
|
|
33
|
+
* Instrumentation is best-effort and never wraps or buffers the response body,
|
|
34
|
+
* so it cannot regress streaming or latency. A loader/Suspense child that
|
|
35
|
+
* resolves mid-stream therefore keeps a rango.loader span that can extend past
|
|
36
|
+
* its render parent — overlapping spans are valid. Uses only the typed enterSpan
|
|
37
|
+
* API; spans bound work up to stream-handoff, matching the co-emitted perf
|
|
38
|
+
* metric. On deployed Workers a rango.response span may report 0 ms (non-I/O
|
|
39
|
+
* timers are frozen); its position and attributes are the value.
|
|
36
40
|
*/
|
|
37
41
|
|
|
38
42
|
import { _getRequestContext } from "../server/request-context.js";
|
|
@@ -91,8 +95,8 @@ const cloudflareSpanRunner: SpanRunner = (name, fn) => {
|
|
|
91
95
|
/**
|
|
92
96
|
* Create the tracing config for a Cloudflare router. Pass the result to
|
|
93
97
|
* `createRouter({ tracing })`. Spans are emitted for the request, middleware,
|
|
94
|
-
* action, loaders, handler, render, and
|
|
95
|
-
* individual phases off.
|
|
98
|
+
* action, loaders, handler, render, ssr, response, and background phases; pass
|
|
99
|
+
* `spans` to turn individual phases off.
|
|
96
100
|
*
|
|
97
101
|
* @see createOTelTracing (`@rangojs/router`) for the same slot on any platform
|
|
98
102
|
* with an OpenTelemetry SDK.
|
package/src/router/instrument.ts
CHANGED
|
@@ -5,13 +5,11 @@
|
|
|
5
5
|
* The router exposes the same work on three surfaces, and the rule is: each
|
|
6
6
|
* surface has exactly one owner here, so they cannot drift.
|
|
7
7
|
*
|
|
8
|
-
* - observePhase(): a span of work.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* decomposition (request, middleware) pass `metric: false` and get the span
|
|
14
|
-
* only — still co-located, still one owner per surface.
|
|
8
|
+
* - observePhase(): a span of work. From one wrap site, emits the platform
|
|
9
|
+
* span (tracing runner -> Cloudflare custom spans / OTel) and, when the
|
|
10
|
+
* phase has one, its `debugPerformance` metric (metrics store -> [RSC Perf]
|
|
11
|
+
* timeline + Server-Timing). Phases that meter their own perf metric with a
|
|
12
|
+
* finer decomposition, or are deliberately span-only, pass `metric: false`.
|
|
15
13
|
* - observeEvent(): a discrete fact (TelemetrySink): cache decisions,
|
|
16
14
|
* revalidation decisions, handler errors, timeouts, origin rejections.
|
|
17
15
|
* Event-shaped, not phase-shaped — derived from the same call sites but a
|
|
@@ -85,6 +83,16 @@ function currentRouteName(): string | undefined {
|
|
|
85
83
|
: undefined;
|
|
86
84
|
}
|
|
87
85
|
|
|
86
|
+
/**
|
|
87
|
+
* The detached background lanes wrapped by the rango.background span (the
|
|
88
|
+
* `rango.background.kind` attribute). One name per task execution boundary.
|
|
89
|
+
*/
|
|
90
|
+
export type BackgroundTaskKind =
|
|
91
|
+
| "shell-capture"
|
|
92
|
+
| "document-revalidation"
|
|
93
|
+
| "loader-revalidation"
|
|
94
|
+
| "use-cache-revalidation";
|
|
95
|
+
|
|
88
96
|
/**
|
|
89
97
|
* The router's observable phases. One definition per phase keeps the `rango.*`
|
|
90
98
|
* span names, perf-metric labels, and identifying attributes from spreading
|
|
@@ -176,6 +184,43 @@ export const PHASES = {
|
|
|
176
184
|
tracePhase: "ssr",
|
|
177
185
|
spanName: "rango.ssr",
|
|
178
186
|
} as PhaseSpec,
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* One detached background task (waitUntil work that outlives the response):
|
|
190
|
+
* a PPR shell capture or an SWR background revalidation. The wrapper is the
|
|
191
|
+
* explanatory parent for everything the task does — the platform's automatic
|
|
192
|
+
* KV/fetch/cache spans, and (for the revalidation lanes) the re-run's own
|
|
193
|
+
* rango.* phase spans — so post-handoff work never appears as orphan spans
|
|
194
|
+
* dangling under an ended foreground phase. `kind` identifies the lane.
|
|
195
|
+
* Span only (metric:false): the perf timeline is finalized with the
|
|
196
|
+
* response, so a background metric could never reach it. The shell-capture
|
|
197
|
+
* lane keeps its INNER phase spans suppressed (derived context strips
|
|
198
|
+
* _tracing — a capture re-render duplicating the foreground's span set was
|
|
199
|
+
* the original #670 leak); the revalidation lanes keep theirs, nested here.
|
|
200
|
+
*/
|
|
201
|
+
background: (kind: BackgroundTaskKind): PhaseSpec => ({
|
|
202
|
+
metric: false,
|
|
203
|
+
tracePhase: "background",
|
|
204
|
+
spanName: "rango.background",
|
|
205
|
+
attributes: { "rango.background.kind": kind },
|
|
206
|
+
}),
|
|
207
|
+
|
|
208
|
+
/** Final response construction + host handoff: opened AFTER downstream
|
|
209
|
+
* middleware/core execution returns a Response, wrapping only finalization
|
|
210
|
+
* (redirect interception/guarding, Server-Timing mutation, final response
|
|
211
|
+
* selection) and ending immediately before the router handler returns the
|
|
212
|
+
* response to the host. Handoff-bound, never drain-bound — it must never
|
|
213
|
+
* read, tee, buffer, or await response.body, so it cannot regress streaming.
|
|
214
|
+
* At most one per traced request; absent when the request throws before a
|
|
215
|
+
* response exists. Span only (metric:false) — a co-emitted metric would
|
|
216
|
+
* circularly mutate the Server-Timing header this phase itself finalizes.
|
|
217
|
+
* On Cloudflare it may report 0 ms (non-I/O timers are frozen); its position
|
|
218
|
+
* and attributes (status/mode/body kind, set by the handler) are the value. */
|
|
219
|
+
response: {
|
|
220
|
+
metric: false,
|
|
221
|
+
tracePhase: "response",
|
|
222
|
+
spanName: "rango.response",
|
|
223
|
+
} as PhaseSpec,
|
|
179
224
|
} as const;
|
|
180
225
|
|
|
181
226
|
/** Apply a phase spec's static attributes to a span (the no-op span ignores them). */
|
|
@@ -209,14 +254,15 @@ function recordPhaseMetric(
|
|
|
209
254
|
* returns a promise both the metric duration and the span end when it settles.
|
|
210
255
|
*
|
|
211
256
|
* This is the ONLY phase primitive: every phase (request/middleware/action/
|
|
212
|
-
* loader/handler/render/ssr)
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
* really did take that
|
|
257
|
+
* loader/handler/render/ssr/response/background) settles when fn's own work
|
|
258
|
+
* completes. For streaming phases that means when the RSC/HTML stream is
|
|
259
|
+
* constructed, NOT when the body drains; for response, when finalization hands
|
|
260
|
+
* the stream to the host. Instrumentation is strictly best-effort: it never
|
|
261
|
+
* wraps or buffers the response and adds no work on the streaming path, so it
|
|
262
|
+
* cannot regress response latency or streaming. A loader that resolves while
|
|
263
|
+
* the body streams therefore keeps a rango.loader span that may extend past its
|
|
264
|
+
* render parent — overlapping spans are valid; the loader really did take that
|
|
265
|
+
* long.
|
|
220
266
|
*
|
|
221
267
|
* Reads the metrics store + tracing off the RequestContext ALS, which is active
|
|
222
268
|
* for the WHOLE request — contrast observeEvent, which reads the RouterContext
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
_getRequestContext,
|
|
27
27
|
runWithRequestContext,
|
|
28
28
|
} from "../../server/request-context.js";
|
|
29
|
+
import { observePhase, PHASES } from "../instrument.js";
|
|
29
30
|
import { sortedRouteParams } from "../../cache/cache-key-utils.js";
|
|
30
31
|
import {
|
|
31
32
|
resolveTtl,
|
|
@@ -328,7 +329,17 @@ function executeLoaderData<TEnv>(
|
|
|
328
329
|
setItem: (k, v, o) => store.setItem!(k, v, o),
|
|
329
330
|
key,
|
|
330
331
|
execute: () => runMiss(loaderEntry.loader),
|
|
331
|
-
|
|
332
|
+
// The rango.background span (kind=loader-revalidation) wraps the WHOLE
|
|
333
|
+
// stale revalidation — the re-execution AND the serialize/setItem write
|
|
334
|
+
// (read-through-swr routes the full task through wrapBackground) — so
|
|
335
|
+
// the loader's rango.loader span, its fetch/KV platform spans, and the
|
|
336
|
+
// store write all nest under one explanatory parent instead of dangling
|
|
337
|
+
// under the ended foreground phases. Inside runWithRequestContext so
|
|
338
|
+
// observePhase can read tracing on workerd (ALS detaches in waitUntil).
|
|
339
|
+
wrapBackground: (run) =>
|
|
340
|
+
runWithRequestContext(requestCtxForExecute, () =>
|
|
341
|
+
observePhase(PHASES.background("loader-revalidation"), run),
|
|
342
|
+
),
|
|
332
343
|
serialize: (d) => codec.serializeResult(d),
|
|
333
344
|
deserialize: (v) => codec.deserializeResult(v),
|
|
334
345
|
storeOptions: { ttl, swr, tags },
|
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
isTraceActive,
|
|
34
34
|
} from "../logging.js";
|
|
35
35
|
import { resolveLoaderData } from "./loader-cache.js";
|
|
36
|
+
import { entryLoadingMasksLoaders } from "./loader-mask.js";
|
|
36
37
|
import {
|
|
37
38
|
handleHandlerResult,
|
|
38
39
|
warnOnStreamedResponse,
|
|
@@ -206,6 +207,15 @@ export async function resolveLoadersWithRevalidation<TEnv>(
|
|
|
206
207
|
// onError/loader.error. isPartial flags the reporting phase accordingly.
|
|
207
208
|
const errorContext = { ...buildLoaderErrorContext(ctx), isPartial: true };
|
|
208
209
|
|
|
210
|
+
// PPR lane decision, same rule as the fresh funnel (fresh.ts): an entry
|
|
211
|
+
// without renderable loading() puts its loaders on the BAKE lane. The key
|
|
212
|
+
// must thread through EVERY resolveLoaderData funnel — omitting it here made
|
|
213
|
+
// a capture-active context whole-container-mask every loader on this path
|
|
214
|
+
// (a never-settling promise for a loader that should have executed).
|
|
215
|
+
// Outside capture the key only activates the _shellLoaderSeed overlay,
|
|
216
|
+
// which document-only serveShellHit seeds — inert for partial requests.
|
|
217
|
+
const bakeLane = !entryLoadingMasksLoaders(entry.loading);
|
|
218
|
+
|
|
209
219
|
const loadersToRun = revalidationChecks.filter((c) => c.shouldRun);
|
|
210
220
|
const segments: ResolvedSegment[] = loadersToRun.map(
|
|
211
221
|
({ loaderEntry, loader, segmentId, index }) => ({
|
|
@@ -218,7 +228,12 @@ export async function resolveLoadersWithRevalidation<TEnv>(
|
|
|
218
228
|
loaderId: loader.$$id,
|
|
219
229
|
loaderData: deps.wrapLoaderPromise(
|
|
220
230
|
runInsideLoaderScope(() =>
|
|
221
|
-
resolveLoaderData(
|
|
231
|
+
resolveLoaderData(
|
|
232
|
+
loaderEntry,
|
|
233
|
+
ctx,
|
|
234
|
+
ctx.pathname,
|
|
235
|
+
bakeLane ? segmentId : null,
|
|
236
|
+
),
|
|
222
237
|
),
|
|
223
238
|
entry,
|
|
224
239
|
segmentId,
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
* - createOTelTracing(tracer): the OTel adapter for the `tracing` SLOT — the
|
|
7
7
|
* canonical phase-span layer. It bridges observePhase's callback boundary
|
|
8
8
|
* onto OTel's callback-bound `startActiveSpan`, so the router's phase spans
|
|
9
|
-
* (rango.request/middleware/loader/render/ssr
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* `createRouter({ tracing })`.
|
|
9
|
+
* (rango.request/middleware/action/loader/handler/render/ssr/response/
|
|
10
|
+
* background) nest by async context and the loader's own OTel spans
|
|
11
|
+
* (db/fetch) land under rango.loader. This is the OTel equivalent of
|
|
12
|
+
* createCloudflareTracing — pass it to `createRouter({ tracing })`.
|
|
13
13
|
*
|
|
14
14
|
* - createOTelSink(tracer): the OTel adapter for the `telemetry` SLOT — a
|
|
15
15
|
* TelemetrySink for the EVENT-shaped facts (handler errors, cache decisions,
|
package/src/router/timeout.ts
CHANGED
|
@@ -11,7 +11,18 @@ export interface RouterTimeouts {
|
|
|
11
11
|
actionMs?: number;
|
|
12
12
|
/** Timeout for initial render/response production (ms). */
|
|
13
13
|
renderStartMs?: number;
|
|
14
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Timeout for idle streaming after the response is handed off (ms): when no
|
|
16
|
+
* chunk flows to the client for this long, the body stream is errored with a
|
|
17
|
+
* RouterTimeoutError ("stream-idle") and the source render is canceled —
|
|
18
|
+
* bounding hangs from never-settling promises embedded in the payload.
|
|
19
|
+
* END-TO-END semantics: a stalled slow client counts as idle the same as a
|
|
20
|
+
* wedged producer, so pick generous budgets (seconds). Opt-in (unset =
|
|
21
|
+
* unbounded, and the `timeout` shorthand deliberately does not apply);
|
|
22
|
+
* onTimeout does NOT fire — no replacement Response can be served
|
|
23
|
+
* mid-stream — the trip reports via onError + the request.timeout event.
|
|
24
|
+
* Enforcement: rsc/stream-idle.ts, wired at the handler's response tail.
|
|
25
|
+
*/
|
|
15
26
|
streamIdleMs?: number;
|
|
16
27
|
}
|
|
17
28
|
|
package/src/router/tracing.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Span tracing hook (platform-agnostic).
|
|
3
3
|
*
|
|
4
|
-
* The core router emits its
|
|
5
|
-
* loaders, render, ssr) as spans by calling
|
|
6
|
-
* execution boundaries. When no tracing is
|
|
7
|
-
* pass-through: fn is invoked with a no-op
|
|
8
|
-
* allocation, so a non-traced request behaves
|
|
4
|
+
* The core router emits its observable phases (request, middleware, action,
|
|
5
|
+
* loaders, handler, render, ssr, response, background) as spans by calling
|
|
6
|
+
* traceSpan() at a small set of execution boundaries. When no tracing is
|
|
7
|
+
* configured the call is a direct pass-through: fn is invoked with a no-op
|
|
8
|
+
* span, with no wrapper and no allocation, so a non-traced request behaves
|
|
9
|
+
* exactly as before.
|
|
9
10
|
*
|
|
10
11
|
* A platform integration supplies a SpanRunner that wraps fn in a real span.
|
|
11
12
|
* Two runners ship: the Cloudflare one (createCloudflareTracing in
|
|
@@ -29,7 +30,10 @@
|
|
|
29
30
|
* useLoader, plus the fetchable path), rango.handler (span-only, one per segment
|
|
30
31
|
* route/layout handler execution; the handler:<id> perf metric is owned by the
|
|
31
32
|
* track() at the call site), rango.render (render:total:<route>; normal AND
|
|
32
|
-
* action-revalidation renders), rango.ssr (ssr:render-html).
|
|
33
|
+
* action-revalidation renders), rango.ssr (ssr:render-html), rango.response
|
|
34
|
+
* (span-only; final response construction + host handoff — the explicit
|
|
35
|
+
* stream-handoff marker), and rango.background (span-only; detached work, see
|
|
36
|
+
* below).
|
|
33
37
|
*
|
|
34
38
|
* Span-duration caveat (best-effort, never buffers): a span ends when its
|
|
35
39
|
* callback's value (or promise) settles. For the streaming phases (request,
|
|
@@ -40,6 +44,19 @@
|
|
|
40
44
|
* rango.loader span that can extend past its render parent; overlapping spans are
|
|
41
45
|
* valid (the loader really did take that long). Phase spans bound the work up to
|
|
42
46
|
* stream-handoff, which is also what the co-emitted perf metric measures.
|
|
47
|
+
* rango.response makes that handoff boundary explicit: it wraps only response
|
|
48
|
+
* finalization (redirect interception/guarding, Server-Timing mutation, final
|
|
49
|
+
* response selection) after downstream execution returns, ending immediately
|
|
50
|
+
* before the handler returns the Response to the host. It is handoff-bound,
|
|
51
|
+
* never drain-bound — it never reads, tees, or awaits response.body, and it is
|
|
52
|
+
* absent when the request throws before a response exists.
|
|
53
|
+
*
|
|
54
|
+
* rango.background wraps DETACHED work (waitUntil tasks that outlive the
|
|
55
|
+
* response): PPR shell captures and SWR background revalidations. It is the
|
|
56
|
+
* explanatory parent for spans those tasks produce after the foreground
|
|
57
|
+
* phases ended — without it, post-handoff work reads as orphan spans dangling
|
|
58
|
+
* under an ended parent. See PHASES.background (instrument.ts) for the lane
|
|
59
|
+
* kinds and per-lane inner-span policy.
|
|
43
60
|
*
|
|
44
61
|
* Both shipped runners (Cloudflare, OTel) keep the core agnostic: the
|
|
45
62
|
* platform-specific bridge lives at the edge behind the SpanRunner contract.
|
|
@@ -68,18 +85,17 @@ export type TracePhase =
|
|
|
68
85
|
| "loader"
|
|
69
86
|
| "handler"
|
|
70
87
|
| "render"
|
|
71
|
-
| "ssr"
|
|
88
|
+
| "ssr"
|
|
89
|
+
| "response"
|
|
90
|
+
| "background";
|
|
72
91
|
|
|
73
|
-
/**
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
render?: boolean;
|
|
81
|
-
ssr?: boolean;
|
|
82
|
-
}
|
|
92
|
+
/**
|
|
93
|
+
* Per-phase span toggles. Omitted phases default to enabled. Derived from
|
|
94
|
+
* TracePhase so a new phase cannot be silently missing here — the other phase
|
|
95
|
+
* lists in this file (ALL_PHASES_ON, resolveTracing) are exhaustiveness-checked
|
|
96
|
+
* by their Record<TracePhase, boolean> annotations.
|
|
97
|
+
*/
|
|
98
|
+
export type TracePhaseToggles = Partial<Record<TracePhase, boolean>>;
|
|
83
99
|
|
|
84
100
|
/**
|
|
85
101
|
* The option pair shared by every tracing factory (enabled master switch +
|
|
@@ -125,6 +141,8 @@ const ALL_PHASES_ON: Record<TracePhase, boolean> = {
|
|
|
125
141
|
handler: true,
|
|
126
142
|
render: true,
|
|
127
143
|
ssr: true,
|
|
144
|
+
response: true,
|
|
145
|
+
background: true,
|
|
128
146
|
};
|
|
129
147
|
|
|
130
148
|
/**
|
|
@@ -153,6 +171,8 @@ export function resolveTracing(
|
|
|
153
171
|
handler: spans.handler ?? true,
|
|
154
172
|
render: spans.render ?? true,
|
|
155
173
|
ssr: spans.ssr ?? true,
|
|
174
|
+
response: spans.response ?? true,
|
|
175
|
+
background: spans.background ?? true,
|
|
156
176
|
}
|
|
157
177
|
: ALL_PHASES_ON,
|
|
158
178
|
};
|