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.
- package/node_modules/tardis-dev/dist/downloaddatasets.d.ts.map +1 -1
- package/node_modules/tardis-dev/dist/downloaddatasets.js +10 -4
- package/node_modules/tardis-dev/dist/downloaddatasets.js.map +1 -1
- package/node_modules/tardis-dev/dist/handy.d.ts +2 -1
- package/node_modules/tardis-dev/dist/handy.d.ts.map +1 -1
- package/node_modules/tardis-dev/dist/handy.js +16 -7
- package/node_modules/tardis-dev/dist/handy.js.map +1 -1
- package/node_modules/tardis-dev/dist/mappers/bitflyer.js +3 -3
- package/node_modules/tardis-dev/dist/mappers/bitflyer.js.map +1 -1
- package/node_modules/tardis-dev/dist/mappers/bitget.js +9 -9
- package/node_modules/tardis-dev/dist/mappers/bitget.js.map +1 -1
- package/node_modules/tardis-dev/dist/realtimefeeds/coinbasederivatives.d.ts.map +1 -1
- package/node_modules/tardis-dev/dist/realtimefeeds/coinbasederivatives.js +3 -11
- package/node_modules/tardis-dev/dist/realtimefeeds/coinbasederivatives.js.map +1 -1
- package/node_modules/tardis-dev/dist/realtimefeeds/realtimefeed.d.ts +6 -2
- package/node_modules/tardis-dev/dist/realtimefeeds/realtimefeed.d.ts.map +1 -1
- package/node_modules/tardis-dev/dist/realtimefeeds/realtimefeed.js +73 -26
- package/node_modules/tardis-dev/dist/realtimefeeds/realtimefeed.js.map +1 -1
- package/node_modules/tardis-dev/package.json +1 -1
- package/node_modules/tardis-dev/src/downloaddatasets.ts +13 -4
- package/node_modules/tardis-dev/src/handy.ts +17 -7
- package/node_modules/tardis-dev/src/mappers/bitflyer.ts +3 -3
- package/node_modules/tardis-dev/src/mappers/bitget.ts +9 -9
- package/node_modules/tardis-dev/src/realtimefeeds/coinbasederivatives.ts +3 -11
- package/node_modules/tardis-dev/src/realtimefeeds/realtimefeed.ts +89 -28
- 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
|
-
|
|
162
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
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
|
-
|
|
348
|
-
|
|
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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"}
|
|
@@ -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 = `${
|
|
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
|
|
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 (
|
|
651
|
-
//
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 {
|
|
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
|
-
|
|
16
|
-
|
|
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')
|