cantonjs 0.0.1

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 (374) hide show
  1. package/LICENSE +201 -0
  2. package/dist/cjs/admin/index.d.ts +5 -0
  3. package/dist/cjs/admin/index.d.ts.map +1 -0
  4. package/dist/cjs/admin/index.js +6 -0
  5. package/dist/cjs/admin/index.js.map +1 -0
  6. package/dist/cjs/chains/definitions.d.ts +20 -0
  7. package/dist/cjs/chains/definitions.d.ts.map +1 -0
  8. package/dist/cjs/chains/definitions.js +33 -0
  9. package/dist/cjs/chains/definitions.js.map +1 -0
  10. package/dist/cjs/chains/index.d.ts +2 -0
  11. package/dist/cjs/chains/index.d.ts.map +1 -0
  12. package/dist/cjs/chains/index.js +9 -0
  13. package/dist/cjs/chains/index.js.map +1 -0
  14. package/dist/cjs/clients/createAdminClient.d.ts +73 -0
  15. package/dist/cjs/clients/createAdminClient.d.ts.map +1 -0
  16. package/dist/cjs/clients/createAdminClient.js +205 -0
  17. package/dist/cjs/clients/createAdminClient.js.map +1 -0
  18. package/dist/cjs/clients/createLedgerClient.d.ts +83 -0
  19. package/dist/cjs/clients/createLedgerClient.d.ts.map +1 -0
  20. package/dist/cjs/clients/createLedgerClient.js +240 -0
  21. package/dist/cjs/clients/createLedgerClient.js.map +1 -0
  22. package/dist/cjs/clients/createTestClient.d.ts +27 -0
  23. package/dist/cjs/clients/createTestClient.d.ts.map +1 -0
  24. package/dist/cjs/clients/createTestClient.js +46 -0
  25. package/dist/cjs/clients/createTestClient.js.map +1 -0
  26. package/dist/cjs/clients/index.d.ts +4 -0
  27. package/dist/cjs/clients/index.d.ts.map +1 -0
  28. package/dist/cjs/clients/index.js +10 -0
  29. package/dist/cjs/clients/index.js.map +1 -0
  30. package/dist/cjs/codegen/index.d.ts +2 -0
  31. package/dist/cjs/codegen/index.d.ts.map +1 -0
  32. package/dist/cjs/codegen/index.js +3 -0
  33. package/dist/cjs/codegen/index.js.map +1 -0
  34. package/dist/cjs/codegen/types.d.ts +38 -0
  35. package/dist/cjs/codegen/types.d.ts.map +1 -0
  36. package/dist/cjs/codegen/types.js +9 -0
  37. package/dist/cjs/codegen/types.js.map +1 -0
  38. package/dist/cjs/errors/auth.d.ts +13 -0
  39. package/dist/cjs/errors/auth.d.ts.map +1 -0
  40. package/dist/cjs/errors/auth.js +36 -0
  41. package/dist/cjs/errors/auth.js.map +1 -0
  42. package/dist/cjs/errors/base.d.ts +35 -0
  43. package/dist/cjs/errors/base.d.ts.map +1 -0
  44. package/dist/cjs/errors/base.js +71 -0
  45. package/dist/cjs/errors/base.js.map +1 -0
  46. package/dist/cjs/errors/index.d.ts +6 -0
  47. package/dist/cjs/errors/index.d.ts.map +1 -0
  48. package/dist/cjs/errors/index.js +22 -0
  49. package/dist/cjs/errors/index.js.map +1 -0
  50. package/dist/cjs/errors/ledger.d.ts +22 -0
  51. package/dist/cjs/errors/ledger.d.ts.map +1 -0
  52. package/dist/cjs/errors/ledger.js +55 -0
  53. package/dist/cjs/errors/ledger.js.map +1 -0
  54. package/dist/cjs/errors/streaming.d.ts +20 -0
  55. package/dist/cjs/errors/streaming.d.ts.map +1 -0
  56. package/dist/cjs/errors/streaming.js +54 -0
  57. package/dist/cjs/errors/streaming.js.map +1 -0
  58. package/dist/cjs/errors/transport.d.ts +31 -0
  59. package/dist/cjs/errors/transport.d.ts.map +1 -0
  60. package/dist/cjs/errors/transport.js +63 -0
  61. package/dist/cjs/errors/transport.js.map +1 -0
  62. package/dist/cjs/index.d.ts +25 -0
  63. package/dist/cjs/index.d.ts.map +1 -0
  64. package/dist/cjs/index.js +48 -0
  65. package/dist/cjs/index.js.map +1 -0
  66. package/dist/cjs/ledger/index.d.ts +5 -0
  67. package/dist/cjs/ledger/index.d.ts.map +1 -0
  68. package/dist/cjs/ledger/index.js +6 -0
  69. package/dist/cjs/ledger/index.js.map +1 -0
  70. package/dist/cjs/package.json +1 -0
  71. package/dist/cjs/streaming/createStream.d.ts +55 -0
  72. package/dist/cjs/streaming/createStream.d.ts.map +1 -0
  73. package/dist/cjs/streaming/createStream.js +270 -0
  74. package/dist/cjs/streaming/createStream.js.map +1 -0
  75. package/dist/cjs/streaming/index.d.ts +8 -0
  76. package/dist/cjs/streaming/index.d.ts.map +1 -0
  77. package/dist/cjs/streaming/index.js +16 -0
  78. package/dist/cjs/streaming/index.js.map +1 -0
  79. package/dist/cjs/streaming/streamCompletions.d.ts +25 -0
  80. package/dist/cjs/streaming/streamCompletions.d.ts.map +1 -0
  81. package/dist/cjs/streaming/streamCompletions.js +47 -0
  82. package/dist/cjs/streaming/streamCompletions.js.map +1 -0
  83. package/dist/cjs/streaming/streamContracts.d.ts +42 -0
  84. package/dist/cjs/streaming/streamContracts.d.ts.map +1 -0
  85. package/dist/cjs/streaming/streamContracts.js +56 -0
  86. package/dist/cjs/streaming/streamContracts.js.map +1 -0
  87. package/dist/cjs/streaming/streamUpdates.d.ts +38 -0
  88. package/dist/cjs/streaming/streamUpdates.d.ts.map +1 -0
  89. package/dist/cjs/streaming/streamUpdates.js +66 -0
  90. package/dist/cjs/streaming/streamUpdates.js.map +1 -0
  91. package/dist/cjs/streaming/types.d.ts +111 -0
  92. package/dist/cjs/streaming/types.d.ts.map +1 -0
  93. package/dist/cjs/streaming/types.js +20 -0
  94. package/dist/cjs/streaming/types.js.map +1 -0
  95. package/dist/cjs/testing/index.d.ts +4 -0
  96. package/dist/cjs/testing/index.d.ts.map +1 -0
  97. package/dist/cjs/testing/index.js +11 -0
  98. package/dist/cjs/testing/index.js.map +1 -0
  99. package/dist/cjs/testing/mockTransport.d.ts +80 -0
  100. package/dist/cjs/testing/mockTransport.d.ts.map +1 -0
  101. package/dist/cjs/testing/mockTransport.js +97 -0
  102. package/dist/cjs/testing/mockTransport.js.map +1 -0
  103. package/dist/cjs/testing/setupSandbox.d.ts +62 -0
  104. package/dist/cjs/testing/setupSandbox.d.ts.map +1 -0
  105. package/dist/cjs/testing/setupSandbox.js +109 -0
  106. package/dist/cjs/testing/setupSandbox.js.map +1 -0
  107. package/dist/cjs/transport/fallback.d.ts +21 -0
  108. package/dist/cjs/transport/fallback.d.ts.map +1 -0
  109. package/dist/cjs/transport/fallback.js +48 -0
  110. package/dist/cjs/transport/fallback.js.map +1 -0
  111. package/dist/cjs/transport/grpc.d.ts +51 -0
  112. package/dist/cjs/transport/grpc.d.ts.map +1 -0
  113. package/dist/cjs/transport/grpc.js +90 -0
  114. package/dist/cjs/transport/grpc.js.map +1 -0
  115. package/dist/cjs/transport/index.d.ts +3 -0
  116. package/dist/cjs/transport/index.d.ts.map +1 -0
  117. package/dist/cjs/transport/index.js +6 -0
  118. package/dist/cjs/transport/index.js.map +1 -0
  119. package/dist/cjs/transport/json-api.d.ts +9 -0
  120. package/dist/cjs/transport/json-api.d.ts.map +1 -0
  121. package/dist/cjs/transport/json-api.js +69 -0
  122. package/dist/cjs/transport/json-api.js.map +1 -0
  123. package/dist/cjs/transport/types.d.ts +36 -0
  124. package/dist/cjs/transport/types.d.ts.map +1 -0
  125. package/dist/cjs/transport/types.js +10 -0
  126. package/dist/cjs/transport/types.js.map +1 -0
  127. package/dist/cjs/types/command.d.ts +127 -0
  128. package/dist/cjs/types/command.d.ts.map +1 -0
  129. package/dist/cjs/types/command.js +12 -0
  130. package/dist/cjs/types/command.js.map +1 -0
  131. package/dist/cjs/types/contract.d.ts +104 -0
  132. package/dist/cjs/types/contract.d.ts.map +1 -0
  133. package/dist/cjs/types/contract.js +12 -0
  134. package/dist/cjs/types/contract.js.map +1 -0
  135. package/dist/cjs/types/idp.d.ts +28 -0
  136. package/dist/cjs/types/idp.d.ts.map +1 -0
  137. package/dist/cjs/types/idp.js +9 -0
  138. package/dist/cjs/types/idp.js.map +1 -0
  139. package/dist/cjs/types/index.d.ts +10 -0
  140. package/dist/cjs/types/index.d.ts.map +1 -0
  141. package/dist/cjs/types/index.js +3 -0
  142. package/dist/cjs/types/index.js.map +1 -0
  143. package/dist/cjs/types/interactive.d.ts +47 -0
  144. package/dist/cjs/types/interactive.d.ts.map +1 -0
  145. package/dist/cjs/types/interactive.js +13 -0
  146. package/dist/cjs/types/interactive.js.map +1 -0
  147. package/dist/cjs/types/package.d.ts +15 -0
  148. package/dist/cjs/types/package.d.ts.map +1 -0
  149. package/dist/cjs/types/package.js +8 -0
  150. package/dist/cjs/types/package.js.map +1 -0
  151. package/dist/cjs/types/party.d.ts +32 -0
  152. package/dist/cjs/types/party.d.ts.map +1 -0
  153. package/dist/cjs/types/party.js +10 -0
  154. package/dist/cjs/types/party.js.map +1 -0
  155. package/dist/cjs/types/reassignment.d.ts +65 -0
  156. package/dist/cjs/types/reassignment.d.ts.map +1 -0
  157. package/dist/cjs/types/reassignment.js +10 -0
  158. package/dist/cjs/types/reassignment.js.map +1 -0
  159. package/dist/cjs/types/transaction.d.ts +59 -0
  160. package/dist/cjs/types/transaction.d.ts.map +1 -0
  161. package/dist/cjs/types/transaction.js +13 -0
  162. package/dist/cjs/types/transaction.js.map +1 -0
  163. package/dist/cjs/types/user.d.ts +64 -0
  164. package/dist/cjs/types/user.d.ts.map +1 -0
  165. package/dist/cjs/types/user.js +12 -0
  166. package/dist/cjs/types/user.js.map +1 -0
  167. package/dist/esm/admin/index.d.ts +5 -0
  168. package/dist/esm/admin/index.d.ts.map +1 -0
  169. package/dist/esm/admin/index.js +2 -0
  170. package/dist/esm/admin/index.js.map +1 -0
  171. package/dist/esm/chains/definitions.d.ts +20 -0
  172. package/dist/esm/chains/definitions.d.ts.map +1 -0
  173. package/dist/esm/chains/definitions.js +30 -0
  174. package/dist/esm/chains/definitions.js.map +1 -0
  175. package/dist/esm/chains/index.d.ts +2 -0
  176. package/dist/esm/chains/index.d.ts.map +1 -0
  177. package/dist/esm/chains/index.js +2 -0
  178. package/dist/esm/chains/index.js.map +1 -0
  179. package/dist/esm/clients/createAdminClient.d.ts +73 -0
  180. package/dist/esm/clients/createAdminClient.d.ts.map +1 -0
  181. package/dist/esm/clients/createAdminClient.js +202 -0
  182. package/dist/esm/clients/createAdminClient.js.map +1 -0
  183. package/dist/esm/clients/createLedgerClient.d.ts +83 -0
  184. package/dist/esm/clients/createLedgerClient.d.ts.map +1 -0
  185. package/dist/esm/clients/createLedgerClient.js +237 -0
  186. package/dist/esm/clients/createLedgerClient.js.map +1 -0
  187. package/dist/esm/clients/createTestClient.d.ts +27 -0
  188. package/dist/esm/clients/createTestClient.d.ts.map +1 -0
  189. package/dist/esm/clients/createTestClient.js +43 -0
  190. package/dist/esm/clients/createTestClient.js.map +1 -0
  191. package/dist/esm/clients/index.d.ts +4 -0
  192. package/dist/esm/clients/index.d.ts.map +1 -0
  193. package/dist/esm/clients/index.js +4 -0
  194. package/dist/esm/clients/index.js.map +1 -0
  195. package/dist/esm/codegen/index.d.ts +2 -0
  196. package/dist/esm/codegen/index.d.ts.map +1 -0
  197. package/dist/esm/codegen/index.js +2 -0
  198. package/dist/esm/codegen/index.js.map +1 -0
  199. package/dist/esm/codegen/types.d.ts +38 -0
  200. package/dist/esm/codegen/types.d.ts.map +1 -0
  201. package/dist/esm/codegen/types.js +8 -0
  202. package/dist/esm/codegen/types.js.map +1 -0
  203. package/dist/esm/errors/auth.d.ts +13 -0
  204. package/dist/esm/errors/auth.d.ts.map +1 -0
  205. package/dist/esm/errors/auth.js +31 -0
  206. package/dist/esm/errors/auth.js.map +1 -0
  207. package/dist/esm/errors/base.d.ts +35 -0
  208. package/dist/esm/errors/base.d.ts.map +1 -0
  209. package/dist/esm/errors/base.js +67 -0
  210. package/dist/esm/errors/base.js.map +1 -0
  211. package/dist/esm/errors/index.d.ts +6 -0
  212. package/dist/esm/errors/index.d.ts.map +1 -0
  213. package/dist/esm/errors/index.js +6 -0
  214. package/dist/esm/errors/index.js.map +1 -0
  215. package/dist/esm/errors/ledger.d.ts +22 -0
  216. package/dist/esm/errors/ledger.d.ts.map +1 -0
  217. package/dist/esm/errors/ledger.js +49 -0
  218. package/dist/esm/errors/ledger.js.map +1 -0
  219. package/dist/esm/errors/streaming.d.ts +20 -0
  220. package/dist/esm/errors/streaming.d.ts.map +1 -0
  221. package/dist/esm/errors/streaming.js +48 -0
  222. package/dist/esm/errors/streaming.js.map +1 -0
  223. package/dist/esm/errors/transport.d.ts +31 -0
  224. package/dist/esm/errors/transport.d.ts.map +1 -0
  225. package/dist/esm/errors/transport.js +56 -0
  226. package/dist/esm/errors/transport.js.map +1 -0
  227. package/dist/esm/index.d.ts +25 -0
  228. package/dist/esm/index.d.ts.map +1 -0
  229. package/dist/esm/index.js +18 -0
  230. package/dist/esm/index.js.map +1 -0
  231. package/dist/esm/ledger/index.d.ts +5 -0
  232. package/dist/esm/ledger/index.d.ts.map +1 -0
  233. package/dist/esm/ledger/index.js +2 -0
  234. package/dist/esm/ledger/index.js.map +1 -0
  235. package/dist/esm/streaming/createStream.d.ts +55 -0
  236. package/dist/esm/streaming/createStream.d.ts.map +1 -0
  237. package/dist/esm/streaming/createStream.js +265 -0
  238. package/dist/esm/streaming/createStream.js.map +1 -0
  239. package/dist/esm/streaming/index.d.ts +8 -0
  240. package/dist/esm/streaming/index.d.ts.map +1 -0
  241. package/dist/esm/streaming/index.js +6 -0
  242. package/dist/esm/streaming/index.js.map +1 -0
  243. package/dist/esm/streaming/streamCompletions.d.ts +25 -0
  244. package/dist/esm/streaming/streamCompletions.d.ts.map +1 -0
  245. package/dist/esm/streaming/streamCompletions.js +44 -0
  246. package/dist/esm/streaming/streamCompletions.js.map +1 -0
  247. package/dist/esm/streaming/streamContracts.d.ts +42 -0
  248. package/dist/esm/streaming/streamContracts.d.ts.map +1 -0
  249. package/dist/esm/streaming/streamContracts.js +53 -0
  250. package/dist/esm/streaming/streamContracts.js.map +1 -0
  251. package/dist/esm/streaming/streamUpdates.d.ts +38 -0
  252. package/dist/esm/streaming/streamUpdates.d.ts.map +1 -0
  253. package/dist/esm/streaming/streamUpdates.js +63 -0
  254. package/dist/esm/streaming/streamUpdates.js.map +1 -0
  255. package/dist/esm/streaming/types.d.ts +111 -0
  256. package/dist/esm/streaming/types.d.ts.map +1 -0
  257. package/dist/esm/streaming/types.js +17 -0
  258. package/dist/esm/streaming/types.js.map +1 -0
  259. package/dist/esm/testing/index.d.ts +4 -0
  260. package/dist/esm/testing/index.d.ts.map +1 -0
  261. package/dist/esm/testing/index.js +4 -0
  262. package/dist/esm/testing/index.js.map +1 -0
  263. package/dist/esm/testing/mockTransport.d.ts +80 -0
  264. package/dist/esm/testing/mockTransport.d.ts.map +1 -0
  265. package/dist/esm/testing/mockTransport.js +93 -0
  266. package/dist/esm/testing/mockTransport.js.map +1 -0
  267. package/dist/esm/testing/setupSandbox.d.ts +62 -0
  268. package/dist/esm/testing/setupSandbox.d.ts.map +1 -0
  269. package/dist/esm/testing/setupSandbox.js +106 -0
  270. package/dist/esm/testing/setupSandbox.js.map +1 -0
  271. package/dist/esm/transport/fallback.d.ts +21 -0
  272. package/dist/esm/transport/fallback.d.ts.map +1 -0
  273. package/dist/esm/transport/fallback.js +45 -0
  274. package/dist/esm/transport/fallback.js.map +1 -0
  275. package/dist/esm/transport/grpc.d.ts +51 -0
  276. package/dist/esm/transport/grpc.d.ts.map +1 -0
  277. package/dist/esm/transport/grpc.js +87 -0
  278. package/dist/esm/transport/grpc.js.map +1 -0
  279. package/dist/esm/transport/index.d.ts +3 -0
  280. package/dist/esm/transport/index.d.ts.map +1 -0
  281. package/dist/esm/transport/index.js +2 -0
  282. package/dist/esm/transport/index.js.map +1 -0
  283. package/dist/esm/transport/json-api.d.ts +9 -0
  284. package/dist/esm/transport/json-api.d.ts.map +1 -0
  285. package/dist/esm/transport/json-api.js +66 -0
  286. package/dist/esm/transport/json-api.js.map +1 -0
  287. package/dist/esm/transport/types.d.ts +36 -0
  288. package/dist/esm/transport/types.d.ts.map +1 -0
  289. package/dist/esm/transport/types.js +9 -0
  290. package/dist/esm/transport/types.js.map +1 -0
  291. package/dist/esm/types/command.d.ts +127 -0
  292. package/dist/esm/types/command.d.ts.map +1 -0
  293. package/dist/esm/types/command.js +11 -0
  294. package/dist/esm/types/command.js.map +1 -0
  295. package/dist/esm/types/contract.d.ts +104 -0
  296. package/dist/esm/types/contract.d.ts.map +1 -0
  297. package/dist/esm/types/contract.js +11 -0
  298. package/dist/esm/types/contract.js.map +1 -0
  299. package/dist/esm/types/idp.d.ts +28 -0
  300. package/dist/esm/types/idp.d.ts.map +1 -0
  301. package/dist/esm/types/idp.js +8 -0
  302. package/dist/esm/types/idp.js.map +1 -0
  303. package/dist/esm/types/index.d.ts +10 -0
  304. package/dist/esm/types/index.d.ts.map +1 -0
  305. package/dist/esm/types/index.js +2 -0
  306. package/dist/esm/types/index.js.map +1 -0
  307. package/dist/esm/types/interactive.d.ts +47 -0
  308. package/dist/esm/types/interactive.d.ts.map +1 -0
  309. package/dist/esm/types/interactive.js +12 -0
  310. package/dist/esm/types/interactive.js.map +1 -0
  311. package/dist/esm/types/package.d.ts +15 -0
  312. package/dist/esm/types/package.d.ts.map +1 -0
  313. package/dist/esm/types/package.js +7 -0
  314. package/dist/esm/types/package.js.map +1 -0
  315. package/dist/esm/types/party.d.ts +32 -0
  316. package/dist/esm/types/party.d.ts.map +1 -0
  317. package/dist/esm/types/party.js +9 -0
  318. package/dist/esm/types/party.js.map +1 -0
  319. package/dist/esm/types/reassignment.d.ts +65 -0
  320. package/dist/esm/types/reassignment.d.ts.map +1 -0
  321. package/dist/esm/types/reassignment.js +9 -0
  322. package/dist/esm/types/reassignment.js.map +1 -0
  323. package/dist/esm/types/transaction.d.ts +59 -0
  324. package/dist/esm/types/transaction.d.ts.map +1 -0
  325. package/dist/esm/types/transaction.js +12 -0
  326. package/dist/esm/types/transaction.js.map +1 -0
  327. package/dist/esm/types/user.d.ts +64 -0
  328. package/dist/esm/types/user.d.ts.map +1 -0
  329. package/dist/esm/types/user.js +11 -0
  330. package/dist/esm/types/user.js.map +1 -0
  331. package/dist/tsconfig.build.tsbuildinfo +1 -0
  332. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  333. package/package.json +140 -0
  334. package/src/admin/index.ts +9 -0
  335. package/src/chains/definitions.ts +43 -0
  336. package/src/chains/index.ts +1 -0
  337. package/src/clients/createAdminClient.ts +336 -0
  338. package/src/clients/createLedgerClient.ts +383 -0
  339. package/src/clients/createTestClient.ts +77 -0
  340. package/src/clients/index.ts +19 -0
  341. package/src/codegen/index.ts +6 -0
  342. package/src/codegen/types.ts +51 -0
  343. package/src/errors/auth.ts +33 -0
  344. package/src/errors/base.ts +83 -0
  345. package/src/errors/index.ts +5 -0
  346. package/src/errors/ledger.ts +53 -0
  347. package/src/errors/streaming.ts +51 -0
  348. package/src/errors/transport.ts +65 -0
  349. package/src/index.ts +122 -0
  350. package/src/ledger/index.ts +33 -0
  351. package/src/streaming/createStream.ts +321 -0
  352. package/src/streaming/index.ts +19 -0
  353. package/src/streaming/streamCompletions.ts +49 -0
  354. package/src/streaming/streamContracts.ts +64 -0
  355. package/src/streaming/streamUpdates.ts +67 -0
  356. package/src/streaming/types.ts +117 -0
  357. package/src/testing/index.ts +18 -0
  358. package/src/testing/mockTransport.ts +132 -0
  359. package/src/testing/setupSandbox.ts +163 -0
  360. package/src/transport/fallback.ts +57 -0
  361. package/src/transport/grpc.ts +130 -0
  362. package/src/transport/index.ts +2 -0
  363. package/src/transport/json-api.ts +83 -0
  364. package/src/transport/types.ts +39 -0
  365. package/src/types/command.ts +123 -0
  366. package/src/types/contract.ts +101 -0
  367. package/src/types/idp.ts +31 -0
  368. package/src/types/index.ts +66 -0
  369. package/src/types/interactive.ts +53 -0
  370. package/src/types/package.ts +16 -0
  371. package/src/types/party.ts +33 -0
  372. package/src/types/reassignment.ts +68 -0
  373. package/src/types/transaction.ts +57 -0
  374. package/src/types/user.ts +41 -0
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Core AsyncIterable stream factory for Canton WebSocket connections.
3
+ *
4
+ * Creates a stream that:
5
+ * - Opens a WebSocket connection with Canton subprotocol auth
6
+ * - Sends a subscription request on connection open
7
+ * - Yields parsed JSON messages as an AsyncIterable
8
+ * - Auto-reconnects with exponential backoff on disconnect
9
+ * - Tracks offsets for gap-free resumption
10
+ * - Supports AbortSignal cancellation
11
+ *
12
+ * @see ADR 0005 — Streaming Architecture
13
+ */
14
+ import type { WebSocketConstructor, ReconnectConfig } from './types.js';
15
+ /** Internal configuration for createStream. */
16
+ export type CreateStreamConfig = {
17
+ /** Full WebSocket URL (ws:// or wss://). */
18
+ readonly url: string;
19
+ /** JWT token for authentication. */
20
+ readonly token?: string;
21
+ /** WebSocket constructor. */
22
+ readonly WebSocket?: WebSocketConstructor;
23
+ /** AbortSignal for cancellation. */
24
+ readonly signal?: AbortSignal;
25
+ /** Reconnect config, or false to disable. */
26
+ readonly reconnect?: ReconnectConfig | false;
27
+ /** Build the subscription request body. Called on each (re)connection. */
28
+ readonly buildRequest: (lastOffset: number | undefined) => unknown;
29
+ /** Extract an offset from a received message, if present. */
30
+ readonly extractOffset: (message: unknown) => number | undefined;
31
+ /** Whether this is a bounded stream that ends on server close. */
32
+ readonly bounded?: boolean;
33
+ };
34
+ /**
35
+ * Convert an HTTP(S) URL to a WebSocket URL.
36
+ * http://host → ws://host, https://host → wss://host
37
+ * If already ws/wss, return as-is.
38
+ */
39
+ export declare function toWebSocketUrl(baseUrl: string, path: string): string;
40
+ /**
41
+ * Calculate reconnect delay with exponential backoff and jitter.
42
+ */
43
+ export declare function calculateDelay(attempt: number, config: Required<ReconnectConfig>): number;
44
+ /**
45
+ * Create a Canton WebSocket stream as an AsyncIterable.
46
+ *
47
+ * Each iteration yields a parsed JSON message from the WebSocket.
48
+ * The stream auto-reconnects on disconnect unless:
49
+ * - The AbortSignal is aborted
50
+ * - reconnect is set to false
51
+ * - The stream is bounded and the server closed normally (code 1000)
52
+ * - Max reconnect attempts are exhausted
53
+ */
54
+ export declare function createStream<T>(config: CreateStreamConfig): AsyncIterable<T>;
55
+ //# sourceMappingURL=createStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createStream.d.ts","sourceRoot":"","sources":["../../../src/streaming/createStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,oBAAoB,EAEpB,eAAe,EAChB,MAAM,YAAY,CAAA;AAGnB,+CAA+C;AAC/C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,oCAAoC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAA;IACzC,oCAAoC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,6CAA6C;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,KAAK,CAAA;IAC5C,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAA;IAClE,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAA;IAChE,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAUD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQpE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,MAAM,CAQzF;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,GAAG,aAAa,CAAC,CAAC,CAAC,CAM5E"}
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Core AsyncIterable stream factory for Canton WebSocket connections.
3
+ *
4
+ * Creates a stream that:
5
+ * - Opens a WebSocket connection with Canton subprotocol auth
6
+ * - Sends a subscription request on connection open
7
+ * - Yields parsed JSON messages as an AsyncIterable
8
+ * - Auto-reconnects with exponential backoff on disconnect
9
+ * - Tracks offsets for gap-free resumption
10
+ * - Supports AbortSignal cancellation
11
+ *
12
+ * @see ADR 0005 — Streaming Architecture
13
+ */
14
+ import { WebSocketError, StreamClosedError, ReconnectFailedError } from '../errors/streaming.js';
15
+ const DEFAULT_RECONNECT = {
16
+ initialDelay: 1000,
17
+ maxDelay: 30000,
18
+ factor: 2,
19
+ jitter: 0.25,
20
+ maxAttempts: Infinity,
21
+ };
22
+ /**
23
+ * Convert an HTTP(S) URL to a WebSocket URL.
24
+ * http://host → ws://host, https://host → wss://host
25
+ * If already ws/wss, return as-is.
26
+ */
27
+ export function toWebSocketUrl(baseUrl, path) {
28
+ const url = new URL(path, baseUrl);
29
+ if (url.protocol === 'https:') {
30
+ url.protocol = 'wss:';
31
+ }
32
+ else if (url.protocol === 'http:') {
33
+ url.protocol = 'ws:';
34
+ }
35
+ return url.toString();
36
+ }
37
+ /**
38
+ * Calculate reconnect delay with exponential backoff and jitter.
39
+ */
40
+ export function calculateDelay(attempt, config) {
41
+ const baseDelay = Math.min(config.initialDelay * Math.pow(config.factor, attempt), config.maxDelay);
42
+ const jitterRange = baseDelay * config.jitter;
43
+ const jitter = (Math.random() * 2 - 1) * jitterRange;
44
+ return Math.max(0, baseDelay + jitter);
45
+ }
46
+ /**
47
+ * Create a Canton WebSocket stream as an AsyncIterable.
48
+ *
49
+ * Each iteration yields a parsed JSON message from the WebSocket.
50
+ * The stream auto-reconnects on disconnect unless:
51
+ * - The AbortSignal is aborted
52
+ * - reconnect is set to false
53
+ * - The stream is bounded and the server closed normally (code 1000)
54
+ * - Max reconnect attempts are exhausted
55
+ */
56
+ export function createStream(config) {
57
+ return {
58
+ [Symbol.asyncIterator]() {
59
+ return new StreamIterator(config);
60
+ },
61
+ };
62
+ }
63
+ /**
64
+ * Internal AsyncIterator implementation.
65
+ *
66
+ * Uses a message queue with promise-based signaling to bridge the
67
+ * event-driven WebSocket API to the pull-based AsyncIterator protocol.
68
+ */
69
+ class StreamIterator {
70
+ config;
71
+ reconnectConfig;
72
+ ws = null;
73
+ lastOffset = undefined;
74
+ reconnectAttempts = 0;
75
+ done = false;
76
+ abortHandler = null;
77
+ // Message queue for buffering received messages
78
+ queue = [];
79
+ // Error stored when fail() is called before next()
80
+ storedError = null;
81
+ // Pending resolve/reject for when consumer is waiting
82
+ pendingResolve = null;
83
+ pendingReject = null;
84
+ constructor(config) {
85
+ this.config = config;
86
+ if (config.reconnect === false) {
87
+ this.reconnectConfig = false;
88
+ }
89
+ else {
90
+ this.reconnectConfig = { ...DEFAULT_RECONNECT, ...config.reconnect };
91
+ }
92
+ if (config.signal?.aborted) {
93
+ this.done = true;
94
+ }
95
+ else {
96
+ this.setupAbortHandler();
97
+ this.connect();
98
+ }
99
+ }
100
+ async next() {
101
+ // If an error was stored before next() was called, throw it now
102
+ if (this.storedError) {
103
+ const error = this.storedError;
104
+ this.storedError = null;
105
+ throw error;
106
+ }
107
+ if (this.done && this.queue.length === 0) {
108
+ return { done: true, value: undefined };
109
+ }
110
+ // If there are queued messages, return immediately
111
+ if (this.queue.length > 0) {
112
+ return { done: false, value: this.queue.shift() };
113
+ }
114
+ // Wait for the next message, error, or close
115
+ return new Promise((resolve, reject) => {
116
+ this.pendingResolve = resolve;
117
+ this.pendingReject = reject;
118
+ });
119
+ }
120
+ async return() {
121
+ this.cleanup();
122
+ return { done: true, value: undefined };
123
+ }
124
+ async throw(error) {
125
+ this.cleanup();
126
+ throw error;
127
+ }
128
+ setupAbortHandler() {
129
+ if (!this.config.signal)
130
+ return;
131
+ this.abortHandler = () => {
132
+ this.cleanup();
133
+ if (this.pendingResolve) {
134
+ this.pendingResolve({ done: true, value: undefined });
135
+ this.pendingResolve = null;
136
+ this.pendingReject = null;
137
+ }
138
+ };
139
+ this.config.signal.addEventListener('abort', this.abortHandler);
140
+ }
141
+ connect() {
142
+ if (this.done)
143
+ return;
144
+ const WS = this.config.WebSocket ?? globalThis.WebSocket;
145
+ if (!WS) {
146
+ const error = new WebSocketError(this.config.url, {
147
+ cause: new Error('No WebSocket implementation available. Provide a WebSocket constructor.'),
148
+ });
149
+ this.fail(error);
150
+ return;
151
+ }
152
+ const protocols = this.config.token
153
+ ? ['daml.ws.auth', `jwt.token.${this.config.token}`]
154
+ : undefined;
155
+ let ws;
156
+ try {
157
+ ws = new WS(this.config.url, protocols);
158
+ }
159
+ catch (err) {
160
+ const error = new WebSocketError(this.config.url, {
161
+ cause: err instanceof Error ? err : new Error(String(err)),
162
+ });
163
+ this.fail(error);
164
+ return;
165
+ }
166
+ this.ws = ws;
167
+ ws.onopen = () => {
168
+ this.reconnectAttempts = 0;
169
+ const request = this.config.buildRequest(this.lastOffset);
170
+ ws.send(JSON.stringify(request));
171
+ };
172
+ ws.onmessage = (event) => {
173
+ let message;
174
+ try {
175
+ message = JSON.parse(String(event.data));
176
+ }
177
+ catch {
178
+ return; // Skip non-JSON messages
179
+ }
180
+ // Track offset for resumption
181
+ const offset = this.config.extractOffset(message);
182
+ if (offset !== undefined) {
183
+ this.lastOffset = offset;
184
+ }
185
+ this.enqueue(message);
186
+ };
187
+ ws.onerror = () => {
188
+ // onerror is always followed by onclose, so we handle reconnection there
189
+ };
190
+ ws.onclose = (event) => {
191
+ this.ws = null;
192
+ // Normal close on bounded stream = stream complete
193
+ if (this.config.bounded && event.code === 1000) {
194
+ this.cleanup();
195
+ if (this.pendingResolve) {
196
+ this.pendingResolve({ done: true, value: undefined });
197
+ this.pendingResolve = null;
198
+ this.pendingReject = null;
199
+ }
200
+ return;
201
+ }
202
+ // If already done (abort, return), don't reconnect
203
+ if (this.done)
204
+ return;
205
+ // Try to reconnect
206
+ if (this.reconnectConfig === false) {
207
+ const error = new StreamClosedError(event.code, event.reason);
208
+ this.fail(error);
209
+ return;
210
+ }
211
+ if (this.reconnectAttempts >= this.reconnectConfig.maxAttempts) {
212
+ const error = new ReconnectFailedError(this.reconnectAttempts);
213
+ this.fail(error);
214
+ return;
215
+ }
216
+ const delay = calculateDelay(this.reconnectAttempts, this.reconnectConfig);
217
+ this.reconnectAttempts++;
218
+ setTimeout(() => {
219
+ if (!this.done) {
220
+ this.connect();
221
+ }
222
+ }, delay);
223
+ };
224
+ }
225
+ enqueue(message) {
226
+ if (this.pendingResolve) {
227
+ const resolve = this.pendingResolve;
228
+ this.pendingResolve = null;
229
+ this.pendingReject = null;
230
+ resolve({ done: false, value: message });
231
+ }
232
+ else {
233
+ this.queue.push(message);
234
+ }
235
+ }
236
+ fail(error) {
237
+ this.done = true;
238
+ if (this.pendingReject) {
239
+ const reject = this.pendingReject;
240
+ this.pendingResolve = null;
241
+ this.pendingReject = null;
242
+ reject(error);
243
+ }
244
+ else {
245
+ this.storedError = error;
246
+ }
247
+ }
248
+ cleanup() {
249
+ this.done = true;
250
+ if (this.config.signal && this.abortHandler) {
251
+ this.config.signal.removeEventListener('abort', this.abortHandler);
252
+ this.abortHandler = null;
253
+ }
254
+ if (this.ws) {
255
+ // Clear handlers before closing to prevent reconnect
256
+ this.ws.onopen = null;
257
+ this.ws.onmessage = null;
258
+ this.ws.onerror = null;
259
+ this.ws.onclose = null;
260
+ this.ws.close();
261
+ this.ws = null;
262
+ }
263
+ }
264
+ }
265
+ //# sourceMappingURL=createStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createStream.js","sourceRoot":"","sources":["../../../src/streaming/createStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { createStream, toWebSocketUrl, calculateDelay } from './createStream.js';
2
+ export type { CreateStreamConfig } from './createStream.js';
3
+ export { streamUpdates } from './streamUpdates.js';
4
+ export { streamContracts, type ActiveContractsResponse } from './streamContracts.js';
5
+ export { streamCompletions } from './streamCompletions.js';
6
+ export type { WebSocketConstructor, WebSocketLike, ReconnectConfig, StreamOptions, StreamUpdatesOptions, StreamContractsOptions, StreamCompletionsOptions, CompletionEvent, } from './types.js';
7
+ export { WS_READY_STATE } from './types.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/streaming/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAChF,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,GAChB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,6 @@
1
+ export { createStream, toWebSocketUrl, calculateDelay } from './createStream.js';
2
+ export { streamUpdates } from './streamUpdates.js';
3
+ export { streamContracts } from './streamContracts.js';
4
+ export { streamCompletions } from './streamCompletions.js';
5
+ export { WS_READY_STATE } from './types.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/streaming/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGhF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAgC,MAAM,sBAAsB,CAAA;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAa1D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Stream command completions from Canton's /v2/commands/completions WebSocket endpoint.
3
+ *
4
+ * Yields completion events as an AsyncIterable with auto-reconnect.
5
+ */
6
+ import type { CompletionEvent, StreamCompletionsOptions } from './types.js';
7
+ /**
8
+ * Stream command completions from a Canton node.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const completions = streamCompletions({
13
+ * url: 'http://localhost:7575',
14
+ * token: jwt,
15
+ * parties: ['Alice::1220'],
16
+ * beginExclusive: 0,
17
+ * })
18
+ *
19
+ * for await (const event of completions) {
20
+ * console.log('Completion:', event.completion.commandId, event.completion.status)
21
+ * }
22
+ * ```
23
+ */
24
+ export declare function streamCompletions(options: StreamCompletionsOptions): AsyncIterable<CompletionEvent>;
25
+ //# sourceMappingURL=streamCompletions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamCompletions.d.ts","sourceRoot":"","sources":["../../../src/streaming/streamCompletions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAG3E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,aAAa,CAAC,eAAe,CAAC,CAoBhC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Stream command completions from Canton's /v2/commands/completions WebSocket endpoint.
3
+ *
4
+ * Yields completion events as an AsyncIterable with auto-reconnect.
5
+ */
6
+ import { createStream, toWebSocketUrl } from './createStream.js';
7
+ /**
8
+ * Stream command completions from a Canton node.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const completions = streamCompletions({
13
+ * url: 'http://localhost:7575',
14
+ * token: jwt,
15
+ * parties: ['Alice::1220'],
16
+ * beginExclusive: 0,
17
+ * })
18
+ *
19
+ * for await (const event of completions) {
20
+ * console.log('Completion:', event.completion.commandId, event.completion.status)
21
+ * }
22
+ * ```
23
+ */
24
+ export function streamCompletions(options) {
25
+ const wsUrl = toWebSocketUrl(options.url, '/v2/commands/completions');
26
+ return createStream({
27
+ url: wsUrl,
28
+ token: options.token,
29
+ WebSocket: options.WebSocket,
30
+ signal: options.signal,
31
+ reconnect: options.reconnect,
32
+ bounded: false,
33
+ buildRequest: (lastOffset) => ({
34
+ beginExclusive: lastOffset ?? options.beginExclusive ?? 0,
35
+ parties: options.parties,
36
+ ...(options.applicationId && { applicationId: options.applicationId }),
37
+ }),
38
+ extractOffset: (message) => {
39
+ const msg = message;
40
+ return msg.completion?.offset;
41
+ },
42
+ });
43
+ }
44
+ //# sourceMappingURL=streamCompletions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamCompletions.js","sourceRoot":"","sources":["../../../src/streaming/streamCompletions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEhE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAiC;IAEjC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAA;IAErE,OAAO,YAAY,CAAkB;QACnC,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC7B,cAAc,EAAE,UAAU,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC;YACzD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;SACvE,CAAC;QACF,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE;YACzB,MAAM,GAAG,GAAG,OAA0B,CAAA;YACtC,OAAO,GAAG,CAAC,UAAU,EAAE,MAAM,CAAA;QAC/B,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Stream active contracts from Canton's /v2/state/active-contracts WebSocket endpoint.
3
+ *
4
+ * This is a bounded stream: the server sends all matching active contracts
5
+ * and then closes the connection. No auto-reconnect is used.
6
+ */
7
+ import type { StreamContractsOptions } from './types.js';
8
+ /** Response message from the active contracts stream. */
9
+ export type ActiveContractsResponse = {
10
+ readonly contractEntry?: {
11
+ readonly [key: string]: unknown;
12
+ };
13
+ readonly offset?: number;
14
+ };
15
+ /**
16
+ * Stream active contracts from a Canton node.
17
+ *
18
+ * The stream yields contract entries matching the provided filters.
19
+ * It is bounded: the server closes the connection when all contracts
20
+ * have been sent.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const contracts = streamContracts({
25
+ * url: 'http://localhost:7575',
26
+ * token: jwt,
27
+ * eventFormat: {
28
+ * filtersByParty: {
29
+ * [party]: { cumulative: [{ identifierFilter: { WildcardFilter: { value: {} } } }] }
30
+ * }
31
+ * }
32
+ * })
33
+ *
34
+ * for await (const entry of contracts) {
35
+ * if (entry.contractEntry && 'JsActiveContract' in entry.contractEntry) {
36
+ * console.log('Contract:', entry.contractEntry.JsActiveContract)
37
+ * }
38
+ * }
39
+ * ```
40
+ */
41
+ export declare function streamContracts(options: StreamContractsOptions): AsyncIterable<ActiveContractsResponse>;
42
+ //# sourceMappingURL=streamContracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamContracts.d.ts","sourceRoot":"","sources":["../../../src/streaming/streamContracts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAGxD,yDAAyD;AACzD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,GAC9B,aAAa,CAAC,uBAAuB,CAAC,CAmBxC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Stream active contracts from Canton's /v2/state/active-contracts WebSocket endpoint.
3
+ *
4
+ * This is a bounded stream: the server sends all matching active contracts
5
+ * and then closes the connection. No auto-reconnect is used.
6
+ */
7
+ import { createStream, toWebSocketUrl } from './createStream.js';
8
+ /**
9
+ * Stream active contracts from a Canton node.
10
+ *
11
+ * The stream yields contract entries matching the provided filters.
12
+ * It is bounded: the server closes the connection when all contracts
13
+ * have been sent.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const contracts = streamContracts({
18
+ * url: 'http://localhost:7575',
19
+ * token: jwt,
20
+ * eventFormat: {
21
+ * filtersByParty: {
22
+ * [party]: { cumulative: [{ identifierFilter: { WildcardFilter: { value: {} } } }] }
23
+ * }
24
+ * }
25
+ * })
26
+ *
27
+ * for await (const entry of contracts) {
28
+ * if (entry.contractEntry && 'JsActiveContract' in entry.contractEntry) {
29
+ * console.log('Contract:', entry.contractEntry.JsActiveContract)
30
+ * }
31
+ * }
32
+ * ```
33
+ */
34
+ export function streamContracts(options) {
35
+ const wsUrl = toWebSocketUrl(options.url, '/v2/state/active-contracts');
36
+ return createStream({
37
+ url: wsUrl,
38
+ token: options.token,
39
+ WebSocket: options.WebSocket,
40
+ signal: options.signal,
41
+ reconnect: false, // Bounded stream — no reconnect
42
+ bounded: true,
43
+ buildRequest: () => ({
44
+ eventFormat: options.eventFormat,
45
+ ...(options.activeAtOffset !== undefined && { activeAtOffset: options.activeAtOffset }),
46
+ }),
47
+ extractOffset: (message) => {
48
+ const msg = message;
49
+ return msg.offset;
50
+ },
51
+ });
52
+ }
53
+ //# sourceMappingURL=streamContracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamContracts.js","sourceRoot":"","sources":["../../../src/streaming/streamContracts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAQhE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA+B;IAE/B,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAA;IAEvE,OAAO,YAAY,CAA0B;QAC3C,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK,EAAE,gCAAgC;QAClD,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;YACnB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;SACxF,CAAC;QACF,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE;YACzB,MAAM,GAAG,GAAG,OAAkC,CAAA;YAC9C,OAAO,GAAG,CAAC,MAAM,CAAA;QACnB,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Stream updates from Canton's /v2/updates WebSocket endpoint.
3
+ *
4
+ * Yields TaggedUpdate messages (Transaction, Reassignment, OffsetCheckpoint,
5
+ * TopologyTransaction) as an AsyncIterable with auto-reconnect.
6
+ */
7
+ import type { TaggedUpdate } from '../types/transaction.js';
8
+ import type { StreamUpdatesOptions } from './types.js';
9
+ /**
10
+ * Stream ledger updates from a Canton node.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const updates = streamUpdates({
15
+ * url: 'http://localhost:7575',
16
+ * token: jwt,
17
+ * beginExclusive: 0,
18
+ * updateFormat: {
19
+ * includeTransactions: {
20
+ * transactionShape: 'TRANSACTION_SHAPE_ACS_DELTA',
21
+ * eventFormat: {
22
+ * filtersByParty: {
23
+ * [party]: { cumulative: [{ identifierFilter: { WildcardFilter: { value: {} } } }] }
24
+ * }
25
+ * }
26
+ * }
27
+ * }
28
+ * })
29
+ *
30
+ * for await (const update of updates) {
31
+ * if ('Transaction' in update) {
32
+ * console.log('Transaction:', update.Transaction.value.updateId)
33
+ * }
34
+ * }
35
+ * ```
36
+ */
37
+ export declare function streamUpdates(options: StreamUpdatesOptions): AsyncIterable<TaggedUpdate>;
38
+ //# sourceMappingURL=streamUpdates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamUpdates.d.ts","sourceRoot":"","sources":["../../../src/streaming/streamUpdates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAGtD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,YAAY,CAAC,CA2BxF"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Stream updates from Canton's /v2/updates WebSocket endpoint.
3
+ *
4
+ * Yields TaggedUpdate messages (Transaction, Reassignment, OffsetCheckpoint,
5
+ * TopologyTransaction) as an AsyncIterable with auto-reconnect.
6
+ */
7
+ import { createStream, toWebSocketUrl } from './createStream.js';
8
+ /**
9
+ * Stream ledger updates from a Canton node.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const updates = streamUpdates({
14
+ * url: 'http://localhost:7575',
15
+ * token: jwt,
16
+ * beginExclusive: 0,
17
+ * updateFormat: {
18
+ * includeTransactions: {
19
+ * transactionShape: 'TRANSACTION_SHAPE_ACS_DELTA',
20
+ * eventFormat: {
21
+ * filtersByParty: {
22
+ * [party]: { cumulative: [{ identifierFilter: { WildcardFilter: { value: {} } } }] }
23
+ * }
24
+ * }
25
+ * }
26
+ * }
27
+ * })
28
+ *
29
+ * for await (const update of updates) {
30
+ * if ('Transaction' in update) {
31
+ * console.log('Transaction:', update.Transaction.value.updateId)
32
+ * }
33
+ * }
34
+ * ```
35
+ */
36
+ export function streamUpdates(options) {
37
+ const wsUrl = toWebSocketUrl(options.url, '/v2/updates');
38
+ const isOpen = options.endInclusive === undefined;
39
+ return createStream({
40
+ url: wsUrl,
41
+ token: options.token,
42
+ WebSocket: options.WebSocket,
43
+ signal: options.signal,
44
+ reconnect: isOpen ? options.reconnect : false,
45
+ bounded: !isOpen,
46
+ buildRequest: (lastOffset) => ({
47
+ beginExclusive: lastOffset ?? options.beginExclusive ?? 0,
48
+ ...(options.endInclusive !== undefined && { endInclusive: options.endInclusive }),
49
+ ...(options.updateFormat && { updateFormat: options.updateFormat }),
50
+ }),
51
+ extractOffset: (message) => {
52
+ const msg = message;
53
+ if ('Transaction' in msg) {
54
+ return msg.Transaction.value.offset;
55
+ }
56
+ if ('OffsetCheckpoint' in msg) {
57
+ return msg.OffsetCheckpoint.value.offset;
58
+ }
59
+ return undefined;
60
+ },
61
+ });
62
+ }
63
+ //# sourceMappingURL=streamUpdates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamUpdates.js","sourceRoot":"","sources":["../../../src/streaming/streamUpdates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,aAAa,CAAC,OAA6B;IACzD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IACxD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,KAAK,SAAS,CAAA;IAEjD,OAAO,YAAY,CAAe;QAChC,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;QAC7C,OAAO,EAAE,CAAC,MAAM;QAChB,YAAY,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC7B,cAAc,EAAE,UAAU,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC;YACzD,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;YACjF,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;SACpE,CAAC;QACF,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE;YACzB,MAAM,GAAG,GAAG,OAAuB,CAAA;YACnC,IAAI,aAAa,IAAI,GAAG,EAAE,CAAC;gBACzB,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAA;YACrC,CAAC;YACD,IAAI,kBAAkB,IAAI,GAAG,EAAE,CAAC;gBAC9B,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAA;YAC1C,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}