@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,130 @@
1
+ /**
2
+ * Procedure Storage Types
3
+ *
4
+ * Types for serializing and persisting procedure definitions.
5
+ * Enables procedure registry to be backed by CollectionStorage.
6
+ */
7
+ import type { ProcedurePath, ProcedureMetadata } from "../types.js";
8
+ /**
9
+ * Reference to a handler that can be loaded at runtime.
10
+ * Handlers cannot be serialized directly, so we store a reference.
11
+ */
12
+ export interface HandlerReference {
13
+ /** Module name or path (e.g., "@mark1russell7/client-cli") */
14
+ module: string;
15
+ /** Named export from the module (e.g., "libScanHandler") */
16
+ export: string;
17
+ }
18
+ /**
19
+ * Serialized procedure definition for storage.
20
+ * Contains only JSON-serializable data.
21
+ */
22
+ export interface SerializedProcedure {
23
+ /** Procedure path (e.g., ['lib', 'scan']) */
24
+ path: ProcedurePath;
25
+ /** Procedure metadata */
26
+ metadata: ProcedureMetadata;
27
+ /** Whether this procedure supports streaming */
28
+ streaming?: boolean | undefined;
29
+ /** Reference to handler for runtime loading (optional) */
30
+ handlerRef?: HandlerReference | undefined;
31
+ /** Timestamp when stored */
32
+ storedAt?: number | undefined;
33
+ /** Version for conflict detection */
34
+ version?: number | undefined;
35
+ }
36
+ /**
37
+ * Function to load a handler from a reference.
38
+ * Used to restore handlers when loading procedures from storage.
39
+ */
40
+ export interface HandlerLoader {
41
+ /**
42
+ * Load a handler from a reference.
43
+ *
44
+ * @param ref - Handler reference with module and export name
45
+ * @returns The handler function, or undefined if not found
46
+ */
47
+ load(ref: HandlerReference): Promise<unknown | undefined>;
48
+ }
49
+ /**
50
+ * Sync direction for registry operations.
51
+ */
52
+ export type SyncDirection = "push" | "pull" | "both";
53
+ /**
54
+ * Conflict resolution strategy.
55
+ */
56
+ export type ConflictResolution = "local" | "remote" | "merge" | "error";
57
+ /**
58
+ * Write strategy for persistence.
59
+ */
60
+ export type WriteStrategy = "write-through" | "write-back";
61
+ /**
62
+ * Status of a sync conflict.
63
+ */
64
+ export interface SyncConflict {
65
+ /** Procedure path that had conflict */
66
+ path: ProcedurePath;
67
+ /** How the conflict was resolved */
68
+ resolution: ConflictResolution;
69
+ /** Local version (if any) */
70
+ local?: SerializedProcedure;
71
+ /** Remote version (if any) */
72
+ remote?: SerializedProcedure;
73
+ }
74
+ /**
75
+ * Result of a sync operation.
76
+ */
77
+ export interface SyncResult {
78
+ /** Number of procedures pushed to storage */
79
+ pushed: number;
80
+ /** Number of procedures pulled from storage */
81
+ pulled: number;
82
+ /** Conflicts encountered during sync */
83
+ conflicts: SyncConflict[];
84
+ /** Timestamp of sync completion */
85
+ timestamp: number;
86
+ }
87
+ /**
88
+ * Current sync status of the registry.
89
+ */
90
+ export interface SyncStatus {
91
+ /** Whether connected to remote storage */
92
+ connected: boolean;
93
+ /** Remote endpoint URL (if connected) */
94
+ endpoint?: string | undefined;
95
+ /** Last successful sync timestamp */
96
+ lastSync?: number | undefined;
97
+ /** Number of pending local changes */
98
+ pendingChanges: number;
99
+ /** Whether currently syncing */
100
+ syncing: boolean;
101
+ }
102
+ /**
103
+ * Options for SyncedProcedureRegistry.
104
+ */
105
+ export interface SyncedRegistryOptions {
106
+ /** Write strategy: write-through (immediate) or write-back (queued) */
107
+ writeStrategy: WriteStrategy;
108
+ /** How to resolve conflicts when loading from storage */
109
+ conflictResolution: ConflictResolution;
110
+ /** Auto-sync interval in milliseconds (0 to disable) */
111
+ syncInterval?: number | undefined;
112
+ /** Handler loader for restoring handlers from references */
113
+ handlerLoader?: HandlerLoader | undefined;
114
+ /** Whether to sync on initialization */
115
+ syncOnInit?: boolean | undefined;
116
+ }
117
+ /**
118
+ * Configuration for creating a storage-backed registry.
119
+ */
120
+ export interface ProcedureStorageConfig {
121
+ /** Storage type to use */
122
+ type: "memory" | "api" | "hybrid";
123
+ /** The collection of the core collection procedures for API storage (default: "procedures") */
124
+ collection?: string | undefined;
125
+ /** The service of the calls, for a server with other paths (default: `collections.<collection>`) */
126
+ service?: string | undefined;
127
+ /** Options for the synced registry */
128
+ options?: Partial<SyncedRegistryOptions> | undefined;
129
+ }
130
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/procedures/storage/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Procedure Storage Types
3
+ *
4
+ * Types for serializing and persisting procedure definitions.
5
+ * Enables procedure registry to be backed by CollectionStorage.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/procedures/storage/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,370 @@
1
+ /**
2
+ * Procedure Type System
3
+ *
4
+ * Core types for procedure definitions, handlers, and registration.
5
+ * Procedures are the foundation for typed RPC calls with schema validation.
6
+ */
7
+ import type { ZodErrorLike } from "../client/validation/types.js";
8
+ import type { ProcedureSchema } from "./schema.js";
9
+ import type { CollectionStorage } from "./collection/storage.js";
10
+ import type { EventBus } from "../events/types.js";
11
+ import type { HydrationEvent } from "./ref.js";
12
+ /**
13
+ * Procedure path as array of segments.
14
+ * Forms a tree structure for nested routing.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * ['collections', 'users', 'get'] // collections.users.get
19
+ * ['weather', 'forecast'] // weather.forecast
20
+ * ```
21
+ */
22
+ export type ProcedurePath = string[];
23
+ /**
24
+ * Convert path array to dot-separated key.
25
+ */
26
+ export declare function pathToKey(path: ProcedurePath): string;
27
+ /**
28
+ * Parse dot-separated key to path array.
29
+ */
30
+ export declare function keyToPath(key: string): ProcedurePath;
31
+ /**
32
+ * Metadata for procedure documentation and categorization.
33
+ */
34
+ export interface ProcedureMetadata {
35
+ /** Human-readable description */
36
+ description?: string;
37
+ /** Tags for categorization and filtering */
38
+ tags?: string[];
39
+ /** Whether this procedure is deprecated */
40
+ deprecated?: boolean;
41
+ /** Deprecation message with migration guidance */
42
+ deprecationMessage?: string;
43
+ /**
44
+ * The procedures that this procedure calls through `ctx.client`: keys (`"shell.run"`) or
45
+ * namespaces (`"fs.*"`). A host with a call policy lets the procedure call only these and the
46
+ * exposed procedures (see `policy.ts`, deep dive MCP-3). `"*"` alone is not allowed: a
47
+ * procedure whose callees come from its input has the `runs-refs` tag.
48
+ */
49
+ calls?: readonly string[];
50
+ /** Custom metadata fields */
51
+ [key: string]: unknown;
52
+ }
53
+ /**
54
+ * Repository provider for storage access.
55
+ * Injected into procedure handlers for data access.
56
+ */
57
+ export interface RepositoryProvider {
58
+ /**
59
+ * Get storage for a collection.
60
+ *
61
+ * @param collection - Collection name
62
+ * @returns Storage instance for the collection
63
+ */
64
+ getStorage<T>(collection: string): CollectionStorage<T>;
65
+ /**
66
+ * Check if a collection exists.
67
+ *
68
+ * @param collection - Collection name
69
+ */
70
+ hasCollection(collection: string): boolean;
71
+ }
72
+ /**
73
+ * Context passed to procedure handlers.
74
+ * Contains request metadata and service access.
75
+ */
76
+ export interface ProcedureContext {
77
+ /** Request metadata (auth, tracing, etc.) */
78
+ metadata: Record<string, unknown>;
79
+ /** Abort signal for cancellation */
80
+ signal?: AbortSignal;
81
+ /** Repository provider for storage access */
82
+ repository?: RepositoryProvider;
83
+ /** The full path that was called */
84
+ path: ProcedurePath;
85
+ /**
86
+ * Event bus for pub/sub messaging.
87
+ * Use for streaming coordination and inter-procedure communication.
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * // Subscribe to updates in a streaming handler
92
+ * handler: async function* (input, ctx) {
93
+ * yield await getInitial(input.id);
94
+ *
95
+ * for await (const update of ctx.bus.stream(`entity:${input.id}`)) {
96
+ * yield update;
97
+ * }
98
+ * }
99
+ *
100
+ * // Emit events from another procedure
101
+ * handler: async (input, ctx) => {
102
+ * const result = await saveEntity(input);
103
+ * ctx.bus.emit(`entity:${input.id}`, result);
104
+ * return result;
105
+ * }
106
+ * ```
107
+ */
108
+ bus?: EventBus;
109
+ /**
110
+ * Client for calling other procedures.
111
+ * Enables inter-procedure communication via the RPC mechanism.
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * handler: async (input, ctx) => {
116
+ * // Call fs.mkdir procedure
117
+ * await ctx.client.call(["fs", "mkdir"], { path: input.dir });
118
+ *
119
+ * // Call git.init procedure
120
+ * await ctx.client.call(["git", "init"], { cwd: input.dir });
121
+ *
122
+ * return { created: true };
123
+ * }
124
+ * ```
125
+ */
126
+ client: ProcedureClient;
127
+ /**
128
+ * The registry of the caller: `ctx.client` finds the nested procedures here. A procedure that
129
+ * reads or changes the registry (`procedure.define`, `client.lookup`) uses this one. When it is
130
+ * not set, such a procedure uses `PROCEDURE_REGISTRY`.
131
+ */
132
+ registry?: ProcedureRegistryLike;
133
+ /**
134
+ * The hydration observer of the program that runs this procedure (`client.exec(ref, input,
135
+ * { onRef })`). A procedure that hydrates refs itself (control flow, a runner) gives it to
136
+ * `hydrateInput`, so a trace sees the events of its own program only.
137
+ */
138
+ onRef?: ((event: HydrationEvent) => void) | undefined;
139
+ }
140
+ /**
141
+ * The part of `ProcedureRegistry` that a procedure can use through `ctx.registry`.
142
+ */
143
+ export interface ProcedureRegistryLike {
144
+ get(path: ProcedurePath): AnyProcedure | undefined;
145
+ has(path: ProcedurePath): boolean;
146
+ getAll(): AnyProcedure[];
147
+ register(procedure: AnyProcedure, options?: RegistrationOptions): void;
148
+ unregister(path: ProcedurePath): boolean;
149
+ }
150
+ /**
151
+ * Interface for procedure-to-procedure calls.
152
+ * Implemented by both Client and ProcedureServer's internal caller.
153
+ */
154
+ export interface ProcedureClient {
155
+ /**
156
+ * Call a procedure by path. For a streaming procedure, the result is the last item.
157
+ */
158
+ call<TInput = unknown, TOutput = unknown>(path: ProcedurePath, input: TInput): Promise<TOutput>;
159
+ /**
160
+ * Call a procedure by path and read each output: each item of a streaming procedure, or the
161
+ * one value of another procedure. The procedure starts when the caller reads the first item.
162
+ * An older client has no `stream`.
163
+ */
164
+ stream?<TInput = unknown, TOutput = unknown>(path: ProcedurePath, input: TInput): AsyncIterable<TOutput>;
165
+ }
166
+ /**
167
+ * Standard procedure handler function (single return).
168
+ * Receives validated input and context, returns output.
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * const handler: StandardHandler<{ id: string }, User> = async (input, ctx) => {
173
+ * const storage = ctx.repository?.getStorage<User>('users');
174
+ * const user = await storage?.get(input.id);
175
+ * if (!user) throw new Error('User not found');
176
+ * return user;
177
+ * };
178
+ * ```
179
+ */
180
+ export type StandardHandler<TInput = unknown, TOutput = unknown> = (input: TInput, context: ProcedureContext) => Promise<TOutput> | TOutput;
181
+ /**
182
+ * Generator procedure handler (streaming/multi-yield).
183
+ * Yields output values one or more times.
184
+ *
185
+ * @example
186
+ * ```typescript
187
+ * // Single yield (same as standard, but generator syntax)
188
+ * const handler: GeneratorHandler<{ id: string }, User> = async function* (input, ctx) {
189
+ * const user = await fetchUser(input.id);
190
+ * yield user; // yields once
191
+ * };
192
+ *
193
+ * // Multi-yield streaming
194
+ * const handler: GeneratorHandler<{ roomId: string }, Message> = async function* (input, ctx) {
195
+ * // Initial data
196
+ * yield await getInitialMessages(input.roomId);
197
+ *
198
+ * // Stream updates
199
+ * for await (const msg of ctx.bus.stream(`room:${input.roomId}`)) {
200
+ * yield msg; // yields many times
201
+ * }
202
+ * };
203
+ * ```
204
+ */
205
+ export type GeneratorHandler<TInput = unknown, TOutput = unknown> = (input: TInput, context: ProcedureContext) => AsyncGenerator<TOutput, void, unknown>;
206
+ /**
207
+ * Procedure handler function - supports both standard and generator forms.
208
+ *
209
+ * - **Standard handlers**: Return a single value (sync or async)
210
+ * - **Generator handlers**: Yield one or more values
211
+ *
212
+ * The caller's consumption mode (sponge/stream/handlers) determines
213
+ * how the output is delivered, regardless of handler type.
214
+ *
215
+ * @example
216
+ * ```typescript
217
+ * // Standard handler (single return)
218
+ * const handler: ProcedureHandler<{ id: string }, User> = async (input, ctx) => {
219
+ * return await fetchUser(input.id);
220
+ * };
221
+ *
222
+ * // Generator handler (streaming)
223
+ * const handler: ProcedureHandler<{ query: string }, SearchResult> = async function* (input, ctx) {
224
+ * for await (const result of search(input.query)) {
225
+ * yield result;
226
+ * }
227
+ * };
228
+ * ```
229
+ */
230
+ export type ProcedureHandler<TInput = unknown, TOutput = unknown> = StandardHandler<TInput, TOutput> | GeneratorHandler<TInput, TOutput>;
231
+ /**
232
+ * Full procedure definition with schemas and optional handler.
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * const getUserProcedure: Procedure<GetUserInput, User> = {
237
+ * path: ['users', 'get'],
238
+ * input: z.object({ id: z.string() }),
239
+ * output: z.object({ id: z.string(), name: z.string() }),
240
+ * metadata: { description: 'Get user by ID', tags: ['users', 'read'] },
241
+ * handler: async ({ id }, ctx) => { ... },
242
+ * };
243
+ * ```
244
+ */
245
+ export interface Procedure<TInput = unknown, TOutput = unknown, TMeta extends ProcedureMetadata = ProcedureMetadata> {
246
+ /** Path in the route tree */
247
+ path: ProcedurePath;
248
+ /** Input validation schema: a Standard Schema (zod 4, valibot, arktype) or a `ZodLike` */
249
+ input: ProcedureSchema<TInput>;
250
+ /** Output validation schema: a Standard Schema or a `ZodLike` */
251
+ output: ProcedureSchema<TOutput>;
252
+ /** Procedure metadata for documentation */
253
+ metadata: TMeta;
254
+ /**
255
+ * Whether this procedure supports streaming (multi-yield).
256
+ * When true, the handler is expected to be a generator that may yield multiple times.
257
+ * When false or undefined, the procedure yields exactly once.
258
+ *
259
+ * This is a capability declaration - callers can still consume
260
+ * streaming procedures in sponge mode (getting only the final value).
261
+ */
262
+ streaming?: boolean | undefined;
263
+ /**
264
+ * Output mode declaration - how the procedure produces its output.
265
+ *
266
+ * - `single`: Returns a single value (default) - most procedures
267
+ * - `stream`: Returns multiple values over time (generator that yields many times)
268
+ * - `batch`: Returns an array of values all at once
269
+ *
270
+ * The consumer can choose their consumption mode (sponge/stream/handlers)
271
+ * independently. The system translates automatically:
272
+ *
273
+ * | Producer Mode | Consumer Mode | Result Type |
274
+ * |---------------|---------------|--------------------------|
275
+ * | single | sponge | Promise<T> |
276
+ * | single | stream | AsyncIterable<T> (1 item)|
277
+ * | stream | sponge | Promise<T> (last value) |
278
+ * | stream | stream | AsyncIterable<T> |
279
+ * | batch | sponge | Promise<T[]> |
280
+ * | batch | stream | AsyncIterable<T> |
281
+ */
282
+ outputMode?: 'single' | 'stream' | 'batch' | undefined;
283
+ /** Server-side handler implementation (optional for stubs and aggregations) */
284
+ handler?: ProcedureHandler<TInput, TOutput> | undefined;
285
+ }
286
+ /**
287
+ * Procedure without type parameters for generic storage.
288
+ * Uses `any` for handler to allow covariant/contravariant type compatibility.
289
+ */
290
+ export type AnyProcedure = Procedure<any, any, ProcedureMetadata>;
291
+ /**
292
+ * How a procedure produces its output.
293
+ */
294
+ export type OutputMode = 'single' | 'stream' | 'batch';
295
+ /**
296
+ * Default output mode when not specified.
297
+ */
298
+ export declare const DEFAULT_OUTPUT_MODE: OutputMode;
299
+ /**
300
+ * Result of a procedure call.
301
+ */
302
+ export type ProcedureResult<TOutput> = {
303
+ success: true;
304
+ data: TOutput;
305
+ } | {
306
+ success: false;
307
+ error: ProcedureError;
308
+ };
309
+ /**
310
+ * Error from procedure execution.
311
+ */
312
+ export interface ProcedureError {
313
+ /** Error code */
314
+ code: string;
315
+ /** Error message */
316
+ message: string;
317
+ /** Whether the error is retryable */
318
+ retryable: boolean;
319
+ /** Validation errors if applicable */
320
+ validationErrors?: ZodErrorLike;
321
+ /** The procedure path that failed */
322
+ path: ProcedurePath;
323
+ }
324
+ /**
325
+ * Infer input type from a procedure.
326
+ */
327
+ export type InferProcedureInput<T> = T extends Procedure<infer TInput, any, any> ? TInput : unknown;
328
+ /**
329
+ * Infer output type from a procedure.
330
+ */
331
+ export type InferProcedureOutput<T> = T extends Procedure<any, infer TOutput, any> ? TOutput : unknown;
332
+ /**
333
+ * Infer metadata type from a procedure.
334
+ */
335
+ export type InferProcedureMetadata<T> = T extends Procedure<any, any, infer TMeta> ? TMeta : ProcedureMetadata;
336
+ /**
337
+ * Event types emitted by ProcedureRegistry.
338
+ */
339
+ export type RegistryEventType = "register" | "unregister";
340
+ /**
341
+ * Listener for registry events.
342
+ */
343
+ export interface RegistryListener {
344
+ event: RegistryEventType;
345
+ listener: (procedure: AnyProcedure) => void;
346
+ }
347
+ /**
348
+ * Module that exports procedures for registration.
349
+ */
350
+ export interface ProcedureModule {
351
+ /** Array of procedures exported by this module */
352
+ procedures: AnyProcedure[];
353
+ /** Optional module name for debugging */
354
+ name?: string;
355
+ /**
356
+ * The modules whose procedures this module calls (for example `client-lib` calls `fs.*` and
357
+ * `git.*`). `createRegistry()` registers them too.
358
+ */
359
+ requires?: readonly ProcedureModule[] | undefined;
360
+ }
361
+ /**
362
+ * Registration options for bulk procedure registration.
363
+ */
364
+ export interface RegistrationOptions {
365
+ /** Override existing procedures with same path */
366
+ override?: boolean;
367
+ /** Prefix to prepend to all paths */
368
+ pathPrefix?: ProcedurePath;
369
+ }
370
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/procedures/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Procedure Type System
3
+ *
4
+ * Core types for procedure definitions, handlers, and registration.
5
+ * Procedures are the foundation for typed RPC calls with schema validation.
6
+ */
7
+ /**
8
+ * Convert path array to dot-separated key.
9
+ */
10
+ export function pathToKey(path) {
11
+ return path.join(".");
12
+ }
13
+ /**
14
+ * Parse dot-separated key to path array.
15
+ */
16
+ export function keyToPath(key) {
17
+ return key.split(".");
18
+ }
19
+ /**
20
+ * Default output mode when not specified.
21
+ */
22
+ export const DEFAULT_OUTPUT_MODE = 'single';
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/procedures/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwBH;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAmB;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AA+UD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAe,QAAQ,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Checks of requests that a web browser can send to a procedure server.
3
+ *
4
+ * A server serves its whole registry, often with `shell.*` in it, and a web page that the user
5
+ * opens can send requests to `127.0.0.1`. Before, the HTTP server transport read any request
6
+ * body as JSON, so a "simple" cross-site POST (`Content-Type: text/plain`, no CORS preflight)
7
+ * ran any procedure, and the WebSocket server accepted a connection from any page
8
+ * (cross-site WebSocket hijacking). The checks here are on by default in both transports:
9
+ *
10
+ * - A connection that arrives on a loopback address must name a loopback host in its `Host`
11
+ * header. A DNS rebinding attack sends the name of the attacker's site.
12
+ * - A browser request (an `Origin` header) must come from the server's own origin, or from an
13
+ * origin in `allowedOrigins`.
14
+ * - A request that the browser marks `Sec-Fetch-Site: cross-site` or `same-site` and that has
15
+ * no allowed origin is refused (an image tag or a form sends no `Origin` for a GET).
16
+ * - HTTP only: a procedure call by GET or HEAD is refused unless `allowGet` is true, and a
17
+ * request body must be JSON.
18
+ */
19
+ import type { IncomingHttpHeaders } from "node:http";
20
+ /** The options of the browser checks of a server transport. */
21
+ export interface BrowserGuardOptions {
22
+ /**
23
+ * The web origins that can call the server, besides its own origin. `"*"` allows every
24
+ * origin. A function decides for each origin.
25
+ * @default [] (only the server's own origin)
26
+ */
27
+ allowedOrigins?: readonly string[] | "*" | ((origin: string) => boolean) | undefined;
28
+ /**
29
+ * The host names that a request on a loopback address can name in its `Host` header,
30
+ * besides the loopback names. `"*"` turns the check off.
31
+ * @default [] (only `localhost`, `127.0.0.1` and `[::1]`)
32
+ */
33
+ allowedHosts?: readonly string[] | "*" | undefined;
34
+ /**
35
+ * HTTP only: accept procedure calls by GET or HEAD. A RESTful URL strategy needs this. A GET
36
+ * is a request that any page can send (an image tag), so it is off by default.
37
+ * @default false
38
+ */
39
+ allowGet?: boolean | undefined;
40
+ }
41
+ /** The parts of an incoming request that the checks read. */
42
+ export interface GuardedRequest {
43
+ method?: string | undefined;
44
+ headers: IncomingHttpHeaders;
45
+ socket?: {
46
+ localAddress?: string | undefined;
47
+ } | undefined;
48
+ }
49
+ /** The result of the checks: the request passes, or the HTTP status and the error to send. */
50
+ export type GuardResult = {
51
+ readonly ok: true;
52
+ } | {
53
+ readonly ok: false;
54
+ readonly status: 403 | 405 | 415;
55
+ readonly code: string;
56
+ readonly message: string;
57
+ };
58
+ /** True for a host name or a bind address that only this computer can reach. */
59
+ export declare function isLoopbackHost(host: string): boolean;
60
+ /** True for a local socket address on the loopback interface (IPv4, IPv6, or IPv4 in IPv6). */
61
+ export declare function isLoopbackAddress(address: string | undefined): boolean;
62
+ /** The name of a Host header without its port: "localhost:3000" gives "localhost", "[::1]:80" gives "[::1]". */
63
+ export declare function hostNameOf(header: string | undefined): string;
64
+ /**
65
+ * The checks of the host, the origin and the fetch site, for HTTP and WebSocket requests.
66
+ * `http` adds the checks of the method and the body.
67
+ */
68
+ export declare function checkBrowserRequest(req: GuardedRequest, options?: BrowserGuardOptions, http?: boolean): GuardResult;
69
+ //# sourceMappingURL=browser-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-guard.d.ts","sourceRoot":"","sources":["../../src/server/browser-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAIrD,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IACrF;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,GAAG,SAAS,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC;AAED,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;CAC5D;AAED,8FAA8F;AAC9F,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GACrB;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9G,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAItE;AAED,gHAAgH;AAChH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI7D;AA8BD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,cAAc,EACnB,OAAO,GAAE,mBAAwB,EACjC,IAAI,UAAQ,GACX,WAAW,CAkCb"}