@rangojs/router 0.0.0-experimental.21 → 0.0.0-experimental.23
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/README.md +43 -10
- package/dist/vite/index.js +2 -3
- package/package.json +1 -1
- package/skills/caching/SKILL.md +4 -4
- package/skills/document-cache/SKILL.md +2 -2
- package/skills/hooks/SKILL.md +13 -12
- package/skills/host-router/SKILL.md +218 -0
- package/skills/loader/SKILL.md +2 -2
- package/skills/prerender/SKILL.md +2 -2
- package/skills/rango/SKILL.md +0 -1
- package/skills/router-setup/SKILL.md +2 -2
- package/skills/typesafety/SKILL.md +1 -1
- package/src/host/index.ts +0 -3
- package/src/index.ts +30 -31
- package/src/route-definition/index.ts +0 -3
- package/src/router/loader-resolution.ts +1 -1
- package/src/router/metrics.ts +90 -10
- package/src/router/middleware-types.ts +12 -0
- package/src/router/middleware.ts +55 -9
- package/src/router/router-options.ts +1 -1
- package/src/router/segment-resolution/fresh.ts +18 -0
- package/src/router/segment-resolution/revalidation.ts +21 -6
- package/src/router.ts +6 -2
- package/src/rsc/index.ts +0 -20
- package/src/server/context.ts +8 -2
- package/src/server/request-context.ts +5 -1
- package/src/server.ts +6 -0
- package/src/theme/index.ts +4 -13
- package/src/vite/discovery/discover-routers.ts +2 -3
- 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.map +0 -1
- package/dist/vite/index.named-routes.gen.ts +0 -103
- package/dist/vite/package-resolution.d.ts +0 -43
- package/dist/vite/package-resolution.d.ts.map +0 -1
- package/dist/vite/package-resolution.js +0 -112
- package/dist/vite/package-resolution.js.map +0 -1
- package/dist/vite/virtual-entries.d.ts +0 -25
- package/dist/vite/virtual-entries.d.ts.map +0 -1
- package/dist/vite/virtual-entries.js +0 -110
- package/dist/vite/virtual-entries.js.map +0 -1
- package/skills/testing/SKILL.md +0 -226
- package/src/route-definition/route-function.ts +0 -119
package/src/index.ts
CHANGED
|
@@ -115,25 +115,32 @@ export type {
|
|
|
115
115
|
// Middleware context types
|
|
116
116
|
export type { MiddlewareContext, CookieOptions } from "./router/middleware.js";
|
|
117
117
|
|
|
118
|
+
function serverOnlyStubError(name: string): Error {
|
|
119
|
+
return new Error(
|
|
120
|
+
`${name}() is only available from "@rangojs/router" in a react-server/RSC environment. ` +
|
|
121
|
+
`For client hooks and components, import from "@rangojs/router/client".`,
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
118
125
|
/**
|
|
119
126
|
* Error-throwing stub for server-only `urls` function.
|
|
120
127
|
*/
|
|
121
128
|
export function urls(): never {
|
|
122
|
-
throw
|
|
129
|
+
throw serverOnlyStubError("urls");
|
|
123
130
|
}
|
|
124
131
|
|
|
125
132
|
/**
|
|
126
133
|
* Error-throwing stub for server-only `createRouter` function.
|
|
127
134
|
*/
|
|
128
135
|
export function createRouter(): never {
|
|
129
|
-
throw
|
|
136
|
+
throw serverOnlyStubError("createRouter");
|
|
130
137
|
}
|
|
131
138
|
|
|
132
139
|
/**
|
|
133
140
|
* Error-throwing stub for server-only `redirect` function.
|
|
134
141
|
*/
|
|
135
142
|
export function redirect(): never {
|
|
136
|
-
throw
|
|
143
|
+
throw serverOnlyStubError("redirect");
|
|
137
144
|
}
|
|
138
145
|
|
|
139
146
|
// Handle API (universal - works on both server and client)
|
|
@@ -149,102 +156,94 @@ export { nonce } from "./rsc/nonce.js";
|
|
|
149
156
|
* Error-throwing stub for server-only `Prerender` function.
|
|
150
157
|
*/
|
|
151
158
|
export function Prerender(): never {
|
|
152
|
-
throw
|
|
159
|
+
throw serverOnlyStubError("Prerender");
|
|
153
160
|
}
|
|
154
161
|
|
|
155
162
|
/**
|
|
156
163
|
* Error-throwing stub for server-only `Static` function.
|
|
157
164
|
*/
|
|
158
165
|
export function Static(): never {
|
|
159
|
-
throw
|
|
166
|
+
throw serverOnlyStubError("Static");
|
|
160
167
|
}
|
|
161
168
|
|
|
162
169
|
/**
|
|
163
170
|
* Error-throwing stub for server-only `getRequestContext` function.
|
|
164
171
|
*/
|
|
165
172
|
export function getRequestContext(): never {
|
|
166
|
-
throw
|
|
167
|
-
"getRequestContext() is server-only and requires RSC context.",
|
|
168
|
-
);
|
|
173
|
+
throw serverOnlyStubError("getRequestContext");
|
|
169
174
|
}
|
|
170
175
|
|
|
171
176
|
/**
|
|
172
177
|
* Error-throwing stub for server-only `cookies` function.
|
|
173
178
|
*/
|
|
174
179
|
export function cookies(): never {
|
|
175
|
-
throw
|
|
180
|
+
throw serverOnlyStubError("cookies");
|
|
176
181
|
}
|
|
177
182
|
|
|
178
183
|
/**
|
|
179
184
|
* Error-throwing stub for server-only `headers` function.
|
|
180
185
|
*/
|
|
181
186
|
export function headers(): never {
|
|
182
|
-
throw
|
|
187
|
+
throw serverOnlyStubError("headers");
|
|
183
188
|
}
|
|
184
189
|
|
|
185
190
|
/**
|
|
186
191
|
* Error-throwing stub for server-only `createReverse` function.
|
|
187
192
|
*/
|
|
188
193
|
export function createReverse(): never {
|
|
189
|
-
throw
|
|
194
|
+
throw serverOnlyStubError("createReverse");
|
|
190
195
|
}
|
|
191
196
|
|
|
192
197
|
/**
|
|
193
198
|
* Error-throwing stub for server-only `enableMatchDebug` function.
|
|
194
199
|
*/
|
|
195
200
|
export function enableMatchDebug(): never {
|
|
196
|
-
throw
|
|
197
|
-
"enableMatchDebug() is server-only and requires RSC context.",
|
|
198
|
-
);
|
|
201
|
+
throw serverOnlyStubError("enableMatchDebug");
|
|
199
202
|
}
|
|
200
203
|
|
|
201
204
|
/**
|
|
202
205
|
* Error-throwing stub for server-only `getMatchDebugStats` function.
|
|
203
206
|
*/
|
|
204
207
|
export function getMatchDebugStats(): never {
|
|
205
|
-
throw
|
|
206
|
-
"getMatchDebugStats() is server-only and requires RSC context.",
|
|
207
|
-
);
|
|
208
|
+
throw serverOnlyStubError("getMatchDebugStats");
|
|
208
209
|
}
|
|
209
210
|
|
|
210
211
|
// Error-throwing stubs for server-only route helpers
|
|
211
212
|
export function layout(): never {
|
|
212
|
-
throw
|
|
213
|
+
throw serverOnlyStubError("layout");
|
|
213
214
|
}
|
|
214
215
|
export function cache(): never {
|
|
215
|
-
throw
|
|
216
|
+
throw serverOnlyStubError("cache");
|
|
216
217
|
}
|
|
217
218
|
export function middleware(): never {
|
|
218
|
-
throw
|
|
219
|
+
throw serverOnlyStubError("middleware");
|
|
219
220
|
}
|
|
220
221
|
export function revalidate(): never {
|
|
221
|
-
throw
|
|
222
|
+
throw serverOnlyStubError("revalidate");
|
|
222
223
|
}
|
|
223
224
|
export function loader(): never {
|
|
224
|
-
throw
|
|
225
|
+
throw serverOnlyStubError("loader");
|
|
225
226
|
}
|
|
226
227
|
export function loading(): never {
|
|
227
|
-
throw
|
|
228
|
+
throw serverOnlyStubError("loading");
|
|
228
229
|
}
|
|
229
230
|
export function parallel(): never {
|
|
230
|
-
throw
|
|
231
|
+
throw serverOnlyStubError("parallel");
|
|
231
232
|
}
|
|
232
233
|
export function intercept(): never {
|
|
233
|
-
throw
|
|
234
|
+
throw serverOnlyStubError("intercept");
|
|
234
235
|
}
|
|
235
236
|
export function when(): never {
|
|
236
|
-
throw
|
|
237
|
+
throw serverOnlyStubError("when");
|
|
237
238
|
}
|
|
238
239
|
export function errorBoundary(): never {
|
|
239
|
-
throw
|
|
240
|
+
throw serverOnlyStubError("errorBoundary");
|
|
240
241
|
}
|
|
241
242
|
export function notFoundBoundary(): never {
|
|
242
|
-
throw
|
|
243
|
-
"notFoundBoundary() is server-only and requires RSC context.",
|
|
244
|
-
);
|
|
243
|
+
throw serverOnlyStubError("notFoundBoundary");
|
|
245
244
|
}
|
|
246
245
|
export function transition(): never {
|
|
247
|
-
throw
|
|
246
|
+
throw serverOnlyStubError("transition");
|
|
248
247
|
}
|
|
249
248
|
|
|
250
249
|
// Request context type (safe for client)
|
|
@@ -262,7 +262,7 @@ function createLoaderExecutor<TEnv>(
|
|
|
262
262
|
reverse: ctx.reverse as LoaderContext["reverse"],
|
|
263
263
|
};
|
|
264
264
|
|
|
265
|
-
const doneLoader = track(`loader:${loader.$$id}
|
|
265
|
+
const doneLoader = track(`loader:${loader.$$id}`, 2);
|
|
266
266
|
const promise = Promise.resolve(
|
|
267
267
|
loaderFn(loaderCtx as LoaderContext<any, TEnv>),
|
|
268
268
|
).finally(() => {
|
package/src/router/metrics.ts
CHANGED
|
@@ -4,7 +4,56 @@
|
|
|
4
4
|
* Performance metrics collection and reporting for RSC Router.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type { MetricsStore } from "../server/context";
|
|
7
|
+
import type { MetricsStore, PerformanceMetric } from "../server/context";
|
|
8
|
+
|
|
9
|
+
const BASE_INDENT = 2;
|
|
10
|
+
const DEPTH_INDENT = 2;
|
|
11
|
+
const TIMELINE_WIDTH = 40;
|
|
12
|
+
|
|
13
|
+
function formatMs(value: number): string {
|
|
14
|
+
return `${value.toFixed(1)}ms`;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function sortMetrics(metrics: PerformanceMetric[]): PerformanceMetric[] {
|
|
18
|
+
return [...metrics].sort((a, b) => a.startTime - b.startTime);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function renderTimeline(metric: PerformanceMetric, total: number): string {
|
|
22
|
+
if (TIMELINE_WIDTH <= 0) {
|
|
23
|
+
return "||";
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const cells = Array(TIMELINE_WIDTH).fill(".");
|
|
27
|
+
|
|
28
|
+
if (!(total > 0)) {
|
|
29
|
+
cells[0] = "#";
|
|
30
|
+
return `|${cells.join("")}|`;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const start = Math.max(0, metric.startTime);
|
|
34
|
+
const end = Math.max(start, metric.startTime + metric.duration);
|
|
35
|
+
const startColumn = Math.min(
|
|
36
|
+
TIMELINE_WIDTH - 1,
|
|
37
|
+
Math.floor((start / total) * TIMELINE_WIDTH),
|
|
38
|
+
);
|
|
39
|
+
const endColumn = Math.max(
|
|
40
|
+
startColumn + 1,
|
|
41
|
+
Math.min(
|
|
42
|
+
TIMELINE_WIDTH,
|
|
43
|
+
Math.ceil((Math.min(total, end) / total) * TIMELINE_WIDTH),
|
|
44
|
+
),
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
cells.fill("#", startColumn, endColumn);
|
|
48
|
+
return `|${cells.join("")}|`;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function createTimelineAxis(total: number): string {
|
|
52
|
+
const totalLabel = formatMs(total);
|
|
53
|
+
return `0ms${" ".repeat(
|
|
54
|
+
Math.max(1, TIMELINE_WIDTH - "0ms".length - totalLabel.length),
|
|
55
|
+
)}${totalLabel}`;
|
|
56
|
+
}
|
|
8
57
|
|
|
9
58
|
/**
|
|
10
59
|
* Create a metrics store for the request if debugPerformance is enabled
|
|
@@ -21,7 +70,8 @@ export function createMetricsStore(
|
|
|
21
70
|
}
|
|
22
71
|
|
|
23
72
|
/**
|
|
24
|
-
* Log metrics to console in a formatted way
|
|
73
|
+
* Log metrics to console in a formatted way.
|
|
74
|
+
* Uses a shared-axis timeline so overlapping work stays visible.
|
|
25
75
|
*/
|
|
26
76
|
export function logMetrics(
|
|
27
77
|
method: string,
|
|
@@ -30,32 +80,62 @@ export function logMetrics(
|
|
|
30
80
|
): void {
|
|
31
81
|
const total = performance.now() - metricsStore.requestStart;
|
|
32
82
|
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
83
|
+
const sorted = sortMetrics(metricsStore.metrics);
|
|
84
|
+
const labels = sorted.map(
|
|
85
|
+
(m) =>
|
|
86
|
+
`${" ".repeat(BASE_INDENT + (m.depth ?? 0) * DEPTH_INDENT)}${m.label}`,
|
|
87
|
+
);
|
|
88
|
+
const startValues = sorted.map((m) => formatMs(m.startTime));
|
|
89
|
+
const durationValues = sorted.map((m) => formatMs(m.duration));
|
|
90
|
+
const startWidth = Math.max(
|
|
91
|
+
"start".length,
|
|
92
|
+
...startValues.map((v) => v.length),
|
|
93
|
+
);
|
|
94
|
+
const durationWidth = Math.max(
|
|
95
|
+
"dur".length,
|
|
96
|
+
...durationValues.map((v) => v.length),
|
|
97
|
+
);
|
|
98
|
+
const spanWidth = Math.max(
|
|
99
|
+
"span".length,
|
|
100
|
+
...labels.map((label) => label.length),
|
|
101
|
+
22,
|
|
102
|
+
);
|
|
103
|
+
const timelinePadding = " ".repeat(
|
|
104
|
+
startWidth + 2 + durationWidth + 2 + spanWidth + 2,
|
|
37
105
|
);
|
|
38
106
|
|
|
39
107
|
console.log(`[RSC Perf] ${method} ${pathname} (${total.toFixed(1)}ms)`);
|
|
108
|
+
console.log(
|
|
109
|
+
`${"start".padStart(startWidth)} ${"dur".padStart(durationWidth)} ${"span".padEnd(spanWidth)} timeline`,
|
|
110
|
+
);
|
|
111
|
+
console.log(`${timelinePadding}${createTimelineAxis(total)}`);
|
|
112
|
+
|
|
113
|
+
for (let index = 0; index < sorted.length; index++) {
|
|
114
|
+
const metric = sorted[index];
|
|
115
|
+
const label = labels[index].padEnd(spanWidth);
|
|
116
|
+
const start = formatMs(metric.startTime).padStart(startWidth);
|
|
117
|
+
const duration = formatMs(metric.duration).padStart(durationWidth);
|
|
40
118
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
119
|
+
console.log(
|
|
120
|
+
`${start} ${duration} ${label} ${renderTimeline(metric, total)}`,
|
|
121
|
+
);
|
|
44
122
|
}
|
|
45
123
|
}
|
|
46
124
|
|
|
47
125
|
/**
|
|
48
126
|
* Generate Server-Timing header value from metrics
|
|
49
127
|
* Format: metric-name;dur=X.XX
|
|
128
|
+
* Depth is encoded as a "d{N}-" prefix for nested metrics.
|
|
50
129
|
*/
|
|
51
130
|
export function generateServerTiming(metricsStore: MetricsStore): string {
|
|
52
131
|
return metricsStore.metrics
|
|
53
132
|
.map((m) => {
|
|
54
133
|
// Convert label to valid Server-Timing name (alphanumeric and hyphens)
|
|
55
|
-
const
|
|
134
|
+
const base = m.label
|
|
56
135
|
.replace(/:/g, "-")
|
|
57
136
|
.replace(/[^a-zA-Z0-9-]/g, "")
|
|
58
137
|
.toLowerCase();
|
|
138
|
+
const name = m.depth ? `d${m.depth}-${base}` : base;
|
|
59
139
|
return `${name};dur=${m.duration.toFixed(2)}`;
|
|
60
140
|
})
|
|
61
141
|
.join(", ");
|
|
@@ -100,6 +100,18 @@ export interface MiddlewareContext<
|
|
|
100
100
|
*/
|
|
101
101
|
routeName?: DefaultRouteName;
|
|
102
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Enable performance metrics for this request.
|
|
105
|
+
* When called, granular timing breakdown is logged to console and
|
|
106
|
+
* included in the Server-Timing response header, regardless of the
|
|
107
|
+
* router-level `debugPerformance` option.
|
|
108
|
+
*
|
|
109
|
+
* Must be called **before** `await next()` — the metrics store is
|
|
110
|
+
* created at the start of route matching inside `next()`, so calling
|
|
111
|
+
* this after `next()` returns has no effect.
|
|
112
|
+
*/
|
|
113
|
+
debugPerformance(): void;
|
|
114
|
+
|
|
103
115
|
/**
|
|
104
116
|
* Generate URLs from route names.
|
|
105
117
|
* - `name` — global route, from the named-routes definition
|
package/src/router/middleware.ts
CHANGED
|
@@ -227,6 +227,13 @@ export function createMiddlewareContext<TEnv>(
|
|
|
227
227
|
`ctx.reverse() is not available - route map was not provided to middleware context`,
|
|
228
228
|
);
|
|
229
229
|
}),
|
|
230
|
+
|
|
231
|
+
debugPerformance(): void {
|
|
232
|
+
const reqCtx = _getRequestContext();
|
|
233
|
+
if (reqCtx) {
|
|
234
|
+
reqCtx._debugPerformance = true;
|
|
235
|
+
}
|
|
236
|
+
},
|
|
230
237
|
};
|
|
231
238
|
}
|
|
232
239
|
|
|
@@ -309,14 +316,21 @@ export async function executeMiddleware<TEnv>(
|
|
|
309
316
|
}
|
|
310
317
|
});
|
|
311
318
|
// Also merge shared RequestContext stub (cookies written via cookies().set()).
|
|
312
|
-
// Set-Cookie
|
|
313
|
-
//
|
|
319
|
+
// Dedup Set-Cookie: an inner executeMiddleware (route-level middleware)
|
|
320
|
+
// may have already merged the same reqCtx cookies into the response.
|
|
314
321
|
const reqCtx = _getRequestContext();
|
|
315
322
|
if (reqCtx) {
|
|
323
|
+
const stubCookies = reqCtx.res.headers.getSetCookie();
|
|
324
|
+
if (stubCookies.length > 0) {
|
|
325
|
+
const existing = new Set(mergedHeaders.getSetCookie());
|
|
326
|
+
for (const cookie of stubCookies) {
|
|
327
|
+
if (!existing.has(cookie)) {
|
|
328
|
+
mergedHeaders.append("set-cookie", cookie);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
316
332
|
reqCtx.res.headers.forEach((value, name) => {
|
|
317
|
-
if (name
|
|
318
|
-
mergedHeaders.append(name, value);
|
|
319
|
-
} else if (!mergedHeaders.has(name)) {
|
|
333
|
+
if (name !== "set-cookie" && !mergedHeaders.has(name)) {
|
|
320
334
|
mergedHeaders.set(name, value);
|
|
321
335
|
}
|
|
322
336
|
});
|
|
@@ -391,13 +405,22 @@ export async function executeMiddleware<TEnv>(
|
|
|
391
405
|
mergedHeaders.set(name, value);
|
|
392
406
|
}
|
|
393
407
|
});
|
|
394
|
-
// Also merge shared RequestContext stub (cookies written via setCookie)
|
|
408
|
+
// Also merge shared RequestContext stub (cookies written via setCookie).
|
|
409
|
+
// Dedup Set-Cookie: an inner executeMiddleware (route-level middleware)
|
|
410
|
+
// may have already merged the same reqCtx cookies into the response.
|
|
395
411
|
const reqCtx = _getRequestContext();
|
|
396
412
|
if (reqCtx) {
|
|
413
|
+
const stubCookies = reqCtx.res.headers.getSetCookie();
|
|
414
|
+
if (stubCookies.length > 0) {
|
|
415
|
+
const existing = new Set(mergedHeaders.getSetCookie());
|
|
416
|
+
for (const cookie of stubCookies) {
|
|
417
|
+
if (!existing.has(cookie)) {
|
|
418
|
+
mergedHeaders.append("set-cookie", cookie);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
397
422
|
reqCtx.res.headers.forEach((value, name) => {
|
|
398
|
-
if (name
|
|
399
|
-
mergedHeaders.append(name, value);
|
|
400
|
-
} else if (!mergedHeaders.has(name)) {
|
|
423
|
+
if (name !== "set-cookie" && !mergedHeaders.has(name)) {
|
|
401
424
|
mergedHeaders.set(name, value);
|
|
402
425
|
}
|
|
403
426
|
});
|
|
@@ -459,6 +482,29 @@ export async function executeMiddleware<TEnv>(
|
|
|
459
482
|
throw new Error("No response generated by middleware chain");
|
|
460
483
|
}
|
|
461
484
|
|
|
485
|
+
// Final re-merge: capture any RequestContext stub headers added after the
|
|
486
|
+
// last merge point (e.g. cookies().set() called after await next()).
|
|
487
|
+
// The reqCtx stub may have already been partially merged during finalHandler
|
|
488
|
+
// or early-return paths; only append *new* Set-Cookie entries to avoid dupes.
|
|
489
|
+
const reqCtx = _getRequestContext();
|
|
490
|
+
if (reqCtx) {
|
|
491
|
+
const stubCookies = reqCtx.res.headers.getSetCookie();
|
|
492
|
+
if (stubCookies.length > 0) {
|
|
493
|
+
const existingCookies = new Set(finalResponse.headers.getSetCookie());
|
|
494
|
+
for (const cookie of stubCookies) {
|
|
495
|
+
if (!existingCookies.has(cookie)) {
|
|
496
|
+
finalResponse.headers.append("set-cookie", cookie);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
// Fill in non-cookie headers that aren't already on the response
|
|
501
|
+
reqCtx.res.headers.forEach((value, name) => {
|
|
502
|
+
if (name !== "set-cookie" && !finalResponse.headers.has(name)) {
|
|
503
|
+
finalResponse.headers.set(name, value);
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
|
|
462
508
|
return finalResponse;
|
|
463
509
|
}
|
|
464
510
|
|
|
@@ -239,7 +239,7 @@ export interface RSCRouterOptions<TEnv = any> {
|
|
|
239
239
|
*
|
|
240
240
|
* @example Static config
|
|
241
241
|
* ```typescript
|
|
242
|
-
* import { MemorySegmentCacheStore } from "
|
|
242
|
+
* import { MemorySegmentCacheStore } from "@rangojs/router/cache";
|
|
243
243
|
*
|
|
244
244
|
* const router = createRouter({
|
|
245
245
|
* cache: {
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
} from "./helpers.js";
|
|
25
25
|
import { getRouterContext } from "../router-context.js";
|
|
26
26
|
import { resolveSink, safeEmit } from "../telemetry.js";
|
|
27
|
+
import { track } from "../../server/context.js";
|
|
27
28
|
|
|
28
29
|
// ---------------------------------------------------------------------------
|
|
29
30
|
// Streamed handler telemetry
|
|
@@ -178,7 +179,9 @@ export async function resolveSegment<TEnv>(
|
|
|
178
179
|
(context as InternalHandlerContext<any, TEnv>)._currentSegmentId =
|
|
179
180
|
entry.shortCode;
|
|
180
181
|
|
|
182
|
+
const doneLayoutHandler = track(`handler:${entry.id}`, 2);
|
|
181
183
|
const component = await resolveLayoutComponent(entry, context);
|
|
184
|
+
doneLayoutHandler();
|
|
182
185
|
|
|
183
186
|
segments.push({
|
|
184
187
|
id: entry.shortCode,
|
|
@@ -241,9 +244,11 @@ export async function resolveSegment<TEnv>(
|
|
|
241
244
|
entry.shortCode,
|
|
242
245
|
);
|
|
243
246
|
if (component === undefined) {
|
|
247
|
+
const doneRouteHandler = track(`handler:${entry.id}`, 2);
|
|
244
248
|
if (entry.loading) {
|
|
245
249
|
const result = handleHandlerResult(entry.handler(context));
|
|
246
250
|
if (result instanceof Promise) {
|
|
251
|
+
result.finally(doneRouteHandler).catch(() => {});
|
|
247
252
|
const tracked = deps.trackHandler(result, {
|
|
248
253
|
segmentId: entry.shortCode,
|
|
249
254
|
segmentType: entry.type,
|
|
@@ -258,10 +263,12 @@ export async function resolveSegment<TEnv>(
|
|
|
258
263
|
);
|
|
259
264
|
component = tracked;
|
|
260
265
|
} else {
|
|
266
|
+
doneRouteHandler();
|
|
261
267
|
component = result;
|
|
262
268
|
}
|
|
263
269
|
} else {
|
|
264
270
|
component = handleHandlerResult(await entry.handler(context));
|
|
271
|
+
doneRouteHandler();
|
|
265
272
|
}
|
|
266
273
|
}
|
|
267
274
|
|
|
@@ -343,7 +350,9 @@ export async function resolveOrphanLayout<TEnv>(
|
|
|
343
350
|
|
|
344
351
|
// Handler-first: orphan layout handler executes before its parallels
|
|
345
352
|
// so that ctx.set() values are visible to parallel children.
|
|
353
|
+
const doneOrphanHandler = track(`handler:${orphan.id}`, 2);
|
|
346
354
|
const component = await resolveLayoutComponent(orphan, context);
|
|
355
|
+
doneOrphanHandler();
|
|
347
356
|
|
|
348
357
|
segments.push({
|
|
349
358
|
id: orphan.shortCode,
|
|
@@ -410,12 +419,17 @@ export async function resolveParallelEntry<TEnv>(
|
|
|
410
419
|
);
|
|
411
420
|
|
|
412
421
|
if (component === undefined) {
|
|
422
|
+
const doneParallelHandler = track(
|
|
423
|
+
`handler:${parallelEntry.id}.${slot}`,
|
|
424
|
+
2,
|
|
425
|
+
);
|
|
413
426
|
const hasLoadingFallback =
|
|
414
427
|
parallelEntry.loading !== undefined && parallelEntry.loading !== false;
|
|
415
428
|
if (hasLoadingFallback) {
|
|
416
429
|
const result =
|
|
417
430
|
typeof handler === "function" ? handler(context) : handler;
|
|
418
431
|
if (result instanceof Promise) {
|
|
432
|
+
result.finally(doneParallelHandler).catch(() => {});
|
|
419
433
|
const tracked = deps.trackHandler(result, {
|
|
420
434
|
segmentId: `${parentShortCode}.${slot}`,
|
|
421
435
|
segmentType: "parallel",
|
|
@@ -430,11 +444,13 @@ export async function resolveParallelEntry<TEnv>(
|
|
|
430
444
|
);
|
|
431
445
|
component = tracked as ReactNode;
|
|
432
446
|
} else {
|
|
447
|
+
doneParallelHandler();
|
|
433
448
|
component = result as ReactNode;
|
|
434
449
|
}
|
|
435
450
|
} else {
|
|
436
451
|
component =
|
|
437
452
|
typeof handler === "function" ? await handler(context) : handler;
|
|
453
|
+
doneParallelHandler();
|
|
438
454
|
}
|
|
439
455
|
}
|
|
440
456
|
|
|
@@ -499,6 +515,7 @@ export async function resolveAllSegments<TEnv>(
|
|
|
499
515
|
} catch {}
|
|
500
516
|
|
|
501
517
|
for (const entry of entries) {
|
|
518
|
+
const doneEntry = track(`segment:${entry.id}`, 1);
|
|
502
519
|
const resolvedSegments = await resolveWithErrorBoundary(
|
|
503
520
|
entry,
|
|
504
521
|
params,
|
|
@@ -518,6 +535,7 @@ export async function resolveAllSegments<TEnv>(
|
|
|
518
535
|
{ request: safeRequest, url: context.url, routeKey, telemetry },
|
|
519
536
|
context.pathname,
|
|
520
537
|
);
|
|
538
|
+
doneEntry();
|
|
521
539
|
// Deduplicate by segment ID. include() scopes can produce entries that
|
|
522
540
|
// resolve the same shared layout/loader segment. Duplicates in the segment
|
|
523
541
|
// array propagate to the client's matched[] and change the React tree depth.
|
|
@@ -37,6 +37,7 @@ import {
|
|
|
37
37
|
} from "./helpers.js";
|
|
38
38
|
import { getRouterContext } from "../router-context.js";
|
|
39
39
|
import { resolveSink, safeEmit } from "../telemetry.js";
|
|
40
|
+
import { track } from "../../server/context.js";
|
|
40
41
|
|
|
41
42
|
// ---------------------------------------------------------------------------
|
|
42
43
|
// Telemetry helpers
|
|
@@ -621,20 +622,29 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
|
|
|
621
622
|
return shouldRevalidate;
|
|
622
623
|
},
|
|
623
624
|
async () => {
|
|
625
|
+
const doneHandler = track(`handler:${entry.id}`, 2);
|
|
624
626
|
(context as InternalHandlerContext<any, TEnv>)._currentSegmentId =
|
|
625
627
|
entry.shortCode;
|
|
626
628
|
if (entry.type === "layout" || entry.type === "cache") {
|
|
627
|
-
|
|
629
|
+
const layoutComponent = await resolveLayoutComponent(entry, context);
|
|
630
|
+
doneHandler();
|
|
631
|
+
return layoutComponent;
|
|
628
632
|
}
|
|
629
633
|
const staticComponent = await tryStaticHandler(entry, entry.shortCode);
|
|
630
|
-
if (staticComponent !== undefined)
|
|
634
|
+
if (staticComponent !== undefined) {
|
|
635
|
+
doneHandler();
|
|
636
|
+
return staticComponent;
|
|
637
|
+
}
|
|
631
638
|
const routeEntry = entry as Extract<EntryData, { type: "route" }>;
|
|
632
639
|
if (!routeEntry.loading) {
|
|
633
|
-
|
|
640
|
+
const result = handleHandlerResult(await routeEntry.handler(context));
|
|
641
|
+
doneHandler();
|
|
642
|
+
return result;
|
|
634
643
|
}
|
|
635
644
|
if (!actionContext) {
|
|
636
645
|
const result = handleHandlerResult(routeEntry.handler(context));
|
|
637
646
|
if (result instanceof Promise) {
|
|
647
|
+
result.finally(doneHandler).catch(() => {});
|
|
638
648
|
const tracked = deps.trackHandler(result, {
|
|
639
649
|
segmentId: entry.shortCode,
|
|
640
650
|
segmentType: entry.type,
|
|
@@ -649,15 +659,18 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
|
|
|
649
659
|
);
|
|
650
660
|
return { content: tracked };
|
|
651
661
|
}
|
|
662
|
+
doneHandler();
|
|
652
663
|
return { content: result };
|
|
653
664
|
}
|
|
654
665
|
debugLog("segment.action", "resolving action route with awaited value", {
|
|
655
666
|
entryId: entry.id,
|
|
656
667
|
});
|
|
668
|
+
const actionResult = handleHandlerResult(
|
|
669
|
+
await routeEntry.handler(context),
|
|
670
|
+
);
|
|
671
|
+
doneHandler();
|
|
657
672
|
return {
|
|
658
|
-
content: Promise.resolve(
|
|
659
|
-
handleHandlerResult(await routeEntry.handler(context)),
|
|
660
|
-
),
|
|
673
|
+
content: Promise.resolve(actionResult),
|
|
661
674
|
};
|
|
662
675
|
},
|
|
663
676
|
() => null,
|
|
@@ -1178,6 +1191,7 @@ export async function resolveAllSegmentsWithRevalidation<TEnv>(
|
|
|
1178
1191
|
}
|
|
1179
1192
|
|
|
1180
1193
|
const nonParallelEntry = entry as Exclude<EntryData, { type: "parallel" }>;
|
|
1194
|
+
const doneEntry = track(`segment:${entry.id}`, 1);
|
|
1181
1195
|
const resolved = await resolveWithErrorBoundary(
|
|
1182
1196
|
nonParallelEntry,
|
|
1183
1197
|
params,
|
|
@@ -1204,6 +1218,7 @@ export async function resolveAllSegmentsWithRevalidation<TEnv>(
|
|
|
1204
1218
|
: undefined,
|
|
1205
1219
|
pathname,
|
|
1206
1220
|
);
|
|
1221
|
+
doneEntry();
|
|
1207
1222
|
|
|
1208
1223
|
// Deduplicate segments and matchedIds by ID, matching resolveAllSegments.
|
|
1209
1224
|
// include() scopes can produce entries that resolve the same shared
|
package/src/router.ts
CHANGED
|
@@ -357,8 +357,12 @@ export function createRouter<TEnv = any>(
|
|
|
357
357
|
return precomputedByPrefix;
|
|
358
358
|
}
|
|
359
359
|
|
|
360
|
-
// Wrapper to pass debugPerformance to external createMetricsStore
|
|
361
|
-
|
|
360
|
+
// Wrapper to pass debugPerformance to external createMetricsStore.
|
|
361
|
+
// Also checks per-request flag set by ctx.debugPerformance() in middleware.
|
|
362
|
+
const getMetricsStore = () =>
|
|
363
|
+
createMetricsStore(
|
|
364
|
+
debugPerformance || !!_getRequestContext()?._debugPerformance,
|
|
365
|
+
);
|
|
362
366
|
|
|
363
367
|
// Wrapper to pass defaults to error/notFound boundary finders
|
|
364
368
|
const findNearestErrorBoundary = (entry: EntryData | null) =>
|
package/src/rsc/index.ts
CHANGED
|
@@ -29,28 +29,8 @@ export type {
|
|
|
29
29
|
NonceProvider,
|
|
30
30
|
} from "./types.js";
|
|
31
31
|
|
|
32
|
-
// Re-export HandleStore types for consumers who need custom handling
|
|
33
|
-
export {
|
|
34
|
-
createHandleStore,
|
|
35
|
-
type HandleStore,
|
|
36
|
-
type HandleData,
|
|
37
|
-
} from "../server/handle-store.js";
|
|
38
|
-
|
|
39
32
|
// Re-export request context utilities for server-side access to env/request/params
|
|
40
33
|
export {
|
|
41
34
|
getRequestContext,
|
|
42
35
|
requireRequestContext,
|
|
43
|
-
setRequestContextParams,
|
|
44
36
|
} from "../server/request-context.js";
|
|
45
|
-
|
|
46
|
-
// Re-export cache store types and implementations
|
|
47
|
-
export type {
|
|
48
|
-
SegmentCacheStore,
|
|
49
|
-
CachedEntryData,
|
|
50
|
-
CachedEntryResult,
|
|
51
|
-
SegmentCacheProvider,
|
|
52
|
-
SegmentHandleData,
|
|
53
|
-
} from "../cache/types.js";
|
|
54
|
-
|
|
55
|
-
export { MemorySegmentCacheStore } from "../cache/memory-segment-store.js";
|
|
56
|
-
export { CFCacheStore, type CFCacheStoreOptions } from "../cache/cf/index.js";
|