@mionjs/client 0.8.10 → 0.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/.dist/cjs/index.cjs +1 -2
  2. package/.dist/cjs/index.d.ts +5 -2
  3. package/.dist/cjs/middlewares.cjs +1 -0
  4. package/.dist/cjs/middlewares.d.ts +3 -0
  5. package/.dist/cjs/src/batch.cjs +3 -0
  6. package/.dist/cjs/src/batch.cjs.map +1 -0
  7. package/.dist/cjs/src/batch.d.ts +7 -0
  8. package/.dist/cjs/src/callContext.cjs +3 -0
  9. package/.dist/cjs/src/callContext.cjs.map +1 -0
  10. package/.dist/cjs/src/callContext.d.ts +6 -0
  11. package/.dist/cjs/src/client.cjs +3 -2
  12. package/.dist/cjs/src/client.cjs.map +1 -1
  13. package/.dist/cjs/src/client.d.ts +8 -13
  14. package/.dist/cjs/src/constants.cjs +3 -2
  15. package/.dist/cjs/src/constants.cjs.map +1 -1
  16. package/.dist/cjs/src/constants.d.ts +7 -3
  17. package/.dist/cjs/src/dispatch.cjs +3 -0
  18. package/.dist/cjs/src/dispatch.cjs.map +1 -0
  19. package/.dist/cjs/src/dispatch.d.ts +8 -0
  20. package/.dist/cjs/src/lib/apiBuildVersion.cjs +3 -0
  21. package/.dist/cjs/src/lib/apiBuildVersion.cjs.map +1 -0
  22. package/.dist/cjs/src/lib/apiBuildVersion.d.ts +10 -0
  23. package/.dist/cjs/src/lib/apiVersionRecovery.cjs +3 -0
  24. package/.dist/cjs/src/lib/apiVersionRecovery.cjs.map +1 -0
  25. package/.dist/cjs/src/lib/apiVersionRecovery.d.ts +7 -0
  26. package/.dist/cjs/src/lib/bundledApi.cjs +3 -0
  27. package/.dist/cjs/src/lib/bundledApi.cjs.map +1 -0
  28. package/.dist/cjs/src/lib/bundledApi.d.ts +12 -0
  29. package/.dist/cjs/src/lib/clientMethodsMetadata.cjs +3 -2
  30. package/.dist/cjs/src/lib/clientMethodsMetadata.cjs.map +1 -1
  31. package/.dist/cjs/src/lib/clientMethodsMetadata.d.ts +10 -10
  32. package/.dist/cjs/src/lib/clientResponse.cjs +3 -0
  33. package/.dist/cjs/src/lib/clientResponse.cjs.map +1 -0
  34. package/.dist/cjs/src/lib/clientResponse.d.ts +9 -0
  35. package/.dist/cjs/src/lib/fetchRemoteMethodsMetadata.cjs +3 -2
  36. package/.dist/cjs/src/lib/fetchRemoteMethodsMetadata.cjs.map +1 -1
  37. package/.dist/cjs/src/lib/fetchRemoteMethodsMetadata.d.ts +1 -1
  38. package/.dist/cjs/src/lib/handlersRegistry.cjs +3 -2
  39. package/.dist/cjs/src/lib/handlersRegistry.cjs.map +1 -1
  40. package/.dist/cjs/src/lib/handlersRegistry.d.ts +18 -9
  41. package/.dist/cjs/src/lib/headers.cjs +3 -0
  42. package/.dist/cjs/src/lib/headers.cjs.map +1 -0
  43. package/.dist/cjs/src/lib/headers.d.ts +7 -0
  44. package/.dist/cjs/src/lib/metadataEviction.cjs +3 -0
  45. package/.dist/cjs/src/lib/metadataEviction.cjs.map +1 -0
  46. package/.dist/cjs/src/lib/metadataEviction.d.ts +9 -0
  47. package/.dist/cjs/src/lib/metadataFetcher.cjs +3 -0
  48. package/.dist/cjs/src/lib/metadataFetcher.cjs.map +1 -0
  49. package/.dist/cjs/src/lib/metadataFetcher.d.ts +29 -0
  50. package/.dist/cjs/src/lib/metadataFromServer.cjs +1 -0
  51. package/.dist/cjs/src/lib/metadataFromServer.d.ts +4 -0
  52. package/.dist/cjs/src/lib/metadataFromServerLoader.cjs +3 -0
  53. package/.dist/cjs/src/lib/metadataFromServerLoader.cjs.map +1 -0
  54. package/.dist/cjs/src/lib/metadataFromServerLoader.d.ts +6 -0
  55. package/.dist/cjs/src/lib/metadataStore.cjs +3 -0
  56. package/.dist/cjs/src/lib/metadataStore.cjs.map +1 -0
  57. package/.dist/cjs/src/lib/metadataStore.d.ts +23 -0
  58. package/.dist/cjs/src/lib/methods.cjs +3 -0
  59. package/.dist/cjs/src/lib/methods.cjs.map +1 -0
  60. package/.dist/cjs/src/lib/methods.d.ts +15 -0
  61. package/.dist/cjs/src/lib/persistentStorage.cjs +3 -0
  62. package/.dist/cjs/src/lib/persistentStorage.cjs.map +1 -0
  63. package/.dist/cjs/src/lib/persistentStorage.d.ts +3 -0
  64. package/.dist/cjs/src/lib/sanitize.cjs +3 -0
  65. package/.dist/cjs/src/lib/sanitize.cjs.map +1 -0
  66. package/.dist/cjs/src/lib/sanitize.d.ts +3 -0
  67. package/.dist/cjs/src/lib/serializer.cjs +3 -2
  68. package/.dist/cjs/src/lib/serializer.cjs.map +1 -1
  69. package/.dist/cjs/src/lib/serializer.d.ts +8 -6
  70. package/.dist/cjs/src/lib/storage.cjs +0 -2
  71. package/.dist/cjs/src/lib/storage.d.ts +17 -10
  72. package/.dist/cjs/src/lib/typedEvent.cjs +3 -2
  73. package/.dist/cjs/src/lib/typedEvent.cjs.map +1 -1
  74. package/.dist/cjs/src/lib/typedEvent.d.ts +12 -10
  75. package/.dist/cjs/src/lib/validation.cjs +3 -2
  76. package/.dist/cjs/src/lib/validation.cjs.map +1 -1
  77. package/.dist/cjs/src/lib/validation.d.ts +4 -3
  78. package/.dist/cjs/src/middlewares/fetchMetadata.cjs +3 -0
  79. package/.dist/cjs/src/middlewares/fetchMetadata.cjs.map +1 -0
  80. package/.dist/cjs/src/middlewares/fetchMetadata.d.ts +4 -0
  81. package/.dist/cjs/src/middlewares/syncRoutes.cjs +3 -0
  82. package/.dist/cjs/src/middlewares/syncRoutes.cjs.map +1 -0
  83. package/.dist/cjs/src/middlewares/syncRoutes.d.ts +4 -0
  84. package/.dist/cjs/src/subRequest.cjs +3 -2
  85. package/.dist/cjs/src/subRequest.cjs.map +1 -1
  86. package/.dist/cjs/src/subRequest.d.ts +6 -10
  87. package/.dist/cjs/src/types.cjs +0 -2
  88. package/.dist/cjs/src/types.d.ts +91 -80
  89. package/.dist/esm/index.d.ts +5 -2
  90. package/.dist/esm/index.js +47 -28
  91. package/.dist/esm/middlewares.d.ts +3 -0
  92. package/.dist/esm/middlewares.js +6 -0
  93. package/.dist/esm/src/batch.d.ts +7 -0
  94. package/.dist/esm/src/batch.js +50 -0
  95. package/.dist/esm/src/batch.js.map +1 -0
  96. package/.dist/esm/src/callContext.d.ts +6 -0
  97. package/.dist/esm/src/callContext.js +34 -0
  98. package/.dist/esm/src/callContext.js.map +1 -0
  99. package/.dist/esm/src/client.d.ts +8 -13
  100. package/.dist/esm/src/client.js +54 -108
  101. package/.dist/esm/src/client.js.map +1 -1
  102. package/.dist/esm/src/constants.d.ts +7 -3
  103. package/.dist/esm/src/constants.js +21 -17
  104. package/.dist/esm/src/constants.js.map +1 -1
  105. package/.dist/esm/src/dispatch.d.ts +8 -0
  106. package/.dist/esm/src/dispatch.js +390 -0
  107. package/.dist/esm/src/dispatch.js.map +1 -0
  108. package/.dist/esm/src/lib/apiBuildVersion.d.ts +10 -0
  109. package/.dist/esm/src/lib/apiBuildVersion.js +43 -0
  110. package/.dist/esm/src/lib/apiBuildVersion.js.map +1 -0
  111. package/.dist/esm/src/lib/apiVersionRecovery.d.ts +7 -0
  112. package/.dist/esm/src/lib/apiVersionRecovery.js +43 -0
  113. package/.dist/esm/src/lib/apiVersionRecovery.js.map +1 -0
  114. package/.dist/esm/src/lib/bundledApi.d.ts +12 -0
  115. package/.dist/esm/src/lib/bundledApi.js +52 -0
  116. package/.dist/esm/src/lib/bundledApi.js.map +1 -0
  117. package/.dist/esm/src/lib/clientMethodsMetadata.d.ts +10 -10
  118. package/.dist/esm/src/lib/clientMethodsMetadata.js +257 -101
  119. package/.dist/esm/src/lib/clientMethodsMetadata.js.map +1 -1
  120. package/.dist/esm/src/lib/clientResponse.d.ts +9 -0
  121. package/.dist/esm/src/lib/clientResponse.js +53 -0
  122. package/.dist/esm/src/lib/clientResponse.js.map +1 -0
  123. package/.dist/esm/src/lib/fetchRemoteMethodsMetadata.d.ts +1 -1
  124. package/.dist/esm/src/lib/fetchRemoteMethodsMetadata.js +20 -17
  125. package/.dist/esm/src/lib/fetchRemoteMethodsMetadata.js.map +1 -1
  126. package/.dist/esm/src/lib/handlersRegistry.d.ts +18 -9
  127. package/.dist/esm/src/lib/handlersRegistry.js +53 -38
  128. package/.dist/esm/src/lib/handlersRegistry.js.map +1 -1
  129. package/.dist/esm/src/lib/headers.d.ts +7 -0
  130. package/.dist/esm/src/lib/headers.js +47 -0
  131. package/.dist/esm/src/lib/headers.js.map +1 -0
  132. package/.dist/esm/src/lib/metadataEviction.d.ts +9 -0
  133. package/.dist/esm/src/lib/metadataEviction.js +33 -0
  134. package/.dist/esm/src/lib/metadataEviction.js.map +1 -0
  135. package/.dist/esm/src/lib/metadataFetcher.d.ts +29 -0
  136. package/.dist/esm/src/lib/metadataFetcher.js +24 -0
  137. package/.dist/esm/src/lib/metadataFetcher.js.map +1 -0
  138. package/.dist/esm/src/lib/metadataFromServer.d.ts +4 -0
  139. package/.dist/esm/src/lib/metadataFromServer.js +15 -0
  140. package/.dist/esm/src/lib/metadataFromServerLoader.d.ts +6 -0
  141. package/.dist/esm/src/lib/metadataFromServerLoader.js +27 -0
  142. package/.dist/esm/src/lib/metadataFromServerLoader.js.map +1 -0
  143. package/.dist/esm/src/lib/metadataStore.d.ts +23 -0
  144. package/.dist/esm/src/lib/metadataStore.js +152 -0
  145. package/.dist/esm/src/lib/metadataStore.js.map +1 -0
  146. package/.dist/esm/src/lib/methods.d.ts +15 -0
  147. package/.dist/esm/src/lib/methods.js +41 -0
  148. package/.dist/esm/src/lib/methods.js.map +1 -0
  149. package/.dist/esm/src/lib/persistentStorage.d.ts +3 -0
  150. package/.dist/esm/src/lib/persistentStorage.js +26 -0
  151. package/.dist/esm/src/lib/persistentStorage.js.map +1 -0
  152. package/.dist/esm/src/lib/sanitize.d.ts +3 -0
  153. package/.dist/esm/src/lib/sanitize.js +25 -0
  154. package/.dist/esm/src/lib/sanitize.js.map +1 -0
  155. package/.dist/esm/src/lib/serializer.d.ts +8 -6
  156. package/.dist/esm/src/lib/serializer.js +75 -110
  157. package/.dist/esm/src/lib/serializer.js.map +1 -1
  158. package/.dist/esm/src/lib/storage.d.ts +17 -10
  159. package/.dist/esm/src/lib/storage.js +0 -43
  160. package/.dist/esm/src/lib/typedEvent.d.ts +12 -10
  161. package/.dist/esm/src/lib/typedEvent.js +25 -20
  162. package/.dist/esm/src/lib/typedEvent.js.map +1 -1
  163. package/.dist/esm/src/lib/validation.d.ts +4 -3
  164. package/.dist/esm/src/lib/validation.js +38 -33
  165. package/.dist/esm/src/lib/validation.js.map +1 -1
  166. package/.dist/esm/src/middlewares/fetchMetadata.d.ts +4 -0
  167. package/.dist/esm/src/middlewares/fetchMetadata.js +85 -0
  168. package/.dist/esm/src/middlewares/fetchMetadata.js.map +1 -0
  169. package/.dist/esm/src/middlewares/syncRoutes.d.ts +4 -0
  170. package/.dist/esm/src/middlewares/syncRoutes.js +20 -0
  171. package/.dist/esm/src/middlewares/syncRoutes.js.map +1 -0
  172. package/.dist/esm/src/subRequest.d.ts +6 -10
  173. package/.dist/esm/src/subRequest.js +11 -32
  174. package/.dist/esm/src/subRequest.js.map +1 -1
  175. package/.dist/esm/src/types.d.ts +91 -80
  176. package/.dist/esm/src/types.js +0 -2
  177. package/LICENSE +1 -1
  178. package/README.md +6 -6
  179. package/package.json +38 -26
  180. package/.dist/cjs/index.cjs.map +0 -1
  181. package/.dist/cjs/index.d.ts.map +0 -1
  182. package/.dist/cjs/src/client.d.ts.map +0 -1
  183. package/.dist/cjs/src/constants.d.ts.map +0 -1
  184. package/.dist/cjs/src/lib/clientMethodsMetadata.d.ts.map +0 -1
  185. package/.dist/cjs/src/lib/fetchRemoteMethodsMetadata.d.ts.map +0 -1
  186. package/.dist/cjs/src/lib/handlersRegistry.d.ts.map +0 -1
  187. package/.dist/cjs/src/lib/serializer.d.ts.map +0 -1
  188. package/.dist/cjs/src/lib/storage.cjs.map +0 -1
  189. package/.dist/cjs/src/lib/storage.d.ts.map +0 -1
  190. package/.dist/cjs/src/lib/testUtils.cjs +0 -2
  191. package/.dist/cjs/src/lib/testUtils.cjs.map +0 -1
  192. package/.dist/cjs/src/lib/testUtils.d.ts +0 -2
  193. package/.dist/cjs/src/lib/testUtils.d.ts.map +0 -1
  194. package/.dist/cjs/src/lib/typedEvent.d.ts.map +0 -1
  195. package/.dist/cjs/src/lib/validation.d.ts.map +0 -1
  196. package/.dist/cjs/src/request.cjs +0 -2
  197. package/.dist/cjs/src/request.cjs.map +0 -1
  198. package/.dist/cjs/src/request.d.ts +0 -37
  199. package/.dist/cjs/src/request.d.ts.map +0 -1
  200. package/.dist/cjs/src/routesFlow.cjs +0 -2
  201. package/.dist/cjs/src/routesFlow.cjs.map +0 -1
  202. package/.dist/cjs/src/routesFlow.d.ts +0 -7
  203. package/.dist/cjs/src/routesFlow.d.ts.map +0 -1
  204. package/.dist/cjs/src/subRequest.d.ts.map +0 -1
  205. package/.dist/cjs/src/types.cjs.map +0 -1
  206. package/.dist/cjs/src/types.d.ts.map +0 -1
  207. package/.dist/esm/index.d.ts.map +0 -1
  208. package/.dist/esm/index.js.map +0 -1
  209. package/.dist/esm/src/client.d.ts.map +0 -1
  210. package/.dist/esm/src/constants.d.ts.map +0 -1
  211. package/.dist/esm/src/lib/clientMethodsMetadata.d.ts.map +0 -1
  212. package/.dist/esm/src/lib/fetchRemoteMethodsMetadata.d.ts.map +0 -1
  213. package/.dist/esm/src/lib/handlersRegistry.d.ts.map +0 -1
  214. package/.dist/esm/src/lib/serializer.d.ts.map +0 -1
  215. package/.dist/esm/src/lib/storage.d.ts.map +0 -1
  216. package/.dist/esm/src/lib/storage.js.map +0 -1
  217. package/.dist/esm/src/lib/testUtils.d.ts +0 -2
  218. package/.dist/esm/src/lib/testUtils.d.ts.map +0 -1
  219. package/.dist/esm/src/lib/testUtils.js +0 -11
  220. package/.dist/esm/src/lib/testUtils.js.map +0 -1
  221. package/.dist/esm/src/lib/typedEvent.d.ts.map +0 -1
  222. package/.dist/esm/src/lib/validation.d.ts.map +0 -1
  223. package/.dist/esm/src/request.d.ts +0 -37
  224. package/.dist/esm/src/request.d.ts.map +0 -1
  225. package/.dist/esm/src/request.js +0 -334
  226. package/.dist/esm/src/request.js.map +0 -1
  227. package/.dist/esm/src/routesFlow.d.ts +0 -7
  228. package/.dist/esm/src/routesFlow.d.ts.map +0 -1
  229. package/.dist/esm/src/routesFlow.js +0 -60
  230. package/.dist/esm/src/routesFlow.js.map +0 -1
  231. package/.dist/esm/src/subRequest.d.ts.map +0 -1
  232. package/.dist/esm/src/types.d.ts.map +0 -1
  233. package/.dist/esm/src/types.js.map +0 -1
  234. package/index.ts +0 -19
  235. package/src/client.ts +0 -290
  236. package/src/constants.ts +0 -37
  237. package/src/lib/clientMethodsMetadata.ts +0 -187
  238. package/src/lib/fetchRemoteMethodsMetadata.ts +0 -44
  239. package/src/lib/handlersRegistry.ts +0 -101
  240. package/src/lib/serializer.ts +0 -245
  241. package/src/lib/storage.ts +0 -57
  242. package/src/lib/testUtils.ts +0 -16
  243. package/src/lib/typedEvent.ts +0 -57
  244. package/src/lib/validation.ts +0 -72
  245. package/src/request.ts +0 -563
  246. package/src/routesFlow.ts +0 -101
  247. package/src/subRequest.ts +0 -111
  248. package/src/types.ts +0 -237
package/src/subRequest.ts DELETED
@@ -1,111 +0,0 @@
1
- /* ########
2
- * 2025 mion
3
- * Author: Ma-jerez
4
- * License: MIT
5
- * The software is provided "as is", without warranty of any kind.
6
- * ######## */
7
-
8
- import {RpcError} from '@mionjs/core';
9
- import type {RunTypeError} from '@mionjs/core';
10
- import type {CallSetup, MiddlewareSubRequest, RequestErrors, RouteSubRequest, SubRequest} from './types.ts';
11
- import type {MapFromServerFnRef} from '@mionjs/core';
12
- import type {MionClient} from './client.ts';
13
- import {TypedEvent} from './lib/typedEvent.ts';
14
- import {isMapFromRef} from './routesFlow.ts';
15
-
16
- /** Implementation of both RouteSubRequest and MiddleFnSubRequest interfaces */
17
- export class MionSubRequest<S = any, E extends RpcError<string, any> = any>
18
- implements RouteSubRequest<any>, MiddlewareSubRequest<any>
19
- {
20
- pointer: string[];
21
- id: string;
22
- isResolved: boolean = false;
23
- params: any[];
24
- resolvedValue?: S;
25
- error?: E;
26
- serializedParams?: any[];
27
- mappings: MapFromServerFnRef[] = [];
28
-
29
- constructor(
30
- parentProps: string[],
31
- handlerId: string,
32
- argArray: any[],
33
- readonly client: MionClient
34
- ) {
35
- this.pointer = [...parentProps];
36
- this.id = handlerId;
37
- this.params = argArray.map((arg, index) => {
38
- if (isMapFromRef(arg)) {
39
- arg.toRequestId = this.id;
40
- arg.paramIndex = index;
41
- this.mappings.push(arg);
42
- return null;
43
- }
44
- return arg;
45
- });
46
- }
47
-
48
- /** Prefills MiddleFn's parameters and returns TypedEvent for event handler registration */
49
- prefill(): TypedEvent<S, E> {
50
- const typedEvent = new TypedEvent<S, E>(this.id, this.client.handlersRegistry);
51
-
52
- this.client.prefill(this as MiddlewareSubRequest<any>).catch((errors: RequestErrors) => {
53
- console.error('Prefill error:', findSubRequestError(this, errors));
54
- });
55
-
56
- return typedEvent;
57
- }
58
-
59
- /** Removes prefilled value and clears any registered error handlers for this middleFn */
60
- removePrefill(): Promise<void> {
61
- this.client.handlersRegistry.clearHandlers(this.id);
62
- return this.client.removePrefill(this as MiddlewareSubRequest<any>);
63
- }
64
-
65
- /** Calls a remote route with optional setup (middleFns, otherRoutes, signal, timeout) */
66
- call(setup?: CallSetup<any, any>): Promise<any> {
67
- const signal = setup?.signal;
68
- const timeout = setup?.timeout;
69
- if (!setup || (!setup.otherRoutes && !setup.middleFns)) {
70
- return this.client.execute(this as unknown as RouteSubRequest<any>, undefined, undefined, signal, timeout);
71
- }
72
- if (setup.otherRoutes && setup.otherRoutes.length > 0) {
73
- return this.executeWithOtherRoutes(setup.otherRoutes, setup.middleFns, signal, timeout);
74
- }
75
- return this.client.execute(this as unknown as RouteSubRequest<any>, undefined, setup.middleFns, signal, timeout);
76
- }
77
-
78
- private async executeWithOtherRoutes(
79
- otherRoutes: RouteSubRequest<any>[],
80
- middleFns?: Record<string, MiddlewareSubRequest<any>>,
81
- signal?: AbortSignal,
82
- timeout?: number
83
- ): Promise<any> {
84
- const allRoutes = [this as unknown as RouteSubRequest<any>, ...otherRoutes];
85
- const [results, errors, mfR, mfE] = await this.client.execute(undefined, allRoutes, middleFns ?? {}, signal, timeout);
86
- const emptyResults = allRoutes.map(() => undefined);
87
- const emptyErrors = allRoutes.map(() => undefined);
88
- return [results ?? emptyResults, errors ?? emptyErrors, mfR, mfE];
89
- }
90
-
91
- /** Validates parameters and returns type errors */
92
- typeErrors(): Promise<RunTypeError[]> {
93
- return this.client
94
- .typeErrors(this as SubRequest<any>)
95
- .catch((errors: RequestErrors) => Promise.reject(findSubRequestError(this, errors)));
96
- }
97
- }
98
-
99
- /** Finds the most relevant error from the errors map for a given sub-request */
100
- export function findSubRequestError(subRequest: SubRequest<any>, errors: RequestErrors): RpcError<string> {
101
- const specificError = errors.get(subRequest.id);
102
- if (specificError) return specificError;
103
-
104
- const firstError = errors.values().next().value;
105
- if (firstError) return firstError;
106
-
107
- return new RpcError({
108
- type: 'unknown-error',
109
- publicMessage: 'An unknown error occurred',
110
- });
111
- }
package/src/types.ts DELETED
@@ -1,237 +0,0 @@
1
- /* ########
2
- * 2022 mion
3
- * Author: Ma-jerez
4
- * License: MIT
5
- * The software is provided "as is", without warranty of any kind.
6
- * ######## */
7
-
8
- import {RpcError} from '@mionjs/core';
9
- import type {CoreRouterOptions, Prettify, RunTypeError, SerializerMode, ValidationError} from '@mionjs/core';
10
- import type {PublicHeadersFn, PublicMiddleFn, RemoteApi, PublicRoute} from '@mionjs/router';
11
- import type {TypedEvent} from './lib/typedEvent.ts';
12
-
13
- /** Result type for call() - 4-tuple pattern */
14
- export type Result<
15
- RouteSuccess,
16
- RouteError,
17
- MiddleFnsResults extends Record<string, unknown> = Record<string, unknown>,
18
- MiddleFnsErrors extends Record<string, unknown> = Record<string, RpcError<string, unknown>>,
19
- > = [RouteSuccess | undefined, RouteError | undefined, MiddleFnsResults | undefined, MiddleFnsErrors | undefined];
20
-
21
- /** Extract success type from a MiddleFnSubRequest */
22
- export type MiddleFnSuccess<H> = H extends MiddlewareSubRequest<infer PH> ? HandlerSuccessResponse<PH> : never;
23
-
24
- /** Extract error type from a MiddleFnSubRequest */
25
- export type MiddleFnError<H> = H extends MiddlewareSubRequest<infer PH> ? Simplify<HandlerErrors<PH>> : never;
26
-
27
- // type-routesFlow-result-start
28
- /** Result type for routesFlow() function - 4-tuple pattern matching array input */
29
- export type WorkflowResult<
30
- Routes extends RouteSubRequest<any>[],
31
- MiddleFns extends Record<string, MiddlewareSubRequest<any>> = Record<string, MiddlewareSubRequest<any>>,
32
- > = [
33
- WorkflowRouteResults<Routes>,
34
- WorkflowRouteErrors<Routes>,
35
- {[K in keyof MiddleFns]?: MiddleFnSuccess<MiddleFns[K]>} | undefined,
36
- {[K in keyof MiddleFns]?: MiddleFnError<MiddleFns[K]>} | undefined,
37
- ];
38
- // type-routesFlow-result-end
39
-
40
- // type-routesFlow-route-results-start
41
- /** Extract success types from route subrequests as tuple */
42
- export type WorkflowRouteResults<Routes extends RouteSubRequest<any>[]> = {
43
- [K in keyof Routes]: Routes[K] extends RouteSubRequest<infer PH> ? HandlerSuccessResponse<PH> | undefined : never;
44
- };
45
- // type-routesFlow-route-results-end
46
-
47
- // type-routesFlow-route-errors-start
48
- /** Extract error types from route subrequests as tuple */
49
- export type WorkflowRouteErrors<Routes extends RouteSubRequest<any>[]> = {
50
- [K in keyof Routes]: Routes[K] extends RouteSubRequest<infer PH> ? Simplify<HandlerErrors<PH>> | undefined : never;
51
- };
52
- // type-routesFlow-route-errors-end
53
-
54
- export interface ClientOptions extends CoreRouterOptions {
55
- /** Base URL of the server, i.e: http://localhost:3000 */
56
- baseURL: string;
57
- /** basePath for all routes, i.e: api/v1 */
58
- basePath: string;
59
- /** suffix for all routes, i.e: .json */
60
- suffix: string;
61
- /** automatically generate and uuid */
62
- autoGenerateErrorId: boolean;
63
- /** default fetch options */
64
- fetchOptions: RequestInit;
65
- /** enable automatic parameter validation, defaults to true */
66
- validateParams: boolean;
67
- /** Default serializer mode */
68
- serializer: SerializerMode;
69
- /** Default timeout in ms for all requests. Per-request timeout in CallSetup overrides this. */
70
- timeout?: number;
71
- }
72
-
73
- type PublicHandler = (...args: any[]) => Promise<any>;
74
- type PublicMethod = PublicRoute | PublicMiddleFn | PublicHeadersFn;
75
- type ExtractHandler<PM extends PublicMethod> = PM extends {handler: infer H} ? H : never;
76
-
77
- export type InitClientOptions = Partial<ClientOptions> & {baseURL: string};
78
- export type RequestHeaders = {[key: string]: string};
79
- export type RequestBody = {[key: string]: any[]};
80
-
81
- /** Extracts all parameters from a PublicRoute, PublicMiddleFn, or PublicHeadersFn */
82
- export type RouteParamsType<PM extends PublicMethod> = Parameters<ExtractHandler<PM>>;
83
- /** Extracts a single parameter at a given index from a PublicRoute, PublicMiddleFn, or PublicHeadersFn */
84
- export type RouteParamType<PM extends PublicMethod, Index extends number> = Parameters<ExtractHandler<PM>>[Index];
85
- /** Extracts the headers parameter (first param) from a PublicHeadersFn handler */
86
- export type HeadersParamsType<PM extends PublicHeadersFn> = Parameters<ExtractHandler<PM>>[0];
87
- /** Extracts the success return type from a PublicRoute, PublicMiddleFn, or PublicHeadersFn */
88
- export type RouteReturnType<PM extends PublicMethod> = HandlerSuccessResponse<ExtractHandler<PM>>;
89
-
90
- export type HandlerResponse<PH extends PublicHandler> = Awaited<ReturnType<PH>>;
91
- export type HandlerSuccessResponse<PH extends PublicHandler> = Exclude<HandlerResponse<PH>, RpcError<string>>;
92
- export type HandlerFailResponse<PH extends PublicHandler> = Extract<HandlerResponse<PH>, RpcError<string>>;
93
- export type SuccessResponse<MR extends SubRequest<any>> = Required<MR>['resolvedValue'];
94
- export type SuccessResponses<List extends SubRequest<any>[]> = {[P in keyof List]: SuccessResponse<List[P]>};
95
- export type FailResponse<MR extends SubRequest<any>> = Required<MR>['error'];
96
- export type FailResponses<List extends SubRequest<any>[]> = {[P in keyof List]: FailResponse<List[P]>};
97
- export type RequestErrors = Map<string, RpcError<string>>;
98
-
99
- /** Handler function for a specific error type */
100
- export type ErrorHandler<E extends RpcError<string, any>> = (error: E) => void;
101
-
102
- /** Handler function for unknown/unhandled errors */
103
- export type UnknownErrorHandler = (error: RpcError<string, any>) => void;
104
-
105
- /** Handler function for successful results */
106
- export type SuccessHandler<S> = (result: S) => void;
107
-
108
- /** Utility type to force TypeScript to evaluate/resolve the type */
109
- type Simplify<T> = T extends any ? T : never;
110
-
111
- /** Extracts all RpcError types from a handler's return type as a union */
112
- export type HandlerErrors<PH extends (...args: any[]) => Promise<any>> = Simplify<
113
- Extract<HandlerResponse<PH>, RpcError<string, any>> | ValidationError
114
- >;
115
-
116
- /** Represents a remote method (sub request) */
117
- export interface SubRequest<PH extends PublicHandler> {
118
- pointer: string[];
119
- id: string;
120
- isResolved: boolean;
121
- params: Parameters<PH>;
122
- /** The resolved value after the request completes successfully */
123
- resolvedValue?: HandlerSuccessResponse<PH>;
124
- error?: HandlerFailResponse<PH>;
125
- serializedParams?: any[];
126
- }
127
-
128
- /** Unified config object for call() */
129
- export interface CallSetup<
130
- H extends Record<string, MiddlewareSubRequest<any>> = Record<string, never>,
131
- OtherRoutes extends RouteSubRequest<any>[] = [],
132
- > {
133
- middleFns?: H;
134
- otherRoutes?: [...OtherRoutes];
135
- /** AbortSignal to cancel this specific request */
136
- signal?: AbortSignal;
137
- /** Timeout in ms (overrides ClientOptions.timeout) */
138
- timeout?: number;
139
- }
140
-
141
- /** Builder returned by routesFlow() - call .call() to execute */
142
- export interface RoutesFlowBuilder<Routes extends RouteSubRequest<any>[]> {
143
- /** Execute the routes flow */
144
- call(setup?: {middleFns?: never; signal?: AbortSignal; timeout?: number}): Promise<WorkflowResult<Routes>>;
145
- /** Execute the routes flow with middleware */
146
- call<H extends Record<string, MiddlewareSubRequest<any>>>(setup: {
147
- middleFns: H;
148
- signal?: AbortSignal;
149
- timeout?: number;
150
- }): Promise<WorkflowResult<Routes, H>>;
151
- }
152
-
153
- /** structure returned from the proxy, containing info of the remote route to execute */
154
- export interface RouteSubRequest<PH extends PublicHandler> extends SubRequest<PH> {
155
- /** Validates Route's parameters and returns type errors */
156
- typeErrors: () => Promise<RunTypeError[]>;
157
-
158
- /** Calls a remote route and returns a Result 4-tuple */
159
- call(setup?: {
160
- middleFns?: never;
161
- otherRoutes?: never;
162
- signal?: AbortSignal;
163
- timeout?: number;
164
- }): Promise<Result<HandlerSuccessResponse<PH>, Simplify<HandlerErrors<PH>>>>;
165
-
166
- /** Calls a remote route with middleFns */
167
- call<H extends Record<string, MiddlewareSubRequest<any>>>(setup: {
168
- middleFns: H;
169
- otherRoutes?: never;
170
- signal?: AbortSignal;
171
- timeout?: number;
172
- }): Promise<
173
- Result<
174
- HandlerSuccessResponse<PH>,
175
- Simplify<HandlerErrors<PH>>,
176
- {[K in keyof H]?: MiddleFnSuccess<H[K]>},
177
- {[K in keyof H]?: MiddleFnError<H[K]>}
178
- >
179
- >;
180
-
181
- /** Calls this route with other routes in a single HTTP request */
182
- call<
183
- OtherRoutes extends RouteSubRequest<any>[],
184
- H extends Record<string, MiddlewareSubRequest<any>> = Record<string, never>,
185
- >(setup: {
186
- otherRoutes: [...OtherRoutes];
187
- middleFns?: H;
188
- signal?: AbortSignal;
189
- timeout?: number;
190
- }): Promise<WorkflowResult<any, H>>;
191
- }
192
-
193
- /** structure returned from the proxy, containing info of the remote middleFn to execute */
194
- export interface MiddlewareSubRequest<PH extends PublicHandler> extends SubRequest<PH> {
195
- /** Validates MiddleFn's parameters and returns type errors */
196
- typeErrors: () => Promise<RunTypeError[]>;
197
- /** Prefills MiddleFn's parameters for any future request and returns TypedEvent */
198
- prefill: () => TypedEvent<HandlerSuccessResponse<PH>, Simplify<HandlerErrors<PH>>>;
199
- /** Removes prefilled value */
200
- removePrefill: () => Promise<void>;
201
- }
202
-
203
- export type NonClientRoute = never | PublicMiddleFn | PublicHeadersFn;
204
-
205
- export type ClientRoutes<RA extends RemoteApi> = Prettify<{
206
- [Property in keyof RA as RA[Property] extends NonClientRoute ? never : Property]: RA[Property] extends PublicRoute
207
- ? (...params: Parameters<RA[Property]['handler']>) => RouteSubRequest<RA[Property]['handler']>
208
- : RA[Property] extends RemoteApi
209
- ? ClientRoutes<RA[Property]>
210
- : never;
211
- }>;
212
-
213
- export type NonClientMiddleFn = never | PublicRoute | {[key: string]: PublicRoute};
214
-
215
- export type ClientMiddleFns<RA extends RemoteApi> = Prettify<{
216
- [Property in keyof RA as RA[Property] extends NonClientMiddleFn ? never : Property]: RA[Property] extends
217
- | PublicMiddleFn
218
- | PublicHeadersFn
219
- ? (...params: Parameters<RA[Property]['handler']>) => MiddlewareSubRequest<RA[Property]['handler']>
220
- : RA[Property] extends RemoteApi
221
- ? ClientMiddleFns<RA[Property]>
222
- : never;
223
- }>;
224
-
225
- export type Cleaned<RMS extends RemoteApi> = {
226
- [Property in keyof RMS as RMS[Property] extends never ? never : Property]: RMS[Property];
227
- };
228
-
229
- export type SuccessClientResponse<RS extends RouteSubRequest<any>, RHList extends MiddlewareSubRequest<any>[]> = [
230
- SuccessResponse<RS>,
231
- ...SuccessResponses<RHList>,
232
- ];
233
-
234
- export type PrefilledMiddleFnsCache = Map<
235
- string,
236
- SubRequest<any>
237
- >; /** Reference returned by mapFrom() - extends PureServerFnRef with fake() for type-safe routesFlow piping */