@atomiqlabs/chain-evm 1.0.0-dev.75 → 1.0.0-dev.77
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/LICENSE +201 -201
- package/dist/chains/botanix/BotanixChainType.d.ts +13 -13
- package/dist/chains/botanix/BotanixChainType.js +2 -2
- package/dist/chains/botanix/BotanixInitializer.d.ts +30 -30
- package/dist/chains/botanix/BotanixInitializer.js +122 -122
- package/dist/chains/citrea/CitreaBtcRelay.d.ts +21 -21
- package/dist/chains/citrea/CitreaBtcRelay.js +43 -43
- package/dist/chains/citrea/CitreaChainType.d.ts +13 -13
- package/dist/chains/citrea/CitreaChainType.js +2 -2
- package/dist/chains/citrea/CitreaFees.d.ts +29 -29
- package/dist/chains/citrea/CitreaFees.js +67 -67
- package/dist/chains/citrea/CitreaInitializer.d.ts +30 -30
- package/dist/chains/citrea/CitreaInitializer.js +129 -129
- package/dist/chains/citrea/CitreaSpvVaultContract.d.ts +15 -15
- package/dist/chains/citrea/CitreaSpvVaultContract.js +74 -74
- package/dist/chains/citrea/CitreaSwapContract.d.ts +22 -22
- package/dist/chains/citrea/CitreaSwapContract.js +96 -96
- package/dist/chains/citrea/CitreaTokens.d.ts +9 -9
- package/dist/chains/citrea/CitreaTokens.js +20 -20
- package/dist/evm/btcrelay/BtcRelayAbi.d.ts +198 -198
- package/dist/evm/btcrelay/BtcRelayAbi.js +261 -261
- package/dist/evm/btcrelay/BtcRelayTypechain.d.ts +172 -172
- package/dist/evm/btcrelay/BtcRelayTypechain.js +2 -2
- package/dist/evm/btcrelay/EVMBtcRelay.d.ts +197 -197
- package/dist/evm/btcrelay/EVMBtcRelay.js +435 -435
- package/dist/evm/btcrelay/headers/EVMBtcHeader.d.ts +33 -33
- package/dist/evm/btcrelay/headers/EVMBtcHeader.js +84 -84
- package/dist/evm/btcrelay/headers/EVMBtcStoredHeader.d.ts +56 -56
- package/dist/evm/btcrelay/headers/EVMBtcStoredHeader.js +123 -123
- package/dist/evm/chain/EVMChainInterface.d.ts +51 -51
- package/dist/evm/chain/EVMChainInterface.js +89 -89
- package/dist/evm/chain/EVMModule.d.ts +9 -9
- package/dist/evm/chain/EVMModule.js +13 -13
- package/dist/evm/chain/modules/ERC20Abi.d.ts +168 -168
- package/dist/evm/chain/modules/ERC20Abi.js +225 -225
- package/dist/evm/chain/modules/EVMAddresses.d.ts +10 -10
- package/dist/evm/chain/modules/EVMAddresses.js +30 -30
- package/dist/evm/chain/modules/EVMBlocks.d.ts +20 -20
- package/dist/evm/chain/modules/EVMBlocks.js +64 -64
- package/dist/evm/chain/modules/EVMEvents.d.ts +36 -36
- package/dist/evm/chain/modules/EVMEvents.js +122 -122
- package/dist/evm/chain/modules/EVMFees.d.ts +36 -36
- package/dist/evm/chain/modules/EVMFees.js +74 -74
- package/dist/evm/chain/modules/EVMSignatures.d.ts +29 -29
- package/dist/evm/chain/modules/EVMSignatures.js +68 -68
- package/dist/evm/chain/modules/EVMTokens.d.ts +70 -70
- package/dist/evm/chain/modules/EVMTokens.js +142 -142
- package/dist/evm/chain/modules/EVMTransactions.d.ts +94 -94
- package/dist/evm/chain/modules/EVMTransactions.js +286 -286
- package/dist/evm/contract/EVMContractBase.d.ts +22 -22
- package/dist/evm/contract/EVMContractBase.js +34 -34
- package/dist/evm/contract/EVMContractModule.d.ts +8 -8
- package/dist/evm/contract/EVMContractModule.js +11 -11
- package/dist/evm/contract/modules/EVMContractEvents.d.ts +42 -42
- package/dist/evm/contract/modules/EVMContractEvents.js +75 -75
- package/dist/evm/events/EVMChainEvents.d.ts +22 -22
- package/dist/evm/events/EVMChainEvents.js +69 -69
- package/dist/evm/events/EVMChainEventsBrowser.d.ts +102 -102
- package/dist/evm/events/EVMChainEventsBrowser.js +413 -404
- package/dist/evm/providers/JsonRpcProviderWithRetries.d.ts +15 -15
- package/dist/evm/providers/JsonRpcProviderWithRetries.js +19 -19
- package/dist/evm/providers/ReconnectingWebSocketProvider.d.ts +22 -22
- package/dist/evm/providers/ReconnectingWebSocketProvider.js +87 -87
- package/dist/evm/providers/SocketProvider.d.ts +111 -111
- package/dist/evm/providers/SocketProvider.js +334 -334
- package/dist/evm/providers/WebSocketProviderWithRetries.d.ts +17 -17
- package/dist/evm/providers/WebSocketProviderWithRetries.js +19 -19
- package/dist/evm/spv_swap/EVMSpvVaultContract.d.ts +79 -79
- package/dist/evm/spv_swap/EVMSpvVaultContract.js +482 -482
- package/dist/evm/spv_swap/EVMSpvVaultData.d.ts +39 -39
- package/dist/evm/spv_swap/EVMSpvVaultData.js +0 -180
- package/dist/evm/spv_swap/EVMSpvWithdrawalData.d.ts +19 -19
- package/dist/evm/spv_swap/EVMSpvWithdrawalData.js +55 -55
- package/dist/evm/spv_swap/SpvVaultContractAbi.d.ts +91 -91
- package/dist/evm/spv_swap/SpvVaultContractAbi.js +849 -849
- package/dist/evm/spv_swap/SpvVaultContractTypechain.d.ts +450 -450
- package/dist/evm/spv_swap/SpvVaultContractTypechain.js +2 -2
- package/dist/evm/swaps/EVMSwapContract.d.ts +193 -193
- package/dist/evm/swaps/EVMSwapContract.js +378 -378
- package/dist/evm/swaps/EVMSwapData.d.ts +66 -66
- package/dist/evm/swaps/EVMSwapData.js +260 -260
- package/dist/evm/swaps/EVMSwapModule.d.ts +9 -9
- package/dist/evm/swaps/EVMSwapModule.js +11 -11
- package/dist/evm/swaps/EscrowManagerAbi.d.ts +120 -120
- package/dist/evm/swaps/EscrowManagerAbi.js +985 -985
- package/dist/evm/swaps/EscrowManagerTypechain.d.ts +475 -475
- package/dist/evm/swaps/EscrowManagerTypechain.js +2 -2
- package/dist/evm/swaps/handlers/IHandler.d.ts +13 -13
- package/dist/evm/swaps/handlers/IHandler.js +2 -2
- package/dist/evm/swaps/handlers/claim/ClaimHandlers.d.ts +10 -10
- package/dist/evm/swaps/handlers/claim/ClaimHandlers.js +13 -13
- package/dist/evm/swaps/handlers/claim/HashlockClaimHandler.d.ts +20 -20
- package/dist/evm/swaps/handlers/claim/HashlockClaimHandler.js +39 -39
- package/dist/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
- package/dist/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +59 -59
- package/dist/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
- package/dist/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +51 -51
- package/dist/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +21 -21
- package/dist/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +28 -28
- package/dist/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +48 -48
- package/dist/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +63 -63
- package/dist/evm/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
- package/dist/evm/swaps/handlers/refund/TimelockRefundHandler.js +28 -28
- package/dist/evm/swaps/modules/EVMLpVault.d.ts +69 -69
- package/dist/evm/swaps/modules/EVMLpVault.js +134 -134
- package/dist/evm/swaps/modules/EVMSwapClaim.d.ts +54 -54
- package/dist/evm/swaps/modules/EVMSwapClaim.js +137 -137
- package/dist/evm/swaps/modules/EVMSwapInit.d.ts +88 -88
- package/dist/evm/swaps/modules/EVMSwapInit.js +274 -274
- package/dist/evm/swaps/modules/EVMSwapRefund.d.ts +62 -62
- package/dist/evm/swaps/modules/EVMSwapRefund.js +167 -167
- package/dist/evm/typechain/common.d.ts +50 -50
- package/dist/evm/typechain/common.js +2 -2
- package/dist/evm/wallet/EVMBrowserSigner.d.ts +5 -5
- package/dist/evm/wallet/EVMBrowserSigner.js +11 -11
- package/dist/evm/wallet/EVMPersistentSigner.d.ts +29 -29
- package/dist/evm/wallet/EVMPersistentSigner.js +222 -222
- package/dist/evm/wallet/EVMSigner.d.ts +11 -11
- package/dist/evm/wallet/EVMSigner.js +24 -24
- package/dist/index.d.ts +44 -44
- package/dist/index.js +60 -60
- package/dist/utils/Utils.d.ts +17 -17
- package/dist/utils/Utils.js +81 -81
- package/package.json +39 -39
- package/src/chains/botanix/BotanixChainType.ts +28 -28
- package/src/chains/botanix/BotanixInitializer.ts +171 -171
- package/src/chains/citrea/CitreaBtcRelay.ts +57 -57
- package/src/chains/citrea/CitreaChainType.ts +28 -28
- package/src/chains/citrea/CitreaFees.ts +77 -77
- package/src/chains/citrea/CitreaInitializer.ts +178 -178
- package/src/chains/citrea/CitreaSpvVaultContract.ts +75 -75
- package/src/chains/citrea/CitreaSwapContract.ts +102 -102
- package/src/chains/citrea/CitreaTokens.ts +21 -21
- package/src/evm/btcrelay/BtcRelayAbi.ts +258 -258
- package/src/evm/btcrelay/BtcRelayTypechain.ts +371 -371
- package/src/evm/btcrelay/EVMBtcRelay.ts +537 -537
- package/src/evm/btcrelay/headers/EVMBtcHeader.ts +109 -109
- package/src/evm/btcrelay/headers/EVMBtcStoredHeader.ts +152 -152
- package/src/evm/chain/EVMChainInterface.ts +155 -155
- package/src/evm/chain/EVMModule.ts +21 -21
- package/src/evm/chain/modules/ERC20Abi.ts +222 -222
- package/src/evm/chain/modules/EVMAddresses.ts +28 -28
- package/src/evm/chain/modules/EVMBlocks.ts +75 -75
- package/src/evm/chain/modules/EVMEvents.ts +139 -139
- package/src/evm/chain/modules/EVMFees.ts +104 -104
- package/src/evm/chain/modules/EVMSignatures.ts +76 -76
- package/src/evm/chain/modules/EVMTokens.ts +155 -155
- package/src/evm/chain/modules/EVMTransactions.ts +325 -325
- package/src/evm/contract/EVMContractBase.ts +63 -63
- package/src/evm/contract/EVMContractModule.ts +16 -16
- package/src/evm/contract/modules/EVMContractEvents.ts +102 -102
- package/src/evm/events/EVMChainEvents.ts +82 -82
- package/src/evm/events/EVMChainEventsBrowser.ts +534 -525
- package/src/evm/providers/JsonRpcProviderWithRetries.ts +24 -24
- package/src/evm/providers/ReconnectingWebSocketProvider.ts +101 -101
- package/src/evm/providers/SocketProvider.ts +368 -368
- package/src/evm/providers/WebSocketProviderWithRetries.ts +27 -27
- package/src/evm/spv_swap/EVMSpvVaultContract.ts +615 -615
- package/src/evm/spv_swap/EVMSpvVaultData.ts +224 -224
- package/src/evm/spv_swap/EVMSpvWithdrawalData.ts +70 -70
- package/src/evm/spv_swap/SpvVaultContractAbi.ts +846 -846
- package/src/evm/spv_swap/SpvVaultContractTypechain.ts +685 -685
- package/src/evm/swaps/EVMSwapContract.ts +600 -600
- package/src/evm/swaps/EVMSwapData.ts +378 -378
- package/src/evm/swaps/EVMSwapModule.ts +16 -16
- package/src/evm/swaps/EscrowManagerAbi.ts +982 -982
- package/src/evm/swaps/EscrowManagerTypechain.ts +723 -723
- package/src/evm/swaps/handlers/IHandler.ts +17 -17
- package/src/evm/swaps/handlers/claim/ClaimHandlers.ts +20 -20
- package/src/evm/swaps/handlers/claim/HashlockClaimHandler.ts +46 -46
- package/src/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +82 -82
- package/src/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +76 -76
- package/src/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +46 -46
- package/src/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +115 -115
- package/src/evm/swaps/handlers/refund/TimelockRefundHandler.ts +37 -37
- package/src/evm/swaps/modules/EVMLpVault.ts +154 -154
- package/src/evm/swaps/modules/EVMSwapClaim.ts +172 -172
- package/src/evm/swaps/modules/EVMSwapInit.ts +328 -328
- package/src/evm/swaps/modules/EVMSwapRefund.ts +229 -229
- package/src/evm/typechain/common.ts +131 -131
- package/src/evm/wallet/EVMBrowserSigner.ts +11 -11
- package/src/evm/wallet/EVMPersistentSigner.ts +298 -298
- package/src/evm/wallet/EVMSigner.ts +31 -31
- package/src/index.ts +53 -53
- package/src/utils/Utils.ts +92 -92
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { JsonRpcProvider, JsonRpcApiProviderOptions } from "ethers";
|
|
2
|
-
import type { Networkish, FetchRequest } from "ethers";
|
|
3
|
-
export declare class JsonRpcProviderWithRetries extends JsonRpcProvider {
|
|
4
|
-
readonly retryPolicy?: {
|
|
5
|
-
maxRetries?: number;
|
|
6
|
-
delay?: number;
|
|
7
|
-
exponential?: boolean;
|
|
8
|
-
};
|
|
9
|
-
constructor(url?: string | FetchRequest, network?: Networkish, options?: JsonRpcApiProviderOptions & {
|
|
10
|
-
maxRetries?: number;
|
|
11
|
-
delay?: number;
|
|
12
|
-
exponential?: boolean;
|
|
13
|
-
});
|
|
14
|
-
send(method: string, params: Array<any> | Record<string, any>): Promise<any>;
|
|
15
|
-
}
|
|
1
|
+
import { JsonRpcProvider, JsonRpcApiProviderOptions } from "ethers";
|
|
2
|
+
import type { Networkish, FetchRequest } from "ethers";
|
|
3
|
+
export declare class JsonRpcProviderWithRetries extends JsonRpcProvider {
|
|
4
|
+
readonly retryPolicy?: {
|
|
5
|
+
maxRetries?: number;
|
|
6
|
+
delay?: number;
|
|
7
|
+
exponential?: boolean;
|
|
8
|
+
};
|
|
9
|
+
constructor(url?: string | FetchRequest, network?: Networkish, options?: JsonRpcApiProviderOptions & {
|
|
10
|
+
maxRetries?: number;
|
|
11
|
+
delay?: number;
|
|
12
|
+
exponential?: boolean;
|
|
13
|
+
});
|
|
14
|
+
send(method: string, params: Array<any> | Record<string, any>): Promise<any>;
|
|
15
|
+
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JsonRpcProviderWithRetries = void 0;
|
|
4
|
-
const ethers_1 = require("ethers");
|
|
5
|
-
const Utils_1 = require("../../utils/Utils");
|
|
6
|
-
class JsonRpcProviderWithRetries extends ethers_1.JsonRpcProvider {
|
|
7
|
-
constructor(url, network, options) {
|
|
8
|
-
super(url, network, options);
|
|
9
|
-
this.retryPolicy = options;
|
|
10
|
-
}
|
|
11
|
-
send(method, params) {
|
|
12
|
-
return (0, Utils_1.tryWithRetries)(() => super.send(method, params), this.retryPolicy, e => {
|
|
13
|
-
if (e.code != null && typeof (e.code) === "string")
|
|
14
|
-
return Utils_1.allowedEthersErrorCodes.has(e.code);
|
|
15
|
-
return false;
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.JsonRpcProviderWithRetries = JsonRpcProviderWithRetries;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JsonRpcProviderWithRetries = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
const Utils_1 = require("../../utils/Utils");
|
|
6
|
+
class JsonRpcProviderWithRetries extends ethers_1.JsonRpcProvider {
|
|
7
|
+
constructor(url, network, options) {
|
|
8
|
+
super(url, network, options);
|
|
9
|
+
this.retryPolicy = options;
|
|
10
|
+
}
|
|
11
|
+
send(method, params) {
|
|
12
|
+
return (0, Utils_1.tryWithRetries)(() => super.send(method, params), this.retryPolicy, e => {
|
|
13
|
+
if (e.code != null && typeof (e.code) === "string")
|
|
14
|
+
return Utils_1.allowedEthersErrorCodes.has(e.code);
|
|
15
|
+
return false;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.JsonRpcProviderWithRetries = JsonRpcProviderWithRetries;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { JsonRpcApiProviderOptions } from "ethers";
|
|
2
|
-
import type { Networkish, WebSocketLike } from "ethers";
|
|
3
|
-
import { SocketProvider } from "./SocketProvider";
|
|
4
|
-
export declare class ReconnectingWebSocketProvider extends SocketProvider {
|
|
5
|
-
requestTimeoutSeconds: number;
|
|
6
|
-
reconnectSeconds: number;
|
|
7
|
-
pingIntervalSeconds: number;
|
|
8
|
-
connectionTimeout: number;
|
|
9
|
-
pingInterval: any;
|
|
10
|
-
reconnectTimer: any;
|
|
11
|
-
connectTimer: any;
|
|
12
|
-
wsCtor: () => WebSocketLike;
|
|
13
|
-
websocket: null | (WebSocketLike & {
|
|
14
|
-
onclose?: (...args: any[]) => void;
|
|
15
|
-
ping?: () => void;
|
|
16
|
-
});
|
|
17
|
-
constructor(url: string | (() => WebSocketLike), network?: Networkish, options?: JsonRpcApiProviderOptions);
|
|
18
|
-
private connect;
|
|
19
|
-
private disconnectedAndScheduleReconnect;
|
|
20
|
-
_write(message: string): Promise<void>;
|
|
21
|
-
destroy(): Promise<void>;
|
|
22
|
-
}
|
|
1
|
+
import { JsonRpcApiProviderOptions } from "ethers";
|
|
2
|
+
import type { Networkish, WebSocketLike } from "ethers";
|
|
3
|
+
import { SocketProvider } from "./SocketProvider";
|
|
4
|
+
export declare class ReconnectingWebSocketProvider extends SocketProvider {
|
|
5
|
+
requestTimeoutSeconds: number;
|
|
6
|
+
reconnectSeconds: number;
|
|
7
|
+
pingIntervalSeconds: number;
|
|
8
|
+
connectionTimeout: number;
|
|
9
|
+
pingInterval: any;
|
|
10
|
+
reconnectTimer: any;
|
|
11
|
+
connectTimer: any;
|
|
12
|
+
wsCtor: () => WebSocketLike;
|
|
13
|
+
websocket: null | (WebSocketLike & {
|
|
14
|
+
onclose?: (...args: any[]) => void;
|
|
15
|
+
ping?: () => void;
|
|
16
|
+
});
|
|
17
|
+
constructor(url: string | (() => WebSocketLike), network?: Networkish, options?: JsonRpcApiProviderOptions);
|
|
18
|
+
private connect;
|
|
19
|
+
private disconnectedAndScheduleReconnect;
|
|
20
|
+
_write(message: string): Promise<void>;
|
|
21
|
+
destroy(): Promise<void>;
|
|
22
|
+
}
|
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ReconnectingWebSocketProvider = void 0;
|
|
4
|
-
const SocketProvider_1 = require("./SocketProvider");
|
|
5
|
-
class ReconnectingWebSocketProvider extends SocketProvider_1.SocketProvider {
|
|
6
|
-
constructor(url, network, options) {
|
|
7
|
-
super(network, options);
|
|
8
|
-
this.requestTimeoutSeconds = 10;
|
|
9
|
-
this.reconnectSeconds = 5;
|
|
10
|
-
this.pingIntervalSeconds = 30;
|
|
11
|
-
this.connectionTimeout = 30;
|
|
12
|
-
this.wsCtor = typeof (url) === "string" ? () => new WebSocket(url) : url;
|
|
13
|
-
this.connect();
|
|
14
|
-
}
|
|
15
|
-
connect() {
|
|
16
|
-
this.websocket = this.wsCtor();
|
|
17
|
-
this.websocket.onopen = () => {
|
|
18
|
-
this._connected();
|
|
19
|
-
this._start();
|
|
20
|
-
clearTimeout(this.connectTimer);
|
|
21
|
-
this.connectTimer = null;
|
|
22
|
-
this.pingInterval = setInterval(() => {
|
|
23
|
-
this._send({ method: "eth_blockNumber", params: [], id: 1000000000, jsonrpc: "2.0" }).catch(e => {
|
|
24
|
-
//Error
|
|
25
|
-
if (e.code === "NETWORK_ERROR") {
|
|
26
|
-
console.error("Websocket ping error: ", e);
|
|
27
|
-
if (this.websocket != null) {
|
|
28
|
-
this.websocket.close();
|
|
29
|
-
this.disconnectedAndScheduleReconnect();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}, this.pingIntervalSeconds * 1000);
|
|
34
|
-
};
|
|
35
|
-
this.websocket.onerror = (err) => {
|
|
36
|
-
console.error(`Websocket connection error: `, err);
|
|
37
|
-
this.disconnectedAndScheduleReconnect();
|
|
38
|
-
};
|
|
39
|
-
this.websocket.onmessage = (message) => {
|
|
40
|
-
this._processMessage(message.data);
|
|
41
|
-
};
|
|
42
|
-
this.websocket.onclose = (event) => {
|
|
43
|
-
console.error(`Websocket connection closed: `, event);
|
|
44
|
-
this.disconnectedAndScheduleReconnect();
|
|
45
|
-
};
|
|
46
|
-
this.connectTimer = setTimeout(() => {
|
|
47
|
-
console.error("Websocket connection taking too long, (above " + this.connectionTimeout + " seconds!), closing and re-attempting connection");
|
|
48
|
-
this.websocket.close();
|
|
49
|
-
this.disconnectedAndScheduleReconnect();
|
|
50
|
-
}, this.connectionTimeout * 1000);
|
|
51
|
-
}
|
|
52
|
-
disconnectedAndScheduleReconnect() {
|
|
53
|
-
if (this.destroyed)
|
|
54
|
-
return;
|
|
55
|
-
if (this.websocket == null)
|
|
56
|
-
return;
|
|
57
|
-
this.websocket.onclose = null;
|
|
58
|
-
this.websocket.onerror = null;
|
|
59
|
-
this.websocket.onmessage = null;
|
|
60
|
-
this.websocket.onopen = null;
|
|
61
|
-
this.websocket = null;
|
|
62
|
-
if (this.pingInterval != null)
|
|
63
|
-
clearInterval(this.pingInterval);
|
|
64
|
-
if (this.connectTimer != null)
|
|
65
|
-
clearInterval(this.connectTimer);
|
|
66
|
-
this._disconnected();
|
|
67
|
-
console.error(`Retrying in ${this.reconnectSeconds} seconds...`);
|
|
68
|
-
this.reconnectTimer = setTimeout(() => this.connect(), this.reconnectSeconds * 1000);
|
|
69
|
-
}
|
|
70
|
-
async _write(message) {
|
|
71
|
-
this.websocket.send(message);
|
|
72
|
-
}
|
|
73
|
-
async destroy() {
|
|
74
|
-
if (this.websocket != null) {
|
|
75
|
-
this.websocket.close();
|
|
76
|
-
this.websocket = null;
|
|
77
|
-
}
|
|
78
|
-
if (this.reconnectTimer != null)
|
|
79
|
-
clearTimeout(this.reconnectTimer);
|
|
80
|
-
if (this.pingInterval != null)
|
|
81
|
-
clearInterval(this.pingInterval);
|
|
82
|
-
if (this.connectTimer != null)
|
|
83
|
-
clearInterval(this.connectTimer);
|
|
84
|
-
super.destroy();
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
exports.ReconnectingWebSocketProvider = ReconnectingWebSocketProvider;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReconnectingWebSocketProvider = void 0;
|
|
4
|
+
const SocketProvider_1 = require("./SocketProvider");
|
|
5
|
+
class ReconnectingWebSocketProvider extends SocketProvider_1.SocketProvider {
|
|
6
|
+
constructor(url, network, options) {
|
|
7
|
+
super(network, options);
|
|
8
|
+
this.requestTimeoutSeconds = 10;
|
|
9
|
+
this.reconnectSeconds = 5;
|
|
10
|
+
this.pingIntervalSeconds = 30;
|
|
11
|
+
this.connectionTimeout = 30;
|
|
12
|
+
this.wsCtor = typeof (url) === "string" ? () => new WebSocket(url) : url;
|
|
13
|
+
this.connect();
|
|
14
|
+
}
|
|
15
|
+
connect() {
|
|
16
|
+
this.websocket = this.wsCtor();
|
|
17
|
+
this.websocket.onopen = () => {
|
|
18
|
+
this._connected();
|
|
19
|
+
this._start();
|
|
20
|
+
clearTimeout(this.connectTimer);
|
|
21
|
+
this.connectTimer = null;
|
|
22
|
+
this.pingInterval = setInterval(() => {
|
|
23
|
+
this._send({ method: "eth_blockNumber", params: [], id: 1000000000, jsonrpc: "2.0" }).catch(e => {
|
|
24
|
+
//Error
|
|
25
|
+
if (e.code === "NETWORK_ERROR") {
|
|
26
|
+
console.error("Websocket ping error: ", e);
|
|
27
|
+
if (this.websocket != null) {
|
|
28
|
+
this.websocket.close();
|
|
29
|
+
this.disconnectedAndScheduleReconnect();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}, this.pingIntervalSeconds * 1000);
|
|
34
|
+
};
|
|
35
|
+
this.websocket.onerror = (err) => {
|
|
36
|
+
console.error(`Websocket connection error: `, err);
|
|
37
|
+
this.disconnectedAndScheduleReconnect();
|
|
38
|
+
};
|
|
39
|
+
this.websocket.onmessage = (message) => {
|
|
40
|
+
this._processMessage(message.data);
|
|
41
|
+
};
|
|
42
|
+
this.websocket.onclose = (event) => {
|
|
43
|
+
console.error(`Websocket connection closed: `, event);
|
|
44
|
+
this.disconnectedAndScheduleReconnect();
|
|
45
|
+
};
|
|
46
|
+
this.connectTimer = setTimeout(() => {
|
|
47
|
+
console.error("Websocket connection taking too long, (above " + this.connectionTimeout + " seconds!), closing and re-attempting connection");
|
|
48
|
+
this.websocket.close();
|
|
49
|
+
this.disconnectedAndScheduleReconnect();
|
|
50
|
+
}, this.connectionTimeout * 1000);
|
|
51
|
+
}
|
|
52
|
+
disconnectedAndScheduleReconnect() {
|
|
53
|
+
if (this.destroyed)
|
|
54
|
+
return;
|
|
55
|
+
if (this.websocket == null)
|
|
56
|
+
return;
|
|
57
|
+
this.websocket.onclose = null;
|
|
58
|
+
this.websocket.onerror = null;
|
|
59
|
+
this.websocket.onmessage = null;
|
|
60
|
+
this.websocket.onopen = null;
|
|
61
|
+
this.websocket = null;
|
|
62
|
+
if (this.pingInterval != null)
|
|
63
|
+
clearInterval(this.pingInterval);
|
|
64
|
+
if (this.connectTimer != null)
|
|
65
|
+
clearInterval(this.connectTimer);
|
|
66
|
+
this._disconnected();
|
|
67
|
+
console.error(`Retrying in ${this.reconnectSeconds} seconds...`);
|
|
68
|
+
this.reconnectTimer = setTimeout(() => this.connect(), this.reconnectSeconds * 1000);
|
|
69
|
+
}
|
|
70
|
+
async _write(message) {
|
|
71
|
+
this.websocket.send(message);
|
|
72
|
+
}
|
|
73
|
+
async destroy() {
|
|
74
|
+
if (this.websocket != null) {
|
|
75
|
+
this.websocket.close();
|
|
76
|
+
this.websocket = null;
|
|
77
|
+
}
|
|
78
|
+
if (this.reconnectTimer != null)
|
|
79
|
+
clearTimeout(this.reconnectTimer);
|
|
80
|
+
if (this.pingInterval != null)
|
|
81
|
+
clearInterval(this.pingInterval);
|
|
82
|
+
if (this.connectTimer != null)
|
|
83
|
+
clearInterval(this.connectTimer);
|
|
84
|
+
super.destroy();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.ReconnectingWebSocketProvider = ReconnectingWebSocketProvider;
|
|
@@ -1,111 +1,111 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generic long-lived socket provider.
|
|
3
|
-
*
|
|
4
|
-
* Sub-classing notes
|
|
5
|
-
* - a sub-class MUST call the `_start()` method once connected
|
|
6
|
-
* - a sub-class MUST override the `_write(string)` method
|
|
7
|
-
* - a sub-class MUST call `_processMessage(string)` for each message
|
|
8
|
-
*
|
|
9
|
-
* @_subsection: api/providers/abstract-provider:Socket Providers [about-socketProvider]
|
|
10
|
-
*/
|
|
11
|
-
import { EventFilter, JsonRpcApiProvider, JsonRpcApiProviderOptions, JsonRpcError, JsonRpcPayload, JsonRpcResult, Networkish, Subscriber, Subscription } from "ethers";
|
|
12
|
-
/**
|
|
13
|
-
* A **SocketSubscriber** uses a socket transport to handle events and
|
|
14
|
-
* should use [[_emit]] to manage the events.
|
|
15
|
-
*/
|
|
16
|
-
export declare class SocketSubscriber implements Subscriber {
|
|
17
|
-
#private;
|
|
18
|
-
/**
|
|
19
|
-
* The filter.
|
|
20
|
-
*/
|
|
21
|
-
get filter(): Array<any>;
|
|
22
|
-
/**
|
|
23
|
-
* Creates a new **SocketSubscriber** attached to %%provider%% listening
|
|
24
|
-
* to %%filter%%.
|
|
25
|
-
*/
|
|
26
|
-
constructor(provider: SocketProvider, filter: Array<any>);
|
|
27
|
-
start(): void;
|
|
28
|
-
stop(): void;
|
|
29
|
-
pause(dropWhilePaused?: boolean): void;
|
|
30
|
-
resume(): void;
|
|
31
|
-
/**
|
|
32
|
-
* @_ignore:
|
|
33
|
-
*/
|
|
34
|
-
_handleMessage(message: any): void;
|
|
35
|
-
/**
|
|
36
|
-
* Sub-classes **must** override this to emit the events on the
|
|
37
|
-
* provider.
|
|
38
|
-
*/
|
|
39
|
-
_emit(provider: SocketProvider, message: any): Promise<void>;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* A **SocketBlockSubscriber** listens for ``newHeads`` events and emits
|
|
43
|
-
* ``"block"`` events.
|
|
44
|
-
*/
|
|
45
|
-
export declare class SocketBlockSubscriber extends SocketSubscriber {
|
|
46
|
-
/**
|
|
47
|
-
* @_ignore:
|
|
48
|
-
*/
|
|
49
|
-
constructor(provider: SocketProvider);
|
|
50
|
-
_emit(provider: SocketProvider, message: any): Promise<void>;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* A **SocketPendingSubscriber** listens for pending transacitons and emits
|
|
54
|
-
* ``"pending"`` events.
|
|
55
|
-
*/
|
|
56
|
-
export declare class SocketPendingSubscriber extends SocketSubscriber {
|
|
57
|
-
/**
|
|
58
|
-
* @_ignore:
|
|
59
|
-
*/
|
|
60
|
-
constructor(provider: SocketProvider);
|
|
61
|
-
_emit(provider: SocketProvider, message: any): Promise<void>;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* A **SocketEventSubscriber** listens for event logs.
|
|
65
|
-
*/
|
|
66
|
-
export declare class SocketEventSubscriber extends SocketSubscriber {
|
|
67
|
-
#private;
|
|
68
|
-
/**
|
|
69
|
-
* The filter.
|
|
70
|
-
*/
|
|
71
|
-
get logFilter(): EventFilter;
|
|
72
|
-
/**
|
|
73
|
-
* @_ignore:
|
|
74
|
-
*/
|
|
75
|
-
constructor(provider: SocketProvider, filter: EventFilter);
|
|
76
|
-
_emit(provider: SocketProvider, message: any): Promise<void>;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* A **SocketProvider** is backed by a long-lived connection over a
|
|
80
|
-
* socket, which can subscribe and receive real-time messages over
|
|
81
|
-
* its communication channel.
|
|
82
|
-
*/
|
|
83
|
-
export declare class SocketProvider extends JsonRpcApiProvider {
|
|
84
|
-
#private;
|
|
85
|
-
requestTimeoutSeconds: number;
|
|
86
|
-
/**
|
|
87
|
-
* Creates a new **SocketProvider** connected to %%network%%.
|
|
88
|
-
*
|
|
89
|
-
* If unspecified, the network will be discovered.
|
|
90
|
-
*/
|
|
91
|
-
constructor(network?: Networkish, _options?: JsonRpcApiProviderOptions);
|
|
92
|
-
_getSubscriber(sub: Subscription): Subscriber;
|
|
93
|
-
/**
|
|
94
|
-
* Register a new subscriber. This is used internalled by Subscribers
|
|
95
|
-
* and generally is unecessary unless extending capabilities.
|
|
96
|
-
*/
|
|
97
|
-
_register(filterId: number | string, subscriber: SocketSubscriber): void;
|
|
98
|
-
_send(payload: JsonRpcPayload | Array<JsonRpcPayload>): Promise<Array<JsonRpcResult | JsonRpcError>>;
|
|
99
|
-
_connected(): void;
|
|
100
|
-
_disconnected(): void;
|
|
101
|
-
/**
|
|
102
|
-
* Sub-classes **must** call this with messages received over their
|
|
103
|
-
* transport to be processed and dispatched.
|
|
104
|
-
*/
|
|
105
|
-
_processMessage(message: string): Promise<void>;
|
|
106
|
-
/**
|
|
107
|
-
* Sub-classes **must** override this to send %%message%% over their
|
|
108
|
-
* transport.
|
|
109
|
-
*/
|
|
110
|
-
_write(message: string): Promise<void>;
|
|
111
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Generic long-lived socket provider.
|
|
3
|
+
*
|
|
4
|
+
* Sub-classing notes
|
|
5
|
+
* - a sub-class MUST call the `_start()` method once connected
|
|
6
|
+
* - a sub-class MUST override the `_write(string)` method
|
|
7
|
+
* - a sub-class MUST call `_processMessage(string)` for each message
|
|
8
|
+
*
|
|
9
|
+
* @_subsection: api/providers/abstract-provider:Socket Providers [about-socketProvider]
|
|
10
|
+
*/
|
|
11
|
+
import { EventFilter, JsonRpcApiProvider, JsonRpcApiProviderOptions, JsonRpcError, JsonRpcPayload, JsonRpcResult, Networkish, Subscriber, Subscription } from "ethers";
|
|
12
|
+
/**
|
|
13
|
+
* A **SocketSubscriber** uses a socket transport to handle events and
|
|
14
|
+
* should use [[_emit]] to manage the events.
|
|
15
|
+
*/
|
|
16
|
+
export declare class SocketSubscriber implements Subscriber {
|
|
17
|
+
#private;
|
|
18
|
+
/**
|
|
19
|
+
* The filter.
|
|
20
|
+
*/
|
|
21
|
+
get filter(): Array<any>;
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new **SocketSubscriber** attached to %%provider%% listening
|
|
24
|
+
* to %%filter%%.
|
|
25
|
+
*/
|
|
26
|
+
constructor(provider: SocketProvider, filter: Array<any>);
|
|
27
|
+
start(): void;
|
|
28
|
+
stop(): void;
|
|
29
|
+
pause(dropWhilePaused?: boolean): void;
|
|
30
|
+
resume(): void;
|
|
31
|
+
/**
|
|
32
|
+
* @_ignore:
|
|
33
|
+
*/
|
|
34
|
+
_handleMessage(message: any): void;
|
|
35
|
+
/**
|
|
36
|
+
* Sub-classes **must** override this to emit the events on the
|
|
37
|
+
* provider.
|
|
38
|
+
*/
|
|
39
|
+
_emit(provider: SocketProvider, message: any): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A **SocketBlockSubscriber** listens for ``newHeads`` events and emits
|
|
43
|
+
* ``"block"`` events.
|
|
44
|
+
*/
|
|
45
|
+
export declare class SocketBlockSubscriber extends SocketSubscriber {
|
|
46
|
+
/**
|
|
47
|
+
* @_ignore:
|
|
48
|
+
*/
|
|
49
|
+
constructor(provider: SocketProvider);
|
|
50
|
+
_emit(provider: SocketProvider, message: any): Promise<void>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A **SocketPendingSubscriber** listens for pending transacitons and emits
|
|
54
|
+
* ``"pending"`` events.
|
|
55
|
+
*/
|
|
56
|
+
export declare class SocketPendingSubscriber extends SocketSubscriber {
|
|
57
|
+
/**
|
|
58
|
+
* @_ignore:
|
|
59
|
+
*/
|
|
60
|
+
constructor(provider: SocketProvider);
|
|
61
|
+
_emit(provider: SocketProvider, message: any): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* A **SocketEventSubscriber** listens for event logs.
|
|
65
|
+
*/
|
|
66
|
+
export declare class SocketEventSubscriber extends SocketSubscriber {
|
|
67
|
+
#private;
|
|
68
|
+
/**
|
|
69
|
+
* The filter.
|
|
70
|
+
*/
|
|
71
|
+
get logFilter(): EventFilter;
|
|
72
|
+
/**
|
|
73
|
+
* @_ignore:
|
|
74
|
+
*/
|
|
75
|
+
constructor(provider: SocketProvider, filter: EventFilter);
|
|
76
|
+
_emit(provider: SocketProvider, message: any): Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* A **SocketProvider** is backed by a long-lived connection over a
|
|
80
|
+
* socket, which can subscribe and receive real-time messages over
|
|
81
|
+
* its communication channel.
|
|
82
|
+
*/
|
|
83
|
+
export declare class SocketProvider extends JsonRpcApiProvider {
|
|
84
|
+
#private;
|
|
85
|
+
requestTimeoutSeconds: number;
|
|
86
|
+
/**
|
|
87
|
+
* Creates a new **SocketProvider** connected to %%network%%.
|
|
88
|
+
*
|
|
89
|
+
* If unspecified, the network will be discovered.
|
|
90
|
+
*/
|
|
91
|
+
constructor(network?: Networkish, _options?: JsonRpcApiProviderOptions);
|
|
92
|
+
_getSubscriber(sub: Subscription): Subscriber;
|
|
93
|
+
/**
|
|
94
|
+
* Register a new subscriber. This is used internalled by Subscribers
|
|
95
|
+
* and generally is unecessary unless extending capabilities.
|
|
96
|
+
*/
|
|
97
|
+
_register(filterId: number | string, subscriber: SocketSubscriber): void;
|
|
98
|
+
_send(payload: JsonRpcPayload | Array<JsonRpcPayload>): Promise<Array<JsonRpcResult | JsonRpcError>>;
|
|
99
|
+
_connected(): void;
|
|
100
|
+
_disconnected(): void;
|
|
101
|
+
/**
|
|
102
|
+
* Sub-classes **must** call this with messages received over their
|
|
103
|
+
* transport to be processed and dispatched.
|
|
104
|
+
*/
|
|
105
|
+
_processMessage(message: string): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Sub-classes **must** override this to send %%message%% over their
|
|
108
|
+
* transport.
|
|
109
|
+
*/
|
|
110
|
+
_write(message: string): Promise<void>;
|
|
111
|
+
}
|