@rangojs/router 0.0.0-experimental.21 → 0.0.0-experimental.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -10
- package/dist/vite/index.js +2 -3
- package/package.json +1 -1
- package/skills/caching/SKILL.md +4 -4
- package/skills/document-cache/SKILL.md +2 -2
- package/skills/hooks/SKILL.md +13 -12
- package/skills/host-router/SKILL.md +218 -0
- package/skills/loader/SKILL.md +2 -2
- package/skills/prerender/SKILL.md +2 -2
- package/skills/rango/SKILL.md +0 -1
- package/skills/router-setup/SKILL.md +2 -2
- package/skills/typesafety/SKILL.md +1 -1
- package/src/host/index.ts +0 -3
- package/src/index.ts +30 -31
- package/src/route-definition/index.ts +0 -3
- package/src/router/loader-resolution.ts +1 -1
- package/src/router/metrics.ts +90 -10
- package/src/router/middleware-types.ts +12 -0
- package/src/router/middleware.ts +55 -9
- package/src/router/router-options.ts +1 -1
- package/src/router/segment-resolution/fresh.ts +18 -0
- package/src/router/segment-resolution/revalidation.ts +21 -6
- package/src/router.ts +6 -2
- package/src/rsc/index.ts +0 -20
- package/src/server/context.ts +8 -2
- package/src/server/request-context.ts +5 -1
- package/src/server.ts +6 -0
- package/src/theme/index.ts +4 -13
- package/src/vite/discovery/discover-routers.ts +2 -3
- 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.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/skills/testing/SKILL.md +0 -226
- package/src/route-definition/route-function.ts +0 -119
|
@@ -1,647 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi } from "vitest";
|
|
2
|
-
import { exposeInternalIds, } from "../expose-internal-ids.ts";
|
|
3
|
-
// ---------------------------------------------------------------------------
|
|
4
|
-
// Helpers
|
|
5
|
-
// ---------------------------------------------------------------------------
|
|
6
|
-
function createPlugin(opts) {
|
|
7
|
-
const plugin = exposeInternalIds(opts);
|
|
8
|
-
return plugin;
|
|
9
|
-
}
|
|
10
|
-
const ROOT = "/project";
|
|
11
|
-
const FILE_ID = "/project/src/urls.tsx";
|
|
12
|
-
function initDev(plugin) {
|
|
13
|
-
plugin.configResolved({ command: "serve", root: ROOT });
|
|
14
|
-
}
|
|
15
|
-
function rscCtx() {
|
|
16
|
-
return { environment: { name: "rsc" }, warn: vi.fn() };
|
|
17
|
-
}
|
|
18
|
-
function clientCtx() {
|
|
19
|
-
return { environment: { name: "client" }, warn: vi.fn() };
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Extract `import { __sh_xxx } from "virtual:handler-extract:..."` entries
|
|
23
|
-
* from transformed code.
|
|
24
|
-
*/
|
|
25
|
-
function extractVirtualImports(code) {
|
|
26
|
-
const results = [];
|
|
27
|
-
const re = /import\s*\{\s*(__sh_\w+)\s*\}\s*from\s*"(virtual:handler-extract:[^"]+)"/g;
|
|
28
|
-
let m;
|
|
29
|
-
while ((m = re.exec(code)) !== null) {
|
|
30
|
-
results.push({ exportName: m[1], specifier: m[2] });
|
|
31
|
-
}
|
|
32
|
-
return results;
|
|
33
|
-
}
|
|
34
|
-
// ---------------------------------------------------------------------------
|
|
35
|
-
// Test sources
|
|
36
|
-
// ---------------------------------------------------------------------------
|
|
37
|
-
const INLINE_SOURCE = `import { Static } from "@rangojs/router";
|
|
38
|
-
layout(Static(() => <nav />));
|
|
39
|
-
`;
|
|
40
|
-
const EXPORT_SOURCE = `import { Static } from "@rangojs/router";
|
|
41
|
-
export const Nav = Static(() => <nav />);
|
|
42
|
-
`;
|
|
43
|
-
const MIXED_SOURCE = `import { Static } from "@rangojs/router";
|
|
44
|
-
export const Nav = Static(() => <nav />);
|
|
45
|
-
layout(Static(() => <sidebar />));
|
|
46
|
-
`;
|
|
47
|
-
const SAME_LINE_SOURCE = `import { Static } from "@rangojs/router";
|
|
48
|
-
layout(Static(() => <a />), Static(() => <b />));
|
|
49
|
-
`;
|
|
50
|
-
const PRERENDER_INLINE_SOURCE = `import { Prerender } from "@rangojs/router";
|
|
51
|
-
path("/about", Prerender(() => <div>About</div>));
|
|
52
|
-
`;
|
|
53
|
-
const PRERENDER_EXPORT_SOURCE = `import { Prerender } from "@rangojs/router";
|
|
54
|
-
export const AboutPage = Prerender(() => <div>About</div>);
|
|
55
|
-
`;
|
|
56
|
-
const PRERENDER_MIXED_SOURCE = `import { Prerender } from "@rangojs/router";
|
|
57
|
-
export const AboutPage = Prerender(() => <main />);
|
|
58
|
-
path("/inline", Prerender(() => <aside />));
|
|
59
|
-
`;
|
|
60
|
-
const PRERENDER_INLINE_WHITESPACE_SOURCE = `import { Prerender } from "@rangojs/router";
|
|
61
|
-
path("/about", Prerender
|
|
62
|
-
(() => <div>About</div>));
|
|
63
|
-
`;
|
|
64
|
-
const STATIC_ALIAS_INLINE_SOURCE = `import { Static as sh } from "@rangojs/router";
|
|
65
|
-
layout(sh(() => <nav />));
|
|
66
|
-
`;
|
|
67
|
-
const STATIC_ALIAS_EXPORT_SOURCE = `import { Static as sh } from "@rangojs/router";
|
|
68
|
-
export const Nav = sh(() => <nav />);
|
|
69
|
-
`;
|
|
70
|
-
// ---------------------------------------------------------------------------
|
|
71
|
-
// Tests
|
|
72
|
-
// ---------------------------------------------------------------------------
|
|
73
|
-
describe("exposeInternalIds - inline static handler integration", () => {
|
|
74
|
-
// -----------------------------------------------------------------------
|
|
75
|
-
// Full round-trip: RSC dev mode
|
|
76
|
-
// -----------------------------------------------------------------------
|
|
77
|
-
describe("full round-trip: RSC dev mode", () => {
|
|
78
|
-
it("transforms inline call -> resolves virtual -> loads -> injects $$id", () => {
|
|
79
|
-
const plugin = createPlugin();
|
|
80
|
-
initDev(plugin);
|
|
81
|
-
// Step 1: Transform source with inline call in RSC env
|
|
82
|
-
const r1 = plugin.transform.call(rscCtx(), INLINE_SOURCE, FILE_ID);
|
|
83
|
-
expect(r1).toBeDefined();
|
|
84
|
-
// Should have a virtual module import
|
|
85
|
-
const vImports = extractVirtualImports(r1.code);
|
|
86
|
-
expect(vImports).toHaveLength(1);
|
|
87
|
-
const { exportName, specifier } = vImports[0];
|
|
88
|
-
expect(exportName).toMatch(/^__sh_[0-9a-f]{8}$/);
|
|
89
|
-
// The inline call should be replaced with the import name
|
|
90
|
-
expect(r1.code).toContain(`layout(${exportName})`);
|
|
91
|
-
expect(r1.code).not.toContain("Static(() => <nav />)");
|
|
92
|
-
// Step 2: resolveId adds \0 prefix
|
|
93
|
-
const resolved = plugin.resolveId.call({}, specifier, FILE_ID);
|
|
94
|
-
expect(resolved).toBe("\0" + specifier);
|
|
95
|
-
// Step 3: load synthesises the virtual module
|
|
96
|
-
const loaded = plugin.load.call({}, resolved);
|
|
97
|
-
expect(loaded).toBeDefined();
|
|
98
|
-
expect(loaded).toContain(`export const ${exportName}`);
|
|
99
|
-
expect(loaded).toContain("Static");
|
|
100
|
-
expect(loaded).toContain("@rangojs/router");
|
|
101
|
-
// Step 4: transform virtual module in RSC injects $$id
|
|
102
|
-
const r2 = plugin.transform.call(rscCtx(), loaded, resolved);
|
|
103
|
-
expect(r2).toBeDefined();
|
|
104
|
-
expect(r2.code).toContain("$$id");
|
|
105
|
-
expect(r2.code).toContain(`${exportName}.$$id`);
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
// -----------------------------------------------------------------------
|
|
109
|
-
// Full round-trip: non-RSC (client/SSR)
|
|
110
|
-
// -----------------------------------------------------------------------
|
|
111
|
-
describe("full round-trip: non-RSC (client/SSR)", () => {
|
|
112
|
-
it("replaces virtual module with stub in client env", () => {
|
|
113
|
-
const plugin = createPlugin();
|
|
114
|
-
initDev(plugin);
|
|
115
|
-
// Populate virtual registry via RSC transform
|
|
116
|
-
const r1 = plugin.transform.call(rscCtx(), INLINE_SOURCE, FILE_ID);
|
|
117
|
-
const { exportName, specifier } = extractVirtualImports(r1.code)[0];
|
|
118
|
-
const resolved = plugin.resolveId.call({}, specifier, FILE_ID);
|
|
119
|
-
const loaded = plugin.load.call({}, resolved);
|
|
120
|
-
// Transform virtual module in client env -> stub
|
|
121
|
-
const r2 = plugin.transform.call(clientCtx(), loaded, resolved);
|
|
122
|
-
expect(r2).toBeDefined();
|
|
123
|
-
expect(r2.code).toContain("__brand");
|
|
124
|
-
expect(r2.code).toContain('"staticHandler"');
|
|
125
|
-
expect(r2.code).toContain("$$id");
|
|
126
|
-
// No Static call remains
|
|
127
|
-
expect(r2.code).not.toContain("Static(");
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
// -----------------------------------------------------------------------
|
|
131
|
-
// Mixed files (export const + inline)
|
|
132
|
-
// -----------------------------------------------------------------------
|
|
133
|
-
describe("mixed files (export const + inline)", () => {
|
|
134
|
-
it("extracts inline, leaves export const, both get $$id in RSC", () => {
|
|
135
|
-
const plugin = createPlugin();
|
|
136
|
-
initDev(plugin);
|
|
137
|
-
// Transform mixed source in RSC
|
|
138
|
-
const r1 = plugin.transform.call(rscCtx(), MIXED_SOURCE, FILE_ID);
|
|
139
|
-
expect(r1).toBeDefined();
|
|
140
|
-
// Inline call extracted to virtual module
|
|
141
|
-
const vImports = extractVirtualImports(r1.code);
|
|
142
|
-
expect(vImports).toHaveLength(1);
|
|
143
|
-
// Export const Nav stays in the original file with $$id injected
|
|
144
|
-
expect(r1.code).toContain("export const Nav = Static");
|
|
145
|
-
expect(r1.code).toContain("Nav.$$id");
|
|
146
|
-
// Inline call replaced with import name
|
|
147
|
-
expect(r1.code).toContain(`layout(${vImports[0].exportName})`);
|
|
148
|
-
expect(r1.code).not.toContain("Static(() => <sidebar />)");
|
|
149
|
-
// Virtual module also gets $$id in RSC
|
|
150
|
-
const resolved = plugin.resolveId.call({}, vImports[0].specifier, FILE_ID);
|
|
151
|
-
const loaded = plugin.load.call({}, resolved);
|
|
152
|
-
const r2 = plugin.transform.call(rscCtx(), loaded, resolved);
|
|
153
|
-
expect(r2).toBeDefined();
|
|
154
|
-
expect(r2.code).toContain(`${vImports[0].exportName}.$$id`);
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
// -----------------------------------------------------------------------
|
|
158
|
-
// Module tracking (RSC build mode)
|
|
159
|
-
// -----------------------------------------------------------------------
|
|
160
|
-
describe("module tracking (RSC build mode)", () => {
|
|
161
|
-
it("populates staticHandlerModules for export const patterns", () => {
|
|
162
|
-
const plugin = createPlugin({ forceBuild: true });
|
|
163
|
-
initDev(plugin); // forceBuild overrides command
|
|
164
|
-
plugin.transform.call(rscCtx(), EXPORT_SOURCE, FILE_ID);
|
|
165
|
-
expect(plugin.api.staticHandlerModules.get(FILE_ID)).toEqual(["Nav"]);
|
|
166
|
-
});
|
|
167
|
-
it("tracks virtual module exports in build mode", () => {
|
|
168
|
-
const plugin = createPlugin({ forceBuild: true });
|
|
169
|
-
initDev(plugin);
|
|
170
|
-
// Populate registry via RSC transform
|
|
171
|
-
const r1 = plugin.transform.call(rscCtx(), INLINE_SOURCE, FILE_ID);
|
|
172
|
-
const { exportName, specifier } = extractVirtualImports(r1.code)[0];
|
|
173
|
-
const resolved = plugin.resolveId.call({}, specifier, FILE_ID);
|
|
174
|
-
const loaded = plugin.load.call({}, resolved);
|
|
175
|
-
// Transform virtual module in RSC build mode
|
|
176
|
-
plugin.transform.call(rscCtx(), loaded, resolved);
|
|
177
|
-
expect(plugin.api.staticHandlerModules.get(resolved)).toEqual([
|
|
178
|
-
exportName,
|
|
179
|
-
]);
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
// -----------------------------------------------------------------------
|
|
183
|
-
// Virtual module import resolution
|
|
184
|
-
// -----------------------------------------------------------------------
|
|
185
|
-
describe("virtual module import resolution", () => {
|
|
186
|
-
it("resolves imports from virtual modules against original file", () => {
|
|
187
|
-
const plugin = createPlugin();
|
|
188
|
-
initDev(plugin);
|
|
189
|
-
// Populate registry
|
|
190
|
-
const r1 = plugin.transform.call(rscCtx(), INLINE_SOURCE, FILE_ID);
|
|
191
|
-
const { specifier } = extractVirtualImports(r1.code)[0];
|
|
192
|
-
const resolved = plugin.resolveId.call({}, specifier, FILE_ID);
|
|
193
|
-
// Resolve an import from within the virtual module
|
|
194
|
-
const ctx = {
|
|
195
|
-
resolve: vi
|
|
196
|
-
.fn()
|
|
197
|
-
.mockResolvedValue({ id: "/project/src/components/Nav.tsx" }),
|
|
198
|
-
};
|
|
199
|
-
plugin.resolveId.call(ctx, "@rangojs/router", resolved);
|
|
200
|
-
expect(ctx.resolve).toHaveBeenCalledWith("@rangojs/router", FILE_ID, { skipSelf: true });
|
|
201
|
-
});
|
|
202
|
-
});
|
|
203
|
-
// -----------------------------------------------------------------------
|
|
204
|
-
// Server-only import eviction (node:fs in Cloudflare)
|
|
205
|
-
// -----------------------------------------------------------------------
|
|
206
|
-
describe("server-only import eviction", () => {
|
|
207
|
-
it("virtual module stub drops node:fs import (inline call path)", () => {
|
|
208
|
-
const plugin = createPlugin();
|
|
209
|
-
initDev(plugin);
|
|
210
|
-
const source = `import { Static } from "@rangojs/router";
|
|
211
|
-
import { readFileSync } from "node:fs";
|
|
212
|
-
layout(Static(() => {
|
|
213
|
-
const data = readFileSync("data.json", "utf-8");
|
|
214
|
-
return <pre>{data}</pre>;
|
|
215
|
-
}));
|
|
216
|
-
`;
|
|
217
|
-
// RSC transform populates virtual registry
|
|
218
|
-
const r1 = plugin.transform.call(rscCtx(), source, FILE_ID);
|
|
219
|
-
const { exportName, specifier } = extractVirtualImports(r1.code)[0];
|
|
220
|
-
const resolved = plugin.resolveId.call({}, specifier, FILE_ID);
|
|
221
|
-
const loaded = plugin.load.call({}, resolved);
|
|
222
|
-
// Virtual module should contain node:fs (needed for RSC build)
|
|
223
|
-
expect(loaded).toContain("node:fs");
|
|
224
|
-
expect(loaded).toContain("readFileSync");
|
|
225
|
-
// Client transform should produce stub WITHOUT node:fs
|
|
226
|
-
const r2 = plugin.transform.call(clientCtx(), loaded, resolved);
|
|
227
|
-
expect(r2).toBeDefined();
|
|
228
|
-
expect(r2.code).not.toContain("node:fs");
|
|
229
|
-
expect(r2.code).not.toContain("readFileSync");
|
|
230
|
-
expect(r2.code).toContain("__brand");
|
|
231
|
-
expect(r2.code).toContain('"staticHandler"');
|
|
232
|
-
});
|
|
233
|
-
it("whole-file stub drops node:fs import (export const path)", () => {
|
|
234
|
-
const plugin = createPlugin();
|
|
235
|
-
initDev(plugin);
|
|
236
|
-
const source = `import { Static } from "@rangojs/router";
|
|
237
|
-
import { readFileSync } from "node:fs";
|
|
238
|
-
export const Nav = Static(() => {
|
|
239
|
-
const data = readFileSync("data.json", "utf-8");
|
|
240
|
-
return <pre>{data}</pre>;
|
|
241
|
-
});
|
|
242
|
-
`;
|
|
243
|
-
// Client transform should produce stub WITHOUT node:fs
|
|
244
|
-
const r = plugin.transform.call(clientCtx(), source, FILE_ID);
|
|
245
|
-
expect(r).toBeDefined();
|
|
246
|
-
expect(r.code).not.toContain("node:fs");
|
|
247
|
-
expect(r.code).not.toContain("readFileSync");
|
|
248
|
-
expect(r.code).toContain("__brand");
|
|
249
|
-
expect(r.code).toContain('"staticHandler"');
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
// -----------------------------------------------------------------------
|
|
253
|
-
// Edge cases
|
|
254
|
-
// -----------------------------------------------------------------------
|
|
255
|
-
describe("edge cases", () => {
|
|
256
|
-
it("no relevant imports -> transform returns undefined", () => {
|
|
257
|
-
const plugin = createPlugin();
|
|
258
|
-
initDev(plugin);
|
|
259
|
-
const code = `import { route } from "@rangojs/router";\nroute("/", handler);`;
|
|
260
|
-
const result = plugin.transform.call(rscCtx(), code, FILE_ID);
|
|
261
|
-
expect(result).toBeUndefined();
|
|
262
|
-
});
|
|
263
|
-
it("only export const -> no virtual modules, $$id injected in RSC", () => {
|
|
264
|
-
const plugin = createPlugin();
|
|
265
|
-
initDev(plugin);
|
|
266
|
-
const result = plugin.transform.call(rscCtx(), EXPORT_SOURCE, FILE_ID);
|
|
267
|
-
expect(result).toBeDefined();
|
|
268
|
-
// No virtual module imports
|
|
269
|
-
expect(extractVirtualImports(result.code)).toHaveLength(0);
|
|
270
|
-
// $$id injected
|
|
271
|
-
expect(result.code).toContain("Nav.$$id");
|
|
272
|
-
});
|
|
273
|
-
it("same-line collisions -> distinct virtual modules", () => {
|
|
274
|
-
const plugin = createPlugin();
|
|
275
|
-
initDev(plugin);
|
|
276
|
-
const result = plugin.transform.call(rscCtx(), SAME_LINE_SOURCE, FILE_ID);
|
|
277
|
-
expect(result).toBeDefined();
|
|
278
|
-
const vImports = extractVirtualImports(result.code);
|
|
279
|
-
expect(vImports).toHaveLength(2);
|
|
280
|
-
// Different export names
|
|
281
|
-
expect(vImports[0].exportName).not.toBe(vImports[1].exportName);
|
|
282
|
-
// Different specifiers
|
|
283
|
-
expect(vImports[0].specifier).not.toBe(vImports[1].specifier);
|
|
284
|
-
});
|
|
285
|
-
it("extracts inline call when fn name and paren are split by newline", () => {
|
|
286
|
-
const plugin = createPlugin();
|
|
287
|
-
initDev(plugin);
|
|
288
|
-
const result = plugin.transform.call(rscCtx(), PRERENDER_INLINE_WHITESPACE_SOURCE, FILE_ID);
|
|
289
|
-
expect(result).toBeDefined();
|
|
290
|
-
const vImports = extractVirtualImports(result.code);
|
|
291
|
-
expect(vImports).toHaveLength(1);
|
|
292
|
-
expect(result.code).toContain(`path("/about", ${vImports[0].exportName})`);
|
|
293
|
-
expect(result.code).not.toContain("Prerender\n(");
|
|
294
|
-
});
|
|
295
|
-
it("load returns null for unregistered virtual ID", () => {
|
|
296
|
-
const plugin = createPlugin();
|
|
297
|
-
initDev(plugin);
|
|
298
|
-
const result = plugin.load.call({}, "\0virtual:handler-extract:nonexistent:99");
|
|
299
|
-
expect(result).toBeNull();
|
|
300
|
-
});
|
|
301
|
-
it("extracts inline call when Static is imported with alias", () => {
|
|
302
|
-
const plugin = createPlugin();
|
|
303
|
-
initDev(plugin);
|
|
304
|
-
const result = plugin.transform.call(rscCtx(), STATIC_ALIAS_INLINE_SOURCE, FILE_ID);
|
|
305
|
-
expect(result).toBeDefined();
|
|
306
|
-
const vImports = extractVirtualImports(result.code);
|
|
307
|
-
expect(vImports).toHaveLength(1);
|
|
308
|
-
expect(result.code).toContain(`layout(${vImports[0].exportName})`);
|
|
309
|
-
});
|
|
310
|
-
it("injects $$id for export const alias call", () => {
|
|
311
|
-
const plugin = createPlugin();
|
|
312
|
-
initDev(plugin);
|
|
313
|
-
const result = plugin.transform.call(rscCtx(), STATIC_ALIAS_EXPORT_SOURCE, FILE_ID);
|
|
314
|
-
expect(result).toBeDefined();
|
|
315
|
-
expect(result.code).toContain("Nav.$$id");
|
|
316
|
-
});
|
|
317
|
-
});
|
|
318
|
-
});
|
|
319
|
-
// ---------------------------------------------------------------------------
|
|
320
|
-
// Inline Prerender integration
|
|
321
|
-
// ---------------------------------------------------------------------------
|
|
322
|
-
describe("exposeInternalIds - inline prerender handler integration", () => {
|
|
323
|
-
describe("full round-trip: RSC dev mode", () => {
|
|
324
|
-
it("transforms inline Prerender -> virtual -> $$id", () => {
|
|
325
|
-
const plugin = createPlugin();
|
|
326
|
-
initDev(plugin);
|
|
327
|
-
// Step 1: Transform source with inline call in RSC env
|
|
328
|
-
const r1 = plugin.transform.call(rscCtx(), PRERENDER_INLINE_SOURCE, FILE_ID);
|
|
329
|
-
expect(r1).toBeDefined();
|
|
330
|
-
// Should have a virtual module import
|
|
331
|
-
const vImports = extractVirtualImports(r1.code);
|
|
332
|
-
expect(vImports).toHaveLength(1);
|
|
333
|
-
const { exportName, specifier } = vImports[0];
|
|
334
|
-
expect(exportName).toMatch(/^__sh_[0-9a-f]{8}$/);
|
|
335
|
-
// The inline call should be replaced with the import name
|
|
336
|
-
expect(r1.code).toContain(`path("/about", ${exportName})`);
|
|
337
|
-
expect(r1.code).not.toContain("Prerender(() =>");
|
|
338
|
-
// Step 2: resolveId adds \0 prefix
|
|
339
|
-
const resolved = plugin.resolveId.call({}, specifier, FILE_ID);
|
|
340
|
-
expect(resolved).toBe("\0" + specifier);
|
|
341
|
-
// Step 3: load synthesises the virtual module
|
|
342
|
-
const loaded = plugin.load.call({}, resolved);
|
|
343
|
-
expect(loaded).toBeDefined();
|
|
344
|
-
expect(loaded).toContain(`export const ${exportName}`);
|
|
345
|
-
expect(loaded).toContain("Prerender");
|
|
346
|
-
expect(loaded).toContain("@rangojs/router");
|
|
347
|
-
// Step 4: transform virtual module in RSC injects $$id
|
|
348
|
-
const r2 = plugin.transform.call(rscCtx(), loaded, resolved);
|
|
349
|
-
expect(r2).toBeDefined();
|
|
350
|
-
expect(r2.code).toContain("$$id");
|
|
351
|
-
expect(r2.code).toContain(`${exportName}.$$id`);
|
|
352
|
-
});
|
|
353
|
-
});
|
|
354
|
-
describe("full round-trip: non-RSC (client/SSR)", () => {
|
|
355
|
-
it("replaces virtual prerender module with stub in client env", () => {
|
|
356
|
-
const plugin = createPlugin();
|
|
357
|
-
initDev(plugin);
|
|
358
|
-
// Populate virtual registry via RSC transform
|
|
359
|
-
const r1 = plugin.transform.call(rscCtx(), PRERENDER_INLINE_SOURCE, FILE_ID);
|
|
360
|
-
const { exportName, specifier } = extractVirtualImports(r1.code)[0];
|
|
361
|
-
const resolved = plugin.resolveId.call({}, specifier, FILE_ID);
|
|
362
|
-
const loaded = plugin.load.call({}, resolved);
|
|
363
|
-
// Transform virtual module in client env -> stub
|
|
364
|
-
const r2 = plugin.transform.call(clientCtx(), loaded, resolved);
|
|
365
|
-
expect(r2).toBeDefined();
|
|
366
|
-
expect(r2.code).toContain("__brand");
|
|
367
|
-
expect(r2.code).toContain('"prerenderHandler"');
|
|
368
|
-
expect(r2.code).toContain("$$id");
|
|
369
|
-
// No Prerender call remains
|
|
370
|
-
expect(r2.code).not.toContain("Prerender(");
|
|
371
|
-
});
|
|
372
|
-
});
|
|
373
|
-
describe("mixed files (export const + inline)", () => {
|
|
374
|
-
it("extracts inline, leaves export const, both get $$id in RSC", () => {
|
|
375
|
-
const plugin = createPlugin();
|
|
376
|
-
initDev(plugin);
|
|
377
|
-
// Transform mixed source in RSC
|
|
378
|
-
const r1 = plugin.transform.call(rscCtx(), PRERENDER_MIXED_SOURCE, FILE_ID);
|
|
379
|
-
expect(r1).toBeDefined();
|
|
380
|
-
// Inline call extracted to virtual module
|
|
381
|
-
const vImports = extractVirtualImports(r1.code);
|
|
382
|
-
expect(vImports).toHaveLength(1);
|
|
383
|
-
// Export const stays in the original file with $$id injected
|
|
384
|
-
expect(r1.code).toContain("export const AboutPage = Prerender");
|
|
385
|
-
expect(r1.code).toContain("AboutPage.$$id");
|
|
386
|
-
// Inline call replaced with import name
|
|
387
|
-
expect(r1.code).toContain(`path("/inline", ${vImports[0].exportName})`);
|
|
388
|
-
expect(r1.code).not.toContain("Prerender(() => <aside />)");
|
|
389
|
-
});
|
|
390
|
-
});
|
|
391
|
-
describe("module tracking (RSC build mode)", () => {
|
|
392
|
-
it("populates prerenderHandlerModules for export const patterns", () => {
|
|
393
|
-
const plugin = createPlugin({ forceBuild: true });
|
|
394
|
-
initDev(plugin);
|
|
395
|
-
plugin.transform.call(rscCtx(), PRERENDER_EXPORT_SOURCE, FILE_ID);
|
|
396
|
-
expect(plugin.api.prerenderHandlerModules.get(FILE_ID)).toEqual(["AboutPage"]);
|
|
397
|
-
});
|
|
398
|
-
});
|
|
399
|
-
});
|
|
400
|
-
describe("exposeInternalIds - unsupported shape diagnostics", () => {
|
|
401
|
-
it("warns for createLoader when declaration uses let", () => {
|
|
402
|
-
const plugin = createPlugin();
|
|
403
|
-
initDev(plugin);
|
|
404
|
-
const code = `import { createLoader } from "@rangojs/router";
|
|
405
|
-
export let LocalLoader = createLoader(async () => ({ ok: true }));
|
|
406
|
-
`;
|
|
407
|
-
const ctx = rscCtx();
|
|
408
|
-
plugin.transform.call(ctx, code, FILE_ID);
|
|
409
|
-
expect(ctx.warn).toHaveBeenCalledTimes(1);
|
|
410
|
-
const [msg] = ctx.warn.mock.calls[0];
|
|
411
|
-
expect(msg).toContain("Unsupported createLoader shape");
|
|
412
|
-
expect(msg).toContain("Supported shapes are:");
|
|
413
|
-
});
|
|
414
|
-
it("does not warn for supported createLoader export const shape", () => {
|
|
415
|
-
const plugin = createPlugin();
|
|
416
|
-
initDev(plugin);
|
|
417
|
-
const code = `import { createLoader } from "@rangojs/router";
|
|
418
|
-
export const MyLoader = createLoader(async () => ({ ok: true }));
|
|
419
|
-
`;
|
|
420
|
-
const ctx = rscCtx();
|
|
421
|
-
plugin.transform.call(ctx, code, FILE_ID);
|
|
422
|
-
expect(ctx.warn).not.toHaveBeenCalled();
|
|
423
|
-
});
|
|
424
|
-
it("warns at most once per file/function shape", () => {
|
|
425
|
-
const plugin = createPlugin();
|
|
426
|
-
initDev(plugin);
|
|
427
|
-
const code = `import { createHandle } from "@rangojs/router";
|
|
428
|
-
layout(createHandle(() => []));
|
|
429
|
-
`;
|
|
430
|
-
const ctx = rscCtx();
|
|
431
|
-
plugin.transform.call(ctx, code, FILE_ID);
|
|
432
|
-
plugin.transform.call(ctx, code, FILE_ID);
|
|
433
|
-
expect(ctx.warn).toHaveBeenCalledTimes(1);
|
|
434
|
-
const [msg] = ctx.warn.mock.calls[0];
|
|
435
|
-
expect(msg).toContain("Unsupported createHandle shape");
|
|
436
|
-
});
|
|
437
|
-
});
|
|
438
|
-
describe("exposeInternalIds - alias support (strict create APIs)", () => {
|
|
439
|
-
it("injects $$id for createLoader imported with alias", () => {
|
|
440
|
-
const plugin = createPlugin();
|
|
441
|
-
initDev(plugin);
|
|
442
|
-
const code = `import { createLoader as cl } from "@rangojs/router";
|
|
443
|
-
export const MyLoader = cl(async () => ({ ok: true }));
|
|
444
|
-
`;
|
|
445
|
-
const result = plugin.transform.call(rscCtx(), code, FILE_ID);
|
|
446
|
-
expect(result).toBeDefined();
|
|
447
|
-
expect(result.code).toContain("MyLoader.$$id");
|
|
448
|
-
});
|
|
449
|
-
it("injects $$id for createHandle imported with alias", () => {
|
|
450
|
-
const plugin = createPlugin();
|
|
451
|
-
initDev(plugin);
|
|
452
|
-
const code = `import { createHandle as ch } from "@rangojs/router";
|
|
453
|
-
export const Breadcrumbs = ch(() => []);
|
|
454
|
-
`;
|
|
455
|
-
const result = plugin.transform.call(rscCtx(), code, FILE_ID);
|
|
456
|
-
expect(result).toBeDefined();
|
|
457
|
-
expect(result.code).toContain("Breadcrumbs.$$id");
|
|
458
|
-
});
|
|
459
|
-
it("injects __rsc_ls_key for createLocationState imported with alias", () => {
|
|
460
|
-
const plugin = createPlugin();
|
|
461
|
-
initDev(plugin);
|
|
462
|
-
const code = `import { createLocationState as cls } from "@rangojs/router";
|
|
463
|
-
export const ProductState = cls<string>();
|
|
464
|
-
`;
|
|
465
|
-
const result = plugin.transform.call(rscCtx(), code, FILE_ID);
|
|
466
|
-
expect(result).toBeDefined();
|
|
467
|
-
expect(result.code).toContain("ProductState.__rsc_ls_key");
|
|
468
|
-
});
|
|
469
|
-
it("supports createLoader declared as const and exported via specifier alias", () => {
|
|
470
|
-
const plugin = createPlugin();
|
|
471
|
-
initDev(plugin);
|
|
472
|
-
const code = `import { createLoader } from "@rangojs/router";
|
|
473
|
-
const LocalLoader = createLoader(async () => ({ ok: true }));
|
|
474
|
-
export { LocalLoader as PublicLoader };
|
|
475
|
-
`;
|
|
476
|
-
const ctx = rscCtx();
|
|
477
|
-
const result = plugin.transform.call(ctx, code, FILE_ID);
|
|
478
|
-
expect(result).toBeDefined();
|
|
479
|
-
expect(result.code).toContain('LocalLoader.$$id =');
|
|
480
|
-
expect(ctx.warn).not.toHaveBeenCalled();
|
|
481
|
-
});
|
|
482
|
-
it("supports createHandle declared as const and exported via specifier", () => {
|
|
483
|
-
const plugin = createPlugin();
|
|
484
|
-
initDev(plugin);
|
|
485
|
-
const code = `import { createHandle } from "@rangojs/router";
|
|
486
|
-
const LocalHandle = createHandle(() => []);
|
|
487
|
-
export { LocalHandle };
|
|
488
|
-
`;
|
|
489
|
-
const result = plugin.transform.call(rscCtx(), code, FILE_ID);
|
|
490
|
-
expect(result).toBeDefined();
|
|
491
|
-
expect(result.code).toContain("LocalHandle.$$id");
|
|
492
|
-
});
|
|
493
|
-
it("supports createLocationState declared as const and exported via specifier alias", () => {
|
|
494
|
-
const plugin = createPlugin();
|
|
495
|
-
initDev(plugin);
|
|
496
|
-
const code = `import { createLocationState } from "@rangojs/router";
|
|
497
|
-
const ProductStateDef = createLocationState<string>();
|
|
498
|
-
export { ProductStateDef as ProductState };
|
|
499
|
-
`;
|
|
500
|
-
const result = plugin.transform.call(rscCtx(), code, FILE_ID);
|
|
501
|
-
expect(result).toBeDefined();
|
|
502
|
-
expect(result.code).toContain("ProductStateDef.__rsc_ls_key");
|
|
503
|
-
});
|
|
504
|
-
});
|
|
505
|
-
describe("exposeInternalIds - handler export specifiers", () => {
|
|
506
|
-
it("tracks static handler exported via specifier alias in build mode", () => {
|
|
507
|
-
const plugin = createPlugin({ forceBuild: true });
|
|
508
|
-
initDev(plugin);
|
|
509
|
-
const code = `import { Static } from "@rangojs/router";
|
|
510
|
-
const DocsNav = Static(() => <nav />);
|
|
511
|
-
export { DocsNav as DocsNavPublic };
|
|
512
|
-
`;
|
|
513
|
-
plugin.transform.call(rscCtx(), code, FILE_ID);
|
|
514
|
-
expect(plugin.api.staticHandlerModules.get(FILE_ID)).toEqual(["DocsNavPublic"]);
|
|
515
|
-
});
|
|
516
|
-
it("tracks prerender handler exported via specifier alias in build mode", () => {
|
|
517
|
-
const plugin = createPlugin({ forceBuild: true });
|
|
518
|
-
initDev(plugin);
|
|
519
|
-
const code = `import { Prerender } from "@rangojs/router";
|
|
520
|
-
const DocsPage = Prerender(() => <div />);
|
|
521
|
-
export { DocsPage as DocsPagePublic };
|
|
522
|
-
`;
|
|
523
|
-
plugin.transform.call(rscCtx(), code, FILE_ID);
|
|
524
|
-
expect(plugin.api.prerenderHandlerModules.get(FILE_ID)).toEqual(["DocsPagePublic"]);
|
|
525
|
-
});
|
|
526
|
-
});
|
|
527
|
-
// ---------------------------------------------------------------------------
|
|
528
|
-
// Client loader stubs for const + export { X } pattern
|
|
529
|
-
// ---------------------------------------------------------------------------
|
|
530
|
-
describe("exposeInternalIds - client loader stubs for const + export patterns", () => {
|
|
531
|
-
it("generates client stub for const + export { X }", () => {
|
|
532
|
-
const plugin = createPlugin();
|
|
533
|
-
initDev(plugin);
|
|
534
|
-
const code = `import { createLoader } from "@rangojs/router";
|
|
535
|
-
const MyLoader = createLoader(async () => ({ ok: true }));
|
|
536
|
-
export { MyLoader };
|
|
537
|
-
`;
|
|
538
|
-
const result = plugin.transform.call(clientCtx(), code, FILE_ID);
|
|
539
|
-
expect(result).toBeDefined();
|
|
540
|
-
expect(result.code).toContain('__brand: "loader"');
|
|
541
|
-
expect(result.code).toContain("$$id");
|
|
542
|
-
expect(result.code).toContain("export const MyLoader");
|
|
543
|
-
// Entire file replaced - no server code
|
|
544
|
-
expect(result.code).not.toContain("async");
|
|
545
|
-
});
|
|
546
|
-
it("generates client stub for const + export { X as Y }", () => {
|
|
547
|
-
const plugin = createPlugin();
|
|
548
|
-
initDev(plugin);
|
|
549
|
-
const code = `import { createLoader } from "@rangojs/router";
|
|
550
|
-
const InternalLoader = createLoader(async () => ({ ok: true }));
|
|
551
|
-
export { InternalLoader as PublicLoader };
|
|
552
|
-
`;
|
|
553
|
-
const result = plugin.transform.call(clientCtx(), code, FILE_ID);
|
|
554
|
-
expect(result).toBeDefined();
|
|
555
|
-
expect(result.code).toContain('__brand: "loader"');
|
|
556
|
-
expect(result.code).toContain("export const PublicLoader");
|
|
557
|
-
// Uses the exported name, not the local name
|
|
558
|
-
expect(result.code).not.toContain("InternalLoader");
|
|
559
|
-
expect(result.code).not.toContain("async");
|
|
560
|
-
});
|
|
561
|
-
it("does not generate loader-only stub when file has mixed exports (const + export pattern)", () => {
|
|
562
|
-
const plugin = createPlugin();
|
|
563
|
-
initDev(plugin);
|
|
564
|
-
const code = `import { createLoader } from "@rangojs/router";
|
|
565
|
-
const MyLoader = createLoader(async () => ({ ok: true }));
|
|
566
|
-
export { MyLoader };
|
|
567
|
-
export const helperFn = () => "not a loader";
|
|
568
|
-
`;
|
|
569
|
-
const result = plugin.transform.call(clientCtx(), code, FILE_ID);
|
|
570
|
-
// Should NOT replace entire file since helperFn is not a loader
|
|
571
|
-
if (result) {
|
|
572
|
-
expect(result.code).toContain("helperFn");
|
|
573
|
-
}
|
|
574
|
-
});
|
|
575
|
-
});
|
|
576
|
-
// ---------------------------------------------------------------------------
|
|
577
|
-
// Whole-file handler stubs for const + export { X } pattern
|
|
578
|
-
// ---------------------------------------------------------------------------
|
|
579
|
-
describe("exposeInternalIds - whole-file handler stubs for const + export patterns", () => {
|
|
580
|
-
it("generates whole-file stub for static handler with const + export { X }", () => {
|
|
581
|
-
const plugin = createPlugin();
|
|
582
|
-
initDev(plugin);
|
|
583
|
-
const code = `import { Static } from "@rangojs/router";
|
|
584
|
-
const Nav = Static(() => <nav />);
|
|
585
|
-
export { Nav };
|
|
586
|
-
`;
|
|
587
|
-
const result = plugin.transform.call(clientCtx(), code, FILE_ID);
|
|
588
|
-
expect(result).toBeDefined();
|
|
589
|
-
expect(result.code).toContain('__brand: "staticHandler"');
|
|
590
|
-
expect(result.code).toContain("$$id");
|
|
591
|
-
expect(result.code).toContain("export const Nav");
|
|
592
|
-
expect(result.code).not.toContain("Static");
|
|
593
|
-
});
|
|
594
|
-
it("generates whole-file stub for prerender handler with const + export { X as Y }", () => {
|
|
595
|
-
const plugin = createPlugin();
|
|
596
|
-
initDev(plugin);
|
|
597
|
-
const code = `import { Prerender } from "@rangojs/router";
|
|
598
|
-
const InternalPage = Prerender(() => <div />);
|
|
599
|
-
export { InternalPage as PublicPage };
|
|
600
|
-
`;
|
|
601
|
-
const result = plugin.transform.call(clientCtx(), code, FILE_ID);
|
|
602
|
-
expect(result).toBeDefined();
|
|
603
|
-
expect(result.code).toContain('__brand: "prerenderHandler"');
|
|
604
|
-
expect(result.code).toContain("export const PublicPage");
|
|
605
|
-
expect(result.code).not.toContain("InternalPage");
|
|
606
|
-
expect(result.code).not.toContain("Prerender");
|
|
607
|
-
});
|
|
608
|
-
});
|
|
609
|
-
// ---------------------------------------------------------------------------
|
|
610
|
-
// Expression stubs for const + export { X } pattern
|
|
611
|
-
// ---------------------------------------------------------------------------
|
|
612
|
-
describe("exposeInternalIds - expr stubs for const + export patterns", () => {
|
|
613
|
-
it("overwrites call expression for static handler with const + export { X }", () => {
|
|
614
|
-
const plugin = createPlugin();
|
|
615
|
-
initDev(plugin);
|
|
616
|
-
// Mixed file: has a non-handler export, so whole-file stub won't apply
|
|
617
|
-
const code = `import { Static } from "@rangojs/router";
|
|
618
|
-
const Nav = Static(() => <nav />);
|
|
619
|
-
export { Nav };
|
|
620
|
-
export const PAGE_TITLE = "docs";
|
|
621
|
-
`;
|
|
622
|
-
const result = plugin.transform.call(clientCtx(), code, FILE_ID);
|
|
623
|
-
expect(result).toBeDefined();
|
|
624
|
-
expect(result.code).toContain('__brand: "staticHandler"');
|
|
625
|
-
expect(result.code).toContain("$$id");
|
|
626
|
-
// The non-handler export is preserved
|
|
627
|
-
expect(result.code).toContain("PAGE_TITLE");
|
|
628
|
-
// The call expression is replaced with a stub object
|
|
629
|
-
expect(result.code).not.toContain("Static(");
|
|
630
|
-
});
|
|
631
|
-
it("overwrites call expression for handler with const + export { X as Y }", () => {
|
|
632
|
-
const plugin = createPlugin();
|
|
633
|
-
initDev(plugin);
|
|
634
|
-
const code = `import { Static } from "@rangojs/router";
|
|
635
|
-
const Nav = Static(() => <nav />);
|
|
636
|
-
export { Nav as PublicNav };
|
|
637
|
-
export const PAGE_TITLE = "docs";
|
|
638
|
-
`;
|
|
639
|
-
const result = plugin.transform.call(clientCtx(), code, FILE_ID);
|
|
640
|
-
expect(result).toBeDefined();
|
|
641
|
-
expect(result.code).toContain('__brand: "staticHandler"');
|
|
642
|
-
expect(result.code).toContain("$$id");
|
|
643
|
-
expect(result.code).toContain("PAGE_TITLE");
|
|
644
|
-
expect(result.code).not.toContain("Static(");
|
|
645
|
-
});
|
|
646
|
-
});
|
|
647
|
-
//# sourceMappingURL=expose-internal-ids.test.js.map
|