@rangojs/router 0.0.0-experimental.10 → 0.0.0-experimental.101
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 +1037 -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 +1634 -157
- 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 +5823 -2295
- 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 +71 -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 +364 -0
- package/skills/hooks/SKILL.md +408 -71
- package/skills/host-router/SKILL.md +218 -0
- package/skills/i18n/SKILL.md +276 -0
- package/skills/intercept/SKILL.md +176 -8
- package/skills/layout/SKILL.md +124 -3
- package/skills/links/SKILL.md +304 -25
- package/skills/loader/SKILL.md +481 -47
- package/skills/middleware/SKILL.md +207 -37
- package/skills/migrate-nextjs/SKILL.md +562 -0
- package/skills/migrate-react-router/SKILL.md +769 -0
- package/skills/mime-routes/SKILL.md +15 -11
- package/skills/parallel/SKILL.md +272 -1
- package/skills/prerender/SKILL.md +467 -65
- package/skills/rango/SKILL.md +89 -21
- package/skills/response-routes/SKILL.md +152 -91
- package/skills/route/SKILL.md +305 -14
- package/skills/router-setup/SKILL.md +210 -32
- package/skills/server-actions/SKILL.md +739 -0
- package/skills/streams-and-websockets/SKILL.md +283 -0
- package/skills/theme/SKILL.md +9 -8
- package/skills/typesafety/SKILL.md +333 -86
- package/skills/use-cache/SKILL.md +324 -0
- package/skills/view-transitions/SKILL.md +212 -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 +136 -68
- 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 +374 -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 +376 -315
- 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 +152 -24
- package/src/browser/react/context.ts +11 -0
- package/src/browser/react/filter-segment-order.ts +55 -0
- package/src/browser/react/index.ts +15 -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 +78 -0
- package/src/browser/react/use-pathname.ts +47 -0
- package/src/browser/react/use-reverse.ts +99 -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 +85 -99
- package/src/browser/response-adapter.ts +73 -0
- package/src/browser/rsc-router.tsx +246 -64
- package/src/browser/scroll-restoration.ts +132 -49
- 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 +158 -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 -828
- package/src/build/index.ts +4 -5
- package/src/build/route-trie.ts +85 -32
- 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 +6 -1
- package/src/client.tsx +118 -302
- 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 +69 -46
- package/src/index.rsc.ts +138 -21
- package/src/index.ts +206 -51
- package/src/internal-debug.ts +11 -0
- package/src/loader-store.ts +202 -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 +231 -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 +483 -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 +418 -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 +196 -261
- package/src/router/match-context.ts +4 -2
- package/src/router/match-handlers.ts +441 -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 +154 -35
- package/src/router/metrics.ts +240 -15
- package/src/router/middleware-cookies.ts +55 -0
- package/src/router/middleware-types.ts +209 -0
- package/src/router/middleware.ts +373 -371
- package/src/router/navigation-snapshot.ts +182 -0
- package/src/router/pattern-matching.ts +292 -52
- 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 +756 -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 +1407 -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/substitute-pattern-params.ts +56 -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 +111 -39
- package/src/router/types.ts +17 -9
- package/src/router/url-params.ts +49 -0
- package/src/router.ts +642 -2011
- 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 +395 -0
- package/src/rsc/response-error.ts +37 -0
- package/src/rsc/response-route-handler.ts +360 -0
- package/src/rsc/rsc-rendering.ts +256 -0
- package/src/rsc/runtime-warnings.ts +42 -0
- package/src/rsc/server-action.ts +360 -0
- package/src/rsc/ssr-setup.ts +128 -0
- package/src/rsc/types.ts +52 -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 +187 -38
- 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 +107 -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 +764 -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 +167 -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 +327 -103
- 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/gate-state.ts +171 -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 +73 -0
- package/src/vite/discovery/state.ts +126 -0
- package/src/vite/discovery/virtual-module-codegen.ts +203 -0
- package/src/vite/index.ts +15 -2063
- 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 +109 -0
- package/src/vite/plugins/version-plugin.ts +323 -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 +1482 -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 +222 -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/server.ts
CHANGED
|
@@ -1,171 +1,51 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @rangojs/router/server — Internal subpath
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* This module is NOT user-facing. Import from "@rangojs/router" instead.
|
|
5
|
+
*
|
|
6
|
+
* Exports here are consumed by the Vite plugin (discovery, manifest injection,
|
|
7
|
+
* virtual modules) and the RSC handler internals. They are not part of the
|
|
8
|
+
* public API and may change without notice.
|
|
6
9
|
*/
|
|
7
10
|
|
|
8
|
-
//
|
|
9
|
-
export {
|
|
10
|
-
createLoader,
|
|
11
|
-
redirect,
|
|
12
|
-
type RouteHelpers,
|
|
13
|
-
type RouteHandlers,
|
|
14
|
-
} from "./route-definition.js";
|
|
15
|
-
|
|
16
|
-
// Django-style URL patterns (server-only)
|
|
17
|
-
export {
|
|
18
|
-
urls,
|
|
19
|
-
RESPONSE_TYPE,
|
|
20
|
-
type PathHelpers,
|
|
21
|
-
type PathOptions,
|
|
22
|
-
type UrlPatterns,
|
|
23
|
-
type IncludeOptions,
|
|
24
|
-
type ResponseHandler,
|
|
25
|
-
type ResponseHandlerContext,
|
|
26
|
-
type JsonResponseHandler,
|
|
27
|
-
type TextResponseHandler,
|
|
28
|
-
type JsonValue,
|
|
29
|
-
type ResponsePathFn,
|
|
30
|
-
type JsonResponsePathFn,
|
|
31
|
-
type TextResponsePathFn,
|
|
32
|
-
type RouteResponse,
|
|
33
|
-
type ResponseError,
|
|
34
|
-
type ResponseEnvelope,
|
|
35
|
-
} from "./urls.js";
|
|
36
|
-
|
|
37
|
-
// Re-export IncludeItem from route-types
|
|
38
|
-
export type { IncludeItem } from "./route-types.js";
|
|
11
|
+
// Router registry (used by Vite plugin for build-time discovery)
|
|
12
|
+
export { RSC_ROUTER_BRAND, RouterRegistry } from "./router.js";
|
|
39
13
|
|
|
40
|
-
//
|
|
14
|
+
// Host router registry (used by Vite plugin for host-router lazy discovery)
|
|
41
15
|
export {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
type RSCRouter,
|
|
46
|
-
type RSCRouterOptions,
|
|
47
|
-
type RootLayoutProps,
|
|
48
|
-
} from "./router.js";
|
|
16
|
+
HostRouterRegistry,
|
|
17
|
+
type HostRouterRegistryEntry,
|
|
18
|
+
} from "./host/router.js";
|
|
49
19
|
|
|
50
|
-
//
|
|
20
|
+
// Route map builder (Vite plugin injects these via virtual modules)
|
|
51
21
|
export {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
22
|
+
registerRouteMap,
|
|
23
|
+
setCachedManifest,
|
|
24
|
+
clearCachedManifest,
|
|
25
|
+
clearAllRouterData,
|
|
26
|
+
getGlobalRouteMap,
|
|
27
|
+
getRouterManifest,
|
|
28
|
+
setPrecomputedEntries,
|
|
29
|
+
setRouteTrie,
|
|
30
|
+
setManifestReadyPromise,
|
|
31
|
+
setRouterManifest,
|
|
32
|
+
setRouterTrie,
|
|
33
|
+
setRouterPrecomputedEntries,
|
|
34
|
+
registerRouterManifestLoader,
|
|
35
|
+
ensureRouterManifest,
|
|
36
|
+
} from "./route-map-builder.js";
|
|
60
37
|
|
|
61
|
-
//
|
|
62
|
-
export { renderSegments } from "./segment-system.js";
|
|
63
|
-
|
|
64
|
-
// Performance tracking (server-only)
|
|
65
|
-
export { track } from "./server/context.js";
|
|
66
|
-
|
|
67
|
-
// Handle API (works in both server and client contexts)
|
|
68
|
-
export { createHandle, isHandle, type Handle } from "./handle.js";
|
|
69
|
-
|
|
70
|
-
// Pre-render handler API
|
|
38
|
+
// Loader registry (Vite plugin registers lazy loader imports)
|
|
71
39
|
export {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
type PrerenderOptions,
|
|
76
|
-
type BuildContext,
|
|
77
|
-
} from "./prerender.js";
|
|
78
|
-
|
|
79
|
-
// Built-in handles
|
|
80
|
-
export { Meta } from "./handles/meta.js";
|
|
81
|
-
|
|
82
|
-
// Loader registry (for GET-based loader fetching)
|
|
83
|
-
export { registerLoaderById, setLoaderImports } from "./server/loader-registry.js";
|
|
40
|
+
registerLoaderById,
|
|
41
|
+
setLoaderImports,
|
|
42
|
+
} from "./server/loader-registry.js";
|
|
84
43
|
|
|
85
|
-
//
|
|
86
|
-
export { registerRouteMap, setCachedManifest, setPrecomputedEntries, setRouteTrie, setManifestReadyPromise } from "./route-map-builder.js";
|
|
87
|
-
|
|
88
|
-
// Request context (for accessing request data in server components/actions)
|
|
44
|
+
// Request context creation (used by RSC handler, not user-facing)
|
|
89
45
|
export {
|
|
90
|
-
getRequestContext,
|
|
91
|
-
requireRequestContext,
|
|
92
46
|
createRequestContext,
|
|
93
|
-
type RequestContext,
|
|
94
47
|
type CreateRequestContextOptions,
|
|
95
48
|
} from "./server/request-context.js";
|
|
96
49
|
|
|
97
|
-
//
|
|
98
|
-
export
|
|
99
|
-
|
|
100
|
-
// Middleware context types (Middleware type is exported from types.ts)
|
|
101
|
-
export type {
|
|
102
|
-
MiddlewareContext,
|
|
103
|
-
CookieOptions,
|
|
104
|
-
} from "./router/middleware.js";
|
|
105
|
-
|
|
106
|
-
// Error classes and utilities
|
|
107
|
-
export {
|
|
108
|
-
RouteNotFoundError,
|
|
109
|
-
DataNotFoundError,
|
|
110
|
-
notFound,
|
|
111
|
-
MiddlewareError,
|
|
112
|
-
HandlerError,
|
|
113
|
-
BuildError,
|
|
114
|
-
InvalidHandlerError,
|
|
115
|
-
sanitizeError,
|
|
116
|
-
RouterError,
|
|
117
|
-
} from "./errors.js";
|
|
118
|
-
|
|
119
|
-
// Component utilities
|
|
120
|
-
export {
|
|
121
|
-
isClientComponent,
|
|
122
|
-
assertClientComponent,
|
|
123
|
-
} from "./component-utils.js";
|
|
124
|
-
|
|
125
|
-
// Debug utilities for route matching (development only)
|
|
126
|
-
export {
|
|
127
|
-
enableMatchDebug,
|
|
128
|
-
getMatchDebugStats,
|
|
129
|
-
} from "./router/pattern-matching.js";
|
|
130
|
-
|
|
131
|
-
// Types (re-exported for convenience - user-facing only)
|
|
132
|
-
export type {
|
|
133
|
-
// Configuration types
|
|
134
|
-
RouterEnv,
|
|
135
|
-
DefaultEnv,
|
|
136
|
-
RouteDefinition,
|
|
137
|
-
RouteConfig,
|
|
138
|
-
RouteDefinitionOptions,
|
|
139
|
-
TrailingSlashMode,
|
|
140
|
-
// Handler types
|
|
141
|
-
Handler, // Supports params object, path pattern, or route name
|
|
142
|
-
HandlerContext,
|
|
143
|
-
ExtractParams,
|
|
144
|
-
GenericParams,
|
|
145
|
-
// Middleware types (also exported from router/middleware.js above)
|
|
146
|
-
Middleware, // Supports env type and optional route name for params
|
|
147
|
-
// Revalidation types
|
|
148
|
-
RevalidateParams,
|
|
149
|
-
Revalidate,
|
|
150
|
-
RouteKeys,
|
|
151
|
-
// Loader types
|
|
152
|
-
LoaderDefinition,
|
|
153
|
-
LoaderFn,
|
|
154
|
-
LoaderContext,
|
|
155
|
-
// Error boundary types
|
|
156
|
-
ErrorInfo,
|
|
157
|
-
ErrorBoundaryFallbackProps,
|
|
158
|
-
ErrorBoundaryHandler,
|
|
159
|
-
ClientErrorBoundaryFallbackProps,
|
|
160
|
-
// NotFound boundary types
|
|
161
|
-
NotFoundInfo,
|
|
162
|
-
NotFoundBoundaryFallbackProps,
|
|
163
|
-
NotFoundBoundaryHandler,
|
|
164
|
-
// Error handling callback types
|
|
165
|
-
ErrorPhase,
|
|
166
|
-
OnErrorContext,
|
|
167
|
-
OnErrorCallback,
|
|
168
|
-
} from "./types.js";
|
|
169
|
-
|
|
170
|
-
// Path-based response type lookup from RegisteredRoutes
|
|
171
|
-
export type { PathResponse } from "./href-client.js";
|
|
50
|
+
// Component utilities (used internally for server/client boundary checks)
|
|
51
|
+
export { isClientComponent, assertClientComponent } from "./component-utils.js";
|
package/src/ssr/index.tsx
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { initThemeConfigSync } from "../theme/theme-context.js";
|
|
2
|
+
import { renderSegments } from "../segment-system.js";
|
|
3
|
+
import { filterSegmentOrder } from "../browser/react/filter-segment-order.js";
|
|
5
4
|
import { ThemeProvider } from "../theme/ThemeProvider.js";
|
|
5
|
+
import { NonceContext } from "../browser/react/nonce-context.js";
|
|
6
6
|
import { NavigationStoreContext } from "../browser/react/context.js";
|
|
7
7
|
import type { NavigationStoreContextValue } from "../browser/react/context.js";
|
|
8
8
|
import type { HandleData } from "../browser/types.js";
|
|
9
9
|
import type { ErrorPhase } from "../types.js";
|
|
10
|
+
import type { ResolvedSegment } from "../types.js";
|
|
10
11
|
import type { ResolvedThemeConfig, Theme } from "../theme/types.js";
|
|
11
|
-
import type {
|
|
12
|
+
import type {
|
|
13
|
+
EventController,
|
|
14
|
+
DerivedNavigationState,
|
|
15
|
+
} from "../browser/event-controller.js";
|
|
12
16
|
|
|
13
17
|
/**
|
|
14
18
|
* Options for injectRSCPayload
|
|
@@ -29,6 +33,13 @@ interface RenderToReadableStreamOptions {
|
|
|
29
33
|
formState?: unknown;
|
|
30
34
|
}
|
|
31
35
|
|
|
36
|
+
/**
|
|
37
|
+
* ReadableStream with the allReady promise added by react-dom/server.edge.
|
|
38
|
+
*/
|
|
39
|
+
interface ReactDOMReadableStream extends ReadableStream<Uint8Array> {
|
|
40
|
+
allReady: Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
|
|
32
43
|
/**
|
|
33
44
|
* Options for the renderHTML function
|
|
34
45
|
*/
|
|
@@ -45,6 +56,14 @@ export interface SSRRenderOptions {
|
|
|
45
56
|
* Nonce for Content Security Policy (CSP)
|
|
46
57
|
*/
|
|
47
58
|
nonce?: string;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* SSR stream mode.
|
|
62
|
+
*
|
|
63
|
+
* - `"stream"` (default) — start flushing HTML immediately.
|
|
64
|
+
* - `"allReady"` — await `stream.allReady` before returning.
|
|
65
|
+
*/
|
|
66
|
+
streamMode?: import("../router/router-options.js").SSRStreamMode;
|
|
48
67
|
}
|
|
49
68
|
|
|
50
69
|
/**
|
|
@@ -54,22 +73,24 @@ export interface SSRDependencies<TEnv = unknown> {
|
|
|
54
73
|
/**
|
|
55
74
|
* createFromReadableStream from @vitejs/plugin-rsc/ssr
|
|
56
75
|
*/
|
|
57
|
-
createFromReadableStream: <T>(
|
|
76
|
+
createFromReadableStream: <T>(
|
|
77
|
+
stream: ReadableStream<Uint8Array>,
|
|
78
|
+
) => Promise<T>;
|
|
58
79
|
|
|
59
80
|
/**
|
|
60
81
|
* renderToReadableStream from react-dom/server.edge
|
|
61
82
|
*/
|
|
62
83
|
renderToReadableStream: (
|
|
63
84
|
element: React.ReactNode,
|
|
64
|
-
options?: RenderToReadableStreamOptions
|
|
65
|
-
) => Promise<
|
|
85
|
+
options?: RenderToReadableStreamOptions,
|
|
86
|
+
) => Promise<ReactDOMReadableStream>;
|
|
66
87
|
|
|
67
88
|
/**
|
|
68
89
|
* injectRSCPayload from rsc-html-stream/server
|
|
69
90
|
*/
|
|
70
91
|
injectRSCPayload: (
|
|
71
92
|
rscStream: ReadableStream<Uint8Array>,
|
|
72
|
-
options?: InjectRSCPayloadOptions
|
|
93
|
+
options?: InjectRSCPayloadOptions,
|
|
73
94
|
) => TransformStream<Uint8Array, Uint8Array>;
|
|
74
95
|
|
|
75
96
|
/**
|
|
@@ -101,13 +122,17 @@ export interface SSRDependencies<TEnv = unknown> {
|
|
|
101
122
|
* RSC payload type (minimal interface for SSR)
|
|
102
123
|
*/
|
|
103
124
|
interface RscPayload {
|
|
104
|
-
root: React.ReactNode;
|
|
105
125
|
metadata?: {
|
|
126
|
+
segments?: ResolvedSegment[];
|
|
127
|
+
rootLayout?: React.ComponentType<{ children: React.ReactNode }>;
|
|
106
128
|
handles?: AsyncGenerator<HandleData, void, unknown>;
|
|
107
129
|
matched?: string[];
|
|
108
130
|
pathname?: string;
|
|
131
|
+
params?: Record<string, string>;
|
|
132
|
+
basename?: string;
|
|
109
133
|
themeConfig?: ResolvedThemeConfig | null;
|
|
110
134
|
initialTheme?: Theme;
|
|
135
|
+
version?: string;
|
|
111
136
|
};
|
|
112
137
|
}
|
|
113
138
|
|
|
@@ -116,7 +141,7 @@ interface RscPayload {
|
|
|
116
141
|
* Used for SSR where we need to await all handle data before rendering.
|
|
117
142
|
*/
|
|
118
143
|
async function consumeAsyncGenerator(
|
|
119
|
-
generator: AsyncGenerator<HandleData, void, unknown
|
|
144
|
+
generator: AsyncGenerator<HandleData, void, unknown>,
|
|
120
145
|
): Promise<HandleData> {
|
|
121
146
|
let lastData: HandleData = {};
|
|
122
147
|
for await (const data of generator) {
|
|
@@ -129,11 +154,26 @@ async function consumeAsyncGenerator(
|
|
|
129
154
|
* Create a minimal event controller for SSR.
|
|
130
155
|
* This provides the correct pathname so useNavigation returns the right value during SSR.
|
|
131
156
|
*/
|
|
132
|
-
function createSsrEventController(
|
|
133
|
-
|
|
157
|
+
function createSsrEventController(opts: {
|
|
158
|
+
pathname: string;
|
|
159
|
+
params?: Record<string, string>;
|
|
160
|
+
handleData?: HandleData;
|
|
161
|
+
matched?: string[];
|
|
162
|
+
}): EventController {
|
|
163
|
+
const location = new URL(opts.pathname, "http://localhost");
|
|
164
|
+
let params = opts.params ?? {};
|
|
165
|
+
const rawMatched = opts.matched ?? [];
|
|
166
|
+
const handleState = {
|
|
167
|
+
data: opts.handleData ?? {},
|
|
168
|
+
segmentOrder: filterSegmentOrder(rawMatched),
|
|
169
|
+
routeSegmentIds: rawMatched.filter(
|
|
170
|
+
(id) => !id.includes(".@") && !/D\d+\./.test(id),
|
|
171
|
+
),
|
|
172
|
+
};
|
|
134
173
|
const state: DerivedNavigationState = {
|
|
135
174
|
state: "idle",
|
|
136
175
|
isStreaming: false,
|
|
176
|
+
isNavigating: false,
|
|
137
177
|
location,
|
|
138
178
|
pendingUrl: null,
|
|
139
179
|
inflightActions: [],
|
|
@@ -141,6 +181,7 @@ function createSsrEventController(pathname: string): EventController {
|
|
|
141
181
|
|
|
142
182
|
return {
|
|
143
183
|
getState: () => state,
|
|
184
|
+
getLocation: () => location,
|
|
144
185
|
subscribe: () => () => {},
|
|
145
186
|
getActionState: () => ({
|
|
146
187
|
state: "idle",
|
|
@@ -152,7 +193,11 @@ function createSsrEventController(pathname: string): EventController {
|
|
|
152
193
|
subscribeToAction: () => () => {},
|
|
153
194
|
subscribeToHandles: () => () => {},
|
|
154
195
|
setHandleData: () => {},
|
|
155
|
-
getHandleState: () =>
|
|
196
|
+
getHandleState: () => handleState,
|
|
197
|
+
setParams: (nextParams) => {
|
|
198
|
+
params = nextParams;
|
|
199
|
+
},
|
|
200
|
+
getParams: () => params,
|
|
156
201
|
setLocation: () => {},
|
|
157
202
|
startNavigation: () => {
|
|
158
203
|
throw new Error("Navigation not supported during SSR");
|
|
@@ -164,6 +209,7 @@ function createSsrEventController(pathname: string): EventController {
|
|
|
164
209
|
abortAllActions: () => {},
|
|
165
210
|
getCurrentNavigation: () => null,
|
|
166
211
|
getInflightActions: () => new Map(),
|
|
212
|
+
hadAnyConcurrentActions: () => false,
|
|
167
213
|
};
|
|
168
214
|
}
|
|
169
215
|
|
|
@@ -203,9 +249,9 @@ export function createSSRHandler<TEnv = unknown>(deps: SSRDependencies<TEnv>) {
|
|
|
203
249
|
*/
|
|
204
250
|
return async function renderHTML(
|
|
205
251
|
rscStream: ReadableStream<Uint8Array>,
|
|
206
|
-
options?: SSRRenderOptions
|
|
252
|
+
options?: SSRRenderOptions,
|
|
207
253
|
): Promise<ReadableStream<Uint8Array>> {
|
|
208
|
-
const { nonce, formState } = options ?? {};
|
|
254
|
+
const { nonce, formState, streamMode } = options ?? {};
|
|
209
255
|
|
|
210
256
|
try {
|
|
211
257
|
// Tee the stream:
|
|
@@ -221,46 +267,69 @@ export function createSSRHandler<TEnv = unknown>(deps: SSRDependencies<TEnv>) {
|
|
|
221
267
|
payload ??= createFromReadableStream<RscPayload>(rscStream1);
|
|
222
268
|
const resolved = React.use(payload);
|
|
223
269
|
|
|
224
|
-
// Initialize segments state before children render (for useSegments hook)
|
|
225
|
-
initSegmentsSync(resolved.metadata?.matched, resolved.metadata?.pathname);
|
|
226
|
-
|
|
227
|
-
// Initialize theme config for MetaTags to render theme script
|
|
228
270
|
const themeConfig = resolved.metadata?.themeConfig ?? null;
|
|
229
|
-
|
|
271
|
+
const pathname = resolved.metadata?.pathname ?? "/";
|
|
230
272
|
|
|
231
|
-
// Await handles
|
|
273
|
+
// Await handles before creating SSR event controller so hooks can
|
|
274
|
+
// read request-local handle data via NavigationStoreContext.
|
|
232
275
|
// The handles property is an async generator that yields on each push
|
|
233
276
|
// Memoize the promise since async generators can only be iterated once
|
|
277
|
+
let handleData: HandleData = {};
|
|
234
278
|
if (resolved.metadata?.handles) {
|
|
235
279
|
handlesPromise ??= consumeAsyncGenerator(resolved.metadata.handles);
|
|
236
|
-
|
|
237
|
-
initHandleDataSync(handleData, resolved.metadata.matched);
|
|
280
|
+
handleData = React.use(handlesPromise);
|
|
238
281
|
}
|
|
239
282
|
|
|
240
|
-
// Create SSR context with
|
|
283
|
+
// Create SSR context with request-local pathname/params/handles.
|
|
241
284
|
ssrContextValue ??= {
|
|
242
285
|
store: null as any,
|
|
243
|
-
eventController: createSsrEventController(
|
|
286
|
+
eventController: createSsrEventController({
|
|
287
|
+
pathname,
|
|
288
|
+
params: resolved.metadata?.params,
|
|
289
|
+
handleData,
|
|
290
|
+
matched: resolved.metadata?.matched,
|
|
291
|
+
}),
|
|
244
292
|
navigate: async () => {},
|
|
245
293
|
refresh: async () => {},
|
|
294
|
+
version: resolved.metadata?.version,
|
|
295
|
+
basename: resolved.metadata?.basename,
|
|
246
296
|
};
|
|
247
297
|
|
|
248
|
-
// Build content tree
|
|
298
|
+
// Build content tree from segments.
|
|
249
299
|
// Order must match NavigationProvider: NavigationStoreContext > ThemeProvider > content
|
|
250
|
-
|
|
300
|
+
const reconstructedRoot = renderSegments(
|
|
301
|
+
resolved.metadata?.segments ?? [],
|
|
302
|
+
{
|
|
303
|
+
rootLayout: resolved.metadata?.rootLayout,
|
|
304
|
+
},
|
|
305
|
+
);
|
|
306
|
+
let content: React.ReactNode =
|
|
307
|
+
reconstructedRoot instanceof Promise
|
|
308
|
+
? React.use(reconstructedRoot)
|
|
309
|
+
: reconstructedRoot;
|
|
251
310
|
|
|
252
311
|
// Wrap content with ThemeProvider if theme is enabled
|
|
253
312
|
if (themeConfig) {
|
|
254
313
|
content = (
|
|
255
|
-
<ThemeProvider
|
|
314
|
+
<ThemeProvider
|
|
315
|
+
config={themeConfig}
|
|
316
|
+
initialTheme={resolved.metadata?.initialTheme}
|
|
317
|
+
>
|
|
256
318
|
{content}
|
|
257
319
|
</ThemeProvider>
|
|
258
320
|
);
|
|
259
321
|
}
|
|
260
322
|
|
|
323
|
+
// Wrap with NonceContext so client components (e.g. MetaTags) can
|
|
324
|
+
// apply CSP nonces to inline scripts during SSR. Always present to
|
|
325
|
+
// match the browser-side NavigationProvider tree shape for hydration.
|
|
326
|
+
content = (
|
|
327
|
+
<NonceContext.Provider value={nonce}>{content}</NonceContext.Provider>
|
|
328
|
+
);
|
|
329
|
+
|
|
261
330
|
// Wrap with NavigationStoreContext for useNavigation hook
|
|
262
331
|
return (
|
|
263
|
-
<NavigationStoreContext.Provider value={ssrContextValue}>
|
|
332
|
+
<NavigationStoreContext.Provider value={ssrContextValue!}>
|
|
264
333
|
{content}
|
|
265
334
|
</NavigationStoreContext.Provider>
|
|
266
335
|
);
|
|
@@ -278,12 +347,20 @@ export function createSSRHandler<TEnv = unknown>(deps: SSRDependencies<TEnv>) {
|
|
|
278
347
|
nonce,
|
|
279
348
|
});
|
|
280
349
|
|
|
350
|
+
// Wait for all Suspense boundaries to resolve when streamMode is "allReady".
|
|
351
|
+
// This buffers the entire HTML before flushing — used for bots that
|
|
352
|
+
// cannot process streamed HTML.
|
|
353
|
+
if (streamMode === "allReady") {
|
|
354
|
+
await htmlStream.allReady;
|
|
355
|
+
}
|
|
356
|
+
|
|
281
357
|
// Inject RSC payload into HTML as <script nonce="...">__FLIGHT_DATA__</script>
|
|
282
358
|
return htmlStream.pipeThrough(injectRSCPayload(rscStream2, { nonce }));
|
|
283
359
|
} catch (error) {
|
|
284
360
|
// Invoke onError callback if provided
|
|
285
361
|
if (onError) {
|
|
286
|
-
const errorObj =
|
|
362
|
+
const errorObj =
|
|
363
|
+
error instanceof Error ? error : new Error(String(error));
|
|
287
364
|
try {
|
|
288
365
|
onError(errorObj, { phase: "rendering" });
|
|
289
366
|
} catch (callbackError) {
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static handler definition for build-time rendering of individual segments.
|
|
3
|
+
*
|
|
4
|
+
* Static wraps a handler so that in production the segment is
|
|
5
|
+
* rendered once at build time. The handler is then replaced with a static
|
|
6
|
+
* asset import -- no runtime store lookup needed.
|
|
7
|
+
*
|
|
8
|
+
* In dev mode, Static behaves as a normal handler: the wrapped
|
|
9
|
+
* function runs on every request, identical to a regular layout/path handler.
|
|
10
|
+
*
|
|
11
|
+
* The $$id is auto-generated by the Vite exposeInternalIds plugin based on
|
|
12
|
+
* file path and export name. No manual naming required.
|
|
13
|
+
*
|
|
14
|
+
* Key difference from Prerender:
|
|
15
|
+
* - Prerender: route-scoped, produces URLs via getParams, renders subtree per-params
|
|
16
|
+
* - Static: segment-scoped, renders once, no URLs, no params
|
|
17
|
+
*
|
|
18
|
+
* Works on: layout(), parallel(), and path().
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* export const DocsNav = Static((ctx) => <Nav docs={readDocsSync()} />);
|
|
23
|
+
* export const DocShell = Static((ctx) => <Shell />);
|
|
24
|
+
*
|
|
25
|
+
* urls(({ path, layout }) => [
|
|
26
|
+
* layout(DocsNav, () => [
|
|
27
|
+
* path("/getting-started", DocShell, { name: "doc.gs" }),
|
|
28
|
+
* path("/:slug", Prerender(getParams, DocPageHandler)),
|
|
29
|
+
* ]),
|
|
30
|
+
* ]);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
import type { ReactNode } from "react";
|
|
34
|
+
import type { Handler } from "./types.js";
|
|
35
|
+
import type { StaticBuildContext } from "./prerender.js";
|
|
36
|
+
import type { UseItems, HandlerUseItem } from "./route-types.js";
|
|
37
|
+
import { isCachedFunction } from "./cache/taint.js";
|
|
38
|
+
|
|
39
|
+
// -- Types ------------------------------------------------------------------
|
|
40
|
+
|
|
41
|
+
export interface StaticHandlerOptions {
|
|
42
|
+
/**
|
|
43
|
+
* Keep handler in server bundle for live fallback (default: false).
|
|
44
|
+
* false: handler replaced with stub, source-only APIs excluded from bundle.
|
|
45
|
+
* true: handler stays in bundle, renders live at request time.
|
|
46
|
+
*/
|
|
47
|
+
passthrough?: boolean;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface StaticHandlerDefinition<
|
|
51
|
+
TParams extends Record<string, any> = any,
|
|
52
|
+
> {
|
|
53
|
+
readonly __brand: "staticHandler";
|
|
54
|
+
/** Auto-generated unique ID (injected by Vite plugin). */
|
|
55
|
+
$$id: string;
|
|
56
|
+
/** In dev mode, the actual handler function that layout/path/parallel can call. */
|
|
57
|
+
handler: Handler<TParams>;
|
|
58
|
+
/** Static handler options (passthrough support). */
|
|
59
|
+
options?: StaticHandlerOptions;
|
|
60
|
+
/** Composable default DSL items merged when the handler is mounted. */
|
|
61
|
+
use?: () => UseItems<HandlerUseItem>;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// -- Function ---------------------------------------------------------------
|
|
65
|
+
|
|
66
|
+
export function Static<TParams extends Record<string, any> = {}>(
|
|
67
|
+
handler: (ctx: StaticBuildContext) => ReactNode | Promise<ReactNode>,
|
|
68
|
+
options?: StaticHandlerOptions,
|
|
69
|
+
__injectedId?: string,
|
|
70
|
+
): StaticHandlerDefinition<TParams>;
|
|
71
|
+
|
|
72
|
+
// -- Implementation ---------------------------------------------------------
|
|
73
|
+
|
|
74
|
+
export function Static<TParams extends Record<string, any>>(
|
|
75
|
+
handler: Function,
|
|
76
|
+
optionsOrId?: StaticHandlerOptions | string,
|
|
77
|
+
maybeId?: string,
|
|
78
|
+
): StaticHandlerDefinition<TParams> {
|
|
79
|
+
if (isCachedFunction(handler)) {
|
|
80
|
+
throw new Error(
|
|
81
|
+
'A "use cache" function cannot be used as a Static() handler. ' +
|
|
82
|
+
"Static handlers are rendered once at build time. Remove the " +
|
|
83
|
+
'"use cache" directive — Static already provides caching.',
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
let options: StaticHandlerOptions | undefined;
|
|
88
|
+
let id: string;
|
|
89
|
+
|
|
90
|
+
if (typeof optionsOrId === "string") {
|
|
91
|
+
id = optionsOrId;
|
|
92
|
+
} else {
|
|
93
|
+
options = optionsOrId as StaticHandlerOptions | undefined;
|
|
94
|
+
id = maybeId ?? "";
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (!id) {
|
|
98
|
+
throw new Error(
|
|
99
|
+
"[rsc-router] Static: missing $$id. " +
|
|
100
|
+
"Ensure the exposeInternalIds Vite plugin is configured.",
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return {
|
|
105
|
+
__brand: "staticHandler" as const,
|
|
106
|
+
$$id: id,
|
|
107
|
+
handler: handler as Handler<TParams>,
|
|
108
|
+
...(options ? { options } : {}),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// -- Type guard -------------------------------------------------------------
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Type guard to check if a value is a StaticHandlerDefinition.
|
|
116
|
+
*/
|
|
117
|
+
export function isStaticHandler(
|
|
118
|
+
value: unknown,
|
|
119
|
+
): value is StaticHandlerDefinition {
|
|
120
|
+
return (
|
|
121
|
+
typeof value === "object" &&
|
|
122
|
+
value !== null &&
|
|
123
|
+
"__brand" in value &&
|
|
124
|
+
(value as { __brand: unknown }).__brand === "staticHandler"
|
|
125
|
+
);
|
|
126
|
+
}
|
|
@@ -11,7 +11,13 @@
|
|
|
11
11
|
* - Handles SSR hydration by deferring system theme detection
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
import React, {
|
|
14
|
+
import React, {
|
|
15
|
+
useCallback,
|
|
16
|
+
useEffect,
|
|
17
|
+
useMemo,
|
|
18
|
+
useState,
|
|
19
|
+
useRef,
|
|
20
|
+
} from "react";
|
|
15
21
|
import { ThemeContext } from "./theme-context.js";
|
|
16
22
|
import type {
|
|
17
23
|
ResolvedTheme,
|
|
@@ -44,7 +50,12 @@ function readThemeFromCookie(storageKey: string): string | null {
|
|
|
44
50
|
for (const cookie of cookies) {
|
|
45
51
|
const [name, ...rest] = cookie.trim().split("=");
|
|
46
52
|
if (name === storageKey) {
|
|
47
|
-
|
|
53
|
+
const raw = rest.join("=");
|
|
54
|
+
try {
|
|
55
|
+
return decodeURIComponent(raw);
|
|
56
|
+
} catch {
|
|
57
|
+
return raw;
|
|
58
|
+
}
|
|
48
59
|
}
|
|
49
60
|
}
|
|
50
61
|
return null;
|
|
@@ -90,15 +101,13 @@ function writeThemeToStorage(storageKey: string, theme: Theme): void {
|
|
|
90
101
|
/**
|
|
91
102
|
* Apply theme to HTML element
|
|
92
103
|
*/
|
|
93
|
-
function applyThemeToDocument(
|
|
94
|
-
theme: Theme,
|
|
95
|
-
config: ResolvedThemeConfig
|
|
96
|
-
): void {
|
|
104
|
+
function applyThemeToDocument(theme: Theme, config: ResolvedThemeConfig): void {
|
|
97
105
|
if (typeof document === "undefined") return;
|
|
98
106
|
|
|
99
|
-
const resolved =
|
|
100
|
-
|
|
101
|
-
|
|
107
|
+
const resolved =
|
|
108
|
+
theme === "system" && config.enableSystem
|
|
109
|
+
? getSystemTheme()
|
|
110
|
+
: (theme as ResolvedTheme);
|
|
102
111
|
|
|
103
112
|
const value = config.value[resolved] || resolved;
|
|
104
113
|
const el = document.documentElement;
|
|
@@ -188,7 +197,7 @@ export function ThemeProvider({
|
|
|
188
197
|
writeThemeToStorage(config.storageKey, newTheme);
|
|
189
198
|
applyThemeToDocument(newTheme, config);
|
|
190
199
|
},
|
|
191
|
-
[config]
|
|
200
|
+
[config],
|
|
192
201
|
);
|
|
193
202
|
|
|
194
203
|
// Listen for system preference changes
|
|
@@ -227,10 +236,7 @@ export function ThemeProvider({
|
|
|
227
236
|
if (!newTheme) return;
|
|
228
237
|
|
|
229
238
|
// Validate and apply
|
|
230
|
-
if (
|
|
231
|
-
newTheme === "system" ||
|
|
232
|
-
config.themes.includes(newTheme)
|
|
233
|
-
) {
|
|
239
|
+
if (newTheme === "system" || config.themes.includes(newTheme)) {
|
|
234
240
|
setThemeState(newTheme as Theme);
|
|
235
241
|
applyThemeToDocument(newTheme as Theme, config);
|
|
236
242
|
}
|
|
@@ -280,7 +286,7 @@ export function ThemeProvider({
|
|
|
280
286
|
themes,
|
|
281
287
|
config,
|
|
282
288
|
}),
|
|
283
|
-
[theme, setTheme, resolvedTheme, systemTheme, themes, config, mounted]
|
|
289
|
+
[theme, setTheme, resolvedTheme, systemTheme, themes, config, mounted],
|
|
284
290
|
);
|
|
285
291
|
|
|
286
292
|
return (
|