@procedures/client 0.2.3 → 0.4.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 (369) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/README.md +77 -44
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/adapters/http/client/transport.d.ts.map +1 -1
  5. package/dist/adapters/http/client/transport.js +35 -3
  6. package/dist/adapters/http/client/transport.js.map +1 -1
  7. package/dist/adapters/http/client/types.d.ts +3 -2
  8. package/dist/adapters/http/client/types.d.ts.map +1 -1
  9. package/dist/adapters/http/server/transport.d.ts +2 -2
  10. package/dist/adapters/http/server/transport.d.ts.map +1 -1
  11. package/dist/adapters/http/server/transport.js +54 -22
  12. package/dist/adapters/http/server/transport.js.map +1 -1
  13. package/dist/adapters/http/shared/headers.d.ts +1 -1
  14. package/dist/adapters/http/shared/headers.d.ts.map +1 -1
  15. package/dist/adapters/http/shared/headers.js +7 -6
  16. package/dist/adapters/http/shared/headers.js.map +1 -1
  17. package/dist/adapters/local/client/transport.d.ts +3 -0
  18. package/dist/adapters/local/client/transport.d.ts.map +1 -1
  19. package/dist/adapters/local/client/transport.js +67 -6
  20. package/dist/adapters/local/client/transport.js.map +1 -1
  21. package/dist/adapters/local/client/types.d.ts +15 -0
  22. package/dist/adapters/local/client/types.d.ts.map +1 -1
  23. package/dist/adapters/local/client/types.js.map +1 -1
  24. package/dist/adapters/mock/client/transport.d.ts +3 -2
  25. package/dist/adapters/mock/client/transport.d.ts.map +1 -1
  26. package/dist/adapters/mock/client/transport.js +8 -5
  27. package/dist/adapters/mock/client/transport.js.map +1 -1
  28. package/dist/adapters/mock/client/types.d.ts +7 -6
  29. package/dist/adapters/mock/client/types.d.ts.map +1 -1
  30. package/dist/adapters/port/transport.d.ts +62 -0
  31. package/dist/adapters/port/transport.d.ts.map +1 -0
  32. package/dist/adapters/port/transport.js +94 -0
  33. package/dist/adapters/port/transport.js.map +1 -0
  34. package/dist/adapters/websocket/client/index.d.ts +1 -1
  35. package/dist/adapters/websocket/client/index.d.ts.map +1 -1
  36. package/dist/adapters/websocket/client/index.js.map +1 -1
  37. package/dist/adapters/websocket/client/node.d.ts +30 -0
  38. package/dist/adapters/websocket/client/node.d.ts.map +1 -0
  39. package/dist/adapters/websocket/client/node.js +32 -0
  40. package/dist/adapters/websocket/client/node.js.map +1 -0
  41. package/dist/adapters/websocket/client/transport.d.ts +47 -7
  42. package/dist/adapters/websocket/client/transport.d.ts.map +1 -1
  43. package/dist/adapters/websocket/client/transport.js +229 -75
  44. package/dist/adapters/websocket/client/transport.js.map +1 -1
  45. package/dist/adapters/websocket/client/types.d.ts +71 -21
  46. package/dist/adapters/websocket/client/types.d.ts.map +1 -1
  47. package/dist/adapters/websocket/client/types.js.map +1 -1
  48. package/dist/adapters/websocket/server/transport.d.ts +65 -24
  49. package/dist/adapters/websocket/server/transport.d.ts.map +1 -1
  50. package/dist/adapters/websocket/server/transport.js +192 -263
  51. package/dist/adapters/websocket/server/transport.js.map +1 -1
  52. package/dist/adapters/websocket/server/types.d.ts +20 -1
  53. package/dist/adapters/websocket/server/types.d.ts.map +1 -1
  54. package/dist/adapters/websocket/shared/rpc.d.ts +129 -0
  55. package/dist/adapters/websocket/shared/rpc.d.ts.map +1 -0
  56. package/dist/adapters/websocket/shared/rpc.js +425 -0
  57. package/dist/adapters/websocket/shared/rpc.js.map +1 -0
  58. package/dist/browser.d.ts +29 -7
  59. package/dist/browser.d.ts.map +1 -1
  60. package/dist/browser.js +26 -3
  61. package/dist/browser.js.map +1 -1
  62. package/dist/client/call-types.d.ts +10 -10
  63. package/dist/client/call-types.d.ts.map +1 -1
  64. package/dist/client/call-types.js +1 -6
  65. package/dist/client/call-types.js.map +1 -1
  66. package/dist/client/client.d.ts +6 -1
  67. package/dist/client/client.d.ts.map +1 -1
  68. package/dist/client/client.js +23 -9
  69. package/dist/client/client.js.map +1 -1
  70. package/dist/client/deadline.d.ts +38 -0
  71. package/dist/client/deadline.d.ts.map +1 -0
  72. package/dist/client/deadline.js +60 -0
  73. package/dist/client/deadline.js.map +1 -0
  74. package/dist/client/errors/factory.d.ts.map +1 -1
  75. package/dist/client/errors/factory.js +11 -7
  76. package/dist/client/errors/factory.js.map +1 -1
  77. package/dist/client/errors/http-errors.d.ts.map +1 -1
  78. package/dist/client/errors/http-errors.js +6 -0
  79. package/dist/client/errors/http-errors.js.map +1 -1
  80. package/dist/client/errors/index.d.ts +1 -1
  81. package/dist/client/errors/index.js +1 -1
  82. package/dist/client/errors/registry.d.ts +2 -1
  83. package/dist/client/errors/registry.d.ts.map +1 -1
  84. package/dist/client/errors/registry.js +72 -22
  85. package/dist/client/errors/registry.js.map +1 -1
  86. package/dist/client/index.d.ts +9 -2
  87. package/dist/client/index.d.ts.map +1 -1
  88. package/dist/client/index.js +8 -2
  89. package/dist/client/index.js.map +1 -1
  90. package/dist/client/middleware/cache.d.ts +19 -5
  91. package/dist/client/middleware/cache.d.ts.map +1 -1
  92. package/dist/client/middleware/cache.js +106 -18
  93. package/dist/client/middleware/cache.js.map +1 -1
  94. package/dist/client/middleware/circuit-breaker.d.ts +28 -10
  95. package/dist/client/middleware/circuit-breaker.d.ts.map +1 -1
  96. package/dist/client/middleware/circuit-breaker.js +35 -24
  97. package/dist/client/middleware/circuit-breaker.js.map +1 -1
  98. package/dist/client/middleware/contexts.d.ts +16 -10
  99. package/dist/client/middleware/contexts.d.ts.map +1 -1
  100. package/dist/client/middleware/contexts.js.map +1 -1
  101. package/dist/client/middleware/items.d.ts +31 -2
  102. package/dist/client/middleware/items.d.ts.map +1 -1
  103. package/dist/client/middleware/items.js +86 -6
  104. package/dist/client/middleware/items.js.map +1 -1
  105. package/dist/client/middleware/lru.d.ts +2 -0
  106. package/dist/client/middleware/lru.d.ts.map +1 -1
  107. package/dist/client/middleware/lru.js +11 -0
  108. package/dist/client/middleware/lru.js.map +1 -1
  109. package/dist/client/middleware/rate-limit.d.ts +7 -6
  110. package/dist/client/middleware/rate-limit.d.ts.map +1 -1
  111. package/dist/client/middleware/rate-limit.js +9 -7
  112. package/dist/client/middleware/rate-limit.js.map +1 -1
  113. package/dist/client/middleware/resilience.d.ts +61 -0
  114. package/dist/client/middleware/resilience.d.ts.map +1 -0
  115. package/dist/client/middleware/resilience.js +59 -0
  116. package/dist/client/middleware/resilience.js.map +1 -0
  117. package/dist/client/middleware/retry.d.ts +45 -11
  118. package/dist/client/middleware/retry.d.ts.map +1 -1
  119. package/dist/client/middleware/retry.js +102 -22
  120. package/dist/client/middleware/retry.js.map +1 -1
  121. package/dist/client/middleware/timeout.d.ts +15 -12
  122. package/dist/client/middleware/timeout.d.ts.map +1 -1
  123. package/dist/client/middleware/timeout.js +48 -46
  124. package/dist/client/middleware/timeout.js.map +1 -1
  125. package/dist/client/middleware/tracing.d.ts.map +1 -1
  126. package/dist/client/middleware/tracing.js +11 -3
  127. package/dist/client/middleware/tracing.js.map +1 -1
  128. package/dist/client/types.d.ts +9 -1
  129. package/dist/client/types.d.ts.map +1 -1
  130. package/dist/client/types.js.map +1 -1
  131. package/dist/clock.d.ts +19 -0
  132. package/dist/clock.d.ts.map +1 -0
  133. package/dist/clock.js +18 -0
  134. package/dist/clock.js.map +1 -0
  135. package/dist/duration.d.ts +37 -0
  136. package/dist/duration.d.ts.map +1 -0
  137. package/dist/duration.js +44 -0
  138. package/dist/duration.js.map +1 -0
  139. package/dist/index.d.ts +4 -0
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js +4 -0
  142. package/dist/index.js.map +1 -1
  143. package/dist/machines.d.ts +90 -0
  144. package/dist/machines.d.ts.map +1 -0
  145. package/dist/machines.js +127 -0
  146. package/dist/machines.js.map +1 -0
  147. package/dist/node.d.ts +11 -0
  148. package/dist/node.d.ts.map +1 -0
  149. package/dist/node.js +10 -0
  150. package/dist/node.js.map +1 -0
  151. package/dist/procedures/capability.d.ts +3 -6
  152. package/dist/procedures/capability.d.ts.map +1 -1
  153. package/dist/procedures/capability.js +7 -8
  154. package/dist/procedures/capability.js.map +1 -1
  155. package/dist/procedures/collection/index.d.ts +3 -3
  156. package/dist/procedures/collection/index.d.ts.map +1 -1
  157. package/dist/procedures/collection/index.js +1 -1
  158. package/dist/procedures/collection/index.js.map +1 -1
  159. package/dist/procedures/collection/procedures.d.ts.map +1 -1
  160. package/dist/procedures/collection/procedures.js +49 -1
  161. package/dist/procedures/collection/procedures.js.map +1 -1
  162. package/dist/procedures/collection/schemas.d.ts +33 -0
  163. package/dist/procedures/collection/schemas.d.ts.map +1 -1
  164. package/dist/procedures/collection/schemas.js +68 -0
  165. package/dist/procedures/collection/schemas.js.map +1 -1
  166. package/dist/procedures/collection/storage.d.ts +37 -0
  167. package/dist/procedures/collection/storage.d.ts.map +1 -1
  168. package/dist/procedures/core/array.d.ts +1 -1
  169. package/dist/procedures/core/array.d.ts.map +1 -1
  170. package/dist/procedures/core/array.js +81 -29
  171. package/dist/procedures/core/array.js.map +1 -1
  172. package/dist/procedures/core/index.d.ts.map +1 -1
  173. package/dist/procedures/core/index.js +17 -2
  174. package/dist/procedures/core/index.js.map +1 -1
  175. package/dist/procedures/core/logic.js +1 -1
  176. package/dist/procedures/core/logic.js.map +1 -1
  177. package/dist/procedures/core/math.d.ts.map +1 -1
  178. package/dist/procedures/core/math.js +5 -1
  179. package/dist/procedures/core/math.js.map +1 -1
  180. package/dist/procedures/core/meta.d.ts.map +1 -1
  181. package/dist/procedures/core/meta.js +43 -8
  182. package/dist/procedures/core/meta.js.map +1 -1
  183. package/dist/procedures/core/object.d.ts.map +1 -1
  184. package/dist/procedures/core/object.js +42 -13
  185. package/dist/procedures/core/object.js.map +1 -1
  186. package/dist/procedures/core/operands.d.ts.map +1 -1
  187. package/dist/procedures/core/operands.js +6 -1
  188. package/dist/procedures/core/operands.js.map +1 -1
  189. package/dist/procedures/core/string.d.ts.map +1 -1
  190. package/dist/procedures/core/string.js +4 -2
  191. package/dist/procedures/core/string.js.map +1 -1
  192. package/dist/procedures/core/type.d.ts.map +1 -1
  193. package/dist/procedures/core/type.js +4 -2
  194. package/dist/procedures/core/type.js.map +1 -1
  195. package/dist/procedures/define-procedure.d.ts +19 -7
  196. package/dist/procedures/define-procedure.d.ts.map +1 -1
  197. package/dist/procedures/define-procedure.js +57 -17
  198. package/dist/procedures/define-procedure.js.map +1 -1
  199. package/dist/procedures/discovery.d.ts +4 -6
  200. package/dist/procedures/discovery.d.ts.map +1 -1
  201. package/dist/procedures/discovery.js +4 -6
  202. package/dist/procedures/discovery.js.map +1 -1
  203. package/dist/procedures/effects.d.ts +16 -0
  204. package/dist/procedures/effects.d.ts.map +1 -1
  205. package/dist/procedures/effects.js +33 -0
  206. package/dist/procedures/effects.js.map +1 -1
  207. package/dist/procedures/idempotency.d.ts +73 -0
  208. package/dist/procedures/idempotency.d.ts.map +1 -0
  209. package/dist/procedures/idempotency.js +131 -0
  210. package/dist/procedures/idempotency.js.map +1 -0
  211. package/dist/procedures/index.d.ts +7 -3
  212. package/dist/procedures/index.d.ts.map +1 -1
  213. package/dist/procedures/index.js +6 -2
  214. package/dist/procedures/index.js.map +1 -1
  215. package/dist/procedures/interceptors.d.ts +17 -4
  216. package/dist/procedures/interceptors.d.ts.map +1 -1
  217. package/dist/procedures/interceptors.js +18 -7
  218. package/dist/procedures/interceptors.js.map +1 -1
  219. package/dist/procedures/invoke.d.ts +15 -3
  220. package/dist/procedures/invoke.d.ts.map +1 -1
  221. package/dist/procedures/invoke.js +8 -3
  222. package/dist/procedures/invoke.js.map +1 -1
  223. package/dist/procedures/manifest.d.ts +83 -0
  224. package/dist/procedures/manifest.d.ts.map +1 -0
  225. package/dist/procedures/manifest.js +90 -0
  226. package/dist/procedures/manifest.js.map +1 -0
  227. package/dist/procedures/ref.d.ts +4 -2
  228. package/dist/procedures/ref.d.ts.map +1 -1
  229. package/dist/procedures/ref.js +2 -1
  230. package/dist/procedures/ref.js.map +1 -1
  231. package/dist/procedures/runtime-programs.d.ts +19 -0
  232. package/dist/procedures/runtime-programs.d.ts.map +1 -0
  233. package/dist/procedures/runtime-programs.js +24 -0
  234. package/dist/procedures/runtime-programs.js.map +1 -0
  235. package/dist/procedures/types.d.ts +16 -0
  236. package/dist/procedures/types.d.ts.map +1 -1
  237. package/dist/procedures/types.js.map +1 -1
  238. package/dist/protocol.d.ts +47 -0
  239. package/dist/protocol.d.ts.map +1 -0
  240. package/dist/protocol.js +68 -0
  241. package/dist/protocol.js.map +1 -0
  242. package/dist/server/host-policy.d.ts +4 -3
  243. package/dist/server/host-policy.d.ts.map +1 -1
  244. package/dist/server/host-policy.js +6 -3
  245. package/dist/server/host-policy.js.map +1 -1
  246. package/dist/server/host-procedures.d.ts +31 -0
  247. package/dist/server/host-procedures.d.ts.map +1 -0
  248. package/dist/server/host-procedures.js +75 -0
  249. package/dist/server/host-procedures.js.map +1 -0
  250. package/dist/server/index.d.ts +3 -3
  251. package/dist/server/index.d.ts.map +1 -1
  252. package/dist/server/index.js +1 -1
  253. package/dist/server/index.js.map +1 -1
  254. package/dist/server/procedure-server.d.ts +112 -5
  255. package/dist/server/procedure-server.d.ts.map +1 -1
  256. package/dist/server/procedure-server.js +273 -19
  257. package/dist/server/procedure-server.js.map +1 -1
  258. package/dist/server/request-auth.d.ts +19 -0
  259. package/dist/server/request-auth.d.ts.map +1 -0
  260. package/dist/server/request-auth.js +32 -0
  261. package/dist/server/request-auth.js.map +1 -0
  262. package/dist/server/types.d.ts +32 -0
  263. package/dist/server/types.d.ts.map +1 -1
  264. package/dist/server/types.js.map +1 -1
  265. package/dist/timers.d.ts +60 -0
  266. package/dist/timers.d.ts.map +1 -0
  267. package/dist/timers.js +33 -0
  268. package/dist/timers.js.map +1 -0
  269. package/dist/tracing/traceparent.d.ts +26 -0
  270. package/dist/tracing/traceparent.d.ts.map +1 -0
  271. package/dist/tracing/traceparent.js +53 -0
  272. package/dist/tracing/traceparent.js.map +1 -0
  273. package/package.json +11 -4
  274. package/src/adapters/http/client/transport.ts +31 -3
  275. package/src/adapters/http/client/types.ts +3 -2
  276. package/src/adapters/http/server/transport.ts +61 -26
  277. package/src/adapters/http/shared/headers.ts +7 -6
  278. package/src/adapters/local/client/transport.ts +74 -7
  279. package/src/adapters/local/client/types.ts +18 -0
  280. package/src/adapters/mock/client/transport.ts +9 -6
  281. package/src/adapters/mock/client/types.ts +7 -6
  282. package/src/adapters/port/transport.ts +124 -0
  283. package/src/adapters/websocket/client/index.ts +1 -0
  284. package/src/adapters/websocket/client/node.ts +34 -0
  285. package/src/adapters/websocket/client/transport.ts +251 -81
  286. package/src/adapters/websocket/client/types.ts +81 -21
  287. package/src/adapters/websocket/server/transport.ts +199 -301
  288. package/src/adapters/websocket/server/types.ts +20 -1
  289. package/src/adapters/websocket/shared/rpc.ts +453 -0
  290. package/src/browser.ts +51 -3
  291. package/src/client/call-types.ts +10 -14
  292. package/src/client/client.ts +28 -9
  293. package/src/client/deadline.ts +64 -0
  294. package/src/client/errors/README.md +2 -0
  295. package/src/client/errors/factory.ts +12 -8
  296. package/src/client/errors/http-errors.ts +5 -0
  297. package/src/client/errors/index.ts +1 -1
  298. package/src/client/errors/registry.ts +79 -22
  299. package/src/client/index.ts +21 -3
  300. package/src/client/middleware/cache.ts +120 -23
  301. package/src/client/middleware/circuit-breaker.ts +65 -35
  302. package/src/client/middleware/contexts.ts +17 -10
  303. package/src/client/middleware/items.ts +101 -6
  304. package/src/client/middleware/lru.ts +12 -0
  305. package/src/client/middleware/rate-limit.ts +9 -9
  306. package/src/client/middleware/resilience.ts +81 -0
  307. package/src/client/middleware/retry.ts +146 -34
  308. package/src/client/middleware/timeout.ts +57 -55
  309. package/src/client/middleware/tracing.ts +13 -4
  310. package/src/client/types.ts +9 -1
  311. package/src/clock.ts +21 -0
  312. package/src/duration.ts +56 -0
  313. package/src/index.ts +4 -0
  314. package/src/machines.ts +186 -0
  315. package/src/node.ts +11 -0
  316. package/src/procedures/capability.ts +7 -8
  317. package/src/procedures/collection/index.ts +9 -1
  318. package/src/procedures/collection/procedures.ts +57 -0
  319. package/src/procedures/collection/schemas.ts +110 -0
  320. package/src/procedures/collection/storage.ts +38 -0
  321. package/src/procedures/core/array.ts +79 -31
  322. package/src/procedures/core/index.ts +17 -2
  323. package/src/procedures/core/logic.ts +1 -1
  324. package/src/procedures/core/math.ts +5 -1
  325. package/src/procedures/core/meta.ts +45 -8
  326. package/src/procedures/core/object.ts +48 -14
  327. package/src/procedures/core/operands.ts +7 -0
  328. package/src/procedures/core/string.ts +4 -2
  329. package/src/procedures/core/type.ts +4 -2
  330. package/src/procedures/define-procedure.ts +73 -20
  331. package/src/procedures/discovery.ts +4 -6
  332. package/src/procedures/effects.ts +35 -0
  333. package/src/procedures/idempotency.ts +152 -0
  334. package/src/procedures/index.ts +18 -2
  335. package/src/procedures/interceptors.ts +28 -11
  336. package/src/procedures/invoke.ts +19 -5
  337. package/src/procedures/manifest.ts +158 -0
  338. package/src/procedures/ref.ts +4 -2
  339. package/src/procedures/runtime-programs.ts +27 -0
  340. package/src/procedures/types.ts +16 -0
  341. package/src/protocol.ts +108 -0
  342. package/src/server/host-policy.ts +8 -5
  343. package/src/server/host-procedures.ts +102 -0
  344. package/src/server/index.ts +5 -2
  345. package/src/server/procedure-server.ts +328 -12
  346. package/src/server/request-auth.ts +35 -0
  347. package/src/server/types.ts +37 -0
  348. package/src/timers.ts +82 -0
  349. package/src/tracing/traceparent.ts +61 -0
  350. package/dist/procedures/cli/announce.d.ts +0 -67
  351. package/dist/procedures/cli/announce.d.ts.map +0 -1
  352. package/dist/procedures/cli/announce.js +0 -392
  353. package/dist/procedures/cli/announce.js.map +0 -1
  354. package/dist/procedures/cli/discover.d.ts +0 -66
  355. package/dist/procedures/cli/discover.d.ts.map +0 -1
  356. package/dist/procedures/cli/discover.js +0 -310
  357. package/dist/procedures/cli/discover.js.map +0 -1
  358. package/dist/procedures/cli/index.d.ts +0 -13
  359. package/dist/procedures/cli/index.d.ts.map +0 -1
  360. package/dist/procedures/cli/index.js +0 -203
  361. package/dist/procedures/cli/index.js.map +0 -1
  362. package/dist/procedures/cli/init.d.ts +0 -17
  363. package/dist/procedures/cli/init.d.ts.map +0 -1
  364. package/dist/procedures/cli/init.js +0 -336
  365. package/dist/procedures/cli/init.js.map +0 -1
  366. package/src/procedures/cli/announce.ts +0 -470
  367. package/src/procedures/cli/discover.ts +0 -390
  368. package/src/procedures/cli/index.ts +0 -231
  369. package/src/procedures/cli/init.ts +0 -370
@@ -5,7 +5,35 @@
5
5
  */
6
6
  import { methodKey } from "./types.js";
7
7
  import { InvocationError, invokeProcedure, isAsyncIterable } from "../../../procedures/invoke.js";
8
+ import { TIMEOUT_METADATA_KEY } from "../../../client/deadline.js";
9
+ import { narrowCapability } from "../../../procedures/capability.js";
8
10
  import { methodToPath } from "../../../server/method.js";
11
+ import { errorCodeOf } from "../../../protocol.js";
12
+ /** The value of `untilAborted` when the signal aborts first. */
13
+ const ABORTED = Symbol("aborted");
14
+ /** The value of a promise, or ABORTED when the signal aborts first. The promise runs on. */
15
+ function untilAborted(promise, signal) {
16
+ if (!signal)
17
+ return promise;
18
+ if (signal.aborted) {
19
+ promise.catch(() => undefined);
20
+ return Promise.resolve(ABORTED);
21
+ }
22
+ return new Promise((resolve, reject) => {
23
+ const onAbort = () => {
24
+ promise.catch(() => undefined);
25
+ resolve(ABORTED);
26
+ };
27
+ signal.addEventListener("abort", onAbort, { once: true });
28
+ promise.then((value) => {
29
+ signal.removeEventListener("abort", onAbort);
30
+ resolve(value);
31
+ }, (error) => {
32
+ signal.removeEventListener("abort", onAbort);
33
+ reject(error);
34
+ });
35
+ });
36
+ }
9
37
  function successItem(id, payload) {
10
38
  return { id, status: { type: "success", code: 200 }, payload: payload, metadata: {} };
11
39
  }
@@ -44,9 +72,15 @@ export class LocalTransport {
44
72
  handlers = new Map();
45
73
  throwOnMissing;
46
74
  registry;
75
+ interceptors;
76
+ capability;
77
+ clearanceOrder;
47
78
  constructor(options = {}) {
48
79
  this.throwOnMissing = options.throwOnMissing !== false;
49
80
  this.registry = options.registry;
81
+ this.interceptors = options.interceptors;
82
+ this.capability = options.capability;
83
+ this.clearanceOrder = options.clearanceOrder;
50
84
  // Register pre-configured handlers. A key without a version ("users.get") gets the
51
85
  // empty version, as methodKey() makes it: before, such a key was never found.
52
86
  if (options.handlers) {
@@ -117,11 +151,25 @@ export class LocalTransport {
117
151
  let values;
118
152
  let value;
119
153
  if (procedure) {
120
- const output = await invokeProcedure(procedure, message.payload, {
154
+ // The interceptors, the capability and the deadline of the call, as on a server (R14)
155
+ const timeoutMs = message.metadata[TIMEOUT_METADATA_KEY];
156
+ const capability = typeof timeoutMs === "number" && Number.isFinite(timeoutMs) && timeoutMs >= 0
157
+ ? narrowCapability(this.capability, { timeoutMs }, this.clearanceOrder)
158
+ : this.capability;
159
+ const output = await untilAborted(invokeProcedure(procedure, message.payload, {
121
160
  registry: this.registry,
122
161
  metadata: message.metadata,
123
162
  signal: message.signal,
124
- });
163
+ ...(this.interceptors ? { interceptors: this.interceptors } : {}),
164
+ ...(capability ? { capability } : {}),
165
+ ...(this.clearanceOrder ? { clearanceOrder: this.clearanceOrder } : {}),
166
+ }), message.signal);
167
+ if (output === ABORTED) {
168
+ // The caller stops waiting at once, as over HTTP and WebSocket (the conformance suite
169
+ // of roadmap R18 found this: before, a local call waited for its handler)
170
+ yield errorItem(message.id, "ABORTED", "Request was aborted");
171
+ return;
172
+ }
125
173
  if (output.kind === "stream")
126
174
  values = output.items;
127
175
  else
@@ -129,13 +177,21 @@ export class LocalTransport {
129
177
  }
130
178
  else {
131
179
  // Execute handler (may be sync, async or an async generator)
132
- const result = await handler(message.payload, message);
180
+ const result = await untilAborted(Promise.resolve(handler(message.payload, message)), message.signal);
181
+ if (result === ABORTED) {
182
+ yield errorItem(message.id, "ABORTED", "Request was aborted");
183
+ return;
184
+ }
133
185
  if (isAsyncIterable(result))
134
186
  values = result;
135
187
  else
136
188
  value = result;
137
189
  }
138
190
  if (values === undefined) {
191
+ if (message.signal?.aborted) {
192
+ yield errorItem(message.id, "ABORTED", "Request was aborted");
193
+ return;
194
+ }
139
195
  yield successItem(message.id, value);
140
196
  return;
141
197
  }
@@ -148,9 +204,14 @@ export class LocalTransport {
148
204
  }
149
205
  }
150
206
  catch (error) {
151
- // The handler threw, or the invocation failed (its code: VALIDATION_ERROR, ABORTED and so on)
152
- const code = error instanceof InvocationError ? error.code : "HANDLER_ERROR";
153
- yield errorItem(message.id, code, error instanceof Error ? error.message : "Unknown error");
207
+ // The handler threw, or the invocation failed (its code: VALIDATION_ERROR, ABORTED and so
208
+ // on). A handler error keeps its own code, as on the other faces (WIRE-PROTOCOL.md).
209
+ const code = errorCodeOf(error);
210
+ const item = errorItem(message.id, code, error instanceof Error ? error.message : "Unknown error");
211
+ // The reason of a FORBIDDEN error travels on each face (roadmap R25)
212
+ if (error instanceof InvocationError && error.reason)
213
+ item.metadata = { reason: error.reason };
214
+ yield item;
154
215
  }
155
216
  }
156
217
  async close() {
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/adapters/local/client/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/adapters/local/client/transport.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@
5
5
  */
6
6
  import type { Message, Method } from "../../../client/types.js";
7
7
  import type { ProcedureRegistry } from "../../../procedures/registry.js";
8
+ import type { Interceptor } from "../../../procedures/invoke.js";
9
+ import type { Capability, ClearanceOrder } from "../../../procedures/types.js";
8
10
  /**
9
11
  * Handler function for a method.
10
12
  */
@@ -35,5 +37,18 @@ export interface LocalTransportOptions {
35
37
  * The procedure runs through `invokeProcedure()`, as on a server.
36
38
  */
37
39
  registry?: ProcedureRegistry;
40
+ /**
41
+ * The interceptors of each procedure that the transport runs, as on a server: policy, tracing,
42
+ * timeouts, metrics (roadmap R14). Before, a local call had none.
43
+ */
44
+ interceptors?: readonly Interceptor[] | undefined;
45
+ /**
46
+ * The capability of each call. The remaining time that a call sends (`procedure-timeout`)
47
+ * makes its deadline earlier, as on a server: a `Client` with a timeout gives a local call a
48
+ * deadline too (roadmap R14).
49
+ */
50
+ capability?: Capability | undefined;
51
+ /** The order of the clearance values of the capability. */
52
+ clearanceOrder?: ClearanceOrder | undefined;
38
53
  }
39
54
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/adapters/local/client/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,OAAO,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,IAAI,CACpD,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KACnB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAEhD;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/adapters/local/client/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,OAAO,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,IAAI,CACpD,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KACnB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAEhD;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAE7B;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC;IAElD;;;;OAIG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAEpC,2DAA2D;IAC3D,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CAC7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/adapters/local/client/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/adapters/local/client/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;AAC5D,CAAC"}
@@ -19,8 +19,8 @@ import type { MockResponse, ResponseMatcher, MockTransportOptions, CallHistoryEn
19
19
  * ```typescript
20
20
  * // Create mock transport with latency
21
21
  * const mock = new MockTransport({
22
- * minLatency: 10,
23
- * maxLatency: 50,
22
+ * minLatency: ms(10),
23
+ * maxLatency: ms(50),
24
24
  * });
25
25
  *
26
26
  * // Mock a specific response
@@ -49,6 +49,7 @@ import type { MockResponse, ResponseMatcher, MockTransportOptions, CallHistoryEn
49
49
  */
50
50
  export declare class MockTransport implements Transport {
51
51
  readonly name = "mock";
52
+ /** The options, with the latencies in milliseconds */
52
53
  private options;
53
54
  private responses;
54
55
  private history;
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../../src/adapters/mock/client/transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBAAa,aAAc,YAAW,SAAS;IAC7C,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,OAAO,CAA0B;IAEzC,YAAY,OAAO,GAAE,oBAAyB,EAS7C;IAED;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,IAAI,GAAG,OAAO,EACzB,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,GAC3B,IAAI,CAEN;IAED;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,GAAG,OAAO,EACxB,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,IAAI,EACb,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,IAAI,CAYN;IAED;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIzD;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAI,GAAG,OAAO,EACvB,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,GAC1B,IAAI,CAEN;IAED;;OAEG;IACH,UAAU,IAAI,IAAI,CAEjB;IAED;;;;OAIG;IACH,QAAQ,IAAI,gBAAgB,EAAE,CAE7B;IAED;;;;;OAKG;IACH,gBAAgB,CACd,SAAS,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,GAC9C,gBAAgB,EAAE,CAEpB;IAED;;;;OAIG;IACH,WAAW,IAAI,gBAAgB,GAAG,SAAS,CAE1C;IAED;;OAEG;IACH,YAAY,IAAI,IAAI,CAEnB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAGZ;IAED;;OAEG;IACI,IAAI,CAAC,IAAI,EAAE,IAAI,EACpB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GACrB,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAgFnC;IAED;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAED;;OAEG;YACW,eAAe;IAY7B;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,OAAO,CAAC,UAAU;CAuBnB"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../../src/adapters/mock/client/transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAGpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBAAa,aAAc,YAAW,SAAS;IAC7C,QAAQ,CAAC,IAAI,UAAU;IAEvB,sDAAsD;IACtD,OAAO,CAAC,OAAO,CAAiH;IAChI,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,OAAO,CAA0B;IAEzC,YAAY,OAAO,GAAE,oBAAyB,EAS7C;IAED;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,IAAI,GAAG,OAAO,EACzB,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,GAC3B,IAAI,CAEN;IAED;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,GAAG,OAAO,EACxB,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,IAAI,EACb,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,IAAI,CAYN;IAED;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIzD;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAI,GAAG,OAAO,EACvB,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,GAC1B,IAAI,CAEN;IAED;;OAEG;IACH,UAAU,IAAI,IAAI,CAEjB;IAED;;;;OAIG;IACH,QAAQ,IAAI,gBAAgB,EAAE,CAE7B;IAED;;;;;OAKG;IACH,gBAAgB,CACd,SAAS,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,GAC9C,gBAAgB,EAAE,CAEpB;IAED;;;;OAIG;IACH,WAAW,IAAI,gBAAgB,GAAG,SAAS,CAE1C;IAED;;OAEG;IACH,YAAY,IAAI,IAAI,CAEnB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAGZ;IAED;;OAEG;IACI,IAAI,CAAC,IAAI,EAAE,IAAI,EACpB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GACrB,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAiFnC;IAED;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAED;;OAEG;YACW,eAAe;IAY7B;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,OAAO,CAAC,UAAU;CAuBnB"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * In-memory transport that simulates network behavior for testing.
5
5
  */
6
+ import { optionalMs } from "../../../duration.js";
6
7
  /**
7
8
  * Mock transport implementation for testing.
8
9
  *
@@ -17,8 +18,8 @@
17
18
  * ```typescript
18
19
  * // Create mock transport with latency
19
20
  * const mock = new MockTransport({
20
- * minLatency: 10,
21
- * maxLatency: 50,
21
+ * minLatency: ms(10),
22
+ * maxLatency: ms(50),
22
23
  * });
23
24
  *
24
25
  * // Mock a specific response
@@ -47,13 +48,14 @@
47
48
  */
48
49
  export class MockTransport {
49
50
  name = "mock";
51
+ /** The options, with the latencies in milliseconds */
50
52
  options;
51
53
  responses = new Map();
52
54
  history = [];
53
55
  constructor(options = {}) {
54
56
  this.options = {
55
- minLatency: options.minLatency ?? 0,
56
- maxLatency: options.maxLatency ?? 0,
57
+ minLatency: optionalMs(options.minLatency, "minLatency") ?? 0,
58
+ maxLatency: optionalMs(options.maxLatency, "maxLatency") ?? 0,
57
59
  failureRate: options.failureRate ?? 0,
58
60
  defaultErrorMessage: options.defaultErrorMessage ?? "Mock transport error",
59
61
  trackHistory: options.trackHistory ?? true,
@@ -202,7 +204,8 @@ export class MockTransport {
202
204
  }
203
205
  // Apply custom delay if specified
204
206
  if (mockResponse.delay !== undefined) {
205
- await new Promise((resolve) => setTimeout(resolve, mockResponse.delay));
207
+ const delay = optionalMs(mockResponse.delay, "delay");
208
+ await new Promise((resolve) => setTimeout(resolve, delay));
206
209
  }
207
210
  // Handle error response
208
211
  if (mockResponse.error) {
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/adapters/mock/client/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/adapters/mock/client/transport.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * Type definitions for Mock adapter testing utilities.
5
5
  */
6
6
  import type { Message, ResponseItem } from "../../../client/types.js";
7
+ import type { Duration } from "../../../duration.js";
7
8
  /**
8
9
  * Mock response configuration.
9
10
  */
@@ -21,10 +22,10 @@ export interface MockResponse<TRes = unknown> {
21
22
  */
22
23
  error?: Error;
23
24
  /**
24
- * Delay in milliseconds before responding
25
+ * Delay before responding
25
26
  * @default Uses transport's latency config
26
27
  */
27
- delay?: number;
28
+ delay?: Duration;
28
29
  /**
29
30
  * Number of times this response can be used
30
31
  * @default Infinity (reusable)
@@ -40,15 +41,15 @@ export type ResponseMatcher = (method: any, payload: unknown) => boolean;
40
41
  */
41
42
  export interface MockTransportOptions {
42
43
  /**
43
- * Minimum latency in milliseconds
44
+ * Minimum latency
44
45
  * @default 0
45
46
  */
46
- minLatency?: number;
47
+ minLatency?: Duration;
47
48
  /**
48
- * Maximum latency in milliseconds
49
+ * Maximum latency
49
50
  * @default 0
50
51
  */
51
- maxLatency?: number;
52
+ maxLatency?: Duration;
52
53
  /**
53
54
  * Random failure rate (0-1)
54
55
  * @default 0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/adapters/mock/client/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,IAAI,GAAG,OAAO;IAC1C;;OAEG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAE7B;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAE1B;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,IAAI,GAAG,OAAO;IAC9C,4BAA4B;IAC5B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/adapters/mock/client/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,IAAI,GAAG,OAAO;IAC1C;;OAEG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAE7B;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAE1B;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,IAAI,GAAG,OAAO;IAC9C,4BAA4B;IAC5B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC1B"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * The transport over a message port (roadmap R27): a Web Worker, a `MessagePort` of a
3
+ * `MessageChannel`, an iframe, or a `worker_threads` port of Node.
4
+ *
5
+ * The two sides of a port send calls to each other with the frames of the WebSocket transport
6
+ * (`websocket/shared/rpc.ts`): a request, then a response, an error, or a stream with credit, and
7
+ * a cancel. A port sends objects, not text, so a frame needs no JSON. A side serves the calls of
8
+ * the other side with its `serve` handler, for example a `ProcedureServer`. Before, the site had
9
+ * two worker protocols of its own.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * // In the worker: serve the procedures of a registry
14
+ * new PortTransport(self, { serve: new ProcedureServer({ registry, autoRegister: true }) });
15
+ *
16
+ * // On the page: call them
17
+ * const client = new Client(new PortTransport(new Worker(url, { type: "module" })));
18
+ * for await (const item of client.stream({ service: "site", operation: "run" }, input)) { ... }
19
+ * ```
20
+ */
21
+ import type { Message, ResponseItem, Transport } from "../../client/types.js";
22
+ import type { RequestHandler } from "../../server/types.js";
23
+ /**
24
+ * A message port: the object that a worker, a `MessagePort` or a `worker_threads` port gives. It
25
+ * has `postMessage`, and `addEventListener` (the browser form) or `on` (the Node form).
26
+ *
27
+ * The event of a listener has the type `any`: the DOM and Node give it different types, and a
28
+ * port of each must fit without a cast. The transport reads only its `data`.
29
+ */
30
+ export interface PortLike {
31
+ postMessage(message: unknown): void;
32
+ addEventListener?(type: "message", listener: (event: any) => void): void;
33
+ removeEventListener?(type: "message", listener: (event: any) => void): void;
34
+ on?(type: "message", listener: (data: unknown) => void): unknown;
35
+ off?(type: "message", listener: (data: unknown) => void): unknown;
36
+ /** A `MessagePort` delivers its messages to `addEventListener` only after `start()`. */
37
+ start?(): void;
38
+ }
39
+ /** The options of a `PortTransport`. */
40
+ export interface PortTransportOptions {
41
+ /** The handler of the calls of the other side, for example a `ProcedureServer`. */
42
+ serve?: RequestHandler | undefined;
43
+ /** The number of stream items that the reader holds. The default is 64. */
44
+ streamWindow?: number | undefined;
45
+ }
46
+ /** The transport over a message port, in the two directions. */
47
+ export declare class PortTransport implements Transport {
48
+ private readonly port;
49
+ readonly name = "port";
50
+ private readonly outgoing;
51
+ private readonly incoming;
52
+ private open;
53
+ private readonly onBrowserMessage;
54
+ private readonly onNodeMessage;
55
+ constructor(port: PortLike, options?: PortTransportOptions);
56
+ private receive;
57
+ /** This function sends a call to the other side, and gives its response items. */
58
+ send<TReq, TRes>(message: Message<TReq>): AsyncIterable<ResponseItem<TRes>>;
59
+ /** This function stops the calls in the two directions, and stops to listen. It does not close the port. */
60
+ close(): Promise<void>;
61
+ }
62
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/adapters/port/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAEpC,gBAAgB,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IAEzE,mBAAmB,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5E,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IACjE,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IAClE,wFAAwF;IACxF,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB;AAED,wCAAwC;AACxC,MAAM,WAAW,oBAAoB;IACnC,mFAAmF;IACnF,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAOD,gEAAgE;AAChE,qBAAa,aAAc,YAAW,SAAS;IAS3C,OAAO,CAAC,QAAQ,CAAC,IAAI;IARvB,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgE;IACjG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+C;IAE7E,YACmB,IAAI,EAAE,QAAQ,EAC/B,OAAO,GAAE,oBAAyB,EA+BnC;IAED,OAAO,CAAC,OAAO;IAMf,kFAAkF;IAClF,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAE1E;IAED,4GAA4G;IACtG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAO3B;CACF"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * The transport over a message port (roadmap R27): a Web Worker, a `MessagePort` of a
3
+ * `MessageChannel`, an iframe, or a `worker_threads` port of Node.
4
+ *
5
+ * The two sides of a port send calls to each other with the frames of the WebSocket transport
6
+ * (`websocket/shared/rpc.ts`): a request, then a response, an error, or a stream with credit, and
7
+ * a cancel. A port sends objects, not text, so a frame needs no JSON. A side serves the calls of
8
+ * the other side with its `serve` handler, for example a `ProcedureServer`. Before, the site had
9
+ * two worker protocols of its own.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * // In the worker: serve the procedures of a registry
14
+ * new PortTransport(self, { serve: new ProcedureServer({ registry, autoRegister: true }) });
15
+ *
16
+ * // On the page: call them
17
+ * const client = new Client(new PortTransport(new Worker(url, { type: "module" })));
18
+ * for await (const item of client.stream({ service: "site", operation: "run" }, input)) { ... }
19
+ * ```
20
+ */
21
+ import { IncomingCalls, OutgoingCalls } from "../websocket/shared/rpc.js";
22
+ import { withoutInternalKeys } from "../metadata.js";
23
+ /** A frame of the protocol: an object with an id and a type. */
24
+ function isFrame(value) {
25
+ return value !== null && typeof value === "object" && typeof value.type === "string";
26
+ }
27
+ /** The transport over a message port, in the two directions. */
28
+ export class PortTransport {
29
+ port;
30
+ name = "port";
31
+ outgoing;
32
+ incoming;
33
+ open = true;
34
+ onBrowserMessage = (event) => this.receive(event.data);
35
+ onNodeMessage = (data) => this.receive(data);
36
+ constructor(port, options = {}) {
37
+ this.port = port;
38
+ const send = (frame) => this.port.postMessage(frame);
39
+ const isOpen = () => this.open;
40
+ this.outgoing = new OutgoingCalls({
41
+ send,
42
+ isOpen,
43
+ // No time limit: a worker can run a long program. The `signal` of a call stops it. This file
44
+ // does not import the Durations (quantity, 6 kB of gzip), so the page of a worker stays small.
45
+ requestTimeoutMs: 0,
46
+ streamWindow: Math.max(2, options.streamWindow ?? 64),
47
+ idPrefix: "",
48
+ });
49
+ if (options.serve) {
50
+ this.incoming = new IncomingCalls({
51
+ handler: options.serve,
52
+ send,
53
+ isOpen,
54
+ // A call over a port comes from a part of this application: it has no credentials
55
+ requestOf: (frame, signal) => ({
56
+ id: frame.id,
57
+ method: frame.method,
58
+ payload: frame.payload === undefined ? {} : frame.payload,
59
+ metadata: withoutInternalKeys(frame.metadata),
60
+ signal,
61
+ }),
62
+ });
63
+ }
64
+ if (port.addEventListener)
65
+ port.addEventListener("message", this.onBrowserMessage);
66
+ else
67
+ port.on?.("message", this.onNodeMessage);
68
+ port.start?.();
69
+ }
70
+ receive(data) {
71
+ if (!this.open || !isFrame(data))
72
+ return;
73
+ if (this.outgoing.receive(data))
74
+ return;
75
+ this.incoming?.receive(data);
76
+ }
77
+ /** This function sends a call to the other side, and gives its response items. */
78
+ send(message) {
79
+ return this.outgoing.call(message);
80
+ }
81
+ /** This function stops the calls in the two directions, and stops to listen. It does not close the port. */
82
+ async close() {
83
+ if (!this.open)
84
+ return;
85
+ this.open = false;
86
+ this.outgoing.failAll("The port transport closed");
87
+ this.incoming?.abortAll();
88
+ if (this.port.removeEventListener)
89
+ this.port.removeEventListener("message", this.onBrowserMessage);
90
+ else
91
+ this.port.off?.("message", this.onNodeMessage);
92
+ }
93
+ }
94
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/adapters/port/transport.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Public API for WebSocket client adapter.
5
5
  */
6
- export type { WebSocketTransportOptions, WebSocketMessage, ServerRequestMessage, ServerRequestHandler, EventHandler, } from "./types.js";
6
+ export type { WebSocketTransportOptions, WebSocketClass, WebSocketMessage, ServerRequestMessage, ServerRequestHandler, EventHandler, } from "./types.js";
7
7
  export { WebSocketState } from "./types.js";
8
8
  export { WebSocketTransport } from "./transport.js";
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/websocket/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,yBAAyB,EACzB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/websocket/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,yBAAyB,EACzB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/websocket/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,YAAY;AACZ,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/websocket/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,YAAY;AACZ,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The WebSocket client transport for Node (finding of roadmap R36).
3
+ *
4
+ * This class is the `WebSocketTransport` of the browser entry with one other default: its sockets
5
+ * are of the `WebSocket` class of the `ws` package. A drop by the heartbeat or by the time limit
6
+ * of the handshake then ends the socket at once with `terminate()`. The global `WebSocket` of Node
7
+ * has only `close()`, which waits for the answer of the peer. With a dead peer, that socket stays
8
+ * open until the kernel stops it: 924.6 seconds in the harness cells of R36.
9
+ *
10
+ * Only the Node entry `@procedures/client/node` exports this class. The browser entry does not
11
+ * import `ws`.
12
+ */
13
+ import { WebSocketTransport as PortableWebSocketTransport } from "./transport.js";
14
+ import type { WebSocketTransportOptions } from "./types.js";
15
+ /**
16
+ * The WebSocket client transport with the `WebSocket` class of the `ws` package as the default
17
+ * class of its sockets. The option `webSocket` gives another class.
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * import { Client } from "@procedures/client";
22
+ * import { WebSocketTransport } from "@procedures/client/node";
23
+ *
24
+ * const client = new Client({ transport: new WebSocketTransport({ url: "ws://localhost:3000/ws" }) });
25
+ * ```
26
+ */
27
+ export declare class WebSocketTransport extends PortableWebSocketTransport {
28
+ constructor(options: WebSocketTransportOptions);
29
+ }
30
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../src/adapters/websocket/client/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAmB,SAAQ,0BAA0B;IAChE,YAAY,OAAO,EAAE,yBAAyB,EAE7C;CACF"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The WebSocket client transport for Node (finding of roadmap R36).
3
+ *
4
+ * This class is the `WebSocketTransport` of the browser entry with one other default: its sockets
5
+ * are of the `WebSocket` class of the `ws` package. A drop by the heartbeat or by the time limit
6
+ * of the handshake then ends the socket at once with `terminate()`. The global `WebSocket` of Node
7
+ * has only `close()`, which waits for the answer of the peer. With a dead peer, that socket stays
8
+ * open until the kernel stops it: 924.6 seconds in the harness cells of R36.
9
+ *
10
+ * Only the Node entry `@procedures/client/node` exports this class. The browser entry does not
11
+ * import `ws`.
12
+ */
13
+ import { WebSocket as NodeWebSocket } from "ws";
14
+ import { WebSocketTransport as PortableWebSocketTransport } from "./transport.js";
15
+ /**
16
+ * The WebSocket client transport with the `WebSocket` class of the `ws` package as the default
17
+ * class of its sockets. The option `webSocket` gives another class.
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * import { Client } from "@procedures/client";
22
+ * import { WebSocketTransport } from "@procedures/client/node";
23
+ *
24
+ * const client = new Client({ transport: new WebSocketTransport({ url: "ws://localhost:3000/ws" }) });
25
+ * ```
26
+ */
27
+ export class WebSocketTransport extends PortableWebSocketTransport {
28
+ constructor(options) {
29
+ super({ ...options, webSocket: options.webSocket ?? NodeWebSocket });
30
+ }
31
+ }
32
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../src/adapters/websocket/client/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAGlF;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,kBAAmB,SAAQ,0BAA0B;IAChE,YAAY,OAAkC;QAC5C,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,aAAa,EAAE,CAAC,CAAC;IACvE,CAAC;CACF"}