@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,212 @@
1
+ /**
2
+ * HTTP Status Code Utilities
3
+ *
4
+ * Utilities for working with HTTP status codes, including mappings
5
+ * and classification helpers.
6
+ */
7
+
8
+ import { HTTPStatus, HTTP } from "./constants.js";
9
+
10
+ /**
11
+ * HTTP Status Code to String Code Mapping
12
+ *
13
+ * Maps numeric status codes to semantic string codes.
14
+ */
15
+ export const HTTPStatusToCode: Record<HTTPStatus, string> = {
16
+ [HTTPStatus.UNKNOWN]: "UNKNOWN",
17
+ [HTTPStatus.CONTINUE]: "CONTINUE",
18
+ [HTTPStatus.SWITCHING_PROTOCOLS]: "SWITCHING_PROTOCOLS",
19
+ [HTTPStatus.PROCESSING]: "PROCESSING",
20
+ [HTTPStatus.EARLY_HINTS]: "EARLY_HINTS",
21
+ [HTTPStatus.RESPONSE_IS_TOO_LARGE]: "RESPONSE_IS_TOO_LARGE",
22
+ [HTTPStatus.OK]: "OK",
23
+ [HTTPStatus.CREATED]: "CREATED",
24
+ [HTTPStatus.ACCEPTED]: "ACCEPTED",
25
+ [HTTPStatus.NON_AUTHORITATIVE_INFORMATION]: "NON_AUTHORITATIVE_INFORMATION",
26
+ [HTTPStatus.NO_CONTENT]: "NO_CONTENT",
27
+ [HTTPStatus.RESET_CONTENT]: "RESET_CONTENT",
28
+ [HTTPStatus.PARTIAL_CONTENT]: "PARTIAL_CONTENT",
29
+ [HTTPStatus.MULTI_STATUS]: "MULTI_STATUS",
30
+ [HTTPStatus.ALREADY_REPORTED]: "ALREADY_REPORTED",
31
+ [HTTPStatus.IM_USED]: "IM_USED",
32
+ [HTTPStatus.MULTIPLE_CHOICES]: "MULTIPLE_CHOICES",
33
+ [HTTPStatus.MOVED_PERMANENTLY]: "MOVED_PERMANENTLY",
34
+ [HTTPStatus.FOUND]: "FOUND",
35
+ [HTTPStatus.SEE_OTHER]: "SEE_OTHER",
36
+ [HTTPStatus.NOT_MODIFIED]: "NOT_MODIFIED",
37
+ [HTTPStatus.USE_PROXY]: "USE_PROXY",
38
+ [HTTPStatus.TEMPORARY_REDIRECT]: "TEMPORARY_REDIRECT",
39
+ [HTTPStatus.PERMANENT_REDIRECT]: "PERMANENT_REDIRECT",
40
+ [HTTPStatus.BAD_REQUEST]: "BAD_REQUEST",
41
+ [HTTPStatus.UNAUTHORIZED]: "UNAUTHORIZED",
42
+ [HTTPStatus.FORBIDDEN]: "FORBIDDEN",
43
+ [HTTPStatus.NOT_FOUND]: "NOT_FOUND",
44
+ [HTTPStatus.METHOD_NOT_ALLOWED]: "METHOD_NOT_ALLOWED",
45
+ [HTTPStatus.NOT_ACCEPTABLE]: "NOT_ACCEPTABLE",
46
+ [HTTPStatus.PROXY_AUTHENTICATION_REQUIRED]: "PROXY_AUTHENTICATION_REQUIRED",
47
+ [HTTPStatus.REQUEST_TIMEOUT]: "REQUEST_TIMEOUT",
48
+ [HTTPStatus.CONFLICT]: "CONFLICT",
49
+ [HTTPStatus.GONE]: "GONE",
50
+ [HTTPStatus.LENGTH_REQUIRED]: "LENGTH_REQUIRED",
51
+ [HTTPStatus.PRECONDITION_FAILED]: "PRECONDITION_FAILED",
52
+ [HTTPStatus.PAYLOAD_TOO_LARGE]: "PAYLOAD_TOO_LARGE",
53
+ [HTTPStatus.URI_TOO_LONG]: "URI_TOO_LONG",
54
+ [HTTPStatus.UNSUPPORTED_MEDIA_TYPE]: "UNSUPPORTED_MEDIA_TYPE",
55
+ [HTTPStatus.RANGE_NOT_SATISFIABLE]: "RANGE_NOT_SATISFIABLE",
56
+ [HTTPStatus.EXPECTATION_FAILED]: "EXPECTATION_FAILED",
57
+ [HTTPStatus.IM_A_TEAPOT]: "IM_A_TEAPOT",
58
+ [HTTPStatus.MISDIRECTED_REQUEST]: "MISDIRECTED_REQUEST",
59
+ [HTTPStatus.UNPROCESSABLE_ENTITY]: "UNPROCESSABLE_ENTITY",
60
+ [HTTPStatus.LOCKED]: "LOCKED",
61
+ [HTTPStatus.FAILED_DEPENDENCY]: "FAILED_DEPENDENCY",
62
+ [HTTPStatus.TOO_EARLY]: "TOO_EARLY",
63
+ [HTTPStatus.UPGRADE_REQUIRED]: "UPGRADE_REQUIRED",
64
+ [HTTPStatus.PRECONDITION_REQUIRED]: "PRECONDITION_REQUIRED",
65
+ [HTTPStatus.TOO_MANY_REQUESTS]: "TOO_MANY_REQUESTS",
66
+ [HTTPStatus.REQUEST_HEADER_FIELDS_TOO_LARGE]:
67
+ "REQUEST_HEADER_FIELDS_TOO_LARGE",
68
+ [HTTPStatus.UNAVAILABLE_FOR_LEGAL_REASONS]: "UNAVAILABLE_FOR_LEGAL_REASONS",
69
+ [HTTPStatus.CLIENT_CLOSED_REQUEST]: "CLIENT_CLOSED_REQUEST",
70
+ [HTTPStatus.INTERNAL_SERVER_ERROR]: "INTERNAL_SERVER_ERROR",
71
+ [HTTPStatus.NOT_IMPLEMENTED]: "NOT_IMPLEMENTED",
72
+ [HTTPStatus.BAD_GATEWAY]: "BAD_GATEWAY",
73
+ [HTTPStatus.SERVICE_UNAVAILABLE]: "SERVICE_UNAVAILABLE",
74
+ [HTTPStatus.GATEWAY_TIMEOUT]: "GATEWAY_TIMEOUT",
75
+ [HTTPStatus.HTTP_VERSION_NOT_SUPPORTED]: "HTTP_VERSION_NOT_SUPPORTED",
76
+ [HTTPStatus.VARIANT_ALSO_NEGOTIATES]: "VARIANT_ALSO_NEGOTIATES",
77
+ [HTTPStatus.INSUFFICIENT_STORAGE]: "INSUFFICIENT_STORAGE",
78
+ [HTTPStatus.LOOP_DETECTED]: "LOOP_DETECTED",
79
+ [HTTPStatus.NOT_EXTENDED]: "NOT_EXTENDED",
80
+ [HTTPStatus.NETWORK_AUTHENTICATION_REQUIRED]:
81
+ "NETWORK_AUTHENTICATION_REQUIRED",
82
+ [HTTPStatus.HTTP_NETWORK_CONNECT_TIMEOUT_ERROR]:
83
+ "HTTP_NETWORK_CONNECT_TIMEOUT_ERROR",
84
+ } as const satisfies Record<HTTPStatus, string>;
85
+
86
+ /**
87
+ * Legacy alias for backwards compatibility
88
+ * @deprecated Use HTTPStatusToCode instead
89
+ */
90
+ export const HTTPCodeMap: typeof HTTPStatusToCode = HTTPStatusToCode;
91
+
92
+ /**
93
+ * String Code to HTTP Status Mapping (Reverse of HTTPStatusToCode)
94
+ *
95
+ * Maps semantic string codes back to numeric status codes.
96
+ */
97
+ export const CodeToHTTPStatus: Record<string, HTTPStatus> = Object.fromEntries(
98
+ Object.entries(HTTPStatusToCode).map(([status, code]) => [code, Number(status) as HTTPStatus])
99
+ ) as Record<string, HTTPStatus>;
100
+
101
+ /**
102
+ * Check if status code represents success (2xx)
103
+ */
104
+ export function isSuccessStatus(status: HTTPStatus): boolean {
105
+ return status >= HTTPStatus.OK && status < HTTPStatus.MULTIPLE_CHOICES;
106
+ }
107
+
108
+ /**
109
+ * Check if status code represents informational response (1xx)
110
+ */
111
+ export function isInformationalStatus(status: HTTPStatus): boolean {
112
+ return status >= HTTPStatus.CONTINUE && status < HTTPStatus.OK;
113
+ }
114
+
115
+ /**
116
+ * Check if status code represents redirection (3xx)
117
+ */
118
+ export function isRedirectStatus(status: HTTPStatus): boolean {
119
+ return status >= HTTPStatus.MULTIPLE_CHOICES && status < HTTPStatus.BAD_REQUEST;
120
+ }
121
+
122
+ /**
123
+ * Check if status code represents client error (4xx)
124
+ */
125
+ export function isClientErrorStatus(status: HTTPStatus): boolean {
126
+ return status >= HTTPStatus.BAD_REQUEST && status < HTTPStatus.INTERNAL_SERVER_ERROR;
127
+ }
128
+
129
+ /**
130
+ * Check if status code represents server error (5xx)
131
+ */
132
+ export function isServerErrorStatus(status: HTTPStatus): boolean {
133
+ return status >= HTTPStatus.INTERNAL_SERVER_ERROR && status < 600;
134
+ }
135
+
136
+ /**
137
+ * Check if status code represents any error (4xx or 5xx)
138
+ */
139
+ export function isErrorStatus(status: HTTPStatus): boolean {
140
+ return isClientErrorStatus(status) || isServerErrorStatus(status);
141
+ }
142
+
143
+ /**
144
+ * Check if status code is typically retryable
145
+ *
146
+ * Default policy: server errors and specific client errors (timeout, rate limit) are retryable.
147
+ * Can be overridden via retry middleware configuration.
148
+ */
149
+ export function isRetryableStatus(status: HTTPStatus): boolean {
150
+ // Server errors are generally retryable
151
+ if (isServerErrorStatus(status)) {
152
+ return true;
153
+ }
154
+
155
+ // Specific client errors that are retryable
156
+ if (
157
+ status === HTTPStatus.REQUEST_TIMEOUT ||
158
+ status === HTTPStatus.TOO_MANY_REQUESTS
159
+ ) {
160
+ return true;
161
+ }
162
+
163
+ return false;
164
+ }
165
+
166
+ /**
167
+ * Get semantic code string for a status
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * getStatusCode(HTTPStatus.OK) // "OK"
172
+ * getStatusCode(404) // "NOT_FOUND"
173
+ * getStatusCode(999) // "UNKNOWN"
174
+ * ```
175
+ */
176
+ export function getStatusCode(status: HTTPStatus): string {
177
+ return HTTPStatusToCode[status] ?? HTTPStatusToCode[HTTPStatus.UNKNOWN];
178
+ }
179
+
180
+ /**
181
+ * Get HTTP status from semantic code string
182
+ *
183
+ * @example
184
+ * ```typescript
185
+ * getStatusFromCode("OK") // HTTPStatus.OK (200)
186
+ * getStatusFromCode("NOT_FOUND") // HTTPStatus.NOT_FOUND (404)
187
+ * getStatusFromCode("INVALID") // HTTPStatus.UNKNOWN (0)
188
+ * ```
189
+ */
190
+ export function getStatusFromCode(code: string): HTTPStatus {
191
+ return CodeToHTTPStatus[code] ?? HTTPStatus.UNKNOWN;
192
+ }
193
+
194
+ /**
195
+ * Format HTTP error message
196
+ *
197
+ * @example
198
+ * ```typescript
199
+ * formatHTTPError(HTTPStatus.NOT_FOUND) // "HTTP 404"
200
+ * formatHTTPError(500) // "HTTP 500"
201
+ * ```
202
+ */
203
+ export function formatHTTPError(status: HTTPStatus): string {
204
+ return `${HTTP} ${status}`;
205
+ }
206
+
207
+ /**
208
+ * Validate if a number is a valid HTTP status code
209
+ */
210
+ export function isValidHTTPStatus(status: number): status is HTTPStatus {
211
+ return status in HTTPStatusToCode;
212
+ }
@@ -0,0 +1,255 @@
1
+ /**
2
+ * HTTP Strategy Interfaces
3
+ *
4
+ * Defines extensible, bidirectional strategies for URL mapping
5
+ * and HTTP method selection. These strategies ensure client
6
+ * and server use consistent, inverse operations.
7
+ */
8
+
9
+ import type { Method } from "../../../client/types.js";
10
+ import { HTTPMethod } from "./constants.js";
11
+
12
+ /**
13
+ * URL Strategy (Client-side)
14
+ *
15
+ * Converts Method → URL
16
+ */
17
+ export type UrlStrategy = (method: Method, baseUrl: string) => string;
18
+
19
+ /**
20
+ * URL Parser Strategy (Server-side)
21
+ *
22
+ * Converts URL → Method (inverse of UrlStrategy)
23
+ */
24
+ export type UrlParserStrategy = (url: string, httpMethod: HTTPMethod) => Method | null;
25
+
26
+ /**
27
+ * HTTP Method Strategy (Client-side)
28
+ *
29
+ * Converts Method → HTTP method verb
30
+ */
31
+ export type HttpMethodStrategy = (method: Method) => HTTPMethod;
32
+
33
+ /**
34
+ * HTTP Method Parser Strategy (Server-side)
35
+ *
36
+ * Converts HTTP method verb → operation hints (inverse of HttpMethodStrategy)
37
+ */
38
+ export type HttpMethodParserStrategy = (httpMethod: HTTPMethod) => Partial<Method>;
39
+
40
+ /**
41
+ * Bidirectional URL Pattern
42
+ *
43
+ * Encapsulates both URL generation (client) and parsing (server)
44
+ * to ensure they remain algorithmic inverses.
45
+ */
46
+ export interface UrlPattern {
47
+ /** Template pattern (e.g., "/{version?}/{service}/{operation}") */
48
+ readonly template: string;
49
+
50
+ /** Generate URL from Method (client-side) */
51
+ format(method: Method, baseUrl: string): string;
52
+
53
+ /** Parse URL back to Method (server-side) */
54
+ parse(url: string, httpMethod: HTTPMethod): Method | null;
55
+ }
56
+
57
+ /**
58
+ * Default URL Pattern: /{version?}/{service}/{operation}
59
+ *
60
+ * Examples:
61
+ * - { service: "users", operation: "get" } → "/users/get"
62
+ * - { service: "users", operation: "get", version: "v2" } → "/v2/users/get"
63
+ */
64
+ export const defaultUrlPattern: UrlPattern = {
65
+ template: "/{version?}/{service}/{operation}",
66
+
67
+ format(method: Method, baseUrl: string): string {
68
+ const parts = [baseUrl.replace(/\/$/, "")];
69
+
70
+ if (method.version) {
71
+ parts.push(method.version);
72
+ }
73
+
74
+ parts.push(method.service, method.operation);
75
+
76
+ return parts.join("/");
77
+ },
78
+
79
+ parse(url: string, _httpMethod: HTTPMethod): Method | null {
80
+ // Remove base URL and query params
81
+ const path = url.split("?")[0];
82
+ const segments = path?.split("/").filter(Boolean) ?? [];
83
+
84
+ // Minimum: /service/operation (2 segments)
85
+ if (segments.length < 2) {
86
+ return null;
87
+ }
88
+
89
+ // Pattern: [version?]/service/operation
90
+ if (segments.length === 2) {
91
+ return {
92
+ service: segments[0]!,
93
+ operation: segments[1]!,
94
+ };
95
+ }
96
+
97
+ if (segments.length === 3) {
98
+ return {
99
+ version: segments[0]!,
100
+ service: segments[1]!,
101
+ operation: segments[2]!,
102
+ };
103
+ }
104
+
105
+ return null;
106
+ },
107
+ };
108
+
109
+ /**
110
+ * RESTful URL Pattern: /{version?}/{service}/{id?}
111
+ *
112
+ * Infers operation from HTTP method and presence of ID:
113
+ * - GET /users → list
114
+ * - GET /users/123 → get
115
+ * - POST /users → create
116
+ * - PUT /users/123 → update
117
+ * - PATCH /users/123 → patch
118
+ * - DELETE /users/123 → delete
119
+ */
120
+ export const restfulUrlPattern: UrlPattern = {
121
+ template: "/{version?}/{service}/{id?}",
122
+
123
+ format(method: Method, baseUrl: string): string {
124
+ const parts = [baseUrl.replace(/\/$/, "")];
125
+
126
+ if (method.version) {
127
+ parts.push(method.version);
128
+ }
129
+
130
+ parts.push(method.service);
131
+
132
+ // For RESTful, operation might encode the ID
133
+ // This is simplified - real implementation would need ID extraction
134
+ if (method.operation !== "list" && method.operation !== "create") {
135
+ // Assume operation is actually the ID for get/update/delete
136
+ parts.push(method.operation);
137
+ }
138
+
139
+ return parts.join("/");
140
+ },
141
+
142
+ parse(url: string, httpMethod: HTTPMethod): Method | null {
143
+ const path = url.split("?")[0];
144
+ const segments = path?.split("/").filter(Boolean) ?? [];
145
+
146
+ if (segments.length < 1) {
147
+ return null;
148
+ }
149
+
150
+ let version: string | undefined;
151
+ let service: string;
152
+ let id: string | undefined;
153
+
154
+ // Pattern: [version?]/service/[id?]
155
+ if (segments.length === 1) {
156
+ service = segments[0]!;
157
+ } else if (segments.length === 2) {
158
+ // Could be version/service or service/id
159
+ // Heuristic: if starts with 'v', treat as version
160
+ if (segments[0]!.startsWith("v")) {
161
+ version = segments[0]!;
162
+ service = segments[1]!;
163
+ } else {
164
+ service = segments[0]!;
165
+ id = segments[1]!;
166
+ }
167
+ } else {
168
+ version = segments[0]!;
169
+ service = segments[1]!;
170
+ id = segments[2]!;
171
+ }
172
+
173
+ // Infer operation from HTTP method and ID presence
174
+ const operation = inferRESTOperation(httpMethod, !!id);
175
+
176
+ return {
177
+ ...(version && { version }),
178
+ service,
179
+ operation,
180
+ // Store ID in metadata or custom field if needed
181
+ };
182
+ },
183
+ };
184
+
185
+ /**
186
+ * RESTful HTTP Method Strategy
187
+ *
188
+ * Maps operation names to HTTP methods:
189
+ * - get/list/find/watch → GET
190
+ * - create → POST
191
+ * - update → PUT
192
+ * - patch → PATCH
193
+ * - delete/remove → DELETE
194
+ * - default → POST
195
+ */
196
+ export const restfulHttpMethodStrategy: HttpMethodStrategy = (method) => {
197
+ const op = method.operation.toLowerCase();
198
+
199
+ if (op === "get" || op === "list" || op === "find" || op === "watch") {
200
+ return HTTPMethod.GET;
201
+ }
202
+
203
+ if (op === "create") {
204
+ return HTTPMethod.POST;
205
+ }
206
+
207
+ if (op === "update") {
208
+ return HTTPMethod.PUT;
209
+ }
210
+
211
+ if (op === "patch") {
212
+ return HTTPMethod.PATCH;
213
+ }
214
+
215
+ if (op === "delete" || op === "remove") {
216
+ return HTTPMethod.DELETE;
217
+ }
218
+
219
+ // Default to POST for RPC-style operations
220
+ return HTTPMethod.POST;
221
+ };
222
+
223
+ /**
224
+ * POST-only HTTP Method Strategy
225
+ *
226
+ * All operations use POST (simple RPC style).
227
+ */
228
+ export const postOnlyStrategy: HttpMethodStrategy = () => HTTPMethod.POST;
229
+
230
+ /**
231
+ * Infer REST operation from HTTP method and ID presence
232
+ */
233
+ function inferRESTOperation(httpMethod: HTTPMethod, hasId: boolean): string {
234
+ switch (httpMethod) {
235
+ case HTTPMethod.GET:
236
+ return hasId ? "get" : "list";
237
+ case HTTPMethod.POST:
238
+ return "create";
239
+ case HTTPMethod.PUT:
240
+ return "update";
241
+ case HTTPMethod.PATCH:
242
+ return "patch";
243
+ case HTTPMethod.DELETE:
244
+ return "delete";
245
+ default:
246
+ return "unknown";
247
+ }
248
+ }
249
+
250
+ /**
251
+ * Validate payload can be JSON stringified
252
+ */
253
+ export function isValidJSONPayload(payload: unknown): boolean {
254
+ return typeof payload === "object" && payload !== null;
255
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Local Client Transport Adapter
3
+ *
4
+ * Public API for Local client adapter.
5
+ */
6
+
7
+ // Types
8
+ export type { LocalTransportOptions, Handler } from "./types.js";
9
+
10
+ // Transport
11
+ export { LocalTransport } from "./transport.js";
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Local Transport Implementation
3
+ *
4
+ * In-process RPC with handler registry - no network calls!
5
+ */
6
+
7
+ import type { Transport, Message, ResponseItem, Method } from "../../../client/types.js";
8
+ import type { Handler, LocalTransportOptions } from "./types.js";
9
+ import { methodKey } from "./types.js";
10
+ import type { ProcedureRegistry } from "../../../procedures/registry.js";
11
+ import type { AnyProcedure } from "../../../procedures/types.js";
12
+ import { InvocationError, invokeProcedure, isAsyncIterable } from "../../../procedures/invoke.js";
13
+ import { methodToPath } from "../../../server/method.js";
14
+
15
+ function successItem<TRes>(id: string, payload: unknown): ResponseItem<TRes> {
16
+ return { id, status: { type: "success", code: 200 }, payload: payload as TRes, metadata: {} };
17
+ }
18
+
19
+ function errorItem<TRes>(id: string, code: string, message: string): ResponseItem<TRes> {
20
+ // Local handlers do not benefit from retries
21
+ return { id, status: { type: "error", code, message, retryable: false }, payload: null as TRes, metadata: {} };
22
+ }
23
+
24
+ /**
25
+ * Local Transport - executes handlers in-process without network calls.
26
+ *
27
+ * Features:
28
+ * - No network - instant execution
29
+ * - Sync and async handler support
30
+ * - Handler registry (register/unregister)
31
+ * - Same Transport interface as HTTP/gRPC
32
+ * - Perfect for testing!
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const transport = new LocalTransport();
37
+ *
38
+ * transport.register(
39
+ * { service: "users", operation: "get" },
40
+ * async ({ id }) => database.users.findById(id)
41
+ * );
42
+ *
43
+ * const client = new Client({ transport });
44
+ * const user = await client.call(
45
+ * { service: "users", operation: "get" },
46
+ * { id: 123 }
47
+ * );
48
+ * ```
49
+ */
50
+ export class LocalTransport implements Transport {
51
+ readonly name = "local";
52
+
53
+ private readonly handlers = new Map<string, Handler>();
54
+ private readonly throwOnMissing: boolean;
55
+ private readonly registry: ProcedureRegistry | undefined;
56
+
57
+ constructor(options: LocalTransportOptions = {}) {
58
+ this.throwOnMissing = options.throwOnMissing !== false;
59
+ this.registry = options.registry;
60
+
61
+ // Register pre-configured handlers. A key without a version ("users.get") gets the
62
+ // empty version, as methodKey() makes it: before, such a key was never found.
63
+ if (options.handlers) {
64
+ for (const [key, handler] of Object.entries(options.handlers)) {
65
+ this.handlers.set(key.includes(":") ? key : `:${key}`, handler);
66
+ }
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Register a handler for a method.
72
+ *
73
+ * @param method - Method to handle
74
+ * @param handler - Handler function (sync, async, or an async generator for a stream)
75
+ */
76
+ register<TReq, TRes>(method: Method, handler: Handler<TReq, TRes>): void {
77
+ this.handlers.set(methodKey(method), handler as Handler);
78
+ }
79
+
80
+ /**
81
+ * Unregister a handler.
82
+ *
83
+ * @param method - Method to unregister
84
+ */
85
+ unregister(method: Method): void {
86
+ this.handlers.delete(methodKey(method));
87
+ }
88
+
89
+ /**
90
+ * Check if handler is registered.
91
+ *
92
+ * @param method - Method to check
93
+ */
94
+ has(method: Method): boolean {
95
+ return this.handlers.has(methodKey(method)) || this.procedureFor(method) !== undefined;
96
+ }
97
+
98
+ /** The procedure of the registry at the path of a method. */
99
+ private procedureFor(method: Method): AnyProcedure | undefined {
100
+ if (!this.registry) return undefined;
101
+ return this.registry.get(methodToPath(method));
102
+ }
103
+
104
+ /**
105
+ * Send message to local handler.
106
+ *
107
+ * A handler (or a procedure) that gives an async iterable gives a stream: one response item
108
+ * for each value. An error ends the stream with an error item.
109
+ *
110
+ * @param message - Message to send
111
+ * @returns Async iterable of response items
112
+ */
113
+ async *send<TReq, TRes>(message: Message<TReq>): AsyncIterable<ResponseItem<TRes>> {
114
+ const key = methodKey(message.method);
115
+ const handler = this.handlers.get(key);
116
+ const procedure = handler ? undefined : this.procedureFor(message.method);
117
+
118
+ // Handler not found
119
+ if (!handler && !procedure) {
120
+ if (this.throwOnMissing) {
121
+ yield errorItem<TRes>(message.id, "NOT_FOUND", `No handler registered for ${key}`);
122
+ return;
123
+ }
124
+
125
+ // Silently return empty response
126
+ return;
127
+ }
128
+
129
+ // Check if cancelled
130
+ if (message.signal?.aborted) {
131
+ yield errorItem<TRes>(message.id, "ABORTED", "Request was aborted");
132
+ return;
133
+ }
134
+
135
+ try {
136
+ let values: AsyncIterable<unknown> | undefined;
137
+ let value: unknown;
138
+ if (procedure) {
139
+ const output = await invokeProcedure(procedure, message.payload, {
140
+ registry: this.registry,
141
+ metadata: message.metadata,
142
+ signal: message.signal,
143
+ });
144
+ if (output.kind === "stream") values = output.items;
145
+ else value = output.value;
146
+ } else {
147
+ // Execute handler (may be sync, async or an async generator)
148
+ const result = await handler!(message.payload, message);
149
+ if (isAsyncIterable(result)) values = result;
150
+ else value = result;
151
+ }
152
+
153
+ if (values === undefined) {
154
+ yield successItem<TRes>(message.id, value);
155
+ return;
156
+ }
157
+ for await (const item of values) {
158
+ if (message.signal?.aborted) {
159
+ yield errorItem<TRes>(message.id, "ABORTED", "Request was aborted");
160
+ return;
161
+ }
162
+ yield successItem<TRes>(message.id, item);
163
+ }
164
+ } catch (error) {
165
+ // The handler threw, or the invocation failed (its code: VALIDATION_ERROR, ABORTED and so on)
166
+ const code = error instanceof InvocationError ? error.code : "HANDLER_ERROR";
167
+ yield errorItem<TRes>(message.id, code, error instanceof Error ? error.message : "Unknown error");
168
+ }
169
+ }
170
+
171
+ async close(): Promise<void> {
172
+ // No resources to clean up
173
+ }
174
+
175
+ /**
176
+ * Clear all handlers.
177
+ */
178
+ clear(): void {
179
+ this.handlers.clear();
180
+ }
181
+
182
+ /**
183
+ * Get all registered method keys.
184
+ */
185
+ getMethods(): string[] {
186
+ return Array.from(this.handlers.keys());
187
+ }
188
+ }