@rangojs/router 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__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.map +1 -0
- package/dist/browser/event-controller.d.ts +191 -0
- package/dist/browser/event-controller.d.ts.map +1 -0
- package/dist/browser/event-controller.js +559 -0
- package/dist/browser/event-controller.js.map +1 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/link-interceptor.d.ts +38 -0
- package/dist/browser/link-interceptor.d.ts.map +1 -0
- package/dist/browser/link-interceptor.js +99 -0
- package/dist/browser/link-interceptor.js.map +1 -0
- package/dist/browser/logging.d.ts +10 -0
- package/dist/browser/logging.d.ts.map +1 -0
- package/dist/browser/logging.js +29 -0
- package/dist/browser/logging.js.map +1 -0
- package/dist/browser/lru-cache.d.ts +17 -0
- package/dist/browser/lru-cache.d.ts.map +1 -0
- package/dist/browser/lru-cache.js +50 -0
- package/dist/browser/lru-cache.js.map +1 -0
- package/dist/browser/merge-segment-loaders.d.ts +39 -0
- package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
- package/dist/browser/merge-segment-loaders.js +102 -0
- package/dist/browser/merge-segment-loaders.js.map +1 -0
- package/dist/browser/navigation-bridge.d.ts +102 -0
- package/dist/browser/navigation-bridge.d.ts.map +1 -0
- package/dist/browser/navigation-bridge.js +708 -0
- package/dist/browser/navigation-bridge.js.map +1 -0
- package/dist/browser/navigation-client.d.ts +25 -0
- package/dist/browser/navigation-client.d.ts.map +1 -0
- package/dist/browser/navigation-client.js +157 -0
- package/dist/browser/navigation-client.js.map +1 -0
- package/dist/browser/navigation-store.d.ts +101 -0
- package/dist/browser/navigation-store.d.ts.map +1 -0
- package/dist/browser/navigation-store.js +625 -0
- package/dist/browser/navigation-store.js.map +1 -0
- package/dist/browser/partial-update.d.ts +75 -0
- package/dist/browser/partial-update.d.ts.map +1 -0
- package/dist/browser/partial-update.js +426 -0
- package/dist/browser/partial-update.js.map +1 -0
- package/dist/browser/react/Link.d.ts +86 -0
- package/dist/browser/react/Link.d.ts.map +1 -0
- package/dist/browser/react/Link.js +128 -0
- package/dist/browser/react/Link.js.map +1 -0
- package/dist/browser/react/NavigationProvider.d.ts +63 -0
- package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
- package/dist/browser/react/NavigationProvider.js +216 -0
- package/dist/browser/react/NavigationProvider.js.map +1 -0
- package/dist/browser/react/ScrollRestoration.d.ts +75 -0
- package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
- package/dist/browser/react/ScrollRestoration.js +57 -0
- package/dist/browser/react/ScrollRestoration.js.map +1 -0
- package/dist/browser/react/context.d.ts +46 -0
- package/dist/browser/react/context.d.ts.map +1 -0
- package/dist/browser/react/context.js +10 -0
- package/dist/browser/react/context.js.map +1 -0
- package/dist/browser/react/index.d.ts +11 -0
- package/dist/browser/react/index.d.ts.map +1 -0
- package/dist/browser/react/index.js +22 -0
- package/dist/browser/react/index.js.map +1 -0
- package/dist/browser/react/location-state-shared.d.ts +63 -0
- package/dist/browser/react/location-state-shared.d.ts.map +1 -0
- package/dist/browser/react/location-state-shared.js +81 -0
- package/dist/browser/react/location-state-shared.js.map +1 -0
- package/dist/browser/react/location-state.d.ts +23 -0
- package/dist/browser/react/location-state.d.ts.map +1 -0
- package/dist/browser/react/location-state.js +29 -0
- package/dist/browser/react/location-state.js.map +1 -0
- package/dist/browser/react/mount-context.d.ts +24 -0
- package/dist/browser/react/mount-context.d.ts.map +1 -0
- package/dist/browser/react/mount-context.js +24 -0
- package/dist/browser/react/mount-context.js.map +1 -0
- package/dist/browser/react/use-action.d.ts +64 -0
- package/dist/browser/react/use-action.d.ts.map +1 -0
- package/dist/browser/react/use-action.js +134 -0
- package/dist/browser/react/use-action.js.map +1 -0
- package/dist/browser/react/use-client-cache.d.ts +41 -0
- package/dist/browser/react/use-client-cache.d.ts.map +1 -0
- package/dist/browser/react/use-client-cache.js +39 -0
- package/dist/browser/react/use-client-cache.js.map +1 -0
- package/dist/browser/react/use-handle.d.ts +31 -0
- package/dist/browser/react/use-handle.d.ts.map +1 -0
- package/dist/browser/react/use-handle.js +144 -0
- package/dist/browser/react/use-handle.js.map +1 -0
- package/dist/browser/react/use-href.d.ts +33 -0
- package/dist/browser/react/use-href.d.ts.map +1 -0
- package/dist/browser/react/use-href.js +39 -0
- package/dist/browser/react/use-href.js.map +1 -0
- package/dist/browser/react/use-link-status.d.ts +37 -0
- package/dist/browser/react/use-link-status.d.ts.map +1 -0
- package/dist/browser/react/use-link-status.js +99 -0
- package/dist/browser/react/use-link-status.js.map +1 -0
- package/dist/browser/react/use-mount.d.ts +25 -0
- package/dist/browser/react/use-mount.d.ts.map +1 -0
- package/dist/browser/react/use-mount.js +30 -0
- package/dist/browser/react/use-mount.js.map +1 -0
- package/dist/browser/react/use-navigation.d.ts +27 -0
- package/dist/browser/react/use-navigation.d.ts.map +1 -0
- package/dist/browser/react/use-navigation.js +87 -0
- package/dist/browser/react/use-navigation.js.map +1 -0
- package/dist/browser/react/use-segments.d.ts +38 -0
- package/dist/browser/react/use-segments.d.ts.map +1 -0
- package/dist/browser/react/use-segments.js +130 -0
- package/dist/browser/react/use-segments.js.map +1 -0
- package/dist/browser/request-controller.d.ts +26 -0
- package/dist/browser/request-controller.d.ts.map +1 -0
- package/dist/browser/request-controller.js +147 -0
- package/dist/browser/request-controller.js.map +1 -0
- package/dist/browser/rsc-router.d.ts +129 -0
- package/dist/browser/rsc-router.d.ts.map +1 -0
- package/dist/browser/rsc-router.js +195 -0
- package/dist/browser/rsc-router.js.map +1 -0
- package/dist/browser/scroll-restoration.d.ts +93 -0
- package/dist/browser/scroll-restoration.d.ts.map +1 -0
- package/dist/browser/scroll-restoration.js +321 -0
- package/dist/browser/scroll-restoration.js.map +1 -0
- package/dist/browser/segment-structure-assert.d.ts +17 -0
- package/dist/browser/segment-structure-assert.d.ts.map +1 -0
- package/dist/browser/segment-structure-assert.js +59 -0
- package/dist/browser/segment-structure-assert.js.map +1 -0
- package/dist/browser/server-action-bridge.d.ts +26 -0
- package/dist/browser/server-action-bridge.d.ts.map +1 -0
- package/dist/browser/server-action-bridge.js +668 -0
- package/dist/browser/server-action-bridge.js.map +1 -0
- package/dist/browser/shallow.d.ts +12 -0
- package/dist/browser/shallow.d.ts.map +1 -0
- package/dist/browser/shallow.js +34 -0
- package/dist/browser/shallow.js.map +1 -0
- package/dist/browser/types.d.ts +369 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/browser/types.js +2 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
- package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-cli.test.js +237 -0
- package/dist/build/__tests__/generate-cli.test.js.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.js +119 -0
- package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.js +620 -0
- package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.js +308 -0
- package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
- package/dist/build/generate-manifest.d.ts +81 -0
- package/dist/build/generate-manifest.d.ts.map +1 -0
- package/dist/build/generate-manifest.js +276 -0
- package/dist/build/generate-manifest.js.map +1 -0
- package/dist/build/generate-route-types.d.ts +115 -0
- package/dist/build/generate-route-types.d.ts.map +1 -0
- package/dist/build/generate-route-types.js +740 -0
- package/dist/build/generate-route-types.js.map +1 -0
- package/dist/build/index.d.ts +21 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +21 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/route-trie.d.ts +71 -0
- package/dist/build/route-trie.d.ts.map +1 -0
- package/dist/build/route-trie.js +175 -0
- package/dist/build/route-trie.js.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.js +208 -0
- package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
- package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
- package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
- package/dist/cache/__tests__/document-cache.test.js +345 -0
- package/dist/cache/__tests__/document-cache.test.js.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
- package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
- package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-store.test.js +367 -0
- package/dist/cache/__tests__/memory-store.test.js.map +1 -0
- package/dist/cache/cache-scope.d.ts +102 -0
- package/dist/cache/cache-scope.d.ts.map +1 -0
- package/dist/cache/cache-scope.js +440 -0
- package/dist/cache/cache-scope.js.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
- package/dist/cache/cf/cf-cache-store.d.ts +165 -0
- package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
- package/dist/cache/cf/cf-cache-store.js +242 -0
- package/dist/cache/cf/cf-cache-store.js.map +1 -0
- package/dist/cache/cf/index.d.ts +14 -0
- package/dist/cache/cf/index.d.ts.map +1 -0
- package/dist/cache/cf/index.js +17 -0
- package/dist/cache/cf/index.js.map +1 -0
- package/dist/cache/document-cache.d.ts +64 -0
- package/dist/cache/document-cache.d.ts.map +1 -0
- package/dist/cache/document-cache.js +228 -0
- package/dist/cache/document-cache.js.map +1 -0
- package/dist/cache/index.d.ts +19 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +21 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/memory-segment-store.d.ts +110 -0
- package/dist/cache/memory-segment-store.d.ts.map +1 -0
- package/dist/cache/memory-segment-store.js +117 -0
- package/dist/cache/memory-segment-store.js.map +1 -0
- package/dist/cache/memory-store.d.ts +41 -0
- package/dist/cache/memory-store.d.ts.map +1 -0
- package/dist/cache/memory-store.js +191 -0
- package/dist/cache/memory-store.js.map +1 -0
- package/dist/cache/types.d.ts +317 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +12 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/client.d.ts +248 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +367 -0
- package/dist/client.js.map +1 -0
- package/dist/client.rsc.d.ts +26 -0
- package/dist/client.rsc.d.ts.map +1 -0
- package/dist/client.rsc.js +46 -0
- package/dist/client.rsc.js.map +1 -0
- package/dist/component-utils.d.ts +36 -0
- package/dist/component-utils.d.ts.map +1 -0
- package/dist/component-utils.js +61 -0
- package/dist/component-utils.js.map +1 -0
- package/dist/components/DefaultDocument.d.ts +13 -0
- package/dist/components/DefaultDocument.d.ts.map +1 -0
- package/dist/components/DefaultDocument.js +15 -0
- package/dist/components/DefaultDocument.js.map +1 -0
- package/dist/debug.d.ts +58 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +157 -0
- package/dist/debug.js.map +1 -0
- package/dist/default-error-boundary.d.ts +11 -0
- package/dist/default-error-boundary.d.ts.map +1 -0
- package/dist/default-error-boundary.js +45 -0
- package/dist/default-error-boundary.js.map +1 -0
- package/dist/deps/browser.d.ts +2 -0
- package/dist/deps/browser.d.ts.map +1 -0
- package/dist/deps/browser.js +3 -0
- package/dist/deps/browser.js.map +1 -0
- package/dist/deps/html-stream-client.d.ts +2 -0
- package/dist/deps/html-stream-client.d.ts.map +1 -0
- package/dist/deps/html-stream-client.js +3 -0
- package/dist/deps/html-stream-client.js.map +1 -0
- package/dist/deps/html-stream-server.d.ts +2 -0
- package/dist/deps/html-stream-server.d.ts.map +1 -0
- package/dist/deps/html-stream-server.js +3 -0
- package/dist/deps/html-stream-server.js.map +1 -0
- package/dist/deps/rsc.d.ts +2 -0
- package/dist/deps/rsc.d.ts.map +1 -0
- package/dist/deps/rsc.js +4 -0
- package/dist/deps/rsc.js.map +1 -0
- package/dist/deps/ssr.d.ts +2 -0
- package/dist/deps/ssr.d.ts.map +1 -0
- package/dist/deps/ssr.js +3 -0
- package/dist/deps/ssr.js.map +1 -0
- package/dist/errors.d.ts +174 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +241 -0
- package/dist/errors.js.map +1 -0
- package/dist/handle.d.ts +78 -0
- package/dist/handle.d.ts.map +1 -0
- package/dist/handle.js +82 -0
- package/dist/handle.js.map +1 -0
- package/dist/handles/MetaTags.d.ts +14 -0
- package/dist/handles/MetaTags.d.ts.map +1 -0
- package/dist/handles/MetaTags.js +136 -0
- package/dist/handles/MetaTags.js.map +1 -0
- package/dist/handles/index.d.ts +6 -0
- package/dist/handles/index.d.ts.map +1 -0
- package/dist/handles/index.js +6 -0
- package/dist/handles/index.js.map +1 -0
- package/dist/handles/meta.d.ts +39 -0
- package/dist/handles/meta.d.ts.map +1 -0
- package/dist/handles/meta.js +202 -0
- package/dist/handles/meta.js.map +1 -0
- package/dist/host/__tests__/errors.test.d.ts +2 -0
- package/dist/host/__tests__/errors.test.d.ts.map +1 -0
- package/dist/host/__tests__/errors.test.js +76 -0
- package/dist/host/__tests__/errors.test.js.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.js +251 -0
- package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
- package/dist/host/__tests__/router.test.d.ts +2 -0
- package/dist/host/__tests__/router.test.d.ts.map +1 -0
- package/dist/host/__tests__/router.test.js +241 -0
- package/dist/host/__tests__/router.test.js.map +1 -0
- package/dist/host/__tests__/testing.test.d.ts +2 -0
- package/dist/host/__tests__/testing.test.d.ts.map +1 -0
- package/dist/host/__tests__/testing.test.js +64 -0
- package/dist/host/__tests__/testing.test.js.map +1 -0
- package/dist/host/__tests__/utils.test.d.ts +2 -0
- package/dist/host/__tests__/utils.test.d.ts.map +1 -0
- package/dist/host/__tests__/utils.test.js +29 -0
- package/dist/host/__tests__/utils.test.js.map +1 -0
- package/dist/host/cookie-handler.d.ts +34 -0
- package/dist/host/cookie-handler.d.ts.map +1 -0
- package/dist/host/cookie-handler.js +124 -0
- package/dist/host/cookie-handler.js.map +1 -0
- package/dist/host/errors.d.ts +56 -0
- package/dist/host/errors.d.ts.map +1 -0
- package/dist/host/errors.js +79 -0
- package/dist/host/errors.js.map +1 -0
- package/dist/host/index.d.ts +29 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +32 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/pattern-matcher.d.ts +36 -0
- package/dist/host/pattern-matcher.d.ts.map +1 -0
- package/dist/host/pattern-matcher.js +172 -0
- package/dist/host/pattern-matcher.js.map +1 -0
- package/dist/host/router.d.ts +26 -0
- package/dist/host/router.d.ts.map +1 -0
- package/dist/host/router.js +218 -0
- package/dist/host/router.js.map +1 -0
- package/dist/host/testing.d.ts +36 -0
- package/dist/host/testing.d.ts.map +1 -0
- package/dist/host/testing.js +55 -0
- package/dist/host/testing.js.map +1 -0
- package/dist/host/types.d.ts +115 -0
- package/dist/host/types.d.ts.map +1 -0
- package/dist/host/types.js +7 -0
- package/dist/host/types.js.map +1 -0
- package/dist/host/utils.d.ts +21 -0
- package/dist/host/utils.d.ts.map +1 -0
- package/dist/host/utils.js +23 -0
- package/dist/host/utils.js.map +1 -0
- package/dist/href-client.d.ts +131 -0
- package/dist/href-client.d.ts.map +1 -0
- package/dist/href-client.js +64 -0
- package/dist/href-client.js.map +1 -0
- package/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/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/outlet-context.d.ts +9 -0
- package/dist/types/outlet-provider.d.ts +2 -1
- package/dist/types/route-content-wrapper.d.ts +4 -1
- package/dist/types/rsc/nonce.d.ts +10 -0
- package/dist/types/rsc/types.d.ts +6 -2
- package/dist/types/ssr/index.d.ts +18 -0
- package/dist/types/ssr/ssr-root.d.ts +16 -0
- package/dist/types/ssr-suspension-warning.d.ts +20 -0
- package/dist/types/types/loader-types.d.ts +5 -1
- package/dist/types/types/segments.d.ts +17 -0
- package/dist/types/vite/discovery/state.d.ts +6 -0
- package/dist/types/vite/plugin-types.d.ts +27 -0
- package/dist/types/vite/plugins/virtual-entries.d.ts +1 -1
- package/dist/types/vite/utils/shared-utils.d.ts +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 +51 -22
- 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/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 +21 -22
- package/skills/loader/SKILL.md +17 -2
- package/src/browser/merge-segment-loaders.ts +4 -0
- package/src/client.tsx +2 -0
- package/src/outlet-context.ts +9 -0
- package/src/outlet-provider.tsx +4 -0
- package/src/route-content-wrapper.tsx +7 -0
- package/src/router/segment-resolution/fresh.ts +48 -17
- package/src/router.ts +7 -2
- package/src/rsc/handler.ts +4 -4
- package/src/rsc/nonce.ts +16 -0
- package/src/rsc/shell-capture.ts +39 -6
- package/src/rsc/types.ts +6 -2
- package/src/segment-system.tsx +57 -12
- package/src/ssr/index.tsx +53 -1
- package/src/ssr/ssr-root.tsx +50 -22
- package/src/ssr-suspension-warning.ts +68 -0
- package/src/types/loader-types.ts +5 -1
- package/src/types/segments.ts +17 -0
- package/src/use-loader.tsx +24 -1
- package/src/vite/discovery/shell-prerender-phase.ts +5 -0
- package/src/vite/discovery/state.ts +6 -0
- package/src/vite/plugin-types.ts +28 -0
- package/src/vite/plugins/virtual-entries.ts +26 -3
- package/src/vite/rango.ts +3 -0
- package/src/vite/router-discovery.ts +31 -19
- package/src/vite/utils/shared-utils.ts +8 -2
package/src/ssr/ssr-root.tsx
CHANGED
|
@@ -139,6 +139,37 @@ function createSsrEventController(opts: {
|
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Deserialize the Flight stream branch into the payload SsrRoot renders,
|
|
144
|
+
* fragment expansion included. Factored out of SsrRoot so createSSRHandler can
|
|
145
|
+
* create the promise BEFORE fizz starts and read metadata that must influence
|
|
146
|
+
* the fizz call itself (the ssr:false progressiveChunkSize auto-raise) —
|
|
147
|
+
* awaiting it there is latency-neutral because fizz cannot emit even <html>
|
|
148
|
+
* until this same promise settles.
|
|
149
|
+
*/
|
|
150
|
+
export function deserializeSsrPayload(
|
|
151
|
+
createFromReadableStream: CreateFromReadableStream,
|
|
152
|
+
rscStream: ReadableStream<Uint8Array>,
|
|
153
|
+
): Promise<RscPayload> {
|
|
154
|
+
// Shell-HIT tails carry replayed segments as VERBATIM stored fragments
|
|
155
|
+
// (segment-fragments.ts, issue #700); expand them through this
|
|
156
|
+
// environment's deserializer before anything reads the segments. Every
|
|
157
|
+
// other payload (full render, capture, actions) has no envelopes and
|
|
158
|
+
// pays one field scan.
|
|
159
|
+
// Promise.resolve() adoption is load-bearing: some wirings (the build
|
|
160
|
+
// temp server's vendored Flight client) return a THENABLE Chunk whose
|
|
161
|
+
// .then returns undefined — chaining on it directly yields undefined.
|
|
162
|
+
return Promise.resolve(createFromReadableStream<RscPayload>(rscStream)).then(
|
|
163
|
+
async (resolvedPayload) => {
|
|
164
|
+
await expandSegmentFragments(
|
|
165
|
+
resolvedPayload.metadata?.segments,
|
|
166
|
+
createFromReadableStream,
|
|
167
|
+
);
|
|
168
|
+
return resolvedPayload;
|
|
169
|
+
},
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
|
|
142
173
|
/**
|
|
143
174
|
* Options for {@link createSsrRootComponent}.
|
|
144
175
|
*/
|
|
@@ -147,6 +178,13 @@ export interface SsrRootOptions {
|
|
|
147
178
|
createFromReadableStream: CreateFromReadableStream;
|
|
148
179
|
/** The Flight stream branch to deserialize into the SSR VDOM. */
|
|
149
180
|
rscStream: ReadableStream<Uint8Array>;
|
|
181
|
+
/**
|
|
182
|
+
* Pre-created payload promise (deserializeSsrPayload over the SAME
|
|
183
|
+
* rscStream). When present SsrRoot adopts it instead of deserializing
|
|
184
|
+
* lazily on first render — the stream can only be consumed once, so the
|
|
185
|
+
* caller that already started deserialization MUST pass the promise in.
|
|
186
|
+
*/
|
|
187
|
+
payload?: Promise<RscPayload>;
|
|
150
188
|
/** Nonce for CSP; propagated to NonceContext. */
|
|
151
189
|
nonce?: string;
|
|
152
190
|
/**
|
|
@@ -205,33 +243,23 @@ export function createSsrRootComponent(opts: SsrRootOptions): React.FC {
|
|
|
205
243
|
origin,
|
|
206
244
|
} = opts;
|
|
207
245
|
|
|
208
|
-
|
|
246
|
+
// onPayloadSettled fires AFTER fragment expansion (inside
|
|
247
|
+
// deserializeSsrPayload): the capture's fizz-readiness gate must include
|
|
248
|
+
// fragment module loads.
|
|
249
|
+
const adoptPayload = (p: Promise<RscPayload>): Promise<RscPayload> => {
|
|
250
|
+
if (onPayloadSettled) p.then(onPayloadSettled, onPayloadSettled);
|
|
251
|
+
return p;
|
|
252
|
+
};
|
|
253
|
+
let payload: Promise<RscPayload> | undefined =
|
|
254
|
+
opts.payload && adoptPayload(opts.payload);
|
|
209
255
|
let handlesPromise: Promise<HandleData> | undefined;
|
|
210
256
|
let ssrContextValue: NavigationStoreContextValue | undefined;
|
|
211
257
|
let rootPromise: Promise<React.ReactNode> | undefined;
|
|
212
258
|
|
|
213
259
|
return function SsrRoot() {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
// environment's deserializer before anything reads the segments. Every
|
|
218
|
-
// other payload (full render, capture, actions) has no envelopes and
|
|
219
|
-
// pays one field scan. onPayloadSettled fires AFTER expansion: the
|
|
220
|
-
// capture's fizz-readiness gate must include fragment module loads.
|
|
221
|
-
// Promise.resolve() adoption is load-bearing: some wirings (the build
|
|
222
|
-
// temp server's vendored Flight client) return a THENABLE Chunk whose
|
|
223
|
-
// .then returns undefined — chaining on it directly yields undefined.
|
|
224
|
-
payload = Promise.resolve(
|
|
225
|
-
createFromReadableStream<RscPayload>(rscStream),
|
|
226
|
-
).then(async (resolvedPayload) => {
|
|
227
|
-
await expandSegmentFragments(
|
|
228
|
-
resolvedPayload.metadata?.segments,
|
|
229
|
-
createFromReadableStream,
|
|
230
|
-
);
|
|
231
|
-
return resolvedPayload;
|
|
232
|
-
});
|
|
233
|
-
if (onPayloadSettled) payload.then(onPayloadSettled, onPayloadSettled);
|
|
234
|
-
}
|
|
260
|
+
payload ??= adoptPayload(
|
|
261
|
+
deserializeSsrPayload(createFromReadableStream, rscStream),
|
|
262
|
+
);
|
|
235
263
|
const resolved = React.use(payload);
|
|
236
264
|
|
|
237
265
|
const themeConfig = resolved.metadata?.themeConfig ?? null;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dev-only diagnostic for the { ssr: false } SSR-completeness opt-in.
|
|
3
|
+
*
|
|
4
|
+
* A document render that awaits flagged loaders before first flush is usually
|
|
5
|
+
* expected to produce an SSR-complete boundary — but the await is scoped per
|
|
6
|
+
* LOADER (see LoaderOptions in types/loader-types.ts), so one unflagged read
|
|
7
|
+
* under the same Suspense boundary still suspends it and the boundary streams
|
|
8
|
+
* as its fallback, invisible without JS. That failure mode looks exactly like
|
|
9
|
+
* the flag not working; a consumer app burned hours on byte-level archaeology
|
|
10
|
+
* before the unflagged sibling read was identified. This warning names the
|
|
11
|
+
* culprit at the suspension site instead.
|
|
12
|
+
*
|
|
13
|
+
* Fires at most once per loader id per process, only during the SSR pass
|
|
14
|
+
* (`window` undefined), only in dev, and only when the render actually awaited
|
|
15
|
+
* flagged loaders (`awaitedLoaderIds`, stamped by segment resolution on
|
|
16
|
+
* document AND shell-capture renders — capture awaits the same flagged lane;
|
|
17
|
+
* its masked live-lane reads suspend by design and dedupe against the live
|
|
18
|
+
* render's warnings through the once-per-id set).
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
const warned = new Set<string>();
|
|
22
|
+
|
|
23
|
+
/** Thenable statuses `use()` unwraps without suspending: React's re-check
|
|
24
|
+
* after `.then()` handles "fulfilled", and Flight chunks in the resolved_*
|
|
25
|
+
* states initialize synchronously inside that same call. Anything else
|
|
26
|
+
* (pending, blocked, an unstamped native promise) suspends at least once. */
|
|
27
|
+
function unwrapsSynchronously(stream: Promise<unknown>): boolean {
|
|
28
|
+
const status = (stream as { status?: string }).status;
|
|
29
|
+
return (
|
|
30
|
+
status === "fulfilled" ||
|
|
31
|
+
status === "resolved_model" ||
|
|
32
|
+
status === "resolved_module"
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function warnAwaitedSsrSuspension(
|
|
37
|
+
loaderId: string,
|
|
38
|
+
awaitedLoaderIds: readonly string[] | undefined,
|
|
39
|
+
stream: Promise<unknown>,
|
|
40
|
+
isServer: boolean = typeof window === "undefined",
|
|
41
|
+
): void {
|
|
42
|
+
if (process.env.NODE_ENV === "production") return;
|
|
43
|
+
if (!isServer) return;
|
|
44
|
+
if (!awaitedLoaderIds || awaitedLoaderIds.length === 0) return;
|
|
45
|
+
if (unwrapsSynchronously(stream)) return;
|
|
46
|
+
if (warned.has(loaderId)) return;
|
|
47
|
+
warned.add(loaderId);
|
|
48
|
+
|
|
49
|
+
if (awaitedLoaderIds.includes(loaderId)) {
|
|
50
|
+
console.error(
|
|
51
|
+
`[rango] Loader "${loaderId}" is flagged { ssr: false } and was awaited ` +
|
|
52
|
+
`before first flush, but its useLoader read observed a still-pending ` +
|
|
53
|
+
`promise during SSR. If its Suspense fallback appears in the SSR'd HTML, ` +
|
|
54
|
+
`please report it to @rangojs/router with a reproduction.`,
|
|
55
|
+
);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
console.warn(
|
|
60
|
+
`[rango] The document render awaited { ssr: false } loader(s) ` +
|
|
61
|
+
`${JSON.stringify(awaitedLoaderIds)} before first flush, but ` +
|
|
62
|
+
`useLoader("${loaderId}") still suspended during SSR. "${loaderId}" is not ` +
|
|
63
|
+
`flagged, so the Suspense boundary above that read streams as its fallback ` +
|
|
64
|
+
`and the content under it stays hidden until JS runs. If the boundary must ` +
|
|
65
|
+
`be SSR-complete, flag "${loaderId}" with { ssr: false } too, or move its ` +
|
|
66
|
+
`read behind its own boundary. If it streams deliberately, ignore this.`,
|
|
67
|
+
);
|
|
68
|
+
}
|
|
@@ -195,7 +195,11 @@ export type LoaderFn<
|
|
|
195
195
|
*
|
|
196
196
|
* Scoped per LOADER, not per segment: an `ssr: false` loader alongside a
|
|
197
197
|
* deliberately streaming sibling awaits only itself, and the sibling keeps
|
|
198
|
-
* streaming behind its `loading()`/Suspense boundary.
|
|
198
|
+
* streaming behind its `loading()`/Suspense boundary. Watch the scoping when
|
|
199
|
+
* the boundary must be SSR-complete: ONE unflagged read under it still
|
|
200
|
+
* suspends the whole boundary, which then streams as its fallback — looking
|
|
201
|
+
* exactly like the flag not working. In dev the router warns at the read
|
|
202
|
+
* site naming the unflagged loader (ssr-suspension-warning.ts).
|
|
199
203
|
*/
|
|
200
204
|
export type LoaderOptions = {
|
|
201
205
|
ssr?: boolean;
|
package/src/types/segments.ts
CHANGED
|
@@ -166,10 +166,27 @@ export interface ResolvedSegment {
|
|
|
166
166
|
loaderId?: string; // For loaders: the loader $$id identifier
|
|
167
167
|
_inherited?: boolean; // For inherited loaders: dedup marker for buildMatchResult
|
|
168
168
|
loaderData?: any; // For loaders: the resolved data from loader execution
|
|
169
|
+
/**
|
|
170
|
+
* True when this loader was awaited before first flush
|
|
171
|
+
* (loader(Def, { ssr: false })). Stamped by resolveLoaders (fresh.ts) on
|
|
172
|
+
* document AND shell-capture renders — capture bakes flagged loaders and
|
|
173
|
+
* awaits the same lane. Feeds segment-system's settled-value delivery and
|
|
174
|
+
* the dev SSR suspension warning (ssr-suspension-warning.ts).
|
|
175
|
+
*/
|
|
176
|
+
awaitBeforeFlush?: true;
|
|
169
177
|
parallelLoading?: ReactNode; // For parallel-owned loaders: the parallel's loading fallback
|
|
170
178
|
// Intercept loader fields (for streaming loader data in parallel segments)
|
|
171
179
|
loaderDataPromise?: Promise<any[]> | any[]; // Loader data promise or resolved array
|
|
172
180
|
loaderIds?: string[]; // IDs ($$id) of loaders for this segment
|
|
181
|
+
/**
|
|
182
|
+
* Per-loader UNDECODED results for a layout/route stream map.
|
|
183
|
+
* Flagged (ssr:false) entries are settled values; unflagged siblings
|
|
184
|
+
* stay promises. Parallel slots do not use this channel — they pin
|
|
185
|
+
* loading() / live-lane holes via use(loaderDataPromise).
|
|
186
|
+
*/
|
|
187
|
+
loaderStreams?: Record<string, unknown>;
|
|
188
|
+
/** $$ids of loaders this segment awaited before flush. Dev diagnostic. */
|
|
189
|
+
awaitedLoaderIds?: string[];
|
|
173
190
|
// Error-specific fields
|
|
174
191
|
error?: ErrorInfo; // For error segments: the error information
|
|
175
192
|
// NotFound-specific fields
|
package/src/use-loader.tsx
CHANGED
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
import { OutletContext, type OutletContextValue } from "./outlet-context.js";
|
|
16
16
|
import { loaderStore, type LoaderEntry } from "./loader-store.js";
|
|
17
17
|
import { decodeLoaderEntry } from "./decode-loader-results.js";
|
|
18
|
+
import { warnAwaitedSsrSuspension } from "./ssr-suspension-warning.js";
|
|
18
19
|
import type { LoaderDefinition, LoadOptions } from "./types.js";
|
|
19
20
|
|
|
20
21
|
function isShareableGet(options: LoadOptions | undefined): boolean {
|
|
@@ -64,11 +65,18 @@ function lookupLoaderStreams(
|
|
|
64
65
|
function extractContentLoaderData(
|
|
65
66
|
node: ReactNode,
|
|
66
67
|
loaderId: string,
|
|
68
|
+
awaitedAcc?: string[],
|
|
67
69
|
): LoaderLookup {
|
|
68
70
|
if (!isValidElement(node)) return NOT_FOUND;
|
|
69
71
|
const props = node.props as Record<string, any> | undefined;
|
|
70
72
|
if (!props) return NOT_FOUND;
|
|
71
73
|
|
|
74
|
+
// Collect BEFORE the lookups so ids on the element that owns the stream
|
|
75
|
+
// entry count for the SSR suspension diagnostic.
|
|
76
|
+
if (awaitedAcc && Array.isArray(props.awaitedLoaderIds)) {
|
|
77
|
+
awaitedAcc.push(...props.awaitedLoaderIds);
|
|
78
|
+
}
|
|
79
|
+
|
|
72
80
|
// Direct OutletProvider with loaderData
|
|
73
81
|
if (props.loaderData && loaderId in props.loaderData) {
|
|
74
82
|
return { value: props.loaderData[loaderId] };
|
|
@@ -93,7 +101,9 @@ function extractContentLoaderData(
|
|
|
93
101
|
}
|
|
94
102
|
}
|
|
95
103
|
|
|
96
|
-
if (props.children)
|
|
104
|
+
if (props.children) {
|
|
105
|
+
return extractContentLoaderData(props.children, loaderId, awaitedAcc);
|
|
106
|
+
}
|
|
97
107
|
return NOT_FOUND;
|
|
98
108
|
}
|
|
99
109
|
|
|
@@ -136,9 +146,14 @@ function useLoaderInternal<T>(
|
|
|
136
146
|
contextData: T | undefined;
|
|
137
147
|
hasContextData: boolean;
|
|
138
148
|
pendingStream?: Promise<unknown>;
|
|
149
|
+
/** { ssr: false } loader ids seen on the chain up to (and including) the
|
|
150
|
+
* level that owned the read — input for the dev SSR suspension warning. */
|
|
151
|
+
awaitedLoaderIds?: string[];
|
|
139
152
|
} => {
|
|
153
|
+
const awaited: string[] = [];
|
|
140
154
|
let current: OutletContextValue | null | undefined = context;
|
|
141
155
|
while (current) {
|
|
156
|
+
if (current.awaitedLoaderIds) awaited.push(...current.awaitedLoaderIds);
|
|
142
157
|
if (current.loaderData && loader.$$id in current.loaderData) {
|
|
143
158
|
return {
|
|
144
159
|
contextData: current.loaderData[loader.$$id] as T,
|
|
@@ -152,6 +167,7 @@ function useLoaderInternal<T>(
|
|
|
152
167
|
contextData: undefined,
|
|
153
168
|
hasContextData: true,
|
|
154
169
|
pendingStream: streamed.stream,
|
|
170
|
+
awaitedLoaderIds: awaited,
|
|
155
171
|
};
|
|
156
172
|
}
|
|
157
173
|
return { contextData: streamed.value as T, hasContextData: true };
|
|
@@ -159,6 +175,7 @@ function useLoaderInternal<T>(
|
|
|
159
175
|
const contentData = extractContentLoaderData(
|
|
160
176
|
current.content,
|
|
161
177
|
loader.$$id,
|
|
178
|
+
awaited,
|
|
162
179
|
);
|
|
163
180
|
if (contentData !== NOT_FOUND) {
|
|
164
181
|
if ("stream" in contentData) {
|
|
@@ -166,6 +183,7 @@ function useLoaderInternal<T>(
|
|
|
166
183
|
contextData: undefined,
|
|
167
184
|
hasContextData: true,
|
|
168
185
|
pendingStream: contentData.stream,
|
|
186
|
+
awaitedLoaderIds: awaited,
|
|
169
187
|
};
|
|
170
188
|
}
|
|
171
189
|
return { contextData: contentData.value as T, hasContextData: true };
|
|
@@ -184,6 +202,11 @@ function useLoaderInternal<T>(
|
|
|
184
202
|
const { hasContextData } = walk;
|
|
185
203
|
let contextData = walk.contextData;
|
|
186
204
|
if (walk.pendingStream) {
|
|
205
|
+
warnAwaitedSsrSuspension(
|
|
206
|
+
loader.$$id,
|
|
207
|
+
walk.awaitedLoaderIds,
|
|
208
|
+
walk.pendingStream,
|
|
209
|
+
);
|
|
187
210
|
contextData = decodeLoaderEntry(use(walk.pendingStream)) as T;
|
|
188
211
|
}
|
|
189
212
|
|
|
@@ -196,6 +196,11 @@ export async function runShellPrerenderPhase(
|
|
|
196
196
|
prerender: reactDomStatic.prerender ?? reactDomStatic.default?.prerender,
|
|
197
197
|
injectRSCPayload: htmlStream.injectRSCPayload,
|
|
198
198
|
headScripts: "preinit",
|
|
199
|
+
// Build-captured shells must honor the explicit outlining budget: the
|
|
200
|
+
// capture value rides the postponed state into every runtime resume().
|
|
201
|
+
...(s.opts?.progressiveChunkSize !== undefined && {
|
|
202
|
+
progressiveChunkSize: s.opts.progressiveChunkSize,
|
|
203
|
+
}),
|
|
199
204
|
loadBootstrapScriptContent: async () => bootstrapContent,
|
|
200
205
|
});
|
|
201
206
|
|
|
@@ -45,6 +45,12 @@ export interface PluginOptions {
|
|
|
45
45
|
* capture endpoint with the app's configured head-script strategy.
|
|
46
46
|
*/
|
|
47
47
|
headScripts?: import("../plugin-types.js").HeadScriptsOption;
|
|
48
|
+
/**
|
|
49
|
+
* rango({ progressiveChunkSize }) — threaded alongside headScripts so the
|
|
50
|
+
* temp server's virtual SSR entry bakes the app's configured Fizz outlining
|
|
51
|
+
* budget into its capture/render handlers.
|
|
52
|
+
*/
|
|
53
|
+
progressiveChunkSize?: number;
|
|
48
54
|
}
|
|
49
55
|
|
|
50
56
|
export interface PrecomputedEntry {
|
package/src/vite/plugin-types.ts
CHANGED
|
@@ -159,6 +159,34 @@ interface RangoBaseOptions {
|
|
|
159
159
|
*/
|
|
160
160
|
headScripts?: HeadScriptsOption;
|
|
161
161
|
|
|
162
|
+
/**
|
|
163
|
+
* React Fizz `progressiveChunkSize`, forwarded to the document renders the
|
|
164
|
+
* generated SSR entry performs: renderToReadableStream (live SSR) and
|
|
165
|
+
* prerender (PPR shell capture); resume() inherits the capture value from
|
|
166
|
+
* the stored postponed state.
|
|
167
|
+
*
|
|
168
|
+
* Controls COMPLETED-boundary outlining. Once the shell exceeds this budget
|
|
169
|
+
* (React's default is 12800 bytes — any real document), Fizz moves every
|
|
170
|
+
* completed Suspense boundary over ~500 bytes out of its document position
|
|
171
|
+
* to an end-of-stream `<div hidden>` + `$RC()` script reveal. Raise it (e.g.
|
|
172
|
+
* `Number.MAX_SAFE_INTEGER`) to keep completed content inline: in-place for
|
|
173
|
+
* non-executing HTML consumers, no reveal step. Boundaries with suspensey
|
|
174
|
+
* content (hoisted stylesheets) still outline — their reveal must wait for
|
|
175
|
+
* the CSS. Trade-off: inline content delays later shell bytes behind it,
|
|
176
|
+
* which is why React outlines by default.
|
|
177
|
+
*
|
|
178
|
+
* When UNSET, document renders whose matched chain has a
|
|
179
|
+
* `loader(Def, { ssr: false })` entry auto-raise to MAX_SAFE_INTEGER — the
|
|
180
|
+
* loader was awaited before first flush precisely so its content ships
|
|
181
|
+
* in-place, and outlining the boundary it feeds would defeat that. Setting
|
|
182
|
+
* an explicit value disables the auto-raise. The auto-raise is live-SSR
|
|
183
|
+
* only; captured shells use the explicit value or React's default.
|
|
184
|
+
*
|
|
185
|
+
* Apps with a custom SSR entry set this per-handler via
|
|
186
|
+
* `SSRDependencies.progressiveChunkSize`.
|
|
187
|
+
*/
|
|
188
|
+
progressiveChunkSize?: number;
|
|
189
|
+
|
|
162
190
|
/**
|
|
163
191
|
* Filter which files route discovery scans, by glob. Paths are matched
|
|
164
192
|
* root-relative (e.g. `src/routes/**`). `include` restricts discovery to
|
|
@@ -48,6 +48,18 @@ async function initializeApp() {
|
|
|
48
48
|
initializeApp().catch(console.error);
|
|
49
49
|
`.trim();
|
|
50
50
|
|
|
51
|
+
function emitProgressiveChunkSize(value: number): string {
|
|
52
|
+
if (value === Number.POSITIVE_INFINITY) {
|
|
53
|
+
return "Number.POSITIVE_INFINITY";
|
|
54
|
+
}
|
|
55
|
+
if (!Number.isFinite(value)) {
|
|
56
|
+
throw new Error(
|
|
57
|
+
`rango({ progressiveChunkSize }) must be a finite number or Infinity, received ${String(value)}`,
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
return JSON.stringify(value);
|
|
61
|
+
}
|
|
62
|
+
|
|
51
63
|
/**
|
|
52
64
|
* Generate the virtual SSR entry. `headScripts` mirrors the rango() plugin
|
|
53
65
|
* option: "preinit" (default) installs the client-reference preinit hook and
|
|
@@ -56,6 +68,7 @@ initializeApp().catch(console.error);
|
|
|
56
68
|
*/
|
|
57
69
|
export function getVirtualEntrySSR(
|
|
58
70
|
headScripts: HeadScriptsOption = "preinit",
|
|
71
|
+
progressiveChunkSize?: number,
|
|
59
72
|
): string {
|
|
60
73
|
const preinit = headScripts !== "preload";
|
|
61
74
|
// The preload variant drops exactly three preinit-only lines, all built
|
|
@@ -73,6 +86,16 @@ installClientReferencePreinit(setOnClientReference);
|
|
|
73
86
|
`
|
|
74
87
|
: "";
|
|
75
88
|
const hs = JSON.stringify(headScripts);
|
|
89
|
+
// Emitted into all three handlers: live SSR and shell capture consume it
|
|
90
|
+
// directly; the resume handler receives it for dep-shape uniformity (resume()
|
|
91
|
+
// itself inherits the capture value from the postponed state). Finite numbers
|
|
92
|
+
// stringify exactly (incl. MAX_SAFE_INTEGER). Infinity is emitted as
|
|
93
|
+
// Number.POSITIVE_INFINITY — JSON.stringify(Infinity) is null, which React
|
|
94
|
+
// would treat as "no budget" rather than "never outline".
|
|
95
|
+
const pcs =
|
|
96
|
+
progressiveChunkSize !== undefined
|
|
97
|
+
? `\n progressiveChunkSize: ${emitProgressiveChunkSize(progressiveChunkSize)},`
|
|
98
|
+
: "";
|
|
76
99
|
return `
|
|
77
100
|
import {
|
|
78
101
|
${depsImportNames}
|
|
@@ -90,7 +113,7 @@ export const renderHTML = createSSRHandler({
|
|
|
90
113
|
createFromReadableStream,
|
|
91
114
|
renderToReadableStream,
|
|
92
115
|
injectRSCPayload,
|
|
93
|
-
headScripts: ${hs}
|
|
116
|
+
headScripts: ${hs},${pcs}
|
|
94
117
|
loadBootstrapScriptContent: () =>
|
|
95
118
|
import.meta.viteRsc.loadBootstrapScriptContent("index"),
|
|
96
119
|
});
|
|
@@ -101,7 +124,7 @@ export const captureShellHTML = createShellCaptureHandler({
|
|
|
101
124
|
injectRSCPayload,
|
|
102
125
|
prerender,
|
|
103
126
|
resume,
|
|
104
|
-
headScripts: ${hs}
|
|
127
|
+
headScripts: ${hs},${pcs}
|
|
105
128
|
loadBootstrapScriptContent: () =>
|
|
106
129
|
import.meta.viteRsc.loadBootstrapScriptContent("index"),
|
|
107
130
|
});
|
|
@@ -112,7 +135,7 @@ export const resumeShellHTML = createShellResumeHandler({
|
|
|
112
135
|
injectRSCPayload,
|
|
113
136
|
prerender,
|
|
114
137
|
resume,
|
|
115
|
-
headScripts: ${hs}
|
|
138
|
+
headScripts: ${hs},${pcs}
|
|
116
139
|
loadBootstrapScriptContent: () =>
|
|
117
140
|
import.meta.viteRsc.loadBootstrapScriptContent("index"),
|
|
118
141
|
});
|
package/src/vite/rango.ts
CHANGED
|
@@ -269,6 +269,7 @@ export async function rango(options?: RangoOptions): Promise<PluginOption[]> {
|
|
|
269
269
|
plugins.push(
|
|
270
270
|
createVirtualEntriesPlugin(finalEntries, undefined, {
|
|
271
271
|
headScripts: resolvedOptions.headScripts,
|
|
272
|
+
progressiveChunkSize: resolvedOptions.progressiveChunkSize,
|
|
272
273
|
}),
|
|
273
274
|
);
|
|
274
275
|
plugins.push(performanceTracksPlugin());
|
|
@@ -519,6 +520,7 @@ export async function rango(options?: RangoOptions): Promise<PluginOption[]> {
|
|
|
519
520
|
plugins.push(
|
|
520
521
|
createVirtualEntriesPlugin(finalEntries, routerRef, {
|
|
521
522
|
headScripts: resolvedOptions.headScripts,
|
|
523
|
+
progressiveChunkSize: resolvedOptions.progressiveChunkSize,
|
|
522
524
|
}),
|
|
523
525
|
);
|
|
524
526
|
plugins.push(performanceTracksPlugin());
|
|
@@ -585,6 +587,7 @@ export async function rango(options?: RangoOptions): Promise<PluginOption[]> {
|
|
|
585
587
|
discovery: options?.discovery,
|
|
586
588
|
clientChunkCtx,
|
|
587
589
|
headScripts: resolvedOptions.headScripts,
|
|
590
|
+
progressiveChunkSize: resolvedOptions.progressiveChunkSize,
|
|
588
591
|
}),
|
|
589
592
|
);
|
|
590
593
|
|
|
@@ -265,7 +265,10 @@ async function createTempRscServer(
|
|
|
265
265
|
},
|
|
266
266
|
load(id: string) {
|
|
267
267
|
return id === "\0rango-temp-real-ssr-entry"
|
|
268
|
-
? getVirtualEntrySSR(
|
|
268
|
+
? getVirtualEntrySSR(
|
|
269
|
+
state.opts?.headScripts,
|
|
270
|
+
state.opts?.progressiveChunkSize,
|
|
271
|
+
)
|
|
269
272
|
: null;
|
|
270
273
|
},
|
|
271
274
|
} satisfies import("vite").Plugin,
|
|
@@ -1707,6 +1710,8 @@ export function createRouterDiscoveryPlugin(
|
|
|
1707
1710
|
if (expectedEpoch === undefined) return;
|
|
1708
1711
|
void (async () => {
|
|
1709
1712
|
const deadline = Date.now() + 15_000;
|
|
1713
|
+
let reloadBackoffMs = 100;
|
|
1714
|
+
let nextReloadAt = Date.now() + reloadBackoffMs;
|
|
1710
1715
|
do {
|
|
1711
1716
|
if (devServerClosed || expectedEpoch !== s.devDiscoveryEpoch) {
|
|
1712
1717
|
return;
|
|
@@ -1732,10 +1737,18 @@ export function createRouterDiscoveryPlugin(
|
|
|
1732
1737
|
publishDevDiscoveryReady(expectedEpoch);
|
|
1733
1738
|
return;
|
|
1734
1739
|
}
|
|
1740
|
+
await response.body?.cancel().catch(() => {});
|
|
1735
1741
|
// A response without the expected epoch proves an older worker
|
|
1736
1742
|
// evaluation won the race after the initial invalidation. Clear
|
|
1737
|
-
// that completed evaluation and retry the reload.
|
|
1738
|
-
|
|
1743
|
+
// that completed evaluation and retry the reload. Back off the
|
|
1744
|
+
// retries: reloading faster than workerd can evaluate prevents
|
|
1745
|
+
// convergence and retains overlapping module generations.
|
|
1746
|
+
const now = Date.now();
|
|
1747
|
+
if (now >= nextReloadAt) {
|
|
1748
|
+
reloadWorkerd();
|
|
1749
|
+
reloadBackoffMs = Math.min(reloadBackoffMs * 2, 1_000);
|
|
1750
|
+
nextReloadAt = now + reloadBackoffMs;
|
|
1751
|
+
}
|
|
1739
1752
|
} catch {}
|
|
1740
1753
|
} while (Date.now() < deadline);
|
|
1741
1754
|
|
|
@@ -1949,26 +1962,25 @@ export function createRouterDiscoveryPlugin(
|
|
|
1949
1962
|
// the entry + router sources so the import re-creates the routers
|
|
1950
1963
|
// against the refreshed projection (installed by the pre-entry
|
|
1951
1964
|
// refresh in discover-routers.ts).
|
|
1952
|
-
|
|
1953
|
-
|
|
1965
|
+
const mainRscEnv = (server.environments as any)?.rsc;
|
|
1966
|
+
if (isUseClient && hasClientUrls && mainRscEnv?.runner) {
|
|
1967
|
+
const rscGraph = mainRscEnv.moduleGraph;
|
|
1954
1968
|
if (rscGraph?.getModulesByFile) {
|
|
1955
1969
|
// Importers must be invalidated too: the virtual RSC entry
|
|
1956
1970
|
// holds a live `import { router }` binding, and re-evaluating
|
|
1957
1971
|
// router.tsx alone leaves that binding on the OLD instance —
|
|
1958
1972
|
// the request pipeline would keep serving the stale mount.
|
|
1959
|
-
//
|
|
1960
|
-
//
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
}
|
|
1971
|
-
};
|
|
1973
|
+
// Vite's invalidateModule already walks importers. Share its
|
|
1974
|
+
// seen set across roots instead of recursively starting a new
|
|
1975
|
+
// traversal at every importer (quadratic on a large graph).
|
|
1976
|
+
// Vite's walk skips HMR-accepting importers and soft-invalidates
|
|
1977
|
+
// static ones (vs the old unconditional hard walk) — safe here:
|
|
1978
|
+
// the entry and every router source are invalidated directly as
|
|
1979
|
+
// roots, and ancestors get the exact treatment Vite's own
|
|
1980
|
+
// file-change propagation applies on a server urls edit.
|
|
1981
|
+
// Cloudflare has no local runner and skips this block: its temp
|
|
1982
|
+
// discovery graph and workerd graph are invalidated wholesale
|
|
1983
|
+
// by refreshRuntimeDiscovery() after this watcher event.
|
|
1972
1984
|
const routerSourceFiles = new Set<string>();
|
|
1973
1985
|
if (s.resolvedEntryPath) {
|
|
1974
1986
|
routerSourceFiles.add(resolve(s.resolvedEntryPath));
|
|
@@ -1991,7 +2003,7 @@ export function createRouterDiscoveryPlugin(
|
|
|
1991
2003
|
continue;
|
|
1992
2004
|
}
|
|
1993
2005
|
for (const mod of mods) {
|
|
1994
|
-
|
|
2006
|
+
rscGraph.invalidateModule(mod, seen);
|
|
1995
2007
|
}
|
|
1996
2008
|
}
|
|
1997
2009
|
debugDiscovery?.(
|
|
@@ -110,7 +110,10 @@ export function normalizeHostRouterEntry(
|
|
|
110
110
|
export function createVirtualEntriesPlugin(
|
|
111
111
|
entries: { client: string; ssr: string; rsc?: string },
|
|
112
112
|
routerPathRef?: { path?: string; kind?: "router" | "host" },
|
|
113
|
-
options?: {
|
|
113
|
+
options?: {
|
|
114
|
+
headScripts?: HeadScriptsOption;
|
|
115
|
+
progressiveChunkSize?: number;
|
|
116
|
+
},
|
|
114
117
|
): Plugin {
|
|
115
118
|
// Build virtual modules map based on which entries use virtual IDs
|
|
116
119
|
const virtualModules: Record<string, string> = {};
|
|
@@ -119,7 +122,10 @@ export function createVirtualEntriesPlugin(
|
|
|
119
122
|
virtualModules[VIRTUAL_IDS.browser] = VIRTUAL_ENTRY_BROWSER;
|
|
120
123
|
}
|
|
121
124
|
if (entries.ssr === VIRTUAL_IDS.ssr) {
|
|
122
|
-
virtualModules[VIRTUAL_IDS.ssr] = getVirtualEntrySSR(
|
|
125
|
+
virtualModules[VIRTUAL_IDS.ssr] = getVirtualEntrySSR(
|
|
126
|
+
options?.headScripts,
|
|
127
|
+
options?.progressiveChunkSize,
|
|
128
|
+
);
|
|
123
129
|
}
|
|
124
130
|
|
|
125
131
|
// RSC entry is resolved lazily in load() because routerPath may be
|