@rangojs/router 0.0.0-experimental.9 → 0.0.0-experimental.91
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/AGENTS.md +9 -0
- package/README.md +972 -4
- 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 +1619 -155
- 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/{src/href-context.ts → dist/href-context.d.ts} +7 -11
- 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 +5565 -2291
- 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/{src/vite/package-resolution.ts → dist/vite/package-resolution.js} +53 -66
- package/dist/vite/package-resolution.js.map +1 -0
- package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/dist/vite/virtual-entries.d.ts +25 -0
- package/dist/vite/virtual-entries.d.ts.map +1 -0
- package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +12 -16
- package/dist/vite/virtual-entries.js.map +1 -0
- package/package.json +72 -63
- package/skills/breadcrumbs/SKILL.md +252 -0
- package/skills/cache-guide/SKILL.md +294 -0
- package/skills/caching/SKILL.md +93 -23
- package/skills/composability/SKILL.md +172 -0
- package/skills/debug-manifest/SKILL.md +12 -8
- package/skills/document-cache/SKILL.md +18 -16
- package/skills/fonts/SKILL.md +6 -4
- package/skills/handler-use/SKILL.md +362 -0
- package/skills/hooks/SKILL.md +341 -71
- package/skills/host-router/SKILL.md +218 -0
- package/skills/intercept/SKILL.md +151 -8
- package/skills/layout/SKILL.md +122 -3
- package/skills/links/SKILL.md +158 -25
- package/skills/loader/SKILL.md +439 -46
- package/skills/middleware/SKILL.md +205 -37
- package/skills/migrate-nextjs/SKILL.md +560 -0
- package/skills/migrate-react-router/SKILL.md +765 -0
- package/skills/mime-routes/SKILL.md +15 -11
- package/skills/parallel/SKILL.md +263 -1
- package/skills/prerender/SKILL.md +467 -65
- package/skills/rango/SKILL.md +87 -21
- package/skills/response-routes/SKILL.md +152 -91
- package/skills/route/SKILL.md +281 -14
- package/skills/router-setup/SKILL.md +210 -32
- package/skills/streams-and-websockets/SKILL.md +283 -0
- package/skills/theme/SKILL.md +9 -8
- package/skills/typesafety/SKILL.md +327 -86
- package/skills/use-cache/SKILL.md +324 -0
- package/src/__internal.ts +102 -4
- package/src/bin/rango.ts +312 -15
- package/src/browser/action-coordinator.ts +97 -0
- package/src/browser/action-response-classifier.ts +99 -0
- package/src/browser/app-shell.ts +52 -0
- package/src/browser/app-version.ts +14 -0
- package/src/browser/event-controller.ts +92 -64
- package/src/browser/history-state.ts +80 -0
- package/src/browser/intercept-utils.ts +52 -0
- package/src/browser/link-interceptor.ts +24 -4
- package/src/browser/logging.ts +55 -0
- package/src/browser/merge-segment-loaders.ts +20 -12
- package/src/browser/navigation-bridge.ts +367 -561
- package/src/browser/navigation-client.ts +228 -70
- package/src/browser/navigation-store.ts +97 -55
- package/src/browser/navigation-transaction.ts +297 -0
- package/src/browser/network-error-handler.ts +61 -0
- package/src/browser/partial-update.ts +362 -316
- package/src/browser/prefetch/cache.ts +314 -0
- package/src/browser/prefetch/fetch.ts +282 -0
- package/src/browser/prefetch/observer.ts +65 -0
- package/src/browser/prefetch/policy.ts +48 -0
- package/src/browser/prefetch/queue.ts +191 -0
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/rango-state.ts +152 -0
- package/src/browser/react/Link.tsx +255 -71
- package/src/browser/react/NavigationProvider.tsx +132 -17
- package/src/browser/react/context.ts +11 -0
- package/src/browser/react/filter-segment-order.ts +11 -0
- package/src/browser/react/index.ts +12 -12
- package/src/browser/react/location-state-shared.ts +95 -53
- package/src/browser/react/location-state.ts +60 -15
- package/src/browser/react/mount-context.ts +6 -1
- package/src/browser/react/nonce-context.ts +23 -0
- package/src/browser/react/shallow-equal.ts +27 -0
- package/src/browser/react/use-action.ts +29 -51
- package/src/browser/react/use-client-cache.ts +5 -3
- package/src/browser/react/use-handle.ts +30 -120
- package/src/browser/react/use-link-status.ts +6 -5
- package/src/browser/react/use-navigation.ts +44 -65
- package/src/browser/react/use-params.ts +75 -0
- package/src/browser/react/use-pathname.ts +47 -0
- package/src/browser/react/use-router.ts +83 -0
- package/src/browser/react/use-search-params.ts +56 -0
- package/src/browser/react/use-segments.ts +80 -97
- package/src/browser/response-adapter.ts +73 -0
- package/src/browser/rsc-router.tsx +246 -64
- package/src/browser/scroll-restoration.ts +127 -52
- package/src/browser/segment-reconciler.ts +243 -0
- package/src/browser/segment-structure-assert.ts +16 -0
- package/src/browser/server-action-bridge.ts +510 -603
- package/src/browser/shallow.ts +6 -1
- package/src/browser/types.ts +152 -48
- package/src/browser/validate-redirect-origin.ts +29 -0
- package/src/build/generate-manifest.ts +84 -23
- package/src/build/generate-route-types.ts +39 -752
- package/src/build/index.ts +6 -5
- package/src/build/route-trie.ts +83 -31
- package/src/build/route-types/ast-helpers.ts +25 -0
- package/src/build/route-types/ast-route-extraction.ts +98 -0
- package/src/build/route-types/codegen.ts +102 -0
- package/src/build/route-types/include-resolution.ts +418 -0
- package/src/build/route-types/param-extraction.ts +48 -0
- package/src/build/route-types/per-module-writer.ts +128 -0
- package/src/build/route-types/router-processing.ts +618 -0
- package/src/build/route-types/scan-filter.ts +85 -0
- package/src/build/runtime-discovery.ts +231 -0
- package/src/cache/background-task.ts +34 -0
- package/src/cache/cache-key-utils.ts +44 -0
- package/src/cache/cache-policy.ts +125 -0
- package/src/cache/cache-runtime.ts +342 -0
- package/src/cache/cache-scope.ts +167 -307
- package/src/cache/cf/cf-cache-store.ts +573 -21
- package/src/cache/cf/index.ts +13 -3
- package/src/cache/document-cache.ts +116 -77
- package/src/cache/handle-capture.ts +81 -0
- package/src/cache/handle-snapshot.ts +41 -0
- package/src/cache/index.ts +1 -15
- package/src/cache/memory-segment-store.ts +191 -13
- package/src/cache/profile-registry.ts +73 -0
- package/src/cache/read-through-swr.ts +134 -0
- package/src/cache/segment-codec.ts +256 -0
- package/src/cache/taint.ts +153 -0
- package/src/cache/types.ts +72 -122
- package/src/client.rsc.tsx +3 -1
- package/src/client.tsx +113 -301
- package/src/component-utils.ts +4 -4
- package/src/components/DefaultDocument.tsx +5 -1
- package/src/context-var.ts +156 -0
- package/src/debug.ts +19 -9
- package/src/errors.ts +77 -7
- package/src/handle.ts +55 -10
- package/src/handles/MetaTags.tsx +73 -20
- package/src/handles/breadcrumbs.ts +66 -0
- package/src/handles/index.ts +1 -0
- package/src/handles/meta.ts +30 -13
- package/src/host/cookie-handler.ts +21 -15
- package/src/host/errors.ts +8 -8
- package/src/host/index.ts +4 -7
- package/src/host/pattern-matcher.ts +27 -27
- package/src/host/router.ts +61 -39
- package/src/host/testing.ts +8 -8
- package/src/host/types.ts +15 -7
- package/src/host/utils.ts +1 -1
- package/src/href-client.ts +65 -45
- package/src/index.rsc.ts +138 -21
- package/src/index.ts +206 -51
- package/src/internal-debug.ts +11 -0
- package/src/loader.rsc.ts +25 -143
- package/src/loader.ts +27 -10
- package/src/network-error-thrower.tsx +3 -1
- package/src/outlet-context.ts +1 -1
- package/src/outlet-provider.tsx +45 -0
- package/src/prerender/param-hash.ts +4 -2
- package/src/prerender/store.ts +159 -13
- package/src/prerender.ts +397 -29
- package/src/response-utils.ts +28 -0
- package/src/reverse.ts +209 -121
- package/src/root-error-boundary.tsx +41 -29
- package/src/route-content-wrapper.tsx +7 -4
- package/src/route-definition/dsl-helpers.ts +1134 -0
- package/src/route-definition/helper-factories.ts +200 -0
- package/src/route-definition/helpers-types.ts +478 -0
- package/src/route-definition/index.ts +55 -0
- package/src/route-definition/redirect.ts +101 -0
- package/src/route-definition/resolve-handler-use.ts +155 -0
- package/src/route-definition.ts +1 -1431
- package/src/route-map-builder.ts +162 -123
- package/src/route-name.ts +53 -0
- package/src/route-types.ts +66 -9
- package/src/router/content-negotiation.ts +215 -0
- package/src/router/debug-manifest.ts +72 -0
- package/src/router/error-handling.ts +9 -9
- package/src/router/find-match.ts +160 -0
- package/src/router/handler-context.ts +455 -86
- package/src/router/intercept-resolution.ts +35 -20
- package/src/router/lazy-includes.ts +237 -0
- package/src/router/loader-resolution.ts +359 -128
- package/src/router/logging.ts +251 -0
- package/src/router/manifest.ts +98 -32
- package/src/router/match-api.ts +195 -261
- package/src/router/match-context.ts +4 -2
- package/src/router/match-handlers.ts +440 -0
- package/src/router/match-middleware/background-revalidation.ts +108 -93
- package/src/router/match-middleware/cache-lookup.ts +415 -86
- package/src/router/match-middleware/cache-store.ts +91 -29
- package/src/router/match-middleware/intercept-resolution.ts +48 -21
- package/src/router/match-middleware/segment-resolution.ts +73 -9
- package/src/router/match-pipelines.ts +10 -45
- package/src/router/match-result.ts +135 -35
- package/src/router/metrics.ts +240 -15
- package/src/router/middleware-cookies.ts +55 -0
- package/src/router/middleware-types.ts +200 -0
- package/src/router/middleware.ts +373 -371
- package/src/router/navigation-snapshot.ts +182 -0
- package/src/router/pattern-matching.ts +251 -44
- package/src/router/prerender-match.ts +502 -0
- package/src/router/preview-match.ts +98 -0
- package/src/router/request-classification.ts +310 -0
- package/src/router/revalidation.ts +152 -39
- package/src/router/route-snapshot.ts +245 -0
- package/src/router/router-context.ts +41 -21
- package/src/router/router-interfaces.ts +484 -0
- package/src/router/router-options.ts +618 -0
- package/src/router/router-registry.ts +24 -0
- package/src/router/segment-resolution/fresh.ts +748 -0
- package/src/router/segment-resolution/helpers.ts +268 -0
- package/src/router/segment-resolution/loader-cache.ts +199 -0
- package/src/router/segment-resolution/revalidation.ts +1384 -0
- package/src/router/segment-resolution/static-store.ts +67 -0
- package/src/router/segment-resolution.ts +21 -1315
- package/src/router/segment-wrappers.ts +291 -0
- package/src/router/telemetry-otel.ts +299 -0
- package/src/router/telemetry.ts +300 -0
- package/src/router/timeout.ts +148 -0
- package/src/router/trie-matching.ts +103 -30
- package/src/router/types.ts +17 -9
- package/src/router/url-params.ts +49 -0
- package/src/router.ts +647 -1988
- package/src/rsc/handler-context.ts +45 -0
- package/src/rsc/handler.ts +864 -1114
- package/src/rsc/helpers.ts +181 -19
- package/src/rsc/index.ts +0 -20
- package/src/rsc/loader-fetch.ts +229 -0
- package/src/rsc/manifest-init.ts +90 -0
- package/src/rsc/nonce.ts +14 -0
- package/src/rsc/origin-guard.ts +141 -0
- package/src/rsc/progressive-enhancement.ts +393 -0
- package/src/rsc/response-error.ts +37 -0
- package/src/rsc/response-route-handler.ts +360 -0
- package/src/rsc/rsc-rendering.ts +253 -0
- package/src/rsc/runtime-warnings.ts +42 -0
- package/src/rsc/server-action.ts +358 -0
- package/src/rsc/ssr-setup.ts +128 -0
- package/src/rsc/types.ts +46 -11
- package/src/search-params.ts +230 -0
- package/src/segment-content-promise.ts +67 -0
- package/src/segment-loader-promise.ts +122 -0
- package/src/segment-system.tsx +134 -36
- package/src/server/context.ts +333 -59
- package/src/server/cookie-store.ts +190 -0
- package/src/server/fetchable-loader-store.ts +37 -0
- package/src/server/handle-store.ts +113 -15
- package/src/server/loader-registry.ts +24 -64
- package/src/server/request-context.ts +603 -109
- package/src/server.ts +35 -155
- package/src/ssr/index.tsx +103 -30
- package/src/static-handler.ts +126 -0
- package/src/theme/ThemeProvider.tsx +21 -15
- package/src/theme/ThemeScript.tsx +5 -5
- package/src/theme/constants.ts +5 -2
- package/src/theme/index.ts +4 -14
- package/src/theme/theme-context.ts +4 -30
- package/src/theme/theme-script.ts +21 -18
- package/src/types/boundaries.ts +158 -0
- package/src/types/cache-types.ts +198 -0
- package/src/types/error-types.ts +192 -0
- package/src/types/global-namespace.ts +100 -0
- package/src/types/handler-context.ts +759 -0
- package/src/types/index.ts +88 -0
- package/src/types/loader-types.ts +209 -0
- package/src/types/request-scope.ts +126 -0
- package/src/types/route-config.ts +170 -0
- package/src/types/route-entry.ts +120 -0
- package/src/types/segments.ts +150 -0
- package/src/types.ts +1 -1757
- package/src/urls/include-helper.ts +207 -0
- package/src/urls/index.ts +53 -0
- package/src/urls/path-helper-types.ts +372 -0
- package/src/urls/path-helper.ts +364 -0
- package/src/urls/pattern-types.ts +107 -0
- package/src/urls/response-types.ts +108 -0
- package/src/urls/type-extraction.ts +372 -0
- package/src/urls/urls-function.ts +98 -0
- package/src/urls.ts +1 -1282
- package/src/use-loader.tsx +161 -81
- package/src/vite/debug.ts +184 -0
- package/src/vite/discovery/bundle-postprocess.ts +181 -0
- package/src/vite/discovery/discover-routers.ts +376 -0
- package/src/vite/discovery/prerender-collection.ts +486 -0
- package/src/vite/discovery/route-types-writer.ts +258 -0
- package/src/vite/discovery/self-gen-tracking.ts +47 -0
- package/src/vite/discovery/state.ts +117 -0
- package/src/vite/discovery/virtual-module-codegen.ts +203 -0
- package/src/vite/index.ts +15 -1963
- package/src/vite/plugin-types.ts +103 -0
- package/src/vite/plugins/cjs-to-esm.ts +98 -0
- package/src/vite/plugins/client-ref-dedup.ts +131 -0
- package/src/vite/plugins/client-ref-hashing.ts +117 -0
- package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
- package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
- package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +107 -64
- package/src/vite/plugins/expose-id-utils.ts +299 -0
- package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
- package/src/vite/plugins/expose-ids/handler-transform.ts +209 -0
- package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
- package/src/vite/plugins/expose-ids/router-transform.ts +127 -0
- package/src/vite/plugins/expose-ids/types.ts +45 -0
- package/src/vite/plugins/expose-internal-ids.ts +816 -0
- package/src/vite/plugins/performance-tracks.ts +96 -0
- package/src/vite/plugins/refresh-cmd.ts +127 -0
- package/src/vite/plugins/use-cache-transform.ts +336 -0
- package/src/vite/plugins/version-injector.ts +83 -0
- package/src/vite/plugins/version-plugin.ts +266 -0
- package/src/vite/plugins/virtual-entries.ts +123 -0
- package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
- package/src/vite/rango.ts +497 -0
- package/src/vite/router-discovery.ts +1111 -0
- package/src/vite/utils/ast-handler-extract.ts +517 -0
- package/src/vite/utils/banner.ts +36 -0
- package/src/vite/utils/bundle-analysis.ts +137 -0
- package/src/vite/utils/manifest-utils.ts +70 -0
- package/src/vite/utils/package-resolution.ts +161 -0
- package/src/vite/utils/prerender-utils.ts +221 -0
- package/src/vite/utils/shared-utils.ts +170 -0
- package/CLAUDE.md +0 -43
- package/src/browser/lru-cache.ts +0 -69
- package/src/browser/request-controller.ts +0 -164
- package/src/cache/memory-store.ts +0 -253
- package/src/router.gen.ts +0 -6
- package/src/urls.gen.ts +0 -8
- package/src/vite/expose-handle-id.ts +0 -209
- package/src/vite/expose-loader-id.ts +0 -426
- package/src/vite/expose-location-state-id.ts +0 -177
- package/src/vite/expose-prerender-handler-id.ts +0 -429
- /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
package/src/index.ts
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @rangojs/router
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Single user-facing entrypoint for all router APIs.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* The "react-server" export condition selects index.rsc.ts (real implementations)
|
|
7
|
+
* vs this file (client stubs for server-only functions).
|
|
8
8
|
*
|
|
9
|
-
* For client-only exports (Outlet, useOutlet,
|
|
10
|
-
* import from "
|
|
9
|
+
* For client-only exports (Outlet, useOutlet, hooks, components):
|
|
10
|
+
* import from "@rangojs/router/client"
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
// Universal rendering utilities (work on both server and client)
|
|
14
|
-
export { renderSegments } from "./segment-system.js";
|
|
15
|
-
|
|
16
13
|
// Error classes (can be used on both server and client)
|
|
17
14
|
export {
|
|
18
15
|
RouteNotFoundError,
|
|
@@ -22,22 +19,22 @@ export {
|
|
|
22
19
|
HandlerError,
|
|
23
20
|
BuildError,
|
|
24
21
|
InvalidHandlerError,
|
|
25
|
-
NetworkError,
|
|
26
|
-
isNetworkError,
|
|
27
|
-
sanitizeError,
|
|
28
22
|
RouterError,
|
|
23
|
+
Skip,
|
|
24
|
+
isSkip,
|
|
29
25
|
} from "./errors.js";
|
|
30
26
|
|
|
31
27
|
// Types (safe to import anywhere - no runtime code)
|
|
32
28
|
export type {
|
|
33
29
|
// Configuration types
|
|
34
30
|
DocumentProps,
|
|
35
|
-
RouterEnv,
|
|
36
31
|
DefaultEnv,
|
|
37
32
|
RouteDefinition,
|
|
33
|
+
RouteConfig,
|
|
34
|
+
RouteDefinitionOptions,
|
|
35
|
+
TrailingSlashMode,
|
|
38
36
|
// Handler types
|
|
39
|
-
Handler,
|
|
40
|
-
ScopedRouteMap, // Scoped view of GeneratedRouteMap for Handler<"localName", ScopedRouteMap<"prefix">>
|
|
37
|
+
Handler, // Supports params object, path pattern, or route name
|
|
41
38
|
HandlerContext,
|
|
42
39
|
ExtractParams,
|
|
43
40
|
GenericParams,
|
|
@@ -53,9 +50,6 @@ export type {
|
|
|
53
50
|
LoaderContext,
|
|
54
51
|
FetchableLoaderOptions,
|
|
55
52
|
LoadOptions,
|
|
56
|
-
LoaderActionContext,
|
|
57
|
-
LoaderAction,
|
|
58
|
-
LoaderMiddlewareFn,
|
|
59
53
|
// Error boundary types
|
|
60
54
|
ErrorInfo,
|
|
61
55
|
ErrorBoundaryFallbackProps,
|
|
@@ -65,12 +59,38 @@ export type {
|
|
|
65
59
|
NotFoundInfo,
|
|
66
60
|
NotFoundBoundaryFallbackProps,
|
|
67
61
|
NotFoundBoundaryHandler,
|
|
62
|
+
// Error handling callback types
|
|
63
|
+
ErrorPhase,
|
|
64
|
+
OnErrorContext,
|
|
65
|
+
OnErrorCallback,
|
|
68
66
|
} from "./types.js";
|
|
69
67
|
|
|
68
|
+
// Search params schema types
|
|
69
|
+
export type {
|
|
70
|
+
SearchSchema,
|
|
71
|
+
SearchSchemaValue,
|
|
72
|
+
ResolveSearchSchema,
|
|
73
|
+
RouteSearchParams,
|
|
74
|
+
RouteParams,
|
|
75
|
+
} from "./search-params.js";
|
|
76
|
+
|
|
70
77
|
// Client-safe createLoader - only stores the $$id, function is not included
|
|
71
78
|
// Use this when defining loaders that will be imported by client components
|
|
72
79
|
export { createLoader } from "./loader.js";
|
|
73
80
|
|
|
81
|
+
// Route definition types (safe to import anywhere)
|
|
82
|
+
export type { RouteHelpers, RouteHandlers } from "./route-definition.js";
|
|
83
|
+
export type { TransitionConfig, ViewTransitionClass } from "./types.js";
|
|
84
|
+
|
|
85
|
+
// Composition types for reusable callback factories
|
|
86
|
+
export type {
|
|
87
|
+
RouteUseItem,
|
|
88
|
+
LayoutUseItem,
|
|
89
|
+
AllUseItems,
|
|
90
|
+
UseItems,
|
|
91
|
+
HandlerUseItem,
|
|
92
|
+
} from "./route-types.js";
|
|
93
|
+
|
|
74
94
|
// Response route types (usable in both server and client contexts)
|
|
75
95
|
export type {
|
|
76
96
|
ResponseHandler,
|
|
@@ -86,80 +106,215 @@ export type {
|
|
|
86
106
|
ResponseEnvelope,
|
|
87
107
|
} from "./urls.js";
|
|
88
108
|
|
|
109
|
+
// Middleware context types
|
|
110
|
+
export type { MiddlewareContext, CookieOptions } from "./router/middleware.js";
|
|
111
|
+
|
|
112
|
+
function serverOnlyStubError(name: string): Error {
|
|
113
|
+
return new Error(
|
|
114
|
+
`${name}() is only available from "@rangojs/router" in a react-server/RSC environment. ` +
|
|
115
|
+
`For client hooks and components, import from "@rangojs/router/client".`,
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
|
|
89
119
|
/**
|
|
90
120
|
* Error-throwing stub for server-only `urls` function.
|
|
91
|
-
* Import from "@rangojs/router/server" or use within RSC context instead.
|
|
92
121
|
*/
|
|
93
122
|
export function urls(): never {
|
|
94
|
-
throw
|
|
95
|
-
'urls() is server-only. Import from "@rangojs/router/server" instead, or ensure you\'re using it in a server component.'
|
|
96
|
-
);
|
|
123
|
+
throw serverOnlyStubError("urls");
|
|
97
124
|
}
|
|
98
125
|
|
|
99
126
|
/**
|
|
100
127
|
* Error-throwing stub for server-only `createRouter` function.
|
|
101
|
-
* Import from "@rangojs/router/server" instead.
|
|
102
128
|
*/
|
|
103
129
|
export function createRouter(): never {
|
|
104
|
-
throw
|
|
105
|
-
'createRouter() is server-only. Import from "@rangojs/router/server" instead.'
|
|
106
|
-
);
|
|
130
|
+
throw serverOnlyStubError("createRouter");
|
|
107
131
|
}
|
|
108
132
|
|
|
109
133
|
/**
|
|
110
134
|
* Error-throwing stub for server-only `redirect` function.
|
|
111
|
-
* Import from "@rangojs/router/server" or use within RSC context instead.
|
|
112
135
|
*/
|
|
113
136
|
export function redirect(): never {
|
|
114
|
-
throw
|
|
115
|
-
'redirect() is server-only. Import from "@rangojs/router/server" instead.'
|
|
116
|
-
);
|
|
137
|
+
throw serverOnlyStubError("redirect");
|
|
117
138
|
}
|
|
118
139
|
|
|
140
|
+
// Handle API (universal - works on both server and client)
|
|
141
|
+
export { createHandle, isHandle, type Handle } from "./handle.js";
|
|
142
|
+
|
|
143
|
+
// Context variable API (typed ctx.set/ctx.get tokens)
|
|
144
|
+
export { createVar, type ContextVar } from "./context-var.js";
|
|
145
|
+
|
|
146
|
+
// CSP nonce token (use with ctx.get(nonce) in middleware/handlers)
|
|
147
|
+
export { nonce } from "./rsc/nonce.js";
|
|
148
|
+
|
|
119
149
|
/**
|
|
120
|
-
*
|
|
121
|
-
*
|
|
150
|
+
* SSR/client stub for server-only `Prerender` function.
|
|
151
|
+
*
|
|
152
|
+
* Returns a lightweight stub object instead of throwing so that the
|
|
153
|
+
* production SSR build can safely bundle the RSC entry chunk — the SSR
|
|
154
|
+
* bundler resolves `@rangojs/router` to this (SSR) entry, so Prerender
|
|
155
|
+
* calls in RSC code must not crash at module-evaluation time.
|
|
122
156
|
*/
|
|
123
|
-
export function
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
157
|
+
export function Prerender(
|
|
158
|
+
_handler?: any,
|
|
159
|
+
_optionsOrId?: any,
|
|
160
|
+
__injectedId?: string,
|
|
161
|
+
): any {
|
|
162
|
+
const id =
|
|
163
|
+
typeof _optionsOrId === "string" ? _optionsOrId : __injectedId || "";
|
|
164
|
+
return { __brand: "prerenderHandler" as const, $$id: id };
|
|
127
165
|
}
|
|
128
166
|
|
|
129
167
|
/**
|
|
130
|
-
*
|
|
131
|
-
* Import from "@rangojs/router/server" or use within RSC context instead.
|
|
168
|
+
* SSR/client stub for server-only `Passthrough` function.
|
|
132
169
|
*/
|
|
133
|
-
export function
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
170
|
+
export function Passthrough(
|
|
171
|
+
_handler?: any,
|
|
172
|
+
_optionsOrId?: any,
|
|
173
|
+
__injectedId?: string,
|
|
174
|
+
): any {
|
|
175
|
+
const id =
|
|
176
|
+
typeof _optionsOrId === "string" ? _optionsOrId : __injectedId || "";
|
|
177
|
+
return { __brand: "passthroughHandler" as const, $$id: id };
|
|
137
178
|
}
|
|
138
179
|
|
|
139
|
-
|
|
140
|
-
|
|
180
|
+
/**
|
|
181
|
+
* SSR/client stub for server-only `Static` function.
|
|
182
|
+
*
|
|
183
|
+
* Returns a lightweight stub object instead of throwing so that the
|
|
184
|
+
* production SSR build can safely bundle the RSC entry chunk — the SSR
|
|
185
|
+
* bundler resolves `@rangojs/router` to this (SSR) entry, so Static
|
|
186
|
+
* calls in RSC code must not crash at module-evaluation time.
|
|
187
|
+
*/
|
|
188
|
+
export function Static(
|
|
189
|
+
_handler?: any,
|
|
190
|
+
_optionsOrId?: any,
|
|
191
|
+
__injectedId?: string,
|
|
192
|
+
): any {
|
|
193
|
+
const id =
|
|
194
|
+
typeof _optionsOrId === "string" ? _optionsOrId : __injectedId || "";
|
|
195
|
+
return { __brand: "staticHandler" as const, $$id: id };
|
|
196
|
+
}
|
|
141
197
|
|
|
142
198
|
/**
|
|
143
199
|
* Error-throwing stub for server-only `getRequestContext` function.
|
|
144
|
-
* Import from "@rangojs/router/server" or use within RSC context instead.
|
|
145
200
|
*/
|
|
146
201
|
export function getRequestContext(): never {
|
|
147
|
-
throw
|
|
148
|
-
|
|
149
|
-
|
|
202
|
+
throw serverOnlyStubError("getRequestContext");
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Error-throwing stub for server-only `cookies` function.
|
|
207
|
+
*/
|
|
208
|
+
export function cookies(): never {
|
|
209
|
+
throw serverOnlyStubError("cookies");
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Error-throwing stub for server-only `headers` function.
|
|
214
|
+
*/
|
|
215
|
+
export function headers(): never {
|
|
216
|
+
throw serverOnlyStubError("headers");
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Error-throwing stub for server-only `createReverse` function.
|
|
221
|
+
*/
|
|
222
|
+
export function createReverse(): never {
|
|
223
|
+
throw serverOnlyStubError("createReverse");
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Error-throwing stubs for server-only route helpers
|
|
227
|
+
export function layout(): never {
|
|
228
|
+
throw serverOnlyStubError("layout");
|
|
229
|
+
}
|
|
230
|
+
export function cache(): never {
|
|
231
|
+
throw serverOnlyStubError("cache");
|
|
232
|
+
}
|
|
233
|
+
export function middleware(): never {
|
|
234
|
+
throw serverOnlyStubError("middleware");
|
|
235
|
+
}
|
|
236
|
+
export function revalidate(): never {
|
|
237
|
+
throw serverOnlyStubError("revalidate");
|
|
238
|
+
}
|
|
239
|
+
export function loader(): never {
|
|
240
|
+
throw serverOnlyStubError("loader");
|
|
241
|
+
}
|
|
242
|
+
export function loading(): never {
|
|
243
|
+
throw serverOnlyStubError("loading");
|
|
244
|
+
}
|
|
245
|
+
export function parallel(): never {
|
|
246
|
+
throw serverOnlyStubError("parallel");
|
|
247
|
+
}
|
|
248
|
+
export function intercept(): never {
|
|
249
|
+
throw serverOnlyStubError("intercept");
|
|
250
|
+
}
|
|
251
|
+
export function when(): never {
|
|
252
|
+
throw serverOnlyStubError("when");
|
|
253
|
+
}
|
|
254
|
+
export function errorBoundary(): never {
|
|
255
|
+
throw serverOnlyStubError("errorBoundary");
|
|
256
|
+
}
|
|
257
|
+
export function notFoundBoundary(): never {
|
|
258
|
+
throw serverOnlyStubError("notFoundBoundary");
|
|
259
|
+
}
|
|
260
|
+
export function transition(): never {
|
|
261
|
+
throw serverOnlyStubError("transition");
|
|
150
262
|
}
|
|
151
263
|
|
|
152
264
|
// Request context type (safe for client)
|
|
153
|
-
export type { RequestContext } from "./server/request-context.js";
|
|
265
|
+
export type { PublicRequestContext as RequestContext } from "./server/request-context.js";
|
|
266
|
+
|
|
267
|
+
// Shared base for every user-facing request context.
|
|
268
|
+
export type { RequestScope, ExecutionContext } from "./types/request-scope.js";
|
|
269
|
+
|
|
270
|
+
// Cookie store types (safe for client)
|
|
271
|
+
export type {
|
|
272
|
+
CookieStore,
|
|
273
|
+
Cookie,
|
|
274
|
+
ReadonlyHeaders,
|
|
275
|
+
} from "./server/cookie-store.js";
|
|
276
|
+
|
|
277
|
+
// Built-in handles (universal — work on both server and client)
|
|
278
|
+
export { Meta } from "./handles/meta.js";
|
|
279
|
+
export { Breadcrumbs } from "./handles/breadcrumbs.js";
|
|
154
280
|
|
|
155
281
|
// Meta types
|
|
156
282
|
export type { MetaDescriptor, MetaDescriptorBase } from "./router/types.js";
|
|
157
283
|
|
|
284
|
+
// Breadcrumb types
|
|
285
|
+
export type { BreadcrumbItem } from "./handles/breadcrumbs.js";
|
|
286
|
+
|
|
158
287
|
// Reverse type utilities for type-safe URL generation (Django-style URL reversal)
|
|
159
|
-
|
|
160
|
-
|
|
288
|
+
export type {
|
|
289
|
+
ScopedReverseFunction,
|
|
290
|
+
ReverseFunction,
|
|
291
|
+
ExtractLocalRoutes,
|
|
292
|
+
ParamsFor,
|
|
293
|
+
} from "./reverse.js";
|
|
161
294
|
// scopedReverse() helper for handlers to get locally-typed reverse
|
|
162
295
|
export { scopedReverse } from "./reverse.js";
|
|
163
296
|
|
|
297
|
+
// Location state (universal - works on both server and client)
|
|
298
|
+
export {
|
|
299
|
+
createLocationState,
|
|
300
|
+
type LocationStateDefinition,
|
|
301
|
+
type LocationStateEntry,
|
|
302
|
+
type LocationStateOptions,
|
|
303
|
+
} from "./browser/react/location-state-shared.js";
|
|
304
|
+
|
|
164
305
|
// Path-based response type lookup from RegisteredRoutes
|
|
165
306
|
export type { PathResponse } from "./href-client.js";
|
|
307
|
+
|
|
308
|
+
// Telemetry sink
|
|
309
|
+
export { createConsoleSink } from "./router/telemetry.js";
|
|
310
|
+
export { createOTelSink } from "./router/telemetry-otel.js";
|
|
311
|
+
export type { OTelTracer, OTelSpan } from "./router/telemetry-otel.js";
|
|
312
|
+
export type { TelemetrySink, TelemetryEvent } from "./router/telemetry.js";
|
|
313
|
+
|
|
314
|
+
// Timeout types and error class
|
|
315
|
+
export { RouterTimeoutError } from "./router/timeout.js";
|
|
316
|
+
export type {
|
|
317
|
+
RouterTimeouts,
|
|
318
|
+
TimeoutPhase,
|
|
319
|
+
TimeoutContext,
|
|
320
|
+
} from "./router/timeout.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Internal debug gate. Enable with INTERNAL_RANGO_DEBUG=1 in the environment.
|
|
2
|
+
// Uses a Vite define (__RANGO_DEBUG__) for compile-time injection so it works
|
|
3
|
+
// in all runtimes including Cloudflare Workers where process.env is unavailable.
|
|
4
|
+
// Falls back to process.env for non-Vite contexts (tests, direct Node usage).
|
|
5
|
+
export const INTERNAL_RANGO_DEBUG: boolean =
|
|
6
|
+
typeof __RANGO_DEBUG__ !== "undefined"
|
|
7
|
+
? __RANGO_DEBUG__
|
|
8
|
+
: typeof process !== "undefined" &&
|
|
9
|
+
Boolean((process as any).env?.INTERNAL_RANGO_DEBUG);
|
|
10
|
+
|
|
11
|
+
declare const __RANGO_DEBUG__: boolean;
|
package/src/loader.rsc.ts
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* Only used in react-server context via export conditions.
|
|
6
6
|
*
|
|
7
7
|
* For non-fetchable loaders: returns a loader definition with fn included
|
|
8
|
-
* For fetchable loaders: stores fn in registry and returns a serializable loader
|
|
8
|
+
* For fetchable loaders: stores fn in registry and returns a serializable loader
|
|
9
9
|
*
|
|
10
|
-
* The $$id is injected by the Vite
|
|
10
|
+
* The $$id is injected by the Vite exposeInternalIds plugin as a hidden parameter.
|
|
11
11
|
* Users don't need to pass any name - IDs are auto-generated from file path.
|
|
12
12
|
*/
|
|
13
13
|
|
|
@@ -17,90 +17,54 @@ import type {
|
|
|
17
17
|
LoaderFn,
|
|
18
18
|
} from "./types.js";
|
|
19
19
|
import type { MiddlewareFn } from "./router/middleware.js";
|
|
20
|
-
import {
|
|
20
|
+
import {
|
|
21
|
+
registerFetchableLoader,
|
|
22
|
+
getFetchableLoader,
|
|
23
|
+
} from "./server/fetchable-loader-store.js";
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
// Maps loader $$id to its function and middleware
|
|
24
|
-
//
|
|
25
|
-
// WHY TWO REGISTRIES?
|
|
26
|
-
// This registry (fetchableLoaderRegistry) is populated immediately when createLoader() runs.
|
|
27
|
-
// The other registry in loader-registry.ts (loaderRegistry) is a cache used by the RSC handler
|
|
28
|
-
// for GET-based fetching. The RSC handler calls getFetchableLoader() from here to populate
|
|
29
|
-
// its cache. This separation allows:
|
|
30
|
-
// 1. Server actions to look up loaders directly without going through lazy loading
|
|
31
|
-
// 2. The RSC handler to use lazy loading for production builds
|
|
32
|
-
// 3. Both to share the same source of truth (this registry)
|
|
33
|
-
const fetchableLoaderRegistry = new Map<
|
|
34
|
-
string,
|
|
35
|
-
{ fn: LoaderFn<any, any, any>; middleware: MiddlewareFn[] }
|
|
36
|
-
>();
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Register a fetchable loader's function internally
|
|
40
|
-
* Called during module initialization with the $$id
|
|
41
|
-
*/
|
|
42
|
-
function registerFetchableLoader(
|
|
43
|
-
id: string,
|
|
44
|
-
fn: LoaderFn<any, any, any>,
|
|
45
|
-
middleware: MiddlewareFn[]
|
|
46
|
-
): void {
|
|
47
|
-
fetchableLoaderRegistry.set(id, { fn, middleware });
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Get a fetchable loader's function from the internal registry by $$id
|
|
52
|
-
*
|
|
53
|
-
* This is used internally by:
|
|
54
|
-
* - Server actions (loaderAction) to execute loader functions
|
|
55
|
-
* - loader-registry.ts to populate the main registry for GET-based fetching
|
|
56
|
-
*
|
|
57
|
-
* Loaders are registered here when createLoader() is called with fetchable: true.
|
|
58
|
-
* The $$id is injected by the Vite exposeLoaderId plugin.
|
|
59
|
-
*
|
|
60
|
-
* @param id - The loader's $$id (auto-generated from file path + export name)
|
|
61
|
-
* @returns The loader function and middleware, or undefined if not found
|
|
62
|
-
*
|
|
63
|
-
* @internal This is primarily for internal use by the router infrastructure
|
|
64
|
-
*/
|
|
65
|
-
export function getFetchableLoader(
|
|
66
|
-
id: string
|
|
67
|
-
): { fn: LoaderFn<any, any, any>; middleware: MiddlewareFn[] } | undefined {
|
|
68
|
-
return fetchableLoaderRegistry.get(id);
|
|
69
|
-
}
|
|
25
|
+
export { getFetchableLoader };
|
|
70
26
|
|
|
71
27
|
// Overload 1: With function only (not fetchable)
|
|
72
28
|
export function createLoader<T>(
|
|
73
|
-
fn: LoaderFn<T, Record<string, string | undefined>, any
|
|
29
|
+
fn: LoaderFn<T, Record<string, string | undefined>, any>,
|
|
74
30
|
): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
|
|
75
31
|
|
|
76
32
|
// Overload 2: Fetchable with `true` (no middleware)
|
|
77
33
|
export function createLoader<T>(
|
|
78
34
|
fn: LoaderFn<T, Record<string, string | undefined>, any>,
|
|
79
|
-
fetchable: true
|
|
35
|
+
fetchable: true,
|
|
80
36
|
): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
|
|
81
37
|
|
|
82
38
|
// Overload 3: Fetchable with middleware options
|
|
83
39
|
export function createLoader<T>(
|
|
84
40
|
fn: LoaderFn<T, Record<string, string | undefined>, any>,
|
|
85
|
-
options: FetchableLoaderOptions
|
|
41
|
+
options: FetchableLoaderOptions,
|
|
86
42
|
): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
|
|
87
43
|
|
|
88
44
|
// Implementation - the $$id parameter is injected by Vite plugin, not user-provided
|
|
89
45
|
export function createLoader<T>(
|
|
90
46
|
fn: LoaderFn<T, Record<string, string | undefined>, any>,
|
|
91
47
|
fetchable?: true | FetchableLoaderOptions,
|
|
92
|
-
// Hidden parameter injected by Vite
|
|
93
|
-
__injectedId?: string
|
|
48
|
+
// Hidden parameter injected by Vite exposeInternalIds plugin
|
|
49
|
+
__injectedId?: string,
|
|
94
50
|
): LoaderDefinition<Awaited<T>, Record<string, string | undefined>> {
|
|
95
51
|
// The $$id will be set on the returned object by Vite plugin
|
|
96
52
|
// For fetchable loaders, __injectedId is also passed as a parameter
|
|
97
53
|
const loaderId = __injectedId || "";
|
|
98
54
|
|
|
99
|
-
|
|
100
|
-
|
|
55
|
+
if (!loaderId && process.env.NODE_ENV === "development") {
|
|
56
|
+
throw new Error(
|
|
57
|
+
"[rsc-router] Loader is missing $$id. " +
|
|
58
|
+
"Make sure the exposeInternalIds Vite plugin is enabled and " +
|
|
59
|
+
"the loader is exported with: export const MyLoader = createLoader(...)",
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// If not fetchable, store fn in registry (for SSR ctx.use() resolution)
|
|
64
|
+
// but mark fetchable=false so the _rsc_loader endpoint rejects it.
|
|
101
65
|
if (fetchable === undefined) {
|
|
102
66
|
if (fn && loaderId) {
|
|
103
|
-
registerFetchableLoader(loaderId, fn, []);
|
|
67
|
+
registerFetchableLoader(loaderId, fn, [], false);
|
|
104
68
|
}
|
|
105
69
|
return {
|
|
106
70
|
__brand: "loader",
|
|
@@ -113,95 +77,13 @@ export function createLoader<T>(
|
|
|
113
77
|
fetchable === true ? [] : fetchable?.middleware || [];
|
|
114
78
|
|
|
115
79
|
// Register the function in the internal registry by $$id (server-side only)
|
|
116
|
-
// The
|
|
80
|
+
// The loader fetch handler looks it up by $$id when load() is called from the client.
|
|
117
81
|
if (fn && loaderId) {
|
|
118
|
-
registerFetchableLoader(loaderId, fn, middleware);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// Create server action for form-based fetching
|
|
122
|
-
// This action is serializable and can be passed to client components
|
|
123
|
-
// The loaderId is captured in closure (it's a primitive string)
|
|
124
|
-
//
|
|
125
|
-
// IMPORTANT: The signature must be (prevState, formData) for useActionState compatibility.
|
|
126
|
-
// When used with useActionState, React passes the previous state as the first argument.
|
|
127
|
-
// The prevState is ignored here since loaders are stateless data fetchers.
|
|
128
|
-
async function loaderAction(
|
|
129
|
-
_prevState: Awaited<T> | null,
|
|
130
|
-
formData: FormData
|
|
131
|
-
): Promise<Awaited<T>> {
|
|
132
|
-
"use server";
|
|
133
|
-
|
|
134
|
-
// Look up the loader from registry by $$id
|
|
135
|
-
const registered = fetchableLoaderRegistry.get(loaderId);
|
|
136
|
-
if (!registered) {
|
|
137
|
-
throw new Error(`Loader "${loaderId}" not found in registry`);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Get request context (env, request, url, variables) from the RSC handler
|
|
141
|
-
// This is set by runWithRequestContext in rsc/index.ts when executing actions
|
|
142
|
-
const requestCtx = getRequestContext();
|
|
143
|
-
|
|
144
|
-
// Convert FormData to params object
|
|
145
|
-
const params: Record<string, string> = {};
|
|
146
|
-
formData.forEach((value, key) => {
|
|
147
|
-
if (typeof value === "string") {
|
|
148
|
-
params[key] = value;
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
// Use real request/url from context, or fall back to synthetic for edge cases
|
|
153
|
-
const actionUrl = requestCtx?.url ?? new URL("http://localhost/");
|
|
154
|
-
const actionRequest = requestCtx?.request ?? new Request(actionUrl, { method: "POST" });
|
|
155
|
-
const env = requestCtx?.env ?? {};
|
|
156
|
-
|
|
157
|
-
// Merge variables from request context (app-level middleware) with loader-specific variables
|
|
158
|
-
// requestCtx.var is the shared variables object from the handler
|
|
159
|
-
const variables: Record<string, any> = { ...requestCtx?.var };
|
|
160
|
-
|
|
161
|
-
// Execute middleware for auth checks, headers, cookies
|
|
162
|
-
// Headers/cookies set on ctx.res will be merged into the final response
|
|
163
|
-
if (registered.middleware.length > 0 && requestCtx?.res) {
|
|
164
|
-
const { executeServerActionMiddleware } = await import(
|
|
165
|
-
"./router/middleware.js"
|
|
166
|
-
);
|
|
167
|
-
await executeServerActionMiddleware(
|
|
168
|
-
registered.middleware,
|
|
169
|
-
actionRequest,
|
|
170
|
-
env,
|
|
171
|
-
params,
|
|
172
|
-
variables,
|
|
173
|
-
requestCtx.res
|
|
174
|
-
);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
// Build context using createHandlerContext for consistency with route handlers
|
|
178
|
-
// Variables are now accessed from request context via getRequestContext()
|
|
179
|
-
const { createHandlerContext } = await import("./router/handler-context.js");
|
|
180
|
-
const baseCtx = createHandlerContext(
|
|
181
|
-
params,
|
|
182
|
-
actionRequest,
|
|
183
|
-
actionUrl.searchParams,
|
|
184
|
-
actionUrl.pathname,
|
|
185
|
-
actionUrl,
|
|
186
|
-
env
|
|
187
|
-
);
|
|
188
|
-
|
|
189
|
-
// Extend with server action specific properties
|
|
190
|
-
const ctx: any = {
|
|
191
|
-
...baseCtx,
|
|
192
|
-
method: "POST",
|
|
193
|
-
formData,
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
// Execute and return result
|
|
197
|
-
return registered.fn(ctx);
|
|
82
|
+
registerFetchableLoader(loaderId, fn, middleware, true);
|
|
198
83
|
}
|
|
199
84
|
|
|
200
|
-
// Return a plain object with action for form-based fetching.
|
|
201
|
-
// loaderAction has "use server" so RSC Flight serializes it natively as a server action reference.
|
|
202
85
|
return {
|
|
203
86
|
__brand: "loader",
|
|
204
87
|
$$id: loaderId,
|
|
205
|
-
action: loaderAction,
|
|
206
88
|
};
|
|
207
89
|
}
|
package/src/loader.ts
CHANGED
|
@@ -2,10 +2,15 @@
|
|
|
2
2
|
* rsc-router/loader (client version)
|
|
3
3
|
*
|
|
4
4
|
* Client-only stub for createLoader. Returns a minimal loader definition
|
|
5
|
-
* that can be passed to hooks like useLoader.
|
|
6
|
-
* is not included
|
|
5
|
+
* ({ __brand, $$id }) that can be passed to hooks like useLoader.
|
|
6
|
+
* The actual loader function is not included -- it only exists on the server.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* For export-only loader files, the Vite plugin replaces the entire file with
|
|
9
|
+
* object literals (bypassing this function). Those stubs only contain
|
|
10
|
+
* { __brand, $$id }.
|
|
11
|
+
* This function only runs when loaders are in mixed files (not export-only).
|
|
12
|
+
*
|
|
13
|
+
* The $$id is injected by the Vite exposeInternalIds plugin.
|
|
9
14
|
*/
|
|
10
15
|
|
|
11
16
|
import type {
|
|
@@ -16,32 +21,44 @@ import type {
|
|
|
16
21
|
|
|
17
22
|
// Overload 1: With function only (not fetchable)
|
|
18
23
|
export function createLoader<T>(
|
|
19
|
-
fn: LoaderFn<T, Record<string, string | undefined>, any
|
|
24
|
+
fn: LoaderFn<T, Record<string, string | undefined>, any>,
|
|
20
25
|
): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
|
|
21
26
|
|
|
22
27
|
// Overload 2: Fetchable with `true` (no middleware)
|
|
23
28
|
export function createLoader<T>(
|
|
24
29
|
fn: LoaderFn<T, Record<string, string | undefined>, any>,
|
|
25
|
-
fetchable: true
|
|
30
|
+
fetchable: true,
|
|
26
31
|
): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
|
|
27
32
|
|
|
28
33
|
// Overload 3: Fetchable with middleware options
|
|
29
34
|
export function createLoader<T>(
|
|
30
35
|
fn: LoaderFn<T, Record<string, string | undefined>, any>,
|
|
31
|
-
options: FetchableLoaderOptions
|
|
36
|
+
options: FetchableLoaderOptions,
|
|
32
37
|
): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
|
|
33
38
|
|
|
34
39
|
// Implementation - client stub that just returns the loader definition
|
|
35
40
|
// The $$id parameter is injected by Vite plugin, not user-provided
|
|
41
|
+
//
|
|
42
|
+
// NOTE: For export-only loader files, the Vite plugin replaces the entire
|
|
43
|
+
// file with object literals (bypassing this function). This function only
|
|
44
|
+
// runs when loaders are in mixed files (not export-only).
|
|
36
45
|
export function createLoader<T>(
|
|
37
46
|
_fn: LoaderFn<T, Record<string, string | undefined>, any>,
|
|
38
47
|
_fetchable?: true | FetchableLoaderOptions,
|
|
39
|
-
__injectedId?: string
|
|
48
|
+
__injectedId?: string,
|
|
40
49
|
): LoaderDefinition<Awaited<T>, Record<string, string | undefined>> {
|
|
41
|
-
|
|
42
|
-
|
|
50
|
+
const loaderId = __injectedId || "";
|
|
51
|
+
|
|
52
|
+
if (!loaderId && process.env.NODE_ENV === "development") {
|
|
53
|
+
throw new Error(
|
|
54
|
+
"[rsc-router] Loader is missing $$id. " +
|
|
55
|
+
"Make sure the exposeInternalIds Vite plugin is enabled and " +
|
|
56
|
+
"the loader is exported with: export const MyLoader = createLoader(...)",
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
43
60
|
return {
|
|
44
61
|
__brand: "loader",
|
|
45
|
-
$$id:
|
|
62
|
+
$$id: loaderId,
|
|
46
63
|
};
|
|
47
64
|
}
|
|
@@ -16,6 +16,8 @@ interface NetworkErrorThrowerProps {
|
|
|
16
16
|
* 1. Errors must be thrown during React's render phase to be caught by error boundaries
|
|
17
17
|
* 2. The error occurs in async code (fetch), so we need to propagate it to React's render
|
|
18
18
|
*/
|
|
19
|
-
export function NetworkErrorThrower({
|
|
19
|
+
export function NetworkErrorThrower({
|
|
20
|
+
error,
|
|
21
|
+
}: NetworkErrorThrowerProps): ReactNode {
|
|
20
22
|
throw error;
|
|
21
23
|
}
|
package/src/outlet-context.ts
CHANGED