@procedures/client 0.0.0-stage → 0.2.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 (777) hide show
  1. package/CHANGELOG.md +42 -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 +562 -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 +51 -0
  122. package/dist/browser.d.ts.map +1 -0
  123. package/dist/browser.js +89 -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 +525 -0
  134. package/dist/client/client.d.ts.map +1 -0
  135. package/dist/client/client.js +1011 -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 +305 -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/capability.d.ts +111 -0
  458. package/dist/procedures/capability.d.ts.map +1 -0
  459. package/dist/procedures/capability.js +269 -0
  460. package/dist/procedures/capability.js.map +1 -0
  461. package/dist/procedures/cli/announce.d.ts +67 -0
  462. package/dist/procedures/cli/announce.d.ts.map +1 -0
  463. package/dist/procedures/cli/announce.js +392 -0
  464. package/dist/procedures/cli/announce.js.map +1 -0
  465. package/dist/procedures/cli/discover.d.ts +66 -0
  466. package/dist/procedures/cli/discover.d.ts.map +1 -0
  467. package/dist/procedures/cli/discover.js +310 -0
  468. package/dist/procedures/cli/discover.js.map +1 -0
  469. package/dist/procedures/cli/index.d.ts +13 -0
  470. package/dist/procedures/cli/index.d.ts.map +1 -0
  471. package/dist/procedures/cli/index.js +203 -0
  472. package/dist/procedures/cli/index.js.map +1 -0
  473. package/dist/procedures/cli/init.d.ts +17 -0
  474. package/dist/procedures/cli/init.d.ts.map +1 -0
  475. package/dist/procedures/cli/init.js +336 -0
  476. package/dist/procedures/cli/init.js.map +1 -0
  477. package/dist/procedures/collection/index.d.ts +10 -0
  478. package/dist/procedures/collection/index.d.ts.map +1 -0
  479. package/dist/procedures/collection/index.js +10 -0
  480. package/dist/procedures/collection/index.js.map +1 -0
  481. package/dist/procedures/collection/procedures.d.ts +21 -0
  482. package/dist/procedures/collection/procedures.d.ts.map +1 -0
  483. package/dist/procedures/collection/procedures.js +210 -0
  484. package/dist/procedures/collection/procedures.js.map +1 -0
  485. package/dist/procedures/collection/schemas.d.ts +131 -0
  486. package/dist/procedures/collection/schemas.d.ts.map +1 -0
  487. package/dist/procedures/collection/schemas.js +422 -0
  488. package/dist/procedures/collection/schemas.js.map +1 -0
  489. package/dist/procedures/collection/storage.d.ts +53 -0
  490. package/dist/procedures/collection/storage.d.ts.map +1 -0
  491. package/dist/procedures/collection/storage.js +2 -0
  492. package/dist/procedures/collection/storage.js.map +1 -0
  493. package/dist/procedures/core/array.d.ts +276 -0
  494. package/dist/procedures/core/array.d.ts.map +1 -0
  495. package/dist/procedures/core/array.js +639 -0
  496. package/dist/procedures/core/array.js.map +1 -0
  497. package/dist/procedures/core/comparison.d.ts +85 -0
  498. package/dist/procedures/core/comparison.d.ts.map +1 -0
  499. package/dist/procedures/core/comparison.js +158 -0
  500. package/dist/procedures/core/comparison.js.map +1 -0
  501. package/dist/procedures/core/index.d.ts +261 -0
  502. package/dist/procedures/core/index.d.ts.map +1 -0
  503. package/dist/procedures/core/index.js +588 -0
  504. package/dist/procedures/core/index.js.map +1 -0
  505. package/dist/procedures/core/logic.d.ts +144 -0
  506. package/dist/procedures/core/logic.d.ts.map +1 -0
  507. package/dist/procedures/core/logic.js +169 -0
  508. package/dist/procedures/core/logic.js.map +1 -0
  509. package/dist/procedures/core/math.d.ts +139 -0
  510. package/dist/procedures/core/math.d.ts.map +1 -0
  511. package/dist/procedures/core/math.js +275 -0
  512. package/dist/procedures/core/math.js.map +1 -0
  513. package/dist/procedures/core/meta.d.ts +111 -0
  514. package/dist/procedures/core/meta.d.ts.map +1 -0
  515. package/dist/procedures/core/meta.js +244 -0
  516. package/dist/procedures/core/meta.js.map +1 -0
  517. package/dist/procedures/core/object.d.ts +109 -0
  518. package/dist/procedures/core/object.d.ts.map +1 -0
  519. package/dist/procedures/core/object.js +272 -0
  520. package/dist/procedures/core/object.js.map +1 -0
  521. package/dist/procedures/core/operands.d.ts +51 -0
  522. package/dist/procedures/core/operands.d.ts.map +1 -0
  523. package/dist/procedures/core/operands.js +90 -0
  524. package/dist/procedures/core/operands.js.map +1 -0
  525. package/dist/procedures/core/outputs.d.ts +28 -0
  526. package/dist/procedures/core/outputs.d.ts.map +1 -0
  527. package/dist/procedures/core/outputs.js +42 -0
  528. package/dist/procedures/core/outputs.js.map +1 -0
  529. package/dist/procedures/core/results.d.ts +202 -0
  530. package/dist/procedures/core/results.d.ts.map +1 -0
  531. package/dist/procedures/core/results.js +106 -0
  532. package/dist/procedures/core/results.js.map +1 -0
  533. package/dist/procedures/core/schemas.d.ts +48 -0
  534. package/dist/procedures/core/schemas.d.ts.map +1 -0
  535. package/dist/procedures/core/schemas.js +102 -0
  536. package/dist/procedures/core/schemas.js.map +1 -0
  537. package/dist/procedures/core/string.d.ts +138 -0
  538. package/dist/procedures/core/string.d.ts.map +1 -0
  539. package/dist/procedures/core/string.js +270 -0
  540. package/dist/procedures/core/string.js.map +1 -0
  541. package/dist/procedures/core/type.d.ts +101 -0
  542. package/dist/procedures/core/type.d.ts.map +1 -0
  543. package/dist/procedures/core/type.js +210 -0
  544. package/dist/procedures/core/type.js.map +1 -0
  545. package/dist/procedures/define-procedure.d.ts +187 -0
  546. package/dist/procedures/define-procedure.d.ts.map +1 -0
  547. package/dist/procedures/define-procedure.js +357 -0
  548. package/dist/procedures/define-procedure.js.map +1 -0
  549. package/dist/procedures/define.d.ts +228 -0
  550. package/dist/procedures/define.d.ts.map +1 -0
  551. package/dist/procedures/define.js +300 -0
  552. package/dist/procedures/define.js.map +1 -0
  553. package/dist/procedures/discovery.d.ts +57 -0
  554. package/dist/procedures/discovery.d.ts.map +1 -0
  555. package/dist/procedures/discovery.js +68 -0
  556. package/dist/procedures/discovery.js.map +1 -0
  557. package/dist/procedures/effects.d.ts +15 -0
  558. package/dist/procedures/effects.d.ts.map +1 -0
  559. package/dist/procedures/effects.js +18 -0
  560. package/dist/procedures/effects.js.map +1 -0
  561. package/dist/procedures/index.d.ts +27 -0
  562. package/dist/procedures/index.d.ts.map +1 -0
  563. package/dist/procedures/index.js +54 -0
  564. package/dist/procedures/index.js.map +1 -0
  565. package/dist/procedures/interceptors.d.ts +82 -0
  566. package/dist/procedures/interceptors.d.ts.map +1 -0
  567. package/dist/procedures/interceptors.js +194 -0
  568. package/dist/procedures/interceptors.js.map +1 -0
  569. package/dist/procedures/invoke.d.ts +155 -0
  570. package/dist/procedures/invoke.d.ts.map +1 -0
  571. package/dist/procedures/invoke.js +343 -0
  572. package/dist/procedures/invoke.js.map +1 -0
  573. package/dist/procedures/module.d.ts +54 -0
  574. package/dist/procedures/module.d.ts.map +1 -0
  575. package/dist/procedures/module.js +103 -0
  576. package/dist/procedures/module.js.map +1 -0
  577. package/dist/procedures/policy.d.ts +70 -0
  578. package/dist/procedures/policy.d.ts.map +1 -0
  579. package/dist/procedures/policy.js +138 -0
  580. package/dist/procedures/policy.js.map +1 -0
  581. package/dist/procedures/ref.d.ts +606 -0
  582. package/dist/procedures/ref.d.ts.map +1 -0
  583. package/dist/procedures/ref.js +895 -0
  584. package/dist/procedures/ref.js.map +1 -0
  585. package/dist/procedures/registry.d.ts +208 -0
  586. package/dist/procedures/registry.d.ts.map +1 -0
  587. package/dist/procedures/registry.js +402 -0
  588. package/dist/procedures/registry.js.map +1 -0
  589. package/dist/procedures/schema.d.ts +126 -0
  590. package/dist/procedures/schema.d.ts.map +1 -0
  591. package/dist/procedures/schema.js +108 -0
  592. package/dist/procedures/schema.js.map +1 -0
  593. package/dist/procedures/storage/adapter.d.ts +148 -0
  594. package/dist/procedures/storage/adapter.d.ts.map +1 -0
  595. package/dist/procedures/storage/adapter.js +214 -0
  596. package/dist/procedures/storage/adapter.js.map +1 -0
  597. package/dist/procedures/storage/api.d.ts +125 -0
  598. package/dist/procedures/storage/api.d.ts.map +1 -0
  599. package/dist/procedures/storage/api.js +220 -0
  600. package/dist/procedures/storage/api.js.map +1 -0
  601. package/dist/procedures/storage/factory.d.ts +134 -0
  602. package/dist/procedures/storage/factory.d.ts.map +1 -0
  603. package/dist/procedures/storage/factory.js +166 -0
  604. package/dist/procedures/storage/factory.js.map +1 -0
  605. package/dist/procedures/storage/hybrid.d.ts +193 -0
  606. package/dist/procedures/storage/hybrid.d.ts.map +1 -0
  607. package/dist/procedures/storage/hybrid.js +519 -0
  608. package/dist/procedures/storage/hybrid.js.map +1 -0
  609. package/dist/procedures/storage/index.d.ts +17 -0
  610. package/dist/procedures/storage/index.d.ts.map +1 -0
  611. package/dist/procedures/storage/index.js +17 -0
  612. package/dist/procedures/storage/index.js.map +1 -0
  613. package/dist/procedures/storage/procedures.d.ts +39 -0
  614. package/dist/procedures/storage/procedures.d.ts.map +1 -0
  615. package/dist/procedures/storage/procedures.js +261 -0
  616. package/dist/procedures/storage/procedures.js.map +1 -0
  617. package/dist/procedures/storage/serialization.d.ts +123 -0
  618. package/dist/procedures/storage/serialization.d.ts.map +1 -0
  619. package/dist/procedures/storage/serialization.js +216 -0
  620. package/dist/procedures/storage/serialization.js.map +1 -0
  621. package/dist/procedures/storage/synced-registry.d.ts +246 -0
  622. package/dist/procedures/storage/synced-registry.d.ts.map +1 -0
  623. package/dist/procedures/storage/synced-registry.js +575 -0
  624. package/dist/procedures/storage/synced-registry.js.map +1 -0
  625. package/dist/procedures/storage/types.d.ts +130 -0
  626. package/dist/procedures/storage/types.d.ts.map +1 -0
  627. package/dist/procedures/storage/types.js +8 -0
  628. package/dist/procedures/storage/types.js.map +1 -0
  629. package/dist/procedures/types.d.ts +468 -0
  630. package/dist/procedures/types.d.ts.map +1 -0
  631. package/dist/procedures/types.js +23 -0
  632. package/dist/procedures/types.js.map +1 -0
  633. package/dist/register.d.ts +8 -0
  634. package/dist/register.d.ts.map +1 -0
  635. package/dist/register.js +9 -0
  636. package/dist/register.js.map +1 -0
  637. package/dist/server/browser-guard.d.ts +69 -0
  638. package/dist/server/browser-guard.d.ts.map +1 -0
  639. package/dist/server/browser-guard.js +103 -0
  640. package/dist/server/browser-guard.js.map +1 -0
  641. package/dist/server/host-policy.d.ts +81 -0
  642. package/dist/server/host-policy.d.ts.map +1 -0
  643. package/dist/server/host-policy.js +104 -0
  644. package/dist/server/host-policy.js.map +1 -0
  645. package/dist/server/index.d.ts +46 -0
  646. package/dist/server/index.d.ts.map +1 -0
  647. package/dist/server/index.js +42 -0
  648. package/dist/server/index.js.map +1 -0
  649. package/dist/server/method.d.ts +24 -0
  650. package/dist/server/method.d.ts.map +1 -0
  651. package/dist/server/method.js +29 -0
  652. package/dist/server/method.js.map +1 -0
  653. package/dist/server/procedure-server.d.ts +226 -0
  654. package/dist/server/procedure-server.d.ts.map +1 -0
  655. package/dist/server/procedure-server.js +348 -0
  656. package/dist/server/procedure-server.js.map +1 -0
  657. package/dist/server/server.d.ts +161 -0
  658. package/dist/server/server.d.ts.map +1 -0
  659. package/dist/server/server.js +279 -0
  660. package/dist/server/server.js.map +1 -0
  661. package/dist/server/types.d.ts +106 -0
  662. package/dist/server/types.d.ts.map +1 -0
  663. package/dist/server/types.js +29 -0
  664. package/dist/server/types.js.map +1 -0
  665. package/package.json +117 -3
  666. package/src/adapters/http/client/index.ts +51 -0
  667. package/src/adapters/http/client/transport.ts +338 -0
  668. package/src/adapters/http/client/types.ts +33 -0
  669. package/src/adapters/http/index.ts +7 -0
  670. package/src/adapters/http/server/index.ts +14 -0
  671. package/src/adapters/http/server/strategies.ts +105 -0
  672. package/src/adapters/http/server/transport.ts +623 -0
  673. package/src/adapters/http/server/types.ts +81 -0
  674. package/src/adapters/http/shared/constants.ts +108 -0
  675. package/src/adapters/http/shared/errors.ts +199 -0
  676. package/src/adapters/http/shared/headers.ts +291 -0
  677. package/src/adapters/http/shared/index.ts +21 -0
  678. package/src/adapters/http/shared/status-codes.ts +212 -0
  679. package/src/adapters/http/shared/strategies.ts +255 -0
  680. package/src/adapters/local/client/index.ts +11 -0
  681. package/src/adapters/local/client/transport.ts +188 -0
  682. package/src/adapters/local/client/types.ts +50 -0
  683. package/src/adapters/metadata.ts +17 -0
  684. package/src/adapters/mock/client/builder.ts +64 -0
  685. package/src/adapters/mock/client/index.ts +19 -0
  686. package/src/adapters/mock/client/transport.ts +352 -0
  687. package/src/adapters/mock/client/types.ts +99 -0
  688. package/src/adapters/websocket/client/index.ts +18 -0
  689. package/src/adapters/websocket/client/transport.ts +733 -0
  690. package/src/adapters/websocket/client/types.ts +235 -0
  691. package/src/adapters/websocket/index.ts +24 -0
  692. package/src/adapters/websocket/server/index.ts +18 -0
  693. package/src/adapters/websocket/server/transport.ts +705 -0
  694. package/src/adapters/websocket/server/types.ts +169 -0
  695. package/src/browser.ts +401 -0
  696. package/src/client/batch-executor.ts +514 -0
  697. package/src/client/call-types.ts +491 -0
  698. package/src/client/client.ts +1229 -0
  699. package/src/client/consumption.ts +288 -0
  700. package/src/client/context.ts +228 -0
  701. package/src/client/errors/README.md +279 -0
  702. package/src/client/errors/codes.ts +88 -0
  703. package/src/client/errors/factory.ts +263 -0
  704. package/src/client/errors/http-errors.ts +601 -0
  705. package/src/client/errors/http-status.ts +82 -0
  706. package/src/client/errors/index.ts +72 -0
  707. package/src/client/errors/registry.ts +595 -0
  708. package/src/client/errors/types.ts +139 -0
  709. package/src/client/index.ts +124 -0
  710. package/src/client/middleware/auth.ts +132 -0
  711. package/src/client/middleware/cache.ts +316 -0
  712. package/src/client/middleware/circuit-breaker.ts +339 -0
  713. package/src/client/middleware/contexts.ts +319 -0
  714. package/src/client/middleware/items.ts +114 -0
  715. package/src/client/middleware/lru.ts +66 -0
  716. package/src/client/middleware/pagination.ts +213 -0
  717. package/src/client/middleware/rate-limit.ts +315 -0
  718. package/src/client/middleware/retry.ts +236 -0
  719. package/src/client/middleware/timeout.ts +308 -0
  720. package/src/client/middleware/tracing.ts +191 -0
  721. package/src/client/route-resolver.ts +407 -0
  722. package/src/client/typed-method.ts +65 -0
  723. package/src/client/typed.ts +140 -0
  724. package/src/client/types.ts +372 -0
  725. package/src/client/validation/index.ts +56 -0
  726. package/src/client/validation/middleware.ts +254 -0
  727. package/src/client/validation/types.ts +162 -0
  728. package/src/events/bus.ts +594 -0
  729. package/src/events/index.ts +67 -0
  730. package/src/events/types.ts +263 -0
  731. package/src/index.ts +33 -0
  732. package/src/middleware/compose.ts +159 -0
  733. package/src/middleware/index.ts +28 -0
  734. package/src/middleware/types.ts +166 -0
  735. package/src/procedures/capability.ts +333 -0
  736. package/src/procedures/cli/announce.ts +470 -0
  737. package/src/procedures/cli/discover.ts +390 -0
  738. package/src/procedures/cli/index.ts +231 -0
  739. package/src/procedures/cli/init.ts +370 -0
  740. package/src/procedures/collection/index.ts +51 -0
  741. package/src/procedures/collection/procedures.ts +257 -0
  742. package/src/procedures/collection/schemas.ts +550 -0
  743. package/src/procedures/collection/storage.ts +53 -0
  744. package/src/procedures/core/array.ts +1026 -0
  745. package/src/procedures/core/comparison.ts +265 -0
  746. package/src/procedures/core/index.ts +898 -0
  747. package/src/procedures/core/logic.ts +225 -0
  748. package/src/procedures/core/math.ts +471 -0
  749. package/src/procedures/core/meta.ts +389 -0
  750. package/src/procedures/core/object.ts +429 -0
  751. package/src/procedures/core/operands.ts +119 -0
  752. package/src/procedures/core/outputs.ts +48 -0
  753. package/src/procedures/core/results.ts +296 -0
  754. package/src/procedures/core/schemas.ts +123 -0
  755. package/src/procedures/core/string.ts +460 -0
  756. package/src/procedures/core/type.ts +346 -0
  757. package/src/procedures/define-procedure.ts +532 -0
  758. package/src/procedures/define.ts +387 -0
  759. package/src/procedures/discovery.ts +76 -0
  760. package/src/procedures/effects.ts +24 -0
  761. package/src/procedures/index.ts +239 -0
  762. package/src/procedures/interceptors.ts +273 -0
  763. package/src/procedures/invoke.ts +506 -0
  764. package/src/procedures/module.ts +117 -0
  765. package/src/procedures/policy.ts +171 -0
  766. package/src/procedures/ref.ts +1305 -0
  767. package/src/procedures/registry.ts +473 -0
  768. package/src/procedures/schema.ts +225 -0
  769. package/src/procedures/types.ts +596 -0
  770. package/src/register.ts +10 -0
  771. package/src/server/browser-guard.ts +147 -0
  772. package/src/server/host-policy.ts +163 -0
  773. package/src/server/index.ts +70 -0
  774. package/src/server/method.ts +33 -0
  775. package/src/server/procedure-server.ts +459 -0
  776. package/src/server/server.ts +364 -0
  777. package/src/server/types.ts +147 -0
@@ -0,0 +1,397 @@
1
+ /**
2
+ * Batch Executor
3
+ *
4
+ * Executes multiple procedure calls with configurable strategies:
5
+ * - all: Wait for all results
6
+ * - race: Return first result, and abort the other calls
7
+ * - stream: Yield results as they arrive
8
+ *
9
+ * Each call gets its own abort signal, linked to the signal of the batch. The executor aborts a
10
+ * call that can no longer change the result: a loser of a race, a call that still runs when the
11
+ * reader of a stream stops, or (with `continueOnError: false`) every call after the first failure.
12
+ */
13
+ import { buildResponse } from "./call-types.js";
14
+ /** An abort controller whose signal also aborts when the parent signal aborts. */
15
+ function linkedController(parent) {
16
+ const controller = new AbortController();
17
+ if (parent) {
18
+ if (parent.aborted) {
19
+ controller.abort(parent.reason);
20
+ }
21
+ else {
22
+ parent.addEventListener("abort", () => controller.abort(parent.reason), { once: true });
23
+ }
24
+ }
25
+ return controller;
26
+ }
27
+ function cancelledResult(path, message) {
28
+ return { success: false, error: { code: "CANCELLED", message, retryable: false, path } };
29
+ }
30
+ // =============================================================================
31
+ // Batch Executor Class
32
+ // =============================================================================
33
+ /**
34
+ * Executes batched procedure calls with configurable strategies.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const executor = new BatchExecutor(execute);
39
+ *
40
+ * // Execute all routes in parallel
41
+ * const result = await executor.executeAll(resolved, context);
42
+ *
43
+ * // Stream results as they arrive
44
+ * for await (const { path, result } of executor.executeStream(resolved, context)) {
45
+ * console.log(`${path.join('.')}: ${result.success}`);
46
+ * }
47
+ * ```
48
+ */
49
+ export class BatchExecutor {
50
+ execute;
51
+ constructor(execute) {
52
+ this.execute = execute;
53
+ }
54
+ /**
55
+ * Execute resolved routes with the specified strategy.
56
+ *
57
+ * @param resolved - Resolved routes to execute
58
+ * @param context - Execution context
59
+ * @param config - Batch configuration
60
+ * @returns Batch execution result
61
+ */
62
+ async executeBatch(resolved, context, config = { strategy: "all" }) {
63
+ switch (config.strategy) {
64
+ case "race":
65
+ return this.executeRace(resolved, context);
66
+ case "stream":
67
+ // For non-streaming API, collect all stream results
68
+ return this.collectStream(resolved, context, config);
69
+ case "all":
70
+ default:
71
+ return this.executeAll(resolved, context, config);
72
+ }
73
+ }
74
+ /**
75
+ * Execute all routes in parallel and wait for all results. The results are in route order.
76
+ *
77
+ * With `continueOnError: false`, the first failure cancels the other calls: each gets a
78
+ * `CANCELLED` result. By default, every call runs to its end.
79
+ */
80
+ async executeAll(resolved, context, config) {
81
+ // The stream with emitPartial: false holds every result, then gives them in route order
82
+ return this.collect(this.executeStream(resolved, context, {
83
+ strategy: "all",
84
+ ...config,
85
+ streamConfig: { ...config?.streamConfig, emitPartial: false },
86
+ }));
87
+ }
88
+ /**
89
+ * Execute routes and return when the first one completes. The executor aborts the other calls.
90
+ */
91
+ async executeRace(resolved, context) {
92
+ const startTime = Date.now();
93
+ const controllers = resolved.map(() => linkedController(context.signal));
94
+ const calls = resolved.map((route, index) => this.runOne(route, { ...context, signal: controllers[index].signal }).then((item) => ({ item, index })));
95
+ const winner = await Promise.race(calls);
96
+ controllers.forEach((controller, index) => {
97
+ if (index !== winner.index)
98
+ controller.abort();
99
+ });
100
+ return {
101
+ response: buildResponse([[winner.item.path, winner.item.result]]),
102
+ success: winner.item.result.success,
103
+ duration: Date.now() - startTime,
104
+ results: [winner.item],
105
+ };
106
+ }
107
+ /**
108
+ * Execute routes and stream results as they arrive.
109
+ *
110
+ * Each completed call goes into a queue, so every result reaches the reader, also when several
111
+ * calls complete in one tick. (Before, the executor gave only the winner of each
112
+ * `Promise.race`: the other calls of that tick were lost: deep dive CORE-2.)
113
+ *
114
+ * - `streamConfig.concurrency`: the maximum number of calls that run at one time.
115
+ * - `streamConfig.bufferSize`: when this many results wait for the reader, the executor starts
116
+ * no new call. 0 or no value: no limit.
117
+ * - `streamConfig.emitPartial`: false holds every result, then yields them in route order.
118
+ * - `continueOnError: false`: the first failure cancels the calls that wait or run.
119
+ *
120
+ * When the reader stops early, the executor aborts the calls that still run.
121
+ */
122
+ async *executeStream(resolved, context, config) {
123
+ const concurrency = Math.max(1, config?.streamConfig?.concurrency ?? resolved.length);
124
+ const emitPartial = config?.streamConfig?.emitPartial ?? true;
125
+ // A buffer limit with emitPartial: false would stop the batch: the results are never read early
126
+ const bufferSize = emitPartial ? config?.streamConfig?.bufferSize ?? 0 : 0;
127
+ const failFast = config?.continueOnError === false;
128
+ const pending = resolved.map((route, index) => ({ route, index }));
129
+ const running = new Map();
130
+ const done = [];
131
+ let stopped = false;
132
+ let wake;
133
+ const notify = () => {
134
+ const resolve = wake;
135
+ wake = undefined;
136
+ resolve?.();
137
+ };
138
+ const cancelRest = () => {
139
+ stopped = true;
140
+ const message = "Cancelled after another route failed";
141
+ for (const { route, index } of pending.splice(0)) {
142
+ done.push({ path: route.path, result: cancelledResult(route.path, message), duration: 0, index });
143
+ }
144
+ for (const [index, call] of running) {
145
+ call.controller.abort();
146
+ done.push({ path: call.path, result: cancelledResult(call.path, message), duration: 0, index });
147
+ }
148
+ running.clear();
149
+ };
150
+ const fill = () => {
151
+ while (!stopped &&
152
+ pending.length > 0 &&
153
+ running.size < concurrency &&
154
+ (bufferSize <= 0 || done.length < bufferSize)) {
155
+ const { route, index } = pending.shift();
156
+ const controller = linkedController(context.signal);
157
+ running.set(index, { path: route.path, controller });
158
+ void this.runOne(route, { ...context, signal: controller.signal }).then((item) => {
159
+ // A cancelled call has its result already
160
+ if (!running.delete(index))
161
+ return;
162
+ done.push({ ...item, index });
163
+ if (failFast && !item.result.success)
164
+ cancelRest();
165
+ fill();
166
+ notify();
167
+ });
168
+ }
169
+ };
170
+ const strip = ({ path, result, duration }) => ({ path, result, duration });
171
+ try {
172
+ fill();
173
+ for (;;) {
174
+ if (emitPartial && done.length > 0) {
175
+ yield strip(done.shift());
176
+ fill();
177
+ continue;
178
+ }
179
+ if (running.size === 0 && (pending.length === 0 || stopped))
180
+ break;
181
+ await new Promise((resolve) => {
182
+ wake = resolve;
183
+ });
184
+ }
185
+ if (!emitPartial) {
186
+ done.sort((a, b) => a.index - b.index);
187
+ for (const item of done.splice(0))
188
+ yield strip(item);
189
+ }
190
+ }
191
+ finally {
192
+ // The reader stopped early, or the batch ended: abort the calls that still run
193
+ stopped = true;
194
+ for (const call of running.values())
195
+ call.controller.abort();
196
+ running.clear();
197
+ }
198
+ }
199
+ /**
200
+ * Get a streaming response with both iterator and completion promise.
201
+ */
202
+ getStreamingResponse(resolved, context, config) {
203
+ const results = [];
204
+ const stream = this.executeStream(resolved, context, config);
205
+ // One pump consumes the stream. The results iterator reads the items from a buffer, so
206
+ // every item reaches both the iterator and the final response. (BUGS-2026-07 H12: the
207
+ // iterator and the completion promise each iterated the same generator, so they split
208
+ // the items between them.)
209
+ const buffered = [];
210
+ let finished = false;
211
+ let failure;
212
+ let wake;
213
+ const notify = () => {
214
+ const resolve = wake;
215
+ wake = undefined;
216
+ resolve?.();
217
+ };
218
+ const complete = (async () => {
219
+ try {
220
+ for await (const item of stream) {
221
+ results.push([item.path, item.result]);
222
+ buffered.push(item);
223
+ notify();
224
+ }
225
+ }
226
+ catch (error) {
227
+ failure = { error };
228
+ throw error;
229
+ }
230
+ finally {
231
+ finished = true;
232
+ notify();
233
+ }
234
+ return buildResponse(results);
235
+ })();
236
+ // A caller that only uses the iterator still sees the failure there
237
+ complete.catch(() => { });
238
+ const iterate = async function* () {
239
+ let index = 0;
240
+ for (;;) {
241
+ if (index < buffered.length) {
242
+ yield buffered[index++];
243
+ continue;
244
+ }
245
+ if (finished) {
246
+ if (failure)
247
+ throw failure.error;
248
+ return;
249
+ }
250
+ await new Promise((resolve) => {
251
+ wake = resolve;
252
+ });
253
+ }
254
+ };
255
+ return {
256
+ results: iterate(),
257
+ complete,
258
+ };
259
+ }
260
+ /**
261
+ * Collect stream results into a batch result.
262
+ */
263
+ async collectStream(resolved, context, config) {
264
+ return this.collect(this.executeStream(resolved, context, config));
265
+ }
266
+ async collect(items) {
267
+ const startTime = Date.now();
268
+ const results = [];
269
+ for await (const item of items) {
270
+ results.push(item);
271
+ }
272
+ return {
273
+ response: buildResponse(results.map(({ path, result }) => [path, result])),
274
+ success: results.every((r) => r.result.success),
275
+ duration: Date.now() - startTime,
276
+ results,
277
+ };
278
+ }
279
+ /** Run one call. The result is never a rejection: an exception becomes an error result. */
280
+ async runOne(route, context) {
281
+ const callStart = Date.now();
282
+ try {
283
+ const result = await this.execute(route, context);
284
+ return { path: route.path, result, duration: Date.now() - callStart };
285
+ }
286
+ catch (error) {
287
+ return { path: route.path, result: this.createErrorResult(route.path, error), duration: Date.now() - callStart };
288
+ }
289
+ }
290
+ /**
291
+ * Create an error result from an exception.
292
+ */
293
+ createErrorResult(path, error) {
294
+ const message = error instanceof Error ? error.message : String(error);
295
+ const code = error instanceof Error && "code" in error
296
+ ? String(error.code)
297
+ : "EXECUTION_ERROR";
298
+ return {
299
+ success: false,
300
+ error: {
301
+ code,
302
+ message,
303
+ retryable: false,
304
+ path,
305
+ },
306
+ };
307
+ }
308
+ }
309
+ // =============================================================================
310
+ // Factory Functions
311
+ // =============================================================================
312
+ /**
313
+ * Create a batch executor with a procedure executor function.
314
+ *
315
+ * @param execute - Function that executes a single procedure
316
+ * @returns Batch executor instance
317
+ */
318
+ export function createBatchExecutor(execute) {
319
+ return new BatchExecutor(execute);
320
+ }
321
+ /**
322
+ * Determine the optimal batch strategy based on route count and config.
323
+ *
324
+ * @param routeCount - Number of routes to execute
325
+ * @param config - User-provided batch config
326
+ * @returns Effective batch strategy
327
+ */
328
+ export function determineStrategy(routeCount, config) {
329
+ if (config?.strategy) {
330
+ return config.strategy;
331
+ }
332
+ // Default: single route doesn't need batching
333
+ if (routeCount === 1) {
334
+ return "all";
335
+ }
336
+ // Default for multiple routes
337
+ return "all";
338
+ }
339
+ // =============================================================================
340
+ // Concurrency Control
341
+ // =============================================================================
342
+ /**
343
+ * Semaphore for limiting concurrent executions.
344
+ */
345
+ export class Semaphore {
346
+ permits;
347
+ waiting = [];
348
+ constructor(permits) {
349
+ this.permits = permits;
350
+ }
351
+ async acquire() {
352
+ if (this.permits > 0) {
353
+ this.permits--;
354
+ return;
355
+ }
356
+ return new Promise((resolve) => {
357
+ this.waiting.push(resolve);
358
+ });
359
+ }
360
+ release() {
361
+ if (this.waiting.length > 0) {
362
+ const next = this.waiting.shift();
363
+ next();
364
+ }
365
+ else {
366
+ this.permits++;
367
+ }
368
+ }
369
+ async withPermit(fn) {
370
+ await this.acquire();
371
+ try {
372
+ return await fn();
373
+ }
374
+ finally {
375
+ this.release();
376
+ }
377
+ }
378
+ }
379
+ /**
380
+ * Execute procedures with concurrency limit.
381
+ *
382
+ * @param resolved - Routes to execute
383
+ * @param execute - Executor function
384
+ * @param context - Execution context
385
+ * @param concurrency - Maximum concurrent executions
386
+ * @returns Array of results
387
+ */
388
+ export async function executeWithConcurrency(resolved, execute, context, concurrency) {
389
+ const semaphore = new Semaphore(concurrency);
390
+ const results = [];
391
+ await Promise.all(resolved.map(async (route) => {
392
+ const result = await semaphore.withPermit(() => execute(route, context));
393
+ results.push({ path: route.path, result });
394
+ }));
395
+ return results;
396
+ }
397
+ //# sourceMappingURL=batch-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-executor.js","sourceRoot":"","sources":["../../src/client/batch-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Nested Call API Types
3
+ *
4
+ * Type definitions for the new nested route call structure.
5
+ * Enables typed per-call middleware config and natural batching.
6
+ */
7
+ import type { ProcedurePath } from "../procedures/types.js";
8
+ import type { RouteLeaf, OutputConfig } from "./consumption.js";
9
+ export type { RouteLeaf, RouteLeafWithConfig, OutputConfig } from "./consumption.js";
10
+ export { isRouteLeafWithConfig, extractInput, extractOutputConfig } from "./consumption.js";
11
+ /**
12
+ * Per-call retry configuration override.
13
+ */
14
+ export interface RetryOverride {
15
+ /** Maximum number of retry attempts */
16
+ attempts?: number;
17
+ /** Delay between retries in milliseconds */
18
+ delay?: number;
19
+ /** Exponential backoff multiplier */
20
+ backoffMultiplier?: number;
21
+ /** Maximum delay between retries */
22
+ maxDelay?: number;
23
+ }
24
+ /**
25
+ * Per-call timeout configuration override.
26
+ */
27
+ export interface TimeoutOverride {
28
+ /** Overall request timeout in milliseconds */
29
+ ms?: number;
30
+ /** Per-attempt timeout for retries */
31
+ perAttempt?: number;
32
+ }
33
+ /**
34
+ * Per-call cache configuration override.
35
+ */
36
+ export interface CacheOverride {
37
+ /** Time-to-live in milliseconds */
38
+ ttl?: number;
39
+ /** Skip cache for this request */
40
+ bypass?: boolean;
41
+ /** Force cache refresh */
42
+ refresh?: boolean;
43
+ }
44
+ /**
45
+ * Per-call middleware configuration overrides.
46
+ * Each middleware can define its own override type.
47
+ */
48
+ export interface MiddlewareOverrides {
49
+ retry?: RetryOverride;
50
+ timeout?: TimeoutOverride;
51
+ cache?: CacheOverride;
52
+ /** Extensible for custom middleware overrides */
53
+ [key: string]: unknown;
54
+ }
55
+ /**
56
+ * This function converts the overrides of a route call to the context keys that the middleware
57
+ * reads: `retry.attempts` becomes `retry.maxAttempts`, and `timeout.ms` becomes
58
+ * `timeout.overall`. The other keys pass unchanged. (Before, the documented keys had no
59
+ * effect: deep dive CORE-14.)
60
+ *
61
+ * @param overrides - The `middlewares` of a route call
62
+ * @returns The context for the metadata of the calls
63
+ */
64
+ export declare function toMiddlewareContext(overrides: MiddlewareOverrides | undefined): Record<string, unknown>;
65
+ /**
66
+ * Batch execution strategy.
67
+ */
68
+ export type BatchStrategy = "all" | "race" | "stream";
69
+ /**
70
+ * Stream configuration for batch execution.
71
+ */
72
+ export interface StreamConfig {
73
+ /** When this many results wait for the reader, no new call starts. 0 or no value: no limit. */
74
+ bufferSize?: number;
75
+ /** True (the default): each result as it arrives. False: all results at the end, in route order. */
76
+ emitPartial?: boolean;
77
+ /** Maximum concurrent requests */
78
+ concurrency?: number;
79
+ }
80
+ /**
81
+ * Batch execution configuration.
82
+ */
83
+ export interface BatchConfig {
84
+ /** Execution strategy */
85
+ strategy: BatchStrategy;
86
+ /** Stream configuration: `concurrency` applies to every strategy but `race` */
87
+ streamConfig?: StreamConfig;
88
+ /**
89
+ * True (the default): every call runs to its end. False: the first failure cancels the other
90
+ * calls, and each of them gets a `CANCELLED` result.
91
+ */
92
+ continueOnError?: boolean;
93
+ }
94
+ /**
95
+ * Recursive route node - can contain nested nodes or leaf payloads.
96
+ * Leaf nodes are either:
97
+ * - RouteLeafWithConfig: { in: input, out?: outputConfig }
98
+ * - LegacyRouteLeaf: plain object (backward compatible)
99
+ */
100
+ export type RouteNode = {
101
+ [key: string]: RouteNode | RouteLeaf;
102
+ };
103
+ /**
104
+ * Root route structure for a call.
105
+ * The structure maps to procedure paths in the registry.
106
+ */
107
+ export type Route = RouteNode;
108
+ /**
109
+ * Nested call request structure.
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * const request: CallRequest = {
114
+ * middlewares: {
115
+ * retry: { attempts: 3 },
116
+ * timeout: { ms: 5000 }
117
+ * },
118
+ * batch: { strategy: 'all' },
119
+ * route: {
120
+ * collections: {
121
+ * users: {
122
+ * get: { id: "123" }
123
+ * }
124
+ * },
125
+ * weather: {
126
+ * forecast: { city: "NYC", days: 5 }
127
+ * }
128
+ * }
129
+ * };
130
+ * ```
131
+ */
132
+ export interface CallRequest<TRoute extends Route = Route> {
133
+ /** Per-call middleware configuration overrides */
134
+ middlewares?: MiddlewareOverrides;
135
+ /** Batch execution configuration (for multiple routes) */
136
+ batch?: BatchConfig;
137
+ /** Nested route structure mapping to procedures */
138
+ route: TRoute;
139
+ /** Abort signal for cancellation */
140
+ signal?: AbortSignal;
141
+ }
142
+ /**
143
+ * Simplified call request for single-route calls.
144
+ * Omits batch config since there's only one route.
145
+ */
146
+ export interface SingleCallRequest<TRoute extends Route = Route> {
147
+ middlewares?: MiddlewareOverrides;
148
+ route: TRoute;
149
+ signal?: AbortSignal;
150
+ }
151
+ /**
152
+ * Result of a single procedure call.
153
+ */
154
+ export interface ProcedureCallResult<TOutput = unknown> {
155
+ /** Whether the call succeeded */
156
+ success: boolean;
157
+ /** Output data (present if success=true) */
158
+ data?: TOutput;
159
+ /** Error info (present if success=false) */
160
+ error?: {
161
+ code: string;
162
+ message: string;
163
+ retryable: boolean;
164
+ path: ProcedurePath;
165
+ };
166
+ }
167
+ /**
168
+ * Response type that mirrors the route structure.
169
+ * Each leaf node becomes a ProcedureCallResult.
170
+ */
171
+ export type CallResponse<TRoute> = TRoute extends RouteLeaf ? ProcedureCallResult : {
172
+ [K in keyof TRoute]: TRoute[K] extends RouteNode ? CallResponse<TRoute[K]> : ProcedureCallResult;
173
+ };
174
+ /**
175
+ * Streaming response for batch calls with stream strategy.
176
+ */
177
+ export interface StreamingCallResponse<TRoute extends Route = Route> {
178
+ /** Async iterator yielding results as they arrive */
179
+ results: AsyncIterable<{
180
+ /** Path to the result in the route structure */
181
+ path: ProcedurePath;
182
+ /** The procedure result */
183
+ result: ProcedureCallResult;
184
+ }>;
185
+ /** Promise that resolves to the complete response when all results arrive */
186
+ complete: Promise<CallResponse<TRoute>>;
187
+ }
188
+ /**
189
+ * Extract all paths from a route structure.
190
+ * Used internally for route validation and resolution.
191
+ */
192
+ export type ExtractRoutePaths<TRoute, TPrefix extends string[] = []> = TRoute extends RouteLeaf ? TPrefix : TRoute extends RouteNode ? {
193
+ [K in keyof TRoute]: TRoute[K] extends RouteNode ? ExtractRoutePaths<TRoute[K], [...TPrefix, K & string]> : [...TPrefix, K & string];
194
+ }[keyof TRoute] : never;
195
+ /**
196
+ * Validate that a route structure only contains valid procedure paths.
197
+ * This is a compile-time check.
198
+ */
199
+ export type ValidateRoute<TRoute, TRegisteredPaths extends string[][]> = ExtractRoutePaths<TRoute> extends TRegisteredPaths[number] ? TRoute : never;
200
+ /**
201
+ * This function throws for a route key that would reach `Object.prototype`. `JSON.parse` makes
202
+ * `"__proto__"` an own key, so a route from JSON can contain it.
203
+ *
204
+ * @param key - A route key (a procedure path segment)
205
+ */
206
+ export declare function assertRouteKey(key: string): void;
207
+ /**
208
+ * Flattened route entry with path, input, and output configuration.
209
+ */
210
+ export interface FlattenedRouteEntry {
211
+ /** Procedure path */
212
+ path: ProcedurePath;
213
+ /** Extracted input payload */
214
+ input: unknown;
215
+ /** Output configuration (default: sponge) */
216
+ outputConfig: OutputConfig;
217
+ /** Original leaf node (for reference) */
218
+ leaf: RouteLeaf;
219
+ }
220
+ /**
221
+ * Convert a nested route structure to an array of flattened entries.
222
+ * Handles both new { in, out } format and legacy plain objects.
223
+ *
224
+ * @param route - Nested route object
225
+ * @returns Array of flattened route entries
226
+ */
227
+ export declare function flattenRoute(route: Route): FlattenedRouteEntry[];
228
+ /**
229
+ * Legacy flatten function for backward compatibility.
230
+ * Returns [path, leaf] pairs without output config extraction.
231
+ *
232
+ * @deprecated Use flattenRoute() which returns FlattenedRouteEntry[]
233
+ */
234
+ export declare function flattenRouteLegacy(route: Route): Array<[ProcedurePath, RouteLeaf]>;
235
+ /**
236
+ * Build a nested response structure from flat results.
237
+ *
238
+ * @param results - Array of [path, result] tuples
239
+ * @returns Nested response object
240
+ */
241
+ export declare function buildResponse<TRoute extends Route>(results: Array<[ProcedurePath, ProcedureCallResult]>): CallResponse<TRoute>;
242
+ /**
243
+ * Check if a route contains multiple procedure calls.
244
+ * Used to determine if batch execution is needed.
245
+ *
246
+ * @param route - Route to check
247
+ * @returns true if route contains multiple procedures
248
+ */
249
+ export declare function isBatchRoute(route: Route): boolean;
250
+ /**
251
+ * Helper to create a type-safe route for a single procedure.
252
+ *
253
+ * @param path - Procedure path
254
+ * @param input - Procedure input
255
+ * @returns Route object
256
+ *
257
+ * @example
258
+ * ```typescript
259
+ * const route = createRoute(['users', 'get'], { id: '123' });
260
+ * // { users: { get: { id: '123' } } }
261
+ * ```
262
+ */
263
+ export declare function createRoute<TInput extends RouteLeaf>(path: ProcedurePath, input: TInput): Route;
264
+ /**
265
+ * Merge multiple routes into a single batched route.
266
+ *
267
+ * @param routes - Routes to merge
268
+ * @returns Merged route
269
+ */
270
+ export declare function mergeRoutes(...routes: Route[]): Route;
271
+ //# sourceMappingURL=call-types.d.ts.map