@rangojs/router 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/types/browser/event-controller.d.ts +6 -0
- package/dist/types/cache/cf/cf-cache-constants.d.ts +8 -1
- package/dist/types/cache/cf/cf-cache-store.d.ts +15 -1
- package/dist/types/cache/cf/cf-cache-types.d.ts +1 -1
- package/dist/types/cache/cf/cf-kv-utils.d.ts +21 -0
- package/dist/types/handles/is-thenable.d.ts +2 -4
- package/dist/types/rsc/helpers.d.ts +3 -0
- package/dist/types/rsc/render-pipeline.d.ts +9 -0
- package/dist/types/rsc/routine-plan.d.ts +124 -0
- package/dist/types/rsc/shell-capture-constants.d.ts +17 -0
- package/dist/types/server/request-context.d.ts +4 -1
- package/dist/types/vite/encryption-key.d.ts +2 -0
- package/dist/types/vite/plugins/expose-internal-ids.d.ts +10 -0
- package/dist/types/vite/plugins/server-ref-hashing.d.ts +24 -0
- package/dist/types/vite/plugins/server-reference-pattern.d.ts +1 -0
- package/dist/types/vite/utils/shared-utils.d.ts +12 -0
- package/dist/vite/index.js +154 -57
- package/package.json +3 -3
- package/skills/caching/SKILL.md +1 -1
- package/skills/mime-routes/SKILL.md +3 -1
- package/skills/response-routes/SKILL.md +4 -2
- package/skills/typesafety/generated-files-and-cli.md +16 -9
- package/skills/typesafety/route-types.md +5 -1
- package/skills/use-cache/SKILL.md +47 -0
- package/src/browser/event-controller.ts +40 -15
- package/src/browser/partial-update.ts +26 -11
- package/src/browser/react/NavigationProvider.tsx +7 -0
- package/src/cache/cache-runtime.ts +89 -15
- package/src/cache/cf/cf-cache-constants.ts +8 -1
- package/src/cache/cf/cf-cache-store.ts +41 -64
- package/src/cache/cf/cf-cache-types.ts +1 -1
- package/src/cache/cf/cf-kv-utils.ts +38 -0
- package/src/cache/segment-codec.ts +21 -5
- package/src/handles/is-thenable.ts +2 -4
- package/src/router/match-middleware/cache-lookup.ts +24 -15
- package/src/rsc/handler.ts +26 -5
- package/src/rsc/helpers.ts +13 -0
- package/src/rsc/progressive-enhancement.ts +247 -70
- package/src/rsc/render-pipeline.ts +68 -24
- package/src/rsc/routine-plan.ts +359 -0
- package/src/rsc/rsc-rendering.ts +555 -302
- package/src/rsc/server-action.ts +180 -71
- package/src/rsc/shell-capture-constants.ts +18 -0
- package/src/rsc/shell-capture.ts +92 -21
- package/src/server/request-context.ts +6 -0
- package/src/ssr/ssr-root.tsx +1 -0
- package/src/vite/encryption-key.ts +29 -0
- package/src/vite/plugins/expose-action-id.ts +2 -2
- package/src/vite/plugins/expose-internal-ids.ts +46 -0
- package/src/vite/plugins/server-ref-hashing.ts +74 -0
- package/src/vite/plugins/server-reference-pattern.ts +10 -0
- package/src/vite/rango.ts +9 -0
- package/src/vite/router-discovery.ts +21 -2
- package/src/vite/utils/shared-utils.ts +12 -7
- package/dist/types.backup/__internal.d.ts +0 -127
- package/dist/types.backup/bin/rango.d.ts +0 -1
- package/dist/types.backup/browser/action-coordinator.d.ts +0 -57
- package/dist/types.backup/browser/action-fence.d.ts +0 -33
- package/dist/types.backup/browser/app-shell.d.ts +0 -34
- package/dist/types.backup/browser/app-version.d.ts +0 -6
- package/dist/types.backup/browser/connection-warmup.d.ts +0 -31
- package/dist/types.backup/browser/cookie-name.d.ts +0 -66
- package/dist/types.backup/browser/event-controller.d.ts +0 -221
- package/dist/types.backup/browser/history-state.d.ts +0 -26
- package/dist/types.backup/browser/index.d.ts +0 -1
- package/dist/types.backup/browser/intercept-utils.d.ts +0 -30
- package/dist/types.backup/browser/invalidate-client-cache.d.ts +0 -17
- package/dist/types.backup/browser/link-interceptor.d.ts +0 -43
- package/dist/types.backup/browser/logging.d.ts +0 -33
- package/dist/types.backup/browser/merge-segment-loaders.d.ts +0 -38
- package/dist/types.backup/browser/navigation-bridge.d.ts +0 -27
- package/dist/types.backup/browser/navigation-client.d.ts +0 -17
- package/dist/types.backup/browser/navigation-store-handle.d.ts +0 -25
- package/dist/types.backup/browser/navigation-store.d.ts +0 -95
- package/dist/types.backup/browser/navigation-transaction.d.ts +0 -75
- package/dist/types.backup/browser/network-error-handler.d.ts +0 -35
- package/dist/types.backup/browser/partial-update.d.ts +0 -61
- package/dist/types.backup/browser/prefetch/cache.d.ts +0 -183
- package/dist/types.backup/browser/prefetch/fetch.d.ts +0 -52
- package/dist/types.backup/browser/prefetch/observer.d.ts +0 -27
- package/dist/types.backup/browser/prefetch/policy.d.ts +0 -13
- package/dist/types.backup/browser/prefetch/queue.d.ts +0 -48
- package/dist/types.backup/browser/prefetch/resource-ready.d.ts +0 -28
- package/dist/types.backup/browser/rango-state.d.ts +0 -52
- package/dist/types.backup/browser/react/Link.d.ts +0 -140
- package/dist/types.backup/browser/react/NavigationProvider.d.ts +0 -88
- package/dist/types.backup/browser/react/ScrollRestoration.d.ts +0 -78
- package/dist/types.backup/browser/react/context.d.ts +0 -54
- package/dist/types.backup/browser/react/filter-segment-order.d.ts +0 -35
- package/dist/types.backup/browser/react/index.d.ts +0 -1
- package/dist/types.backup/browser/react/location-state-shared.d.ts +0 -162
- package/dist/types.backup/browser/react/location-state.d.ts +0 -29
- package/dist/types.backup/browser/react/mount-context.d.ts +0 -23
- package/dist/types.backup/browser/react/nonce-context.d.ts +0 -14
- package/dist/types.backup/browser/react/shallow-equal.d.ts +0 -5
- package/dist/types.backup/browser/react/use-action.d.ts +0 -61
- package/dist/types.backup/browser/react/use-handle.d.ts +0 -21
- package/dist/types.backup/browser/react/use-href.d.ts +0 -32
- package/dist/types.backup/browser/react/use-link-status.d.ts +0 -36
- package/dist/types.backup/browser/react/use-mount.d.ts +0 -24
- package/dist/types.backup/browser/react/use-navigation.d.ts +0 -15
- package/dist/types.backup/browser/react/use-params.d.ts +0 -21
- package/dist/types.backup/browser/react/use-pathname.d.ts +0 -13
- package/dist/types.backup/browser/react/use-reverse.d.ts +0 -40
- package/dist/types.backup/browser/react/use-router.d.ts +0 -23
- package/dist/types.backup/browser/react/use-search-params.d.ts +0 -19
- package/dist/types.backup/browser/react/use-segments.d.ts +0 -29
- package/dist/types.backup/browser/response-adapter.d.ts +0 -58
- package/dist/types.backup/browser/rsc-router.d.ts +0 -141
- package/dist/types.backup/browser/scroll-restoration.d.ts +0 -103
- package/dist/types.backup/browser/segment-reconciler.d.ts +0 -74
- package/dist/types.backup/browser/segment-structure-assert.d.ts +0 -16
- package/dist/types.backup/browser/server-action-bridge.d.ts +0 -29
- package/dist/types.backup/browser/types.d.ts +0 -530
- package/dist/types.backup/browser/validate-redirect-origin.d.ts +0 -28
- package/dist/types.backup/build/collect-fallback-refs.d.ts +0 -5
- package/dist/types.backup/build/generate-manifest.d.ts +0 -100
- package/dist/types.backup/build/generate-route-types.d.ts +0 -8
- package/dist/types.backup/build/index.d.ts +0 -21
- package/dist/types.backup/build/prefix-tree-utils.d.ts +0 -56
- package/dist/types.backup/build/route-trie.d.ts +0 -89
- package/dist/types.backup/build/route-types/ast-helpers.d.ts +0 -3
- package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +0 -13
- package/dist/types.backup/build/route-types/codegen.d.ts +0 -16
- package/dist/types.backup/build/route-types/include-resolution.d.ts +0 -74
- package/dist/types.backup/build/route-types/param-extraction.d.ts +0 -13
- package/dist/types.backup/build/route-types/per-module-writer.d.ts +0 -18
- package/dist/types.backup/build/route-types/router-processing.d.ts +0 -82
- package/dist/types.backup/build/route-types/scan-filter.d.ts +0 -17
- package/dist/types.backup/build/route-types/source-scan.d.ts +0 -13
- package/dist/types.backup/build/runtime-discovery.d.ts +0 -24
- package/dist/types.backup/cache/background-task.d.ts +0 -21
- package/dist/types.backup/cache/cache-error.d.ts +0 -71
- package/dist/types.backup/cache/cache-key-utils.d.ts +0 -35
- package/dist/types.backup/cache/cache-policy.d.ts +0 -59
- package/dist/types.backup/cache/cache-runtime.d.ts +0 -51
- package/dist/types.backup/cache/cache-scope.d.ts +0 -134
- package/dist/types.backup/cache/cache-tag.d.ts +0 -79
- package/dist/types.backup/cache/cf/cf-base64.d.ts +0 -4
- package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +0 -105
- package/dist/types.backup/cache/cf/cf-cache-store.d.ts +0 -481
- package/dist/types.backup/cache/cf/cf-cache-types.d.ts +0 -300
- package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +0 -22
- package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +0 -15
- package/dist/types.backup/cache/cf/index.d.ts +0 -3
- package/dist/types.backup/cache/document-cache.d.ts +0 -69
- package/dist/types.backup/cache/handle-capture.d.ts +0 -23
- package/dist/types.backup/cache/handle-snapshot.d.ts +0 -39
- package/dist/types.backup/cache/index.d.ts +0 -7
- package/dist/types.backup/cache/memory-segment-store.d.ts +0 -163
- package/dist/types.backup/cache/profile-registry.d.ts +0 -40
- package/dist/types.backup/cache/read-through-swr.d.ts +0 -60
- package/dist/types.backup/cache/segment-codec.d.ts +0 -78
- package/dist/types.backup/cache/shell-snapshot.d.ts +0 -162
- package/dist/types.backup/cache/tag-invalidation.d.ts +0 -74
- package/dist/types.backup/cache/taint.d.ts +0 -71
- package/dist/types.backup/cache/types.d.ts +0 -407
- package/dist/types.backup/cache/vercel/index.d.ts +0 -1
- package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +0 -267
- package/dist/types.backup/client.d.ts +0 -184
- package/dist/types.backup/client.rsc.d.ts +0 -39
- package/dist/types.backup/cloudflare/index.d.ts +0 -7
- package/dist/types.backup/cloudflare/tracing.d.ts +0 -53
- package/dist/types.backup/component-utils.d.ts +0 -46
- package/dist/types.backup/components/DefaultDocument.d.ts +0 -13
- package/dist/types.backup/context-var.d.ts +0 -84
- package/dist/types.backup/debug.d.ts +0 -57
- package/dist/types.backup/decode-loader-results.d.ts +0 -5
- package/dist/types.backup/default-error-boundary.d.ts +0 -10
- package/dist/types.backup/defer.d.ts +0 -89
- package/dist/types.backup/deps/browser.d.ts +0 -1
- package/dist/types.backup/deps/html-stream-client.d.ts +0 -1
- package/dist/types.backup/deps/html-stream-server.d.ts +0 -1
- package/dist/types.backup/deps/rsc.d.ts +0 -1
- package/dist/types.backup/deps/ssr.d.ts +0 -1
- package/dist/types.backup/encode-kv.d.ts +0 -35
- package/dist/types.backup/errors.d.ts +0 -226
- package/dist/types.backup/escape-script.d.ts +0 -44
- package/dist/types.backup/handle.d.ts +0 -93
- package/dist/types.backup/handles/MetaTags.d.ts +0 -17
- package/dist/types.backup/handles/Scripts.d.ts +0 -38
- package/dist/types.backup/handles/breadcrumbs.d.ts +0 -43
- package/dist/types.backup/handles/deferred-resolution.d.ts +0 -53
- package/dist/types.backup/handles/is-thenable.d.ts +0 -12
- package/dist/types.backup/handles/meta.d.ts +0 -43
- package/dist/types.backup/handles/script.d.ts +0 -139
- package/dist/types.backup/host/cookie-handler.d.ts +0 -8
- package/dist/types.backup/host/errors.d.ts +0 -40
- package/dist/types.backup/host/index.d.ts +0 -33
- package/dist/types.backup/host/pattern-matcher.d.ts +0 -30
- package/dist/types.backup/host/router.d.ts +0 -12
- package/dist/types.backup/host/testing.d.ts +0 -41
- package/dist/types.backup/host/types.d.ts +0 -148
- package/dist/types.backup/host/utils.d.ts +0 -20
- package/dist/types.backup/href-client.d.ts +0 -214
- package/dist/types.backup/index.d.ts +0 -112
- package/dist/types.backup/index.rsc.d.ts +0 -51
- package/dist/types.backup/internal-debug.d.ts +0 -1
- package/dist/types.backup/loader-store.d.ts +0 -193
- package/dist/types.backup/loader.d.ts +0 -18
- package/dist/types.backup/loader.rsc.d.ts +0 -18
- package/dist/types.backup/missing-id-error.d.ts +0 -1
- package/dist/types.backup/outlet-context.d.ts +0 -12
- package/dist/types.backup/outlet-provider.d.ts +0 -12
- package/dist/types.backup/prerender/build-shell-capture.d.ts +0 -104
- package/dist/types.backup/prerender/param-hash.d.ts +0 -6
- package/dist/types.backup/prerender/shell-manifest-key.d.ts +0 -18
- package/dist/types.backup/prerender/store.d.ts +0 -62
- package/dist/types.backup/prerender.d.ts +0 -292
- package/dist/types.backup/redirect-origin.d.ts +0 -55
- package/dist/types.backup/regex-escape.d.ts +0 -6
- package/dist/types.backup/render-error-thrower.d.ts +0 -13
- package/dist/types.backup/response-utils.d.ts +0 -35
- package/dist/types.backup/reverse.d.ts +0 -206
- package/dist/types.backup/root-error-boundary.d.ts +0 -32
- package/dist/types.backup/route-content-wrapper.d.ts +0 -40
- package/dist/types.backup/route-definition/dsl-helpers.d.ts +0 -130
- package/dist/types.backup/route-definition/helper-factories.d.ts +0 -22
- package/dist/types.backup/route-definition/helpers-types.d.ts +0 -392
- package/dist/types.backup/route-definition/index.d.ts +0 -7
- package/dist/types.backup/route-definition/redirect.d.ts +0 -48
- package/dist/types.backup/route-definition/resolve-handler-use.d.ts +0 -19
- package/dist/types.backup/route-definition/use-item-types.d.ts +0 -1
- package/dist/types.backup/route-definition.d.ts +0 -1
- package/dist/types.backup/route-map-builder.d.ts +0 -127
- package/dist/types.backup/route-name.d.ts +0 -27
- package/dist/types.backup/route-types.d.ts +0 -172
- package/dist/types.backup/router/basename.d.ts +0 -10
- package/dist/types.backup/router/content-negotiation.d.ts +0 -91
- package/dist/types.backup/router/debug-manifest.d.ts +0 -7
- package/dist/types.backup/router/error-handling.d.ts +0 -76
- package/dist/types.backup/router/find-match.d.ts +0 -19
- package/dist/types.backup/router/handler-context.d.ts +0 -41
- package/dist/types.backup/router/instrument.d.ts +0 -161
- package/dist/types.backup/router/intercept-resolution.d.ts +0 -79
- package/dist/types.backup/router/lazy-includes.d.ts +0 -26
- package/dist/types.backup/router/loader-resolution.d.ts +0 -63
- package/dist/types.backup/router/logging.d.ts +0 -41
- package/dist/types.backup/router/manifest.d.ts +0 -8
- package/dist/types.backup/router/match-api.d.ts +0 -19
- package/dist/types.backup/router/match-context.d.ts +0 -184
- package/dist/types.backup/router/match-handlers.d.ts +0 -49
- package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +0 -113
- package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +0 -113
- package/dist/types.backup/router/match-middleware/cache-store.d.ts +0 -112
- package/dist/types.backup/router/match-middleware/index.d.ts +0 -80
- package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +0 -116
- package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +0 -94
- package/dist/types.backup/router/match-pipelines.d.ts +0 -103
- package/dist/types.backup/router/match-result.d.ts +0 -114
- package/dist/types.backup/router/metrics.d.ts +0 -6
- package/dist/types.backup/router/middleware-types.d.ts +0 -74
- package/dist/types.backup/router/middleware.d.ts +0 -116
- package/dist/types.backup/router/navigation-snapshot.d.ts +0 -22
- package/dist/types.backup/router/params-util.d.ts +0 -8
- package/dist/types.backup/router/parse-pattern.d.ts +0 -38
- package/dist/types.backup/router/pattern-matching.d.ts +0 -169
- package/dist/types.backup/router/prefetch-cache-ttl.d.ts +0 -27
- package/dist/types.backup/router/prefetch-limits.d.ts +0 -20
- package/dist/types.backup/router/prerender-match.d.ts +0 -50
- package/dist/types.backup/router/preview-match.d.ts +0 -22
- package/dist/types.backup/router/request-classification.d.ts +0 -104
- package/dist/types.backup/router/revalidation.d.ts +0 -57
- package/dist/types.backup/router/route-snapshot.d.ts +0 -112
- package/dist/types.backup/router/router-context.d.ts +0 -137
- package/dist/types.backup/router/router-interfaces.d.ts +0 -432
- package/dist/types.backup/router/router-options.d.ts +0 -738
- package/dist/types.backup/router/router-registry.d.ts +0 -15
- package/dist/types.backup/router/segment-resolution/fresh.d.ts +0 -55
- package/dist/types.backup/router/segment-resolution/helpers.d.ts +0 -93
- package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +0 -33
- package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +0 -44
- package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +0 -90
- package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +0 -53
- package/dist/types.backup/router/segment-resolution/revalidation.d.ts +0 -85
- package/dist/types.backup/router/segment-resolution/static-store.d.ts +0 -17
- package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +0 -16
- package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +0 -28
- package/dist/types.backup/router/segment-resolution.d.ts +0 -3
- package/dist/types.backup/router/segment-wrappers.d.ts +0 -53
- package/dist/types.backup/router/state-cookie-name.d.ts +0 -1
- package/dist/types.backup/router/substitute-pattern-params.d.ts +0 -23
- package/dist/types.backup/router/telemetry-otel.d.ts +0 -113
- package/dist/types.backup/router/telemetry.d.ts +0 -215
- package/dist/types.backup/router/timeout.d.ts +0 -68
- package/dist/types.backup/router/tracing.d.ts +0 -125
- package/dist/types.backup/router/trie-matching.d.ts +0 -32
- package/dist/types.backup/router/types.d.ts +0 -98
- package/dist/types.backup/router/url-params.d.ts +0 -26
- package/dist/types.backup/router.d.ts +0 -7
- package/dist/types.backup/rsc/capture-queue.d.ts +0 -6
- package/dist/types.backup/rsc/full-payload.d.ts +0 -22
- package/dist/types.backup/rsc/handler-context.d.ts +0 -31
- package/dist/types.backup/rsc/handler.d.ts +0 -9
- package/dist/types.backup/rsc/helpers.d.ts +0 -213
- package/dist/types.backup/rsc/index.d.ts +0 -17
- package/dist/types.backup/rsc/json-route-result.d.ts +0 -20
- package/dist/types.backup/rsc/loader-fetch.d.ts +0 -14
- package/dist/types.backup/rsc/manifest-init.d.ts +0 -18
- package/dist/types.backup/rsc/nonce.d.ts +0 -28
- package/dist/types.backup/rsc/origin-guard.d.ts +0 -50
- package/dist/types.backup/rsc/progressive-enhancement.d.ts +0 -19
- package/dist/types.backup/rsc/redirect-guard.d.ts +0 -35
- package/dist/types.backup/rsc/response-cache-serve.d.ts +0 -46
- package/dist/types.backup/rsc/response-error.d.ts +0 -19
- package/dist/types.backup/rsc/response-route-handler.d.ts +0 -29
- package/dist/types.backup/rsc/rsc-rendering.d.ts +0 -23
- package/dist/types.backup/rsc/runtime-warnings.d.ts +0 -22
- package/dist/types.backup/rsc/server-action.d.ts +0 -68
- package/dist/types.backup/rsc/shell-build-manifest.d.ts +0 -84
- package/dist/types.backup/rsc/shell-capture-constants.d.ts +0 -27
- package/dist/types.backup/rsc/shell-capture.d.ts +0 -374
- package/dist/types.backup/rsc/shell-serve.d.ts +0 -136
- package/dist/types.backup/rsc/ssr-setup.d.ts +0 -48
- package/dist/types.backup/rsc/transition-gate.d.ts +0 -27
- package/dist/types.backup/rsc/types.d.ts +0 -290
- package/dist/types.backup/runtime-env.d.ts +0 -1
- package/dist/types.backup/search-params.d.ts +0 -125
- package/dist/types.backup/segment-content-promise.d.ts +0 -13
- package/dist/types.backup/segment-fragments.d.ts +0 -56
- package/dist/types.backup/segment-loader-promise.d.ts +0 -22
- package/dist/types.backup/segment-system.d.ts +0 -84
- package/dist/types.backup/serialize.d.ts +0 -164
- package/dist/types.backup/server/context.d.ts +0 -494
- package/dist/types.backup/server/cookie-parse.d.ts +0 -10
- package/dist/types.backup/server/cookie-store.d.ts +0 -107
- package/dist/types.backup/server/fetchable-loader-store.d.ts +0 -20
- package/dist/types.backup/server/handle-store.d.ts +0 -100
- package/dist/types.backup/server/loader-registry.d.ts +0 -32
- package/dist/types.backup/server/request-context.d.ts +0 -596
- package/dist/types.backup/server/root-layout.d.ts +0 -3
- package/dist/types.backup/server.d.ts +0 -15
- package/dist/types.backup/ssr/index.d.ts +0 -233
- package/dist/types.backup/ssr/inject-rsc-eager.d.ts +0 -3
- package/dist/types.backup/ssr/preinit-client-references.d.ts +0 -71
- package/dist/types.backup/ssr/ssr-root.d.ts +0 -69
- package/dist/types.backup/static-handler.d.ts +0 -57
- package/dist/types.backup/testing/cache-status.d.ts +0 -63
- package/dist/types.backup/testing/collect-handle.d.ts +0 -20
- package/dist/types.backup/testing/dispatch.d.ts +0 -123
- package/dist/types.backup/testing/dom.entry.d.ts +0 -15
- package/dist/types.backup/testing/e2e/fixture.d.ts +0 -37
- package/dist/types.backup/testing/e2e/index.d.ts +0 -30
- package/dist/types.backup/testing/e2e/matchers.d.ts +0 -17
- package/dist/types.backup/testing/e2e/page-helpers.d.ts +0 -62
- package/dist/types.backup/testing/e2e/parity.d.ts +0 -111
- package/dist/types.backup/testing/e2e/server.d.ts +0 -35
- package/dist/types.backup/testing/flight-matchers.d.ts +0 -55
- package/dist/types.backup/testing/flight-normalize.d.ts +0 -1
- package/dist/types.backup/testing/flight-tree.d.ts +0 -192
- package/dist/types.backup/testing/flight.d.ts +0 -115
- package/dist/types.backup/testing/flight.entry.d.ts +0 -27
- package/dist/types.backup/testing/generated-routes.d.ts +0 -66
- package/dist/types.backup/testing/index.d.ts +0 -52
- package/dist/types.backup/testing/internal/context.d.ts +0 -225
- package/dist/types.backup/testing/internal/flight-client-globals.d.ts +0 -1
- package/dist/types.backup/testing/internal/seed-vars.d.ts +0 -30
- package/dist/types.backup/testing/render-handler.d.ts +0 -160
- package/dist/types.backup/testing/render-route.d.ts +0 -246
- package/dist/types.backup/testing/run-loader.d.ts +0 -186
- package/dist/types.backup/testing/run-middleware.d.ts +0 -132
- package/dist/types.backup/testing/run-transition-when.d.ts +0 -77
- package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +0 -6
- package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +0 -13
- package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +0 -7
- package/dist/types.backup/testing/vitest-stubs/version.d.ts +0 -1
- package/dist/types.backup/testing/vitest.d.ts +0 -205
- package/dist/types.backup/theme/ThemeProvider.d.ts +0 -13
- package/dist/types.backup/theme/ThemeScript.d.ts +0 -45
- package/dist/types.backup/theme/constants.d.ts +0 -39
- package/dist/types.backup/theme/index.d.ts +0 -29
- package/dist/types.backup/theme/theme-context.d.ts +0 -21
- package/dist/types.backup/theme/theme-script.d.ts +0 -26
- package/dist/types.backup/theme/types.d.ts +0 -162
- package/dist/types.backup/theme/use-theme.d.ts +0 -8
- package/dist/types.backup/types/boundaries.d.ts +0 -93
- package/dist/types.backup/types/cache-types.d.ts +0 -191
- package/dist/types.backup/types/error-types.d.ts +0 -114
- package/dist/types.backup/types/global-namespace.d.ts +0 -90
- package/dist/types.backup/types/handler-context.d.ts +0 -658
- package/dist/types.backup/types/index.d.ts +0 -11
- package/dist/types.backup/types/loader-types.d.ts +0 -182
- package/dist/types.backup/types/request-scope.d.ts +0 -93
- package/dist/types.backup/types/route-config.d.ts +0 -105
- package/dist/types.backup/types/route-entry.d.ts +0 -95
- package/dist/types.backup/types/segments.d.ts +0 -234
- package/dist/types.backup/types.d.ts +0 -1
- package/dist/types.backup/urls/include-helper.d.ts +0 -17
- package/dist/types.backup/urls/include-provider.d.ts +0 -27
- package/dist/types.backup/urls/index.d.ts +0 -6
- package/dist/types.backup/urls/path-helper-types.d.ts +0 -197
- package/dist/types.backup/urls/path-helper.d.ts +0 -12
- package/dist/types.backup/urls/pattern-types.d.ts +0 -166
- package/dist/types.backup/urls/response-types.d.ts +0 -67
- package/dist/types.backup/urls/type-extraction.d.ts +0 -157
- package/dist/types.backup/urls/urls-function.d.ts +0 -24
- package/dist/types.backup/urls.d.ts +0 -1
- package/dist/types.backup/use-loader.d.ts +0 -150
- package/dist/types.backup/vercel/index.d.ts +0 -10
- package/dist/types.backup/vercel/tracing.d.ts +0 -70
- package/dist/types.backup/vite/debug.d.ts +0 -80
- package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +0 -12
- package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +0 -65
- package/dist/types.backup/vite/discovery/discover-routers.d.ts +0 -17
- package/dist/types.backup/vite/discovery/discovery-errors.d.ts +0 -113
- package/dist/types.backup/vite/discovery/gate-state.d.ts +0 -79
- package/dist/types.backup/vite/discovery/prerender-collection.d.ts +0 -24
- package/dist/types.backup/vite/discovery/route-types-writer.d.ts +0 -32
- package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +0 -22
- package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +0 -40
- package/dist/types.backup/vite/discovery/state.d.ts +0 -162
- package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +0 -15
- package/dist/types.backup/vite/index.d.ts +0 -11
- package/dist/types.backup/vite/inject-client-debug.d.ts +0 -56
- package/dist/types.backup/vite/plugin-types.d.ts +0 -298
- package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +0 -6
- package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +0 -40
- package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +0 -35
- package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +0 -64
- package/dist/types.backup/vite/plugins/expose-action-id.d.ts +0 -18
- package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +0 -37
- package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +0 -19
- package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +0 -10
- package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +0 -8
- package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +0 -13
- package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +0 -29
- package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +0 -6
- package/dist/types.backup/vite/plugins/performance-tracks.d.ts +0 -25
- package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +0 -20
- package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +0 -20
- package/dist/types.backup/vite/plugins/vercel-output.d.ts +0 -85
- package/dist/types.backup/vite/plugins/version-injector.d.ts +0 -21
- package/dist/types.backup/vite/plugins/version-plugin.d.ts +0 -19
- package/dist/types.backup/vite/plugins/virtual-entries.d.ts +0 -36
- package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +0 -7
- package/dist/types.backup/vite/rango.d.ts +0 -29
- package/dist/types.backup/vite/router-discovery.d.ts +0 -23
- package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +0 -64
- package/dist/types.backup/vite/utils/banner.d.ts +0 -2
- package/dist/types.backup/vite/utils/bundle-analysis.d.ts +0 -28
- package/dist/types.backup/vite/utils/client-chunks.d.ts +0 -55
- package/dist/types.backup/vite/utils/directive-prologue.d.ts +0 -16
- package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +0 -37
- package/dist/types.backup/vite/utils/manifest-utils.d.ts +0 -7
- package/dist/types.backup/vite/utils/package-resolution.d.ts +0 -6
- package/dist/types.backup/vite/utils/prerender-utils.d.ts +0 -32
- package/dist/types.backup/vite/utils/shared-utils.d.ts +0 -55
package/dist/vite/index.js
CHANGED
|
@@ -22,26 +22,26 @@ function createRangoDebugger(namespace) {
|
|
|
22
22
|
if (shadow.enabled) return shadow;
|
|
23
23
|
return void 0;
|
|
24
24
|
}
|
|
25
|
-
async function timed(
|
|
26
|
-
if (!
|
|
25
|
+
async function timed(debug13, label, fn) {
|
|
26
|
+
if (!debug13) return await fn();
|
|
27
27
|
const start = performance.now();
|
|
28
28
|
try {
|
|
29
29
|
return await fn();
|
|
30
30
|
} finally {
|
|
31
|
-
|
|
31
|
+
debug13("%s (%sms)", label, (performance.now() - start).toFixed(1));
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
function timedSync(
|
|
35
|
-
if (!
|
|
34
|
+
function timedSync(debug13, label, fn) {
|
|
35
|
+
if (!debug13) return fn();
|
|
36
36
|
const start = performance.now();
|
|
37
37
|
try {
|
|
38
38
|
return fn();
|
|
39
39
|
} finally {
|
|
40
|
-
|
|
40
|
+
debug13("%s (%sms)", label, (performance.now() - start).toFixed(1));
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
function createCounter(
|
|
44
|
-
if (!
|
|
43
|
+
function createCounter(debug13, label) {
|
|
44
|
+
if (!debug13) return void 0;
|
|
45
45
|
let n = 0;
|
|
46
46
|
let totalMs = 0;
|
|
47
47
|
let slowestMs = 0;
|
|
@@ -75,7 +75,7 @@ function createCounter(debug12, label) {
|
|
|
75
75
|
},
|
|
76
76
|
flush() {
|
|
77
77
|
if (n === 0) return;
|
|
78
|
-
|
|
78
|
+
debug13(
|
|
79
79
|
"%s: %d files, %sms total, slowest %sms %s",
|
|
80
80
|
label,
|
|
81
81
|
n,
|
|
@@ -446,6 +446,11 @@ function findCallParenAfterGenerics(code, afterCalleeIndex) {
|
|
|
446
446
|
return -1;
|
|
447
447
|
}
|
|
448
448
|
|
|
449
|
+
// src/vite/plugins/server-reference-pattern.ts
|
|
450
|
+
function registerServerReferenceRegex() {
|
|
451
|
+
return /registerServerReference\(([^,]+),\s*"([^"]+)",\s*"([^"]+)"\)/g;
|
|
452
|
+
}
|
|
453
|
+
|
|
449
454
|
// src/vite/plugins/expose-action-id.ts
|
|
450
455
|
init_debug();
|
|
451
456
|
var debug = createRangoDebugger(NS.transform);
|
|
@@ -515,7 +520,7 @@ function applyRegisterReferenceWrapping(code, s, hashToFileMap) {
|
|
|
515
520
|
if (!code.includes("registerServerReference(")) {
|
|
516
521
|
return false;
|
|
517
522
|
}
|
|
518
|
-
const pattern =
|
|
523
|
+
const pattern = registerServerReferenceRegex();
|
|
519
524
|
let hasChanges = false;
|
|
520
525
|
let match;
|
|
521
526
|
while ((match = pattern.exec(code)) !== null) {
|
|
@@ -627,6 +632,17 @@ function exposeActionId() {
|
|
|
627
632
|
};
|
|
628
633
|
}
|
|
629
634
|
|
|
635
|
+
// src/vite/encryption-key.ts
|
|
636
|
+
import { randomBytes } from "node:crypto";
|
|
637
|
+
var cachedKey;
|
|
638
|
+
function buildEncryptionKey() {
|
|
639
|
+
cachedKey ??= process.env.RANGO_ENCRYPTION_KEY ?? randomBytes(32).toString("base64");
|
|
640
|
+
return cachedKey;
|
|
641
|
+
}
|
|
642
|
+
function defineEncryptionKeyExpr() {
|
|
643
|
+
return JSON.stringify(buildEncryptionKey());
|
|
644
|
+
}
|
|
645
|
+
|
|
630
646
|
// src/vite/plugins/expose-internal-ids.ts
|
|
631
647
|
import { parseAst as parseAst2 } from "vite";
|
|
632
648
|
import MagicString3 from "magic-string";
|
|
@@ -1527,6 +1543,27 @@ var debug3 = createRangoDebugger(NS.transform);
|
|
|
1527
1543
|
var VIRTUAL_LOADER_MANIFEST = "virtual:rsc-router/loader-manifest";
|
|
1528
1544
|
var RESOLVED_VIRTUAL_LOADER_MANIFEST = "\0" + VIRTUAL_LOADER_MANIFEST;
|
|
1529
1545
|
var VIRTUAL_HANDLER_PREFIX = "virtual:handler-extract:";
|
|
1546
|
+
function createLoaderScanStubPlugin() {
|
|
1547
|
+
let projectRoot = "";
|
|
1548
|
+
let rscApi;
|
|
1549
|
+
return {
|
|
1550
|
+
name: "@rangojs/router:loader-scan-stubs",
|
|
1551
|
+
apply: "build",
|
|
1552
|
+
configResolved(config) {
|
|
1553
|
+
projectRoot = config.root;
|
|
1554
|
+
rscApi = config.plugins.find((plugin) => plugin.name === "rsc:minimal")?.api;
|
|
1555
|
+
},
|
|
1556
|
+
transform(code, id) {
|
|
1557
|
+
if (!rscApi?.manager?.isScanBuild || this.environment?.name === "rsc" || id.includes("/node_modules/") || !code.includes("createLoader") || !hasCreateLoaderImport(code)) {
|
|
1558
|
+
return;
|
|
1559
|
+
}
|
|
1560
|
+
const fnNames = getImportedFnNames(code, "createLoader");
|
|
1561
|
+
const bindings = collectCreateExportBindings(code, fnNames);
|
|
1562
|
+
const filePath = normalizePath(path4.relative(projectRoot, id));
|
|
1563
|
+
return generateClientLoaderStubs(bindings, code, filePath, true) ?? void 0;
|
|
1564
|
+
}
|
|
1565
|
+
};
|
|
1566
|
+
}
|
|
1530
1567
|
function exposeInternalIds(options) {
|
|
1531
1568
|
let config;
|
|
1532
1569
|
let isBuild = false;
|
|
@@ -2530,7 +2567,7 @@ import { resolve } from "node:path";
|
|
|
2530
2567
|
// package.json
|
|
2531
2568
|
var package_default = {
|
|
2532
2569
|
name: "@rangojs/router",
|
|
2533
|
-
version: "0.5.
|
|
2570
|
+
version: "0.5.2",
|
|
2534
2571
|
description: "Django-inspired RSC router with composable URL patterns",
|
|
2535
2572
|
keywords: [
|
|
2536
2573
|
"react",
|
|
@@ -2721,7 +2758,7 @@ var package_default = {
|
|
|
2721
2758
|
},
|
|
2722
2759
|
dependencies: {
|
|
2723
2760
|
"@types/debug": "^4.1.12",
|
|
2724
|
-
"@vitejs/plugin-rsc": "^0.5.
|
|
2761
|
+
"@vitejs/plugin-rsc": "^0.5.30",
|
|
2725
2762
|
debug: "^4.4.1",
|
|
2726
2763
|
"magic-string": "^0.30.17",
|
|
2727
2764
|
picomatch: "^4.0.4",
|
|
@@ -2754,7 +2791,7 @@ var package_default = {
|
|
|
2754
2791
|
"@playwright/test": "^1.49.1",
|
|
2755
2792
|
"@testing-library/react": ">=16",
|
|
2756
2793
|
"@vercel/functions": "^3.0.0",
|
|
2757
|
-
"@vitejs/plugin-rsc": "^0.5.
|
|
2794
|
+
"@vitejs/plugin-rsc": "^0.5.30",
|
|
2758
2795
|
react: ">=19.2.6 <20",
|
|
2759
2796
|
"react-dom": ">=19.2.6 <20",
|
|
2760
2797
|
vite: "^8.0.16",
|
|
@@ -4251,11 +4288,6 @@ function onwarn(warning, defaultHandler) {
|
|
|
4251
4288
|
}
|
|
4252
4289
|
function getManualChunks(id) {
|
|
4253
4290
|
const normalized = Vite.normalizePath(id);
|
|
4254
|
-
if (/\/browser\/prefetch\/(?:runtime|fetch|queue|observer|policy|resource-ready)\.[cm]?[jt]sx?(?:[?#].*)?$/.test(
|
|
4255
|
-
normalized
|
|
4256
|
-
)) {
|
|
4257
|
-
return void 0;
|
|
4258
|
-
}
|
|
4259
4291
|
if (normalized.includes("node_modules/react/") || normalized.includes("node_modules/react-dom/") || normalized.includes("node_modules/react-server-dom-webpack/") || normalized.includes("node_modules/@vitejs/plugin-rsc/")) {
|
|
4260
4292
|
return "react";
|
|
4261
4293
|
}
|
|
@@ -4887,6 +4919,49 @@ function walk(node, visit) {
|
|
|
4887
4919
|
// src/vite/router-discovery.ts
|
|
4888
4920
|
init_client_ref_hashing();
|
|
4889
4921
|
|
|
4922
|
+
// src/vite/plugins/server-ref-hashing.ts
|
|
4923
|
+
init_debug();
|
|
4924
|
+
init_client_ref_hashing();
|
|
4925
|
+
var debug9 = createRangoDebugger(NS.transform);
|
|
4926
|
+
function transformServerRefs(code, projectRoot) {
|
|
4927
|
+
if (!code.includes("registerServerReference")) return null;
|
|
4928
|
+
let hasReplacement = false;
|
|
4929
|
+
const result = code.replace(
|
|
4930
|
+
registerServerReferenceRegex(),
|
|
4931
|
+
(match, _value, refKey) => {
|
|
4932
|
+
const cleanKey = refKey.split("?")[0];
|
|
4933
|
+
const hash = computeProductionHash(projectRoot, cleanKey);
|
|
4934
|
+
if (hash === cleanKey) return match;
|
|
4935
|
+
hasReplacement = true;
|
|
4936
|
+
return match.replace(`"${refKey}"`, `"${hash}"`);
|
|
4937
|
+
}
|
|
4938
|
+
);
|
|
4939
|
+
return hasReplacement ? result : null;
|
|
4940
|
+
}
|
|
4941
|
+
function hashServerRefs(projectRoot) {
|
|
4942
|
+
const counter = createCounter(debug9, "hash-server-refs");
|
|
4943
|
+
return {
|
|
4944
|
+
name: "@rangojs/router:hash-server-refs",
|
|
4945
|
+
enforce: "post",
|
|
4946
|
+
applyToEnvironment(env) {
|
|
4947
|
+
return env.name === "rsc";
|
|
4948
|
+
},
|
|
4949
|
+
buildEnd() {
|
|
4950
|
+
counter?.flush();
|
|
4951
|
+
},
|
|
4952
|
+
transform(code, id) {
|
|
4953
|
+
const start = counter ? performance.now() : 0;
|
|
4954
|
+
try {
|
|
4955
|
+
const result = transformServerRefs(code, projectRoot);
|
|
4956
|
+
if (result === null) return;
|
|
4957
|
+
return { code: result, map: null };
|
|
4958
|
+
} finally {
|
|
4959
|
+
counter?.record(id, performance.now() - start);
|
|
4960
|
+
}
|
|
4961
|
+
}
|
|
4962
|
+
};
|
|
4963
|
+
}
|
|
4964
|
+
|
|
4890
4965
|
// src/vite/utils/bundle-analysis.ts
|
|
4891
4966
|
function findMatchingParenInBundle(code, openParenPos) {
|
|
4892
4967
|
let depth = 1;
|
|
@@ -5605,11 +5680,11 @@ function copyStagedBuildAssets(projectRoot, fileNames) {
|
|
|
5605
5680
|
|
|
5606
5681
|
// src/vite/discovery/prerender-collection.ts
|
|
5607
5682
|
init_debug();
|
|
5608
|
-
var
|
|
5683
|
+
var debug10 = createRangoDebugger(NS.prerender);
|
|
5609
5684
|
async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
|
|
5610
5685
|
if (!state.opts?.enableBuildPrerender || !state.isBuildMode) return;
|
|
5611
|
-
const overallStart =
|
|
5612
|
-
|
|
5686
|
+
const overallStart = debug10 ? performance.now() : 0;
|
|
5687
|
+
debug10?.(
|
|
5613
5688
|
"expandPrerenderRoutes: start (%d router manifest(s))",
|
|
5614
5689
|
allManifests.length
|
|
5615
5690
|
);
|
|
@@ -5662,7 +5737,7 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
|
|
|
5662
5737
|
});
|
|
5663
5738
|
} else {
|
|
5664
5739
|
if (def?.getParams) {
|
|
5665
|
-
const getParamsStart =
|
|
5740
|
+
const getParamsStart = debug10 ? performance.now() : 0;
|
|
5666
5741
|
try {
|
|
5667
5742
|
const buildVars = {};
|
|
5668
5743
|
const buildEnv = state.resolvedBuildEnv;
|
|
@@ -5681,7 +5756,7 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
|
|
|
5681
5756
|
}
|
|
5682
5757
|
};
|
|
5683
5758
|
const paramsList = await def.getParams(getParamsCtx);
|
|
5684
|
-
|
|
5759
|
+
debug10?.(
|
|
5685
5760
|
"getParams %s -> %d params (%sms)",
|
|
5686
5761
|
routeName,
|
|
5687
5762
|
paramsList.length,
|
|
@@ -5753,7 +5828,7 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
|
|
|
5753
5828
|
}
|
|
5754
5829
|
}
|
|
5755
5830
|
if (entries.length === 0) {
|
|
5756
|
-
|
|
5831
|
+
debug10?.(
|
|
5757
5832
|
"no prerender entries (done in %sms)",
|
|
5758
5833
|
(performance.now() - overallStart).toFixed(1)
|
|
5759
5834
|
);
|
|
@@ -5764,7 +5839,7 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
|
|
|
5764
5839
|
console.log(
|
|
5765
5840
|
`[rango] Pre-rendering ${entries.length} URL(s)${concurrencyNote}...`
|
|
5766
5841
|
);
|
|
5767
|
-
|
|
5842
|
+
debug10?.(
|
|
5768
5843
|
"prerender loop: %d entries, max concurrency %d",
|
|
5769
5844
|
entries.length,
|
|
5770
5845
|
maxConcurrency
|
|
@@ -5872,7 +5947,7 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
|
|
|
5872
5947
|
console.log(
|
|
5873
5948
|
`[rango] Pre-render complete: ${parts.join(", ")} (${totalElapsed}ms total)`
|
|
5874
5949
|
);
|
|
5875
|
-
|
|
5950
|
+
debug10?.(
|
|
5876
5951
|
"expandPrerenderRoutes done: %d done, %d skipped, %sms (overall %sms)",
|
|
5877
5952
|
doneCount,
|
|
5878
5953
|
skipCount,
|
|
@@ -5883,8 +5958,8 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
|
|
|
5883
5958
|
async function renderStaticHandlers(state, rscEnv, registry) {
|
|
5884
5959
|
if (!state.opts?.enableBuildPrerender || !state.isBuildMode || !state.resolvedStaticModules?.size)
|
|
5885
5960
|
return;
|
|
5886
|
-
const overallStart =
|
|
5887
|
-
|
|
5961
|
+
const overallStart = debug10 ? performance.now() : 0;
|
|
5962
|
+
debug10?.(
|
|
5888
5963
|
"renderStaticHandlers: start (%d static module(s))",
|
|
5889
5964
|
state.resolvedStaticModules.size
|
|
5890
5965
|
);
|
|
@@ -5974,7 +6049,7 @@ async function renderStaticHandlers(state, rscEnv, registry) {
|
|
|
5974
6049
|
console.log(
|
|
5975
6050
|
`[rango] Static render complete: ${staticParts.join(", ")} (${totalStaticElapsed}ms total)`
|
|
5976
6051
|
);
|
|
5977
|
-
|
|
6052
|
+
debug10?.(
|
|
5978
6053
|
"renderStaticHandlers done: %d done, %d skipped, %sms (overall %sms)",
|
|
5979
6054
|
staticDone,
|
|
5980
6055
|
staticSkip,
|
|
@@ -6082,16 +6157,16 @@ function describeDiscoveryFailure(err, opts = {}) {
|
|
|
6082
6157
|
// src/vite/discovery/discover-routers.ts
|
|
6083
6158
|
init_debug();
|
|
6084
6159
|
init_client_ref_hashing();
|
|
6085
|
-
var
|
|
6160
|
+
var debug11 = createRangoDebugger(NS.discovery);
|
|
6086
6161
|
async function discoverRouters(state, rscEnv) {
|
|
6087
6162
|
if (!state.resolvedEntryPath) return;
|
|
6088
6163
|
await timed(
|
|
6089
|
-
|
|
6164
|
+
debug11,
|
|
6090
6165
|
"inner: import entry",
|
|
6091
6166
|
() => rscEnv.runner.import(state.resolvedEntryPath)
|
|
6092
6167
|
);
|
|
6093
6168
|
const serverMod = await timed(
|
|
6094
|
-
|
|
6169
|
+
debug11,
|
|
6095
6170
|
"inner: import @rangojs/router/server",
|
|
6096
6171
|
() => rscEnv.runner.import("@rangojs/router/server")
|
|
6097
6172
|
);
|
|
@@ -6107,7 +6182,7 @@ async function discoverRouters(state, rscEnv) {
|
|
|
6107
6182
|
const handlerErrors = await resolveHostRouterHandlers(hostRegistry);
|
|
6108
6183
|
discoveryErrors.push(...handlerErrors);
|
|
6109
6184
|
for (const { context, error } of handlerErrors) {
|
|
6110
|
-
|
|
6185
|
+
debug11?.("caught error while resolving %s: %O", context, error);
|
|
6111
6186
|
}
|
|
6112
6187
|
const freshServerMod = await rscEnv.runner.import(
|
|
6113
6188
|
"@rangojs/router/server"
|
|
@@ -6126,12 +6201,12 @@ async function discoverRouters(state, rscEnv) {
|
|
|
6126
6201
|
}
|
|
6127
6202
|
}
|
|
6128
6203
|
const buildMod = await timed(
|
|
6129
|
-
|
|
6204
|
+
debug11,
|
|
6130
6205
|
"inner: import @rangojs/router/build",
|
|
6131
6206
|
() => rscEnv.runner.import("@rangojs/router/build")
|
|
6132
6207
|
);
|
|
6133
6208
|
const generateManifestFull = buildMod.generateManifestFull;
|
|
6134
|
-
|
|
6209
|
+
debug11?.("inner: found %d router(s) in registry", registry.size);
|
|
6135
6210
|
const nestedRouterConflict = findNestedRouterConflict(
|
|
6136
6211
|
[...registry.values()].map((router) => router.__sourceFile).filter(
|
|
6137
6212
|
(sourceFile) => typeof sourceFile === "string"
|
|
@@ -6156,7 +6231,7 @@ async function discoverRouters(state, rscEnv) {
|
|
|
6156
6231
|
collectFallbackClientRefs(node, collectClientFallbackRef);
|
|
6157
6232
|
}
|
|
6158
6233
|
};
|
|
6159
|
-
const manifestGenStart =
|
|
6234
|
+
const manifestGenStart = debug11 ? performance.now() : 0;
|
|
6160
6235
|
for (const [id, router] of registry) {
|
|
6161
6236
|
if (!router.urlpatterns || !generateManifestFull) {
|
|
6162
6237
|
continue;
|
|
@@ -6230,12 +6305,12 @@ async function discoverRouters(state, rscEnv) {
|
|
|
6230
6305
|
);
|
|
6231
6306
|
}
|
|
6232
6307
|
}
|
|
6233
|
-
|
|
6308
|
+
debug11?.(
|
|
6234
6309
|
"inner: generated manifests for %d router(s) (%sms)",
|
|
6235
6310
|
allManifests.length,
|
|
6236
6311
|
(performance.now() - manifestGenStart).toFixed(1)
|
|
6237
6312
|
);
|
|
6238
|
-
const trieStart =
|
|
6313
|
+
const trieStart = debug11 ? performance.now() : 0;
|
|
6239
6314
|
if (Object.keys(newMergedRouteManifest).length > 0) {
|
|
6240
6315
|
for (const { id, manifest } of allManifests) {
|
|
6241
6316
|
const perRouterTrie = buildPerRouterTrie(manifest);
|
|
@@ -6244,7 +6319,7 @@ async function discoverRouters(state, rscEnv) {
|
|
|
6244
6319
|
}
|
|
6245
6320
|
}
|
|
6246
6321
|
}
|
|
6247
|
-
|
|
6322
|
+
debug11?.(
|
|
6248
6323
|
"inner: trie build done (%sms)",
|
|
6249
6324
|
(performance.now() - trieStart).toFixed(1)
|
|
6250
6325
|
);
|
|
@@ -6279,7 +6354,7 @@ function buildShellManifestKey(pathname) {
|
|
|
6279
6354
|
|
|
6280
6355
|
// src/vite/discovery/shell-prerender-phase.ts
|
|
6281
6356
|
init_debug();
|
|
6282
|
-
var
|
|
6357
|
+
var debug12 = createRangoDebugger(NS.prerender);
|
|
6283
6358
|
async function runShellPrerenderPhase(s, builder) {
|
|
6284
6359
|
const tempServer = s.shellPhaseTempServer;
|
|
6285
6360
|
if (!s.isBuildMode || !s.shellCandidates?.length || !tempServer) return;
|
|
@@ -6335,7 +6410,7 @@ async function runShellPrerenderPhase(s, builder) {
|
|
|
6335
6410
|
const base = builder?.config?.base ?? "/";
|
|
6336
6411
|
const normalizedBase = base.endsWith("/") ? base : `${base}/`;
|
|
6337
6412
|
const bootstrapContent = `import("${normalizedBase}assets/${entryFile}")`;
|
|
6338
|
-
|
|
6413
|
+
debug12?.("shell prerender bootstrap: %s", bootstrapContent);
|
|
6339
6414
|
const minimalPlugin = (tempServer.config?.plugins ?? []).find(
|
|
6340
6415
|
(p) => p?.name === "rsc:minimal"
|
|
6341
6416
|
);
|
|
@@ -6417,7 +6492,7 @@ async function runShellPrerenderPhase(s, builder) {
|
|
|
6417
6492
|
buildEnv: s.resolvedBuildEnv,
|
|
6418
6493
|
buildVersion,
|
|
6419
6494
|
captureShellHTML,
|
|
6420
|
-
debug: !!
|
|
6495
|
+
debug: !!debug12
|
|
6421
6496
|
});
|
|
6422
6497
|
if (res.outcome === "route-mismatch") {
|
|
6423
6498
|
mismatches.push(res.matchedRouteName ?? "(no match)");
|
|
@@ -6983,7 +7058,7 @@ function postprocessBundle(state) {
|
|
|
6983
7058
|
}
|
|
6984
7059
|
|
|
6985
7060
|
// src/vite/discovery/gate-state.ts
|
|
6986
|
-
function createDiscoveryGate(s,
|
|
7061
|
+
function createDiscoveryGate(s, debug13) {
|
|
6987
7062
|
let gatePending = false;
|
|
6988
7063
|
let gateResolver = () => {
|
|
6989
7064
|
};
|
|
@@ -7000,7 +7075,7 @@ function createDiscoveryGate(s, debug12) {
|
|
|
7000
7075
|
const resolveGate = () => {
|
|
7001
7076
|
if (!gatePending) return;
|
|
7002
7077
|
if (inProgress || queued || pendingEvents) {
|
|
7003
|
-
|
|
7078
|
+
debug13?.(
|
|
7004
7079
|
"hmr: resolveGate deferred \u2014 work in flight (inProgress=%s queued=%s pendingEvents=%s)",
|
|
7005
7080
|
inProgress,
|
|
7006
7081
|
queued,
|
|
@@ -7009,7 +7084,7 @@ function createDiscoveryGate(s, debug12) {
|
|
|
7009
7084
|
return;
|
|
7010
7085
|
}
|
|
7011
7086
|
gatePending = false;
|
|
7012
|
-
|
|
7087
|
+
debug13?.("hmr: discoveryDone resolved");
|
|
7013
7088
|
gateResolver();
|
|
7014
7089
|
};
|
|
7015
7090
|
const noteRouteEvent = () => {
|
|
@@ -7019,7 +7094,7 @@ function createDiscoveryGate(s, debug12) {
|
|
|
7019
7094
|
const runRefreshCycle = async (work) => {
|
|
7020
7095
|
if (inProgress) {
|
|
7021
7096
|
queued = true;
|
|
7022
|
-
|
|
7097
|
+
debug13?.("hmr: rediscovery in flight \u2014 queued for a follow-up cycle");
|
|
7023
7098
|
return;
|
|
7024
7099
|
}
|
|
7025
7100
|
pendingEvents = false;
|
|
@@ -7030,16 +7105,16 @@ function createDiscoveryGate(s, debug12) {
|
|
|
7030
7105
|
inProgress = false;
|
|
7031
7106
|
if (queued) {
|
|
7032
7107
|
queued = false;
|
|
7033
|
-
|
|
7108
|
+
debug13?.("hmr: consuming queued rediscovery");
|
|
7034
7109
|
runRefreshCycle(work).catch((err) => {
|
|
7035
|
-
|
|
7110
|
+
debug13?.(
|
|
7036
7111
|
"hmr: queued cycle rejected \u2014 releasing gate (%s)",
|
|
7037
7112
|
err instanceof Error ? err.message : String(err)
|
|
7038
7113
|
);
|
|
7039
7114
|
resolveGate();
|
|
7040
7115
|
});
|
|
7041
7116
|
} else if (pendingEvents) {
|
|
7042
|
-
|
|
7117
|
+
debug13?.(
|
|
7043
7118
|
"hmr: holding gate for pending events (debounce not yet fired)"
|
|
7044
7119
|
);
|
|
7045
7120
|
} else {
|
|
@@ -7154,10 +7229,25 @@ async function createTempRscServer(state, options = {}) {
|
|
|
7154
7229
|
client: "virtual:entry-client",
|
|
7155
7230
|
ssr: "virtual:entry-ssr",
|
|
7156
7231
|
rsc: state.resolvedEntryPath
|
|
7157
|
-
}
|
|
7232
|
+
},
|
|
7233
|
+
// The temp server renders Static/Prerender output and encrypts inline-
|
|
7234
|
+
// action bound args. Give it the SAME key as the main build/dev runtime
|
|
7235
|
+
// (defineEncryptionKeyExpr is process-cached) so those args decrypt at
|
|
7236
|
+
// invocation. Unconditional, NOT build-only: under Cloudflare/workerd dev
|
|
7237
|
+
// the RSC env has no module runner, so prerender is rendered by THIS temp
|
|
7238
|
+
// server (via /__rsc_prerender), and the action decrypts in the main
|
|
7239
|
+
// runtime with the rango.ts key -- gating on forceBuild left dev encrypting
|
|
7240
|
+
// with the temp server's own random key, failing decryptActionBoundArgs.
|
|
7241
|
+
// (hashServerRefs stays build-only: dev keeps dev-style ids the dev runtime
|
|
7242
|
+
// resolves directly.)
|
|
7243
|
+
defineEncryptionKey: defineEncryptionKeyExpr()
|
|
7158
7244
|
}),
|
|
7159
|
-
// hashClientRefs only in build mode — production bundles
|
|
7160
|
-
|
|
7245
|
+
// hashClientRefs/hashServerRefs only in build mode — production bundles
|
|
7246
|
+
// need hashed refs. hashServerRefs is the server-side analog: it rewrites
|
|
7247
|
+
// registerServerReference dev-style ids to production hashes so a
|
|
7248
|
+
// server-created action embedded in prerendered/static Flight resolves
|
|
7249
|
+
// against the production manifest on a build-time-cache hit.
|
|
7250
|
+
...options.forceBuild ? [hashClientRefs(state.projectRoot), hashServerRefs(state.projectRoot)] : [],
|
|
7161
7251
|
createVersionPlugin(),
|
|
7162
7252
|
// Before the stub plugin, so "virtual:entry-ssr" resolves to the real
|
|
7163
7253
|
// SSR entry when the shell endpoint needs it (see the option doc).
|
|
@@ -8668,7 +8758,10 @@ async function rango(options) {
|
|
|
8668
8758
|
rsc({
|
|
8669
8759
|
entries: finalEntries,
|
|
8670
8760
|
serverHandler: false,
|
|
8671
|
-
clientChunks
|
|
8761
|
+
clientChunks,
|
|
8762
|
+
// Share one encryption key with the build-discovery temp server so
|
|
8763
|
+
// build-time prerender/static inline-action bound args decrypt at runtime.
|
|
8764
|
+
defineEncryptionKey: defineEncryptionKeyExpr()
|
|
8672
8765
|
})
|
|
8673
8766
|
);
|
|
8674
8767
|
plugins.push(clientRefDedup());
|
|
@@ -8857,7 +8950,10 @@ If this is a multi-app host router, export a createHostRouter() instance and set
|
|
|
8857
8950
|
plugins.push(
|
|
8858
8951
|
rsc({
|
|
8859
8952
|
entries: finalEntries,
|
|
8860
|
-
clientChunks
|
|
8953
|
+
clientChunks,
|
|
8954
|
+
// Share one encryption key with the build-discovery temp server so
|
|
8955
|
+
// build-time prerender/static inline-action bound args decrypt at runtime.
|
|
8956
|
+
defineEncryptionKey: defineEncryptionKeyExpr()
|
|
8861
8957
|
})
|
|
8862
8958
|
);
|
|
8863
8959
|
plugins.push(clientRefDedup());
|
|
@@ -8879,6 +8975,7 @@ If this is a multi-app host router, export a createHostRouter() instance and set
|
|
|
8879
8975
|
}
|
|
8880
8976
|
}
|
|
8881
8977
|
});
|
|
8978
|
+
plugins.push(createLoaderScanStubPlugin());
|
|
8882
8979
|
plugins.push(exposeActionId());
|
|
8883
8980
|
plugins.push(useCacheTransform());
|
|
8884
8981
|
plugins.push(exposeInternalIds());
|
|
@@ -8923,7 +9020,7 @@ function poke() {
|
|
|
8923
9020
|
apply: "serve",
|
|
8924
9021
|
configureServer(server) {
|
|
8925
9022
|
const stdin = process.stdin;
|
|
8926
|
-
const
|
|
9023
|
+
const debug13 = process.env.RANGO_POKE_DEBUG === "1";
|
|
8927
9024
|
const triggerReload = (source) => {
|
|
8928
9025
|
server.hot.send({ type: "full-reload", path: "*" });
|
|
8929
9026
|
server.config.logger.info(` browser reload (${source})`, {
|
|
@@ -8956,7 +9053,7 @@ function poke() {
|
|
|
8956
9053
|
lines.pop();
|
|
8957
9054
|
return lines;
|
|
8958
9055
|
};
|
|
8959
|
-
if (
|
|
9056
|
+
if (debug13) {
|
|
8960
9057
|
server.config.logger.info(
|
|
8961
9058
|
` poke debug enabled (isTTY=${stdin.isTTY ? "yes" : "no"}, isRaw=${stdin.isTTY ? stdin.isRaw ? "yes" : "no" : "n/a"})`,
|
|
8962
9059
|
{ timestamp: true }
|
|
@@ -8969,7 +9066,7 @@ function poke() {
|
|
|
8969
9066
|
);
|
|
8970
9067
|
}
|
|
8971
9068
|
const onData = (data) => {
|
|
8972
|
-
if (
|
|
9069
|
+
if (debug13) {
|
|
8973
9070
|
server.config.logger.info(` poke stdin ${formatChunk(data)}`, {
|
|
8974
9071
|
timestamp: true
|
|
8975
9072
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rangojs/router",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Django-inspired RSC router with composable URL patterns",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -191,7 +191,7 @@
|
|
|
191
191
|
},
|
|
192
192
|
"dependencies": {
|
|
193
193
|
"@types/debug": "^4.1.12",
|
|
194
|
-
"@vitejs/plugin-rsc": "^0.5.
|
|
194
|
+
"@vitejs/plugin-rsc": "^0.5.30",
|
|
195
195
|
"debug": "^4.4.1",
|
|
196
196
|
"magic-string": "^0.30.17",
|
|
197
197
|
"picomatch": "^4.0.4",
|
|
@@ -224,7 +224,7 @@
|
|
|
224
224
|
"@playwright/test": "^1.49.1",
|
|
225
225
|
"@testing-library/react": ">=16",
|
|
226
226
|
"@vercel/functions": "^3.0.0",
|
|
227
|
-
"@vitejs/plugin-rsc": "^0.5.
|
|
227
|
+
"@vitejs/plugin-rsc": "^0.5.30",
|
|
228
228
|
"react": ">=19.2.6 <20",
|
|
229
229
|
"react-dom": ">=19.2.6 <20",
|
|
230
230
|
"vite": "^8.0.16",
|
package/skills/caching/SKILL.md
CHANGED
|
@@ -388,7 +388,7 @@ a request behind it:
|
|
|
388
388
|
|
|
389
389
|
| Option | Default | Bounds |
|
|
390
390
|
| --------------------- | ------- | ----------------------------------- |
|
|
391
|
-
| `edgeLookupTimeoutMs` | `
|
|
391
|
+
| `edgeLookupTimeoutMs` | `25` | L1 `cache.match` (the lookup) |
|
|
392
392
|
| `edgeReadTimeoutMs` | `20` | L1 body read (CF streams it lazily) |
|
|
393
393
|
| `kvReadTimeoutMs` | `170` | L2 / KV read |
|
|
394
394
|
|
|
@@ -132,9 +132,11 @@ response payload types, use one of these surfaces:
|
|
|
132
132
|
// router.tsx
|
|
133
133
|
export const router = createRouter({ document: Document }).routes(urlpatterns);
|
|
134
134
|
|
|
135
|
+
type AppRoutes = typeof router.routeMap;
|
|
136
|
+
|
|
135
137
|
declare global {
|
|
136
138
|
namespace Rango {
|
|
137
|
-
interface RegisteredRoutes extends
|
|
139
|
+
interface RegisteredRoutes extends AppRoutes {}
|
|
138
140
|
}
|
|
139
141
|
}
|
|
140
142
|
```
|
|
@@ -289,9 +289,11 @@ has no response payload metadata, so response routes resolve to `never`:
|
|
|
289
289
|
// router.tsx
|
|
290
290
|
export const router = createRouter({ document: Document }).routes(urlpatterns);
|
|
291
291
|
|
|
292
|
+
type AppRoutes = typeof router.routeMap;
|
|
293
|
+
|
|
292
294
|
declare global {
|
|
293
295
|
namespace Rango {
|
|
294
|
-
interface RegisteredRoutes extends
|
|
296
|
+
interface RegisteredRoutes extends AppRoutes {}
|
|
295
297
|
}
|
|
296
298
|
}
|
|
297
299
|
```
|
|
@@ -480,7 +482,7 @@ type Stats = RouteResponse<typeof blogApiPatterns, "stats">;
|
|
|
480
482
|
// = { views: number; visitors: number }
|
|
481
483
|
|
|
482
484
|
// After mounting -- names get prefixed.
|
|
483
|
-
// Rango.PathResponse needs
|
|
485
|
+
// Rango.PathResponse needs the RegisteredRoutes augmentation (see above),
|
|
484
486
|
// otherwise it resolves to never.
|
|
485
487
|
type BlogStats = Rango.PathResponse<"/blog/api/stats">;
|
|
486
488
|
// = { views: number; visitors: number }
|
|
@@ -38,11 +38,11 @@ available globally.
|
|
|
38
38
|
There are three distinct typing surfaces. They are **not** interchangeable —
|
|
39
39
|
pick the one that matches what you need to type:
|
|
40
40
|
|
|
41
|
-
| Surface | Source
|
|
42
|
-
| ------------------- |
|
|
43
|
-
| `GeneratedRouteMap` | `router.named-routes.gen.ts` (auto)
|
|
44
|
-
| `routes` | per-module `*.gen.ts` (`rango generate`)
|
|
45
|
-
| `RegisteredRoutes` | manual `extends typeof router.routeMap`
|
|
41
|
+
| Surface | Source | Scope | Gives | Does not give |
|
|
42
|
+
| ------------------- | ---------------------------------------------------- | ------ | ---------------------------------------- | ------------------------------------------------------------------------------------------------ |
|
|
43
|
+
| `GeneratedRouteMap` | `router.named-routes.gen.ts` (auto) | global | route names, path params, search schemas | response/MIME payloads |
|
|
44
|
+
| `routes` | per-module `*.gen.ts` (`rango generate`) | local | local names, params, search | the global app map |
|
|
45
|
+
| `RegisteredRoutes` | manual `extends` of a `typeof router.routeMap` alias | global | paths, params, **response payloads** | the `Handler`/`Prerender` default (those read `GeneratedRouteMap` to avoid a `router.tsx` cycle) |
|
|
46
46
|
|
|
47
47
|
Key consequence: `href()` and the ambient `Rango.Path` type are typed from
|
|
48
48
|
whichever map is present — they prefer `RegisteredRoutes` when you wire it, otherwise fall back to
|
|
@@ -63,11 +63,15 @@ import type { AppBindings, AppVars } from "./env";
|
|
|
63
63
|
|
|
64
64
|
export const router = createRouter<AppBindings>({}).routes(urlpatterns);
|
|
65
65
|
|
|
66
|
+
// The alias is required: an interface heritage clause cannot take a `typeof`
|
|
67
|
+
// type query directly (TS1109).
|
|
68
|
+
type AppRoutes = typeof router.routeMap;
|
|
69
|
+
|
|
66
70
|
declare global {
|
|
67
71
|
namespace Rango {
|
|
68
72
|
interface Env extends AppBindings {}
|
|
69
73
|
interface Vars extends AppVars {}
|
|
70
|
-
interface RegisteredRoutes extends
|
|
74
|
+
interface RegisteredRoutes extends AppRoutes {}
|
|
71
75
|
}
|
|
72
76
|
}
|
|
73
77
|
```
|
|
@@ -257,10 +261,12 @@ export const router = createRouter<ShopEnv>({ document: Document }).routes(
|
|
|
257
261
|
urlpatterns,
|
|
258
262
|
);
|
|
259
263
|
|
|
264
|
+
type ShopRoutes = typeof router.routeMap;
|
|
265
|
+
|
|
260
266
|
declare global {
|
|
261
267
|
namespace Rango {
|
|
262
268
|
interface Env extends ShopEnv {}
|
|
263
|
-
interface RegisteredRoutes extends
|
|
269
|
+
interface RegisteredRoutes extends ShopRoutes {}
|
|
264
270
|
}
|
|
265
271
|
}
|
|
266
272
|
```
|
|
@@ -312,8 +318,9 @@ export default router;
|
|
|
312
318
|
// router.named-routes.gen.ts (auto-registers GeneratedRouteMap globally).
|
|
313
319
|
// No manual RegisteredRoutes declaration is needed for named-route handlers,
|
|
314
320
|
// ctx.reverse, prerender, href(), or Rango.Path. Add `RegisteredRoutes
|
|
315
|
-
// extends typeof router.routeMap
|
|
316
|
-
// as Rango.PathResponse need the richer
|
|
321
|
+
// extends AppRoutes` (an alias of typeof router.routeMap) when global
|
|
322
|
+
// response payload helpers such as Rango.PathResponse need the richer
|
|
323
|
+
// router.routeMap metadata.
|
|
317
324
|
|
|
318
325
|
// 5. loaders/*.ts - Type-safe loaders
|
|
319
326
|
export const ProductLoader = createLoader(async (ctx) => {
|
|
@@ -76,9 +76,13 @@ below is only needed for **`Rango.PathResponse`** (response-payload inference),
|
|
|
76
76
|
`GeneratedRouteMap` cannot provide:
|
|
77
77
|
|
|
78
78
|
```typescript
|
|
79
|
+
// The alias is required: an interface heritage clause cannot take a `typeof`
|
|
80
|
+
// type query directly (TS1109).
|
|
81
|
+
type AppRoutes = typeof router.routeMap;
|
|
82
|
+
|
|
79
83
|
declare global {
|
|
80
84
|
namespace Rango {
|
|
81
|
-
interface RegisteredRoutes extends
|
|
85
|
+
interface RegisteredRoutes extends AppRoutes {}
|
|
82
86
|
}
|
|
83
87
|
}
|
|
84
88
|
```
|