@rangojs/router 0.0.0-experimental.120 → 0.0.0-experimental.122
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/vite/index.js +1 -1
- package/package.json +1 -1
- package/skills/cache-guide/SKILL.md +8 -6
- package/skills/caching/SKILL.md +146 -0
- package/skills/migrate-nextjs/SKILL.md +35 -15
- package/skills/rango/SKILL.md +15 -15
- package/skills/use-cache/SKILL.md +9 -7
- package/src/cache/cache-error.ts +104 -0
- package/src/cache/cache-policy.ts +95 -1
- package/src/cache/cache-runtime.ts +79 -13
- package/src/cache/cache-scope.ts +55 -4
- package/src/cache/cache-tag.ts +135 -0
- package/src/cache/cf/cf-cache-store.ts +2073 -218
- package/src/cache/cf/index.ts +15 -1
- package/src/cache/document-cache.ts +63 -7
- package/src/cache/index.ts +17 -0
- package/src/cache/memory-segment-store.ts +158 -14
- package/src/cache/tag-invalidation.ts +230 -0
- package/src/cache/types.ts +27 -0
- package/src/index.rsc.ts +7 -0
- package/src/index.ts +12 -0
- package/src/router/prerender-match.ts +2 -0
- package/src/router/segment-resolution/loader-cache.ts +8 -17
- package/src/rsc/handler.ts +10 -1
- package/src/rsc/response-route-handler.ts +8 -1
- package/src/server/request-context.ts +36 -2
- package/src/types/cache-types.ts +13 -4
- package/src/types/error-types.ts +5 -1
- 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/testing/vitest.js +0 -82
- 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/cache/cf/index.ts
CHANGED
|
@@ -13,13 +13,27 @@
|
|
|
13
13
|
export {
|
|
14
14
|
CFCacheStore,
|
|
15
15
|
type CFCacheStoreOptions,
|
|
16
|
+
type CFCacheDebug,
|
|
17
|
+
type CFCacheReadDebugEvent,
|
|
16
18
|
type KVNamespace,
|
|
17
19
|
} from "./cf-cache-store.js";
|
|
18
20
|
|
|
19
|
-
// Header constants for debugging and inspection
|
|
21
|
+
// Header constants for debugging and inspection. The tag headers
|
|
22
|
+
// (x-edge-cache-tags / x-edge-cache-tagged-at) are intentionally NOT re-exported:
|
|
23
|
+
// they are an internal encoding detail of the store's tag-invalidation check, not
|
|
24
|
+
// a consumer-inspectable contract.
|
|
20
25
|
export {
|
|
21
26
|
CACHE_STALE_AT_HEADER,
|
|
22
27
|
CACHE_STATUS_HEADER,
|
|
28
|
+
CACHE_REVALIDATING_AT_HEADER,
|
|
29
|
+
} from "./cf-cache-store.js";
|
|
30
|
+
|
|
31
|
+
// Default latency-budget values, exported so the CFCacheStoreOptions JSDoc
|
|
32
|
+
// {@link}s resolve and consumers can derive margins from the defaults.
|
|
33
|
+
export {
|
|
34
|
+
EDGE_LOOKUP_TIMEOUT_MS,
|
|
35
|
+
EDGE_READ_TIMEOUT_MS,
|
|
36
|
+
KV_READ_TIMEOUT_MS,
|
|
23
37
|
} from "./cf-cache-store.js";
|
|
24
38
|
|
|
25
39
|
// Internal exports (re-exported for backwards compatibility, marked @internal in source)
|
|
@@ -12,10 +12,14 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import type { MiddlewareFn, MiddlewareContext } from "../router/middleware.js";
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
getRequestContext,
|
|
17
|
+
type RequestContext,
|
|
18
|
+
} from "../server/request-context.js";
|
|
16
19
|
import { mayNeedSSR } from "../rsc/ssr-setup.js";
|
|
17
20
|
import { sortedSearchString } from "./cache-key-utils.js";
|
|
18
21
|
import { runBackground } from "./background-task.js";
|
|
22
|
+
import { reportCacheError } from "./cache-error.js";
|
|
19
23
|
|
|
20
24
|
// ============================================================================
|
|
21
25
|
// Constants
|
|
@@ -24,6 +28,36 @@ import { runBackground } from "./background-task.js";
|
|
|
24
28
|
/** Header indicating cache status for debugging */
|
|
25
29
|
const CACHE_STATUS_HEADER = "x-document-cache-status";
|
|
26
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Snapshot the request-scoped tag union for a document cache write. The full-page
|
|
33
|
+
* entry is tagged with every cache tag its content resolved (runtime cacheTag(),
|
|
34
|
+
* "use cache" profile tags, and loader cache tags) so updateTag()/revalidateTag()
|
|
35
|
+
* can invalidate it. Returns undefined when no tags were used, keeping untagged
|
|
36
|
+
* document entries header-free.
|
|
37
|
+
*
|
|
38
|
+
* This is a plain synchronous snapshot. The CALLER must drain the rendered body
|
|
39
|
+
* first (see the cache-write closures): runtime cacheTag()/"use cache" and loader
|
|
40
|
+
* tags are recorded synchronously as each value resolves during render, including
|
|
41
|
+
* Suspense-streamed ones that resolve AFTER the handler-settlement barrier - so
|
|
42
|
+
* the correct barrier is the stream draining (render complete), not _handleStore.
|
|
43
|
+
*
|
|
44
|
+
* Caveat: this applies only to the segment cache WRITE path. When a segment is
|
|
45
|
+
* cached for the first time, its cache({ tags }) DSL tags are recorded inside the
|
|
46
|
+
* deferred cacheRoute waitUntil, which can still run after this snapshot; a
|
|
47
|
+
* document that combines whole-page document caching with first-write segment-DSL
|
|
48
|
+
* tags may miss those (the segment cache entry itself is still correctly tagged
|
|
49
|
+
* and invalidated). On a segment-cache HIT the entry's tags are recorded
|
|
50
|
+
* synchronously during lookupRoute, before this snapshot, so they are captured.
|
|
51
|
+
* Runtime cacheTag()/"use cache" and loader tags are always captured once the
|
|
52
|
+
* body drains.
|
|
53
|
+
*/
|
|
54
|
+
function collectRequestTags(
|
|
55
|
+
requestCtx: RequestContext | undefined,
|
|
56
|
+
): string[] | undefined {
|
|
57
|
+
const tags = requestCtx?._requestTags;
|
|
58
|
+
return tags && tags.size > 0 ? [...tags] : undefined;
|
|
59
|
+
}
|
|
60
|
+
|
|
27
61
|
/**
|
|
28
62
|
* Simple hash function for segment IDs.
|
|
29
63
|
* Creates a short, deterministic hash to differentiate cache keys
|
|
@@ -303,17 +337,26 @@ export function createDocumentCacheMiddleware<TEnv = any>(
|
|
|
303
337
|
const fresh = await next();
|
|
304
338
|
const directives = shouldCacheResponse(fresh);
|
|
305
339
|
|
|
306
|
-
if (directives) {
|
|
340
|
+
if (directives && fresh.body) {
|
|
341
|
+
// Background revalidation: nothing streams to a client, so drain
|
|
342
|
+
// the fresh render fully before snapshotting tags (same
|
|
343
|
+
// render-complete barrier as the miss path).
|
|
344
|
+
const body = await new Response(fresh.body).arrayBuffer();
|
|
307
345
|
await store.putResponse!(
|
|
308
346
|
cacheKey,
|
|
309
|
-
fresh,
|
|
347
|
+
new Response(body, fresh),
|
|
310
348
|
directives.sMaxAge!,
|
|
311
349
|
directives.staleWhileRevalidate,
|
|
350
|
+
collectRequestTags(requestCtx),
|
|
312
351
|
);
|
|
313
352
|
log(`[DocumentCache] REVALIDATED ${typeLabel}: ${url.pathname}`);
|
|
314
353
|
}
|
|
315
354
|
} catch (error) {
|
|
316
|
-
|
|
355
|
+
reportCacheError(
|
|
356
|
+
error,
|
|
357
|
+
"cache-write",
|
|
358
|
+
"[DocumentCache] revalidation",
|
|
359
|
+
);
|
|
317
360
|
}
|
|
318
361
|
});
|
|
319
362
|
|
|
@@ -346,14 +389,27 @@ export function createDocumentCacheMiddleware<TEnv = any>(
|
|
|
346
389
|
// Clone response for caching (non-blocking)
|
|
347
390
|
runBackground(requestCtx, async () => {
|
|
348
391
|
try {
|
|
392
|
+
// Drain the cache copy fully BEFORE snapshotting tags. Tags from
|
|
393
|
+
// Suspense-streamed "use cache"/cacheTag and loaders are recorded as
|
|
394
|
+
// each value resolves during the RSC/HTML render, which completes
|
|
395
|
+
// only when the stream ends - the handler-settlement barrier is too
|
|
396
|
+
// early. Buffering the body (the client streams the other tee branch,
|
|
397
|
+
// unaffected) is the render-complete barrier that keeps the cached
|
|
398
|
+
// body and its tag set consistent.
|
|
399
|
+
const body = await new Response(cacheStream).arrayBuffer();
|
|
349
400
|
await store.putResponse!(
|
|
350
401
|
cacheKey,
|
|
351
|
-
new Response(
|
|
402
|
+
new Response(body, originalResponse),
|
|
352
403
|
directives.sMaxAge!,
|
|
353
404
|
directives.staleWhileRevalidate,
|
|
405
|
+
collectRequestTags(requestCtx),
|
|
354
406
|
);
|
|
355
407
|
} catch (error) {
|
|
356
|
-
|
|
408
|
+
reportCacheError(
|
|
409
|
+
error,
|
|
410
|
+
"cache-write",
|
|
411
|
+
"[DocumentCache] cache write",
|
|
412
|
+
);
|
|
357
413
|
}
|
|
358
414
|
});
|
|
359
415
|
|
|
@@ -366,7 +422,7 @@ export function createDocumentCacheMiddleware<TEnv = any>(
|
|
|
366
422
|
// No cache headers - pass through
|
|
367
423
|
return originalResponse;
|
|
368
424
|
} catch (error) {
|
|
369
|
-
|
|
425
|
+
reportCacheError(error, "cache-read", "[DocumentCache] middleware");
|
|
370
426
|
if (handlerCalled) {
|
|
371
427
|
// Post-handler failure (e.g. body.tee()): do not call next() again
|
|
372
428
|
// as that would re-run handler side effects.
|
package/src/cache/index.ts
CHANGED
|
@@ -17,6 +17,11 @@ export type {
|
|
|
17
17
|
CachedEntryData,
|
|
18
18
|
CachedEntryResult,
|
|
19
19
|
CacheGetResult,
|
|
20
|
+
// The getItem()/setItem() signature types on SegmentCacheStore. Exported
|
|
21
|
+
// alongside CacheGetResult so a consumer implementing a custom store can name
|
|
22
|
+
// every type its interface methods use, not just the segment-read result.
|
|
23
|
+
CacheItemResult,
|
|
24
|
+
CacheItemOptions,
|
|
20
25
|
SerializedSegmentData,
|
|
21
26
|
SegmentHandleData,
|
|
22
27
|
CacheConfig,
|
|
@@ -29,9 +34,15 @@ export { MemorySegmentCacheStore } from "./memory-segment-store.js";
|
|
|
29
34
|
export {
|
|
30
35
|
CFCacheStore,
|
|
31
36
|
type CFCacheStoreOptions,
|
|
37
|
+
type CFCacheDebug,
|
|
38
|
+
type CFCacheReadDebugEvent,
|
|
32
39
|
type KVNamespace,
|
|
33
40
|
CACHE_STALE_AT_HEADER,
|
|
34
41
|
CACHE_STATUS_HEADER,
|
|
42
|
+
CACHE_REVALIDATING_AT_HEADER,
|
|
43
|
+
EDGE_LOOKUP_TIMEOUT_MS,
|
|
44
|
+
EDGE_READ_TIMEOUT_MS,
|
|
45
|
+
KV_READ_TIMEOUT_MS,
|
|
35
46
|
} from "./cf/index.js";
|
|
36
47
|
|
|
37
48
|
// Cache scope
|
|
@@ -42,3 +53,9 @@ export {
|
|
|
42
53
|
createDocumentCacheMiddleware,
|
|
43
54
|
type DocumentCacheOptions,
|
|
44
55
|
} from "./document-cache.js";
|
|
56
|
+
|
|
57
|
+
// Cache error reporting. CacheErrorCategory is the discriminator surfaced to a
|
|
58
|
+
// router's onError callback as `metadata.category` for the `cache` phase, so
|
|
59
|
+
// consumers can branch on the failure kind (e.g. distinguish a transient
|
|
60
|
+
// cache-read outage from cache-corrupt self-heal).
|
|
61
|
+
export type { CacheErrorCategory } from "./cache-error.js";
|
|
@@ -20,10 +20,13 @@ import {
|
|
|
20
20
|
computeExpiration,
|
|
21
21
|
DEFAULT_FUNCTION_TTL,
|
|
22
22
|
} from "./cache-policy.js";
|
|
23
|
+
import { reportCacheError } from "./cache-error.js";
|
|
23
24
|
|
|
24
25
|
const CACHE_REGISTRY_KEY = "__rsc_router_segment_cache_registry__";
|
|
25
26
|
const RESPONSE_CACHE_REGISTRY_KEY = "__rsc_router_response_cache_registry__";
|
|
26
27
|
const ITEM_CACHE_REGISTRY_KEY = "__rsc_router_item_cache_registry__";
|
|
28
|
+
const TAG_INDEX_REGISTRY_KEY = "__rsc_router_tag_index_registry__";
|
|
29
|
+
const KEY_TAGS_REGISTRY_KEY = "__rsc_router_key_tags_registry__";
|
|
27
30
|
|
|
28
31
|
/**
|
|
29
32
|
* Get or create a named Map from a globalThis-backed registry.
|
|
@@ -60,6 +63,7 @@ interface CachedItemEntry {
|
|
|
60
63
|
handles?: string;
|
|
61
64
|
expiresAt: number;
|
|
62
65
|
staleAt: number;
|
|
66
|
+
tags?: string[];
|
|
63
67
|
}
|
|
64
68
|
|
|
65
69
|
/**
|
|
@@ -74,6 +78,11 @@ export interface MemorySegmentCacheStoreOptions<TEnv = unknown> {
|
|
|
74
78
|
* When omitted, the store uses a plain instance-level Map with no
|
|
75
79
|
* globalThis sharing, which is the safest default for isolation.
|
|
76
80
|
*
|
|
81
|
+
* Caveat: two instances constructed with the SAME name share all backing maps
|
|
82
|
+
* (data + tag index), but each keeps its OWN `defaults` and `keyGenerator` from
|
|
83
|
+
* its options - those are not shared. Use one instance per name, or keep the
|
|
84
|
+
* options identical, to avoid surprising divergence.
|
|
85
|
+
*
|
|
77
86
|
* @example
|
|
78
87
|
* ```typescript
|
|
79
88
|
* // Two named stores are isolated from each other
|
|
@@ -122,6 +131,11 @@ export interface MemorySegmentCacheStoreOptions<TEnv = unknown> {
|
|
|
122
131
|
* For production with multiple instances, use a distributed store
|
|
123
132
|
* like Cloudflare KV or Redis.
|
|
124
133
|
*
|
|
134
|
+
* Tag-index cleanup is lazy, mirroring the data maps: a tagged entry that
|
|
135
|
+
* expires but is never re-read or invalidated leaves its forward+reverse index
|
|
136
|
+
* entries resident until the key is reused or invalidated. This is bounded by
|
|
137
|
+
* the distinct-tag count and acceptable for a dev/single-instance store.
|
|
138
|
+
*
|
|
125
139
|
* @example
|
|
126
140
|
* ```typescript
|
|
127
141
|
* // Basic usage
|
|
@@ -144,6 +158,10 @@ export class MemorySegmentCacheStore<
|
|
|
144
158
|
private cache: Map<string, CachedEntryData>;
|
|
145
159
|
private responseCache: Map<string, CachedResponseEntry>;
|
|
146
160
|
private itemCache: Map<string, CachedItemEntry>;
|
|
161
|
+
/** tag -> set of prefixed cache keys (seg:key, res:key, item:key) */
|
|
162
|
+
private tagIndex: Map<string, Set<string>>;
|
|
163
|
+
/** prefixed cache key -> set of tags (reverse index for O(tags) unregister) */
|
|
164
|
+
private keyTags: Map<string, Set<string>>;
|
|
147
165
|
readonly defaults?: CacheDefaults;
|
|
148
166
|
readonly keyGenerator?: (
|
|
149
167
|
ctx: RequestContext<TEnv>,
|
|
@@ -166,11 +184,21 @@ export class MemorySegmentCacheStore<
|
|
|
166
184
|
ITEM_CACHE_REGISTRY_KEY,
|
|
167
185
|
options.name,
|
|
168
186
|
);
|
|
187
|
+
this.tagIndex = getNamedMap<Set<string>>(
|
|
188
|
+
TAG_INDEX_REGISTRY_KEY,
|
|
189
|
+
options.name,
|
|
190
|
+
);
|
|
191
|
+
this.keyTags = getNamedMap<Set<string>>(
|
|
192
|
+
KEY_TAGS_REGISTRY_KEY,
|
|
193
|
+
options.name,
|
|
194
|
+
);
|
|
169
195
|
} else {
|
|
170
196
|
// Unnamed stores get a plain instance-level Map (no globalThis sharing).
|
|
171
197
|
this.cache = new Map<string, CachedEntryData>();
|
|
172
198
|
this.responseCache = new Map<string, CachedResponseEntry>();
|
|
173
199
|
this.itemCache = new Map<string, CachedItemEntry>();
|
|
200
|
+
this.tagIndex = new Map<string, Set<string>>();
|
|
201
|
+
this.keyTags = new Map<string, Set<string>>();
|
|
174
202
|
}
|
|
175
203
|
this.defaults = options?.defaults;
|
|
176
204
|
this.keyGenerator = options?.keyGenerator;
|
|
@@ -185,6 +213,7 @@ export class MemorySegmentCacheStore<
|
|
|
185
213
|
|
|
186
214
|
// Check expiration
|
|
187
215
|
if (Date.now() > cached.expiresAt) {
|
|
216
|
+
this.unregisterTags(`seg:${key}`);
|
|
188
217
|
this.cache.delete(key);
|
|
189
218
|
return null;
|
|
190
219
|
}
|
|
@@ -205,10 +234,18 @@ export class MemorySegmentCacheStore<
|
|
|
205
234
|
...data,
|
|
206
235
|
expiresAt: Date.now() + ttl * 1000,
|
|
207
236
|
};
|
|
237
|
+
const prefixedKey = `seg:${key}`;
|
|
238
|
+
// Always drop stale tag mappings before writing so an overwrite with
|
|
239
|
+
// different (or no) tags cannot leave the previous tags pointing here.
|
|
240
|
+
this.unregisterTags(prefixedKey);
|
|
208
241
|
this.cache.set(key, entry);
|
|
242
|
+
if (data.tags && data.tags.length > 0) {
|
|
243
|
+
this.registerTags(data.tags, prefixedKey);
|
|
244
|
+
}
|
|
209
245
|
}
|
|
210
246
|
|
|
211
247
|
async delete(key: string): Promise<boolean> {
|
|
248
|
+
this.unregisterTags(`seg:${key}`);
|
|
212
249
|
return this.cache.delete(key);
|
|
213
250
|
}
|
|
214
251
|
|
|
@@ -216,6 +253,8 @@ export class MemorySegmentCacheStore<
|
|
|
216
253
|
this.cache.clear();
|
|
217
254
|
this.responseCache.clear();
|
|
218
255
|
this.itemCache.clear();
|
|
256
|
+
this.tagIndex.clear();
|
|
257
|
+
this.keyTags.clear();
|
|
219
258
|
}
|
|
220
259
|
|
|
221
260
|
async getResponse(
|
|
@@ -225,6 +264,7 @@ export class MemorySegmentCacheStore<
|
|
|
225
264
|
if (!cached) return null;
|
|
226
265
|
|
|
227
266
|
if (Date.now() > cached.expiresAt) {
|
|
267
|
+
this.unregisterTags(`res:${key}`);
|
|
228
268
|
this.responseCache.delete(key);
|
|
229
269
|
return null;
|
|
230
270
|
}
|
|
@@ -245,23 +285,40 @@ export class MemorySegmentCacheStore<
|
|
|
245
285
|
response: Response,
|
|
246
286
|
ttl: number,
|
|
247
287
|
swr?: number,
|
|
288
|
+
tags?: string[],
|
|
248
289
|
): Promise<void> {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
290
|
+
try {
|
|
291
|
+
// arrayBuffer() can reject (e.g. an already-consumed body). A write
|
|
292
|
+
// failure must degrade to a no-op (entry simply not cached), never throw
|
|
293
|
+
// up and fail the request.
|
|
294
|
+
const body = await response.clone().arrayBuffer();
|
|
295
|
+
const headers: [string, string][] = [];
|
|
296
|
+
response.headers.forEach((value, name) => {
|
|
297
|
+
headers.push([name, value]);
|
|
298
|
+
});
|
|
254
299
|
|
|
255
|
-
|
|
256
|
-
|
|
300
|
+
const swrWindow = resolveSwrWindow(swr, this.defaults);
|
|
301
|
+
const { staleAt, expiresAt } = computeExpiration(ttl, swrWindow);
|
|
257
302
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
303
|
+
const prefixedKey = `res:${key}`;
|
|
304
|
+
this.unregisterTags(prefixedKey);
|
|
305
|
+
this.responseCache.set(key, {
|
|
306
|
+
body,
|
|
307
|
+
status: response.status,
|
|
308
|
+
headers,
|
|
309
|
+
expiresAt,
|
|
310
|
+
staleAt,
|
|
311
|
+
});
|
|
312
|
+
if (tags && tags.length > 0) {
|
|
313
|
+
this.registerTags(tags, prefixedKey);
|
|
314
|
+
}
|
|
315
|
+
} catch (error) {
|
|
316
|
+
reportCacheError(
|
|
317
|
+
error,
|
|
318
|
+
"cache-write",
|
|
319
|
+
"[MemorySegmentCacheStore] putResponse",
|
|
320
|
+
);
|
|
321
|
+
}
|
|
265
322
|
}
|
|
266
323
|
|
|
267
324
|
async getItem(key: string): Promise<CacheItemResult | null> {
|
|
@@ -270,6 +327,7 @@ export class MemorySegmentCacheStore<
|
|
|
270
327
|
|
|
271
328
|
const now = Date.now();
|
|
272
329
|
if (now > cached.expiresAt) {
|
|
330
|
+
this.unregisterTags(`item:${key}`);
|
|
273
331
|
this.itemCache.delete(key);
|
|
274
332
|
return null;
|
|
275
333
|
}
|
|
@@ -279,6 +337,7 @@ export class MemorySegmentCacheStore<
|
|
|
279
337
|
value: cached.value,
|
|
280
338
|
handles: cached.handles,
|
|
281
339
|
shouldRevalidate: isStale,
|
|
340
|
+
tags: cached.tags,
|
|
282
341
|
};
|
|
283
342
|
}
|
|
284
343
|
|
|
@@ -290,12 +349,95 @@ export class MemorySegmentCacheStore<
|
|
|
290
349
|
const ttl = resolveTtl(options?.ttl, this.defaults, DEFAULT_FUNCTION_TTL);
|
|
291
350
|
const swrWindow = resolveSwrWindow(options?.swr, this.defaults);
|
|
292
351
|
const { staleAt, expiresAt } = computeExpiration(ttl, swrWindow);
|
|
352
|
+
const prefixedKey = `item:${key}`;
|
|
353
|
+
this.unregisterTags(prefixedKey);
|
|
293
354
|
this.itemCache.set(key, {
|
|
294
355
|
value,
|
|
295
356
|
handles: options?.handles,
|
|
296
357
|
expiresAt,
|
|
297
358
|
staleAt,
|
|
359
|
+
tags: options?.tags,
|
|
298
360
|
});
|
|
361
|
+
if (options?.tags && options.tags.length > 0) {
|
|
362
|
+
this.registerTags(options.tags, prefixedKey);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Invalidate every cache entry (segment, response, item) tagged with any of
|
|
368
|
+
* `tags`. Entries are dropped immediately; the next read is a miss and
|
|
369
|
+
* re-renders fresh. This is the store-level primitive both updateTag() and
|
|
370
|
+
* revalidateTag() delegate to. (In-process, so there is nothing to batch
|
|
371
|
+
* beyond looping the tags.)
|
|
372
|
+
*/
|
|
373
|
+
async invalidateTags(tags: string[]): Promise<void> {
|
|
374
|
+
for (const tag of tags) {
|
|
375
|
+
const keys = this.tagIndex.get(tag);
|
|
376
|
+
if (!keys || keys.size === 0) continue;
|
|
377
|
+
|
|
378
|
+
// Snapshot the keys before mutating the index inside the loop.
|
|
379
|
+
const prefixedKeys = [...keys];
|
|
380
|
+
|
|
381
|
+
for (const prefixedKey of prefixedKeys) {
|
|
382
|
+
const colonIdx = prefixedKey.indexOf(":");
|
|
383
|
+
const prefix = prefixedKey.slice(0, colonIdx);
|
|
384
|
+
const rawKey = prefixedKey.slice(colonIdx + 1);
|
|
385
|
+
|
|
386
|
+
if (prefix === "seg") {
|
|
387
|
+
this.cache.delete(rawKey);
|
|
388
|
+
} else if (prefix === "res") {
|
|
389
|
+
this.responseCache.delete(rawKey);
|
|
390
|
+
} else if (prefix === "item") {
|
|
391
|
+
this.itemCache.delete(rawKey);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// Drop this key from every tag set it belonged to, not just `tag`.
|
|
395
|
+
this.unregisterTags(prefixedKey);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Register `tags` for a prefixed cache key in both the forward
|
|
402
|
+
* (tag -> keys) and reverse (key -> tags) indexes.
|
|
403
|
+
* Callers must call unregisterTags() first to clear stale mappings.
|
|
404
|
+
* @internal
|
|
405
|
+
*/
|
|
406
|
+
private registerTags(tags: string[], prefixedKey: string): void {
|
|
407
|
+
let tagSet = this.keyTags.get(prefixedKey);
|
|
408
|
+
if (!tagSet) {
|
|
409
|
+
tagSet = new Set();
|
|
410
|
+
this.keyTags.set(prefixedKey, tagSet);
|
|
411
|
+
}
|
|
412
|
+
for (const tag of tags) {
|
|
413
|
+
tagSet.add(tag);
|
|
414
|
+
let keys = this.tagIndex.get(tag);
|
|
415
|
+
if (!keys) {
|
|
416
|
+
keys = new Set();
|
|
417
|
+
this.tagIndex.set(tag, keys);
|
|
418
|
+
}
|
|
419
|
+
keys.add(prefixedKey);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* Remove a prefixed cache key from every tag set it belongs to.
|
|
425
|
+
* Uses the reverse index so this is O(tags-per-key), not O(total-tags).
|
|
426
|
+
* @internal
|
|
427
|
+
*/
|
|
428
|
+
private unregisterTags(prefixedKey: string): void {
|
|
429
|
+
const tagSet = this.keyTags.get(prefixedKey);
|
|
430
|
+
if (!tagSet) return;
|
|
431
|
+
for (const tag of tagSet) {
|
|
432
|
+
const keys = this.tagIndex.get(tag);
|
|
433
|
+
if (keys) {
|
|
434
|
+
keys.delete(prefixedKey);
|
|
435
|
+
if (keys.size === 0) {
|
|
436
|
+
this.tagIndex.delete(tag);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
this.keyTags.delete(prefixedKey);
|
|
299
441
|
}
|
|
300
442
|
|
|
301
443
|
/**
|
|
@@ -325,5 +467,7 @@ export class MemorySegmentCacheStore<
|
|
|
325
467
|
delete (globalThis as any)[CACHE_REGISTRY_KEY];
|
|
326
468
|
delete (globalThis as any)[RESPONSE_CACHE_REGISTRY_KEY];
|
|
327
469
|
delete (globalThis as any)[ITEM_CACHE_REGISTRY_KEY];
|
|
470
|
+
delete (globalThis as any)[TAG_INDEX_REGISTRY_KEY];
|
|
471
|
+
delete (globalThis as any)[KEY_TAGS_REGISTRY_KEY];
|
|
328
472
|
}
|
|
329
473
|
}
|