tardis-machine 18.5.1 → 18.6.0

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 (26) hide show
  1. package/node_modules/tardis-dev/dist/downloaddatasets.d.ts.map +1 -1
  2. package/node_modules/tardis-dev/dist/downloaddatasets.js +10 -4
  3. package/node_modules/tardis-dev/dist/downloaddatasets.js.map +1 -1
  4. package/node_modules/tardis-dev/dist/handy.d.ts +2 -1
  5. package/node_modules/tardis-dev/dist/handy.d.ts.map +1 -1
  6. package/node_modules/tardis-dev/dist/handy.js +16 -7
  7. package/node_modules/tardis-dev/dist/handy.js.map +1 -1
  8. package/node_modules/tardis-dev/dist/mappers/bitflyer.js +3 -3
  9. package/node_modules/tardis-dev/dist/mappers/bitflyer.js.map +1 -1
  10. package/node_modules/tardis-dev/dist/mappers/bitget.js +9 -9
  11. package/node_modules/tardis-dev/dist/mappers/bitget.js.map +1 -1
  12. package/node_modules/tardis-dev/dist/realtimefeeds/coinbasederivatives.d.ts.map +1 -1
  13. package/node_modules/tardis-dev/dist/realtimefeeds/coinbasederivatives.js +3 -11
  14. package/node_modules/tardis-dev/dist/realtimefeeds/coinbasederivatives.js.map +1 -1
  15. package/node_modules/tardis-dev/dist/realtimefeeds/realtimefeed.d.ts +6 -2
  16. package/node_modules/tardis-dev/dist/realtimefeeds/realtimefeed.d.ts.map +1 -1
  17. package/node_modules/tardis-dev/dist/realtimefeeds/realtimefeed.js +73 -26
  18. package/node_modules/tardis-dev/dist/realtimefeeds/realtimefeed.js.map +1 -1
  19. package/node_modules/tardis-dev/package.json +1 -1
  20. package/node_modules/tardis-dev/src/downloaddatasets.ts +13 -4
  21. package/node_modules/tardis-dev/src/handy.ts +17 -7
  22. package/node_modules/tardis-dev/src/mappers/bitflyer.ts +3 -3
  23. package/node_modules/tardis-dev/src/mappers/bitget.ts +9 -9
  24. package/node_modules/tardis-dev/src/realtimefeeds/coinbasederivatives.ts +3 -11
  25. package/node_modules/tardis-dev/src/realtimefeeds/realtimefeed.ts +89 -28
  26. package/package.json +2 -2
@@ -4,7 +4,7 @@ import { setTimeout as sleep } from 'node:timers/promises';
4
4
  import { createDebug } from "../debug.js";
5
5
  import { getProxyAgent, HttpClientError, ONE_SEC_IN_MS, optimizeFilters } from "../handy.js";
6
6
  import { getMessageParser } from "../parsemessage.js";
7
- import { createManagedRealTimeIterator, mergeRealTime } from "../realtimeiterator.js";
7
+ import { closeIterator, createManagedRealTimeIterator, mergeRealTime } from "../realtimeiterator.js";
8
8
  let connectionCounter = 1;
9
9
  const ABORTED = Symbol('aborted');
10
10
  export class RealTimeFeedBase {
@@ -62,6 +62,7 @@ export class RealTimeFeedBase {
62
62
  let staleConnectionTimerId;
63
63
  let pingTimerId;
64
64
  let connectionError;
65
+ let delivered = false;
65
66
  try {
66
67
  this.manualSnapshotsBuffer.length = 0;
67
68
  const subscribeMessages = this.mapToSubscribeMessages(this._filters);
@@ -121,6 +122,7 @@ export class RealTimeFeedBase {
121
122
  }
122
123
  this.onMessage(messageDeserialized);
123
124
  yield messageDeserialized;
125
+ delivered = true;
124
126
  if (retries > 0) {
125
127
  // reset retries counter as we've received correct message from the connection
126
128
  retries = 0;
@@ -158,21 +160,12 @@ export class RealTimeFeedBase {
158
160
  if (connectionError !== undefined) {
159
161
  this._onError?.(connectionError);
160
162
  retries++;
161
- const MAX_DELAY = 32 * 1000;
162
- const httpError = connectionError instanceof HttpClientError ? connectionError : undefined;
163
- const isRateLimited = httpError?.status === 418 || httpError?.status === 429 || connectionError.message.includes('429');
164
- if (isRateLimited) {
165
- const fallbackDelay = httpError?.status === 418 ? 2 * 60 * 1000 : (MAX_DELAY / 2) * retries;
166
- retryDelay = httpError?.retryAfterMS ?? fallbackDelay;
167
- }
168
- else {
169
- retryDelay = Math.min(Math.pow(2, retries - 1) * 1000, MAX_DELAY);
170
- }
171
- this.debug('(connection id: %d) %s real-time feed connection error, retries count: %d, next retry delay: %dms, rate limited: %s error message: %o', connectionId, this._exchange, retries, retryDelay, isRateLimited, connectionError);
163
+ retryDelay = getRetryDelay(connectionError, retries);
164
+ this.debug('(connection id: %d) %s real-time feed connection error, retries count: %d, next retry delay: %dms, error message: %o', connectionId, this._exchange, retries, retryDelay, connectionError);
172
165
  }
173
- yield { __disconnect__: true };
166
+ yield { __disconnect__: true, error: connectionError, delivered };
174
167
  if (retryDelay !== undefined) {
175
- await this._wait(retryDelay, this._closeController.signal);
168
+ await wait(retryDelay, this._closeController.signal);
176
169
  }
177
170
  }
178
171
  }
@@ -246,14 +239,14 @@ export class RealTimeFeedBase {
246
239
  }
247
240
  this._send(connection, message);
248
241
  if (this.throttleSubscribeMS > 0) {
249
- await this._wait(this.throttleSubscribeMS, connection.controller.signal);
242
+ await wait(this.throttleSubscribeMS, connection.controller.signal);
250
243
  }
251
244
  }
252
245
  this.debug('(connection id: %d) established connection', connection.id);
253
246
  const messagesBeforeSnapshots = subscribeMessages.length === 0 ? 0 : subscribeMessages.length + 1;
254
247
  // Wait for subscription acknowledgements and the first data message before fetching snapshots.
255
248
  while (shouldCancel() === false && connection.receivedMessagesCount < messagesBeforeSnapshots) {
256
- await this._wait(100, connection.controller.signal);
249
+ await wait(100, connection.controller.signal);
257
250
  }
258
251
  if (shouldCancel()) {
259
252
  return;
@@ -302,17 +295,27 @@ export class RealTimeFeedBase {
302
295
  this.manualSnapshotsBuffer.length = 0;
303
296
  }
304
297
  }
305
- async _wait(delayMS, signal) {
306
- try {
307
- await sleep(delayMS, undefined, { signal });
308
- }
309
- catch (error) {
310
- if (signal.aborted === false) {
311
- throw error;
312
- }
298
+ }
299
+ async function wait(delayMS, signal) {
300
+ try {
301
+ await sleep(delayMS, undefined, { signal });
302
+ }
303
+ catch (error) {
304
+ if (signal.aborted === false) {
305
+ throw error;
313
306
  }
314
307
  }
315
308
  }
309
+ function getRetryDelay(error, retries) {
310
+ const MAX_DELAY = 32 * 1000;
311
+ const httpError = error instanceof HttpClientError ? error : undefined;
312
+ const isRateLimited = httpError?.status === 418 || httpError?.status === 429 || error.message.includes('429');
313
+ if (isRateLimited) {
314
+ const fallbackDelay = httpError?.status === 418 ? 2 * 60 * 1000 : (MAX_DELAY / 2) * retries;
315
+ return httpError?.retryAfterMS ?? fallbackDelay;
316
+ }
317
+ return Math.min(Math.pow(2, retries - 1) * 1000, MAX_DELAY);
318
+ }
316
319
  function resolveOrAbort(promise, signal) {
317
320
  if (signal.aborted) {
318
321
  return Promise.resolve(ABORTED);
@@ -332,11 +335,15 @@ function resolveOrAbort(promise, signal) {
332
335
  void promise.then((value) => settle(() => resolve(value)), (error) => settle(() => reject(error)));
333
336
  });
334
337
  }
338
+ // A disconnect resets all normalized state, so when any connection drops, the feed closes all its connections and pollers,
339
+ // yields one disconnect and opens them again after the retry delay of the failed connection.
335
340
  export class MultiConnectionRealTimeFeedBase {
336
341
  _exchange;
337
342
  _filters;
338
343
  _timeoutIntervalMS;
339
344
  _onError;
345
+ _closeController = new AbortController();
346
+ _connections;
340
347
  constructor(_exchange, _filters, _timeoutIntervalMS, _onError) {
341
348
  this._exchange = _exchange;
342
349
  this._filters = _filters;
@@ -344,9 +351,49 @@ export class MultiConnectionRealTimeFeedBase {
344
351
  this._onError = _onError;
345
352
  }
346
353
  [Symbol.asyncIterator]() {
347
- const realTimeFeeds = Array.from(this._getRealTimeFeeds(this._exchange, this._filters, this._timeoutIntervalMS, this._onError));
348
- return mergeRealTime(realTimeFeeds);
354
+ return createManagedRealTimeIterator(this._stream(), () => {
355
+ this._closeController.abort();
356
+ return this._connections?.return();
357
+ });
358
+ }
359
+ async *_stream() {
360
+ let retries = 0;
361
+ while (this._closeController.signal.aborted === false) {
362
+ this._connections = mergeRealTime(Array.from(this._getRealTimeFeeds(this._exchange, this._filters, this._timeoutIntervalMS, this._onError), untilDisconnect));
363
+ let disconnect;
364
+ for await (const message of this._connections) {
365
+ if (message.__disconnect__ === true) {
366
+ disconnect = message;
367
+ break;
368
+ }
369
+ yield message;
370
+ }
371
+ if (disconnect === undefined) {
372
+ return;
373
+ }
374
+ yield { __disconnect__: true };
375
+ if (disconnect.delivered === true) {
376
+ retries = 0;
377
+ }
378
+ if (disconnect.error !== undefined) {
379
+ retries++;
380
+ await wait(getRetryDelay(disconnect.error, retries), this._closeController.signal);
381
+ }
382
+ }
383
+ }
384
+ }
385
+ // A connection stops at its disconnect, so it cannot reconnect on its own before the feed restarts all connections.
386
+ function untilDisconnect(feed) {
387
+ const messages = feed[Symbol.asyncIterator]();
388
+ async function* stream() {
389
+ for await (const message of messages) {
390
+ yield message;
391
+ if (message.__disconnect__ === true) {
392
+ return;
393
+ }
394
+ }
349
395
  }
396
+ return createManagedRealTimeIterator(stream(), () => closeIterator(messages));
350
397
  }
351
398
  export class PoolingClientBase {
352
399
  _poolingIntervalSeconds;
@@ -1 +1 @@
1
- {"version":3,"file":"realtimefeed.js","sourceRoot":"","sources":["../../src/realtimefeeds/realtimefeed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtimefeed.js","sourceRoot":"","sources":["../../src/realtimefeeds/realtimefeed.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tardis-dev",
3
- "version": "18.5.1",
3
+ "version": "18.6.0",
4
4
  "engines": {
5
5
  "node": ">=24.19"
6
6
  },
@@ -11,9 +11,8 @@ const MILLISECONDS_IN_SINGLE_DAY = 24 * 60 * 60 * 1000
11
11
  const DEFAULT_DOWNLOAD_DIR = './datasets'
12
12
  const DATASET_DOWNLOAD_ATTEMPT_TIMEOUT_MS = 120_000
13
13
 
14
- const options = getOptions()
15
-
16
14
  export async function downloadDatasets(downloadDatasetsOptions: DownloadDatasetsOptions) {
15
+ const options = getOptions()
17
16
  const { exchange, dataTypes, from, to, symbols } = downloadDatasetsOptions
18
17
  const apiKey = downloadDatasetsOptions.apiKey !== undefined ? downloadDatasetsOptions.apiKey : options.apiKey
19
18
  const downloadDir = downloadDatasetsOptions.downloadDir !== undefined ? downloadDatasetsOptions.downloadDir : DEFAULT_DOWNLOAD_DIR
@@ -37,6 +36,8 @@ export async function downloadDatasets(downloadDatasetsOptions: DownloadDatasets
37
36
  exchange,
38
37
  symbol,
39
38
  apiKey,
39
+ datasetsEndpoint: options.datasetsEndpoint,
40
+ userAgent: options._userAgent,
40
41
  downloadDir,
41
42
  dataType,
42
43
  format,
@@ -53,6 +54,8 @@ export async function downloadDatasets(downloadDatasetsOptions: DownloadDatasets
53
54
  exchange,
54
55
  symbol,
55
56
  apiKey,
57
+ datasetsEndpoint: options.datasetsEndpoint,
58
+ userAgent: options._userAgent,
56
59
  downloadDir,
57
60
  dataType,
58
61
  format,
@@ -72,6 +75,8 @@ export async function downloadDatasets(downloadDatasetsOptions: DownloadDatasets
72
75
  exchange,
73
76
  symbol,
74
77
  apiKey,
78
+ datasetsEndpoint: options.datasetsEndpoint,
79
+ userAgent: options._userAgent,
75
80
  downloadDir,
76
81
  dataType,
77
82
  format,
@@ -99,6 +104,8 @@ async function downloadDataSet(downloadOptions: DownloadOptions, skipIfExists: b
99
104
 
100
105
  function getDownloadOptions({
101
106
  apiKey,
107
+ datasetsEndpoint,
108
+ userAgent,
102
109
  exchange,
103
110
  dataType,
104
111
  date,
@@ -113,6 +120,8 @@ function getDownloadOptions({
113
120
  date: Date
114
121
  format: string
115
122
  apiKey: string
123
+ datasetsEndpoint: string
124
+ userAgent: string
116
125
  downloadDir: string
117
126
  getFilename: (options: GetFilenameOptions) => string
118
127
  }): DownloadOptions {
@@ -120,7 +129,7 @@ function getDownloadOptions({
120
129
  const month = doubleDigit(date.getUTCMonth() + 1)
121
130
  const day = doubleDigit(date.getUTCDate())
122
131
 
123
- const url = `${options.datasetsEndpoint}/${exchange}/${dataType}/${year}/${month}/${day}/${encodeURIComponent(symbol)}.${format}.gz`
132
+ const url = `${datasetsEndpoint}/${exchange}/${dataType}/${year}/${month}/${day}/${encodeURIComponent(symbol)}.${format}.gz`
124
133
  const filename = getFilename({
125
134
  dataType,
126
135
  date,
@@ -134,7 +143,7 @@ function getDownloadOptions({
134
143
  return {
135
144
  url,
136
145
  downloadPath,
137
- userAgent: options._userAgent,
146
+ userAgent,
138
147
  apiKey,
139
148
  attemptTimeoutMS: DATASET_DOWNLOAD_ATTEMPT_TIMEOUT_MS
140
149
  }
@@ -67,12 +67,16 @@ export function* sequence(end: number, seed = 0) {
67
67
  export const ONE_SEC_IN_MS = 1000
68
68
 
69
69
  export class HttpError extends Error {
70
+ public readonly retryAfterMS: number | undefined
71
+
70
72
  constructor(
71
73
  public readonly status: number,
72
74
  public readonly responseText: string,
73
- public readonly url: string
75
+ public readonly url: string,
76
+ headers: Record<string, string> = {}
74
77
  ) {
75
78
  super(`HttpError: status code: ${status}, response text: ${responseText}`)
79
+ this.retryAfterMS = getRetryAfterDelayMS(headers)
76
80
  }
77
81
  }
78
82
 
@@ -616,6 +620,7 @@ export async function download({
616
620
  }
617
621
 
618
622
  const MAX_ATTEMPTS = 30
623
+ const MAX_RETRY_AFTER_MS = 300 * ONE_SEC_IN_MS
619
624
  let attempts = 0
620
625
 
621
626
  while (true) {
@@ -637,9 +642,11 @@ export async function download({
637
642
  error.status === 403 ||
638
643
  error.status === 404)
639
644
  const tooManyRequests = error instanceof HttpError && error.status === 429
645
+ const retryAfterMS = tooManyRequests ? error.retryAfterMS : undefined
646
+ const retryAfterTooLong = retryAfterMS !== undefined && retryAfterMS > MAX_RETRY_AFTER_MS
640
647
  const internalServiceError = error instanceof HttpError && error.status === 500
641
- // do not retry when we've got bad or unauthorized request or enough attempts
642
- if (unsupportedDataFeedEncoding || nonRetryableHttpError || attempts === MAX_ATTEMPTS) {
648
+ // do not retry when we've got bad or unauthorized request, too long Retry-After or enough attempts
649
+ if (unsupportedDataFeedEncoding || nonRetryableHttpError || retryAfterTooLong || attempts === MAX_ATTEMPTS) {
643
650
  throw error
644
651
  }
645
652
 
@@ -647,8 +654,11 @@ export async function download({
647
654
  const attemptsDelayMS = Math.min(Math.pow(2, attempts) * ONE_SEC_IN_MS, 120 * ONE_SEC_IN_MS)
648
655
  let nextAttemptDelayMS = randomIngridient + attemptsDelayMS
649
656
 
650
- if (tooManyRequests) {
651
- // when too many requests received wait one minute
657
+ if (retryAfterMS !== undefined) {
658
+ // wait as long as the API asked, with jitter so concurrent downloads do not retry at the same time
659
+ nextAttemptDelayMS = retryAfterMS + Math.random() * ONE_SEC_IN_MS
660
+ } else if (tooManyRequests) {
661
+ // when too many requests received without Retry-After wait one minute
652
662
  nextAttemptDelayMS += 60 * ONE_SEC_IN_MS
653
663
  }
654
664
  if (internalServiceError) {
@@ -695,11 +705,11 @@ async function _downloadFile(
695
705
  // based on https://github.com/nodejs/node/issues/28172 - only reliable way to consume response stream and avoiding all the 'gotchas'
696
706
  const response = await openDownloadResponse(url, requestOptions)
697
707
  const { statusCode } = response
708
+ const responseHeaders = parseNodeResponseHeaders(response.headers)
698
709
  if (statusCode !== 200) {
699
- throw new HttpError(statusCode ?? 0, await readResponseText(response), url)
710
+ throw new HttpError(statusCode ?? 0, await readResponseText(response), url, responseHeaders)
700
711
  }
701
712
 
702
- const responseHeaders = parseNodeResponseHeaders(response.headers)
703
713
  if (appendContentEncodingExtension) {
704
714
  const contentEncoding = asSingleHeaderValue(response.headers['content-encoding'])
705
715
  if (contentEncoding === 'zstd') {
@@ -13,7 +13,7 @@ export const bitflyerMappers = exchangeMappers({
13
13
 
14
14
  const bitflyerTradesMapper: Mapper<'bitflyer', Trade> = {
15
15
  canHandle(message: BitflyerExecutions | BitflyerBoard) {
16
- return message.params.channel.startsWith('lightning_executions')
16
+ return message.params?.channel.startsWith('lightning_executions') === true
17
17
  },
18
18
 
19
19
  getFilters(symbols?: string[]) {
@@ -59,7 +59,7 @@ class BitflyerBookChangeMapper implements Mapper<'bitflyer', BookChange> {
59
59
  private readonly _snapshotsInfo: Map<string, boolean> = new Map()
60
60
 
61
61
  canHandle(message: BitflyerExecutions | BitflyerBoard) {
62
- return message.params.channel.startsWith('lightning_board')
62
+ return message.params?.channel.startsWith('lightning_board') === true
63
63
  }
64
64
 
65
65
  getFilters(symbols?: string[]) {
@@ -106,7 +106,7 @@ class BitflyerBookChangeMapper implements Mapper<'bitflyer', BookChange> {
106
106
 
107
107
  const bitflyerBookTickerMapper: Mapper<'bitflyer', BookTicker> = {
108
108
  canHandle(message: BitflyerTicker) {
109
- return message.params.channel.startsWith('lightning_ticker')
109
+ return message.params?.channel.startsWith('lightning_ticker') === true
110
110
  },
111
111
 
112
112
  getFilters(symbols?: string[]) {
@@ -45,7 +45,7 @@ class BitgetTradesMapper implements Mapper<'bitget' | 'bitget-futures', Trade> {
45
45
  constructor(private readonly _exchange: Exchange) {}
46
46
 
47
47
  canHandle(message: BitgetTradeMessage) {
48
- return message.arg.channel === 'trade' && message.action === 'update'
48
+ return message.arg?.channel === 'trade' && message.action === 'update'
49
49
  }
50
50
 
51
51
  getFilters(symbols?: string[]) {
@@ -86,7 +86,7 @@ class BitgetBookChangeMapper implements Mapper<'bitget' | 'bitget-futures', Book
86
86
  constructor(private readonly _exchange: Exchange) {}
87
87
 
88
88
  canHandle(message: BitgetOrderbookMessage) {
89
- return message.arg.channel === 'books15' && message.action === 'snapshot'
89
+ return message.arg?.channel === 'books15' && message.action === 'snapshot'
90
90
  }
91
91
 
92
92
  getFilters(symbols?: string[]) {
@@ -120,7 +120,7 @@ class BitgetBookTickerMapper implements Mapper<'bitget' | 'bitget-futures', Book
120
120
  constructor(private readonly _exchange: Exchange) {}
121
121
 
122
122
  canHandle(message: BitgetBBoMessage) {
123
- return message.arg.channel === 'books1' && message.action === 'snapshot'
123
+ return message.arg?.channel === 'books1' && message.action === 'snapshot'
124
124
  }
125
125
 
126
126
  getFilters(symbols?: string[]) {
@@ -159,7 +159,7 @@ class BitgetDerivativeTickerMapper implements Mapper<'bitget-futures', Derivativ
159
159
  private readonly pendingTickerInfoHelper = new PendingTickerInfoHelper()
160
160
 
161
161
  canHandle(message: BitgetTickerMessage) {
162
- return message.arg.channel === 'ticker' && message.action === 'snapshot'
162
+ return message.arg?.channel === 'ticker' && message.action === 'snapshot'
163
163
  }
164
164
 
165
165
  getFilters(symbols?: string[]) {
@@ -198,7 +198,7 @@ class BitgetV3TradesMapper implements Mapper<'bitget' | 'bitget-futures', Trade>
198
198
  constructor(private readonly _exchange: Exchange) {}
199
199
 
200
200
  canHandle(message: BitgetV3TradeMessage) {
201
- return message.arg.topic === 'publicTrade' && message.action === 'update'
201
+ return message.arg?.topic === 'publicTrade' && message.action === 'update'
202
202
  }
203
203
 
204
204
  getFilters(symbols?: string[]) {
@@ -233,7 +233,7 @@ class BitgetV3BookChangeMapper implements Mapper<'bitget' | 'bitget-futures', Bo
233
233
  constructor(private readonly _exchange: Exchange) {}
234
234
 
235
235
  canHandle(message: BitgetV3OrderbookMessage) {
236
- return message.arg.topic === 'books' && (message.action === 'snapshot' || message.action === 'update')
236
+ return message.arg?.topic === 'books' && (message.action === 'snapshot' || message.action === 'update')
237
237
  }
238
238
 
239
239
  getFilters(symbols?: string[]) {
@@ -267,7 +267,7 @@ class BitgetV3BookTickerMapper implements Mapper<'bitget' | 'bitget-futures', Bo
267
267
  constructor(private readonly _exchange: Exchange) {}
268
268
 
269
269
  canHandle(message: BitgetV3BBoMessage) {
270
- return message.arg.topic === 'books1' && message.action === 'snapshot'
270
+ return message.arg?.topic === 'books1' && message.action === 'snapshot'
271
271
  }
272
272
 
273
273
  getFilters(symbols?: string[]) {
@@ -302,7 +302,7 @@ class BitgetV3DerivativeTickerMapper implements Mapper<'bitget-futures', Derivat
302
302
  private readonly pendingTickerInfoHelper = new PendingTickerInfoHelper()
303
303
 
304
304
  canHandle(message: BitgetV3TickerMessage) {
305
- return message.arg.topic === 'ticker' && (message.action === 'snapshot' || message.action === 'update')
305
+ return message.arg?.topic === 'ticker' && (message.action === 'snapshot' || message.action === 'update')
306
306
  }
307
307
 
308
308
  getFilters(symbols?: string[]) {
@@ -340,7 +340,7 @@ class BitgetV3DerivativeTickerMapper implements Mapper<'bitget-futures', Derivat
340
340
 
341
341
  class BitgetV3LiquidationsMapper implements Mapper<'bitget-futures', Liquidation> {
342
342
  canHandle(message: BitgetV3LiquidationMessage) {
343
- return message.arg.topic === 'liquidation' && message.action === 'update'
343
+ return message.arg?.topic === 'liquidation' && message.action === 'update'
344
344
  }
345
345
 
346
346
  getFilters() {
@@ -1,5 +1,5 @@
1
1
  import { Writable } from 'node:stream'
2
- import { batch, getJSON, optimizeFilters } from '../handy.ts'
2
+ import { getJSON, optimizeFilters } from '../handy.ts'
3
3
  import { Filter } from '../types.ts'
4
4
  import { MultiConnectionRealTimeFeedBase, PoolingClientBase, RealTimeFeedBase } from './realtimefeed.ts'
5
5
 
@@ -12,16 +12,8 @@ export class CoinbaseDerivativesRealTimeFeed extends MultiConnectionRealTimeFeed
12
12
  }
13
13
  }
14
14
 
15
- const symbols = [...new Set(wsFilters.flatMap((f) => f.symbols ?? []))]
16
- const groups: Iterable<string[]> = symbols.length > 0 ? batch(symbols, 25) : wsFilters.length > 0 ? [[]] : []
17
- for (const group of groups) {
18
- const groupedFilters = wsFilters
19
- .map((f) => ({
20
- ...f,
21
- symbols: f.symbols?.filter((s) => group.includes(s))
22
- }))
23
- .filter((f) => f.symbols?.length || ['heartbeats', 'subscriptions'].includes(f.channel))
24
- yield new CoinbaseDerivativesSingleConnectionRealTimeFeed(exchange, groupedFilters, timeoutIntervalMS, onError)
15
+ if (wsFilters.length > 0) {
16
+ yield new CoinbaseDerivativesSingleConnectionRealTimeFeed(exchange, wsFilters, timeoutIntervalMS, onError)
25
17
  }
26
18
 
27
19
  const productFilters = filters.filter((f) => f.channel === 'products')