@rangojs/router 0.0.0-experimental.debug-cache-fix → 0.0.0-experimental.dfa55db4
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 +76 -18
- package/dist/__internal.d.ts +83 -0
- package/dist/__internal.d.ts.map +1 -0
- package/dist/__internal.js +19 -0
- package/dist/__internal.js.map +1 -0
- package/dist/__mocks__/version.d.ts +7 -0
- package/dist/__mocks__/version.d.ts.map +1 -0
- package/dist/__mocks__/version.js +7 -0
- package/dist/__mocks__/version.js.map +1 -0
- package/dist/__tests__/client-href.test.d.ts +2 -0
- package/dist/__tests__/client-href.test.d.ts.map +1 -0
- package/dist/__tests__/client-href.test.js +74 -0
- package/dist/__tests__/client-href.test.js.map +1 -0
- package/dist/__tests__/component-utils.test.d.ts +2 -0
- package/dist/__tests__/component-utils.test.d.ts.map +1 -0
- package/dist/__tests__/component-utils.test.js +51 -0
- package/dist/__tests__/component-utils.test.js.map +1 -0
- package/dist/__tests__/event-controller.test.d.ts +2 -0
- package/dist/__tests__/event-controller.test.d.ts.map +1 -0
- package/dist/__tests__/event-controller.test.js +538 -0
- package/dist/__tests__/event-controller.test.js.map +1 -0
- package/dist/__tests__/helpers/route-tree.d.ts +118 -0
- package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
- package/dist/__tests__/helpers/route-tree.js +374 -0
- package/dist/__tests__/helpers/route-tree.js.map +1 -0
- package/dist/__tests__/match-result.test.d.ts +2 -0
- package/dist/__tests__/match-result.test.d.ts.map +1 -0
- package/dist/__tests__/match-result.test.js +154 -0
- package/dist/__tests__/match-result.test.js.map +1 -0
- package/dist/__tests__/navigation-store.test.d.ts +2 -0
- package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
- package/dist/__tests__/navigation-store.test.js +440 -0
- package/dist/__tests__/navigation-store.test.js.map +1 -0
- package/dist/__tests__/partial-update.test.d.ts +2 -0
- package/dist/__tests__/partial-update.test.d.ts.map +1 -0
- package/dist/__tests__/partial-update.test.js +1009 -0
- package/dist/__tests__/partial-update.test.js.map +1 -0
- package/dist/__tests__/reverse-types.test.d.ts +8 -0
- package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
- package/dist/__tests__/reverse-types.test.js +656 -0
- package/dist/__tests__/reverse-types.test.js.map +1 -0
- package/dist/__tests__/route-definition.test.d.ts +2 -0
- package/dist/__tests__/route-definition.test.d.ts.map +1 -0
- package/dist/__tests__/route-definition.test.js +55 -0
- package/dist/__tests__/route-definition.test.js.map +1 -0
- package/dist/__tests__/router-helpers.test.d.ts +2 -0
- package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
- package/dist/__tests__/router-helpers.test.js +377 -0
- package/dist/__tests__/router-helpers.test.js.map +1 -0
- package/dist/__tests__/router-integration-2.test.d.ts +2 -0
- package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
- package/dist/__tests__/router-integration-2.test.js +426 -0
- package/dist/__tests__/router-integration-2.test.js.map +1 -0
- package/dist/__tests__/router-integration.test.d.ts +2 -0
- package/dist/__tests__/router-integration.test.d.ts.map +1 -0
- package/dist/__tests__/router-integration.test.js +1051 -0
- package/dist/__tests__/router-integration.test.js.map +1 -0
- package/dist/__tests__/search-params.test.d.ts +5 -0
- package/dist/__tests__/search-params.test.d.ts.map +1 -0
- package/dist/__tests__/search-params.test.js +306 -0
- package/dist/__tests__/search-params.test.js.map +1 -0
- package/dist/__tests__/segment-system.test.d.ts +2 -0
- package/dist/__tests__/segment-system.test.d.ts.map +1 -0
- package/dist/__tests__/segment-system.test.js +627 -0
- package/dist/__tests__/segment-system.test.js.map +1 -0
- package/dist/__tests__/static-handler-types.test.d.ts +8 -0
- package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
- package/dist/__tests__/static-handler-types.test.js +63 -0
- package/dist/__tests__/static-handler-types.test.js.map +1 -0
- package/dist/__tests__/urls.test.d.ts +2 -0
- package/dist/__tests__/urls.test.d.ts.map +1 -0
- package/dist/__tests__/urls.test.js +421 -0
- package/dist/__tests__/urls.test.js.map +1 -0
- package/dist/__tests__/use-mount.test.d.ts +2 -0
- package/dist/__tests__/use-mount.test.d.ts.map +1 -0
- package/dist/__tests__/use-mount.test.js +35 -0
- package/dist/__tests__/use-mount.test.js.map +1 -0
- package/dist/bin/rango.d.ts +2 -0
- package/dist/bin/rango.d.ts.map +1 -0
- package/dist/bin/rango.js +130 -47
- package/dist/bin/rango.js.map +1 -0
- package/dist/browser/event-controller.d.ts +191 -0
- package/dist/browser/event-controller.d.ts.map +1 -0
- package/dist/browser/event-controller.js +559 -0
- package/dist/browser/event-controller.js.map +1 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/link-interceptor.d.ts +38 -0
- package/dist/browser/link-interceptor.d.ts.map +1 -0
- package/dist/browser/link-interceptor.js +99 -0
- package/dist/browser/link-interceptor.js.map +1 -0
- package/dist/browser/logging.d.ts +10 -0
- package/dist/browser/logging.d.ts.map +1 -0
- package/dist/browser/logging.js +29 -0
- package/dist/browser/logging.js.map +1 -0
- package/dist/browser/lru-cache.d.ts +17 -0
- package/dist/browser/lru-cache.d.ts.map +1 -0
- package/dist/browser/lru-cache.js +50 -0
- package/dist/browser/lru-cache.js.map +1 -0
- package/dist/browser/merge-segment-loaders.d.ts +39 -0
- package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
- package/dist/browser/merge-segment-loaders.js +102 -0
- package/dist/browser/merge-segment-loaders.js.map +1 -0
- package/dist/browser/navigation-bridge.d.ts +102 -0
- package/dist/browser/navigation-bridge.d.ts.map +1 -0
- package/dist/browser/navigation-bridge.js +708 -0
- package/dist/browser/navigation-bridge.js.map +1 -0
- package/dist/browser/navigation-client.d.ts +25 -0
- package/dist/browser/navigation-client.d.ts.map +1 -0
- package/dist/browser/navigation-client.js +157 -0
- package/dist/browser/navigation-client.js.map +1 -0
- package/dist/browser/navigation-store.d.ts +101 -0
- package/dist/browser/navigation-store.d.ts.map +1 -0
- package/dist/browser/navigation-store.js +625 -0
- package/dist/browser/navigation-store.js.map +1 -0
- package/dist/browser/partial-update.d.ts +75 -0
- package/dist/browser/partial-update.d.ts.map +1 -0
- package/dist/browser/partial-update.js +426 -0
- package/dist/browser/partial-update.js.map +1 -0
- package/dist/browser/react/Link.d.ts +86 -0
- package/dist/browser/react/Link.d.ts.map +1 -0
- package/dist/browser/react/Link.js +128 -0
- package/dist/browser/react/Link.js.map +1 -0
- package/dist/browser/react/NavigationProvider.d.ts +63 -0
- package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
- package/dist/browser/react/NavigationProvider.js +216 -0
- package/dist/browser/react/NavigationProvider.js.map +1 -0
- package/dist/browser/react/ScrollRestoration.d.ts +75 -0
- package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
- package/dist/browser/react/ScrollRestoration.js +57 -0
- package/dist/browser/react/ScrollRestoration.js.map +1 -0
- package/dist/browser/react/context.d.ts +46 -0
- package/dist/browser/react/context.d.ts.map +1 -0
- package/dist/browser/react/context.js +10 -0
- package/dist/browser/react/context.js.map +1 -0
- package/dist/browser/react/index.d.ts +11 -0
- package/dist/browser/react/index.d.ts.map +1 -0
- package/dist/browser/react/index.js +22 -0
- package/dist/browser/react/index.js.map +1 -0
- package/dist/browser/react/location-state-shared.d.ts +63 -0
- package/dist/browser/react/location-state-shared.d.ts.map +1 -0
- package/dist/browser/react/location-state-shared.js +81 -0
- package/dist/browser/react/location-state-shared.js.map +1 -0
- package/dist/browser/react/location-state.d.ts +23 -0
- package/dist/browser/react/location-state.d.ts.map +1 -0
- package/dist/browser/react/location-state.js +29 -0
- package/dist/browser/react/location-state.js.map +1 -0
- package/dist/browser/react/mount-context.d.ts +24 -0
- package/dist/browser/react/mount-context.d.ts.map +1 -0
- package/dist/browser/react/mount-context.js +24 -0
- package/dist/browser/react/mount-context.js.map +1 -0
- package/dist/browser/react/use-action.d.ts +64 -0
- package/dist/browser/react/use-action.d.ts.map +1 -0
- package/dist/browser/react/use-action.js +134 -0
- package/dist/browser/react/use-action.js.map +1 -0
- package/dist/browser/react/use-client-cache.d.ts +41 -0
- package/dist/browser/react/use-client-cache.d.ts.map +1 -0
- package/dist/browser/react/use-client-cache.js +39 -0
- package/dist/browser/react/use-client-cache.js.map +1 -0
- package/dist/browser/react/use-handle.d.ts +31 -0
- package/dist/browser/react/use-handle.d.ts.map +1 -0
- package/dist/browser/react/use-handle.js +144 -0
- package/dist/browser/react/use-handle.js.map +1 -0
- package/dist/browser/react/use-href.d.ts +33 -0
- package/dist/browser/react/use-href.d.ts.map +1 -0
- package/dist/browser/react/use-href.js +39 -0
- package/dist/browser/react/use-href.js.map +1 -0
- package/dist/browser/react/use-link-status.d.ts +37 -0
- package/dist/browser/react/use-link-status.d.ts.map +1 -0
- package/dist/browser/react/use-link-status.js +99 -0
- package/dist/browser/react/use-link-status.js.map +1 -0
- package/dist/browser/react/use-mount.d.ts +25 -0
- package/dist/browser/react/use-mount.d.ts.map +1 -0
- package/dist/browser/react/use-mount.js +30 -0
- package/dist/browser/react/use-mount.js.map +1 -0
- package/dist/browser/react/use-navigation.d.ts +27 -0
- package/dist/browser/react/use-navigation.d.ts.map +1 -0
- package/dist/browser/react/use-navigation.js +87 -0
- package/dist/browser/react/use-navigation.js.map +1 -0
- package/dist/browser/react/use-segments.d.ts +38 -0
- package/dist/browser/react/use-segments.d.ts.map +1 -0
- package/dist/browser/react/use-segments.js +130 -0
- package/dist/browser/react/use-segments.js.map +1 -0
- package/dist/browser/request-controller.d.ts +26 -0
- package/dist/browser/request-controller.d.ts.map +1 -0
- package/dist/browser/request-controller.js +147 -0
- package/dist/browser/request-controller.js.map +1 -0
- package/dist/browser/rsc-router.d.ts +129 -0
- package/dist/browser/rsc-router.d.ts.map +1 -0
- package/dist/browser/rsc-router.js +195 -0
- package/dist/browser/rsc-router.js.map +1 -0
- package/dist/browser/scroll-restoration.d.ts +93 -0
- package/dist/browser/scroll-restoration.d.ts.map +1 -0
- package/dist/browser/scroll-restoration.js +321 -0
- package/dist/browser/scroll-restoration.js.map +1 -0
- package/dist/browser/segment-structure-assert.d.ts +17 -0
- package/dist/browser/segment-structure-assert.d.ts.map +1 -0
- package/dist/browser/segment-structure-assert.js +59 -0
- package/dist/browser/segment-structure-assert.js.map +1 -0
- package/dist/browser/server-action-bridge.d.ts +26 -0
- package/dist/browser/server-action-bridge.d.ts.map +1 -0
- package/dist/browser/server-action-bridge.js +668 -0
- package/dist/browser/server-action-bridge.js.map +1 -0
- package/dist/browser/shallow.d.ts +12 -0
- package/dist/browser/shallow.d.ts.map +1 -0
- package/dist/browser/shallow.js +34 -0
- package/dist/browser/shallow.js.map +1 -0
- package/dist/browser/types.d.ts +369 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/browser/types.js +2 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
- package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-cli.test.js +237 -0
- package/dist/build/__tests__/generate-cli.test.js.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.js +119 -0
- package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.js +620 -0
- package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.js +308 -0
- package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
- package/dist/build/generate-manifest.d.ts +81 -0
- package/dist/build/generate-manifest.d.ts.map +1 -0
- package/dist/build/generate-manifest.js +276 -0
- package/dist/build/generate-manifest.js.map +1 -0
- package/dist/build/generate-route-types.d.ts +115 -0
- package/dist/build/generate-route-types.d.ts.map +1 -0
- package/dist/build/generate-route-types.js +740 -0
- package/dist/build/generate-route-types.js.map +1 -0
- package/dist/build/index.d.ts +21 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +21 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/route-trie.d.ts +71 -0
- package/dist/build/route-trie.d.ts.map +1 -0
- package/dist/build/route-trie.js +175 -0
- package/dist/build/route-trie.js.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.js +208 -0
- package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
- package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
- package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
- package/dist/cache/__tests__/document-cache.test.js +345 -0
- package/dist/cache/__tests__/document-cache.test.js.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
- package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
- package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-store.test.js +367 -0
- package/dist/cache/__tests__/memory-store.test.js.map +1 -0
- package/dist/cache/cache-scope.d.ts +102 -0
- package/dist/cache/cache-scope.d.ts.map +1 -0
- package/dist/cache/cache-scope.js +440 -0
- package/dist/cache/cache-scope.js.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
- package/dist/cache/cf/cf-cache-store.d.ts +165 -0
- package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
- package/dist/cache/cf/cf-cache-store.js +242 -0
- package/dist/cache/cf/cf-cache-store.js.map +1 -0
- package/dist/cache/cf/index.d.ts +14 -0
- package/dist/cache/cf/index.d.ts.map +1 -0
- package/dist/cache/cf/index.js +17 -0
- package/dist/cache/cf/index.js.map +1 -0
- package/dist/cache/document-cache.d.ts +64 -0
- package/dist/cache/document-cache.d.ts.map +1 -0
- package/dist/cache/document-cache.js +228 -0
- package/dist/cache/document-cache.js.map +1 -0
- package/dist/cache/index.d.ts +19 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +21 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/memory-segment-store.d.ts +110 -0
- package/dist/cache/memory-segment-store.d.ts.map +1 -0
- package/dist/cache/memory-segment-store.js +117 -0
- package/dist/cache/memory-segment-store.js.map +1 -0
- package/dist/cache/memory-store.d.ts +41 -0
- package/dist/cache/memory-store.d.ts.map +1 -0
- package/dist/cache/memory-store.js +191 -0
- package/dist/cache/memory-store.js.map +1 -0
- package/dist/cache/types.d.ts +317 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +12 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/client.d.ts +248 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +367 -0
- package/dist/client.js.map +1 -0
- package/dist/client.rsc.d.ts +26 -0
- package/dist/client.rsc.d.ts.map +1 -0
- package/dist/client.rsc.js +46 -0
- package/dist/client.rsc.js.map +1 -0
- package/dist/component-utils.d.ts +36 -0
- package/dist/component-utils.d.ts.map +1 -0
- package/dist/component-utils.js +61 -0
- package/dist/component-utils.js.map +1 -0
- package/dist/components/DefaultDocument.d.ts +13 -0
- package/dist/components/DefaultDocument.d.ts.map +1 -0
- package/dist/components/DefaultDocument.js +15 -0
- package/dist/components/DefaultDocument.js.map +1 -0
- package/dist/debug.d.ts +58 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +157 -0
- package/dist/debug.js.map +1 -0
- package/dist/default-error-boundary.d.ts +11 -0
- package/dist/default-error-boundary.d.ts.map +1 -0
- package/dist/default-error-boundary.js +45 -0
- package/dist/default-error-boundary.js.map +1 -0
- package/dist/deps/browser.d.ts +2 -0
- package/dist/deps/browser.d.ts.map +1 -0
- package/dist/deps/browser.js +3 -0
- package/dist/deps/browser.js.map +1 -0
- package/dist/deps/html-stream-client.d.ts +2 -0
- package/dist/deps/html-stream-client.d.ts.map +1 -0
- package/dist/deps/html-stream-client.js +3 -0
- package/dist/deps/html-stream-client.js.map +1 -0
- package/dist/deps/html-stream-server.d.ts +2 -0
- package/dist/deps/html-stream-server.d.ts.map +1 -0
- package/dist/deps/html-stream-server.js +3 -0
- package/dist/deps/html-stream-server.js.map +1 -0
- package/dist/deps/rsc.d.ts +2 -0
- package/dist/deps/rsc.d.ts.map +1 -0
- package/dist/deps/rsc.js +4 -0
- package/dist/deps/rsc.js.map +1 -0
- package/dist/deps/ssr.d.ts +2 -0
- package/dist/deps/ssr.d.ts.map +1 -0
- package/dist/deps/ssr.js +3 -0
- package/dist/deps/ssr.js.map +1 -0
- package/dist/errors.d.ts +174 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +241 -0
- package/dist/errors.js.map +1 -0
- package/dist/handle.d.ts +78 -0
- package/dist/handle.d.ts.map +1 -0
- package/dist/handle.js +82 -0
- package/dist/handle.js.map +1 -0
- package/dist/handles/MetaTags.d.ts +14 -0
- package/dist/handles/MetaTags.d.ts.map +1 -0
- package/dist/handles/MetaTags.js +136 -0
- package/dist/handles/MetaTags.js.map +1 -0
- package/dist/handles/index.d.ts +6 -0
- package/dist/handles/index.d.ts.map +1 -0
- package/dist/handles/index.js +6 -0
- package/dist/handles/index.js.map +1 -0
- package/dist/handles/meta.d.ts +39 -0
- package/dist/handles/meta.d.ts.map +1 -0
- package/dist/handles/meta.js +202 -0
- package/dist/handles/meta.js.map +1 -0
- package/dist/host/__tests__/errors.test.d.ts +2 -0
- package/dist/host/__tests__/errors.test.d.ts.map +1 -0
- package/dist/host/__tests__/errors.test.js +76 -0
- package/dist/host/__tests__/errors.test.js.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.js +251 -0
- package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
- package/dist/host/__tests__/router.test.d.ts +2 -0
- package/dist/host/__tests__/router.test.d.ts.map +1 -0
- package/dist/host/__tests__/router.test.js +241 -0
- package/dist/host/__tests__/router.test.js.map +1 -0
- package/dist/host/__tests__/testing.test.d.ts +2 -0
- package/dist/host/__tests__/testing.test.d.ts.map +1 -0
- package/dist/host/__tests__/testing.test.js +64 -0
- package/dist/host/__tests__/testing.test.js.map +1 -0
- package/dist/host/__tests__/utils.test.d.ts +2 -0
- package/dist/host/__tests__/utils.test.d.ts.map +1 -0
- package/dist/host/__tests__/utils.test.js +29 -0
- package/dist/host/__tests__/utils.test.js.map +1 -0
- package/dist/host/cookie-handler.d.ts +34 -0
- package/dist/host/cookie-handler.d.ts.map +1 -0
- package/dist/host/cookie-handler.js +124 -0
- package/dist/host/cookie-handler.js.map +1 -0
- package/dist/host/errors.d.ts +56 -0
- package/dist/host/errors.d.ts.map +1 -0
- package/dist/host/errors.js +79 -0
- package/dist/host/errors.js.map +1 -0
- package/dist/host/index.d.ts +29 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +32 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/pattern-matcher.d.ts +36 -0
- package/dist/host/pattern-matcher.d.ts.map +1 -0
- package/dist/host/pattern-matcher.js +172 -0
- package/dist/host/pattern-matcher.js.map +1 -0
- package/dist/host/router.d.ts +26 -0
- package/dist/host/router.d.ts.map +1 -0
- package/dist/host/router.js +218 -0
- package/dist/host/router.js.map +1 -0
- package/dist/host/testing.d.ts +36 -0
- package/dist/host/testing.d.ts.map +1 -0
- package/dist/host/testing.js +55 -0
- package/dist/host/testing.js.map +1 -0
- package/dist/host/types.d.ts +115 -0
- package/dist/host/types.d.ts.map +1 -0
- package/dist/host/types.js +7 -0
- package/dist/host/types.js.map +1 -0
- package/dist/host/utils.d.ts +21 -0
- package/dist/host/utils.d.ts.map +1 -0
- package/dist/host/utils.js +23 -0
- package/dist/host/utils.js.map +1 -0
- package/dist/href-client.d.ts +131 -0
- package/dist/href-client.d.ts.map +1 -0
- package/dist/href-client.js +64 -0
- package/dist/href-client.js.map +1 -0
- package/dist/href-context.d.ts +29 -0
- package/dist/href-context.d.ts.map +1 -0
- package/dist/href-context.js +21 -0
- package/dist/href-context.js.map +1 -0
- package/dist/index.d.ts +73 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -0
- package/dist/index.rsc.d.ts +32 -0
- package/dist/index.rsc.d.ts.map +1 -0
- package/dist/index.rsc.js +40 -0
- package/dist/index.rsc.js.map +1 -0
- package/dist/internal-debug.d.ts +2 -0
- package/dist/internal-debug.d.ts.map +1 -0
- package/dist/internal-debug.js +5 -0
- package/dist/internal-debug.js.map +1 -0
- package/dist/loader.d.ts +14 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +20 -0
- package/dist/loader.js.map +1 -0
- package/dist/loader.rsc.d.ts +19 -0
- package/dist/loader.rsc.d.ts.map +1 -0
- package/dist/loader.rsc.js +99 -0
- package/dist/loader.rsc.js.map +1 -0
- package/dist/network-error-thrower.d.ts +17 -0
- package/dist/network-error-thrower.d.ts.map +1 -0
- package/dist/network-error-thrower.js +14 -0
- package/dist/network-error-thrower.js.map +1 -0
- package/dist/outlet-context.d.ts +13 -0
- package/dist/outlet-context.d.ts.map +1 -0
- package/dist/outlet-context.js +3 -0
- package/dist/outlet-context.js.map +1 -0
- package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
- package/dist/prerender/__tests__/param-hash.test.js +148 -0
- package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
- package/dist/prerender/param-hash.d.ts +16 -0
- package/dist/prerender/param-hash.d.ts.map +1 -0
- package/dist/prerender/param-hash.js +36 -0
- package/dist/prerender/param-hash.js.map +1 -0
- package/dist/prerender/store.d.ts +38 -0
- package/dist/prerender/store.d.ts.map +1 -0
- package/dist/prerender/store.js +61 -0
- package/dist/prerender/store.js.map +1 -0
- package/dist/prerender.d.ts +66 -0
- package/dist/prerender.d.ts.map +1 -0
- package/dist/prerender.js +57 -0
- package/dist/prerender.js.map +1 -0
- package/dist/reverse.d.ts +196 -0
- package/dist/reverse.d.ts.map +1 -0
- package/dist/reverse.js +78 -0
- package/dist/reverse.js.map +1 -0
- package/dist/root-error-boundary.d.ts +33 -0
- package/dist/root-error-boundary.d.ts.map +1 -0
- package/dist/root-error-boundary.js +165 -0
- package/dist/root-error-boundary.js.map +1 -0
- package/dist/route-content-wrapper.d.ts +46 -0
- package/dist/route-content-wrapper.d.ts.map +1 -0
- package/dist/route-content-wrapper.js +77 -0
- package/dist/route-content-wrapper.js.map +1 -0
- package/dist/route-definition.d.ts +421 -0
- package/dist/route-definition.d.ts.map +1 -0
- package/dist/route-definition.js +868 -0
- package/dist/route-definition.js.map +1 -0
- package/dist/route-map-builder.d.ts +155 -0
- package/dist/route-map-builder.d.ts.map +1 -0
- package/dist/route-map-builder.js +237 -0
- package/dist/route-map-builder.js.map +1 -0
- package/dist/route-types.d.ts +165 -0
- package/dist/route-types.d.ts.map +1 -0
- package/dist/route-types.js +7 -0
- package/dist/route-types.js.map +1 -0
- package/dist/router/__tests__/handler-context.test.d.ts +2 -0
- package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
- package/dist/router/__tests__/handler-context.test.js +65 -0
- package/dist/router/__tests__/handler-context.test.js.map +1 -0
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
- package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
- package/dist/router/__tests__/match-context.test.d.ts +2 -0
- package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-context.test.js +92 -0
- package/dist/router/__tests__/match-context.test.js.map +1 -0
- package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-pipelines.test.js +417 -0
- package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
- package/dist/router/__tests__/match-result.test.d.ts +2 -0
- package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-result.test.js +457 -0
- package/dist/router/__tests__/match-result.test.js.map +1 -0
- package/dist/router/__tests__/on-error.test.d.ts +2 -0
- package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
- package/dist/router/__tests__/on-error.test.js +678 -0
- package/dist/router/__tests__/on-error.test.js.map +1 -0
- package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
- package/dist/router/__tests__/pattern-matching.test.js +629 -0
- package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
- package/dist/router/error-handling.d.ts +77 -0
- package/dist/router/error-handling.d.ts.map +1 -0
- package/dist/router/error-handling.js +202 -0
- package/dist/router/error-handling.js.map +1 -0
- package/dist/router/handler-context.d.ts +20 -0
- package/dist/router/handler-context.d.ts.map +1 -0
- package/dist/router/handler-context.js +198 -0
- package/dist/router/handler-context.js.map +1 -0
- package/dist/router/intercept-resolution.d.ts +66 -0
- package/dist/router/intercept-resolution.d.ts.map +1 -0
- package/dist/router/intercept-resolution.js +246 -0
- package/dist/router/intercept-resolution.js.map +1 -0
- package/dist/router/loader-resolution.d.ts +64 -0
- package/dist/router/loader-resolution.d.ts.map +1 -0
- package/dist/router/loader-resolution.js +284 -0
- package/dist/router/loader-resolution.js.map +1 -0
- package/dist/router/logging.d.ts +15 -0
- package/dist/router/logging.d.ts.map +1 -0
- package/dist/router/logging.js +99 -0
- package/dist/router/logging.js.map +1 -0
- package/dist/router/manifest.d.ts +22 -0
- package/dist/router/manifest.d.ts.map +1 -0
- package/dist/router/manifest.js +181 -0
- package/dist/router/manifest.js.map +1 -0
- package/dist/router/match-api.d.ts +35 -0
- package/dist/router/match-api.d.ts.map +1 -0
- package/dist/router/match-api.js +406 -0
- package/dist/router/match-api.js.map +1 -0
- package/dist/router/match-context.d.ts +206 -0
- package/dist/router/match-context.d.ts.map +1 -0
- package/dist/router/match-context.js +17 -0
- package/dist/router/match-context.js.map +1 -0
- package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
- package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
- package/dist/router/match-middleware/background-revalidation.js +75 -0
- package/dist/router/match-middleware/background-revalidation.js.map +1 -0
- package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
- package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
- package/dist/router/match-middleware/cache-lookup.js +257 -0
- package/dist/router/match-middleware/cache-lookup.js.map +1 -0
- package/dist/router/match-middleware/cache-store.d.ts +113 -0
- package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
- package/dist/router/match-middleware/cache-store.js +108 -0
- package/dist/router/match-middleware/cache-store.js.map +1 -0
- package/dist/router/match-middleware/index.d.ts +81 -0
- package/dist/router/match-middleware/index.d.ts.map +1 -0
- package/dist/router/match-middleware/index.js +80 -0
- package/dist/router/match-middleware/index.js.map +1 -0
- package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
- package/dist/router/match-middleware/intercept-resolution.js +134 -0
- package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
- package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
- package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
- package/dist/router/match-middleware/segment-resolution.js +53 -0
- package/dist/router/match-middleware/segment-resolution.js.map +1 -0
- package/dist/router/match-pipelines.d.ts +147 -0
- package/dist/router/match-pipelines.d.ts.map +1 -0
- package/dist/router/match-pipelines.js +82 -0
- package/dist/router/match-pipelines.js.map +1 -0
- package/dist/router/match-result.d.ts +126 -0
- package/dist/router/match-result.d.ts.map +1 -0
- package/dist/router/match-result.js +93 -0
- package/dist/router/match-result.js.map +1 -0
- package/dist/router/metrics.d.ts +20 -0
- package/dist/router/metrics.d.ts.map +1 -0
- package/dist/router/metrics.js +47 -0
- package/dist/router/metrics.js.map +1 -0
- package/dist/router/middleware.d.ts +249 -0
- package/dist/router/middleware.d.ts.map +1 -0
- package/dist/router/middleware.js +434 -0
- package/dist/router/middleware.js.map +1 -0
- package/dist/router/middleware.test.d.ts +2 -0
- package/dist/router/middleware.test.d.ts.map +1 -0
- package/dist/router/middleware.test.js +816 -0
- package/dist/router/middleware.test.js.map +1 -0
- package/dist/router/pattern-matching.d.ts +149 -0
- package/dist/router/pattern-matching.d.ts.map +1 -0
- package/dist/router/pattern-matching.js +349 -0
- package/dist/router/pattern-matching.js.map +1 -0
- package/dist/router/revalidation.d.ts +44 -0
- package/dist/router/revalidation.d.ts.map +1 -0
- package/dist/router/revalidation.js +147 -0
- package/dist/router/revalidation.js.map +1 -0
- package/dist/router/router-context.d.ts +135 -0
- package/dist/router/router-context.d.ts.map +1 -0
- package/dist/router/router-context.js +36 -0
- package/dist/router/router-context.js.map +1 -0
- package/dist/router/segment-resolution.d.ts +127 -0
- package/dist/router/segment-resolution.d.ts.map +1 -0
- package/dist/router/segment-resolution.js +919 -0
- package/dist/router/segment-resolution.js.map +1 -0
- package/dist/router/trie-matching.d.ts +40 -0
- package/dist/router/trie-matching.d.ts.map +1 -0
- package/dist/router/trie-matching.js +127 -0
- package/dist/router/trie-matching.js.map +1 -0
- package/dist/router/types.d.ts +136 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +7 -0
- package/dist/router/types.js.map +1 -0
- package/dist/router.d.ts +753 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.gen.d.ts +6 -0
- package/dist/router.gen.d.ts.map +1 -0
- package/dist/router.gen.js +6 -0
- package/dist/router.gen.js.map +1 -0
- package/dist/router.js +1304 -0
- package/dist/router.js.map +1 -0
- package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
- package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
- package/dist/rsc/__tests__/helpers.test.js +140 -0
- package/dist/rsc/__tests__/helpers.test.js.map +1 -0
- package/dist/rsc/handler.d.ts +45 -0
- package/dist/rsc/handler.d.ts.map +1 -0
- package/dist/rsc/handler.js +1172 -0
- package/dist/rsc/handler.js.map +1 -0
- package/dist/rsc/helpers.d.ts +16 -0
- package/dist/rsc/helpers.d.ts.map +1 -0
- package/dist/rsc/helpers.js +55 -0
- package/dist/rsc/helpers.js.map +1 -0
- package/dist/rsc/index.d.ts +22 -0
- package/dist/rsc/index.d.ts.map +1 -0
- package/dist/rsc/index.js +23 -0
- package/dist/rsc/index.js.map +1 -0
- package/dist/rsc/nonce.d.ts +9 -0
- package/dist/rsc/nonce.d.ts.map +1 -0
- package/dist/rsc/nonce.js +18 -0
- package/dist/rsc/nonce.js.map +1 -0
- package/dist/rsc/types.d.ts +206 -0
- package/dist/rsc/types.d.ts.map +1 -0
- package/dist/rsc/types.js +8 -0
- package/dist/rsc/types.js.map +1 -0
- package/dist/search-params.d.ts +103 -0
- package/dist/search-params.d.ts.map +1 -0
- package/dist/search-params.js +74 -0
- package/dist/search-params.js.map +1 -0
- package/dist/segment-system.d.ts +75 -0
- package/dist/segment-system.d.ts.map +1 -0
- package/dist/segment-system.js +336 -0
- package/dist/segment-system.js.map +1 -0
- package/dist/server/context.d.ts +245 -0
- package/dist/server/context.d.ts.map +1 -0
- package/dist/server/context.js +197 -0
- package/dist/server/context.js.map +1 -0
- package/dist/server/fetchable-loader-store.d.ts +18 -0
- package/dist/server/fetchable-loader-store.d.ts.map +1 -0
- package/dist/server/fetchable-loader-store.js +18 -0
- package/dist/server/fetchable-loader-store.js.map +1 -0
- package/dist/server/handle-store.d.ts +85 -0
- package/dist/server/handle-store.d.ts.map +1 -0
- package/dist/server/handle-store.js +142 -0
- package/dist/server/handle-store.js.map +1 -0
- package/dist/server/loader-registry.d.ts +55 -0
- package/dist/server/loader-registry.d.ts.map +1 -0
- package/dist/server/loader-registry.js +132 -0
- package/dist/server/loader-registry.js.map +1 -0
- package/dist/server/request-context.d.ts +226 -0
- package/dist/server/request-context.d.ts.map +1 -0
- package/dist/server/request-context.js +290 -0
- package/dist/server/request-context.js.map +1 -0
- package/dist/server/root-layout.d.ts +4 -0
- package/dist/server/root-layout.d.ts.map +1 -0
- package/dist/server/root-layout.js +5 -0
- package/dist/server/root-layout.js.map +1 -0
- package/dist/server.d.ts +15 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +20 -0
- package/dist/server.js.map +1 -0
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
- package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
- package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
- package/dist/ssr/index.d.ts +98 -0
- package/dist/ssr/index.d.ts.map +1 -0
- package/dist/ssr/index.js +158 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/static-handler.d.ts +50 -0
- package/dist/static-handler.d.ts.map +1 -0
- package/dist/static-handler.gen.d.ts +5 -0
- package/dist/static-handler.gen.d.ts.map +1 -0
- package/dist/static-handler.gen.js +5 -0
- package/dist/static-handler.gen.js.map +1 -0
- package/dist/static-handler.js +29 -0
- package/dist/static-handler.js.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +20 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/ThemeProvider.js +240 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/ThemeScript.d.ts +48 -0
- package/dist/theme/ThemeScript.d.ts.map +1 -0
- package/dist/theme/ThemeScript.js +13 -0
- package/dist/theme/ThemeScript.js.map +1 -0
- package/dist/theme/__tests__/theme.test.d.ts +2 -0
- package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
- package/dist/theme/__tests__/theme.test.js +103 -0
- package/dist/theme/__tests__/theme.test.js.map +1 -0
- package/dist/theme/constants.d.ts +29 -0
- package/dist/theme/constants.d.ts.map +1 -0
- package/dist/theme/constants.js +48 -0
- package/dist/theme/constants.js.map +1 -0
- package/dist/theme/index.d.ts +31 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +36 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/theme-context.d.ts +40 -0
- package/dist/theme/theme-context.d.ts.map +1 -0
- package/dist/theme/theme-context.js +60 -0
- package/dist/theme/theme-context.js.map +1 -0
- package/dist/theme/theme-script.d.ts +27 -0
- package/dist/theme/theme-script.d.ts.map +1 -0
- package/dist/theme/theme-script.js +147 -0
- package/dist/theme/theme-script.js.map +1 -0
- package/dist/theme/types.d.ts +163 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +11 -0
- package/dist/theme/types.js.map +1 -0
- package/dist/theme/use-theme.d.ts +12 -0
- package/dist/theme/use-theme.d.ts.map +1 -0
- package/dist/theme/use-theme.js +40 -0
- package/dist/theme/use-theme.js.map +1 -0
- package/dist/types.d.ts +1479 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/dist/urls.d.ts +441 -0
- package/dist/urls.d.ts.map +1 -0
- package/dist/urls.gen.d.ts +8 -0
- package/dist/urls.gen.d.ts.map +1 -0
- package/dist/urls.gen.js +8 -0
- package/dist/urls.gen.js.map +1 -0
- package/dist/urls.js +443 -0
- package/dist/urls.js.map +1 -0
- package/dist/use-loader.d.ts +127 -0
- package/dist/use-loader.d.ts.map +1 -0
- package/dist/use-loader.js +237 -0
- package/dist/use-loader.js.map +1 -0
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
- package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
- package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
- package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
- package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
- package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
- package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
- package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
- package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
- package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
- package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
- package/dist/vite/__tests__/expose-router-id.test.js +39 -0
- package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
- package/dist/vite/ast-handler-extract.d.ts +49 -0
- package/dist/vite/ast-handler-extract.d.ts.map +1 -0
- package/dist/vite/ast-handler-extract.js +249 -0
- package/dist/vite/ast-handler-extract.js.map +1 -0
- package/dist/vite/expose-action-id.d.ts +19 -0
- package/dist/vite/expose-action-id.d.ts.map +1 -0
- package/dist/vite/expose-action-id.js +250 -0
- package/dist/vite/expose-action-id.js.map +1 -0
- package/dist/vite/expose-id-utils.d.ts +69 -0
- package/dist/vite/expose-id-utils.d.ts.map +1 -0
- package/dist/vite/expose-id-utils.js +289 -0
- package/dist/vite/expose-id-utils.js.map +1 -0
- package/dist/vite/expose-internal-ids.d.ts +22 -0
- package/dist/vite/expose-internal-ids.d.ts.map +1 -0
- package/dist/vite/expose-internal-ids.js +886 -0
- package/dist/vite/expose-internal-ids.js.map +1 -0
- package/dist/vite/index.d.ts +149 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +687 -231
- package/dist/vite/index.js.bak +5448 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/index.named-routes.gen.ts +103 -0
- package/dist/vite/package-resolution.d.ts +43 -0
- package/dist/vite/package-resolution.d.ts.map +1 -0
- package/dist/vite/package-resolution.js +112 -0
- package/dist/vite/package-resolution.js.map +1 -0
- package/dist/vite/virtual-entries.d.ts +25 -0
- package/dist/vite/virtual-entries.d.ts.map +1 -0
- package/dist/vite/virtual-entries.js +110 -0
- package/dist/vite/virtual-entries.js.map +1 -0
- package/package.json +2 -2
- package/skills/cache-guide/SKILL.md +32 -0
- package/skills/caching/SKILL.md +8 -0
- package/skills/links/SKILL.md +3 -1
- package/skills/loader/SKILL.md +53 -43
- package/skills/middleware/SKILL.md +2 -0
- package/skills/prerender/SKILL.md +110 -68
- package/skills/route/SKILL.md +31 -0
- package/skills/router-setup/SKILL.md +87 -2
- package/skills/typesafety/SKILL.md +10 -0
- package/src/__internal.ts +1 -1
- package/src/browser/app-version.ts +14 -0
- package/src/browser/navigation-bridge.ts +16 -3
- package/src/browser/navigation-client.ts +64 -40
- package/src/browser/navigation-store.ts +43 -8
- package/src/browser/partial-update.ts +27 -5
- package/src/browser/prefetch/fetch.ts +8 -2
- package/src/browser/prefetch/queue.ts +61 -29
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/react/Link.tsx +44 -8
- package/src/browser/react/NavigationProvider.tsx +13 -4
- package/src/browser/react/context.ts +7 -2
- package/src/browser/react/use-handle.ts +9 -58
- package/src/browser/react/use-router.ts +21 -8
- package/src/browser/rsc-router.tsx +26 -3
- package/src/browser/scroll-restoration.ts +10 -8
- package/src/browser/server-action-bridge.ts +8 -6
- package/src/browser/types.ts +27 -5
- package/src/build/generate-manifest.ts +6 -6
- package/src/build/generate-route-types.ts +3 -0
- package/src/build/route-types/include-resolution.ts +8 -1
- package/src/build/route-types/router-processing.ts +211 -72
- package/src/build/route-types/scan-filter.ts +8 -1
- package/src/cache/cache-scope.ts +12 -14
- package/src/cache/taint.ts +55 -0
- package/src/client.tsx +2 -56
- package/src/context-var.ts +72 -2
- package/src/handle.ts +40 -0
- package/src/index.rsc.ts +3 -1
- package/src/index.ts +12 -0
- package/src/prerender/store.ts +5 -4
- package/src/prerender.ts +138 -77
- package/src/reverse.ts +22 -1
- package/src/route-definition/dsl-helpers.ts +42 -19
- package/src/route-definition/helpers-types.ts +10 -6
- package/src/route-definition/index.ts +3 -0
- package/src/route-definition/redirect.ts +9 -1
- package/src/route-definition/resolve-handler-use.ts +149 -0
- package/src/route-types.ts +11 -0
- package/src/router/content-negotiation.ts +100 -1
- package/src/router/handler-context.ts +79 -23
- package/src/router/intercept-resolution.ts +9 -4
- package/src/router/loader-resolution.ts +156 -21
- package/src/router/match-api.ts +124 -189
- package/src/router/match-middleware/cache-lookup.ts +26 -7
- package/src/router/match-middleware/segment-resolution.ts +53 -0
- package/src/router/middleware-types.ts +6 -8
- package/src/router/middleware.ts +2 -5
- package/src/router/navigation-snapshot.ts +182 -0
- package/src/router/prerender-match.ts +110 -10
- package/src/router/preview-match.ts +30 -102
- package/src/router/request-classification.ts +310 -0
- package/src/router/route-snapshot.ts +245 -0
- package/src/router/router-interfaces.ts +36 -4
- package/src/router/router-options.ts +37 -11
- package/src/router/segment-resolution/fresh.ts +75 -9
- package/src/router/segment-resolution/helpers.ts +29 -24
- package/src/router/segment-resolution/revalidation.ts +84 -7
- package/src/router/types.ts +1 -0
- package/src/router.ts +54 -5
- package/src/rsc/handler.ts +464 -368
- package/src/rsc/loader-fetch.ts +23 -3
- package/src/rsc/manifest-init.ts +5 -1
- package/src/rsc/progressive-enhancement.ts +14 -2
- package/src/rsc/rsc-rendering.ts +10 -1
- package/src/rsc/server-action.ts +8 -0
- package/src/rsc/ssr-setup.ts +2 -2
- package/src/rsc/types.ts +9 -1
- package/src/server/context.ts +50 -1
- package/src/server/handle-store.ts +19 -0
- package/src/server/loader-registry.ts +9 -8
- package/src/server/request-context.ts +175 -15
- package/src/ssr/index.tsx +3 -0
- package/src/static-handler.ts +18 -6
- package/src/types/cache-types.ts +4 -4
- package/src/types/handler-context.ts +37 -19
- package/src/types/loader-types.ts +36 -9
- package/src/types/route-entry.ts +1 -1
- package/src/urls/path-helper-types.ts +9 -2
- package/src/urls/path-helper.ts +47 -12
- package/src/urls/pattern-types.ts +12 -0
- package/src/urls/response-types.ts +16 -6
- package/src/use-loader.tsx +73 -4
- package/src/vite/discovery/bundle-postprocess.ts +30 -33
- package/src/vite/discovery/discover-routers.ts +5 -1
- package/src/vite/discovery/prerender-collection.ts +128 -74
- package/src/vite/discovery/state.ts +13 -4
- package/src/vite/index.ts +4 -0
- package/src/vite/plugin-types.ts +60 -5
- package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
- package/src/vite/plugins/expose-internal-ids.ts +231 -39
- package/src/vite/plugins/performance-tracks.ts +88 -0
- package/src/vite/plugins/refresh-cmd.ts +88 -26
- package/src/vite/rango.ts +19 -2
- package/src/vite/router-discovery.ts +178 -37
- package/src/vite/utils/prerender-utils.ts +18 -0
- package/src/vite/utils/shared-utils.ts +3 -2
package/dist/urls.js
ADDED
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
import { getContext, runWithPrefixes, getUrlPrefix, getNamePrefix, } from "./server/context";
|
|
2
|
+
import { invariant } from "./errors";
|
|
3
|
+
import { isPrerenderHandler, } from "./prerender.js";
|
|
4
|
+
import { isStaticHandler, } from "./static-handler.js";
|
|
5
|
+
import { registerSearchSchema } from "./route-map-builder.js";
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Response Route Symbol and Types
|
|
8
|
+
// ============================================================================
|
|
9
|
+
/**
|
|
10
|
+
* Symbol marking a route as a response route (non-RSC).
|
|
11
|
+
* Stored on PathOptions and UrlPatterns to signal the trie to short-circuit.
|
|
12
|
+
*/
|
|
13
|
+
export const RESPONSE_TYPE = Symbol.for("rangojs.responseType");
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Helper Implementations
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Check if a value is a valid use item
|
|
19
|
+
*/
|
|
20
|
+
const isValidUseItem = (item) => {
|
|
21
|
+
return (typeof item === "undefined" ||
|
|
22
|
+
item === null ||
|
|
23
|
+
(item &&
|
|
24
|
+
typeof item === "object" &&
|
|
25
|
+
"type" in item &&
|
|
26
|
+
[
|
|
27
|
+
"layout",
|
|
28
|
+
"route",
|
|
29
|
+
"middleware",
|
|
30
|
+
"revalidate",
|
|
31
|
+
"parallel",
|
|
32
|
+
"intercept",
|
|
33
|
+
"loader",
|
|
34
|
+
"loading",
|
|
35
|
+
"errorBoundary",
|
|
36
|
+
"notFoundBoundary",
|
|
37
|
+
"when",
|
|
38
|
+
"cache",
|
|
39
|
+
"include",
|
|
40
|
+
].includes(item.type)));
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Apply URL prefix to a pattern
|
|
44
|
+
* Handles edge cases like "/" patterns and double slashes
|
|
45
|
+
*/
|
|
46
|
+
function applyUrlPrefix(prefix, pattern) {
|
|
47
|
+
if (!prefix)
|
|
48
|
+
return pattern;
|
|
49
|
+
if (pattern === "/")
|
|
50
|
+
return prefix;
|
|
51
|
+
if (prefix.endsWith("/") && pattern.startsWith("/")) {
|
|
52
|
+
return prefix + pattern.slice(1);
|
|
53
|
+
}
|
|
54
|
+
return prefix + pattern;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Apply name prefix to a route name
|
|
58
|
+
*/
|
|
59
|
+
function applyNamePrefix(prefix, name) {
|
|
60
|
+
if (!prefix)
|
|
61
|
+
return name;
|
|
62
|
+
return `${prefix}.${name}`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create path() helper
|
|
66
|
+
*
|
|
67
|
+
* The path() function is the key new feature - it combines URL pattern
|
|
68
|
+
* with handler at the definition site.
|
|
69
|
+
*/
|
|
70
|
+
/**
|
|
71
|
+
* Resolve response type from path options (set by path.json(), path.text(), etc.)
|
|
72
|
+
*/
|
|
73
|
+
function resolveResponseType(options) {
|
|
74
|
+
return options?.[RESPONSE_TYPE];
|
|
75
|
+
}
|
|
76
|
+
function createPathHelper() {
|
|
77
|
+
return ((pattern, handler, optionsOrUse, maybeUse) => {
|
|
78
|
+
const store = getContext();
|
|
79
|
+
const ctx = store.getStore();
|
|
80
|
+
if (!ctx)
|
|
81
|
+
throw new Error("path() must be called inside urls()");
|
|
82
|
+
invariant(!ctx.parent || ctx.parent.type !== "parallel", "path() cannot be used inside parallel()");
|
|
83
|
+
// Walk the parent chain to prevent path() nested under another path(),
|
|
84
|
+
// even when separated by intermediate layouts (e.g. path(layout(path())))
|
|
85
|
+
{
|
|
86
|
+
let ancestor = ctx.parent;
|
|
87
|
+
while (ancestor) {
|
|
88
|
+
invariant(ancestor.type !== "route", "path() cannot be nested inside another path()");
|
|
89
|
+
ancestor = ancestor.parent;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Determine options and use based on argument types
|
|
93
|
+
let options;
|
|
94
|
+
let use;
|
|
95
|
+
if (typeof optionsOrUse === "function") {
|
|
96
|
+
// path(pattern, handler, use)
|
|
97
|
+
use = optionsOrUse;
|
|
98
|
+
}
|
|
99
|
+
else if (typeof optionsOrUse === "object") {
|
|
100
|
+
// path(pattern, handler, options) or path(pattern, handler, options, use)
|
|
101
|
+
options = optionsOrUse;
|
|
102
|
+
use = maybeUse;
|
|
103
|
+
}
|
|
104
|
+
// Get prefixes from context (set by include())
|
|
105
|
+
const urlPrefix = getUrlPrefix();
|
|
106
|
+
const namePrefix = getNamePrefix();
|
|
107
|
+
// Apply URL prefix to pattern
|
|
108
|
+
const prefixedPattern = applyUrlPrefix(urlPrefix, pattern);
|
|
109
|
+
// Generate route name - use provided name or generate from pattern
|
|
110
|
+
const localName = options?.name || `$path_${pattern.replace(/[/:*?]/g, "_")}`;
|
|
111
|
+
// Apply name prefix if set (from include())
|
|
112
|
+
const routeName = applyNamePrefix(namePrefix, localName);
|
|
113
|
+
const namespace = `${ctx.namespace}.${store.getNextIndex("route")}.${routeName}`;
|
|
114
|
+
// Per-request pruning: skip registration for routes that won't be rendered.
|
|
115
|
+
// forRoute is set by loadManifest() to the matched route name. During
|
|
116
|
+
// evaluateLazyEntry() (route matching), forRoute is unset so all routes
|
|
117
|
+
// register normally. We still increment counters to keep shortCodes stable
|
|
118
|
+
// across different routes (needed for segment reconciliation on navigation).
|
|
119
|
+
//
|
|
120
|
+
// include() does not need its own forRoute pruning. include() creates lazy
|
|
121
|
+
// entries that defer handler execution until route matching. When the lazy
|
|
122
|
+
// handler eventually runs inside loadManifest(), this path() check already
|
|
123
|
+
// covers all routes defined inside the include.
|
|
124
|
+
if (ctx.forRoute && routeName !== ctx.forRoute) {
|
|
125
|
+
store.getShortCode("route");
|
|
126
|
+
return { type: "route" };
|
|
127
|
+
}
|
|
128
|
+
// Ensure handler is always a function (wrap ReactNode or extract from prerender/static def)
|
|
129
|
+
const wrappedHandler = typeof handler === "function"
|
|
130
|
+
? handler
|
|
131
|
+
: isPrerenderHandler(handler)
|
|
132
|
+
? handler.handler
|
|
133
|
+
: isStaticHandler(handler)
|
|
134
|
+
? handler.handler
|
|
135
|
+
: () => handler;
|
|
136
|
+
const entry = {
|
|
137
|
+
id: namespace,
|
|
138
|
+
shortCode: store.getShortCode("route"),
|
|
139
|
+
type: "route",
|
|
140
|
+
parent: ctx.parent,
|
|
141
|
+
handler: wrappedHandler,
|
|
142
|
+
// Store the PREFIXED pattern for route matching
|
|
143
|
+
pattern: prefixedPattern,
|
|
144
|
+
loading: undefined,
|
|
145
|
+
middleware: [],
|
|
146
|
+
revalidate: [],
|
|
147
|
+
errorBoundary: [],
|
|
148
|
+
notFoundBoundary: [],
|
|
149
|
+
layout: [],
|
|
150
|
+
parallel: [],
|
|
151
|
+
intercept: [],
|
|
152
|
+
loader: [],
|
|
153
|
+
...(urlPrefix ? { mountPath: urlPrefix } : {}),
|
|
154
|
+
...(isPrerenderHandler(handler)
|
|
155
|
+
? {
|
|
156
|
+
isPrerender: true,
|
|
157
|
+
prerenderDef: handler,
|
|
158
|
+
}
|
|
159
|
+
: {}),
|
|
160
|
+
...(isStaticHandler(handler)
|
|
161
|
+
? { isStaticPrerender: true }
|
|
162
|
+
: {}),
|
|
163
|
+
...(resolveResponseType(options)
|
|
164
|
+
? { responseType: resolveResponseType(options) }
|
|
165
|
+
: {}),
|
|
166
|
+
};
|
|
167
|
+
// Check for duplicate route names (TypeScript should catch this, but runtime check too)
|
|
168
|
+
invariant(ctx.manifest.get(routeName) === undefined, `Duplicate route name: ${routeName} at ${namespace}`);
|
|
169
|
+
// Register route entry with prefixed name
|
|
170
|
+
ctx.manifest.set(routeName, entry);
|
|
171
|
+
// Also store pattern in a separate map for URL generation
|
|
172
|
+
if (ctx.patterns) {
|
|
173
|
+
ctx.patterns.set(routeName, prefixedPattern);
|
|
174
|
+
}
|
|
175
|
+
// Store pattern grouped by URL prefix for separate entry creation
|
|
176
|
+
if (ctx.patternsByPrefix) {
|
|
177
|
+
const urlPrefix = getUrlPrefix() || "";
|
|
178
|
+
if (!ctx.patternsByPrefix.has(urlPrefix)) {
|
|
179
|
+
ctx.patternsByPrefix.set(urlPrefix, new Map());
|
|
180
|
+
}
|
|
181
|
+
ctx.patternsByPrefix.get(urlPrefix).set(routeName, prefixedPattern);
|
|
182
|
+
}
|
|
183
|
+
// Store trailing slash config if specified
|
|
184
|
+
if (options?.trailingSlash && ctx.trailingSlash) {
|
|
185
|
+
ctx.trailingSlash.set(routeName, options.trailingSlash);
|
|
186
|
+
}
|
|
187
|
+
// Store search schema if specified
|
|
188
|
+
if (options?.search) {
|
|
189
|
+
if (ctx.searchSchemas) {
|
|
190
|
+
ctx.searchSchemas.set(routeName, options.search);
|
|
191
|
+
}
|
|
192
|
+
registerSearchSchema(routeName, options.search);
|
|
193
|
+
}
|
|
194
|
+
// Run use callback if provided
|
|
195
|
+
if (use && typeof use === "function") {
|
|
196
|
+
const result = store.run(namespace, entry, use);
|
|
197
|
+
invariant(Array.isArray(result) && result.every((item) => isValidUseItem(item)), `path() use() callback must return an array of use items [${namespace}]`);
|
|
198
|
+
return { name: namespace, type: "route", uses: result };
|
|
199
|
+
}
|
|
200
|
+
return { name: namespace, type: "route" };
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Attach response type tag methods (.json, .text, .html, .xml, .md, .image, .stream, .any) to a path helper.
|
|
205
|
+
* Each tag wraps the original path() call with the RESPONSE_TYPE option set.
|
|
206
|
+
*/
|
|
207
|
+
function attachPathResponseTags(pathFn) {
|
|
208
|
+
function createTagged(responseType) {
|
|
209
|
+
return ((pattern, handler, optionsOrUse, maybeUse) => {
|
|
210
|
+
let options;
|
|
211
|
+
let use;
|
|
212
|
+
if (typeof optionsOrUse === "function") {
|
|
213
|
+
options = { [RESPONSE_TYPE]: responseType };
|
|
214
|
+
use = optionsOrUse;
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
options = { ...optionsOrUse, [RESPONSE_TYPE]: responseType };
|
|
218
|
+
use = maybeUse;
|
|
219
|
+
}
|
|
220
|
+
return pathFn(pattern, handler, options, use);
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
const extended = pathFn;
|
|
224
|
+
extended.json = createTagged("json");
|
|
225
|
+
extended.text = createTagged("text");
|
|
226
|
+
extended.html = createTagged("html");
|
|
227
|
+
extended.xml = createTagged("xml");
|
|
228
|
+
extended.md = createTagged("md");
|
|
229
|
+
extended.image = createTagged("image");
|
|
230
|
+
extended.stream = createTagged("stream");
|
|
231
|
+
extended.any = createTagged("any");
|
|
232
|
+
return extended;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Process an IncludeItem by executing its nested patterns with prefixes
|
|
236
|
+
* This expands the include into actual route registrations
|
|
237
|
+
*/
|
|
238
|
+
function processIncludeItem(item) {
|
|
239
|
+
const { prefix, patterns, options } = item;
|
|
240
|
+
const namePrefix = options?.name;
|
|
241
|
+
// Execute the nested patterns' handler with URL and name prefixes
|
|
242
|
+
// The urlPrefix being set tells nested urls() to skip RootLayout wrapping
|
|
243
|
+
return runWithPrefixes(prefix, namePrefix, () => {
|
|
244
|
+
// Call the nested patterns' handler - this registers routes with prefixed patterns/names
|
|
245
|
+
return patterns.handler();
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Recursively process items, expanding any IncludeItems
|
|
250
|
+
* Returns items with IncludeItems expanded into actual route items
|
|
251
|
+
*
|
|
252
|
+
* Lazy includes are kept as-is (not expanded) for the router to handle later.
|
|
253
|
+
*/
|
|
254
|
+
function processItems(items) {
|
|
255
|
+
const result = [];
|
|
256
|
+
for (const item of items) {
|
|
257
|
+
if (!item)
|
|
258
|
+
continue;
|
|
259
|
+
if (item.type === "include") {
|
|
260
|
+
const includeItem = item;
|
|
261
|
+
// Lazy includes are NOT expanded here - kept for router to handle
|
|
262
|
+
if (includeItem.lazy) {
|
|
263
|
+
result.push(item);
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
// Eager includes are already expanded during include() call
|
|
267
|
+
if (includeItem._expanded) {
|
|
268
|
+
// Items were expanded immediately - just process them recursively
|
|
269
|
+
result.push(...processItems(includeItem._expanded));
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
// Fallback for legacy include items without _expanded
|
|
273
|
+
const expanded = processIncludeItem(item);
|
|
274
|
+
result.push(...processItems(expanded));
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
else if (item.type === "layout" && item.uses) {
|
|
278
|
+
// Process nested items in layout
|
|
279
|
+
const layoutItem = item;
|
|
280
|
+
layoutItem.uses = processItems(layoutItem.uses);
|
|
281
|
+
result.push(layoutItem);
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
result.push(item);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return result;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Create include() helper for composing URL patterns
|
|
291
|
+
*
|
|
292
|
+
* By default, include() IMMEDIATELY expands the nested patterns. This ensures
|
|
293
|
+
* that routes from included patterns inherit the correct parent context
|
|
294
|
+
* (the layout they're included in).
|
|
295
|
+
*
|
|
296
|
+
* With `lazy: true`, patterns are NOT expanded at definition time. Instead,
|
|
297
|
+
* they're evaluated on first request that matches the prefix. This improves
|
|
298
|
+
* cold start time for apps with many routes.
|
|
299
|
+
*/
|
|
300
|
+
function createIncludeHelper() {
|
|
301
|
+
return (prefix, patterns, options) => {
|
|
302
|
+
var _a;
|
|
303
|
+
const store = getContext();
|
|
304
|
+
const ctx = store.getStore();
|
|
305
|
+
if (!ctx)
|
|
306
|
+
throw new Error("include() must be called inside urls()");
|
|
307
|
+
const namePrefix = options?.name;
|
|
308
|
+
const name = `$include_${prefix.replace(/[/:*?]/g, "_")}`;
|
|
309
|
+
// Capture context for deferred evaluation
|
|
310
|
+
const capturedUrlPrefix = getUrlPrefix();
|
|
311
|
+
const capturedNamePrefix = getNamePrefix();
|
|
312
|
+
const capturedParent = ctx.parent;
|
|
313
|
+
const fullPrefix = capturedUrlPrefix
|
|
314
|
+
? (capturedUrlPrefix.endsWith("/") && prefix.startsWith("/")
|
|
315
|
+
? capturedUrlPrefix + prefix.slice(1)
|
|
316
|
+
: capturedUrlPrefix + prefix)
|
|
317
|
+
: prefix;
|
|
318
|
+
const fullNamePrefix = namePrefix
|
|
319
|
+
? capturedNamePrefix
|
|
320
|
+
? `${capturedNamePrefix}.${namePrefix}`
|
|
321
|
+
: namePrefix
|
|
322
|
+
: capturedNamePrefix;
|
|
323
|
+
// Track this include for build-time manifest generation
|
|
324
|
+
if (ctx.trackedIncludes) {
|
|
325
|
+
ctx.trackedIncludes.push({
|
|
326
|
+
prefix,
|
|
327
|
+
fullPrefix,
|
|
328
|
+
namePrefix: fullNamePrefix,
|
|
329
|
+
patterns,
|
|
330
|
+
lazy: true,
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
// Snapshot parent's counters so lazy manifest generation starts
|
|
334
|
+
// at the correct index, preventing shortCode collisions with
|
|
335
|
+
// sibling entries (e.g., BlogLayout and ArticlesLayout under NavLayout).
|
|
336
|
+
const capturedCounters = { ...ctx.counters };
|
|
337
|
+
// Reserve a layout slot in the parent's counter so sibling lazy includes
|
|
338
|
+
// produce different shortCode indices for their root layout.
|
|
339
|
+
// Without this, consecutive include() calls capture identical counters
|
|
340
|
+
// and their first child layouts get the same shortCode (e.g., both M0L0L0),
|
|
341
|
+
// causing the client partial-update diff to see no changes on navigation.
|
|
342
|
+
if (capturedParent?.shortCode) {
|
|
343
|
+
const layoutCounterKey = `${capturedParent.shortCode}_layout`;
|
|
344
|
+
(_a = ctx.counters)[layoutCounterKey] ?? (_a[layoutCounterKey] = 0);
|
|
345
|
+
ctx.counters[layoutCounterKey]++;
|
|
346
|
+
}
|
|
347
|
+
// All includes are lazy - patterns are evaluated on first matching request
|
|
348
|
+
// This improves cold start time significantly for large route sets
|
|
349
|
+
return {
|
|
350
|
+
type: "include",
|
|
351
|
+
name,
|
|
352
|
+
prefix,
|
|
353
|
+
patterns,
|
|
354
|
+
options,
|
|
355
|
+
lazy: true,
|
|
356
|
+
_lazyContext: {
|
|
357
|
+
urlPrefix: capturedUrlPrefix,
|
|
358
|
+
namePrefix: fullNamePrefix,
|
|
359
|
+
parent: capturedParent,
|
|
360
|
+
counters: capturedCounters,
|
|
361
|
+
},
|
|
362
|
+
};
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
// ============================================================================
|
|
366
|
+
// Re-use existing helpers from route-definition.ts
|
|
367
|
+
// ============================================================================
|
|
368
|
+
// Import the helper creation functions from route-definition
|
|
369
|
+
import { createRouteHelpers } from "./route-definition.js";
|
|
370
|
+
// ============================================================================
|
|
371
|
+
// urls() Main Entry Point
|
|
372
|
+
// ============================================================================
|
|
373
|
+
/**
|
|
374
|
+
* Define URL patterns with Django-inspired syntax
|
|
375
|
+
*
|
|
376
|
+
* Replaces map() as the entry point for route definitions.
|
|
377
|
+
* URL patterns are now visible at the definition site via path().
|
|
378
|
+
*
|
|
379
|
+
* @example
|
|
380
|
+
* ```typescript
|
|
381
|
+
* export const blogPatterns = urls(({ path, layout, loader }) => [
|
|
382
|
+
* layout(BlogLayout, () => [
|
|
383
|
+
* path("/", BlogIndex, { name: "index" }),
|
|
384
|
+
* path("/:slug", BlogPost, { name: "post" }, () => [
|
|
385
|
+
* loader(PostLoader),
|
|
386
|
+
* ]),
|
|
387
|
+
* ]),
|
|
388
|
+
* ]);
|
|
389
|
+
* ```
|
|
390
|
+
*/
|
|
391
|
+
export function urls(builder) {
|
|
392
|
+
// Collect path definitions during build
|
|
393
|
+
const definitions = [];
|
|
394
|
+
// Create the handler function that will be called by the router
|
|
395
|
+
const handler = () => {
|
|
396
|
+
invariant(typeof builder === "function", "urls() expects a builder function as its argument");
|
|
397
|
+
// Get base helpers from the existing route-definition module
|
|
398
|
+
const baseHelpers = createRouteHelpers();
|
|
399
|
+
// Create the path helper (with .json, .text, .html, .xml, .image, .stream, .any tags)
|
|
400
|
+
const pathHelper = attachPathResponseTags(createPathHelper());
|
|
401
|
+
// Create the include helper
|
|
402
|
+
const includeHelper = createIncludeHelper();
|
|
403
|
+
// Combine all helpers
|
|
404
|
+
// Note: layout and cache are cast to their typed versions - phantom types don't affect runtime
|
|
405
|
+
const helpers = {
|
|
406
|
+
path: pathHelper,
|
|
407
|
+
include: includeHelper,
|
|
408
|
+
layout: baseHelpers.layout,
|
|
409
|
+
parallel: baseHelpers.parallel,
|
|
410
|
+
intercept: baseHelpers.intercept,
|
|
411
|
+
middleware: baseHelpers.middleware,
|
|
412
|
+
revalidate: baseHelpers.revalidate,
|
|
413
|
+
loader: baseHelpers.loader,
|
|
414
|
+
loading: baseHelpers.loading,
|
|
415
|
+
errorBoundary: baseHelpers.errorBoundary,
|
|
416
|
+
notFoundBoundary: baseHelpers.notFoundBoundary,
|
|
417
|
+
when: baseHelpers.when,
|
|
418
|
+
cache: baseHelpers.cache,
|
|
419
|
+
};
|
|
420
|
+
// Execute builder directly - manifest.ts handles RootLayout wrapping
|
|
421
|
+
// for inline handlers (non-Promise results).
|
|
422
|
+
// For nested include() calls, routes inherit the outer RootLayout.
|
|
423
|
+
const builderResult = builder(helpers);
|
|
424
|
+
return processItems(builderResult);
|
|
425
|
+
};
|
|
426
|
+
// trailingSlash config is populated when handler() runs
|
|
427
|
+
// We expose it via a getter that reads from the context after handler execution
|
|
428
|
+
return {
|
|
429
|
+
definitions,
|
|
430
|
+
handler,
|
|
431
|
+
get trailingSlash() {
|
|
432
|
+
// Get the trailingSlash map from the current context
|
|
433
|
+
// This will be populated after handler() is called
|
|
434
|
+
const store = getContext();
|
|
435
|
+
const ctx = store.context.getStore();
|
|
436
|
+
if (!ctx?.trailingSlash) {
|
|
437
|
+
return {};
|
|
438
|
+
}
|
|
439
|
+
return Object.fromEntries(ctx.trailingSlash);
|
|
440
|
+
},
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
//# sourceMappingURL=urls.js.map
|
package/dist/urls.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urls.js","sourceRoot":"","sources":["../src/urls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { LoaderDefinition, LoadOptions } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Load function type with form action support
|
|
4
|
+
*/
|
|
5
|
+
export type LoadFunction<T> = ((options?: LoadOptions) => Promise<T>) & {
|
|
6
|
+
/** Form action for progressive enhancement - can be passed to form action prop */
|
|
7
|
+
action: (formData: FormData) => Promise<void>;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Result type for useLoader hook (strict - data is required)
|
|
11
|
+
*/
|
|
12
|
+
export interface UseLoaderResult<T> {
|
|
13
|
+
/** The loaded data - guaranteed to exist when loader is registered on route */
|
|
14
|
+
data: T;
|
|
15
|
+
/** True while a load() is in progress */
|
|
16
|
+
isLoading: boolean;
|
|
17
|
+
/** Error from the most recent load attempt, null if successful */
|
|
18
|
+
error: Error | null;
|
|
19
|
+
/** Function to trigger a fetch (only works if loader is fetchable) */
|
|
20
|
+
load: LoadFunction<T>;
|
|
21
|
+
/** Alias for load */
|
|
22
|
+
refetch: LoadFunction<T>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Result type for useFetchLoader hook (flexible - data is optional)
|
|
26
|
+
*/
|
|
27
|
+
export interface UseFetchLoaderResult<T> {
|
|
28
|
+
/** The loaded data - may be undefined if not yet fetched or not in context */
|
|
29
|
+
data: T | undefined;
|
|
30
|
+
/** True while a load() is in progress */
|
|
31
|
+
isLoading: boolean;
|
|
32
|
+
/** Error from the most recent load attempt, null if successful */
|
|
33
|
+
error: Error | null;
|
|
34
|
+
/** Function to trigger a fetch (only works if loader is fetchable) */
|
|
35
|
+
load: LoadFunction<T>;
|
|
36
|
+
/** Alias for load */
|
|
37
|
+
refetch: LoadFunction<T>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Options for useLoader hook
|
|
41
|
+
*/
|
|
42
|
+
export interface UseLoaderOptions {
|
|
43
|
+
/**
|
|
44
|
+
* If true (default), errors from load() will be thrown to the nearest error boundary.
|
|
45
|
+
* If false, errors are only captured in the `error` state.
|
|
46
|
+
* @default true
|
|
47
|
+
*/
|
|
48
|
+
throwOnError?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Hook to access loader data from route context (strict version)
|
|
52
|
+
*
|
|
53
|
+
* Use this when the loader is registered on the route via `loader()`.
|
|
54
|
+
* The data is guaranteed to exist - throws an error if not found.
|
|
55
|
+
*
|
|
56
|
+
* For on-demand fetching or when loader might not be in context,
|
|
57
|
+
* use `useFetchLoader` instead.
|
|
58
|
+
*
|
|
59
|
+
* @param loader - The loader definition (must be registered on route)
|
|
60
|
+
* @param options - Optional configuration
|
|
61
|
+
* @returns Object with data (guaranteed), isLoading, error, load, and refetch
|
|
62
|
+
* @throws Error if loader data is not found in context
|
|
63
|
+
*
|
|
64
|
+
* @example Basic usage - accessing route loader data
|
|
65
|
+
* ```tsx
|
|
66
|
+
* "use client";
|
|
67
|
+
* import { useLoader } from "rsc-router/client";
|
|
68
|
+
* import { CartLoader } from "../loaders/cart";
|
|
69
|
+
*
|
|
70
|
+
* // In route definition: loader(CartLoader)
|
|
71
|
+
*
|
|
72
|
+
* export function CartIcon() {
|
|
73
|
+
* const { data } = useLoader(CartLoader);
|
|
74
|
+
* // data is guaranteed to be CartData, not CartData | undefined
|
|
75
|
+
* return <span>Cart ({data.items.length})</span>;
|
|
76
|
+
* }
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export declare function useLoader<T>(loader: LoaderDefinition<T>, options?: UseLoaderOptions): UseLoaderResult<T>;
|
|
80
|
+
/**
|
|
81
|
+
* Hook to access loader data with optional fetching (flexible version)
|
|
82
|
+
*
|
|
83
|
+
* Use this when:
|
|
84
|
+
* - The loader might not be registered on the route
|
|
85
|
+
* - You want to fetch data on-demand from the client
|
|
86
|
+
* - You're building a reusable component that doesn't assume route context
|
|
87
|
+
*
|
|
88
|
+
* If the loader IS registered on the route, it will still get the initial
|
|
89
|
+
* data from context - you just have to handle the `undefined` case in types.
|
|
90
|
+
*
|
|
91
|
+
* @param loader - The loader definition
|
|
92
|
+
* @param options - Optional configuration
|
|
93
|
+
* @returns Object with data (may be undefined), isLoading, error, load, and refetch
|
|
94
|
+
*
|
|
95
|
+
* @example On-demand fetching
|
|
96
|
+
* ```tsx
|
|
97
|
+
* "use client";
|
|
98
|
+
* import { useFetchLoader } from "rsc-router/client";
|
|
99
|
+
* import { SearchLoader } from "../loaders/search";
|
|
100
|
+
*
|
|
101
|
+
* export function SearchResults() {
|
|
102
|
+
* const { data, load, isLoading } = useFetchLoader(SearchLoader);
|
|
103
|
+
*
|
|
104
|
+
* const handleSearch = async (query: string) => {
|
|
105
|
+
* await load({ params: { query } });
|
|
106
|
+
* };
|
|
107
|
+
*
|
|
108
|
+
* return (
|
|
109
|
+
* <div>
|
|
110
|
+
* <button onClick={() => handleSearch("test")}>Search</button>
|
|
111
|
+
* {isLoading && <span>Loading...</span>}
|
|
112
|
+
* {data?.results.map(r => <div key={r.id}>{r.name}</div>)}
|
|
113
|
+
* </div>
|
|
114
|
+
* );
|
|
115
|
+
* }
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* @example With route context (hybrid usage)
|
|
119
|
+
* ```tsx
|
|
120
|
+
* // Loader registered on route: loader(UserLoader)
|
|
121
|
+
* // useFetchLoader still works - gets initial data from context
|
|
122
|
+
* const { data, load } = useFetchLoader(UserLoader);
|
|
123
|
+
* // data is UserData | undefined (even though it will have initial value)
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare function useFetchLoader<T>(loader: LoaderDefinition<T>, options?: UseLoaderOptions): UseFetchLoaderResult<T>;
|
|
127
|
+
//# sourceMappingURL=use-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-loader.d.ts","sourceRoot":"","sources":["../src/use-loader.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAUhE;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG;IACtE,kFAAkF;IAClF,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,+EAA+E;IAC/E,IAAI,EAAE,CAAC,CAAC;IACR,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,sEAAsE;IACtE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACtB,qBAAqB;IACrB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,8EAA8E;IAC9E,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IACpB,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,sEAAsE;IACtE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACtB,qBAAqB;IACrB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAuLD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,eAAe,CAAC,CAAC,CAAC,CAapB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,oBAAoB,CAAC,CAAC,CAAC,CAEzB"}
|