@rangojs/router 0.0.0-experimental.124 → 0.0.0-experimental.125
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/dist/bin/rango.js +3 -4
- package/dist/vite/index.js +9 -43
- package/package.json +1 -1
- package/skills/hooks/SKILL.md +2 -2
- package/skills/route/SKILL.md +6 -0
- package/src/__internal.ts +0 -65
- package/src/browser/action-coordinator.ts +1 -1
- package/src/browser/action-fence.ts +10 -0
- package/src/browser/event-controller.ts +1 -83
- package/src/browser/navigation-store-handle.ts +3 -4
- package/src/browser/navigation-store.ts +0 -39
- package/src/browser/navigation-transaction.ts +0 -32
- package/src/browser/partial-update.ts +1 -83
- package/src/browser/prefetch/cache.ts +6 -45
- package/src/browser/prefetch/queue.ts +6 -3
- package/src/browser/rango-state.ts +2 -23
- package/src/browser/react/Link.tsx +0 -2
- package/src/browser/react/NavigationProvider.tsx +2 -1
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/filter-segment-order.ts +0 -2
- package/src/browser/react/index.ts +0 -45
- package/src/browser/react/location-state-shared.ts +0 -13
- package/src/browser/react/location-state.ts +0 -1
- package/src/browser/react/use-action.ts +6 -15
- package/src/browser/react/use-handle.ts +0 -5
- package/src/browser/react/use-link-status.ts +0 -4
- package/src/browser/react/use-navigation.ts +0 -3
- package/src/browser/react/use-params.ts +0 -2
- package/src/browser/react/use-search-params.ts +0 -5
- package/src/browser/react/use-segments.ts +0 -13
- package/src/browser/rsc-router.tsx +2 -2
- package/src/browser/types.ts +0 -1
- package/src/browser/validate-redirect-origin.ts +4 -5
- package/src/build/route-trie.ts +3 -0
- package/src/build/route-types/param-extraction.ts +6 -3
- package/src/build/route-types/router-processing.ts +0 -8
- package/src/cache/cache-policy.ts +0 -54
- package/src/cache/cache-runtime.ts +27 -24
- package/src/cache/cache-scope.ts +0 -27
- package/src/cache/cache-tag.ts +0 -37
- package/src/cache/cf/cf-cache-store.ts +72 -45
- package/src/cache/cf/index.ts +0 -24
- package/src/cache/document-cache.ts +0 -36
- package/src/cache/handle-snapshot.ts +0 -40
- package/src/cache/index.ts +0 -27
- package/src/cache/memory-segment-store.ts +0 -52
- package/src/cache/profile-registry.ts +7 -3
- package/src/cache/read-through-swr.ts +41 -11
- package/src/cache/segment-codec.ts +0 -16
- package/src/cache/types.ts +0 -98
- package/src/client.rsc.tsx +1 -22
- package/src/client.tsx +14 -32
- package/src/deps/ssr.ts +0 -1
- package/src/handle.ts +2 -12
- package/src/handles/MetaTags.tsx +0 -14
- package/src/handles/meta.ts +0 -39
- package/src/host/cookie-handler.ts +0 -36
- package/src/host/errors.ts +0 -24
- package/src/host/index.ts +6 -0
- package/src/host/pattern-matcher.ts +7 -50
- package/src/host/router.ts +1 -65
- package/src/host/testing.ts +0 -16
- package/src/host/types.ts +6 -2
- package/src/href-client.ts +0 -4
- package/src/index.rsc.ts +20 -2
- package/src/internal-debug.ts +2 -4
- package/src/loader.rsc.ts +4 -15
- package/src/loader.ts +3 -9
- package/src/network-error-thrower.tsx +1 -6
- package/src/outlet-provider.tsx +1 -5
- package/src/prerender/param-hash.ts +10 -11
- package/src/prerender/store.ts +23 -30
- package/src/prerender.ts +34 -0
- package/src/root-error-boundary.tsx +1 -19
- package/src/route-content-wrapper.tsx +1 -44
- package/src/route-definition/dsl-helpers.ts +7 -19
- package/src/route-definition/helpers-types.ts +3 -3
- package/src/route-definition/redirect.ts +11 -1
- package/src/route-map-builder.ts +0 -16
- package/src/router/content-negotiation.ts +0 -13
- package/src/router/error-handling.ts +12 -16
- package/src/router/find-match.ts +4 -30
- package/src/router/intercept-resolution.ts +10 -1
- package/src/router/lazy-includes.ts +1 -57
- package/src/router/loader-resolution.ts +3 -2
- package/src/router/logging.ts +0 -6
- package/src/router/manifest.ts +1 -25
- package/src/router/match-api.ts +0 -20
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +0 -43
- package/src/router/match-middleware/background-revalidation.ts +0 -7
- package/src/router/match-middleware/cache-lookup.ts +1 -54
- package/src/router/match-middleware/cache-store.ts +0 -31
- package/src/router/match-middleware/intercept-resolution.ts +0 -22
- package/src/router/match-middleware/segment-resolution.ts +0 -21
- package/src/router/match-pipelines.ts +1 -42
- package/src/router/match-result.ts +1 -52
- package/src/router/metrics.ts +0 -34
- package/src/router/middleware-cookies.ts +0 -13
- package/src/router/middleware-types.ts +0 -115
- package/src/router/middleware.ts +7 -30
- package/src/router/navigation-snapshot.ts +0 -51
- package/src/router/params-util.ts +23 -0
- package/src/router/pattern-matching.ts +1 -33
- package/src/router/prerender-match.ts +29 -45
- package/src/router/request-classification.ts +1 -38
- package/src/router/revalidation.ts +5 -58
- package/src/router/router-context.ts +0 -26
- package/src/router/segment-resolution/fresh.ts +25 -57
- package/src/router/segment-resolution/helpers.ts +34 -0
- package/src/router/segment-resolution/loader-cache.ts +10 -13
- package/src/router/segment-resolution/revalidation.ts +5 -42
- package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
- package/src/router/segment-resolution.ts +4 -1
- package/src/router/telemetry-otel.ts +0 -20
- package/src/router/telemetry.ts +0 -22
- package/src/router/timeout.ts +0 -20
- package/src/router/trie-matching.ts +63 -40
- package/src/router/types.ts +1 -63
- package/src/router/url-params.ts +0 -5
- package/src/router.ts +4 -2
- package/src/rsc/handler.ts +11 -2
- package/src/rsc/helpers.ts +15 -0
- package/src/rsc/origin-guard.ts +0 -12
- package/src/rsc/progressive-enhancement.ts +2 -1
- package/src/rsc/rsc-rendering.ts +2 -7
- package/src/rsc/runtime-warnings.ts +14 -0
- package/src/rsc/server-action.ts +30 -28
- package/src/rsc/types.ts +0 -1
- package/src/search-params.ts +0 -16
- package/src/segment-loader-promise.ts +14 -2
- package/src/segment-system.tsx +79 -88
- package/src/server/handle-store.ts +7 -24
- package/src/server/loader-registry.ts +5 -24
- package/src/server/request-context.ts +6 -78
- package/src/ssr/index.tsx +14 -14
- package/src/static-handler.ts +2 -27
- package/src/testing/cache-status.ts +0 -47
- package/src/testing/collect-handle.ts +1 -24
- package/src/testing/e2e/index.ts +0 -22
- package/src/testing/e2e/matchers.ts +0 -16
- package/src/testing/flight-matchers.ts +0 -13
- package/src/testing/flight-normalize.ts +3 -30
- package/src/testing/flight.ts +0 -48
- package/src/testing/generated-routes.ts +1 -41
- package/src/testing/index.ts +0 -21
- package/src/testing/internal/context.ts +3 -45
- package/src/testing/internal/seed-vars.ts +0 -26
- package/src/testing/render-handler.ts +0 -49
- package/src/testing/render-route.tsx +0 -90
- package/src/testing/run-loader.ts +0 -96
- package/src/testing/run-middleware.ts +0 -26
- package/src/theme/ThemeProvider.tsx +0 -52
- package/src/theme/ThemeScript.tsx +0 -6
- package/src/theme/constants.ts +0 -12
- package/src/theme/index.ts +0 -7
- package/src/theme/theme-context.ts +1 -5
- package/src/theme/theme-script.ts +0 -14
- package/src/theme/use-theme.ts +0 -3
- package/src/types/boundaries.ts +0 -35
- package/src/types/error-types.ts +25 -89
- package/src/types/global-namespace.ts +4 -14
- package/src/types/handler-context.ts +0 -8
- package/src/types/index.ts +0 -10
- package/src/types/request-scope.ts +0 -19
- package/src/types/route-config.ts +6 -50
- package/src/types/route-entry.ts +0 -6
- package/src/types/segments.ts +0 -13
- package/src/urls/include-helper.ts +0 -4
- package/src/urls/index.ts +0 -6
- package/src/urls/path-helper-types.ts +2 -2
- package/src/urls/path-helper.ts +0 -54
- package/src/urls/urls-function.ts +0 -13
- package/src/use-loader.tsx +0 -186
- package/src/vite/discovery/bundle-postprocess.ts +2 -1
- package/src/vite/discovery/discover-routers.ts +6 -7
- package/src/vite/discovery/virtual-module-codegen.ts +1 -11
- package/src/vite/plugin-types.ts +3 -1
- package/src/vite/plugins/cjs-to-esm.ts +0 -11
- package/src/vite/plugins/client-ref-dedup.ts +0 -11
- package/src/vite/plugins/client-ref-hashing.ts +0 -10
- package/src/vite/plugins/cloudflare-protocol-stub.ts +0 -20
- package/src/vite/plugins/expose-action-id.ts +2 -73
- package/src/vite/plugins/expose-id-utils.ts +0 -55
- package/src/vite/plugins/expose-ids/export-analysis.ts +0 -38
- package/src/vite/plugins/expose-ids/handler-transform.ts +0 -15
- package/src/vite/plugins/expose-ids/loader-transform.ts +0 -15
- package/src/vite/plugins/expose-ids/router-transform.ts +0 -13
- package/src/vite/plugins/expose-internal-ids.ts +10 -0
- package/src/vite/plugins/performance-tracks.ts +0 -3
- package/src/vite/plugins/use-cache-transform.ts +0 -36
- package/src/vite/plugins/version-injector.ts +0 -20
- package/src/vite/plugins/version-plugin.ts +1 -49
- package/src/vite/plugins/virtual-entries.ts +0 -15
- package/src/vite/rango.ts +1 -108
- package/src/vite/router-discovery.ts +2 -1
- package/src/vite/utils/ast-handler-extract.ts +0 -16
- package/src/vite/utils/bundle-analysis.ts +6 -13
- package/src/vite/utils/client-chunks.ts +0 -6
- package/src/vite/utils/forward-user-plugins.ts +0 -22
- package/src/vite/utils/manifest-utils.ts +0 -4
- package/src/vite/utils/package-resolution.ts +1 -73
- package/src/vite/utils/prerender-utils.ts +0 -35
- package/src/vite/utils/shared-utils.ts +3 -35
- package/dist/__internal.d.ts +0 -83
- package/dist/__internal.d.ts.map +0 -1
- package/dist/__internal.js +0 -19
- package/dist/__internal.js.map +0 -1
- package/dist/__mocks__/version.d.ts +0 -7
- package/dist/__mocks__/version.d.ts.map +0 -1
- package/dist/__mocks__/version.js +0 -7
- package/dist/__mocks__/version.js.map +0 -1
- package/dist/__tests__/client-href.test.d.ts +0 -2
- package/dist/__tests__/client-href.test.d.ts.map +0 -1
- package/dist/__tests__/client-href.test.js +0 -74
- package/dist/__tests__/client-href.test.js.map +0 -1
- package/dist/__tests__/component-utils.test.d.ts +0 -2
- package/dist/__tests__/component-utils.test.d.ts.map +0 -1
- package/dist/__tests__/component-utils.test.js +0 -51
- package/dist/__tests__/component-utils.test.js.map +0 -1
- package/dist/__tests__/event-controller.test.d.ts +0 -2
- package/dist/__tests__/event-controller.test.d.ts.map +0 -1
- package/dist/__tests__/event-controller.test.js +0 -538
- package/dist/__tests__/event-controller.test.js.map +0 -1
- package/dist/__tests__/helpers/route-tree.d.ts +0 -118
- package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
- package/dist/__tests__/helpers/route-tree.js +0 -374
- package/dist/__tests__/helpers/route-tree.js.map +0 -1
- package/dist/__tests__/match-result.test.d.ts +0 -2
- package/dist/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/__tests__/match-result.test.js +0 -154
- package/dist/__tests__/match-result.test.js.map +0 -1
- package/dist/__tests__/navigation-store.test.d.ts +0 -2
- package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
- package/dist/__tests__/navigation-store.test.js +0 -440
- package/dist/__tests__/navigation-store.test.js.map +0 -1
- package/dist/__tests__/partial-update.test.d.ts +0 -2
- package/dist/__tests__/partial-update.test.d.ts.map +0 -1
- package/dist/__tests__/partial-update.test.js +0 -1009
- package/dist/__tests__/partial-update.test.js.map +0 -1
- package/dist/__tests__/reverse-types.test.d.ts +0 -8
- package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
- package/dist/__tests__/reverse-types.test.js +0 -656
- package/dist/__tests__/reverse-types.test.js.map +0 -1
- package/dist/__tests__/route-definition.test.d.ts +0 -2
- package/dist/__tests__/route-definition.test.d.ts.map +0 -1
- package/dist/__tests__/route-definition.test.js +0 -55
- package/dist/__tests__/route-definition.test.js.map +0 -1
- package/dist/__tests__/router-helpers.test.d.ts +0 -2
- package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
- package/dist/__tests__/router-helpers.test.js +0 -377
- package/dist/__tests__/router-helpers.test.js.map +0 -1
- package/dist/__tests__/router-integration-2.test.d.ts +0 -2
- package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration-2.test.js +0 -426
- package/dist/__tests__/router-integration-2.test.js.map +0 -1
- package/dist/__tests__/router-integration.test.d.ts +0 -2
- package/dist/__tests__/router-integration.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration.test.js +0 -1051
- package/dist/__tests__/router-integration.test.js.map +0 -1
- package/dist/__tests__/search-params.test.d.ts +0 -5
- package/dist/__tests__/search-params.test.d.ts.map +0 -1
- package/dist/__tests__/search-params.test.js +0 -306
- package/dist/__tests__/search-params.test.js.map +0 -1
- package/dist/__tests__/segment-system.test.d.ts +0 -2
- package/dist/__tests__/segment-system.test.d.ts.map +0 -1
- package/dist/__tests__/segment-system.test.js +0 -627
- package/dist/__tests__/segment-system.test.js.map +0 -1
- package/dist/__tests__/static-handler-types.test.d.ts +0 -8
- package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
- package/dist/__tests__/static-handler-types.test.js +0 -63
- package/dist/__tests__/static-handler-types.test.js.map +0 -1
- package/dist/__tests__/urls.test.d.ts +0 -2
- package/dist/__tests__/urls.test.d.ts.map +0 -1
- package/dist/__tests__/urls.test.js +0 -421
- package/dist/__tests__/urls.test.js.map +0 -1
- package/dist/__tests__/use-mount.test.d.ts +0 -2
- package/dist/__tests__/use-mount.test.d.ts.map +0 -1
- package/dist/__tests__/use-mount.test.js +0 -35
- package/dist/__tests__/use-mount.test.js.map +0 -1
- package/dist/bin/rango.d.ts +0 -2
- package/dist/bin/rango.d.ts.map +0 -1
- package/dist/bin/rango.js.map +0 -1
- package/dist/browser/event-controller.d.ts +0 -191
- package/dist/browser/event-controller.d.ts.map +0 -1
- package/dist/browser/event-controller.js +0 -559
- package/dist/browser/event-controller.js.map +0 -1
- package/dist/browser/index.d.ts +0 -2
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -14
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/link-interceptor.d.ts +0 -38
- package/dist/browser/link-interceptor.d.ts.map +0 -1
- package/dist/browser/link-interceptor.js +0 -99
- package/dist/browser/link-interceptor.js.map +0 -1
- package/dist/browser/logging.d.ts +0 -10
- package/dist/browser/logging.d.ts.map +0 -1
- package/dist/browser/logging.js +0 -29
- package/dist/browser/logging.js.map +0 -1
- package/dist/browser/lru-cache.d.ts +0 -17
- package/dist/browser/lru-cache.d.ts.map +0 -1
- package/dist/browser/lru-cache.js +0 -50
- package/dist/browser/lru-cache.js.map +0 -1
- package/dist/browser/merge-segment-loaders.d.ts +0 -39
- package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
- package/dist/browser/merge-segment-loaders.js +0 -102
- package/dist/browser/merge-segment-loaders.js.map +0 -1
- package/dist/browser/navigation-bridge.d.ts +0 -102
- package/dist/browser/navigation-bridge.d.ts.map +0 -1
- package/dist/browser/navigation-bridge.js +0 -708
- package/dist/browser/navigation-bridge.js.map +0 -1
- package/dist/browser/navigation-client.d.ts +0 -25
- package/dist/browser/navigation-client.d.ts.map +0 -1
- package/dist/browser/navigation-client.js +0 -157
- package/dist/browser/navigation-client.js.map +0 -1
- package/dist/browser/navigation-store.d.ts +0 -101
- package/dist/browser/navigation-store.d.ts.map +0 -1
- package/dist/browser/navigation-store.js +0 -625
- package/dist/browser/navigation-store.js.map +0 -1
- package/dist/browser/partial-update.d.ts +0 -75
- package/dist/browser/partial-update.d.ts.map +0 -1
- package/dist/browser/partial-update.js +0 -426
- package/dist/browser/partial-update.js.map +0 -1
- package/dist/browser/react/Link.d.ts +0 -86
- package/dist/browser/react/Link.d.ts.map +0 -1
- package/dist/browser/react/Link.js +0 -128
- package/dist/browser/react/Link.js.map +0 -1
- package/dist/browser/react/NavigationProvider.d.ts +0 -63
- package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
- package/dist/browser/react/NavigationProvider.js +0 -216
- package/dist/browser/react/NavigationProvider.js.map +0 -1
- package/dist/browser/react/ScrollRestoration.d.ts +0 -75
- package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
- package/dist/browser/react/ScrollRestoration.js +0 -57
- package/dist/browser/react/ScrollRestoration.js.map +0 -1
- package/dist/browser/react/context.d.ts +0 -46
- package/dist/browser/react/context.d.ts.map +0 -1
- package/dist/browser/react/context.js +0 -10
- package/dist/browser/react/context.js.map +0 -1
- package/dist/browser/react/index.d.ts +0 -11
- package/dist/browser/react/index.d.ts.map +0 -1
- package/dist/browser/react/index.js +0 -22
- package/dist/browser/react/index.js.map +0 -1
- package/dist/browser/react/location-state-shared.d.ts +0 -63
- package/dist/browser/react/location-state-shared.d.ts.map +0 -1
- package/dist/browser/react/location-state-shared.js +0 -81
- package/dist/browser/react/location-state-shared.js.map +0 -1
- package/dist/browser/react/location-state.d.ts +0 -23
- package/dist/browser/react/location-state.d.ts.map +0 -1
- package/dist/browser/react/location-state.js +0 -29
- package/dist/browser/react/location-state.js.map +0 -1
- package/dist/browser/react/mount-context.d.ts +0 -24
- package/dist/browser/react/mount-context.d.ts.map +0 -1
- package/dist/browser/react/mount-context.js +0 -24
- package/dist/browser/react/mount-context.js.map +0 -1
- package/dist/browser/react/use-action.d.ts +0 -64
- package/dist/browser/react/use-action.d.ts.map +0 -1
- package/dist/browser/react/use-action.js +0 -134
- package/dist/browser/react/use-action.js.map +0 -1
- package/dist/browser/react/use-client-cache.d.ts +0 -41
- package/dist/browser/react/use-client-cache.d.ts.map +0 -1
- package/dist/browser/react/use-client-cache.js +0 -39
- package/dist/browser/react/use-client-cache.js.map +0 -1
- package/dist/browser/react/use-handle.d.ts +0 -31
- package/dist/browser/react/use-handle.d.ts.map +0 -1
- package/dist/browser/react/use-handle.js +0 -144
- package/dist/browser/react/use-handle.js.map +0 -1
- package/dist/browser/react/use-href.d.ts +0 -33
- package/dist/browser/react/use-href.d.ts.map +0 -1
- package/dist/browser/react/use-href.js +0 -39
- package/dist/browser/react/use-href.js.map +0 -1
- package/dist/browser/react/use-link-status.d.ts +0 -37
- package/dist/browser/react/use-link-status.d.ts.map +0 -1
- package/dist/browser/react/use-link-status.js +0 -99
- package/dist/browser/react/use-link-status.js.map +0 -1
- package/dist/browser/react/use-mount.d.ts +0 -25
- package/dist/browser/react/use-mount.d.ts.map +0 -1
- package/dist/browser/react/use-mount.js +0 -30
- package/dist/browser/react/use-mount.js.map +0 -1
- package/dist/browser/react/use-navigation.d.ts +0 -27
- package/dist/browser/react/use-navigation.d.ts.map +0 -1
- package/dist/browser/react/use-navigation.js +0 -87
- package/dist/browser/react/use-navigation.js.map +0 -1
- package/dist/browser/react/use-segments.d.ts +0 -38
- package/dist/browser/react/use-segments.d.ts.map +0 -1
- package/dist/browser/react/use-segments.js +0 -130
- package/dist/browser/react/use-segments.js.map +0 -1
- package/dist/browser/request-controller.d.ts +0 -26
- package/dist/browser/request-controller.d.ts.map +0 -1
- package/dist/browser/request-controller.js +0 -147
- package/dist/browser/request-controller.js.map +0 -1
- package/dist/browser/rsc-router.d.ts +0 -129
- package/dist/browser/rsc-router.d.ts.map +0 -1
- package/dist/browser/rsc-router.js +0 -195
- package/dist/browser/rsc-router.js.map +0 -1
- package/dist/browser/scroll-restoration.d.ts +0 -93
- package/dist/browser/scroll-restoration.d.ts.map +0 -1
- package/dist/browser/scroll-restoration.js +0 -321
- package/dist/browser/scroll-restoration.js.map +0 -1
- package/dist/browser/segment-structure-assert.d.ts +0 -17
- package/dist/browser/segment-structure-assert.d.ts.map +0 -1
- package/dist/browser/segment-structure-assert.js +0 -59
- package/dist/browser/segment-structure-assert.js.map +0 -1
- package/dist/browser/server-action-bridge.d.ts +0 -26
- package/dist/browser/server-action-bridge.d.ts.map +0 -1
- package/dist/browser/server-action-bridge.js +0 -668
- package/dist/browser/server-action-bridge.js.map +0 -1
- package/dist/browser/shallow.d.ts +0 -12
- package/dist/browser/shallow.d.ts.map +0 -1
- package/dist/browser/shallow.js +0 -34
- package/dist/browser/shallow.js.map +0 -1
- package/dist/browser/types.d.ts +0 -369
- package/dist/browser/types.d.ts.map +0 -1
- package/dist/browser/types.js +0 -2
- package/dist/browser/types.js.map +0 -1
- package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
- package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-cli.test.js +0 -237
- package/dist/build/__tests__/generate-cli.test.js.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.js +0 -119
- package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.js +0 -620
- package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.js +0 -308
- package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
- package/dist/build/generate-manifest.d.ts +0 -81
- package/dist/build/generate-manifest.d.ts.map +0 -1
- package/dist/build/generate-manifest.js +0 -276
- package/dist/build/generate-manifest.js.map +0 -1
- package/dist/build/generate-route-types.d.ts +0 -115
- package/dist/build/generate-route-types.d.ts.map +0 -1
- package/dist/build/generate-route-types.js +0 -740
- package/dist/build/generate-route-types.js.map +0 -1
- package/dist/build/index.d.ts +0 -21
- package/dist/build/index.d.ts.map +0 -1
- package/dist/build/index.js +0 -21
- package/dist/build/index.js.map +0 -1
- package/dist/build/route-trie.d.ts +0 -71
- package/dist/build/route-trie.d.ts.map +0 -1
- package/dist/build/route-trie.js +0 -175
- package/dist/build/route-trie.js.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.js +0 -208
- package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
- package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
- package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
- package/dist/cache/__tests__/document-cache.test.js +0 -345
- package/dist/cache/__tests__/document-cache.test.js.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
- package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
- package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-store.test.js +0 -367
- package/dist/cache/__tests__/memory-store.test.js.map +0 -1
- package/dist/cache/cache-scope.d.ts +0 -102
- package/dist/cache/cache-scope.d.ts.map +0 -1
- package/dist/cache/cache-scope.js +0 -440
- package/dist/cache/cache-scope.js.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
- package/dist/cache/cf/cf-cache-store.d.ts +0 -165
- package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
- package/dist/cache/cf/cf-cache-store.js +0 -242
- package/dist/cache/cf/cf-cache-store.js.map +0 -1
- package/dist/cache/cf/index.d.ts +0 -14
- package/dist/cache/cf/index.d.ts.map +0 -1
- package/dist/cache/cf/index.js +0 -17
- package/dist/cache/cf/index.js.map +0 -1
- package/dist/cache/document-cache.d.ts +0 -64
- package/dist/cache/document-cache.d.ts.map +0 -1
- package/dist/cache/document-cache.js +0 -228
- package/dist/cache/document-cache.js.map +0 -1
- package/dist/cache/index.d.ts +0 -19
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -21
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/memory-segment-store.d.ts +0 -110
- package/dist/cache/memory-segment-store.d.ts.map +0 -1
- package/dist/cache/memory-segment-store.js +0 -117
- package/dist/cache/memory-segment-store.js.map +0 -1
- package/dist/cache/memory-store.d.ts +0 -41
- package/dist/cache/memory-store.d.ts.map +0 -1
- package/dist/cache/memory-store.js +0 -191
- package/dist/cache/memory-store.js.map +0 -1
- package/dist/cache/types.d.ts +0 -317
- package/dist/cache/types.d.ts.map +0 -1
- package/dist/cache/types.js +0 -12
- package/dist/cache/types.js.map +0 -1
- package/dist/client.d.ts +0 -248
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -367
- package/dist/client.js.map +0 -1
- package/dist/client.rsc.d.ts +0 -26
- package/dist/client.rsc.d.ts.map +0 -1
- package/dist/client.rsc.js +0 -46
- package/dist/client.rsc.js.map +0 -1
- package/dist/component-utils.d.ts +0 -36
- package/dist/component-utils.d.ts.map +0 -1
- package/dist/component-utils.js +0 -61
- package/dist/component-utils.js.map +0 -1
- package/dist/components/DefaultDocument.d.ts +0 -13
- package/dist/components/DefaultDocument.d.ts.map +0 -1
- package/dist/components/DefaultDocument.js +0 -15
- package/dist/components/DefaultDocument.js.map +0 -1
- package/dist/debug.d.ts +0 -58
- package/dist/debug.d.ts.map +0 -1
- package/dist/debug.js +0 -157
- package/dist/debug.js.map +0 -1
- package/dist/default-error-boundary.d.ts +0 -11
- package/dist/default-error-boundary.d.ts.map +0 -1
- package/dist/default-error-boundary.js +0 -45
- package/dist/default-error-boundary.js.map +0 -1
- package/dist/deps/browser.d.ts +0 -2
- package/dist/deps/browser.d.ts.map +0 -1
- package/dist/deps/browser.js +0 -3
- package/dist/deps/browser.js.map +0 -1
- package/dist/deps/html-stream-client.d.ts +0 -2
- package/dist/deps/html-stream-client.d.ts.map +0 -1
- package/dist/deps/html-stream-client.js +0 -3
- package/dist/deps/html-stream-client.js.map +0 -1
- package/dist/deps/html-stream-server.d.ts +0 -2
- package/dist/deps/html-stream-server.d.ts.map +0 -1
- package/dist/deps/html-stream-server.js +0 -3
- package/dist/deps/html-stream-server.js.map +0 -1
- package/dist/deps/rsc.d.ts +0 -2
- package/dist/deps/rsc.d.ts.map +0 -1
- package/dist/deps/rsc.js +0 -4
- package/dist/deps/rsc.js.map +0 -1
- package/dist/deps/ssr.d.ts +0 -2
- package/dist/deps/ssr.d.ts.map +0 -1
- package/dist/deps/ssr.js +0 -3
- package/dist/deps/ssr.js.map +0 -1
- package/dist/errors.d.ts +0 -174
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -241
- package/dist/errors.js.map +0 -1
- package/dist/handle.d.ts +0 -78
- package/dist/handle.d.ts.map +0 -1
- package/dist/handle.js +0 -82
- package/dist/handle.js.map +0 -1
- package/dist/handles/MetaTags.d.ts +0 -14
- package/dist/handles/MetaTags.d.ts.map +0 -1
- package/dist/handles/MetaTags.js +0 -136
- package/dist/handles/MetaTags.js.map +0 -1
- package/dist/handles/index.d.ts +0 -6
- package/dist/handles/index.d.ts.map +0 -1
- package/dist/handles/index.js +0 -6
- package/dist/handles/index.js.map +0 -1
- package/dist/handles/meta.d.ts +0 -39
- package/dist/handles/meta.d.ts.map +0 -1
- package/dist/handles/meta.js +0 -202
- package/dist/handles/meta.js.map +0 -1
- package/dist/host/__tests__/errors.test.d.ts +0 -2
- package/dist/host/__tests__/errors.test.d.ts.map +0 -1
- package/dist/host/__tests__/errors.test.js +0 -76
- package/dist/host/__tests__/errors.test.js.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.js +0 -251
- package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
- package/dist/host/__tests__/router.test.d.ts +0 -2
- package/dist/host/__tests__/router.test.d.ts.map +0 -1
- package/dist/host/__tests__/router.test.js +0 -241
- package/dist/host/__tests__/router.test.js.map +0 -1
- package/dist/host/__tests__/testing.test.d.ts +0 -2
- package/dist/host/__tests__/testing.test.d.ts.map +0 -1
- package/dist/host/__tests__/testing.test.js +0 -64
- package/dist/host/__tests__/testing.test.js.map +0 -1
- package/dist/host/__tests__/utils.test.d.ts +0 -2
- package/dist/host/__tests__/utils.test.d.ts.map +0 -1
- package/dist/host/__tests__/utils.test.js +0 -29
- package/dist/host/__tests__/utils.test.js.map +0 -1
- package/dist/host/cookie-handler.d.ts +0 -34
- package/dist/host/cookie-handler.d.ts.map +0 -1
- package/dist/host/cookie-handler.js +0 -124
- package/dist/host/cookie-handler.js.map +0 -1
- package/dist/host/errors.d.ts +0 -56
- package/dist/host/errors.d.ts.map +0 -1
- package/dist/host/errors.js +0 -79
- package/dist/host/errors.js.map +0 -1
- package/dist/host/index.d.ts +0 -29
- package/dist/host/index.d.ts.map +0 -1
- package/dist/host/index.js +0 -32
- package/dist/host/index.js.map +0 -1
- package/dist/host/pattern-matcher.d.ts +0 -36
- package/dist/host/pattern-matcher.d.ts.map +0 -1
- package/dist/host/pattern-matcher.js +0 -172
- package/dist/host/pattern-matcher.js.map +0 -1
- package/dist/host/router.d.ts +0 -26
- package/dist/host/router.d.ts.map +0 -1
- package/dist/host/router.js +0 -218
- package/dist/host/router.js.map +0 -1
- package/dist/host/testing.d.ts +0 -36
- package/dist/host/testing.d.ts.map +0 -1
- package/dist/host/testing.js +0 -55
- package/dist/host/testing.js.map +0 -1
- package/dist/host/types.d.ts +0 -115
- package/dist/host/types.d.ts.map +0 -1
- package/dist/host/types.js +0 -7
- package/dist/host/types.js.map +0 -1
- package/dist/host/utils.d.ts +0 -21
- package/dist/host/utils.d.ts.map +0 -1
- package/dist/host/utils.js +0 -23
- package/dist/host/utils.js.map +0 -1
- package/dist/href-client.d.ts +0 -131
- package/dist/href-client.d.ts.map +0 -1
- package/dist/href-client.js +0 -64
- package/dist/href-client.js.map +0 -1
- package/dist/href-context.d.ts +0 -29
- package/dist/href-context.d.ts.map +0 -1
- package/dist/href-context.js +0 -21
- package/dist/href-context.js.map +0 -1
- package/dist/index.d.ts +0 -73
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -91
- package/dist/index.js.map +0 -1
- package/dist/index.rsc.d.ts +0 -32
- package/dist/index.rsc.d.ts.map +0 -1
- package/dist/index.rsc.js +0 -40
- package/dist/index.rsc.js.map +0 -1
- package/dist/internal-debug.d.ts +0 -2
- package/dist/internal-debug.d.ts.map +0 -1
- package/dist/internal-debug.js +0 -5
- package/dist/internal-debug.js.map +0 -1
- package/dist/loader.d.ts +0 -14
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -20
- package/dist/loader.js.map +0 -1
- package/dist/loader.rsc.d.ts +0 -19
- package/dist/loader.rsc.d.ts.map +0 -1
- package/dist/loader.rsc.js +0 -99
- package/dist/loader.rsc.js.map +0 -1
- package/dist/network-error-thrower.d.ts +0 -17
- package/dist/network-error-thrower.d.ts.map +0 -1
- package/dist/network-error-thrower.js +0 -14
- package/dist/network-error-thrower.js.map +0 -1
- package/dist/outlet-context.d.ts +0 -13
- package/dist/outlet-context.d.ts.map +0 -1
- package/dist/outlet-context.js +0 -3
- package/dist/outlet-context.js.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.js +0 -148
- package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
- package/dist/prerender/param-hash.d.ts +0 -16
- package/dist/prerender/param-hash.d.ts.map +0 -1
- package/dist/prerender/param-hash.js +0 -36
- package/dist/prerender/param-hash.js.map +0 -1
- package/dist/prerender/store.d.ts +0 -38
- package/dist/prerender/store.d.ts.map +0 -1
- package/dist/prerender/store.js +0 -61
- package/dist/prerender/store.js.map +0 -1
- package/dist/prerender.d.ts +0 -66
- package/dist/prerender.d.ts.map +0 -1
- package/dist/prerender.js +0 -57
- package/dist/prerender.js.map +0 -1
- package/dist/reverse.d.ts +0 -196
- package/dist/reverse.d.ts.map +0 -1
- package/dist/reverse.js +0 -78
- package/dist/reverse.js.map +0 -1
- package/dist/root-error-boundary.d.ts +0 -33
- package/dist/root-error-boundary.d.ts.map +0 -1
- package/dist/root-error-boundary.js +0 -165
- package/dist/root-error-boundary.js.map +0 -1
- package/dist/route-content-wrapper.d.ts +0 -46
- package/dist/route-content-wrapper.d.ts.map +0 -1
- package/dist/route-content-wrapper.js +0 -77
- package/dist/route-content-wrapper.js.map +0 -1
- package/dist/route-definition.d.ts +0 -421
- package/dist/route-definition.d.ts.map +0 -1
- package/dist/route-definition.js +0 -868
- package/dist/route-definition.js.map +0 -1
- package/dist/route-map-builder.d.ts +0 -155
- package/dist/route-map-builder.d.ts.map +0 -1
- package/dist/route-map-builder.js +0 -237
- package/dist/route-map-builder.js.map +0 -1
- package/dist/route-types.d.ts +0 -165
- package/dist/route-types.d.ts.map +0 -1
- package/dist/route-types.js +0 -7
- package/dist/route-types.js.map +0 -1
- package/dist/router/__tests__/handler-context.test.d.ts +0 -2
- package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/handler-context.test.js +0 -65
- package/dist/router/__tests__/handler-context.test.js.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
- package/dist/router/__tests__/match-context.test.d.ts +0 -2
- package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-context.test.js +0 -92
- package/dist/router/__tests__/match-context.test.js.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.js +0 -417
- package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
- package/dist/router/__tests__/match-result.test.d.ts +0 -2
- package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-result.test.js +0 -457
- package/dist/router/__tests__/match-result.test.js.map +0 -1
- package/dist/router/__tests__/on-error.test.d.ts +0 -2
- package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
- package/dist/router/__tests__/on-error.test.js +0 -678
- package/dist/router/__tests__/on-error.test.js.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.js +0 -629
- package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
- package/dist/router/error-handling.d.ts +0 -77
- package/dist/router/error-handling.d.ts.map +0 -1
- package/dist/router/error-handling.js +0 -202
- package/dist/router/error-handling.js.map +0 -1
- package/dist/router/handler-context.d.ts +0 -20
- package/dist/router/handler-context.d.ts.map +0 -1
- package/dist/router/handler-context.js +0 -198
- package/dist/router/handler-context.js.map +0 -1
- package/dist/router/intercept-resolution.d.ts +0 -66
- package/dist/router/intercept-resolution.d.ts.map +0 -1
- package/dist/router/intercept-resolution.js +0 -246
- package/dist/router/intercept-resolution.js.map +0 -1
- package/dist/router/loader-resolution.d.ts +0 -64
- package/dist/router/loader-resolution.d.ts.map +0 -1
- package/dist/router/loader-resolution.js +0 -284
- package/dist/router/loader-resolution.js.map +0 -1
- package/dist/router/logging.d.ts +0 -15
- package/dist/router/logging.d.ts.map +0 -1
- package/dist/router/logging.js +0 -99
- package/dist/router/logging.js.map +0 -1
- package/dist/router/manifest.d.ts +0 -22
- package/dist/router/manifest.d.ts.map +0 -1
- package/dist/router/manifest.js +0 -181
- package/dist/router/manifest.js.map +0 -1
- package/dist/router/match-api.d.ts +0 -35
- package/dist/router/match-api.d.ts.map +0 -1
- package/dist/router/match-api.js +0 -406
- package/dist/router/match-api.js.map +0 -1
- package/dist/router/match-context.d.ts +0 -206
- package/dist/router/match-context.d.ts.map +0 -1
- package/dist/router/match-context.js +0 -17
- package/dist/router/match-context.js.map +0 -1
- package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
- package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
- package/dist/router/match-middleware/background-revalidation.js +0 -75
- package/dist/router/match-middleware/background-revalidation.js.map +0 -1
- package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
- package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-lookup.js +0 -257
- package/dist/router/match-middleware/cache-lookup.js.map +0 -1
- package/dist/router/match-middleware/cache-store.d.ts +0 -113
- package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-store.js +0 -108
- package/dist/router/match-middleware/cache-store.js.map +0 -1
- package/dist/router/match-middleware/index.d.ts +0 -81
- package/dist/router/match-middleware/index.d.ts.map +0 -1
- package/dist/router/match-middleware/index.js +0 -80
- package/dist/router/match-middleware/index.js.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.js +0 -134
- package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
- package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
- package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/segment-resolution.js +0 -53
- package/dist/router/match-middleware/segment-resolution.js.map +0 -1
- package/dist/router/match-pipelines.d.ts +0 -147
- package/dist/router/match-pipelines.d.ts.map +0 -1
- package/dist/router/match-pipelines.js +0 -82
- package/dist/router/match-pipelines.js.map +0 -1
- package/dist/router/match-result.d.ts +0 -126
- package/dist/router/match-result.d.ts.map +0 -1
- package/dist/router/match-result.js +0 -93
- package/dist/router/match-result.js.map +0 -1
- package/dist/router/metrics.d.ts +0 -20
- package/dist/router/metrics.d.ts.map +0 -1
- package/dist/router/metrics.js +0 -47
- package/dist/router/metrics.js.map +0 -1
- package/dist/router/middleware.d.ts +0 -249
- package/dist/router/middleware.d.ts.map +0 -1
- package/dist/router/middleware.js +0 -434
- package/dist/router/middleware.js.map +0 -1
- package/dist/router/middleware.test.d.ts +0 -2
- package/dist/router/middleware.test.d.ts.map +0 -1
- package/dist/router/middleware.test.js +0 -816
- package/dist/router/middleware.test.js.map +0 -1
- package/dist/router/pattern-matching.d.ts +0 -149
- package/dist/router/pattern-matching.d.ts.map +0 -1
- package/dist/router/pattern-matching.js +0 -349
- package/dist/router/pattern-matching.js.map +0 -1
- package/dist/router/revalidation.d.ts +0 -44
- package/dist/router/revalidation.d.ts.map +0 -1
- package/dist/router/revalidation.js +0 -147
- package/dist/router/revalidation.js.map +0 -1
- package/dist/router/router-context.d.ts +0 -135
- package/dist/router/router-context.d.ts.map +0 -1
- package/dist/router/router-context.js +0 -36
- package/dist/router/router-context.js.map +0 -1
- package/dist/router/segment-resolution.d.ts +0 -127
- package/dist/router/segment-resolution.d.ts.map +0 -1
- package/dist/router/segment-resolution.js +0 -919
- package/dist/router/segment-resolution.js.map +0 -1
- package/dist/router/trie-matching.d.ts +0 -40
- package/dist/router/trie-matching.d.ts.map +0 -1
- package/dist/router/trie-matching.js +0 -127
- package/dist/router/trie-matching.js.map +0 -1
- package/dist/router/types.d.ts +0 -136
- package/dist/router/types.d.ts.map +0 -1
- package/dist/router/types.js +0 -7
- package/dist/router/types.js.map +0 -1
- package/dist/router.d.ts +0 -753
- package/dist/router.d.ts.map +0 -1
- package/dist/router.gen.d.ts +0 -6
- package/dist/router.gen.d.ts.map +0 -1
- package/dist/router.gen.js +0 -6
- package/dist/router.gen.js.map +0 -1
- package/dist/router.js +0 -1304
- package/dist/router.js.map +0 -1
- package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
- package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
- package/dist/rsc/__tests__/helpers.test.js +0 -140
- package/dist/rsc/__tests__/helpers.test.js.map +0 -1
- package/dist/rsc/handler.d.ts +0 -45
- package/dist/rsc/handler.d.ts.map +0 -1
- package/dist/rsc/handler.js +0 -1172
- package/dist/rsc/handler.js.map +0 -1
- package/dist/rsc/helpers.d.ts +0 -16
- package/dist/rsc/helpers.d.ts.map +0 -1
- package/dist/rsc/helpers.js +0 -55
- package/dist/rsc/helpers.js.map +0 -1
- package/dist/rsc/index.d.ts +0 -22
- package/dist/rsc/index.d.ts.map +0 -1
- package/dist/rsc/index.js +0 -23
- package/dist/rsc/index.js.map +0 -1
- package/dist/rsc/nonce.d.ts +0 -9
- package/dist/rsc/nonce.d.ts.map +0 -1
- package/dist/rsc/nonce.js +0 -18
- package/dist/rsc/nonce.js.map +0 -1
- package/dist/rsc/types.d.ts +0 -206
- package/dist/rsc/types.d.ts.map +0 -1
- package/dist/rsc/types.js +0 -8
- package/dist/rsc/types.js.map +0 -1
- package/dist/search-params.d.ts +0 -103
- package/dist/search-params.d.ts.map +0 -1
- package/dist/search-params.js +0 -74
- package/dist/search-params.js.map +0 -1
- package/dist/segment-system.d.ts +0 -75
- package/dist/segment-system.d.ts.map +0 -1
- package/dist/segment-system.js +0 -336
- package/dist/segment-system.js.map +0 -1
- package/dist/server/context.d.ts +0 -245
- package/dist/server/context.d.ts.map +0 -1
- package/dist/server/context.js +0 -197
- package/dist/server/context.js.map +0 -1
- package/dist/server/fetchable-loader-store.d.ts +0 -18
- package/dist/server/fetchable-loader-store.d.ts.map +0 -1
- package/dist/server/fetchable-loader-store.js +0 -18
- package/dist/server/fetchable-loader-store.js.map +0 -1
- package/dist/server/handle-store.d.ts +0 -85
- package/dist/server/handle-store.d.ts.map +0 -1
- package/dist/server/handle-store.js +0 -142
- package/dist/server/handle-store.js.map +0 -1
- package/dist/server/loader-registry.d.ts +0 -55
- package/dist/server/loader-registry.d.ts.map +0 -1
- package/dist/server/loader-registry.js +0 -132
- package/dist/server/loader-registry.js.map +0 -1
- package/dist/server/request-context.d.ts +0 -226
- package/dist/server/request-context.d.ts.map +0 -1
- package/dist/server/request-context.js +0 -290
- package/dist/server/request-context.js.map +0 -1
- package/dist/server/root-layout.d.ts +0 -4
- package/dist/server/root-layout.d.ts.map +0 -1
- package/dist/server/root-layout.js +0 -5
- package/dist/server/root-layout.js.map +0 -1
- package/dist/server.d.ts +0 -15
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -20
- package/dist/server.js.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
- package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
- package/dist/ssr/index.d.ts +0 -98
- package/dist/ssr/index.d.ts.map +0 -1
- package/dist/ssr/index.js +0 -158
- package/dist/ssr/index.js.map +0 -1
- package/dist/static-handler.d.ts +0 -50
- package/dist/static-handler.d.ts.map +0 -1
- package/dist/static-handler.gen.d.ts +0 -5
- package/dist/static-handler.gen.d.ts.map +0 -1
- package/dist/static-handler.gen.js +0 -5
- package/dist/static-handler.gen.js.map +0 -1
- package/dist/static-handler.js +0 -29
- package/dist/static-handler.js.map +0 -1
- package/dist/theme/ThemeProvider.d.ts +0 -20
- package/dist/theme/ThemeProvider.d.ts.map +0 -1
- package/dist/theme/ThemeProvider.js +0 -240
- package/dist/theme/ThemeProvider.js.map +0 -1
- package/dist/theme/ThemeScript.d.ts +0 -48
- package/dist/theme/ThemeScript.d.ts.map +0 -1
- package/dist/theme/ThemeScript.js +0 -13
- package/dist/theme/ThemeScript.js.map +0 -1
- package/dist/theme/__tests__/theme.test.d.ts +0 -2
- package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
- package/dist/theme/__tests__/theme.test.js +0 -103
- package/dist/theme/__tests__/theme.test.js.map +0 -1
- package/dist/theme/constants.d.ts +0 -29
- package/dist/theme/constants.d.ts.map +0 -1
- package/dist/theme/constants.js +0 -48
- package/dist/theme/constants.js.map +0 -1
- package/dist/theme/index.d.ts +0 -31
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js +0 -36
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/theme-context.d.ts +0 -40
- package/dist/theme/theme-context.d.ts.map +0 -1
- package/dist/theme/theme-context.js +0 -60
- package/dist/theme/theme-context.js.map +0 -1
- package/dist/theme/theme-script.d.ts +0 -27
- package/dist/theme/theme-script.d.ts.map +0 -1
- package/dist/theme/theme-script.js +0 -147
- package/dist/theme/theme-script.js.map +0 -1
- package/dist/theme/types.d.ts +0 -163
- package/dist/theme/types.d.ts.map +0 -1
- package/dist/theme/types.js +0 -11
- package/dist/theme/types.js.map +0 -1
- package/dist/theme/use-theme.d.ts +0 -12
- package/dist/theme/use-theme.d.ts.map +0 -1
- package/dist/theme/use-theme.js +0 -40
- package/dist/theme/use-theme.js.map +0 -1
- package/dist/types.d.ts +0 -1479
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +0 -1
- package/dist/urls.d.ts +0 -441
- package/dist/urls.d.ts.map +0 -1
- package/dist/urls.gen.d.ts +0 -8
- package/dist/urls.gen.d.ts.map +0 -1
- package/dist/urls.gen.js +0 -8
- package/dist/urls.gen.js.map +0 -1
- package/dist/urls.js +0 -443
- package/dist/urls.js.map +0 -1
- package/dist/use-loader.d.ts +0 -127
- package/dist/use-loader.d.ts.map +0 -1
- package/dist/use-loader.js +0 -237
- package/dist/use-loader.js.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
- package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
- package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
- package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.js +0 -39
- package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
- package/dist/vite/ast-handler-extract.d.ts +0 -49
- package/dist/vite/ast-handler-extract.d.ts.map +0 -1
- package/dist/vite/ast-handler-extract.js +0 -249
- package/dist/vite/ast-handler-extract.js.map +0 -1
- package/dist/vite/expose-action-id.d.ts +0 -19
- package/dist/vite/expose-action-id.d.ts.map +0 -1
- package/dist/vite/expose-action-id.js +0 -250
- package/dist/vite/expose-action-id.js.map +0 -1
- package/dist/vite/expose-id-utils.d.ts +0 -69
- package/dist/vite/expose-id-utils.d.ts.map +0 -1
- package/dist/vite/expose-id-utils.js +0 -289
- package/dist/vite/expose-id-utils.js.map +0 -1
- package/dist/vite/expose-internal-ids.d.ts +0 -22
- package/dist/vite/expose-internal-ids.d.ts.map +0 -1
- package/dist/vite/expose-internal-ids.js +0 -886
- package/dist/vite/expose-internal-ids.js.map +0 -1
- package/dist/vite/index.d.ts +0 -149
- package/dist/vite/index.d.ts.map +0 -1
- package/dist/vite/index.js.bak +0 -5448
- package/dist/vite/index.js.map +0 -1
- package/dist/vite/index.named-routes.gen.ts +0 -103
- package/dist/vite/package-resolution.d.ts +0 -43
- package/dist/vite/package-resolution.d.ts.map +0 -1
- package/dist/vite/package-resolution.js +0 -112
- package/dist/vite/package-resolution.js.map +0 -1
- package/dist/vite/virtual-entries.d.ts +0 -25
- package/dist/vite/virtual-entries.d.ts.map +0 -1
- package/dist/vite/virtual-entries.js +0 -110
- package/dist/vite/virtual-entries.js.map +0 -1
- package/src/browser/shallow.ts +0 -40
|
@@ -63,11 +63,6 @@ const TEST_ORIGIN = "http://localhost";
|
|
|
63
63
|
*/
|
|
64
64
|
export type HandleDataSeed = Record<string, Record<string, unknown[]>>;
|
|
65
65
|
|
|
66
|
-
// Loaders and location-state defs carry an id (`$$id` / `__rsc_ls_key`) that the
|
|
67
|
-
// Vite plugin injects at build time; in a bare test it is "". These helpers
|
|
68
|
-
// assign a synthetic stable id (mutating the handle, tracked per-object) so that
|
|
69
|
-
// seeding by reference lines up with the read path (useLoader / useLocationState
|
|
70
|
-
// both read the id off the handle at call time).
|
|
71
66
|
const syntheticIds = new WeakMap<object, string>();
|
|
72
67
|
let syntheticIdCounter = 0;
|
|
73
68
|
|
|
@@ -86,7 +81,6 @@ function ensureSyntheticId(
|
|
|
86
81
|
return id;
|
|
87
82
|
}
|
|
88
83
|
|
|
89
|
-
/** One-level clone of a raw handle seed so we don't mutate the caller's object. */
|
|
90
84
|
function cloneHandleSeed(seed?: HandleDataSeed): HandleDataSeed {
|
|
91
85
|
const out: HandleDataSeed = {};
|
|
92
86
|
for (const [name, segMap] of Object.entries(seed ?? {})) {
|
|
@@ -95,12 +89,6 @@ function cloneHandleSeed(seed?: HandleDataSeed): HandleDataSeed {
|
|
|
95
89
|
return out;
|
|
96
90
|
}
|
|
97
91
|
|
|
98
|
-
/**
|
|
99
|
-
* One node of the route definition passed to renderRoute. The array models a
|
|
100
|
-
* single matched route plus its optional layout chain — element order is
|
|
101
|
-
* outermost layout first, the leaf route last (the same root-to-leaf order the
|
|
102
|
-
* real matcher produces).
|
|
103
|
-
*/
|
|
104
92
|
export interface RenderRouteSpec {
|
|
105
93
|
/**
|
|
106
94
|
* The route pattern this node matches, e.g. "/products/:productId". The LAST
|
|
@@ -281,11 +269,6 @@ interface ResolvedMatch {
|
|
|
281
269
|
pathname: string;
|
|
282
270
|
}
|
|
283
271
|
|
|
284
|
-
/**
|
|
285
|
-
* Match a pathname against the leaf spec's pattern and extract params.
|
|
286
|
-
* Returns null when the pattern does not match (params then fall back to the
|
|
287
|
-
* caller-provided `options.params`).
|
|
288
|
-
*/
|
|
289
272
|
function matchLeaf(
|
|
290
273
|
pattern: string,
|
|
291
274
|
pathname: string,
|
|
@@ -303,7 +286,6 @@ function matchLeaf(
|
|
|
303
286
|
return params;
|
|
304
287
|
}
|
|
305
288
|
|
|
306
|
-
/** Derive a usable initial pathname from a leaf pattern when none is given. */
|
|
307
289
|
function staticPrefix(pattern: string): string {
|
|
308
290
|
const out: string[] = [];
|
|
309
291
|
for (const part of pattern.split("/")) {
|
|
@@ -314,13 +296,6 @@ function staticPrefix(pattern: string): string {
|
|
|
314
296
|
return "/" + out.join("/");
|
|
315
297
|
}
|
|
316
298
|
|
|
317
|
-
/**
|
|
318
|
-
* Build the synthetic ResolvedSegment[] for a matched route. Produces, in
|
|
319
|
-
* root-to-leaf order: one layout segment per non-leaf spec, then the leaf route
|
|
320
|
-
* segment, plus a loader segment for each seeded loader id attached to the
|
|
321
|
-
* owning spec. Segment ids follow the real convention (L0, L0L1, ..., the leaf
|
|
322
|
-
* route as L0...R{n}; loaders as {parentId}D{i}.{loaderId}).
|
|
323
|
-
*/
|
|
324
299
|
function buildSegments(
|
|
325
300
|
routes: RenderRouteSpec[],
|
|
326
301
|
params: Record<string, string>,
|
|
@@ -353,20 +328,13 @@ function buildSegments(
|
|
|
353
328
|
params,
|
|
354
329
|
belongsToRoute: true,
|
|
355
330
|
};
|
|
356
|
-
// Model an include() mount: every component segment in the chain shares the
|
|
357
|
-
// same prefix, so renderSegments wraps each in a MountContextProvider and
|
|
358
|
-
// useMount() resolves the mounted prefix (production sets mountPath on every
|
|
359
|
-
// segment of an included subtree). Must be applied identically at both
|
|
360
|
-
// buildSegments call sites or segment-structure-assert flags a remount.
|
|
361
331
|
if (mount) node.mountPath = mount;
|
|
362
|
-
// A leaf-owned layout component wraps the route via its own layout element.
|
|
363
332
|
if (isLeaf && spec.layout) {
|
|
364
333
|
const Layout = spec.layout;
|
|
365
334
|
node.layout = <Layout />;
|
|
366
335
|
}
|
|
367
336
|
segments.push(node);
|
|
368
337
|
|
|
369
|
-
// Determine which seeded loader ids this spec owns.
|
|
370
338
|
const ownedIds = spec.loaderIds
|
|
371
339
|
? spec.loaderIds.filter((id) => id in loaderData)
|
|
372
340
|
: isLeaf
|
|
@@ -390,30 +358,6 @@ function buildSegments(
|
|
|
390
358
|
return segments;
|
|
391
359
|
}
|
|
392
360
|
|
|
393
|
-
/**
|
|
394
|
-
* Render a CLIENT component (and its layout chain) inside the router's
|
|
395
|
-
* NavigationProvider for unit testing. Exported from `@rangojs/router/testing/dom`
|
|
396
|
-
* (its own entry, kept out of the main `@rangojs/router/testing` barrel so that
|
|
397
|
-
* barrel never references React/@testing-library/react). Async so the heavy
|
|
398
|
-
* @testing-library/react dependency is loaded only at call time.
|
|
399
|
-
*
|
|
400
|
-
* @example
|
|
401
|
-
* ```tsx
|
|
402
|
-
* // @vitest-environment happy-dom
|
|
403
|
-
* import { renderRoute } from "@rangojs/router/testing/dom";
|
|
404
|
-
*
|
|
405
|
-
* function Product() {
|
|
406
|
-
* const { productId } = useParams<{ productId: string }>();
|
|
407
|
-
* const reverse = useReverse({ product: "/products/:productId" });
|
|
408
|
-
* return <a href={reverse("product", { productId: "2" })}>{productId}</a>;
|
|
409
|
-
* }
|
|
410
|
-
*
|
|
411
|
-
* const { getByText, router } = await renderRoute(
|
|
412
|
-
* [{ path: "/products/:productId", Component: Product }],
|
|
413
|
-
* { request: "/products/1" },
|
|
414
|
-
* );
|
|
415
|
-
* ```
|
|
416
|
-
*/
|
|
417
361
|
export async function renderRoute(
|
|
418
362
|
routes: RenderRouteSpec[],
|
|
419
363
|
options: RenderRouteOptions = {},
|
|
@@ -421,9 +365,6 @@ export async function renderRoute(
|
|
|
421
365
|
if (routes.length === 0) {
|
|
422
366
|
throw new Error("renderRoute: `routes` must contain at least one entry");
|
|
423
367
|
}
|
|
424
|
-
// The pre-rename `initialUrl` option was renamed to `request`. A plain-JS or
|
|
425
|
-
// spread-defeated caller still passing it would otherwise be silently ignored;
|
|
426
|
-
// fail loud with the migration name instead.
|
|
427
368
|
if ("initialUrl" in options) {
|
|
428
369
|
throw new Error(
|
|
429
370
|
"renderRoute: the `initialUrl` option was renamed to `request`. " +
|
|
@@ -439,30 +380,19 @@ export async function renderRoute(
|
|
|
439
380
|
const initialUrl = requestUrl ?? staticPrefix(leaf.path) ?? "/";
|
|
440
381
|
const url = new URL(initialUrl, TEST_ORIGIN);
|
|
441
382
|
|
|
442
|
-
// Seed loader data: explicit-id entries from `loaderData`, plus by-reference
|
|
443
|
-
// entries from `loaders` (assigning synthetic ids to real handles whose `$$id`
|
|
444
|
-
// is empty in a bare test).
|
|
445
383
|
const loaderData: Record<string, unknown> = { ...(options.loaderData ?? {}) };
|
|
446
384
|
for (const [loader, data] of options.loaders ?? []) {
|
|
447
385
|
loaderData[ensureSyntheticId(loader as object, "$$id")] = data;
|
|
448
386
|
}
|
|
449
387
|
|
|
450
|
-
// Seed location state into history.state so useLocationState(def) resolves.
|
|
451
|
-
// Keyed defs read history.state[def.__rsc_ls_key]; assign a synthetic key when
|
|
452
|
-
// the injected one is empty (bare test). RESET history.state to only this
|
|
453
|
-
// call's seeds (not a merge) so a previous render's seeded state does not leak
|
|
454
|
-
// into a later render in the same DOM environment.
|
|
455
388
|
if (typeof window !== "undefined") {
|
|
456
389
|
const stateObj: Record<string, unknown> = {};
|
|
457
390
|
for (const [def, value] of options.locationState ?? []) {
|
|
458
391
|
stateObj[ensureSyntheticId(def as object, "__rsc_ls_key")] = value;
|
|
459
392
|
}
|
|
460
|
-
// No URL arg: useLocationState reads history.state (not the URL), and passing
|
|
461
|
-
// a TEST_ORIGIN URL would trip the DOM env's same-origin check.
|
|
462
393
|
window.history.replaceState(stateObj, "");
|
|
463
394
|
}
|
|
464
395
|
|
|
465
|
-
// Resolve params: URL-extracted params first, explicit params override.
|
|
466
396
|
const resolve = (pathname: string): ResolvedMatch => {
|
|
467
397
|
const matched = matchLeaf(leaf.path, pathname) ?? {};
|
|
468
398
|
return {
|
|
@@ -472,10 +402,7 @@ export async function renderRoute(
|
|
|
472
402
|
};
|
|
473
403
|
const initialMatch = resolve(url.pathname);
|
|
474
404
|
|
|
475
|
-
// Reuse the real browser primitives so context shape matches production.
|
|
476
405
|
const historyKey = generateHistoryKey(url.href);
|
|
477
|
-
// Normalize the include() mount prefix once and apply it at BOTH buildSegments
|
|
478
|
-
// call sites (initial + navigate) so mountPath is consistent across renders.
|
|
479
406
|
const mount = normalizeBasename(options.mount);
|
|
480
407
|
const initialSegments = buildSegments(
|
|
481
408
|
routes,
|
|
@@ -490,20 +417,12 @@ export async function renderRoute(
|
|
|
490
417
|
initialSegments,
|
|
491
418
|
crossTabSync: false,
|
|
492
419
|
});
|
|
493
|
-
// Seed handle data: raw `handle` entries plus by-reference `handles` attached
|
|
494
|
-
// to the leaf route segment under each handle's id (so useHandle(handle)
|
|
495
|
-
// resolves the pushed values).
|
|
496
420
|
const leafRouteSegmentId =
|
|
497
421
|
[...initialSegments].reverse().find((s) => s.type === "route")?.id ??
|
|
498
422
|
initialSegments[initialSegments.length - 1]?.id;
|
|
499
423
|
const handleSeed: HandleDataSeed = cloneHandleSeed(options.handle);
|
|
500
424
|
for (const [handle, values] of options.handles ?? []) {
|
|
501
425
|
if (leafRouteSegmentId === undefined) continue;
|
|
502
|
-
// createHandle always has a non-empty $$id (the Vite plugin injects one, and
|
|
503
|
-
// createHandle assigns a runtime fallback otherwise) with its REAL collect
|
|
504
|
-
// registered — so seeding under handle.$$id makes useHandle(handle) run the
|
|
505
|
-
// handle's actual collect/accumulator (custom collects included), not just a
|
|
506
|
-
// default flatten.
|
|
507
426
|
const id = (handle as unknown as { $$id: string }).$$id;
|
|
508
427
|
(handleSeed[id] ??= {})[leafRouteSegmentId] = values;
|
|
509
428
|
}
|
|
@@ -515,14 +434,6 @@ export async function renderRoute(
|
|
|
515
434
|
initialSegments.map((s) => s.id),
|
|
516
435
|
);
|
|
517
436
|
|
|
518
|
-
// Client-only navigation: re-resolve against the in-memory routes and emit a
|
|
519
|
-
// re-render. No server fetch — only routes passed to renderRoute exist. The
|
|
520
|
-
// store update is flushed inside act() so React commits before callers
|
|
521
|
-
// assert, mirroring how a real navigation lands a single payload swap.
|
|
522
|
-
// NOTE: the seeded `loaderData` is reused for the target route too (no
|
|
523
|
-
// per-route loader fetch in a unit test), so every seeded loader stays
|
|
524
|
-
// available after navigate() — unlike a real navigation, which would fetch
|
|
525
|
-
// the target route's own loaders. This is a deliberate test-isolation design.
|
|
526
437
|
const navigate = async (target: string): Promise<void> => {
|
|
527
438
|
const nextUrl = new URL(target, TEST_ORIGIN);
|
|
528
439
|
const match = resolve(nextUrl.pathname);
|
|
@@ -578,7 +489,6 @@ export async function renderRoute(
|
|
|
578
489
|
return Object.assign(result, { router });
|
|
579
490
|
}
|
|
580
491
|
|
|
581
|
-
/** Minimal RscMetadata for client-side re-renders (no server-only fields). */
|
|
582
492
|
function makeMetadata(
|
|
583
493
|
pathname: string,
|
|
584
494
|
segments: ResolvedSegment[],
|
|
@@ -177,10 +177,6 @@ export interface RunLoaderOptions<TEnv = any> {
|
|
|
177
177
|
handles?: ReadonlyArray<readonly [Handle<any, any>, unknown]>;
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
/**
|
|
181
|
-
* Merge `search` into a request's URL, returning a value `toRequest` can build.
|
|
182
|
-
* Keeps the original method/headers/body when a Request was passed.
|
|
183
|
-
*/
|
|
184
180
|
function withSearch(
|
|
185
181
|
request: Request | string | undefined,
|
|
186
182
|
search: Record<string, string> | undefined,
|
|
@@ -206,16 +202,6 @@ export type RunnableLoader<T> =
|
|
|
206
202
|
| ((ctx: TestLoaderContext) => Promise<T> | T)
|
|
207
203
|
| LoaderDefinition<T, any>;
|
|
208
204
|
|
|
209
|
-
/**
|
|
210
|
-
* Resolve the function to run from either a raw body or a `createLoader()` handle.
|
|
211
|
-
*
|
|
212
|
-
* A handle carries no inline body (`createLoader` registers it in the fetchable
|
|
213
|
-
* registry by `$$id`), so recover it from there — `def.fn` first (a hand-built
|
|
214
|
-
* def), then the registry. This works when the handle resolves through the
|
|
215
|
-
* SERVER build (the consumer's `@rangojs/router` under `rangoTestConfig`, which
|
|
216
|
-
* registers the fn); the CLIENT stub drops the body, so a handle imported that
|
|
217
|
-
* way is unrecoverable and we say so explicitly.
|
|
218
|
-
*/
|
|
219
205
|
function resolveLoaderFn<T>(
|
|
220
206
|
loader: RunnableLoader<T>,
|
|
221
207
|
): (ctx: TestLoaderContext) => Promise<T> | T {
|
|
@@ -237,31 +223,11 @@ function resolveLoaderFn<T>(
|
|
|
237
223
|
return fn as (ctx: TestLoaderContext) => Promise<T> | T;
|
|
238
224
|
}
|
|
239
225
|
|
|
240
|
-
/**
|
|
241
|
-
* Run a loader and return its resolved data. Pass the RAW loader body, or a
|
|
242
|
-
* registered `createLoader()` handle (its fn is recovered from the registry).
|
|
243
|
-
*
|
|
244
|
-
* @example
|
|
245
|
-
* ```ts
|
|
246
|
-
* // raw body
|
|
247
|
-
* const a = await runLoader(
|
|
248
|
-
* async (ctx) => ({ id: ctx.params.id, user: ctx.get("user") }),
|
|
249
|
-
* { params: { id: "42" }, vars: { user: { name: "Ada" } } },
|
|
250
|
-
* );
|
|
251
|
-
* // registered createLoader() handle (recovered from the registry)
|
|
252
|
-
* const b = await runLoader(ProductLoader, { params: { id: "42" } });
|
|
253
|
-
* ```
|
|
254
|
-
*/
|
|
255
|
-
// Build the createTestRequestContext options from runLoader's options. Shared by
|
|
256
|
-
// runLoader (returns the loader data) and runLoaderResult (also snapshots effects).
|
|
257
226
|
function buildLoaderCtxOpts(
|
|
258
227
|
opts: RunLoaderOptions,
|
|
259
228
|
): CreateTestContextOptions<any> {
|
|
260
229
|
return {
|
|
261
230
|
env: opts.env,
|
|
262
|
-
// Bake opts.search into the request URL itself so ctx.request.url, ctx.url,
|
|
263
|
-
// and ctx.searchParams all agree (production carries the query string on the
|
|
264
|
-
// real request — a loader reading ctx.request.url must see it too).
|
|
265
231
|
request: withSearch(opts.request, opts.search),
|
|
266
232
|
requestInit: opts.method ? { method: opts.method } : undefined,
|
|
267
233
|
vars: opts.vars,
|
|
@@ -276,33 +242,19 @@ function buildLoaderCtxOpts(
|
|
|
276
242
|
};
|
|
277
243
|
}
|
|
278
244
|
|
|
279
|
-
// Enter `reqCtx` and run `fn` with a seeded TestLoaderContext (the same ctx shape
|
|
280
|
-
// a real loader receives). The single place the loader context is built, so
|
|
281
|
-
// runLoader and runLoaderResult share identical loader-context semantics.
|
|
282
245
|
function runWithLoaderContext<R>(
|
|
283
246
|
reqCtx: RequestContext<any>,
|
|
284
247
|
opts: RunLoaderOptions,
|
|
285
248
|
fn: (ctx: TestLoaderContext) => R,
|
|
286
249
|
): R {
|
|
287
|
-
// Seed values for ctx.use(SomeHandle), matched by handle reference (so a real
|
|
288
|
-
// handle resolves regardless of its build-injected $$id).
|
|
289
250
|
const handleSeeds = new Map<unknown, unknown>(opts.handles ?? []);
|
|
290
|
-
|
|
291
|
-
// Seed values for ctx.use(OtherLoader), matched by loader reference (same model
|
|
292
|
-
// as renderHandler/renderRoute). Checked before the `use` resolver.
|
|
293
251
|
const loaderSeeds = new Map<unknown, unknown>(opts.loaders ?? []);
|
|
294
|
-
|
|
295
|
-
// Tracks whether the mocked render barrier has settled. ctx.use(handle)
|
|
296
|
-
// reads are gated on this, matching production (loader-resolution.ts).
|
|
297
252
|
let renderedResolved = false;
|
|
298
253
|
|
|
299
254
|
return runWithRequestContext(reqCtx, () => {
|
|
300
255
|
const reverse = opts.routeMap
|
|
301
256
|
? createReverseFunction(opts.routeMap, opts.routeName, opts.params ?? {})
|
|
302
257
|
: ((() => {
|
|
303
|
-
// Documented contract: reverse requires routeMap. Do NOT fall back to
|
|
304
|
-
// reqCtx.reverse (the global route map) — that leaks whichever routes
|
|
305
|
-
// another test registered and contradicts the documented behavior.
|
|
306
258
|
throw new Error(
|
|
307
259
|
"ctx.reverse() requires the `routeMap` option in runLoader(). " +
|
|
308
260
|
"Pass { routeMap: { name: pattern, ... } } to enable reverse().",
|
|
@@ -323,10 +275,6 @@ function runWithLoaderContext<R>(
|
|
|
323
275
|
executionContext: reqCtx.executionContext,
|
|
324
276
|
get: reqCtx.get as TestLoaderContext["get"],
|
|
325
277
|
use: ((dep: LoaderDefinition<any, any> | Handle<any, any>) => {
|
|
326
|
-
// Match production (loader-resolution.ts): reading a handle in a loader
|
|
327
|
-
// requires the render barrier to have settled. Gate BEFORE returning a
|
|
328
|
-
// seed, so a loader that forgets `await ctx.rendered()` fails in the
|
|
329
|
-
// test exactly as it would at runtime.
|
|
330
278
|
if (isHandle(dep) && !renderedResolved) {
|
|
331
279
|
throw new Error(
|
|
332
280
|
`ctx.use(handle) in a loader requires "await ctx.rendered()" first. ` +
|
|
@@ -334,16 +282,8 @@ function runWithLoaderContext<R>(
|
|
|
334
282
|
`the render tree has settled.`,
|
|
335
283
|
);
|
|
336
284
|
}
|
|
337
|
-
// Handle reads (ctx.use(SomeHandle)) resolve from the seeded map first.
|
|
338
285
|
if (handleSeeds.has(dep)) return handleSeeds.get(dep);
|
|
339
|
-
// Post-barrier, an UNSEEDED handle must match production
|
|
340
|
-
// (loader-resolution.ts -> collectHandleData), which runs the handle's
|
|
341
|
-
// registered collect over empty segments (collect([])) rather than
|
|
342
|
-
// throwing or leaking into the loader resolver. Resolve it via
|
|
343
|
-
// collectHandle, which recovers and runs that same collect.
|
|
344
286
|
if (isHandle(dep)) return collectHandle(dep, []);
|
|
345
|
-
// Loader reads (ctx.use(OtherLoader)) resolve from the seeded map next,
|
|
346
|
-
// then the dynamic `use` resolver, then the real request-context use().
|
|
347
287
|
if (loaderSeeds.has(dep)) return loaderSeeds.get(dep);
|
|
348
288
|
if (opts.use) return opts.use(dep as LoaderDefinition<any, any>);
|
|
349
289
|
return reqCtx.use(dep as LoaderDefinition<any, any>);
|
|
@@ -358,7 +298,6 @@ function runWithLoaderContext<R>(
|
|
|
358
298
|
if (typeof opts.rendered === "function") {
|
|
359
299
|
await opts.rendered();
|
|
360
300
|
}
|
|
361
|
-
// Barrier has settled: subsequent ctx.use(handle) reads resolve.
|
|
362
301
|
renderedResolved = true;
|
|
363
302
|
}
|
|
364
303
|
: () => {
|
|
@@ -377,13 +316,6 @@ function runWithLoaderContext<R>(
|
|
|
377
316
|
});
|
|
378
317
|
}
|
|
379
318
|
|
|
380
|
-
/**
|
|
381
|
-
* Run a loader and return its resolved data.
|
|
382
|
-
*
|
|
383
|
-
* Effects the loader sets (cookies, response headers, a thrown redirect) are NOT
|
|
384
|
-
* observable here — use {@link runLoaderResult} for an auth-style loader that
|
|
385
|
-
* sets a `Set-Cookie` and/or `throw redirect(...)`.
|
|
386
|
-
*/
|
|
387
319
|
export async function runLoader<T>(
|
|
388
320
|
loader: RunnableLoader<T>,
|
|
389
321
|
opts: RunLoaderOptions = {},
|
|
@@ -395,12 +327,6 @@ export async function runLoader<T>(
|
|
|
395
327
|
);
|
|
396
328
|
}
|
|
397
329
|
|
|
398
|
-
/**
|
|
399
|
-
* What a loader run accumulated: its data PLUS the response effects it produced,
|
|
400
|
-
* surfaced as PUBLIC values (parity with `runMiddleware`/`runInRequestContext`)
|
|
401
|
-
* so an effect-setting loader is assertable without casting through the
|
|
402
|
-
* `@internal` request context.
|
|
403
|
-
*/
|
|
404
330
|
export interface RunLoaderResult<T> {
|
|
405
331
|
/**
|
|
406
332
|
* The loader's resolved data (the value bare `runLoader` returns), or
|
|
@@ -430,25 +356,6 @@ export interface RunLoaderResult<T> {
|
|
|
430
356
|
stateCookieName: string;
|
|
431
357
|
}
|
|
432
358
|
|
|
433
|
-
/**
|
|
434
|
-
* Run a loader AND surface the response effects it produced. The richer sibling
|
|
435
|
-
* of {@link runLoader} (which returns the bare data): use this when the loader
|
|
436
|
-
* sets a cookie / response header / location-state, or `throw redirect(...)`, and
|
|
437
|
-
* the test must assert that output.
|
|
438
|
-
*
|
|
439
|
-
* @example
|
|
440
|
-
* ```ts
|
|
441
|
-
* // AuthLoader: validates, sets a `session` cookie, then `throw redirect("/")`.
|
|
442
|
-
* const { thrown, response, cookies } = await runLoaderResult(AuthLoader, {
|
|
443
|
-
* request: new Request("https://app.test/login?token=ok"),
|
|
444
|
-
* });
|
|
445
|
-
* expect((thrown as Response).headers.get("Location")).toBe("/");
|
|
446
|
-
* expect(cookies.session).toBeDefined();
|
|
447
|
-
* expect(
|
|
448
|
-
* response.headers.getSetCookie().some((c) => c.startsWith("session=")),
|
|
449
|
-
* ).toBe(true);
|
|
450
|
-
* ```
|
|
451
|
-
*/
|
|
452
359
|
export async function runLoaderResult<T>(
|
|
453
360
|
loader: RunnableLoader<T>,
|
|
454
361
|
opts: RunLoaderOptions = {},
|
|
@@ -465,9 +372,6 @@ export async function runLoaderResult<T>(
|
|
|
465
372
|
Promise.resolve(loaderFn(loaderCtx)),
|
|
466
373
|
);
|
|
467
374
|
} catch (error) {
|
|
468
|
-
// Capture (do NOT re-throw): a loader's success path is often
|
|
469
|
-
// `throw redirect(...)`, and the cookie/flash it set before the throw must
|
|
470
|
-
// stay observable (parity with runInRequestContext).
|
|
471
375
|
thrown = error;
|
|
472
376
|
}
|
|
473
377
|
return { result, ...buildRunSnapshot(reqCtx, thrown, stateCookieName) };
|
|
@@ -133,21 +133,6 @@ export interface RunMiddlewareResult<TEnv = any> {
|
|
|
133
133
|
stateCookieName: string;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
/**
|
|
137
|
-
* Run a middleware chain and return the response plus observable context.
|
|
138
|
-
*
|
|
139
|
-
* @example
|
|
140
|
-
* ```ts
|
|
141
|
-
* const { response, ctx, nextCalled } = await runMiddleware(
|
|
142
|
-
* async (ctx, next) => {
|
|
143
|
-
* if (!ctx.get("user")) return new Response(null, { status: 401 });
|
|
144
|
-
* return next();
|
|
145
|
-
* },
|
|
146
|
-
* { request: "/dashboard", vars: [["user", { id: 1 }]] },
|
|
147
|
-
* );
|
|
148
|
-
* // nextCalled === 1, response.status === 200
|
|
149
|
-
* ```
|
|
150
|
-
*/
|
|
151
136
|
export async function runMiddleware<TEnv = any>(
|
|
152
137
|
mw: MiddlewareFn<TEnv> | MiddlewareFn<TEnv>[],
|
|
153
138
|
opts: RunMiddlewareOptions<TEnv>,
|
|
@@ -181,11 +166,6 @@ export async function runMiddleware<TEnv = any>(
|
|
|
181
166
|
return opts.next?.() ?? new Response(null, { status: 200 });
|
|
182
167
|
};
|
|
183
168
|
|
|
184
|
-
// Match production: app/response middleware receive ctx.reverse built from the
|
|
185
|
-
// route map ALONE (no matched route name or current params), so reversing a
|
|
186
|
-
// parameterized route without explicit params does NOT auto-fill from the
|
|
187
|
-
// current request. Passing routeName/params here would recreate the
|
|
188
|
-
// false-confidence class fixed in dispatch.
|
|
189
169
|
const reverse = opts.routeMap
|
|
190
170
|
? (createReverseFunction(opts.routeMap) as (
|
|
191
171
|
name: string,
|
|
@@ -194,12 +174,6 @@ export async function runMiddleware<TEnv = any>(
|
|
|
194
174
|
) => string)
|
|
195
175
|
: undefined;
|
|
196
176
|
|
|
197
|
-
// Keep the RETURNED ctx.reverse consistent with the map-only reverse the
|
|
198
|
-
// chain receives. createTestRequestContext installs an auto-fill reverse
|
|
199
|
-
// (correct for the loader phase) when routeName/params are passed, but
|
|
200
|
-
// production app/response middleware see a map-only reverse. Without this,
|
|
201
|
-
// a middleware reading getRequestContext().reverse — or a consumer asserting
|
|
202
|
-
// on result.ctx.reverse — would observe auto-fill that production never does.
|
|
203
177
|
if (reverse) {
|
|
204
178
|
(ctx as RequestContext<TEnv>).reverse =
|
|
205
179
|
reverse as RequestContext<TEnv>["reverse"];
|
|
@@ -28,9 +28,6 @@ import type {
|
|
|
28
28
|
} from "./types.js";
|
|
29
29
|
import { THEME_COOKIE } from "./constants.js";
|
|
30
30
|
|
|
31
|
-
/**
|
|
32
|
-
* Get system preference for color scheme
|
|
33
|
-
*/
|
|
34
31
|
function getSystemTheme(): ResolvedTheme {
|
|
35
32
|
if (typeof window !== "undefined" && window.matchMedia) {
|
|
36
33
|
return window.matchMedia("(prefers-color-scheme: dark)").matches
|
|
@@ -40,9 +37,6 @@ function getSystemTheme(): ResolvedTheme {
|
|
|
40
37
|
return "light";
|
|
41
38
|
}
|
|
42
39
|
|
|
43
|
-
/**
|
|
44
|
-
* Read theme from cookie
|
|
45
|
-
*/
|
|
46
40
|
function readThemeFromCookie(storageKey: string): string | null {
|
|
47
41
|
if (typeof document === "undefined") return null;
|
|
48
42
|
|
|
@@ -61,9 +55,6 @@ function readThemeFromCookie(storageKey: string): string | null {
|
|
|
61
55
|
return null;
|
|
62
56
|
}
|
|
63
57
|
|
|
64
|
-
/**
|
|
65
|
-
* Read theme from localStorage
|
|
66
|
-
*/
|
|
67
58
|
function readThemeFromStorage(storageKey: string): string | null {
|
|
68
59
|
if (typeof localStorage === "undefined") return null;
|
|
69
60
|
|
|
@@ -74,9 +65,6 @@ function readThemeFromStorage(storageKey: string): string | null {
|
|
|
74
65
|
}
|
|
75
66
|
}
|
|
76
67
|
|
|
77
|
-
/**
|
|
78
|
-
* Write theme to cookie
|
|
79
|
-
*/
|
|
80
68
|
function writeThemeToCookie(storageKey: string, theme: Theme): void {
|
|
81
69
|
if (typeof document === "undefined") return;
|
|
82
70
|
|
|
@@ -85,9 +73,6 @@ function writeThemeToCookie(storageKey: string, theme: Theme): void {
|
|
|
85
73
|
document.cookie = cookie;
|
|
86
74
|
}
|
|
87
75
|
|
|
88
|
-
/**
|
|
89
|
-
* Write theme to localStorage
|
|
90
|
-
*/
|
|
91
76
|
function writeThemeToStorage(storageKey: string, theme: Theme): void {
|
|
92
77
|
if (typeof localStorage === "undefined") return;
|
|
93
78
|
|
|
@@ -98,9 +83,6 @@ function writeThemeToStorage(storageKey: string, theme: Theme): void {
|
|
|
98
83
|
}
|
|
99
84
|
}
|
|
100
85
|
|
|
101
|
-
/**
|
|
102
|
-
* Apply theme to HTML element
|
|
103
|
-
*/
|
|
104
86
|
function applyThemeToDocument(theme: Theme, config: ResolvedThemeConfig): void {
|
|
105
87
|
if (typeof document === "undefined") return;
|
|
106
88
|
|
|
@@ -112,40 +94,30 @@ function applyThemeToDocument(theme: Theme, config: ResolvedThemeConfig): void {
|
|
|
112
94
|
const value = config.value[resolved] || resolved;
|
|
113
95
|
const el = document.documentElement;
|
|
114
96
|
|
|
115
|
-
// Apply attribute
|
|
116
97
|
if (config.attribute === "class") {
|
|
117
|
-
// Remove all theme classes
|
|
118
98
|
for (const t of config.themes) {
|
|
119
99
|
const v = config.value[t] || t;
|
|
120
100
|
el.classList.remove(v);
|
|
121
101
|
}
|
|
122
|
-
// Add current theme class
|
|
123
102
|
el.classList.add(value);
|
|
124
103
|
} else {
|
|
125
104
|
el.setAttribute(config.attribute, value);
|
|
126
105
|
}
|
|
127
106
|
|
|
128
|
-
// Set color-scheme for native dark mode support
|
|
129
107
|
if (config.enableColorScheme) {
|
|
130
108
|
el.style.colorScheme = resolved;
|
|
131
109
|
}
|
|
132
110
|
}
|
|
133
111
|
|
|
134
|
-
/**
|
|
135
|
-
* Get the resolved stored theme (validated against available themes)
|
|
136
|
-
*/
|
|
137
112
|
function getStoredTheme(config: ResolvedThemeConfig): Theme {
|
|
138
113
|
const { storageKey, themes, defaultTheme, enableSystem } = config;
|
|
139
114
|
|
|
140
|
-
// Try cookie first (for SSR consistency)
|
|
141
115
|
let stored = readThemeFromCookie(storageKey);
|
|
142
116
|
|
|
143
|
-
// Fall back to localStorage
|
|
144
117
|
if (!stored) {
|
|
145
118
|
stored = readThemeFromStorage(storageKey);
|
|
146
119
|
}
|
|
147
120
|
|
|
148
|
-
// Validate stored value
|
|
149
121
|
if (stored) {
|
|
150
122
|
if (stored === "system" && enableSystem) {
|
|
151
123
|
return "system";
|
|
@@ -158,38 +130,26 @@ function getStoredTheme(config: ResolvedThemeConfig): Theme {
|
|
|
158
130
|
return defaultTheme;
|
|
159
131
|
}
|
|
160
132
|
|
|
161
|
-
/**
|
|
162
|
-
* ThemeProvider component
|
|
163
|
-
*
|
|
164
|
-
* Provides theme state to the component tree via context.
|
|
165
|
-
* Handles theme persistence, system preference detection, and cross-tab sync.
|
|
166
|
-
*/
|
|
167
133
|
export function ThemeProvider({
|
|
168
134
|
config,
|
|
169
135
|
initialTheme,
|
|
170
136
|
children,
|
|
171
137
|
}: ThemeProviderProps): React.ReactNode {
|
|
172
|
-
// Track mount state to avoid hydration mismatches
|
|
173
|
-
// During SSR and initial hydration, mounted is false
|
|
174
138
|
const [mounted, setMounted] = useState(false);
|
|
175
139
|
|
|
176
|
-
// Initialize theme from prop, storage, or default
|
|
177
140
|
const [theme, setThemeState] = useState<Theme>(() => {
|
|
178
141
|
if (initialTheme) return initialTheme;
|
|
179
142
|
if (typeof window === "undefined") return config.defaultTheme;
|
|
180
143
|
return getStoredTheme(config);
|
|
181
144
|
});
|
|
182
145
|
|
|
183
|
-
// Track system preference - use stable default during SSR
|
|
184
146
|
const [systemTheme, setSystemTheme] = useState<ResolvedTheme>("light");
|
|
185
147
|
|
|
186
|
-
// Set mounted after hydration and detect actual system theme
|
|
187
148
|
useEffect(() => {
|
|
188
149
|
setMounted(true);
|
|
189
150
|
setSystemTheme(getSystemTheme());
|
|
190
151
|
}, []);
|
|
191
152
|
|
|
192
|
-
// Set theme and persist to storage
|
|
193
153
|
const setTheme = useCallback(
|
|
194
154
|
(newTheme: Theme) => {
|
|
195
155
|
setThemeState(newTheme);
|
|
@@ -200,7 +160,6 @@ export function ThemeProvider({
|
|
|
200
160
|
[config],
|
|
201
161
|
);
|
|
202
162
|
|
|
203
|
-
// Listen for system preference changes
|
|
204
163
|
useEffect(() => {
|
|
205
164
|
if (!config.enableSystem) return;
|
|
206
165
|
if (typeof window === "undefined" || !window.matchMedia) return;
|
|
@@ -211,13 +170,11 @@ export function ThemeProvider({
|
|
|
211
170
|
const newSystemTheme = e.matches ? "dark" : "light";
|
|
212
171
|
setSystemTheme(newSystemTheme);
|
|
213
172
|
|
|
214
|
-
// If current theme is "system", re-apply to update document
|
|
215
173
|
if (theme === "system") {
|
|
216
174
|
applyThemeToDocument("system", config);
|
|
217
175
|
}
|
|
218
176
|
};
|
|
219
177
|
|
|
220
|
-
// Modern browsers
|
|
221
178
|
mediaQuery.addEventListener("change", handleChange);
|
|
222
179
|
|
|
223
180
|
return () => {
|
|
@@ -225,7 +182,6 @@ export function ThemeProvider({
|
|
|
225
182
|
};
|
|
226
183
|
}, [config, theme]);
|
|
227
184
|
|
|
228
|
-
// Cross-tab synchronization via localStorage storage event
|
|
229
185
|
useEffect(() => {
|
|
230
186
|
if (typeof window === "undefined") return;
|
|
231
187
|
|
|
@@ -249,12 +205,8 @@ export function ThemeProvider({
|
|
|
249
205
|
};
|
|
250
206
|
}, [config]);
|
|
251
207
|
|
|
252
|
-
// Compute resolved theme
|
|
253
|
-
// During SSR (not mounted), use the initial theme or default to avoid hydration mismatch
|
|
254
208
|
const resolvedTheme: ResolvedTheme = useMemo(() => {
|
|
255
209
|
if (!mounted) {
|
|
256
|
-
// During SSR, return the initial theme if it's not "system", otherwise "light"
|
|
257
|
-
// The inline script will apply the correct class before hydration
|
|
258
210
|
if (initialTheme && initialTheme !== "system") {
|
|
259
211
|
return initialTheme as ResolvedTheme;
|
|
260
212
|
}
|
|
@@ -266,7 +218,6 @@ export function ThemeProvider({
|
|
|
266
218
|
return theme as ResolvedTheme;
|
|
267
219
|
}, [theme, systemTheme, config.enableSystem, mounted, initialTheme]);
|
|
268
220
|
|
|
269
|
-
// Build themes list (include "system" if enabled)
|
|
270
221
|
const themes = useMemo(() => {
|
|
271
222
|
if (config.enableSystem) {
|
|
272
223
|
return ["system", ...config.themes.filter((t) => t !== "system")];
|
|
@@ -274,14 +225,11 @@ export function ThemeProvider({
|
|
|
274
225
|
return config.themes;
|
|
275
226
|
}, [config.themes, config.enableSystem]);
|
|
276
227
|
|
|
277
|
-
// Context value
|
|
278
|
-
// During SSR (not mounted), return stable values to avoid hydration mismatch
|
|
279
228
|
const contextValue: ThemeContextValue = useMemo(
|
|
280
229
|
() => ({
|
|
281
230
|
theme,
|
|
282
231
|
setTheme,
|
|
283
232
|
resolvedTheme,
|
|
284
|
-
// Return stable "light" for systemTheme during SSR - actual value updates after mount
|
|
285
233
|
systemTheme: mounted ? systemTheme : "light",
|
|
286
234
|
themes,
|
|
287
235
|
config,
|
|
@@ -43,12 +43,6 @@ export interface ThemeScriptProps {
|
|
|
43
43
|
nonce?: string;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
/**
|
|
47
|
-
* Server component that renders the theme initialization script.
|
|
48
|
-
*
|
|
49
|
-
* This renders a synchronous inline script that applies the theme
|
|
50
|
-
* to the HTML element before React hydration, preventing FOUC.
|
|
51
|
-
*/
|
|
52
46
|
export function ThemeScript({
|
|
53
47
|
config,
|
|
54
48
|
nonce,
|