@paraswap/dex-lib 4.1.7-pub-sub.3 → 4.1.7-pub-sub.4
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/dex/dexalot/dexalot.d.ts +2 -9
- package/build/dex/dexalot/dexalot.js +18 -62
- package/build/dex/dexalot/dexalot.js.map +1 -1
- package/build/dex/dexalot/rate-fetcher.d.ts +19 -4
- package/build/dex/dexalot/rate-fetcher.js +112 -8
- package/build/dex/dexalot/rate-fetcher.js.map +1 -1
- package/build/dex/dexalot/types.d.ts +0 -1
- package/build/dex/generic-rfq/rate-fetcher.js +0 -12
- package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
- package/build/dex/hashflow/constants.d.ts +2 -2
- package/build/dex/hashflow/constants.js +2 -2
- package/build/dex/hashflow/hashflow.d.ts +1 -6
- package/build/dex/hashflow/hashflow.js +9 -34
- package/build/dex/hashflow/hashflow.js.map +1 -1
- package/build/dex/hashflow/rate-fetcher.d.ts +12 -2
- package/build/dex/hashflow/rate-fetcher.js +54 -6
- package/build/dex/hashflow/rate-fetcher.js.map +1 -1
- package/build/dex/hashflow/types.d.ts +0 -1
- package/build/lib/pub-sub.d.ts +0 -2
- package/build/lib/pub-sub.js +0 -12
- package/build/lib/pub-sub.js.map +1 -1
- package/package.json +1 -1
- package/src/dex/dexalot/dexalot.ts +27 -127
- package/src/dex/dexalot/rate-fetcher.ts +219 -9
- package/src/dex/dexalot/types.ts +0 -1
- package/src/dex/generic-rfq/rate-fetcher.ts +0 -30
- package/src/dex/hashflow/constants.ts +2 -2
- package/src/dex/hashflow/hashflow.ts +11 -67
- package/src/dex/hashflow/rate-fetcher.ts +106 -8
- package/src/dex/hashflow/types.ts +0 -1
- package/src/lib/pub-sub.ts +0 -27
package/build/lib/pub-sub.js
CHANGED
|
@@ -14,7 +14,6 @@ class ExpKeyValuePubSub {
|
|
|
14
14
|
channel;
|
|
15
15
|
network;
|
|
16
16
|
localCache = new node_cache_1.default();
|
|
17
|
-
logPrefix = 'ExpKeyValuePubSub';
|
|
18
17
|
logger;
|
|
19
18
|
constructor(dexHelper, dexKey, channel, defaultValue, defaultTTL) {
|
|
20
19
|
this.dexHelper = dexHelper;
|
|
@@ -29,16 +28,11 @@ class ExpKeyValuePubSub {
|
|
|
29
28
|
this.logger.info(`Subscribing to ${this.channel}`);
|
|
30
29
|
this.dexHelper.cache.subscribe(this.channel, (_, msg) => {
|
|
31
30
|
const decodedMsg = JSON.parse(msg);
|
|
32
|
-
this.logger.info(`${this.logPrefix} Received msg: '${Object.keys(decodedMsg).length}'`);
|
|
33
31
|
this.handleSubscription(decodedMsg);
|
|
34
32
|
});
|
|
35
33
|
}
|
|
36
34
|
publish(data, ttl) {
|
|
37
35
|
const expiresAt = Math.round(Date.now() / 1000) + ttl;
|
|
38
|
-
this.logger.info(`${this.logPrefix} Publishing msg: '${JSON.stringify({
|
|
39
|
-
expiresAt,
|
|
40
|
-
data: Object.keys(data).length,
|
|
41
|
-
})}'`);
|
|
42
36
|
this.dexHelper.cache.publish(this.channel, JSON.stringify({ expiresAt, data }));
|
|
43
37
|
}
|
|
44
38
|
handleSubscription(msg) {
|
|
@@ -63,7 +57,6 @@ class ExpKeyValuePubSub {
|
|
|
63
57
|
}
|
|
64
58
|
async getAndCache(key) {
|
|
65
59
|
const localValue = this.localCache.get(key);
|
|
66
|
-
this.logger.info(`${this.logPrefix} Getting and caching key: ${key}, localValue length: ${localValue ? Object.keys(localValue).length : 0}`);
|
|
67
60
|
if (localValue) {
|
|
68
61
|
return localValue;
|
|
69
62
|
}
|
|
@@ -224,7 +217,6 @@ class NonExpSetPubSub {
|
|
|
224
217
|
channel;
|
|
225
218
|
network;
|
|
226
219
|
set = new Set();
|
|
227
|
-
logPrefix = 'NonExpSetPubSub';
|
|
228
220
|
logger;
|
|
229
221
|
constructor(dexHelper, dexKey, channel) {
|
|
230
222
|
this.dexHelper = dexHelper;
|
|
@@ -234,7 +226,6 @@ class NonExpSetPubSub {
|
|
|
234
226
|
this.logger = this.dexHelper.getLogger(`NonExpSetPubSub_${this.channel}`);
|
|
235
227
|
}
|
|
236
228
|
async initializeAndSubscribe(initialSet) {
|
|
237
|
-
this.logger.info(`${this.logPrefix} initializeAndSubscribe with ${initialSet}`);
|
|
238
229
|
for (const member of initialSet) {
|
|
239
230
|
this.set.add(member);
|
|
240
231
|
}
|
|
@@ -244,18 +235,15 @@ class NonExpSetPubSub {
|
|
|
244
235
|
this.logger.info(`Subscribing`);
|
|
245
236
|
this.dexHelper.cache.subscribe(this.channel, (_, msg) => {
|
|
246
237
|
const decodedMsg = JSON.parse(msg);
|
|
247
|
-
this.logger.info(`${this.logPrefix} Received subscription msg: '${decodedMsg.length}'`);
|
|
248
238
|
this.handleSubscription(decodedMsg);
|
|
249
239
|
});
|
|
250
240
|
}
|
|
251
241
|
publish(msg) {
|
|
252
242
|
if (msg.length > 0) {
|
|
253
|
-
this.logger.info(`${this.logPrefix} Publishing msg: '${msg.length}'`);
|
|
254
243
|
this.dexHelper.cache.publish(this.channel, JSON.stringify(msg));
|
|
255
244
|
}
|
|
256
245
|
}
|
|
257
246
|
handleSubscription(set) {
|
|
258
|
-
this.logger.info(`${this.logPrefix} Received subscription msg: '${set}'`);
|
|
259
247
|
for (const key of set) {
|
|
260
248
|
this.set.add(key);
|
|
261
249
|
}
|
package/build/lib/pub-sub.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pub-sub.js","sourceRoot":"","sources":["../../src/lib/pub-sub.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAmC;AAInC,oCAAiC;AASjC,MAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"pub-sub.js","sourceRoot":"","sources":["../../src/lib/pub-sub.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAmC;AAInC,oCAAiC;AASjC,MAAa,iBAAiB;IAQlB;IACA;IAEA;IACA;IAXV,OAAO,CAAS;IAChB,OAAO,CAAU;IACjB,UAAU,GAAc,IAAI,oBAAS,EAAE,CAAC;IAExC,MAAM,CAAS;IAEf,YACU,SAAqB,EACrB,MAAc,EACtB,OAAe,EACP,YAAkB,EAClB,UAAmB;QAJnB,cAAS,GAAT,SAAS,CAAY;QACrB,WAAM,GAAN,MAAM,CAAQ;QAEd,iBAAY,GAAZ,YAAY,CAAM;QAClB,eAAU,GAAV,UAAU,CAAS;QAE3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;QAE3D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,qBAAqB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,SAAS;QACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACtD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC;YACxD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAA6B,EAAE,GAAW;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QACtD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAC1B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CACpC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,GAAsB;QACvC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,uDAAuD;QACvD,MAAM,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC;QAE5B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;gBACvC,GAAG;gBACH,SAAS;gBACT,aAAa,EAAE,GAAG,GAAG,SAAS;gBAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAI,GAAW;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QAE/C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;YACxD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;SACzD,CAAC,CAAC;QAEH,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;YAC3C,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AApFD,8CAoFC;AAED,MAAa,eAAe;IAQhB;IACA;IAEA;IACA;IAXV,OAAO,CAAS;IAChB,OAAO,CAAU;IACjB,UAAU,GAAc,IAAI,oBAAS,EAAE,CAAC;IAExC,MAAM,CAAS;IAEf,YACU,SAAqB,EACrB,MAAc,EACtB,OAAe,EACP,YAAkB,EAClB,UAAmB;QAJnB,cAAS,GAAT,SAAS,CAAY;QACrB,WAAM,GAAN,MAAM,CAAQ;QAEd,iBAAY,GAAZ,YAAY,CAAM;QAClB,eAAU,GAAV,UAAU,CAAS;QAE3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;QAE3D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,qBAAqB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,SAAS;QACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACtD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC;YACxD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAA6B,EAAE,GAAW;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAEtD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAC1B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CACpC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,GAAsB;QACvC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,uDAAuD;QACvD,MAAM,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC;QAE5B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;gBACvC,GAAG;gBACH,SAAS;gBACT,aAAa,EAAE,GAAG,GAAG,SAAS;gBAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAI,GAAW;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QAE/C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;YACxD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;SACzD,CAAC,CAAC;QAEH,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;YAC3C,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AArFD,0CAqFC;AAED,MAAa,aAAa;IAMd;IACA;IAEA;IARV,UAAU,GAAc,IAAI,oBAAS,EAAE,CAAC;IAExC,MAAM,CAAS;IAEf,YACU,SAAqB,EACrB,OAAe;IACvB,aAAa;IACL,GAAW;QAHX,cAAS,GAAT,SAAS,CAAY;QACrB,YAAO,GAAP,OAAO,CAAQ;QAEf,QAAG,GAAH,GAAG,CAAQ;QAEnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,qBAAqB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,SAAS;QACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACtD,MAAM,UAAU,GAAG,aAAK,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC;YACzD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAA6B;QACnC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;YAE3D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAC1B,IAAI,CAAC,OAAO,EACZ,aAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CACrC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,GAAsB;QACvC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,uDAAuD;QACvD,MAAM,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC;QAE5B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;gBACvC,GAAG;gBACH,SAAS;gBACT,aAAa,EAAE,GAAG,GAAG,SAAS;gBAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAI,GAAW;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QAE/C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAEjE,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,aAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAChD,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA1ED,sCA0EC;AAED,MAAa,eAAe;IAQhB;IACA;IARV,OAAO,CAAS;IAChB,OAAO,CAAU;IACjB,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAExB,MAAM,CAAS;IAEf,YACU,SAAqB,EACrB,MAAc,EACtB,OAAe;QAFP,cAAS,GAAT,SAAS,CAAY;QACrB,WAAM,GAAN,MAAM,CAAQ;QAGtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;QAE3D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,UAAoB;QAC/C,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACtD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;YACnD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAiB;QACvB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,GAAiB;QAClC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;CACF;AAlDD,0CAkDC"}
|
package/package.json
CHANGED
|
@@ -28,14 +28,14 @@ import {
|
|
|
28
28
|
ClobSide,
|
|
29
29
|
DexalotData,
|
|
30
30
|
PairData,
|
|
31
|
-
PairDataMap,
|
|
32
|
-
PriceDataMap,
|
|
33
31
|
DexalotRfqError,
|
|
34
32
|
DexalotAPIParameters,
|
|
35
33
|
RFQResponse,
|
|
36
34
|
RFQResponseError,
|
|
37
|
-
TokenAddrDataMap,
|
|
38
35
|
TokenDataMap,
|
|
36
|
+
PairDataMap,
|
|
37
|
+
TokenAddrDataMap,
|
|
38
|
+
PriceDataMap,
|
|
39
39
|
} from './types';
|
|
40
40
|
import {
|
|
41
41
|
SlippageCheckError,
|
|
@@ -52,15 +52,10 @@ import {
|
|
|
52
52
|
DEXALOT_API_PRICES_POLLING_INTERVAL_MS,
|
|
53
53
|
DEXALOT_PRICES_CACHES_TTL_S,
|
|
54
54
|
DEXALOT_GAS_COST,
|
|
55
|
-
DEXALOT_PAIRS_CACHES_TTL_S,
|
|
56
55
|
DEXALOT_API_PAIRS_POLLING_INTERVAL_MS,
|
|
57
56
|
DEXALOT_TOKENS_CACHES_TTL_S,
|
|
58
57
|
DEXALOT_API_BLACKLIST_POLLING_INTERVAL_MS,
|
|
59
|
-
DEXALOT_RATE_LIMITED_TTL_S,
|
|
60
58
|
DEXALOT_MIN_SLIPPAGE_FACTOR_THRESHOLD_FOR_RESTRICTION,
|
|
61
|
-
DEXALOT_RESTRICTED_CACHE_KEY,
|
|
62
|
-
DEXALOT_RESTRICT_TTL_S,
|
|
63
|
-
DEXALOT_RATELIMIT_CACHE_VALUE,
|
|
64
59
|
DEXALOT_BLACKLIST_CACHES_TTL_S,
|
|
65
60
|
DEXALOT_FIRM_QUOTE_TIMEOUT_MS,
|
|
66
61
|
} from './constants';
|
|
@@ -130,7 +125,6 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
130
125
|
pricesReqParams: this.getAPIReqParams('api/rfq/prices', 'GET'),
|
|
131
126
|
blacklistReqParams: this.getAPIReqParams('api/rfq/blacklist', 'GET'),
|
|
132
127
|
pairsCacheKey: this.pairsCacheKey,
|
|
133
|
-
pairsCacheTTLSecs: DEXALOT_PAIRS_CACHES_TTL_S,
|
|
134
128
|
pricesCacheKey: this.pricesCacheKey,
|
|
135
129
|
pricesCacheTTLSecs: DEXALOT_PRICES_CACHES_TTL_S,
|
|
136
130
|
tokensAddrCacheKey: this.tokensAddrCacheKey,
|
|
@@ -144,10 +138,7 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
144
138
|
}
|
|
145
139
|
|
|
146
140
|
async initializePricing(blockNumber: number): Promise<void> {
|
|
147
|
-
|
|
148
|
-
this.rateFetcher.start();
|
|
149
|
-
}
|
|
150
|
-
|
|
141
|
+
this.rateFetcher.start();
|
|
151
142
|
return;
|
|
152
143
|
}
|
|
153
144
|
|
|
@@ -169,7 +160,7 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
169
160
|
return null;
|
|
170
161
|
}
|
|
171
162
|
|
|
172
|
-
const cachedTokens = (await this.getCachedTokens()) || {};
|
|
163
|
+
const cachedTokens = (await this.rateFetcher.getCachedTokens()) || {};
|
|
173
164
|
if (
|
|
174
165
|
!(normalizedSrcToken.address in cachedTokens) ||
|
|
175
166
|
!(normalizedDestToken.address in cachedTokens)
|
|
@@ -180,7 +171,7 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
180
171
|
normalizedDestToken.symbol =
|
|
181
172
|
cachedTokens[normalizedDestToken.address].symbol;
|
|
182
173
|
|
|
183
|
-
const cachedPairs = (await this.getCachedPairs()) || {};
|
|
174
|
+
const cachedPairs = (await this.rateFetcher.getCachedPairs()) || {};
|
|
184
175
|
|
|
185
176
|
const potentialPairs = [
|
|
186
177
|
{
|
|
@@ -228,7 +219,7 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
228
219
|
return [];
|
|
229
220
|
}
|
|
230
221
|
|
|
231
|
-
const tokensAddr = (await this.getCachedTokensAddr()) || {};
|
|
222
|
+
const tokensAddr = (await this.rateFetcher.getCachedTokensAddr()) || {};
|
|
232
223
|
|
|
233
224
|
return [
|
|
234
225
|
this.getIdentifier(
|
|
@@ -446,7 +437,7 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
446
437
|
const normalizedSrcToken = this.normalizeToken(srcToken);
|
|
447
438
|
const normalizedDestToken = this.normalizeToken(destToken);
|
|
448
439
|
|
|
449
|
-
this.tokensMap = (await this.getCachedTokens()) || {};
|
|
440
|
+
this.tokensMap = (await this.rateFetcher.getCachedTokens()) || {};
|
|
450
441
|
if (normalizedSrcToken.address === normalizedDestToken.address) {
|
|
451
442
|
return null;
|
|
452
443
|
}
|
|
@@ -463,7 +454,7 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
463
454
|
: await this.getPoolIdentifiers(srcToken, destToken, side, blockNumber);
|
|
464
455
|
|
|
465
456
|
pools = await Promise.all(
|
|
466
|
-
pools.map(async p => !(await this.isRestrictedPool(p))),
|
|
457
|
+
pools.map(async p => !(await this.rateFetcher.isRestrictedPool(p))),
|
|
467
458
|
).then(res => pools.filter((_v, i) => res[i]));
|
|
468
459
|
if (pools.length === 0) {
|
|
469
460
|
return null;
|
|
@@ -477,12 +468,12 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
477
468
|
return null;
|
|
478
469
|
}
|
|
479
470
|
|
|
480
|
-
const priceMap = await this.getCachedPrices();
|
|
471
|
+
const priceMap = await this.rateFetcher.getCachedPrices();
|
|
481
472
|
if (!priceMap) {
|
|
482
473
|
return null;
|
|
483
474
|
}
|
|
484
475
|
|
|
485
|
-
const tokensAddr = (await this.getCachedTokensAddr()) || {};
|
|
476
|
+
const tokensAddr = (await this.rateFetcher.getCachedTokensAddr()) || {};
|
|
486
477
|
const pairKey = `${pairData.base}/${pairData.quote}`.toLowerCase();
|
|
487
478
|
if (
|
|
488
479
|
!(pairKey in priceMap) ||
|
|
@@ -565,7 +556,7 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
565
556
|
side: SwapSide,
|
|
566
557
|
options: PreprocessTransactionOptions,
|
|
567
558
|
): Promise<[OptimalSwapExchange<DexalotData>, ExchangeTxInfo]> {
|
|
568
|
-
if (await this.isBlacklisted(options.txOrigin)) {
|
|
559
|
+
if (await this.rateFetcher.isBlacklisted(options.txOrigin)) {
|
|
569
560
|
this.logger.warn(
|
|
570
561
|
`${this.dexKey}-${this.network}: blacklisted TX Origin address '${options.txOrigin}' trying to build a transaction. Bailing...`,
|
|
571
562
|
);
|
|
@@ -735,9 +726,12 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
735
726
|
this.logger.warn(
|
|
736
727
|
`${this.dexKey}-${this.network}: Encountered rate limited user=${options.userAddress}. Adding to local rate limit cache`,
|
|
737
728
|
);
|
|
738
|
-
await this.setRateLimited(
|
|
729
|
+
await this.rateFetcher.setRateLimited(
|
|
730
|
+
options.userAddress,
|
|
731
|
+
errorData.RetryAfter,
|
|
732
|
+
);
|
|
739
733
|
} else {
|
|
740
|
-
await this.setBlacklist(options.userAddress);
|
|
734
|
+
await this.rateFetcher.setBlacklist(options.userAddress);
|
|
741
735
|
this.logger.error(
|
|
742
736
|
`${this.dexKey}-${this.network}: Failed to fetch RFQ for ${swapIdentifier}: ${errorData.Reason}`,
|
|
743
737
|
);
|
|
@@ -758,7 +752,9 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
758
752
|
`${this.dexKey}-${this.network}: protocol is restricted for pools ${poolIdentifiers} due to swap: ${swapIdentifier}`,
|
|
759
753
|
);
|
|
760
754
|
await Promise.all(
|
|
761
|
-
poolIdentifiers.map(
|
|
755
|
+
poolIdentifiers.map(
|
|
756
|
+
async p => await this.rateFetcher.restrictPool(p),
|
|
757
|
+
),
|
|
762
758
|
);
|
|
763
759
|
}
|
|
764
760
|
}
|
|
@@ -844,106 +840,6 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
844
840
|
};
|
|
845
841
|
}
|
|
846
842
|
|
|
847
|
-
getRestrictedPoolKey(poolIdentifier: string): string {
|
|
848
|
-
return `${DEXALOT_RESTRICTED_CACHE_KEY}-${poolIdentifier}`;
|
|
849
|
-
}
|
|
850
|
-
|
|
851
|
-
async restrictPool(
|
|
852
|
-
poolIdentifier: string,
|
|
853
|
-
ttl: number = DEXALOT_RESTRICT_TTL_S,
|
|
854
|
-
): Promise<boolean> {
|
|
855
|
-
await this.dexHelper.cache.setex(
|
|
856
|
-
this.dexKey,
|
|
857
|
-
this.network,
|
|
858
|
-
this.getRestrictedPoolKey(poolIdentifier),
|
|
859
|
-
ttl,
|
|
860
|
-
'true',
|
|
861
|
-
);
|
|
862
|
-
return true;
|
|
863
|
-
}
|
|
864
|
-
|
|
865
|
-
async isRestrictedPool(poolIdentifier: string): Promise<boolean> {
|
|
866
|
-
const result = await this.dexHelper.cache.get(
|
|
867
|
-
this.dexKey,
|
|
868
|
-
this.network,
|
|
869
|
-
this.getRestrictedPoolKey(poolIdentifier),
|
|
870
|
-
);
|
|
871
|
-
|
|
872
|
-
return result === 'true';
|
|
873
|
-
}
|
|
874
|
-
|
|
875
|
-
async setBlacklist(
|
|
876
|
-
txOrigin: Address,
|
|
877
|
-
ttl: number = DEXALOT_BLACKLIST_CACHES_TTL_S,
|
|
878
|
-
): Promise<boolean> {
|
|
879
|
-
const cachedBlacklist = await this.dexHelper.cache.get(
|
|
880
|
-
this.dexKey,
|
|
881
|
-
this.network,
|
|
882
|
-
this.blacklistCacheKey,
|
|
883
|
-
);
|
|
884
|
-
|
|
885
|
-
let blacklist: string[] = [];
|
|
886
|
-
if (cachedBlacklist) {
|
|
887
|
-
blacklist = JSON.parse(cachedBlacklist);
|
|
888
|
-
}
|
|
889
|
-
|
|
890
|
-
blacklist.push(txOrigin.toLowerCase());
|
|
891
|
-
|
|
892
|
-
this.dexHelper.cache.setex(
|
|
893
|
-
this.dexKey,
|
|
894
|
-
this.network,
|
|
895
|
-
this.blacklistCacheKey,
|
|
896
|
-
ttl,
|
|
897
|
-
JSON.stringify(blacklist),
|
|
898
|
-
);
|
|
899
|
-
|
|
900
|
-
return true;
|
|
901
|
-
}
|
|
902
|
-
|
|
903
|
-
async isBlacklisted(txOrigin: Address): Promise<boolean> {
|
|
904
|
-
const cachedBlacklist = await this.dexHelper.cache.get(
|
|
905
|
-
this.dexKey,
|
|
906
|
-
this.network,
|
|
907
|
-
this.blacklistCacheKey,
|
|
908
|
-
);
|
|
909
|
-
|
|
910
|
-
if (cachedBlacklist) {
|
|
911
|
-
const blacklist = JSON.parse(cachedBlacklist) as string[];
|
|
912
|
-
return blacklist.includes(txOrigin.toLowerCase());
|
|
913
|
-
}
|
|
914
|
-
|
|
915
|
-
// To not show pricing for rate limited users
|
|
916
|
-
if (await this.isRateLimited(txOrigin)) {
|
|
917
|
-
return true;
|
|
918
|
-
}
|
|
919
|
-
|
|
920
|
-
return false;
|
|
921
|
-
}
|
|
922
|
-
|
|
923
|
-
getRateLimitedKey(address: Address) {
|
|
924
|
-
return `rate_limited_${address}`.toLowerCase();
|
|
925
|
-
}
|
|
926
|
-
|
|
927
|
-
async isRateLimited(txOrigin: Address): Promise<boolean> {
|
|
928
|
-
const result = await this.dexHelper.cache.get(
|
|
929
|
-
this.dexKey,
|
|
930
|
-
this.network,
|
|
931
|
-
this.getRateLimitedKey(txOrigin),
|
|
932
|
-
);
|
|
933
|
-
return result === DEXALOT_RATELIMIT_CACHE_VALUE;
|
|
934
|
-
}
|
|
935
|
-
|
|
936
|
-
async setRateLimited(txOrigin: Address, ttl = DEXALOT_RATE_LIMITED_TTL_S) {
|
|
937
|
-
await this.dexHelper.cache.setex(
|
|
938
|
-
this.dexKey,
|
|
939
|
-
this.network,
|
|
940
|
-
this.getRateLimitedKey(txOrigin),
|
|
941
|
-
ttl,
|
|
942
|
-
DEXALOT_RATELIMIT_CACHE_VALUE,
|
|
943
|
-
);
|
|
944
|
-
return true;
|
|
945
|
-
}
|
|
946
|
-
|
|
947
843
|
async getSimpleParam(
|
|
948
844
|
srcToken: string,
|
|
949
845
|
destToken: string,
|
|
@@ -1044,9 +940,9 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
1044
940
|
limit: number,
|
|
1045
941
|
): Promise<PoolLiquidity[]> {
|
|
1046
942
|
const normalizedTokenAddress = this.normalizeAddress(tokenAddress);
|
|
1047
|
-
const pairs = (await this.getCachedPairs()) || {};
|
|
1048
|
-
this.tokensMap = (await this.getCachedTokens()) || {};
|
|
1049
|
-
const tokensAddr = (await this.getCachedTokensAddr()) || {};
|
|
943
|
+
const pairs = (await this.rateFetcher.getCachedPairs()) || {};
|
|
944
|
+
this.tokensMap = (await this.rateFetcher.getCachedTokens()) || {};
|
|
945
|
+
const tokensAddr = (await this.rateFetcher.getCachedTokensAddr()) || {};
|
|
1050
946
|
const token = this.getTokenFromAddress(normalizedTokenAddress);
|
|
1051
947
|
if (!token) {
|
|
1052
948
|
return [];
|
|
@@ -1111,4 +1007,8 @@ export class Dexalot extends SimpleExchange implements IDex<DexalotData> {
|
|
|
1111
1007
|
this.rateFetcher.stop();
|
|
1112
1008
|
}
|
|
1113
1009
|
}
|
|
1010
|
+
|
|
1011
|
+
async isBlacklisted(userAddress: string): Promise<boolean> {
|
|
1012
|
+
return this.rateFetcher.isBlacklisted(userAddress);
|
|
1013
|
+
}
|
|
1114
1014
|
}
|