vorma 0.85.0-pre.9 → 0.86.0-pre.1

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.
Files changed (244) hide show
  1. package/.dist/core/_index.d.ts +739 -0
  2. package/.dist/core/_index.d.ts.map +1 -0
  3. package/.dist/core/_index.js +2903 -0
  4. package/.dist/core/_index.js.map +1 -0
  5. package/.dist/core/vorma_client_wasm_bg.wasm +0 -0
  6. package/.dist/kit/converters/converters.d.ts +18 -18
  7. package/.dist/kit/converters/converters.d.ts.map +1 -1
  8. package/.dist/kit/converters/converters.js +22 -22
  9. package/.dist/kit/converters/converters.js.map +1 -1
  10. package/.dist/kit/cookies/cookies.d.ts +1 -1
  11. package/.dist/kit/cookies/cookies.js +6 -6
  12. package/.dist/kit/cookies/cookies.js.map +1 -1
  13. package/.dist/kit/csrf/csrf.d.ts +3 -3
  14. package/.dist/kit/csrf/csrf.js +3 -3
  15. package/.dist/kit/csrf/csrf.js.map +1 -1
  16. package/.dist/kit/debounce/debounce.d.ts +6 -3
  17. package/.dist/kit/debounce/debounce.d.ts.map +1 -1
  18. package/.dist/kit/debounce/debounce.js +12 -5
  19. package/.dist/kit/debounce/debounce.js.map +1 -1
  20. package/.dist/kit/fmt/fmt.d.ts +3 -3
  21. package/.dist/kit/fmt/fmt.js +3 -3
  22. package/.dist/kit/fmt/fmt.js.map +1 -1
  23. package/.dist/kit/json/json.d.ts +12 -6
  24. package/.dist/kit/json/json.d.ts.map +1 -1
  25. package/.dist/kit/json/json.js +92 -31
  26. package/.dist/kit/json/json.js.map +1 -1
  27. package/.dist/kit/lab/design/components/remix/remix.d.ts +2308 -0
  28. package/.dist/kit/lab/design/components/remix/remix.d.ts.map +1 -0
  29. package/.dist/kit/lab/design/components/remix/remix.js +7022 -0
  30. package/.dist/kit/lab/design/components/remix/remix.js.map +1 -0
  31. package/.dist/kit/lab/design/core/core.d.ts +527 -0
  32. package/.dist/kit/lab/design/core/core.d.ts.map +1 -0
  33. package/.dist/kit/lab/design/core/core.js +668 -0
  34. package/.dist/kit/lab/design/core/core.js.map +1 -0
  35. package/.dist/kit/listeners/listeners.d.ts +1 -1
  36. package/.dist/kit/listeners/listeners.js +9 -8
  37. package/.dist/kit/listeners/listeners.js.map +1 -1
  38. package/.dist/kit/matcher/matcher.d.ts +78 -0
  39. package/.dist/kit/matcher/matcher.d.ts.map +1 -0
  40. package/.dist/kit/matcher/matcher.js +517 -0
  41. package/.dist/kit/matcher/matcher.js.map +1 -0
  42. package/.dist/kit/result/result.d.ts +1 -1
  43. package/.dist/kit/result/result.js +1 -1
  44. package/.dist/kit/theme/theme.d.ts +1 -1
  45. package/.dist/kit/theme/theme.d.ts.map +1 -1
  46. package/.dist/kit/theme/theme.js +32 -32
  47. package/.dist/kit/theme/theme.js.map +1 -1
  48. package/.dist/ui/preact/preact.d.ts +33 -0
  49. package/.dist/ui/preact/preact.d.ts.map +1 -0
  50. package/.dist/ui/preact/preact.js +243 -0
  51. package/.dist/ui/preact/preact.js.map +1 -0
  52. package/.dist/ui/react/react.d.ts +32 -0
  53. package/.dist/ui/react/react.d.ts.map +1 -0
  54. package/.dist/ui/react/react.js +331 -0
  55. package/.dist/ui/react/react.js.map +1 -0
  56. package/.dist/ui/remix/remix.d.ts +73 -0
  57. package/.dist/ui/remix/remix.d.ts.map +1 -0
  58. package/.dist/ui/remix/remix.js +409 -0
  59. package/.dist/ui/remix/remix.js.map +1 -0
  60. package/.dist/ui/solid/solid.d.ts +32 -0
  61. package/.dist/ui/solid/solid.d.ts.map +1 -0
  62. package/.dist/ui/solid/solid.js +315 -0
  63. package/.dist/ui/solid/solid.js.map +1 -0
  64. package/.dist/{vorma/vite → vite}/vite.d.mts +1 -1
  65. package/.dist/vite/vite.d.mts.map +1 -0
  66. package/.dist/vite/vite.mjs +242 -0
  67. package/.dist/vite/vite.mjs.map +1 -0
  68. package/LICENSE +19 -0
  69. package/README.md +4 -3
  70. package/core/_index.ts +102 -0
  71. package/core/api_client.ts +193 -0
  72. package/core/client_wasm/load.ts +62 -0
  73. package/core/client_wasm/matcher.ts +145 -0
  74. package/core/client_wasm/vorma_client_wasm_bg.wasm +0 -0
  75. package/{vorma/core → core}/constants.ts +12 -1
  76. package/core/create_client_core.ts +3416 -0
  77. package/core/css.ts +115 -0
  78. package/core/head.ts +207 -0
  79. package/{vorma/core → core}/make_link_props.ts +191 -26
  80. package/{vorma/core → core}/modules.ts +1 -5
  81. package/{vorma/core → core}/resolve_outlet_slot.ts +12 -26
  82. package/core/types.ts +572 -0
  83. package/core/ui_adapter_core.ts +448 -0
  84. package/{vorma/core → core}/url.ts +44 -45
  85. package/kit/converters/converters.ts +29 -30
  86. package/kit/cookies/cookies.ts +6 -6
  87. package/kit/csrf/csrf.ts +1 -1
  88. package/kit/debounce/debounce.ts +24 -8
  89. package/kit/fmt/fmt.ts +1 -1
  90. package/kit/json/deep_equals.ts +17 -17
  91. package/kit/json/json.ts +1 -0
  92. package/kit/json/search_param_parser.ts +136 -0
  93. package/kit/json/search_param_serializer.ts +8 -8
  94. package/kit/json/stringify_stable.ts +7 -12
  95. package/kit/lab/design/components/remix/accordion.ts +474 -0
  96. package/kit/lab/design/components/remix/alert-dialog.ts +512 -0
  97. package/kit/lab/design/components/remix/alert.ts +213 -0
  98. package/kit/lab/design/components/remix/aspect-ratio.ts +111 -0
  99. package/kit/lab/design/components/remix/badge.ts +59 -0
  100. package/kit/lab/design/components/remix/box.ts +49 -0
  101. package/kit/lab/design/components/remix/button.ts +314 -0
  102. package/kit/lab/design/components/remix/callout.ts +127 -0
  103. package/kit/lab/design/components/remix/checkable-state.ts +187 -0
  104. package/kit/lab/design/components/remix/checkbox-group.ts +443 -0
  105. package/kit/lab/design/components/remix/checkbox.ts +215 -0
  106. package/kit/lab/design/components/remix/chip.ts +165 -0
  107. package/kit/lab/design/components/remix/code-block.ts +181 -0
  108. package/kit/lab/design/components/remix/collapsible.ts +325 -0
  109. package/kit/lab/design/components/remix/component-state.ts +55 -0
  110. package/kit/lab/design/components/remix/component-style.ts +364 -0
  111. package/kit/lab/design/components/remix/composite-navigation.ts +71 -0
  112. package/kit/lab/design/components/remix/conditions.ts +25 -0
  113. package/kit/lab/design/components/remix/controllable-state.ts +58 -0
  114. package/kit/lab/design/components/remix/description-list.ts +275 -0
  115. package/kit/lab/design/components/remix/dialog.ts +653 -0
  116. package/kit/lab/design/components/remix/empty-state.ts +146 -0
  117. package/kit/lab/design/components/remix/field.ts +418 -0
  118. package/kit/lab/design/components/remix/fieldset.ts +153 -0
  119. package/kit/lab/design/components/remix/form-mirror.ts +94 -0
  120. package/kit/lab/design/components/remix/form-reset.ts +85 -0
  121. package/kit/lab/design/components/remix/form.ts +109 -0
  122. package/kit/lab/design/components/remix/grid.ts +187 -0
  123. package/kit/lab/design/components/remix/group-label.ts +47 -0
  124. package/kit/lab/design/components/remix/icon.ts +176 -0
  125. package/kit/lab/design/components/remix/input.ts +163 -0
  126. package/kit/lab/design/components/remix/kbd.ts +58 -0
  127. package/kit/lab/design/components/remix/list.ts +120 -0
  128. package/kit/lab/design/components/remix/listbox.ts +1116 -0
  129. package/kit/lab/design/components/remix/menu.ts +1477 -0
  130. package/kit/lab/design/components/remix/ordered-collection.ts +95 -0
  131. package/kit/lab/design/components/remix/popover-scroll-lock.ts +89 -0
  132. package/kit/lab/design/components/remix/popover.ts +576 -0
  133. package/kit/lab/design/components/remix/popup-behavior.ts +96 -0
  134. package/kit/lab/design/components/remix/progress.ts +185 -0
  135. package/kit/lab/design/components/remix/radio-group.ts +420 -0
  136. package/kit/lab/design/components/remix/recipe.ts +70 -0
  137. package/kit/lab/design/components/remix/remix.ts +683 -0
  138. package/kit/lab/design/components/remix/responsive.ts +106 -0
  139. package/kit/lab/design/components/remix/root.ts +137 -0
  140. package/kit/lab/design/components/remix/select.ts +1546 -0
  141. package/kit/lab/design/components/remix/separator.ts +108 -0
  142. package/kit/lab/design/components/remix/slider.ts +308 -0
  143. package/kit/lab/design/components/remix/spinner.ts +114 -0
  144. package/kit/lab/design/components/remix/stack.ts +205 -0
  145. package/kit/lab/design/components/remix/stat.ts +127 -0
  146. package/kit/lab/design/components/remix/surface.ts +71 -0
  147. package/kit/lab/design/components/remix/switch.ts +219 -0
  148. package/kit/lab/design/components/remix/table.ts +395 -0
  149. package/kit/lab/design/components/remix/tabs.ts +404 -0
  150. package/kit/lab/design/components/remix/text.ts +169 -0
  151. package/kit/lab/design/components/remix/textarea.ts +164 -0
  152. package/kit/lab/design/components/remix/toast.ts +299 -0
  153. package/kit/lab/design/components/remix/tooltip.ts +330 -0
  154. package/kit/lab/design/components/remix/typeahead.ts +81 -0
  155. package/kit/lab/design/components/remix/types.ts +19 -0
  156. package/kit/lab/design/components/remix/visually-hidden.ts +100 -0
  157. package/kit/lab/design/core/color.ts +46 -0
  158. package/kit/lab/design/core/core.ts +111 -0
  159. package/kit/lab/design/core/create_primitive.ts +455 -0
  160. package/kit/lab/design/core/create_system.ts +303 -0
  161. package/kit/lab/design/core/css.ts +127 -0
  162. package/kit/lab/design/core/define_system.ts +508 -0
  163. package/kit/lab/design/core/math.ts +12 -0
  164. package/kit/lab/design/core/object.ts +31 -0
  165. package/kit/lab/design/core/recipe/create_recipe.ts +185 -0
  166. package/kit/lab/design/core/recipe/recipe.ts +26 -0
  167. package/kit/lab/design/core/recipe/style.ts +62 -0
  168. package/kit/lab/design/core/recipe/types.ts +160 -0
  169. package/kit/lab/design/core/resolve_token.ts +118 -0
  170. package/kit/lab/design/core/types.ts +636 -0
  171. package/kit/listeners/listeners.ts +8 -7
  172. package/kit/theme/theme.ts +38 -45
  173. package/package.json +132 -142
  174. package/ui/preact/preact.tsx +476 -0
  175. package/ui/react/react.tsx +562 -0
  176. package/ui/remix/remix.tsx +901 -0
  177. package/ui/solid/solid.tsx +490 -0
  178. package/vite/vite.ts +401 -0
  179. package/.dist/kit/matcher/find_best_match.d.ts +0 -13
  180. package/.dist/kit/matcher/find_best_match.d.ts.map +0 -1
  181. package/.dist/kit/matcher/find_best_match.js +0 -92
  182. package/.dist/kit/matcher/find_best_match.js.map +0 -1
  183. package/.dist/kit/matcher/find_nested_matches.d.ts +0 -17
  184. package/.dist/kit/matcher/find_nested_matches.d.ts.map +0 -1
  185. package/.dist/kit/matcher/find_nested_matches.js +0 -183
  186. package/.dist/kit/matcher/find_nested_matches.js.map +0 -1
  187. package/.dist/kit/matcher/register.d.ts +0 -59
  188. package/.dist/kit/matcher/register.d.ts.map +0 -1
  189. package/.dist/kit/matcher/register.js +0 -159
  190. package/.dist/kit/matcher/register.js.map +0 -1
  191. package/.dist/kit/matcher/utils.d.ts +0 -6
  192. package/.dist/kit/matcher/utils.d.ts.map +0 -1
  193. package/.dist/kit/matcher/utils.js +0 -21
  194. package/.dist/kit/matcher/utils.js.map +0 -1
  195. package/.dist/kit/url/url.d.ts +0 -52
  196. package/.dist/kit/url/url.d.ts.map +0 -1
  197. package/.dist/kit/url/url.js +0 -103
  198. package/.dist/kit/url/url.js.map +0 -1
  199. package/.dist/vorma/core/_index.d.ts +0 -478
  200. package/.dist/vorma/core/_index.d.ts.map +0 -1
  201. package/.dist/vorma/core/_index.js +0 -1896
  202. package/.dist/vorma/core/_index.js.map +0 -1
  203. package/.dist/vorma/tsx/preact/preact.d.ts +0 -13
  204. package/.dist/vorma/tsx/preact/preact.d.ts.map +0 -1
  205. package/.dist/vorma/tsx/preact/preact.js +0 -172
  206. package/.dist/vorma/tsx/preact/preact.js.map +0 -1
  207. package/.dist/vorma/tsx/react/react.d.ts +0 -12
  208. package/.dist/vorma/tsx/react/react.d.ts.map +0 -1
  209. package/.dist/vorma/tsx/react/react.js +0 -203
  210. package/.dist/vorma/tsx/react/react.js.map +0 -1
  211. package/.dist/vorma/tsx/solid/solid.d.ts +0 -12
  212. package/.dist/vorma/tsx/solid/solid.d.ts.map +0 -1
  213. package/.dist/vorma/tsx/solid/solid.js +0 -247
  214. package/.dist/vorma/tsx/solid/solid.js.map +0 -1
  215. package/.dist/vorma/vite/vite.d.mts.map +0 -1
  216. package/.dist/vorma/vite/vite.mjs +0 -155
  217. package/.dist/vorma/vite/vite.mjs.map +0 -1
  218. package/kit/matcher/bench.txt +0 -24
  219. package/kit/matcher/find_best_match.ts +0 -189
  220. package/kit/matcher/find_nested_matches.ts +0 -366
  221. package/kit/matcher/register.ts +0 -318
  222. package/kit/matcher/utils.ts +0 -34
  223. package/kit/tsconfig.json +0 -3
  224. package/kit/url/url.ts +0 -205
  225. package/tsconfig.base.json +0 -17
  226. package/vorma/core/_index.ts +0 -66
  227. package/vorma/core/api_client.ts +0 -107
  228. package/vorma/core/create_client_core.ts +0 -2403
  229. package/vorma/core/css.ts +0 -83
  230. package/vorma/core/head.ts +0 -210
  231. package/vorma/core/tsconfig.json +0 -3
  232. package/vorma/core/types.ts +0 -330
  233. package/vorma/core/ui_adapter_core.ts +0 -251
  234. package/vorma/create/main.ts +0 -384
  235. package/vorma/create/package.json +0 -33
  236. package/vorma/create/tsconfig.json +0 -3
  237. package/vorma/tsx/preact/preact.tsx +0 -338
  238. package/vorma/tsx/preact/tsconfig.json +0 -7
  239. package/vorma/tsx/react/react.tsx +0 -363
  240. package/vorma/tsx/react/tsconfig.json +0 -6
  241. package/vorma/tsx/solid/solid.tsx +0 -379
  242. package/vorma/tsx/solid/tsconfig.json +0 -7
  243. package/vorma/vite/tsconfig.json +0 -3
  244. package/vorma/vite/vite.ts +0 -253
@@ -0,0 +1,739 @@
1
+ import { ReadonlySignal } from "@preact/signals";
2
+
3
+ //#region packages/vorma/core/types.d.ts
4
+ type ViewBase = {
5
+ params?: ReadonlyArray<string>;
6
+ parents?: ReadonlyArray<string>;
7
+ pattern: string;
8
+ __i?: unknown;
9
+ __o?: unknown;
10
+ };
11
+ type ResourceBase = {
12
+ method: string;
13
+ params?: ReadonlyArray<string>;
14
+ pattern: string;
15
+ kind?: ResourceKind;
16
+ __i?: unknown;
17
+ __o?: unknown;
18
+ };
19
+ type ResourceKind = "query" | "mutation";
20
+ type RevalidationResult = {
21
+ ok: true;
22
+ } | {
23
+ ok: false;
24
+ reason: "build_skew" | "max_retries_exhausted";
25
+ };
26
+ type RouteErrorState = {
27
+ idx: number;
28
+ error: unknown;
29
+ source: "server" | "clientLoader";
30
+ };
31
+ type RouteMatchState = {
32
+ pattern: string;
33
+ input: unknown;
34
+ viewData: unknown;
35
+ clientLoaderData: unknown;
36
+ };
37
+ type RouteState = {
38
+ href: string;
39
+ historyState: unknown;
40
+ clientBuildId: string;
41
+ params: Record<string, string>;
42
+ splatValues: string[];
43
+ matches: RouteMatchState[];
44
+ error: RouteErrorState | null;
45
+ };
46
+ type RouteUpdateReason = "boot" | "navigation" | "popstate" | "revalidation";
47
+ type BeforeRouteTransitionArgs = {
48
+ trigger: Exclude<RouteUpdateReason, "boot">;
49
+ signal: AbortSignal;
50
+ current: RouteState;
51
+ next: RouteState;
52
+ };
53
+ type BeforeRouteCommitFn = (args: BeforeRouteTransitionArgs) => void | Promise<void>;
54
+ type BeforeRouteYieldFn = (args: BeforeRouteTransitionArgs) => void | Promise<void>;
55
+ type ApiResultBase<T> = {
56
+ success: true;
57
+ data: T;
58
+ response: Response;
59
+ revalidationPromise: Promise<RevalidationResult>;
60
+ } | {
61
+ success: false;
62
+ error: string;
63
+ response?: Response;
64
+ revalidationPromise: Promise<RevalidationResult>;
65
+ };
66
+ type LinkAttributeMatchRules = {
67
+ skip?: false;
68
+ includeSearch?: boolean;
69
+ includeHash?: boolean;
70
+ } | {
71
+ skip: true;
72
+ includeSearch?: never;
73
+ includeHash?: never;
74
+ };
75
+ type LinkPropsBase = {
76
+ prefetch?: "intent" | "none";
77
+ prefetchDelayMs?: number;
78
+ attributeMatchRules?: LinkAttributeMatchRules;
79
+ visitOnPointerDown?: boolean;
80
+ replace?: boolean;
81
+ scrollToTop?: boolean;
82
+ skipWorkIndicator?: boolean;
83
+ };
84
+ type AppConfig = {
85
+ apiMountRoot: string;
86
+ __vorma_views: readonly ViewBase[];
87
+ __vorma_resources: readonly ResourceBase[];
88
+ };
89
+ type AppView<A extends AppConfig> = A["__vorma_views"][number];
90
+ type AppResource<A extends AppConfig> = A["__vorma_resources"][number];
91
+ type ViewByPattern<A extends AppConfig, P extends string> = Extract<AppView<A>, {
92
+ pattern: P;
93
+ }>;
94
+ type ResourceByMethodAndPattern<A extends AppConfig, M extends string, P extends string> = Extract<AppResource<A>, {
95
+ method: M;
96
+ pattern: P;
97
+ }>;
98
+ type ResolvedResourceKind<Act> = Act extends {
99
+ kind: infer T extends ResourceKind;
100
+ } ? T : Act extends {
101
+ method: "GET" | "HEAD";
102
+ } ? "query" : "mutation";
103
+ type IsSplat<P extends string> = P extends `${string}/*` ? true : false;
104
+ type ConditionalSplat<P extends string> = IsSplat<P> extends true ? {
105
+ splatValues: Array<string>;
106
+ } : {};
107
+ type ConditionalViewParams<A extends AppConfig, P extends string> = ViewByPattern<A, P> extends {
108
+ params: ReadonlyArray<infer Params>;
109
+ } ? Params extends string ? {
110
+ params: { [K in Params]: string };
111
+ } : {} : {};
112
+ type ConditionalResourceParams<Act> = Act extends {
113
+ params: ReadonlyArray<infer Params>;
114
+ } ? Params extends string ? {
115
+ params: { [K in Params]: string };
116
+ } : {} : {};
117
+ type ViewParamsRecord<A extends AppConfig, P extends string> = ViewByPattern<A, P> extends {
118
+ params: ReadonlyArray<infer Params>;
119
+ } ? Params extends string ? { [K in Params]: string } : Record<string, string> : Record<string, string>;
120
+ type ViewParents<A extends AppConfig, P extends string> = ViewByPattern<A, P> extends {
121
+ parents: ReadonlyArray<infer Parent>;
122
+ } ? Extract<Parent, ToViewPattern<A>> : never;
123
+ type ViewInputWithParentViews<A extends AppConfig, P extends ToViewPattern<A>> = (P | ViewParents<A, P> extends infer Pattern ? Pattern extends ToViewPattern<A> ? (input: ToViewInput<A, Pattern>) => void : never : never) extends ((input: infer Input) => void) ? Input : never;
124
+ type IsEmptyInput<T> = [T] extends [null | undefined] ? true : false;
125
+ type IsUnion<T, U = T> = [T] extends [never] ? false : T extends unknown ? [U] extends [T] ? false : true : false;
126
+ type ResourceInputField<Input> = IsEmptyInput<Input> extends true ? {
127
+ input?: Input;
128
+ } : {
129
+ input: Input;
130
+ };
131
+ type ResourceMethodsForPattern<A extends AppConfig, P extends string> = Extract<AppResource<A>, {
132
+ pattern: P;
133
+ }>["method"];
134
+ type ResourceMethodField<A extends AppConfig, P extends string, M extends string> = ResourceMethodsForPattern<A, P> extends "GET" ? IsUnion<ResourceMethodsForPattern<A, P>> extends true ? {
135
+ method: M;
136
+ } : {
137
+ method?: M;
138
+ } : {
139
+ method: M;
140
+ };
141
+ type PermissiveViewPattern<A extends AppConfig, P extends ToViewPattern<A>> = P extends `${infer Prefix}/_index` ? P | (Prefix extends "" ? "/" : Prefix) : P;
142
+ type ToViewPattern<A extends AppConfig> = AppView<A>["pattern"];
143
+ type ResourceMethod<A extends AppConfig> = AppResource<A>["method"];
144
+ type ResourcePattern<A extends AppConfig, M extends ResourceMethod<A> = ResourceMethod<A>> = Extract<AppResource<A>, {
145
+ method: M;
146
+ }>["pattern"];
147
+ type ResourcesByKind<A extends AppConfig, T extends ResourceKind> = AppResource<A> extends infer Route ? Route extends unknown ? ResolvedResourceKind<Route> extends T ? Route : never : never : never;
148
+ type ResourceMethodByKind<A extends AppConfig, T extends ResourceKind> = ResourcesByKind<A, T> extends infer Route ? Route extends {
149
+ method: infer M extends string;
150
+ } ? M : never : never;
151
+ type ResourcePatternByKind<A extends AppConfig, T extends ResourceKind, M extends ResourceMethodByKind<A, T> = ResourceMethodByKind<A, T>> = Extract<ResourcesByKind<A, T>, {
152
+ method: M;
153
+ }> extends infer Route ? Route extends {
154
+ pattern: infer P extends string;
155
+ } ? P : never : never;
156
+ type ResourceByKindMethodAndPattern<A extends AppConfig, T extends ResourceKind, M extends ResourceMethodByKind<A, T>, P extends ResourcePatternByKind<A, T, M>> = Extract<ResourcesByKind<A, T>, {
157
+ method: M;
158
+ pattern: P;
159
+ }>;
160
+ type ToQueryMethod<A extends AppConfig> = ResourceMethodByKind<A, "query">;
161
+ type ToQueryPattern<A extends AppConfig, M extends ToQueryMethod<A> = ToQueryMethod<A>> = ResourcePatternByKind<A, "query", M>;
162
+ type ToMutationMethod<A extends AppConfig> = ResourceMethodByKind<A, "mutation">;
163
+ type ToMutationPattern<A extends AppConfig, M extends ToMutationMethod<A> = ToMutationMethod<A>> = ResourcePatternByKind<A, "mutation", M>;
164
+ type ToViewOutput<A extends AppConfig, P extends ToViewPattern<A>> = ViewByPattern<A, P> extends {
165
+ __o: infer O;
166
+ } ? O : never;
167
+ type ToViewInput<A extends AppConfig, P extends ToViewPattern<A>> = ViewByPattern<A, P> extends {
168
+ __i: infer I;
169
+ } ? I : never;
170
+ type ToQueryInput<A extends AppConfig, M extends ToQueryMethod<A>, P extends ToQueryPattern<A, M>> = ResourceByKindMethodAndPattern<A, "query", M, P> extends {
171
+ __i: infer I;
172
+ } ? I : never;
173
+ type ToQueryOutput<A extends AppConfig, M extends ToQueryMethod<A>, P extends ToQueryPattern<A, M>> = ResourceByKindMethodAndPattern<A, "query", M, P> extends {
174
+ __o: infer O;
175
+ } ? O : never;
176
+ type ToMutationInput<A extends AppConfig, M extends ToMutationMethod<A>, P extends ToMutationPattern<A, M>> = ResourceByKindMethodAndPattern<A, "mutation", M, P> extends {
177
+ __i: infer I;
178
+ } ? I : never;
179
+ type ToMutationOutput<A extends AppConfig, M extends ToMutationMethod<A>, P extends ToMutationPattern<A, M>> = ResourceByKindMethodAndPattern<A, "mutation", M, P> extends {
180
+ __o: infer O;
181
+ } ? O : never;
182
+ type ToRouteDestination<A extends AppConfig, P extends ToViewPattern<A>> = {
183
+ href?: never;
184
+ pattern: PermissiveViewPattern<A, P>;
185
+ search?: ViewInputWithParentViews<A, P>;
186
+ hash?: string;
187
+ } & ConditionalViewParams<A, P> & ConditionalSplat<P>;
188
+ type ToNavigationTarget<A extends AppConfig, P extends ToViewPattern<A>> = {
189
+ href: string;
190
+ pattern?: never;
191
+ params?: never;
192
+ splatValues?: never;
193
+ search?: never;
194
+ hash?: never;
195
+ } | ToRouteDestination<A, P>;
196
+ type ToNavigateArgs<A extends AppConfig, P extends ToViewPattern<A>> = ToNavigationTarget<A, P> & {
197
+ replace?: boolean;
198
+ scrollToTop?: boolean;
199
+ state?: unknown;
200
+ skipWorkIndicator?: boolean;
201
+ };
202
+ type ToRouteSyncArgs<A extends AppConfig, P extends ToViewPattern<A>> = ToRouteDestination<A, P> & {
203
+ enabled?: boolean;
204
+ debounceMs?: number;
205
+ replace?: boolean;
206
+ scrollToTop?: boolean;
207
+ };
208
+ type ApiClientArgsForResource<A extends AppConfig, Act> = Act extends {
209
+ method: infer M;
210
+ pattern: infer P;
211
+ __i?: infer Input;
212
+ } ? M extends ResourceMethod<A> ? P extends ResourcePattern<A, M> ? Omit<RequestInit, "body" | "method"> & {
213
+ dedupeKey?: string;
214
+ pattern: P;
215
+ revalidate?: boolean;
216
+ skipWorkIndicator?: boolean;
217
+ } & ResourceMethodField<A, P, M> & ConditionalResourceParams<Act> & ConditionalSplat<P> & ResourceInputField<Input> : never : never : never;
218
+ type ApiClientArgs<A extends AppConfig> = AppResource<A> extends infer Act ? Act extends unknown ? ApiClientArgsForResource<A, Act> : never : never;
219
+ type ApiClientArgsByKind<A extends AppConfig, T extends ResourceKind> = AppResource<A> extends infer Act ? Act extends unknown ? ResolvedResourceKind<Act> extends T ? ApiClientArgsForResource<A, Act> : never : never : never;
220
+ type ApiClientOutput<A extends AppConfig, Args extends ApiClientArgs<A>> = Args extends {
221
+ method: infer M;
222
+ pattern: infer P;
223
+ } ? M extends ResourceMethod<A> ? P extends ResourcePattern<A, M> ? ResourceByMethodAndPattern<A, M, P> extends {
224
+ __o: infer O;
225
+ } ? O : never : never : never : Args extends {
226
+ pattern: infer P;
227
+ } ? "GET" extends ResourceMethod<A> ? P extends ResourcePattern<A, "GET"> ? ResourceByMethodAndPattern<A, "GET", P> extends {
228
+ __o: infer O;
229
+ } ? O : never : never : never : never;
230
+ type ToQueryArgs<A extends AppConfig> = ApiClientArgsByKind<A, "query">;
231
+ type ToQueryError<A extends AppConfig, Args extends ToQueryArgs<A>> = QueryError<ApiClientOutput<A, Args>>;
232
+ type ToMutationArgs<A extends AppConfig> = ApiClientArgsByKind<A, "mutation">;
233
+ type ToMutationError<A extends AppConfig, Args extends ToMutationArgs<A>> = MutationError<ApiClientOutput<A, Args>>;
234
+ type QueryResult<T> = ApiResultBase<T>;
235
+ type MutationResult<T> = ApiResultBase<T>;
236
+ type ToViewComponentProps<A extends AppConfig, P extends ToViewPattern<A>, ClientLoaderData = unknown> = {
237
+ idx: number;
238
+ Outlet: (local?: Record<string, unknown>) => any;
239
+ __phantom_pattern?: P;
240
+ __phantom_client_loader_data?: ClientLoaderData;
241
+ };
242
+ type ClientLoaderKnownMatch = {
243
+ pattern: string;
244
+ input: unknown;
245
+ };
246
+ type ClientLoaderServerState<A extends AppConfig, P extends ToViewPattern<A>> = {
247
+ clientBuildId: string;
248
+ matches: Array<{
249
+ pattern: string;
250
+ input: unknown;
251
+ viewData: unknown;
252
+ }>;
253
+ outermostServerError: null | {
254
+ idx: number;
255
+ error: unknown;
256
+ };
257
+ viewData: ToViewOutput<A, P>;
258
+ };
259
+ type ToClientLoaderArgs<A extends AppConfig, P extends ToViewPattern<A>> = {
260
+ trigger: "boot" | "navigation" | "revalidation" | "prefetch";
261
+ href: string;
262
+ historyState: unknown;
263
+ pattern: P;
264
+ params: ViewParamsRecord<A, P>;
265
+ splatValues: string[];
266
+ input: ToViewInput<A, P>;
267
+ knownMatches: ClientLoaderKnownMatch[];
268
+ serverPromise: Promise<ClientLoaderServerState<A, P>>;
269
+ signal: AbortSignal;
270
+ };
271
+ type ToDefineViewArgs<A extends AppConfig, P extends ToViewPattern<A>, T = any, Element = unknown> = {
272
+ pattern: P;
273
+ component: (props: ToViewComponentProps<A, P, T>) => Element;
274
+ errorBoundary?: (props: {
275
+ error: unknown;
276
+ }) => Element;
277
+ clientLoader?: (args: ToClientLoaderArgs<A, P>) => Promise<T>;
278
+ beforeRouteCommit?: BeforeRouteCommitFn;
279
+ beforeRouteYield?: BeforeRouteYieldFn;
280
+ runClientLoaderOnHmr?: boolean;
281
+ };
282
+ type ToLinkProps<A extends AppConfig, P extends ToViewPattern<A>> = LinkPropsBase & ToNavigationTarget<A, P> & {
283
+ state?: unknown;
284
+ };
285
+ type ToApiDecoratorContext<A extends AppConfig> = ApiClientArgs<A> extends infer Args ? Args extends ApiClientArgs<A> ? {
286
+ input?: Args extends {
287
+ input: infer Input;
288
+ } ? Input : Args extends {
289
+ input?: infer Input;
290
+ } ? Input : never;
291
+ method: Args extends {
292
+ method: infer M extends string;
293
+ } ? M : "GET";
294
+ pattern: Args["pattern"];
295
+ requestInit: Omit<RequestInit, "body" | "method">;
296
+ } : never : never;
297
+ type ToApiDecorator<A extends AppConfig> = (context: ToApiDecoratorContext<A>) => Omit<RequestInit, "method" | "body"> | undefined | Promise<Omit<RequestInit, "method" | "body"> | undefined>;
298
+ type ToApiClient<A extends AppConfig> = {
299
+ query: <Args extends ToQueryArgs<A>>(args: Args) => Promise<QueryResult<ApiClientOutput<A, Args>>>;
300
+ queryOrThrow: <Args extends ToQueryArgs<A>>(args: Args) => Promise<ApiClientOutput<A, Args>>;
301
+ mutate: <Args extends ToMutationArgs<A>>(args: Args) => Promise<MutationResult<ApiClientOutput<A, Args>>>;
302
+ mutateOrThrow: <Args extends ToMutationArgs<A>>(args: Args) => Promise<ApiClientOutput<A, Args>>;
303
+ toIdentityArray: <Args extends ApiClientArgs<A>>(args: Args) => unknown[];
304
+ };
305
+ //#endregion
306
+ //#region packages/vorma/core/api_client.d.ts
307
+ type SubmitFn = <T>(url: string | URL, request_init?: RequestInit, options?: {
308
+ resourceKind?: ResourceKind;
309
+ dedupeKey?: string;
310
+ revalidate?: boolean;
311
+ skipWorkIndicator?: boolean;
312
+ }) => Promise<QueryResult<T> | MutationResult<T>>;
313
+ declare class ApiErrorBase<T = never> extends Error {
314
+ result: Extract<QueryResult<T> | MutationResult<T>, {
315
+ success: false;
316
+ }>;
317
+ constructor(result: Extract<QueryResult<T> | MutationResult<T>, {
318
+ success: false;
319
+ }>);
320
+ }
321
+ declare class QueryError<T = never> extends ApiErrorBase<T> {
322
+ constructor(result: Extract<QueryResult<T>, {
323
+ success: false;
324
+ }>);
325
+ }
326
+ declare class MutationError<T = never> extends ApiErrorBase<T> {
327
+ constructor(result: Extract<MutationResult<T>, {
328
+ success: false;
329
+ }>);
330
+ }
331
+ declare function create_typed_api_client<A extends AppConfig>(api_mount_root: string, submit_fn: SubmitFn, decorator?: ToApiDecorator<A>): ToApiClient<A>;
332
+ //#endregion
333
+ //#region packages/vorma/core/client_wasm/matcher.d.ts
334
+ type ClientMatcherNestedMatch = {
335
+ params: Record<string, string>;
336
+ splat_values: string[];
337
+ patterns: string[];
338
+ };
339
+ type ClientMatcher = {
340
+ register_pattern: (pattern: string) => void;
341
+ find_nested_matches: (path: string) => ClientMatcherNestedMatch | null;
342
+ free: () => void;
343
+ };
344
+ //#endregion
345
+ //#region packages/vorma/core/constants.d.ts
346
+ declare const DATA_SCRIPT_ID = "vorma-data-json";
347
+ declare const BUILD_ID_HEADER = "X-Vorma-Client-Build-Id";
348
+ declare const LINK_ACTIVE_EXACT_ATTR = "data-vorma-active-exact";
349
+ declare const LINK_ACTIVE_ANCESTOR_ATTR = "data-vorma-active-ancestor";
350
+ declare const LINK_PENDING_EXACT_ATTR = "data-vorma-pending-exact";
351
+ declare const LINK_PENDING_ANCESTOR_ATTR = "data-vorma-pending-ancestor";
352
+ //#endregion
353
+ //#region packages/vorma/.dist/kit/result/result.d.ts
354
+ //#region packages/vorma/kit/result/result.d.ts
355
+ type Result<T> = {
356
+ ok: true;
357
+ val: T;
358
+ } | {
359
+ ok: false;
360
+ err: string;
361
+ };
362
+ //#endregion
363
+ //#region packages/vorma/core/create_client_core.d.ts
364
+ type ScrollState = {
365
+ x: number;
366
+ y: number;
367
+ } | {
368
+ hash: string;
369
+ };
370
+ type ScrollIntent = {
371
+ scroll: ScrollState;
372
+ target_entry_id: string;
373
+ };
374
+ type RouteRenderEntry = {
375
+ pattern: string;
376
+ input: unknown;
377
+ module_url: string;
378
+ module: Record<string, unknown>;
379
+ view_data: unknown;
380
+ client_loader_data: unknown;
381
+ };
382
+ type RouteRenderState = {
383
+ entries: RouteRenderEntry[];
384
+ error: RouteErrorState | null;
385
+ params: Record<string, string>;
386
+ splat_values: string[];
387
+ client_build_id: string;
388
+ history_state: unknown;
389
+ };
390
+ type WorkState = {
391
+ navigation: null | {
392
+ href: string;
393
+ replace: boolean;
394
+ source: "navigate" | "popstate" | "redirect";
395
+ };
396
+ revalidation: null | {
397
+ status: "debouncing" | "running" | "retrying";
398
+ attempt: number;
399
+ };
400
+ prefetch: null | {
401
+ href: string;
402
+ };
403
+ apiRequests: Array<{
404
+ key: string;
405
+ method: string;
406
+ href: string;
407
+ }>;
408
+ };
409
+ type RevalidationReason = "manual" | "retry" | "apiRequest" | "windowFocus";
410
+ type BuildSkewDetectedEvent = {
411
+ activeClientBuildId: string;
412
+ serverBuildId: string;
413
+ triggeringResponse: {
414
+ kind: "route";
415
+ trigger: "navigation" | "popstate" | "prefetch";
416
+ requestedHref: string;
417
+ status: number;
418
+ ok: boolean;
419
+ } | {
420
+ kind: "route";
421
+ trigger: "revalidation";
422
+ revalidationReason: RevalidationReason;
423
+ requestedHref: string;
424
+ status: number;
425
+ ok: boolean;
426
+ } | {
427
+ kind: "resource";
428
+ resourceKind: ResourceKind;
429
+ requestedHref: string;
430
+ method: string;
431
+ status: number;
432
+ ok: boolean;
433
+ };
434
+ currentRouteState: RouteState;
435
+ currentWorkState: WorkState;
436
+ };
437
+ type WorkIndicator = {
438
+ track: <T>(promise: PromiseLike<T>) => Promise<T>;
439
+ isActive: () => boolean;
440
+ };
441
+ type WorkIndicatorOptions = {
442
+ start: () => void;
443
+ stop: () => void;
444
+ startDelayMs?: number;
445
+ stopDelayMs?: number;
446
+ skipNavigations?: boolean;
447
+ skipApiRequests?: boolean;
448
+ skipRevalidations?: boolean;
449
+ };
450
+ type ClientOptions = {
451
+ render?: () => void | Promise<void>;
452
+ workIndicator?: WorkIndicatorOptions;
453
+ revalidateOnWindowFocus?: boolean | {
454
+ staleTimeMs: number;
455
+ skipWorkIndicator?: boolean;
456
+ };
457
+ defaultErrorBoundary?: (props: {
458
+ error: unknown;
459
+ }) => any;
460
+ useViewTransitions?: boolean;
461
+ onRouteUpdate?: (route: RouteState, previousRoute: RouteState | null, reason: RouteUpdateReason) => void;
462
+ onWorkUpdate?: (work: WorkState) => void;
463
+ onBuildSkewDetected?: (event: BuildSkewDetectedEvent) => void;
464
+ };
465
+ type ClientCommit = {
466
+ route_render?: {
467
+ state: RouteRenderState;
468
+ scroll_intent?: ScrollIntent;
469
+ };
470
+ route_update?: {
471
+ previous_route: RouteState | null;
472
+ reason: RouteUpdateReason;
473
+ route: RouteState;
474
+ };
475
+ work?: WorkState;
476
+ };
477
+ type CommitFn = (commit: ClientCommit) => void;
478
+ type ViewDefinition = {
479
+ pattern: string;
480
+ component: (props: any) => any;
481
+ error_boundary?: (props: {
482
+ error: unknown;
483
+ }) => any;
484
+ client_loader?: ClientLoaderFn;
485
+ before_route_commit?: BeforeRouteCommitFn;
486
+ before_route_yield?: BeforeRouteYieldFn;
487
+ };
488
+ type ClientLoaderFn = (args: {
489
+ trigger: "boot" | "navigation" | "revalidation" | "prefetch";
490
+ href: string;
491
+ historyState: unknown;
492
+ pattern: string;
493
+ params: Record<string, string>;
494
+ splatValues: string[];
495
+ input: unknown;
496
+ knownMatches: ClientLoaderKnownMatch$1[];
497
+ serverPromise: Promise<ClientLoaderServerState$1>;
498
+ signal: AbortSignal;
499
+ }) => Promise<unknown>;
500
+ type ClientLoaderKnownMatch$1 = {
501
+ pattern: string;
502
+ input: unknown;
503
+ };
504
+ type ClientLoaderServerState$1 = {
505
+ clientBuildId: string;
506
+ matches: Array<{
507
+ pattern: string;
508
+ input: unknown;
509
+ viewData: unknown;
510
+ }>;
511
+ outermostServerError: null | {
512
+ idx: number;
513
+ error: unknown;
514
+ };
515
+ viewData: unknown;
516
+ };
517
+ type ApiResult<T> = {
518
+ success: true;
519
+ data: T;
520
+ response: Response;
521
+ revalidationPromise: Promise<RevalidationResult>;
522
+ } | {
523
+ success: false;
524
+ error: string;
525
+ response?: Response;
526
+ revalidationPromise: Promise<RevalidationResult>;
527
+ };
528
+ type ClientCore = {
529
+ boot: (options: ClientOptions) => Promise<Result<void>>;
530
+ workIndicator: WorkIndicator;
531
+ navigate: (href: string | URL, options?: {
532
+ replace?: boolean;
533
+ scrollToTop?: boolean;
534
+ state?: unknown;
535
+ skipWorkIndicator?: boolean;
536
+ }) => Promise<{
537
+ didNavigate: boolean;
538
+ }>;
539
+ revalidate: () => Promise<RevalidationResult>;
540
+ submit_inner: <T = unknown>(url: string | URL, requestInit?: RequestInit, options?: {
541
+ resourceKind?: ResourceKind;
542
+ dedupeKey?: string;
543
+ revalidate?: boolean;
544
+ skipWorkIndicator?: boolean;
545
+ }) => Promise<ApiResult<T>>;
546
+ getRouteState: () => RouteState;
547
+ getWorkState: () => WorkState;
548
+ getClientBuildId: () => string;
549
+ getRootEl: () => HTMLElement;
550
+ defineView: <T = any>(input: {
551
+ pattern: string;
552
+ component: (props: any) => any;
553
+ errorBoundary?: (props: {
554
+ error: unknown;
555
+ }) => any;
556
+ clientLoader?: (props: any) => Promise<T>;
557
+ beforeRouteCommit?: BeforeRouteCommitFn;
558
+ beforeRouteYield?: BeforeRouteYieldFn;
559
+ runClientLoaderOnHmr?: boolean;
560
+ }) => ViewDefinition & {
561
+ __phantom_client_loader_data?: T;
562
+ };
563
+ start_prefetch: (href: string) => void;
564
+ stop_prefetch: (href: string) => void;
565
+ save_current_scroll: () => void;
566
+ get_default_error_boundary: () => ((props: {
567
+ error: unknown;
568
+ }) => any) | undefined;
569
+ };
570
+ type TestOptions = {
571
+ reload?: () => void;
572
+ hard_redirect?: (url: string) => void;
573
+ scroll_to?: (x: number, y: number) => void;
574
+ };
575
+ declare function apply_scroll(scroll: ScrollState | undefined, test_options?: TestOptions): void;
576
+ declare function make_entry_id(idx: number, pattern: string): string;
577
+ declare function create_client_core(_: Omit<AppConfig, "__vorma_views" | "__vorma_resources">, commit: CommitFn, test_options?: TestOptions): Result<ClientCore>;
578
+ declare global {
579
+ interface Window {
580
+ __vorma_hmr_view_update?: (raw_url: string, mod: Record<string, unknown>) => Promise<void>;
581
+ }
582
+ }
583
+ //#endregion
584
+ //#region packages/vorma/core/make_link_props.d.ts
585
+ type LinkRouteState = {
586
+ href: string;
587
+ matched_patterns: string[];
588
+ };
589
+ type LinkWorkState = {
590
+ navigation_href: string | null;
591
+ };
592
+ type LinkPropsResult = {
593
+ is_external: boolean;
594
+ anchor_props: Record<string, unknown>;
595
+ onClick?: (e: unknown) => void;
596
+ onPointerDown?: (e: unknown) => void;
597
+ onPointerEnter?: (e: unknown) => void;
598
+ onFocus?: (e: unknown) => void;
599
+ onPointerLeave?: (e: unknown) => void;
600
+ onBlur?: (e: unknown) => void;
601
+ onTouchCancel?: (e: unknown) => void;
602
+ };
603
+ type LinkNavFns = {
604
+ navigate: (args: {
605
+ href: string;
606
+ replace?: boolean;
607
+ scrollToTop?: boolean;
608
+ skipWorkIndicator?: boolean;
609
+ state?: unknown;
610
+ }) => Promise<{
611
+ didNavigate: boolean;
612
+ }>;
613
+ start_prefetch: (href: string) => void;
614
+ stop_prefetch: (href: string) => void;
615
+ save_current_scroll: () => void;
616
+ register_link_pattern: (pattern: string) => void;
617
+ get_link_state_version: () => number;
618
+ subscribe_link_state: (listener: () => void) => () => void;
619
+ get_link_attribute_state: (href: string, match_rules: LinkPropsBase["attributeMatchRules"], route_state: LinkRouteState | null, work_state: LinkWorkState) => {
620
+ active_exact: boolean;
621
+ active_ancestor: boolean;
622
+ pending_exact: boolean;
623
+ pending_ancestor: boolean;
624
+ };
625
+ };
626
+ declare function select_link_route_state(route: RouteState): LinkRouteState;
627
+ declare function select_link_work_state(work: WorkState): LinkWorkState;
628
+ declare function make_link_props(props: Record<string, unknown>, nav: LinkNavFns, route_state?: LinkRouteState | null, work_state?: LinkWorkState): LinkPropsResult;
629
+ //#endregion
630
+ //#region packages/vorma/core/resolve_outlet_slot.d.ts
631
+ type OutletSlot = {
632
+ kind: "component";
633
+ component: (props: any) => any;
634
+ } | {
635
+ kind: "error";
636
+ error: unknown;
637
+ boundary: (props: {
638
+ error: unknown;
639
+ }) => any;
640
+ } | {
641
+ kind: "pass_through";
642
+ } | {
643
+ kind: "empty";
644
+ };
645
+ declare function resolve_outlet_slot(entries: RouteRenderEntry[], error: RouteErrorState | null, idx: number, default_error_boundary: ((props: {
646
+ error: unknown;
647
+ }) => any) | undefined): OutletSlot;
648
+ declare function get_entry_key(entry: RouteRenderEntry): string;
649
+ //#endregion
650
+ //#region packages/vorma/core/ui_adapter_core.d.ts
651
+ type ClientMatcherFactory = () => Promise<ClientMatcher>;
652
+ type DecomposedState = {
653
+ entries: RouteRenderEntry[];
654
+ error: RouteErrorState | null;
655
+ views_data: unknown[];
656
+ client_loaders_data: unknown[];
657
+ matched_patterns: string[];
658
+ import_urls: string[];
659
+ entry_keys: string[];
660
+ params: Record<string, string>;
661
+ splat_values: string[];
662
+ client_build_id: string;
663
+ history_state: unknown;
664
+ };
665
+ type DecomposedCommit = {
666
+ link_state_version?: number;
667
+ route?: RouteState;
668
+ route_reason?: RouteUpdateReason;
669
+ scroll_intent?: ScrollIntent;
670
+ state?: DecomposedState;
671
+ work?: WorkState;
672
+ };
673
+ type DecomposedCommitFn = (commit: DecomposedCommit) => void;
674
+ declare function set_client_matcher_factory_for_test(factory: ClientMatcherFactory | null): () => void;
675
+ type AdapterRenderArgs<App> = {
676
+ RootOutlet: App;
677
+ rootEl: HTMLElement;
678
+ };
679
+ type AdapterClientOptions<App> = Omit<ClientOptions, "render"> & {
680
+ render?: (args: AdapterRenderArgs<App>) => void | Promise<void>;
681
+ };
682
+ type AdapterBase<A extends AppConfig> = {
683
+ core: ClientCore;
684
+ nav_fns: LinkNavFns;
685
+ passthrough: Pick<ClientCore, "revalidate" | "getRouteState" | "getWorkState" | "workIndicator"> & {
686
+ navigate: <P extends ToViewPattern<A>>(args: ToNavigateArgs<A, P>) => Promise<{
687
+ didNavigate: boolean;
688
+ }>;
689
+ prefetch: <P extends ToViewPattern<A>>(target: ToNavigationTarget<A, P>) => void;
690
+ cancelPrefetch: <P extends ToViewPattern<A>>(target: ToNavigationTarget<A, P>) => void;
691
+ toHref: <P extends ToViewPattern<A>>(destination: ToRouteDestination<A, P>) => string;
692
+ apiClient: ToApiClient<A>;
693
+ };
694
+ };
695
+ declare function create_adapter_base<A extends AppConfig>(app_config: A, on_commit: DecomposedCommitFn, api_decorator?: ToApiDecorator<A>): Result<AdapterBase<A>>;
696
+ type HookReturn<T, Mode extends "value" | "accessor" | "signal"> = Mode extends "accessor" ? () => T : Mode extends "signal" ? ReadonlySignal<T> : T;
697
+ type StateSelector<State, Selected> = (state: State) => Selected;
698
+ type VormaClient<A extends AppConfig, Element, AnchorProps extends object, HookReturnMode extends "value" | "accessor" | "signal" = "value"> = AdapterBase<A>["passthrough"] & {
699
+ boot: () => Promise<Result<void>>;
700
+ defineView: <P extends ToViewPattern<A>, T = any>(input: ToDefineViewArgs<A, P, T, Element>) => ViewDefinition;
701
+ RootOutlet: (props: {
702
+ idx?: number;
703
+ } & Record<string, unknown>) => Element | null;
704
+ Link: <P extends ToViewPattern<A>>(props: Omit<AnchorProps, "href"> & ToLinkProps<A, P>) => Element;
705
+ useRouteSync: <P extends ToViewPattern<A>>(args: ToRouteSyncArgs<A, P>) => void;
706
+ useRouteState: {
707
+ (): HookReturn<RouteState, HookReturnMode>;
708
+ <T>(selector: StateSelector<RouteState, T>): HookReturn<T, HookReturnMode>;
709
+ };
710
+ useWorkState: {
711
+ (): HookReturn<WorkState, HookReturnMode>;
712
+ <T>(selector: StateSelector<WorkState, T>): HookReturn<T, HookReturnMode>;
713
+ };
714
+ useViewData: <P extends ToViewPattern<A>>(args: ToViewComponentProps<A, P>) => HookReturn<ToViewOutput<A, P>, HookReturnMode>;
715
+ usePatternViewData: <P extends ToViewPattern<A>>(pattern: P) => HookReturn<ToViewOutput<A, P> | undefined, HookReturnMode>;
716
+ useClientLoaderData: <P extends ToViewPattern<A>, T>(args: ToViewComponentProps<A, P, T>) => HookReturn<T, HookReturnMode>;
717
+ usePatternClientLoaderData: <T>(pattern: ToViewPattern<A>) => HookReturn<T | undefined, HookReturnMode>;
718
+ };
719
+ //#endregion
720
+ //#region packages/vorma/core/url.d.ts
721
+ declare function resolve_path(type: "view" | "resource", pattern: string, params?: Record<string, string>, splat_values?: string[]): string;
722
+ declare function to_typed_href(pattern: string, params?: Record<string, string>, splat_values?: string[], search?: unknown, hash?: string): string;
723
+ declare function build_resource_url(api_mount_root: string, pattern: string, params?: Record<string, string>, splat_values?: string[], input?: unknown): URL;
724
+ declare function create_typed_to_href<A extends AppConfig>(): <P extends ToViewPattern<A>>(destination: ToRouteDestination<A, P>) => string;
725
+ declare function resolve_body(input: unknown): BodyInit | null | undefined;
726
+ declare function create_typed_navigate<A extends AppConfig>(navigate_fn: (href: string | URL, options?: {
727
+ replace?: boolean;
728
+ scrollToTop?: boolean;
729
+ state?: unknown;
730
+ skipWorkIndicator?: boolean;
731
+ }) => Promise<{
732
+ didNavigate: boolean;
733
+ }>): <P extends ToViewPattern<A>>(args: ToNavigateArgs<A, P>) => Promise<{
734
+ didNavigate: boolean;
735
+ }>;
736
+ declare function create_typed_prefetch<A extends AppConfig>(prefetch_fn: (href: string) => void): <P extends ToViewPattern<A>>(target: ToNavigationTarget<A, P>) => void;
737
+ //#endregion
738
+ export { type AdapterClientOptions, type AdapterRenderArgs, type AppConfig, BUILD_ID_HEADER, type BeforeRouteCommitFn, type BeforeRouteTransitionArgs, type BeforeRouteYieldFn, type BuildSkewDetectedEvent, type ClientCommit, type ClientLoaderKnownMatch, type ClientLoaderServerState, type ClientMatcher, type ClientMatcherNestedMatch, type ClientOptions, type CommitFn, DATA_SCRIPT_ID, type DecomposedCommit, type DecomposedCommitFn, type DecomposedState, LINK_ACTIVE_ANCESTOR_ATTR, LINK_ACTIVE_EXACT_ATTR, LINK_PENDING_ANCESTOR_ATTR, LINK_PENDING_EXACT_ATTR, type LinkNavFns, type LinkPropsResult, type LinkRouteState, type LinkWorkState, MutationError, type MutationResult, type OutletSlot, QueryError, type QueryResult, type RevalidationReason, type RevalidationResult, type RouteErrorState, type RouteMatchState, type RouteRenderEntry, type RouteRenderState, type RouteState, type RouteUpdateReason, type ScrollIntent, type ScrollState, type ToApiClient, type ToApiDecorator, type ToApiDecoratorContext, type ToClientLoaderArgs, type ToDefineViewArgs, type ToLinkProps, type ToMutationArgs, type ToMutationError, type ToMutationInput, type ToMutationMethod, type ToMutationOutput, type ToMutationPattern, type ToNavigateArgs, type ToNavigationTarget, type ToQueryArgs, type ToQueryError, type ToQueryInput, type ToQueryMethod, type ToQueryOutput, type ToQueryPattern, type ToRouteDestination, type ToRouteSyncArgs, type ToViewComponentProps, type ToViewInput, type ToViewOutput, type ToViewPattern, type ViewDefinition, type VormaClient, type WorkIndicator, type WorkIndicatorOptions, type WorkState, apply_scroll, build_resource_url, create_adapter_base, create_client_core, create_typed_api_client, create_typed_navigate, create_typed_prefetch, create_typed_to_href, get_entry_key, make_entry_id, make_link_props, resolve_body, resolve_outlet_slot, resolve_path, select_link_route_state, select_link_work_state, set_client_matcher_factory_for_test, to_typed_href };
739
+ //# sourceMappingURL=_index.d.ts.map