@aeternity/aepp-sdk 12.1.3 → 13.0.0-alpha.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 (565) hide show
  1. package/bin/aesophia_cli +0 -0
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.map +1 -1
  4. package/dist/aepp-sdk.browser.js +1 -1
  5. package/dist/aepp-sdk.browser.js.map +1 -1
  6. package/dist/aepp-sdk.js +12031 -11231
  7. package/dist/aepp-sdk.js.map +1 -1
  8. package/es/AeSdk.d.ts +7 -3
  9. package/es/AeSdk.mjs +17 -22
  10. package/es/AeSdk.mjs.map +1 -1
  11. package/es/AeSdkAepp.d.ts +6 -5
  12. package/es/AeSdkAepp.mjs +7 -30
  13. package/es/AeSdkAepp.mjs.map +1 -1
  14. package/es/AeSdkBase.d.ts +18 -140
  15. package/es/AeSdkBase.mjs +30 -184
  16. package/es/AeSdkBase.mjs.map +1 -1
  17. package/es/AeSdkMethods.d.ts +123 -0
  18. package/es/AeSdkMethods.mjs +122 -0
  19. package/es/AeSdkMethods.mjs.map +1 -0
  20. package/es/AeSdkWallet.d.ts +7 -21
  21. package/es/AeSdkWallet.mjs +38 -86
  22. package/es/AeSdkWallet.mjs.map +1 -1
  23. package/es/Node.d.ts +11 -15
  24. package/es/Node.mjs +35 -48
  25. package/es/Node.mjs.map +1 -1
  26. package/es/account/Base.d.ts +24 -40
  27. package/es/account/Base.mjs +1 -101
  28. package/es/account/Base.mjs.map +1 -1
  29. package/es/account/Generalized.d.ts +16 -0
  30. package/es/account/Generalized.mjs +113 -0
  31. package/es/account/Generalized.mjs.map +1 -0
  32. package/es/account/Ledger.d.ts +28 -0
  33. package/es/account/Ledger.mjs +102 -0
  34. package/es/account/Ledger.mjs.map +1 -0
  35. package/es/account/LedgerFactory.d.ts +39 -0
  36. package/es/account/LedgerFactory.mjs +81 -0
  37. package/es/account/LedgerFactory.mjs.map +1 -0
  38. package/es/account/Memory.d.ts +13 -17
  39. package/es/account/Memory.mjs +43 -64
  40. package/es/account/Memory.mjs.map +1 -1
  41. package/es/account/Rpc.d.ts +6 -8
  42. package/es/account/Rpc.mjs +14 -32
  43. package/es/account/Rpc.mjs.map +1 -1
  44. package/es/aens.d.ts +4 -4
  45. package/es/aens.mjs +46 -41
  46. package/es/aens.mjs.map +1 -1
  47. package/es/aepp-wallet-communication/connection/Browser.mjs +9 -13
  48. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  49. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
  50. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +22 -11
  51. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  52. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +1 -1
  53. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -31
  54. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  55. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  56. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +3 -3
  57. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +5 -42
  58. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  59. package/es/aepp-wallet-communication/rpc/types.d.ts +7 -1
  60. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  61. package/es/aepp-wallet-communication/schema.mjs +14 -68
  62. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  63. package/es/aepp-wallet-communication/wallet-detector.mjs +0 -3
  64. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  65. package/es/apis/compiler/compiler.d.ts +23 -29
  66. package/es/apis/compiler/compiler.mjs +128 -189
  67. package/es/apis/compiler/compiler.mjs.map +1 -1
  68. package/es/apis/compiler/index.mjs.map +1 -1
  69. package/es/apis/compiler/models/index.d.ts +82 -135
  70. package/es/apis/compiler/models/index.mjs +1 -47
  71. package/es/apis/compiler/models/index.mjs.map +1 -1
  72. package/es/apis/compiler/models/mappers.d.ts +8 -8
  73. package/es/apis/compiler/models/mappers.mjs +165 -183
  74. package/es/apis/compiler/models/mappers.mjs.map +1 -1
  75. package/es/apis/compiler/models/parameters.d.ts +0 -1
  76. package/es/apis/compiler/models/parameters.mjs +5 -9
  77. package/es/apis/compiler/models/parameters.mjs.map +1 -1
  78. package/es/apis/node/index.mjs.map +1 -1
  79. package/es/apis/node/models/index.d.ts +48 -48
  80. package/es/apis/node/models/mappers.mjs +12 -6
  81. package/es/apis/node/models/mappers.mjs.map +1 -1
  82. package/es/apis/node/models/parameters.mjs.map +1 -1
  83. package/es/apis/node/node.mjs +43 -84
  84. package/es/apis/node/node.mjs.map +1 -1
  85. package/es/chain.d.ts +10 -2
  86. package/es/chain.mjs +37 -59
  87. package/es/chain.mjs.map +1 -1
  88. package/es/channel/Base.d.ts +200 -0
  89. package/es/channel/Base.mjs +293 -0
  90. package/es/channel/Base.mjs.map +1 -0
  91. package/es/channel/Contract.d.ts +248 -0
  92. package/es/channel/Contract.mjs +420 -0
  93. package/es/channel/Contract.mjs.map +1 -0
  94. package/es/channel/Spend.d.ts +219 -0
  95. package/es/channel/Spend.mjs +385 -0
  96. package/es/channel/Spend.mjs.map +1 -0
  97. package/es/channel/handlers.d.ts +8 -21
  98. package/es/channel/handlers.mjs +151 -899
  99. package/es/channel/handlers.mjs.map +1 -1
  100. package/es/channel/internal.d.ts +27 -21
  101. package/es/channel/internal.mjs +101 -191
  102. package/es/channel/internal.mjs.map +1 -1
  103. package/es/contract/Contract.d.ts +210 -0
  104. package/es/contract/Contract.mjs +551 -0
  105. package/es/contract/Contract.mjs.map +1 -0
  106. package/es/contract/compiler/Base.d.ts +81 -0
  107. package/es/contract/compiler/Base.mjs +5 -0
  108. package/es/contract/compiler/Base.mjs.map +1 -0
  109. package/es/contract/compiler/Cli.d.ts +23 -0
  110. package/es/contract/compiler/Cli.mjs +155 -0
  111. package/es/contract/compiler/Cli.mjs.map +1 -0
  112. package/es/contract/compiler/Http.d.ts +32 -0
  113. package/es/contract/compiler/Http.mjs +118 -0
  114. package/es/contract/compiler/Http.mjs.map +1 -0
  115. package/es/contract/compiler/HttpNode.d.ts +17 -0
  116. package/es/contract/compiler/HttpNode.mjs +26 -0
  117. package/es/contract/compiler/HttpNode.mjs.map +1 -0
  118. package/es/contract/compiler/getFileSystem.d.ts +6 -0
  119. package/es/contract/compiler/getFileSystem.mjs +40 -0
  120. package/es/contract/compiler/getFileSystem.mjs.map +1 -0
  121. package/es/contract/ga.d.ts +9 -34
  122. package/es/contract/ga.mjs +29 -112
  123. package/es/contract/ga.mjs.map +1 -1
  124. package/es/index-browser.d.ts +39 -0
  125. package/es/index-browser.mjs +55 -0
  126. package/es/index-browser.mjs.map +1 -0
  127. package/es/index.d.ts +4 -35
  128. package/es/index.mjs +4 -51
  129. package/es/index.mjs.map +1 -1
  130. package/es/oracle.d.ts +5 -5
  131. package/es/oracle.mjs +34 -40
  132. package/es/oracle.mjs.map +1 -1
  133. package/es/spend.d.ts +3 -3
  134. package/es/spend.mjs +18 -23
  135. package/es/spend.mjs.map +1 -1
  136. package/es/tx/builder/constants.d.ts +30 -2
  137. package/es/tx/builder/constants.mjs +43 -14
  138. package/es/tx/builder/constants.mjs.map +1 -1
  139. package/es/tx/builder/field-types/abi-version.d.ts +10 -0
  140. package/es/tx/builder/field-types/abi-version.mjs +20 -0
  141. package/es/tx/builder/field-types/abi-version.mjs.map +1 -0
  142. package/es/tx/builder/field-types/address.d.ts +14 -0
  143. package/es/tx/builder/field-types/address.mjs +51 -0
  144. package/es/tx/builder/field-types/address.mjs.map +1 -0
  145. package/es/tx/builder/field-types/array.d.ts +7 -0
  146. package/es/tx/builder/field-types/array.mjs +11 -0
  147. package/es/tx/builder/field-types/array.mjs.map +1 -0
  148. package/es/tx/builder/field-types/boolean.d.ts +6 -0
  149. package/es/tx/builder/field-types/boolean.mjs +13 -0
  150. package/es/tx/builder/field-types/boolean.mjs.map +1 -0
  151. package/es/tx/builder/field-types/coin-amount.d.ts +2 -3
  152. package/es/tx/builder/field-types/coin-amount.mjs +4 -12
  153. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
  154. package/es/tx/builder/field-types/ct-version.d.ts +30 -0
  155. package/es/tx/builder/field-types/ct-version.mjs +48 -0
  156. package/es/tx/builder/field-types/ct-version.mjs.map +1 -0
  157. package/es/tx/builder/field-types/deposit.d.ts +1 -2
  158. package/es/tx/builder/field-types/deposit.mjs +2 -4
  159. package/es/tx/builder/field-types/deposit.mjs.map +1 -1
  160. package/es/tx/builder/field-types/encoded.d.ts +6 -0
  161. package/es/tx/builder/field-types/encoded.mjs +21 -0
  162. package/es/tx/builder/field-types/encoded.mjs.map +1 -0
  163. package/es/tx/builder/field-types/entry.d.ts +11 -0
  164. package/es/tx/builder/field-types/entry.mjs +31 -0
  165. package/es/tx/builder/field-types/entry.mjs.map +1 -0
  166. package/es/tx/builder/field-types/enumeration.d.ts +7 -0
  167. package/es/tx/builder/field-types/enumeration.mjs +30 -0
  168. package/es/tx/builder/field-types/enumeration.mjs.map +1 -0
  169. package/es/tx/builder/field-types/fee.d.ts +10 -15
  170. package/es/tx/builder/field-types/fee.mjs +31 -43
  171. package/es/tx/builder/field-types/fee.mjs.map +1 -1
  172. package/es/tx/builder/field-types/field.mjs +0 -2
  173. package/es/tx/builder/field-types/field.mjs.map +1 -1
  174. package/es/tx/builder/field-types/gas-limit.d.ts +5 -2
  175. package/es/tx/builder/field-types/gas-limit.mjs +12 -14
  176. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
  177. package/es/tx/builder/field-types/gas-price.d.ts +1 -2
  178. package/es/tx/builder/field-types/gas-price.mjs +3 -7
  179. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  180. package/es/tx/builder/field-types/index.d.ts +80 -30
  181. package/es/tx/builder/field-types/index.mjs +34 -9
  182. package/es/tx/builder/field-types/index.mjs.map +1 -1
  183. package/es/tx/builder/field-types/mptree.d.ts +37 -0
  184. package/es/tx/builder/field-types/mptree.mjs +268 -0
  185. package/es/tx/builder/field-types/mptree.mjs.map +1 -0
  186. package/es/tx/builder/field-types/name-fee.d.ts +1 -3
  187. package/es/tx/builder/field-types/name-fee.mjs +3 -5
  188. package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
  189. package/es/tx/builder/field-types/name-id.d.ts +1 -4
  190. package/es/tx/builder/field-types/name-id.mjs +5 -10
  191. package/es/tx/builder/field-types/name-id.mjs.map +1 -1
  192. package/es/tx/builder/field-types/name.mjs +0 -2
  193. package/es/tx/builder/field-types/name.mjs.map +1 -1
  194. package/es/tx/builder/field-types/pointers.d.ts +23 -0
  195. package/es/tx/builder/field-types/pointers.mjs +36 -0
  196. package/es/tx/builder/field-types/pointers.mjs.map +1 -0
  197. package/es/tx/builder/field-types/raw.d.ts +6 -0
  198. package/es/tx/builder/field-types/raw.mjs +13 -0
  199. package/es/tx/builder/field-types/raw.mjs.map +1 -0
  200. package/es/tx/builder/field-types/short-u-int-const.d.ts +5 -0
  201. package/es/tx/builder/field-types/short-u-int-const.mjs +16 -0
  202. package/es/tx/builder/field-types/short-u-int-const.mjs.map +1 -0
  203. package/es/tx/builder/field-types/short-u-int.mjs +0 -2
  204. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
  205. package/es/tx/builder/field-types/string.d.ts +6 -0
  206. package/es/tx/builder/field-types/string.mjs +10 -0
  207. package/es/tx/builder/field-types/string.mjs.map +1 -0
  208. package/es/tx/builder/field-types/u-int.d.ts +1 -2
  209. package/es/tx/builder/field-types/u-int.mjs +3 -4
  210. package/es/tx/builder/field-types/u-int.mjs.map +1 -1
  211. package/es/tx/builder/helpers.d.ts +2 -32
  212. package/es/tx/builder/helpers.mjs +19 -71
  213. package/es/tx/builder/helpers.mjs.map +1 -1
  214. package/es/tx/builder/index.d.ts +11 -49
  215. package/es/tx/builder/index.mjs +57 -337
  216. package/es/tx/builder/index.mjs.map +1 -1
  217. package/es/tx/builder/schema.d.ts +2367 -667
  218. package/es/tx/builder/schema.mjs +70 -145
  219. package/es/tx/builder/schema.mjs.map +1 -1
  220. package/es/tx/index.d.ts +4 -49
  221. package/es/tx/index.mjs +38 -112
  222. package/es/tx/index.mjs.map +1 -1
  223. package/es/tx/validator.d.ts +4 -6
  224. package/es/tx/validator.mjs +104 -90
  225. package/es/tx/validator.mjs.map +1 -1
  226. package/es/typings/{@aeternity__argon2-browser → @aeternity__aepp-calldata}/index.d.mjs +0 -0
  227. package/es/typings/@aeternity__aepp-calldata/index.d.mjs.map +1 -0
  228. package/es/utils/amount-formatter.mjs +4 -10
  229. package/es/utils/amount-formatter.mjs.map +1 -1
  230. package/es/utils/autorest.d.ts +1 -0
  231. package/es/utils/autorest.mjs +17 -19
  232. package/es/utils/autorest.mjs.map +1 -1
  233. package/es/utils/bignumber.mjs +4 -7
  234. package/es/utils/bignumber.mjs.map +1 -1
  235. package/es/utils/bytes.d.ts +0 -17
  236. package/es/utils/bytes.mjs +6 -35
  237. package/es/utils/bytes.mjs.map +1 -1
  238. package/es/utils/crypto.d.ts +15 -8
  239. package/es/utils/crypto.mjs +40 -40
  240. package/es/utils/crypto.mjs.map +1 -1
  241. package/es/utils/encoder-types.d.ts +28 -28
  242. package/es/utils/encoder-types.mjs +0 -1
  243. package/es/utils/encoder-types.mjs.map +1 -1
  244. package/es/utils/encoder.d.ts +0 -1
  245. package/es/utils/encoder.mjs +7 -15
  246. package/es/utils/encoder.mjs.map +1 -1
  247. package/es/utils/errors.d.ts +15 -14
  248. package/es/utils/errors.mjs +86 -172
  249. package/es/utils/errors.mjs.map +1 -1
  250. package/es/utils/hd-wallet.d.ts +27 -19
  251. package/es/utils/hd-wallet.mjs +42 -26
  252. package/es/utils/hd-wallet.mjs.map +1 -1
  253. package/es/utils/json-big.mjs +0 -8
  254. package/es/utils/json-big.mjs.map +1 -1
  255. package/es/utils/keystore.d.ts +2 -0
  256. package/es/utils/keystore.mjs +37 -36
  257. package/es/utils/keystore.mjs.map +1 -1
  258. package/es/utils/other.d.ts +4 -2
  259. package/es/utils/other.mjs +11 -7
  260. package/es/utils/other.mjs.map +1 -1
  261. package/es/utils/semver-satisfies.mjs +0 -3
  262. package/es/utils/semver-satisfies.mjs.map +1 -1
  263. package/es/utils/string.d.ts +0 -12
  264. package/es/utils/string.mjs +1 -21
  265. package/es/utils/string.mjs.map +1 -1
  266. package/package.json +98 -51
  267. package/src/AeSdk.ts +15 -11
  268. package/src/AeSdkAepp.ts +9 -7
  269. package/src/AeSdkBase.ts +31 -202
  270. package/src/AeSdkMethods.ts +169 -0
  271. package/src/AeSdkWallet.ts +16 -47
  272. package/src/Node.ts +17 -18
  273. package/src/account/Base.ts +29 -75
  274. package/src/account/Generalized.ts +98 -0
  275. package/src/account/Ledger.ts +131 -0
  276. package/src/account/LedgerFactory.ts +86 -0
  277. package/src/account/Memory.ts +46 -60
  278. package/src/account/Rpc.ts +17 -26
  279. package/src/aens.ts +13 -11
  280. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +21 -9
  281. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +3 -3
  282. package/src/aepp-wallet-communication/rpc/RpcClient.ts +4 -4
  283. package/src/aepp-wallet-communication/rpc/types.ts +11 -1
  284. package/src/aepp-wallet-communication/schema.ts +18 -18
  285. package/src/apis/compiler/code-model-v4.yaml +681 -888
  286. package/src/apis/compiler/compiler.ts +113 -154
  287. package/src/apis/compiler/models/index.ts +80 -140
  288. package/src/apis/compiler/models/mappers.ts +165 -183
  289. package/src/apis/compiler/models/parameters.ts +6 -12
  290. package/src/chain.ts +11 -6
  291. package/src/channel/Base.ts +335 -0
  292. package/src/channel/Contract.ts +488 -0
  293. package/src/channel/Spend.ts +408 -0
  294. package/src/channel/handlers.ts +164 -582
  295. package/src/channel/internal.ts +114 -143
  296. package/src/contract/Contract.ts +610 -0
  297. package/src/contract/compiler/Base.ts +94 -0
  298. package/src/contract/compiler/Cli.ts +134 -0
  299. package/src/contract/compiler/Http.ts +124 -0
  300. package/src/contract/compiler/HttpNode.ts +26 -0
  301. package/src/contract/compiler/getFileSystem.ts +42 -0
  302. package/src/contract/ga.ts +23 -106
  303. package/src/index-browser.ts +58 -0
  304. package/src/index.ts +4 -55
  305. package/src/oracle.ts +8 -8
  306. package/src/spend.ts +6 -14
  307. package/src/tx/builder/constants.ts +33 -3
  308. package/src/tx/builder/field-types/abi-version.ts +21 -0
  309. package/src/tx/builder/field-types/address.ts +62 -0
  310. package/src/tx/builder/field-types/array.ts +19 -0
  311. package/src/tx/builder/field-types/boolean.ts +9 -0
  312. package/src/tx/builder/field-types/coin-amount.ts +4 -9
  313. package/src/tx/builder/field-types/ct-version.ts +50 -0
  314. package/src/tx/builder/field-types/deposit.ts +1 -1
  315. package/src/tx/builder/field-types/encoded.ts +27 -0
  316. package/src/tx/builder/field-types/entry.ts +31 -0
  317. package/src/tx/builder/field-types/enumeration.ts +32 -0
  318. package/src/tx/builder/field-types/fee.ts +39 -21
  319. package/src/tx/builder/field-types/gas-limit.ts +13 -8
  320. package/src/tx/builder/field-types/gas-price.ts +0 -2
  321. package/src/tx/builder/field-types/index.ts +54 -15
  322. package/src/tx/builder/field-types/mptree.ts +242 -0
  323. package/src/tx/builder/field-types/name-fee.ts +2 -3
  324. package/src/tx/builder/field-types/name-id.ts +7 -10
  325. package/src/tx/builder/field-types/pointers.ts +41 -0
  326. package/src/tx/builder/field-types/raw.ts +9 -0
  327. package/src/tx/builder/field-types/short-u-int-const.ts +20 -0
  328. package/src/tx/builder/field-types/string.ts +11 -0
  329. package/src/tx/builder/field-types/u-int.ts +4 -5
  330. package/src/tx/builder/helpers.ts +10 -60
  331. package/src/tx/builder/index.ts +65 -308
  332. package/src/tx/builder/schema.ts +280 -341
  333. package/src/tx/index.ts +40 -103
  334. package/src/tx/validator.ts +91 -96
  335. package/src/typings/@aeternity__aepp-calldata/index.d.ts +20 -0
  336. package/src/utils/autorest.ts +16 -1
  337. package/src/utils/bytes.ts +6 -34
  338. package/src/utils/crypto.ts +23 -16
  339. package/src/utils/encoder.ts +0 -1
  340. package/src/utils/errors.ts +22 -25
  341. package/src/utils/hd-wallet.ts +30 -9
  342. package/src/utils/keystore.ts +24 -21
  343. package/src/utils/other.ts +16 -1
  344. package/src/utils/string.ts +0 -20
  345. package/types-legacy/ts4.2/AeSdk.d.ts +41 -0
  346. package/types-legacy/ts4.2/AeSdkAepp.d.ts +71 -0
  347. package/types-legacy/ts4.2/AeSdkBase.d.ts +91 -0
  348. package/types-legacy/ts4.2/AeSdkMethods.d.ts +140 -0
  349. package/types-legacy/ts4.2/AeSdkWallet.d.ts +90 -0
  350. package/types-legacy/ts4.2/Node.d.ts +78 -0
  351. package/types-legacy/ts4.2/account/Base.d.ts +52 -0
  352. package/types-legacy/ts4.2/account/Generalized.d.ts +16 -0
  353. package/types-legacy/ts4.2/account/Ledger.d.ts +28 -0
  354. package/types-legacy/ts4.2/account/LedgerFactory.d.ts +39 -0
  355. package/types-legacy/ts4.2/account/Memory.d.ts +22 -0
  356. package/types-legacy/ts4.2/account/Rpc.d.ts +25 -0
  357. package/types-legacy/ts4.2/aens.d.ts +222 -0
  358. package/types-legacy/ts4.2/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  359. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +19 -0
  360. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  361. package/types-legacy/ts4.2/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  362. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  363. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +83 -0
  364. package/types-legacy/ts4.2/aepp-wallet-communication/schema.d.ts +133 -0
  365. package/types-legacy/ts4.2/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  366. package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +86 -0
  367. package/types-legacy/ts4.2/apis/compiler/index.d.ts +2 -0
  368. package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +195 -0
  369. package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +23 -0
  370. package/types-legacy/ts4.2/apis/compiler/models/parameters.d.ts +12 -0
  371. package/types-legacy/ts4.2/apis/node/index.d.ts +2 -0
  372. package/types-legacy/ts4.2/apis/node/models/index.d.ts +1065 -0
  373. package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +95 -0
  374. package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +17 -0
  375. package/types-legacy/ts4.2/apis/node/node.d.ts +215 -0
  376. package/types-legacy/ts4.2/chain.d.ts +256 -0
  377. package/types-legacy/ts4.2/channel/Base.d.ts +199 -0
  378. package/types-legacy/ts4.2/channel/Contract.d.ts +248 -0
  379. package/types-legacy/ts4.2/channel/Spend.d.ts +219 -0
  380. package/types-legacy/ts4.2/channel/handlers.d.ts +21 -0
  381. package/types-legacy/ts4.2/channel/internal.d.ts +107 -0
  382. package/types-legacy/ts4.2/contract/Contract.d.ts +212 -0
  383. package/types-legacy/ts4.2/contract/compiler/Base.d.ts +81 -0
  384. package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +23 -0
  385. package/types-legacy/ts4.2/contract/compiler/Http.d.ts +32 -0
  386. package/types-legacy/ts4.2/contract/compiler/HttpNode.d.ts +17 -0
  387. package/types-legacy/ts4.2/contract/compiler/getFileSystem.d.ts +6 -0
  388. package/types-legacy/ts4.2/contract/ga.d.ts +44 -0
  389. package/types-legacy/ts4.2/globals.d.ts +16 -0
  390. package/types-legacy/ts4.2/index-browser.d.ts +39 -0
  391. package/types-legacy/ts4.2/index.d.ts +5 -0
  392. package/types-legacy/ts4.2/oracle.d.ts +161 -0
  393. package/types-legacy/ts4.2/spend.d.ts +62 -0
  394. package/types-legacy/ts4.2/tx/builder/constants.d.ts +98 -0
  395. package/types-legacy/ts4.2/tx/builder/field-types/abi-version.d.ts +10 -0
  396. package/types-legacy/ts4.2/tx/builder/field-types/address.d.ts +21 -0
  397. package/types-legacy/ts4.2/tx/builder/field-types/array.d.ts +7 -0
  398. package/types-legacy/ts4.2/tx/builder/field-types/boolean.d.ts +6 -0
  399. package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +12 -0
  400. package/types-legacy/ts4.2/tx/builder/field-types/ct-version.d.ts +42 -0
  401. package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +14 -0
  402. package/types-legacy/ts4.2/tx/builder/field-types/encoded.d.ts +6 -0
  403. package/types-legacy/ts4.2/tx/builder/field-types/entry.d.ts +11 -0
  404. package/types-legacy/ts4.2/tx/builder/field-types/enumeration.d.ts +7 -0
  405. package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +20 -0
  406. package/types-legacy/ts4.2/tx/builder/field-types/field.d.ts +6 -0
  407. package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +15 -0
  408. package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +7 -0
  409. package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +129 -0
  410. package/types-legacy/ts4.2/tx/builder/field-types/mptree.d.ts +43 -0
  411. package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +18 -0
  412. package/types-legacy/ts4.2/tx/builder/field-types/name-id.d.ts +11 -0
  413. package/types-legacy/ts4.2/tx/builder/field-types/name.d.ts +13 -0
  414. package/types-legacy/ts4.2/tx/builder/field-types/pointers.d.ts +26 -0
  415. package/types-legacy/ts4.2/tx/builder/field-types/raw.d.ts +6 -0
  416. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int-const.d.ts +5 -0
  417. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int.d.ts +6 -0
  418. package/types-legacy/ts4.2/tx/builder/field-types/string.d.ts +6 -0
  419. package/types-legacy/ts4.2/tx/builder/field-types/u-int.d.ts +7 -0
  420. package/types-legacy/ts4.2/tx/builder/helpers.d.ts +112 -0
  421. package/types-legacy/ts4.2/tx/builder/index.d.ts +50 -0
  422. package/types-legacy/ts4.2/tx/builder/schema.d.ts +4675 -0
  423. package/types-legacy/ts4.2/tx/index.d.ts +19 -0
  424. package/types-legacy/ts4.2/tx/validator.d.ts +18 -0
  425. package/types-legacy/ts4.2/utils/amount-formatter.d.ts +42 -0
  426. package/types-legacy/ts4.2/utils/autorest.d.ts +7 -0
  427. package/types-legacy/ts4.2/utils/bignumber.d.ts +13 -0
  428. package/types-legacy/ts4.2/utils/bytes.d.ts +9 -0
  429. package/types-legacy/ts4.2/utils/crypto.d.ts +95 -0
  430. package/types-legacy/ts4.2/utils/encoder-types.d.ts +61 -0
  431. package/types-legacy/ts4.2/utils/encoder.d.ts +24 -0
  432. package/types-legacy/ts4.2/utils/errors.d.ts +475 -0
  433. package/types-legacy/ts4.2/utils/hd-wallet.d.ts +65 -0
  434. package/types-legacy/ts4.2/utils/json-big.d.ts +5 -0
  435. package/types-legacy/ts4.2/utils/keystore.d.ts +53 -0
  436. package/types-legacy/ts4.2/utils/other.d.ts +31 -0
  437. package/types-legacy/ts4.2/utils/semver-satisfies.d.ts +1 -0
  438. package/types-legacy/ts4.2/utils/string.d.ts +12 -0
  439. package/types-legacy/ts4.5/AeSdk.d.ts +41 -0
  440. package/types-legacy/ts4.5/AeSdkAepp.d.ts +71 -0
  441. package/types-legacy/ts4.5/AeSdkBase.d.ts +91 -0
  442. package/types-legacy/ts4.5/AeSdkMethods.d.ts +140 -0
  443. package/types-legacy/ts4.5/AeSdkWallet.d.ts +90 -0
  444. package/types-legacy/ts4.5/Node.d.ts +78 -0
  445. package/types-legacy/ts4.5/account/Base.d.ts +52 -0
  446. package/types-legacy/ts4.5/account/Generalized.d.ts +16 -0
  447. package/types-legacy/ts4.5/account/Ledger.d.ts +28 -0
  448. package/types-legacy/ts4.5/account/LedgerFactory.d.ts +39 -0
  449. package/types-legacy/ts4.5/account/Memory.d.ts +22 -0
  450. package/types-legacy/ts4.5/account/Rpc.d.ts +25 -0
  451. package/types-legacy/ts4.5/aens.d.ts +222 -0
  452. package/types-legacy/ts4.5/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  453. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +19 -0
  454. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  455. package/types-legacy/ts4.5/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  456. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  457. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +83 -0
  458. package/types-legacy/ts4.5/aepp-wallet-communication/schema.d.ts +133 -0
  459. package/types-legacy/ts4.5/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  460. package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +86 -0
  461. package/types-legacy/ts4.5/apis/compiler/index.d.ts +2 -0
  462. package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +195 -0
  463. package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +23 -0
  464. package/types-legacy/ts4.5/apis/compiler/models/parameters.d.ts +12 -0
  465. package/types-legacy/ts4.5/apis/node/index.d.ts +2 -0
  466. package/types-legacy/ts4.5/apis/node/models/index.d.ts +1065 -0
  467. package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +95 -0
  468. package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +17 -0
  469. package/types-legacy/ts4.5/apis/node/node.d.ts +215 -0
  470. package/types-legacy/ts4.5/chain.d.ts +256 -0
  471. package/types-legacy/ts4.5/channel/Base.d.ts +199 -0
  472. package/types-legacy/ts4.5/channel/Contract.d.ts +248 -0
  473. package/types-legacy/ts4.5/channel/Spend.d.ts +219 -0
  474. package/types-legacy/ts4.5/channel/handlers.d.ts +21 -0
  475. package/types-legacy/ts4.5/channel/internal.d.ts +107 -0
  476. package/types-legacy/ts4.5/contract/Contract.d.ts +212 -0
  477. package/types-legacy/ts4.5/contract/compiler/Base.d.ts +81 -0
  478. package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +23 -0
  479. package/types-legacy/ts4.5/contract/compiler/Http.d.ts +32 -0
  480. package/types-legacy/ts4.5/contract/compiler/HttpNode.d.ts +17 -0
  481. package/types-legacy/ts4.5/contract/compiler/getFileSystem.d.ts +6 -0
  482. package/types-legacy/ts4.5/contract/ga.d.ts +44 -0
  483. package/types-legacy/ts4.5/index-browser.d.ts +39 -0
  484. package/types-legacy/ts4.5/index.d.ts +4 -0
  485. package/types-legacy/ts4.5/oracle.d.ts +161 -0
  486. package/types-legacy/ts4.5/spend.d.ts +62 -0
  487. package/types-legacy/ts4.5/tx/builder/constants.d.ts +98 -0
  488. package/types-legacy/ts4.5/tx/builder/field-types/abi-version.d.ts +10 -0
  489. package/types-legacy/ts4.5/tx/builder/field-types/address.d.ts +21 -0
  490. package/types-legacy/ts4.5/tx/builder/field-types/array.d.ts +7 -0
  491. package/types-legacy/ts4.5/tx/builder/field-types/boolean.d.ts +6 -0
  492. package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +12 -0
  493. package/types-legacy/ts4.5/tx/builder/field-types/ct-version.d.ts +42 -0
  494. package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +14 -0
  495. package/types-legacy/ts4.5/tx/builder/field-types/encoded.d.ts +6 -0
  496. package/types-legacy/ts4.5/tx/builder/field-types/entry.d.ts +11 -0
  497. package/types-legacy/ts4.5/tx/builder/field-types/enumeration.d.ts +7 -0
  498. package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +20 -0
  499. package/types-legacy/ts4.5/tx/builder/field-types/field.d.ts +6 -0
  500. package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +15 -0
  501. package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +7 -0
  502. package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +129 -0
  503. package/types-legacy/ts4.5/tx/builder/field-types/mptree.d.ts +43 -0
  504. package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +18 -0
  505. package/types-legacy/ts4.5/tx/builder/field-types/name-id.d.ts +11 -0
  506. package/types-legacy/ts4.5/tx/builder/field-types/name.d.ts +13 -0
  507. package/types-legacy/ts4.5/tx/builder/field-types/pointers.d.ts +26 -0
  508. package/types-legacy/ts4.5/tx/builder/field-types/raw.d.ts +6 -0
  509. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int-const.d.ts +5 -0
  510. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int.d.ts +6 -0
  511. package/types-legacy/ts4.5/tx/builder/field-types/string.d.ts +6 -0
  512. package/types-legacy/ts4.5/tx/builder/field-types/u-int.d.ts +7 -0
  513. package/types-legacy/ts4.5/tx/builder/helpers.d.ts +112 -0
  514. package/types-legacy/ts4.5/tx/builder/index.d.ts +50 -0
  515. package/types-legacy/ts4.5/tx/builder/schema.d.ts +4675 -0
  516. package/types-legacy/ts4.5/tx/index.d.ts +19 -0
  517. package/types-legacy/ts4.5/tx/validator.d.ts +18 -0
  518. package/types-legacy/ts4.5/utils/amount-formatter.d.ts +42 -0
  519. package/types-legacy/ts4.5/utils/autorest.d.ts +7 -0
  520. package/types-legacy/ts4.5/utils/bignumber.d.ts +13 -0
  521. package/types-legacy/ts4.5/utils/bytes.d.ts +9 -0
  522. package/types-legacy/ts4.5/utils/crypto.d.ts +95 -0
  523. package/types-legacy/ts4.5/utils/encoder-types.d.ts +61 -0
  524. package/types-legacy/ts4.5/utils/encoder.d.ts +24 -0
  525. package/types-legacy/ts4.5/utils/errors.d.ts +475 -0
  526. package/types-legacy/ts4.5/utils/hd-wallet.d.ts +65 -0
  527. package/types-legacy/ts4.5/utils/json-big.d.ts +5 -0
  528. package/types-legacy/ts4.5/utils/keystore.d.ts +53 -0
  529. package/types-legacy/ts4.5/utils/other.d.ts +31 -0
  530. package/types-legacy/ts4.5/utils/semver-satisfies.d.ts +1 -0
  531. package/types-legacy/ts4.5/utils/string.d.ts +12 -0
  532. package/es/channel/index.d.ts +0 -625
  533. package/es/channel/index.mjs +0 -975
  534. package/es/channel/index.mjs.map +0 -1
  535. package/es/contract/Compiler.d.ts +0 -18
  536. package/es/contract/Compiler.mjs +0 -68
  537. package/es/contract/Compiler.mjs.map +0 -1
  538. package/es/contract/aci.d.ts +0 -127
  539. package/es/contract/aci.mjs +0 -508
  540. package/es/contract/aci.mjs.map +0 -1
  541. package/es/contract/methods.d.ts +0 -71
  542. package/es/contract/methods.mjs +0 -104
  543. package/es/contract/methods.mjs.map +0 -1
  544. package/es/deprecated/index.d.ts +0 -143
  545. package/es/deprecated/index.mjs +0 -162
  546. package/es/deprecated/index.mjs.map +0 -1
  547. package/es/deprecated/methods.d.ts +0 -18
  548. package/es/deprecated/methods.mjs +0 -26
  549. package/es/deprecated/methods.mjs.map +0 -1
  550. package/es/tx/builder/address.d.ts +0 -25
  551. package/es/tx/builder/address.mjs +0 -45
  552. package/es/tx/builder/address.mjs.map +0 -1
  553. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +0 -1
  554. package/es/utils/mptree.d.ts +0 -26
  555. package/es/utils/mptree.mjs +0 -165
  556. package/es/utils/mptree.mjs.map +0 -1
  557. package/src/channel/index.ts +0 -1025
  558. package/src/contract/Compiler.ts +0 -67
  559. package/src/contract/aci.ts +0 -537
  560. package/src/contract/methods.ts +0 -123
  561. package/src/deprecated/index.ts +0 -172
  562. package/src/deprecated/methods.ts +0 -25
  563. package/src/tx/builder/address.ts +0 -50
  564. package/src/typings/@aeternity__argon2-browser/index.d.ts +0 -3
  565. package/src/utils/mptree.ts +0 -145
@@ -1,5 +1,3 @@
1
- import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
2
-
3
1
  /*
4
2
  * ISC License (ISC)
5
3
  * Copyright (c) 2018 aeternity developers
@@ -16,251 +14,173 @@ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/ins
16
14
  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
15
  * PERFORMANCE OF THIS SOFTWARE.
18
16
  */
17
+
19
18
  import _websocket from 'websocket';
20
19
  const {
21
20
  w3cwebsocket: W3CWebSocket
22
21
  } = _websocket;
23
- import _events from 'events';
24
- const {
25
- EventEmitter
26
- } = _events;
27
22
  import JsonBig from "../utils/json-big.mjs";
28
23
  import { pascalToSnake } from "../utils/string.mjs";
29
- import { ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError } from "../utils/errors.mjs";
24
+ import { ChannelCallError, ChannelPingTimedOutError, UnexpectedTsError, UnknownChannelStateError, ChannelIncomingMessageError, ChannelError } from "../utils/errors.mjs";
30
25
  // Send ping message every 10 seconds
31
- const PING_TIMEOUT_MS = 10000; // Close connection if pong message is not received within 5 seconds
32
-
33
- const PONG_TIMEOUT_MS = 5000; // TODO: move to Channel instance to avoid is-null checks and for easier debugging
34
-
35
- export const options = new WeakMap();
36
- export const status = new WeakMap();
37
- export const state = new WeakMap();
38
- const fsm = new WeakMap();
39
- const websockets = new WeakMap();
40
- export const eventEmitters = new WeakMap();
41
- const messageQueue = new WeakMap();
42
- const messageQueueLocked = new WeakMap();
43
- const actionQueue = new WeakMap();
44
- const actionQueueLocked = new WeakMap();
45
- const sequence = new WeakMap();
46
- export const channelId = new WeakMap();
47
- const rpcCallbacks = new WeakMap();
48
- const pingTimeoutId = new WeakMap();
49
- const pongTimeoutId = new WeakMap();
50
- export const fsmId = new WeakMap();
26
+ const PING_TIMEOUT_MS = 10000;
27
+ // Close connection if pong message is not received within 15 seconds
28
+ const PONG_TIMEOUT_MS = 15000;
51
29
  export function emit(channel) {
52
- var _eventEmitters$get;
53
-
54
30
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
55
31
  args[_key - 1] = arguments[_key];
56
32
  }
57
-
58
33
  const [eventName, ...rest] = args;
59
- (_eventEmitters$get = eventEmitters.get(channel)) === null || _eventEmitters$get === void 0 ? void 0 : _eventEmitters$get.emit(eventName, ...rest);
34
+ channel._eventEmitter.emit(eventName, ...rest);
60
35
  }
61
-
62
36
  function enterState(channel, nextState) {
63
37
  var _nextState$handler;
64
-
65
38
  if (nextState == null) {
66
39
  throw new UnknownChannelStateError();
67
40
  }
68
-
69
- fsm.set(channel, nextState);
70
-
41
+ channel._fsm = nextState;
71
42
  if ((nextState === null || nextState === void 0 ? void 0 : (_nextState$handler = nextState.handler) === null || _nextState$handler === void 0 ? void 0 : _nextState$handler.enter) != null) {
72
43
  nextState.handler.enter(channel);
73
- } // eslint-disable-next-line @typescript-eslint/no-use-before-define
74
-
75
-
44
+ }
45
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
76
46
  void dequeueAction(channel);
77
47
  }
78
48
 
79
- export function changeStatus(channel, newStatus) {
80
- const prevStatus = status.get(channel);
49
+ // TODO: rewrite to enum
81
50
 
82
- if (newStatus !== prevStatus) {
83
- status.set(channel, newStatus);
84
- emit(channel, 'statusChanged', newStatus);
85
- }
51
+ export function changeStatus(channel, newStatus) {
52
+ if (newStatus === channel._status) return;
53
+ channel._status = newStatus;
54
+ emit(channel, 'statusChanged', newStatus);
86
55
  }
87
56
  export function changeState(channel, newState) {
88
- state.set(channel, newState);
57
+ channel._state = newState;
89
58
  emit(channel, 'stateChanged', newState);
90
59
  }
91
- export function send(channel, message) {
92
- var _options$get$debug, _options$get, _websockets$get;
93
-
94
- const debug = (_options$get$debug = (_options$get = options.get(channel)) === null || _options$get === void 0 ? void 0 : _options$get.debug) !== null && _options$get$debug !== void 0 ? _options$get$debug : false;
95
- if (debug) console.log('Send message: ', message);
96
- (_websockets$get = websockets.get(channel)) === null || _websockets$get === void 0 ? void 0 : _websockets$get.send(JsonBig.stringify(message));
60
+ function send(channel, message) {
61
+ if (channel._options.debug) console.log('Send message: ', message);
62
+ channel._websocket.send(JsonBig.stringify({
63
+ jsonrpc: '2.0',
64
+ ...message
65
+ }));
66
+ }
67
+ export function notify(channel, method) {
68
+ let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
69
+ send(channel, {
70
+ method,
71
+ params
72
+ });
97
73
  }
98
-
99
74
  async function dequeueAction(channel) {
100
- var _actionQueue$get;
101
-
102
- const locked = actionQueueLocked.get(channel);
103
- const queue = (_actionQueue$get = actionQueue.get(channel)) !== null && _actionQueue$get !== void 0 ? _actionQueue$get : [];
104
-
105
- if (Boolean(locked) || queue.length === 0) {
106
- return;
107
- }
108
-
109
- const singleFsm = fsm.get(channel);
110
- if (singleFsm == null) return;
111
- const index = queue.findIndex(action => action.guard(channel, singleFsm));
112
-
113
- if (index === -1) {
114
- return;
115
- }
116
-
117
- actionQueue.set(channel, queue.filter((_, i) => index !== i));
118
- actionQueueLocked.set(channel, true);
119
- const nextState = await Promise.resolve(queue[index].action(channel, singleFsm));
120
- actionQueueLocked.set(channel, false);
75
+ if (channel._isActionQueueLocked) return;
76
+ const queue = channel._actionQueue;
77
+ if (queue.length === 0) return;
78
+ const index = queue.findIndex(action => action.guard(channel, channel._fsm));
79
+ if (index === -1) return;
80
+ channel._actionQueue = queue.filter((_, i) => index !== i);
81
+ channel._isActionQueueLocked = true;
82
+ const nextState = await queue[index].action(channel, channel._fsm);
83
+ channel._isActionQueueLocked = false;
121
84
  enterState(channel, nextState);
122
85
  }
123
-
124
- export function enqueueAction(channel, guard, action) {
125
- var _actionQueue$get2;
126
-
127
- const queue = (_actionQueue$get2 = actionQueue.get(channel)) !== null && _actionQueue$get2 !== void 0 ? _actionQueue$get2 : [];
128
- actionQueue.set(channel, [...queue, {
129
- guard,
130
- action
131
- }]);
86
+ export async function enqueueAction(channel, guard, action) {
87
+ const promise = new Promise((resolve, reject) => {
88
+ channel._actionQueue.push({
89
+ guard,
90
+ action() {
91
+ const res = action();
92
+ return {
93
+ ...res,
94
+ state: {
95
+ ...res.state,
96
+ resolve,
97
+ reject
98
+ }
99
+ };
100
+ }
101
+ });
102
+ });
132
103
  void dequeueAction(channel);
104
+ return promise;
133
105
  }
134
-
135
106
  async function handleMessage(channel, message) {
136
- const fsmState = fsm.get(channel);
137
- if (fsmState == null) throw new UnknownChannelStateError();
138
107
  const {
139
108
  handler,
140
109
  state: st
141
- } = fsmState;
110
+ } = channel._fsm;
142
111
  enterState(channel, await Promise.resolve(handler(channel, message, st)));
143
112
  }
144
-
145
113
  async function dequeueMessage(channel) {
146
- var _messageQueueLocked$g, _messageQueue$get;
147
-
148
- const locked = (_messageQueueLocked$g = messageQueueLocked.get(channel)) !== null && _messageQueueLocked$g !== void 0 ? _messageQueueLocked$g : false;
149
- if (locked) return;
150
- const messages = (_messageQueue$get = messageQueue.get(channel)) !== null && _messageQueue$get !== void 0 ? _messageQueue$get : [];
151
- if (messages.length === 0) return;
152
- messageQueueLocked.set(channel, true);
153
-
154
- while (messages.length > 0) {
155
- var _messages$shift;
156
-
157
- const message = (_messages$shift = messages.shift()) !== null && _messages$shift !== void 0 ? _messages$shift : '';
158
-
114
+ if (channel._isMessageQueueLocked) return;
115
+ channel._isMessageQueueLocked = true;
116
+ while (channel._messageQueue.length > 0) {
117
+ const message = channel._messageQueue.shift();
118
+ if (message == null) throw new UnexpectedTsError();
159
119
  try {
160
120
  await handleMessage(channel, message);
161
121
  } catch (error) {
162
- console.error('Error handling incoming message:');
163
- console.error(message);
164
- console.error(error);
122
+ emit(channel, 'error', new ChannelIncomingMessageError(error, message));
165
123
  }
166
124
  }
167
-
168
- messageQueueLocked.set(channel, false);
125
+ channel._isMessageQueueLocked = false;
169
126
  }
170
-
171
127
  export function disconnect(channel) {
172
- var _websockets$get2;
173
-
174
- (_websockets$get2 = websockets.get(channel)) === null || _websockets$get2 === void 0 ? void 0 : _websockets$get2.close();
175
- const pingTimeoutIdValue = pingTimeoutId.get(channel);
176
- const pongTimeoutIdValue = pongTimeoutId.get(channel);
177
- if (pingTimeoutIdValue != null) clearTimeout(pingTimeoutIdValue);
178
- if (pongTimeoutIdValue != null) clearTimeout(pongTimeoutIdValue);
128
+ channel._websocket.close();
129
+ clearTimeout(channel._pingTimeoutId);
179
130
  }
180
-
181
131
  function ping(channel) {
182
- const pingTimeoutIdValue = pingTimeoutId.get(channel);
183
- const pongTimeoutIdValue = pongTimeoutId.get(channel);
184
- if (pingTimeoutIdValue != null) clearTimeout(pingTimeoutIdValue);
185
- if (pongTimeoutIdValue != null) clearTimeout(pongTimeoutIdValue);
186
- pingTimeoutId.set(channel, setTimeout(() => {
187
- send(channel, {
188
- jsonrpc: '2.0',
189
- method: 'channels.system',
190
- params: {
191
- action: 'ping'
192
- }
132
+ clearTimeout(channel._pingTimeoutId);
133
+ channel._pingTimeoutId = setTimeout(() => {
134
+ notify(channel, 'channels.system', {
135
+ action: 'ping'
193
136
  });
194
- pongTimeoutId.set(channel, setTimeout(() => {
137
+ channel._pingTimeoutId = setTimeout(() => {
195
138
  disconnect(channel);
196
139
  emit(channel, 'error', new ChannelPingTimedOutError());
197
- }, PONG_TIMEOUT_MS));
198
- }, PING_TIMEOUT_MS));
140
+ }, PONG_TIMEOUT_MS);
141
+ }, PING_TIMEOUT_MS);
199
142
  }
200
-
201
143
  function onMessage(channel, data) {
202
- var _options$get$debug2, _options$get2, _messageQueue$get2;
203
-
204
144
  const message = JsonBig.parse(data);
205
- const debug = (_options$get$debug2 = (_options$get2 = options.get(channel)) === null || _options$get2 === void 0 ? void 0 : _options$get2.debug) !== null && _options$get$debug2 !== void 0 ? _options$get$debug2 : false;
206
- if (debug) console.log('Receive message: ', message);
207
-
145
+ if (channel._options.debug) console.log('Receive message: ', message);
208
146
  if (message.id != null) {
209
- var _rpcCallbacks$get;
210
-
211
- const callback = (_rpcCallbacks$get = rpcCallbacks.get(channel)) === null || _rpcCallbacks$get === void 0 ? void 0 : _rpcCallbacks$get.get(message.id);
212
-
147
+ const callback = channel._rpcCallbacks.get(message.id);
148
+ if (callback == null) {
149
+ emit(channel, 'error', new ChannelError(`Can't find callback by id: ${message.id}`));
150
+ return;
151
+ }
213
152
  try {
214
- callback === null || callback === void 0 ? void 0 : callback(message);
153
+ callback(message);
215
154
  } finally {
216
- var _rpcCallbacks$get2;
217
-
218
- (_rpcCallbacks$get2 = rpcCallbacks.get(channel)) === null || _rpcCallbacks$get2 === void 0 ? void 0 : _rpcCallbacks$get2.delete(message.id);
155
+ channel._rpcCallbacks.delete(message.id);
219
156
  }
220
-
221
157
  return;
222
158
  }
223
-
224
159
  if (message.method === 'channels.message') {
225
160
  emit(channel, 'message', message.params.data.message);
226
161
  return;
227
162
  }
228
-
229
163
  if (message.method === 'channels.system.pong') {
230
- if (message.params.channel_id === channelId.get(channel) // Skip channelId check if channelId is not known yet
231
- || channelId.get(channel) == null) {
164
+ if (message.params.channel_id === channel._channelId || channel._channelId == null) {
232
165
  ping(channel);
233
166
  }
234
-
235
167
  return;
236
168
  }
237
-
238
- (_messageQueue$get2 = messageQueue.get(channel)) === null || _messageQueue$get2 === void 0 ? void 0 : _messageQueue$get2.push(message);
169
+ channel._messageQueue.push(message);
239
170
  void dequeueMessage(channel);
240
171
  }
241
-
242
172
  export async function call(channel, method, params) {
243
173
  return new Promise((resolve, reject) => {
244
- var _sequence$get, _sequence$set$get, _rpcCallbacks$get3;
245
-
246
- const currentSequence = (_sequence$get = sequence.get(channel)) !== null && _sequence$get !== void 0 ? _sequence$get : 0;
247
- const id = (_sequence$set$get = sequence.set(channel, currentSequence + 1).get(channel)) !== null && _sequence$set$get !== void 0 ? _sequence$set$get : 1;
248
- (_rpcCallbacks$get3 = rpcCallbacks.get(channel)) === null || _rpcCallbacks$get3 === void 0 ? void 0 : _rpcCallbacks$get3.set(id, message => {
174
+ const id = channel._nextRpcMessageId;
175
+ channel._nextRpcMessageId += 1;
176
+ channel._rpcCallbacks.set(id, message => {
249
177
  if (message.error != null) {
250
- var _message$error$data;
251
-
252
- const [{
253
- message: details
254
- } = {
255
- message: ''
256
- }] = (_message$error$data = message.error.data) !== null && _message$error$data !== void 0 ? _message$error$data : [];
257
- return reject(new ChannelCallError(message.error.message + details));
258
- }
259
-
260
- return resolve(message.result);
178
+ var _message$error$data$;
179
+ const details = (_message$error$data$ = message.error.data[0].message) !== null && _message$error$data$ !== void 0 ? _message$error$data$ : '';
180
+ reject(new ChannelCallError(message.error.message + details));
181
+ } else resolve(message.result);
261
182
  });
262
183
  send(channel, {
263
- jsonrpc: '2.0',
264
184
  method,
265
185
  id,
266
186
  params
@@ -272,53 +192,44 @@ export async function initialize(channel, connectionHandler, openHandler, _ref)
272
192
  url,
273
193
  ...channelOptions
274
194
  } = _ref;
275
- options.set(channel, {
195
+ channel._options = {
276
196
  url,
277
197
  ...channelOptions
278
- });
279
- fsm.set(channel, {
198
+ };
199
+ channel._fsm = {
280
200
  handler: connectionHandler
281
- });
282
- eventEmitters.set(channel, new EventEmitter());
283
- sequence.set(channel, 0);
284
- rpcCallbacks.set(channel, new Map());
285
- messageQueue.set(channel, []);
201
+ };
286
202
  const wsUrl = new URL(url);
287
203
  Object.entries(channelOptions).filter(_ref2 => {
288
- var _context;
289
-
290
204
  let [key] = _ref2;
291
- return !_includesInstanceProperty(_context = ['sign', 'debug']).call(_context, key);
205
+ return !['sign', 'debug'].includes(key);
292
206
  }).forEach(_ref3 => {
293
207
  let [key, value] = _ref3;
294
- return wsUrl.searchParams.set(pascalToSnake(key), value);
208
+ return wsUrl.searchParams.set(pascalToSnake(key), value.toString());
295
209
  });
296
210
  wsUrl.searchParams.set('protocol', 'json-rpc');
297
211
  changeStatus(channel, 'connecting');
298
- const ws = new W3CWebSocket(wsUrl.toString());
212
+ channel._websocket = new W3CWebSocket(wsUrl.toString());
299
213
  await new Promise((resolve, reject) => {
300
- Object.assign(ws, {
214
+ Object.assign(channel._websocket, {
301
215
  onerror: reject,
302
216
  onopen: async () => {
303
217
  resolve();
304
218
  changeStatus(channel, 'connected');
305
-
306
219
  if (channelOptions.reconnectTx != null) {
307
220
  enterState(channel, {
308
221
  handler: openHandler
309
222
  });
310
- const signedTx = (await call(channel, 'channels.get.offchain_state', {})).signed_tx;
223
+ const {
224
+ signedTx
225
+ } = await channel.state();
311
226
  changeState(channel, signedTx);
312
227
  }
313
-
314
228
  ping(channel);
315
229
  },
316
230
  onclose: () => {
317
231
  changeStatus(channel, 'disconnected');
318
- const pingTimeoutIdValue = pingTimeoutId.get(channel);
319
- const pongTimeoutIdValue = pongTimeoutId.get(channel);
320
- if (pingTimeoutIdValue != null) clearTimeout(pingTimeoutIdValue);
321
- if (pongTimeoutIdValue != null) clearTimeout(pongTimeoutIdValue);
232
+ clearTimeout(channel._pingTimeoutId);
322
233
  },
323
234
  onmessage: _ref4 => {
324
235
  let {
@@ -328,6 +239,5 @@ export async function initialize(channel, connectionHandler, openHandler, _ref)
328
239
  }
329
240
  });
330
241
  });
331
- websockets.set(channel, ws);
332
242
  }
333
243
  //# sourceMappingURL=internal.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.mjs","names":["JsonBig","pascalToSnake","ChannelCallError","ChannelPingTimedOutError","UnknownChannelStateError","PING_TIMEOUT_MS","PONG_TIMEOUT_MS","options","WeakMap","status","state","fsm","websockets","eventEmitters","messageQueue","messageQueueLocked","actionQueue","actionQueueLocked","sequence","channelId","rpcCallbacks","pingTimeoutId","pongTimeoutId","fsmId","emit","channel","args","eventName","rest","get","enterState","nextState","set","handler","enter","dequeueAction","changeStatus","newStatus","prevStatus","changeState","newState","send","message","debug","console","log","stringify","locked","queue","Boolean","length","singleFsm","index","findIndex","action","guard","filter","_","i","Promise","resolve","enqueueAction","handleMessage","fsmState","st","dequeueMessage","messages","shift","error","disconnect","close","pingTimeoutIdValue","pongTimeoutIdValue","clearTimeout","ping","setTimeout","jsonrpc","method","params","onMessage","data","parse","id","callback","delete","channel_id","push","call","reject","currentSequence","details","result","initialize","connectionHandler","openHandler","url","channelOptions","EventEmitter","Map","wsUrl","URL","Object","entries","key","forEach","value","searchParams","ws","W3CWebSocket","toString","assign","onerror","onopen","reconnectTx","signedTx","signed_tx","onclose","onmessage"],"sources":["../../src/channel/internal.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { w3cwebsocket as W3CWebSocket } from 'websocket';\nimport { EventEmitter } from 'events';\nimport BigNumber from 'bignumber.js';\nimport type Channel from '.';\nimport JsonBig from '../utils/json-big';\nimport { pascalToSnake } from '../utils/string';\nimport { Encoded } from '../utils/encoder';\nimport {\n BaseError, ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError,\n} from '../utils/errors';\n\ninterface ChannelAction {\n guard: (channel: Channel, state?: ChannelFsm) => boolean;\n action: (channel: Channel, state?: ChannelFsm) => ChannelFsm;\n}\n\nexport type SignTxWithTag = (tag: string, tx: Encoded.Transaction, options?: object) => (\n Promise<Encoded.Transaction>\n);\n// TODO: SignTx shouldn't return number or null\nexport type SignTx = (tx: Encoded.Transaction, options?: object) => (\n Promise<Encoded.Transaction | number | null>\n);\n\nexport interface ChannelOptions {\n existingFsmId?: string;\n url: string;\n role: 'initiator' | 'responder';\n initiatorId: Encoded.AccountAddress;\n responderId: Encoded.AccountAddress;\n pushAmount: number;\n initiatorAmount: BigNumber;\n responderAmount: BigNumber;\n channelReserve?: BigNumber | number;\n signedTx?: string;\n ttl?: number;\n host: string;\n port: number;\n lockPeriod: number;\n existingChannelId?: string;\n offChainTx?: string;\n reconnectTx?: string;\n timeoutIdle?: number;\n timeoutFundingCreate?: number;\n timeoutFundingSign?: number;\n timeoutFundingLock?: number;\n timeoutSign?: number;\n timeoutAccept?: number;\n timeoutInitialized?: number;\n timeoutAwaitingOpen?: number;\n statePassword?: string;\n debug: boolean;\n sign: SignTxWithTag;\n offchainTx?: string;\n}\n\nexport interface ChannelHandler extends Function {\n enter?: Function;\n}\n\nexport interface ChannelState {\n signedTx: any;\n resolve: (r?: any) => void;\n reject: (e: BaseError) => void;\n sign: SignTx;\n handler?: ChannelHandler;\n onOnChainTx?: (tx: Encoded.Transaction) => void;\n onOwnWithdrawLocked?: () => void;\n onWithdrawLocked?: () => void;\n onOwnDepositLocked?: () => void;\n onDepositLocked?: () => void;\n closeTx?: string;\n}\n\nexport interface ChannelFsm {\n handler: ChannelHandler;\n state?: ChannelState | {\n resolve: Function;\n reject: Function;\n };\n}\n\nexport interface ChannelMessage {\n id?: number;\n jsonrpc: string;\n method: string;\n params: any;\n payload?: any;\n data?: any;\n error?: ChannelMessageError;\n}\n\ninterface ChannelMessageError {\n code: number;\n message: string;\n data: [{\n message: string;\n code: number;\n }];\n request: ChannelMessage;\n}\n\n// Send ping message every 10 seconds\nconst PING_TIMEOUT_MS = 10000;\n// Close connection if pong message is not received within 5 seconds\nconst PONG_TIMEOUT_MS = 5000;\n\n// TODO: move to Channel instance to avoid is-null checks and for easier debugging\nexport const options = new WeakMap<Channel, ChannelOptions>();\nexport const status = new WeakMap<Channel, string>();\nexport const state = new WeakMap<Channel, Encoded.Transaction>();\nconst fsm = new WeakMap<Channel, ChannelFsm>();\nconst websockets = new WeakMap<Channel, W3CWebSocket>();\nexport const eventEmitters = new WeakMap<Channel, EventEmitter>();\nconst messageQueue = new WeakMap<Channel, string[]>();\nconst messageQueueLocked = new WeakMap<Channel, boolean>();\nconst actionQueue = new WeakMap<Channel, ChannelAction[]>();\nconst actionQueueLocked = new WeakMap<Channel, boolean>();\nconst sequence = new WeakMap<Channel, number>();\nexport const channelId = new WeakMap<Channel, string>();\nconst rpcCallbacks = new WeakMap<Channel, Map<number, Function>>();\nconst pingTimeoutId = new WeakMap<Channel, NodeJS.Timeout>();\nconst pongTimeoutId = new WeakMap<Channel, NodeJS.Timeout>();\nexport const fsmId = new WeakMap<Channel, string>();\n\nexport function emit(channel: Channel, ...args: any[]): void {\n const [eventName, ...rest] = args;\n eventEmitters.get(channel)?.emit(eventName, ...rest);\n}\n\nfunction enterState(channel: Channel, nextState: ChannelFsm): void {\n if (nextState == null) {\n throw new UnknownChannelStateError();\n }\n fsm.set(channel, nextState);\n if (nextState?.handler?.enter != null) {\n nextState.handler.enter(channel);\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n void dequeueAction(channel);\n}\n\nexport function changeStatus(channel: Channel, newStatus: string): void {\n const prevStatus = status.get(channel);\n if (newStatus !== prevStatus) {\n status.set(channel, newStatus);\n emit(channel, 'statusChanged', newStatus);\n }\n}\n\nexport function changeState(channel: Channel, newState: Encoded.Transaction): void {\n state.set(channel, newState);\n emit(channel, 'stateChanged', newState);\n}\n\nexport function send(channel: Channel, message: ChannelMessage): void {\n const debug: boolean = options.get(channel)?.debug ?? false;\n if (debug) console.log('Send message: ', message);\n\n websockets.get(channel)?.send(JsonBig.stringify(message));\n}\n\nasync function dequeueAction(channel: Channel): Promise<void> {\n const locked = actionQueueLocked.get(channel);\n const queue = actionQueue.get(channel) ?? [];\n if (Boolean(locked) || queue.length === 0) {\n return;\n }\n const singleFsm = fsm.get(channel);\n if (singleFsm == null) return;\n const index = queue.findIndex((action: ChannelAction) => action.guard(channel, singleFsm));\n if (index === -1) {\n return;\n }\n actionQueue.set(channel, queue.filter((_: ChannelAction, i: number) => index !== i));\n actionQueueLocked.set(channel, true);\n const nextState: ChannelFsm = await Promise.resolve(queue[index].action(channel, singleFsm));\n actionQueueLocked.set(channel, false);\n enterState(channel, nextState);\n}\n\nexport function enqueueAction(\n channel: Channel,\n guard: ChannelAction['guard'],\n action: ChannelAction['action'],\n): void {\n const queue = actionQueue.get(channel) ?? [];\n actionQueue.set(channel, [\n ...queue,\n { guard, action },\n ]);\n void dequeueAction(channel);\n}\n\nasync function handleMessage(channel: Channel, message: string): Promise<void> {\n const fsmState = fsm.get(channel);\n if (fsmState == null) throw new UnknownChannelStateError();\n const { handler, state: st } = fsmState;\n enterState(channel, await Promise.resolve(handler(channel, message, st)));\n}\n\nasync function dequeueMessage(channel: Channel): Promise<void> {\n const locked: boolean = messageQueueLocked.get(channel) ?? false;\n if (locked) return;\n const messages: string[] = messageQueue.get(channel) ?? [];\n if (messages.length === 0) return;\n messageQueueLocked.set(channel, true);\n while (messages.length > 0) {\n const message: string = messages.shift() ?? '';\n try {\n await handleMessage(channel, message);\n } catch (error) {\n console.error('Error handling incoming message:');\n console.error(message);\n console.error(error);\n }\n }\n messageQueueLocked.set(channel, false);\n}\n\nexport function disconnect(channel: Channel): void {\n websockets.get(channel)?.close();\n const pingTimeoutIdValue = pingTimeoutId.get(channel);\n const pongTimeoutIdValue = pongTimeoutId.get(channel);\n if (pingTimeoutIdValue != null) clearTimeout(pingTimeoutIdValue);\n if (pongTimeoutIdValue != null) clearTimeout(pongTimeoutIdValue);\n}\n\nfunction ping(channel: Channel): void {\n const pingTimeoutIdValue = pingTimeoutId.get(channel);\n const pongTimeoutIdValue = pongTimeoutId.get(channel);\n if (pingTimeoutIdValue != null) clearTimeout(pingTimeoutIdValue);\n if (pongTimeoutIdValue != null) clearTimeout(pongTimeoutIdValue);\n pingTimeoutId.set(channel, setTimeout(() => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.system',\n params: {\n action: 'ping',\n },\n });\n pongTimeoutId.set(channel, setTimeout(() => {\n disconnect(channel);\n emit(channel, 'error', new ChannelPingTimedOutError());\n }, PONG_TIMEOUT_MS));\n }, PING_TIMEOUT_MS));\n}\n\nfunction onMessage(channel: Channel, data: string): void {\n const message = JsonBig.parse(data);\n const debug: boolean = options.get(channel)?.debug ?? false;\n if (debug) console.log('Receive message: ', message);\n if (message.id != null) {\n const callback = rpcCallbacks.get(channel)?.get(message.id);\n try {\n callback?.(message);\n } finally {\n rpcCallbacks.get(channel)?.delete(message.id);\n }\n return;\n }\n if (message.method === 'channels.message') {\n emit(channel, 'message', message.params.data.message);\n return;\n }\n if (message.method === 'channels.system.pong') {\n if (\n (message.params.channel_id === channelId.get(channel))\n // Skip channelId check if channelId is not known yet\n || (channelId.get(channel) == null)\n ) {\n ping(channel);\n }\n return;\n }\n messageQueue.get(channel)?.push(message);\n void dequeueMessage(channel);\n}\n\nexport async function call(channel: Channel, method: string, params: any): Promise<any> {\n return new Promise((resolve, reject) => {\n const currentSequence: number = sequence.get(channel) ?? 0;\n const id = sequence.set(channel, currentSequence + 1).get(channel) ?? 1;\n rpcCallbacks.get(channel)?.set(\n id,\n (message: { result: PromiseLike<any>; error?: ChannelMessageError }) => {\n if (message.error != null) {\n const [{ message: details } = { message: '' }] = message.error.data ?? [];\n return reject(new ChannelCallError(message.error.message + details));\n }\n return resolve(message.result);\n },\n );\n send(channel, {\n jsonrpc: '2.0', method, id, params,\n });\n });\n}\n\nexport async function initialize(\n channel: Channel,\n connectionHandler: Function,\n openHandler: Function,\n { url, ...channelOptions }: ChannelOptions,\n): Promise<void> {\n options.set(channel, { url, ...channelOptions });\n fsm.set(channel, { handler: connectionHandler });\n eventEmitters.set(channel, new EventEmitter());\n sequence.set(channel, 0);\n rpcCallbacks.set(channel, new Map());\n messageQueue.set(channel, []);\n\n const wsUrl = new URL(url);\n Object.entries(channelOptions)\n .filter(([key]) => !['sign', 'debug'].includes(key))\n .forEach(([key, value]) => wsUrl.searchParams.set(pascalToSnake(key), value));\n wsUrl.searchParams.set('protocol', 'json-rpc');\n changeStatus(channel, 'connecting');\n const ws = new W3CWebSocket(wsUrl.toString());\n await new Promise<void>((resolve, reject) => {\n Object.assign(ws, {\n onerror: reject,\n onopen: async () => {\n resolve();\n changeStatus(channel, 'connected');\n if (channelOptions.reconnectTx != null) {\n enterState(channel, { handler: openHandler });\n const signedTx = (await call(channel, 'channels.get.offchain_state', {})).signed_tx;\n changeState(channel, signedTx);\n }\n ping(channel);\n },\n onclose: () => {\n changeStatus(channel, 'disconnected');\n const pingTimeoutIdValue = pingTimeoutId.get(channel);\n const pongTimeoutIdValue = pongTimeoutId.get(channel);\n if (pingTimeoutIdValue != null) clearTimeout(pingTimeoutIdValue);\n if (pongTimeoutIdValue != null) clearTimeout(pongTimeoutIdValue);\n },\n onmessage: ({ data }: { data: string }) => onMessage(channel, data),\n });\n });\n websockets.set(channel, ws);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"internal.mjs","names":["JsonBig","pascalToSnake","ChannelCallError","ChannelPingTimedOutError","UnexpectedTsError","UnknownChannelStateError","ChannelIncomingMessageError","ChannelError","PING_TIMEOUT_MS","PONG_TIMEOUT_MS","emit","channel","args","eventName","rest","_eventEmitter","enterState","nextState","_fsm","handler","enter","dequeueAction","changeStatus","newStatus","_status","changeState","newState","_state","send","message","_options","debug","console","log","_websocket","stringify","jsonrpc","notify","method","params","_isActionQueueLocked","queue","_actionQueue","length","index","findIndex","action","guard","filter","_","i","enqueueAction","promise","Promise","resolve","reject","push","res","state","handleMessage","st","dequeueMessage","_isMessageQueueLocked","_messageQueue","shift","error","disconnect","close","clearTimeout","_pingTimeoutId","ping","setTimeout","onMessage","data","parse","id","callback","_rpcCallbacks","get","delete","channel_id","_channelId","call","_nextRpcMessageId","set","details","result","initialize","connectionHandler","openHandler","url","channelOptions","wsUrl","URL","Object","entries","key","includes","forEach","value","searchParams","toString","W3CWebSocket","assign","onerror","onopen","reconnectTx","signedTx","onclose","onmessage"],"sources":["../../src/channel/internal.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { w3cwebsocket as W3CWebSocket } from 'websocket';\nimport BigNumber from 'bignumber.js';\nimport type Channel from './Base';\nimport JsonBig from '../utils/json-big';\nimport { pascalToSnake } from '../utils/string';\nimport { Encoded } from '../utils/encoder';\nimport {\n BaseError,\n ChannelCallError,\n ChannelPingTimedOutError,\n UnexpectedTsError,\n UnknownChannelStateError,\n ChannelIncomingMessageError,\n ChannelError,\n} from '../utils/errors';\n\nexport interface ChannelAction {\n guard: (channel: Channel, state?: ChannelFsm) => boolean;\n action: (channel: Channel, state?: ChannelFsm) => ChannelFsm;\n}\n\ninterface SignOptions {\n updates?: any[];\n [k: string]: any;\n}\nexport type SignTxWithTag = (tag: string, tx: Encoded.Transaction, options?: SignOptions) => (\n Promise<Encoded.Transaction>\n);\n// TODO: SignTx shouldn't return number or null\nexport type SignTx = (tx: Encoded.Transaction, options?: SignOptions) => (\n Promise<Encoded.Transaction | number | null>\n);\n\nexport interface ChannelOptions {\n existingFsmId?: Encoded.Bytearray;\n url: string;\n\n /**\n * @see {@link https://github.com/aeternity/protocol/blob/6734de2e4c7cce7e5e626caa8305fb535785131d/node/api/channels_api_usage.md#channel-establishing-parameters}\n */\n initiatorId: Encoded.AccountAddress;\n responderId: Encoded.AccountAddress;\n lockPeriod: number;\n pushAmount: number;\n initiatorAmount: BigNumber;\n responderAmount: BigNumber;\n channelReserve?: BigNumber | number;\n ttl?: number;\n host: string;\n port: number;\n role: 'initiator' | 'responder';\n minimumDepthStrategy?: 'txfee' | 'plain';\n minimumDepth?: number;\n fee?: BigNumber | number;\n gasPrice?: BigNumber | number;\n\n signedTx?: string;\n existingChannelId?: string;\n offChainTx?: string;\n reconnectTx?: string;\n timeoutIdle?: number;\n timeoutFundingCreate?: number;\n timeoutFundingSign?: number;\n timeoutFundingLock?: number;\n timeoutSign?: number;\n timeoutAccept?: number;\n timeoutInitialized?: number;\n timeoutAwaitingOpen?: number;\n statePassword?: string;\n debug: boolean;\n sign: SignTxWithTag;\n offchainTx?: string;\n}\n\nexport interface ChannelHandler extends Function {\n enter?: Function;\n}\n\nexport interface ChannelState {\n signedTx: Encoded.Transaction;\n resolve: (r?: any) => void;\n reject: (e: BaseError) => void;\n sign: SignTx;\n handler?: ChannelHandler;\n onOnChainTx?: (tx: Encoded.Transaction) => void;\n onOwnWithdrawLocked?: () => void;\n onWithdrawLocked?: () => void;\n onOwnDepositLocked?: () => void;\n onDepositLocked?: () => void;\n closeTx?: string;\n}\n\nexport interface ChannelFsm {\n handler: ChannelHandler;\n state?: ChannelState | {\n resolve: Function;\n reject: Function;\n };\n}\n\nexport interface ChannelMessage {\n id?: number;\n method: string;\n params: any;\n payload?: any;\n data?: any;\n error?: ChannelMessageError;\n}\n\ninterface ChannelMessageError {\n code: number;\n message: string;\n data: [{\n message: string;\n code: number;\n }];\n request: ChannelMessage;\n}\n\n// Send ping message every 10 seconds\nconst PING_TIMEOUT_MS = 10000;\n// Close connection if pong message is not received within 15 seconds\nconst PONG_TIMEOUT_MS = 15000;\n\nexport function emit(channel: Channel, ...args: any[]): void {\n const [eventName, ...rest] = args;\n channel._eventEmitter.emit(eventName, ...rest);\n}\n\nfunction enterState(channel: Channel, nextState: ChannelFsm): void {\n if (nextState == null) {\n throw new UnknownChannelStateError();\n }\n channel._fsm = nextState;\n if (nextState?.handler?.enter != null) {\n nextState.handler.enter(channel);\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n void dequeueAction(channel);\n}\n\n// TODO: rewrite to enum\nexport type ChannelStatus = 'connecting' | 'connected' | 'accepted' | 'halfSigned' | 'signed'\n| 'open' | 'closing' | 'closed' | 'died' | 'disconnected';\n\nexport function changeStatus(channel: Channel, newStatus: ChannelStatus): void {\n if (newStatus === channel._status) return;\n channel._status = newStatus;\n emit(channel, 'statusChanged', newStatus);\n}\n\nexport function changeState(channel: Channel, newState: Encoded.Transaction): void {\n channel._state = newState;\n emit(channel, 'stateChanged', newState);\n}\n\nfunction send(channel: Channel, message: ChannelMessage): void {\n if (channel._options.debug) console.log('Send message: ', message);\n channel._websocket.send(JsonBig.stringify({ jsonrpc: '2.0', ...message }));\n}\n\nexport function notify(channel: Channel, method: string, params: object = {}): void {\n send(channel, { method, params });\n}\n\nasync function dequeueAction(channel: Channel): Promise<void> {\n if (channel._isActionQueueLocked) return;\n const queue = channel._actionQueue;\n if (queue.length === 0) return;\n const index = queue.findIndex((action) => action.guard(channel, channel._fsm));\n if (index === -1) return;\n channel._actionQueue = queue.filter((_, i) => index !== i);\n channel._isActionQueueLocked = true;\n const nextState: ChannelFsm = await queue[index].action(channel, channel._fsm);\n channel._isActionQueueLocked = false;\n enterState(channel, nextState);\n}\n\nexport async function enqueueAction(\n channel: Channel,\n guard: ChannelAction['guard'],\n action: () => { handler: ChannelHandler; state?: Partial<ChannelState> },\n): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n channel._actionQueue.push({\n guard,\n action() {\n const res = action();\n return { ...res, state: { ...res.state, resolve, reject } };\n },\n });\n });\n void dequeueAction(channel);\n return promise;\n}\n\nasync function handleMessage(channel: Channel, message: object): Promise<void> {\n const { handler, state: st } = channel._fsm;\n enterState(channel, await Promise.resolve(handler(channel, message, st)));\n}\n\nasync function dequeueMessage(channel: Channel): Promise<void> {\n if (channel._isMessageQueueLocked) return;\n channel._isMessageQueueLocked = true;\n while (channel._messageQueue.length > 0) {\n const message = channel._messageQueue.shift();\n if (message == null) throw new UnexpectedTsError();\n try {\n await handleMessage(channel, message);\n } catch (error) {\n emit(channel, 'error', new ChannelIncomingMessageError(error, message));\n }\n }\n channel._isMessageQueueLocked = false;\n}\n\nexport function disconnect(channel: Channel): void {\n channel._websocket.close();\n clearTimeout(channel._pingTimeoutId);\n}\n\nfunction ping(channel: Channel): void {\n clearTimeout(channel._pingTimeoutId);\n channel._pingTimeoutId = setTimeout(() => {\n notify(channel, 'channels.system', { action: 'ping' });\n channel._pingTimeoutId = setTimeout(() => {\n disconnect(channel);\n emit(channel, 'error', new ChannelPingTimedOutError());\n }, PONG_TIMEOUT_MS);\n }, PING_TIMEOUT_MS);\n}\n\nfunction onMessage(channel: Channel, data: string): void {\n const message = JsonBig.parse(data);\n if (channel._options.debug) console.log('Receive message: ', message);\n if (message.id != null) {\n const callback = channel._rpcCallbacks.get(message.id);\n if (callback == null) {\n emit(channel, 'error', new ChannelError(`Can't find callback by id: ${message.id}`));\n return;\n }\n try {\n callback(message);\n } finally {\n channel._rpcCallbacks.delete(message.id);\n }\n return;\n }\n if (message.method === 'channels.message') {\n emit(channel, 'message', message.params.data.message);\n return;\n }\n if (message.method === 'channels.system.pong') {\n if (message.params.channel_id === channel._channelId || channel._channelId == null) {\n ping(channel);\n }\n return;\n }\n channel._messageQueue.push(message);\n void dequeueMessage(channel);\n}\n\nexport async function call(channel: Channel, method: string, params: any): Promise<any> {\n return new Promise((resolve, reject) => {\n const id = channel._nextRpcMessageId;\n channel._nextRpcMessageId += 1;\n channel._rpcCallbacks.set(id, (\n message: { result: PromiseLike<any>; error?: ChannelMessageError },\n ) => {\n if (message.error != null) {\n const details = message.error.data[0].message ?? '';\n reject(new ChannelCallError(message.error.message + details));\n } else resolve(message.result);\n });\n send(channel, { method, id, params });\n });\n}\n\nexport async function initialize(\n channel: Channel,\n connectionHandler: Function,\n openHandler: Function,\n { url, ...channelOptions }: ChannelOptions,\n): Promise<void> {\n channel._options = { url, ...channelOptions };\n channel._fsm = { handler: connectionHandler };\n\n const wsUrl = new URL(url);\n Object.entries(channelOptions)\n .filter(([key]) => !['sign', 'debug'].includes(key))\n .forEach(([key, value]) => wsUrl.searchParams.set(pascalToSnake(key), value.toString()));\n wsUrl.searchParams.set('protocol', 'json-rpc');\n changeStatus(channel, 'connecting');\n channel._websocket = new W3CWebSocket(wsUrl.toString());\n await new Promise<void>((resolve, reject) => {\n Object.assign(channel._websocket, {\n onerror: reject,\n onopen: async () => {\n resolve();\n changeStatus(channel, 'connected');\n if (channelOptions.reconnectTx != null) {\n enterState(channel, { handler: openHandler });\n const { signedTx } = await channel.state();\n changeState(channel, signedTx);\n }\n ping(channel);\n },\n onclose: () => {\n changeStatus(channel, 'disconnected');\n clearTimeout(channel._pingTimeoutId);\n },\n onmessage: ({ data }: { data: string }) => onMessage(channel, data),\n });\n });\n}\n"],"mappings":"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"}