@aeternity/aepp-sdk 9.0.1 → 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 (284) 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 -36
  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.mjs +179 -0
  10. package/es/account/base.mjs.map +1 -0
  11. package/es/account/memory.mjs +99 -0
  12. package/es/account/memory.mjs.map +1 -0
  13. package/es/account/multiple.mjs +179 -0
  14. package/es/account/multiple.mjs.map +1 -0
  15. package/es/ae/aens.mjs +404 -0
  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.mjs +207 -0
  22. package/es/ae/index.mjs.map +1 -0
  23. package/es/ae/oracle.mjs +339 -0
  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} +29 -9
  32. package/es/chain/index.mjs.map +1 -0
  33. package/es/chain/node.mjs +442 -0
  34. package/es/chain/node.mjs.map +1 -0
  35. package/es/channel/handlers.mjs +1110 -0
  36. package/es/channel/handlers.mjs.map +1 -0
  37. package/es/channel/{index.js → index.mjs} +245 -472
  38. package/es/channel/index.mjs.map +1 -0
  39. package/es/channel/internal.mjs +283 -0
  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.mjs +178 -0
  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.mjs +188 -0
  53. package/es/node-pool/index.mjs.map +1 -0
  54. package/es/node.mjs +133 -0
  55. package/es/node.mjs.map +1 -0
  56. package/es/other.d.ts +1 -1
  57. package/es/tx/builder/field-types.mjs +74 -0
  58. package/es/tx/builder/field-types.mjs.map +1 -0
  59. package/es/tx/builder/helpers.mjs +363 -0
  60. package/es/tx/builder/helpers.mjs.map +1 -0
  61. package/es/tx/builder/index.mjs +606 -0
  62. package/es/tx/builder/index.mjs.map +1 -0
  63. package/es/tx/builder/schema.mjs +760 -0
  64. package/es/tx/builder/schema.mjs.map +1 -0
  65. package/es/tx/{index.js → index.mjs} +107 -15
  66. package/es/tx/index.mjs.map +1 -0
  67. package/es/tx/tx-object.mjs +283 -0
  68. package/es/tx/tx-object.mjs.map +1 -0
  69. package/es/tx/tx.mjs +938 -0
  70. package/es/tx/tx.mjs.map +1 -0
  71. package/es/tx/validator.mjs +247 -0
  72. package/es/tx/validator.mjs.map +1 -0
  73. package/es/typings/blakejs/index.d.mjs +2 -0
  74. package/es/typings/blakejs/{index.d.js.map → index.d.mjs.map} +1 -1
  75. package/es/utils/aepp-wallet-communication/connection/{browser-runtime.js → browser-runtime.mjs} +27 -29
  76. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +1 -0
  77. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +183 -0
  78. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +1 -0
  79. package/es/utils/aepp-wallet-communication/connection/{index.js → index.mjs} +7 -3
  80. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +1 -0
  81. package/es/utils/aepp-wallet-communication/{content-script-bridge.js → content-script-bridge.mjs} +29 -23
  82. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +1 -0
  83. package/es/utils/aepp-wallet-communication/helpers.mjs +92 -0
  84. package/es/utils/aepp-wallet-communication/helpers.mjs.map +1 -0
  85. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +375 -0
  86. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +1 -0
  87. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +275 -0
  88. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +1 -0
  89. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +541 -0
  90. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +1 -0
  91. package/es/utils/aepp-wallet-communication/schema.mjs +102 -0
  92. package/es/utils/aepp-wallet-communication/schema.mjs.map +1 -0
  93. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +110 -0
  94. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  95. package/es/utils/amount-formatter.mjs +139 -0
  96. package/es/utils/amount-formatter.mjs.map +1 -0
  97. package/es/utils/async-init.mjs +64 -0
  98. package/es/utils/async-init.mjs.map +1 -0
  99. package/es/utils/bignumber.mjs +21 -0
  100. package/es/utils/bignumber.mjs.map +1 -0
  101. package/es/utils/{bytes.js → bytes.mjs} +16 -12
  102. package/es/utils/bytes.mjs.map +1 -0
  103. package/es/utils/{crypto-ts.js → crypto-ts.mjs} +11 -3
  104. package/es/utils/crypto-ts.mjs.map +1 -0
  105. package/es/utils/crypto.mjs +239 -0
  106. package/es/utils/crypto.mjs.map +1 -0
  107. package/es/utils/errors.mjs +689 -0
  108. package/es/utils/errors.mjs.map +1 -0
  109. package/es/utils/hd-wallet.mjs +111 -0
  110. package/es/utils/hd-wallet.mjs.map +1 -0
  111. package/es/utils/json-big.mjs +45 -0
  112. package/es/utils/json-big.mjs.map +1 -0
  113. package/es/utils/keystore.mjs +240 -0
  114. package/es/utils/keystore.mjs.map +1 -0
  115. package/es/utils/mptree.mjs +161 -0
  116. package/es/utils/mptree.mjs.map +1 -0
  117. package/es/utils/other.mjs +43 -0
  118. package/es/utils/other.mjs.map +1 -0
  119. package/es/utils/semver-satisfies.mjs +16 -0
  120. package/es/utils/semver-satisfies.mjs.map +1 -0
  121. package/es/utils/{string.js → string.mjs} +5 -14
  122. package/es/utils/string.mjs.map +1 -0
  123. package/es/utils/swagger.mjs +164 -0
  124. package/es/utils/swagger.mjs.map +1 -0
  125. package/package.json +55 -62
  126. package/src/account/base.js +3 -1
  127. package/src/account/memory.js +13 -8
  128. package/src/account/multiple.js +31 -22
  129. package/src/ae/aens.js +75 -77
  130. package/src/ae/aepp.js +2 -2
  131. package/src/ae/contract.js +27 -291
  132. package/src/ae/index.js +9 -7
  133. package/src/ae/oracle.js +51 -28
  134. package/src/ae/universal.js +4 -2
  135. package/src/ae/wallet.js +2 -2
  136. package/src/chain/index.js +29 -6
  137. package/src/chain/node.js +95 -67
  138. package/src/channel/handlers.js +30 -21
  139. package/src/channel/index.js +44 -20
  140. package/src/channel/internal.js +30 -24
  141. package/src/contract/aci.js +376 -0
  142. package/src/contract/compiler.js +41 -91
  143. package/src/contract/ga/helpers.js +10 -13
  144. package/src/contract/ga/index.js +42 -33
  145. package/src/index.js +9 -10
  146. package/src/node-pool/index.js +29 -17
  147. package/src/node.js +33 -36
  148. package/src/tx/builder/field-types.js +61 -0
  149. package/src/tx/builder/helpers.js +126 -84
  150. package/src/tx/builder/index.js +83 -41
  151. package/src/tx/builder/schema.js +50 -40
  152. package/src/tx/index.js +101 -12
  153. package/src/tx/tx-object.js +35 -15
  154. package/src/tx/tx.js +232 -153
  155. package/src/tx/validator.js +34 -12
  156. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +11 -5
  157. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +35 -13
  158. package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
  159. package/src/utils/aepp-wallet-communication/content-script-bridge.js +14 -7
  160. package/src/utils/aepp-wallet-communication/helpers.js +6 -14
  161. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +107 -60
  162. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +24 -11
  163. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +98 -56
  164. package/src/utils/aepp-wallet-communication/schema.ts +80 -0
  165. package/src/utils/aepp-wallet-communication/wallet-detector.js +6 -2
  166. package/src/utils/amount-formatter.ts +4 -3
  167. package/src/utils/async-init.js +10 -6
  168. package/src/utils/bignumber.ts +3 -10
  169. package/src/utils/bytes.ts +3 -2
  170. package/src/utils/crypto-ts.ts +2 -2
  171. package/src/utils/crypto.js +10 -144
  172. package/src/utils/errors.ts +683 -0
  173. package/src/utils/hd-wallet.js +11 -26
  174. package/src/utils/keystore.js +57 -53
  175. package/src/utils/mptree.ts +12 -6
  176. package/src/utils/other.ts +1 -1
  177. package/src/utils/semver-satisfies.ts +1 -1
  178. package/src/utils/swagger.js +75 -45
  179. package/es/account/base.js +0 -259
  180. package/es/account/base.js.map +0 -1
  181. package/es/account/memory.js +0 -86
  182. package/es/account/memory.js.map +0 -1
  183. package/es/account/multiple.js +0 -267
  184. package/es/account/multiple.js.map +0 -1
  185. package/es/ae/aens.js +0 -829
  186. package/es/ae/aens.js.map +0 -1
  187. package/es/ae/aepp.js.map +0 -1
  188. package/es/ae/contract.js +0 -985
  189. package/es/ae/contract.js.map +0 -1
  190. package/es/ae/index.js +0 -442
  191. package/es/ae/index.js.map +0 -1
  192. package/es/ae/oracle.js +0 -690
  193. package/es/ae/oracle.js.map +0 -1
  194. package/es/ae/universal.js.map +0 -1
  195. package/es/ae/wallet.js.map +0 -1
  196. package/es/chain/index.js.map +0 -1
  197. package/es/chain/node.js +0 -1119
  198. package/es/chain/node.js.map +0 -1
  199. package/es/channel/handlers.js +0 -1601
  200. package/es/channel/handlers.js.map +0 -1
  201. package/es/channel/index.js.map +0 -1
  202. package/es/channel/internal.js +0 -438
  203. package/es/channel/internal.js.map +0 -1
  204. package/es/contract/aci/helpers.js +0 -298
  205. package/es/contract/aci/helpers.js.map +0 -1
  206. package/es/contract/aci/index.js +0 -517
  207. package/es/contract/aci/index.js.map +0 -1
  208. package/es/contract/aci/transformation.js +0 -742
  209. package/es/contract/aci/transformation.js.map +0 -1
  210. package/es/contract/compiler.js +0 -316
  211. package/es/contract/compiler.js.map +0 -1
  212. package/es/contract/ga/helpers.js +0 -120
  213. package/es/contract/ga/helpers.js.map +0 -1
  214. package/es/contract/ga/index.js +0 -307
  215. package/es/contract/ga/index.js.map +0 -1
  216. package/es/contract/index.js +0 -158
  217. package/es/contract/index.js.map +0 -1
  218. package/es/index.js +0 -57
  219. package/es/index.js.map +0 -1
  220. package/es/node-pool/index.js +0 -204
  221. package/es/node-pool/index.js.map +0 -1
  222. package/es/node.js +0 -228
  223. package/es/node.js.map +0 -1
  224. package/es/tx/builder/helpers.js +0 -355
  225. package/es/tx/builder/helpers.js.map +0 -1
  226. package/es/tx/builder/index.js +0 -686
  227. package/es/tx/builder/index.js.map +0 -1
  228. package/es/tx/builder/schema.js +0 -695
  229. package/es/tx/builder/schema.js.map +0 -1
  230. package/es/tx/index.js.map +0 -1
  231. package/es/tx/tx-object.js +0 -297
  232. package/es/tx/tx-object.js.map +0 -1
  233. package/es/tx/tx.js +0 -1757
  234. package/es/tx/tx.js.map +0 -1
  235. package/es/tx/validator.js +0 -344
  236. package/es/tx/validator.js.map +0 -1
  237. package/es/typings/blakejs/index.d.js +0 -2
  238. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
  239. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -211
  240. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
  241. package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
  242. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
  243. package/es/utils/aepp-wallet-communication/helpers.js +0 -148
  244. package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
  245. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -652
  246. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
  247. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -285
  248. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
  249. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -763
  250. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
  251. package/es/utils/aepp-wallet-communication/schema.js +0 -103
  252. package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
  253. package/es/utils/aepp-wallet-communication/wallet-detector.js +0 -135
  254. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
  255. package/es/utils/amount-formatter.js +0 -152
  256. package/es/utils/amount-formatter.js.map +0 -1
  257. package/es/utils/async-init.js +0 -103
  258. package/es/utils/async-init.js.map +0 -1
  259. package/es/utils/bignumber.js +0 -36
  260. package/es/utils/bignumber.js.map +0 -1
  261. package/es/utils/bytes.js.map +0 -1
  262. package/es/utils/crypto-ts.js.map +0 -1
  263. package/es/utils/crypto.js +0 -358
  264. package/es/utils/crypto.js.map +0 -1
  265. package/es/utils/hd-wallet.js +0 -148
  266. package/es/utils/hd-wallet.js.map +0 -1
  267. package/es/utils/json-big.js +0 -78
  268. package/es/utils/json-big.js.map +0 -1
  269. package/es/utils/keystore.js +0 -393
  270. package/es/utils/keystore.js.map +0 -1
  271. package/es/utils/mptree.js +0 -198
  272. package/es/utils/mptree.js.map +0 -1
  273. package/es/utils/other.js +0 -93
  274. package/es/utils/other.js.map +0 -1
  275. package/es/utils/semver-satisfies.js +0 -35
  276. package/es/utils/semver-satisfies.js.map +0 -1
  277. package/es/utils/string.js.map +0 -1
  278. package/es/utils/swagger.js +0 -269
  279. package/es/utils/swagger.js.map +0 -1
  280. package/src/contract/aci/helpers.js +0 -140
  281. package/src/contract/aci/index.js +0 -191
  282. package/src/contract/aci/transformation.js +0 -464
  283. package/src/contract/index.js +0 -159
  284. package/src/utils/aepp-wallet-communication/schema.js +0 -110
@@ -1,438 +0,0 @@
1
- import _toArray from "@babel/runtime-corejs3/helpers/toArray";
2
- import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/objectWithoutProperties";
3
- import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
4
- import _asyncToGenerator from "@babel/runtime-corejs3/helpers/asyncToGenerator";
5
- import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
6
- var _excluded = ["url"];
7
- import _regeneratorRuntime from "@babel/runtime-corejs3/regenerator";
8
- import _WeakMap from "@babel/runtime-corejs3/core-js-stable/weak-map";
9
- import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
10
- import _setTimeout from "@babel/runtime-corejs3/core-js-stable/set-timeout";
11
- import _Promise from "@babel/runtime-corejs3/core-js-stable/promise";
12
- import _findIndexInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find-index";
13
- import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
14
- import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
15
- import _Map from "@babel/runtime-corejs3/core-js-stable/map";
16
- import _URL from "@babel/runtime-corejs3/core-js-stable/url";
17
- import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
18
- import _Object$entries from "@babel/runtime-corejs3/core-js-stable/object/entries";
19
- import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
20
- import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign";
21
-
22
- /*
23
- * ISC License (ISC)
24
- * Copyright (c) 2018 aeternity developers
25
- *
26
- * Permission to use, copy, modify, and/or distribute this software for any
27
- * purpose with or without fee is hereby granted, provided that the above
28
- * copyright notice and this permission notice appear in all copies.
29
- *
30
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
31
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
32
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
33
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
34
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
35
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
36
- * PERFORMANCE OF THIS SOFTWARE.
37
- */
38
- import { w3cwebsocket as W3CWebSocket } from 'websocket';
39
- import { EventEmitter } from 'events';
40
- import JsonBig from '../utils/json-big';
41
- import { pascalToSnake } from '../utils/string';
42
- import { awaitingConnection, awaitingReconnection, channelOpen } from './handlers'; // Send ping message every 10 seconds
43
-
44
- var PING_TIMEOUT_MS = 10000; // Close connection if pong message is not received within 5 seconds
45
-
46
- var PONG_TIMEOUT_MS = 5000;
47
- export var options = new _WeakMap();
48
- export var status = new _WeakMap();
49
- export var state = new _WeakMap();
50
- var fsm = new _WeakMap();
51
- var websockets = new _WeakMap();
52
- export var eventEmitters = new _WeakMap();
53
- var messageQueue = new _WeakMap();
54
- var messageQueueLocked = new _WeakMap();
55
- var actionQueue = new _WeakMap();
56
- var actionQueueLocked = new _WeakMap();
57
- var sequence = new _WeakMap();
58
- export var channelId = new _WeakMap();
59
- var rpcCallbacks = new _WeakMap();
60
- var pingTimeoutId = new _WeakMap();
61
- var pongTimeoutId = new _WeakMap();
62
- export var fsmId = new _WeakMap();
63
- export function emit(channel) {
64
- var _eventEmitters$get;
65
-
66
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
67
- args[_key - 1] = arguments[_key];
68
- }
69
-
70
- (_eventEmitters$get = eventEmitters.get(channel)).emit.apply(_eventEmitters$get, args);
71
- }
72
-
73
- function enterState(channel, nextState) {
74
- if (!nextState) {
75
- throw new Error('State Channels FSM entered unknown state');
76
- }
77
-
78
- fsm.set(channel, nextState);
79
-
80
- if (nextState.handler.enter) {
81
- nextState.handler.enter(channel);
82
- }
83
-
84
- dequeueAction(channel);
85
- }
86
-
87
- export function changeStatus(channel, newStatus) {
88
- var prevStatus = status.get(channel);
89
-
90
- if (newStatus !== prevStatus) {
91
- status.set(channel, newStatus);
92
- emit(channel, 'statusChanged', newStatus);
93
- }
94
- }
95
- export function changeState(channel, newState) {
96
- state.set(channel, newState);
97
- emit(channel, 'stateChanged', newState);
98
- }
99
- export function send(channel, message) {
100
- var _options$get = options.get(channel),
101
- _options$get$debug = _options$get.debug,
102
- debug = _options$get$debug === void 0 ? false : _options$get$debug;
103
-
104
- if (debug) console.log('Send message: ', message);
105
- websockets.get(channel).send(JsonBig.stringify(message));
106
- }
107
- export function enqueueAction(channel, guard, action) {
108
- var _context;
109
-
110
- actionQueue.set(channel, _concatInstanceProperty(_context = []).call(_context, _toConsumableArray(actionQueue.get(channel) || []), [{
111
- guard: guard,
112
- action: action
113
- }]));
114
- dequeueAction(channel);
115
- }
116
-
117
- function dequeueAction(_x) {
118
- return _dequeueAction.apply(this, arguments);
119
- }
120
-
121
- function _dequeueAction() {
122
- _dequeueAction = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(channel) {
123
- var locked, queue, state, index, nextState;
124
- return _regeneratorRuntime.wrap(function _callee$(_context4) {
125
- while (1) {
126
- switch (_context4.prev = _context4.next) {
127
- case 0:
128
- locked = actionQueueLocked.get(channel);
129
- queue = actionQueue.get(channel) || [];
130
-
131
- if (!(locked || !queue.length)) {
132
- _context4.next = 4;
133
- break;
134
- }
135
-
136
- return _context4.abrupt("return");
137
-
138
- case 4:
139
- state = fsm.get(channel);
140
- index = _findIndexInstanceProperty(queue).call(queue, function (item) {
141
- return item.guard(channel, state);
142
- });
143
-
144
- if (!(index === -1)) {
145
- _context4.next = 8;
146
- break;
147
- }
148
-
149
- return _context4.abrupt("return");
150
-
151
- case 8:
152
- actionQueue.set(channel, _filterInstanceProperty(queue).call(queue, function (_, i) {
153
- return index !== i;
154
- }));
155
- actionQueueLocked.set(channel, true);
156
- _context4.next = 12;
157
- return _Promise.resolve(queue[index].action(channel, state));
158
-
159
- case 12:
160
- nextState = _context4.sent;
161
- actionQueueLocked.set(channel, false);
162
- enterState(channel, nextState);
163
-
164
- case 15:
165
- case "end":
166
- return _context4.stop();
167
- }
168
- }
169
- }, _callee);
170
- }));
171
- return _dequeueAction.apply(this, arguments);
172
- }
173
-
174
- function handleMessage(_x2, _x3) {
175
- return _handleMessage.apply(this, arguments);
176
- }
177
-
178
- function _handleMessage() {
179
- _handleMessage = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(channel, message) {
180
- var _fsm$get, handler, state;
181
-
182
- return _regeneratorRuntime.wrap(function _callee2$(_context5) {
183
- while (1) {
184
- switch (_context5.prev = _context5.next) {
185
- case 0:
186
- _fsm$get = fsm.get(channel), handler = _fsm$get.handler, state = _fsm$get.state;
187
- _context5.t0 = enterState;
188
- _context5.t1 = channel;
189
- _context5.next = 5;
190
- return _Promise.resolve(handler(channel, message, state));
191
-
192
- case 5:
193
- _context5.t2 = _context5.sent;
194
- (0, _context5.t0)(_context5.t1, _context5.t2);
195
-
196
- case 7:
197
- case "end":
198
- return _context5.stop();
199
- }
200
- }
201
- }, _callee2);
202
- }));
203
- return _handleMessage.apply(this, arguments);
204
- }
205
-
206
- function dequeueMessage(_x4) {
207
- return _dequeueMessage.apply(this, arguments);
208
- }
209
-
210
- function _dequeueMessage() {
211
- _dequeueMessage = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(channel) {
212
- var queue, _queue, message, remaining;
213
-
214
- return _regeneratorRuntime.wrap(function _callee3$(_context6) {
215
- while (1) {
216
- switch (_context6.prev = _context6.next) {
217
- case 0:
218
- queue = messageQueue.get(channel);
219
-
220
- if (!(messageQueueLocked.get(channel) || !queue.length)) {
221
- _context6.next = 3;
222
- break;
223
- }
224
-
225
- return _context6.abrupt("return");
226
-
227
- case 3:
228
- _queue = _toArray(queue), message = _queue[0], remaining = _sliceInstanceProperty(_queue).call(_queue, 1);
229
- messageQueue.set(channel, remaining || []);
230
- messageQueueLocked.set(channel, true);
231
- _context6.next = 8;
232
- return handleMessage(channel, message);
233
-
234
- case 8:
235
- messageQueueLocked.set(channel, false);
236
- dequeueMessage(channel);
237
-
238
- case 10:
239
- case "end":
240
- return _context6.stop();
241
- }
242
- }
243
- }, _callee3);
244
- }));
245
- return _dequeueMessage.apply(this, arguments);
246
- }
247
-
248
- function ping(channel) {
249
- clearTimeout(pingTimeoutId.get(channel));
250
- clearTimeout(pongTimeoutId.get(channel));
251
- pingTimeoutId.set(channel, _setTimeout(function () {
252
- send(channel, {
253
- jsonrpc: '2.0',
254
- method: 'channels.system',
255
- params: {
256
- action: 'ping'
257
- }
258
- });
259
- pongTimeoutId.set(channel, _setTimeout(function () {
260
- disconnect(channel);
261
- emit(channel, 'error', new Error('Server pong timed out'));
262
- }, PONG_TIMEOUT_MS));
263
- }, PING_TIMEOUT_MS));
264
- }
265
-
266
- function onMessage(channel, data) {
267
- var message = JsonBig.parse(data);
268
-
269
- var _options$get2 = options.get(channel),
270
- _options$get2$debug = _options$get2.debug,
271
- debug = _options$get2$debug === void 0 ? false : _options$get2$debug;
272
-
273
- if (debug) console.log('Receive message: ', message);
274
-
275
- if (message.id) {
276
- var callback = rpcCallbacks.get(channel).get(message.id);
277
-
278
- try {
279
- callback(message);
280
- } finally {
281
- rpcCallbacks.get(channel)["delete"](message.id);
282
- }
283
- } else if (message.method === 'channels.message') {
284
- emit(channel, 'message', message.params.data.message);
285
- } else if (message.method === 'channels.system.pong') {
286
- if (message.params.channel_id === channelId.get(channel) || // Skip channelId check if channelId is not known yet
287
- channelId.get(channel) == null) {
288
- ping(channel);
289
- }
290
- } else {
291
- var _context2;
292
-
293
- messageQueue.set(channel, _concatInstanceProperty(_context2 = []).call(_context2, _toConsumableArray(messageQueue.get(channel) || []), [message]));
294
- dequeueMessage(channel);
295
- }
296
- }
297
-
298
- function wrapCallErrorMessage(message) {
299
- var _ref = message.error.data || [],
300
- _ref2 = _slicedToArray(_ref, 1),
301
- _ref2$ = _ref2[0];
302
-
303
- _ref2$ = _ref2$ === void 0 ? {} : _ref2$;
304
- var details = _ref2$.message;
305
-
306
- if (details) {
307
- var _context3;
308
-
309
- return new Error(_concatInstanceProperty(_context3 = "".concat(message.error.message, ": ")).call(_context3, details));
310
- }
311
-
312
- return new Error(message.error.message);
313
- }
314
-
315
- export function call(channel, method, params) {
316
- return new _Promise(function (resolve, reject) {
317
- var id = sequence.set(channel, sequence.get(channel) + 1).get(channel);
318
- rpcCallbacks.get(channel).set(id, function (message) {
319
- if (message.result) return resolve(message.result);
320
- if (message.error) return reject(wrapCallErrorMessage(message));
321
- });
322
- send(channel, {
323
- jsonrpc: '2.0',
324
- method: method,
325
- id: id,
326
- params: params
327
- });
328
- });
329
- }
330
- export function disconnect(channel) {
331
- websockets.get(channel).close();
332
- clearTimeout(pingTimeoutId.get(channel));
333
- clearTimeout(pongTimeoutId.get(channel));
334
- }
335
- export function initialize(_x5, _x6) {
336
- return _initialize.apply(this, arguments);
337
- }
338
-
339
- function _initialize() {
340
- _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(channel, _ref3) {
341
- var _context7, _context8;
342
-
343
- var url, channelOptions, wsUrl, ws;
344
- return _regeneratorRuntime.wrap(function _callee5$(_context11) {
345
- while (1) {
346
- switch (_context11.prev = _context11.next) {
347
- case 0:
348
- url = _ref3.url, channelOptions = _objectWithoutProperties(_ref3, _excluded);
349
- options.set(channel, channelOptions);
350
- fsm.set(channel, {
351
- handler: channelOptions.existingFsmId ? awaitingReconnection : awaitingConnection
352
- });
353
- eventEmitters.set(channel, new EventEmitter());
354
- sequence.set(channel, 0);
355
- rpcCallbacks.set(channel, new _Map());
356
- wsUrl = new _URL(url);
357
-
358
- _forEachInstanceProperty(_context7 = _filterInstanceProperty(_context8 = _Object$entries(channelOptions)).call(_context8, function (_ref4) {
359
- var _context9;
360
-
361
- var _ref5 = _slicedToArray(_ref4, 1),
362
- key = _ref5[0];
363
-
364
- return !_includesInstanceProperty(_context9 = ['sign', 'debug']).call(_context9, key);
365
- })).call(_context7, function (_ref6) {
366
- var _ref7 = _slicedToArray(_ref6, 2),
367
- key = _ref7[0],
368
- value = _ref7[1];
369
-
370
- return wsUrl.searchParams.set(pascalToSnake(key), value);
371
- });
372
-
373
- wsUrl.searchParams.set('protocol', 'json-rpc');
374
- changeStatus(channel, 'connecting');
375
- ws = new W3CWebSocket(wsUrl.toString());
376
- _context11.next = 13;
377
- return new _Promise(function (resolve, reject) {
378
- return _Object$assign(ws, {
379
- onerror: reject,
380
- onopen: function onopen() {
381
- resolve();
382
- changeStatus(channel, 'connected');
383
-
384
- if (channelOptions.reconnectTx) {
385
- enterState(channel, {
386
- handler: channelOpen
387
- });
388
-
389
- _setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
390
- return _regeneratorRuntime.wrap(function _callee4$(_context10) {
391
- while (1) {
392
- switch (_context10.prev = _context10.next) {
393
- case 0:
394
- _context10.t0 = changeState;
395
- _context10.t1 = channel;
396
- _context10.next = 4;
397
- return call(channel, 'channels.get.offchain_state', {});
398
-
399
- case 4:
400
- _context10.t2 = _context10.sent.signed_tx;
401
- return _context10.abrupt("return", (0, _context10.t0)(_context10.t1, _context10.t2));
402
-
403
- case 6:
404
- case "end":
405
- return _context10.stop();
406
- }
407
- }
408
- }, _callee4);
409
- })));
410
- }
411
-
412
- ping(channel);
413
- },
414
- onclose: function onclose() {
415
- changeStatus(channel, 'disconnected');
416
- clearTimeout(pingTimeoutId.get(channel));
417
- clearTimeout(pongTimeoutId.get(channel));
418
- },
419
- onmessage: function onmessage(_ref9) {
420
- var data = _ref9.data;
421
- return onMessage(channel, data);
422
- }
423
- });
424
- });
425
-
426
- case 13:
427
- websockets.set(channel, ws);
428
-
429
- case 14:
430
- case "end":
431
- return _context11.stop();
432
- }
433
- }
434
- }, _callee5);
435
- }));
436
- return _initialize.apply(this, arguments);
437
- }
438
- //# sourceMappingURL=internal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/channel/internal.js"],"names":["w3cwebsocket","W3CWebSocket","EventEmitter","JsonBig","pascalToSnake","awaitingConnection","awaitingReconnection","channelOpen","PING_TIMEOUT_MS","PONG_TIMEOUT_MS","options","status","state","fsm","websockets","eventEmitters","messageQueue","messageQueueLocked","actionQueue","actionQueueLocked","sequence","channelId","rpcCallbacks","pingTimeoutId","pongTimeoutId","fsmId","emit","channel","args","get","enterState","nextState","Error","set","handler","enter","dequeueAction","changeStatus","newStatus","prevStatus","changeState","newState","send","message","debug","console","log","stringify","enqueueAction","guard","action","locked","queue","length","index","item","_","i","resolve","handleMessage","dequeueMessage","remaining","ping","clearTimeout","jsonrpc","method","params","disconnect","onMessage","data","parse","id","callback","channel_id","wrapCallErrorMessage","error","details","call","reject","result","close","initialize","url","channelOptions","existingFsmId","wsUrl","key","value","searchParams","ws","toString","onerror","onopen","reconnectTx","signed_tx","onclose","onmessage"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { w3cwebsocket as W3CWebSocket } from 'websocket'\nimport { EventEmitter } from 'events'\nimport JsonBig from '../utils/json-big'\nimport { pascalToSnake } from '../utils/string'\nimport { awaitingConnection, awaitingReconnection, channelOpen } from './handlers'\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 Error('State Channels FSM entered unknown state')\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 const queue = messageQueue.get(channel)\n if (messageQueueLocked.get(channel) || !queue.length) {\n return\n }\n const [message, ...remaining] = queue\n messageQueue.set(channel, remaining || [])\n messageQueueLocked.set(channel, true)\n await handleMessage(channel, message)\n messageQueueLocked.set(channel, false)\n dequeueMessage(channel)\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 Error('Server pong timed out'))\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 } else if (message.method === 'channels.message') {\n emit(channel, 'message', message.params.data.message)\n } else 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 } else {\n messageQueue.set(channel, [...(messageQueue.get(channel) || []), message])\n dequeueMessage(channel)\n }\n}\n\nfunction wrapCallErrorMessage (message) {\n const [{ message: details } = {}] = message.error.data || []\n if (details) {\n return new Error(`${message.error.message}: ${details}`)\n }\n return new Error(message.error.message)\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) return reject(wrapCallErrorMessage(message))\n })\n send(channel, { jsonrpc: '2.0', method, id, params })\n })\n}\n\nexport function disconnect (channel) {\n websockets.get(channel).close()\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n}\n\nexport async function initialize (channel, { url, ...channelOptions }) {\n options.set(channel, channelOptions)\n fsm.set(channel, {\n handler: channelOptions.existingFsmId ? awaitingReconnection : awaitingConnection\n })\n eventEmitters.set(channel, new EventEmitter())\n sequence.set(channel, 0)\n rpcCallbacks.set(channel, new Map())\n\n const wsUrl = new URL(url)\n Object.entries(channelOptions)\n .filter(([key]) => !['sign', 'debug'].includes(key))\n .forEach(([key, value]) => wsUrl.searchParams.set(pascalToSnake(key), value))\n wsUrl.searchParams.set('protocol', 'json-rpc')\n changeStatus(channel, 'connecting')\n const ws = new W3CWebSocket(wsUrl.toString())\n await new Promise((resolve, reject) => Object.assign(ws, {\n onerror: reject,\n onopen: () => {\n resolve()\n changeStatus(channel, 'connected')\n if (channelOptions.reconnectTx) {\n enterState(channel, { handler: channelOpen })\n setTimeout(async () => changeState(channel,\n (await call(channel, 'channels.get.offchain_state', {})).signed_tx\n ))\n }\n ping(channel)\n },\n onclose: () => {\n changeStatus(channel, 'disconnected')\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n },\n onmessage: ({ data }) => onMessage(channel, data)\n }))\n websockets.set(channel, ws)\n}\n"],"file":"internal.js"}