@aeternity/aepp-sdk 11.0.1 → 12.1.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 (444) hide show
  1. package/LICENSE +1 -1
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -22
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +2 -1
  6. package/dist/aepp-sdk.browser.js.LICENSE.txt +1 -0
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +20765 -1
  9. package/dist/aepp-sdk.js.map +1 -1
  10. package/es/AeSdk.d.ts +37 -0
  11. package/es/AeSdk.mjs +81 -0
  12. package/es/AeSdk.mjs.map +1 -0
  13. package/es/AeSdkAepp.d.ts +70 -0
  14. package/es/AeSdkAepp.mjs +176 -0
  15. package/es/AeSdkAepp.mjs.map +1 -0
  16. package/es/AeSdkBase.d.ts +213 -0
  17. package/es/AeSdkBase.mjs +314 -0
  18. package/es/AeSdkBase.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +104 -0
  20. package/es/AeSdkWallet.mjs +326 -0
  21. package/es/AeSdkWallet.mjs.map +1 -0
  22. package/es/Node.d.ts +41 -0
  23. package/es/Node.mjs +147 -0
  24. package/es/Node.mjs.map +1 -0
  25. package/es/account/Base.d.ts +68 -0
  26. package/es/account/Base.mjs +123 -0
  27. package/es/account/Base.mjs.map +1 -0
  28. package/es/account/Memory.d.ts +26 -0
  29. package/es/account/Memory.mjs +103 -0
  30. package/es/account/Memory.mjs.map +1 -0
  31. package/es/account/Rpc.d.ts +27 -0
  32. package/es/account/Rpc.mjs +80 -0
  33. package/es/account/Rpc.mjs.map +1 -0
  34. package/es/aens.d.ts +222 -0
  35. package/es/aens.mjs +338 -0
  36. package/es/aens.mjs.map +1 -0
  37. package/es/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs +73 -0
  39. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +58 -0
  42. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +146 -0
  45. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  47. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +16 -11
  48. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  51. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  52. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  54. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  55. package/es/aepp-wallet-communication/schema.d.ts +105 -46
  56. package/es/aepp-wallet-communication/schema.mjs +251 -0
  57. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  58. package/es/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs +62 -0
  60. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  61. package/es/apis/compiler/compiler.d.ts +92 -0
  62. package/es/apis/compiler/compiler.mjs +576 -0
  63. package/es/apis/compiler/compiler.mjs.map +1 -0
  64. package/es/apis/compiler/index.d.ts +2 -0
  65. package/es/apis/compiler/index.mjs +3 -0
  66. package/es/apis/compiler/index.mjs.map +1 -0
  67. package/es/apis/compiler/models/index.d.ts +248 -0
  68. package/es/apis/compiler/models/index.mjs +48 -0
  69. package/es/apis/compiler/models/index.mjs.map +1 -0
  70. package/es/apis/compiler/models/mappers.d.ts +23 -0
  71. package/es/apis/compiler/models/mappers.mjs +585 -0
  72. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  73. package/es/apis/compiler/models/parameters.d.ts +13 -0
  74. package/es/apis/compiler/models/parameters.mjs +71 -0
  75. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  76. package/es/apis/node/index.d.ts +2 -0
  77. package/es/apis/node/index.mjs +3 -0
  78. package/es/apis/node/index.mjs.map +1 -0
  79. package/es/apis/node/models/index.d.ts +1065 -0
  80. package/es/apis/node/models/index.mjs +2 -0
  81. package/es/apis/node/models/index.mjs.map +1 -0
  82. package/es/apis/node/models/mappers.d.ts +95 -0
  83. package/es/apis/node/models/mappers.mjs +4166 -0
  84. package/es/apis/node/models/mappers.mjs.map +1 -0
  85. package/es/apis/node/models/parameters.d.ts +17 -0
  86. package/es/apis/node/models/parameters.mjs +165 -0
  87. package/es/apis/node/models/parameters.mjs.map +1 -0
  88. package/es/apis/node/node.d.ts +215 -0
  89. package/es/apis/node/node.mjs +1165 -0
  90. package/es/apis/node/node.mjs.map +1 -0
  91. package/es/chain.d.ts +248 -0
  92. package/es/chain.mjs +560 -0
  93. package/es/chain.mjs.map +1 -0
  94. package/es/channel/handlers.d.ts +34 -0
  95. package/es/channel/handlers.mjs +164 -131
  96. package/es/channel/handlers.mjs.map +1 -1
  97. package/es/channel/index.d.ts +625 -0
  98. package/es/channel/index.mjs +897 -902
  99. package/es/channel/index.mjs.map +1 -1
  100. package/es/channel/internal.d.ts +101 -0
  101. package/es/channel/internal.mjs +136 -85
  102. package/es/channel/internal.mjs.map +1 -1
  103. package/es/contract/Compiler.d.ts +18 -0
  104. package/es/contract/Compiler.mjs +68 -0
  105. package/es/contract/Compiler.mjs.map +1 -0
  106. package/es/contract/aci.d.ts +127 -0
  107. package/es/contract/aci.mjs +225 -193
  108. package/es/contract/aci.mjs.map +1 -1
  109. package/es/contract/ga.d.ts +69 -0
  110. package/es/contract/ga.mjs +195 -0
  111. package/es/contract/ga.mjs.map +1 -0
  112. package/es/contract/methods.d.ts +71 -0
  113. package/es/contract/methods.mjs +104 -0
  114. package/es/contract/methods.mjs.map +1 -0
  115. package/es/deprecated/index.d.ts +143 -0
  116. package/es/deprecated/index.mjs +162 -0
  117. package/es/deprecated/index.mjs.map +1 -0
  118. package/es/deprecated/methods.d.ts +18 -0
  119. package/es/deprecated/methods.mjs +26 -0
  120. package/es/deprecated/methods.mjs.map +1 -0
  121. package/es/index.d.ts +35 -0
  122. package/es/index.mjs +35 -40
  123. package/es/index.mjs.map +1 -1
  124. package/es/oracle.d.ts +161 -0
  125. package/es/oracle.mjs +306 -0
  126. package/es/oracle.mjs.map +1 -0
  127. package/es/spend.d.ts +62 -0
  128. package/es/spend.mjs +111 -0
  129. package/es/spend.mjs.map +1 -0
  130. package/es/tx/builder/address.d.ts +25 -0
  131. package/es/tx/builder/address.mjs +45 -0
  132. package/es/tx/builder/address.mjs.map +1 -0
  133. package/es/tx/builder/constants.d.ts +70 -0
  134. package/es/tx/builder/constants.mjs +61 -47
  135. package/es/tx/builder/constants.mjs.map +1 -1
  136. package/es/tx/builder/field-types/coin-amount.d.ts +13 -0
  137. package/es/tx/builder/field-types/coin-amount.mjs +26 -0
  138. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -0
  139. package/es/tx/builder/field-types/deposit.d.ts +15 -0
  140. package/es/tx/builder/field-types/deposit.mjs +19 -0
  141. package/es/tx/builder/field-types/deposit.mjs.map +1 -0
  142. package/es/tx/builder/field-types/fee.d.ts +25 -0
  143. package/es/tx/builder/field-types/fee.mjs +150 -0
  144. package/es/tx/builder/field-types/fee.mjs.map +1 -0
  145. package/es/tx/builder/field-types/field.d.ts +6 -0
  146. package/es/tx/builder/field-types/field.mjs +15 -0
  147. package/es/tx/builder/field-types/field.mjs.map +1 -0
  148. package/es/tx/builder/field-types/gas-limit.d.ts +12 -0
  149. package/es/tx/builder/field-types/gas-limit.mjs +33 -0
  150. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -0
  151. package/es/tx/builder/field-types/gas-price.d.ts +8 -0
  152. package/es/tx/builder/field-types/gas-price.mjs +18 -0
  153. package/es/tx/builder/field-types/gas-price.mjs.map +1 -0
  154. package/es/tx/builder/field-types/index.d.ts +70 -0
  155. package/es/tx/builder/field-types/index.mjs +25 -0
  156. package/es/tx/builder/field-types/index.mjs.map +1 -0
  157. package/es/tx/builder/field-types/name-fee.d.ts +20 -0
  158. package/es/tx/builder/field-types/name-fee.mjs +24 -0
  159. package/es/tx/builder/field-types/name-fee.mjs.map +1 -0
  160. package/es/tx/builder/field-types/name-id.d.ts +14 -0
  161. package/es/tx/builder/field-types/name-id.mjs +19 -0
  162. package/es/tx/builder/field-types/name-id.mjs.map +1 -0
  163. package/es/tx/builder/field-types/name.d.ts +13 -0
  164. package/es/tx/builder/field-types/name.mjs +18 -0
  165. package/es/tx/builder/field-types/name.mjs.map +1 -0
  166. package/es/tx/builder/field-types/short-u-int.d.ts +6 -0
  167. package/es/tx/builder/field-types/short-u-int.mjs +12 -0
  168. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -0
  169. package/es/tx/builder/field-types/u-int.d.ts +8 -0
  170. package/es/tx/builder/field-types/u-int.mjs +14 -0
  171. package/es/tx/builder/field-types/u-int.mjs.map +1 -0
  172. package/es/tx/builder/helpers.d.ts +125 -0
  173. package/es/tx/builder/helpers.mjs +94 -198
  174. package/es/tx/builder/helpers.mjs.map +1 -1
  175. package/es/tx/builder/index.d.ts +88 -0
  176. package/es/tx/builder/index.mjs +167 -358
  177. package/es/tx/builder/index.mjs.map +1 -1
  178. package/es/tx/builder/schema.d.ts +1201 -0
  179. package/es/tx/builder/schema.mjs +175 -561
  180. package/es/tx/builder/schema.mjs.map +1 -1
  181. package/es/tx/index.d.ts +64 -0
  182. package/es/tx/index.mjs +151 -265
  183. package/es/tx/index.mjs.map +1 -1
  184. package/es/tx/validator.d.ts +20 -0
  185. package/es/tx/validator.mjs +104 -124
  186. package/es/tx/validator.mjs.map +1 -1
  187. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  188. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  189. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  190. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  191. package/es/typings/bip32-path/index.d.mjs +2 -0
  192. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  193. package/es/typings/blakejs/index.d.mjs.map +1 -1
  194. package/es/typings/sha-js/index.d.mjs +2 -0
  195. package/es/typings/sha-js/index.d.mjs.map +1 -0
  196. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  197. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  198. package/es/utils/amount-formatter.d.ts +42 -0
  199. package/es/utils/amount-formatter.mjs +36 -49
  200. package/es/utils/amount-formatter.mjs.map +1 -1
  201. package/es/utils/autorest.d.ts +6 -0
  202. package/es/utils/autorest.mjs +97 -0
  203. package/es/utils/autorest.mjs.map +1 -0
  204. package/es/utils/bignumber.d.ts +13 -0
  205. package/es/utils/bignumber.mjs +11 -8
  206. package/es/utils/bignumber.mjs.map +1 -1
  207. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  208. package/es/utils/bytes.mjs +11 -15
  209. package/es/utils/bytes.mjs.map +1 -1
  210. package/es/utils/crypto.d.ts +88 -0
  211. package/es/utils/crypto.mjs +64 -98
  212. package/es/utils/crypto.mjs.map +1 -1
  213. package/es/utils/encoder-types.d.ts +61 -0
  214. package/es/utils/encoder-types.mjs +36 -0
  215. package/es/utils/encoder-types.mjs.map +1 -0
  216. package/es/utils/encoder.d.ts +25 -0
  217. package/es/utils/encoder.mjs +71 -59
  218. package/es/utils/encoder.mjs.map +1 -1
  219. package/es/{errors.d.ts → utils/errors.d.ts} +246 -59
  220. package/es/utils/errors.mjs +313 -136
  221. package/es/utils/errors.mjs.map +1 -1
  222. package/es/utils/hd-wallet.d.ts +50 -0
  223. package/es/utils/hd-wallet.mjs +86 -45
  224. package/es/utils/hd-wallet.mjs.map +1 -1
  225. package/es/utils/json-big.d.ts +5 -0
  226. package/es/utils/json-big.mjs +12 -16
  227. package/es/utils/json-big.mjs.map +1 -1
  228. package/es/utils/keystore.d.ts +51 -0
  229. package/es/utils/keystore.mjs +101 -194
  230. package/es/utils/keystore.mjs.map +1 -1
  231. package/es/{mptree.d.ts → utils/mptree.d.ts} +6 -9
  232. package/es/utils/mptree.mjs +22 -18
  233. package/es/utils/mptree.mjs.map +1 -1
  234. package/es/utils/other.d.ts +20 -0
  235. package/es/utils/other.mjs +32 -35
  236. package/es/utils/other.mjs.map +1 -1
  237. package/es/utils/semver-satisfies.d.ts +1 -0
  238. package/es/utils/semver-satisfies.mjs +2 -2
  239. package/es/utils/semver-satisfies.mjs.map +1 -1
  240. package/es/utils/string.d.ts +24 -0
  241. package/es/utils/string.mjs +8 -10
  242. package/es/utils/string.mjs.map +1 -1
  243. package/package.json +55 -43
  244. package/src/AeSdk.ts +68 -0
  245. package/src/AeSdkAepp.ts +176 -0
  246. package/src/AeSdkBase.ts +338 -0
  247. package/src/AeSdkWallet.ts +348 -0
  248. package/src/Node.ts +173 -0
  249. package/src/account/Base.ts +124 -0
  250. package/src/account/Memory.ts +98 -0
  251. package/src/account/Rpc.ts +69 -0
  252. package/src/aens.ts +407 -0
  253. package/src/aepp-wallet-communication/connection/Browser.ts +71 -0
  254. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +59 -0
  255. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +122 -0
  256. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +18 -18
  257. package/src/aepp-wallet-communication/rpc/RpcClient.ts +143 -0
  258. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  259. package/src/aepp-wallet-communication/schema.ts +224 -0
  260. package/src/aepp-wallet-communication/wallet-detector.ts +72 -0
  261. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  262. package/src/apis/compiler/compiler.ts +585 -0
  263. package/src/apis/compiler/index.ts +2 -0
  264. package/src/apis/compiler/models/index.ts +301 -0
  265. package/src/apis/compiler/models/mappers.ts +583 -0
  266. package/src/apis/compiler/models/parameters.ts +93 -0
  267. package/src/apis/node/code-model-v4.yaml +10080 -0
  268. package/src/apis/node/index.ts +2 -0
  269. package/src/apis/node/models/index.ts +1257 -0
  270. package/src/apis/node/models/mappers.ts +4280 -0
  271. package/src/apis/node/models/parameters.ts +188 -0
  272. package/src/apis/node/node.ts +1299 -0
  273. package/src/chain.ts +502 -0
  274. package/src/channel/handlers.ts +817 -0
  275. package/src/channel/index.ts +1025 -0
  276. package/src/channel/internal.ts +361 -0
  277. package/src/contract/Compiler.ts +67 -0
  278. package/src/contract/aci.ts +538 -0
  279. package/src/contract/ga.ts +199 -0
  280. package/src/contract/methods.ts +123 -0
  281. package/src/deprecated/index.ts +172 -0
  282. package/src/deprecated/methods.ts +25 -0
  283. package/src/index.ts +56 -0
  284. package/src/oracle.ts +364 -0
  285. package/src/spend.ts +164 -0
  286. package/src/tx/builder/address.ts +50 -0
  287. package/src/tx/builder/constants.ts +126 -0
  288. package/src/tx/builder/field-types/coin-amount.ts +27 -0
  289. package/src/tx/builder/field-types/deposit.ts +21 -0
  290. package/src/tx/builder/field-types/fee.ts +143 -0
  291. package/src/tx/builder/field-types/field.ts +9 -0
  292. package/src/tx/builder/field-types/gas-limit.ts +41 -0
  293. package/src/tx/builder/field-types/gas-price.ts +16 -0
  294. package/src/tx/builder/field-types/index.ts +45 -0
  295. package/src/tx/builder/field-types/name-fee.ts +32 -0
  296. package/src/tx/builder/field-types/name-id.ts +20 -0
  297. package/src/tx/builder/field-types/name.ts +18 -0
  298. package/src/tx/builder/field-types/short-u-int.ts +11 -0
  299. package/src/tx/builder/field-types/u-int.ts +16 -0
  300. package/src/tx/builder/helpers.ts +248 -0
  301. package/src/tx/builder/index.ts +400 -0
  302. package/src/tx/builder/schema.ts +727 -0
  303. package/src/tx/index.ts +192 -0
  304. package/src/tx/validator.ts +230 -0
  305. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  306. package/src/typings/@aeternity__uuid/index.d.ts +5 -0
  307. package/src/typings/bip32-path/index.d.ts +33 -0
  308. package/src/typings/blakejs/index.d.ts +4 -32
  309. package/src/typings/sha-js/index.d.ts +5 -0
  310. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  311. package/src/utils/amount-formatter.ts +56 -69
  312. package/src/utils/autorest.ts +93 -0
  313. package/src/utils/bignumber.ts +11 -12
  314. package/src/utils/bytes.ts +29 -31
  315. package/src/utils/crypto.ts +205 -0
  316. package/src/utils/encoder-types.ts +63 -0
  317. package/src/utils/encoder.ts +116 -71
  318. package/src/utils/errors.ts +482 -366
  319. package/src/utils/hd-wallet.ts +166 -0
  320. package/src/utils/json-big.ts +27 -0
  321. package/src/utils/keystore.ts +182 -0
  322. package/src/utils/mptree.ts +64 -61
  323. package/src/utils/other.ts +34 -41
  324. package/src/utils/semver-satisfies.ts +15 -11
  325. package/src/utils/string.ts +18 -20
  326. package/es/account/base.mjs +0 -179
  327. package/es/account/base.mjs.map +0 -1
  328. package/es/account/memory.mjs +0 -99
  329. package/es/account/memory.mjs.map +0 -1
  330. package/es/account/multiple.mjs +0 -179
  331. package/es/account/multiple.mjs.map +0 -1
  332. package/es/ae/aens.mjs +0 -404
  333. package/es/ae/aens.mjs.map +0 -1
  334. package/es/ae/aepp.mjs +0 -45
  335. package/es/ae/aepp.mjs.map +0 -1
  336. package/es/ae/contract.mjs +0 -159
  337. package/es/ae/contract.mjs.map +0 -1
  338. package/es/ae/index.mjs +0 -207
  339. package/es/ae/index.mjs.map +0 -1
  340. package/es/ae/oracle.mjs +0 -339
  341. package/es/ae/oracle.mjs.map +0 -1
  342. package/es/ae/universal.mjs +0 -45
  343. package/es/ae/universal.mjs.map +0 -1
  344. package/es/ae/wallet.mjs +0 -50
  345. package/es/ae/wallet.mjs.map +0 -1
  346. package/es/amount-formatter.d.ts +0 -58
  347. package/es/bignumber.d.ts +0 -18
  348. package/es/chain/index.mjs +0 -272
  349. package/es/chain/index.mjs.map +0 -1
  350. package/es/chain/node.mjs +0 -442
  351. package/es/chain/node.mjs.map +0 -1
  352. package/es/contract/compiler.mjs +0 -115
  353. package/es/contract/compiler.mjs.map +0 -1
  354. package/es/contract/ga/helpers.mjs +0 -30
  355. package/es/contract/ga/helpers.mjs.map +0 -1
  356. package/es/contract/ga/index.mjs +0 -178
  357. package/es/contract/ga/index.mjs.map +0 -1
  358. package/es/crypto-ts.d.ts +0 -9
  359. package/es/encoder.d.ts +0 -26
  360. package/es/node-pool/index.mjs +0 -188
  361. package/es/node-pool/index.mjs.map +0 -1
  362. package/es/node.mjs +0 -133
  363. package/es/node.mjs.map +0 -1
  364. package/es/other.d.ts +0 -31
  365. package/es/semver-satisfies.d.ts +0 -1
  366. package/es/string.d.ts +0 -26
  367. package/es/tx/builder/field-types.mjs +0 -74
  368. package/es/tx/builder/field-types.mjs.map +0 -1
  369. package/es/tx/tx-object.mjs +0 -283
  370. package/es/tx/tx-object.mjs.map +0 -1
  371. package/es/tx/tx.mjs +0 -938
  372. package/es/tx/tx.mjs.map +0 -1
  373. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  374. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  375. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  376. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  377. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  378. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  379. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  380. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  381. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  382. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  383. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  384. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  385. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  386. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  387. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  388. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  389. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  390. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  391. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  392. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  393. package/es/utils/async-init.mjs +0 -64
  394. package/es/utils/async-init.mjs.map +0 -1
  395. package/es/utils/crypto-ts.mjs.map +0 -1
  396. package/es/utils/swagger.mjs +0 -164
  397. package/es/utils/swagger.mjs.map +0 -1
  398. package/src/account/base.js +0 -153
  399. package/src/account/memory.js +0 -83
  400. package/src/account/multiple.js +0 -162
  401. package/src/ae/aens.js +0 -361
  402. package/src/ae/aepp.js +0 -45
  403. package/src/ae/contract.js +0 -148
  404. package/src/ae/index.js +0 -168
  405. package/src/ae/oracle.js +0 -311
  406. package/src/ae/universal.js +0 -47
  407. package/src/ae/wallet.js +0 -50
  408. package/src/chain/index.js +0 -269
  409. package/src/chain/node.js +0 -320
  410. package/src/channel/handlers.js +0 -673
  411. package/src/channel/index.js +0 -903
  412. package/src/channel/internal.js +0 -236
  413. package/src/contract/aci.js +0 -376
  414. package/src/contract/compiler.js +0 -100
  415. package/src/contract/ga/helpers.js +0 -19
  416. package/src/contract/ga/index.js +0 -150
  417. package/src/index.js +0 -89
  418. package/src/node-pool/index.js +0 -172
  419. package/src/node.js +0 -116
  420. package/src/tx/builder/constants.js +0 -100
  421. package/src/tx/builder/field-types.js +0 -61
  422. package/src/tx/builder/helpers.js +0 -334
  423. package/src/tx/builder/index.js +0 -465
  424. package/src/tx/builder/schema.js +0 -1100
  425. package/src/tx/index.js +0 -301
  426. package/src/tx/tx-object.js +0 -187
  427. package/src/tx/tx.js +0 -631
  428. package/src/tx/validator.js +0 -181
  429. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  430. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  431. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  432. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  433. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  434. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  435. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  436. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  437. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  438. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  439. package/src/utils/async-init.js +0 -45
  440. package/src/utils/crypto.js +0 -219
  441. package/src/utils/hd-wallet.js +0 -100
  442. package/src/utils/json-big.js +0 -26
  443. package/src/utils/keystore.js +0 -219
  444. package/src/utils/swagger.js +0 -156
@@ -1,3 +1,5 @@
1
+ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
2
+
1
3
  /*
2
4
  * ISC License (ISC)
3
5
  * Copyright (c) 2018 aeternity developers
@@ -24,11 +26,12 @@ const {
24
26
  } = _events;
25
27
  import JsonBig from "../utils/json-big.mjs";
26
28
  import { pascalToSnake } from "../utils/string.mjs";
27
- import { ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError } from "../utils/errors.mjs"; // Send ping message every 10 seconds
28
-
29
+ import { ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError } from "../utils/errors.mjs";
30
+ // Send ping message every 10 seconds
29
31
  const PING_TIMEOUT_MS = 10000; // Close connection if pong message is not received within 5 seconds
30
32
 
31
- const PONG_TIMEOUT_MS = 5000;
33
+ const PONG_TIMEOUT_MS = 5000; // TODO: move to Channel instance to avoid is-null checks and for easier debugging
34
+
32
35
  export const options = new WeakMap();
33
36
  export const status = new WeakMap();
34
37
  export const state = new WeakMap();
@@ -46,25 +49,31 @@ const pingTimeoutId = new WeakMap();
46
49
  const pongTimeoutId = new WeakMap();
47
50
  export const fsmId = new WeakMap();
48
51
  export function emit(channel) {
52
+ var _eventEmitters$get;
53
+
49
54
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
50
55
  args[_key - 1] = arguments[_key];
51
56
  }
52
57
 
53
- eventEmitters.get(channel).emit(...args);
58
+ const [eventName, ...rest] = args;
59
+ (_eventEmitters$get = eventEmitters.get(channel)) === null || _eventEmitters$get === void 0 ? void 0 : _eventEmitters$get.emit(eventName, ...rest);
54
60
  }
55
61
 
56
62
  function enterState(channel, nextState) {
57
- if (!nextState) {
63
+ var _nextState$handler;
64
+
65
+ if (nextState == null) {
58
66
  throw new UnknownChannelStateError();
59
67
  }
60
68
 
61
69
  fsm.set(channel, nextState);
62
70
 
63
- if (nextState.handler.enter) {
71
+ if ((nextState === null || nextState === void 0 ? void 0 : (_nextState$handler = nextState.handler) === null || _nextState$handler === void 0 ? void 0 : _nextState$handler.enter) != null) {
64
72
  nextState.handler.enter(channel);
65
- }
73
+ } // eslint-disable-next-line @typescript-eslint/no-use-before-define
66
74
 
67
- dequeueAction(channel);
75
+
76
+ void dequeueAction(channel);
68
77
  }
69
78
 
70
79
  export function changeStatus(channel, newStatus) {
@@ -80,30 +89,26 @@ export function changeState(channel, newState) {
80
89
  emit(channel, 'stateChanged', newState);
81
90
  }
82
91
  export function send(channel, message) {
83
- const {
84
- debug = false
85
- } = options.get(channel);
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;
86
95
  if (debug) console.log('Send message: ', message);
87
- websockets.get(channel).send(JsonBig.stringify(message));
88
- }
89
- export function enqueueAction(channel, guard, action) {
90
- actionQueue.set(channel, [...(actionQueue.get(channel) || []), {
91
- guard,
92
- action
93
- }]);
94
- dequeueAction(channel);
96
+ (_websockets$get = websockets.get(channel)) === null || _websockets$get === void 0 ? void 0 : _websockets$get.send(JsonBig.stringify(message));
95
97
  }
96
98
 
97
99
  async function dequeueAction(channel) {
100
+ var _actionQueue$get;
101
+
98
102
  const locked = actionQueueLocked.get(channel);
99
- const queue = actionQueue.get(channel) || [];
103
+ const queue = (_actionQueue$get = actionQueue.get(channel)) !== null && _actionQueue$get !== void 0 ? _actionQueue$get : [];
100
104
 
101
- if (locked || !queue.length) {
105
+ if (Boolean(locked) || queue.length === 0) {
102
106
  return;
103
107
  }
104
108
 
105
- const state = fsm.get(channel);
106
- const index = queue.findIndex(item => item.guard(channel, state));
109
+ const singleFsm = fsm.get(channel);
110
+ if (singleFsm == null) return;
111
+ const index = queue.findIndex(action => action.guard(channel, singleFsm));
107
112
 
108
113
  if (index === -1) {
109
114
  return;
@@ -111,27 +116,45 @@ async function dequeueAction(channel) {
111
116
 
112
117
  actionQueue.set(channel, queue.filter((_, i) => index !== i));
113
118
  actionQueueLocked.set(channel, true);
114
- const nextState = await Promise.resolve(queue[index].action(channel, state));
119
+ const nextState = await Promise.resolve(queue[index].action(channel, singleFsm));
115
120
  actionQueueLocked.set(channel, false);
116
121
  enterState(channel, nextState);
117
122
  }
118
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
+ }]);
132
+ void dequeueAction(channel);
133
+ }
134
+
119
135
  async function handleMessage(channel, message) {
136
+ const fsmState = fsm.get(channel);
137
+ if (fsmState == null) throw new UnknownChannelStateError();
120
138
  const {
121
139
  handler,
122
- state
123
- } = fsm.get(channel);
124
- enterState(channel, await Promise.resolve(handler(channel, message, state)));
140
+ state: st
141
+ } = fsmState;
142
+ enterState(channel, await Promise.resolve(handler(channel, message, st)));
125
143
  }
126
144
 
127
145
  async function dequeueMessage(channel) {
128
- if (messageQueueLocked.get(channel)) return;
129
- const messages = messageQueue.get(channel);
130
- if (!messages.length) return;
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;
131
152
  messageQueueLocked.set(channel, true);
132
153
 
133
- while (messages.length) {
134
- const message = messages.shift();
154
+ while (messages.length > 0) {
155
+ var _messages$shift;
156
+
157
+ const message = (_messages$shift = messages.shift()) !== null && _messages$shift !== void 0 ? _messages$shift : '';
135
158
 
136
159
  try {
137
160
  await handleMessage(channel, message);
@@ -145,9 +168,21 @@ async function dequeueMessage(channel) {
145
168
  messageQueueLocked.set(channel, false);
146
169
  }
147
170
 
171
+ 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);
179
+ }
180
+
148
181
  function ping(channel) {
149
- clearTimeout(pingTimeoutId.get(channel));
150
- clearTimeout(pongTimeoutId.get(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);
151
186
  pingTimeoutId.set(channel, setTimeout(() => {
152
187
  send(channel, {
153
188
  jsonrpc: '2.0',
@@ -164,19 +199,23 @@ function ping(channel) {
164
199
  }
165
200
 
166
201
  function onMessage(channel, data) {
202
+ var _options$get$debug2, _options$get2, _messageQueue$get2;
203
+
167
204
  const message = JsonBig.parse(data);
168
- const {
169
- debug = false
170
- } = options.get(channel);
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;
171
206
  if (debug) console.log('Receive message: ', message);
172
207
 
173
- if (message.id) {
174
- const callback = rpcCallbacks.get(channel).get(message.id);
208
+ 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);
175
212
 
176
213
  try {
177
- callback(message);
214
+ callback === null || callback === void 0 ? void 0 : callback(message);
178
215
  } finally {
179
- rpcCallbacks.get(channel).delete(message.id);
216
+ var _rpcCallbacks$get2;
217
+
218
+ (_rpcCallbacks$get2 = rpcCallbacks.get(channel)) === null || _rpcCallbacks$get2 === void 0 ? void 0 : _rpcCallbacks$get2.delete(message.id);
180
219
  }
181
220
 
182
221
  return;
@@ -188,30 +227,37 @@ function onMessage(channel, data) {
188
227
  }
189
228
 
190
229
  if (message.method === 'channels.system.pong') {
191
- if (message.params.channel_id === channelId.get(channel) || // Skip channelId check if channelId is not known yet
192
- channelId.get(channel) == null) {
230
+ if (message.params.channel_id === channelId.get(channel) // Skip channelId check if channelId is not known yet
231
+ || channelId.get(channel) == null) {
193
232
  ping(channel);
194
233
  }
195
234
 
196
235
  return;
197
236
  }
198
237
 
199
- messageQueue.get(channel).push(message);
200
- dequeueMessage(channel);
238
+ (_messageQueue$get2 = messageQueue.get(channel)) === null || _messageQueue$get2 === void 0 ? void 0 : _messageQueue$get2.push(message);
239
+ void dequeueMessage(channel);
201
240
  }
202
241
 
203
- export function call(channel, method, params) {
242
+ export async function call(channel, method, params) {
204
243
  return new Promise((resolve, reject) => {
205
- const id = sequence.set(channel, sequence.get(channel) + 1).get(channel);
206
- rpcCallbacks.get(channel).set(id, message => {
207
- if (message.result) return resolve(message.result);
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 => {
249
+ if (message.error != null) {
250
+ var _message$error$data;
208
251
 
209
- if (message.error) {
210
252
  const [{
211
253
  message: details
212
- } = {}] = message.error.data || [];
213
- return reject(new ChannelCallError(message.error.message + (details ? `: ${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));
214
258
  }
259
+
260
+ return resolve(message.result);
215
261
  });
216
262
  send(channel, {
217
263
  jsonrpc: '2.0',
@@ -221,17 +267,15 @@ export function call(channel, method, params) {
221
267
  });
222
268
  });
223
269
  }
224
- export function disconnect(channel) {
225
- websockets.get(channel).close();
226
- clearTimeout(pingTimeoutId.get(channel));
227
- clearTimeout(pongTimeoutId.get(channel));
228
- }
229
270
  export async function initialize(channel, connectionHandler, openHandler, _ref) {
230
271
  let {
231
272
  url,
232
273
  ...channelOptions
233
274
  } = _ref;
234
- options.set(channel, channelOptions);
275
+ options.set(channel, {
276
+ url,
277
+ ...channelOptions
278
+ });
235
279
  fsm.set(channel, {
236
280
  handler: connectionHandler
237
281
  });
@@ -241,8 +285,10 @@ export async function initialize(channel, connectionHandler, openHandler, _ref)
241
285
  messageQueue.set(channel, []);
242
286
  const wsUrl = new URL(url);
243
287
  Object.entries(channelOptions).filter(_ref2 => {
288
+ var _context;
289
+
244
290
  let [key] = _ref2;
245
- return !['sign', 'debug'].includes(key);
291
+ return !_includesInstanceProperty(_context = ['sign', 'debug']).call(_context, key);
246
292
  }).forEach(_ref3 => {
247
293
  let [key, value] = _ref3;
248
294
  return wsUrl.searchParams.set(pascalToSnake(key), value);
@@ -250,33 +296,38 @@ export async function initialize(channel, connectionHandler, openHandler, _ref)
250
296
  wsUrl.searchParams.set('protocol', 'json-rpc');
251
297
  changeStatus(channel, 'connecting');
252
298
  const ws = new W3CWebSocket(wsUrl.toString());
253
- await new Promise((resolve, reject) => Object.assign(ws, {
254
- onerror: reject,
255
- onopen: () => {
256
- resolve();
257
- changeStatus(channel, 'connected');
258
-
259
- if (channelOptions.reconnectTx) {
260
- enterState(channel, {
261
- handler: openHandler
262
- });
263
- setTimeout(async () => changeState(channel, (await call(channel, 'channels.get.offchain_state', {})).signed_tx));
299
+ await new Promise((resolve, reject) => {
300
+ Object.assign(ws, {
301
+ onerror: reject,
302
+ onopen: async () => {
303
+ resolve();
304
+ changeStatus(channel, 'connected');
305
+
306
+ if (channelOptions.reconnectTx != null) {
307
+ enterState(channel, {
308
+ handler: openHandler
309
+ });
310
+ const signedTx = (await call(channel, 'channels.get.offchain_state', {})).signed_tx;
311
+ changeState(channel, signedTx);
312
+ }
313
+
314
+ ping(channel);
315
+ },
316
+ onclose: () => {
317
+ 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);
322
+ },
323
+ onmessage: _ref4 => {
324
+ let {
325
+ data
326
+ } = _ref4;
327
+ return onMessage(channel, data);
264
328
  }
265
-
266
- ping(channel);
267
- },
268
- onclose: () => {
269
- changeStatus(channel, 'disconnected');
270
- clearTimeout(pingTimeoutId.get(channel));
271
- clearTimeout(pongTimeoutId.get(channel));
272
- },
273
- onmessage: _ref4 => {
274
- let {
275
- data
276
- } = _ref4;
277
- return onMessage(channel, data);
278
- }
279
- }));
329
+ });
330
+ });
280
331
  websockets.set(channel, ws);
281
332
  }
282
333
  //# sourceMappingURL=internal.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/channel/internal.js"],"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","get","enterState","nextState","set","handler","enter","dequeueAction","changeStatus","newStatus","prevStatus","changeState","newState","send","message","debug","console","log","stringify","enqueueAction","guard","action","locked","queue","length","index","findIndex","item","filter","_","i","Promise","resolve","handleMessage","dequeueMessage","messages","shift","error","ping","clearTimeout","setTimeout","jsonrpc","method","params","disconnect","onMessage","data","parse","id","callback","delete","channel_id","push","call","reject","result","details","close","initialize","connectionHandler","openHandler","url","channelOptions","EventEmitter","Map","wsUrl","URL","Object","entries","key","includes","forEach","value","searchParams","ws","W3CWebSocket","toString","assign","onerror","onopen","reconnectTx","signed_tx","onclose","onmessage"],"mappings":"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","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 JsonBig from '../utils/json-big'\nimport { pascalToSnake } from '../utils/string'\nimport { ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError } from '../utils/errors'\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\nexport const options = new WeakMap()\nexport const status = new WeakMap()\nexport const state = new WeakMap()\nconst fsm = new WeakMap()\nconst websockets = new WeakMap()\nexport const eventEmitters = new WeakMap()\nconst messageQueue = new WeakMap()\nconst messageQueueLocked = new WeakMap()\nconst actionQueue = new WeakMap()\nconst actionQueueLocked = new WeakMap()\nconst sequence = new WeakMap()\nexport const channelId = new WeakMap()\nconst rpcCallbacks = new WeakMap()\nconst pingTimeoutId = new WeakMap()\nconst pongTimeoutId = new WeakMap()\nexport const fsmId = new WeakMap()\n\nexport function emit (channel, ...args) {\n eventEmitters.get(channel).emit(...args)\n}\n\nfunction enterState (channel, nextState) {\n if (!nextState) {\n throw new UnknownChannelStateError()\n }\n fsm.set(channel, nextState)\n if (nextState.handler.enter) {\n nextState.handler.enter(channel)\n }\n dequeueAction(channel)\n}\n\nexport function changeStatus (channel, newStatus) {\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, newState) {\n state.set(channel, newState)\n emit(channel, 'stateChanged', newState)\n}\n\nexport function send (channel, message) {\n const { debug = false } = options.get(channel)\n if (debug) console.log('Send message: ', message)\n websockets.get(channel).send(JsonBig.stringify(message))\n}\n\nexport function enqueueAction (channel, guard, action) {\n actionQueue.set(channel, [\n ...actionQueue.get(channel) || [],\n { guard, action }\n ])\n dequeueAction(channel)\n}\n\nasync function dequeueAction (channel) {\n const locked = actionQueueLocked.get(channel)\n const queue = actionQueue.get(channel) || []\n if (locked || !queue.length) {\n return\n }\n const state = fsm.get(channel)\n const index = queue.findIndex(item => item.guard(channel, state))\n if (index === -1) {\n return\n }\n actionQueue.set(channel, queue.filter((_, i) => index !== i))\n actionQueueLocked.set(channel, true)\n const nextState = await Promise.resolve(queue[index].action(channel, state))\n actionQueueLocked.set(channel, false)\n enterState(channel, nextState)\n}\n\nasync function handleMessage (channel, message) {\n const { handler, state } = fsm.get(channel)\n enterState(channel, await Promise.resolve(handler(channel, message, state)))\n}\n\nasync function dequeueMessage (channel) {\n if (messageQueueLocked.get(channel)) return\n const messages = messageQueue.get(channel)\n if (!messages.length) return\n messageQueueLocked.set(channel, true)\n while (messages.length) {\n const message = 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\nfunction ping (channel) {\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\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, data) {\n const message = JsonBig.parse(data)\n const { debug = false } = options.get(channel)\n if (debug) console.log('Receive message: ', message)\n if (message.id) {\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 dequeueMessage(channel)\n}\n\nexport function call (channel, method, params) {\n return new Promise((resolve, reject) => {\n const id = sequence.set(channel, sequence.get(channel) + 1).get(channel)\n rpcCallbacks.get(channel).set(id, (message) => {\n if (message.result) return resolve(message.result)\n if (message.error) {\n const [{ message: details } = {}] = message.error.data || []\n return reject(new ChannelCallError(message.error.message + (details ? `: ${details}` : '')))\n }\n })\n send(channel, { jsonrpc: '2.0', method, id, params })\n })\n}\n\nexport function disconnect (channel) {\n websockets.get(channel).close()\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n}\n\nexport async function initialize (\n channel, connectionHandler, openHandler, { url, ...channelOptions }\n) {\n options.set(channel, 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((resolve, reject) => Object.assign(ws, {\n onerror: reject,\n onopen: () => {\n resolve()\n changeStatus(channel, 'connected')\n if (channelOptions.reconnectTx) {\n enterState(channel, { handler: openHandler })\n setTimeout(async () => changeState(channel,\n (await call(channel, 'channels.get.offchain_state', {})).signed_tx\n ))\n }\n ping(channel)\n },\n onclose: () => {\n changeStatus(channel, 'disconnected')\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n },\n onmessage: ({ data }) => onMessage(channel, data)\n }))\n websockets.set(channel, ws)\n}\n"],"file":"internal.mjs"}
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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"}
@@ -0,0 +1,18 @@
1
+ import { Compiler as CompilerApi } from '../apis/compiler';
2
+ /**
3
+ * Contract Compiler
4
+ *
5
+ * This class include api call's related to contract compiler functionality.
6
+ * @category contract
7
+ * @example Compiler('COMPILER_URL')
8
+ */
9
+ export default class Compiler extends CompilerApi {
10
+ /**
11
+ * @param compilerUrl - Url for compiler API
12
+ * @param options - Options
13
+ * @param options.ignoreVersion - Don't check compiler version
14
+ */
15
+ constructor(compilerUrl: string, { ignoreVersion }?: {
16
+ ignoreVersion?: boolean;
17
+ });
18
+ }
@@ -0,0 +1,68 @@
1
+ /*
2
+ * ISC License (ISC)
3
+ * Copyright (c) 2022 aeternity developers
4
+ *
5
+ * Permission to use, copy, modify, and/or distribute this software for any
6
+ * purpose with or without fee is hereby granted, provided that the above
7
+ * copyright notice and this permission notice appear in all copies.
8
+ *
9
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
+ * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
+ * PERFORMANCE OF THIS SOFTWARE.
16
+ */
17
+ import { Compiler as CompilerApi } from "../apis/compiler/index.mjs";
18
+ import { genErrorFormatterPolicy, genVersionCheckPolicy } from "../utils/autorest.mjs";
19
+
20
+ /**
21
+ * Contract Compiler
22
+ *
23
+ * This class include api call's related to contract compiler functionality.
24
+ * @category contract
25
+ * @example Compiler('COMPILER_URL')
26
+ */
27
+ export default class Compiler extends CompilerApi {
28
+ /**
29
+ * @param compilerUrl - Url for compiler API
30
+ * @param options - Options
31
+ * @param options.ignoreVersion - Don't check compiler version
32
+ */
33
+ constructor(compilerUrl) {
34
+ let {
35
+ ignoreVersion
36
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
37
+ super(compilerUrl, {
38
+ allowInsecureConnection: true,
39
+ additionalPolicies: [genErrorFormatterPolicy(body => {
40
+ let message = '';
41
+
42
+ if ('reason' in body) {
43
+ message += ` ${body.reason}${body.parameter != null ? ` in ${body.parameter}` : '' // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78
44
+ }${body.info != null ? ` (${JSON.stringify(body.info)})` : ''}`;
45
+ }
46
+
47
+ if (Array.isArray(body)) {
48
+ message += `\n${body.map(e => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context != null ? `(${e.context})` : ''}`).map(e => e.trim()) // TODO: remove after fixing https://github.com/aeternity/aesophia_http/issues/80
49
+ .join('\n')}`;
50
+ }
51
+
52
+ return message;
53
+ })]
54
+ });
55
+
56
+ if (ignoreVersion !== true) {
57
+ const versionPromise = this.aPIVersion().then(_ref => {
58
+ let {
59
+ apiVersion
60
+ } = _ref;
61
+ return apiVersion;
62
+ });
63
+ this.pipeline.addPolicy(genVersionCheckPolicy('compiler', '/api-version', versionPromise, '6.1.0', '7.0.0'));
64
+ }
65
+ }
66
+
67
+ }
68
+ //# sourceMappingURL=Compiler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Compiler.mjs","names":["Compiler","CompilerApi","genErrorFormatterPolicy","genVersionCheckPolicy","constructor","compilerUrl","ignoreVersion","allowInsecureConnection","additionalPolicies","body","message","reason","parameter","info","JSON","stringify","Array","isArray","map","e","type","pos","line","col","context","trim","join","versionPromise","aPIVersion","then","apiVersion","pipeline","addPolicy"],"sources":["../../src/contract/Compiler.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 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 */\nimport { Compiler as CompilerApi, ErrorModel, CompilerError } from '../apis/compiler';\nimport { genErrorFormatterPolicy, genVersionCheckPolicy } from '../utils/autorest';\n\ntype GeneralCompilerError = ErrorModel & {\n info?: object;\n parameter?: string;\n};\n\n/**\n * Contract Compiler\n *\n * This class include api call's related to contract compiler functionality.\n * @category contract\n * @example Compiler('COMPILER_URL')\n */\nexport default class Compiler extends CompilerApi {\n /**\n * @param compilerUrl - Url for compiler API\n * @param options - Options\n * @param options.ignoreVersion - Don't check compiler version\n */\n constructor(compilerUrl: string, { ignoreVersion }: { ignoreVersion?: boolean } = {}) {\n super(compilerUrl, {\n allowInsecureConnection: true,\n additionalPolicies: [\n genErrorFormatterPolicy((body: GeneralCompilerError | CompilerError[]) => {\n let message = '';\n if ('reason' in body) {\n message += ` ${body.reason\n }${body.parameter != null ? ` in ${body.parameter}` : ''\n // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78\n }${body.info != null ? ` (${JSON.stringify(body.info)})` : ''}`;\n }\n if (Array.isArray(body)) {\n message += `\\n${body\n .map((e) => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context != null ? `(${e.context})` : ''}`)\n .map((e) => e.trim()) // TODO: remove after fixing https://github.com/aeternity/aesophia_http/issues/80\n .join('\\n')}`;\n }\n return message;\n }),\n ],\n });\n if (ignoreVersion !== true) {\n const versionPromise = this.aPIVersion().then(({ apiVersion }) => apiVersion);\n this.pipeline.addPolicy(\n genVersionCheckPolicy('compiler', '/api-version', versionPromise, '6.1.0', '7.0.0'),\n );\n }\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;SACSA,QAAQ,IAAIC,W;SACZC,uB,EAAyBC,qB;;AAOlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMH,QAAN,SAAuBC,WAAvB,CAAmC;EAChD;AACF;AACA;AACA;AACA;EACEG,WAAW,CAACC,WAAD,EAA2E;IAAA,IAArD;MAAEC;IAAF,CAAqD,uEAAJ,EAAI;IACpF,MAAMD,WAAN,EAAmB;MACjBE,uBAAuB,EAAE,IADR;MAEjBC,kBAAkB,EAAE,CAClBN,uBAAuB,CAAEO,IAAD,IAAkD;QACxE,IAAIC,OAAO,GAAG,EAAd;;QACA,IAAI,YAAYD,IAAhB,EAAsB;UACpBC,OAAO,IAAK,IAAGD,IAAI,CAACE,MACnB,GAAEF,IAAI,CAACG,SAAL,IAAkB,IAAlB,GAA0B,OAAMH,IAAI,CAACG,SAAU,EAA/C,GAAmD,EAD3C,CAET;UACD,GAAEH,IAAI,CAACI,IAAL,IAAa,IAAb,GAAqB,KAAIC,IAAI,CAACC,SAAL,CAAeN,IAAI,CAACI,IAApB,CAA0B,GAAnD,GAAwD,EAAG,EAH9D;QAID;;QACD,IAAIG,KAAK,CAACC,OAAN,CAAcR,IAAd,CAAJ,EAAyB;UACvBC,OAAO,IAAK,KAAID,IAAI,CACjBS,GADa,CACRC,CAAD,IAAQ,GAAEA,CAAC,CAACC,IAAK,IAAGD,CAAC,CAACE,GAAF,CAAMC,IAAK,IAAGH,CAAC,CAACE,GAAF,CAAME,GAAI,KAAIJ,CAAC,CAACT,OAAQ,GAAES,CAAC,CAACK,OAAF,IAAa,IAAb,GAAqB,IAAGL,CAAC,CAACK,OAAQ,GAAlC,GAAuC,EAAG,EAD7F,EAEbN,GAFa,CAERC,CAAD,IAAOA,CAAC,CAACM,IAAF,EAFE,EAEQ;UAFR,CAGbC,IAHa,CAGR,IAHQ,CAGF,EAHd;QAID;;QACD,OAAOhB,OAAP;MACD,CAfsB,CADL;IAFH,CAAnB;;IAqBA,IAAIJ,aAAa,KAAK,IAAtB,EAA4B;MAC1B,MAAMqB,cAAc,GAAG,KAAKC,UAAL,GAAkBC,IAAlB,CAAuB;QAAA,IAAC;UAAEC;QAAF,CAAD;QAAA,OAAoBA,UAApB;MAAA,CAAvB,CAAvB;MACA,KAAKC,QAAL,CAAcC,SAAd,CACE7B,qBAAqB,CAAC,UAAD,EAAa,cAAb,EAA6BwB,cAA7B,EAA6C,OAA7C,EAAsD,OAAtD,CADvB;IAGD;EACF;;AAlC+C"}