@aeternity/aepp-sdk 11.0.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) 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 +20764 -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 +138 -88
  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 +122 -0
  135. package/es/tx/builder/constants.mjs.map +1 -0
  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 -240
  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 -664
  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 -108
  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 +118 -0
  218. package/es/utils/encoder.mjs.map +1 -0
  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 +56 -42
  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 +170 -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 +146 -0
  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/node-pool/index.mjs +0 -188
  360. package/es/node-pool/index.mjs.map +0 -1
  361. package/es/node.mjs +0 -133
  362. package/es/node.mjs.map +0 -1
  363. package/es/other.d.ts +0 -31
  364. package/es/semver-satisfies.d.ts +0 -1
  365. package/es/string.d.ts +0 -26
  366. package/es/tx/builder/field-types.mjs +0 -74
  367. package/es/tx/builder/field-types.mjs.map +0 -1
  368. package/es/tx/tx-object.mjs +0 -283
  369. package/es/tx/tx-object.mjs.map +0 -1
  370. package/es/tx/tx.mjs +0 -938
  371. package/es/tx/tx.mjs.map +0 -1
  372. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  373. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  374. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  375. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  376. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  377. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  378. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  379. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  380. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  381. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  382. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  383. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  384. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  385. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  386. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  387. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  388. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  389. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  390. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  391. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  392. package/es/utils/async-init.mjs +0 -64
  393. package/es/utils/async-init.mjs.map +0 -1
  394. package/es/utils/crypto-ts.mjs.map +0 -1
  395. package/es/utils/swagger.mjs +0 -164
  396. package/es/utils/swagger.mjs.map +0 -1
  397. package/src/account/base.js +0 -153
  398. package/src/account/memory.js +0 -83
  399. package/src/account/multiple.js +0 -162
  400. package/src/ae/aens.js +0 -361
  401. package/src/ae/aepp.js +0 -45
  402. package/src/ae/contract.js +0 -148
  403. package/src/ae/index.js +0 -168
  404. package/src/ae/oracle.js +0 -311
  405. package/src/ae/universal.js +0 -47
  406. package/src/ae/wallet.js +0 -50
  407. package/src/chain/index.js +0 -269
  408. package/src/chain/node.js +0 -320
  409. package/src/channel/handlers.js +0 -673
  410. package/src/channel/index.js +0 -898
  411. package/src/channel/internal.js +0 -237
  412. package/src/contract/aci.js +0 -376
  413. package/src/contract/compiler.js +0 -100
  414. package/src/contract/ga/helpers.js +0 -19
  415. package/src/contract/ga/index.js +0 -150
  416. package/src/index.js +0 -89
  417. package/src/node-pool/index.js +0 -172
  418. package/src/node.js +0 -116
  419. package/src/tx/builder/field-types.js +0 -61
  420. package/src/tx/builder/helpers.js +0 -380
  421. package/src/tx/builder/index.js +0 -465
  422. package/src/tx/builder/schema.js +0 -1197
  423. package/src/tx/index.js +0 -301
  424. package/src/tx/tx-object.js +0 -187
  425. package/src/tx/tx.js +0 -631
  426. package/src/tx/validator.js +0 -181
  427. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  428. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  429. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  430. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  431. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  432. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  433. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  434. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  435. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  436. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  437. package/src/utils/async-init.js +0 -45
  438. package/src/utils/crypto.js +0 -229
  439. package/src/utils/hd-wallet.js +0 -100
  440. package/src/utils/json-big.js +0 -26
  441. package/src/utils/keystore.js +0 -219
  442. 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,12 +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 { awaitingConnection, awaitingReconnection, channelOpen } from "./handlers.mjs";
28
- import { ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError } from "../utils/errors.mjs"; // Send ping message every 10 seconds
29
-
29
+ import { ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError } from "../utils/errors.mjs";
30
+ // Send ping message every 10 seconds
30
31
  const PING_TIMEOUT_MS = 10000; // Close connection if pong message is not received within 5 seconds
31
32
 
32
- 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
+
33
35
  export const options = new WeakMap();
34
36
  export const status = new WeakMap();
35
37
  export const state = new WeakMap();
@@ -47,25 +49,31 @@ const pingTimeoutId = new WeakMap();
47
49
  const pongTimeoutId = new WeakMap();
48
50
  export const fsmId = new WeakMap();
49
51
  export function emit(channel) {
52
+ var _eventEmitters$get;
53
+
50
54
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
51
55
  args[_key - 1] = arguments[_key];
52
56
  }
53
57
 
54
- 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);
55
60
  }
56
61
 
57
62
  function enterState(channel, nextState) {
58
- if (!nextState) {
63
+ var _nextState$handler;
64
+
65
+ if (nextState == null) {
59
66
  throw new UnknownChannelStateError();
60
67
  }
61
68
 
62
69
  fsm.set(channel, nextState);
63
70
 
64
- 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) {
65
72
  nextState.handler.enter(channel);
66
- }
73
+ } // eslint-disable-next-line @typescript-eslint/no-use-before-define
67
74
 
68
- dequeueAction(channel);
75
+
76
+ void dequeueAction(channel);
69
77
  }
70
78
 
71
79
  export function changeStatus(channel, newStatus) {
@@ -81,30 +89,26 @@ export function changeState(channel, newState) {
81
89
  emit(channel, 'stateChanged', newState);
82
90
  }
83
91
  export function send(channel, message) {
84
- const {
85
- debug = false
86
- } = 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;
87
95
  if (debug) console.log('Send message: ', message);
88
- websockets.get(channel).send(JsonBig.stringify(message));
89
- }
90
- export function enqueueAction(channel, guard, action) {
91
- actionQueue.set(channel, [...(actionQueue.get(channel) || []), {
92
- guard,
93
- action
94
- }]);
95
- dequeueAction(channel);
96
+ (_websockets$get = websockets.get(channel)) === null || _websockets$get === void 0 ? void 0 : _websockets$get.send(JsonBig.stringify(message));
96
97
  }
97
98
 
98
99
  async function dequeueAction(channel) {
100
+ var _actionQueue$get;
101
+
99
102
  const locked = actionQueueLocked.get(channel);
100
- const queue = actionQueue.get(channel) || [];
103
+ const queue = (_actionQueue$get = actionQueue.get(channel)) !== null && _actionQueue$get !== void 0 ? _actionQueue$get : [];
101
104
 
102
- if (locked || !queue.length) {
105
+ if (Boolean(locked) || queue.length === 0) {
103
106
  return;
104
107
  }
105
108
 
106
- const state = fsm.get(channel);
107
- 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));
108
112
 
109
113
  if (index === -1) {
110
114
  return;
@@ -112,27 +116,45 @@ async function dequeueAction(channel) {
112
116
 
113
117
  actionQueue.set(channel, queue.filter((_, i) => index !== i));
114
118
  actionQueueLocked.set(channel, true);
115
- const nextState = await Promise.resolve(queue[index].action(channel, state));
119
+ const nextState = await Promise.resolve(queue[index].action(channel, singleFsm));
116
120
  actionQueueLocked.set(channel, false);
117
121
  enterState(channel, nextState);
118
122
  }
119
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
+
120
135
  async function handleMessage(channel, message) {
136
+ const fsmState = fsm.get(channel);
137
+ if (fsmState == null) throw new UnknownChannelStateError();
121
138
  const {
122
139
  handler,
123
- state
124
- } = fsm.get(channel);
125
- enterState(channel, await Promise.resolve(handler(channel, message, state)));
140
+ state: st
141
+ } = fsmState;
142
+ enterState(channel, await Promise.resolve(handler(channel, message, st)));
126
143
  }
127
144
 
128
145
  async function dequeueMessage(channel) {
129
- if (messageQueueLocked.get(channel)) return;
130
- const messages = messageQueue.get(channel);
131
- 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;
132
152
  messageQueueLocked.set(channel, true);
133
153
 
134
- while (messages.length) {
135
- 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 : '';
136
158
 
137
159
  try {
138
160
  await handleMessage(channel, message);
@@ -146,9 +168,21 @@ async function dequeueMessage(channel) {
146
168
  messageQueueLocked.set(channel, false);
147
169
  }
148
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
+
149
181
  function ping(channel) {
150
- clearTimeout(pingTimeoutId.get(channel));
151
- 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);
152
186
  pingTimeoutId.set(channel, setTimeout(() => {
153
187
  send(channel, {
154
188
  jsonrpc: '2.0',
@@ -165,19 +199,23 @@ function ping(channel) {
165
199
  }
166
200
 
167
201
  function onMessage(channel, data) {
202
+ var _options$get$debug2, _options$get2, _messageQueue$get2;
203
+
168
204
  const message = JsonBig.parse(data);
169
- const {
170
- debug = false
171
- } = 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;
172
206
  if (debug) console.log('Receive message: ', message);
173
207
 
174
- if (message.id) {
175
- 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);
176
212
 
177
213
  try {
178
- callback(message);
214
+ callback === null || callback === void 0 ? void 0 : callback(message);
179
215
  } finally {
180
- 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);
181
219
  }
182
220
 
183
221
  return;
@@ -189,30 +227,37 @@ function onMessage(channel, data) {
189
227
  }
190
228
 
191
229
  if (message.method === 'channels.system.pong') {
192
- if (message.params.channel_id === channelId.get(channel) || // Skip channelId check if channelId is not known yet
193
- 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) {
194
232
  ping(channel);
195
233
  }
196
234
 
197
235
  return;
198
236
  }
199
237
 
200
- messageQueue.get(channel).push(message);
201
- dequeueMessage(channel);
238
+ (_messageQueue$get2 = messageQueue.get(channel)) === null || _messageQueue$get2 === void 0 ? void 0 : _messageQueue$get2.push(message);
239
+ void dequeueMessage(channel);
202
240
  }
203
241
 
204
- export function call(channel, method, params) {
242
+ export async function call(channel, method, params) {
205
243
  return new Promise((resolve, reject) => {
206
- const id = sequence.set(channel, sequence.get(channel) + 1).get(channel);
207
- rpcCallbacks.get(channel).set(id, message => {
208
- 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;
209
251
 
210
- if (message.error) {
211
252
  const [{
212
253
  message: details
213
- } = {}] = message.error.data || [];
214
- 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));
215
258
  }
259
+
260
+ return resolve(message.result);
216
261
  });
217
262
  send(channel, {
218
263
  jsonrpc: '2.0',
@@ -222,19 +267,17 @@ export function call(channel, method, params) {
222
267
  });
223
268
  });
224
269
  }
225
- export function disconnect(channel) {
226
- websockets.get(channel).close();
227
- clearTimeout(pingTimeoutId.get(channel));
228
- clearTimeout(pongTimeoutId.get(channel));
229
- }
230
- export async function initialize(channel, _ref) {
270
+ export async function initialize(channel, connectionHandler, openHandler, _ref) {
231
271
  let {
232
272
  url,
233
273
  ...channelOptions
234
274
  } = _ref;
235
- options.set(channel, channelOptions);
275
+ options.set(channel, {
276
+ url,
277
+ ...channelOptions
278
+ });
236
279
  fsm.set(channel, {
237
- handler: channelOptions.existingFsmId ? awaitingReconnection : awaitingConnection
280
+ handler: connectionHandler
238
281
  });
239
282
  eventEmitters.set(channel, new EventEmitter());
240
283
  sequence.set(channel, 0);
@@ -242,8 +285,10 @@ export async function initialize(channel, _ref) {
242
285
  messageQueue.set(channel, []);
243
286
  const wsUrl = new URL(url);
244
287
  Object.entries(channelOptions).filter(_ref2 => {
288
+ var _context;
289
+
245
290
  let [key] = _ref2;
246
- return !['sign', 'debug'].includes(key);
291
+ return !_includesInstanceProperty(_context = ['sign', 'debug']).call(_context, key);
247
292
  }).forEach(_ref3 => {
248
293
  let [key, value] = _ref3;
249
294
  return wsUrl.searchParams.set(pascalToSnake(key), value);
@@ -251,33 +296,38 @@ export async function initialize(channel, _ref) {
251
296
  wsUrl.searchParams.set('protocol', 'json-rpc');
252
297
  changeStatus(channel, 'connecting');
253
298
  const ws = new W3CWebSocket(wsUrl.toString());
254
- await new Promise((resolve, reject) => Object.assign(ws, {
255
- onerror: reject,
256
- onopen: () => {
257
- resolve();
258
- changeStatus(channel, 'connected');
259
-
260
- if (channelOptions.reconnectTx) {
261
- enterState(channel, {
262
- handler: channelOpen
263
- });
264
- 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);
265
328
  }
266
-
267
- ping(channel);
268
- },
269
- onclose: () => {
270
- changeStatus(channel, 'disconnected');
271
- clearTimeout(pingTimeoutId.get(channel));
272
- clearTimeout(pongTimeoutId.get(channel));
273
- },
274
- onmessage: _ref4 => {
275
- let {
276
- data
277
- } = _ref4;
278
- return onMessage(channel, data);
279
- }
280
- }));
329
+ });
330
+ });
281
331
  websockets.set(channel, ws);
282
332
  }
283
333
  //# sourceMappingURL=internal.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/channel/internal.js"],"names":["JsonBig","pascalToSnake","awaitingConnection","awaitingReconnection","channelOpen","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","url","channelOptions","existingFsmId","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 { awaitingConnection, awaitingReconnection, channelOpen } from './handlers'\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 (channel, { url, ...channelOptions }) {\n options.set(channel, channelOptions)\n fsm.set(channel, {\n handler: channelOptions.existingFsmId ? awaitingReconnection : awaitingConnection\n })\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: channelOpen })\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"}