@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,279 @@
1
+ # Universal Error System
2
+
3
+ Protocol-agnostic error handling with rich metadata and bidirectional HTTP status mapping.
4
+
5
+ ## Zero Magic Strings & Numbers
6
+
7
+ - **ErrorCode enum** - All error codes use enum values (no string literals)
8
+ - **HTTPStatus enum** - All HTTP status codes use enum values (no magic numbers)
9
+ - **Single source of truth** - `HTTP_STATUS_ERROR_MAP` defines bidirectional mapping
10
+
11
+ ## Architecture
12
+
13
+ ```
14
+ ┌─────────────────────────────────────────────────────────┐
15
+ │ ErrorCode Enum │
16
+ │ (TIMEOUT, NOT_FOUND, INTERNAL_ERROR, etc.) │
17
+ └─────────────────────────────────────────────────────────┘
18
+ │
19
+ ▼
20
+ ┌─────────────────────────────────────────────────────────┐
21
+ │ ERROR_REGISTRY │
22
+ │ Maps ErrorCode → ErrorMetadata (summary, detail, etc.) │
23
+ └─────────────────────────────────────────────────────────┘
24
+ │
25
+ ┌───────────┴───────────┐
26
+ ▼ ▼
27
+ ┌─────────────────────────┐ ┌──────────────────────────┐
28
+ │ HTTP_STATUS_ERROR_MAP │ │ HTTPStatus Enum │
29
+ │ Bidirectional mapping │ │ (OK=200, NOT_FOUND=404)│
30
+ └─────────────────────────┘ └──────────────────────────┘
31
+ │ │
32
+ ▼ ▼
33
+ httpStatusToErrorCode errorCodeToHTTPStatus
34
+ (client-side) (server-side)
35
+ ```
36
+
37
+ ## Quick Start
38
+
39
+ ### Client Side: Handle HTTP responses
40
+
41
+ ```typescript
42
+ import { httpStatusToErrorCode, createError, HTTPStatus } from "@common/client/errors";
43
+
44
+ // Convert HTTP status to error code
45
+ const code = httpStatusToErrorCode(404); // ErrorCode.NOT_FOUND
46
+
47
+ // Create rich error with metadata
48
+ const error = createError(code, {
49
+ requestId: "req-123",
50
+ transport: "http",
51
+ method: { service: "users", operation: "get" },
52
+ });
53
+
54
+ // Access rich metadata
55
+ console.log(error.metadata.summary); // "Resource not found"
56
+ console.log(error.metadata.userMessage); // User-friendly message
57
+ console.log(error.metadata.devMessage); // Developer diagnostic
58
+ console.log(error.metadata.suggestions); // ["Check URL spelling", ...]
59
+ console.log(error.metadata.retryable); // false
60
+ ```
61
+
62
+ ### Server Side: Return appropriate HTTP status
63
+
64
+ ```typescript
65
+ import { errorCodeToHTTPStatus, ErrorCode, HTTPStatus } from "@common/client/errors";
66
+
67
+ // Map error code to HTTP status
68
+ function handleError(code: ErrorCode): number {
69
+ const status = errorCodeToHTTPStatus(code);
70
+ return status; // Returns HTTPStatus enum value (404, 500, etc.)
71
+ }
72
+
73
+ // Example
74
+ handleError(ErrorCode.NOT_FOUND); // HTTPStatus.NOT_FOUND (404)
75
+ handleError(ErrorCode.INTERNAL_ERROR); // HTTPStatus.INTERNAL_SERVER_ERROR (500)
76
+ handleError(ErrorCode.UNAUTHORIZED); // HTTPStatus.UNAUTHORIZED (401)
77
+ ```
78
+
79
+ ### Create Errors from Exceptions
80
+
81
+ ```typescript
82
+ import { createErrorFromException } from "@common/client/errors";
83
+
84
+ try {
85
+ await fetch("https://api.example.com/data");
86
+ } catch (err) {
87
+ const richError = createErrorFromException(err as Error, {
88
+ transport: "http",
89
+ requestId: "req-456",
90
+ });
91
+
92
+ // Automatically categorized based on error message
93
+ // e.g., "timeout" → ErrorCode.TIMEOUT, "network" → ErrorCode.NETWORK_ERROR
94
+ }
95
+ ```
96
+
97
+ ## File Structure
98
+
99
+ ```
100
+ common/src/client/errors/
101
+ ├── README.md ← You are here
102
+ ├── index.ts ← Public API exports
103
+ ├── codes.ts ← ErrorCode enum (70+ codes)
104
+ ├── http-status.ts ← HTTPStatus enum (all HTTP status codes)
105
+ ├── types.ts ← TypeScript interfaces
106
+ ├── registry.ts ← ERROR_REGISTRY with full metadata
107
+ ├── http-errors.ts ← HTTP-specific errors + bidirectional mapping
108
+ └── factory.ts ← Error creation functions
109
+ ```
110
+
111
+ ## Key Features
112
+
113
+ ### 1. Rich Error Metadata
114
+
115
+ Every error includes:
116
+ - **summary**: Brief one-line description
117
+ - **detail**: Full explanation of what went wrong
118
+ - **category**: Network, Client, Server, Protocol, Auth, etc.
119
+ - **severity**: Info, Warning, Error, Critical
120
+ - **retryable**: Whether the operation can be retried
121
+ - **userMessage**: User-friendly message for end users
122
+ - **devMessage**: Detailed diagnostic for developers
123
+ - **suggestions**: Array of actionable suggestions
124
+ - **httpStatus**: HTTP status code (if applicable)
125
+
126
+ ### 2. Protocol-Agnostic
127
+
128
+ Works across all transports:
129
+ - HTTP/REST
130
+ - WebSocket
131
+ - gRPC
132
+ - Local/in-memory
133
+
134
+ ### 3. Type-Safe
135
+
136
+ Full TypeScript support:
137
+ ```typescript
138
+ // All enums are type-safe
139
+ const code: ErrorCode = ErrorCode.TIMEOUT;
140
+ const status: HTTPStatus = HTTPStatus.NOT_FOUND;
141
+
142
+ // Metadata is fully typed
143
+ const metadata: ErrorMetadata = getErrorMetadata(ErrorCode.TIMEOUT);
144
+ ```
145
+
146
+ ### 4. Bidirectional HTTP Mapping
147
+
148
+ Single source of truth for HTTP status ↔ error code mapping:
149
+
150
+ ```typescript
151
+ // Client: HTTP status → Error code
152
+ httpStatusToErrorCode(404) // ErrorCode.NOT_FOUND
153
+
154
+ // Server: Error code → HTTP status
155
+ errorCodeToHTTPStatus(ErrorCode.NOT_FOUND) // HTTPStatus.NOT_FOUND (404)
156
+ ```
157
+
158
+ ## Error Categories
159
+
160
+ - **NETWORK**: Connection failures, DNS errors
161
+ - **CLIENT**: Bad requests, validation errors (4xx equivalent)
162
+ - **SERVER**: Internal errors, service unavailable (5xx equivalent)
163
+ - **PROTOCOL**: Parsing, serialization errors
164
+ - **AUTH**: Authentication, authorization failures
165
+ - **RATE_LIMIT**: Too many requests
166
+ - **TIMEOUT**: Request timeouts, deadlines exceeded
167
+ - **CANCELLED**: Aborted requests
168
+ - **UNKNOWN**: Uncategorized errors
169
+
170
+ ## Examples
171
+
172
+ ### Check if error is retryable
173
+
174
+ ```typescript
175
+ import { isRetryable } from "@common/client/errors";
176
+
177
+ if (isRetryable(error)) {
178
+ // Retry logic
179
+ await retryRequest();
180
+ }
181
+ ```
182
+
183
+ ### Filter errors by category
184
+
185
+ ```typescript
186
+ import { isErrorCategory, ErrorCategory } from "@common/client/errors";
187
+
188
+ if (isErrorCategory(error, ErrorCategory.NETWORK)) {
189
+ // Handle network-specific errors
190
+ showOfflineMessage();
191
+ }
192
+ ```
193
+
194
+ ### Format for logging
195
+
196
+ ```typescript
197
+ import { formatError } from "@common/client/errors";
198
+
199
+ console.error(formatError(error, true)); // include stack trace
200
+ ```
201
+
202
+ ## Best Practices
203
+
204
+ 1. **Always use enum values** - Never use string literals or magic numbers
205
+ 2. **Use the registry** - Don't create error metadata manually
206
+ 3. **Provide context** - Include requestId, transport, method when creating errors
207
+ 4. **Check retryable flag** - Respect the metadata when implementing retry logic
208
+ 5. **Use suggestions** - Display error.metadata.suggestions to help users resolve issues
209
+
210
+ ## Adding New Errors
211
+
212
+ 1. Add to `ErrorCode` enum in `codes.ts`
213
+ 2. Add metadata to `ERROR_REGISTRY` in `registry.ts` or `HTTP_ERROR_REGISTRY` in `http-errors.ts`
214
+ 3. If HTTP-related, add to `HTTP_STATUS_ERROR_MAP` in `http-errors.ts`
215
+
216
+ Example:
217
+ ```typescript
218
+ // 1. Add to ErrorCode enum
219
+ export enum ErrorCode {
220
+ // ... existing codes
221
+ MY_NEW_ERROR = "MY_NEW_ERROR",
222
+ }
223
+
224
+ // 2. Add to registry
225
+ export const ERROR_REGISTRY: ErrorRegistry = {
226
+ // ... existing errors
227
+ [ErrorCode.MY_NEW_ERROR]: defineError(ErrorCode.MY_NEW_ERROR, {
228
+ summary: "My new error",
229
+ detail: "Detailed explanation...",
230
+ category: ErrorCategory.CLIENT,
231
+ retryable: false,
232
+ severity: ErrorSeverity.ERROR,
233
+ userMessage: "User-friendly message",
234
+ devMessage: "Developer diagnostic",
235
+ suggestions: ["Suggestion 1", "Suggestion 2"],
236
+ }),
237
+ };
238
+ ```
239
+
240
+ ## Server Usage
241
+
242
+ The server can import and use the same error system:
243
+
244
+ ```typescript
245
+ import {
246
+ ErrorCode,
247
+ HTTPStatus,
248
+ errorCodeToHTTPStatus
249
+ } from "@common/server";
250
+
251
+ // Map internal error to HTTP status
252
+ function setResponseStatus(error: RichError, response: Response): void {
253
+ const status = errorCodeToHTTPStatus(error.code as ErrorCode);
254
+ response.status(status);
255
+ }
256
+ ```
257
+
258
+ ## Migration from Old System
259
+
260
+ Before:
261
+ ```typescript
262
+ // ❌ Magic strings and numbers
263
+ if (error.code === "NOT_FOUND") {
264
+ res.status(404).json({ error: "Not found" });
265
+ }
266
+ ```
267
+
268
+ After:
269
+ ```typescript
270
+ // ✅ Type-safe enums
271
+ if (error.code === ErrorCode.NOT_FOUND) {
272
+ const status = errorCodeToHTTPStatus(ErrorCode.NOT_FOUND);
273
+ res.status(status).json({
274
+ error: error.metadata.userMessage,
275
+ code: error.code,
276
+ retryable: error.metadata.retryable,
277
+ });
278
+ }
279
+ ```
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Error Code Enums
3
+ *
4
+ * Comprehensive enum of ALL error codes.
5
+ * NO MAGIC STRINGS - use these enums everywhere!
6
+ */
7
+
8
+ /**
9
+ * Universal Error Codes
10
+ *
11
+ * Protocol-agnostic error codes that work across all transports.
12
+ */
13
+ export enum ErrorCode {
14
+ // Network errors
15
+ NETWORK_ERROR = "NETWORK_ERROR",
16
+ CONNECTION_REFUSED = "CONNECTION_REFUSED",
17
+ DNS_ERROR = "DNS_ERROR",
18
+
19
+ // Timeout errors
20
+ TIMEOUT = "TIMEOUT",
21
+ CONNECTION_TIMEOUT = "CONNECTION_TIMEOUT",
22
+ READ_TIMEOUT = "READ_TIMEOUT",
23
+ DEADLINE_EXCEEDED = "DEADLINE_EXCEEDED",
24
+
25
+ // Cancellation
26
+ ABORTED = "ABORTED",
27
+
28
+ // Protocol/parsing errors
29
+ PARSE_ERROR = "PARSE_ERROR",
30
+ SERIALIZE_ERROR = "SERIALIZE_ERROR",
31
+ INVALID_RESPONSE = "INVALID_RESPONSE",
32
+ PROTOCOL_ERROR = "PROTOCOL_ERROR",
33
+
34
+ // Client errors (4xx equivalent)
35
+ BAD_REQUEST = "BAD_REQUEST",
36
+ UNAUTHORIZED = "UNAUTHORIZED",
37
+ FORBIDDEN = "FORBIDDEN",
38
+ NOT_FOUND = "NOT_FOUND",
39
+ METHOD_NOT_ALLOWED = "METHOD_NOT_ALLOWED",
40
+ NOT_ACCEPTABLE = "NOT_ACCEPTABLE",
41
+ PROXY_AUTHENTICATION_REQUIRED = "PROXY_AUTHENTICATION_REQUIRED",
42
+ CONFLICT = "CONFLICT",
43
+ GONE = "GONE",
44
+ LENGTH_REQUIRED = "LENGTH_REQUIRED",
45
+ PRECONDITION_FAILED = "PRECONDITION_FAILED",
46
+ PAYLOAD_TOO_LARGE = "PAYLOAD_TOO_LARGE",
47
+ URI_TOO_LONG = "URI_TOO_LONG",
48
+ UNSUPPORTED_MEDIA_TYPE = "UNSUPPORTED_MEDIA_TYPE",
49
+ RANGE_NOT_SATISFIABLE = "RANGE_NOT_SATISFIABLE",
50
+ EXPECTATION_FAILED = "EXPECTATION_FAILED",
51
+ IM_A_TEAPOT = "IM_A_TEAPOT",
52
+ MISDIRECTED_REQUEST = "MISDIRECTED_REQUEST",
53
+ UNPROCESSABLE_ENTITY = "UNPROCESSABLE_ENTITY",
54
+ LOCKED = "LOCKED",
55
+ FAILED_DEPENDENCY = "FAILED_DEPENDENCY",
56
+ TOO_EARLY = "TOO_EARLY",
57
+ UPGRADE_REQUIRED = "UPGRADE_REQUIRED",
58
+ PRECONDITION_REQUIRED = "PRECONDITION_REQUIRED",
59
+ TOO_MANY_REQUESTS = "TOO_MANY_REQUESTS",
60
+ REQUEST_HEADER_FIELDS_TOO_LARGE = "REQUEST_HEADER_FIELDS_TOO_LARGE",
61
+ UNAVAILABLE_FOR_LEGAL_REASONS = "UNAVAILABLE_FOR_LEGAL_REASONS",
62
+ CLIENT_CLOSED_REQUEST = "CLIENT_CLOSED_REQUEST",
63
+
64
+ // Server errors (5xx equivalent)
65
+ INTERNAL_ERROR = "INTERNAL_ERROR",
66
+ NOT_IMPLEMENTED = "NOT_IMPLEMENTED",
67
+ BAD_GATEWAY = "BAD_GATEWAY",
68
+ SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE",
69
+ GATEWAY_TIMEOUT = "GATEWAY_TIMEOUT",
70
+ HTTP_VERSION_NOT_SUPPORTED = "HTTP_VERSION_NOT_SUPPORTED",
71
+ VARIANT_ALSO_NEGOTIATES = "VARIANT_ALSO_NEGOTIATES",
72
+ INSUFFICIENT_STORAGE = "INSUFFICIENT_STORAGE",
73
+ LOOP_DETECTED = "LOOP_DETECTED",
74
+ NOT_EXTENDED = "NOT_EXTENDED",
75
+ NETWORK_AUTHENTICATION_REQUIRED = "NETWORK_AUTHENTICATION_REQUIRED",
76
+ HTTP_NETWORK_CONNECT_TIMEOUT = "HTTP_NETWORK_CONNECT_TIMEOUT",
77
+
78
+ // Configuration errors
79
+ INVALID_CONFIG = "INVALID_CONFIG",
80
+ INVALID_URL = "INVALID_URL",
81
+ INVALID_METHOD = "INVALID_METHOD",
82
+
83
+ // HTTP-specific
84
+ HTTP_ERROR = "HTTP_ERROR",
85
+
86
+ // Unknown
87
+ UNKNOWN = "UNKNOWN",
88
+ }
@@ -0,0 +1,263 @@
1
+ /**
2
+ * Error Factory Functions
3
+ *
4
+ * Create rich errors from error codes with full metadata.
5
+ * Zero magic strings - everything driven by registry.
6
+ */
7
+
8
+ import {
9
+ type RichError,
10
+ type ErrorContext,
11
+ type ErrorMetadata,
12
+ } from "./types.js";
13
+ import { getErrorMetadata } from "./registry.js";
14
+ import { httpStatusToErrorCode } from "./http-errors.js";
15
+ import { ErrorCode } from "./codes.js";
16
+
17
+ /**
18
+ * Create a rich error from an error code.
19
+ *
20
+ * @param code - Error code from registry
21
+ * @param context - Runtime context (optional)
22
+ * @param cause - Underlying error cause (optional)
23
+ * @returns Rich error with full metadata
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const error = createError("TIMEOUT", {
28
+ * requestId: "req-123",
29
+ * transport: "http",
30
+ * });
31
+ *
32
+ * console.log(error.metadata.summary); // "Request timed out"
33
+ * console.log(error.metadata.userMessage); // "The request took too long..."
34
+ * console.log(error.metadata.suggestions); // ["Try again with longer timeout", ...]
35
+ * ```
36
+ */
37
+ export function createError(
38
+ code: string,
39
+ context?: Partial<ErrorContext>,
40
+ cause?: Error
41
+ ): RichError {
42
+ const metadata = getErrorMetadata(code);
43
+
44
+ const fullContext: ErrorContext = {
45
+ timestamp: Date.now(),
46
+ ...context,
47
+ };
48
+
49
+ return {
50
+ code,
51
+ metadata,
52
+ context: fullContext,
53
+ ...(cause && { cause }),
54
+ };
55
+ }
56
+
57
+ /**
58
+ * Create error from HTTP status code.
59
+ *
60
+ * Uses registry lookup - zero magic strings!
61
+ *
62
+ * @param status - HTTP status code
63
+ * @param context - Runtime context
64
+ * @returns Rich error with appropriate error code
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * const error = createErrorFromHTTPStatus(404, {
69
+ * requestId: "req-123",
70
+ * method: { service: "users", operation: "get" },
71
+ * });
72
+ * ```
73
+ */
74
+ export function createErrorFromHTTPStatus(
75
+ status: number,
76
+ context?: Partial<ErrorContext>
77
+ ): RichError {
78
+ // Use registry - no magic strings!
79
+ const code = httpStatusToErrorCode(status);
80
+ return createError(code, context);
81
+ }
82
+
83
+ export type ErrorPattern = {
84
+ code: ErrorCode;
85
+ detect: (name: string, message: string) => boolean;
86
+ }
87
+
88
+ /**
89
+ * Error detection patterns.
90
+ *
91
+ * Maps error characteristics to error codes.
92
+ * Uses ErrorCode enum - NO MAGIC STRINGS!
93
+ */
94
+ const ERROR_PATTERNS : ErrorPattern[] = [
95
+ {
96
+ code: ErrorCode.ABORTED,
97
+ detect: (name: string, message: string) =>
98
+ name === "aborterror" || message.includes("abort"),
99
+ },
100
+ {
101
+ code: ErrorCode.TIMEOUT,
102
+ detect: (name: string, message: string) =>
103
+ name === "timeouterror" ||
104
+ message.includes("timeout") ||
105
+ message.includes("timed out"),
106
+ },
107
+ {
108
+ code: ErrorCode.DNS_ERROR,
109
+ detect: (_name: string, message: string) =>
110
+ message.includes("dns") ||
111
+ message.includes("enotfound") ||
112
+ message.includes("getaddrinfo"),
113
+ },
114
+ {
115
+ code: ErrorCode.CONNECTION_REFUSED,
116
+ detect: (_name: string, message: string) =>
117
+ message.includes("econnrefused") ||
118
+ message.includes("connection refused"),
119
+ },
120
+ {
121
+ code: ErrorCode.NETWORK_ERROR,
122
+ detect: (_name: string, message: string) =>
123
+ message.includes("fetch") ||
124
+ message.includes("network") ||
125
+ message.includes("connection"),
126
+ },
127
+ {
128
+ code: ErrorCode.PARSE_ERROR,
129
+ detect: (_name: string, message: string) =>
130
+ message.includes("parse") ||
131
+ message.includes("json") ||
132
+ message.includes("unexpected token"),
133
+ },
134
+ {
135
+ code: ErrorCode.SERIALIZE_ERROR,
136
+ detect: (_name: string, message: string) =>
137
+ message.includes("serialize") ||
138
+ message.includes("stringify") ||
139
+ message.includes("circular"),
140
+ },
141
+ ] as const satisfies ErrorPattern[];
142
+
143
+ /**
144
+ * Create error from native Error exception.
145
+ *
146
+ * Uses pattern matching - no scattered magic strings!
147
+ *
148
+ * @param error - Native Error object
149
+ * @param context - Runtime context
150
+ * @returns Rich error
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * try {
155
+ * await fetch(...);
156
+ * } catch (err) {
157
+ * const richError = createErrorFromException(err as Error, {
158
+ * transport: "http",
159
+ * });
160
+ * }
161
+ * ```
162
+ */
163
+ export function createErrorFromException(
164
+ error: Error,
165
+ context?: Partial<ErrorContext>
166
+ ): RichError {
167
+ const name = error.name?.toLowerCase() ?? "";
168
+ const message = error.message?.toLowerCase() ?? "";
169
+
170
+ // Use pattern matching - declarative, not imperative!
171
+ const pattern = ERROR_PATTERNS.find((p) => p.detect(name, message));
172
+ const code = pattern?.code ?? ErrorCode.UNKNOWN;
173
+
174
+ return createError(code, context, error);
175
+ }
176
+
177
+ /**
178
+ * Convert RichError to Status for universal client.
179
+ *
180
+ * @param error - Rich error
181
+ * @returns Status object
182
+ */
183
+ export function richErrorToStatus(error: RichError): {
184
+ type: "error";
185
+ code: string;
186
+ message: string;
187
+ retryable: boolean;
188
+ metadata: ErrorMetadata;
189
+ } {
190
+ return {
191
+ type: "error",
192
+ code: error.code,
193
+ message: error.metadata.summary,
194
+ retryable: error.metadata.retryable,
195
+ metadata: error.metadata,
196
+ };
197
+ }
198
+
199
+ /**
200
+ * Format error for logging.
201
+ *
202
+ * @param error - Rich error
203
+ * @param includeStack - Include stack trace if cause exists
204
+ * @returns Formatted error string
205
+ */
206
+ export function formatError(error: RichError, includeStack = false): string {
207
+ const lines: string[] = [
208
+ `[${error.code}] ${error.metadata.summary}`,
209
+ ` Detail: ${error.metadata.detail}`,
210
+ ` Category: ${error.metadata.category}`,
211
+ ` Retryable: ${error.metadata.retryable}`,
212
+ ` Severity: ${error.metadata.severity}`,
213
+ ];
214
+
215
+ if (error.context.requestId) {
216
+ lines.push(` Request ID: ${error.context.requestId}`);
217
+ }
218
+
219
+ if (error.context.transport) {
220
+ lines.push(` Transport: ${error.context.transport}`);
221
+ }
222
+
223
+ if (error.context.method) {
224
+ const m = error.context.method;
225
+ const methodStr = m.version
226
+ ? `${m.version}:${m.service}.${m.operation}`
227
+ : `${m.service}.${m.operation}`;
228
+ lines.push(` Method: ${methodStr}`);
229
+ }
230
+
231
+ if (error.metadata.suggestions && error.metadata.suggestions.length > 0) {
232
+ lines.push(` Suggestions:`);
233
+ for (const suggestion of error.metadata.suggestions) {
234
+ lines.push(` - ${suggestion}`);
235
+ }
236
+ }
237
+
238
+ if (error.cause) {
239
+ lines.push(` Cause: ${error.cause.message}`);
240
+ if (includeStack && error.cause.stack) {
241
+ lines.push(` Stack: ${error.cause.stack}`);
242
+ }
243
+ }
244
+
245
+ return lines.join("\n");
246
+ }
247
+
248
+ /**
249
+ * Check if error is retryable.
250
+ */
251
+ export function isRetryable(error: RichError): boolean {
252
+ return error.metadata.retryable;
253
+ }
254
+
255
+ /**
256
+ * Check if error is in a specific category.
257
+ */
258
+ export function isErrorCategory(
259
+ error: RichError,
260
+ category: string
261
+ ): boolean {
262
+ return error.metadata.category === category;
263
+ }