@paraswap/dex-lib 3.10.3 → 3.11.0-bebop
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/build/abi/Aave_GSM.json +751 -0
- package/build/abi/USDM.json +807 -0
- package/build/abi/{integral/pool.json → cables/CablesMainnetRFQ.json} +563 -521
- package/build/abi/inception/inception-ineth-pool.json +1062 -0
- package/build/abi/inception/inception-ineth.json +609 -0
- package/build/abi/inception/inception-ratio-feed.json +329 -0
- package/build/abi/inception/inception-vault.json +991 -0
- package/build/config.js +1 -0
- package/build/config.js.map +1 -1
- package/build/dex/aave-v1/aave-v1.d.ts +2 -1
- package/build/dex/aave-v1/aave-v1.js +22 -0
- package/build/dex/aave-v1/aave-v1.js.map +1 -1
- package/build/dex/balancer-v2/config.js +1 -1
- package/build/dex/bebop/bebop.js +1 -1
- package/build/dex/bebop/bebop.js.map +1 -1
- package/build/dex/bebop/config.js +5 -0
- package/build/dex/bebop/config.js.map +1 -1
- package/build/dex/bebop/rate-fetcher.d.ts +3 -1
- package/build/dex/bebop/rate-fetcher.js +42 -2
- package/build/dex/bebop/rate-fetcher.js.map +1 -1
- package/build/dex/bebop/validators.d.ts +2 -0
- package/build/dex/bebop/validators.js +4 -1
- package/build/dex/bebop/validators.js.map +1 -1
- package/build/dex/bebop/websocket-fetcher.d.ts +35 -0
- package/build/dex/bebop/websocket-fetcher.js +87 -0
- package/build/dex/bebop/websocket-fetcher.js.map +1 -0
- package/build/dex/cables/cables.d.ts +57 -0
- package/build/dex/cables/cables.js +471 -0
- package/build/dex/cables/cables.js.map +1 -0
- package/build/dex/cables/config.d.ts +4 -0
- package/build/dex/cables/config.js +15 -0
- package/build/dex/cables/config.js.map +1 -0
- package/build/dex/cables/constants.d.ts +19 -0
- package/build/dex/cables/constants.js +26 -0
- package/build/dex/cables/constants.js.map +1 -0
- package/build/dex/cables/rate-fetcher.d.ts +34 -0
- package/build/dex/cables/rate-fetcher.js +106 -0
- package/build/dex/cables/rate-fetcher.js.map +1 -0
- package/build/dex/cables/types.d.ts +106 -0
- package/build/dex/cables/types.js +12 -0
- package/build/dex/cables/types.js.map +1 -0
- package/build/dex/cables/validators.d.ts +5 -0
- package/build/dex/cables/validators.js +49 -0
- package/build/dex/cables/validators.js.map +1 -0
- package/build/dex/idle-dao/idle-dao-pool.d.ts +56 -0
- package/build/dex/idle-dao/idle-dao-pool.js +176 -0
- package/build/dex/idle-dao/idle-dao-pool.js.map +1 -0
- package/build/dex/idle-dao/idle-dao-pooling-pool.d.ts +16 -0
- package/build/dex/idle-dao/idle-dao-pooling-pool.js +57 -0
- package/build/dex/idle-dao/idle-dao-pooling-pool.js.map +1 -0
- package/build/dex/idle-dao/scripts.d.ts +9 -0
- package/build/dex/idle-dao/scripts.js +552 -0
- package/build/dex/idle-dao/scripts.js.map +1 -0
- package/build/dex/inception/config.d.ts +4 -0
- package/build/dex/inception/config.js +109 -0
- package/build/dex/inception/config.js.map +1 -0
- package/build/dex/inception/inception-event-pool.d.ts +16 -0
- package/build/dex/inception/inception-event-pool.js +51 -0
- package/build/dex/inception/inception-event-pool.js.map +1 -0
- package/build/dex/{integral/integral.d.ts → inception/inception-native.d.ts} +21 -19
- package/build/dex/inception/inception-native.js +131 -0
- package/build/dex/inception/inception-native.js.map +1 -0
- package/build/dex/inception/inception-pool.d.ts +18 -0
- package/build/dex/inception/inception-pool.js +32 -0
- package/build/dex/inception/inception-pool.js.map +1 -0
- package/build/dex/inception/inception-price-feed.d.ts +19 -0
- package/build/dex/inception/inception-price-feed.js +51 -0
- package/build/dex/inception/inception-price-feed.js.map +1 -0
- package/build/dex/inception/inception.d.ts +43 -0
- package/build/dex/inception/inception.js +204 -0
- package/build/dex/inception/inception.js.map +1 -0
- package/build/dex/inception/tokens.d.ts +9 -0
- package/build/dex/inception/tokens.js +28 -0
- package/build/dex/inception/tokens.js.map +1 -0
- package/build/dex/inception/types.d.ts +22 -0
- package/build/dex/inception/types.js +3 -0
- package/build/dex/inception/types.js.map +1 -0
- package/build/dex/inception/utils.d.ts +6 -0
- package/build/dex/inception/utils.js +37 -0
- package/build/dex/inception/utils.js.map +1 -0
- package/build/dex/jarvis.d.ts +2 -1
- package/build/dex/jarvis.js +58 -0
- package/build/dex/jarvis.js.map +1 -1
- package/build/dex/platypus/platypus.d.ts +2 -1
- package/build/dex/platypus/platypus.js +31 -0
- package/build/dex/platypus/platypus.js.map +1 -1
- package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
- package/build/dex/swaap-v1/swaap-v1.js +10 -0
- package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
- package/build/dex/zerox/index.d.ts +4 -26
- package/build/dex/zerox/index.js +50 -42
- package/build/dex/zerox/index.js.map +1 -1
- package/build/dex/zerox/types.d.ts +29 -0
- package/build/dex/zerox/types.js +8 -1
- package/build/dex/zerox/types.js.map +1 -1
- package/build/lib/fetcher/wsFetcher.d.ts +7 -3
- package/build/lib/fetcher/wsFetcher.js +64 -51
- package/build/lib/fetcher/wsFetcher.js.map +1 -1
- package/package.json +4 -2
- package/src/config.ts +1 -0
- package/src/dex/balancer-v2/config.ts +1 -1
- package/src/dex/bebop/bebop-e2e.test.ts +21 -0
- package/src/dex/bebop/bebop.proto +15 -0
- package/src/dex/bebop/bebop.ts +1 -1
- package/src/dex/bebop/config.ts +5 -0
- package/src/dex/bebop/rate-fetcher.ts +51 -6
- package/src/dex/bebop/validators.ts +4 -0
- package/src/lib/fetcher/wsFetcher.ts +79 -66
- package/.idea/aws.xml +0 -17
- package/.idea/codeStyles/Project.xml +0 -19
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/paraswap-dex-lib.iml +0 -9
- package/.idea/prettier.xml +0 -7
- package/.idea/vcs.xml +0 -6
- package/build/abi/integral/factory.json +0 -333
- package/build/abi/integral/oracle.json +0 -501
- package/build/abi/integral/relayer.json +0 -1536
- package/build/dex/bProtocol.d.ts +0 -18
- package/build/dex/bProtocol.js +0 -39
- package/build/dex/bProtocol.js.map +0 -1
- package/build/dex/bancor.d.ts +0 -26
- package/build/dex/bancor.js +0 -58
- package/build/dex/bancor.js.map +0 -1
- package/build/dex/compound.d.ts +0 -18
- package/build/dex/compound.js +0 -46
- package/build/dex/compound.js.map +0 -1
- package/build/dex/curve-v2.d.ts +0 -58
- package/build/dex/curve-v2.js +0 -180
- package/build/dex/curve-v2.js.map +0 -1
- package/build/dex/dodo-v1.d.ts +0 -33
- package/build/dex/dodo-v1.js +0 -63
- package/build/dex/dodo-v1.js.map +0 -1
- package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +0 -49
- package/build/dex/fluid-dex/fluid-dex-generate-pool.js +0 -104
- package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +0 -1
- package/build/dex/fluid-dex/fluid-dex-pool.d.ts +0 -47
- package/build/dex/fluid-dex/fluid-dex-pool.js +0 -119
- package/build/dex/fluid-dex/fluid-dex-pool.js.map +0 -1
- package/build/dex/integral/config.d.ts +0 -4
- package/build/dex/integral/config.js +0 -20
- package/build/dex/integral/config.js.map +0 -1
- package/build/dex/integral/context.d.ts +0 -40
- package/build/dex/integral/context.js +0 -158
- package/build/dex/integral/context.js.map +0 -1
- package/build/dex/integral/integral-factory.d.ts +0 -24
- package/build/dex/integral/integral-factory.js +0 -95
- package/build/dex/integral/integral-factory.js.map +0 -1
- package/build/dex/integral/integral-pool.d.ts +0 -50
- package/build/dex/integral/integral-pool.js +0 -149
- package/build/dex/integral/integral-pool.js.map +0 -1
- package/build/dex/integral/integral-pricing.d.ts +0 -18
- package/build/dex/integral/integral-pricing.js +0 -114
- package/build/dex/integral/integral-pricing.js.map +0 -1
- package/build/dex/integral/integral-relayer.d.ts +0 -42
- package/build/dex/integral/integral-relayer.js +0 -192
- package/build/dex/integral/integral-relayer.js.map +0 -1
- package/build/dex/integral/integral-token.d.ts +0 -27
- package/build/dex/integral/integral-token.js +0 -59
- package/build/dex/integral/integral-token.js.map +0 -1
- package/build/dex/integral/integral.js +0 -376
- package/build/dex/integral/integral.js.map +0 -1
- package/build/dex/integral/types.d.ts +0 -85
- package/build/dex/integral/types.js +0 -9
- package/build/dex/integral/types.js.map +0 -1
- package/build/dex/integral/utils-e2e.d.ts +0 -9
- package/build/dex/integral/utils-e2e.js +0 -131
- package/build/dex/integral/utils-e2e.js.map +0 -1
- package/build/dex/integral/utils.d.ts +0 -17
- package/build/dex/integral/utils.js +0 -94
- package/build/dex/integral/utils.js.map +0 -1
- package/build/dex/lido.d.ts +0 -19
- package/build/dex/lido.js +0 -42
- package/build/dex/lido.js.map +0 -1
- package/build/dex/onebit.d.ts +0 -25
- package/build/dex/onebit.js +0 -42
- package/build/dex/onebit.js.map +0 -1
- package/build/dex/smoothy.d.ts +0 -26
- package/build/dex/smoothy.js +0 -48
- package/build/dex/smoothy.js.map +0 -1
- package/build/dex/stable-pool.d.ts +0 -28
- package/build/dex/stable-pool.js +0 -62
- package/build/dex/stable-pool.js.map +0 -1
- package/build/dex/trader-joe-v2.1/optimizer.d.ts +0 -2
- package/build/dex/trader-joe-v2.1/optimizer.js +0 -47
- package/build/dex/trader-joe-v2.1/optimizer.js.map +0 -1
- package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.d.ts +0 -7
- package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.js +0 -20
- package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.js.map +0 -1
- package/build/dex/trader-joe-v2.1.d.ts +0 -43
- package/build/dex/trader-joe-v2.1.js +0 -79
- package/build/dex/trader-joe-v2.1.js.map +0 -1
package/src/dex/bebop/bebop.ts
CHANGED
|
@@ -120,7 +120,7 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
|
|
|
120
120
|
pricesReqParams: {
|
|
121
121
|
url:
|
|
122
122
|
BEBOP_WS_API_URL +
|
|
123
|
-
`/pmm/${BebopConfig['Bebop'][network].chainName}/v3/pricing`,
|
|
123
|
+
`/pmm/${BebopConfig['Bebop'][network].chainName}/v3/pricing?format=protobuf`,
|
|
124
124
|
headers: {
|
|
125
125
|
name: BEBOP_AUTH_NAME,
|
|
126
126
|
authorization: this.bebopAuthToken,
|
package/src/dex/bebop/config.ts
CHANGED
|
@@ -33,5 +33,10 @@ export const BebopConfig: DexConfigMap<DexParams> = {
|
|
|
33
33
|
chainName: 'optimism',
|
|
34
34
|
middleTokens: ['0x7F5c764cBc14f9669B88837ca1490cCa17c31607'],
|
|
35
35
|
},
|
|
36
|
+
[Network.BSC]: {
|
|
37
|
+
settlementAddress: '0xbbbbbBB520d69a9775E85b458C58c648259FAD5F',
|
|
38
|
+
chainName: 'bsc',
|
|
39
|
+
middleTokens: ['0x55d398326f99059fF775485246999027B3197955'],
|
|
40
|
+
},
|
|
36
41
|
},
|
|
37
42
|
};
|
|
@@ -1,15 +1,30 @@
|
|
|
1
1
|
import { ETHER_ADDRESS, Network } from '../../constants';
|
|
2
2
|
import { IDexHelper } from '../../dex-helper';
|
|
3
3
|
import { Fetcher } from '../../lib/fetcher/fetcher';
|
|
4
|
-
import { validateAndCast } from '../../lib/validators';
|
|
4
|
+
import { validateAndCast, ValidationError } from '../../lib/validators';
|
|
5
5
|
import { Logger, Token } from '../../types';
|
|
6
6
|
import {
|
|
7
|
+
BebopLevel,
|
|
8
|
+
BebopPair,
|
|
7
9
|
BebopPricingResponse,
|
|
8
10
|
BebopRateFetcherConfig,
|
|
9
11
|
BebopTokensResponse,
|
|
10
12
|
} from './types';
|
|
11
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
BebopPricingUpdate,
|
|
15
|
+
pricesResponseValidator,
|
|
16
|
+
tokensResponseValidator,
|
|
17
|
+
} from './validators';
|
|
12
18
|
import { WebSocketFetcher } from '../../lib/fetcher/wsFetcher';
|
|
19
|
+
import { utils } from 'ethers';
|
|
20
|
+
|
|
21
|
+
export function levels_from_flat_array(values: number[]): BebopLevel[] {
|
|
22
|
+
const levels: BebopLevel[] = [];
|
|
23
|
+
for (let i = 0; i < values.length; i += 2) {
|
|
24
|
+
levels.push([values[i], values[i + 1]]);
|
|
25
|
+
}
|
|
26
|
+
return levels;
|
|
27
|
+
}
|
|
13
28
|
|
|
14
29
|
export class RateFetcher {
|
|
15
30
|
private pricesFetcher: WebSocketFetcher<BebopPricingResponse>;
|
|
@@ -35,10 +50,16 @@ export class RateFetcher {
|
|
|
35
50
|
info: {
|
|
36
51
|
requestOptions: config.rateConfig.pricesReqParams,
|
|
37
52
|
caster: (data: unknown) => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
53
|
+
const dataBuffer = data as any;
|
|
54
|
+
const invalid = BebopPricingUpdate.verify(dataBuffer);
|
|
55
|
+
if (invalid) {
|
|
56
|
+
throw new ValidationError(invalid);
|
|
57
|
+
}
|
|
58
|
+
const update = BebopPricingUpdate.decode(dataBuffer);
|
|
59
|
+
const updateObject = BebopPricingUpdate.toObject(update, {
|
|
60
|
+
longs: Number,
|
|
61
|
+
});
|
|
62
|
+
return this.parsePricingUpdate(updateObject);
|
|
42
63
|
},
|
|
43
64
|
},
|
|
44
65
|
handler: this.handlePricesResponse.bind(this),
|
|
@@ -68,6 +89,30 @@ export class RateFetcher {
|
|
|
68
89
|
);
|
|
69
90
|
}
|
|
70
91
|
|
|
92
|
+
parsePricingUpdate(updateObject: any): BebopPricingResponse {
|
|
93
|
+
const pricingResponse: BebopPricingResponse = {};
|
|
94
|
+
if (!updateObject.pairs || !updateObject.pairs.length) {
|
|
95
|
+
this.logger.warn('Update message did not include pairs', updateObject);
|
|
96
|
+
return pricingResponse;
|
|
97
|
+
}
|
|
98
|
+
for (const pairBook of updateObject.pairs) {
|
|
99
|
+
const pair =
|
|
100
|
+
utils.getAddress('0x' + pairBook.base.toString('hex')) +
|
|
101
|
+
'/' +
|
|
102
|
+
utils.getAddress('0x' + pairBook.quote.toString('hex'));
|
|
103
|
+
const lastUpdateTs = pairBook.lastUpdateTs;
|
|
104
|
+
const bids = pairBook.bids ? levels_from_flat_array(pairBook.bids) : [];
|
|
105
|
+
const asks = pairBook.asks ? levels_from_flat_array(pairBook.asks) : [];
|
|
106
|
+
const bebopPair: BebopPair = {
|
|
107
|
+
bids,
|
|
108
|
+
asks,
|
|
109
|
+
last_update_ts: lastUpdateTs,
|
|
110
|
+
};
|
|
111
|
+
pricingResponse[pair] = bebopPair;
|
|
112
|
+
}
|
|
113
|
+
return pricingResponse;
|
|
114
|
+
}
|
|
115
|
+
|
|
71
116
|
start() {
|
|
72
117
|
this.pricesFetcher.startPolling();
|
|
73
118
|
this.tokensFetcher.startPolling();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import joi from 'joi';
|
|
2
|
+
import protobuf from 'protobufjs';
|
|
2
3
|
|
|
3
4
|
const levelValidator = joi.array().items(joi.number()).length(2);
|
|
4
5
|
|
|
@@ -27,3 +28,6 @@ export const tokensResponseValidator = joi.object({
|
|
|
27
28
|
export const blacklistResponseValidator = joi.object({
|
|
28
29
|
blacklist: joi.array().items(joi.string().min(1)).required(),
|
|
29
30
|
});
|
|
31
|
+
|
|
32
|
+
const root = protobuf.loadSync('src/dex/bebop/bebop.proto');
|
|
33
|
+
export const BebopPricingUpdate = root.lookupType('bebop.BebopPricingUpdate');
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { Logger } from 'log4js';
|
|
2
2
|
import { RequestConfig, Response } from '../../dex-helper/irequest-wrapper';
|
|
3
|
-
import
|
|
4
|
-
connection as WebSocketConnection,
|
|
5
|
-
client as WebSocketClient,
|
|
6
|
-
} from 'websocket';
|
|
7
|
-
|
|
3
|
+
import WebSocket from 'ws';
|
|
8
4
|
export class SkippingRequest {
|
|
9
5
|
constructor(public message = '') {}
|
|
10
6
|
}
|
|
@@ -26,74 +22,77 @@ export type RequestInfoWithHandler<T> = {
|
|
|
26
22
|
|
|
27
23
|
export class WebSocketFetcher<T> {
|
|
28
24
|
private requests: RequestInfoWithHandler<T>;
|
|
25
|
+
// Time to wait before declaring connection as broken and restarting it
|
|
26
|
+
private timeoutInterval: number;
|
|
27
|
+
// Time to wait after disconnection before reconnecting
|
|
28
|
+
private reconnectDelay: number;
|
|
29
|
+
private pingTimeout: NodeJS.Timeout | undefined = undefined;
|
|
29
30
|
public lastFetchSucceeded: boolean = false;
|
|
30
31
|
private stop: boolean = true;
|
|
31
|
-
private
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
private connection: WebSocket | null = null;
|
|
33
|
+
|
|
34
|
+
constructor(
|
|
35
|
+
requestsInfo: RequestInfoWithHandler<T>,
|
|
36
|
+
private logger: Logger,
|
|
37
|
+
timeoutInterval: number = 10000,
|
|
38
|
+
reconnectDelay: number = 5000,
|
|
39
|
+
) {
|
|
35
40
|
this.requests = requestsInfo;
|
|
36
|
-
this.
|
|
37
|
-
this.
|
|
41
|
+
this.timeoutInterval = timeoutInterval;
|
|
42
|
+
this.reconnectDelay = reconnectDelay;
|
|
38
43
|
}
|
|
39
44
|
|
|
40
|
-
private connected(
|
|
41
|
-
this.connection = connection;
|
|
45
|
+
private connected() {
|
|
42
46
|
this.logger.info(`Connected to ${this.requests.info.requestOptions.url}`);
|
|
43
|
-
this.
|
|
44
|
-
this.connection.on('close', this.onClose.bind(this));
|
|
45
|
-
this.connection.on('message', this.onMessage.bind(this));
|
|
47
|
+
this.heartbeat();
|
|
46
48
|
}
|
|
47
49
|
|
|
48
|
-
private
|
|
49
|
-
this.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
this
|
|
53
|
-
},
|
|
50
|
+
private heartbeat() {
|
|
51
|
+
clearTimeout(this.pingTimeout);
|
|
52
|
+
this.pingTimeout = setTimeout(() => {
|
|
53
|
+
this.logger.warn('No heartbeat. Terminating Connection...');
|
|
54
|
+
this?.connection?.terminate();
|
|
55
|
+
}, this.timeoutInterval);
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
private onClose() {
|
|
57
|
-
this.logger.info(`Connection closed
|
|
58
|
-
// reconnect
|
|
59
|
-
|
|
60
|
-
this.
|
|
61
|
-
|
|
59
|
+
this.logger.info(`Connection closed.`);
|
|
60
|
+
// Do not reconnect if polling is stopped
|
|
61
|
+
if (this.stop) {
|
|
62
|
+
clearTimeout(this.pingTimeout);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
this.logger.info(`Unexpected closure, Reconnecting...`);
|
|
67
|
+
this.reconnectWithDelay();
|
|
62
68
|
}
|
|
63
69
|
|
|
64
70
|
private onError(error: any) {
|
|
65
71
|
this.logger.error(
|
|
66
|
-
`
|
|
72
|
+
`Websocket Error: ${error.toString()}. Stopping & Reconnecting...`,
|
|
67
73
|
);
|
|
68
|
-
this
|
|
69
|
-
|
|
70
|
-
// reconnect on errors / failures
|
|
71
|
-
setTimeout(() => {
|
|
72
|
-
this.startPolling();
|
|
73
|
-
}, 3000);
|
|
74
|
+
this?.connection?.terminate();
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
private onMessage(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
77
|
+
private onMessage(data: WebSocket.RawData) {
|
|
78
|
+
this.heartbeat();
|
|
79
|
+
const reqInfo = this.requests;
|
|
80
|
+
const info = reqInfo.info;
|
|
81
|
+
const options = reqInfo.info.requestOptions;
|
|
82
|
+
this.logger.debug(`(${options.url}) received new data`);
|
|
83
|
+
|
|
84
|
+
try {
|
|
85
|
+
const parsedData = info.caster(data);
|
|
86
|
+
reqInfo.handler(parsedData);
|
|
87
|
+
} catch (e) {
|
|
88
|
+
this.logger.info(e);
|
|
89
|
+
this.logger.info(
|
|
90
|
+
`(${options.url}) received incorrect data ${JSON.stringify(
|
|
91
|
+
data,
|
|
92
|
+
).replace(/(?:\r\n|\r|\n)/g, ' ')}`,
|
|
93
|
+
e,
|
|
94
|
+
);
|
|
95
|
+
return;
|
|
97
96
|
}
|
|
98
97
|
}
|
|
99
98
|
|
|
@@ -110,30 +109,44 @@ export class WebSocketFetcher<T> {
|
|
|
110
109
|
this.logger.info(
|
|
111
110
|
`Connecting to ${this.requests.info.requestOptions.url}...`,
|
|
112
111
|
);
|
|
113
|
-
this.
|
|
114
|
-
|
|
115
|
-
undefined,
|
|
116
|
-
undefined,
|
|
117
|
-
{
|
|
112
|
+
const ws = new WebSocket(this.requests.info.requestOptions.url!, {
|
|
113
|
+
headers: {
|
|
118
114
|
Authorization: authorization,
|
|
119
115
|
name: name,
|
|
120
116
|
},
|
|
121
|
-
);
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
ws.on('open', this.connected.bind(this));
|
|
120
|
+
ws.on('message', this.onMessage.bind(this));
|
|
121
|
+
ws.on('error', this.onError.bind(this));
|
|
122
|
+
ws.on('close', this.onClose.bind(this));
|
|
123
|
+
this.connection = ws;
|
|
122
124
|
}
|
|
123
125
|
|
|
124
|
-
|
|
125
|
-
this.
|
|
126
|
+
reconnectWithDelay() {
|
|
127
|
+
this.logger.info(`Waiting ${this.reconnectDelay}ms before reconnecting...`);
|
|
128
|
+
clearTimeout(this.pingTimeout);
|
|
129
|
+
setTimeout(() => {
|
|
130
|
+
this.reconnect();
|
|
131
|
+
}, this.reconnectDelay);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
reconnect() {
|
|
135
|
+
clearTimeout(this.pingTimeout);
|
|
126
136
|
this.connect();
|
|
127
137
|
this.logger.info(
|
|
128
138
|
`Connection started for ${this.requests.info.requestOptions.url}`,
|
|
129
139
|
);
|
|
130
140
|
}
|
|
131
141
|
|
|
142
|
+
startPolling(): void {
|
|
143
|
+
this.stop = false;
|
|
144
|
+
this.reconnect();
|
|
145
|
+
}
|
|
146
|
+
|
|
132
147
|
stopPolling() {
|
|
133
|
-
if (this.connection) {
|
|
134
|
-
this.connection.close();
|
|
135
|
-
}
|
|
136
148
|
this.stop = true;
|
|
149
|
+
this.connection?.terminate();
|
|
137
150
|
this.logger.info(
|
|
138
151
|
`Connection stopped for ${this.requests.info.requestOptions.url}`,
|
|
139
152
|
);
|
package/.idea/aws.xml
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="accountSettings">
|
|
4
|
-
<option name="activeProfile" value="profile:default" />
|
|
5
|
-
<option name="activeRegion" value="us-east-1" />
|
|
6
|
-
<option name="recentlyUsedProfiles">
|
|
7
|
-
<list>
|
|
8
|
-
<option value="profile:default" />
|
|
9
|
-
</list>
|
|
10
|
-
</option>
|
|
11
|
-
<option name="recentlyUsedRegions">
|
|
12
|
-
<list>
|
|
13
|
-
<option value="us-east-1" />
|
|
14
|
-
</list>
|
|
15
|
-
</option>
|
|
16
|
-
</component>
|
|
17
|
-
</project>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
<component name="ProjectCodeStyleConfiguration">
|
|
2
|
-
<code_scheme name="Project" version="173">
|
|
3
|
-
<ScalaCodeStyleSettings>
|
|
4
|
-
<option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
|
|
5
|
-
</ScalaCodeStyleSettings>
|
|
6
|
-
<TypeScriptCodeStyleSettings version="0">
|
|
7
|
-
<option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACKETS" value="true" />
|
|
8
|
-
<option name="USE_DOUBLE_QUOTES" value="false" />
|
|
9
|
-
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
|
10
|
-
</TypeScriptCodeStyleSettings>
|
|
11
|
-
<codeStyleSettings language="TypeScript">
|
|
12
|
-
<indentOptions>
|
|
13
|
-
<option name="INDENT_SIZE" value="2" />
|
|
14
|
-
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
15
|
-
<option name="TAB_SIZE" value="2" />
|
|
16
|
-
</indentOptions>
|
|
17
|
-
</codeStyleSettings>
|
|
18
|
-
</code_scheme>
|
|
19
|
-
</component>
|
package/.idea/misc.xml
DELETED
package/.idea/modules.xml
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="ProjectModuleManager">
|
|
4
|
-
<modules>
|
|
5
|
-
<module fileurl="file://$PROJECT_DIR$/.idea/paraswap-dex-lib.iml" filepath="$PROJECT_DIR$/.idea/paraswap-dex-lib.iml" />
|
|
6
|
-
</modules>
|
|
7
|
-
</component>
|
|
8
|
-
</project>
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<module type="JAVA_MODULE" version="4">
|
|
3
|
-
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
|
4
|
-
<exclude-output />
|
|
5
|
-
<content url="file://$MODULE_DIR$" />
|
|
6
|
-
<orderEntry type="inheritedJdk" />
|
|
7
|
-
<orderEntry type="sourceFolder" forTests="false" />
|
|
8
|
-
</component>
|
|
9
|
-
</module>
|
package/.idea/prettier.xml
DELETED