@paraswap/dex-lib 4.0.6-rfq-pub-sub.3 → 4.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/prettier.xml +7 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/build/abi/fluid-dex/fluid-dex.abi.json +579 -25
  10. package/build/abi/integral/factory.json +333 -0
  11. package/build/abi/integral/oracle.json +501 -0
  12. package/build/abi/{inception/inception-ineth-pool.json → integral/pool.json} +522 -543
  13. package/build/abi/{wombat/pool.json → integral/relayer.json} +720 -473
  14. package/build/dex/aave-v1/aave-v1.d.ts +1 -2
  15. package/build/dex/aave-v1/aave-v1.js +0 -23
  16. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  17. package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +49 -0
  18. package/build/dex/fluid-dex/fluid-dex-generate-pool.js +104 -0
  19. package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +1 -0
  20. package/build/dex/fluid-dex/fluid-dex-liquidity-proxy.d.ts +1 -1
  21. package/build/dex/fluid-dex/fluid-dex-liquidity-proxy.js.map +1 -1
  22. package/build/dex/fluid-dex/fluid-dex-pool.js +1 -2
  23. package/build/dex/fluid-dex/fluid-dex-pool.js.map +1 -1
  24. package/build/dex/fluid-dex/fluid-dex.d.ts +21 -2
  25. package/build/dex/fluid-dex/fluid-dex.js +108 -37
  26. package/build/dex/fluid-dex/fluid-dex.js.map +1 -1
  27. package/build/dex/fluid-dex/types.d.ts +3 -1
  28. package/build/dex/generic-rfq/generic-rfq.js +2 -1
  29. package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
  30. package/build/dex/generic-rfq/rate-fetcher.d.ts +1 -4
  31. package/build/dex/generic-rfq/rate-fetcher.js +20 -52
  32. package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
  33. package/build/dex/integral/config.d.ts +4 -0
  34. package/build/dex/integral/config.js +20 -0
  35. package/build/dex/integral/config.js.map +1 -0
  36. package/build/dex/integral/context.d.ts +40 -0
  37. package/build/dex/integral/context.js +158 -0
  38. package/build/dex/integral/context.js.map +1 -0
  39. package/build/dex/integral/integral-factory.d.ts +24 -0
  40. package/build/dex/integral/integral-factory.js +95 -0
  41. package/build/dex/integral/integral-factory.js.map +1 -0
  42. package/build/dex/integral/integral-pool.d.ts +50 -0
  43. package/build/dex/integral/integral-pool.js +149 -0
  44. package/build/dex/integral/integral-pool.js.map +1 -0
  45. package/build/dex/integral/integral-pricing.d.ts +18 -0
  46. package/build/dex/integral/integral-pricing.js +114 -0
  47. package/build/dex/integral/integral-pricing.js.map +1 -0
  48. package/build/dex/integral/integral-relayer.d.ts +42 -0
  49. package/build/dex/integral/integral-relayer.js +192 -0
  50. package/build/dex/integral/integral-relayer.js.map +1 -0
  51. package/build/dex/integral/integral-token.d.ts +27 -0
  52. package/build/dex/integral/integral-token.js +59 -0
  53. package/build/dex/integral/integral-token.js.map +1 -0
  54. package/build/dex/integral/integral.d.ts +41 -0
  55. package/build/dex/integral/integral.js +376 -0
  56. package/build/dex/integral/integral.js.map +1 -0
  57. package/build/dex/integral/types.d.ts +85 -0
  58. package/build/dex/integral/types.js +9 -0
  59. package/build/dex/integral/types.js.map +1 -0
  60. package/build/dex/integral/utils-e2e.d.ts +9 -0
  61. package/build/dex/integral/utils-e2e.js +131 -0
  62. package/build/dex/integral/utils-e2e.js.map +1 -0
  63. package/build/dex/integral/utils.d.ts +17 -0
  64. package/build/dex/integral/utils.js +94 -0
  65. package/build/dex/integral/utils.js.map +1 -0
  66. package/build/dex/jarvis.d.ts +1 -2
  67. package/build/dex/jarvis.js +0 -58
  68. package/build/dex/jarvis.js.map +1 -1
  69. package/build/dex/platypus/platypus.d.ts +1 -2
  70. package/build/dex/platypus/platypus.js +0 -45
  71. package/build/dex/platypus/platypus.js.map +1 -1
  72. package/build/dex/stable-pool.js +8 -1
  73. package/build/dex/stable-pool.js.map +1 -1
  74. package/build/dex/swaap-v1/swaap-v1.d.ts +1 -2
  75. package/build/dex/swaap-v1/swaap-v1.js +0 -14
  76. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  77. package/build/dex/trader-joe-v2.1/optimizer.d.ts +2 -0
  78. package/build/dex/trader-joe-v2.1/optimizer.js +47 -0
  79. package/build/dex/trader-joe-v2.1/optimizer.js.map +1 -0
  80. package/build/dex/zerox/index.d.ts +26 -4
  81. package/build/dex/zerox/index.js +42 -50
  82. package/build/dex/zerox/index.js.map +1 -1
  83. package/build/dex/zerox/types.d.ts +0 -29
  84. package/build/dex/zerox/types.js +1 -8
  85. package/build/dex/zerox/types.js.map +1 -1
  86. package/build/dex-helper/dummy-dex-helper.js +0 -7
  87. package/build/dex-helper/dummy-dex-helper.js.map +1 -1
  88. package/build/dex-helper/icache.d.ts +0 -2
  89. package/package.json +1 -1
  90. package/src/abi/fluid-dex/fluid-dex.abi.json +581 -25
  91. package/src/dex/fluid-dex/constants.ts +1 -0
  92. package/src/dex/fluid-dex/fluid-dex-e2e.test.ts +17 -0
  93. package/src/dex/fluid-dex/fluid-dex-events.test.ts +55 -5
  94. package/src/dex/fluid-dex/fluid-dex-liquidity-proxy.ts +1 -2
  95. package/src/dex/fluid-dex/fluid-dex-pool.ts +138 -0
  96. package/src/dex/fluid-dex/fluid-dex.ts +221 -69
  97. package/src/dex/fluid-dex/types.ts +3 -1
  98. package/src/dex/generic-rfq/generic-rfq.ts +6 -1
  99. package/src/dex/generic-rfq/rate-fetcher.ts +42 -77
  100. package/src/dex-helper/dummy-dex-helper.ts +0 -13
  101. package/src/dex-helper/icache.ts +0 -4
  102. package/tests/constants-e2e.ts +5 -0
  103. package/.vscode/launch.json +0 -53
  104. package/.vscode/settings.json +0 -2
  105. package/.vscode/tasks.json +0 -15
  106. package/build/abi/inception/inception-ratio-feed.json +0 -329
  107. package/build/abi/inception/inception-vault.json +0 -991
  108. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +0 -52
  109. package/build/abi/usual-m-smart-m/usualM.abi.json +0 -483
  110. package/build/abi/usual-m-usd0/usualCollateralDao.abi.json +0 -681
  111. package/build/abi/usual-m-wrapped-m/usualM.abi.json +0 -509
  112. package/build/dex/aave-v2/tokens-avalanche.json +0 -44
  113. package/build/dex/aave-v2/tokens-mainnet.json +0 -188
  114. package/build/dex/aave-v2/tokens-polygon.json +0 -44
  115. package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +0 -729
  116. package/build/dex/balancer-v3/abi/balancerBatchRouter.js +0 -732
  117. package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +0 -1
  118. package/build/dex/balancer-v3/abi/balancerRouter.d.ts +0 -1406
  119. package/build/dex/balancer-v3/abi/balancerRouter.js +0 -1175
  120. package/build/dex/balancer-v3/abi/balancerRouter.js.map +0 -1
  121. package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +0 -2081
  122. package/build/dex/balancer-v3/abi/vaultExtension.V3.js +0 -1851
  123. package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +0 -1
  124. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +0 -34
  125. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +0 -406
  126. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +0 -1
  127. package/build/dex/inception/config.d.ts +0 -4
  128. package/build/dex/inception/config.js +0 -109
  129. package/build/dex/inception/config.js.map +0 -1
  130. package/build/dex/inception/inception-event-pool.d.ts +0 -16
  131. package/build/dex/inception/inception-event-pool.js +0 -49
  132. package/build/dex/inception/inception-event-pool.js.map +0 -1
  133. package/build/dex/inception/inception.d.ts +0 -43
  134. package/build/dex/inception/inception.js +0 -180
  135. package/build/dex/inception/inception.js.map +0 -1
  136. package/build/dex/inception/tokens.d.ts +0 -9
  137. package/build/dex/inception/tokens.js +0 -28
  138. package/build/dex/inception/tokens.js.map +0 -1
  139. package/build/dex/inception/types.d.ts +0 -22
  140. package/build/dex/inception/types.js +0 -3
  141. package/build/dex/inception/types.js.map +0 -1
  142. package/build/dex/inception/utils.d.ts +0 -7
  143. package/build/dex/inception/utils.js +0 -58
  144. package/build/dex/inception/utils.js.map +0 -1
  145. package/build/dex/maker-psm/scripts/gem.abi.json +0 -136
  146. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  147. package/build/dex/maker-psm/scripts/validate-state.js +0 -185
  148. package/build/dex/maker-psm/scripts/validate-state.js.map +0 -1
  149. package/build/dex/maker-psm/scripts/vat.abi.json +0 -243
  150. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +0 -1
  151. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +0 -53
  152. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +0 -1
  153. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +0 -17
  154. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +0 -64
  155. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +0 -1
  156. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +0 -17
  157. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +0 -79
  158. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +0 -1
  159. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +0 -4
  160. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +0 -43
  161. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +0 -1
  162. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +0 -1
  163. package/build/dex/uniswap-v3/uniswap-v3-worker.js +0 -10
  164. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +0 -1
  165. package/build/dex/usual/types.d.ts +0 -13
  166. package/build/dex/usual/types.js +0 -3
  167. package/build/dex/usual/types.js.map +0 -1
  168. package/build/dex/usual/usual-bond.d.ts +0 -18
  169. package/build/dex/usual/usual-bond.js +0 -52
  170. package/build/dex/usual/usual-bond.js.map +0 -1
  171. package/build/dex/usual/usual-m-smart-m.d.ts +0 -17
  172. package/build/dex/usual/usual-m-smart-m.js +0 -50
  173. package/build/dex/usual/usual-m-smart-m.js.map +0 -1
  174. package/build/dex/usual/usual-m-usd0.d.ts +0 -17
  175. package/build/dex/usual/usual-m-usd0.js +0 -51
  176. package/build/dex/usual/usual-m-usd0.js.map +0 -1
  177. package/build/dex/usual/usual-m-wrapped-m.d.ts +0 -17
  178. package/build/dex/usual/usual-m-wrapped-m.js +0 -50
  179. package/build/dex/usual/usual-m-wrapped-m.js.map +0 -1
  180. package/build/dex/usual/usual.d.ts +0 -27
  181. package/build/dex/usual/usual.js +0 -125
  182. package/build/dex/usual/usual.js.map +0 -1
  183. package/build/dex/usual-m-smart-m/config.d.ts +0 -3
  184. package/build/dex/usual-m-smart-m/config.js +0 -13
  185. package/build/dex/usual-m-smart-m/config.js.map +0 -1
  186. package/build/dex/usual-m-smart-m/types.d.ts +0 -7
  187. package/build/dex/usual-m-smart-m/types.js +0 -3
  188. package/build/dex/usual-m-smart-m/types.js.map +0 -1
  189. package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +0 -35
  190. package/build/dex/usual-m-smart-m/usual-m-smart-m.js +0 -161
  191. package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +0 -1
  192. package/build/dex/usual-m-usd0/config.d.ts +0 -3
  193. package/build/dex/usual-m-usd0/config.js +0 -14
  194. package/build/dex/usual-m-usd0/config.js.map +0 -1
  195. package/build/dex/usual-m-usd0/types.d.ts +0 -8
  196. package/build/dex/usual-m-usd0/types.js +0 -3
  197. package/build/dex/usual-m-usd0/types.js.map +0 -1
  198. package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +0 -35
  199. package/build/dex/usual-m-usd0/usual-m-usd0.js +0 -159
  200. package/build/dex/usual-m-usd0/usual-m-usd0.js.map +0 -1
  201. package/build/lib/pub-sub.d.ts +0 -39
  202. package/build/lib/pub-sub.js +0 -133
  203. package/build/lib/pub-sub.js.map +0 -1
  204. package/src/lib/pub-sub.ts +0 -174
@@ -1,133 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SetPubSub = exports.JsonPubSub = void 0;
7
- const node_cache_1 = __importDefault(require("node-cache"));
8
- const lodash_1 = __importDefault(require("lodash"));
9
- class JsonPubSub {
10
- dexHelper;
11
- dexKey;
12
- channel;
13
- network;
14
- localCache = new node_cache_1.default();
15
- // TODO-rfq-ps: temporary logger
16
- logger;
17
- constructor(dexHelper, dexKey, channel) {
18
- this.dexHelper = dexHelper;
19
- this.dexKey = dexKey;
20
- this.network = this.dexHelper.config.data.network;
21
- this.channel = `${this.network}_${this.dexKey}_${channel}`;
22
- this.logger = this.dexHelper.getLogger(`JsonPubSub_${this.channel}`);
23
- }
24
- initialize() {
25
- this.subscribe();
26
- }
27
- subscribe() {
28
- this.logger.info(`Subscribing to ${this.channel}`);
29
- this.dexHelper.cache.subscribe(this.channel, (_, msg) => {
30
- const decodedMsg = JSON.parse(msg);
31
- this.handleSubscription(decodedMsg);
32
- });
33
- }
34
- publish(data, ttl) {
35
- this.logger.info(`Publishing to ${this.channel}`);
36
- const expiresAt = Math.round(Date.now() / 1000) + ttl;
37
- this.dexHelper.cache.publish(this.channel, JSON.stringify({ expiresAt, data }));
38
- }
39
- handleSubscription(json) {
40
- this.logger.info(`Received message from ${this.channel}`);
41
- const { expiresAt, data } = json;
42
- const now = Math.round(Date.now() / 1000);
43
- // calculating ttl as message might come with the delay
44
- const ttl = expiresAt - now;
45
- const keys = Object.keys(data);
46
- for (const key of keys) {
47
- this.localCache.set(key, data[key], ttl);
48
- }
49
- }
50
- async getAndCache(key) {
51
- const localValue = this.localCache.get(key);
52
- // if (localValue) {
53
- // return localValue;
54
- // }
55
- const [value, ttl] = await Promise.all([
56
- this.dexHelper.cache.get(this.dexKey, this.network, key),
57
- this.dexHelper.cache.ttl(this.dexKey, this.network, key),
58
- ]);
59
- // TODO-rfq-ps: compare local and cache value
60
- const isEqual = lodash_1.default.isEqual(localValue, value);
61
- if (!isEqual) {
62
- this.logger.error('Values are not equal', { localValue, value });
63
- }
64
- if (value && ttl > 0) {
65
- // setting ttl same as in cache
66
- // TODO-ps: check if ttl is not null
67
- const parsedValue = JSON.parse(value);
68
- this.localCache.set(key, parsedValue, ttl);
69
- return parsedValue;
70
- }
71
- return null;
72
- }
73
- }
74
- exports.JsonPubSub = JsonPubSub;
75
- class SetPubSub {
76
- dexHelper;
77
- dexKey;
78
- blackListCacheKey;
79
- channel;
80
- network;
81
- set = new Set();
82
- // TODO-rfq-ps: temporary logger
83
- logger;
84
- constructor(dexHelper, dexKey, channel, blackListCacheKey) {
85
- this.dexHelper = dexHelper;
86
- this.dexKey = dexKey;
87
- this.blackListCacheKey = blackListCacheKey;
88
- this.network = this.dexHelper.config.data.network;
89
- this.channel = `${this.network}_${this.dexKey}_${channel}`;
90
- this.logger = this.dexHelper.getLogger(`SetPubSub_${this.channel}`);
91
- }
92
- async initialize(key) {
93
- // as there's no lazy load, we need to initialize the set
94
- const initSet = await this.dexHelper.cache.smembers(key);
95
- for (const member of initSet) {
96
- this.set.add(member);
97
- }
98
- this.subscribe();
99
- }
100
- subscribe() {
101
- this.logger.info(`Subscribing to ${this.channel}`);
102
- this.dexHelper.cache.subscribe(this.channel, (_, msg) => {
103
- const decodedMsg = JSON.parse(msg);
104
- this.handleSubscription(decodedMsg);
105
- });
106
- }
107
- publish(set) {
108
- this.logger.info(`Publishing to ${this.channel}`);
109
- // as there's no lazy load, also store locally
110
- for (const key of set) {
111
- this.set.add(key);
112
- }
113
- this.dexHelper.cache.publish(this.channel, JSON.stringify(set));
114
- }
115
- handleSubscription(set) {
116
- this.logger.info(`Received message from ${this.channel}`);
117
- for (const key of set) {
118
- this.set.add(key);
119
- }
120
- }
121
- async has(key) {
122
- const localValue = this.set.has(key);
123
- const value = await this.dexHelper.cache.sismember(this.blackListCacheKey, key);
124
- // TODO-rfq-ps: compare local and cache value
125
- const isEqual = localValue === value;
126
- if (!isEqual) {
127
- this.logger.error('Values are not equal', { localValue, value });
128
- }
129
- return value;
130
- }
131
- }
132
- exports.SetPubSub = SetPubSub;
133
- //# sourceMappingURL=pub-sub.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pub-sub.js","sourceRoot":"","sources":["../../src/lib/pub-sub.ts"],"names":[],"mappings":"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"}
@@ -1,174 +0,0 @@
1
- import NodeCache from 'node-cache';
2
- import { Network } from '../constants';
3
- import { IDexHelper } from '../dex-helper';
4
- import { Logger } from '../types';
5
- import _ from 'lodash';
6
-
7
- type JsonPubSubMsg = {
8
- expiresAt: number;
9
- data: Record<string, unknown>;
10
- };
11
-
12
- type SetPubSubMsg = string[];
13
-
14
- export class JsonPubSub {
15
- channel: string;
16
- network: Network;
17
- localCache: NodeCache = new NodeCache();
18
-
19
- // TODO-rfq-ps: temporary logger
20
- logger: Logger;
21
-
22
- constructor(
23
- private dexHelper: IDexHelper,
24
- private dexKey: string,
25
- channel: string,
26
- ) {
27
- this.network = this.dexHelper.config.data.network;
28
- this.channel = `${this.network}_${this.dexKey}_${channel}`;
29
-
30
- this.logger = this.dexHelper.getLogger(`JsonPubSub_${this.channel}`);
31
- }
32
-
33
- initialize() {
34
- this.subscribe();
35
- }
36
-
37
- subscribe() {
38
- this.logger.info(`Subscribing to ${this.channel}`);
39
-
40
- this.dexHelper.cache.subscribe(this.channel, (_, msg) => {
41
- const decodedMsg = JSON.parse(msg) as JsonPubSubMsg;
42
- this.handleSubscription(decodedMsg);
43
- });
44
- }
45
-
46
- publish(data: Record<string, unknown>, ttl: number) {
47
- this.logger.info(`Publishing to ${this.channel}`);
48
-
49
- const expiresAt = Math.round(Date.now() / 1000) + ttl;
50
- this.dexHelper.cache.publish(
51
- this.channel,
52
- JSON.stringify({ expiresAt, data }),
53
- );
54
- }
55
-
56
- handleSubscription(json: JsonPubSubMsg) {
57
- this.logger.info(`Received message from ${this.channel}`);
58
-
59
- const { expiresAt, data } = json;
60
-
61
- const now = Math.round(Date.now() / 1000);
62
- // calculating ttl as message might come with the delay
63
- const ttl = expiresAt - now;
64
-
65
- const keys = Object.keys(data);
66
- for (const key of keys) {
67
- this.localCache.set(key, data[key], ttl);
68
- }
69
- }
70
-
71
- async getAndCache<T>(key: string): Promise<T | null> {
72
- const localValue = this.localCache.get<T>(key);
73
-
74
- // if (localValue) {
75
- // return localValue;
76
- // }
77
-
78
- const [value, ttl] = await Promise.all([
79
- this.dexHelper.cache.get(this.dexKey, this.network, key),
80
- this.dexHelper.cache.ttl(this.dexKey, this.network, key),
81
- ]);
82
-
83
- // TODO-rfq-ps: compare local and cache value
84
- const isEqual = _.isEqual(localValue, value);
85
- if (!isEqual) {
86
- this.logger.error('Values are not equal', { localValue, value });
87
- }
88
-
89
- if (value && ttl > 0) {
90
- // setting ttl same as in cache
91
- // TODO-ps: check if ttl is not null
92
- const parsedValue = JSON.parse(value);
93
- this.localCache.set(key, parsedValue, ttl);
94
- return parsedValue;
95
- }
96
-
97
- return null;
98
- }
99
- }
100
-
101
- export class SetPubSub {
102
- channel: string;
103
- network: Network;
104
- set = new Set<string>();
105
-
106
- // TODO-rfq-ps: temporary logger
107
- logger: Logger;
108
-
109
- constructor(
110
- private dexHelper: IDexHelper,
111
- private dexKey: string,
112
- channel: string,
113
- private blackListCacheKey: string,
114
- ) {
115
- this.network = this.dexHelper.config.data.network;
116
- this.channel = `${this.network}_${this.dexKey}_${channel}`;
117
-
118
- this.logger = this.dexHelper.getLogger(`SetPubSub_${this.channel}`);
119
- }
120
-
121
- async initialize(key: string) {
122
- // as there's no lazy load, we need to initialize the set
123
- const initSet = await this.dexHelper.cache.smembers(key);
124
- for (const member of initSet) {
125
- this.set.add(member);
126
- }
127
-
128
- this.subscribe();
129
- }
130
-
131
- subscribe() {
132
- this.logger.info(`Subscribing to ${this.channel}`);
133
-
134
- this.dexHelper.cache.subscribe(this.channel, (_, msg) => {
135
- const decodedMsg = JSON.parse(msg) as SetPubSubMsg;
136
- this.handleSubscription(decodedMsg);
137
- });
138
- }
139
-
140
- publish(set: SetPubSubMsg) {
141
- this.logger.info(`Publishing to ${this.channel}`);
142
-
143
- // as there's no lazy load, also store locally
144
- for (const key of set) {
145
- this.set.add(key);
146
- }
147
- this.dexHelper.cache.publish(this.channel, JSON.stringify(set));
148
- }
149
-
150
- handleSubscription(set: SetPubSubMsg) {
151
- this.logger.info(`Received message from ${this.channel}`);
152
- for (const key of set) {
153
- this.set.add(key);
154
- }
155
- }
156
-
157
- async has(key: string) {
158
- const localValue = this.set.has(key);
159
-
160
- const value = await this.dexHelper.cache.sismember(
161
- this.blackListCacheKey,
162
- key,
163
- );
164
-
165
- // TODO-rfq-ps: compare local and cache value
166
- const isEqual = localValue === value;
167
-
168
- if (!isEqual) {
169
- this.logger.error('Values are not equal', { localValue, value });
170
- }
171
-
172
- return value;
173
- }
174
- }