@bronlabs/intents-sdk 1.0.69 → 1.0.71

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.
@@ -33,7 +33,7 @@ interface PricingParams {
33
33
  liquidationReceiver: string;
34
34
  }
35
35
  export interface Order {
36
- status: bigint;
36
+ status: number;
37
37
  user: string;
38
38
  solver: string;
39
39
  baseParams: BaseParams;
@@ -5,7 +5,7 @@ export class EvmNetwork {
5
5
  this.nativeAssetDecimals = 18;
6
6
  this.retryDelay = 15000;
7
7
  this.rpcUrl = rpcUrl;
8
- this.provider = new ethers.JsonRpcProvider(rpcUrl);
8
+ this.provider = new ethers.JsonRpcProvider(rpcUrl, undefined, { staticNetwork: true });
9
9
  this.confirmations = confirmations;
10
10
  }
11
11
  async getDecimals(tokenAddress) {
@@ -1 +1 @@
1
- {"version":3,"file":"evm.js","sourceRoot":"","sources":["../../src/networks/evm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evm.js","sourceRoot":"","sources":["../../src/networks/evm.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ export interface OrderStatusChangedEvent {
4
4
  type: 'OrderStatusChanged';
5
5
  data: {
6
6
  orderId: string;
7
- status: bigint;
7
+ status: number;
8
8
  };
9
9
  event: ethers.EventLog;
10
10
  retries: number;
@@ -12,17 +12,31 @@ export interface OrderStatusChangedEvent {
12
12
  type EventProcessor = (event: OrderStatusChangedEvent) => Promise<void>;
13
13
  export declare class OrderIndexer {
14
14
  private readonly config;
15
- private readonly provider;
15
+ private readonly httpProvider;
16
+ private wsProvider;
16
17
  private readonly orderEngine;
17
18
  private readonly eventQueue;
18
19
  private readonly processors;
19
20
  private isRunning;
20
21
  private lastProcessedBlock;
22
+ private readonly rpcTimeoutMs;
23
+ private targetBlock;
24
+ private isProcessingQueue;
25
+ private isWorkerRunning;
26
+ private reconnectTimeout;
27
+ private healthCheckInterval;
21
28
  constructor(config: IntentsConfig);
22
29
  addProcessor(processor: EventProcessor): void;
23
30
  start(): Promise<void>;
24
31
  stop(): Promise<void>;
25
- private startIndexingLoop;
32
+ private processHistoricalEvents;
33
+ private startWebSocketListener;
34
+ private monitorWebSocketHealth;
35
+ private reconnectWebSocket;
36
+ private startCatchupWorker;
37
+ private catchupWorkerLoop;
38
+ private withTimeout;
39
+ private processBlockRange;
26
40
  private processEventQueue;
27
41
  }
28
42
  export {};
@@ -1,4 +1,5 @@
1
1
  import { ethers, FetchRequest } from 'ethers';
2
+ import WebSocket from 'ws';
2
3
  import { sleep, log } from './utils.js';
3
4
  import { EventQueue } from './eventQueue.js';
4
5
  import { initOrderEngine } from './contracts.js';
@@ -9,12 +10,19 @@ export class OrderIndexer {
9
10
  if (config.rpcAuthToken) {
10
11
  req.setHeader('x-api-key', config.rpcAuthToken);
11
12
  }
12
- this.provider = new ethers.JsonRpcProvider(req);
13
- this.orderEngine = initOrderEngine(config.orderEngineAddress, this.provider);
13
+ this.httpProvider = new ethers.JsonRpcProvider(req, undefined, { staticNetwork: true });
14
+ this.wsProvider = null;
15
+ this.orderEngine = initOrderEngine(config.orderEngineAddress, this.httpProvider);
14
16
  this.eventQueue = new EventQueue();
15
17
  this.processors = [];
16
18
  this.isRunning = false;
17
19
  this.lastProcessedBlock = 0;
20
+ this.targetBlock = 0;
21
+ this.isProcessingQueue = false;
22
+ this.isWorkerRunning = false;
23
+ this.reconnectTimeout = null;
24
+ this.rpcTimeoutMs = 15_000;
25
+ this.healthCheckInterval = null;
18
26
  }
19
27
  addProcessor(processor) {
20
28
  this.processors.push(processor);
@@ -25,9 +33,11 @@ export class OrderIndexer {
25
33
  return;
26
34
  }
27
35
  this.isRunning = true;
28
- log.info(`Starting indexer from block ${this.lastProcessedBlock}`);
36
+ log.info(`Starting indexer from offset ${this.config.startBlockOffset}`);
29
37
  try {
30
- await this.startIndexingLoop();
38
+ await this.processHistoricalEvents();
39
+ await this.startWebSocketListener();
40
+ this.startCatchupWorker();
31
41
  }
32
42
  catch (error) {
33
43
  log.error('Error starting indexer:', error);
@@ -41,90 +51,236 @@ export class OrderIndexer {
41
51
  }
42
52
  log.info('Stopping indexer...');
43
53
  this.isRunning = false;
54
+ if (this.reconnectTimeout) {
55
+ clearTimeout(this.reconnectTimeout);
56
+ this.reconnectTimeout = null;
57
+ }
58
+ if (this.healthCheckInterval) {
59
+ clearInterval(this.healthCheckInterval);
60
+ this.healthCheckInterval = null;
61
+ }
62
+ if (this.wsProvider) {
63
+ void this.wsProvider.removeAllListeners();
64
+ void this.wsProvider.destroy();
65
+ this.wsProvider = null;
66
+ }
44
67
  const maxWaitTime = 30000;
45
68
  const startTime = Date.now();
46
- while (!this.eventQueue.isEmpty() && (Date.now() - startTime) < maxWaitTime) {
47
- log.info(`Waiting for ${this.eventQueue.size()} events to be processed before stopping`);
48
- await this.processEventQueue();
69
+ while ((this.isWorkerRunning || !this.eventQueue.isEmpty()) && (Date.now() - startTime) < maxWaitTime) {
70
+ log.info(`Waiting for worker and ${this.eventQueue.size()} events to complete before stopping`);
49
71
  await sleep(1000);
50
72
  }
51
- if (!this.eventQueue.isEmpty()) {
52
- log.warn(`Stopping indexer with ${this.eventQueue.size()} unprocessed events after timeout`);
73
+ if (this.isWorkerRunning || !this.eventQueue.isEmpty()) {
74
+ log.warn(`Stopping indexer with worker still running or ${this.eventQueue.size()} unprocessed events after timeout`);
53
75
  }
54
76
  log.info('Indexer stopped');
55
77
  }
56
- async startIndexingLoop() {
57
- if (!this.isRunning)
58
- return;
78
+ async processHistoricalEvents() {
79
+ const currentBlock = await this.withTimeout(this.httpProvider.getBlockNumber(), 'httpProvider.getBlockNumber');
80
+ if (!this.lastProcessedBlock) {
81
+ this.lastProcessedBlock = currentBlock - this.config.startBlockOffset;
82
+ }
83
+ if (currentBlock > this.lastProcessedBlock) {
84
+ log.info(`Processing historical events from ${this.lastProcessedBlock + 1} to ${currentBlock}`);
85
+ this.targetBlock = currentBlock;
86
+ await this.processBlockRange(this.lastProcessedBlock + 1, currentBlock);
87
+ }
88
+ else {
89
+ this.targetBlock = this.lastProcessedBlock;
90
+ }
91
+ }
92
+ async startWebSocketListener() {
59
93
  try {
60
- const currentBlock = await this.provider.getBlockNumber();
61
- if (!this.lastProcessedBlock) {
62
- this.lastProcessedBlock = currentBlock - this.config.startBlockOffset;
63
- }
64
- if (currentBlock > this.lastProcessedBlock) {
65
- // Fetch historical events in chunks to avoid RPC limitations
66
- const chunkSize = 500;
67
- for (let fromBlock = this.lastProcessedBlock + 1; fromBlock <= currentBlock; fromBlock += chunkSize) {
68
- const toBlock = Math.min(fromBlock + chunkSize - 1, currentBlock);
69
- const events = await this.orderEngine.queryFilter(this.orderEngine.filters.OrderStatusChanged(), fromBlock, toBlock);
70
- for (const event of events) {
71
- const { args: { orderId, status } } = this.orderEngine.interface.parseLog({
72
- topics: event.topics,
73
- data: event.data
74
- });
75
- this.eventQueue.add({
76
- type: 'OrderStatusChanged',
77
- data: {
78
- orderId,
79
- status: BigInt(status)
80
- },
81
- event: event,
82
- retries: 0
83
- });
84
- }
85
- this.lastProcessedBlock = toBlock;
86
- if (this.isRunning) {
87
- await this.processEventQueue();
88
- }
94
+ const ws = new WebSocket(this.config.rpcUrl.replace(/^https?:\/\//, 'wss://'));
95
+ ws.on('error', error => {
96
+ if (!this.isRunning)
97
+ return;
98
+ log.error('WebSocket transport error:', error);
99
+ this.reconnectWebSocket();
100
+ });
101
+ ws.on('close', (code, reason) => {
102
+ if (!this.isRunning)
103
+ return;
104
+ log.warn(`WebSocket transport closed: ${code} ${reason?.toString?.() ?? ''}`);
105
+ this.reconnectWebSocket();
106
+ });
107
+ this.wsProvider = new ethers.WebSocketProvider(ws, undefined, { staticNetwork: true });
108
+ void this.wsProvider.on('block', (blockNumber) => {
109
+ if (!this.isRunning)
110
+ return;
111
+ if (blockNumber > this.targetBlock) {
112
+ this.targetBlock = blockNumber;
113
+ log.debug(`New target block: ${blockNumber}, current: ${this.lastProcessedBlock}`);
89
114
  }
90
- }
115
+ this.startCatchupWorker();
116
+ });
117
+ this.monitorWebSocketHealth();
118
+ log.info('WebSocket listener started');
91
119
  }
92
120
  catch (error) {
93
- log.error('Error in indexing loop: ', error);
121
+ log.error('Error starting WebSocket:', error);
122
+ this.reconnectWebSocket();
94
123
  }
95
- // Schedule next iteration
96
- if (this.isRunning) {
97
- setTimeout(() => this.startIndexingLoop(), this.config.pollingInterval);
124
+ }
125
+ monitorWebSocketHealth() {
126
+ this.healthCheckInterval = setInterval(async () => {
127
+ if (!this.isRunning) {
128
+ if (this.healthCheckInterval) {
129
+ clearInterval(this.healthCheckInterval);
130
+ this.healthCheckInterval = null;
131
+ }
132
+ return;
133
+ }
134
+ if (!this.wsProvider) {
135
+ if (this.healthCheckInterval) {
136
+ clearInterval(this.healthCheckInterval);
137
+ this.healthCheckInterval = null;
138
+ }
139
+ this.reconnectWebSocket();
140
+ return;
141
+ }
142
+ try {
143
+ await this.withTimeout(this.wsProvider.getBlockNumber(), 'wsProvider.getBlockNumber');
144
+ }
145
+ catch (error) {
146
+ log.error('WebSocket health check failed:', error);
147
+ if (this.healthCheckInterval) {
148
+ clearInterval(this.healthCheckInterval);
149
+ this.healthCheckInterval = null;
150
+ }
151
+ this.reconnectWebSocket();
152
+ }
153
+ }, 30000);
154
+ }
155
+ reconnectWebSocket() {
156
+ if (!this.isRunning || this.reconnectTimeout)
157
+ return;
158
+ if (this.healthCheckInterval) {
159
+ clearInterval(this.healthCheckInterval);
160
+ this.healthCheckInterval = null;
98
161
  }
162
+ if (this.wsProvider) {
163
+ void this.wsProvider.removeAllListeners();
164
+ void this.wsProvider.destroy();
165
+ this.wsProvider = null;
166
+ }
167
+ log.info('Reconnecting WebSocket in 5 seconds...');
168
+ this.reconnectTimeout = setTimeout(async () => {
169
+ this.reconnectTimeout = null;
170
+ if (this.isRunning) {
171
+ try {
172
+ await this.startWebSocketListener();
173
+ this.startCatchupWorker();
174
+ }
175
+ catch (error) {
176
+ log.error('Error reconnecting WebSocket:', error);
177
+ this.reconnectWebSocket();
178
+ }
179
+ }
180
+ }, 5000);
99
181
  }
100
- async processEventQueue() {
101
- if (this.eventQueue.isEmpty() || this.processors.length === 0)
182
+ startCatchupWorker() {
183
+ if (this.isWorkerRunning)
102
184
  return;
103
- while (!this.eventQueue.isEmpty()) {
104
- const event = this.eventQueue.peek();
105
- if (!event)
106
- continue;
185
+ this.isWorkerRunning = true;
186
+ this.catchupWorkerLoop().catch(error => {
187
+ log.error('Catchup worker error:', error);
188
+ this.isWorkerRunning = false;
189
+ this.reconnectWebSocket();
190
+ });
191
+ }
192
+ async catchupWorkerLoop() {
193
+ while (this.isRunning) {
194
+ if (this.targetBlock > this.lastProcessedBlock) {
195
+ try {
196
+ await this.processBlockRange(this.lastProcessedBlock + 1, this.targetBlock);
197
+ }
198
+ catch (error) {
199
+ log.error('Error in catchup worker:', error);
200
+ this.reconnectWebSocket();
201
+ await sleep(5000);
202
+ }
203
+ }
204
+ else {
205
+ await sleep(300);
206
+ }
207
+ }
208
+ this.isWorkerRunning = false;
209
+ log.info('Catchup worker stopped');
210
+ }
211
+ async withTimeout(promise, label) {
212
+ return await Promise.race([
213
+ promise,
214
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`RPC timeout in ${label} after ${this.rpcTimeoutMs}ms`)), this.rpcTimeoutMs))
215
+ ]);
216
+ }
217
+ async processBlockRange(fromBlock, toBlock) {
218
+ const chunkSize = 500;
219
+ for (let from = fromBlock; from <= toBlock; from += chunkSize) {
220
+ if (!this.isRunning)
221
+ break;
222
+ const to = Math.min(from + chunkSize - 1, toBlock);
107
223
  try {
108
- // Process the event with all registered processors
109
- for (const processor of this.processors) {
110
- await processor(event);
224
+ const events = await this.withTimeout(this.orderEngine.queryFilter(this.orderEngine.filters.OrderStatusChanged(), from, to), `orderEngine.queryFilter ${from}-${to}`);
225
+ for (const event of events) {
226
+ const { args: { orderId, status } } = this.orderEngine.interface.parseLog({
227
+ topics: event.topics,
228
+ data: event.data
229
+ });
230
+ this.eventQueue.add({
231
+ type: 'OrderStatusChanged',
232
+ data: {
233
+ orderId,
234
+ status: Number(status)
235
+ },
236
+ event: event,
237
+ retries: 0
238
+ });
239
+ }
240
+ this.lastProcessedBlock = to;
241
+ if (this.isRunning && !this.eventQueue.isEmpty()) {
242
+ await this.processEventQueue();
111
243
  }
112
- this.eventQueue.remove();
113
244
  }
114
245
  catch (error) {
115
- log.error(`Error processing event:`, error);
116
- // Retry logic
117
- if (event.retries < this.config.maxRetries) {
118
- event.retries++;
119
- log.info(`Retrying event processing (${event.retries}/${this.config.maxRetries})`);
120
- await sleep(this.config.retryDelay);
246
+ log.error(`Error processing block range ${from}-${to}:`, error);
247
+ throw error;
248
+ }
249
+ }
250
+ }
251
+ async processEventQueue() {
252
+ if (this.isProcessingQueue || this.eventQueue.isEmpty() || this.processors.length === 0) {
253
+ return;
254
+ }
255
+ this.isProcessingQueue = true;
256
+ try {
257
+ while (!this.eventQueue.isEmpty()) {
258
+ const event = this.eventQueue.peek();
259
+ if (!event)
260
+ continue;
261
+ try {
262
+ for (const processor of this.processors) {
263
+ await processor(event);
264
+ }
265
+ this.eventQueue.remove();
121
266
  }
122
- else {
123
- log.error(`Max retries reached for event, removing from queue:`, event);
124
- this.eventQueue.remove(); // Could add dead letter queue here for manual inspection
267
+ catch (error) {
268
+ log.error(`Error processing event:`, error);
269
+ if (event.retries < this.config.maxRetries) {
270
+ event.retries++;
271
+ log.info(`Retrying event processing (${event.retries}/${this.config.maxRetries})`);
272
+ await sleep(this.config.retryDelay);
273
+ }
274
+ else {
275
+ log.error(`Max retries reached for event, removing from queue:`, event);
276
+ this.eventQueue.remove();
277
+ }
125
278
  }
126
279
  }
127
280
  }
281
+ finally {
282
+ this.isProcessingQueue = false;
283
+ }
128
284
  }
129
285
  }
130
286
  //# sourceMappingURL=orderIndexer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"orderIndexer.js","sourceRoot":"","sources":["../src/orderIndexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orderIndexer.js","sourceRoot":"","sources":["../src/orderIndexer.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { EventQueue } from './eventQueue.js';
2
2
  type OrderEvent = {
3
3
  orderId: string;
4
- status: bigint;
4
+ status: number;
5
5
  attempts?: number;
6
6
  nextAttemptAt?: number;
7
7
  };
@@ -9,7 +9,7 @@ export declare abstract class OrderProcessor {
9
9
  protected isRunning: boolean;
10
10
  protected delayedQueue: EventQueue<OrderEvent>;
11
11
  protected constructor();
12
- abstract process(orderId: string, status: bigint): Promise<void>;
12
+ abstract process(orderId: string, status: number): Promise<void>;
13
13
  stop(): Promise<void>;
14
14
  private processDelayedQueue;
15
15
  private backoffMs;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bronlabs/intents-sdk",
3
- "version": "1.0.69",
3
+ "version": "1.0.71",
4
4
  "description": "SDK for Intents DeFi smart contracts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",