@aeternity/aepp-sdk 11.0.1 → 12.0.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 (376) 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 +12 -19
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +1 -1
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +1 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/AeSdk.d.ts +37 -0
  10. package/es/AeSdk.mjs +81 -0
  11. package/es/AeSdk.mjs.map +1 -0
  12. package/es/AeSdkAepp.d.ts +69 -0
  13. package/es/AeSdkAepp.mjs +175 -0
  14. package/es/AeSdkAepp.mjs.map +1 -0
  15. package/es/AeSdkBase.d.ts +212 -0
  16. package/es/AeSdkBase.mjs +310 -0
  17. package/es/AeSdkBase.mjs.map +1 -0
  18. package/es/AeSdkWallet.d.ts +103 -0
  19. package/es/AeSdkWallet.mjs +322 -0
  20. package/es/AeSdkWallet.mjs.map +1 -0
  21. package/es/Node.d.ts +44 -0
  22. package/es/Node.mjs +141 -0
  23. package/es/Node.mjs.map +1 -0
  24. package/es/account/Base.d.ts +65 -0
  25. package/es/account/Base.mjs +123 -0
  26. package/es/account/Base.mjs.map +1 -0
  27. package/es/account/Memory.d.ts +25 -0
  28. package/es/account/Memory.mjs +81 -0
  29. package/es/account/Memory.mjs.map +1 -0
  30. package/es/account/Rpc.d.ts +27 -0
  31. package/es/account/Rpc.mjs +79 -0
  32. package/es/account/Rpc.mjs.map +1 -0
  33. package/es/aens.d.ts +209 -0
  34. package/es/aens.mjs +332 -0
  35. package/es/aens.mjs.map +1 -0
  36. package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
  37. package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  39. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  42. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  45. package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
  46. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
  47. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  48. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  51. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  52. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  54. package/es/aepp-wallet-communication/schema.d.ts +90 -46
  55. package/es/aepp-wallet-communication/schema.mjs +214 -0
  56. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  57. package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
  58. package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  60. package/es/apis/compiler/compiler.d.ts +92 -0
  61. package/es/apis/compiler/compiler.mjs +576 -0
  62. package/es/apis/compiler/compiler.mjs.map +1 -0
  63. package/es/apis/compiler/index.d.ts +2 -0
  64. package/es/apis/compiler/index.mjs +3 -0
  65. package/es/apis/compiler/index.mjs.map +1 -0
  66. package/es/apis/compiler/models/index.d.ts +248 -0
  67. package/es/apis/compiler/models/index.mjs +48 -0
  68. package/es/apis/compiler/models/index.mjs.map +1 -0
  69. package/es/apis/compiler/models/mappers.d.ts +23 -0
  70. package/es/apis/compiler/models/mappers.mjs +585 -0
  71. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  72. package/es/apis/compiler/models/parameters.d.ts +13 -0
  73. package/es/apis/compiler/models/parameters.mjs +71 -0
  74. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  75. package/es/apis/node/index.d.ts +2 -0
  76. package/es/apis/node/index.mjs +3 -0
  77. package/es/apis/node/index.mjs.map +1 -0
  78. package/es/apis/node/models/index.d.ts +1061 -0
  79. package/es/apis/node/models/index.mjs +2 -0
  80. package/es/apis/node/models/index.mjs.map +1 -0
  81. package/es/apis/node/models/mappers.d.ts +95 -0
  82. package/es/apis/node/models/mappers.mjs +4164 -0
  83. package/es/apis/node/models/mappers.mjs.map +1 -0
  84. package/es/apis/node/models/parameters.d.ts +17 -0
  85. package/es/apis/node/models/parameters.mjs +165 -0
  86. package/es/apis/node/models/parameters.mjs.map +1 -0
  87. package/es/apis/node/node.d.ts +215 -0
  88. package/es/apis/node/node.mjs +1165 -0
  89. package/es/apis/node/node.mjs.map +1 -0
  90. package/es/chain.d.ts +220 -0
  91. package/es/chain.mjs +524 -0
  92. package/es/chain.mjs.map +1 -0
  93. package/es/channel/handlers.d.ts +34 -0
  94. package/es/channel/handlers.mjs +147 -112
  95. package/es/channel/handlers.mjs.map +1 -1
  96. package/es/channel/index.d.ts +634 -0
  97. package/es/channel/index.mjs +898 -900
  98. package/es/channel/index.mjs.map +1 -1
  99. package/es/channel/internal.d.ts +100 -0
  100. package/es/channel/internal.mjs +97 -51
  101. package/es/channel/internal.mjs.map +1 -1
  102. package/es/contract/Compiler.d.ts +17 -0
  103. package/es/contract/Compiler.mjs +67 -0
  104. package/es/contract/Compiler.mjs.map +1 -0
  105. package/es/contract/aci.d.ts +125 -0
  106. package/es/contract/aci.mjs +199 -180
  107. package/es/contract/aci.mjs.map +1 -1
  108. package/es/contract/ga.d.ts +68 -0
  109. package/es/contract/ga.mjs +190 -0
  110. package/es/contract/ga.mjs.map +1 -0
  111. package/es/contract/methods.d.ts +68 -0
  112. package/es/contract/methods.mjs +101 -0
  113. package/es/contract/methods.mjs.map +1 -0
  114. package/es/index.d.ts +32 -0
  115. package/es/index.mjs +32 -40
  116. package/es/index.mjs.map +1 -1
  117. package/es/oracle.d.ts +154 -0
  118. package/es/oracle.mjs +288 -0
  119. package/es/oracle.mjs.map +1 -0
  120. package/es/spend.d.ts +61 -0
  121. package/es/spend.mjs +122 -0
  122. package/es/spend.mjs.map +1 -0
  123. package/es/tx/builder/constants.d.ts +41 -0
  124. package/es/tx/builder/constants.mjs +11 -19
  125. package/es/tx/builder/constants.mjs.map +1 -1
  126. package/es/tx/builder/field-types.d.ts +62 -0
  127. package/es/tx/builder/field-types.mjs +62 -10
  128. package/es/tx/builder/field-types.mjs.map +1 -1
  129. package/es/tx/builder/helpers.d.ts +131 -0
  130. package/es/tx/builder/helpers.mjs +71 -169
  131. package/es/tx/builder/helpers.mjs.map +1 -1
  132. package/es/tx/builder/index.d.ts +75 -0
  133. package/es/tx/builder/index.mjs +141 -323
  134. package/es/tx/builder/index.mjs.map +1 -1
  135. package/es/tx/builder/schema.d.ts +350 -0
  136. package/es/tx/builder/schema.mjs +173 -510
  137. package/es/tx/builder/schema.mjs.map +1 -1
  138. package/es/tx/index.d.ts +63 -0
  139. package/es/tx/index.mjs +171 -265
  140. package/es/tx/index.mjs.map +1 -1
  141. package/es/tx/min-fee.d.ts +20 -0
  142. package/es/tx/min-fee.mjs +148 -0
  143. package/es/tx/min-fee.mjs.map +1 -0
  144. package/es/tx/validator.d.ts +19 -0
  145. package/es/tx/validator.mjs +64 -71
  146. package/es/tx/validator.mjs.map +1 -1
  147. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  148. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  149. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  150. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  151. package/es/typings/bip32-path/index.d.mjs +2 -0
  152. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  153. package/es/typings/blakejs/index.d.mjs.map +1 -1
  154. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  155. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  156. package/es/utils/amount-formatter.d.ts +42 -0
  157. package/es/utils/amount-formatter.mjs +28 -41
  158. package/es/utils/amount-formatter.mjs.map +1 -1
  159. package/es/utils/autorest.d.ts +6 -0
  160. package/es/utils/autorest.mjs +97 -0
  161. package/es/utils/autorest.mjs.map +1 -0
  162. package/es/utils/bignumber.d.ts +13 -0
  163. package/es/utils/bignumber.mjs +10 -8
  164. package/es/utils/bignumber.mjs.map +1 -1
  165. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  166. package/es/utils/bytes.mjs +10 -14
  167. package/es/utils/bytes.mjs.map +1 -1
  168. package/es/utils/crypto.d.ts +103 -0
  169. package/es/utils/crypto.mjs +60 -68
  170. package/es/utils/crypto.mjs.map +1 -1
  171. package/es/utils/encoder.d.ts +26 -0
  172. package/es/utils/encoder.mjs +47 -51
  173. package/es/utils/encoder.mjs.map +1 -1
  174. package/es/{errors.d.ts → utils/errors.d.ts} +254 -57
  175. package/es/utils/errors.mjs +318 -125
  176. package/es/utils/errors.mjs.map +1 -1
  177. package/es/utils/hd-wallet.d.ts +34 -0
  178. package/es/utils/hd-wallet.mjs +27 -16
  179. package/es/utils/hd-wallet.mjs.map +1 -1
  180. package/es/utils/json-big.d.ts +5 -0
  181. package/es/utils/json-big.mjs +10 -14
  182. package/es/utils/json-big.mjs.map +1 -1
  183. package/es/utils/keystore.d.ts +51 -0
  184. package/es/utils/keystore.mjs +98 -193
  185. package/es/utils/keystore.mjs.map +1 -1
  186. package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
  187. package/es/utils/mptree.mjs +13 -14
  188. package/es/utils/mptree.mjs.map +1 -1
  189. package/es/utils/other.d.ts +14 -0
  190. package/es/utils/other.mjs +21 -36
  191. package/es/utils/other.mjs.map +1 -1
  192. package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
  193. package/es/utils/semver-satisfies.mjs.map +1 -1
  194. package/es/utils/string.d.ts +24 -0
  195. package/es/utils/string.mjs +8 -10
  196. package/es/utils/string.mjs.map +1 -1
  197. package/package.json +49 -39
  198. package/src/AeSdk.ts +65 -0
  199. package/src/AeSdkAepp.ts +167 -0
  200. package/src/AeSdkBase.ts +320 -0
  201. package/src/AeSdkWallet.ts +332 -0
  202. package/src/Node.ts +167 -0
  203. package/src/account/Base.ts +114 -0
  204. package/src/account/Memory.ts +83 -0
  205. package/src/account/Rpc.ts +67 -0
  206. package/src/aens.ts +391 -0
  207. package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
  208. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
  209. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
  210. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +16 -17
  211. package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
  212. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  213. package/src/aepp-wallet-communication/schema.ts +181 -0
  214. package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
  215. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  216. package/src/apis/compiler/compiler.ts +585 -0
  217. package/src/apis/compiler/index.ts +2 -0
  218. package/src/apis/compiler/models/index.ts +301 -0
  219. package/src/apis/compiler/models/mappers.ts +583 -0
  220. package/src/apis/compiler/models/parameters.ts +93 -0
  221. package/src/apis/node/code-model-v4.yaml +10046 -0
  222. package/src/apis/node/index.ts +2 -0
  223. package/src/apis/node/models/index.ts +1253 -0
  224. package/src/apis/node/models/mappers.ts +4278 -0
  225. package/src/apis/node/models/parameters.ts +188 -0
  226. package/src/apis/node/node.ts +1299 -0
  227. package/src/chain.ts +444 -0
  228. package/src/channel/{handlers.js → handlers.ts} +220 -128
  229. package/src/channel/index.ts +991 -0
  230. package/src/channel/internal.ts +345 -0
  231. package/src/contract/Compiler.ts +66 -0
  232. package/src/contract/aci.ts +529 -0
  233. package/src/contract/ga.ts +178 -0
  234. package/src/contract/methods.ts +118 -0
  235. package/src/index.ts +51 -0
  236. package/src/oracle.ts +342 -0
  237. package/src/spend.ts +152 -0
  238. package/src/tx/builder/{constants.js → constants.ts} +12 -16
  239. package/src/tx/builder/field-types.ts +111 -0
  240. package/src/tx/builder/helpers.ts +253 -0
  241. package/src/tx/builder/index.ts +394 -0
  242. package/src/tx/builder/schema.ts +771 -0
  243. package/src/tx/index.ts +199 -0
  244. package/src/tx/min-fee.ts +136 -0
  245. package/src/tx/validator.ts +226 -0
  246. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  247. package/src/typings/@aeternity__uuid/index.d.ts +3 -0
  248. package/src/typings/bip32-path/index.d.ts +33 -0
  249. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  250. package/src/utils/amount-formatter.ts +29 -42
  251. package/src/utils/autorest.ts +90 -0
  252. package/src/utils/bignumber.ts +9 -11
  253. package/src/utils/bytes.ts +12 -14
  254. package/src/utils/crypto.ts +217 -0
  255. package/src/utils/encoder.ts +52 -55
  256. package/src/utils/errors.ts +268 -134
  257. package/src/utils/hd-wallet.ts +134 -0
  258. package/src/utils/json-big.ts +26 -0
  259. package/src/utils/keystore.ts +179 -0
  260. package/src/utils/mptree.ts +14 -14
  261. package/src/utils/other.ts +28 -43
  262. package/src/utils/string.ts +8 -10
  263. package/es/account/base.mjs +0 -179
  264. package/es/account/base.mjs.map +0 -1
  265. package/es/account/memory.mjs +0 -99
  266. package/es/account/memory.mjs.map +0 -1
  267. package/es/account/multiple.mjs +0 -179
  268. package/es/account/multiple.mjs.map +0 -1
  269. package/es/ae/aens.mjs +0 -404
  270. package/es/ae/aens.mjs.map +0 -1
  271. package/es/ae/aepp.mjs +0 -45
  272. package/es/ae/aepp.mjs.map +0 -1
  273. package/es/ae/contract.mjs +0 -159
  274. package/es/ae/contract.mjs.map +0 -1
  275. package/es/ae/index.mjs +0 -207
  276. package/es/ae/index.mjs.map +0 -1
  277. package/es/ae/oracle.mjs +0 -339
  278. package/es/ae/oracle.mjs.map +0 -1
  279. package/es/ae/universal.mjs +0 -45
  280. package/es/ae/universal.mjs.map +0 -1
  281. package/es/ae/wallet.mjs +0 -50
  282. package/es/ae/wallet.mjs.map +0 -1
  283. package/es/amount-formatter.d.ts +0 -58
  284. package/es/bignumber.d.ts +0 -18
  285. package/es/chain/index.mjs +0 -272
  286. package/es/chain/index.mjs.map +0 -1
  287. package/es/chain/node.mjs +0 -442
  288. package/es/chain/node.mjs.map +0 -1
  289. package/es/contract/compiler.mjs +0 -115
  290. package/es/contract/compiler.mjs.map +0 -1
  291. package/es/contract/ga/helpers.mjs +0 -30
  292. package/es/contract/ga/helpers.mjs.map +0 -1
  293. package/es/contract/ga/index.mjs +0 -178
  294. package/es/contract/ga/index.mjs.map +0 -1
  295. package/es/crypto-ts.d.ts +0 -9
  296. package/es/encoder.d.ts +0 -26
  297. package/es/node-pool/index.mjs +0 -188
  298. package/es/node-pool/index.mjs.map +0 -1
  299. package/es/node.mjs +0 -133
  300. package/es/node.mjs.map +0 -1
  301. package/es/other.d.ts +0 -31
  302. package/es/string.d.ts +0 -26
  303. package/es/tx/tx-object.mjs +0 -283
  304. package/es/tx/tx-object.mjs.map +0 -1
  305. package/es/tx/tx.mjs +0 -938
  306. package/es/tx/tx.mjs.map +0 -1
  307. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  308. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  309. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  310. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  311. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  312. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  313. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  314. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  315. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  316. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  317. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  318. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  319. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  320. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  321. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  322. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  323. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  324. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  325. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  326. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  327. package/es/utils/async-init.mjs +0 -64
  328. package/es/utils/async-init.mjs.map +0 -1
  329. package/es/utils/crypto-ts.mjs.map +0 -1
  330. package/es/utils/swagger.mjs +0 -164
  331. package/es/utils/swagger.mjs.map +0 -1
  332. package/src/account/base.js +0 -153
  333. package/src/account/memory.js +0 -83
  334. package/src/account/multiple.js +0 -162
  335. package/src/ae/aens.js +0 -361
  336. package/src/ae/aepp.js +0 -45
  337. package/src/ae/contract.js +0 -148
  338. package/src/ae/index.js +0 -168
  339. package/src/ae/oracle.js +0 -311
  340. package/src/ae/universal.js +0 -47
  341. package/src/ae/wallet.js +0 -50
  342. package/src/chain/index.js +0 -269
  343. package/src/chain/node.js +0 -320
  344. package/src/channel/index.js +0 -903
  345. package/src/channel/internal.js +0 -236
  346. package/src/contract/aci.js +0 -376
  347. package/src/contract/compiler.js +0 -100
  348. package/src/contract/ga/helpers.js +0 -19
  349. package/src/contract/ga/index.js +0 -150
  350. package/src/index.js +0 -89
  351. package/src/node-pool/index.js +0 -172
  352. package/src/node.js +0 -116
  353. package/src/tx/builder/field-types.js +0 -61
  354. package/src/tx/builder/helpers.js +0 -334
  355. package/src/tx/builder/index.js +0 -465
  356. package/src/tx/builder/schema.js +0 -1100
  357. package/src/tx/index.js +0 -301
  358. package/src/tx/tx-object.js +0 -187
  359. package/src/tx/tx.js +0 -631
  360. package/src/tx/validator.js +0 -181
  361. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  362. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  363. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  364. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  365. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  366. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  367. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  368. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  369. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  370. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  371. package/src/utils/async-init.js +0 -45
  372. package/src/utils/crypto.js +0 -219
  373. package/src/utils/hd-wallet.js +0 -100
  374. package/src/utils/json-big.js +0 -26
  375. package/src/utils/keystore.js +0 -219
  376. package/src/utils/swagger.js +0 -156
@@ -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","enqueueAction","guard","action","queue","locked","Boolean","length","index","findIndex","filter","_","i","Promise","resolve","handleMessage","fsmState","dequeueMessage","messages","shift","error","ping","pingTimeoutIdValue","pongTimeoutIdValue","clearTimeout","setTimeout","jsonrpc","method","params","disconnect","onMessage","data","parse","id","callback","delete","channel_id","push","call","reject","currentSequence","result","details","close","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 Channel from '.'\nimport JsonBig from '../utils/json-big'\nimport { pascalToSnake } from '../utils/string'\nimport { EncodedData } from '../utils/encoder'\nimport { ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError } 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: EncodedData<'tx'>, options?: object) => Promise<EncodedData<'tx'>>\n// TODO: SignTx shouldn't return number or null\nexport type SignTx = (tx: EncodedData<'tx'>, options?: object) => Promise<EncodedData<'tx'> | number | null>\n\nexport interface ChannelOptions {\n existingFsmId?: string\n url: string\n role: 'initiator' | 'responder'\n initiatorId: EncodedData<'ak'>\n responderId: EncodedData<'ak'>\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: Function\n reject: Function\n sign: SignTx\n handler?: ChannelHandler\n onOnChainTx?: Function\n onOwnWithdrawLocked?: Function\n onWithdrawLocked?: Function\n onOwnDepositLocked?: Function\n onDepositLocked?: Function\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, EncodedData<'tx'>>()\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 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: EncodedData<'tx'>): 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\nexport function enqueueAction (channel: Channel, guard: ChannelAction['guard'], action: ChannelAction['action']): 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 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 state = fsm.get(channel)\n if (state == null) return\n const index = queue.findIndex((action: ChannelAction) => action.guard(channel, state))\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, state))\n actionQueueLocked.set(channel, false)\n enterState(channel, nextState)\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 } = fsmState\n enterState(channel, await Promise.resolve(handler(channel, message, state)))\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\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 await 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(id, (message: {\n result: PromiseLike<any>\n error?: ChannelMessageError }) => {\n if (message.result != null) return resolve(message.result)\n if (message.error != null) {\n const [{ message: details } = { message: '' }] = message.error.data ?? []\n return reject(new ChannelCallError(message.error.message + details))\n }\n })\n send(channel, { jsonrpc: '2.0', method, id, params })\n })\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\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) => 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 websockets.set(channel, ws)\n}\n"],"mappings":"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"}
@@ -0,0 +1,17 @@
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
+ * @example Compiler('COMPILER_URL')
7
+ */
8
+ export default class Compiler extends CompilerApi {
9
+ /**
10
+ * @param compilerUrl - Url for compiler API
11
+ * @param options - Options
12
+ * @param options.ignoreVersion - Don't check compiler version
13
+ */
14
+ constructor(compilerUrl: string, { ignoreVersion }?: {
15
+ ignoreVersion?: boolean;
16
+ });
17
+ }
@@ -0,0 +1,67 @@
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
+ * @example Compiler('COMPILER_URL')
25
+ */
26
+ export default class Compiler extends CompilerApi {
27
+ /**
28
+ * @param compilerUrl - Url for compiler API
29
+ * @param options - Options
30
+ * @param options.ignoreVersion - Don't check compiler version
31
+ */
32
+ constructor(compilerUrl) {
33
+ let {
34
+ ignoreVersion
35
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
36
+ super(compilerUrl, {
37
+ allowInsecureConnection: true,
38
+ additionalPolicies: [genErrorFormatterPolicy(body => {
39
+ let message = '';
40
+
41
+ if ('reason' in body) {
42
+ message += ' ' + body.reason + (body.parameter != null ? ` in ${body.parameter}` : '') + ( // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78
43
+ body.info != null ? ` (${JSON.stringify(body.info)})` : '');
44
+ }
45
+
46
+ if (Array.isArray(body)) {
47
+ 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
48
+ .join('\n');
49
+ }
50
+
51
+ return message;
52
+ })]
53
+ });
54
+
55
+ if (ignoreVersion !== true) {
56
+ const versionPromise = this.aPIVersion().then(_ref => {
57
+ let {
58
+ apiVersion
59
+ } = _ref;
60
+ return apiVersion;
61
+ });
62
+ this.pipeline.addPolicy(genVersionCheckPolicy('compiler', '/api-version', versionPromise, '6.1.0', '7.0.0'));
63
+ }
64
+ }
65
+
66
+ }
67
+ //# 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 * @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,eAAe,MAAMH,QAAN,SAAuBC,WAAvB,CAAmC;EAChD;AACF;AACA;AACA;AACA;EACEG,WAAW,CAAEC,WAAF,EAA4E;IAAA,IAArD;MAAEC;IAAF,CAAqD,uEAAJ,EAAI;IACrF,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,IAAI,MAAMD,IAAI,CAACE,MAAX,IACRF,IAAI,CAACG,SAAL,IAAkB,IAAlB,GAA0B,OAAMH,IAAI,CAACG,SAAU,EAA/C,GAAmD,EAD3C,MAET;UACCH,IAAI,CAACI,IAAL,IAAa,IAAb,GAAqB,KAAIC,IAAI,CAACC,SAAL,CAAeN,IAAI,CAACI,IAApB,CAA0B,GAAnD,GAAwD,EAHhD,CAAX;QAID;;QACD,IAAIG,KAAK,CAACC,OAAN,CAAcR,IAAd,CAAJ,EAAyB;UACvBC,OAAO,IAAI,OAAOD,IAAI,CACnBS,GADe,CACXC,CAAC,IAAK,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,EADzF,EAEfN,GAFe,CAEXC,CAAC,IAAIA,CAAC,CAACM,IAAF,EAFM,EAEI;UAFJ,CAGfC,IAHe,CAGV,IAHU,CAAlB;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"}
@@ -0,0 +1,125 @@
1
+ import { AensName } from '../tx/builder/schema';
2
+ import { send } from '../spend';
3
+ import { EncodedData } from '../utils/encoder';
4
+ import { Aci as BaseAci } from '../apis/compiler';
5
+ import Compiler from './Compiler';
6
+ import Node from '../Node';
7
+ import AccountBase from '../account/Base';
8
+ interface FunctionACI {
9
+ arguments: any[];
10
+ name: string;
11
+ payable: boolean;
12
+ returns: string;
13
+ stateful: boolean;
14
+ }
15
+ interface Aci extends BaseAci {
16
+ encodedAci: {
17
+ contract: {
18
+ name: string;
19
+ event: any;
20
+ kind: string;
21
+ state: any;
22
+ type_defs: any[];
23
+ functions: FunctionACI[];
24
+ };
25
+ };
26
+ externalEncodedAci: any[];
27
+ }
28
+ interface Event {
29
+ address: EncodedData<'ct'>;
30
+ data: string;
31
+ topics: Array<string | number>;
32
+ }
33
+ interface DecodedEvent {
34
+ name: string;
35
+ args: unknown;
36
+ contract: {
37
+ name: string;
38
+ address: EncodedData<'ct'>;
39
+ };
40
+ }
41
+ declare type TxData = Awaited<ReturnType<typeof send>>;
42
+ export interface ContractInstance {
43
+ _aci: Aci;
44
+ _name: string;
45
+ calldata: any;
46
+ source?: string;
47
+ bytecode?: EncodedData<'cb'>;
48
+ deployInfo: {
49
+ address?: EncodedData<'ct'>;
50
+ result?: {
51
+ callerId: string;
52
+ callerNonce: string;
53
+ contractId: string;
54
+ gasPrice: bigint;
55
+ gasUsed: number;
56
+ height: number;
57
+ log: any[];
58
+ returnType: string;
59
+ returnValue: string;
60
+ };
61
+ owner?: EncodedData<'ak'>;
62
+ transaction?: string;
63
+ rawTx?: string;
64
+ txData?: TxData;
65
+ };
66
+ options: any;
67
+ compile: (options?: {}) => Promise<EncodedData<'cb'>>;
68
+ _estimateGas: (name: string, params: any[], options: object) => Promise<number>;
69
+ deploy: (params?: any[], options?: object) => Promise<any>;
70
+ call: (fn: string, params?: any[], options?: {}) => Promise<{
71
+ hash: string;
72
+ tx: any;
73
+ txData: TxData;
74
+ rawTx: string;
75
+ result: {
76
+ callerId: EncodedData<'ak'>;
77
+ callerNonce: number;
78
+ contractId: EncodedData<'ct'>;
79
+ gasPrice: number;
80
+ gasUsed: number;
81
+ height: number;
82
+ log: any[];
83
+ returnType: string;
84
+ returnValue: string;
85
+ };
86
+ decodedResult: any;
87
+ decodedEvents: DecodedEvent[];
88
+ }>;
89
+ decodeEvents: (events: Event[], options?: {
90
+ omitUnknown?: boolean;
91
+ contractAddressToName?: any;
92
+ }) => DecodedEvent[];
93
+ methods: any;
94
+ }
95
+ /**
96
+ * Generate contract ACI object with predefined js methods for contract usage - can be used for
97
+ * creating a reference to already deployed contracts
98
+ * @param options - Options object
99
+ * @returns JS Contract API
100
+ * @example
101
+ * ```js
102
+ * const contractIns = await aeSdk.getContractInstance({ source })
103
+ * await contractIns.deploy([321]) or await contractIns.methods.init(321)
104
+ * const callResult = await contractIns.call('setState', [123]) or
105
+ * await contractIns.methods.setState.send(123, options)
106
+ * const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or
107
+ * await contractIns.methods.setState.get(123, options)
108
+ * ```
109
+ * Also you can call contract like: `await contractIns.methods.setState(123, options)`
110
+ * Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is
111
+ * stateful or not
112
+ */
113
+ export default function getContractInstance({ onAccount, onCompiler, onNode, source, bytecode, aci: _aci, contractAddress, fileSystem, validateBytecode, ...otherOptions }: {
114
+ onAccount: AccountBase;
115
+ onCompiler: Compiler;
116
+ onNode: Node;
117
+ source?: string;
118
+ bytecode?: EncodedData<'cb'>;
119
+ aci?: Aci;
120
+ contractAddress?: EncodedData<'ct'> | AensName;
121
+ fileSystem?: Record<string, string>;
122
+ validateBytecode?: boolean;
123
+ [key: string]: any;
124
+ }): Promise<ContractInstance>;
125
+ export {};