@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.
- package/README.md +15 -14
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +7 -36
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +1 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/account/base.mjs +179 -0
- package/es/account/base.mjs.map +1 -0
- package/es/account/memory.mjs +99 -0
- package/es/account/memory.mjs.map +1 -0
- package/es/account/multiple.mjs +179 -0
- package/es/account/multiple.mjs.map +1 -0
- package/es/ae/aens.mjs +404 -0
- package/es/ae/aens.mjs.map +1 -0
- package/es/ae/{aepp.js → aepp.mjs} +9 -9
- package/es/ae/aepp.mjs.map +1 -0
- package/es/ae/contract.mjs +159 -0
- package/es/ae/contract.mjs.map +1 -0
- package/es/ae/index.mjs +207 -0
- package/es/ae/index.mjs.map +1 -0
- package/es/ae/oracle.mjs +339 -0
- package/es/ae/oracle.mjs.map +1 -0
- package/es/ae/{universal.js → universal.mjs} +10 -10
- package/es/ae/universal.mjs.map +1 -0
- package/es/ae/{wallet.js → wallet.mjs} +10 -10
- package/es/ae/wallet.mjs.map +1 -0
- package/es/aepp-wallet-communication/schema.d.ts +74 -0
- package/es/bignumber.d.ts +1 -7
- package/es/chain/{index.js → index.mjs} +29 -9
- package/es/chain/index.mjs.map +1 -0
- package/es/chain/node.mjs +442 -0
- package/es/chain/node.mjs.map +1 -0
- package/es/channel/handlers.mjs +1110 -0
- package/es/channel/handlers.mjs.map +1 -0
- package/es/channel/{index.js → index.mjs} +245 -472
- package/es/channel/index.mjs.map +1 -0
- package/es/channel/internal.mjs +283 -0
- package/es/channel/internal.mjs.map +1 -0
- package/es/contract/aci.mjs +477 -0
- package/es/contract/aci.mjs.map +1 -0
- package/es/contract/compiler.mjs +115 -0
- package/es/contract/compiler.mjs.map +1 -0
- package/es/contract/ga/helpers.mjs +30 -0
- package/es/contract/ga/helpers.mjs.map +1 -0
- package/es/contract/ga/index.mjs +178 -0
- package/es/contract/ga/index.mjs.map +1 -0
- package/es/errors.d.ts +284 -0
- package/es/index.mjs +57 -0
- package/es/index.mjs.map +1 -0
- package/es/node-pool/index.mjs +188 -0
- package/es/node-pool/index.mjs.map +1 -0
- package/es/node.mjs +133 -0
- package/es/node.mjs.map +1 -0
- package/es/other.d.ts +1 -1
- package/es/tx/builder/field-types.mjs +74 -0
- package/es/tx/builder/field-types.mjs.map +1 -0
- package/es/tx/builder/helpers.mjs +363 -0
- package/es/tx/builder/helpers.mjs.map +1 -0
- package/es/tx/builder/index.mjs +606 -0
- package/es/tx/builder/index.mjs.map +1 -0
- package/es/tx/builder/schema.mjs +760 -0
- package/es/tx/builder/schema.mjs.map +1 -0
- package/es/tx/{index.js → index.mjs} +107 -15
- package/es/tx/index.mjs.map +1 -0
- package/es/tx/tx-object.mjs +283 -0
- package/es/tx/tx-object.mjs.map +1 -0
- package/es/tx/tx.mjs +938 -0
- package/es/tx/tx.mjs.map +1 -0
- package/es/tx/validator.mjs +247 -0
- package/es/tx/validator.mjs.map +1 -0
- package/es/typings/blakejs/index.d.mjs +2 -0
- package/es/typings/blakejs/{index.d.js.map → index.d.mjs.map} +1 -1
- package/es/utils/aepp-wallet-communication/connection/{browser-runtime.js → browser-runtime.mjs} +27 -29
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +183 -0
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/connection/{index.js → index.mjs} +7 -3
- package/es/utils/aepp-wallet-communication/connection/index.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/{content-script-bridge.js → content-script-bridge.mjs} +29 -23
- package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/helpers.mjs +92 -0
- package/es/utils/aepp-wallet-communication/helpers.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +375 -0
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +275 -0
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +541 -0
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/schema.mjs +102 -0
- package/es/utils/aepp-wallet-communication/schema.mjs.map +1 -0
- package/es/utils/aepp-wallet-communication/wallet-detector.mjs +110 -0
- package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
- package/es/utils/amount-formatter.mjs +139 -0
- package/es/utils/amount-formatter.mjs.map +1 -0
- package/es/utils/async-init.mjs +64 -0
- package/es/utils/async-init.mjs.map +1 -0
- package/es/utils/bignumber.mjs +21 -0
- package/es/utils/bignumber.mjs.map +1 -0
- package/es/utils/{bytes.js → bytes.mjs} +16 -12
- package/es/utils/bytes.mjs.map +1 -0
- package/es/utils/{crypto-ts.js → crypto-ts.mjs} +11 -3
- package/es/utils/crypto-ts.mjs.map +1 -0
- package/es/utils/crypto.mjs +239 -0
- package/es/utils/crypto.mjs.map +1 -0
- package/es/utils/errors.mjs +689 -0
- package/es/utils/errors.mjs.map +1 -0
- package/es/utils/hd-wallet.mjs +111 -0
- package/es/utils/hd-wallet.mjs.map +1 -0
- package/es/utils/json-big.mjs +45 -0
- package/es/utils/json-big.mjs.map +1 -0
- package/es/utils/keystore.mjs +240 -0
- package/es/utils/keystore.mjs.map +1 -0
- package/es/utils/mptree.mjs +161 -0
- package/es/utils/mptree.mjs.map +1 -0
- package/es/utils/other.mjs +43 -0
- package/es/utils/other.mjs.map +1 -0
- package/es/utils/semver-satisfies.mjs +16 -0
- package/es/utils/semver-satisfies.mjs.map +1 -0
- package/es/utils/{string.js → string.mjs} +5 -14
- package/es/utils/string.mjs.map +1 -0
- package/es/utils/swagger.mjs +164 -0
- package/es/utils/swagger.mjs.map +1 -0
- package/package.json +55 -62
- package/src/account/base.js +3 -1
- package/src/account/memory.js +13 -8
- package/src/account/multiple.js +31 -22
- package/src/ae/aens.js +75 -77
- package/src/ae/aepp.js +2 -2
- package/src/ae/contract.js +27 -291
- package/src/ae/index.js +9 -7
- package/src/ae/oracle.js +51 -28
- package/src/ae/universal.js +4 -2
- package/src/ae/wallet.js +2 -2
- package/src/chain/index.js +29 -6
- package/src/chain/node.js +95 -67
- package/src/channel/handlers.js +30 -21
- package/src/channel/index.js +44 -20
- package/src/channel/internal.js +30 -24
- package/src/contract/aci.js +376 -0
- package/src/contract/compiler.js +41 -91
- package/src/contract/ga/helpers.js +10 -13
- package/src/contract/ga/index.js +42 -33
- package/src/index.js +9 -10
- package/src/node-pool/index.js +29 -17
- package/src/node.js +33 -36
- package/src/tx/builder/field-types.js +61 -0
- package/src/tx/builder/helpers.js +126 -84
- package/src/tx/builder/index.js +83 -41
- package/src/tx/builder/schema.js +50 -40
- package/src/tx/index.js +101 -12
- package/src/tx/tx-object.js +35 -15
- package/src/tx/tx.js +232 -153
- package/src/tx/validator.js +34 -12
- package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +11 -5
- package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +35 -13
- package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
- package/src/utils/aepp-wallet-communication/content-script-bridge.js +14 -7
- package/src/utils/aepp-wallet-communication/helpers.js +6 -14
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +107 -60
- package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +24 -11
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +98 -56
- package/src/utils/aepp-wallet-communication/schema.ts +80 -0
- package/src/utils/aepp-wallet-communication/wallet-detector.js +6 -2
- package/src/utils/amount-formatter.ts +4 -3
- package/src/utils/async-init.js +10 -6
- package/src/utils/bignumber.ts +3 -10
- package/src/utils/bytes.ts +3 -2
- package/src/utils/crypto-ts.ts +2 -2
- package/src/utils/crypto.js +10 -144
- package/src/utils/errors.ts +683 -0
- package/src/utils/hd-wallet.js +11 -26
- package/src/utils/keystore.js +57 -53
- package/src/utils/mptree.ts +12 -6
- package/src/utils/other.ts +1 -1
- package/src/utils/semver-satisfies.ts +1 -1
- package/src/utils/swagger.js +75 -45
- package/es/account/base.js +0 -259
- package/es/account/base.js.map +0 -1
- package/es/account/memory.js +0 -86
- package/es/account/memory.js.map +0 -1
- package/es/account/multiple.js +0 -267
- package/es/account/multiple.js.map +0 -1
- package/es/ae/aens.js +0 -829
- package/es/ae/aens.js.map +0 -1
- package/es/ae/aepp.js.map +0 -1
- package/es/ae/contract.js +0 -985
- package/es/ae/contract.js.map +0 -1
- package/es/ae/index.js +0 -442
- package/es/ae/index.js.map +0 -1
- package/es/ae/oracle.js +0 -690
- package/es/ae/oracle.js.map +0 -1
- package/es/ae/universal.js.map +0 -1
- package/es/ae/wallet.js.map +0 -1
- package/es/chain/index.js.map +0 -1
- package/es/chain/node.js +0 -1119
- package/es/chain/node.js.map +0 -1
- package/es/channel/handlers.js +0 -1601
- package/es/channel/handlers.js.map +0 -1
- package/es/channel/index.js.map +0 -1
- package/es/channel/internal.js +0 -438
- package/es/channel/internal.js.map +0 -1
- package/es/contract/aci/helpers.js +0 -298
- package/es/contract/aci/helpers.js.map +0 -1
- package/es/contract/aci/index.js +0 -517
- package/es/contract/aci/index.js.map +0 -1
- package/es/contract/aci/transformation.js +0 -742
- package/es/contract/aci/transformation.js.map +0 -1
- package/es/contract/compiler.js +0 -316
- package/es/contract/compiler.js.map +0 -1
- package/es/contract/ga/helpers.js +0 -120
- package/es/contract/ga/helpers.js.map +0 -1
- package/es/contract/ga/index.js +0 -307
- package/es/contract/ga/index.js.map +0 -1
- package/es/contract/index.js +0 -158
- package/es/contract/index.js.map +0 -1
- package/es/index.js +0 -57
- package/es/index.js.map +0 -1
- package/es/node-pool/index.js +0 -204
- package/es/node-pool/index.js.map +0 -1
- package/es/node.js +0 -228
- package/es/node.js.map +0 -1
- package/es/tx/builder/helpers.js +0 -355
- package/es/tx/builder/helpers.js.map +0 -1
- package/es/tx/builder/index.js +0 -686
- package/es/tx/builder/index.js.map +0 -1
- package/es/tx/builder/schema.js +0 -695
- package/es/tx/builder/schema.js.map +0 -1
- package/es/tx/index.js.map +0 -1
- package/es/tx/tx-object.js +0 -297
- package/es/tx/tx-object.js.map +0 -1
- package/es/tx/tx.js +0 -1757
- package/es/tx/tx.js.map +0 -1
- package/es/tx/validator.js +0 -344
- package/es/tx/validator.js.map +0 -1
- package/es/typings/blakejs/index.d.js +0 -2
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -211
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
- package/es/utils/aepp-wallet-communication/helpers.js +0 -148
- package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -652
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -285
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -763
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
- package/es/utils/aepp-wallet-communication/schema.js +0 -103
- package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.js +0 -135
- package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
- package/es/utils/amount-formatter.js +0 -152
- package/es/utils/amount-formatter.js.map +0 -1
- package/es/utils/async-init.js +0 -103
- package/es/utils/async-init.js.map +0 -1
- package/es/utils/bignumber.js +0 -36
- package/es/utils/bignumber.js.map +0 -1
- package/es/utils/bytes.js.map +0 -1
- package/es/utils/crypto-ts.js.map +0 -1
- package/es/utils/crypto.js +0 -358
- package/es/utils/crypto.js.map +0 -1
- package/es/utils/hd-wallet.js +0 -148
- package/es/utils/hd-wallet.js.map +0 -1
- package/es/utils/json-big.js +0 -78
- package/es/utils/json-big.js.map +0 -1
- package/es/utils/keystore.js +0 -393
- package/es/utils/keystore.js.map +0 -1
- package/es/utils/mptree.js +0 -198
- package/es/utils/mptree.js.map +0 -1
- package/es/utils/other.js +0 -93
- package/es/utils/other.js.map +0 -1
- package/es/utils/semver-satisfies.js +0 -35
- package/es/utils/semver-satisfies.js.map +0 -1
- package/es/utils/string.js.map +0 -1
- package/es/utils/swagger.js +0 -269
- package/es/utils/swagger.js.map +0 -1
- package/src/contract/aci/helpers.js +0 -140
- package/src/contract/aci/index.js +0 -191
- package/src/contract/aci/transformation.js +0 -464
- package/src/contract/index.js +0 -159
- package/src/utils/aepp-wallet-communication/schema.js +0 -110
package/es/channel/internal.js
DELETED
|
@@ -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"}
|