@rangojs/router 0.0.0-experimental.dfdb0387 → 0.0.0-experimental.e9c0b2f2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +8 -0
- package/README.md +184 -31
- package/dist/__internal.d.ts +83 -0
- package/dist/__internal.d.ts.map +1 -0
- package/dist/__internal.js +19 -0
- package/dist/__internal.js.map +1 -0
- package/dist/__mocks__/version.d.ts +7 -0
- package/dist/__mocks__/version.d.ts.map +1 -0
- package/dist/__mocks__/version.js +7 -0
- package/dist/__mocks__/version.js.map +1 -0
- package/dist/__tests__/client-href.test.d.ts +2 -0
- package/dist/__tests__/client-href.test.d.ts.map +1 -0
- package/dist/__tests__/client-href.test.js +74 -0
- package/dist/__tests__/client-href.test.js.map +1 -0
- package/dist/__tests__/component-utils.test.d.ts +2 -0
- package/dist/__tests__/component-utils.test.d.ts.map +1 -0
- package/dist/__tests__/component-utils.test.js +51 -0
- package/dist/__tests__/component-utils.test.js.map +1 -0
- package/dist/__tests__/event-controller.test.d.ts +2 -0
- package/dist/__tests__/event-controller.test.d.ts.map +1 -0
- package/dist/__tests__/event-controller.test.js +538 -0
- package/dist/__tests__/event-controller.test.js.map +1 -0
- package/dist/__tests__/helpers/route-tree.d.ts +118 -0
- package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
- package/dist/__tests__/helpers/route-tree.js +374 -0
- package/dist/__tests__/helpers/route-tree.js.map +1 -0
- package/dist/__tests__/match-result.test.d.ts +2 -0
- package/dist/__tests__/match-result.test.d.ts.map +1 -0
- package/dist/__tests__/match-result.test.js +154 -0
- package/dist/__tests__/match-result.test.js.map +1 -0
- package/dist/__tests__/navigation-store.test.d.ts +2 -0
- package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
- package/dist/__tests__/navigation-store.test.js +440 -0
- package/dist/__tests__/navigation-store.test.js.map +1 -0
- package/dist/__tests__/partial-update.test.d.ts +2 -0
- package/dist/__tests__/partial-update.test.d.ts.map +1 -0
- package/dist/__tests__/partial-update.test.js +1009 -0
- package/dist/__tests__/partial-update.test.js.map +1 -0
- package/dist/__tests__/reverse-types.test.d.ts +8 -0
- package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
- package/dist/__tests__/reverse-types.test.js +656 -0
- package/dist/__tests__/reverse-types.test.js.map +1 -0
- package/dist/__tests__/route-definition.test.d.ts +2 -0
- package/dist/__tests__/route-definition.test.d.ts.map +1 -0
- package/dist/__tests__/route-definition.test.js +55 -0
- package/dist/__tests__/route-definition.test.js.map +1 -0
- package/dist/__tests__/router-helpers.test.d.ts +2 -0
- package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
- package/dist/__tests__/router-helpers.test.js +377 -0
- package/dist/__tests__/router-helpers.test.js.map +1 -0
- package/dist/__tests__/router-integration-2.test.d.ts +2 -0
- package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
- package/dist/__tests__/router-integration-2.test.js +426 -0
- package/dist/__tests__/router-integration-2.test.js.map +1 -0
- package/dist/__tests__/router-integration.test.d.ts +2 -0
- package/dist/__tests__/router-integration.test.d.ts.map +1 -0
- package/dist/__tests__/router-integration.test.js +1051 -0
- package/dist/__tests__/router-integration.test.js.map +1 -0
- package/dist/__tests__/search-params.test.d.ts +5 -0
- package/dist/__tests__/search-params.test.d.ts.map +1 -0
- package/dist/__tests__/search-params.test.js +306 -0
- package/dist/__tests__/search-params.test.js.map +1 -0
- package/dist/__tests__/segment-system.test.d.ts +2 -0
- package/dist/__tests__/segment-system.test.d.ts.map +1 -0
- package/dist/__tests__/segment-system.test.js +627 -0
- package/dist/__tests__/segment-system.test.js.map +1 -0
- package/dist/__tests__/static-handler-types.test.d.ts +8 -0
- package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
- package/dist/__tests__/static-handler-types.test.js +63 -0
- package/dist/__tests__/static-handler-types.test.js.map +1 -0
- package/dist/__tests__/urls.test.d.ts +2 -0
- package/dist/__tests__/urls.test.d.ts.map +1 -0
- package/dist/__tests__/urls.test.js +421 -0
- package/dist/__tests__/urls.test.js.map +1 -0
- package/dist/__tests__/use-mount.test.d.ts +2 -0
- package/dist/__tests__/use-mount.test.d.ts.map +1 -0
- package/dist/__tests__/use-mount.test.js +35 -0
- package/dist/__tests__/use-mount.test.js.map +1 -0
- package/dist/bin/rango.d.ts +2 -0
- package/dist/bin/rango.d.ts.map +1 -0
- package/dist/bin/rango.js +339 -106
- package/dist/bin/rango.js.map +1 -0
- package/dist/browser/event-controller.d.ts +191 -0
- package/dist/browser/event-controller.d.ts.map +1 -0
- package/dist/browser/event-controller.js +559 -0
- package/dist/browser/event-controller.js.map +1 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/link-interceptor.d.ts +38 -0
- package/dist/browser/link-interceptor.d.ts.map +1 -0
- package/dist/browser/link-interceptor.js +99 -0
- package/dist/browser/link-interceptor.js.map +1 -0
- package/dist/browser/logging.d.ts +10 -0
- package/dist/browser/logging.d.ts.map +1 -0
- package/dist/browser/logging.js +29 -0
- package/dist/browser/logging.js.map +1 -0
- package/dist/browser/lru-cache.d.ts +17 -0
- package/dist/browser/lru-cache.d.ts.map +1 -0
- package/dist/browser/lru-cache.js +50 -0
- package/dist/browser/lru-cache.js.map +1 -0
- package/dist/browser/merge-segment-loaders.d.ts +39 -0
- package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
- package/dist/browser/merge-segment-loaders.js +102 -0
- package/dist/browser/merge-segment-loaders.js.map +1 -0
- package/dist/browser/navigation-bridge.d.ts +102 -0
- package/dist/browser/navigation-bridge.d.ts.map +1 -0
- package/dist/browser/navigation-bridge.js +708 -0
- package/dist/browser/navigation-bridge.js.map +1 -0
- package/dist/browser/navigation-client.d.ts +25 -0
- package/dist/browser/navigation-client.d.ts.map +1 -0
- package/dist/browser/navigation-client.js +157 -0
- package/dist/browser/navigation-client.js.map +1 -0
- package/dist/browser/navigation-store.d.ts +101 -0
- package/dist/browser/navigation-store.d.ts.map +1 -0
- package/dist/browser/navigation-store.js +625 -0
- package/dist/browser/navigation-store.js.map +1 -0
- package/dist/browser/partial-update.d.ts +75 -0
- package/dist/browser/partial-update.d.ts.map +1 -0
- package/dist/browser/partial-update.js +426 -0
- package/dist/browser/partial-update.js.map +1 -0
- package/dist/browser/react/Link.d.ts +86 -0
- package/dist/browser/react/Link.d.ts.map +1 -0
- package/dist/browser/react/Link.js +128 -0
- package/dist/browser/react/Link.js.map +1 -0
- package/dist/browser/react/NavigationProvider.d.ts +63 -0
- package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
- package/dist/browser/react/NavigationProvider.js +216 -0
- package/dist/browser/react/NavigationProvider.js.map +1 -0
- package/dist/browser/react/ScrollRestoration.d.ts +75 -0
- package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
- package/dist/browser/react/ScrollRestoration.js +57 -0
- package/dist/browser/react/ScrollRestoration.js.map +1 -0
- package/dist/browser/react/context.d.ts +46 -0
- package/dist/browser/react/context.d.ts.map +1 -0
- package/dist/browser/react/context.js +10 -0
- package/dist/browser/react/context.js.map +1 -0
- package/dist/browser/react/index.d.ts +11 -0
- package/dist/browser/react/index.d.ts.map +1 -0
- package/dist/browser/react/index.js +22 -0
- package/dist/browser/react/index.js.map +1 -0
- package/dist/browser/react/location-state-shared.d.ts +63 -0
- package/dist/browser/react/location-state-shared.d.ts.map +1 -0
- package/dist/browser/react/location-state-shared.js +81 -0
- package/dist/browser/react/location-state-shared.js.map +1 -0
- package/dist/browser/react/location-state.d.ts +23 -0
- package/dist/browser/react/location-state.d.ts.map +1 -0
- package/dist/browser/react/location-state.js +29 -0
- package/dist/browser/react/location-state.js.map +1 -0
- package/dist/browser/react/mount-context.d.ts +24 -0
- package/dist/browser/react/mount-context.d.ts.map +1 -0
- package/dist/browser/react/mount-context.js +24 -0
- package/dist/browser/react/mount-context.js.map +1 -0
- package/dist/browser/react/use-action.d.ts +64 -0
- package/dist/browser/react/use-action.d.ts.map +1 -0
- package/dist/browser/react/use-action.js +134 -0
- package/dist/browser/react/use-action.js.map +1 -0
- package/dist/browser/react/use-client-cache.d.ts +41 -0
- package/dist/browser/react/use-client-cache.d.ts.map +1 -0
- package/{src/browser/react/use-client-cache.ts → dist/browser/react/use-client-cache.js} +9 -28
- package/dist/browser/react/use-client-cache.js.map +1 -0
- package/dist/browser/react/use-handle.d.ts +31 -0
- package/dist/browser/react/use-handle.d.ts.map +1 -0
- package/dist/browser/react/use-handle.js +144 -0
- package/dist/browser/react/use-handle.js.map +1 -0
- package/dist/browser/react/use-href.d.ts +33 -0
- package/dist/browser/react/use-href.d.ts.map +1 -0
- package/dist/browser/react/use-href.js +39 -0
- package/dist/browser/react/use-href.js.map +1 -0
- package/dist/browser/react/use-link-status.d.ts +37 -0
- package/dist/browser/react/use-link-status.d.ts.map +1 -0
- package/dist/browser/react/use-link-status.js +99 -0
- package/dist/browser/react/use-link-status.js.map +1 -0
- package/dist/browser/react/use-mount.d.ts +25 -0
- package/dist/browser/react/use-mount.d.ts.map +1 -0
- package/dist/browser/react/use-mount.js +30 -0
- package/dist/browser/react/use-mount.js.map +1 -0
- package/dist/browser/react/use-navigation.d.ts +27 -0
- package/dist/browser/react/use-navigation.d.ts.map +1 -0
- package/dist/browser/react/use-navigation.js +87 -0
- package/dist/browser/react/use-navigation.js.map +1 -0
- package/dist/browser/react/use-segments.d.ts +38 -0
- package/dist/browser/react/use-segments.d.ts.map +1 -0
- package/dist/browser/react/use-segments.js +130 -0
- package/dist/browser/react/use-segments.js.map +1 -0
- package/dist/browser/request-controller.d.ts +26 -0
- package/dist/browser/request-controller.d.ts.map +1 -0
- package/dist/browser/request-controller.js +147 -0
- package/dist/browser/request-controller.js.map +1 -0
- package/dist/browser/rsc-router.d.ts +129 -0
- package/dist/browser/rsc-router.d.ts.map +1 -0
- package/dist/browser/rsc-router.js +195 -0
- package/dist/browser/rsc-router.js.map +1 -0
- package/dist/browser/scroll-restoration.d.ts +93 -0
- package/dist/browser/scroll-restoration.d.ts.map +1 -0
- package/dist/browser/scroll-restoration.js +321 -0
- package/dist/browser/scroll-restoration.js.map +1 -0
- package/dist/browser/segment-structure-assert.d.ts +17 -0
- package/dist/browser/segment-structure-assert.d.ts.map +1 -0
- package/dist/browser/segment-structure-assert.js +59 -0
- package/dist/browser/segment-structure-assert.js.map +1 -0
- package/dist/browser/server-action-bridge.d.ts +26 -0
- package/dist/browser/server-action-bridge.d.ts.map +1 -0
- package/dist/browser/server-action-bridge.js +668 -0
- package/dist/browser/server-action-bridge.js.map +1 -0
- package/dist/browser/shallow.d.ts +12 -0
- package/dist/browser/shallow.d.ts.map +1 -0
- package/dist/browser/shallow.js +34 -0
- package/dist/browser/shallow.js.map +1 -0
- package/dist/browser/types.d.ts +369 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/browser/types.js +2 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
- package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-cli.test.js +237 -0
- package/dist/build/__tests__/generate-cli.test.js.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.js +119 -0
- package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.js +620 -0
- package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.js +308 -0
- package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
- package/dist/build/generate-manifest.d.ts +81 -0
- package/dist/build/generate-manifest.d.ts.map +1 -0
- package/dist/build/generate-manifest.js +276 -0
- package/dist/build/generate-manifest.js.map +1 -0
- package/dist/build/generate-route-types.d.ts +115 -0
- package/dist/build/generate-route-types.d.ts.map +1 -0
- package/dist/build/generate-route-types.js +740 -0
- package/dist/build/generate-route-types.js.map +1 -0
- package/dist/build/index.d.ts +21 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +21 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/route-trie.d.ts +71 -0
- package/dist/build/route-trie.d.ts.map +1 -0
- package/dist/build/route-trie.js +175 -0
- package/dist/build/route-trie.js.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.js +208 -0
- package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
- package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
- package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
- package/dist/cache/__tests__/document-cache.test.js +345 -0
- package/dist/cache/__tests__/document-cache.test.js.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
- package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
- package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-store.test.js +367 -0
- package/dist/cache/__tests__/memory-store.test.js.map +1 -0
- package/dist/cache/cache-scope.d.ts +102 -0
- package/dist/cache/cache-scope.d.ts.map +1 -0
- package/dist/cache/cache-scope.js +440 -0
- package/dist/cache/cache-scope.js.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
- package/dist/cache/cf/cf-cache-store.d.ts +165 -0
- package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
- package/dist/cache/cf/cf-cache-store.js +242 -0
- package/dist/cache/cf/cf-cache-store.js.map +1 -0
- package/dist/cache/cf/index.d.ts +14 -0
- package/dist/cache/cf/index.d.ts.map +1 -0
- package/dist/cache/cf/index.js +17 -0
- package/dist/cache/cf/index.js.map +1 -0
- package/dist/cache/document-cache.d.ts +64 -0
- package/dist/cache/document-cache.d.ts.map +1 -0
- package/dist/cache/document-cache.js +228 -0
- package/dist/cache/document-cache.js.map +1 -0
- package/dist/cache/index.d.ts +19 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +21 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/memory-segment-store.d.ts +110 -0
- package/dist/cache/memory-segment-store.d.ts.map +1 -0
- package/dist/cache/memory-segment-store.js +117 -0
- package/dist/cache/memory-segment-store.js.map +1 -0
- package/dist/cache/memory-store.d.ts +41 -0
- package/dist/cache/memory-store.d.ts.map +1 -0
- package/dist/cache/memory-store.js +191 -0
- package/dist/cache/memory-store.js.map +1 -0
- package/dist/cache/types.d.ts +317 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +12 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/client.d.ts +248 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +367 -0
- package/dist/client.js.map +1 -0
- package/dist/client.rsc.d.ts +26 -0
- package/dist/client.rsc.d.ts.map +1 -0
- package/dist/client.rsc.js +46 -0
- package/dist/client.rsc.js.map +1 -0
- package/dist/component-utils.d.ts +36 -0
- package/dist/component-utils.d.ts.map +1 -0
- package/dist/component-utils.js +61 -0
- package/dist/component-utils.js.map +1 -0
- package/dist/components/DefaultDocument.d.ts +13 -0
- package/dist/components/DefaultDocument.d.ts.map +1 -0
- package/dist/components/DefaultDocument.js +15 -0
- package/dist/components/DefaultDocument.js.map +1 -0
- package/dist/debug.d.ts +58 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +157 -0
- package/dist/debug.js.map +1 -0
- package/dist/default-error-boundary.d.ts +11 -0
- package/dist/default-error-boundary.d.ts.map +1 -0
- package/dist/default-error-boundary.js +45 -0
- package/dist/default-error-boundary.js.map +1 -0
- package/dist/deps/browser.d.ts +2 -0
- package/dist/deps/browser.d.ts.map +1 -0
- package/dist/deps/browser.js +3 -0
- package/dist/deps/browser.js.map +1 -0
- package/dist/deps/html-stream-client.d.ts +2 -0
- package/dist/deps/html-stream-client.d.ts.map +1 -0
- package/dist/deps/html-stream-client.js +3 -0
- package/dist/deps/html-stream-client.js.map +1 -0
- package/dist/deps/html-stream-server.d.ts +2 -0
- package/dist/deps/html-stream-server.d.ts.map +1 -0
- package/dist/deps/html-stream-server.js +3 -0
- package/dist/deps/html-stream-server.js.map +1 -0
- package/dist/deps/rsc.d.ts +2 -0
- package/dist/deps/rsc.d.ts.map +1 -0
- package/dist/deps/rsc.js +4 -0
- package/dist/deps/rsc.js.map +1 -0
- package/dist/deps/ssr.d.ts +2 -0
- package/dist/deps/ssr.d.ts.map +1 -0
- package/dist/deps/ssr.js +3 -0
- package/dist/deps/ssr.js.map +1 -0
- package/dist/errors.d.ts +174 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +241 -0
- package/dist/errors.js.map +1 -0
- package/dist/handle.d.ts +78 -0
- package/dist/handle.d.ts.map +1 -0
- package/dist/handle.js +82 -0
- package/dist/handle.js.map +1 -0
- package/dist/handles/MetaTags.d.ts +14 -0
- package/dist/handles/MetaTags.d.ts.map +1 -0
- package/dist/handles/MetaTags.js +136 -0
- package/dist/handles/MetaTags.js.map +1 -0
- package/{src/handles/index.ts → dist/handles/index.d.ts} +1 -2
- package/dist/handles/index.d.ts.map +1 -0
- package/dist/handles/index.js +6 -0
- package/dist/handles/index.js.map +1 -0
- package/dist/handles/meta.d.ts +39 -0
- package/dist/handles/meta.d.ts.map +1 -0
- package/dist/handles/meta.js +202 -0
- package/dist/handles/meta.js.map +1 -0
- package/dist/host/__tests__/errors.test.d.ts +2 -0
- package/dist/host/__tests__/errors.test.d.ts.map +1 -0
- package/dist/host/__tests__/errors.test.js +76 -0
- package/dist/host/__tests__/errors.test.js.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.js +251 -0
- package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
- package/dist/host/__tests__/router.test.d.ts +2 -0
- package/dist/host/__tests__/router.test.d.ts.map +1 -0
- package/dist/host/__tests__/router.test.js +241 -0
- package/dist/host/__tests__/router.test.js.map +1 -0
- package/dist/host/__tests__/testing.test.d.ts +2 -0
- package/dist/host/__tests__/testing.test.d.ts.map +1 -0
- package/dist/host/__tests__/testing.test.js +64 -0
- package/dist/host/__tests__/testing.test.js.map +1 -0
- package/dist/host/__tests__/utils.test.d.ts +2 -0
- package/dist/host/__tests__/utils.test.d.ts.map +1 -0
- package/dist/host/__tests__/utils.test.js +29 -0
- package/dist/host/__tests__/utils.test.js.map +1 -0
- package/dist/host/cookie-handler.d.ts +34 -0
- package/dist/host/cookie-handler.d.ts.map +1 -0
- package/dist/host/cookie-handler.js +124 -0
- package/dist/host/cookie-handler.js.map +1 -0
- package/dist/host/errors.d.ts +56 -0
- package/dist/host/errors.d.ts.map +1 -0
- package/dist/host/errors.js +79 -0
- package/dist/host/errors.js.map +1 -0
- package/dist/host/index.d.ts +29 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +32 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/pattern-matcher.d.ts +36 -0
- package/dist/host/pattern-matcher.d.ts.map +1 -0
- package/dist/host/pattern-matcher.js +172 -0
- package/dist/host/pattern-matcher.js.map +1 -0
- package/dist/host/router.d.ts +26 -0
- package/dist/host/router.d.ts.map +1 -0
- package/dist/host/router.js +218 -0
- package/dist/host/router.js.map +1 -0
- package/dist/host/testing.d.ts +36 -0
- package/dist/host/testing.d.ts.map +1 -0
- package/dist/host/testing.js +55 -0
- package/dist/host/testing.js.map +1 -0
- package/dist/host/types.d.ts +115 -0
- package/dist/host/types.d.ts.map +1 -0
- package/dist/host/types.js +7 -0
- package/dist/host/types.js.map +1 -0
- package/dist/host/utils.d.ts +21 -0
- package/dist/host/utils.d.ts.map +1 -0
- package/dist/host/utils.js +23 -0
- package/dist/host/utils.js.map +1 -0
- package/dist/href-client.d.ts +131 -0
- package/dist/href-client.d.ts.map +1 -0
- package/dist/href-client.js +64 -0
- package/dist/href-client.js.map +1 -0
- package/dist/href-context.d.ts +29 -0
- package/dist/href-context.d.ts.map +1 -0
- package/dist/href-context.js +21 -0
- package/dist/href-context.js.map +1 -0
- package/dist/index.d.ts +73 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -0
- package/dist/index.rsc.d.ts +32 -0
- package/dist/index.rsc.d.ts.map +1 -0
- package/dist/index.rsc.js +40 -0
- package/dist/index.rsc.js.map +1 -0
- package/dist/internal-debug.d.ts +2 -0
- package/dist/internal-debug.d.ts.map +1 -0
- package/dist/internal-debug.js +5 -0
- package/dist/internal-debug.js.map +1 -0
- package/dist/loader.d.ts +14 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +20 -0
- package/dist/loader.js.map +1 -0
- package/dist/loader.rsc.d.ts +19 -0
- package/dist/loader.rsc.d.ts.map +1 -0
- package/dist/loader.rsc.js +99 -0
- package/dist/loader.rsc.js.map +1 -0
- package/dist/network-error-thrower.d.ts +17 -0
- package/dist/network-error-thrower.d.ts.map +1 -0
- package/dist/network-error-thrower.js +14 -0
- package/dist/network-error-thrower.js.map +1 -0
- package/dist/outlet-context.d.ts +13 -0
- package/dist/outlet-context.d.ts.map +1 -0
- package/dist/outlet-context.js +3 -0
- package/dist/outlet-context.js.map +1 -0
- package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
- package/dist/prerender/__tests__/param-hash.test.js +148 -0
- package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
- package/dist/prerender/param-hash.d.ts +16 -0
- package/dist/prerender/param-hash.d.ts.map +1 -0
- package/dist/prerender/param-hash.js +36 -0
- package/dist/prerender/param-hash.js.map +1 -0
- package/dist/prerender/store.d.ts +38 -0
- package/dist/prerender/store.d.ts.map +1 -0
- package/dist/prerender/store.js +61 -0
- package/dist/prerender/store.js.map +1 -0
- package/dist/prerender.d.ts +66 -0
- package/dist/prerender.d.ts.map +1 -0
- package/dist/prerender.js +57 -0
- package/dist/prerender.js.map +1 -0
- package/dist/reverse.d.ts +196 -0
- package/dist/reverse.d.ts.map +1 -0
- package/dist/reverse.js +78 -0
- package/dist/reverse.js.map +1 -0
- package/dist/root-error-boundary.d.ts +33 -0
- package/dist/root-error-boundary.d.ts.map +1 -0
- package/dist/root-error-boundary.js +165 -0
- package/dist/root-error-boundary.js.map +1 -0
- package/dist/route-content-wrapper.d.ts +46 -0
- package/dist/route-content-wrapper.d.ts.map +1 -0
- package/dist/route-content-wrapper.js +77 -0
- package/dist/route-content-wrapper.js.map +1 -0
- package/dist/route-definition.d.ts +421 -0
- package/dist/route-definition.d.ts.map +1 -0
- package/dist/route-definition.js +868 -0
- package/dist/route-definition.js.map +1 -0
- package/dist/route-map-builder.d.ts +155 -0
- package/dist/route-map-builder.d.ts.map +1 -0
- package/dist/route-map-builder.js +237 -0
- package/dist/route-map-builder.js.map +1 -0
- package/dist/route-types.d.ts +165 -0
- package/dist/route-types.d.ts.map +1 -0
- package/dist/route-types.js +7 -0
- package/dist/route-types.js.map +1 -0
- package/dist/router/__tests__/handler-context.test.d.ts +2 -0
- package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
- package/dist/router/__tests__/handler-context.test.js +65 -0
- package/dist/router/__tests__/handler-context.test.js.map +1 -0
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
- package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
- package/dist/router/__tests__/match-context.test.d.ts +2 -0
- package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-context.test.js +92 -0
- package/dist/router/__tests__/match-context.test.js.map +1 -0
- package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-pipelines.test.js +417 -0
- package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
- package/dist/router/__tests__/match-result.test.d.ts +2 -0
- package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-result.test.js +457 -0
- package/dist/router/__tests__/match-result.test.js.map +1 -0
- package/dist/router/__tests__/on-error.test.d.ts +2 -0
- package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
- package/dist/router/__tests__/on-error.test.js +678 -0
- package/dist/router/__tests__/on-error.test.js.map +1 -0
- package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
- package/dist/router/__tests__/pattern-matching.test.js +629 -0
- package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
- package/dist/router/error-handling.d.ts +77 -0
- package/dist/router/error-handling.d.ts.map +1 -0
- package/dist/router/error-handling.js +202 -0
- package/dist/router/error-handling.js.map +1 -0
- package/dist/router/handler-context.d.ts +20 -0
- package/dist/router/handler-context.d.ts.map +1 -0
- package/dist/router/handler-context.js +198 -0
- package/dist/router/handler-context.js.map +1 -0
- package/dist/router/intercept-resolution.d.ts +66 -0
- package/dist/router/intercept-resolution.d.ts.map +1 -0
- package/dist/router/intercept-resolution.js +246 -0
- package/dist/router/intercept-resolution.js.map +1 -0
- package/dist/router/loader-resolution.d.ts +64 -0
- package/dist/router/loader-resolution.d.ts.map +1 -0
- package/dist/router/loader-resolution.js +284 -0
- package/dist/router/loader-resolution.js.map +1 -0
- package/dist/router/logging.d.ts +15 -0
- package/dist/router/logging.d.ts.map +1 -0
- package/dist/router/logging.js +99 -0
- package/dist/router/logging.js.map +1 -0
- package/dist/router/manifest.d.ts +22 -0
- package/dist/router/manifest.d.ts.map +1 -0
- package/dist/router/manifest.js +181 -0
- package/dist/router/manifest.js.map +1 -0
- package/dist/router/match-api.d.ts +35 -0
- package/dist/router/match-api.d.ts.map +1 -0
- package/dist/router/match-api.js +406 -0
- package/dist/router/match-api.js.map +1 -0
- package/dist/router/match-context.d.ts +206 -0
- package/dist/router/match-context.d.ts.map +1 -0
- package/dist/router/match-context.js +17 -0
- package/dist/router/match-context.js.map +1 -0
- package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
- package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
- package/dist/router/match-middleware/background-revalidation.js +75 -0
- package/dist/router/match-middleware/background-revalidation.js.map +1 -0
- package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
- package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
- package/dist/router/match-middleware/cache-lookup.js +257 -0
- package/dist/router/match-middleware/cache-lookup.js.map +1 -0
- package/dist/router/match-middleware/cache-store.d.ts +113 -0
- package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
- package/dist/router/match-middleware/cache-store.js +108 -0
- package/dist/router/match-middleware/cache-store.js.map +1 -0
- package/dist/router/match-middleware/index.d.ts +81 -0
- package/dist/router/match-middleware/index.d.ts.map +1 -0
- package/dist/router/match-middleware/index.js +80 -0
- package/dist/router/match-middleware/index.js.map +1 -0
- package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
- package/dist/router/match-middleware/intercept-resolution.js +134 -0
- package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
- package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
- package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
- package/dist/router/match-middleware/segment-resolution.js +53 -0
- package/dist/router/match-middleware/segment-resolution.js.map +1 -0
- package/dist/router/match-pipelines.d.ts +147 -0
- package/dist/router/match-pipelines.d.ts.map +1 -0
- package/dist/router/match-pipelines.js +82 -0
- package/dist/router/match-pipelines.js.map +1 -0
- package/dist/router/match-result.d.ts +126 -0
- package/dist/router/match-result.d.ts.map +1 -0
- package/dist/router/match-result.js +93 -0
- package/dist/router/match-result.js.map +1 -0
- package/dist/router/metrics.d.ts +20 -0
- package/dist/router/metrics.d.ts.map +1 -0
- package/dist/router/metrics.js +47 -0
- package/dist/router/metrics.js.map +1 -0
- package/dist/router/middleware.d.ts +249 -0
- package/dist/router/middleware.d.ts.map +1 -0
- package/dist/router/middleware.js +434 -0
- package/dist/router/middleware.js.map +1 -0
- package/dist/router/middleware.test.d.ts +2 -0
- package/dist/router/middleware.test.d.ts.map +1 -0
- package/dist/router/middleware.test.js +816 -0
- package/dist/router/middleware.test.js.map +1 -0
- package/dist/router/pattern-matching.d.ts +149 -0
- package/dist/router/pattern-matching.d.ts.map +1 -0
- package/dist/router/pattern-matching.js +349 -0
- package/dist/router/pattern-matching.js.map +1 -0
- package/dist/router/revalidation.d.ts +44 -0
- package/dist/router/revalidation.d.ts.map +1 -0
- package/dist/router/revalidation.js +147 -0
- package/dist/router/revalidation.js.map +1 -0
- package/dist/router/router-context.d.ts +135 -0
- package/dist/router/router-context.d.ts.map +1 -0
- package/dist/router/router-context.js +36 -0
- package/dist/router/router-context.js.map +1 -0
- package/dist/router/segment-resolution.d.ts +127 -0
- package/dist/router/segment-resolution.d.ts.map +1 -0
- package/dist/router/segment-resolution.js +919 -0
- package/dist/router/segment-resolution.js.map +1 -0
- package/dist/router/trie-matching.d.ts +40 -0
- package/dist/router/trie-matching.d.ts.map +1 -0
- package/dist/router/trie-matching.js +127 -0
- package/dist/router/trie-matching.js.map +1 -0
- package/dist/router/types.d.ts +136 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +7 -0
- package/dist/router/types.js.map +1 -0
- package/dist/router.d.ts +753 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.gen.d.ts +6 -0
- package/dist/router.gen.d.ts.map +1 -0
- package/dist/router.gen.js +6 -0
- package/dist/router.gen.js.map +1 -0
- package/dist/router.js +1304 -0
- package/dist/router.js.map +1 -0
- package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
- package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
- package/dist/rsc/__tests__/helpers.test.js +140 -0
- package/dist/rsc/__tests__/helpers.test.js.map +1 -0
- package/dist/rsc/handler.d.ts +45 -0
- package/dist/rsc/handler.d.ts.map +1 -0
- package/dist/rsc/handler.js +1172 -0
- package/dist/rsc/handler.js.map +1 -0
- package/dist/rsc/helpers.d.ts +16 -0
- package/dist/rsc/helpers.d.ts.map +1 -0
- package/dist/rsc/helpers.js +55 -0
- package/dist/rsc/helpers.js.map +1 -0
- package/dist/rsc/index.d.ts +22 -0
- package/dist/rsc/index.d.ts.map +1 -0
- package/dist/rsc/index.js +23 -0
- package/dist/rsc/index.js.map +1 -0
- package/dist/rsc/nonce.d.ts +9 -0
- package/dist/rsc/nonce.d.ts.map +1 -0
- package/dist/rsc/nonce.js +18 -0
- package/dist/rsc/nonce.js.map +1 -0
- package/dist/rsc/types.d.ts +206 -0
- package/dist/rsc/types.d.ts.map +1 -0
- package/dist/rsc/types.js +8 -0
- package/dist/rsc/types.js.map +1 -0
- package/dist/search-params.d.ts +103 -0
- package/dist/search-params.d.ts.map +1 -0
- package/dist/search-params.js +74 -0
- package/dist/search-params.js.map +1 -0
- package/dist/segment-system.d.ts +75 -0
- package/dist/segment-system.d.ts.map +1 -0
- package/dist/segment-system.js +336 -0
- package/dist/segment-system.js.map +1 -0
- package/dist/server/context.d.ts +245 -0
- package/dist/server/context.d.ts.map +1 -0
- package/dist/server/context.js +197 -0
- package/dist/server/context.js.map +1 -0
- package/dist/server/fetchable-loader-store.d.ts +18 -0
- package/dist/server/fetchable-loader-store.d.ts.map +1 -0
- package/dist/server/fetchable-loader-store.js +18 -0
- package/dist/server/fetchable-loader-store.js.map +1 -0
- package/dist/server/handle-store.d.ts +85 -0
- package/dist/server/handle-store.d.ts.map +1 -0
- package/dist/server/handle-store.js +142 -0
- package/dist/server/handle-store.js.map +1 -0
- package/dist/server/loader-registry.d.ts +55 -0
- package/dist/server/loader-registry.d.ts.map +1 -0
- package/dist/server/loader-registry.js +132 -0
- package/dist/server/loader-registry.js.map +1 -0
- package/dist/server/request-context.d.ts +226 -0
- package/dist/server/request-context.d.ts.map +1 -0
- package/dist/server/request-context.js +290 -0
- package/dist/server/request-context.js.map +1 -0
- package/dist/server/root-layout.d.ts +4 -0
- package/dist/server/root-layout.d.ts.map +1 -0
- package/dist/server/root-layout.js +5 -0
- package/dist/server/root-layout.js.map +1 -0
- package/dist/server.d.ts +15 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +20 -0
- package/dist/server.js.map +1 -0
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
- package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
- package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
- package/dist/ssr/index.d.ts +98 -0
- package/dist/ssr/index.d.ts.map +1 -0
- package/dist/ssr/index.js +158 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/static-handler.d.ts +50 -0
- package/dist/static-handler.d.ts.map +1 -0
- package/dist/static-handler.gen.d.ts +5 -0
- package/dist/static-handler.gen.d.ts.map +1 -0
- package/dist/static-handler.gen.js +5 -0
- package/dist/static-handler.gen.js.map +1 -0
- package/dist/static-handler.js +29 -0
- package/dist/static-handler.js.map +1 -0
- package/dist/testing/vitest.js +82 -0
- package/dist/theme/ThemeProvider.d.ts +20 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/ThemeProvider.js +240 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/ThemeScript.d.ts +48 -0
- package/dist/theme/ThemeScript.d.ts.map +1 -0
- package/dist/theme/ThemeScript.js +13 -0
- package/dist/theme/ThemeScript.js.map +1 -0
- package/dist/theme/__tests__/theme.test.d.ts +2 -0
- package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
- package/dist/theme/__tests__/theme.test.js +103 -0
- package/dist/theme/__tests__/theme.test.js.map +1 -0
- package/dist/theme/constants.d.ts +29 -0
- package/dist/theme/constants.d.ts.map +1 -0
- package/dist/theme/constants.js +48 -0
- package/dist/theme/constants.js.map +1 -0
- package/dist/theme/index.d.ts +31 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +36 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/theme-context.d.ts +40 -0
- package/dist/theme/theme-context.d.ts.map +1 -0
- package/dist/theme/theme-context.js +60 -0
- package/dist/theme/theme-context.js.map +1 -0
- package/dist/theme/theme-script.d.ts +27 -0
- package/dist/theme/theme-script.d.ts.map +1 -0
- package/dist/theme/theme-script.js +147 -0
- package/dist/theme/theme-script.js.map +1 -0
- package/dist/theme/types.d.ts +163 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +11 -0
- package/dist/theme/types.js.map +1 -0
- package/dist/theme/use-theme.d.ts +12 -0
- package/dist/theme/use-theme.d.ts.map +1 -0
- package/dist/theme/use-theme.js +40 -0
- package/dist/theme/use-theme.js.map +1 -0
- package/dist/types.d.ts +1479 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/dist/urls.d.ts +441 -0
- package/dist/urls.d.ts.map +1 -0
- package/dist/urls.gen.d.ts +8 -0
- package/dist/urls.gen.d.ts.map +1 -0
- package/dist/urls.gen.js +8 -0
- package/dist/urls.gen.js.map +1 -0
- package/dist/urls.js +443 -0
- package/dist/urls.js.map +1 -0
- package/dist/use-loader.d.ts +127 -0
- package/dist/use-loader.d.ts.map +1 -0
- package/dist/use-loader.js +237 -0
- package/dist/use-loader.js.map +1 -0
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
- package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
- package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
- package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
- package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
- package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
- package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
- package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
- package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
- package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
- package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
- package/dist/vite/__tests__/expose-router-id.test.js +39 -0
- package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
- package/dist/vite/ast-handler-extract.d.ts +49 -0
- package/dist/vite/ast-handler-extract.d.ts.map +1 -0
- package/dist/vite/ast-handler-extract.js +249 -0
- package/dist/vite/ast-handler-extract.js.map +1 -0
- package/dist/vite/expose-action-id.d.ts +19 -0
- package/dist/vite/expose-action-id.d.ts.map +1 -0
- package/dist/vite/expose-action-id.js +250 -0
- package/dist/vite/expose-action-id.js.map +1 -0
- package/dist/vite/expose-id-utils.d.ts +69 -0
- package/dist/vite/expose-id-utils.d.ts.map +1 -0
- package/dist/vite/expose-id-utils.js +289 -0
- package/dist/vite/expose-id-utils.js.map +1 -0
- package/dist/vite/expose-internal-ids.d.ts +22 -0
- package/dist/vite/expose-internal-ids.d.ts.map +1 -0
- package/dist/vite/expose-internal-ids.js +886 -0
- package/dist/vite/expose-internal-ids.js.map +1 -0
- package/dist/vite/index.d.ts +149 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +3247 -1128
- package/dist/vite/index.js.bak +5448 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/index.named-routes.gen.ts +103 -0
- package/dist/vite/package-resolution.d.ts +43 -0
- package/dist/vite/package-resolution.d.ts.map +1 -0
- package/dist/vite/package-resolution.js +112 -0
- package/dist/vite/package-resolution.js.map +1 -0
- package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/dist/vite/virtual-entries.d.ts +25 -0
- package/dist/vite/virtual-entries.d.ts.map +1 -0
- package/dist/vite/virtual-entries.js +110 -0
- package/dist/vite/virtual-entries.js.map +1 -0
- package/package.json +81 -12
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +64 -2
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +224 -32
- package/skills/caching/SKILL.md +279 -17
- package/skills/composability/SKILL.md +27 -2
- package/skills/css/SKILL.md +76 -0
- package/skills/debug-manifest/SKILL.md +4 -2
- package/skills/document-cache/SKILL.md +78 -55
- package/skills/handler-use/SKILL.md +364 -0
- package/skills/hooks/SKILL.md +250 -30
- package/skills/host-router/SKILL.md +125 -23
- package/skills/i18n/SKILL.md +276 -0
- package/skills/intercept/SKILL.md +50 -6
- package/skills/layout/SKILL.md +35 -9
- package/skills/links/SKILL.md +247 -17
- package/skills/loader/SKILL.md +225 -9
- package/skills/middleware/SKILL.md +50 -13
- package/skills/migrate-nextjs/SKILL.md +584 -0
- package/skills/migrate-react-router/SKILL.md +771 -0
- package/skills/mime-routes/SKILL.md +28 -1
- package/skills/observability/SKILL.md +194 -0
- package/skills/parallel/SKILL.md +77 -7
- package/skills/prerender/SKILL.md +45 -43
- package/skills/rango/SKILL.md +257 -22
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +123 -48
- package/skills/route/SKILL.md +70 -5
- package/skills/router-setup/SKILL.md +30 -6
- package/skills/scripts/SKILL.md +179 -0
- package/skills/server-actions/SKILL.md +775 -0
- package/skills/streams-and-websockets/SKILL.md +283 -0
- package/skills/tailwind/SKILL.md +27 -3
- package/skills/testing/SKILL.md +129 -0
- package/skills/testing/bindings.md +103 -0
- package/skills/testing/cache-prerender.md +127 -0
- package/skills/testing/client-components.md +124 -0
- package/skills/testing/e2e-parity.md +125 -0
- package/skills/testing/flight.md +91 -0
- package/skills/testing/handles.md +129 -0
- package/skills/testing/loader.md +128 -0
- package/skills/testing/middleware.md +99 -0
- package/skills/testing/render-handler.md +121 -0
- package/skills/testing/response-routes.md +95 -0
- package/skills/testing/reverse-and-types.md +84 -0
- package/skills/testing/server-actions.md +107 -0
- package/skills/testing/server-tree.md +128 -0
- package/skills/testing/setup.md +123 -0
- package/skills/typesafety/SKILL.md +322 -29
- package/skills/use-cache/SKILL.md +46 -14
- package/skills/vercel/SKILL.md +128 -0
- package/skills/view-transitions/SKILL.md +294 -0
- package/src/__augment-tests__/augment.ts +81 -0
- package/src/__augment-tests__/augmented.check.ts +116 -0
- package/src/__internal.ts +0 -65
- package/src/browser/action-coordinator.ts +53 -36
- package/src/browser/action-fence.ts +47 -0
- package/src/browser/app-shell.ts +39 -0
- package/src/browser/connection-warmup.ts +134 -0
- package/src/browser/cookie-name.ts +140 -0
- package/src/browser/event-controller.ts +192 -150
- package/src/browser/history-state.ts +21 -0
- package/src/browser/index.ts +3 -3
- package/src/browser/invalidate-client-cache.ts +52 -0
- package/src/browser/navigation-bridge.ts +50 -11
- package/src/browser/navigation-client.ts +113 -78
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +33 -59
- package/src/browser/navigation-transaction.ts +9 -59
- package/src/browser/partial-update.ts +109 -122
- package/src/browser/prefetch/cache.ts +193 -68
- package/src/browser/prefetch/fetch.ts +293 -59
- package/src/browser/prefetch/queue.ts +42 -8
- package/src/browser/rango-state.ts +158 -76
- package/src/browser/react/Link.tsx +48 -20
- package/src/browser/react/NavigationProvider.tsx +95 -117
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/filter-segment-order.ts +66 -7
- package/src/browser/react/index.ts +0 -48
- package/src/browser/react/location-state-shared.ts +178 -8
- package/src/browser/react/location-state.ts +39 -14
- package/src/browser/react/use-action.ts +6 -15
- package/src/browser/react/use-handle.ts +17 -14
- package/src/browser/react/use-href.tsx +8 -1
- package/src/browser/react/use-link-status.ts +33 -8
- package/src/browser/react/use-navigation.ts +32 -7
- package/src/browser/react/use-params.ts +20 -10
- package/src/browser/react/use-reverse.ts +106 -0
- package/src/browser/react/use-router.ts +25 -3
- package/src/browser/react/use-search-params.ts +0 -5
- package/src/browser/react/use-segments.ts +11 -21
- package/src/browser/response-adapter.ts +66 -4
- package/src/browser/rsc-router.tsx +91 -24
- package/src/browser/scroll-restoration.ts +30 -17
- package/src/browser/segment-reconciler.ts +10 -14
- package/src/browser/segment-structure-assert.ts +2 -2
- package/src/browser/server-action-bridge.ts +214 -55
- package/src/browser/types.ts +48 -8
- package/src/browser/validate-redirect-origin.ts +43 -16
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +60 -35
- package/src/build/generate-route-types.ts +3 -1
- package/src/build/index.ts +8 -2
- package/src/build/prefix-tree-utils.ts +123 -0
- package/src/build/route-trie.ts +165 -36
- package/src/build/route-types/ast-route-extraction.ts +15 -8
- package/src/build/route-types/codegen.ts +16 -5
- package/src/build/route-types/include-resolution.ts +117 -23
- package/src/build/route-types/param-extraction.ts +6 -3
- package/src/build/route-types/per-module-writer.ts +22 -6
- package/src/build/route-types/router-processing.ts +128 -51
- package/src/build/route-types/scan-filter.ts +1 -1
- package/src/build/route-types/source-scan.ts +216 -0
- package/src/build/runtime-discovery.ts +9 -20
- package/src/cache/cache-error.ts +104 -0
- package/src/cache/cache-key-utils.ts +29 -13
- package/src/cache/cache-policy.ts +108 -34
- package/src/cache/cache-runtime.ts +199 -37
- package/src/cache/cache-scope.ts +188 -82
- package/src/cache/cache-tag.ts +103 -0
- package/src/cache/cf/cf-base64.ts +33 -0
- package/src/cache/cf/cf-cache-constants.ts +127 -0
- package/src/cache/cf/cf-cache-store.ts +1989 -378
- package/src/cache/cf/cf-cache-types.ts +349 -0
- package/src/cache/cf/cf-kv-utils.ts +46 -0
- package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
- package/src/cache/cf/index.ts +6 -16
- package/src/cache/document-cache.ts +72 -20
- package/src/cache/handle-snapshot.ts +70 -0
- package/src/cache/index.ts +22 -20
- package/src/cache/memory-segment-store.ts +136 -37
- package/src/cache/profile-registry.ts +31 -31
- package/src/cache/read-through-swr.ts +41 -11
- package/src/cache/segment-codec.ts +9 -17
- package/src/cache/tag-invalidation.ts +230 -0
- package/src/cache/types.ts +37 -100
- package/src/cache/vercel/index.ts +11 -0
- package/src/cache/vercel/vercel-cache-store.ts +855 -0
- package/src/client.rsc.tsx +44 -21
- package/src/client.tsx +118 -235
- package/src/cloudflare/index.ts +11 -0
- package/src/cloudflare/tracing.ts +109 -0
- package/src/component-utils.ts +19 -0
- package/src/components/DefaultDocument.tsx +8 -2
- package/src/context-var.ts +18 -6
- package/src/decode-loader-results.ts +52 -0
- package/src/defer.ts +196 -0
- package/src/deps/ssr.ts +0 -1
- package/src/encode-kv.ts +49 -0
- package/src/errors.ts +30 -4
- package/src/escape-script.ts +52 -0
- package/src/handle.ts +31 -23
- package/src/handles/MetaTags.tsx +56 -19
- package/src/handles/Scripts.tsx +183 -0
- package/src/handles/breadcrumbs.ts +37 -8
- package/src/handles/is-thenable.ts +19 -0
- package/src/handles/meta.ts +51 -40
- package/src/handles/script.ts +244 -0
- package/src/host/cookie-handler.ts +9 -60
- package/src/host/errors.ts +0 -24
- package/src/host/index.ts +8 -2
- package/src/host/pattern-matcher.ts +23 -52
- package/src/host/router.ts +107 -99
- package/src/host/testing.ts +40 -27
- package/src/host/types.ts +37 -4
- package/src/host/utils.ts +1 -1
- package/src/href-client.ts +137 -22
- package/src/index.rsc.ts +90 -11
- package/src/index.ts +125 -19
- package/src/internal-debug.ts +2 -4
- package/src/loader-store.ts +500 -0
- package/src/loader.rsc.ts +20 -13
- package/src/loader.ts +12 -11
- package/src/missing-id-error.ts +68 -0
- package/src/network-error-thrower.tsx +1 -6
- package/src/outlet-context.ts +1 -1
- package/src/outlet-provider.tsx +1 -5
- package/src/prerender/param-hash.ts +16 -16
- package/src/prerender/store.ts +32 -37
- package/src/prerender.ts +61 -6
- package/src/redirect-origin.ts +100 -0
- package/src/regex-escape.ts +8 -0
- package/src/response-utils.ts +62 -0
- package/src/reverse.ts +65 -36
- package/src/root-error-boundary.tsx +1 -19
- package/src/route-content-wrapper.tsx +7 -72
- package/src/route-definition/dsl-helpers.ts +418 -273
- package/src/route-definition/helper-factories.ts +29 -139
- package/src/route-definition/helpers-types.ts +103 -31
- package/src/route-definition/redirect.ts +44 -11
- package/src/route-definition/resolve-handler-use.ts +12 -0
- package/src/route-definition/use-item-types.ts +32 -0
- package/src/route-map-builder.ts +0 -16
- package/src/route-types.ts +26 -41
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +73 -25
- package/src/router/error-handling.ts +45 -18
- package/src/router/find-match.ts +44 -23
- package/src/router/handler-context.ts +27 -39
- package/src/router/instrument.ts +350 -0
- package/src/router/intercept-resolution.ts +39 -20
- package/src/router/lazy-includes.ts +15 -52
- package/src/router/loader-resolution.ts +155 -72
- package/src/router/logging.ts +0 -6
- package/src/router/manifest.ts +40 -42
- package/src/router/match-api.ts +4 -23
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +58 -58
- package/src/router/match-middleware/background-revalidation.ts +6 -7
- package/src/router/match-middleware/cache-lookup.ts +161 -286
- package/src/router/match-middleware/cache-store.ts +31 -34
- package/src/router/match-middleware/intercept-resolution.ts +0 -22
- package/src/router/match-middleware/segment-resolution.ts +0 -22
- package/src/router/match-pipelines.ts +1 -42
- package/src/router/match-result.ts +44 -74
- package/src/router/metrics.ts +0 -34
- package/src/router/middleware-types.ts +7 -134
- package/src/router/middleware.ts +266 -166
- package/src/router/navigation-snapshot.ts +0 -51
- package/src/router/params-util.ts +23 -0
- package/src/router/pattern-matching.ts +132 -90
- package/src/router/prefetch-cache-ttl.ts +51 -0
- package/src/router/prerender-match.ts +104 -65
- package/src/router/preview-match.ts +3 -1
- package/src/router/request-classification.ts +28 -62
- package/src/router/revalidation.ts +123 -73
- package/src/router/route-snapshot.ts +0 -1
- package/src/router/router-context.ts +3 -28
- package/src/router/router-interfaces.ts +83 -35
- package/src/router/router-options.ts +136 -5
- package/src/router/router-registry.ts +2 -5
- package/src/router/segment-resolution/fresh.ts +93 -84
- package/src/router/segment-resolution/helpers.ts +86 -6
- package/src/router/segment-resolution/loader-cache.ts +62 -37
- package/src/router/segment-resolution/revalidation.ts +269 -320
- package/src/router/segment-resolution/static-store.ts +19 -5
- package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
- package/src/router/segment-resolution/view-transition-default.ts +36 -0
- package/src/router/segment-resolution.ts +5 -1
- package/src/router/segment-wrappers.ts +6 -5
- package/src/router/state-cookie-name.ts +33 -0
- package/src/router/substitute-pattern-params.ts +56 -0
- package/src/router/telemetry-otel.ts +161 -199
- package/src/router/telemetry.ts +96 -19
- package/src/router/timeout.ts +0 -20
- package/src/router/tracing.ts +206 -0
- package/src/router/trie-matching.ts +163 -59
- package/src/router/types.ts +9 -63
- package/src/router/url-params.ts +44 -0
- package/src/router.ts +110 -55
- package/src/rsc/handler-context.ts +3 -2
- package/src/rsc/handler.ts +266 -219
- package/src/rsc/helpers.ts +168 -46
- package/src/rsc/index.ts +2 -5
- package/src/rsc/json-route-result.ts +38 -0
- package/src/rsc/loader-fetch.ts +114 -38
- package/src/rsc/manifest-init.ts +28 -41
- package/src/rsc/origin-guard.ts +39 -25
- package/src/rsc/progressive-enhancement.ts +63 -9
- package/src/rsc/redirect-guard.ts +99 -0
- package/src/rsc/response-cache-serve.ts +238 -0
- package/src/rsc/response-error.ts +79 -12
- package/src/rsc/response-route-handler.ts +99 -189
- package/src/rsc/rsc-rendering.ts +99 -75
- package/src/rsc/runtime-warnings.ts +23 -10
- package/src/rsc/server-action.ts +258 -115
- package/src/rsc/ssr-setup.ts +16 -0
- package/src/rsc/types.ts +23 -5
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +35 -30
- package/src/segment-content-promise.ts +67 -0
- package/src/segment-loader-promise.ts +149 -0
- package/src/segment-system.tsx +218 -202
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +175 -53
- package/src/server/cookie-parse.ts +32 -0
- package/src/server/cookie-store.ts +80 -5
- package/src/server/handle-store.ts +21 -38
- package/src/server/loader-registry.ts +21 -42
- package/src/server/request-context.ts +235 -175
- package/src/ssr/index.tsx +21 -16
- package/src/static-handler.ts +10 -13
- package/src/testing/cache-status.ts +162 -0
- package/src/testing/collect-handle.ts +40 -0
- package/src/testing/dispatch.ts +701 -0
- package/src/testing/dom.entry.ts +22 -0
- package/src/testing/e2e/fixture.ts +188 -0
- package/src/testing/e2e/index.ts +128 -0
- package/src/testing/e2e/matchers.ts +35 -0
- package/src/testing/e2e/page-helpers.ts +272 -0
- package/src/testing/e2e/parity.ts +387 -0
- package/src/testing/e2e/server.ts +195 -0
- package/src/testing/flight-matchers.ts +97 -0
- package/src/testing/flight-normalize.ts +11 -0
- package/src/testing/flight-runtime.d.ts +57 -0
- package/src/testing/flight-tree.ts +682 -0
- package/src/testing/flight.entry.ts +52 -0
- package/src/testing/flight.ts +257 -0
- package/src/testing/generated-routes.ts +183 -0
- package/src/testing/index.ts +99 -0
- package/src/testing/internal/context.ts +371 -0
- package/src/testing/internal/flight-client-globals.ts +30 -0
- package/src/testing/internal/seed-vars.ts +54 -0
- package/src/testing/render-handler.ts +343 -0
- package/src/testing/render-route.tsx +581 -0
- package/src/testing/run-loader.ts +385 -0
- package/src/testing/run-middleware.ts +205 -0
- package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
- package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
- package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
- package/src/testing/vitest-stubs/version.ts +5 -0
- package/src/testing/vitest.ts +305 -0
- package/src/theme/ThemeProvider.tsx +20 -58
- package/src/theme/ThemeScript.tsx +7 -9
- package/src/theme/constants.ts +52 -13
- package/src/theme/index.ts +0 -7
- package/src/theme/theme-context.ts +1 -5
- package/src/theme/theme-script.ts +22 -21
- package/src/theme/use-theme.ts +0 -3
- package/src/types/boundaries.ts +0 -35
- package/src/types/cache-types.ts +13 -4
- package/src/types/error-types.ts +30 -90
- package/src/types/global-namespace.ts +54 -41
- package/src/types/handler-context.ts +109 -61
- package/src/types/index.ts +1 -10
- package/src/types/loader-types.ts +11 -9
- package/src/types/request-scope.ts +112 -0
- package/src/types/route-config.ts +6 -50
- package/src/types/route-entry.ts +11 -6
- package/src/types/segments.ts +35 -15
- package/src/urls/include-helper.ts +33 -70
- package/src/urls/index.ts +1 -11
- package/src/urls/path-helper-types.ts +49 -9
- package/src/urls/path-helper.ts +17 -106
- package/src/urls/pattern-types.ts +36 -19
- package/src/urls/response-types.ts +22 -29
- package/src/urls/type-extraction.ts +58 -139
- package/src/urls/urls-function.ts +1 -18
- package/src/use-loader.tsx +292 -107
- package/src/vercel/index.ts +11 -0
- package/src/vercel/tracing.ts +88 -0
- package/src/vite/debug.ts +185 -0
- package/src/vite/discovery/bundle-postprocess.ts +8 -7
- package/src/vite/discovery/discover-routers.ts +126 -85
- package/src/vite/discovery/discovery-errors.ts +194 -0
- package/src/vite/discovery/gate-state.ts +171 -0
- package/src/vite/discovery/prerender-collection.ts +96 -68
- package/src/vite/discovery/route-types-writer.ts +40 -84
- package/src/vite/discovery/self-gen-tracking.ts +27 -1
- package/src/vite/discovery/state.ts +45 -1
- package/src/vite/discovery/virtual-module-codegen.ts +14 -34
- package/src/vite/index.ts +4 -0
- package/src/vite/plugin-types.ts +210 -10
- package/src/vite/plugins/cjs-to-esm.ts +16 -19
- package/src/vite/plugins/client-ref-dedup.ts +16 -11
- package/src/vite/plugins/client-ref-hashing.ts +28 -15
- package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
- package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
- package/src/vite/plugins/expose-action-id.ts +48 -95
- package/src/vite/plugins/expose-id-utils.ts +88 -55
- package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
- package/src/vite/plugins/expose-ids/handler-transform.ts +11 -90
- package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
- package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
- package/src/vite/plugins/expose-internal-ids.ts +505 -486
- package/src/vite/plugins/performance-tracks.ts +26 -25
- package/src/vite/plugins/refresh-cmd.ts +1 -1
- package/src/vite/plugins/use-cache-transform.ts +73 -83
- package/src/vite/plugins/vercel-output.ts +295 -0
- package/src/vite/plugins/version-injector.ts +21 -25
- package/src/vite/plugins/version-plugin.ts +37 -40
- package/src/vite/plugins/virtual-entries.ts +71 -18
- package/src/vite/rango.ts +225 -137
- package/src/vite/router-discovery.ts +769 -106
- package/src/vite/utils/ast-handler-extract.ts +26 -35
- package/src/vite/utils/banner.ts +1 -1
- package/src/vite/utils/bundle-analysis.ts +10 -15
- package/src/vite/utils/client-chunks.ts +184 -0
- package/src/vite/utils/directive-prologue.ts +40 -0
- package/src/vite/utils/forward-user-plugins.ts +171 -0
- package/src/vite/utils/manifest-utils.ts +4 -59
- package/src/vite/utils/package-resolution.ts +20 -52
- package/src/vite/utils/prerender-utils.ts +67 -38
- package/src/vite/utils/shared-utils.ts +95 -43
- package/src/browser/action-response-classifier.ts +0 -99
- package/src/browser/shallow.ts +0 -40
- package/src/router/middleware-cookies.ts +0 -55
package/dist/bin/rango.js
CHANGED
|
@@ -22,10 +22,10 @@ function extractParamsFromPattern(pattern) {
|
|
|
22
22
|
function formatRouteEntry(key, pattern, _params, search) {
|
|
23
23
|
const hasSearch = search && Object.keys(search).length > 0;
|
|
24
24
|
if (!hasSearch) {
|
|
25
|
-
return ` ${key}:
|
|
25
|
+
return ` ${key}: ${JSON.stringify(pattern)},`;
|
|
26
26
|
}
|
|
27
|
-
const searchBody = Object.entries(search).map(([k, v]) => `${k}:
|
|
28
|
-
return ` ${key}: { path:
|
|
27
|
+
const searchBody = Object.entries(search).map(([k, v]) => `${k}: ${JSON.stringify(v)}`).join(", ");
|
|
28
|
+
return ` ${key}: { path: ${JSON.stringify(pattern)}, search: { ${searchBody} } },`;
|
|
29
29
|
}
|
|
30
30
|
var init_param_extraction = __esm({
|
|
31
31
|
"src/build/route-types/param-extraction.ts"() {
|
|
@@ -59,8 +59,8 @@ var init_ast_helpers = __esm({
|
|
|
59
59
|
|
|
60
60
|
// src/build/route-types/ast-route-extraction.ts
|
|
61
61
|
import ts2 from "typescript";
|
|
62
|
-
function extractRoutesFromSource(code) {
|
|
63
|
-
const sourceFile = ts2.createSourceFile(
|
|
62
|
+
function extractRoutesFromSource(code, sourceFileArg) {
|
|
63
|
+
const sourceFile = sourceFileArg ?? ts2.createSourceFile(
|
|
64
64
|
"input.tsx",
|
|
65
65
|
code,
|
|
66
66
|
ts2.ScriptTarget.Latest,
|
|
@@ -139,7 +139,7 @@ function generatePerModuleTypesSource(routes) {
|
|
|
139
139
|
const valid = routes.filter(({ name }) => {
|
|
140
140
|
if (!name || /["'\\`\n\r]/.test(name)) {
|
|
141
141
|
console.warn(
|
|
142
|
-
`[
|
|
142
|
+
`[rango] Skipping route with invalid name: ${JSON.stringify(name)}`
|
|
143
143
|
);
|
|
144
144
|
return false;
|
|
145
145
|
}
|
|
@@ -149,7 +149,7 @@ function generatePerModuleTypesSource(routes) {
|
|
|
149
149
|
for (const { name, pattern, params, search } of valid) {
|
|
150
150
|
if (deduped.has(name)) {
|
|
151
151
|
console.warn(
|
|
152
|
-
`[
|
|
152
|
+
`[rango] Duplicate route name "${name}" \u2014 keeping first definition`
|
|
153
153
|
);
|
|
154
154
|
continue;
|
|
155
155
|
}
|
|
@@ -185,9 +185,13 @@ export const NamedRoutes = {
|
|
|
185
185
|
${objectBody}
|
|
186
186
|
} as const;
|
|
187
187
|
|
|
188
|
+
// Aliased so the augmentation below does not pay a homomorphic mapped-type
|
|
189
|
+
// instantiation per route; \`as const\` already makes the members readonly.
|
|
190
|
+
type NamedRoutesShape = typeof NamedRoutes;
|
|
191
|
+
|
|
188
192
|
declare global {
|
|
189
|
-
namespace
|
|
190
|
-
interface GeneratedRouteMap extends
|
|
193
|
+
namespace Rango {
|
|
194
|
+
interface GeneratedRouteMap extends NamedRoutesShape {}
|
|
191
195
|
}
|
|
192
196
|
}
|
|
193
197
|
`;
|
|
@@ -211,7 +215,7 @@ function findTsFiles(dir, filter) {
|
|
|
211
215
|
entries = readdirSync(dir, { withFileTypes: true });
|
|
212
216
|
} catch (err) {
|
|
213
217
|
console.warn(
|
|
214
|
-
`[
|
|
218
|
+
`[rango] Failed to scan directory ${dir}: ${err.message}`
|
|
215
219
|
);
|
|
216
220
|
return results;
|
|
217
221
|
}
|
|
@@ -238,6 +242,33 @@ var init_scan_filter = __esm({
|
|
|
238
242
|
import { readFileSync, existsSync } from "node:fs";
|
|
239
243
|
import { dirname, resolve } from "node:path";
|
|
240
244
|
import ts3 from "typescript";
|
|
245
|
+
function createScanMemo() {
|
|
246
|
+
return { files: /* @__PURE__ */ new Map(), blockSourceFiles: /* @__PURE__ */ new Map() };
|
|
247
|
+
}
|
|
248
|
+
function parseBlock(memo, block) {
|
|
249
|
+
if (memo) {
|
|
250
|
+
const cached = memo.blockSourceFiles.get(block);
|
|
251
|
+
if (cached) return cached;
|
|
252
|
+
}
|
|
253
|
+
const sf = ts3.createSourceFile(
|
|
254
|
+
"input.tsx",
|
|
255
|
+
block,
|
|
256
|
+
ts3.ScriptTarget.Latest,
|
|
257
|
+
true,
|
|
258
|
+
ts3.ScriptKind.TSX
|
|
259
|
+
);
|
|
260
|
+
if (memo) memo.blockSourceFiles.set(block, sf);
|
|
261
|
+
return sf;
|
|
262
|
+
}
|
|
263
|
+
function readSourceMemoized(memo, realPath) {
|
|
264
|
+
if (memo) {
|
|
265
|
+
const cached = memo.files.get(realPath);
|
|
266
|
+
if (cached !== void 0) return cached;
|
|
267
|
+
}
|
|
268
|
+
const source = readFileSync(realPath, "utf-8");
|
|
269
|
+
if (memo) memo.files.set(realPath, source);
|
|
270
|
+
return source;
|
|
271
|
+
}
|
|
241
272
|
function extractNamePrefixFromInclude(node) {
|
|
242
273
|
if (node.arguments.length >= 3) {
|
|
243
274
|
const thirdArg = node.arguments[2];
|
|
@@ -253,8 +284,8 @@ function extractNamePrefixFromInclude(node) {
|
|
|
253
284
|
}
|
|
254
285
|
return null;
|
|
255
286
|
}
|
|
256
|
-
function extractIncludesWithDiagnostics(code) {
|
|
257
|
-
const sourceFile = ts3.createSourceFile(
|
|
287
|
+
function extractIncludesWithDiagnostics(code, sourceFileArg) {
|
|
288
|
+
const sourceFile = sourceFileArg ?? ts3.createSourceFile(
|
|
258
289
|
"input.tsx",
|
|
259
290
|
code,
|
|
260
291
|
ts3.ScriptTarget.Latest,
|
|
@@ -308,7 +339,7 @@ function extractIncludesWithDiagnostics(code) {
|
|
|
308
339
|
return { resolved, unresolvable };
|
|
309
340
|
}
|
|
310
341
|
function resolveImportedVariable(code, localName) {
|
|
311
|
-
const importRegex = /import\s
|
|
342
|
+
const importRegex = /import\s*(?:[\w$]+\s*,\s*)?\{([^}]+)\}\s*from\s*["']([^"']+)["']/g;
|
|
312
343
|
let match;
|
|
313
344
|
while ((match = importRegex.exec(code)) !== null) {
|
|
314
345
|
const imports = match[1];
|
|
@@ -345,8 +376,8 @@ function resolveImportPath(importSpec, fromFile) {
|
|
|
345
376
|
}
|
|
346
377
|
return null;
|
|
347
378
|
}
|
|
348
|
-
function extractUrlsBlockForVariable(code, varName) {
|
|
349
|
-
const sourceFile = ts3.createSourceFile(
|
|
379
|
+
function extractUrlsBlockForVariable(code, varName, sourceFileArg) {
|
|
380
|
+
const sourceFile = sourceFileArg ?? ts3.createSourceFile(
|
|
350
381
|
"input.tsx",
|
|
351
382
|
code,
|
|
352
383
|
ts3.ScriptTarget.Latest,
|
|
@@ -368,16 +399,20 @@ function extractUrlsBlockForVariable(code, varName) {
|
|
|
368
399
|
visit(sourceFile);
|
|
369
400
|
return result;
|
|
370
401
|
}
|
|
371
|
-
function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSchemasOut, diagnosticsOut) {
|
|
402
|
+
function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSchemasOut, diagnosticsOut, memo) {
|
|
372
403
|
const routeMap = {};
|
|
373
|
-
const
|
|
404
|
+
const blockSourceFile = parseBlock(memo, block);
|
|
405
|
+
const localRoutes = extractRoutesFromSource(block, blockSourceFile);
|
|
374
406
|
for (const { name, pattern, search } of localRoutes) {
|
|
375
407
|
routeMap[name] = pattern;
|
|
376
408
|
if (search && searchSchemasOut) {
|
|
377
409
|
searchSchemasOut[name] = search;
|
|
378
410
|
}
|
|
379
411
|
}
|
|
380
|
-
const { resolved: includes, unresolvable } = extractIncludesWithDiagnostics(
|
|
412
|
+
const { resolved: includes, unresolvable } = extractIncludesWithDiagnostics(
|
|
413
|
+
block,
|
|
414
|
+
blockSourceFile
|
|
415
|
+
);
|
|
381
416
|
if (diagnosticsOut) {
|
|
382
417
|
for (const entry of unresolvable) {
|
|
383
418
|
diagnosticsOut.push({ ...entry, sourceFile: filePath });
|
|
@@ -404,12 +439,15 @@ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSche
|
|
|
404
439
|
targetFile,
|
|
405
440
|
imported.exportedName,
|
|
406
441
|
visited,
|
|
407
|
-
diagnosticsOut
|
|
442
|
+
diagnosticsOut,
|
|
443
|
+
void 0,
|
|
444
|
+
memo
|
|
408
445
|
);
|
|
409
446
|
} else {
|
|
410
447
|
const sameFileBlock = extractUrlsBlockForVariable(
|
|
411
448
|
fullSource,
|
|
412
|
-
variableName
|
|
449
|
+
variableName,
|
|
450
|
+
parseBlock(memo, fullSource)
|
|
413
451
|
);
|
|
414
452
|
if (!sameFileBlock) {
|
|
415
453
|
if (diagnosticsOut) {
|
|
@@ -427,7 +465,9 @@ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSche
|
|
|
427
465
|
filePath,
|
|
428
466
|
variableName,
|
|
429
467
|
visited,
|
|
430
|
-
diagnosticsOut
|
|
468
|
+
diagnosticsOut,
|
|
469
|
+
void 0,
|
|
470
|
+
memo
|
|
431
471
|
);
|
|
432
472
|
}
|
|
433
473
|
if (namePrefix === null) {
|
|
@@ -451,18 +491,19 @@ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSche
|
|
|
451
491
|
}
|
|
452
492
|
return routeMap;
|
|
453
493
|
}
|
|
454
|
-
function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagnosticsOut, inlineBlock) {
|
|
494
|
+
function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagnosticsOut, inlineBlock, memo) {
|
|
455
495
|
visited = visited ?? /* @__PURE__ */ new Set();
|
|
496
|
+
memo = memo ?? createScanMemo();
|
|
456
497
|
const realPath = resolve(filePath);
|
|
457
498
|
const key = variableName ? `${realPath}:${variableName}` : realPath;
|
|
458
499
|
if (visited.has(key)) {
|
|
459
|
-
console.warn(`[
|
|
500
|
+
console.warn(`[rango] Circular include detected, skipping: ${key}`);
|
|
460
501
|
return { routes: {}, searchSchemas: {} };
|
|
461
502
|
}
|
|
462
503
|
visited.add(key);
|
|
463
504
|
let source;
|
|
464
505
|
try {
|
|
465
|
-
source =
|
|
506
|
+
source = readSourceMemoized(memo, realPath);
|
|
466
507
|
} catch {
|
|
467
508
|
return { routes: {}, searchSchemas: {} };
|
|
468
509
|
}
|
|
@@ -470,7 +511,11 @@ function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagno
|
|
|
470
511
|
if (inlineBlock) {
|
|
471
512
|
block = inlineBlock;
|
|
472
513
|
} else if (variableName) {
|
|
473
|
-
const extracted = extractUrlsBlockForVariable(
|
|
514
|
+
const extracted = extractUrlsBlockForVariable(
|
|
515
|
+
source,
|
|
516
|
+
variableName,
|
|
517
|
+
parseBlock(memo, source)
|
|
518
|
+
);
|
|
474
519
|
if (!extracted) return { routes: {}, searchSchemas: {} };
|
|
475
520
|
block = extracted;
|
|
476
521
|
} else {
|
|
@@ -483,7 +528,8 @@ function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagno
|
|
|
483
528
|
realPath,
|
|
484
529
|
visited,
|
|
485
530
|
searchSchemas,
|
|
486
|
-
diagnosticsOut
|
|
531
|
+
diagnosticsOut,
|
|
532
|
+
memo
|
|
487
533
|
);
|
|
488
534
|
visited.delete(key);
|
|
489
535
|
return { routes, searchSchemas };
|
|
@@ -528,8 +574,16 @@ function writePerModuleRouteTypesForFile(filePath) {
|
|
|
528
574
|
let routes;
|
|
529
575
|
if (varNames.length > 0) {
|
|
530
576
|
routes = [];
|
|
577
|
+
const memo = createScanMemo();
|
|
531
578
|
for (const varName of varNames) {
|
|
532
|
-
const { routes: routeMap, searchSchemas } = buildCombinedRouteMapWithSearch(
|
|
579
|
+
const { routes: routeMap, searchSchemas } = buildCombinedRouteMapWithSearch(
|
|
580
|
+
filePath,
|
|
581
|
+
varName,
|
|
582
|
+
void 0,
|
|
583
|
+
void 0,
|
|
584
|
+
void 0,
|
|
585
|
+
memo
|
|
586
|
+
);
|
|
533
587
|
for (const [name, pattern] of Object.entries(routeMap)) {
|
|
534
588
|
const params = extractParamsFromPattern(pattern);
|
|
535
589
|
routes.push({
|
|
@@ -543,12 +597,12 @@ function writePerModuleRouteTypesForFile(filePath) {
|
|
|
543
597
|
} else {
|
|
544
598
|
routes = extractRoutesFromSource(source);
|
|
545
599
|
}
|
|
546
|
-
const genPath = filePath.replace(/\.(tsx?)$/, ".gen.ts");
|
|
600
|
+
const genPath = filePath.replace(/\.(tsx?|jsx?)$/, ".gen.ts");
|
|
547
601
|
if (routes.length === 0) {
|
|
548
602
|
if (varNames.length > 0 && !existsSync2(genPath)) {
|
|
549
603
|
writeFileSync(genPath, generatePerModuleTypesSource([]));
|
|
550
604
|
console.log(
|
|
551
|
-
`[
|
|
605
|
+
`[rango] Generated route types (placeholder) -> ${genPath}`
|
|
552
606
|
);
|
|
553
607
|
}
|
|
554
608
|
return;
|
|
@@ -557,11 +611,11 @@ function writePerModuleRouteTypesForFile(filePath) {
|
|
|
557
611
|
const existing = existsSync2(genPath) ? readFileSync2(genPath, "utf-8") : null;
|
|
558
612
|
if (existing !== genSource) {
|
|
559
613
|
writeFileSync(genPath, genSource);
|
|
560
|
-
console.log(`[
|
|
614
|
+
console.log(`[rango] Generated route types -> ${genPath}`);
|
|
561
615
|
}
|
|
562
616
|
} catch (err) {
|
|
563
617
|
console.warn(
|
|
564
|
-
`[
|
|
618
|
+
`[rango] Failed to generate route types for ${filePath}: ${err.message}`
|
|
565
619
|
);
|
|
566
620
|
}
|
|
567
621
|
}
|
|
@@ -576,6 +630,131 @@ var init_per_module_writer = __esm({
|
|
|
576
630
|
}
|
|
577
631
|
});
|
|
578
632
|
|
|
633
|
+
// src/build/route-types/source-scan.ts
|
|
634
|
+
function isLineTerminator(ch) {
|
|
635
|
+
const c = ch.charCodeAt(0);
|
|
636
|
+
return c === 10 || c === 13 || c === 8232 || c === 8233;
|
|
637
|
+
}
|
|
638
|
+
function isRegexPositionAt(code, slashPos, prevChar) {
|
|
639
|
+
if (prevChar === void 0) return true;
|
|
640
|
+
if (prevChar === ")" || prevChar === "]" || prevChar === "}") return false;
|
|
641
|
+
if (!/[\w$]/.test(prevChar)) return true;
|
|
642
|
+
let k = slashPos - 1;
|
|
643
|
+
while (k >= 0 && /\s/.test(code[k])) k--;
|
|
644
|
+
const wordEnd = k + 1;
|
|
645
|
+
while (k >= 0 && /[\w$]/.test(code[k])) k--;
|
|
646
|
+
return REGEX_PRECEDING_KEYWORDS.has(code.slice(k + 1, wordEnd));
|
|
647
|
+
}
|
|
648
|
+
function makeCodeClassifier(code) {
|
|
649
|
+
const n = code.length;
|
|
650
|
+
let i = 0;
|
|
651
|
+
let skipStart = -1;
|
|
652
|
+
let skipEnd = -1;
|
|
653
|
+
let lastSig;
|
|
654
|
+
return (q) => {
|
|
655
|
+
if (q >= skipStart && q < skipEnd) return false;
|
|
656
|
+
while (i < n && i <= q) {
|
|
657
|
+
const c = code[i];
|
|
658
|
+
const d = i + 1 < n ? code[i + 1] : "";
|
|
659
|
+
let end = -1;
|
|
660
|
+
let transparent = false;
|
|
661
|
+
if (c === "/" && d === "/") {
|
|
662
|
+
let j = i + 2;
|
|
663
|
+
while (j < n && !isLineTerminator(code[j])) j++;
|
|
664
|
+
end = j;
|
|
665
|
+
transparent = true;
|
|
666
|
+
} else if (c === "/" && d === "*") {
|
|
667
|
+
let j = i + 2;
|
|
668
|
+
while (j < n && !(code[j] === "*" && code[j + 1] === "/")) j++;
|
|
669
|
+
end = Math.min(n, j + 2);
|
|
670
|
+
transparent = true;
|
|
671
|
+
} else if (c === '"' || c === "'" || c === "`") {
|
|
672
|
+
let j = i + 1;
|
|
673
|
+
while (j < n) {
|
|
674
|
+
if (code[j] === "\\") {
|
|
675
|
+
j += 2;
|
|
676
|
+
continue;
|
|
677
|
+
}
|
|
678
|
+
if (code[j] === c) {
|
|
679
|
+
j++;
|
|
680
|
+
break;
|
|
681
|
+
}
|
|
682
|
+
j++;
|
|
683
|
+
}
|
|
684
|
+
end = j;
|
|
685
|
+
} else if (c === "/" && d !== "/" && d !== "*" && isRegexPositionAt(code, i, lastSig)) {
|
|
686
|
+
let j = i + 1;
|
|
687
|
+
let inClass = false;
|
|
688
|
+
let closed = false;
|
|
689
|
+
while (j < n && !isLineTerminator(code[j])) {
|
|
690
|
+
const r = code[j];
|
|
691
|
+
if (r === "\\") {
|
|
692
|
+
j += 2;
|
|
693
|
+
continue;
|
|
694
|
+
}
|
|
695
|
+
if (r === "[") inClass = true;
|
|
696
|
+
else if (r === "]") inClass = false;
|
|
697
|
+
else if (r === "/" && !inClass) {
|
|
698
|
+
j++;
|
|
699
|
+
closed = true;
|
|
700
|
+
break;
|
|
701
|
+
}
|
|
702
|
+
j++;
|
|
703
|
+
}
|
|
704
|
+
if (closed) {
|
|
705
|
+
while (j < n && /[a-z]/.test(code[j])) j++;
|
|
706
|
+
end = j;
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
if (end >= 0) {
|
|
710
|
+
if (q < end) {
|
|
711
|
+
skipStart = i;
|
|
712
|
+
skipEnd = end;
|
|
713
|
+
return false;
|
|
714
|
+
}
|
|
715
|
+
i = end;
|
|
716
|
+
if (!transparent) lastSig = "x";
|
|
717
|
+
} else {
|
|
718
|
+
if (!/\s/.test(c)) lastSig = c;
|
|
719
|
+
i++;
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
return true;
|
|
723
|
+
};
|
|
724
|
+
}
|
|
725
|
+
function firstCodeMatchIndex(code, pattern) {
|
|
726
|
+
const inCode = makeCodeClassifier(code);
|
|
727
|
+
pattern.lastIndex = 0;
|
|
728
|
+
let m;
|
|
729
|
+
while ((m = pattern.exec(code)) !== null) {
|
|
730
|
+
if (inCode(m.index)) return m.index;
|
|
731
|
+
if (pattern.lastIndex <= m.index) pattern.lastIndex = m.index + 1;
|
|
732
|
+
}
|
|
733
|
+
return -1;
|
|
734
|
+
}
|
|
735
|
+
var REGEX_PRECEDING_KEYWORDS;
|
|
736
|
+
var init_source_scan = __esm({
|
|
737
|
+
"src/build/route-types/source-scan.ts"() {
|
|
738
|
+
"use strict";
|
|
739
|
+
REGEX_PRECEDING_KEYWORDS = /* @__PURE__ */ new Set([
|
|
740
|
+
"return",
|
|
741
|
+
"typeof",
|
|
742
|
+
"instanceof",
|
|
743
|
+
"in",
|
|
744
|
+
"of",
|
|
745
|
+
"new",
|
|
746
|
+
"delete",
|
|
747
|
+
"void",
|
|
748
|
+
"do",
|
|
749
|
+
"else",
|
|
750
|
+
"yield",
|
|
751
|
+
"await",
|
|
752
|
+
"case",
|
|
753
|
+
"throw"
|
|
754
|
+
]);
|
|
755
|
+
}
|
|
756
|
+
});
|
|
757
|
+
|
|
579
758
|
// src/build/route-types/router-processing.ts
|
|
580
759
|
import {
|
|
581
760
|
readFileSync as readFileSync3,
|
|
@@ -606,43 +785,50 @@ function countPublicRouteEntries(source) {
|
|
|
606
785
|
function isRoutableSourceFile(name) {
|
|
607
786
|
return (name.endsWith(".ts") || name.endsWith(".tsx") || name.endsWith(".js") || name.endsWith(".jsx")) && !name.includes(".gen.") && !name.includes(".test.") && !name.includes(".spec.");
|
|
608
787
|
}
|
|
609
|
-
function
|
|
788
|
+
function isExcludedScanDir(name) {
|
|
789
|
+
return name === "node_modules" || name === "dist" || name === "coverage" || name === "__tests__" || name === "__mocks__" || name.startsWith(".");
|
|
790
|
+
}
|
|
791
|
+
function findCallSiteFilesRecursive(dir, pattern, patternG, stopAtMatchDir, filter, results) {
|
|
610
792
|
let entries;
|
|
611
793
|
try {
|
|
612
794
|
entries = readdirSync2(dir, { withFileTypes: true });
|
|
613
795
|
} catch (err) {
|
|
614
796
|
console.warn(
|
|
615
|
-
`[
|
|
797
|
+
`[rango] Failed to scan directory ${dir}: ${err.message}`
|
|
616
798
|
);
|
|
617
799
|
return;
|
|
618
800
|
}
|
|
619
801
|
const childDirs = [];
|
|
620
|
-
const
|
|
802
|
+
const matchesInDir = [];
|
|
621
803
|
for (const entry of entries) {
|
|
622
804
|
const fullPath = join2(dir, entry.name);
|
|
623
805
|
if (entry.isDirectory()) {
|
|
624
|
-
if (entry.name
|
|
625
|
-
continue;
|
|
626
|
-
childDirs.push(fullPath);
|
|
806
|
+
if (!isExcludedScanDir(entry.name)) childDirs.push(fullPath);
|
|
627
807
|
continue;
|
|
628
808
|
}
|
|
629
809
|
if (!isRoutableSourceFile(entry.name)) continue;
|
|
630
810
|
if (filter && !filter(fullPath)) continue;
|
|
631
811
|
try {
|
|
632
812
|
const source = readFileSync3(fullPath, "utf-8");
|
|
633
|
-
if (
|
|
634
|
-
|
|
813
|
+
if (pattern.test(source) && firstCodeMatchIndex(source, patternG) >= 0) {
|
|
814
|
+
matchesInDir.push(fullPath);
|
|
635
815
|
}
|
|
636
816
|
} catch {
|
|
637
817
|
continue;
|
|
638
818
|
}
|
|
639
819
|
}
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
820
|
+
results.push(...matchesInDir);
|
|
821
|
+
if (!stopAtMatchDir || matchesInDir.length === 0) {
|
|
822
|
+
for (const childDir of childDirs) {
|
|
823
|
+
findCallSiteFilesRecursive(
|
|
824
|
+
childDir,
|
|
825
|
+
pattern,
|
|
826
|
+
patternG,
|
|
827
|
+
stopAtMatchDir,
|
|
828
|
+
filter,
|
|
829
|
+
results
|
|
830
|
+
);
|
|
831
|
+
}
|
|
646
832
|
}
|
|
647
833
|
}
|
|
648
834
|
function findNestedRouterConflict(routerFiles) {
|
|
@@ -668,7 +854,7 @@ function findNestedRouterConflict(routerFiles) {
|
|
|
668
854
|
}
|
|
669
855
|
return null;
|
|
670
856
|
}
|
|
671
|
-
function formatNestedRouterConflictError(conflict, prefix = "[
|
|
857
|
+
function formatNestedRouterConflictError(conflict, prefix = "[rango]") {
|
|
672
858
|
return `${prefix} Nested router roots are not supported.
|
|
673
859
|
Router root: ${conflict.ancestor}
|
|
674
860
|
Nested router: ${conflict.nested}
|
|
@@ -764,19 +950,38 @@ function extractBasenameFromRouter(code) {
|
|
|
764
950
|
visit(sourceFile);
|
|
765
951
|
return result;
|
|
766
952
|
}
|
|
767
|
-
function applyBasenameToRoutes(result,
|
|
953
|
+
function applyBasenameToRoutes(result, basename) {
|
|
768
954
|
const prefixed = {};
|
|
769
955
|
for (const [name, pattern] of Object.entries(result.routes)) {
|
|
770
956
|
if (pattern === "/") {
|
|
771
|
-
prefixed[name] =
|
|
772
|
-
} else if (
|
|
773
|
-
prefixed[name] =
|
|
957
|
+
prefixed[name] = basename;
|
|
958
|
+
} else if (basename.endsWith("/") && pattern.startsWith("/")) {
|
|
959
|
+
prefixed[name] = basename + pattern.slice(1);
|
|
774
960
|
} else {
|
|
775
|
-
prefixed[name] =
|
|
961
|
+
prefixed[name] = basename + pattern;
|
|
776
962
|
}
|
|
777
963
|
}
|
|
778
964
|
return { routes: prefixed, searchSchemas: result.searchSchemas };
|
|
779
965
|
}
|
|
966
|
+
function genFileTsPath(sourceFile) {
|
|
967
|
+
const base = pathBasename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
|
|
968
|
+
return join2(dirname2(sourceFile), `${base}.named-routes.gen.ts`);
|
|
969
|
+
}
|
|
970
|
+
function resolveSearchSchemas(publicRouteNames, runtimeSchemas, sourceFile) {
|
|
971
|
+
if (runtimeSchemas && Object.keys(runtimeSchemas).length > 0) {
|
|
972
|
+
return runtimeSchemas;
|
|
973
|
+
}
|
|
974
|
+
const staticParsed = buildCombinedRouteMapForRouterFile(sourceFile);
|
|
975
|
+
if (Object.keys(staticParsed.searchSchemas).length === 0) {
|
|
976
|
+
return runtimeSchemas;
|
|
977
|
+
}
|
|
978
|
+
const filtered = {};
|
|
979
|
+
for (const name of publicRouteNames) {
|
|
980
|
+
const schema = staticParsed.searchSchemas[name];
|
|
981
|
+
if (schema) filtered[name] = schema;
|
|
982
|
+
}
|
|
983
|
+
return Object.keys(filtered).length > 0 ? filtered : runtimeSchemas;
|
|
984
|
+
}
|
|
780
985
|
function buildCombinedRouteMapForRouterFile(routerFilePath) {
|
|
781
986
|
let routerSource;
|
|
782
987
|
try {
|
|
@@ -789,7 +994,7 @@ function buildCombinedRouteMapForRouterFile(routerFilePath) {
|
|
|
789
994
|
return { routes: {}, searchSchemas: {} };
|
|
790
995
|
}
|
|
791
996
|
const rawBasename = extractBasenameFromRouter(routerSource);
|
|
792
|
-
const
|
|
997
|
+
const basename = rawBasename ? ("/" + rawBasename.replace(/^\/+|\/+$/g, "")).replace(/^\/$/, "") : void 0;
|
|
793
998
|
let result;
|
|
794
999
|
if (extraction.kind === "inline") {
|
|
795
1000
|
result = buildCombinedRouteMapWithSearch(
|
|
@@ -814,8 +1019,8 @@ function buildCombinedRouteMapForRouterFile(routerFilePath) {
|
|
|
814
1019
|
result = buildCombinedRouteMapWithSearch(routerFilePath, extraction.name);
|
|
815
1020
|
}
|
|
816
1021
|
}
|
|
817
|
-
if (
|
|
818
|
-
result = applyBasenameToRoutes(result,
|
|
1022
|
+
if (basename) {
|
|
1023
|
+
result = applyBasenameToRoutes(result, basename);
|
|
819
1024
|
}
|
|
820
1025
|
return result;
|
|
821
1026
|
}
|
|
@@ -888,7 +1093,14 @@ function detectUnresolvableIncludesForUrlsFile(filePath) {
|
|
|
888
1093
|
}
|
|
889
1094
|
function findRouterFiles(root, filter) {
|
|
890
1095
|
const result = [];
|
|
891
|
-
|
|
1096
|
+
findCallSiteFilesRecursive(
|
|
1097
|
+
root,
|
|
1098
|
+
ROUTER_CALL_PATTERN,
|
|
1099
|
+
ROUTER_CALL_PATTERN_G,
|
|
1100
|
+
true,
|
|
1101
|
+
filter,
|
|
1102
|
+
result
|
|
1103
|
+
);
|
|
892
1104
|
return result;
|
|
893
1105
|
}
|
|
894
1106
|
function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
|
|
@@ -897,7 +1109,7 @@ function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
|
|
|
897
1109
|
if (existsSync3(oldCombinedPath)) {
|
|
898
1110
|
unlinkSync(oldCombinedPath);
|
|
899
1111
|
console.log(
|
|
900
|
-
`[
|
|
1112
|
+
`[rango] Removed stale combined route types: ${oldCombinedPath}`
|
|
901
1113
|
);
|
|
902
1114
|
}
|
|
903
1115
|
} catch {
|
|
@@ -919,18 +1131,12 @@ function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
|
|
|
919
1131
|
}
|
|
920
1132
|
if (!extractUrlsFromRouter(routerSource)) continue;
|
|
921
1133
|
}
|
|
922
|
-
const
|
|
923
|
-
/\.(tsx?|jsx?)$/,
|
|
924
|
-
""
|
|
925
|
-
);
|
|
926
|
-
const outPath = join2(
|
|
927
|
-
dirname2(routerFilePath),
|
|
928
|
-
`${routerBasename}.named-routes.gen.ts`
|
|
929
|
-
);
|
|
1134
|
+
const outPath = genFileTsPath(routerFilePath);
|
|
930
1135
|
const existing = existsSync3(outPath) ? readFileSync3(outPath, "utf-8") : null;
|
|
931
1136
|
if (Object.keys(result.routes).length === 0) {
|
|
932
1137
|
if (!existing) {
|
|
933
1138
|
const emptySource = generateRouteTypesSource({});
|
|
1139
|
+
opts?.onWrite?.(outPath, emptySource);
|
|
934
1140
|
writeFileSync2(outPath, emptySource);
|
|
935
1141
|
}
|
|
936
1142
|
continue;
|
|
@@ -950,22 +1156,25 @@ function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
|
|
|
950
1156
|
continue;
|
|
951
1157
|
}
|
|
952
1158
|
}
|
|
1159
|
+
opts?.onWrite?.(outPath, source);
|
|
953
1160
|
writeFileSync2(outPath, source);
|
|
954
1161
|
console.log(
|
|
955
|
-
`[
|
|
1162
|
+
`[rango] Generated route types (${Object.keys(result.routes).length} routes) -> ${outPath}`
|
|
956
1163
|
);
|
|
957
1164
|
}
|
|
958
1165
|
}
|
|
959
1166
|
}
|
|
960
|
-
var ROUTER_CALL_PATTERN;
|
|
1167
|
+
var ROUTER_CALL_PATTERN, ROUTER_CALL_PATTERN_G;
|
|
961
1168
|
var init_router_processing = __esm({
|
|
962
1169
|
"src/build/route-types/router-processing.ts"() {
|
|
963
1170
|
"use strict";
|
|
964
1171
|
init_codegen();
|
|
1172
|
+
init_source_scan();
|
|
965
1173
|
init_include_resolution();
|
|
966
1174
|
init_per_module_writer();
|
|
967
1175
|
init_route_name();
|
|
968
1176
|
ROUTER_CALL_PATTERN = /\bcreateRouter\s*[<(]/;
|
|
1177
|
+
ROUTER_CALL_PATTERN_G = /\bcreateRouter\s*[<(]/g;
|
|
969
1178
|
}
|
|
970
1179
|
});
|
|
971
1180
|
|
|
@@ -1003,7 +1212,7 @@ import {
|
|
|
1003
1212
|
import { createElement, StrictMode } from "react";
|
|
1004
1213
|
import { hydrateRoot } from "react-dom/client";
|
|
1005
1214
|
import { rscStream } from "@rangojs/router/internal/deps/html-stream-client";
|
|
1006
|
-
import { initBrowserApp,
|
|
1215
|
+
import { initBrowserApp, Rango } from "@rangojs/router/browser";
|
|
1007
1216
|
|
|
1008
1217
|
async function initializeApp() {
|
|
1009
1218
|
const deps = {
|
|
@@ -1014,11 +1223,16 @@ async function initializeApp() {
|
|
|
1014
1223
|
createTemporaryReferenceSet,
|
|
1015
1224
|
};
|
|
1016
1225
|
|
|
1017
|
-
|
|
1226
|
+
// initBrowserApp resolves the initial payload and returns the browser app
|
|
1227
|
+
// context, including strictMode (default true) from createRouter. StrictMode
|
|
1228
|
+
// is the default; createRouter({ strictMode: false }) ships the opt-out in the
|
|
1229
|
+
// payload metadata. StrictMode emits no DOM, so toggling never changes markup.
|
|
1230
|
+
const { strictMode } = await initBrowserApp({ rscStream, deps });
|
|
1018
1231
|
|
|
1232
|
+
const app = createElement(Rango);
|
|
1019
1233
|
hydrateRoot(
|
|
1020
1234
|
document,
|
|
1021
|
-
createElement(StrictMode, null,
|
|
1235
|
+
strictMode === false ? app : createElement(StrictMode, null, app)
|
|
1022
1236
|
);
|
|
1023
1237
|
}
|
|
1024
1238
|
|
|
@@ -1047,12 +1261,37 @@ export const renderHTML = createSSRHandler({
|
|
|
1047
1261
|
}
|
|
1048
1262
|
});
|
|
1049
1263
|
|
|
1264
|
+
// src/vite/utils/directive-prologue.ts
|
|
1265
|
+
import { parseAst } from "vite";
|
|
1266
|
+
function hasUseClientDirective(source) {
|
|
1267
|
+
let program;
|
|
1268
|
+
try {
|
|
1269
|
+
program = parseAst(source, { lang: "tsx" });
|
|
1270
|
+
} catch {
|
|
1271
|
+
return false;
|
|
1272
|
+
}
|
|
1273
|
+
for (const node of program.body ?? []) {
|
|
1274
|
+
if (node?.type === "ExpressionStatement" && node.expression?.type === "Literal" && typeof node.expression.value === "string") {
|
|
1275
|
+
if (node.expression.value === "use client") return true;
|
|
1276
|
+
continue;
|
|
1277
|
+
}
|
|
1278
|
+
break;
|
|
1279
|
+
}
|
|
1280
|
+
return false;
|
|
1281
|
+
}
|
|
1282
|
+
var init_directive_prologue = __esm({
|
|
1283
|
+
"src/vite/utils/directive-prologue.ts"() {
|
|
1284
|
+
"use strict";
|
|
1285
|
+
}
|
|
1286
|
+
});
|
|
1287
|
+
|
|
1050
1288
|
// src/vite/plugins/version-plugin.ts
|
|
1051
1289
|
var version_plugin_exports = {};
|
|
1052
1290
|
__export(version_plugin_exports, {
|
|
1053
|
-
createVersionPlugin: () => createVersionPlugin
|
|
1291
|
+
createVersionPlugin: () => createVersionPlugin,
|
|
1292
|
+
isViteDepCachePath: () => isViteDepCachePath
|
|
1054
1293
|
});
|
|
1055
|
-
import { parseAst } from "vite";
|
|
1294
|
+
import { parseAst as parseAst2 } from "vite";
|
|
1056
1295
|
function isCodeModule(id) {
|
|
1057
1296
|
return /\.(tsx?|jsx?)($|\?)/.test(id);
|
|
1058
1297
|
}
|
|
@@ -1060,23 +1299,13 @@ function normalizeModuleId(id) {
|
|
|
1060
1299
|
return id.split("?", 1)[0];
|
|
1061
1300
|
}
|
|
1062
1301
|
function getClientModuleSignature(source) {
|
|
1302
|
+
if (!hasUseClientDirective(source)) return void 0;
|
|
1063
1303
|
let program;
|
|
1064
1304
|
try {
|
|
1065
|
-
program =
|
|
1305
|
+
program = parseAst2(source, { lang: "tsx" });
|
|
1066
1306
|
} catch {
|
|
1067
1307
|
return void 0;
|
|
1068
1308
|
}
|
|
1069
|
-
let isUseClient = false;
|
|
1070
|
-
for (const node of program.body ?? []) {
|
|
1071
|
-
if (node?.type === "ExpressionStatement" && node.expression?.type === "Literal" && typeof node.expression.value === "string") {
|
|
1072
|
-
if (node.expression.value === "use client") {
|
|
1073
|
-
isUseClient = true;
|
|
1074
|
-
}
|
|
1075
|
-
continue;
|
|
1076
|
-
}
|
|
1077
|
-
break;
|
|
1078
|
-
}
|
|
1079
|
-
if (!isUseClient) return void 0;
|
|
1080
1309
|
const exports = /* @__PURE__ */ new Set();
|
|
1081
1310
|
let hasDefault = false;
|
|
1082
1311
|
let hasExportAll = false;
|
|
@@ -1145,11 +1374,12 @@ function createVersionPlugin() {
|
|
|
1145
1374
|
let currentVersion = buildVersion;
|
|
1146
1375
|
let isDev = false;
|
|
1147
1376
|
let server = null;
|
|
1377
|
+
let resolvedCacheDir;
|
|
1148
1378
|
const clientModuleSignatures = /* @__PURE__ */ new Map();
|
|
1149
1379
|
let versionCounter = 0;
|
|
1150
1380
|
const bumpVersion = (reason) => {
|
|
1151
1381
|
currentVersion = Date.now().toString(16) + String(++versionCounter);
|
|
1152
|
-
console.log(`[
|
|
1382
|
+
console.log(`[rango] ${reason}, version updated: ${currentVersion}`);
|
|
1153
1383
|
const rscEnv = server?.environments?.rsc;
|
|
1154
1384
|
const versionMod = rscEnv?.moduleGraph?.getModuleById(
|
|
1155
1385
|
"\0" + VIRTUAL_IDS.version
|
|
@@ -1163,6 +1393,7 @@ function createVersionPlugin() {
|
|
|
1163
1393
|
enforce: "pre",
|
|
1164
1394
|
configResolved(config) {
|
|
1165
1395
|
isDev = config.command === "serve";
|
|
1396
|
+
resolvedCacheDir = config.cacheDir ? String(config.cacheDir).replace(/\\/g, "/") : void 0;
|
|
1166
1397
|
},
|
|
1167
1398
|
configureServer(devServer) {
|
|
1168
1399
|
server = devServer;
|
|
@@ -1199,11 +1430,11 @@ function createVersionPlugin() {
|
|
|
1199
1430
|
}
|
|
1200
1431
|
return null;
|
|
1201
1432
|
},
|
|
1202
|
-
// Track RSC module changes and update version
|
|
1203
1433
|
async hotUpdate(ctx) {
|
|
1204
1434
|
if (!isDev) return;
|
|
1205
1435
|
const isRscModule = this.environment?.name === "rsc";
|
|
1206
1436
|
if (!isRscModule) return;
|
|
1437
|
+
if (isViteDepCachePath(ctx.file, resolvedCacheDir)) return;
|
|
1207
1438
|
if (ctx.modules.length === 1 && ctx.modules[0].id === "\0" + VIRTUAL_IDS.version) {
|
|
1208
1439
|
return;
|
|
1209
1440
|
}
|
|
@@ -1233,10 +1464,22 @@ function createVersionPlugin() {
|
|
|
1233
1464
|
}
|
|
1234
1465
|
};
|
|
1235
1466
|
}
|
|
1467
|
+
function isViteDepCachePath(filePath, cacheDir) {
|
|
1468
|
+
if (!filePath) return false;
|
|
1469
|
+
const normalized = filePath.replace(/\\/g, "/");
|
|
1470
|
+
if (cacheDir) {
|
|
1471
|
+
const normalizedCacheDir = cacheDir.replace(/\\/g, "/").replace(/\/+$/, "");
|
|
1472
|
+
if (normalized === normalizedCacheDir || normalized.startsWith(normalizedCacheDir + "/")) {
|
|
1473
|
+
return true;
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
return /\/node_modules\/\.vite[^/]*\//.test(normalized) || normalized.includes("/.vite-isolated/");
|
|
1477
|
+
}
|
|
1236
1478
|
var init_version_plugin = __esm({
|
|
1237
1479
|
"src/vite/plugins/version-plugin.ts"() {
|
|
1238
1480
|
"use strict";
|
|
1239
1481
|
init_virtual_entries();
|
|
1482
|
+
init_directive_prologue();
|
|
1240
1483
|
}
|
|
1241
1484
|
});
|
|
1242
1485
|
|
|
@@ -1278,7 +1521,7 @@ var runtime_discovery_exports = {};
|
|
|
1278
1521
|
__export(runtime_discovery_exports, {
|
|
1279
1522
|
discoverAndWriteRouteTypes: () => discoverAndWriteRouteTypes
|
|
1280
1523
|
});
|
|
1281
|
-
import {
|
|
1524
|
+
import { resolve as resolve3 } from "node:path";
|
|
1282
1525
|
import { existsSync as existsSync4, readFileSync as readFileSync4, writeFileSync as writeFileSync3 } from "node:fs";
|
|
1283
1526
|
async function discoverAndWriteRouteTypes(opts) {
|
|
1284
1527
|
let createViteServer;
|
|
@@ -1388,22 +1631,12 @@ This means createRouter() stack trace parsing matched an internal frame.
|
|
|
1388
1631
|
Set an explicit \`id\` on createRouter() or check the call site.`
|
|
1389
1632
|
);
|
|
1390
1633
|
}
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
if (schema) filtered[name] = schema;
|
|
1398
|
-
}
|
|
1399
|
-
if (Object.keys(filtered).length > 0) {
|
|
1400
|
-
routeSearchSchemas = filtered;
|
|
1401
|
-
}
|
|
1402
|
-
}
|
|
1403
|
-
}
|
|
1404
|
-
const routerDir = dirname3(sourceFile);
|
|
1405
|
-
const routerBasename = basename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
|
|
1406
|
-
const outPath = join3(routerDir, `${routerBasename}.named-routes.gen.ts`);
|
|
1634
|
+
routeSearchSchemas = resolveSearchSchemas(
|
|
1635
|
+
Object.keys(routeManifest),
|
|
1636
|
+
routeSearchSchemas,
|
|
1637
|
+
sourceFile
|
|
1638
|
+
);
|
|
1639
|
+
const outPath = genFileTsPath(sourceFile);
|
|
1407
1640
|
const source = generateRouteTypesSource(
|
|
1408
1641
|
routeManifest,
|
|
1409
1642
|
routeSearchSchemas && Object.keys(routeSearchSchemas).length > 0 ? routeSearchSchemas : void 0
|
|
@@ -1440,7 +1673,7 @@ var init_runtime_discovery = __esm({
|
|
|
1440
1673
|
|
|
1441
1674
|
// src/bin/rango.ts
|
|
1442
1675
|
init_generate_route_types();
|
|
1443
|
-
import { resolve as resolve4, dirname as
|
|
1676
|
+
import { resolve as resolve4, dirname as dirname3 } from "node:path";
|
|
1444
1677
|
import { readFileSync as readFileSync5, statSync, existsSync as existsSync5 } from "node:fs";
|
|
1445
1678
|
var [command, ...rawArgs] = process.argv.slice(2);
|
|
1446
1679
|
if (command === "generate") {
|
|
@@ -1511,12 +1744,12 @@ Examples:
|
|
|
1511
1744
|
);
|
|
1512
1745
|
}
|
|
1513
1746
|
function findProjectRoot(fromPath) {
|
|
1514
|
-
let dir =
|
|
1515
|
-
while (dir !==
|
|
1747
|
+
let dir = dirname3(resolve4(fromPath));
|
|
1748
|
+
while (dir !== dirname3(dir)) {
|
|
1516
1749
|
if (existsSync5(resolve4(dir, "package.json")) || existsSync5(resolve4(dir, "vite.config.ts")) || existsSync5(resolve4(dir, "vite.config.js"))) {
|
|
1517
1750
|
return dir;
|
|
1518
1751
|
}
|
|
1519
|
-
dir =
|
|
1752
|
+
dir = dirname3(dir);
|
|
1520
1753
|
}
|
|
1521
1754
|
return process.cwd();
|
|
1522
1755
|
}
|