@rangojs/router 0.0.0-experimental.108 → 0.0.0-experimental.109
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 +1 -1
- package/dist/vite/index.js +12 -8
- package/package.json +1 -1
- package/skills/links/SKILL.md +11 -1
- package/skills/mime-routes/SKILL.md +2 -2
- package/skills/response-routes/SKILL.md +39 -14
- package/skills/typesafety/SKILL.md +98 -11
- package/src/__augment-tests__/augment.ts +44 -0
- package/src/__augment-tests__/augmented.check.ts +56 -3
- package/src/browser/react/use-handle.ts +17 -9
- package/src/client.tsx +4 -7
- package/src/href-client.ts +135 -18
- package/src/index.rsc.ts +2 -2
- package/src/index.ts +2 -2
- package/src/serialize.ts +243 -0
- package/src/urls/type-extraction.ts +6 -1
- package/src/use-loader.tsx +6 -4
- package/src/vite/discovery/state.ts +4 -4
- package/src/vite/router-discovery.ts +11 -10
- package/src/vite/utils/forward-user-plugins.ts +46 -17
- package/dist/__internal.d.ts +0 -83
- package/dist/__internal.d.ts.map +0 -1
- package/dist/__internal.js +0 -19
- package/dist/__internal.js.map +0 -1
- package/dist/__mocks__/version.d.ts +0 -7
- package/dist/__mocks__/version.d.ts.map +0 -1
- package/dist/__mocks__/version.js +0 -7
- package/dist/__mocks__/version.js.map +0 -1
- package/dist/__tests__/client-href.test.d.ts +0 -2
- package/dist/__tests__/client-href.test.d.ts.map +0 -1
- package/dist/__tests__/client-href.test.js +0 -74
- package/dist/__tests__/client-href.test.js.map +0 -1
- package/dist/__tests__/component-utils.test.d.ts +0 -2
- package/dist/__tests__/component-utils.test.d.ts.map +0 -1
- package/dist/__tests__/component-utils.test.js +0 -51
- package/dist/__tests__/component-utils.test.js.map +0 -1
- package/dist/__tests__/event-controller.test.d.ts +0 -2
- package/dist/__tests__/event-controller.test.d.ts.map +0 -1
- package/dist/__tests__/event-controller.test.js +0 -538
- package/dist/__tests__/event-controller.test.js.map +0 -1
- package/dist/__tests__/helpers/route-tree.d.ts +0 -118
- package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
- package/dist/__tests__/helpers/route-tree.js +0 -374
- package/dist/__tests__/helpers/route-tree.js.map +0 -1
- package/dist/__tests__/match-result.test.d.ts +0 -2
- package/dist/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/__tests__/match-result.test.js +0 -154
- package/dist/__tests__/match-result.test.js.map +0 -1
- package/dist/__tests__/navigation-store.test.d.ts +0 -2
- package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
- package/dist/__tests__/navigation-store.test.js +0 -440
- package/dist/__tests__/navigation-store.test.js.map +0 -1
- package/dist/__tests__/partial-update.test.d.ts +0 -2
- package/dist/__tests__/partial-update.test.d.ts.map +0 -1
- package/dist/__tests__/partial-update.test.js +0 -1009
- package/dist/__tests__/partial-update.test.js.map +0 -1
- package/dist/__tests__/reverse-types.test.d.ts +0 -8
- package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
- package/dist/__tests__/reverse-types.test.js +0 -656
- package/dist/__tests__/reverse-types.test.js.map +0 -1
- package/dist/__tests__/route-definition.test.d.ts +0 -2
- package/dist/__tests__/route-definition.test.d.ts.map +0 -1
- package/dist/__tests__/route-definition.test.js +0 -55
- package/dist/__tests__/route-definition.test.js.map +0 -1
- package/dist/__tests__/router-helpers.test.d.ts +0 -2
- package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
- package/dist/__tests__/router-helpers.test.js +0 -377
- package/dist/__tests__/router-helpers.test.js.map +0 -1
- package/dist/__tests__/router-integration-2.test.d.ts +0 -2
- package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration-2.test.js +0 -426
- package/dist/__tests__/router-integration-2.test.js.map +0 -1
- package/dist/__tests__/router-integration.test.d.ts +0 -2
- package/dist/__tests__/router-integration.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration.test.js +0 -1051
- package/dist/__tests__/router-integration.test.js.map +0 -1
- package/dist/__tests__/search-params.test.d.ts +0 -5
- package/dist/__tests__/search-params.test.d.ts.map +0 -1
- package/dist/__tests__/search-params.test.js +0 -306
- package/dist/__tests__/search-params.test.js.map +0 -1
- package/dist/__tests__/segment-system.test.d.ts +0 -2
- package/dist/__tests__/segment-system.test.d.ts.map +0 -1
- package/dist/__tests__/segment-system.test.js +0 -627
- package/dist/__tests__/segment-system.test.js.map +0 -1
- package/dist/__tests__/static-handler-types.test.d.ts +0 -8
- package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
- package/dist/__tests__/static-handler-types.test.js +0 -63
- package/dist/__tests__/static-handler-types.test.js.map +0 -1
- package/dist/__tests__/urls.test.d.ts +0 -2
- package/dist/__tests__/urls.test.d.ts.map +0 -1
- package/dist/__tests__/urls.test.js +0 -421
- package/dist/__tests__/urls.test.js.map +0 -1
- package/dist/__tests__/use-mount.test.d.ts +0 -2
- package/dist/__tests__/use-mount.test.d.ts.map +0 -1
- package/dist/__tests__/use-mount.test.js +0 -35
- package/dist/__tests__/use-mount.test.js.map +0 -1
- package/dist/bin/rango.d.ts +0 -2
- package/dist/bin/rango.d.ts.map +0 -1
- package/dist/bin/rango.js.map +0 -1
- package/dist/browser/event-controller.d.ts +0 -191
- package/dist/browser/event-controller.d.ts.map +0 -1
- package/dist/browser/event-controller.js +0 -559
- package/dist/browser/event-controller.js.map +0 -1
- package/dist/browser/index.d.ts +0 -2
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -14
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/link-interceptor.d.ts +0 -38
- package/dist/browser/link-interceptor.d.ts.map +0 -1
- package/dist/browser/link-interceptor.js +0 -99
- package/dist/browser/link-interceptor.js.map +0 -1
- package/dist/browser/logging.d.ts +0 -10
- package/dist/browser/logging.d.ts.map +0 -1
- package/dist/browser/logging.js +0 -29
- package/dist/browser/logging.js.map +0 -1
- package/dist/browser/lru-cache.d.ts +0 -17
- package/dist/browser/lru-cache.d.ts.map +0 -1
- package/dist/browser/lru-cache.js +0 -50
- package/dist/browser/lru-cache.js.map +0 -1
- package/dist/browser/merge-segment-loaders.d.ts +0 -39
- package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
- package/dist/browser/merge-segment-loaders.js +0 -102
- package/dist/browser/merge-segment-loaders.js.map +0 -1
- package/dist/browser/navigation-bridge.d.ts +0 -102
- package/dist/browser/navigation-bridge.d.ts.map +0 -1
- package/dist/browser/navigation-bridge.js +0 -708
- package/dist/browser/navigation-bridge.js.map +0 -1
- package/dist/browser/navigation-client.d.ts +0 -25
- package/dist/browser/navigation-client.d.ts.map +0 -1
- package/dist/browser/navigation-client.js +0 -157
- package/dist/browser/navigation-client.js.map +0 -1
- package/dist/browser/navigation-store.d.ts +0 -101
- package/dist/browser/navigation-store.d.ts.map +0 -1
- package/dist/browser/navigation-store.js +0 -625
- package/dist/browser/navigation-store.js.map +0 -1
- package/dist/browser/partial-update.d.ts +0 -75
- package/dist/browser/partial-update.d.ts.map +0 -1
- package/dist/browser/partial-update.js +0 -426
- package/dist/browser/partial-update.js.map +0 -1
- package/dist/browser/react/Link.d.ts +0 -86
- package/dist/browser/react/Link.d.ts.map +0 -1
- package/dist/browser/react/Link.js +0 -128
- package/dist/browser/react/Link.js.map +0 -1
- package/dist/browser/react/NavigationProvider.d.ts +0 -63
- package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
- package/dist/browser/react/NavigationProvider.js +0 -216
- package/dist/browser/react/NavigationProvider.js.map +0 -1
- package/dist/browser/react/ScrollRestoration.d.ts +0 -75
- package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
- package/dist/browser/react/ScrollRestoration.js +0 -57
- package/dist/browser/react/ScrollRestoration.js.map +0 -1
- package/dist/browser/react/context.d.ts +0 -46
- package/dist/browser/react/context.d.ts.map +0 -1
- package/dist/browser/react/context.js +0 -10
- package/dist/browser/react/context.js.map +0 -1
- package/dist/browser/react/index.d.ts +0 -11
- package/dist/browser/react/index.d.ts.map +0 -1
- package/dist/browser/react/index.js +0 -22
- package/dist/browser/react/index.js.map +0 -1
- package/dist/browser/react/location-state-shared.d.ts +0 -63
- package/dist/browser/react/location-state-shared.d.ts.map +0 -1
- package/dist/browser/react/location-state-shared.js +0 -81
- package/dist/browser/react/location-state-shared.js.map +0 -1
- package/dist/browser/react/location-state.d.ts +0 -23
- package/dist/browser/react/location-state.d.ts.map +0 -1
- package/dist/browser/react/location-state.js +0 -29
- package/dist/browser/react/location-state.js.map +0 -1
- package/dist/browser/react/mount-context.d.ts +0 -24
- package/dist/browser/react/mount-context.d.ts.map +0 -1
- package/dist/browser/react/mount-context.js +0 -24
- package/dist/browser/react/mount-context.js.map +0 -1
- package/dist/browser/react/use-action.d.ts +0 -64
- package/dist/browser/react/use-action.d.ts.map +0 -1
- package/dist/browser/react/use-action.js +0 -134
- package/dist/browser/react/use-action.js.map +0 -1
- package/dist/browser/react/use-client-cache.d.ts +0 -41
- package/dist/browser/react/use-client-cache.d.ts.map +0 -1
- package/dist/browser/react/use-client-cache.js +0 -39
- package/dist/browser/react/use-client-cache.js.map +0 -1
- package/dist/browser/react/use-handle.d.ts +0 -31
- package/dist/browser/react/use-handle.d.ts.map +0 -1
- package/dist/browser/react/use-handle.js +0 -144
- package/dist/browser/react/use-handle.js.map +0 -1
- package/dist/browser/react/use-href.d.ts +0 -33
- package/dist/browser/react/use-href.d.ts.map +0 -1
- package/dist/browser/react/use-href.js +0 -39
- package/dist/browser/react/use-href.js.map +0 -1
- package/dist/browser/react/use-link-status.d.ts +0 -37
- package/dist/browser/react/use-link-status.d.ts.map +0 -1
- package/dist/browser/react/use-link-status.js +0 -99
- package/dist/browser/react/use-link-status.js.map +0 -1
- package/dist/browser/react/use-mount.d.ts +0 -25
- package/dist/browser/react/use-mount.d.ts.map +0 -1
- package/dist/browser/react/use-mount.js +0 -30
- package/dist/browser/react/use-mount.js.map +0 -1
- package/dist/browser/react/use-navigation.d.ts +0 -27
- package/dist/browser/react/use-navigation.d.ts.map +0 -1
- package/dist/browser/react/use-navigation.js +0 -87
- package/dist/browser/react/use-navigation.js.map +0 -1
- package/dist/browser/react/use-segments.d.ts +0 -38
- package/dist/browser/react/use-segments.d.ts.map +0 -1
- package/dist/browser/react/use-segments.js +0 -130
- package/dist/browser/react/use-segments.js.map +0 -1
- package/dist/browser/request-controller.d.ts +0 -26
- package/dist/browser/request-controller.d.ts.map +0 -1
- package/dist/browser/request-controller.js +0 -147
- package/dist/browser/request-controller.js.map +0 -1
- package/dist/browser/rsc-router.d.ts +0 -129
- package/dist/browser/rsc-router.d.ts.map +0 -1
- package/dist/browser/rsc-router.js +0 -195
- package/dist/browser/rsc-router.js.map +0 -1
- package/dist/browser/scroll-restoration.d.ts +0 -93
- package/dist/browser/scroll-restoration.d.ts.map +0 -1
- package/dist/browser/scroll-restoration.js +0 -321
- package/dist/browser/scroll-restoration.js.map +0 -1
- package/dist/browser/segment-structure-assert.d.ts +0 -17
- package/dist/browser/segment-structure-assert.d.ts.map +0 -1
- package/dist/browser/segment-structure-assert.js +0 -59
- package/dist/browser/segment-structure-assert.js.map +0 -1
- package/dist/browser/server-action-bridge.d.ts +0 -26
- package/dist/browser/server-action-bridge.d.ts.map +0 -1
- package/dist/browser/server-action-bridge.js +0 -668
- package/dist/browser/server-action-bridge.js.map +0 -1
- package/dist/browser/shallow.d.ts +0 -12
- package/dist/browser/shallow.d.ts.map +0 -1
- package/dist/browser/shallow.js +0 -34
- package/dist/browser/shallow.js.map +0 -1
- package/dist/browser/types.d.ts +0 -369
- package/dist/browser/types.d.ts.map +0 -1
- package/dist/browser/types.js +0 -2
- package/dist/browser/types.js.map +0 -1
- package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
- package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-cli.test.js +0 -237
- package/dist/build/__tests__/generate-cli.test.js.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.js +0 -119
- package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.js +0 -620
- package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.js +0 -308
- package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
- package/dist/build/generate-manifest.d.ts +0 -81
- package/dist/build/generate-manifest.d.ts.map +0 -1
- package/dist/build/generate-manifest.js +0 -276
- package/dist/build/generate-manifest.js.map +0 -1
- package/dist/build/generate-route-types.d.ts +0 -115
- package/dist/build/generate-route-types.d.ts.map +0 -1
- package/dist/build/generate-route-types.js +0 -740
- package/dist/build/generate-route-types.js.map +0 -1
- package/dist/build/index.d.ts +0 -21
- package/dist/build/index.d.ts.map +0 -1
- package/dist/build/index.js +0 -21
- package/dist/build/index.js.map +0 -1
- package/dist/build/route-trie.d.ts +0 -71
- package/dist/build/route-trie.d.ts.map +0 -1
- package/dist/build/route-trie.js +0 -175
- package/dist/build/route-trie.js.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.js +0 -208
- package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
- package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
- package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
- package/dist/cache/__tests__/document-cache.test.js +0 -345
- package/dist/cache/__tests__/document-cache.test.js.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
- package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
- package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-store.test.js +0 -367
- package/dist/cache/__tests__/memory-store.test.js.map +0 -1
- package/dist/cache/cache-scope.d.ts +0 -102
- package/dist/cache/cache-scope.d.ts.map +0 -1
- package/dist/cache/cache-scope.js +0 -440
- package/dist/cache/cache-scope.js.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
- package/dist/cache/cf/cf-cache-store.d.ts +0 -165
- package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
- package/dist/cache/cf/cf-cache-store.js +0 -242
- package/dist/cache/cf/cf-cache-store.js.map +0 -1
- package/dist/cache/cf/index.d.ts +0 -14
- package/dist/cache/cf/index.d.ts.map +0 -1
- package/dist/cache/cf/index.js +0 -17
- package/dist/cache/cf/index.js.map +0 -1
- package/dist/cache/document-cache.d.ts +0 -64
- package/dist/cache/document-cache.d.ts.map +0 -1
- package/dist/cache/document-cache.js +0 -228
- package/dist/cache/document-cache.js.map +0 -1
- package/dist/cache/index.d.ts +0 -19
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -21
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/memory-segment-store.d.ts +0 -110
- package/dist/cache/memory-segment-store.d.ts.map +0 -1
- package/dist/cache/memory-segment-store.js +0 -117
- package/dist/cache/memory-segment-store.js.map +0 -1
- package/dist/cache/memory-store.d.ts +0 -41
- package/dist/cache/memory-store.d.ts.map +0 -1
- package/dist/cache/memory-store.js +0 -191
- package/dist/cache/memory-store.js.map +0 -1
- package/dist/cache/types.d.ts +0 -317
- package/dist/cache/types.d.ts.map +0 -1
- package/dist/cache/types.js +0 -12
- package/dist/cache/types.js.map +0 -1
- package/dist/client.d.ts +0 -248
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -367
- package/dist/client.js.map +0 -1
- package/dist/client.rsc.d.ts +0 -26
- package/dist/client.rsc.d.ts.map +0 -1
- package/dist/client.rsc.js +0 -46
- package/dist/client.rsc.js.map +0 -1
- package/dist/component-utils.d.ts +0 -36
- package/dist/component-utils.d.ts.map +0 -1
- package/dist/component-utils.js +0 -61
- package/dist/component-utils.js.map +0 -1
- package/dist/components/DefaultDocument.d.ts +0 -13
- package/dist/components/DefaultDocument.d.ts.map +0 -1
- package/dist/components/DefaultDocument.js +0 -15
- package/dist/components/DefaultDocument.js.map +0 -1
- package/dist/debug.d.ts +0 -58
- package/dist/debug.d.ts.map +0 -1
- package/dist/debug.js +0 -157
- package/dist/debug.js.map +0 -1
- package/dist/default-error-boundary.d.ts +0 -11
- package/dist/default-error-boundary.d.ts.map +0 -1
- package/dist/default-error-boundary.js +0 -45
- package/dist/default-error-boundary.js.map +0 -1
- package/dist/deps/browser.d.ts +0 -2
- package/dist/deps/browser.d.ts.map +0 -1
- package/dist/deps/browser.js +0 -3
- package/dist/deps/browser.js.map +0 -1
- package/dist/deps/html-stream-client.d.ts +0 -2
- package/dist/deps/html-stream-client.d.ts.map +0 -1
- package/dist/deps/html-stream-client.js +0 -3
- package/dist/deps/html-stream-client.js.map +0 -1
- package/dist/deps/html-stream-server.d.ts +0 -2
- package/dist/deps/html-stream-server.d.ts.map +0 -1
- package/dist/deps/html-stream-server.js +0 -3
- package/dist/deps/html-stream-server.js.map +0 -1
- package/dist/deps/rsc.d.ts +0 -2
- package/dist/deps/rsc.d.ts.map +0 -1
- package/dist/deps/rsc.js +0 -4
- package/dist/deps/rsc.js.map +0 -1
- package/dist/deps/ssr.d.ts +0 -2
- package/dist/deps/ssr.d.ts.map +0 -1
- package/dist/deps/ssr.js +0 -3
- package/dist/deps/ssr.js.map +0 -1
- package/dist/errors.d.ts +0 -174
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -241
- package/dist/errors.js.map +0 -1
- package/dist/handle.d.ts +0 -78
- package/dist/handle.d.ts.map +0 -1
- package/dist/handle.js +0 -82
- package/dist/handle.js.map +0 -1
- package/dist/handles/MetaTags.d.ts +0 -14
- package/dist/handles/MetaTags.d.ts.map +0 -1
- package/dist/handles/MetaTags.js +0 -136
- package/dist/handles/MetaTags.js.map +0 -1
- package/dist/handles/index.d.ts +0 -6
- package/dist/handles/index.d.ts.map +0 -1
- package/dist/handles/index.js +0 -6
- package/dist/handles/index.js.map +0 -1
- package/dist/handles/meta.d.ts +0 -39
- package/dist/handles/meta.d.ts.map +0 -1
- package/dist/handles/meta.js +0 -202
- package/dist/handles/meta.js.map +0 -1
- package/dist/host/__tests__/errors.test.d.ts +0 -2
- package/dist/host/__tests__/errors.test.d.ts.map +0 -1
- package/dist/host/__tests__/errors.test.js +0 -76
- package/dist/host/__tests__/errors.test.js.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.js +0 -251
- package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
- package/dist/host/__tests__/router.test.d.ts +0 -2
- package/dist/host/__tests__/router.test.d.ts.map +0 -1
- package/dist/host/__tests__/router.test.js +0 -241
- package/dist/host/__tests__/router.test.js.map +0 -1
- package/dist/host/__tests__/testing.test.d.ts +0 -2
- package/dist/host/__tests__/testing.test.d.ts.map +0 -1
- package/dist/host/__tests__/testing.test.js +0 -64
- package/dist/host/__tests__/testing.test.js.map +0 -1
- package/dist/host/__tests__/utils.test.d.ts +0 -2
- package/dist/host/__tests__/utils.test.d.ts.map +0 -1
- package/dist/host/__tests__/utils.test.js +0 -29
- package/dist/host/__tests__/utils.test.js.map +0 -1
- package/dist/host/cookie-handler.d.ts +0 -34
- package/dist/host/cookie-handler.d.ts.map +0 -1
- package/dist/host/cookie-handler.js +0 -124
- package/dist/host/cookie-handler.js.map +0 -1
- package/dist/host/errors.d.ts +0 -56
- package/dist/host/errors.d.ts.map +0 -1
- package/dist/host/errors.js +0 -79
- package/dist/host/errors.js.map +0 -1
- package/dist/host/index.d.ts +0 -29
- package/dist/host/index.d.ts.map +0 -1
- package/dist/host/index.js +0 -32
- package/dist/host/index.js.map +0 -1
- package/dist/host/pattern-matcher.d.ts +0 -36
- package/dist/host/pattern-matcher.d.ts.map +0 -1
- package/dist/host/pattern-matcher.js +0 -172
- package/dist/host/pattern-matcher.js.map +0 -1
- package/dist/host/router.d.ts +0 -26
- package/dist/host/router.d.ts.map +0 -1
- package/dist/host/router.js +0 -218
- package/dist/host/router.js.map +0 -1
- package/dist/host/testing.d.ts +0 -36
- package/dist/host/testing.d.ts.map +0 -1
- package/dist/host/testing.js +0 -55
- package/dist/host/testing.js.map +0 -1
- package/dist/host/types.d.ts +0 -115
- package/dist/host/types.d.ts.map +0 -1
- package/dist/host/types.js +0 -7
- package/dist/host/types.js.map +0 -1
- package/dist/host/utils.d.ts +0 -21
- package/dist/host/utils.d.ts.map +0 -1
- package/dist/host/utils.js +0 -23
- package/dist/host/utils.js.map +0 -1
- package/dist/href-client.d.ts +0 -131
- package/dist/href-client.d.ts.map +0 -1
- package/dist/href-client.js +0 -64
- package/dist/href-client.js.map +0 -1
- package/dist/href-context.d.ts +0 -29
- package/dist/href-context.d.ts.map +0 -1
- package/dist/href-context.js +0 -21
- package/dist/href-context.js.map +0 -1
- package/dist/index.d.ts +0 -73
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -91
- package/dist/index.js.map +0 -1
- package/dist/index.rsc.d.ts +0 -32
- package/dist/index.rsc.d.ts.map +0 -1
- package/dist/index.rsc.js +0 -40
- package/dist/index.rsc.js.map +0 -1
- package/dist/internal-debug.d.ts +0 -2
- package/dist/internal-debug.d.ts.map +0 -1
- package/dist/internal-debug.js +0 -5
- package/dist/internal-debug.js.map +0 -1
- package/dist/loader.d.ts +0 -14
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -20
- package/dist/loader.js.map +0 -1
- package/dist/loader.rsc.d.ts +0 -19
- package/dist/loader.rsc.d.ts.map +0 -1
- package/dist/loader.rsc.js +0 -99
- package/dist/loader.rsc.js.map +0 -1
- package/dist/network-error-thrower.d.ts +0 -17
- package/dist/network-error-thrower.d.ts.map +0 -1
- package/dist/network-error-thrower.js +0 -14
- package/dist/network-error-thrower.js.map +0 -1
- package/dist/outlet-context.d.ts +0 -13
- package/dist/outlet-context.d.ts.map +0 -1
- package/dist/outlet-context.js +0 -3
- package/dist/outlet-context.js.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.js +0 -148
- package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
- package/dist/prerender/param-hash.d.ts +0 -16
- package/dist/prerender/param-hash.d.ts.map +0 -1
- package/dist/prerender/param-hash.js +0 -36
- package/dist/prerender/param-hash.js.map +0 -1
- package/dist/prerender/store.d.ts +0 -38
- package/dist/prerender/store.d.ts.map +0 -1
- package/dist/prerender/store.js +0 -61
- package/dist/prerender/store.js.map +0 -1
- package/dist/prerender.d.ts +0 -66
- package/dist/prerender.d.ts.map +0 -1
- package/dist/prerender.js +0 -57
- package/dist/prerender.js.map +0 -1
- package/dist/reverse.d.ts +0 -196
- package/dist/reverse.d.ts.map +0 -1
- package/dist/reverse.js +0 -78
- package/dist/reverse.js.map +0 -1
- package/dist/root-error-boundary.d.ts +0 -33
- package/dist/root-error-boundary.d.ts.map +0 -1
- package/dist/root-error-boundary.js +0 -165
- package/dist/root-error-boundary.js.map +0 -1
- package/dist/route-content-wrapper.d.ts +0 -46
- package/dist/route-content-wrapper.d.ts.map +0 -1
- package/dist/route-content-wrapper.js +0 -77
- package/dist/route-content-wrapper.js.map +0 -1
- package/dist/route-definition.d.ts +0 -421
- package/dist/route-definition.d.ts.map +0 -1
- package/dist/route-definition.js +0 -868
- package/dist/route-definition.js.map +0 -1
- package/dist/route-map-builder.d.ts +0 -155
- package/dist/route-map-builder.d.ts.map +0 -1
- package/dist/route-map-builder.js +0 -237
- package/dist/route-map-builder.js.map +0 -1
- package/dist/route-types.d.ts +0 -165
- package/dist/route-types.d.ts.map +0 -1
- package/dist/route-types.js +0 -7
- package/dist/route-types.js.map +0 -1
- package/dist/router/__tests__/handler-context.test.d.ts +0 -2
- package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/handler-context.test.js +0 -65
- package/dist/router/__tests__/handler-context.test.js.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
- package/dist/router/__tests__/match-context.test.d.ts +0 -2
- package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-context.test.js +0 -92
- package/dist/router/__tests__/match-context.test.js.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.js +0 -417
- package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
- package/dist/router/__tests__/match-result.test.d.ts +0 -2
- package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-result.test.js +0 -457
- package/dist/router/__tests__/match-result.test.js.map +0 -1
- package/dist/router/__tests__/on-error.test.d.ts +0 -2
- package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
- package/dist/router/__tests__/on-error.test.js +0 -678
- package/dist/router/__tests__/on-error.test.js.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.js +0 -629
- package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
- package/dist/router/error-handling.d.ts +0 -77
- package/dist/router/error-handling.d.ts.map +0 -1
- package/dist/router/error-handling.js +0 -202
- package/dist/router/error-handling.js.map +0 -1
- package/dist/router/handler-context.d.ts +0 -20
- package/dist/router/handler-context.d.ts.map +0 -1
- package/dist/router/handler-context.js +0 -198
- package/dist/router/handler-context.js.map +0 -1
- package/dist/router/intercept-resolution.d.ts +0 -66
- package/dist/router/intercept-resolution.d.ts.map +0 -1
- package/dist/router/intercept-resolution.js +0 -246
- package/dist/router/intercept-resolution.js.map +0 -1
- package/dist/router/loader-resolution.d.ts +0 -64
- package/dist/router/loader-resolution.d.ts.map +0 -1
- package/dist/router/loader-resolution.js +0 -284
- package/dist/router/loader-resolution.js.map +0 -1
- package/dist/router/logging.d.ts +0 -15
- package/dist/router/logging.d.ts.map +0 -1
- package/dist/router/logging.js +0 -99
- package/dist/router/logging.js.map +0 -1
- package/dist/router/manifest.d.ts +0 -22
- package/dist/router/manifest.d.ts.map +0 -1
- package/dist/router/manifest.js +0 -181
- package/dist/router/manifest.js.map +0 -1
- package/dist/router/match-api.d.ts +0 -35
- package/dist/router/match-api.d.ts.map +0 -1
- package/dist/router/match-api.js +0 -406
- package/dist/router/match-api.js.map +0 -1
- package/dist/router/match-context.d.ts +0 -206
- package/dist/router/match-context.d.ts.map +0 -1
- package/dist/router/match-context.js +0 -17
- package/dist/router/match-context.js.map +0 -1
- package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
- package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
- package/dist/router/match-middleware/background-revalidation.js +0 -75
- package/dist/router/match-middleware/background-revalidation.js.map +0 -1
- package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
- package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-lookup.js +0 -257
- package/dist/router/match-middleware/cache-lookup.js.map +0 -1
- package/dist/router/match-middleware/cache-store.d.ts +0 -113
- package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-store.js +0 -108
- package/dist/router/match-middleware/cache-store.js.map +0 -1
- package/dist/router/match-middleware/index.d.ts +0 -81
- package/dist/router/match-middleware/index.d.ts.map +0 -1
- package/dist/router/match-middleware/index.js +0 -80
- package/dist/router/match-middleware/index.js.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.js +0 -134
- package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
- package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
- package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/segment-resolution.js +0 -53
- package/dist/router/match-middleware/segment-resolution.js.map +0 -1
- package/dist/router/match-pipelines.d.ts +0 -147
- package/dist/router/match-pipelines.d.ts.map +0 -1
- package/dist/router/match-pipelines.js +0 -82
- package/dist/router/match-pipelines.js.map +0 -1
- package/dist/router/match-result.d.ts +0 -126
- package/dist/router/match-result.d.ts.map +0 -1
- package/dist/router/match-result.js +0 -93
- package/dist/router/match-result.js.map +0 -1
- package/dist/router/metrics.d.ts +0 -20
- package/dist/router/metrics.d.ts.map +0 -1
- package/dist/router/metrics.js +0 -47
- package/dist/router/metrics.js.map +0 -1
- package/dist/router/middleware.d.ts +0 -249
- package/dist/router/middleware.d.ts.map +0 -1
- package/dist/router/middleware.js +0 -434
- package/dist/router/middleware.js.map +0 -1
- package/dist/router/middleware.test.d.ts +0 -2
- package/dist/router/middleware.test.d.ts.map +0 -1
- package/dist/router/middleware.test.js +0 -816
- package/dist/router/middleware.test.js.map +0 -1
- package/dist/router/pattern-matching.d.ts +0 -149
- package/dist/router/pattern-matching.d.ts.map +0 -1
- package/dist/router/pattern-matching.js +0 -349
- package/dist/router/pattern-matching.js.map +0 -1
- package/dist/router/revalidation.d.ts +0 -44
- package/dist/router/revalidation.d.ts.map +0 -1
- package/dist/router/revalidation.js +0 -147
- package/dist/router/revalidation.js.map +0 -1
- package/dist/router/router-context.d.ts +0 -135
- package/dist/router/router-context.d.ts.map +0 -1
- package/dist/router/router-context.js +0 -36
- package/dist/router/router-context.js.map +0 -1
- package/dist/router/segment-resolution.d.ts +0 -127
- package/dist/router/segment-resolution.d.ts.map +0 -1
- package/dist/router/segment-resolution.js +0 -919
- package/dist/router/segment-resolution.js.map +0 -1
- package/dist/router/trie-matching.d.ts +0 -40
- package/dist/router/trie-matching.d.ts.map +0 -1
- package/dist/router/trie-matching.js +0 -127
- package/dist/router/trie-matching.js.map +0 -1
- package/dist/router/types.d.ts +0 -136
- package/dist/router/types.d.ts.map +0 -1
- package/dist/router/types.js +0 -7
- package/dist/router/types.js.map +0 -1
- package/dist/router.d.ts +0 -753
- package/dist/router.d.ts.map +0 -1
- package/dist/router.gen.d.ts +0 -6
- package/dist/router.gen.d.ts.map +0 -1
- package/dist/router.gen.js +0 -6
- package/dist/router.gen.js.map +0 -1
- package/dist/router.js +0 -1304
- package/dist/router.js.map +0 -1
- package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
- package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
- package/dist/rsc/__tests__/helpers.test.js +0 -140
- package/dist/rsc/__tests__/helpers.test.js.map +0 -1
- package/dist/rsc/handler.d.ts +0 -45
- package/dist/rsc/handler.d.ts.map +0 -1
- package/dist/rsc/handler.js +0 -1172
- package/dist/rsc/handler.js.map +0 -1
- package/dist/rsc/helpers.d.ts +0 -16
- package/dist/rsc/helpers.d.ts.map +0 -1
- package/dist/rsc/helpers.js +0 -55
- package/dist/rsc/helpers.js.map +0 -1
- package/dist/rsc/index.d.ts +0 -22
- package/dist/rsc/index.d.ts.map +0 -1
- package/dist/rsc/index.js +0 -23
- package/dist/rsc/index.js.map +0 -1
- package/dist/rsc/nonce.d.ts +0 -9
- package/dist/rsc/nonce.d.ts.map +0 -1
- package/dist/rsc/nonce.js +0 -18
- package/dist/rsc/nonce.js.map +0 -1
- package/dist/rsc/types.d.ts +0 -206
- package/dist/rsc/types.d.ts.map +0 -1
- package/dist/rsc/types.js +0 -8
- package/dist/rsc/types.js.map +0 -1
- package/dist/search-params.d.ts +0 -103
- package/dist/search-params.d.ts.map +0 -1
- package/dist/search-params.js +0 -74
- package/dist/search-params.js.map +0 -1
- package/dist/segment-system.d.ts +0 -75
- package/dist/segment-system.d.ts.map +0 -1
- package/dist/segment-system.js +0 -336
- package/dist/segment-system.js.map +0 -1
- package/dist/server/context.d.ts +0 -245
- package/dist/server/context.d.ts.map +0 -1
- package/dist/server/context.js +0 -197
- package/dist/server/context.js.map +0 -1
- package/dist/server/fetchable-loader-store.d.ts +0 -18
- package/dist/server/fetchable-loader-store.d.ts.map +0 -1
- package/dist/server/fetchable-loader-store.js +0 -18
- package/dist/server/fetchable-loader-store.js.map +0 -1
- package/dist/server/handle-store.d.ts +0 -85
- package/dist/server/handle-store.d.ts.map +0 -1
- package/dist/server/handle-store.js +0 -142
- package/dist/server/handle-store.js.map +0 -1
- package/dist/server/loader-registry.d.ts +0 -55
- package/dist/server/loader-registry.d.ts.map +0 -1
- package/dist/server/loader-registry.js +0 -132
- package/dist/server/loader-registry.js.map +0 -1
- package/dist/server/request-context.d.ts +0 -226
- package/dist/server/request-context.d.ts.map +0 -1
- package/dist/server/request-context.js +0 -290
- package/dist/server/request-context.js.map +0 -1
- package/dist/server/root-layout.d.ts +0 -4
- package/dist/server/root-layout.d.ts.map +0 -1
- package/dist/server/root-layout.js +0 -5
- package/dist/server/root-layout.js.map +0 -1
- package/dist/server.d.ts +0 -15
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -20
- package/dist/server.js.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
- package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
- package/dist/ssr/index.d.ts +0 -98
- package/dist/ssr/index.d.ts.map +0 -1
- package/dist/ssr/index.js +0 -158
- package/dist/ssr/index.js.map +0 -1
- package/dist/static-handler.d.ts +0 -50
- package/dist/static-handler.d.ts.map +0 -1
- package/dist/static-handler.gen.d.ts +0 -5
- package/dist/static-handler.gen.d.ts.map +0 -1
- package/dist/static-handler.gen.js +0 -5
- package/dist/static-handler.gen.js.map +0 -1
- package/dist/static-handler.js +0 -29
- package/dist/static-handler.js.map +0 -1
- package/dist/theme/ThemeProvider.d.ts +0 -20
- package/dist/theme/ThemeProvider.d.ts.map +0 -1
- package/dist/theme/ThemeProvider.js +0 -240
- package/dist/theme/ThemeProvider.js.map +0 -1
- package/dist/theme/ThemeScript.d.ts +0 -48
- package/dist/theme/ThemeScript.d.ts.map +0 -1
- package/dist/theme/ThemeScript.js +0 -13
- package/dist/theme/ThemeScript.js.map +0 -1
- package/dist/theme/__tests__/theme.test.d.ts +0 -2
- package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
- package/dist/theme/__tests__/theme.test.js +0 -103
- package/dist/theme/__tests__/theme.test.js.map +0 -1
- package/dist/theme/constants.d.ts +0 -29
- package/dist/theme/constants.d.ts.map +0 -1
- package/dist/theme/constants.js +0 -48
- package/dist/theme/constants.js.map +0 -1
- package/dist/theme/index.d.ts +0 -31
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js +0 -36
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/theme-context.d.ts +0 -40
- package/dist/theme/theme-context.d.ts.map +0 -1
- package/dist/theme/theme-context.js +0 -60
- package/dist/theme/theme-context.js.map +0 -1
- package/dist/theme/theme-script.d.ts +0 -27
- package/dist/theme/theme-script.d.ts.map +0 -1
- package/dist/theme/theme-script.js +0 -147
- package/dist/theme/theme-script.js.map +0 -1
- package/dist/theme/types.d.ts +0 -163
- package/dist/theme/types.d.ts.map +0 -1
- package/dist/theme/types.js +0 -11
- package/dist/theme/types.js.map +0 -1
- package/dist/theme/use-theme.d.ts +0 -12
- package/dist/theme/use-theme.d.ts.map +0 -1
- package/dist/theme/use-theme.js +0 -40
- package/dist/theme/use-theme.js.map +0 -1
- package/dist/types.d.ts +0 -1479
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +0 -1
- package/dist/urls.d.ts +0 -441
- package/dist/urls.d.ts.map +0 -1
- package/dist/urls.gen.d.ts +0 -8
- package/dist/urls.gen.d.ts.map +0 -1
- package/dist/urls.gen.js +0 -8
- package/dist/urls.gen.js.map +0 -1
- package/dist/urls.js +0 -443
- package/dist/urls.js.map +0 -1
- package/dist/use-loader.d.ts +0 -127
- package/dist/use-loader.d.ts.map +0 -1
- package/dist/use-loader.js +0 -237
- package/dist/use-loader.js.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
- package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
- package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
- package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.js +0 -39
- package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
- package/dist/vite/ast-handler-extract.d.ts +0 -49
- package/dist/vite/ast-handler-extract.d.ts.map +0 -1
- package/dist/vite/ast-handler-extract.js +0 -249
- package/dist/vite/ast-handler-extract.js.map +0 -1
- package/dist/vite/expose-action-id.d.ts +0 -19
- package/dist/vite/expose-action-id.d.ts.map +0 -1
- package/dist/vite/expose-action-id.js +0 -250
- package/dist/vite/expose-action-id.js.map +0 -1
- package/dist/vite/expose-id-utils.d.ts +0 -69
- package/dist/vite/expose-id-utils.d.ts.map +0 -1
- package/dist/vite/expose-id-utils.js +0 -289
- package/dist/vite/expose-id-utils.js.map +0 -1
- package/dist/vite/expose-internal-ids.d.ts +0 -22
- package/dist/vite/expose-internal-ids.d.ts.map +0 -1
- package/dist/vite/expose-internal-ids.js +0 -886
- package/dist/vite/expose-internal-ids.js.map +0 -1
- package/dist/vite/index.d.ts +0 -149
- package/dist/vite/index.d.ts.map +0 -1
- package/dist/vite/index.js.bak +0 -5448
- package/dist/vite/index.js.map +0 -1
- package/dist/vite/index.named-routes.gen.ts +0 -103
- package/dist/vite/package-resolution.d.ts +0 -43
- package/dist/vite/package-resolution.d.ts.map +0 -1
- package/dist/vite/package-resolution.js +0 -112
- package/dist/vite/package-resolution.js.map +0 -1
- package/dist/vite/virtual-entries.d.ts +0 -25
- package/dist/vite/virtual-entries.d.ts.map +0 -1
- package/dist/vite/virtual-entries.js +0 -110
- package/dist/vite/virtual-entries.js.map +0 -1
package/README.md
CHANGED
|
@@ -1014,7 +1014,7 @@ Quick rule of thumb:
|
|
|
1014
1014
|
|
|
1015
1015
|
- `GeneratedRouteMap` (auto-generated) — use for server-side named-route typing: `Handler<"name">`, `ctx.reverse()`, `Prerender<"name">`
|
|
1016
1016
|
- `typeof router.routeMap` — use when you need route entries with response metadata
|
|
1017
|
-
- `RegisteredRoutes` (manual augmentation) — use to expose `typeof router.routeMap` globally for `href()`, `
|
|
1017
|
+
- `RegisteredRoutes` (manual augmentation) — use to expose `typeof router.routeMap` globally for `href()`, `Rango.Path`, `Rango.PathResponse`, and other path/response-aware utilities
|
|
1018
1018
|
|
|
1019
1019
|
For extracted reusable loaders or middleware, prefer global dotted names on
|
|
1020
1020
|
`ctx.reverse()` by default. If you want type-safe local names for a specific
|
package/dist/vite/index.js
CHANGED
|
@@ -2049,7 +2049,7 @@ import { resolve } from "node:path";
|
|
|
2049
2049
|
// package.json
|
|
2050
2050
|
var package_default = {
|
|
2051
2051
|
name: "@rangojs/router",
|
|
2052
|
-
version: "0.0.0-experimental.
|
|
2052
|
+
version: "0.0.0-experimental.109",
|
|
2053
2053
|
description: "Django-inspired RSC router with composable URL patterns",
|
|
2054
2054
|
keywords: [
|
|
2055
2055
|
"react",
|
|
@@ -5266,12 +5266,17 @@ function pickForwardedRunnerConfig(config) {
|
|
|
5266
5266
|
if (r.extensions !== void 0) resolve10.extensions = r.extensions;
|
|
5267
5267
|
if (r.preserveSymlinks !== void 0)
|
|
5268
5268
|
resolve10.preserveSymlinks = r.preserveSymlinks;
|
|
5269
|
-
|
|
5270
|
-
const
|
|
5269
|
+
if (r.tsconfigPaths !== void 0) resolve10.tsconfigPaths = r.tsconfigPaths;
|
|
5270
|
+
const userOxc = config.oxc;
|
|
5271
|
+
const userJsx = userOxc && typeof userOxc === "object" && typeof userOxc.jsx === "object" && userOxc.jsx !== null ? userOxc.jsx : {};
|
|
5272
|
+
const oxc = userOxc && typeof userOxc === "object" ? {
|
|
5273
|
+
...userOxc,
|
|
5274
|
+
jsx: { ...userJsx, runtime: "automatic", importSource: "react" }
|
|
5275
|
+
} : { jsx: { runtime: "automatic", importSource: "react" } };
|
|
5271
5276
|
return {
|
|
5272
5277
|
resolve: resolve10,
|
|
5273
5278
|
define: config.define,
|
|
5274
|
-
|
|
5279
|
+
oxc
|
|
5275
5280
|
};
|
|
5276
5281
|
}
|
|
5277
5282
|
|
|
@@ -5301,9 +5306,8 @@ async function createTempRscServer(state, options = {}) {
|
|
|
5301
5306
|
const resolveConfig = runnerConfig?.resolve ?? {
|
|
5302
5307
|
alias: state.userResolveAlias
|
|
5303
5308
|
};
|
|
5304
|
-
const
|
|
5305
|
-
jsx: "automatic",
|
|
5306
|
-
jsxImportSource: "react"
|
|
5309
|
+
const oxcConfig = runnerConfig?.oxc ?? {
|
|
5310
|
+
jsx: { runtime: "automatic", importSource: "react" }
|
|
5307
5311
|
};
|
|
5308
5312
|
return createViteServer({
|
|
5309
5313
|
root: state.projectRoot,
|
|
@@ -5313,7 +5317,7 @@ async function createTempRscServer(state, options = {}) {
|
|
|
5313
5317
|
logLevel: "silent",
|
|
5314
5318
|
resolve: resolveConfig,
|
|
5315
5319
|
...runnerConfig?.define ? { define: runnerConfig.define } : {},
|
|
5316
|
-
|
|
5320
|
+
oxc: oxcConfig,
|
|
5317
5321
|
...options.cacheDir && { cacheDir: options.cacheDir },
|
|
5318
5322
|
plugins: [
|
|
5319
5323
|
rsc({
|
package/package.json
CHANGED
package/skills/links/SKILL.md
CHANGED
|
@@ -213,7 +213,17 @@ function GlobalNav() {
|
|
|
213
213
|
}
|
|
214
214
|
```
|
|
215
215
|
|
|
216
|
-
`href()` provides compile-time validation via `
|
|
216
|
+
`href()` provides compile-time validation via the `Rango.Path` type. Paths are validated against registered route patterns using `PatternToPath`.
|
|
217
|
+
|
|
218
|
+
When wrapping `href()`, type the wrapper's path parameter as `Rango.Path` so it
|
|
219
|
+
keeps the same generated-route validation. `Rango.Path` is ambient — no import,
|
|
220
|
+
just like `Rango.Env` / `Rango.Vars`:
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
import { href } from "@rangojs/router/client";
|
|
224
|
+
|
|
225
|
+
export const appHref = (path: Rango.Path): string => href(path);
|
|
226
|
+
```
|
|
217
227
|
|
|
218
228
|
`href()` is a raw path helper — it is **not** basename-aware. It returns the path as-is (or with the include mount prefix via `useHref()`). For basename-aware navigation, use `Link`, `useRouter().push()`, or `reverse()`, which auto-prefix root-relative paths with the router's basename.
|
|
219
229
|
|
|
@@ -111,13 +111,13 @@ picks among the response-type candidates directly.
|
|
|
111
111
|
## Type Safety For Negotiated Paths
|
|
112
112
|
|
|
113
113
|
`router.named-routes.gen.ts` validates route names, params, search, `href()`, and
|
|
114
|
-
`
|
|
114
|
+
the `Rango.Path` type, but it does not carry response payload metadata. For MIME or
|
|
115
115
|
response payload types, use one of these surfaces:
|
|
116
116
|
|
|
117
117
|
- `RouteResponse<typeof patterns, "routeName">` for a specific response variant
|
|
118
118
|
by route name. This is the clearest option when several MIME variants share
|
|
119
119
|
one URL pattern.
|
|
120
|
-
- `PathResponse<"/products/:id">` for global URL
|
|
120
|
+
- `Rango.PathResponse<"/products/:id">` (ambient, no import) for global lookup by URL pattern or concrete path after the app
|
|
121
121
|
registers `typeof router.routeMap`:
|
|
122
122
|
|
|
123
123
|
```typescript
|
|
@@ -236,13 +236,14 @@ type ProductsData = RouteResponse<typeof apiPatterns, "products">;
|
|
|
236
236
|
// = ResponseEnvelope<{ id: string; name: string; price: number }[]>
|
|
237
237
|
```
|
|
238
238
|
|
|
239
|
-
### PathResponse (global lookup by URL pattern)
|
|
239
|
+
### Rango.PathResponse (global lookup by URL pattern or concrete path)
|
|
240
240
|
|
|
241
|
-
`PathResponse` reads from `RegisteredRoutes`,
|
|
242
|
-
metadata. That surface is **not** auto-wired —
|
|
243
|
-
`PathResponse` falls back to the generated
|
|
244
|
-
map when nothing is generated. Either way, it
|
|
245
|
-
so response routes resolve to
|
|
241
|
+
`Rango.PathResponse` is ambient (no import) and reads from `RegisteredRoutes`,
|
|
242
|
+
which carries response payload metadata. That surface is **not** auto-wired —
|
|
243
|
+
without the augmentation below, `Rango.PathResponse` falls back to the generated
|
|
244
|
+
path/search map, or to a permissive map when nothing is generated. Either way, it
|
|
245
|
+
has no response payload metadata, so response routes resolve to
|
|
246
|
+
`ResponseEnvelope<never>`:
|
|
246
247
|
|
|
247
248
|
```typescript
|
|
248
249
|
// router.tsx
|
|
@@ -255,20 +256,44 @@ declare global {
|
|
|
255
256
|
}
|
|
256
257
|
```
|
|
257
258
|
|
|
258
|
-
With that in place, look up the response type by URL pattern:
|
|
259
|
+
With that in place, look up the response type by URL pattern (ambient, no import):
|
|
259
260
|
|
|
260
261
|
```typescript
|
|
261
|
-
import type { PathResponse } from "@rangojs/router/client";
|
|
262
|
-
|
|
263
262
|
// After include("/api", apiPatterns) in main urls
|
|
264
|
-
type Health = PathResponse<"/api/health">;
|
|
263
|
+
type Health = Rango.PathResponse<"/api/health">;
|
|
265
264
|
// = ResponseEnvelope<{ status: string; timestamp: number }>
|
|
266
265
|
|
|
267
266
|
// RSC routes return ResponseEnvelope<never>
|
|
268
|
-
type Home = PathResponse<"/">;
|
|
267
|
+
type Home = Rango.PathResponse<"/">;
|
|
269
268
|
// = ResponseEnvelope<never>
|
|
270
269
|
```
|
|
271
270
|
|
|
271
|
+
`Rango.PathResponse` also accepts a **concrete path**, so it types a `fetch`
|
|
272
|
+
wrapper whose response is inferred from the path you pass:
|
|
273
|
+
|
|
274
|
+
```typescript
|
|
275
|
+
import { href } from "@rangojs/router/client";
|
|
276
|
+
|
|
277
|
+
async function get<T extends Rango.Path>(
|
|
278
|
+
path: T,
|
|
279
|
+
): Promise<Rango.PathResponse<T>> {
|
|
280
|
+
return fetch(href(path)).then((r) => r.json());
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
const product = await get("/api/products/42"); // ResponseEnvelope<Product>
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Pattern keys (`/:id`) match exactly; a concrete path under a _nested_ dynamic
|
|
287
|
+
route can match several patterns and union their responses.
|
|
288
|
+
|
|
289
|
+
`Rango.PathResponse` reports the JSON **wire** shape, not the handler's raw
|
|
290
|
+
return: `path.json()` serializes with `JSON.stringify`, so a handler returning
|
|
291
|
+
`{ createdAt: Date }` resolves to `ResponseEnvelope<{ createdAt: string }>`. This
|
|
292
|
+
runs through the ambient `Rango.JsonSerialize<T>` transform (`Date -> string`,
|
|
293
|
+
honors `toJSON()`, drops functions/`undefined`, `bigint -> never`). The
|
|
294
|
+
`RouteResponse` surface below applies the same `Rango.JsonSerialize` transform, so
|
|
295
|
+
both response lookups report the identical wire shape.
|
|
296
|
+
|
|
272
297
|
For local/scoped response typing without global augmentation, prefer
|
|
273
298
|
`RouteResponse<typeof patterns, "routeName">` (see the section above) — it reads
|
|
274
299
|
the response payload straight from the `urls()` patterns and needs no
|
|
@@ -383,16 +408,16 @@ export const urlpatterns = urls(({ path, include }) => [
|
|
|
383
408
|
|
|
384
409
|
```typescript
|
|
385
410
|
import type { RouteResponse } from "@rangojs/router";
|
|
386
|
-
import type {
|
|
411
|
+
import type { ParamsFor } from "@rangojs/router/client";
|
|
387
412
|
|
|
388
413
|
// Scoped (before mount) -- use the module directly, no global wiring needed
|
|
389
414
|
type Stats = RouteResponse<typeof blogApiPatterns, "stats">;
|
|
390
415
|
// = ResponseEnvelope<{ views: number; visitors: number }>
|
|
391
416
|
|
|
392
417
|
// After mounting -- names get prefixed.
|
|
393
|
-
// PathResponse needs `RegisteredRoutes extends typeof router.routeMap` (see above),
|
|
418
|
+
// Rango.PathResponse needs `RegisteredRoutes extends typeof router.routeMap` (see above),
|
|
394
419
|
// otherwise it resolves to ResponseEnvelope<never>.
|
|
395
|
-
type BlogStats = PathResponse<"/blog/api/stats">;
|
|
420
|
+
type BlogStats = Rango.PathResponse<"/blog/api/stats">;
|
|
396
421
|
// = ResponseEnvelope<{ views: number; visitors: number }>
|
|
397
422
|
|
|
398
423
|
// Params work through nested includes
|
|
@@ -38,7 +38,7 @@ available globally.
|
|
|
38
38
|
instance, including response-route metadata such as `{ path, response }`.
|
|
39
39
|
- `RegisteredRoutes` — manual global hook for exposing `typeof router.routeMap`
|
|
40
40
|
to global utilities that need the exact router-builder map, especially
|
|
41
|
-
`PathResponse`.
|
|
41
|
+
`Rango.PathResponse`.
|
|
42
42
|
|
|
43
43
|
### Generated Route Type Surfaces
|
|
44
44
|
|
|
@@ -51,13 +51,13 @@ pick the one that matches what you need to type:
|
|
|
51
51
|
| `routes` | per-module `*.gen.ts` (`rango generate`) | local | local names, params, search | the global app map |
|
|
52
52
|
| `RegisteredRoutes` | manual `extends typeof router.routeMap` | global | paths, params, **response payloads** | the `Handler`/`Prerender` default (those read `GeneratedRouteMap` to avoid a `router.tsx` cycle) |
|
|
53
53
|
|
|
54
|
-
Key consequence: `href()` and `
|
|
55
|
-
present — they prefer `RegisteredRoutes` when you wire it, otherwise fall back to
|
|
54
|
+
Key consequence: `href()` and the ambient `Rango.Path` type are typed from
|
|
55
|
+
whichever map is present — they prefer `RegisteredRoutes` when you wire it, otherwise fall back to
|
|
56
56
|
the auto-generated `GeneratedRouteMap`, so **`rango generate` alone gives you
|
|
57
57
|
path-checked `href()`** with no manual augmentation. Response and MIME payload
|
|
58
58
|
inference is the exception: it comes only from `typeof router.routeMap` (via
|
|
59
59
|
`RegisteredRoutes`), because `GeneratedRouteMap` carries paths + search but no
|
|
60
|
-
payloads — so `PathResponse` resolves to `ResponseEnvelope<never>` until you wire
|
|
60
|
+
payloads — so `Rango.PathResponse` resolves to `ResponseEnvelope<never>` until you wire
|
|
61
61
|
`RegisteredRoutes`.
|
|
62
62
|
|
|
63
63
|
Recommended setup:
|
|
@@ -121,7 +121,7 @@ There are two runtime/type surfaces with similar names:
|
|
|
121
121
|
App code should not pass or import `$$routeNames` directly.
|
|
122
122
|
- `router.routeMap` is the public router instance property for type extraction.
|
|
123
123
|
Use `typeof router.routeMap` when augmenting `Rango.RegisteredRoutes` for
|
|
124
|
-
global response payload helpers such as `PathResponse`.
|
|
124
|
+
global response payload helpers such as `Rango.PathResponse`.
|
|
125
125
|
|
|
126
126
|
Do not document or use a public `router.routeNames` API unless one is
|
|
127
127
|
intentionally added. Today, the public extraction surface is `router.routeMap`;
|
|
@@ -196,10 +196,10 @@ function ShopNav() {
|
|
|
196
196
|
}
|
|
197
197
|
```
|
|
198
198
|
|
|
199
|
-
`href()` and `
|
|
200
|
-
otherwise from the auto-generated `GeneratedRouteMap` — so `rango generate`
|
|
201
|
-
type-checks `href()` paths with no manual augmentation. The augmentation
|
|
202
|
-
only needed for **`PathResponse`** (response-payload inference), which
|
|
199
|
+
`href()` and the `Rango.Path` type read from `RegisteredRoutes` when you augment
|
|
200
|
+
it, otherwise from the auto-generated `GeneratedRouteMap` — so `rango generate`
|
|
201
|
+
alone type-checks `href()` paths with no manual augmentation. The augmentation
|
|
202
|
+
below is only needed for **`Rango.PathResponse`** (response-payload inference), which
|
|
203
203
|
`GeneratedRouteMap` cannot provide:
|
|
204
204
|
|
|
205
205
|
```typescript
|
|
@@ -210,6 +210,93 @@ declare global {
|
|
|
210
210
|
}
|
|
211
211
|
```
|
|
212
212
|
|
|
213
|
+
For wrapper helpers, type the path parameter as `Rango.Path`. It is ambient (no
|
|
214
|
+
import) and shares `href()`'s compile-time path checking, so a wrapper stays in
|
|
215
|
+
sync with your routes automatically:
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
import { href } from "@rangojs/router/client";
|
|
219
|
+
|
|
220
|
+
export const appHref = (path: Rango.Path): string => href(path);
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
For response-route payloads, `Rango.PathResponse<T>` is the ambient lookup. It
|
|
224
|
+
accepts a route _pattern_ **or** a concrete path, so it also serves as the return
|
|
225
|
+
type of a typed `fetch` wrapper. It only resolves once `RegisteredRoutes` carries
|
|
226
|
+
response metadata:
|
|
227
|
+
|
|
228
|
+
```typescript
|
|
229
|
+
import { href } from "@rangojs/router/client";
|
|
230
|
+
|
|
231
|
+
type Product = Rango.PathResponse<"/api/products/:id">; // by pattern
|
|
232
|
+
type Same = Rango.PathResponse<"/api/products/42">; // by concrete path
|
|
233
|
+
|
|
234
|
+
// Response inferred from the concrete path passed in:
|
|
235
|
+
async function get<T extends Rango.Path>(
|
|
236
|
+
path: T,
|
|
237
|
+
): Promise<Rango.PathResponse<T>> {
|
|
238
|
+
return fetch(href(path)).then((r) => r.json());
|
|
239
|
+
}
|
|
240
|
+
const product = await get("/api/products/42"); // ResponseEnvelope<Product>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Pattern keys (`/:id`) match exactly; a concrete path under a _nested_ dynamic
|
|
244
|
+
route can match several patterns and union their responses.
|
|
245
|
+
|
|
246
|
+
`Rango.PathResponse` describes the JSON **wire** shape, not the handler's raw
|
|
247
|
+
return. A `path.json()` handler returning `{ createdAt: Date }` resolves here to
|
|
248
|
+
`ResponseEnvelope<{ createdAt: string }>`, matching what `r.json()` yields. This
|
|
249
|
+
is applied via the ambient `Rango.JsonSerialize<T>` transform (`Date -> string`,
|
|
250
|
+
honors `toJSON()`, drops functions/`undefined`, `bigint -> never`). A separate
|
|
251
|
+
`Rango.FlightSerialize<T>` models the higher-fidelity RSC Flight boundary
|
|
252
|
+
(loaders / RSC props, where `Date` is preserved) — do **not** use it for
|
|
253
|
+
`path.json()`.
|
|
254
|
+
|
|
255
|
+
### Overriding serialization globally
|
|
256
|
+
|
|
257
|
+
For your own types, the zero-config way to control the JSON wire shape is a
|
|
258
|
+
`toJSON()` method — `Rango.JsonSerialize` honors it, and it matches the runtime
|
|
259
|
+
exactly (`JSON.stringify` calls `toJSON()`):
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
class Money {
|
|
263
|
+
constructor(private cents: number) {}
|
|
264
|
+
toJSON(): number {
|
|
265
|
+
return this.cents;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Rango.JsonSerialize<Money> is number; Rango.PathResponse reflects it.
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
To override a transform for types you **don't** own (or for the Flight boundary,
|
|
272
|
+
which has no `toJSON()`), augment its override slot. Because `Rango.JsonSerialize`
|
|
273
|
+
/ `Rango.FlightSerialize` are type _aliases_ (TS can't merge those), you provide a
|
|
274
|
+
single member that is your **complete** transform, delegating to the built-in for
|
|
275
|
+
the cases you don't change:
|
|
276
|
+
|
|
277
|
+
```typescript
|
|
278
|
+
declare global {
|
|
279
|
+
namespace Rango {
|
|
280
|
+
interface JsonSerializeOverride<T> {
|
|
281
|
+
app: T extends Decimal ? string : Rango.JsonSerializeBuiltin<T>;
|
|
282
|
+
}
|
|
283
|
+
interface FlightSerializeOverride<T> {
|
|
284
|
+
app: T extends Money ? number : Rango.FlightSerializeBuiltin<T>;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// Rango.JsonSerialize<Decimal> -> string; Rango.FlightSerialize<Money> -> number;
|
|
289
|
+
// everything else stays on the built-in, recursively (nested fields too).
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Rules: provide **exactly one** member (the slot is read as
|
|
293
|
+
`Override<T>[keyof Override<T>]`, so multiple members union and conflict).
|
|
294
|
+
Overrides win over `toJSON()` and apply at every nesting level. Caveat for JSON:
|
|
295
|
+
the `path.json()` runtime is plain `JSON.stringify`, which only honors `toJSON()`,
|
|
296
|
+
so a `JsonSerializeOverride` that disagrees with what the runtime emits will lie —
|
|
297
|
+
prefer `toJSON()` for your own types and use the slot only for types you can't
|
|
298
|
+
modify.
|
|
299
|
+
|
|
213
300
|
See `/links` for full URL generation guide.
|
|
214
301
|
|
|
215
302
|
## Environment Type Setup
|
|
@@ -814,9 +901,9 @@ export default router;
|
|
|
814
901
|
// 4. Run `npx rango generate src/router.tsx` to generate
|
|
815
902
|
// router.named-routes.gen.ts (auto-registers GeneratedRouteMap globally).
|
|
816
903
|
// No manual RegisteredRoutes declaration is needed for named-route handlers,
|
|
817
|
-
// ctx.reverse, prerender, href(), or
|
|
904
|
+
// ctx.reverse, prerender, href(), or Rango.Path. Add `RegisteredRoutes
|
|
818
905
|
// extends typeof router.routeMap` when global response payload helpers such
|
|
819
|
-
// as PathResponse need the richer router.routeMap metadata.
|
|
906
|
+
// as Rango.PathResponse need the richer router.routeMap metadata.
|
|
820
907
|
|
|
821
908
|
// 5. loaders/*.ts - Type-safe loaders
|
|
822
909
|
export const ProductLoader = createLoader(async (ctx) => {
|
|
@@ -19,10 +19,42 @@ export interface TestVars {
|
|
|
19
19
|
requestId?: string;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* A userland domain type that controls its own JSON wire shape via `toJSON()`.
|
|
24
|
+
* This is the augmentation hook: `Rango.JsonSerialize` honors `toJSON()`, so a
|
|
25
|
+
* consumer adjusts how their type serializes with no registry API.
|
|
26
|
+
*/
|
|
27
|
+
export class Money {
|
|
28
|
+
constructor(public cents: number) {}
|
|
29
|
+
toJSON(): number {
|
|
30
|
+
return this.cents;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Mirrors `typeof router.routeMap`: the same routes as the generated map, plus a
|
|
36
|
+
* response route whose payload carries a userland class (`Money`, with
|
|
37
|
+
* `toJSON()`) and a `Date` — used to assert `Rango.PathResponse` reports the
|
|
38
|
+
* serialized JSON wire shape.
|
|
39
|
+
*/
|
|
40
|
+
export interface TestRegisteredRoutes {
|
|
41
|
+
readonly home: "/";
|
|
42
|
+
readonly "blog.post": "/blog/:slug";
|
|
43
|
+
readonly search: {
|
|
44
|
+
readonly path: "/search";
|
|
45
|
+
readonly search: { readonly q: "string"; readonly page: "number?" };
|
|
46
|
+
};
|
|
47
|
+
readonly order: {
|
|
48
|
+
readonly path: "/orders/:id";
|
|
49
|
+
readonly response: { id: string; total: Money; placedAt: Date };
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
22
53
|
declare global {
|
|
23
54
|
namespace Rango {
|
|
24
55
|
interface Env extends TestBindings {}
|
|
25
56
|
interface Vars extends TestVars {}
|
|
57
|
+
interface RegisteredRoutes extends TestRegisteredRoutes {}
|
|
26
58
|
// Mirrors the shape emitted into router.named-routes.gen.ts: plain string
|
|
27
59
|
// patterns, plus { path, search } objects for routes with a search schema.
|
|
28
60
|
interface GeneratedRouteMap {
|
|
@@ -33,5 +65,17 @@ declare global {
|
|
|
33
65
|
readonly search: { readonly q: "string"; readonly page: "number?" };
|
|
34
66
|
};
|
|
35
67
|
}
|
|
68
|
+
|
|
69
|
+
// Userland serialization overrides: full-transform replacement that
|
|
70
|
+
// special-cases one type and delegates the rest to the built-in. Isolated to
|
|
71
|
+
// this augment-check program, so the main suite's built-in behavior (e.g.
|
|
72
|
+
// JsonSerialize<bigint> = never) is unaffected — demonstrating overrides are
|
|
73
|
+
// per-project augmentation.
|
|
74
|
+
interface JsonSerializeOverride<T> {
|
|
75
|
+
app: T extends bigint ? string : Rango.JsonSerializeBuiltin<T>;
|
|
76
|
+
}
|
|
77
|
+
interface FlightSerializeOverride<T> {
|
|
78
|
+
app: T extends Money ? number : Rango.FlightSerializeBuiltin<T>;
|
|
79
|
+
}
|
|
36
80
|
}
|
|
37
81
|
}
|
|
@@ -9,7 +9,8 @@ import "./augment.js";
|
|
|
9
9
|
import type { Handler, RouteParams, RouteSearchParams } from "../index.js";
|
|
10
10
|
import type { DefaultRouteName } from "../types/global-namespace.js";
|
|
11
11
|
import { href } from "../href-client.js";
|
|
12
|
-
import type {
|
|
12
|
+
import type { ResponseEnvelope } from "../urls.js";
|
|
13
|
+
import type { Money, TestBindings } from "./augment.js";
|
|
13
14
|
|
|
14
15
|
type Expect<T extends true> = T;
|
|
15
16
|
type Equal<A, B> =
|
|
@@ -51,7 +52,7 @@ type _search = Expect<
|
|
|
51
52
|
Equal<RouteSearchParams<"search">, { q: string | undefined; page?: number }>
|
|
52
53
|
>;
|
|
53
54
|
|
|
54
|
-
// href /
|
|
55
|
+
// href / Rango.Path read GeneratedRouteMap even without a manual RegisteredRoutes
|
|
55
56
|
// augmentation — this is the core of the "rango generate alone enables typed
|
|
56
57
|
// href()" guarantee. The paths below come from the generated map in augment.ts.
|
|
57
58
|
href("/");
|
|
@@ -60,5 +61,57 @@ href("/search");
|
|
|
60
61
|
// @ts-expect-error - path is not in the generated route map
|
|
61
62
|
href("/not-a-route");
|
|
62
63
|
|
|
64
|
+
// Rango.Path is the ambient input type for wrapper functions around href().
|
|
65
|
+
// No import needed — it reads the same generated map href() does.
|
|
66
|
+
function wrappedHref(path: Rango.Path): string {
|
|
67
|
+
return href(path);
|
|
68
|
+
}
|
|
69
|
+
const arrowHref = (path: Rango.Path): string => href(path);
|
|
70
|
+
|
|
71
|
+
wrappedHref("/blog/anything");
|
|
72
|
+
arrowHref("/search?q=hello");
|
|
73
|
+
// @ts-expect-error - wrapper preserves the same generated-map validation
|
|
74
|
+
wrappedHref("/not-a-route");
|
|
75
|
+
|
|
76
|
+
// Userland serialization augmentation: a consumer's custom class adjusts its JSON
|
|
77
|
+
// wire shape via toJSON(), and Rango.PathResponse reports the serialized payload
|
|
78
|
+
// (Money -> number, Date -> string) — both by pattern and by concrete path.
|
|
79
|
+
type _orderWireByPattern = Expect<
|
|
80
|
+
Equal<
|
|
81
|
+
Rango.PathResponse<"/orders/:id">,
|
|
82
|
+
ResponseEnvelope<{ id: string; total: number; placedAt: string }>
|
|
83
|
+
>
|
|
84
|
+
>;
|
|
85
|
+
type _orderWireByPath = Expect<
|
|
86
|
+
Equal<
|
|
87
|
+
Rango.PathResponse<"/orders/42">,
|
|
88
|
+
ResponseEnvelope<{ id: string; total: number; placedAt: string }>
|
|
89
|
+
>
|
|
90
|
+
>;
|
|
91
|
+
|
|
92
|
+
// Project serialization overrides: the consumer augments JsonSerializeOverride /
|
|
93
|
+
// FlightSerializeOverride (see augment.ts) with a full transform that delegates to
|
|
94
|
+
// the built-in, and the transforms honor it — winning over the built-in rules.
|
|
95
|
+
// bigint normally JSON-serializes to `never`; Money is a class React Flight would
|
|
96
|
+
// otherwise reject structurally. Delegation keeps every other type (incl. the
|
|
97
|
+
// /orders payload above) on the built-in behavior.
|
|
98
|
+
type _jsonOverride = Expect<Equal<Rango.JsonSerialize<bigint>, string>>;
|
|
99
|
+
type _jsonOverrideNested = Expect<
|
|
100
|
+
Equal<
|
|
101
|
+
Rango.JsonSerialize<{ id: bigint; name: string }>,
|
|
102
|
+
{ id: string; name: string }
|
|
103
|
+
>
|
|
104
|
+
>;
|
|
105
|
+
type _flightOverride = Expect<Equal<Rango.FlightSerialize<Money>, number>>;
|
|
106
|
+
|
|
63
107
|
// Reference the top-level assertion aliases so they are unambiguously evaluated.
|
|
64
|
-
export type _Assertions = [
|
|
108
|
+
export type _Assertions = [
|
|
109
|
+
_routeName,
|
|
110
|
+
_params,
|
|
111
|
+
_search,
|
|
112
|
+
_orderWireByPattern,
|
|
113
|
+
_orderWireByPath,
|
|
114
|
+
_jsonOverride,
|
|
115
|
+
_jsonOverrideNested,
|
|
116
|
+
_flightOverride,
|
|
117
|
+
];
|
|
@@ -32,27 +32,35 @@ import { shallowEqual } from "./shallow-equal.js";
|
|
|
32
32
|
* const lastCrumb = useHandle(Breadcrumbs, (data) => data.at(-1));
|
|
33
33
|
* ```
|
|
34
34
|
*/
|
|
35
|
-
export function useHandle<T, A>(handle: Handle<T, A>): A
|
|
35
|
+
export function useHandle<T, A>(handle: Handle<T, A>): Rango.FlightSerialize<A>;
|
|
36
36
|
export function useHandle<T, A, S>(
|
|
37
37
|
handle: Handle<T, A>,
|
|
38
|
-
selector: (data: A) => S,
|
|
38
|
+
selector: (data: Rango.FlightSerialize<A>) => S,
|
|
39
39
|
): S;
|
|
40
40
|
export function useHandle<T, A, S>(
|
|
41
41
|
handle: Handle<T, A>,
|
|
42
|
-
selector?: (data: A) => S,
|
|
43
|
-
): A | S {
|
|
42
|
+
selector?: (data: Rango.FlightSerialize<A>) => S,
|
|
43
|
+
): Rango.FlightSerialize<A> | S {
|
|
44
44
|
const ctx = useContext(NavigationStoreContext);
|
|
45
45
|
|
|
46
46
|
// Initial state from context event controller, or empty fallback without provider.
|
|
47
|
-
const [value, setValue] = useState<A | S>(() => {
|
|
47
|
+
const [value, setValue] = useState<Rango.FlightSerialize<A> | S>(() => {
|
|
48
48
|
if (!ctx) {
|
|
49
|
-
const collected = collectHandleData(
|
|
49
|
+
const collected = collectHandleData(
|
|
50
|
+
handle,
|
|
51
|
+
{},
|
|
52
|
+
[],
|
|
53
|
+
) as Rango.FlightSerialize<A>;
|
|
50
54
|
return selector ? selector(collected) : collected;
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
// On client, use event controller state
|
|
54
58
|
const state = ctx.eventController.getHandleState();
|
|
55
|
-
const collected = collectHandleData(
|
|
59
|
+
const collected = collectHandleData(
|
|
60
|
+
handle,
|
|
61
|
+
state.data,
|
|
62
|
+
state.segmentOrder,
|
|
63
|
+
) as Rango.FlightSerialize<A>;
|
|
56
64
|
return selector ? selector(collected) : collected;
|
|
57
65
|
});
|
|
58
66
|
const [optimisticValue, setOptimisticValue] = useOptimistic(value);
|
|
@@ -76,7 +84,7 @@ export function useHandle<T, A, S>(
|
|
|
76
84
|
handle,
|
|
77
85
|
currentHandleState.data,
|
|
78
86
|
currentHandleState.segmentOrder,
|
|
79
|
-
)
|
|
87
|
+
) as Rango.FlightSerialize<A>;
|
|
80
88
|
const currentValue = selectorRef.current
|
|
81
89
|
? selectorRef.current(currentCollected)
|
|
82
90
|
: currentCollected;
|
|
@@ -93,7 +101,7 @@ export function useHandle<T, A, S>(
|
|
|
93
101
|
handle,
|
|
94
102
|
state.data,
|
|
95
103
|
state.segmentOrder,
|
|
96
|
-
)
|
|
104
|
+
) as Rango.FlightSerialize<A>;
|
|
97
105
|
const nextValue = selectorRef.current
|
|
98
106
|
? selectorRef.current(collected)
|
|
99
107
|
: collected;
|
package/src/client.tsx
CHANGED
|
@@ -409,13 +409,10 @@ export {
|
|
|
409
409
|
type LocationStateOptions,
|
|
410
410
|
} from "./browser/react/location-state.js";
|
|
411
411
|
|
|
412
|
-
// Type-safe href for client-side path validation
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
type PatternToPath,
|
|
417
|
-
type PathResponse,
|
|
418
|
-
} from "./href-client.js";
|
|
412
|
+
// Type-safe href for client-side path validation. The path and response types
|
|
413
|
+
// are ambient as `Rango.Path` / `Rango.PathResponse` (declared in
|
|
414
|
+
// href-client.ts) — no import needed.
|
|
415
|
+
export { href, type PatternToPath } from "./href-client.js";
|
|
419
416
|
|
|
420
417
|
// Response envelope types for consuming JSON response routes
|
|
421
418
|
export type { ResponseEnvelope, ResponseError } from "./urls.js";
|