@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
|
@@ -1,627 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi } from "vitest";
|
|
2
|
-
import { createElement } from "react";
|
|
3
|
-
// Sentinel components for identification in the element tree
|
|
4
|
-
function MockOutletProvider(props) {
|
|
5
|
-
return props.children;
|
|
6
|
-
}
|
|
7
|
-
function MockLoaderBoundary(props) {
|
|
8
|
-
return props.children;
|
|
9
|
-
}
|
|
10
|
-
function MockRouteContentWrapper(props) {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
function MockMountContextProvider(props) {
|
|
14
|
-
return props.children;
|
|
15
|
-
}
|
|
16
|
-
function MockRootErrorBoundary(props) {
|
|
17
|
-
return props.children;
|
|
18
|
-
}
|
|
19
|
-
vi.mock("../client.js", () => ({
|
|
20
|
-
OutletProvider: MockOutletProvider,
|
|
21
|
-
}));
|
|
22
|
-
vi.mock("../browser/react/mount-context.js", () => ({
|
|
23
|
-
MountContextProvider: MockMountContextProvider,
|
|
24
|
-
}));
|
|
25
|
-
vi.mock("../route-content-wrapper.js", () => ({
|
|
26
|
-
RouteContentWrapper: MockRouteContentWrapper,
|
|
27
|
-
LoaderBoundary: MockLoaderBoundary,
|
|
28
|
-
}));
|
|
29
|
-
vi.mock("../root-error-boundary.js", () => ({
|
|
30
|
-
RootErrorBoundary: MockRootErrorBoundary,
|
|
31
|
-
}));
|
|
32
|
-
import { renderSegments } from "../segment-system";
|
|
33
|
-
// Helper to create a minimal segment
|
|
34
|
-
function seg(overrides) {
|
|
35
|
-
return {
|
|
36
|
-
namespace: "",
|
|
37
|
-
index: 0,
|
|
38
|
-
component: createElement("div", null, `component-${overrides.id}`),
|
|
39
|
-
...overrides,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
function toTreeNode(node) {
|
|
43
|
-
if (!node || typeof node !== "object")
|
|
44
|
-
return null;
|
|
45
|
-
const el = node;
|
|
46
|
-
if (!el.type)
|
|
47
|
-
return null;
|
|
48
|
-
const typeName = typeof el.type === "string"
|
|
49
|
-
? el.type
|
|
50
|
-
: el.type.name || "Anonymous";
|
|
51
|
-
const children = [];
|
|
52
|
-
// Walk both `children` and `content` props since layouts pass inner
|
|
53
|
-
// content via the `content` prop to OutletProvider
|
|
54
|
-
for (const prop of ["children", "content"]) {
|
|
55
|
-
const val = el.props?.[prop];
|
|
56
|
-
if (!val)
|
|
57
|
-
continue;
|
|
58
|
-
if (Array.isArray(val)) {
|
|
59
|
-
for (const child of val) {
|
|
60
|
-
const n = toTreeNode(child);
|
|
61
|
-
if (n)
|
|
62
|
-
children.push(n);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
const n = toTreeNode(val);
|
|
67
|
-
if (n)
|
|
68
|
-
children.push(n);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return { type: el.type, typeName, props: el.props || {}, children };
|
|
72
|
-
}
|
|
73
|
-
// Find all nodes matching a component type in the tree
|
|
74
|
-
function findAll(tree, fn) {
|
|
75
|
-
if (!tree)
|
|
76
|
-
return [];
|
|
77
|
-
const results = [];
|
|
78
|
-
if (tree.type === fn)
|
|
79
|
-
results.push(tree);
|
|
80
|
-
for (const child of tree.children) {
|
|
81
|
-
results.push(...findAll(child, fn));
|
|
82
|
-
}
|
|
83
|
-
return results;
|
|
84
|
-
}
|
|
85
|
-
// Find first node matching a component type
|
|
86
|
-
function findFirst(tree, fn) {
|
|
87
|
-
if (!tree)
|
|
88
|
-
return null;
|
|
89
|
-
if (tree.type === fn)
|
|
90
|
-
return tree;
|
|
91
|
-
for (const child of tree.children) {
|
|
92
|
-
const found = findFirst(child, fn);
|
|
93
|
-
if (found)
|
|
94
|
-
return found;
|
|
95
|
-
}
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
// Collect all nodes of a type in order (depth-first)
|
|
99
|
-
function collectByType(tree, fn) {
|
|
100
|
-
return findAll(tree, fn);
|
|
101
|
-
}
|
|
102
|
-
describe("segment-system", () => {
|
|
103
|
-
describe("renderSegments", () => {
|
|
104
|
-
describe("basic tree structure", () => {
|
|
105
|
-
it("renders a single route segment with OutletProvider", async () => {
|
|
106
|
-
const segments = [
|
|
107
|
-
seg({ id: "R0", type: "route" }),
|
|
108
|
-
];
|
|
109
|
-
const result = await renderSegments(segments);
|
|
110
|
-
const tree = toTreeNode(result);
|
|
111
|
-
// Root is RootErrorBoundary
|
|
112
|
-
expect(tree.type).toBe(MockRootErrorBoundary);
|
|
113
|
-
// Inside is an OutletProvider for the route
|
|
114
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
115
|
-
expect(outlets).toHaveLength(1);
|
|
116
|
-
expect(outlets[0].props.segment.id).toBe("R0");
|
|
117
|
-
expect(outlets[0].props.content).toBeNull(); // route has no outlet content
|
|
118
|
-
});
|
|
119
|
-
it("nests layout around route (layout receives route as outlet content)", async () => {
|
|
120
|
-
const segments = [
|
|
121
|
-
seg({ id: "L0", type: "layout" }),
|
|
122
|
-
seg({ id: "L0R0", type: "route" }),
|
|
123
|
-
];
|
|
124
|
-
const result = await renderSegments(segments);
|
|
125
|
-
const tree = toTreeNode(result);
|
|
126
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
127
|
-
// Two OutletProviders
|
|
128
|
-
expect(outlets).toHaveLength(2);
|
|
129
|
-
// Outer (layout) wraps inner (route)
|
|
130
|
-
// The outermost outlet should be the layout
|
|
131
|
-
const outerOutlet = outlets[0];
|
|
132
|
-
expect(outerOutlet.props.segment.id).toBe("L0");
|
|
133
|
-
// Layout's content prop is the route's OutletProvider
|
|
134
|
-
expect(outerOutlet.props.content).not.toBeNull();
|
|
135
|
-
});
|
|
136
|
-
it("nests multiple layouts (root -> inner -> route)", async () => {
|
|
137
|
-
const segments = [
|
|
138
|
-
seg({ id: "L0", type: "layout" }),
|
|
139
|
-
seg({ id: "L0L0", type: "layout" }),
|
|
140
|
-
seg({ id: "L0L0R0", type: "route" }),
|
|
141
|
-
];
|
|
142
|
-
const result = await renderSegments(segments);
|
|
143
|
-
const tree = toTreeNode(result);
|
|
144
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
145
|
-
expect(outlets).toHaveLength(3);
|
|
146
|
-
// Outermost is root layout L0
|
|
147
|
-
expect(outlets[0].props.segment.id).toBe("L0");
|
|
148
|
-
});
|
|
149
|
-
it("always wraps with RootErrorBoundary", async () => {
|
|
150
|
-
const segments = [
|
|
151
|
-
seg({ id: "R0", type: "route" }),
|
|
152
|
-
];
|
|
153
|
-
const result = await renderSegments(segments);
|
|
154
|
-
const tree = toTreeNode(result);
|
|
155
|
-
expect(tree.type).toBe(MockRootErrorBoundary);
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
describe("tree structure based on loading property", () => {
|
|
159
|
-
it("uses OutletProvider directly when loading is undefined", async () => {
|
|
160
|
-
const segments = [
|
|
161
|
-
seg({ id: "R0", type: "route", loading: undefined }),
|
|
162
|
-
];
|
|
163
|
-
const result = await renderSegments(segments);
|
|
164
|
-
const tree = toTreeNode(result);
|
|
165
|
-
expect(collectByType(tree, MockOutletProvider)).toHaveLength(1);
|
|
166
|
-
expect(collectByType(tree, MockLoaderBoundary)).toHaveLength(0);
|
|
167
|
-
expect(collectByType(tree, MockRouteContentWrapper)).toHaveLength(0);
|
|
168
|
-
});
|
|
169
|
-
it("uses OutletProvider directly when loading is null", async () => {
|
|
170
|
-
const segments = [
|
|
171
|
-
seg({ id: "R0", type: "route", loading: null }),
|
|
172
|
-
];
|
|
173
|
-
const result = await renderSegments(segments);
|
|
174
|
-
const tree = toTreeNode(result);
|
|
175
|
-
expect(collectByType(tree, MockOutletProvider)).toHaveLength(1);
|
|
176
|
-
expect(collectByType(tree, MockLoaderBoundary)).toHaveLength(0);
|
|
177
|
-
});
|
|
178
|
-
it("uses LoaderBoundary when loading is false (defined but falsy)", async () => {
|
|
179
|
-
const segments = [
|
|
180
|
-
seg({ id: "R0", type: "route", loading: false }),
|
|
181
|
-
];
|
|
182
|
-
const result = await renderSegments(segments);
|
|
183
|
-
const tree = toTreeNode(result);
|
|
184
|
-
// loading is false: not null, not undefined, so enters LoaderBoundary path
|
|
185
|
-
expect(collectByType(tree, MockLoaderBoundary)).toHaveLength(1);
|
|
186
|
-
});
|
|
187
|
-
it("uses LoaderBoundary + RouteContentWrapper when loading is a ReactNode", async () => {
|
|
188
|
-
const loadingSkeleton = createElement("div", null, "Loading...");
|
|
189
|
-
const segments = [
|
|
190
|
-
seg({ id: "R0", type: "route", loading: loadingSkeleton }),
|
|
191
|
-
];
|
|
192
|
-
const result = await renderSegments(segments);
|
|
193
|
-
const tree = toTreeNode(result);
|
|
194
|
-
expect(collectByType(tree, MockLoaderBoundary)).toHaveLength(1);
|
|
195
|
-
// RouteContentWrapper used as the children of LoaderBoundary
|
|
196
|
-
expect(collectByType(tree, MockRouteContentWrapper)).toHaveLength(1);
|
|
197
|
-
});
|
|
198
|
-
it("uses OutletProvider with awaited data when loaders exist but no loading", async () => {
|
|
199
|
-
const segments = [
|
|
200
|
-
seg({ id: "R0", type: "route" }),
|
|
201
|
-
seg({
|
|
202
|
-
id: "R0D0.data",
|
|
203
|
-
type: "loader",
|
|
204
|
-
loaderId: "my-loader",
|
|
205
|
-
loaderData: { value: 42 },
|
|
206
|
-
}),
|
|
207
|
-
];
|
|
208
|
-
const result = await renderSegments(segments);
|
|
209
|
-
const tree = toTreeNode(result);
|
|
210
|
-
// No LoaderBoundary because loading is undefined
|
|
211
|
-
expect(collectByType(tree, MockLoaderBoundary)).toHaveLength(0);
|
|
212
|
-
// Uses OutletProvider with loaderData injected
|
|
213
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
214
|
-
expect(outlets).toHaveLength(1);
|
|
215
|
-
expect(outlets[0].props.loaderData).toEqual({ "my-loader": { value: 42 } });
|
|
216
|
-
});
|
|
217
|
-
});
|
|
218
|
-
describe("key generation", () => {
|
|
219
|
-
it("uses segment ID as key when no params", async () => {
|
|
220
|
-
const segments = [
|
|
221
|
-
seg({ id: "R0", type: "route" }),
|
|
222
|
-
];
|
|
223
|
-
const result = await renderSegments(segments);
|
|
224
|
-
const tree = toTreeNode(result);
|
|
225
|
-
const outlet = findFirst(tree, MockOutletProvider);
|
|
226
|
-
// Key for route without params is just the ID
|
|
227
|
-
expect(result.props.children.key).toBeDefined();
|
|
228
|
-
});
|
|
229
|
-
it("includes sorted params in key for route segments", async () => {
|
|
230
|
-
const segments = [
|
|
231
|
-
seg({
|
|
232
|
-
id: "R0",
|
|
233
|
-
type: "route",
|
|
234
|
-
params: { slug: "hello", category: "tech" },
|
|
235
|
-
}),
|
|
236
|
-
];
|
|
237
|
-
const result = await renderSegments(segments);
|
|
238
|
-
const tree = toTreeNode(result);
|
|
239
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
240
|
-
// Params are sorted alphabetically in key
|
|
241
|
-
expect(outlets[0].props.segment.params).toEqual({
|
|
242
|
-
slug: "hello",
|
|
243
|
-
category: "tech",
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
it("excludes params from key for non-belongsToRoute layouts", async () => {
|
|
247
|
-
// Layout that is shared (not belongsToRoute) should use just ID as key
|
|
248
|
-
const segments = [
|
|
249
|
-
seg({
|
|
250
|
-
id: "L0",
|
|
251
|
-
type: "layout",
|
|
252
|
-
belongsToRoute: false,
|
|
253
|
-
params: { slug: "hello" },
|
|
254
|
-
}),
|
|
255
|
-
seg({ id: "L0R0", type: "route" }),
|
|
256
|
-
];
|
|
257
|
-
// Should not throw - params are excluded from key for shared layouts
|
|
258
|
-
await renderSegments(segments);
|
|
259
|
-
});
|
|
260
|
-
});
|
|
261
|
-
describe("parallel segment grouping", () => {
|
|
262
|
-
it("attaches parallel segments to correct parent by ID prefix", async () => {
|
|
263
|
-
const segments = [
|
|
264
|
-
seg({ id: "L0", type: "layout" }),
|
|
265
|
-
seg({ id: "L0R0", type: "route" }),
|
|
266
|
-
seg({
|
|
267
|
-
id: "L0.@sidebar",
|
|
268
|
-
type: "parallel",
|
|
269
|
-
slot: "@sidebar",
|
|
270
|
-
}),
|
|
271
|
-
];
|
|
272
|
-
const result = await renderSegments(segments);
|
|
273
|
-
const tree = toTreeNode(result);
|
|
274
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
275
|
-
// Layout L0 should have the parallel segment
|
|
276
|
-
const layoutOutlet = outlets.find((o) => o.props.segment.id === "L0");
|
|
277
|
-
expect(layoutOutlet.props.parallel).toHaveLength(1);
|
|
278
|
-
expect(layoutOutlet.props.parallel[0].slot).toBe("@sidebar");
|
|
279
|
-
// Route should NOT have parallels
|
|
280
|
-
const routeOutlet = outlets.find((o) => o.props.segment.id === "L0R0");
|
|
281
|
-
expect(routeOutlet.props.parallel).toEqual([]);
|
|
282
|
-
});
|
|
283
|
-
it("groups multiple parallels under same parent", async () => {
|
|
284
|
-
const segments = [
|
|
285
|
-
seg({ id: "L0", type: "layout" }),
|
|
286
|
-
seg({ id: "L0R0", type: "route" }),
|
|
287
|
-
seg({ id: "L0.@sidebar", type: "parallel", slot: "@sidebar" }),
|
|
288
|
-
seg({ id: "L0.@modal", type: "parallel", slot: "@modal" }),
|
|
289
|
-
];
|
|
290
|
-
const result = await renderSegments(segments);
|
|
291
|
-
const tree = toTreeNode(result);
|
|
292
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
293
|
-
const layoutOutlet = outlets.find((o) => o.props.segment.id === "L0");
|
|
294
|
-
expect(layoutOutlet.props.parallel).toHaveLength(2);
|
|
295
|
-
expect(layoutOutlet.props.parallel.map((p) => p.slot).sort()).toEqual(["@modal", "@sidebar"]);
|
|
296
|
-
});
|
|
297
|
-
});
|
|
298
|
-
describe("loader segment grouping", () => {
|
|
299
|
-
it("groups loader segments by parent ID and passes data to OutletProvider", async () => {
|
|
300
|
-
const segments = [
|
|
301
|
-
seg({ id: "L0", type: "layout" }),
|
|
302
|
-
seg({ id: "L0R0", type: "route" }),
|
|
303
|
-
seg({
|
|
304
|
-
id: "L0D0.products",
|
|
305
|
-
type: "loader",
|
|
306
|
-
loaderId: "products-loader",
|
|
307
|
-
loaderData: { products: ["a", "b"] },
|
|
308
|
-
}),
|
|
309
|
-
];
|
|
310
|
-
const result = await renderSegments(segments);
|
|
311
|
-
const tree = toTreeNode(result);
|
|
312
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
313
|
-
// Layout L0 gets the loader data (parent of "L0D0.products" is "L0")
|
|
314
|
-
const layoutOutlet = outlets.find((o) => o.props.segment.id === "L0");
|
|
315
|
-
expect(layoutOutlet.props.loaderData).toEqual({
|
|
316
|
-
"products-loader": { products: ["a", "b"] },
|
|
317
|
-
});
|
|
318
|
-
});
|
|
319
|
-
it("resolves LoaderDataResult success wrapper", async () => {
|
|
320
|
-
const segments = [
|
|
321
|
-
seg({ id: "R0", type: "route" }),
|
|
322
|
-
seg({
|
|
323
|
-
id: "R0D0.data",
|
|
324
|
-
type: "loader",
|
|
325
|
-
loaderId: "my-loader",
|
|
326
|
-
loaderData: {
|
|
327
|
-
__loaderResult: true,
|
|
328
|
-
ok: true,
|
|
329
|
-
data: { value: 42 },
|
|
330
|
-
},
|
|
331
|
-
}),
|
|
332
|
-
];
|
|
333
|
-
const result = await renderSegments(segments);
|
|
334
|
-
const tree = toTreeNode(result);
|
|
335
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
336
|
-
// Should unwrap LoaderDataResult to get the inner data
|
|
337
|
-
expect(outlets[0].props.loaderData).toEqual({ "my-loader": { value: 42 } });
|
|
338
|
-
});
|
|
339
|
-
it("renders error fallback for LoaderDataResult with error+fallback", async () => {
|
|
340
|
-
const errorFallback = createElement("div", null, "Error occurred");
|
|
341
|
-
const segments = [
|
|
342
|
-
seg({ id: "R0", type: "route" }),
|
|
343
|
-
seg({
|
|
344
|
-
id: "R0D0.data",
|
|
345
|
-
type: "loader",
|
|
346
|
-
loaderId: "my-loader",
|
|
347
|
-
loaderData: {
|
|
348
|
-
__loaderResult: true,
|
|
349
|
-
ok: false,
|
|
350
|
-
error: { message: "Failed" },
|
|
351
|
-
fallback: errorFallback,
|
|
352
|
-
},
|
|
353
|
-
}),
|
|
354
|
-
];
|
|
355
|
-
const result = await renderSegments(segments);
|
|
356
|
-
const tree = toTreeNode(result);
|
|
357
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
358
|
-
// The OutletProvider children should be the error fallback
|
|
359
|
-
expect(outlets[0].props.children).toBe(errorFallback);
|
|
360
|
-
});
|
|
361
|
-
it("throws for LoaderDataResult with error but no fallback", async () => {
|
|
362
|
-
const segments = [
|
|
363
|
-
seg({ id: "R0", type: "route" }),
|
|
364
|
-
seg({
|
|
365
|
-
id: "R0D0.data",
|
|
366
|
-
type: "loader",
|
|
367
|
-
loaderId: "my-loader",
|
|
368
|
-
loaderData: {
|
|
369
|
-
__loaderResult: true,
|
|
370
|
-
ok: false,
|
|
371
|
-
error: { message: "Loader failed" },
|
|
372
|
-
},
|
|
373
|
-
}),
|
|
374
|
-
];
|
|
375
|
-
await expect(renderSegments(segments)).rejects.toThrow("Loader failed");
|
|
376
|
-
});
|
|
377
|
-
});
|
|
378
|
-
describe("segment ordering", () => {
|
|
379
|
-
it("sorts segments by ID length regardless of input order", async () => {
|
|
380
|
-
// Provide in wrong order
|
|
381
|
-
const segments = [
|
|
382
|
-
seg({ id: "L0L0R0", type: "route" }),
|
|
383
|
-
seg({ id: "L0", type: "layout" }),
|
|
384
|
-
seg({ id: "L0L0", type: "layout" }),
|
|
385
|
-
];
|
|
386
|
-
const result = await renderSegments(segments);
|
|
387
|
-
const tree = toTreeNode(result);
|
|
388
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
389
|
-
expect(outlets).toHaveLength(3);
|
|
390
|
-
// Outermost is root layout (L0)
|
|
391
|
-
expect(outlets[0].props.segment.id).toBe("L0");
|
|
392
|
-
});
|
|
393
|
-
});
|
|
394
|
-
describe("isAction behavior", () => {
|
|
395
|
-
it("awaits component promises when isAction is true", async () => {
|
|
396
|
-
const resolvedComponent = createElement("div", null, "resolved");
|
|
397
|
-
const componentPromise = Promise.resolve(resolvedComponent);
|
|
398
|
-
const segments = [
|
|
399
|
-
seg({ id: "R0", type: "route", component: componentPromise }),
|
|
400
|
-
];
|
|
401
|
-
const result = await renderSegments(segments, { isAction: true });
|
|
402
|
-
const tree = toTreeNode(result);
|
|
403
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
404
|
-
// Component should be resolved, not wrapped in RouteContentWrapper
|
|
405
|
-
expect(outlets).toHaveLength(1);
|
|
406
|
-
expect(collectByType(tree, MockRouteContentWrapper)).toHaveLength(0);
|
|
407
|
-
});
|
|
408
|
-
it("pre-resolves loader promises when isAction is true", async () => {
|
|
409
|
-
const loadingSkeleton = createElement("div", null, "Loading...");
|
|
410
|
-
const segments = [
|
|
411
|
-
seg({ id: "R0", type: "route", loading: loadingSkeleton }),
|
|
412
|
-
seg({
|
|
413
|
-
id: "R0D0.data",
|
|
414
|
-
type: "loader",
|
|
415
|
-
loaderId: "test",
|
|
416
|
-
loaderData: Promise.resolve({ count: 5 }),
|
|
417
|
-
}),
|
|
418
|
-
];
|
|
419
|
-
const result = await renderSegments(segments, { isAction: true });
|
|
420
|
-
const tree = toTreeNode(result);
|
|
421
|
-
const boundaries = collectByType(tree, MockLoaderBoundary);
|
|
422
|
-
expect(boundaries).toHaveLength(1);
|
|
423
|
-
// When isAction, the promise should be pre-resolved to an array
|
|
424
|
-
expect(Array.isArray(boundaries[0].props.loaderDataPromise)).toBe(true);
|
|
425
|
-
});
|
|
426
|
-
});
|
|
427
|
-
describe("forceAwait behavior", () => {
|
|
428
|
-
it("pre-resolves loader promises when forceAwait is true", async () => {
|
|
429
|
-
const loadingSkeleton = createElement("div", null, "Loading...");
|
|
430
|
-
const segments = [
|
|
431
|
-
seg({ id: "R0", type: "route", loading: loadingSkeleton }),
|
|
432
|
-
seg({
|
|
433
|
-
id: "R0D0.data",
|
|
434
|
-
type: "loader",
|
|
435
|
-
loaderId: "test",
|
|
436
|
-
loaderData: Promise.resolve({ count: 5 }),
|
|
437
|
-
}),
|
|
438
|
-
];
|
|
439
|
-
const result = await renderSegments(segments, { forceAwait: true });
|
|
440
|
-
const tree = toTreeNode(result);
|
|
441
|
-
const boundaries = collectByType(tree, MockLoaderBoundary);
|
|
442
|
-
expect(boundaries).toHaveLength(1);
|
|
443
|
-
expect(Array.isArray(boundaries[0].props.loaderDataPromise)).toBe(true);
|
|
444
|
-
});
|
|
445
|
-
});
|
|
446
|
-
describe("intercept segments", () => {
|
|
447
|
-
it("injects intercept parallel segments into parent parallel group", async () => {
|
|
448
|
-
const segments = [
|
|
449
|
-
seg({ id: "L0", type: "layout" }),
|
|
450
|
-
seg({ id: "L0R0", type: "route" }),
|
|
451
|
-
];
|
|
452
|
-
const interceptSegments = [
|
|
453
|
-
seg({
|
|
454
|
-
id: "L0.@modal",
|
|
455
|
-
type: "parallel",
|
|
456
|
-
slot: "@modal",
|
|
457
|
-
}),
|
|
458
|
-
];
|
|
459
|
-
const result = await renderSegments(segments, { interceptSegments });
|
|
460
|
-
const tree = toTreeNode(result);
|
|
461
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
462
|
-
const layoutOutlet = outlets.find((o) => o.props.segment.id === "L0");
|
|
463
|
-
expect(layoutOutlet.props.parallel).toHaveLength(1);
|
|
464
|
-
expect(layoutOutlet.props.parallel[0].slot).toBe("@modal");
|
|
465
|
-
});
|
|
466
|
-
it("injects intercept loader segments into parent loader group", async () => {
|
|
467
|
-
const segments = [
|
|
468
|
-
seg({ id: "L0", type: "layout" }),
|
|
469
|
-
seg({ id: "L0R0", type: "route" }),
|
|
470
|
-
];
|
|
471
|
-
const interceptSegments = [
|
|
472
|
-
seg({
|
|
473
|
-
id: "L0D0.modal-data",
|
|
474
|
-
type: "loader",
|
|
475
|
-
loaderId: "modal-loader",
|
|
476
|
-
loaderData: { modal: true },
|
|
477
|
-
}),
|
|
478
|
-
];
|
|
479
|
-
const result = await renderSegments(segments, { interceptSegments });
|
|
480
|
-
const tree = toTreeNode(result);
|
|
481
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
482
|
-
const layoutOutlet = outlets.find((o) => o.props.segment.id === "L0");
|
|
483
|
-
expect(layoutOutlet.props.loaderData).toEqual({
|
|
484
|
-
"modal-loader": { modal: true },
|
|
485
|
-
});
|
|
486
|
-
});
|
|
487
|
-
});
|
|
488
|
-
describe("rootLayout wrapping", () => {
|
|
489
|
-
it("wraps tree with rootLayout when provided", async () => {
|
|
490
|
-
const RootLayout = ({ children }) => createElement("div", null, children);
|
|
491
|
-
const segments = [
|
|
492
|
-
seg({ id: "R0", type: "route" }),
|
|
493
|
-
];
|
|
494
|
-
const result = await renderSegments(segments, {
|
|
495
|
-
rootLayout: RootLayout,
|
|
496
|
-
});
|
|
497
|
-
const tree = toTreeNode(result);
|
|
498
|
-
// Root should be the RootLayout, not RootErrorBoundary
|
|
499
|
-
expect(tree.type).toBe(RootLayout);
|
|
500
|
-
// RootErrorBoundary should be inside
|
|
501
|
-
const errorBoundary = findFirst(tree, MockRootErrorBoundary);
|
|
502
|
-
expect(errorBoundary).not.toBeNull();
|
|
503
|
-
});
|
|
504
|
-
it("does not wrap with rootLayout when not provided", async () => {
|
|
505
|
-
const segments = [
|
|
506
|
-
seg({ id: "R0", type: "route" }),
|
|
507
|
-
];
|
|
508
|
-
const result = await renderSegments(segments);
|
|
509
|
-
const tree = toTreeNode(result);
|
|
510
|
-
expect(tree.type).toBe(MockRootErrorBoundary);
|
|
511
|
-
});
|
|
512
|
-
});
|
|
513
|
-
describe("MountContextProvider wrapping", () => {
|
|
514
|
-
it("wraps segment with MountContextProvider when mountPath is set", async () => {
|
|
515
|
-
const segments = [
|
|
516
|
-
seg({ id: "R0", type: "route", mountPath: "/shop" }),
|
|
517
|
-
];
|
|
518
|
-
const result = await renderSegments(segments);
|
|
519
|
-
const tree = toTreeNode(result);
|
|
520
|
-
const mounts = collectByType(tree, MockMountContextProvider);
|
|
521
|
-
expect(mounts).toHaveLength(1);
|
|
522
|
-
expect(mounts[0].props.value).toBe("/shop");
|
|
523
|
-
});
|
|
524
|
-
it("does not wrap when mountPath is undefined", async () => {
|
|
525
|
-
const segments = [
|
|
526
|
-
seg({ id: "R0", type: "route" }),
|
|
527
|
-
];
|
|
528
|
-
const result = await renderSegments(segments);
|
|
529
|
-
const tree = toTreeNode(result);
|
|
530
|
-
const mounts = collectByType(tree, MockMountContextProvider);
|
|
531
|
-
expect(mounts).toHaveLength(0);
|
|
532
|
-
});
|
|
533
|
-
it("wraps all segment types with MountContextProvider", async () => {
|
|
534
|
-
const segments = [
|
|
535
|
-
seg({ id: "L0", type: "layout", mountPath: "/shop" }),
|
|
536
|
-
seg({ id: "L0R0", type: "route", mountPath: "/shop" }),
|
|
537
|
-
];
|
|
538
|
-
const result = await renderSegments(segments);
|
|
539
|
-
const tree = toTreeNode(result);
|
|
540
|
-
const mounts = collectByType(tree, MockMountContextProvider);
|
|
541
|
-
expect(mounts).toHaveLength(2);
|
|
542
|
-
});
|
|
543
|
-
});
|
|
544
|
-
describe("error and notFound segments", () => {
|
|
545
|
-
it("renders error segments in the tree", async () => {
|
|
546
|
-
const segments = [
|
|
547
|
-
seg({ id: "L0", type: "layout" }),
|
|
548
|
-
seg({
|
|
549
|
-
id: "L0E0",
|
|
550
|
-
type: "error",
|
|
551
|
-
component: createElement("div", null, "Error fallback"),
|
|
552
|
-
error: {
|
|
553
|
-
name: "Error",
|
|
554
|
-
message: "Something broke",
|
|
555
|
-
segmentId: "R0",
|
|
556
|
-
segmentType: "route",
|
|
557
|
-
},
|
|
558
|
-
}),
|
|
559
|
-
];
|
|
560
|
-
const result = await renderSegments(segments);
|
|
561
|
-
const tree = toTreeNode(result);
|
|
562
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
563
|
-
// Should have outlets for both layout and error segment
|
|
564
|
-
expect(outlets).toHaveLength(2);
|
|
565
|
-
const errorOutlet = outlets.find((o) => o.props.segment.type === "error");
|
|
566
|
-
expect(errorOutlet).toBeDefined();
|
|
567
|
-
});
|
|
568
|
-
it("renders notFound segments in the tree", async () => {
|
|
569
|
-
const segments = [
|
|
570
|
-
seg({ id: "L0", type: "layout" }),
|
|
571
|
-
seg({
|
|
572
|
-
id: "L0NF0",
|
|
573
|
-
type: "notFound",
|
|
574
|
-
component: createElement("div", null, "Not found"),
|
|
575
|
-
notFoundInfo: {
|
|
576
|
-
message: "Page not found",
|
|
577
|
-
segmentId: "R0",
|
|
578
|
-
segmentType: "route",
|
|
579
|
-
},
|
|
580
|
-
}),
|
|
581
|
-
];
|
|
582
|
-
const result = await renderSegments(segments);
|
|
583
|
-
const tree = toTreeNode(result);
|
|
584
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
585
|
-
expect(outlets).toHaveLength(2);
|
|
586
|
-
const notFoundOutlet = outlets.find((o) => o.props.segment.type === "notFound");
|
|
587
|
-
expect(notFoundOutlet).toBeDefined();
|
|
588
|
-
});
|
|
589
|
-
});
|
|
590
|
-
describe("empty segments", () => {
|
|
591
|
-
it("returns RootErrorBoundary wrapping null for empty segments", async () => {
|
|
592
|
-
const result = await renderSegments([]);
|
|
593
|
-
const tree = toTreeNode(result);
|
|
594
|
-
expect(tree.type).toBe(MockRootErrorBoundary);
|
|
595
|
-
});
|
|
596
|
-
});
|
|
597
|
-
describe("parallel segment loaders", () => {
|
|
598
|
-
it("includes loaders from parallel segments in parent loader list", async () => {
|
|
599
|
-
const segments = [
|
|
600
|
-
seg({ id: "L0", type: "layout" }),
|
|
601
|
-
seg({ id: "L0R0", type: "route" }),
|
|
602
|
-
seg({
|
|
603
|
-
id: "L0.@sidebar",
|
|
604
|
-
type: "parallel",
|
|
605
|
-
slot: "@sidebar",
|
|
606
|
-
}),
|
|
607
|
-
seg({
|
|
608
|
-
id: "L0.@sidebarD0.data",
|
|
609
|
-
type: "loader",
|
|
610
|
-
loaderId: "sidebar-loader",
|
|
611
|
-
loaderData: { sidebar: true },
|
|
612
|
-
}),
|
|
613
|
-
];
|
|
614
|
-
const result = await renderSegments(segments);
|
|
615
|
-
const tree = toTreeNode(result);
|
|
616
|
-
const outlets = collectByType(tree, MockOutletProvider);
|
|
617
|
-
// The layout should have sidebar loader data accessible
|
|
618
|
-
// (loaders from parallels are merged into parent's loaders)
|
|
619
|
-
const layoutOutlet = outlets.find((o) => o.props.segment.id === "L0");
|
|
620
|
-
// The sidebar loader is grouped under the parallel "L0.@sidebar"
|
|
621
|
-
// which is a child of L0, so it gets included in L0's loaders
|
|
622
|
-
expect(layoutOutlet.props.loaderData).toBeDefined();
|
|
623
|
-
});
|
|
624
|
-
});
|
|
625
|
-
});
|
|
626
|
-
});
|
|
627
|
-
//# sourceMappingURL=segment-system.test.js.map
|