@rangojs/router 0.0.0-experimental.13 → 0.0.0-experimental.13221847
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 +9 -0
- package/README.md +884 -4
- package/dist/bin/rango.js +1531 -212
- package/dist/vite/index.js +3995 -2489
- package/package.json +57 -52
- package/skills/breadcrumbs/SKILL.md +250 -0
- package/skills/cache-guide/SKILL.md +262 -0
- package/skills/caching/SKILL.md +85 -23
- 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 +328 -70
- 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 +62 -15
- package/skills/loader/SKILL.md +368 -42
- package/skills/middleware/SKILL.md +171 -34
- package/skills/mime-routes/SKILL.md +14 -10
- package/skills/parallel/SKILL.md +137 -1
- package/skills/prerender/SKILL.md +366 -28
- package/skills/rango/SKILL.md +85 -21
- package/skills/response-routes/SKILL.md +136 -83
- package/skills/route/SKILL.md +195 -21
- package/skills/router-setup/SKILL.md +123 -30
- package/skills/theme/SKILL.md +9 -8
- package/skills/typesafety/SKILL.md +240 -102
- 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 +92 -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 +11 -0
- package/src/browser/merge-segment-loaders.ts +20 -12
- package/src/browser/navigation-bridge.ts +266 -558
- package/src/browser/navigation-client.ts +132 -75
- package/src/browser/navigation-store.ts +33 -50
- package/src/browser/navigation-transaction.ts +297 -0
- package/src/browser/network-error-handler.ts +61 -0
- package/src/browser/partial-update.ts +303 -309
- package/src/browser/prefetch/cache.ts +206 -0
- package/src/browser/prefetch/fetch.ts +144 -0
- package/src/browser/prefetch/observer.ts +65 -0
- package/src/browser/prefetch/policy.ts +48 -0
- package/src/browser/prefetch/queue.ts +128 -0
- package/src/browser/rango-state.ts +112 -0
- package/src/browser/react/Link.tsx +190 -70
- package/src/browser/react/NavigationProvider.tsx +78 -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 +188 -57
- package/src/browser/scroll-restoration.ts +117 -44
- package/src/browser/segment-reconciler.ts +221 -0
- package/src/browser/segment-structure-assert.ts +16 -0
- package/src/browser/server-action-bridge.ts +488 -606
- package/src/browser/shallow.ts +6 -1
- package/src/browser/types.ts +116 -47
- package/src/browser/validate-redirect-origin.ts +29 -0
- package/src/build/generate-manifest.ts +63 -21
- package/src/build/generate-route-types.ts +36 -1038
- package/src/build/index.ts +2 -5
- package/src/build/route-trie.ts +38 -12
- 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 +479 -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 +342 -0
- package/src/cache/cache-scope.ts +122 -303
- package/src/cache/cf/cf-cache-store.ts +571 -17
- package/src/cache/cf/index.ts +13 -3
- package/src/cache/document-cache.ts +116 -77
- package/src/cache/handle-capture.ts +81 -0
- package/src/cache/handle-snapshot.ts +41 -0
- package/src/cache/index.ts +1 -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 +19 -9
- package/src/errors.ts +77 -7
- package/src/handle.ts +12 -7
- 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 +104 -40
- package/src/index.ts +122 -67
- package/src/internal-debug.ts +9 -3
- package/src/loader.rsc.ts +18 -93
- package/src/loader.ts +26 -9
- 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 +121 -17
- package/src/prerender.ts +325 -20
- package/src/reverse.ts +144 -124
- package/src/root-error-boundary.tsx +41 -29
- package/src/route-content-wrapper.tsx +7 -4
- package/src/route-definition/dsl-helpers.ts +959 -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 -1450
- package/src/route-map-builder.ts +87 -133
- package/src/route-name.ts +53 -0
- package/src/route-types.ts +41 -6
- 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 +160 -0
- package/src/router/handler-context.ts +324 -116
- package/src/router/intercept-resolution.ts +11 -4
- package/src/router/lazy-includes.ts +237 -0
- package/src/router/loader-resolution.ts +179 -133
- package/src/router/logging.ts +112 -6
- package/src/router/manifest.ts +58 -19
- package/src/router/match-api.ts +89 -88
- package/src/router/match-context.ts +4 -2
- package/src/router/match-handlers.ts +440 -0
- package/src/router/match-middleware/background-revalidation.ts +86 -89
- package/src/router/match-middleware/cache-lookup.ts +295 -49
- package/src/router/match-middleware/cache-store.ts +56 -13
- package/src/router/match-middleware/intercept-resolution.ts +45 -22
- package/src/router/match-middleware/segment-resolution.ts +20 -9
- package/src/router/match-pipelines.ts +10 -45
- package/src/router/match-result.ts +44 -21
- package/src/router/metrics.ts +240 -15
- package/src/router/middleware-cookies.ts +55 -0
- package/src/router/middleware-types.ts +222 -0
- package/src/router/middleware.ts +327 -369
- package/src/router/pattern-matching.ts +169 -31
- package/src/router/prerender-match.ts +402 -0
- package/src/router/preview-match.ts +170 -0
- package/src/router/revalidation.ts +105 -14
- package/src/router/router-context.ts +40 -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 +677 -0
- package/src/router/segment-resolution/helpers.ts +263 -0
- package/src/router/segment-resolution/loader-cache.ts +199 -0
- package/src/router/segment-resolution/revalidation.ts +1296 -0
- package/src/router/segment-resolution/static-store.ts +67 -0
- package/src/router/segment-resolution.ts +21 -1354
- package/src/router/segment-wrappers.ts +291 -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 +15 -9
- package/src/router.ts +642 -2366
- package/src/rsc/handler-context.ts +45 -0
- package/src/rsc/handler.ts +639 -1027
- 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 +66 -54
- package/src/segment-system.tsx +165 -17
- package/src/server/context.ts +237 -54
- package/src/server/cookie-store.ts +190 -0
- package/src/server/fetchable-loader-store.ts +11 -6
- package/src/server/handle-store.ts +94 -15
- package/src/server/loader-registry.ts +15 -56
- package/src/server/request-context.ts +438 -71
- package/src/server.ts +26 -164
- package/src/ssr/index.tsx +101 -31
- package/src/static-handler.ts +22 -4
- 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 +773 -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 +109 -0
- package/src/types/segments.ts +150 -0
- package/src/types.ts +1 -1795
- 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 -1323
- 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 +108 -0
- package/src/vite/discovery/virtual-module-codegen.ts +203 -0
- package/src/vite/index.ts +11 -2259
- package/src/vite/plugin-types.ts +48 -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 -47
- package/src/vite/{expose-id-utils.ts → plugins/expose-id-utils.ts} +8 -43
- 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 +266 -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 +445 -0
- package/src/vite/router-discovery.ts +777 -0
- package/src/vite/{ast-handler-extract.ts → utils/ast-handler-extract.ts} +181 -9
- 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/dist/vite/index.named-routes.gen.ts +0 -103
- 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/static-handler.gen.ts +0 -5
- package/src/urls.gen.ts +0 -8
- package/src/vite/expose-internal-ids.ts +0 -1167
- /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
|
@@ -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,17 +19,15 @@ 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,
|
|
37
33
|
RouteConfig,
|
|
@@ -39,7 +35,6 @@ export type {
|
|
|
39
35
|
TrailingSlashMode,
|
|
40
36
|
// Handler types
|
|
41
37
|
Handler,
|
|
42
|
-
ScopedRouteMap,
|
|
43
38
|
HandlerContext,
|
|
44
39
|
ExtractParams,
|
|
45
40
|
GenericParams,
|
|
@@ -55,9 +50,6 @@ export type {
|
|
|
55
50
|
LoaderContext,
|
|
56
51
|
FetchableLoaderOptions,
|
|
57
52
|
LoadOptions,
|
|
58
|
-
LoaderActionContext,
|
|
59
|
-
LoaderAction,
|
|
60
|
-
LoaderMiddlewareFn,
|
|
61
53
|
// Error boundary types
|
|
62
54
|
ErrorInfo,
|
|
63
55
|
ErrorBoundaryFallbackProps,
|
|
@@ -67,37 +59,75 @@ export type {
|
|
|
67
59
|
NotFoundInfo,
|
|
68
60
|
NotFoundBoundaryFallbackProps,
|
|
69
61
|
NotFoundBoundaryHandler,
|
|
62
|
+
// Error handling callback types
|
|
63
|
+
ErrorPhase,
|
|
64
|
+
OnErrorContext,
|
|
65
|
+
OnErrorCallback,
|
|
70
66
|
} from "./types.js";
|
|
71
67
|
|
|
72
68
|
// Router options type (server-only, so import directly)
|
|
73
|
-
export type {
|
|
69
|
+
export type {
|
|
70
|
+
RSCRouterOptions,
|
|
71
|
+
SSRStreamMode,
|
|
72
|
+
SSROptions,
|
|
73
|
+
ResolveStreamingContext,
|
|
74
|
+
} from "./router.js";
|
|
74
75
|
|
|
75
76
|
// Server-side createLoader and redirect
|
|
76
|
-
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";
|
|
77
104
|
|
|
78
105
|
// Handle API
|
|
79
106
|
export { createHandle, isHandle, type Handle } from "./handle.js";
|
|
80
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
|
+
|
|
81
114
|
// Pre-render handler API
|
|
82
115
|
export {
|
|
83
116
|
Prerender,
|
|
84
|
-
isPrerenderHandler,
|
|
85
117
|
type PrerenderHandlerDefinition,
|
|
118
|
+
type PrerenderPassthroughContext,
|
|
86
119
|
type PrerenderOptions,
|
|
87
120
|
type BuildContext,
|
|
121
|
+
type StaticBuildContext,
|
|
122
|
+
type GetParamsContext,
|
|
88
123
|
} from "./prerender.js";
|
|
89
124
|
|
|
90
125
|
// Static handler API
|
|
91
|
-
export {
|
|
92
|
-
Static,
|
|
93
|
-
isStaticHandler,
|
|
94
|
-
type StaticHandlerDefinition,
|
|
95
|
-
} from "./static-handler.js";
|
|
126
|
+
export { Static, type StaticHandlerDefinition } from "./static-handler.js";
|
|
96
127
|
|
|
97
128
|
// Django-style URL patterns (RSC/server context)
|
|
98
129
|
export {
|
|
99
130
|
urls,
|
|
100
|
-
RESPONSE_TYPE,
|
|
101
131
|
type PathHelpers,
|
|
102
132
|
type PathOptions,
|
|
103
133
|
type UrlPatterns,
|
|
@@ -121,6 +151,7 @@ export {
|
|
|
121
151
|
createRouter,
|
|
122
152
|
type RSCRouter,
|
|
123
153
|
type RootLayoutProps,
|
|
154
|
+
type RouterRequestInput,
|
|
124
155
|
} from "./router.js";
|
|
125
156
|
|
|
126
157
|
// RSC handler types (server-side)
|
|
@@ -128,42 +159,75 @@ export type { HandlerCacheConfig } from "./rsc/types.js";
|
|
|
128
159
|
|
|
129
160
|
// Built-in handles (server-side)
|
|
130
161
|
export { Meta } from "./handles/meta.js";
|
|
131
|
-
|
|
132
|
-
|
|
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";
|
|
172
|
+
|
|
173
|
+
export const getRequestContext: <
|
|
174
|
+
TEnv = DefaultEnv,
|
|
175
|
+
>() => PublicRequestContext<TEnv> = _getRequestContextInternal;
|
|
176
|
+
|
|
177
|
+
// Request-scoped shorthands
|
|
133
178
|
export {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
type
|
|
137
|
-
|
|
179
|
+
cookies,
|
|
180
|
+
headers,
|
|
181
|
+
type CookieStore,
|
|
182
|
+
type Cookie,
|
|
183
|
+
type ReadonlyHeaders,
|
|
184
|
+
} from "./server/cookie-store.js";
|
|
138
185
|
|
|
139
186
|
// Meta types
|
|
140
187
|
export type { MetaDescriptor, MetaDescriptorBase } from "./router/types.js";
|
|
141
188
|
|
|
142
189
|
// Middleware context types
|
|
143
|
-
export type {
|
|
144
|
-
MiddlewareContext,
|
|
145
|
-
CookieOptions,
|
|
146
|
-
} from "./router/middleware.js";
|
|
190
|
+
export type { MiddlewareContext, CookieOptions } from "./router/middleware.js";
|
|
147
191
|
|
|
148
192
|
// Reverse type utilities for type-safe URL generation (Django-style URL reversal)
|
|
149
|
-
export type {
|
|
193
|
+
export type {
|
|
194
|
+
ScopedReverseFunction,
|
|
195
|
+
ReverseFunction,
|
|
196
|
+
ExtractLocalRoutes,
|
|
197
|
+
ParamsFor,
|
|
198
|
+
} from "./reverse.js";
|
|
150
199
|
export { scopedReverse, createReverse } from "./reverse.js";
|
|
151
200
|
|
|
152
201
|
// Search params schema types
|
|
153
|
-
export type {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
enableMatchDebug,
|
|
161
|
-
getMatchDebugStats,
|
|
162
|
-
} from "./router/pattern-matching.js";
|
|
202
|
+
export type {
|
|
203
|
+
SearchSchema,
|
|
204
|
+
SearchSchemaValue,
|
|
205
|
+
ResolveSearchSchema,
|
|
206
|
+
RouteSearchParams,
|
|
207
|
+
RouteParams,
|
|
208
|
+
} from "./search-params.js";
|
|
163
209
|
|
|
164
210
|
// Location state (universal)
|
|
165
211
|
export {
|
|
166
212
|
createLocationState,
|
|
167
213
|
type LocationStateDefinition,
|
|
168
214
|
type LocationStateEntry,
|
|
215
|
+
type LocationStateOptions,
|
|
169
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";
|