@procedures/client 0.0.0-stage → 0.1.0

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 (762) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +832 -2
  4. package/dist/.tsbuildinfo +1 -0
  5. package/dist/adapters/http/client/index.d.ts +11 -0
  6. package/dist/adapters/http/client/index.d.ts.map +1 -0
  7. package/dist/adapters/http/client/index.js +18 -0
  8. package/dist/adapters/http/client/index.js.map +1 -0
  9. package/dist/adapters/http/client/transport.d.ts +72 -0
  10. package/dist/adapters/http/client/transport.d.ts.map +1 -0
  11. package/dist/adapters/http/client/transport.js +282 -0
  12. package/dist/adapters/http/client/transport.js.map +1 -0
  13. package/dist/adapters/http/client/types.d.ts +27 -0
  14. package/dist/adapters/http/client/types.d.ts.map +1 -0
  15. package/dist/adapters/http/client/types.js +8 -0
  16. package/dist/adapters/http/client/types.js.map +1 -0
  17. package/dist/adapters/http/index.d.ts +7 -0
  18. package/dist/adapters/http/index.d.ts.map +1 -0
  19. package/dist/adapters/http/index.js +7 -0
  20. package/dist/adapters/http/index.js.map +1 -0
  21. package/dist/adapters/http/server/index.d.ts +9 -0
  22. package/dist/adapters/http/server/index.d.ts.map +1 -0
  23. package/dist/adapters/http/server/index.js +10 -0
  24. package/dist/adapters/http/server/index.js.map +1 -0
  25. package/dist/adapters/http/server/strategies.d.ts +39 -0
  26. package/dist/adapters/http/server/strategies.d.ts.map +1 -0
  27. package/dist/adapters/http/server/strategies.js +90 -0
  28. package/dist/adapters/http/server/strategies.js.map +1 -0
  29. package/dist/adapters/http/server/transport.d.ts +66 -0
  30. package/dist/adapters/http/server/transport.d.ts.map +1 -0
  31. package/dist/adapters/http/server/transport.js +561 -0
  32. package/dist/adapters/http/server/transport.js.map +1 -0
  33. package/dist/adapters/http/server/types.d.ts +71 -0
  34. package/dist/adapters/http/server/types.d.ts.map +1 -0
  35. package/dist/adapters/http/server/types.js +7 -0
  36. package/dist/adapters/http/server/types.js.map +1 -0
  37. package/dist/adapters/http/shared/constants.d.ts +95 -0
  38. package/dist/adapters/http/shared/constants.d.ts.map +1 -0
  39. package/dist/adapters/http/shared/constants.js +102 -0
  40. package/dist/adapters/http/shared/constants.js.map +1 -0
  41. package/dist/adapters/http/shared/errors.d.ts +78 -0
  42. package/dist/adapters/http/shared/errors.d.ts.map +1 -0
  43. package/dist/adapters/http/shared/errors.js +151 -0
  44. package/dist/adapters/http/shared/errors.js.map +1 -0
  45. package/dist/adapters/http/shared/headers.d.ts +122 -0
  46. package/dist/adapters/http/shared/headers.d.ts.map +1 -0
  47. package/dist/adapters/http/shared/headers.js +216 -0
  48. package/dist/adapters/http/shared/headers.js.map +1 -0
  49. package/dist/adapters/http/shared/index.d.ts +12 -0
  50. package/dist/adapters/http/shared/index.d.ts.map +1 -0
  51. package/dist/adapters/http/shared/index.js +17 -0
  52. package/dist/adapters/http/shared/index.js.map +1 -0
  53. package/dist/adapters/http/shared/status-codes.d.ts +92 -0
  54. package/dist/adapters/http/shared/status-codes.d.ts.map +1 -0
  55. package/dist/adapters/http/shared/status-codes.js +189 -0
  56. package/dist/adapters/http/shared/status-codes.js.map +1 -0
  57. package/dist/adapters/http/shared/strategies.d.ts +90 -0
  58. package/dist/adapters/http/shared/strategies.d.ts.map +1 -0
  59. package/dist/adapters/http/shared/strategies.js +180 -0
  60. package/dist/adapters/http/shared/strategies.js.map +1 -0
  61. package/dist/adapters/local/client/index.d.ts +8 -0
  62. package/dist/adapters/local/client/index.d.ts.map +1 -0
  63. package/dist/adapters/local/client/index.js +8 -0
  64. package/dist/adapters/local/client/index.js.map +1 -0
  65. package/dist/adapters/local/client/transport.d.ts +81 -0
  66. package/dist/adapters/local/client/transport.d.ts.map +1 -0
  67. package/dist/adapters/local/client/transport.js +172 -0
  68. package/dist/adapters/local/client/transport.js.map +1 -0
  69. package/dist/adapters/local/client/types.d.ts +39 -0
  70. package/dist/adapters/local/client/types.d.ts.map +1 -0
  71. package/dist/adapters/local/client/types.js +13 -0
  72. package/dist/adapters/local/client/types.js.map +1 -0
  73. package/dist/adapters/metadata.d.ts +10 -0
  74. package/dist/adapters/metadata.d.ts.map +1 -0
  75. package/dist/adapters/metadata.js +19 -0
  76. package/dist/adapters/metadata.js.map +1 -0
  77. package/dist/adapters/mock/client/builder.d.ts +35 -0
  78. package/dist/adapters/mock/client/builder.d.ts.map +1 -0
  79. package/dist/adapters/mock/client/builder.js +58 -0
  80. package/dist/adapters/mock/client/builder.js.map +1 -0
  81. package/dist/adapters/mock/client/index.d.ts +9 -0
  82. package/dist/adapters/mock/client/index.d.ts.map +1 -0
  83. package/dist/adapters/mock/client/index.js +10 -0
  84. package/dist/adapters/mock/client/index.js.map +1 -0
  85. package/dist/adapters/mock/client/transport.d.ts +149 -0
  86. package/dist/adapters/mock/client/transport.d.ts.map +1 -0
  87. package/dist/adapters/mock/client/transport.js +289 -0
  88. package/dist/adapters/mock/client/transport.js.map +1 -0
  89. package/dist/adapters/mock/client/types.d.ts +86 -0
  90. package/dist/adapters/mock/client/types.d.ts.map +1 -0
  91. package/dist/adapters/mock/client/types.js +7 -0
  92. package/dist/adapters/mock/client/types.js.map +1 -0
  93. package/dist/adapters/websocket/client/index.d.ts +9 -0
  94. package/dist/adapters/websocket/client/index.d.ts.map +1 -0
  95. package/dist/adapters/websocket/client/index.js +9 -0
  96. package/dist/adapters/websocket/client/index.js.map +1 -0
  97. package/dist/adapters/websocket/client/transport.d.ts +106 -0
  98. package/dist/adapters/websocket/client/transport.d.ts.map +1 -0
  99. package/dist/adapters/websocket/client/transport.js +647 -0
  100. package/dist/adapters/websocket/client/transport.js.map +1 -0
  101. package/dist/adapters/websocket/client/types.d.ts +192 -0
  102. package/dist/adapters/websocket/client/types.d.ts.map +1 -0
  103. package/dist/adapters/websocket/client/types.js +17 -0
  104. package/dist/adapters/websocket/client/types.js.map +1 -0
  105. package/dist/adapters/websocket/index.d.ts +8 -0
  106. package/dist/adapters/websocket/index.d.ts.map +1 -0
  107. package/dist/adapters/websocket/index.js +8 -0
  108. package/dist/adapters/websocket/index.js.map +1 -0
  109. package/dist/adapters/websocket/server/index.d.ts +8 -0
  110. package/dist/adapters/websocket/server/index.d.ts.map +1 -0
  111. package/dist/adapters/websocket/server/index.js +8 -0
  112. package/dist/adapters/websocket/server/index.js.map +1 -0
  113. package/dist/adapters/websocket/server/transport.d.ts +112 -0
  114. package/dist/adapters/websocket/server/transport.d.ts.map +1 -0
  115. package/dist/adapters/websocket/server/transport.js +619 -0
  116. package/dist/adapters/websocket/server/transport.js.map +1 -0
  117. package/dist/adapters/websocket/server/types.d.ts +140 -0
  118. package/dist/adapters/websocket/server/types.d.ts.map +1 -0
  119. package/dist/adapters/websocket/server/types.js +7 -0
  120. package/dist/adapters/websocket/server/types.js.map +1 -0
  121. package/dist/browser.d.ts +48 -0
  122. package/dist/browser.d.ts.map +1 -0
  123. package/dist/browser.js +86 -0
  124. package/dist/browser.js.map +1 -0
  125. package/dist/client/batch-executor.d.ts +160 -0
  126. package/dist/client/batch-executor.d.ts.map +1 -0
  127. package/dist/client/batch-executor.js +397 -0
  128. package/dist/client/batch-executor.js.map +1 -0
  129. package/dist/client/call-types.d.ts +271 -0
  130. package/dist/client/call-types.d.ts.map +1 -0
  131. package/dist/client/call-types.js +208 -0
  132. package/dist/client/call-types.js.map +1 -0
  133. package/dist/client/client.d.ts +517 -0
  134. package/dist/client/client.d.ts.map +1 -0
  135. package/dist/client/client.js +990 -0
  136. package/dist/client/client.js.map +1 -0
  137. package/dist/client/consumption.d.ts +191 -0
  138. package/dist/client/consumption.d.ts.map +1 -0
  139. package/dist/client/consumption.js +98 -0
  140. package/dist/client/consumption.js.map +1 -0
  141. package/dist/client/context.d.ts +116 -0
  142. package/dist/client/context.d.ts.map +1 -0
  143. package/dist/client/context.js +111 -0
  144. package/dist/client/context.js.map +1 -0
  145. package/dist/client/errors/codes.d.ts +71 -0
  146. package/dist/client/errors/codes.d.ts.map +1 -0
  147. package/dist/client/errors/codes.js +81 -0
  148. package/dist/client/errors/codes.js.map +1 -0
  149. package/dist/client/errors/factory.d.ts +102 -0
  150. package/dist/client/errors/factory.d.ts.map +1 -0
  151. package/dist/client/errors/factory.js +210 -0
  152. package/dist/client/errors/factory.js.map +1 -0
  153. package/dist/client/errors/http-errors.d.ts +47 -0
  154. package/dist/client/errors/http-errors.d.ts.map +1 -0
  155. package/dist/client/errors/http-errors.js +548 -0
  156. package/dist/client/errors/http-errors.js.map +1 -0
  157. package/dist/client/errors/http-status.d.ts +73 -0
  158. package/dist/client/errors/http-status.d.ts.map +1 -0
  159. package/dist/client/errors/http-status.js +79 -0
  160. package/dist/client/errors/http-status.js.map +1 -0
  161. package/dist/client/errors/index.d.ts +36 -0
  162. package/dist/client/errors/index.d.ts.map +1 -0
  163. package/dist/client/errors/index.js +40 -0
  164. package/dist/client/errors/index.js.map +1 -0
  165. package/dist/client/errors/registry.d.ts +38 -0
  166. package/dist/client/errors/registry.d.ts.map +1 -0
  167. package/dist/client/errors/registry.js +535 -0
  168. package/dist/client/errors/registry.js.map +1 -0
  169. package/dist/client/errors/types.d.ts +112 -0
  170. package/dist/client/errors/types.d.ts.map +1 -0
  171. package/dist/client/errors/types.js +45 -0
  172. package/dist/client/errors/types.js.map +1 -0
  173. package/dist/client/index.d.ts +44 -0
  174. package/dist/client/index.d.ts.map +1 -0
  175. package/dist/client/index.js +36 -0
  176. package/dist/client/index.js.map +1 -0
  177. package/dist/client/middleware/auth.d.ts +90 -0
  178. package/dist/client/middleware/auth.d.ts.map +1 -0
  179. package/dist/client/middleware/auth.js +98 -0
  180. package/dist/client/middleware/auth.js.map +1 -0
  181. package/dist/client/middleware/batching.d.ts +102 -0
  182. package/dist/client/middleware/batching.d.ts.map +1 -0
  183. package/dist/client/middleware/batching.js +245 -0
  184. package/dist/client/middleware/batching.js.map +1 -0
  185. package/dist/client/middleware/cache.d.ts +124 -0
  186. package/dist/client/middleware/cache.d.ts.map +1 -0
  187. package/dist/client/middleware/cache.js +208 -0
  188. package/dist/client/middleware/cache.js.map +1 -0
  189. package/dist/client/middleware/circuit-breaker.d.ts +113 -0
  190. package/dist/client/middleware/circuit-breaker.d.ts.map +1 -0
  191. package/dist/client/middleware/circuit-breaker.js +236 -0
  192. package/dist/client/middleware/circuit-breaker.js.map +1 -0
  193. package/dist/client/middleware/contexts.d.ts +199 -0
  194. package/dist/client/middleware/contexts.d.ts.map +1 -0
  195. package/dist/client/middleware/contexts.js +74 -0
  196. package/dist/client/middleware/contexts.js.map +1 -0
  197. package/dist/client/middleware/items.d.ts +37 -0
  198. package/dist/client/middleware/items.d.ts.map +1 -0
  199. package/dist/client/middleware/items.js +100 -0
  200. package/dist/client/middleware/items.js.map +1 -0
  201. package/dist/client/middleware/lru.d.ts +32 -0
  202. package/dist/client/middleware/lru.d.ts.map +1 -0
  203. package/dist/client/middleware/lru.js +62 -0
  204. package/dist/client/middleware/lru.js.map +1 -0
  205. package/dist/client/middleware/pagination.d.ts +114 -0
  206. package/dist/client/middleware/pagination.d.ts.map +1 -0
  207. package/dist/client/middleware/pagination.js +148 -0
  208. package/dist/client/middleware/pagination.js.map +1 -0
  209. package/dist/client/middleware/rate-limit.d.ts +105 -0
  210. package/dist/client/middleware/rate-limit.d.ts.map +1 -0
  211. package/dist/client/middleware/rate-limit.js +222 -0
  212. package/dist/client/middleware/rate-limit.js.map +1 -0
  213. package/dist/client/middleware/retry.d.ts +100 -0
  214. package/dist/client/middleware/retry.d.ts.map +1 -0
  215. package/dist/client/middleware/retry.js +150 -0
  216. package/dist/client/middleware/retry.js.map +1 -0
  217. package/dist/client/middleware/timeout.d.ts +91 -0
  218. package/dist/client/middleware/timeout.d.ts.map +1 -0
  219. package/dist/client/middleware/timeout.js +253 -0
  220. package/dist/client/middleware/timeout.js.map +1 -0
  221. package/dist/client/middleware/tracing.d.ts +118 -0
  222. package/dist/client/middleware/tracing.d.ts.map +1 -0
  223. package/dist/client/middleware/tracing.js +152 -0
  224. package/dist/client/middleware/tracing.js.map +1 -0
  225. package/dist/client/route-resolver.d.ts +181 -0
  226. package/dist/client/route-resolver.d.ts.map +1 -0
  227. package/dist/client/route-resolver.js +300 -0
  228. package/dist/client/route-resolver.js.map +1 -0
  229. package/dist/client/typed-method.d.ts +29 -0
  230. package/dist/client/typed-method.d.ts.map +1 -0
  231. package/dist/client/typed-method.js +36 -0
  232. package/dist/client/typed-method.js.map +1 -0
  233. package/dist/client/typed.d.ts +102 -0
  234. package/dist/client/typed.d.ts.map +1 -0
  235. package/dist/client/typed.js +52 -0
  236. package/dist/client/typed.js.map +1 -0
  237. package/dist/client/types.d.ts +296 -0
  238. package/dist/client/types.d.ts.map +1 -0
  239. package/dist/client/types.js +26 -0
  240. package/dist/client/types.js.map +1 -0
  241. package/dist/client/validation/index.d.ts +34 -0
  242. package/dist/client/validation/index.d.ts.map +1 -0
  243. package/dist/client/validation/index.js +36 -0
  244. package/dist/client/validation/index.js.map +1 -0
  245. package/dist/client/validation/middleware.d.ts +82 -0
  246. package/dist/client/validation/middleware.d.ts.map +1 -0
  247. package/dist/client/validation/middleware.js +138 -0
  248. package/dist/client/validation/middleware.js.map +1 -0
  249. package/dist/client/validation/types.d.ts +118 -0
  250. package/dist/client/validation/types.d.ts.map +1 -0
  251. package/dist/client/validation/types.js +59 -0
  252. package/dist/client/validation/types.js.map +1 -0
  253. package/dist/collections/async/async-queue.d.ts +144 -0
  254. package/dist/collections/async/async-queue.d.ts.map +1 -0
  255. package/dist/collections/async/async-queue.js +347 -0
  256. package/dist/collections/async/async-queue.js.map +1 -0
  257. package/dist/collections/async/channels.d.ts +188 -0
  258. package/dist/collections/async/channels.d.ts.map +1 -0
  259. package/dist/collections/async/channels.js +312 -0
  260. package/dist/collections/async/channels.js.map +1 -0
  261. package/dist/collections/behaviors/bounded.d.ts +79 -0
  262. package/dist/collections/behaviors/bounded.d.ts.map +1 -0
  263. package/dist/collections/behaviors/bounded.js +384 -0
  264. package/dist/collections/behaviors/bounded.js.map +1 -0
  265. package/dist/collections/behaviors/evented.d.ts +154 -0
  266. package/dist/collections/behaviors/evented.d.ts.map +1 -0
  267. package/dist/collections/behaviors/evented.js +299 -0
  268. package/dist/collections/behaviors/evented.js.map +1 -0
  269. package/dist/collections/behaviors/lru.d.ts +84 -0
  270. package/dist/collections/behaviors/lru.d.ts.map +1 -0
  271. package/dist/collections/behaviors/lru.js +330 -0
  272. package/dist/collections/behaviors/lru.js.map +1 -0
  273. package/dist/collections/behaviors/readonly.d.ts +73 -0
  274. package/dist/collections/behaviors/readonly.d.ts.map +1 -0
  275. package/dist/collections/behaviors/readonly.js +158 -0
  276. package/dist/collections/behaviors/readonly.js.map +1 -0
  277. package/dist/collections/behaviors/safe.d.ts +163 -0
  278. package/dist/collections/behaviors/safe.d.ts.map +1 -0
  279. package/dist/collections/behaviors/safe.js +172 -0
  280. package/dist/collections/behaviors/safe.js.map +1 -0
  281. package/dist/collections/behaviors/synchronized.d.ts +88 -0
  282. package/dist/collections/behaviors/synchronized.d.ts.map +1 -0
  283. package/dist/collections/behaviors/synchronized.js +294 -0
  284. package/dist/collections/behaviors/synchronized.js.map +1 -0
  285. package/dist/collections/behaviors/ttl.d.ts +118 -0
  286. package/dist/collections/behaviors/ttl.d.ts.map +1 -0
  287. package/dist/collections/behaviors/ttl.js +338 -0
  288. package/dist/collections/behaviors/ttl.js.map +1 -0
  289. package/dist/collections/core/effects.d.ts +176 -0
  290. package/dist/collections/core/effects.d.ts.map +1 -0
  291. package/dist/collections/core/effects.js +180 -0
  292. package/dist/collections/core/effects.js.map +1 -0
  293. package/dist/collections/core/events.d.ts +192 -0
  294. package/dist/collections/core/events.d.ts.map +1 -0
  295. package/dist/collections/core/events.js +291 -0
  296. package/dist/collections/core/events.js.map +1 -0
  297. package/dist/collections/core/middleware.d.ts +231 -0
  298. package/dist/collections/core/middleware.d.ts.map +1 -0
  299. package/dist/collections/core/middleware.js +161 -0
  300. package/dist/collections/core/middleware.js.map +1 -0
  301. package/dist/collections/core/policies.d.ts +220 -0
  302. package/dist/collections/core/policies.d.ts.map +1 -0
  303. package/dist/collections/core/policies.js +48 -0
  304. package/dist/collections/core/policies.js.map +1 -0
  305. package/dist/collections/core/traits.d.ts +142 -0
  306. package/dist/collections/core/traits.d.ts.map +1 -0
  307. package/dist/collections/core/traits.js +8 -0
  308. package/dist/collections/core/traits.js.map +1 -0
  309. package/dist/collections/examples.d.ts +13 -0
  310. package/dist/collections/examples.d.ts.map +1 -0
  311. package/dist/collections/examples.js +302 -0
  312. package/dist/collections/examples.js.map +1 -0
  313. package/dist/collections/fx/collectors.d.ts +190 -0
  314. package/dist/collections/fx/collectors.d.ts.map +1 -0
  315. package/dist/collections/fx/collectors.js +369 -0
  316. package/dist/collections/fx/collectors.js.map +1 -0
  317. package/dist/collections/fx/iter.d.ts +166 -0
  318. package/dist/collections/fx/iter.d.ts.map +1 -0
  319. package/dist/collections/fx/iter.js +421 -0
  320. package/dist/collections/fx/iter.js.map +1 -0
  321. package/dist/collections/impl/array-deque.d.ts +107 -0
  322. package/dist/collections/impl/array-deque.d.ts.map +1 -0
  323. package/dist/collections/impl/array-deque.js +381 -0
  324. package/dist/collections/impl/array-deque.js.map +1 -0
  325. package/dist/collections/impl/array-list.d.ts +101 -0
  326. package/dist/collections/impl/array-list.d.ts.map +1 -0
  327. package/dist/collections/impl/array-list.js +387 -0
  328. package/dist/collections/impl/array-list.js.map +1 -0
  329. package/dist/collections/impl/hash-map.d.ts +141 -0
  330. package/dist/collections/impl/hash-map.d.ts.map +1 -0
  331. package/dist/collections/impl/hash-map.js +450 -0
  332. package/dist/collections/impl/hash-map.js.map +1 -0
  333. package/dist/collections/impl/hash-set.d.ts +125 -0
  334. package/dist/collections/impl/hash-set.d.ts.map +1 -0
  335. package/dist/collections/impl/hash-set.js +264 -0
  336. package/dist/collections/impl/hash-set.js.map +1 -0
  337. package/dist/collections/impl/linked-hash-map.d.ts +141 -0
  338. package/dist/collections/impl/linked-hash-map.d.ts.map +1 -0
  339. package/dist/collections/impl/linked-hash-map.js +472 -0
  340. package/dist/collections/impl/linked-hash-map.js.map +1 -0
  341. package/dist/collections/impl/linked-list.d.ts +109 -0
  342. package/dist/collections/impl/linked-list.d.ts.map +1 -0
  343. package/dist/collections/impl/linked-list.js +491 -0
  344. package/dist/collections/impl/linked-list.js.map +1 -0
  345. package/dist/collections/impl/priority-queue.d.ts +134 -0
  346. package/dist/collections/impl/priority-queue.d.ts.map +1 -0
  347. package/dist/collections/impl/priority-queue.js +336 -0
  348. package/dist/collections/impl/priority-queue.js.map +1 -0
  349. package/dist/collections/impl/tree-map.d.ts +146 -0
  350. package/dist/collections/impl/tree-map.d.ts.map +1 -0
  351. package/dist/collections/impl/tree-map.js +781 -0
  352. package/dist/collections/impl/tree-map.js.map +1 -0
  353. package/dist/collections/impl/tree-set.d.ts +112 -0
  354. package/dist/collections/impl/tree-set.d.ts.map +1 -0
  355. package/dist/collections/impl/tree-set.js +374 -0
  356. package/dist/collections/impl/tree-set.js.map +1 -0
  357. package/dist/collections/index.d.ts +105 -0
  358. package/dist/collections/index.d.ts.map +1 -0
  359. package/dist/collections/index.js +135 -0
  360. package/dist/collections/index.js.map +1 -0
  361. package/dist/collections/interfaces/collection.d.ts +119 -0
  362. package/dist/collections/interfaces/collection.d.ts.map +1 -0
  363. package/dist/collections/interfaces/collection.js +8 -0
  364. package/dist/collections/interfaces/collection.js.map +1 -0
  365. package/dist/collections/interfaces/list.d.ts +247 -0
  366. package/dist/collections/interfaces/list.d.ts.map +1 -0
  367. package/dist/collections/interfaces/list.js +8 -0
  368. package/dist/collections/interfaces/list.js.map +1 -0
  369. package/dist/collections/interfaces/map.d.ts +344 -0
  370. package/dist/collections/interfaces/map.d.ts.map +1 -0
  371. package/dist/collections/interfaces/map.js +8 -0
  372. package/dist/collections/interfaces/map.js.map +1 -0
  373. package/dist/collections/interfaces/queue.d.ts +304 -0
  374. package/dist/collections/interfaces/queue.d.ts.map +1 -0
  375. package/dist/collections/interfaces/queue.js +8 -0
  376. package/dist/collections/interfaces/queue.js.map +1 -0
  377. package/dist/collections/interfaces/set.d.ts +137 -0
  378. package/dist/collections/interfaces/set.d.ts.map +1 -0
  379. package/dist/collections/interfaces/set.js +8 -0
  380. package/dist/collections/interfaces/set.js.map +1 -0
  381. package/dist/collections/storage/api.d.ts +109 -0
  382. package/dist/collections/storage/api.d.ts.map +1 -0
  383. package/dist/collections/storage/api.js +182 -0
  384. package/dist/collections/storage/api.js.map +1 -0
  385. package/dist/collections/storage/hybrid.d.ts +164 -0
  386. package/dist/collections/storage/hybrid.d.ts.map +1 -0
  387. package/dist/collections/storage/hybrid.js +416 -0
  388. package/dist/collections/storage/hybrid.js.map +1 -0
  389. package/dist/collections/storage/index.d.ts +16 -0
  390. package/dist/collections/storage/index.d.ts.map +1 -0
  391. package/dist/collections/storage/index.js +13 -0
  392. package/dist/collections/storage/index.js.map +1 -0
  393. package/dist/collections/storage/interface.d.ts +141 -0
  394. package/dist/collections/storage/interface.d.ts.map +1 -0
  395. package/dist/collections/storage/interface.js +23 -0
  396. package/dist/collections/storage/interface.js.map +1 -0
  397. package/dist/collections/storage/memory.d.ts +68 -0
  398. package/dist/collections/storage/memory.d.ts.map +1 -0
  399. package/dist/collections/storage/memory.js +154 -0
  400. package/dist/collections/storage/memory.js.map +1 -0
  401. package/dist/collections/utils/defaults.d.ts +135 -0
  402. package/dist/collections/utils/defaults.d.ts.map +1 -0
  403. package/dist/collections/utils/defaults.js +322 -0
  404. package/dist/collections/utils/defaults.js.map +1 -0
  405. package/dist/collections/utils/factories.d.ts +144 -0
  406. package/dist/collections/utils/factories.d.ts.map +1 -0
  407. package/dist/collections/utils/factories.js +293 -0
  408. package/dist/collections/utils/factories.js.map +1 -0
  409. package/dist/collections/utils/helpers.d.ts +137 -0
  410. package/dist/collections/utils/helpers.d.ts.map +1 -0
  411. package/dist/collections/utils/helpers.js +221 -0
  412. package/dist/collections/utils/helpers.js.map +1 -0
  413. package/dist/collections.d.ts +12 -0
  414. package/dist/collections.d.ts.map +1 -0
  415. package/dist/collections.js +10 -0
  416. package/dist/collections.js.map +1 -0
  417. package/dist/components/define.d.ts +134 -0
  418. package/dist/components/define.d.ts.map +1 -0
  419. package/dist/components/define.js +486 -0
  420. package/dist/components/define.js.map +1 -0
  421. package/dist/components/index.d.ts +39 -0
  422. package/dist/components/index.d.ts.map +1 -0
  423. package/dist/components/index.js +38 -0
  424. package/dist/components/index.js.map +1 -0
  425. package/dist/components/types.d.ts +264 -0
  426. package/dist/components/types.d.ts.map +1 -0
  427. package/dist/components/types.js +46 -0
  428. package/dist/components/types.js.map +1 -0
  429. package/dist/events/bus.d.ts +193 -0
  430. package/dist/events/bus.d.ts.map +1 -0
  431. package/dist/events/bus.js +511 -0
  432. package/dist/events/bus.js.map +1 -0
  433. package/dist/events/index.d.ts +34 -0
  434. package/dist/events/index.d.ts.map +1 -0
  435. package/dist/events/index.js +36 -0
  436. package/dist/events/index.js.map +1 -0
  437. package/dist/events/types.d.ts +242 -0
  438. package/dist/events/types.d.ts.map +1 -0
  439. package/dist/events/types.js +8 -0
  440. package/dist/events/types.js.map +1 -0
  441. package/dist/index.d.ts +17 -0
  442. package/dist/index.d.ts.map +1 -0
  443. package/dist/index.js +17 -0
  444. package/dist/index.js.map +1 -0
  445. package/dist/middleware/compose.d.ts +88 -0
  446. package/dist/middleware/compose.d.ts.map +1 -0
  447. package/dist/middleware/compose.js +108 -0
  448. package/dist/middleware/compose.js.map +1 -0
  449. package/dist/middleware/index.d.ts +12 -0
  450. package/dist/middleware/index.d.ts.map +1 -0
  451. package/dist/middleware/index.js +11 -0
  452. package/dist/middleware/index.js.map +1 -0
  453. package/dist/middleware/types.d.ts +112 -0
  454. package/dist/middleware/types.d.ts.map +1 -0
  455. package/dist/middleware/types.js +14 -0
  456. package/dist/middleware/types.js.map +1 -0
  457. package/dist/procedures/cli/announce.d.ts +67 -0
  458. package/dist/procedures/cli/announce.d.ts.map +1 -0
  459. package/dist/procedures/cli/announce.js +392 -0
  460. package/dist/procedures/cli/announce.js.map +1 -0
  461. package/dist/procedures/cli/discover.d.ts +66 -0
  462. package/dist/procedures/cli/discover.d.ts.map +1 -0
  463. package/dist/procedures/cli/discover.js +310 -0
  464. package/dist/procedures/cli/discover.js.map +1 -0
  465. package/dist/procedures/cli/index.d.ts +13 -0
  466. package/dist/procedures/cli/index.d.ts.map +1 -0
  467. package/dist/procedures/cli/index.js +201 -0
  468. package/dist/procedures/cli/index.js.map +1 -0
  469. package/dist/procedures/cli/init.d.ts +17 -0
  470. package/dist/procedures/cli/init.d.ts.map +1 -0
  471. package/dist/procedures/cli/init.js +336 -0
  472. package/dist/procedures/cli/init.js.map +1 -0
  473. package/dist/procedures/collection/index.d.ts +10 -0
  474. package/dist/procedures/collection/index.d.ts.map +1 -0
  475. package/dist/procedures/collection/index.js +10 -0
  476. package/dist/procedures/collection/index.js.map +1 -0
  477. package/dist/procedures/collection/procedures.d.ts +21 -0
  478. package/dist/procedures/collection/procedures.d.ts.map +1 -0
  479. package/dist/procedures/collection/procedures.js +198 -0
  480. package/dist/procedures/collection/procedures.js.map +1 -0
  481. package/dist/procedures/collection/schemas.d.ts +131 -0
  482. package/dist/procedures/collection/schemas.d.ts.map +1 -0
  483. package/dist/procedures/collection/schemas.js +422 -0
  484. package/dist/procedures/collection/schemas.js.map +1 -0
  485. package/dist/procedures/collection/storage.d.ts +53 -0
  486. package/dist/procedures/collection/storage.d.ts.map +1 -0
  487. package/dist/procedures/collection/storage.js +2 -0
  488. package/dist/procedures/collection/storage.js.map +1 -0
  489. package/dist/procedures/core/array.d.ts +276 -0
  490. package/dist/procedures/core/array.d.ts.map +1 -0
  491. package/dist/procedures/core/array.js +637 -0
  492. package/dist/procedures/core/array.js.map +1 -0
  493. package/dist/procedures/core/comparison.d.ts +85 -0
  494. package/dist/procedures/core/comparison.d.ts.map +1 -0
  495. package/dist/procedures/core/comparison.js +156 -0
  496. package/dist/procedures/core/comparison.js.map +1 -0
  497. package/dist/procedures/core/index.d.ts +261 -0
  498. package/dist/procedures/core/index.d.ts.map +1 -0
  499. package/dist/procedures/core/index.js +585 -0
  500. package/dist/procedures/core/index.js.map +1 -0
  501. package/dist/procedures/core/logic.d.ts +144 -0
  502. package/dist/procedures/core/logic.d.ts.map +1 -0
  503. package/dist/procedures/core/logic.js +169 -0
  504. package/dist/procedures/core/logic.js.map +1 -0
  505. package/dist/procedures/core/math.d.ts +139 -0
  506. package/dist/procedures/core/math.d.ts.map +1 -0
  507. package/dist/procedures/core/math.js +273 -0
  508. package/dist/procedures/core/math.js.map +1 -0
  509. package/dist/procedures/core/meta.d.ts +111 -0
  510. package/dist/procedures/core/meta.d.ts.map +1 -0
  511. package/dist/procedures/core/meta.js +239 -0
  512. package/dist/procedures/core/meta.js.map +1 -0
  513. package/dist/procedures/core/object.d.ts +109 -0
  514. package/dist/procedures/core/object.d.ts.map +1 -0
  515. package/dist/procedures/core/object.js +270 -0
  516. package/dist/procedures/core/object.js.map +1 -0
  517. package/dist/procedures/core/operands.d.ts +51 -0
  518. package/dist/procedures/core/operands.d.ts.map +1 -0
  519. package/dist/procedures/core/operands.js +90 -0
  520. package/dist/procedures/core/operands.js.map +1 -0
  521. package/dist/procedures/core/outputs.d.ts +28 -0
  522. package/dist/procedures/core/outputs.d.ts.map +1 -0
  523. package/dist/procedures/core/outputs.js +42 -0
  524. package/dist/procedures/core/outputs.js.map +1 -0
  525. package/dist/procedures/core/results.d.ts +202 -0
  526. package/dist/procedures/core/results.d.ts.map +1 -0
  527. package/dist/procedures/core/results.js +106 -0
  528. package/dist/procedures/core/results.js.map +1 -0
  529. package/dist/procedures/core/schemas.d.ts +48 -0
  530. package/dist/procedures/core/schemas.d.ts.map +1 -0
  531. package/dist/procedures/core/schemas.js +102 -0
  532. package/dist/procedures/core/schemas.js.map +1 -0
  533. package/dist/procedures/core/string.d.ts +138 -0
  534. package/dist/procedures/core/string.d.ts.map +1 -0
  535. package/dist/procedures/core/string.js +268 -0
  536. package/dist/procedures/core/string.js.map +1 -0
  537. package/dist/procedures/core/type.d.ts +101 -0
  538. package/dist/procedures/core/type.d.ts.map +1 -0
  539. package/dist/procedures/core/type.js +208 -0
  540. package/dist/procedures/core/type.js.map +1 -0
  541. package/dist/procedures/define-procedure.d.ts +187 -0
  542. package/dist/procedures/define-procedure.d.ts.map +1 -0
  543. package/dist/procedures/define-procedure.js +356 -0
  544. package/dist/procedures/define-procedure.js.map +1 -0
  545. package/dist/procedures/define.d.ts +228 -0
  546. package/dist/procedures/define.d.ts.map +1 -0
  547. package/dist/procedures/define.js +300 -0
  548. package/dist/procedures/define.js.map +1 -0
  549. package/dist/procedures/discovery.d.ts +57 -0
  550. package/dist/procedures/discovery.d.ts.map +1 -0
  551. package/dist/procedures/discovery.js +68 -0
  552. package/dist/procedures/discovery.js.map +1 -0
  553. package/dist/procedures/index.d.ts +24 -0
  554. package/dist/procedures/index.d.ts.map +1 -0
  555. package/dist/procedures/index.js +69 -0
  556. package/dist/procedures/index.js.map +1 -0
  557. package/dist/procedures/interceptors.d.ts +82 -0
  558. package/dist/procedures/interceptors.d.ts.map +1 -0
  559. package/dist/procedures/interceptors.js +193 -0
  560. package/dist/procedures/interceptors.js.map +1 -0
  561. package/dist/procedures/invoke.d.ts +127 -0
  562. package/dist/procedures/invoke.d.ts.map +1 -0
  563. package/dist/procedures/invoke.js +277 -0
  564. package/dist/procedures/invoke.js.map +1 -0
  565. package/dist/procedures/module.d.ts +49 -0
  566. package/dist/procedures/module.d.ts.map +1 -0
  567. package/dist/procedures/module.js +93 -0
  568. package/dist/procedures/module.js.map +1 -0
  569. package/dist/procedures/policy.d.ts +70 -0
  570. package/dist/procedures/policy.d.ts.map +1 -0
  571. package/dist/procedures/policy.js +138 -0
  572. package/dist/procedures/policy.js.map +1 -0
  573. package/dist/procedures/ref.d.ts +606 -0
  574. package/dist/procedures/ref.d.ts.map +1 -0
  575. package/dist/procedures/ref.js +895 -0
  576. package/dist/procedures/ref.js.map +1 -0
  577. package/dist/procedures/registry.d.ts +208 -0
  578. package/dist/procedures/registry.d.ts.map +1 -0
  579. package/dist/procedures/registry.js +402 -0
  580. package/dist/procedures/registry.js.map +1 -0
  581. package/dist/procedures/schema.d.ts +126 -0
  582. package/dist/procedures/schema.d.ts.map +1 -0
  583. package/dist/procedures/schema.js +108 -0
  584. package/dist/procedures/schema.js.map +1 -0
  585. package/dist/procedures/storage/adapter.d.ts +148 -0
  586. package/dist/procedures/storage/adapter.d.ts.map +1 -0
  587. package/dist/procedures/storage/adapter.js +214 -0
  588. package/dist/procedures/storage/adapter.js.map +1 -0
  589. package/dist/procedures/storage/api.d.ts +125 -0
  590. package/dist/procedures/storage/api.d.ts.map +1 -0
  591. package/dist/procedures/storage/api.js +220 -0
  592. package/dist/procedures/storage/api.js.map +1 -0
  593. package/dist/procedures/storage/factory.d.ts +134 -0
  594. package/dist/procedures/storage/factory.d.ts.map +1 -0
  595. package/dist/procedures/storage/factory.js +166 -0
  596. package/dist/procedures/storage/factory.js.map +1 -0
  597. package/dist/procedures/storage/hybrid.d.ts +193 -0
  598. package/dist/procedures/storage/hybrid.d.ts.map +1 -0
  599. package/dist/procedures/storage/hybrid.js +519 -0
  600. package/dist/procedures/storage/hybrid.js.map +1 -0
  601. package/dist/procedures/storage/index.d.ts +17 -0
  602. package/dist/procedures/storage/index.d.ts.map +1 -0
  603. package/dist/procedures/storage/index.js +17 -0
  604. package/dist/procedures/storage/index.js.map +1 -0
  605. package/dist/procedures/storage/procedures.d.ts +39 -0
  606. package/dist/procedures/storage/procedures.d.ts.map +1 -0
  607. package/dist/procedures/storage/procedures.js +261 -0
  608. package/dist/procedures/storage/procedures.js.map +1 -0
  609. package/dist/procedures/storage/serialization.d.ts +123 -0
  610. package/dist/procedures/storage/serialization.d.ts.map +1 -0
  611. package/dist/procedures/storage/serialization.js +216 -0
  612. package/dist/procedures/storage/serialization.js.map +1 -0
  613. package/dist/procedures/storage/synced-registry.d.ts +246 -0
  614. package/dist/procedures/storage/synced-registry.d.ts.map +1 -0
  615. package/dist/procedures/storage/synced-registry.js +575 -0
  616. package/dist/procedures/storage/synced-registry.js.map +1 -0
  617. package/dist/procedures/storage/types.d.ts +130 -0
  618. package/dist/procedures/storage/types.d.ts.map +1 -0
  619. package/dist/procedures/storage/types.js +8 -0
  620. package/dist/procedures/storage/types.js.map +1 -0
  621. package/dist/procedures/types.d.ts +370 -0
  622. package/dist/procedures/types.d.ts.map +1 -0
  623. package/dist/procedures/types.js +23 -0
  624. package/dist/procedures/types.js.map +1 -0
  625. package/dist/server/browser-guard.d.ts +69 -0
  626. package/dist/server/browser-guard.d.ts.map +1 -0
  627. package/dist/server/browser-guard.js +103 -0
  628. package/dist/server/browser-guard.js.map +1 -0
  629. package/dist/server/host-policy.d.ts +59 -0
  630. package/dist/server/host-policy.d.ts.map +1 -0
  631. package/dist/server/host-policy.js +82 -0
  632. package/dist/server/host-policy.js.map +1 -0
  633. package/dist/server/index.d.ts +46 -0
  634. package/dist/server/index.d.ts.map +1 -0
  635. package/dist/server/index.js +42 -0
  636. package/dist/server/index.js.map +1 -0
  637. package/dist/server/method.d.ts +24 -0
  638. package/dist/server/method.d.ts.map +1 -0
  639. package/dist/server/method.js +29 -0
  640. package/dist/server/method.js.map +1 -0
  641. package/dist/server/procedure-server.d.ts +212 -0
  642. package/dist/server/procedure-server.d.ts.map +1 -0
  643. package/dist/server/procedure-server.js +323 -0
  644. package/dist/server/procedure-server.js.map +1 -0
  645. package/dist/server/server.d.ts +161 -0
  646. package/dist/server/server.d.ts.map +1 -0
  647. package/dist/server/server.js +279 -0
  648. package/dist/server/server.js.map +1 -0
  649. package/dist/server/types.d.ts +106 -0
  650. package/dist/server/types.d.ts.map +1 -0
  651. package/dist/server/types.js +29 -0
  652. package/dist/server/types.js.map +1 -0
  653. package/package.json +115 -3
  654. package/src/adapters/http/client/index.ts +51 -0
  655. package/src/adapters/http/client/transport.ts +338 -0
  656. package/src/adapters/http/client/types.ts +33 -0
  657. package/src/adapters/http/index.ts +7 -0
  658. package/src/adapters/http/server/index.ts +14 -0
  659. package/src/adapters/http/server/strategies.ts +105 -0
  660. package/src/adapters/http/server/transport.ts +622 -0
  661. package/src/adapters/http/server/types.ts +81 -0
  662. package/src/adapters/http/shared/constants.ts +108 -0
  663. package/src/adapters/http/shared/errors.ts +199 -0
  664. package/src/adapters/http/shared/headers.ts +291 -0
  665. package/src/adapters/http/shared/index.ts +21 -0
  666. package/src/adapters/http/shared/status-codes.ts +212 -0
  667. package/src/adapters/http/shared/strategies.ts +255 -0
  668. package/src/adapters/local/client/index.ts +11 -0
  669. package/src/adapters/local/client/transport.ts +188 -0
  670. package/src/adapters/local/client/types.ts +50 -0
  671. package/src/adapters/metadata.ts +17 -0
  672. package/src/adapters/mock/client/builder.ts +64 -0
  673. package/src/adapters/mock/client/index.ts +19 -0
  674. package/src/adapters/mock/client/transport.ts +352 -0
  675. package/src/adapters/mock/client/types.ts +99 -0
  676. package/src/adapters/websocket/client/index.ts +18 -0
  677. package/src/adapters/websocket/client/transport.ts +733 -0
  678. package/src/adapters/websocket/client/types.ts +235 -0
  679. package/src/adapters/websocket/index.ts +24 -0
  680. package/src/adapters/websocket/server/index.ts +18 -0
  681. package/src/adapters/websocket/server/transport.ts +705 -0
  682. package/src/adapters/websocket/server/types.ts +169 -0
  683. package/src/browser.ts +373 -0
  684. package/src/client/batch-executor.ts +514 -0
  685. package/src/client/call-types.ts +491 -0
  686. package/src/client/client.ts +1202 -0
  687. package/src/client/consumption.ts +288 -0
  688. package/src/client/context.ts +228 -0
  689. package/src/client/errors/README.md +279 -0
  690. package/src/client/errors/codes.ts +88 -0
  691. package/src/client/errors/factory.ts +263 -0
  692. package/src/client/errors/http-errors.ts +601 -0
  693. package/src/client/errors/http-status.ts +82 -0
  694. package/src/client/errors/index.ts +72 -0
  695. package/src/client/errors/registry.ts +595 -0
  696. package/src/client/errors/types.ts +139 -0
  697. package/src/client/index.ts +124 -0
  698. package/src/client/middleware/auth.ts +132 -0
  699. package/src/client/middleware/cache.ts +316 -0
  700. package/src/client/middleware/circuit-breaker.ts +339 -0
  701. package/src/client/middleware/contexts.ts +319 -0
  702. package/src/client/middleware/items.ts +114 -0
  703. package/src/client/middleware/lru.ts +66 -0
  704. package/src/client/middleware/pagination.ts +213 -0
  705. package/src/client/middleware/rate-limit.ts +315 -0
  706. package/src/client/middleware/retry.ts +236 -0
  707. package/src/client/middleware/timeout.ts +308 -0
  708. package/src/client/middleware/tracing.ts +191 -0
  709. package/src/client/route-resolver.ts +407 -0
  710. package/src/client/typed-method.ts +65 -0
  711. package/src/client/typed.ts +140 -0
  712. package/src/client/types.ts +361 -0
  713. package/src/client/validation/index.ts +56 -0
  714. package/src/client/validation/middleware.ts +254 -0
  715. package/src/client/validation/types.ts +162 -0
  716. package/src/events/bus.ts +594 -0
  717. package/src/events/index.ts +67 -0
  718. package/src/events/types.ts +263 -0
  719. package/src/index.ts +33 -0
  720. package/src/middleware/compose.ts +159 -0
  721. package/src/middleware/index.ts +28 -0
  722. package/src/middleware/types.ts +166 -0
  723. package/src/procedures/cli/announce.ts +470 -0
  724. package/src/procedures/cli/discover.ts +390 -0
  725. package/src/procedures/cli/index.ts +229 -0
  726. package/src/procedures/cli/init.ts +370 -0
  727. package/src/procedures/collection/index.ts +51 -0
  728. package/src/procedures/collection/procedures.ts +245 -0
  729. package/src/procedures/collection/schemas.ts +550 -0
  730. package/src/procedures/collection/storage.ts +53 -0
  731. package/src/procedures/core/array.ts +1024 -0
  732. package/src/procedures/core/comparison.ts +263 -0
  733. package/src/procedures/core/index.ts +895 -0
  734. package/src/procedures/core/logic.ts +225 -0
  735. package/src/procedures/core/math.ts +469 -0
  736. package/src/procedures/core/meta.ts +384 -0
  737. package/src/procedures/core/object.ts +427 -0
  738. package/src/procedures/core/operands.ts +119 -0
  739. package/src/procedures/core/outputs.ts +48 -0
  740. package/src/procedures/core/results.ts +296 -0
  741. package/src/procedures/core/schemas.ts +123 -0
  742. package/src/procedures/core/string.ts +458 -0
  743. package/src/procedures/core/type.ts +344 -0
  744. package/src/procedures/define-procedure.ts +531 -0
  745. package/src/procedures/define.ts +387 -0
  746. package/src/procedures/discovery.ts +76 -0
  747. package/src/procedures/index.ts +228 -0
  748. package/src/procedures/interceptors.ts +272 -0
  749. package/src/procedures/invoke.ts +413 -0
  750. package/src/procedures/module.ts +107 -0
  751. package/src/procedures/policy.ts +171 -0
  752. package/src/procedures/ref.ts +1305 -0
  753. package/src/procedures/registry.ts +473 -0
  754. package/src/procedures/schema.ts +225 -0
  755. package/src/procedures/types.ts +485 -0
  756. package/src/server/browser-guard.ts +147 -0
  757. package/src/server/host-policy.ts +121 -0
  758. package/src/server/index.ts +70 -0
  759. package/src/server/method.ts +33 -0
  760. package/src/server/procedure-server.ts +417 -0
  761. package/src/server/server.ts +364 -0
  762. package/src/server/types.ts +147 -0
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Route Resolver
3
+ *
4
+ * Resolves nested route structures to procedure definitions.
5
+ * Validates routes against the procedure registry.
6
+ */
7
+ import type { AnyProcedure, ProcedurePath } from "../procedures/types.js";
8
+ import type { ProcedureRegistry } from "../procedures/registry.js";
9
+ import type { Route } from "./call-types.js";
10
+ import type { OutputConfig } from "./consumption.js";
11
+ /**
12
+ * Resolved route entry with procedure and input.
13
+ */
14
+ export interface ResolvedRoute {
15
+ /** Path to the procedure */
16
+ path: ProcedurePath;
17
+ /** The procedure definition */
18
+ procedure: AnyProcedure;
19
+ /** Input payload for the procedure handler (validated, with schema defaults) */
20
+ input: unknown;
21
+ /** How the caller reads the output: sponge (the default), stream or handlers (the `out` of the leaf) */
22
+ outputConfig: OutputConfig;
23
+ /**
24
+ * True when the resolver validated the input. A schema that validates asynchronously cannot
25
+ * be checked by the synchronous resolver: the invocation validates that input.
26
+ */
27
+ inputValidated?: boolean;
28
+ }
29
+ /**
30
+ * Resolution error for a specific path.
31
+ */
32
+ export interface RouteResolutionError {
33
+ /** Path that failed to resolve */
34
+ path: ProcedurePath;
35
+ /** Error type */
36
+ type: "not_found" | "invalid_input" | "validation_error";
37
+ /** Error message */
38
+ message: string;
39
+ }
40
+ /**
41
+ * Result of route resolution.
42
+ */
43
+ export interface RouteResolutionResult {
44
+ /** Successfully resolved routes */
45
+ resolved: ResolvedRoute[];
46
+ /** Errors encountered during resolution */
47
+ errors: RouteResolutionError[];
48
+ /**
49
+ * The routes that the resolver did not examine: it stopped at the first error. A caller
50
+ * reports each of them, so no leaf of the route is missing from the response (deep dive CORE-14).
51
+ */
52
+ skipped: ProcedurePath[];
53
+ /** Whether all routes resolved successfully */
54
+ success: boolean;
55
+ }
56
+ /**
57
+ * Resolves nested route structures to procedures.
58
+ *
59
+ * Features:
60
+ * - Path-based procedure lookup
61
+ * - Input validation against schemas
62
+ * - Batch resolution for multi-route calls
63
+ * - Detailed error reporting
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * const resolver = new RouteResolver(registry);
68
+ *
69
+ * const result = resolver.resolve({
70
+ * collections: {
71
+ * users: {
72
+ * get: { id: '123' }
73
+ * }
74
+ * }
75
+ * });
76
+ *
77
+ * if (result.success) {
78
+ * for (const { path, procedure, input } of result.resolved) {
79
+ * // Execute procedure with input
80
+ * }
81
+ * }
82
+ * ```
83
+ */
84
+ export declare class RouteResolver {
85
+ private readonly registry;
86
+ constructor(registry: ProcedureRegistry);
87
+ /**
88
+ * Resolve a route structure to procedures.
89
+ *
90
+ * @param route - Nested route object
91
+ * @param options - Resolution options
92
+ * @returns Resolution result with procedures or errors
93
+ */
94
+ resolve(route: Route, options?: RouteResolverOptions): RouteResolutionResult;
95
+ /**
96
+ * Resolve a single path to a procedure.
97
+ *
98
+ * @param path - Procedure path
99
+ * @returns Procedure or undefined if not found
100
+ */
101
+ getProcedure(path: ProcedurePath): AnyProcedure | undefined;
102
+ /**
103
+ * Check if a path resolves to a valid procedure.
104
+ *
105
+ * @param path - Procedure path
106
+ * @returns true if procedure exists at path
107
+ */
108
+ hasProcedure(path: ProcedurePath): boolean;
109
+ /**
110
+ * Validate route structure without resolving.
111
+ * Useful for compile-time or early validation.
112
+ *
113
+ * @param route - Route to validate
114
+ * @returns Validation errors or empty array if valid
115
+ */
116
+ validate(route: Route): RouteResolutionError[];
117
+ /**
118
+ * Get all procedures that would be invoked by a route.
119
+ * Does not validate inputs.
120
+ *
121
+ * @param route - Route structure
122
+ * @returns Array of [path, procedure] tuples for found procedures
123
+ */
124
+ getProceduresForRoute(route: Route): Array<[ProcedurePath, AnyProcedure]>;
125
+ }
126
+ /**
127
+ * Options for route resolution.
128
+ */
129
+ export interface RouteResolverOptions {
130
+ /** Whether to validate input against schemas (default: true) */
131
+ validateInput?: boolean;
132
+ /** Continue resolving even if some routes fail (default: false) */
133
+ continueOnError?: boolean;
134
+ }
135
+ /**
136
+ * Create a route resolver for a registry.
137
+ *
138
+ * @param registry - Procedure registry
139
+ * @returns Route resolver instance
140
+ */
141
+ export declare function createRouteResolver(registry: ProcedureRegistry): RouteResolver;
142
+ /**
143
+ * Quickly validate a route against a registry.
144
+ *
145
+ * @param route - Route to validate
146
+ * @param registry - Procedure registry
147
+ * @returns true if all paths in route are valid procedures
148
+ */
149
+ export declare function isValidRoute(route: Route, registry: ProcedureRegistry): boolean;
150
+ /**
151
+ * Get missing paths from a route.
152
+ *
153
+ * @param route - Route to check
154
+ * @param registry - Procedure registry
155
+ * @returns Array of paths not found in registry
156
+ */
157
+ export declare function getMissingPaths(route: Route, registry: ProcedureRegistry): ProcedurePath[];
158
+ /**
159
+ * Check if a path matches a pattern with wildcards.
160
+ * Supports '*' for single segment and '**' for multiple segments.
161
+ *
162
+ * @param path - Path to check
163
+ * @param pattern - Pattern to match against
164
+ * @returns true if path matches pattern
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * matchPath(['users', 'get'], ['users', '*']); // true
169
+ * matchPath(['users', 'orders', 'list'], ['users', '**']); // true
170
+ * ```
171
+ */
172
+ export declare function matchPath(path: ProcedurePath, pattern: ProcedurePath): boolean;
173
+ /**
174
+ * Filter routes by path pattern.
175
+ *
176
+ * @param route - Route to filter
177
+ * @param pattern - Pattern to match
178
+ * @returns Route with only matching paths
179
+ */
180
+ export declare function filterRouteByPattern(route: Route, pattern: ProcedurePath): Route;
181
+ //# sourceMappingURL=route-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-resolver.d.ts","sourceRoot":"","sources":["../../src/client/route-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAa,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAQrD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,+BAA+B;IAC/B,SAAS,EAAE,YAAY,CAAC;IACxB,gFAAgF;IAChF,KAAK,EAAE,OAAO,CAAC;IAEf,wGAAwG;IACxG,YAAY,EAAE,YAAY,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,iBAAiB;IACjB,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,kBAAkB,CAAC;IACzD,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,2CAA2C;IAC3C,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B;;;OAGG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;CAClB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,iBAAiB,EAAI;IAE5D;;;;;;OAMG;IACH,OAAO,CACL,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,oBAAyB,GACjC,qBAAqB,CA0DvB;IAED;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS,CAE1D;IAED;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAEzC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,oBAAoB,EAAE,CA6B7C;IAED;;;;;;OAMG;IACH,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAYxE;CACF;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mEAAmE;IACnE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAMD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,aAAa,CAE9E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAU/E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,iBAAiB,GAC1B,aAAa,EAAE,CAWjB;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAkC9E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,GAAG,KAAK,CA0BhF"}
@@ -0,0 +1,300 @@
1
+ /**
2
+ * Route Resolver
3
+ *
4
+ * Resolves nested route structures to procedure definitions.
5
+ * Validates routes against the procedure registry.
6
+ */
7
+ import { flattenRoute } from "./call-types.js";
8
+ import { validateSchema } from "../procedures/schema.js";
9
+ // =============================================================================
10
+ // Route Resolver Class
11
+ // =============================================================================
12
+ /**
13
+ * Resolves nested route structures to procedures.
14
+ *
15
+ * Features:
16
+ * - Path-based procedure lookup
17
+ * - Input validation against schemas
18
+ * - Batch resolution for multi-route calls
19
+ * - Detailed error reporting
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const resolver = new RouteResolver(registry);
24
+ *
25
+ * const result = resolver.resolve({
26
+ * collections: {
27
+ * users: {
28
+ * get: { id: '123' }
29
+ * }
30
+ * }
31
+ * });
32
+ *
33
+ * if (result.success) {
34
+ * for (const { path, procedure, input } of result.resolved) {
35
+ * // Execute procedure with input
36
+ * }
37
+ * }
38
+ * ```
39
+ */
40
+ export class RouteResolver {
41
+ registry;
42
+ constructor(registry) {
43
+ this.registry = registry;
44
+ }
45
+ /**
46
+ * Resolve a route structure to procedures.
47
+ *
48
+ * @param route - Nested route object
49
+ * @param options - Resolution options
50
+ * @returns Resolution result with procedures or errors
51
+ */
52
+ resolve(route, options = {}) {
53
+ const flattened = flattenRoute(route);
54
+ const resolved = [];
55
+ const errors = [];
56
+ const skipped = [];
57
+ for (const [index, entry] of flattened.entries()) {
58
+ const { path, input, outputConfig } = entry;
59
+ const procedure = this.registry.get(path);
60
+ if (!procedure) {
61
+ errors.push({
62
+ path,
63
+ type: "not_found",
64
+ message: `No procedure registered at path: ${path.join(".")}`,
65
+ });
66
+ continue;
67
+ }
68
+ // Validate input if schema validation is enabled. The handler gets the validated data
69
+ // (with schema defaults), as in exec() and on the server - not the raw leaf, which for
70
+ // an { in, out } leaf is the whole wrapper (BUGS-2026-07 H31).
71
+ let handlerInput = input;
72
+ let inputValidated = false;
73
+ const validationResult = options.validateInput !== false ? validateSchema(procedure.input, input) : undefined;
74
+ if (validationResult && !(validationResult instanceof Promise)) {
75
+ if (!validationResult.ok) {
76
+ errors.push({
77
+ path,
78
+ type: "validation_error",
79
+ message: `Input validation failed: ${validationResult.message}`,
80
+ });
81
+ if (!options.continueOnError) {
82
+ skipped.push(...flattened.slice(index + 1).map((rest) => rest.path));
83
+ break;
84
+ }
85
+ continue;
86
+ }
87
+ handlerInput = validationResult.value;
88
+ inputValidated = true;
89
+ }
90
+ resolved.push({
91
+ path,
92
+ procedure,
93
+ input: handlerInput,
94
+ outputConfig,
95
+ inputValidated,
96
+ });
97
+ }
98
+ return {
99
+ resolved,
100
+ errors,
101
+ skipped,
102
+ success: errors.length === 0,
103
+ };
104
+ }
105
+ /**
106
+ * Resolve a single path to a procedure.
107
+ *
108
+ * @param path - Procedure path
109
+ * @returns Procedure or undefined if not found
110
+ */
111
+ getProcedure(path) {
112
+ return this.registry.get(path);
113
+ }
114
+ /**
115
+ * Check if a path resolves to a valid procedure.
116
+ *
117
+ * @param path - Procedure path
118
+ * @returns true if procedure exists at path
119
+ */
120
+ hasProcedure(path) {
121
+ return this.registry.has(path);
122
+ }
123
+ /**
124
+ * Validate route structure without resolving.
125
+ * Useful for compile-time or early validation.
126
+ *
127
+ * @param route - Route to validate
128
+ * @returns Validation errors or empty array if valid
129
+ */
130
+ validate(route) {
131
+ const flattened = flattenRoute(route);
132
+ const errors = [];
133
+ for (const entry of flattened) {
134
+ const { path, input } = entry;
135
+ const procedure = this.registry.get(path);
136
+ if (!procedure) {
137
+ errors.push({
138
+ path,
139
+ type: "not_found",
140
+ message: `No procedure registered at path: ${path.join(".")}`,
141
+ });
142
+ continue;
143
+ }
144
+ const validationResult = validateSchema(procedure.input, input);
145
+ // An asynchronous schema is checked when the procedure runs
146
+ if (!(validationResult instanceof Promise) && !validationResult.ok) {
147
+ errors.push({
148
+ path,
149
+ type: "validation_error",
150
+ message: `Input validation failed: ${validationResult.message}`,
151
+ });
152
+ }
153
+ }
154
+ return errors;
155
+ }
156
+ /**
157
+ * Get all procedures that would be invoked by a route.
158
+ * Does not validate inputs.
159
+ *
160
+ * @param route - Route structure
161
+ * @returns Array of [path, procedure] tuples for found procedures
162
+ */
163
+ getProceduresForRoute(route) {
164
+ const flattened = flattenRoute(route);
165
+ const results = [];
166
+ for (const entry of flattened) {
167
+ const procedure = this.registry.get(entry.path);
168
+ if (procedure) {
169
+ results.push([entry.path, procedure]);
170
+ }
171
+ }
172
+ return results;
173
+ }
174
+ }
175
+ // =============================================================================
176
+ // Helper Functions
177
+ // =============================================================================
178
+ /**
179
+ * Create a route resolver for a registry.
180
+ *
181
+ * @param registry - Procedure registry
182
+ * @returns Route resolver instance
183
+ */
184
+ export function createRouteResolver(registry) {
185
+ return new RouteResolver(registry);
186
+ }
187
+ /**
188
+ * Quickly validate a route against a registry.
189
+ *
190
+ * @param route - Route to validate
191
+ * @param registry - Procedure registry
192
+ * @returns true if all paths in route are valid procedures
193
+ */
194
+ export function isValidRoute(route, registry) {
195
+ const flattened = flattenRoute(route);
196
+ for (const entry of flattened) {
197
+ if (!registry.has(entry.path)) {
198
+ return false;
199
+ }
200
+ }
201
+ return true;
202
+ }
203
+ /**
204
+ * Get missing paths from a route.
205
+ *
206
+ * @param route - Route to check
207
+ * @param registry - Procedure registry
208
+ * @returns Array of paths not found in registry
209
+ */
210
+ export function getMissingPaths(route, registry) {
211
+ const flattened = flattenRoute(route);
212
+ const missing = [];
213
+ for (const entry of flattened) {
214
+ if (!registry.has(entry.path)) {
215
+ missing.push(entry.path);
216
+ }
217
+ }
218
+ return missing;
219
+ }
220
+ // =============================================================================
221
+ // Path Matching Utilities
222
+ // =============================================================================
223
+ /**
224
+ * Check if a path matches a pattern with wildcards.
225
+ * Supports '*' for single segment and '**' for multiple segments.
226
+ *
227
+ * @param path - Path to check
228
+ * @param pattern - Pattern to match against
229
+ * @returns true if path matches pattern
230
+ *
231
+ * @example
232
+ * ```typescript
233
+ * matchPath(['users', 'get'], ['users', '*']); // true
234
+ * matchPath(['users', 'orders', 'list'], ['users', '**']); // true
235
+ * ```
236
+ */
237
+ export function matchPath(path, pattern) {
238
+ let pathIndex = 0;
239
+ let patternIndex = 0;
240
+ while (patternIndex < pattern.length) {
241
+ const segment = pattern[patternIndex];
242
+ if (segment === "**") {
243
+ // Match rest of path
244
+ if (patternIndex === pattern.length - 1) {
245
+ return true;
246
+ }
247
+ // Try to match remaining pattern at each position
248
+ for (let i = pathIndex; i <= path.length; i++) {
249
+ if (matchPath(path.slice(i), pattern.slice(patternIndex + 1))) {
250
+ return true;
251
+ }
252
+ }
253
+ return false;
254
+ }
255
+ if (pathIndex >= path.length) {
256
+ return false;
257
+ }
258
+ if (segment === "*" || segment === path[pathIndex]) {
259
+ pathIndex++;
260
+ patternIndex++;
261
+ }
262
+ else {
263
+ return false;
264
+ }
265
+ }
266
+ return pathIndex === path.length;
267
+ }
268
+ /**
269
+ * Filter routes by path pattern.
270
+ *
271
+ * @param route - Route to filter
272
+ * @param pattern - Pattern to match
273
+ * @returns Route with only matching paths
274
+ */
275
+ export function filterRouteByPattern(route, pattern) {
276
+ const flattened = flattenRoute(route);
277
+ const filtered = {};
278
+ for (const entry of flattened) {
279
+ if (matchPath(entry.path, pattern)) {
280
+ // Rebuild nested structure for this path
281
+ let current = filtered;
282
+ for (let i = 0; i < entry.path.length; i++) {
283
+ const segment = entry.path[i];
284
+ const isLast = i === entry.path.length - 1;
285
+ if (isLast) {
286
+ current[segment] = entry.leaf;
287
+ }
288
+ else {
289
+ // An own key only (deep dive CORE-6). flattenRoute rejected the prototype keys.
290
+ if (!Object.hasOwn(current, segment)) {
291
+ current[segment] = {};
292
+ }
293
+ current = current[segment];
294
+ }
295
+ }
296
+ }
297
+ }
298
+ return filtered;
299
+ }
300
+ //# sourceMappingURL=route-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-resolver.js","sourceRoot":"","sources":["../../src/client/route-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Type-safe Method construction from procedure registry
3
+ *
4
+ * This ensures that Method objects can only be created with valid
5
+ * service/operation combinations that exist in the registry.
6
+ */
7
+ import type { Method } from './types.js';
8
+ /**
9
+ * Generic typed method that constrains service and operation
10
+ * to values that exist in a procedure registry
11
+ */
12
+ export interface TypedMethod<TRegistry extends Record<string, Record<string, any>>, TService extends keyof TRegistry & string = keyof TRegistry & string, TOperation extends keyof TRegistry[TService] & string = keyof TRegistry[TService] & string> extends Method {
13
+ service: TService;
14
+ operation: TOperation;
15
+ }
16
+ /**
17
+ * Create a type-safe method object
18
+ *
19
+ * Usage:
20
+ * const method = createMethod<ProcedureRegistry>('collections', 'getDocuments');
21
+ * // Autocomplete for both service and operation!
22
+ * // Compile error if service or operation doesn't exist
23
+ */
24
+ export declare function createMethod<TRegistry extends Record<string, Record<string, any>>, TService extends keyof TRegistry & string, TOperation extends keyof TRegistry[TService] & string>(service: TService, operation: TOperation, version?: string): TypedMethod<TRegistry, TService, TOperation>;
25
+ /**
26
+ * Type guard to check if a Method matches the registry
27
+ */
28
+ export declare function isValidMethod<TRegistry extends Record<string, Record<string, any>>>(method: Method, registry: TRegistry): method is TypedMethod<TRegistry>;
29
+ //# sourceMappingURL=typed-method.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-method.d.ts","sourceRoot":"","sources":["../../src/client/typed-method.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;GAGG;AACH,MAAM,WAAW,WAAW,CAC1B,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EACrD,QAAQ,SAAS,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,SAAS,GAAG,MAAM,EACpE,UAAU,SAAS,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAC1F,SAAQ,MAAM;IACd,OAAO,EAAE,QAAQ,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EACrD,QAAQ,SAAS,MAAM,SAAS,GAAG,MAAM,EACzC,UAAU,SAAS,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,EAErD,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,UAAU,EACrB,OAAO,CAAC,EAAE,MAAM,GACf,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAS9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EACjF,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,GAClB,MAAM,IAAI,WAAW,CAAC,SAAS,CAAC,CASlC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Type-safe Method construction from procedure registry
3
+ *
4
+ * This ensures that Method objects can only be created with valid
5
+ * service/operation combinations that exist in the registry.
6
+ */
7
+ /**
8
+ * Create a type-safe method object
9
+ *
10
+ * Usage:
11
+ * const method = createMethod<ProcedureRegistry>('collections', 'getDocuments');
12
+ * // Autocomplete for both service and operation!
13
+ * // Compile error if service or operation doesn't exist
14
+ */
15
+ export function createMethod(service, operation, version) {
16
+ const method = {
17
+ service,
18
+ operation,
19
+ };
20
+ if (version !== undefined) {
21
+ method.version = version;
22
+ }
23
+ return method;
24
+ }
25
+ /**
26
+ * Type guard to check if a Method matches the registry
27
+ */
28
+ export function isValidMethod(method, registry) {
29
+ const service = registry[method.service];
30
+ return (typeof method.service === 'string' &&
31
+ method.service in registry &&
32
+ typeof method.operation === 'string' &&
33
+ service !== undefined &&
34
+ method.operation in service);
35
+ }
36
+ //# sourceMappingURL=typed-method.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-method.js","sourceRoot":"","sources":["../../src/client/typed-method.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAK1B,OAAiB,EACjB,SAAqB,EACrB,OAAgB;IAEhB,MAAM,MAAM,GAAiD;QAC3D,OAAO;QACP,SAAS;KACV,CAAC;IACF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,QAAmB;IAEnB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,CACL,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAClC,MAAM,CAAC,OAAO,IAAI,QAAQ;QAC1B,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QACpC,OAAO,KAAK,SAAS;QACrB,MAAM,CAAC,SAAS,IAAI,OAAO,CAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Typed Procedure Caller
3
+ *
4
+ * Creates a typed wrapper around a procedure caller function.
5
+ * Provides compile-time autocomplete for procedure paths, inputs, and outputs.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { createTypedCaller } from "@procedures/client";
10
+ * import type { MongoProcedures, ProcedureInput, ProcedureOutput } from "@procedures/mongo";
11
+ *
12
+ * // Create typed caller
13
+ * const call = createTypedCaller<MongoProcedures>(client.call.bind(client));
14
+ *
15
+ * // Full autocomplete on path and input!
16
+ * const result = await call(
17
+ * ["mongo", "documents", "find"],
18
+ * { query: { status: "active" } },
19
+ * { metadata: { collection: "users" } }
20
+ * );
21
+ * // result is typed as FindOutput
22
+ * ```
23
+ */
24
+ import type { CallOptions } from "./context.js";
25
+ /**
26
+ * Procedure definition with input and output types
27
+ */
28
+ export interface ProcedureDef {
29
+ input: unknown;
30
+ output: unknown;
31
+ }
32
+ /**
33
+ * Nested procedure namespace
34
+ */
35
+ export type ProcedureNamespace = {
36
+ [key: string]: ProcedureDef | ProcedureNamespace;
37
+ };
38
+ /**
39
+ * Extract all valid paths from a procedures interface
40
+ */
41
+ export type ProcedurePaths<T, Prefix extends string[] = []> = T extends ProcedureDef ? Prefix : T extends ProcedureNamespace ? {
42
+ [K in keyof T]: T[K] extends ProcedureDef ? [...Prefix, K & string] : T[K] extends ProcedureNamespace ? ProcedurePaths<T[K], [...Prefix, K & string]> : never;
43
+ }[keyof T] : never;
44
+ /**
45
+ * Get procedure definition at a path
46
+ */
47
+ export type GetProcedure<T, P extends string[]> = P extends [infer K extends keyof T] ? T[K] : P extends [infer K extends keyof T, ...infer Rest extends string[]] ? GetProcedure<T[K], Rest> : never;
48
+ /**
49
+ * Extract input type for a path
50
+ */
51
+ export type PathInput<T, P extends string[]> = GetProcedure<T, P> extends ProcedureDef ? GetProcedure<T, P>["input"] : never;
52
+ /**
53
+ * Extract output type for a path
54
+ */
55
+ export type PathOutput<T, P extends string[]> = GetProcedure<T, P> extends ProcedureDef ? GetProcedure<T, P>["output"] : never;
56
+ /**
57
+ * Base caller function type
58
+ */
59
+ export type BaseCaller = <TOutput>(path: string[], input: unknown, options?: CallOptions) => Promise<TOutput>;
60
+ /**
61
+ * Typed caller function
62
+ */
63
+ export interface TypedCaller<T extends ProcedureNamespace> {
64
+ <P extends ProcedurePaths<T> & string[]>(path: P, input: PathInput<T, P>, options?: CallOptions): Promise<PathOutput<T, P>>;
65
+ }
66
+ /**
67
+ * Create a typed procedure caller
68
+ *
69
+ * Wraps a base caller function to provide compile-time type safety
70
+ * for procedure paths, inputs, and outputs.
71
+ *
72
+ * @param caller - Base caller function (e.g., client.call.bind(client))
73
+ * @returns Typed caller with autocomplete
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * import type { MongoProcedures } from "@procedures/mongo";
78
+ *
79
+ * const typedCall = createTypedCaller<MongoProcedures>(client.call.bind(client));
80
+ *
81
+ * // TypeScript knows:
82
+ * // - path must be a valid procedure path
83
+ * // - input must match the procedure's input type
84
+ * // - result is the procedure's output type
85
+ * const result = await typedCall(
86
+ * ["mongo", "documents", "find"],
87
+ * { query: {}, page: 1 }
88
+ * );
89
+ * ```
90
+ */
91
+ export declare function createTypedCaller<T extends ProcedureNamespace>(caller: BaseCaller): TypedCaller<T>;
92
+ /**
93
+ * Type helper to merge multiple procedure interfaces
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * type AllProcedures = MergeProcedures<MongoProcedures & UIProcedures>;
98
+ * const call = createTypedCaller<AllProcedures>(client.call);
99
+ * ```
100
+ */
101
+ export type MergeProcedures<T extends ProcedureNamespace> = T;
102
+ //# sourceMappingURL=typed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed.d.ts","sourceRoot":"","sources":["../../src/client/typed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,kBAAkB,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,YAAY,GAChF,MAAM,GACN,CAAC,SAAS,kBAAkB,GAC5B;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,GACrC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,GACvB,CAAC,CAAC,CAAC,CAAC,SAAS,kBAAkB,GAC/B,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,GAC7C,KAAK;CACV,CAAC,MAAM,CAAC,CAAC,GACV,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,CAAC,GACjF,CAAC,CAAC,CAAC,CAAC,GACJ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,MAAM,IAAI,SAAS,MAAM,EAAE,CAAC,GACnE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GACxB,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,YAAY,GAClF,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAC3B,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,YAAY,GACnF,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAC5B,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAC/B,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,kBAAkB;IACvD,CAAC,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,EACrC,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,kBAAkB,EAC5D,MAAM,EAAE,UAAU,GACjB,WAAW,CAAC,CAAC,CAAC,CAEhB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,kBAAkB,IAAI,CAAC,CAAC"}