@rangojs/router 0.0.0-experimental.9 → 0.0.0-experimental.a5f27bd5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +5 -0
- package/README.md +884 -4
- package/dist/bin/rango.js +1531 -155
- package/dist/vite/index.js +4440 -2170
- package/package.json +60 -54
- package/skills/breadcrumbs/SKILL.md +250 -0
- package/skills/cache-guide/SKILL.md +262 -0
- package/skills/caching/SKILL.md +50 -21
- package/skills/composability/SKILL.md +172 -0
- package/skills/debug-manifest/SKILL.md +12 -8
- package/skills/document-cache/SKILL.md +18 -16
- package/skills/fonts/SKILL.md +6 -4
- package/skills/hooks/SKILL.md +333 -71
- package/skills/host-router/SKILL.md +218 -0
- package/skills/intercept/SKILL.md +131 -8
- package/skills/layout/SKILL.md +100 -3
- package/skills/links/SKILL.md +74 -15
- package/skills/loader/SKILL.md +388 -38
- package/skills/middleware/SKILL.md +171 -34
- package/skills/mime-routes/SKILL.md +15 -11
- package/skills/parallel/SKILL.md +78 -1
- package/skills/prerender/SKILL.md +405 -45
- package/skills/rango/SKILL.md +85 -21
- package/skills/response-routes/SKILL.md +144 -91
- package/skills/route/SKILL.md +226 -14
- package/skills/router-setup/SKILL.md +123 -30
- package/skills/theme/SKILL.md +9 -8
- package/skills/typesafety/SKILL.md +316 -87
- package/skills/use-cache/SKILL.md +324 -0
- package/src/__internal.ts +102 -4
- package/src/bin/rango.ts +312 -15
- package/src/browser/action-coordinator.ts +97 -0
- package/src/browser/action-response-classifier.ts +99 -0
- package/src/browser/event-controller.ts +87 -64
- package/src/browser/history-state.ts +80 -0
- package/src/browser/intercept-utils.ts +52 -0
- package/src/browser/link-interceptor.ts +24 -4
- package/src/browser/logging.ts +55 -0
- package/src/browser/merge-segment-loaders.ts +20 -12
- package/src/browser/navigation-bridge.ts +285 -553
- package/src/browser/navigation-client.ts +123 -73
- package/src/browser/navigation-store.ts +33 -50
- package/src/browser/navigation-transaction.ts +295 -0
- package/src/browser/network-error-handler.ts +61 -0
- package/src/browser/partial-update.ts +261 -309
- package/src/browser/prefetch/cache.ts +154 -0
- package/src/browser/prefetch/fetch.ts +135 -0
- package/src/browser/prefetch/observer.ts +65 -0
- package/src/browser/prefetch/policy.ts +48 -0
- package/src/browser/prefetch/queue.ts +88 -0
- package/src/browser/rango-state.ts +112 -0
- package/src/browser/react/Link.tsx +182 -70
- package/src/browser/react/NavigationProvider.tsx +51 -11
- package/src/browser/react/context.ts +6 -0
- package/src/browser/react/filter-segment-order.ts +11 -0
- package/src/browser/react/index.ts +12 -12
- package/src/browser/react/location-state-shared.ts +95 -53
- package/src/browser/react/location-state.ts +60 -15
- package/src/browser/react/mount-context.ts +6 -1
- package/src/browser/react/nonce-context.ts +23 -0
- package/src/browser/react/shallow-equal.ts +27 -0
- package/src/browser/react/use-action.ts +29 -51
- package/src/browser/react/use-client-cache.ts +5 -3
- package/src/browser/react/use-handle.ts +29 -70
- package/src/browser/react/use-link-status.ts +6 -5
- package/src/browser/react/use-navigation.ts +22 -63
- package/src/browser/react/use-params.ts +65 -0
- package/src/browser/react/use-pathname.ts +47 -0
- package/src/browser/react/use-router.ts +63 -0
- package/src/browser/react/use-search-params.ts +56 -0
- package/src/browser/react/use-segments.ts +80 -97
- package/src/browser/response-adapter.ts +73 -0
- package/src/browser/rsc-router.tsx +106 -27
- package/src/browser/scroll-restoration.ts +92 -16
- package/src/browser/segment-reconciler.ts +216 -0
- package/src/browser/segment-structure-assert.ts +16 -0
- package/src/browser/server-action-bridge.ts +504 -599
- package/src/browser/shallow.ts +6 -1
- package/src/browser/types.ts +107 -47
- package/src/browser/validate-redirect-origin.ts +29 -0
- package/src/build/generate-manifest.ts +82 -21
- package/src/build/generate-route-types.ts +36 -752
- package/src/build/index.ts +6 -5
- package/src/build/route-trie.ts +39 -13
- package/src/build/route-types/ast-helpers.ts +25 -0
- package/src/build/route-types/ast-route-extraction.ts +98 -0
- package/src/build/route-types/codegen.ts +102 -0
- package/src/build/route-types/include-resolution.ts +411 -0
- package/src/build/route-types/param-extraction.ts +48 -0
- package/src/build/route-types/per-module-writer.ts +128 -0
- package/src/build/route-types/router-processing.ts +469 -0
- package/src/build/route-types/scan-filter.ts +78 -0
- package/src/build/runtime-discovery.ts +231 -0
- package/src/cache/background-task.ts +34 -0
- package/src/cache/cache-key-utils.ts +44 -0
- package/src/cache/cache-policy.ts +125 -0
- package/src/cache/cache-runtime.ts +338 -0
- package/src/cache/cache-scope.ts +120 -301
- package/src/cache/cf/cf-cache-store.ts +119 -7
- package/src/cache/cf/index.ts +8 -2
- package/src/cache/document-cache.ts +101 -72
- package/src/cache/handle-capture.ts +81 -0
- package/src/cache/handle-snapshot.ts +41 -0
- package/src/cache/index.ts +0 -15
- package/src/cache/memory-segment-store.ts +191 -13
- package/src/cache/profile-registry.ts +73 -0
- package/src/cache/read-through-swr.ts +134 -0
- package/src/cache/segment-codec.ts +256 -0
- package/src/cache/taint.ts +98 -0
- package/src/cache/types.ts +72 -122
- package/src/client.rsc.tsx +3 -1
- package/src/client.tsx +84 -126
- package/src/component-utils.ts +4 -4
- package/src/components/DefaultDocument.tsx +5 -1
- package/src/context-var.ts +86 -0
- package/src/debug.ts +17 -7
- package/src/errors.ts +77 -7
- package/src/handle.ts +15 -10
- package/src/handles/MetaTags.tsx +73 -20
- package/src/handles/breadcrumbs.ts +66 -0
- package/src/handles/index.ts +1 -0
- package/src/handles/meta.ts +30 -13
- package/src/host/cookie-handler.ts +21 -15
- package/src/host/errors.ts +8 -8
- package/src/host/index.ts +4 -7
- package/src/host/pattern-matcher.ts +27 -27
- package/src/host/router.ts +61 -39
- package/src/host/testing.ts +8 -8
- package/src/host/types.ts +15 -7
- package/src/host/utils.ts +1 -1
- package/src/href-client.ts +65 -45
- package/src/index.rsc.ts +133 -21
- package/src/index.ts +164 -52
- package/src/internal-debug.ts +11 -0
- package/src/loader.rsc.ts +25 -143
- package/src/loader.ts +27 -10
- package/src/network-error-thrower.tsx +3 -1
- package/src/outlet-provider.tsx +45 -0
- package/src/prerender/param-hash.ts +4 -2
- package/src/prerender/store.ts +158 -13
- package/src/prerender.ts +333 -26
- package/src/reverse.ts +184 -121
- package/src/root-error-boundary.tsx +41 -29
- package/src/route-content-wrapper.tsx +7 -4
- package/src/route-definition/dsl-helpers.ts +934 -0
- package/src/route-definition/helper-factories.ts +200 -0
- package/src/route-definition/helpers-types.ts +430 -0
- package/src/route-definition/index.ts +52 -0
- package/src/route-definition/redirect.ts +93 -0
- package/src/route-definition.ts +1 -1431
- package/src/route-map-builder.ts +156 -123
- package/src/route-name.ts +53 -0
- package/src/route-types.ts +48 -9
- package/src/router/content-negotiation.ts +116 -0
- package/src/router/debug-manifest.ts +72 -0
- package/src/router/error-handling.ts +9 -9
- package/src/router/find-match.ts +158 -0
- package/src/router/handler-context.ts +374 -81
- package/src/router/intercept-resolution.ts +24 -16
- package/src/router/lazy-includes.ts +234 -0
- package/src/router/loader-resolution.ts +215 -122
- package/src/router/logging.ts +248 -0
- package/src/router/manifest.ts +83 -32
- package/src/router/match-api.ts +118 -119
- package/src/router/match-context.ts +4 -2
- package/src/router/match-handlers.ts +440 -0
- package/src/router/match-middleware/background-revalidation.ts +80 -93
- package/src/router/match-middleware/cache-lookup.ts +336 -84
- package/src/router/match-middleware/cache-store.ts +43 -24
- package/src/router/match-middleware/intercept-resolution.ts +45 -20
- package/src/router/match-middleware/segment-resolution.ts +16 -8
- package/src/router/match-pipelines.ts +10 -45
- package/src/router/match-result.ts +34 -28
- package/src/router/metrics.ts +235 -15
- package/src/router/middleware-cookies.ts +55 -0
- package/src/router/middleware-types.ts +222 -0
- package/src/router/middleware.ts +324 -367
- package/src/router/pattern-matching.ts +197 -41
- package/src/router/prerender-match.ts +402 -0
- package/src/router/preview-match.ts +170 -0
- package/src/router/revalidation.ts +137 -38
- package/src/router/router-context.ts +36 -21
- package/src/router/router-interfaces.ts +452 -0
- package/src/router/router-options.ts +592 -0
- package/src/router/router-registry.ts +24 -0
- package/src/router/segment-resolution/fresh.ts +570 -0
- package/src/router/segment-resolution/helpers.ts +263 -0
- package/src/router/segment-resolution/loader-cache.ts +198 -0
- package/src/router/segment-resolution/revalidation.ts +1239 -0
- package/src/router/segment-resolution/static-store.ts +67 -0
- package/src/router/segment-resolution.ts +21 -1315
- package/src/router/segment-wrappers.ts +289 -0
- package/src/router/telemetry-otel.ts +299 -0
- package/src/router/telemetry.ts +300 -0
- package/src/router/timeout.ts +148 -0
- package/src/router/trie-matching.ts +96 -29
- package/src/router/types.ts +16 -9
- package/src/router.ts +590 -1983
- package/src/rsc/handler-context.ts +45 -0
- package/src/rsc/handler.ts +661 -1015
- package/src/rsc/helpers.ts +140 -6
- package/src/rsc/index.ts +0 -20
- package/src/rsc/loader-fetch.ts +209 -0
- package/src/rsc/manifest-init.ts +86 -0
- package/src/rsc/nonce.ts +14 -0
- package/src/rsc/origin-guard.ts +141 -0
- package/src/rsc/progressive-enhancement.ts +379 -0
- package/src/rsc/response-error.ts +37 -0
- package/src/rsc/response-route-handler.ts +347 -0
- package/src/rsc/rsc-rendering.ts +237 -0
- package/src/rsc/runtime-warnings.ts +42 -0
- package/src/rsc/server-action.ts +348 -0
- package/src/rsc/ssr-setup.ts +128 -0
- package/src/rsc/types.ts +38 -11
- package/src/search-params.ts +230 -0
- package/src/segment-system.tsx +25 -13
- package/src/server/context.ts +173 -48
- package/src/server/cookie-store.ts +190 -0
- package/src/server/fetchable-loader-store.ts +37 -0
- package/src/server/handle-store.ts +94 -15
- package/src/server/loader-registry.ts +15 -56
- package/src/server/request-context.ts +430 -70
- package/src/server.ts +35 -155
- package/src/ssr/index.tsx +100 -31
- package/src/static-handler.ts +114 -0
- package/src/theme/ThemeProvider.tsx +21 -15
- package/src/theme/ThemeScript.tsx +5 -5
- package/src/theme/constants.ts +5 -2
- package/src/theme/index.ts +4 -14
- package/src/theme/theme-context.ts +4 -30
- package/src/theme/theme-script.ts +21 -18
- package/src/types/boundaries.ts +158 -0
- package/src/types/cache-types.ts +198 -0
- package/src/types/error-types.ts +192 -0
- package/src/types/global-namespace.ts +100 -0
- package/src/types/handler-context.ts +687 -0
- package/src/types/index.ts +88 -0
- package/src/types/loader-types.ts +183 -0
- package/src/types/route-config.ts +170 -0
- package/src/types/route-entry.ts +102 -0
- package/src/types/segments.ts +148 -0
- package/src/types.ts +1 -1757
- package/src/urls/include-helper.ts +197 -0
- package/src/urls/index.ts +53 -0
- package/src/urls/path-helper-types.ts +339 -0
- package/src/urls/path-helper.ts +329 -0
- package/src/urls/pattern-types.ts +95 -0
- package/src/urls/response-types.ts +106 -0
- package/src/urls/type-extraction.ts +372 -0
- package/src/urls/urls-function.ts +98 -0
- package/src/urls.ts +1 -1282
- package/src/use-loader.tsx +85 -77
- package/src/vite/discovery/bundle-postprocess.ts +184 -0
- package/src/vite/discovery/discover-routers.ts +344 -0
- package/src/vite/discovery/prerender-collection.ts +385 -0
- package/src/vite/discovery/route-types-writer.ts +258 -0
- package/src/vite/discovery/self-gen-tracking.ts +47 -0
- package/src/vite/discovery/state.ts +110 -0
- package/src/vite/discovery/virtual-module-codegen.ts +203 -0
- package/src/vite/index.ts +11 -1963
- package/src/vite/plugin-types.ts +131 -0
- package/src/vite/plugins/cjs-to-esm.ts +93 -0
- package/src/vite/plugins/client-ref-dedup.ts +115 -0
- package/src/vite/plugins/client-ref-hashing.ts +105 -0
- package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -51
- package/src/vite/plugins/expose-id-utils.ts +287 -0
- package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
- package/src/vite/plugins/expose-ids/handler-transform.ts +179 -0
- package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
- package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
- package/src/vite/plugins/expose-ids/types.ts +45 -0
- package/src/vite/plugins/expose-internal-ids.ts +569 -0
- package/src/vite/plugins/refresh-cmd.ts +65 -0
- package/src/vite/plugins/use-cache-transform.ts +323 -0
- package/src/vite/plugins/version-injector.ts +83 -0
- package/src/vite/plugins/version-plugin.ts +254 -0
- package/src/vite/{virtual-entries.ts → plugins/virtual-entries.ts} +23 -14
- package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
- package/src/vite/rango.ts +510 -0
- package/src/vite/router-discovery.ts +785 -0
- package/src/vite/utils/ast-handler-extract.ts +517 -0
- package/src/vite/utils/banner.ts +36 -0
- package/src/vite/utils/bundle-analysis.ts +137 -0
- package/src/vite/utils/manifest-utils.ts +70 -0
- package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +25 -29
- package/src/vite/utils/prerender-utils.ts +189 -0
- package/src/vite/utils/shared-utils.ts +169 -0
- package/CLAUDE.md +0 -43
- package/src/browser/lru-cache.ts +0 -69
- package/src/browser/request-controller.ts +0 -164
- package/src/cache/memory-store.ts +0 -253
- package/src/href-context.ts +0 -33
- package/src/router.gen.ts +0 -6
- package/src/urls.gen.ts +0 -8
- package/src/vite/expose-handle-id.ts +0 -209
- package/src/vite/expose-loader-id.ts +0 -426
- package/src/vite/expose-location-state-id.ts +0 -177
- package/src/vite/expose-prerender-handler-id.ts +0 -429
- /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
package/src/href-client.ts
CHANGED
|
@@ -45,30 +45,34 @@ type ParseConstraintPath<T extends string> =
|
|
|
45
45
|
export type PatternToPath<T extends string> =
|
|
46
46
|
// Optional + constrained param in middle: /:param(a|b)?/rest
|
|
47
47
|
T extends `${infer Before}:${infer _Name}(${infer Constraint})?/${infer After}`
|
|
48
|
-
?
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
48
|
+
?
|
|
49
|
+
| PatternToPath<`${Before}${After}`>
|
|
50
|
+
| `${Before}${ParseConstraintPath<Constraint>}/${PatternToPath<After>}`
|
|
51
|
+
: // Optional + constrained param at end: /path/:param(a|b)?
|
|
52
|
+
T extends `${infer Before}:${infer _Name}(${infer Constraint})?`
|
|
53
|
+
? Before | `${Before}${ParseConstraintPath<Constraint>}`
|
|
54
|
+
: // Constrained param in middle: /:param(a|b)/rest
|
|
55
|
+
T extends `${infer Before}:${infer _Name}(${infer Constraint})/${infer After}`
|
|
56
|
+
? `${Before}${ParseConstraintPath<Constraint>}/${PatternToPath<After>}`
|
|
57
|
+
: // Constrained param at end: /path/:param(a|b)
|
|
58
|
+
T extends `${infer Before}:${infer _Name}(${infer Constraint})`
|
|
59
|
+
? `${Before}${ParseConstraintPath<Constraint>}`
|
|
60
|
+
: // Optional param in middle: /:param?/rest
|
|
61
|
+
T extends `${infer Before}:${infer _Param}?/${infer After}`
|
|
62
|
+
?
|
|
63
|
+
| PatternToPath<`${Before}${After}`>
|
|
64
|
+
| `${Before}${string}/${PatternToPath<After>}`
|
|
65
|
+
: // Optional param at end: /path/:param?
|
|
66
|
+
T extends `${infer Before}:${infer _Param}?`
|
|
67
|
+
? Before | `${Before}${string}`
|
|
68
|
+
: // Required param in middle: /:param/rest
|
|
69
|
+
T extends `${infer Before}:${infer _Param}/${infer After}`
|
|
70
|
+
? `${Before}${string}/${PatternToPath<After>}`
|
|
71
|
+
: // Required param at end: /path/:param
|
|
72
|
+
T extends `${infer Before}:${infer _Param}`
|
|
73
|
+
? `${Before}${string}`
|
|
74
|
+
: // Static path
|
|
75
|
+
T;
|
|
72
76
|
|
|
73
77
|
/**
|
|
74
78
|
* Allow optional query string (?...) and/or hash fragment (#...) suffix
|
|
@@ -85,19 +89,17 @@ type WithSuffix<T extends string> =
|
|
|
85
89
|
/**
|
|
86
90
|
* Helper type to get pattern from routes, handling string values and { path, response } objects
|
|
87
91
|
*/
|
|
88
|
-
type RoutePattern<TRoutes, K extends keyof TRoutes> =
|
|
89
|
-
|
|
90
|
-
: TRoutes[K] extends { readonly path: infer P extends string }
|
|
91
|
-
|
|
92
|
+
type RoutePattern<TRoutes, K extends keyof TRoutes> = TRoutes[K] extends string
|
|
93
|
+
? TRoutes[K]
|
|
94
|
+
: TRoutes[K] extends { readonly path: infer P extends string }
|
|
95
|
+
? P
|
|
96
|
+
: string;
|
|
92
97
|
|
|
93
98
|
/**
|
|
94
99
|
* Reverse lookup: find route name where the pattern matches TPattern
|
|
95
100
|
*/
|
|
96
|
-
type NameForPattern<
|
|
97
|
-
|
|
98
|
-
TRoutes = GetRegisteredRoutes
|
|
99
|
-
> = {
|
|
100
|
-
[K in keyof TRoutes]: RoutePattern<TRoutes, K> extends TPattern ? K : never
|
|
101
|
+
type NameForPattern<TPattern extends string, TRoutes = GetRegisteredRoutes> = {
|
|
102
|
+
[K in keyof TRoutes]: RoutePattern<TRoutes, K> extends TPattern ? K : never;
|
|
101
103
|
}[keyof TRoutes];
|
|
102
104
|
|
|
103
105
|
/**
|
|
@@ -112,19 +114,28 @@ type NameForPattern<
|
|
|
112
114
|
* For dynamic routes, use the pattern:
|
|
113
115
|
* PathResponse<"/api/products/:id"> → Product
|
|
114
116
|
*/
|
|
115
|
-
export type PathResponse<
|
|
116
|
-
|
|
117
|
+
export type PathResponse<
|
|
118
|
+
TPattern extends string,
|
|
119
|
+
TRoutes = GetRegisteredRoutes,
|
|
120
|
+
> = ResponseEnvelope<
|
|
121
|
+
{
|
|
117
122
|
[K in keyof TRoutes]: RoutePattern<TRoutes, K> extends TPattern
|
|
118
|
-
? TRoutes[K] extends { readonly response: infer R }
|
|
119
|
-
|
|
120
|
-
|
|
123
|
+
? TRoutes[K] extends { readonly response: infer R }
|
|
124
|
+
? Exclude<R, Response>
|
|
125
|
+
: never
|
|
126
|
+
: never;
|
|
127
|
+
}[keyof TRoutes]
|
|
128
|
+
>;
|
|
121
129
|
|
|
122
130
|
/**
|
|
123
131
|
* Strip trailing slash from a path (e.g., "/blog/" -> "/blog" | "/blog/")
|
|
124
132
|
* Allows navigation to include() prefixes without requiring trailing slash
|
|
125
133
|
*/
|
|
126
|
-
type OptionalTrailingSlash<T extends string> =
|
|
127
|
-
|
|
134
|
+
type OptionalTrailingSlash<T extends string> = T extends `${infer Base}/`
|
|
135
|
+
? Base extends ""
|
|
136
|
+
? T
|
|
137
|
+
: Base | T
|
|
138
|
+
: T;
|
|
128
139
|
|
|
129
140
|
/**
|
|
130
141
|
* Union of all valid paths from registered routes
|
|
@@ -135,9 +146,13 @@ type OptionalTrailingSlash<T extends string> =
|
|
|
135
146
|
export type ValidPaths<TRoutes = GetRegisteredRoutes> =
|
|
136
147
|
keyof TRoutes extends never
|
|
137
148
|
? `/${string}` // Fallback when no routes are registered
|
|
138
|
-
: WithSuffix<
|
|
139
|
-
|
|
140
|
-
|
|
149
|
+
: WithSuffix<
|
|
150
|
+
{
|
|
151
|
+
[K in keyof TRoutes]: OptionalTrailingSlash<
|
|
152
|
+
PatternToPath<RoutePattern<TRoutes, K>>
|
|
153
|
+
>;
|
|
154
|
+
}[keyof TRoutes]
|
|
155
|
+
>;
|
|
141
156
|
|
|
142
157
|
/**
|
|
143
158
|
* Type-safe href function for client-side use
|
|
@@ -167,7 +182,9 @@ export type ValidPaths<TRoutes = GetRegisteredRoutes> =
|
|
|
167
182
|
*/
|
|
168
183
|
export function href<T extends ValidPaths>(path: T, mount?: string): string {
|
|
169
184
|
if (mount && mount !== "/") {
|
|
170
|
-
|
|
185
|
+
// Strip trailing slash from mount to avoid double-slash when joining
|
|
186
|
+
const normalizedMount = mount.endsWith("/") ? mount.slice(0, -1) : mount;
|
|
187
|
+
return normalizedMount + path;
|
|
171
188
|
}
|
|
172
189
|
return path;
|
|
173
190
|
}
|
|
@@ -181,7 +198,10 @@ export interface ResponseHrefProps {
|
|
|
181
198
|
"data-external": "";
|
|
182
199
|
}
|
|
183
200
|
|
|
184
|
-
type ResponseHrefFn = <T extends ValidPaths>(
|
|
201
|
+
type ResponseHrefFn = <T extends ValidPaths>(
|
|
202
|
+
path: T,
|
|
203
|
+
mount?: string,
|
|
204
|
+
) => ResponseHrefProps;
|
|
185
205
|
|
|
186
206
|
function createResponseHrefTag(): ResponseHrefFn {
|
|
187
207
|
return (path, mount) => ({
|
package/src/index.rsc.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @rangojs/router (react-server environment)
|
|
3
3
|
*
|
|
4
|
-
* This file is used when importing "
|
|
4
|
+
* This file is used when importing "@rangojs/router" from RSC (server components).
|
|
5
5
|
* It re-exports everything from the universal index.ts plus adds server-side
|
|
6
|
-
*
|
|
6
|
+
* implementations that replace the client-side error stubs.
|
|
7
7
|
*
|
|
8
8
|
* The bundler uses the "react-server" export condition to select this file
|
|
9
9
|
* in RSC context, while the regular index.ts is used in client components.
|
|
@@ -11,8 +11,6 @@
|
|
|
11
11
|
|
|
12
12
|
// Re-export all universal exports from index.ts
|
|
13
13
|
export {
|
|
14
|
-
// Universal rendering utilities
|
|
15
|
-
renderSegments,
|
|
16
14
|
// Error classes
|
|
17
15
|
RouteNotFoundError,
|
|
18
16
|
DataNotFoundError,
|
|
@@ -21,22 +19,22 @@ export {
|
|
|
21
19
|
HandlerError,
|
|
22
20
|
BuildError,
|
|
23
21
|
InvalidHandlerError,
|
|
24
|
-
NetworkError,
|
|
25
|
-
isNetworkError,
|
|
26
|
-
sanitizeError,
|
|
27
22
|
RouterError,
|
|
23
|
+
Skip,
|
|
24
|
+
isSkip,
|
|
28
25
|
} from "./index.js";
|
|
29
26
|
|
|
30
27
|
// Re-export all types from types.ts (user-facing types only)
|
|
31
28
|
export type {
|
|
32
29
|
// Configuration types
|
|
33
30
|
DocumentProps,
|
|
34
|
-
RouterEnv,
|
|
35
31
|
DefaultEnv,
|
|
36
32
|
RouteDefinition,
|
|
33
|
+
RouteConfig,
|
|
34
|
+
RouteDefinitionOptions,
|
|
35
|
+
TrailingSlashMode,
|
|
37
36
|
// Handler types
|
|
38
37
|
Handler,
|
|
39
|
-
ScopedRouteMap,
|
|
40
38
|
HandlerContext,
|
|
41
39
|
ExtractParams,
|
|
42
40
|
GenericParams,
|
|
@@ -52,9 +50,6 @@ export type {
|
|
|
52
50
|
LoaderContext,
|
|
53
51
|
FetchableLoaderOptions,
|
|
54
52
|
LoadOptions,
|
|
55
|
-
LoaderActionContext,
|
|
56
|
-
LoaderAction,
|
|
57
|
-
LoaderMiddlewareFn,
|
|
58
53
|
// Error boundary types
|
|
59
54
|
ErrorInfo,
|
|
60
55
|
ErrorBoundaryFallbackProps,
|
|
@@ -64,26 +59,72 @@ export type {
|
|
|
64
59
|
NotFoundInfo,
|
|
65
60
|
NotFoundBoundaryFallbackProps,
|
|
66
61
|
NotFoundBoundaryHandler,
|
|
62
|
+
// Error handling callback types
|
|
63
|
+
ErrorPhase,
|
|
64
|
+
OnErrorContext,
|
|
65
|
+
OnErrorCallback,
|
|
67
66
|
} from "./types.js";
|
|
68
67
|
|
|
69
68
|
// Router options type (server-only, so import directly)
|
|
70
|
-
export type {
|
|
69
|
+
export type {
|
|
70
|
+
RSCRouterOptions,
|
|
71
|
+
SSRStreamMode,
|
|
72
|
+
SSROptions,
|
|
73
|
+
ResolveStreamingContext,
|
|
74
|
+
} from "./router.js";
|
|
71
75
|
|
|
72
76
|
// Server-side createLoader and redirect
|
|
73
|
-
export {
|
|
77
|
+
export {
|
|
78
|
+
createLoader,
|
|
79
|
+
redirect,
|
|
80
|
+
type RouteHelpers,
|
|
81
|
+
type RouteHandlers,
|
|
82
|
+
// Globally importable route helpers for composition
|
|
83
|
+
layout,
|
|
84
|
+
cache,
|
|
85
|
+
middleware,
|
|
86
|
+
revalidate,
|
|
87
|
+
loader,
|
|
88
|
+
loading,
|
|
89
|
+
parallel,
|
|
90
|
+
intercept,
|
|
91
|
+
when,
|
|
92
|
+
errorBoundary,
|
|
93
|
+
notFoundBoundary,
|
|
94
|
+
transition,
|
|
95
|
+
} from "./route-definition.js";
|
|
96
|
+
|
|
97
|
+
// Composition types for reusable callback factories
|
|
98
|
+
export type {
|
|
99
|
+
RouteUseItem,
|
|
100
|
+
LayoutUseItem,
|
|
101
|
+
AllUseItems,
|
|
102
|
+
UseItems,
|
|
103
|
+
} from "./route-types.js";
|
|
74
104
|
|
|
75
105
|
// Handle API
|
|
76
106
|
export { createHandle, isHandle, type Handle } from "./handle.js";
|
|
77
107
|
|
|
108
|
+
// Context variable API (typed ctx.set/ctx.get tokens)
|
|
109
|
+
export { createVar, type ContextVar } from "./context-var.js";
|
|
110
|
+
|
|
111
|
+
// CSP nonce token (use with ctx.get(nonce) in middleware/handlers)
|
|
112
|
+
export { nonce } from "./rsc/nonce.js";
|
|
113
|
+
|
|
78
114
|
// Pre-render handler API
|
|
79
115
|
export {
|
|
80
|
-
|
|
81
|
-
isPrerenderHandler,
|
|
116
|
+
Prerender,
|
|
82
117
|
type PrerenderHandlerDefinition,
|
|
118
|
+
type PrerenderPassthroughContext,
|
|
83
119
|
type PrerenderOptions,
|
|
84
120
|
type BuildContext,
|
|
121
|
+
type StaticBuildContext,
|
|
122
|
+
type GetParamsContext,
|
|
85
123
|
} from "./prerender.js";
|
|
86
124
|
|
|
125
|
+
// Static handler API
|
|
126
|
+
export { Static, type StaticHandlerDefinition } from "./static-handler.js";
|
|
127
|
+
|
|
87
128
|
// Django-style URL patterns (RSC/server context)
|
|
88
129
|
export {
|
|
89
130
|
urls,
|
|
@@ -95,6 +136,14 @@ export {
|
|
|
95
136
|
type RouteResponse,
|
|
96
137
|
type ResponseError,
|
|
97
138
|
type ResponseEnvelope,
|
|
139
|
+
type ResponseHandler,
|
|
140
|
+
type ResponseHandlerContext,
|
|
141
|
+
type JsonResponseHandler,
|
|
142
|
+
type TextResponseHandler,
|
|
143
|
+
type JsonValue,
|
|
144
|
+
type ResponsePathFn,
|
|
145
|
+
type JsonResponsePathFn,
|
|
146
|
+
type TextResponsePathFn,
|
|
98
147
|
} from "./urls.js";
|
|
99
148
|
|
|
100
149
|
// Core router (server-side)
|
|
@@ -102,6 +151,7 @@ export {
|
|
|
102
151
|
createRouter,
|
|
103
152
|
type RSCRouter,
|
|
104
153
|
type RootLayoutProps,
|
|
154
|
+
type RouterRequestInput,
|
|
105
155
|
} from "./router.js";
|
|
106
156
|
|
|
107
157
|
// RSC handler types (server-side)
|
|
@@ -109,13 +159,75 @@ export type { HandlerCacheConfig } from "./rsc/types.js";
|
|
|
109
159
|
|
|
110
160
|
// Built-in handles (server-side)
|
|
111
161
|
export { Meta } from "./handles/meta.js";
|
|
162
|
+
export { Breadcrumbs, type BreadcrumbItem } from "./handles/breadcrumbs.js";
|
|
163
|
+
|
|
164
|
+
// Request context (for accessing request data in server actions/components).
|
|
165
|
+
// Re-exported with a narrowed return type so that public consumers only see
|
|
166
|
+
// public members. Internal code imports from "./server/request-context.js"
|
|
167
|
+
// directly and gets the full type.
|
|
168
|
+
import { getRequestContext as _getRequestContextInternal } from "./server/request-context.js";
|
|
169
|
+
export type { PublicRequestContext as RequestContext } from "./server/request-context.js";
|
|
170
|
+
import type { PublicRequestContext } from "./server/request-context.js";
|
|
171
|
+
import type { DefaultEnv } from "./types/global-namespace.js";
|
|
112
172
|
|
|
113
|
-
|
|
114
|
-
|
|
173
|
+
export const getRequestContext: <
|
|
174
|
+
TEnv = DefaultEnv,
|
|
175
|
+
>() => PublicRequestContext<TEnv> = _getRequestContextInternal;
|
|
176
|
+
|
|
177
|
+
// Request-scoped shorthands
|
|
178
|
+
export {
|
|
179
|
+
cookies,
|
|
180
|
+
headers,
|
|
181
|
+
type CookieStore,
|
|
182
|
+
type Cookie,
|
|
183
|
+
type ReadonlyHeaders,
|
|
184
|
+
} from "./server/cookie-store.js";
|
|
115
185
|
|
|
116
186
|
// Meta types
|
|
117
187
|
export type { MetaDescriptor, MetaDescriptorBase } from "./router/types.js";
|
|
118
188
|
|
|
189
|
+
// Middleware context types
|
|
190
|
+
export type { MiddlewareContext, CookieOptions } from "./router/middleware.js";
|
|
191
|
+
|
|
119
192
|
// Reverse type utilities for type-safe URL generation (Django-style URL reversal)
|
|
120
|
-
export type {
|
|
121
|
-
|
|
193
|
+
export type {
|
|
194
|
+
ScopedReverseFunction,
|
|
195
|
+
ReverseFunction,
|
|
196
|
+
ExtractLocalRoutes,
|
|
197
|
+
ParamsFor,
|
|
198
|
+
} from "./reverse.js";
|
|
199
|
+
export { scopedReverse, createReverse } from "./reverse.js";
|
|
200
|
+
|
|
201
|
+
// Search params schema types
|
|
202
|
+
export type {
|
|
203
|
+
SearchSchema,
|
|
204
|
+
SearchSchemaValue,
|
|
205
|
+
ResolveSearchSchema,
|
|
206
|
+
RouteSearchParams,
|
|
207
|
+
RouteParams,
|
|
208
|
+
} from "./search-params.js";
|
|
209
|
+
|
|
210
|
+
// Location state (universal)
|
|
211
|
+
export {
|
|
212
|
+
createLocationState,
|
|
213
|
+
type LocationStateDefinition,
|
|
214
|
+
type LocationStateEntry,
|
|
215
|
+
type LocationStateOptions,
|
|
216
|
+
} from "./browser/react/location-state-shared.js";
|
|
217
|
+
|
|
218
|
+
// Path-based response type lookup from RegisteredRoutes
|
|
219
|
+
export type { PathResponse } from "./href-client.js";
|
|
220
|
+
|
|
221
|
+
// Telemetry sink
|
|
222
|
+
export { createConsoleSink } from "./router/telemetry.js";
|
|
223
|
+
export { createOTelSink } from "./router/telemetry-otel.js";
|
|
224
|
+
export type { OTelTracer, OTelSpan } from "./router/telemetry-otel.js";
|
|
225
|
+
export type { TelemetrySink, TelemetryEvent } from "./router/telemetry.js";
|
|
226
|
+
|
|
227
|
+
// Timeout types and error class
|
|
228
|
+
export { RouterTimeoutError } from "./router/timeout.js";
|
|
229
|
+
export type {
|
|
230
|
+
RouterTimeouts,
|
|
231
|
+
TimeoutPhase,
|
|
232
|
+
TimeoutContext,
|
|
233
|
+
} from "./router/timeout.js";
|