@rangojs/router 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/types/browser/prefetch/cache.d.ts +11 -8
- package/dist/types/cache/cf/cf-cache-store.d.ts +2 -0
- package/dist/types/cache/read-through-swr.d.ts +7 -6
- package/dist/types/cache/types.d.ts +39 -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 +41 -4
- package/dist/types/rsc/shell-build-manifest.d.ts +2 -2
- package/dist/types/rsc/shell-capture.d.ts +28 -2
- package/dist/types/rsc/shell-serve.d.ts +18 -12
- 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/skills/ppr/SKILL.md +44 -3
- package/src/browser/prefetch/cache.ts +22 -10
- package/src/cache/cache-runtime.ts +39 -25
- package/src/cache/cf/cf-cache-store.ts +27 -8
- package/src/cache/document-cache.ts +39 -23
- package/src/cache/read-through-swr.ts +22 -16
- package/src/cache/types.ts +41 -6
- package/src/cache/vercel/vercel-cache-store.ts +24 -10
- 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 +150 -22
- package/src/rsc/handler.ts +171 -73
- package/src/rsc/rsc-rendering.ts +11 -3
- package/src/rsc/shell-build-manifest.ts +20 -7
- package/src/rsc/shell-capture.ts +222 -18
- package/src/rsc/shell-serve.ts +27 -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
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stream-idle timeout — the enforcement for `timeouts.streamIdleMs` (the
|
|
3
|
+
* "stream-idle" TimeoutPhase, reserved since the timeout API landed).
|
|
4
|
+
*
|
|
5
|
+
* WHY: nothing else bounds a streaming response body's lifetime.
|
|
6
|
+
* `renderStartMs` only bounds time-to-Response-construction; once the body is
|
|
7
|
+
* streaming, a single never-settling promise embedded in the payload (a
|
|
8
|
+
* deferred loader that never resolves, an orphaned ctx.rendered() barrier)
|
|
9
|
+
* holds the Flight/HTML stream — and the client's connection — open forever.
|
|
10
|
+
* Deferred HANDLES have a 10s auto-resolve net (defer.ts); loader promises
|
|
11
|
+
* and everything else have none. Field-observed as multi-second dead
|
|
12
|
+
* connections only closed by client cancellation.
|
|
13
|
+
*
|
|
14
|
+
* SEMANTICS — end-to-end idle flow, deliberately: the watchdog re-arms on
|
|
15
|
+
* every chunk that flows THROUGH to the client, so "idle" means "no bytes
|
|
16
|
+
* reached the wire for N ms". A stalled slow client counts as idle the same
|
|
17
|
+
* as a wedged producer — the two are indistinguishable here without buffering,
|
|
18
|
+
* and buffering is banned on the streaming path. Pick budgets accordingly
|
|
19
|
+
* (generous, seconds not millis); the feature is OPT-IN (unset = today's
|
|
20
|
+
* unbounded behavior, and the `timeout` shorthand deliberately does not apply
|
|
21
|
+
* to streamIdleMs — see resolveTimeouts).
|
|
22
|
+
*
|
|
23
|
+
* ON TRIP: the client-facing stream is errored with a RouterTimeoutError
|
|
24
|
+
* ("stream-idle") — the host terminates the response visibly (truncated
|
|
25
|
+
* chunked encoding), which is debuggable, unlike a silent clean close that
|
|
26
|
+
* would present a half-document as complete. Erroring the transform makes the
|
|
27
|
+
* pipe cancel its SOURCE, which aborts React's fizz/flight render — but only
|
|
28
|
+
* when the watchdog's branch is the sole consumer. When an upstream layer
|
|
29
|
+
* teed or cloned the body first (the document-cache MISS drain,
|
|
30
|
+
* response-cache clones), the watchdog holds one tee branch: tee semantics
|
|
31
|
+
* cancel the underlying source only once EVERY branch cancels, so the cache
|
|
32
|
+
* branch keeps the wedged render alive, bounded only by the platform's
|
|
33
|
+
* waitUntil budget — exactly as it was before this feature. The client-facing
|
|
34
|
+
* bound is unconditional; source teardown is best-effort. `onTimeout` does
|
|
35
|
+
* NOT apply: the response already left the handler, so no replacement
|
|
36
|
+
* Response can be served — the trip is reported via onError + the
|
|
37
|
+
* request.timeout telemetry event instead.
|
|
38
|
+
*
|
|
39
|
+
* COST: one identity TransformStream hop per chunk, only when the timeout is
|
|
40
|
+
* enabled. Never buffers, never reads ahead, adds no work when disabled.
|
|
41
|
+
*/
|
|
42
|
+
import { RouterTimeoutError } from "../router/timeout.js";
|
|
43
|
+
/** What the watchdog observed when it tripped. */
|
|
44
|
+
export interface StreamIdleTrip {
|
|
45
|
+
/** ms since the watchdog armed (response handoff) — the stream's lifetime. */
|
|
46
|
+
totalMs: number;
|
|
47
|
+
/** Chunks forwarded before the trip. */
|
|
48
|
+
chunks: number;
|
|
49
|
+
/** The error the client-facing stream was terminated with. */
|
|
50
|
+
error: RouterTimeoutError;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Wrap `response`'s body in an idle watchdog. Returns a NEW Response with the
|
|
54
|
+
* same status/headers whose body errors (and cancels the source) once no chunk
|
|
55
|
+
* has flowed for `idleMs`. Callers gate on isTimeoutEnabled + body presence +
|
|
56
|
+
* NOT a websocket upgrade (a 101/webSocket response must never be
|
|
57
|
+
* reconstructed); this function assumes those checks were made. `onTrip` fires
|
|
58
|
+
* at most once, after the client-facing stream has been errored.
|
|
59
|
+
*/
|
|
60
|
+
export declare function applyStreamIdleTimeout(response: Response, idleMs: number, onTrip: (trip: StreamIdleTrip) => void): Response;
|
|
@@ -564,6 +564,12 @@ export interface RequestContext<TEnv = DefaultEnv, TParams = Record<string, stri
|
|
|
564
564
|
* to avoid a second resolveRoute call. Cleared on HMR invalidation.
|
|
565
565
|
*/
|
|
566
566
|
_classifiedRoute?: import("../router/route-snapshot.js").RouteSnapshot;
|
|
567
|
+
/**
|
|
568
|
+
* @internal Classified request mode from classifyRequest, read by the
|
|
569
|
+
* rango.response span tail (rsc/handler.ts) for the rango.response.mode
|
|
570
|
+
* attribute. Unset when middleware short-circuits before core execution.
|
|
571
|
+
*/
|
|
572
|
+
_requestMode?: import("../router/request-classification.js").RequestPlan["mode"];
|
|
567
573
|
/**
|
|
568
574
|
* @internal Coarse route-level cache signal for the X-Rango-Cache debug
|
|
569
575
|
* header. Populated by match/matchPartial only when the debug cache signal
|
|
@@ -579,7 +585,7 @@ export interface RequestContext<TEnv = DefaultEnv, TParams = Record<string, stri
|
|
|
579
585
|
* This is the type exported to library consumers. Internal code should
|
|
580
586
|
* use the full RequestContext interface directly.
|
|
581
587
|
*/
|
|
582
|
-
export type PublicRequestContext<TEnv = DefaultEnv, TParams = Record<string, string>> = Omit<RequestContext<TEnv, TParams>, "cookie" | "cookies" | "setCookie" | "deleteCookie" | "_handleStore" | "_transitionWhen" | "_pprTransitionDecisions" | "_pprReplayPostMatchReason" | "_cacheStore" | "_searchParamsFilter" | "_shellCaptureRun" | "_shellImplicitCache" | "_shellLoaderSeed" | "_shellCaptureLoaderRecords" | "_shellCaptureHandleLiveness" | "_shellCaptureLoaderHandleValues" | "_shellFragmentPayload" | "_shellCaptureGuardTripped" | "_shellCaptureGuardTrippedLoaderId" | "_explicitTaggedStores" | "_requestTags" | "_cacheProfiles" | "_onResponseCallbacks" | "_pendingBackgroundTasks" | "_themeConfig" | "_locationState" | "_routeName" | "_prevRouteKey" | "_gateCurrentUrl" | "_gateCurrentParams" | "_gateActionId" | "_gateActionUrl" | "_gateActionResult" | "_gateFormData" | "_inActionRevalidation" | "_reportedErrors" | "_renderBarrier" | "_resolveRenderBarrier" | "_renderBarrierSegmentOrder" | "_treeHasStreaming" | "_renderBarrierWaiters" | "_handlerLoaderDeps" | "_renderBarrierHandleSnapshot" | "_renderBarrierGuardClosed" | "_reportBackgroundError" | "_debugPerformance" | "_metricsStore" | "_renderForeground" | "_renderDiagnosticsEnabled" | "_handlerStart" | "_tracing" | "_basename" | "_routerId" | "_setStatus" | "_rotateStateCookie" | "_setKeepCacheDirective" | "_variables" | "_classifiedRoute" | "_cacheSignal" | "_dynamic" | "res">;
|
|
588
|
+
export type PublicRequestContext<TEnv = DefaultEnv, TParams = Record<string, string>> = Omit<RequestContext<TEnv, TParams>, "cookie" | "cookies" | "setCookie" | "deleteCookie" | "_handleStore" | "_transitionWhen" | "_pprTransitionDecisions" | "_pprReplayPostMatchReason" | "_cacheStore" | "_searchParamsFilter" | "_shellCaptureRun" | "_shellImplicitCache" | "_shellLoaderSeed" | "_shellCaptureLoaderRecords" | "_shellCaptureHandleLiveness" | "_shellCaptureLoaderHandleValues" | "_shellFragmentPayload" | "_shellCaptureGuardTripped" | "_shellCaptureGuardTrippedLoaderId" | "_explicitTaggedStores" | "_requestTags" | "_cacheProfiles" | "_onResponseCallbacks" | "_pendingBackgroundTasks" | "_themeConfig" | "_locationState" | "_routeName" | "_prevRouteKey" | "_gateCurrentUrl" | "_gateCurrentParams" | "_gateActionId" | "_gateActionUrl" | "_gateActionResult" | "_gateFormData" | "_inActionRevalidation" | "_reportedErrors" | "_renderBarrier" | "_resolveRenderBarrier" | "_renderBarrierSegmentOrder" | "_treeHasStreaming" | "_renderBarrierWaiters" | "_handlerLoaderDeps" | "_renderBarrierHandleSnapshot" | "_renderBarrierGuardClosed" | "_reportBackgroundError" | "_debugPerformance" | "_metricsStore" | "_renderForeground" | "_renderDiagnosticsEnabled" | "_handlerStart" | "_tracing" | "_basename" | "_routerId" | "_setStatus" | "_rotateStateCookie" | "_setKeepCacheDirective" | "_variables" | "_classifiedRoute" | "_requestMode" | "_cacheSignal" | "_dynamic" | "res">;
|
|
583
589
|
/**
|
|
584
590
|
* Marker for a waitUntil-scheduled fn whose task promise must NOT enter
|
|
585
591
|
* _pendingBackgroundTasks. Used by the PPR shell capture for its own task:
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Vercel OpenTelemetry tracing integration.
|
|
3
3
|
*
|
|
4
|
-
* Bridges the router's
|
|
5
|
-
*
|
|
6
|
-
* Vercel's trace waterfall next to the platform's automatic spans,
|
|
7
|
-
* nesting. Vercel exposes tracing through OpenTelemetry (not a
|
|
8
|
-
* API like Cloudflare), so this is a thin convenience over
|
|
9
|
-
* it reads the global OTel tracer that `@vercel/otel`'s
|
|
4
|
+
* Bridges the router's observable phases (request, middleware, action, loaders,
|
|
5
|
+
* handler, render, ssr, response, background) onto OpenTelemetry spans so they
|
|
6
|
+
* show up in Vercel's trace waterfall next to the platform's automatic spans,
|
|
7
|
+
* with correct nesting. Vercel exposes tracing through OpenTelemetry (not a
|
|
8
|
+
* native import-free API like Cloudflare), so this is a thin convenience over
|
|
9
|
+
* `createOTelTracing`: it reads the global OTel tracer that `@vercel/otel`'s
|
|
10
|
+
* `registerOTel()` installs.
|
|
10
11
|
*
|
|
11
12
|
* Usage (vercel preset). A Rango/Vite app does NOT auto-load `instrumentation.ts`
|
|
12
13
|
* the way Next.js does, so export the tracing config from there and import it —
|
|
@@ -59,8 +60,8 @@ export interface VercelTracingOptions extends TracingToggleOptions {
|
|
|
59
60
|
/**
|
|
60
61
|
* Create the tracing config for a Vercel router. Pass the result to
|
|
61
62
|
* `createRouter({ tracing })`. Spans are emitted for the request, middleware,
|
|
62
|
-
* action, loaders, handler, render, and
|
|
63
|
-
* individual phases off.
|
|
63
|
+
* action, loaders, handler, render, ssr, response, and background phases; pass
|
|
64
|
+
* `spans` to turn individual phases off.
|
|
64
65
|
*
|
|
65
66
|
* @see createOTelTracing (`@rangojs/router`) for the underlying adapter on any
|
|
66
67
|
* platform with an OpenTelemetry SDK.
|
package/dist/vite/index.js
CHANGED
|
@@ -2530,7 +2530,7 @@ import { resolve } from "node:path";
|
|
|
2530
2530
|
// package.json
|
|
2531
2531
|
var package_default = {
|
|
2532
2532
|
name: "@rangojs/router",
|
|
2533
|
-
version: "0.
|
|
2533
|
+
version: "0.5.0",
|
|
2534
2534
|
description: "Django-inspired RSC router with composable URL patterns",
|
|
2535
2535
|
keywords: [
|
|
2536
2536
|
"react",
|
package/package.json
CHANGED
|
@@ -145,10 +145,39 @@ const router = createRouter({ document: Document, urls: urlpatterns, tracing });
|
|
|
145
145
|
These factories return a `RouterTracingConfig` for the same `tracing` slot;
|
|
146
146
|
`telemetry` stays independent (events only, no phase spans). Phase spans:
|
|
147
147
|
`rango.request`, `rango.middleware`, `rango.action`, `rango.loader`,
|
|
148
|
-
`rango.render`, `rango.ssr
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
148
|
+
`rango.handler`, `rango.render`, `rango.ssr`, `rango.response`,
|
|
149
|
+
`rango.background`. All share the `PHASES` registry and `observePhase`
|
|
150
|
+
execution boundary with `debugPerformance`; phases with `metric: false` either
|
|
151
|
+
use finer-grained perf rows or, for `response` and `background`, remain
|
|
152
|
+
span-only. Off-platform (no Cloudflare tracing destination / no OTel SDK) every
|
|
153
|
+
span call is a transparent pass-through, so the request behaves as if tracing
|
|
154
|
+
were off.
|
|
155
|
+
|
|
156
|
+
`rango.response` is the explicit handoff marker: at most one per traced
|
|
157
|
+
request, a direct child of `rango.request`, wrapping only response finalization
|
|
158
|
+
(redirect interception/guarding, `Server-Timing` mutation, final response
|
|
159
|
+
selection) and ending immediately before the handler returns the response to
|
|
160
|
+
the host. It is handoff-bound, never drain-bound — it never reads or awaits
|
|
161
|
+
`response.body`. Attributes: `http.response.status_code`,
|
|
162
|
+
`rango.response.mode` (classified request mode, or `middleware-short-circuit`),
|
|
163
|
+
`rango.response.body_kind` (`stream`/`empty`/`websocket`). For request modes
|
|
164
|
+
that render nothing (fetchable `_rsc_loader`, response routes, middleware
|
|
165
|
+
short-circuits) it shows the trace is complete rather than truncated — those
|
|
166
|
+
requests legitimately have no `rango.render`/`rango.ssr`/`rango.handler` spans.
|
|
167
|
+
On deployed Workers it may read 0 ms (frozen non-I/O timers); its position and
|
|
168
|
+
attributes are the value. Disable per-response billing overhead at volume with
|
|
169
|
+
`spans: { response: false }`.
|
|
170
|
+
|
|
171
|
+
`rango.background` wraps detached waitUntil work — PPR shell captures and SWR
|
|
172
|
+
background revalidations — that runs after the foreground spans ended. Without
|
|
173
|
+
it, a capture or revalidation shows up as an unexplained wave of orphan
|
|
174
|
+
KV/fetch spans minutes into a trace. `rango.background.kind` names the lane
|
|
175
|
+
(`shell-capture` / `document-revalidation` / `loader-revalidation` /
|
|
176
|
+
`use-cache-revalidation`); the shell-capture lane also carries
|
|
177
|
+
`rango.shell_key`, `rango.background.outcome`, and
|
|
178
|
+
`rango.background.queue_wait_ms` (a capture parked behind the per-isolate
|
|
179
|
+
capture queue reads as span duration, not dead air). Toggle with
|
|
180
|
+
`spans: { background: false }`.
|
|
152
181
|
|
|
153
182
|
Custom sinks implement `emit(event)`:
|
|
154
183
|
|
package/skills/ppr/SKILL.md
CHANGED
|
@@ -358,14 +358,27 @@ curl -s -D - -o /dev/null https://app.example.com/products/1 | grep -i x-rango-s
|
|
|
358
358
|
falls through to KV on a miss, and promotes the KV hit back into that colo.
|
|
359
359
|
WITHOUT a KV namespace its shell family remains inert: every ppr route stays
|
|
360
360
|
`MISS` forever. The store warns once per isolate — bind KV
|
|
361
|
-
(`new CFCacheStore({ ctx, kv: env.CACHE_KV })`) or use another store.
|
|
361
|
+
(`new CFCacheStore({ ctx, kv: env.CACHE_KV })`) or use another store. An
|
|
362
|
+
inert store also stops captures at the gate: the store declares
|
|
363
|
+
`shellFamilyInert` and the scheduler skips the background render entirely
|
|
364
|
+
(`skip-inert-store` on the debug event) instead of burning a full capture per
|
|
365
|
+
MISS whose write could only no-op.
|
|
362
366
|
- Structured capture diagnostics: `createRouter({ debugShellCapture: true })`
|
|
363
367
|
logs one line per capture attempt/skip (outcome, durations, prelude and
|
|
364
368
|
snapshot bytes, backoff state); pass a function to receive each
|
|
365
369
|
`ShellCaptureDebugEvent` instead. `skip-capacity` means the isolate already
|
|
366
370
|
has 32 queued/running captures; the dropped best-effort capture can retry on a
|
|
367
|
-
later request.
|
|
368
|
-
|
|
371
|
+
later request. `skip-queue-timeout` means this capture waited 15s behind the
|
|
372
|
+
active or same-priority work and was dropped before rendering; document-shell
|
|
373
|
+
captures outrank queued navigation-only snapshots, but never interrupt the
|
|
374
|
+
active capture — the skip event and the `rango.background` span carry
|
|
375
|
+
`queuePriority`/`queueAhead` (class and backlog at enqueue) so a parked
|
|
376
|
+
capture diagnoses itself. A stored attempt reports `bakeWaitMs`: how long the
|
|
377
|
+
slowest bake source (a top-level pushed handle promise or a bake-lane loader
|
|
378
|
+
container) held the capture gate — in dev, past 2s, the source is also named
|
|
379
|
+
once per key in a console warning with the remedies (nest the promise /
|
|
380
|
+
`cache()` the work / add `loading()`). In dev, with `debugPerformance` on,
|
|
381
|
+
the last capture outcome for a key also rides the next document GET's
|
|
369
382
|
`Server-Timing` as `ppr-capture;desc="…"`.
|
|
370
383
|
- For deployed Cloudflare tier diagnostics, build with
|
|
371
384
|
`INTERNAL_RANGO_DEBUG=1` and run `wrangler tail`. `[CFCacheStore][shell]`
|
|
@@ -621,6 +634,34 @@ capture with identity reads permitted, and the value bakes as a shared
|
|
|
621
634
|
capture-time copy — mirroring `cache()` semantics (the consumption-lane
|
|
622
635
|
rule; semantic-matrix row PPR3).
|
|
623
636
|
|
|
637
|
+
### Designing routes for cheap captures (the cost model)
|
|
638
|
+
|
|
639
|
+
The hole doctrine has a cost corollary that bites silently: **everything that
|
|
640
|
+
bakes is awaited at capture, and that wait recurs on EVERY capture of the
|
|
641
|
+
route**. A top-level pushed handle promise that takes 5s and a Meta promise
|
|
642
|
+
chained 2s further make every capture occupy the per-isolate serialized queue
|
|
643
|
+
for ~7s — while the served response still reads 13ms TTFB, because captures are
|
|
644
|
+
detached. You will not see this cost in any request timing; you see it as slow
|
|
645
|
+
MISS→HIT flips, `skip-queue-timeout` under prefetch pressure, and (in dev, past
|
|
646
|
+
2s) the bake-cost warning naming the source.
|
|
647
|
+
|
|
648
|
+
Three levers, in preference order:
|
|
649
|
+
|
|
650
|
+
1. **Nest it** (`{ data: promise }` instead of the promise): the value becomes
|
|
651
|
+
a hole — per-request, streamed under the consumer's `<Suspense>`, zero
|
|
652
|
+
capture cost. Choose this whenever the value may be dynamic anyway.
|
|
653
|
+
2. **`cache()` the work inside it**: the value stays baked (shell material,
|
|
654
|
+
tag-invalidatable), but the capture replays the cached value instead of
|
|
655
|
+
re-executing the expensive body (mixed-chain). Choose this for shared,
|
|
656
|
+
expensive-to-compute shell content.
|
|
657
|
+
3. **`loading()` on the entry** (loaders only): moves the loader to the live
|
|
658
|
+
lane — masked at capture, fresh per serve — at the cost of a fallback in
|
|
659
|
+
the shell.
|
|
660
|
+
|
|
661
|
+
Head material (Meta) generally cannot be a hole — the head is shell — so its
|
|
662
|
+
promises bake by design; make them cheap with lever 2. `bakeWaitMs` on the
|
|
663
|
+
capture debug event tells you what each capture actually paid.
|
|
664
|
+
|
|
624
665
|
## Execution matrix
|
|
625
666
|
|
|
626
667
|
| Phase | MISS (foreground) | Background capture | HIT (foreground) |
|
|
@@ -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
|
|
@@ -267,10 +267,13 @@ interface KVItemEnvelope {
|
|
|
267
267
|
* @internal
|
|
268
268
|
*/
|
|
269
269
|
interface CFShellEnvelope {
|
|
270
|
-
/**
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
270
|
+
/**
|
|
271
|
+
* base64-encoded prelude bytes. Absent iff `no` (navigationOnly entries
|
|
272
|
+
* store no document half — ShellCacheEntry.prelude).
|
|
273
|
+
*/
|
|
274
|
+
p?: string;
|
|
275
|
+
/** postponed state JSON, or null (DATA variant — no holes). Absent iff `no`. */
|
|
276
|
+
po?: string | null;
|
|
274
277
|
/** React.version captured at prerender time */
|
|
275
278
|
rv: string;
|
|
276
279
|
/** Build version captured at prerender time (ShellCacheEntry.buildVersion) */
|
|
@@ -347,8 +350,14 @@ function isShellEnvelope(value: unknown): value is CFShellEnvelope {
|
|
|
347
350
|
if (value == null || typeof value !== "object") return false;
|
|
348
351
|
const envelope = value as Partial<CFShellEnvelope>;
|
|
349
352
|
return (
|
|
350
|
-
|
|
351
|
-
|
|
353
|
+
// Document half: required unless the envelope is navigationOnly (`no`),
|
|
354
|
+
// which stores neither field. Tolerate a legacy navigationOnly envelope
|
|
355
|
+
// that still carries them.
|
|
356
|
+
(typeof envelope.p === "string" ||
|
|
357
|
+
(envelope.p === undefined && envelope.no === true)) &&
|
|
358
|
+
(envelope.po === null ||
|
|
359
|
+
typeof envelope.po === "string" ||
|
|
360
|
+
(envelope.po === undefined && envelope.no === true)) &&
|
|
352
361
|
typeof envelope.rv === "string" &&
|
|
353
362
|
(envelope.bv === undefined || typeof envelope.bv === "string") &&
|
|
354
363
|
typeof envelope.c === "number" &&
|
|
@@ -400,6 +409,8 @@ interface KVResponseEnvelope {
|
|
|
400
409
|
|
|
401
410
|
export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
|
|
402
411
|
readonly supportsPassiveShellReads: true = true;
|
|
412
|
+
/** True when constructed without KV: the shell family no-ops (see ctor). */
|
|
413
|
+
readonly shellFamilyInert?: boolean;
|
|
403
414
|
readonly defaults?: CacheDefaults;
|
|
404
415
|
readonly keyGenerator?: (
|
|
405
416
|
ctx: RequestContext<TEnv>,
|
|
@@ -471,6 +482,11 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
|
|
|
471
482
|
this.keyGenerator = options.keyGenerator;
|
|
472
483
|
this.waitUntil = (fn) => options.ctx.waitUntil(fn());
|
|
473
484
|
this.kv = options.kv;
|
|
485
|
+
// The shell family requires KV (getShell/putShell no-op without it — see
|
|
486
|
+
// warnShellFamilyInertOnce). Declaring it lets scheduleShellCapture skip
|
|
487
|
+
// captures whose write could only no-op instead of burning a background
|
|
488
|
+
// render per MISS that still occupies the serialized capture queue.
|
|
489
|
+
this.shellFamilyInert = options.kv ? undefined : true;
|
|
474
490
|
this.onRevalidateTag = options.onRevalidateTag;
|
|
475
491
|
// tagPurge accepts a ready purge function or a credentials object; the
|
|
476
492
|
// object form is normalized through the built-in zone purge client, which
|
|
@@ -2083,8 +2099,11 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
|
|
|
2083
2099
|
}
|
|
2084
2100
|
|
|
2085
2101
|
const envelope: CFShellEnvelope = {
|
|
2086
|
-
|
|
2087
|
-
|
|
2102
|
+
// Presence-keyed: a navigationOnly entry has no document half, and an
|
|
2103
|
+
// omitted key (vs an explicit undefined) also keeps it out of the
|
|
2104
|
+
// serialized JSON.
|
|
2105
|
+
...(entry.prelude !== undefined ? { p: entry.prelude } : {}),
|
|
2106
|
+
...(entry.postponed !== undefined ? { po: entry.postponed } : {}),
|
|
2088
2107
|
rv: entry.reactVersion,
|
|
2089
2108
|
bv: entry.buildVersion,
|
|
2090
2109
|
c: entry.createdAt,
|
|
@@ -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,
|