@aeternity/aepp-sdk 10.0.0 → 11.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 (238) hide show
  1. package/README.md +15 -14
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +7 -27
  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/account/{base.js → base.mjs} +20 -10
  10. package/es/account/base.mjs.map +1 -0
  11. package/es/account/{memory.js → memory.mjs} +29 -14
  12. package/es/account/memory.mjs.map +1 -0
  13. package/es/account/{multiple.js → multiple.mjs} +10 -9
  14. package/es/account/multiple.mjs.map +1 -0
  15. package/es/ae/{aens.js → aens.mjs} +18 -22
  16. package/es/ae/aens.mjs.map +1 -0
  17. package/es/ae/{aepp.js → aepp.mjs} +9 -9
  18. package/es/ae/aepp.mjs.map +1 -0
  19. package/es/ae/contract.mjs +159 -0
  20. package/es/ae/contract.mjs.map +1 -0
  21. package/es/ae/{index.js → index.mjs} +8 -7
  22. package/es/ae/index.mjs.map +1 -0
  23. package/es/ae/{oracle.js → oracle.mjs} +33 -16
  24. package/es/ae/oracle.mjs.map +1 -0
  25. package/es/ae/{universal.js → universal.mjs} +10 -10
  26. package/es/ae/universal.mjs.map +1 -0
  27. package/es/ae/{wallet.js → wallet.mjs} +10 -10
  28. package/es/ae/wallet.mjs.map +1 -0
  29. package/es/aepp-wallet-communication/schema.d.ts +74 -0
  30. package/es/bignumber.d.ts +1 -7
  31. package/es/chain/{index.js → index.mjs} +20 -4
  32. package/es/chain/index.mjs.map +1 -0
  33. package/es/chain/{node.js → node.mjs} +121 -73
  34. package/es/chain/node.mjs.map +1 -0
  35. package/es/channel/{handlers.js → handlers.mjs} +18 -20
  36. package/es/channel/handlers.mjs.map +1 -0
  37. package/es/channel/{index.js → index.mjs} +7 -7
  38. package/es/channel/index.mjs.map +1 -0
  39. package/es/channel/{internal.js → internal.mjs} +49 -32
  40. package/es/channel/internal.mjs.map +1 -0
  41. package/es/contract/aci.mjs +477 -0
  42. package/es/contract/aci.mjs.map +1 -0
  43. package/es/contract/compiler.mjs +115 -0
  44. package/es/contract/compiler.mjs.map +1 -0
  45. package/es/contract/ga/helpers.mjs +30 -0
  46. package/es/contract/ga/helpers.mjs.map +1 -0
  47. package/es/contract/ga/{index.js → index.mjs} +36 -28
  48. package/es/contract/ga/index.mjs.map +1 -0
  49. package/es/errors.d.ts +284 -0
  50. package/es/index.mjs +57 -0
  51. package/es/index.mjs.map +1 -0
  52. package/es/node-pool/{index.js → index.mjs} +11 -10
  53. package/es/node-pool/index.mjs.map +1 -0
  54. package/es/{node.js → node.mjs} +9 -8
  55. package/es/node.mjs.map +1 -0
  56. package/es/tx/builder/field-types.mjs +74 -0
  57. package/es/tx/builder/field-types.mjs.map +1 -0
  58. package/es/tx/builder/{helpers.js → helpers.mjs} +114 -56
  59. package/es/tx/builder/helpers.mjs.map +1 -0
  60. package/es/tx/builder/{index.js → index.mjs} +79 -68
  61. package/es/tx/builder/index.mjs.map +1 -0
  62. package/es/tx/builder/{schema.js → schema.mjs} +11 -65
  63. package/es/tx/builder/schema.mjs.map +1 -0
  64. package/es/tx/{index.js → index.mjs} +5 -2
  65. package/es/tx/index.mjs.map +1 -0
  66. package/es/tx/{tx-object.js → tx-object.mjs} +22 -15
  67. package/es/tx/tx-object.mjs.map +1 -0
  68. package/es/tx/{tx.js → tx.mjs} +15 -14
  69. package/es/tx/tx.mjs.map +1 -0
  70. package/es/tx/{validator.js → validator.mjs} +72 -33
  71. package/es/tx/validator.mjs.map +1 -0
  72. package/es/typings/blakejs/index.d.mjs +2 -0
  73. package/es/typings/blakejs/{index.d.js.map → index.d.mjs.map} +1 -1
  74. package/es/utils/aepp-wallet-communication/connection/{browser-runtime.js → browser-runtime.mjs} +7 -6
  75. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +1 -0
  76. package/es/utils/aepp-wallet-communication/connection/{browser-window-message.js → browser-window-message.mjs} +10 -11
  77. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +1 -0
  78. package/es/utils/aepp-wallet-communication/connection/{index.js → index.mjs} +5 -2
  79. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +1 -0
  80. package/es/utils/aepp-wallet-communication/{content-script-bridge.js → content-script-bridge.mjs} +6 -5
  81. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +1 -0
  82. package/es/utils/aepp-wallet-communication/{helpers.js → helpers.mjs} +3 -14
  83. package/es/utils/aepp-wallet-communication/helpers.mjs.map +1 -0
  84. package/es/utils/aepp-wallet-communication/rpc/{aepp-rpc.js → aepp-rpc.mjs} +113 -67
  85. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +1 -0
  86. package/es/utils/aepp-wallet-communication/rpc/{rpc-client.js → rpc-client.mjs} +14 -9
  87. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +1 -0
  88. package/es/utils/aepp-wallet-communication/rpc/{wallet-rpc.js → wallet-rpc.mjs} +71 -63
  89. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +1 -0
  90. package/es/utils/aepp-wallet-communication/schema.mjs +102 -0
  91. package/es/utils/aepp-wallet-communication/schema.mjs.map +1 -0
  92. package/es/utils/aepp-wallet-communication/{wallet-detector.js → wallet-detector.mjs} +6 -5
  93. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  94. package/es/utils/{amount-formatter.js → amount-formatter.mjs} +14 -7
  95. package/es/utils/amount-formatter.mjs.map +1 -0
  96. package/es/utils/{async-init.js → async-init.mjs} +8 -11
  97. package/es/utils/async-init.mjs.map +1 -0
  98. package/es/utils/{bignumber.js → bignumber.mjs} +2 -9
  99. package/es/utils/bignumber.mjs.map +1 -0
  100. package/es/utils/{bytes.js → bytes.mjs} +16 -8
  101. package/es/utils/bytes.mjs.map +1 -0
  102. package/es/utils/{crypto-ts.js → crypto-ts.mjs} +11 -3
  103. package/es/utils/crypto-ts.mjs.map +1 -0
  104. package/es/utils/{crypto.js → crypto.mjs} +40 -105
  105. package/es/utils/crypto.mjs.map +1 -0
  106. package/es/utils/errors.mjs +689 -0
  107. package/es/utils/errors.mjs.map +1 -0
  108. package/es/utils/{hd-wallet.js → hd-wallet.mjs} +33 -34
  109. package/es/utils/hd-wallet.mjs.map +1 -0
  110. package/es/utils/{json-big.js → json-big.mjs} +1 -1
  111. package/es/utils/{json-big.js.map → json-big.mjs.map} +1 -1
  112. package/es/utils/{keystore.js → keystore.mjs} +63 -51
  113. package/es/utils/keystore.mjs.map +1 -0
  114. package/es/utils/{mptree.js → mptree.mjs} +21 -12
  115. package/es/utils/mptree.mjs.map +1 -0
  116. package/es/utils/{other.js → other.mjs} +2 -2
  117. package/es/utils/other.mjs.map +1 -0
  118. package/es/utils/{semver-satisfies.js → semver-satisfies.mjs} +1 -1
  119. package/es/utils/{semver-satisfies.js.map → semver-satisfies.mjs.map} +1 -1
  120. package/es/utils/{string.js → string.mjs} +1 -1
  121. package/es/utils/{string.js.map → string.mjs.map} +1 -1
  122. package/es/utils/{swagger.js → swagger.mjs} +46 -14
  123. package/es/utils/swagger.mjs.map +1 -0
  124. package/package.json +46 -55
  125. package/src/account/memory.js +13 -8
  126. package/src/account/multiple.js +12 -4
  127. package/src/ae/aens.js +12 -17
  128. package/src/ae/aepp.js +2 -2
  129. package/src/ae/contract.js +15 -152
  130. package/src/ae/index.js +2 -1
  131. package/src/ae/oracle.js +25 -10
  132. package/src/ae/universal.js +2 -2
  133. package/src/ae/wallet.js +2 -2
  134. package/src/chain/index.js +21 -2
  135. package/src/chain/node.js +80 -53
  136. package/src/channel/handlers.js +20 -17
  137. package/src/channel/internal.js +30 -24
  138. package/src/contract/{aci/index.js → aci.js} +152 -93
  139. package/src/contract/compiler.js +22 -117
  140. package/src/contract/ga/helpers.js +7 -5
  141. package/src/contract/ga/index.js +27 -24
  142. package/src/index.js +7 -8
  143. package/src/node-pool/index.js +9 -8
  144. package/src/node.js +5 -7
  145. package/src/tx/builder/field-types.js +61 -0
  146. package/src/tx/builder/helpers.js +113 -58
  147. package/src/tx/builder/index.js +39 -34
  148. package/src/tx/builder/schema.js +11 -25
  149. package/src/tx/tx-object.js +10 -9
  150. package/src/tx/tx.js +17 -8
  151. package/src/tx/validator.js +25 -5
  152. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +8 -3
  153. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +10 -6
  154. package/src/utils/aepp-wallet-communication/content-script-bridge.js +5 -4
  155. package/src/utils/aepp-wallet-communication/helpers.js +2 -12
  156. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +81 -55
  157. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +15 -6
  158. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +60 -49
  159. package/src/utils/aepp-wallet-communication/schema.ts +80 -0
  160. package/src/utils/aepp-wallet-communication/wallet-detector.js +3 -2
  161. package/src/utils/amount-formatter.ts +4 -3
  162. package/src/utils/async-init.js +10 -6
  163. package/src/utils/bignumber.ts +1 -9
  164. package/src/utils/bytes.ts +3 -2
  165. package/src/utils/crypto-ts.ts +2 -2
  166. package/src/utils/crypto.js +9 -92
  167. package/src/utils/errors.ts +683 -0
  168. package/src/utils/hd-wallet.js +11 -26
  169. package/src/utils/keystore.js +47 -51
  170. package/src/utils/mptree.ts +12 -6
  171. package/src/utils/swagger.js +67 -44
  172. package/CHANGELOG.md +0 -1603
  173. package/es/account/base.js.map +0 -1
  174. package/es/account/memory.js.map +0 -1
  175. package/es/account/multiple.js.map +0 -1
  176. package/es/ae/aens.js.map +0 -1
  177. package/es/ae/aepp.js.map +0 -1
  178. package/es/ae/contract.js +0 -312
  179. package/es/ae/contract.js.map +0 -1
  180. package/es/ae/index.js.map +0 -1
  181. package/es/ae/oracle.js.map +0 -1
  182. package/es/ae/universal.js.map +0 -1
  183. package/es/ae/wallet.js.map +0 -1
  184. package/es/chain/index.js.map +0 -1
  185. package/es/chain/node.js.map +0 -1
  186. package/es/channel/handlers.js.map +0 -1
  187. package/es/channel/index.js.map +0 -1
  188. package/es/channel/internal.js.map +0 -1
  189. package/es/contract/aci/helpers.js +0 -298
  190. package/es/contract/aci/helpers.js.map +0 -1
  191. package/es/contract/aci/index.js +0 -361
  192. package/es/contract/aci/index.js.map +0 -1
  193. package/es/contract/aci/transformation.js +0 -66
  194. package/es/contract/aci/transformation.js.map +0 -1
  195. package/es/contract/compiler.js +0 -244
  196. package/es/contract/compiler.js.map +0 -1
  197. package/es/contract/ga/helpers.js +0 -22
  198. package/es/contract/ga/helpers.js.map +0 -1
  199. package/es/contract/ga/index.js.map +0 -1
  200. package/es/contract/index.js +0 -162
  201. package/es/contract/index.js.map +0 -1
  202. package/es/index.js +0 -57
  203. package/es/index.js.map +0 -1
  204. package/es/node-pool/index.js.map +0 -1
  205. package/es/node.js.map +0 -1
  206. package/es/tx/builder/helpers.js.map +0 -1
  207. package/es/tx/builder/index.js.map +0 -1
  208. package/es/tx/builder/schema.js.map +0 -1
  209. package/es/tx/index.js.map +0 -1
  210. package/es/tx/tx-object.js.map +0 -1
  211. package/es/tx/tx.js.map +0 -1
  212. package/es/tx/validator.js.map +0 -1
  213. package/es/typings/blakejs/index.d.js +0 -2
  214. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
  215. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
  216. package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
  217. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
  218. package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
  219. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
  220. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
  221. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
  222. package/es/utils/aepp-wallet-communication/schema.js +0 -107
  223. package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
  224. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
  225. package/es/utils/amount-formatter.js.map +0 -1
  226. package/es/utils/async-init.js.map +0 -1
  227. package/es/utils/bignumber.js.map +0 -1
  228. package/es/utils/bytes.js.map +0 -1
  229. package/es/utils/crypto-ts.js.map +0 -1
  230. package/es/utils/crypto.js.map +0 -1
  231. package/es/utils/hd-wallet.js.map +0 -1
  232. package/es/utils/keystore.js.map +0 -1
  233. package/es/utils/mptree.js.map +0 -1
  234. package/es/utils/other.js.map +0 -1
  235. package/es/utils/swagger.js.map +0 -1
  236. package/src/contract/aci/transformation.js +0 -72
  237. package/src/contract/index.js +0 -163
  238. package/src/utils/aepp-wallet-communication/schema.js +0 -108
@@ -14,13 +14,14 @@
14
14
  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
15
  * PERFORMANCE OF THIS SOFTWARE.
16
16
  */
17
- import Chain from './';
18
- import { AE_AMOUNT_FORMATS, formatAmount } from '../utils/amount-formatter';
19
- import verifyTransaction from '../tx/validator';
20
- import NodePool from '../node-pool';
21
- import { pause } from '../utils/other';
22
- import { isNameValid, produceNameId, decode } from '../tx/builder/helpers';
23
- import { DRY_RUN_ACCOUNT } from '../tx/builder/schema';
17
+ import Chain from "./index.mjs";
18
+ import { AE_AMOUNT_FORMATS, formatAmount } from "../utils/amount-formatter.mjs";
19
+ import verifyTransaction from "../tx/validator.mjs";
20
+ import NodePool from "../node-pool/index.mjs";
21
+ import { pause } from "../utils/other.mjs";
22
+ import { isNameValid, produceNameId, decode } from "../tx/builder/helpers.mjs";
23
+ import { DRY_RUN_ACCOUNT } from "../tx/builder/schema.mjs";
24
+ import { AensPointerContextError, DryRunError, InvalidAensNameError, InvalidTxError, RequestTimedOutError, TxTimedOutError, TxNotInChainError, ArgumentError } from "../utils/errors.mjs";
24
25
  /**
25
26
  * ChainNode module
26
27
  *
@@ -32,19 +33,16 @@ import { DRY_RUN_ACCOUNT } from '../tx/builder/schema';
32
33
 
33
34
  async function sendTransaction(tx) {
34
35
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
35
- const {
36
- waitMined,
37
- verify
38
- } = { ...this.Ae.defaults,
36
+ const opt = { ...this.Ae.defaults,
39
37
  ...options
40
38
  };
41
39
 
42
- if (verify) {
40
+ if (opt.verify) {
43
41
  const validation = await verifyTransaction(tx, this.selectedNode.instance);
44
42
 
45
43
  if (validation.length) {
46
44
  const message = 'Transaction verification errors: ' + validation.map(v => v.message).join(', ');
47
- throw Object.assign(new Error(message), {
45
+ throw Object.assign(new InvalidTxError(message), {
48
46
  code: 'TX_VERIFICATION_ERROR',
49
47
  validation,
50
48
  transaction: tx
@@ -53,13 +51,17 @@ async function sendTransaction(tx) {
53
51
  }
54
52
 
55
53
  try {
54
+ var _this$address;
55
+
56
56
  const {
57
57
  txHash
58
58
  } = await this.api.postTransaction({
59
59
  tx
60
+ }, {
61
+ __queue: `tx-${await ((_this$address = this.address) === null || _this$address === void 0 ? void 0 : _this$address.call(this, options).catch(() => ''))}`
60
62
  });
61
63
 
62
- if (waitMined) {
64
+ if (opt.waitMined) {
63
65
  const txData = { ...(await this.poll(txHash, options)),
64
66
  rawTx: tx
65
67
  }; // wait for transaction confirmation
@@ -92,15 +94,15 @@ async function waitForTxConfirm(txHash) {
92
94
  options.confirm = options.confirm === true ? 3 : options.confirm;
93
95
  const {
94
96
  blockHeight
95
- } = await this.tx(txHash);
97
+ } = await this.api.getTransactionByHash(txHash);
96
98
  const height = await this.awaitHeight(blockHeight + options.confirm, options);
97
99
  const {
98
100
  blockHeight: newBlockHeight
99
- } = await this.tx(txHash);
101
+ } = await this.api.getTransactionByHash(txHash);
100
102
 
101
103
  switch (newBlockHeight) {
102
104
  case -1:
103
- throw new Error(`Transaction ${txHash} is removed from chain`);
105
+ throw new TxNotInChainError(txHash);
104
106
 
105
107
  case blockHeight:
106
108
  return height;
@@ -160,6 +162,10 @@ async function getBalance(address) {
160
162
  targetDenomination: format
161
163
  }).toString();
162
164
  }
165
+ /**
166
+ * @deprecated use `sdk.api.getTransactionByHash/getTransactionInfoByHash` instead
167
+ */
168
+
163
169
 
164
170
  async function tx(hash) {
165
171
  let info = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
@@ -177,20 +183,12 @@ async function tx(hash) {
177
183
  }
178
184
 
179
185
  async function height() {
180
- try {
181
- if (!this._heightPromise) {
182
- this._heightPromise = this.api.getCurrentKeyBlockHeight();
183
- }
184
-
185
- return (await this._heightPromise).height;
186
- } finally {
187
- delete this._heightPromise;
188
- }
186
+ return (await this.api.getCurrentKeyBlockHeight()).height;
189
187
  }
190
188
 
191
189
  async function awaitHeight(height) {
192
190
  let {
193
- interval = 5000,
191
+ interval = this._getPollInterval('block'),
194
192
  attempts = 20
195
193
  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
196
194
  let currentHeight;
@@ -201,37 +199,29 @@ async function awaitHeight(height) {
201
199
  if (currentHeight >= height) return currentHeight;
202
200
  }
203
201
 
204
- throw new Error(`Giving up after ${(attempts - 1) * interval}ms, current height: ${currentHeight}, desired height: ${height}`);
205
- }
206
- /**
207
- * @deprecated
208
- */
209
-
210
-
211
- async function topBlock() {
212
- return this.api.getTopHeader();
202
+ throw new RequestTimedOutError((attempts - 1) * interval, currentHeight, height);
213
203
  }
214
204
 
215
205
  async function poll(th) {
216
206
  let {
217
207
  blocks = 10,
218
- interval = 500,
219
- allowUnsynced = false
208
+ interval = this._getPollInterval('microblock')
220
209
  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
221
210
  const max = (await this.height()) + blocks;
222
211
 
223
212
  do {
224
- const tx = await this.tx(th).catch(_ => null);
225
-
226
- if (tx && (tx.blockHeight !== -1 || allowUnsynced && tx.height)) {
227
- return tx;
228
- }
229
-
213
+ const tx = await this.api.getTransactionByHash(th);
214
+ if (tx.blockHeight !== -1) return tx;
230
215
  await pause(interval);
231
216
  } while ((await this.height()) < max);
232
217
 
233
- throw new Error(`Giving up after ${blocks} blocks mined, transaction hash: ${th}`);
218
+ const status = this.api.getCheckTxInPool && (await this.api.getCheckTxInPool(th)).status;
219
+ throw new TxTimedOutError(blocks, th, status);
234
220
  }
221
+ /**
222
+ * @deprecated use `sdk.api.getTransactionInfoByHash` instead
223
+ */
224
+
235
225
 
236
226
  async function getTxInfo(hash) {
237
227
  const result = await this.api.getTransactionInfoByHash(hash);
@@ -249,7 +239,7 @@ async function getCurrentGeneration() {
249
239
  async function getGeneration(hashOrHeight) {
250
240
  if (typeof hashOrHeight === 'string') return this.api.getGenerationByHash(hashOrHeight);
251
241
  if (typeof hashOrHeight === 'number') return this.api.getGenerationByHeight(hashOrHeight);
252
- throw new Error('Invalid param, param must be hash or height');
242
+ throw new ArgumentError('hashOrHeight', 'a string or number', hashOrHeight);
253
243
  }
254
244
 
255
245
  async function getMicroBlockTransactions(hash) {
@@ -259,37 +249,97 @@ async function getMicroBlockTransactions(hash) {
259
249
  async function getKeyBlock(hashOrHeight) {
260
250
  if (typeof hashOrHeight === 'string') return this.api.getKeyBlockByHash(hashOrHeight);
261
251
  if (typeof hashOrHeight === 'number') return this.api.getKeyBlockByHeight(hashOrHeight);
262
- throw new Error('Invalid param, param must be hash or height');
252
+ throw new ArgumentError('hashOrHeight', 'a string or number', hashOrHeight);
263
253
  }
264
254
 
265
255
  async function getMicroBlockHeader(hash) {
266
256
  return this.api.getMicroBlockHeaderByHash(hash);
267
257
  }
268
258
 
269
- async function txDryRun(tx, accountAddress, options) {
259
+ async function txDryRunHandler(key) {
260
+ const rs = this._txDryRun[key];
261
+ delete this._txDryRun[key];
262
+ let dryRunRes;
263
+
264
+ try {
265
+ dryRunRes = await this.api.protectedDryRunTxs({
266
+ top: rs[0].top,
267
+ txEvents: rs[0].txEvents,
268
+ txs: rs.map(req => ({
269
+ tx: req.tx
270
+ })),
271
+ accounts: Array.from(new Set(rs.map(req => req.accountAddress))).map(pubKey => ({
272
+ pubKey,
273
+ amount: DRY_RUN_ACCOUNT.amount
274
+ }))
275
+ });
276
+ } catch (error) {
277
+ rs.forEach(_ref => {
278
+ let {
279
+ reject
280
+ } = _ref;
281
+ return reject(error);
282
+ });
283
+ return;
284
+ }
285
+
270
286
  const {
271
- results: [{
287
+ results,
288
+ txEvents
289
+ } = dryRunRes;
290
+ results.forEach((_ref2, idx) => {
291
+ let {
272
292
  result,
273
293
  reason,
274
294
  ...resultPayload
275
- }],
276
- ...other
277
- } = await this.api.protectedDryRunTxs({ ...options,
278
- txs: [{
279
- tx
280
- }],
281
- accounts: [{
282
- pubKey: accountAddress,
283
- amount: DRY_RUN_ACCOUNT.amount
284
- }]
295
+ } = _ref2;
296
+ const {
297
+ resolve,
298
+ reject,
299
+ tx,
300
+ options,
301
+ accountAddress
302
+ } = rs[idx];
303
+ if (result === 'ok') return resolve({ ...resultPayload,
304
+ txEvents
305
+ });
306
+ reject(Object.assign(new DryRunError(reason), {
307
+ tx,
308
+ accountAddress,
309
+ options
310
+ }));
285
311
  });
286
- if (result === 'ok') return { ...resultPayload,
287
- ...other
288
- };
289
- throw Object.assign(new Error('Dry run error, ' + reason), {
290
- tx,
291
- accountAddress,
292
- options
312
+ }
313
+
314
+ async function txDryRun(tx, accountAddress, _ref3) {
315
+ var _this$_txDryRun, _this$_txDryRun2, _this$_txDryRun2$key;
316
+
317
+ let {
318
+ top,
319
+ txEvents,
320
+ combine
321
+ } = _ref3;
322
+ const key = combine ? [top, txEvents].join() : 'immediate';
323
+ (_this$_txDryRun = this._txDryRun) !== null && _this$_txDryRun !== void 0 ? _this$_txDryRun : this._txDryRun = {};
324
+ (_this$_txDryRun2$key = (_this$_txDryRun2 = this._txDryRun)[key]) !== null && _this$_txDryRun2$key !== void 0 ? _this$_txDryRun2$key : _this$_txDryRun2[key] = [];
325
+ return new Promise((resolve, reject) => {
326
+ var _this$_txDryRun$key, _this$_txDryRun$key$t;
327
+
328
+ this._txDryRun[key].push({
329
+ tx,
330
+ accountAddress,
331
+ top,
332
+ txEvents,
333
+ resolve,
334
+ reject
335
+ });
336
+
337
+ if (!combine) {
338
+ txDryRunHandler.call(this, key);
339
+ return;
340
+ }
341
+
342
+ (_this$_txDryRun$key$t = (_this$_txDryRun$key = this._txDryRun[key]).timeout) !== null && _this$_txDryRun$key$t !== void 0 ? _this$_txDryRun$key$t : _this$_txDryRun$key.timeout = setTimeout(txDryRunHandler.bind(this, key));
293
343
  });
294
344
  }
295
345
 
@@ -323,7 +373,7 @@ async function resolveName(nameOrId, key) {
323
373
  } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
324
374
 
325
375
  if (!nameOrId || typeof nameOrId !== 'string') {
326
- throw new Error(`Name or address should be a string: ${nameOrId}`);
376
+ throw new InvalidAensNameError(`Name or address should be a string: ${nameOrId}`);
327
377
  }
328
378
 
329
379
  try {
@@ -333,12 +383,11 @@ async function resolveName(nameOrId, key) {
333
383
 
334
384
  if (isNameValid(nameOrId)) {
335
385
  if (verify || resolveByNode) {
336
- const name = await this.api.getNameEntryByName(nameOrId).catch(_ => null);
337
- if (!name) throw new Error(`Name not found: ${nameOrId}`);
386
+ const name = await this.api.getNameEntryByName(nameOrId);
338
387
  const pointer = name.pointers.find(pointer => pointer.key === key);
339
388
 
340
389
  if (!pointer) {
341
- throw new Error(`Name ${nameOrId} don't have pointers for ${key}`);
390
+ throw new AensPointerContextError(`Name ${nameOrId} don't have pointers for ${key}`);
342
391
  }
343
392
 
344
393
  if (resolveByNode) return pointer.id;
@@ -347,7 +396,7 @@ async function resolveName(nameOrId, key) {
347
396
  return produceNameId(nameOrId);
348
397
  }
349
398
 
350
- throw new Error(`Invalid name or address: ${nameOrId}`);
399
+ throw new InvalidAensNameError(`Invalid name or address: ${nameOrId}`);
351
400
  }
352
401
  /**
353
402
  * ChainNode Stamp
@@ -370,7 +419,6 @@ const ChainNode = Chain.compose(NodePool, {
370
419
  balance,
371
420
  getBalance,
372
421
  getAccount,
373
- topBlock,
374
422
  tx,
375
423
  height,
376
424
  awaitHeight,
@@ -391,4 +439,4 @@ const ChainNode = Chain.compose(NodePool, {
391
439
  }
392
440
  });
393
441
  export default ChainNode;
394
- //# sourceMappingURL=node.js.map
442
+ //# sourceMappingURL=node.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/chain/node.js"],"names":["Chain","AE_AMOUNT_FORMATS","formatAmount","verifyTransaction","NodePool","pause","isNameValid","produceNameId","decode","DRY_RUN_ACCOUNT","AensPointerContextError","DryRunError","InvalidAensNameError","InvalidTxError","RequestTimedOutError","TxTimedOutError","TxNotInChainError","ArgumentError","sendTransaction","tx","options","opt","Ae","defaults","verify","validation","selectedNode","instance","length","message","map","v","join","Object","assign","code","transaction","txHash","api","postTransaction","__queue","address","catch","waitMined","txData","poll","rawTx","confirm","confirmationHeight","waitForTxConfirm","hash","error","verifyTx","blockHeight","getTransactionByHash","height","awaitHeight","newBlockHeight","getAccount","getAccountByPubkeyAndHeight","getAccountByPubkeyAndHash","getAccountByPubkey","balance","format","AETTOS","targetDenomination","toString","getBalance","_","info","includes","type","getTxInfo","e","getCurrentKeyBlockHeight","interval","_getPollInterval","attempts","currentHeight","i","th","blocks","max","status","getCheckTxInPool","result","getTransactionInfoByHash","callInfo","mempool","getPendingTransactions","getCurrentGeneration","getGeneration","hashOrHeight","getGenerationByHash","getGenerationByHeight","getMicroBlockTransactions","getMicroBlockTransactionsByHash","transactions","getKeyBlock","getKeyBlockByHash","getKeyBlockByHeight","getMicroBlockHeader","getMicroBlockHeaderByHash","txDryRunHandler","key","rs","_txDryRun","dryRunRes","protectedDryRunTxs","top","txEvents","txs","req","accounts","Array","from","Set","accountAddress","pubKey","amount","forEach","reject","results","idx","reason","resultPayload","resolve","txDryRun","combine","Promise","push","call","timeout","setTimeout","bind","getContractByteCode","contractId","getContractCode","getContract","getName","name","getNameEntryByName","resolveName","nameOrId","resolveByNode","pointer","pointers","find","id","ChainNode","compose","methods"],"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 */\nimport Chain from './'\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../utils/amount-formatter'\nimport verifyTransaction from '../tx/validator'\nimport NodePool from '../node-pool'\nimport { pause } from '../utils/other'\nimport { isNameValid, produceNameId, decode } from '../tx/builder/helpers'\nimport { DRY_RUN_ACCOUNT } from '../tx/builder/schema'\nimport {\n AensPointerContextError,\n DryRunError,\n InvalidAensNameError,\n InvalidTxError,\n RequestTimedOutError,\n TxTimedOutError,\n TxNotInChainError,\n ArgumentError\n} from '../utils/errors'\n\n/**\n * ChainNode module\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/chain}.\n * @module @aeternity/aepp-sdk/es/chain/node\n * @export ChainNode\n * @example import { ChainNode } from '@aeternity/aepp-sdk'\n */\n\nasync function sendTransaction (tx, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n if (opt.verify) {\n const validation = await verifyTransaction(tx, this.selectedNode.instance)\n if (validation.length) {\n const message = 'Transaction verification errors: ' +\n validation.map(v => v.message).join(', ')\n throw Object.assign(new InvalidTxError(message), {\n code: 'TX_VERIFICATION_ERROR',\n validation,\n transaction: tx\n })\n }\n }\n\n try {\n const { txHash } = await this.api.postTransaction({ tx }, {\n __queue: `tx-${await this.address?.(options).catch(() => '')}`\n })\n\n if (opt.waitMined) {\n const txData = { ...await this.poll(txHash, options), rawTx: tx }\n // wait for transaction confirmation\n if (options.confirm) {\n return { ...txData, confirmationHeight: await this.waitForTxConfirm(txHash, options) }\n }\n return txData\n }\n return { hash: txHash, rawTx: tx }\n } catch (error) {\n throw Object.assign(error, {\n rawTx: tx,\n verifyTx: () => verifyTransaction(tx, this.selectedNode.instance)\n })\n }\n}\n\nasync function waitForTxConfirm (txHash, options = { confirm: 3 }) {\n options.confirm = options.confirm === true ? 3 : options.confirm\n const { blockHeight } = await this.api.getTransactionByHash(txHash)\n const height = await this.awaitHeight(blockHeight + options.confirm, options)\n const { blockHeight: newBlockHeight } = await this.api.getTransactionByHash(txHash)\n switch (newBlockHeight) {\n case -1:\n throw new TxNotInChainError(txHash)\n case blockHeight:\n return height\n default:\n return waitForTxConfirm(txHash, options)\n }\n}\n\nasync function getAccount (address, { height, hash } = {}) {\n if (height) return this.api.getAccountByPubkeyAndHeight(address, height)\n if (hash) return this.api.getAccountByPubkeyAndHash(address, hash)\n return this.api.getAccountByPubkey(address)\n}\n\n/**\n * @function\n * @deprecated\n */\nasync function balance (address, { height, hash, format = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const { balance } = await this.getAccount(address, { hash, height })\n\n return formatAmount(balance, { targetDenomination: format }).toString()\n}\n\nasync function getBalance (address, { height, hash, format = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const { balance } = await this.getAccount(address, { hash, height }).catch(_ => ({ balance: 0 }))\n\n return formatAmount(balance, { targetDenomination: format }).toString()\n}\n\n/**\n * @deprecated use `sdk.api.getTransactionByHash/getTransactionInfoByHash` instead\n */\nasync function tx (hash, info = true) {\n const tx = await this.api.getTransactionByHash(hash)\n if (['ContractCreateTx', 'ContractCallTx', 'ChannelForceProgressTx'].includes(tx.tx.type) && info && tx.blockHeight !== -1) {\n try {\n return { ...tx, ...await this.getTxInfo(hash) }\n } catch (e) {}\n }\n return tx\n}\n\nasync function height () {\n return (await this.api.getCurrentKeyBlockHeight()).height\n}\n\nasync function awaitHeight (\n height,\n { interval = this._getPollInterval('block'), attempts = 20 } = {}\n) {\n let currentHeight\n for (let i = 0; i < attempts; i++) {\n if (i) await pause(interval)\n currentHeight = await this.height()\n if (currentHeight >= height) return currentHeight\n }\n throw new RequestTimedOutError((attempts - 1) * interval, currentHeight, height)\n}\n\nasync function poll (th, { blocks = 10, interval = this._getPollInterval('microblock') } = {}) {\n const max = await this.height() + blocks\n do {\n const tx = await this.api.getTransactionByHash(th)\n if (tx.blockHeight !== -1) return tx\n await pause(interval)\n } while (await this.height() < max)\n const status = this.api.getCheckTxInPool && (await this.api.getCheckTxInPool(th)).status\n throw new TxTimedOutError(blocks, th, status)\n}\n\n/**\n * @deprecated use `sdk.api.getTransactionInfoByHash` instead\n */\nasync function getTxInfo (hash) {\n const result = await this.api.getTransactionInfoByHash(hash)\n return result.callInfo || result\n}\n\nasync function mempool () {\n return this.api.getPendingTransactions()\n}\n\nasync function getCurrentGeneration () {\n return this.api.getCurrentGeneration()\n}\n\nasync function getGeneration (hashOrHeight) {\n if (typeof hashOrHeight === 'string') return this.api.getGenerationByHash(hashOrHeight)\n if (typeof hashOrHeight === 'number') return this.api.getGenerationByHeight(hashOrHeight)\n throw new ArgumentError('hashOrHeight', 'a string or number', hashOrHeight)\n}\n\nasync function getMicroBlockTransactions (hash) {\n return (await this.api.getMicroBlockTransactionsByHash(hash)).transactions\n}\n\nasync function getKeyBlock (hashOrHeight) {\n if (typeof hashOrHeight === 'string') return this.api.getKeyBlockByHash(hashOrHeight)\n if (typeof hashOrHeight === 'number') return this.api.getKeyBlockByHeight(hashOrHeight)\n throw new ArgumentError('hashOrHeight', 'a string or number', hashOrHeight)\n}\n\nasync function getMicroBlockHeader (hash) {\n return this.api.getMicroBlockHeaderByHash(hash)\n}\n\nasync function txDryRunHandler (key) {\n const rs = this._txDryRun[key]\n delete this._txDryRun[key]\n\n let dryRunRes\n try {\n dryRunRes = await this.api.protectedDryRunTxs({\n top: rs[0].top,\n txEvents: rs[0].txEvents,\n txs: rs.map(req => ({ tx: req.tx })),\n accounts: Array.from(new Set(rs.map(req => req.accountAddress)))\n .map(pubKey => ({ pubKey, amount: DRY_RUN_ACCOUNT.amount }))\n })\n } catch (error) {\n rs.forEach(({ reject }) => reject(error))\n return\n }\n\n const { results, txEvents } = dryRunRes\n results.forEach(({ result, reason, ...resultPayload }, idx) => {\n const { resolve, reject, tx, options, accountAddress } = rs[idx]\n if (result === 'ok') return resolve({ ...resultPayload, txEvents })\n reject(Object.assign(\n new DryRunError(reason), { tx, accountAddress, options }\n ))\n })\n}\n\nasync function txDryRun (tx, accountAddress, { top, txEvents, combine }) {\n const key = combine ? [top, txEvents].join() : 'immediate'\n this._txDryRun ??= {}\n this._txDryRun[key] ??= []\n return new Promise((resolve, reject) => {\n this._txDryRun[key].push({ tx, accountAddress, top, txEvents, resolve, reject })\n if (!combine) {\n txDryRunHandler.call(this, key)\n return\n }\n this._txDryRun[key].timeout ??= setTimeout(txDryRunHandler.bind(this, key))\n })\n}\n\nasync function getContractByteCode (contractId) {\n return this.api.getContractCode(contractId)\n}\n\nasync function getContract (contractId) {\n return this.api.getContract(contractId)\n}\n\nasync function getName (name) {\n return this.api.getNameEntryByName(name)\n}\n\n/**\n * Resolve AENS name and return name hash\n * @param {String} nameOrId\n * @param {String} key in AENS pointers record\n * @param {Object} [options]\n * @param {Boolean} [options.verify] To ensure that name exist and have a corresponding pointer\n * // TODO: avoid that to don't trust to current api gateway\n * @param {Boolean} [options.resolveByNode] Enables pointer resolving using node\n * @return {String} Address or AENS name hash\n */\nasync function resolveName (nameOrId, key, { verify, resolveByNode } = {}) {\n if (!nameOrId || typeof nameOrId !== 'string') {\n throw new InvalidAensNameError(`Name or address should be a string: ${nameOrId}`)\n }\n try {\n decode(nameOrId)\n return nameOrId\n } catch (error) {}\n if (isNameValid(nameOrId)) {\n if (verify || resolveByNode) {\n const name = await this.api.getNameEntryByName(nameOrId)\n const pointer = name.pointers.find(pointer => pointer.key === key)\n if (!pointer) {\n throw new AensPointerContextError(`Name ${nameOrId} don't have pointers for ${key}`)\n }\n if (resolveByNode) return pointer.id\n }\n return produceNameId(nameOrId)\n }\n throw new InvalidAensNameError(`Invalid name or address: ${nameOrId}`)\n}\n\n/**\n * ChainNode Stamp\n *\n * This is implementation of {@link module:@aeternity/aepp-sdk/es/chain--Chain}\n * composed with {@link module:@aeternity/aepp-sdk/es/contract/node--ContractNodeAPI} and\n * {@link module:@aeternity/aepp-sdk/es/oracle/node--OracleNodeAPI}\n * @function\n * @alias module:@aeternity/aepp-sdk/es/chain/node\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} ChainNode instance\n * @example ChainNode({url: 'https://testnet.aeternity.io/'})\n */\nconst ChainNode = Chain.compose(NodePool, {\n methods: {\n sendTransaction,\n balance,\n getBalance,\n getAccount,\n tx,\n height,\n awaitHeight,\n poll,\n getTxInfo,\n mempool,\n getCurrentGeneration,\n getGeneration,\n getMicroBlockHeader,\n getMicroBlockTransactions,\n getKeyBlock,\n txDryRun,\n getContractByteCode,\n getContract,\n getName,\n waitForTxConfirm,\n resolveName\n }\n})\n\nexport default ChainNode\n"],"file":"node.mjs"}
@@ -14,30 +14,28 @@
14
14
  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
15
  * PERFORMANCE OF THIS SOFTWARE.
16
16
  */
17
- import { generateKeyPair, encodeContractAddress, encodeBase64Check } from '../utils/crypto';
18
- import { options, changeStatus, changeState, call, send, emit, channelId, disconnect, fsmId } from './internal';
19
- import { unpackTx, buildTx } from '../tx/builder';
20
-
21
- function encodeRlpTx(rlpBinary) {
22
- return `tx_${encodeBase64Check(rlpBinary)}`;
23
- }
17
+ import { generateKeyPair, encodeContractAddress } from "../utils/crypto.mjs";
18
+ import { options, changeStatus, changeState, call, send, emit, channelId, disconnect, fsmId } from "./internal.mjs";
19
+ import { unpackTx, buildTx } from "../tx/builder/index.mjs";
20
+ import { encode } from "../tx/builder/helpers.mjs";
21
+ import { IllegalArgumentError, InsufficientBalanceError, ChannelConnectionError, UnexpectedChannelMessageError } from "../utils/errors.mjs";
24
22
 
25
23
  async function appendSignature(tx, signFn) {
26
24
  const {
27
25
  signatures,
28
26
  encodedTx
29
27
  } = unpackTx(tx).tx;
30
- const result = await signFn(encodeRlpTx(encodedTx.rlpEncoded));
28
+ const result = await signFn(encode(encodedTx.rlpEncoded, 'tx'));
31
29
 
32
30
  if (typeof result === 'string') {
33
31
  const {
34
32
  tx: signedTx,
35
33
  txType
36
34
  } = unpackTx(result);
37
- return encodeRlpTx(buildTx({
35
+ return buildTx({
38
36
  signatures: signatures.concat(signedTx.signatures),
39
37
  encodedTx: signedTx.encodedTx.rlpEncoded
40
- }, txType).rlpEncoded);
38
+ }, txType).tx;
41
39
  }
42
40
 
43
41
  return result;
@@ -45,7 +43,7 @@ async function appendSignature(tx, signFn) {
45
43
 
46
44
  function handleUnexpectedMessage(channel, message, state) {
47
45
  if (state && state.reject) {
48
- state.reject(Object.assign(new Error(`Unexpected message received:\n\n${JSON.stringify(message)}`), {
46
+ state.reject(Object.assign(new UnexpectedChannelMessageError(`Unexpected message received:\n\n${JSON.stringify(message)}`), {
49
47
  wsMessage: message
50
48
  }));
51
49
  }
@@ -86,7 +84,7 @@ export function awaitingConnection(channel, message, state) {
86
84
  }
87
85
 
88
86
  if (message.method === 'channels.error') {
89
- emit(channel, 'error', new Error(message.payload.message));
87
+ emit(channel, 'error', new ChannelConnectionError(message.payload.message));
90
88
  return {
91
89
  handler: channelClosed
92
90
  };
@@ -355,7 +353,7 @@ export async function awaitingOffChainTx(channel, message, state) {
355
353
  }
356
354
 
357
355
  if (message.method === 'channels.error') {
358
- state.reject(new Error(message.data.message));
356
+ state.reject(new ChannelConnectionError(message.data.message));
359
357
  return {
360
358
  handler: channelOpen
361
359
  };
@@ -367,11 +365,11 @@ export async function awaitingOffChainTx(channel, message, state) {
367
365
  } = message.error;
368
366
 
369
367
  if (data.find(i => i.code === 1001)) {
370
- state.reject(new Error('Insufficient balance'));
368
+ state.reject(new InsufficientBalanceError('Insufficient balance'));
371
369
  } else if (data.find(i => i.code === 1002)) {
372
- state.reject(new Error('Amount cannot be negative'));
370
+ state.reject(new IllegalArgumentError('Amount cannot be negative'));
373
371
  } else {
374
- state.reject(new Error(message.error.message));
372
+ state.reject(new ChannelConnectionError(message.error.message));
375
373
  }
376
374
 
377
375
  return {
@@ -438,7 +436,7 @@ export function awaitingOffChainUpdate(channel, message, state) {
438
436
  }
439
437
 
440
438
  if (message.error) {
441
- state.reject(new Error(message.error.message));
439
+ state.reject(new ChannelConnectionError(message.error.message));
442
440
  return {
443
441
  handler: channelOpen
444
442
  };
@@ -591,7 +589,7 @@ export function awaitingLeave(channel, message, state) {
591
589
  }
592
590
 
593
591
  if (message.method === 'channels.error') {
594
- state.reject(new Error(message.data.message));
592
+ state.reject(new ChannelConnectionError(message.data.message));
595
593
  return {
596
594
  handler: channelOpen
597
595
  };
@@ -1075,7 +1073,7 @@ export function awaitingCallsPruned(channels, message, state) {
1075
1073
  };
1076
1074
  }
1077
1075
 
1078
- state.reject(new Error('Unexpected message received'));
1076
+ state.reject(new UnexpectedChannelMessageError('Unexpected message received'));
1079
1077
  return {
1080
1078
  handler: channelClosed
1081
1079
  };
@@ -1109,4 +1107,4 @@ export function channelClosed(channel, message, state) {
1109
1107
  state
1110
1108
  };
1111
1109
  }
1112
- //# sourceMappingURL=handlers.js.map
1110
+ //# sourceMappingURL=handlers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/channel/handlers.js"],"names":["generateKeyPair","encodeContractAddress","options","changeStatus","changeState","call","send","emit","channelId","disconnect","fsmId","unpackTx","buildTx","encode","IllegalArgumentError","InsufficientBalanceError","ChannelConnectionError","UnexpectedChannelMessageError","appendSignature","tx","signFn","signatures","encodedTx","result","rlpEncoded","signedTx","txType","concat","handleUnexpectedMessage","channel","message","state","reject","Object","assign","JSON","stringify","wsMessage","handler","channelOpen","awaitingConnection","method","includes","params","data","event","channel_accept","funding_created","awaitingChannelCreateTx","awaitingOpenConfirmation","set","fsm_id","payload","channelClosed","awaitingReconnection","signed_tx","tag","initiator","responder","get","role","sign","jsonrpc","awaitingOnChainTx","info","awaitingBlockInclusion","channel_id","own_funding_locked","funding_locked","type","awaitingInitialState","awaitingTxSignRequest","enter","awaitingOffChainTx","updates","awaitingOffChainUpdate","error","find","i","code","resolve","accepted","errorCode","error_code","errorMessage","error_msg","match","awaitingUpdateConflict","from","publicKey","to","amount","awaitingShutdownTx","awaitingShutdownOnChainTx","awaitingLeave","awaitingWithdrawTx","awaitingWithdrawCompletion","onOnChainTx","callback","own_withdraw_locked","onOwnWithdrawLocked","withdraw_locked","onWithdrawLocked","awaitingDepositTx","awaitingDepositCompletion","own_deposit_locked","onOwnDepositLocked","deposit_locked","onDepositLocked","awaitingNewContractTx","awaitingNewContractCompletion","round","owner","address","awaitingCallContractUpdateTx","awaitingCallContractCompletion","awaitingCallContractForceProgressUpdate","awaitingForceProgressCompletion","awaitingCallsPruned","channels","closeTx"],"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 { generateKeyPair, encodeContractAddress } from '../utils/crypto'\nimport {\n options,\n changeStatus,\n changeState,\n call,\n send,\n emit,\n channelId,\n disconnect,\n fsmId\n} from './internal'\nimport { unpackTx, buildTx } from '../tx/builder'\nimport { encode } from '../tx/builder/helpers'\nimport {\n IllegalArgumentError,\n InsufficientBalanceError,\n ChannelConnectionError,\n UnexpectedChannelMessageError\n} from '../utils/errors'\n\nasync function appendSignature (tx, signFn) {\n const { signatures, encodedTx } = unpackTx(tx).tx\n const result = await signFn(encode(encodedTx.rlpEncoded, 'tx'))\n if (typeof result === 'string') {\n const { tx: signedTx, txType } = unpackTx(result)\n return buildTx({\n signatures: signatures.concat(signedTx.signatures),\n encodedTx: signedTx.encodedTx.rlpEncoded\n }, txType).tx\n }\n return result\n}\n\nfunction handleUnexpectedMessage (channel, message, state) {\n if (state && state.reject) {\n state.reject(Object.assign(\n new UnexpectedChannelMessageError(`Unexpected message received:\\n\\n${JSON.stringify(message)}`),\n { wsMessage: message }\n ))\n }\n return { handler: channelOpen }\n}\n\nexport function awaitingConnection (channel, message, state) {\n if (message.method === 'channels.info') {\n if (['channel_accept', 'funding_created'].includes(message.params.data.event)) {\n changeStatus(channel, {\n channel_accept: 'accepted',\n funding_created: 'halfSigned'\n }[message.params.data.event])\n return { handler: awaitingChannelCreateTx }\n }\n if (message.params.data.event === 'channel_reestablished') {\n return { handler: awaitingOpenConfirmation }\n }\n if (message.params.data.event === 'fsm_up') {\n fsmId.set(channel, message.params.data.fsm_id)\n return { handler: awaitingConnection }\n }\n return { handler: awaitingConnection }\n }\n if (message.method === 'channels.error') {\n emit(channel, 'error', new ChannelConnectionError(message.payload.message))\n return { handler: channelClosed }\n }\n}\n\nexport async function awaitingReconnection (channel, message, state) {\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'fsm_up') {\n fsmId.set(channel, message.params.data.fsm_id)\n changeState(channel, (await call(channel, 'channels.get.offchain_state', {})).signed_tx)\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingChannelCreateTx (channel, message, state) {\n const tag = {\n initiator: 'initiator_sign',\n responder: 'responder_sign'\n }[options.get(channel).role]\n if (message.method === `channels.sign.${tag}`) {\n if (message.params.data.tx) {\n const signedTx = await options.get(channel).sign(tag, message.params.data.tx)\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })\n return { handler: awaitingOnChainTx }\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx, tx => options.get(channel).sign(tag, tx)\n )\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })\n return { handler: awaitingOnChainTx }\n }\n}\n\nexport function awaitingOnChainTx (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (\n message.params.data.info === 'funding_signed' &&\n options.get(channel).role === 'initiator'\n ) {\n return { handler: awaitingBlockInclusion }\n }\n if (\n message.params.data.info === 'funding_created' &&\n options.get(channel).role === 'responder'\n ) {\n return { handler: awaitingBlockInclusion }\n }\n }\n if (\n message.method === 'channels.info' &&\n message.params.data.event === 'funding_signed' &&\n options.get(channel).role === 'initiator'\n ) {\n channelId.set(channel, message.params.channel_id)\n changeStatus(channel, 'signed')\n return { handler: awaitingOnChainTx }\n }\n}\n\nexport function awaitingBlockInclusion (channel, message, state) {\n if (message.method === 'channels.info') {\n const handler = {\n funding_created: awaitingBlockInclusion,\n own_funding_locked: awaitingBlockInclusion,\n funding_locked: awaitingOpenConfirmation\n }[message.params.data.event]\n if (handler) {\n return { handler }\n }\n }\n if (message.method === 'channels.on_chain_tx') {\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type\n })\n return { handler: awaitingBlockInclusion }\n }\n}\n\nexport function awaitingOpenConfirmation (channel, message, state) {\n if (message.method === 'channels.info' && message.params.data.event === 'open') {\n channelId.set(channel, message.params.channel_id)\n return { handler: awaitingInitialState }\n }\n}\n\nexport function awaitingInitialState (channel, message, state) {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n return { handler: channelOpen }\n }\n}\n\nexport async function channelOpen (channel, message, state) {\n switch (message.method) {\n case 'channels.info':\n switch (message.params.data.event) {\n case 'update':\n case 'withdraw_created':\n case 'deposit_created':\n return { handler: awaitingTxSignRequest }\n case 'own_withdraw_locked':\n case 'withdraw_locked':\n case 'own_deposit_locked':\n case 'deposit_locked':\n case 'peer_disconnected':\n case 'channel_reestablished':\n case 'open':\n // TODO: Better handling of peer_disconnected event.\n //\n // We should enter intermediate state where offchain transactions\n // are blocked until channel is reestablished.\n emit(channel, message.params.data.event)\n return { handler: channelOpen }\n case 'fsm_up':\n fsmId.set(channel, message.params.data.fsm_id)\n return { handler: channelOpen }\n case 'timeout':\n case 'close_mutual':\n return { handler: channelOpen }\n case 'closing':\n changeStatus(channel, 'closing')\n return { handler: channelOpen }\n case 'closed_confirmed':\n changeStatus(channel, 'closed')\n return { handler: channelClosed }\n case 'died':\n changeStatus(channel, 'died')\n return { handler: channelClosed }\n case 'shutdown':\n return { handler: channelOpen }\n }\n break\n case 'channels.on_chain_tx':\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type\n })\n return { handler: channelOpen }\n case 'channels.leave':\n // TODO: emit event\n return { handler: channelOpen }\n case 'channels.update':\n changeState(channel, message.params.data.state)\n return { handler: channelOpen }\n case 'channels.sign.shutdown_sign_ack':\n return awaitingTxSignRequest(channel, message, state)\n }\n}\nchannelOpen.enter = (channel) => {\n changeStatus(channel, 'open')\n}\n\nexport async function awaitingOffChainTx (channel, message, state) {\n if (message.method === 'channels.sign.update') {\n const { sign } = state\n if (message.params.data.tx) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })\n return { handler: awaitingOffChainUpdate, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })\n return { handler: awaitingOffChainUpdate, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } })\n return { handler: awaitingOffChainTx, state }\n }\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message))\n return { handler: channelOpen }\n }\n if (message.error) {\n const { data = [] } = message.error\n if (data.find(i => i.code === 1001)) {\n state.reject(new InsufficientBalanceError('Insufficient balance'))\n } else if (data.find(i => i.code === 1002)) {\n state.reject(new IllegalArgumentError('Amount cannot be negative'))\n } else {\n state.reject(new ChannelConnectionError(message.error.message))\n }\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingOffChainUpdate (channel, message, state) {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n if (message.error) {\n state.reject(new ChannelConnectionError(message.error.message))\n return { handler: channelOpen }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingTxSignRequest (channel, message, state) {\n const [, tag] = message.method.match(/^channels\\.sign\\.([^.]+)$/) || []\n if (tag) {\n if (message.params.data.tx) {\n const signedTx = await options.get(channel).sign(tag, message.params.data.tx, {\n updates: message.params.data.updates\n })\n if (signedTx) {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })\n return { handler: channelOpen }\n }\n } else {\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n options.get(channel).sign(tag, tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })\n return { handler: channelOpen }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { error: signedTx } })\n return { handler: awaitingUpdateConflict, state }\n }\n }\n // soft-reject via competing update\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new',\n params: {\n from: generateKeyPair().publicKey,\n to: generateKeyPair().publicKey,\n amount: 1\n }\n })\n return { handler: awaitingUpdateConflict, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingUpdateConflict (channel, message, state) {\n if (message.error) {\n return { handler: awaitingUpdateConflict, state }\n }\n if (message.method === 'channels.conflict') {\n return { handler: channelOpen }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingShutdownTx (channel, message, state) {\n if (message.method === 'channels.sign.shutdown_sign') {\n if (message.params.data.tx) {\n const signedTx = await state.sign(message.params.data.tx)\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { tx: signedTx } })\n return { handler: awaitingShutdownOnChainTx, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx => state.sign(tx))\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { signed_tx: signedTx } })\n return { handler: awaitingShutdownOnChainTx, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingShutdownOnChainTx (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n // state.resolve(message.params.data.tx)\n return { handler: channelClosed, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingLeave (channel, message, state) {\n if (message.method === 'channels.leave') {\n state.resolve({ channelId: message.params.channel_id, signedTx: message.params.data.state })\n disconnect(channel)\n return { handler: channelClosed }\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message))\n return { handler: channelOpen }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingWithdrawTx (channel, message, state) {\n if (message.method === 'channels.sign.withdraw_tx') {\n const { sign } = state\n if (message.params.data.tx) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { tx: signedTx } })\n return { handler: awaitingWithdrawCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { signed_tx: signedTx } })\n return { handler: awaitingWithdrawCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { error: signedTx } })\n return { handler: awaitingWithdrawCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingWithdrawCompletion (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (state.onOnChainTx) {\n state.onOnChainTx(message.params.data.tx)\n }\n return { handler: awaitingWithdrawCompletion, state }\n }\n if (message.method === 'channels.info') {\n if (['own_withdraw_locked', 'withdraw_locked'].includes(message.params.data.event)) {\n const callback = {\n own_withdraw_locked: state.onOwnWithdrawLocked,\n withdraw_locked: state.onWithdrawLocked\n }[message.params.data.event]\n if (callback) {\n callback()\n }\n return { handler: awaitingWithdrawCompletion, state }\n }\n }\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingDepositTx (channel, message, state) {\n if (message.method === 'channels.sign.deposit_tx') {\n const { sign } = state\n if (message.params.data.tx) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { tx: signedTx } })\n return { handler: awaitingDepositCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { signed_tx: signedTx } })\n return { handler: awaitingDepositCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { error: signedTx } })\n return { handler: awaitingDepositCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingDepositCompletion (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (state.onOnChainTx) {\n state.onOnChainTx(message.params.data.tx)\n }\n return { handler: awaitingDepositCompletion, state }\n }\n if (message.method === 'channels.info') {\n if (['own_deposit_locked', 'deposit_locked'].includes(message.params.data.event)) {\n const callback = {\n own_deposit_locked: state.onOwnDepositLocked,\n deposit_locked: state.onDepositLocked\n }[message.params.data.event]\n if (callback) {\n callback()\n }\n return { handler: awaitingDepositCompletion, state }\n }\n }\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingNewContractTx (channel, message, state) {\n if (message.method === 'channels.sign.update') {\n if (message.params.data.tx) {\n const signedTx = await state.sign(message.params.data.tx)\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })\n return { handler: awaitingNewContractCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx => state.sign(tx))\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })\n return { handler: awaitingNewContractCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } })\n return { handler: awaitingNewContractCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingNewContractCompletion (channel, message, state) {\n if (message.method === 'channels.update') {\n const { round } = unpackTx(message.params.data.state).tx.encodedTx.tx\n const owner = options.get(channel)[{\n initiator: 'initiatorId',\n responder: 'responderId'\n }[options.get(channel).role]]\n changeState(channel, message.params.data.state)\n state.resolve({\n accepted: true,\n address: encodeContractAddress(owner, round),\n signedTx: message.params.data.state\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingCallContractUpdateTx (channel, message, state) {\n if (message.method === 'channels.sign.update') {\n if (message.params.data.tx) {\n const signedTx = await state.sign(\n message.params.data.tx, { updates: message.params.data.updates }\n )\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })\n return { handler: awaitingCallContractCompletion, state }\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n tx => state.sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })\n return { handler: awaitingCallContractCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } })\n return { handler: awaitingCallContractCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingCallContractForceProgressUpdate (channel, message, state) {\n if (message.method === 'channels.sign.force_progress_tx') {\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n state.sign(tx, { updates: message.params.data.updates })\n )\n send(channel, { jsonrpc: '2.0', method: 'channels.force_progress_sign', params: { signed_tx: signedTx } })\n return { handler: awaitingForceProgressCompletion, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingForceProgressCompletion (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (state.onOnChainTx) {\n state.onOnChainTx(message.params.data)\n }\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type\n })\n state.resolve({ accepted: true, tx: message.params.data.tx })\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingCallContractCompletion (channel, message, state) {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingCallsPruned (channels, message, state) {\n if (message.method === 'channels.calls_pruned.reply') {\n state.resolve()\n return { handler: channelOpen }\n }\n state.reject(new UnexpectedChannelMessageError('Unexpected message received'))\n return { handler: channelClosed }\n}\n\nexport function channelClosed (channel, message, state) {\n if (!state) return { handler: channelClosed }\n if (message.params.data.event === 'closing') return { handler: channelClosed, state }\n if (message.params.data.info === 'channel_closed') {\n state.closeTx = message.params.data.tx\n return { handler: channelClosed, state }\n }\n if (message.params.data.event === 'closed_confirmed') {\n state.resolve(state.closeTx)\n return { handler: channelClosed }\n }\n return { handler: channelClosed, state }\n}\n"],"file":"handlers.mjs"}