tardis-dev 13.4.9 → 13.4.12
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/dist/consts.d.ts +4 -2
- package/dist/consts.d.ts.map +1 -1
- package/dist/consts.js +19 -2
- package/dist/consts.js.map +1 -1
- package/dist/mappers/bybit.d.ts +1 -1
- package/dist/mappers/bybitspot.d.ts +96 -0
- package/dist/mappers/bybitspot.d.ts.map +1 -0
- package/dist/mappers/bybitspot.js +102 -0
- package/dist/mappers/bybitspot.js.map +1 -0
- package/dist/mappers/huobi.d.ts +3 -3
- package/dist/mappers/huobi.js +1 -1
- package/dist/mappers/index.d.ts +3 -3
- package/dist/mappers/index.d.ts.map +1 -1
- package/dist/mappers/index.js +16 -5
- package/dist/mappers/index.js.map +1 -1
- package/dist/mappers/poloniex.d.ts +60 -0
- package/dist/mappers/poloniex.d.ts.map +1 -1
- package/dist/mappers/poloniex.js +73 -2
- package/dist/mappers/poloniex.js.map +1 -1
- package/dist/mappers/serum.d.ts +12 -0
- package/dist/mappers/serum.d.ts.map +1 -1
- package/dist/mappers/serum.js +2 -2
- package/dist/mappers/serum.js.map +1 -1
- package/dist/realtimefeeds/ascendex.d.ts +2 -0
- package/dist/realtimefeeds/ascendex.d.ts.map +1 -1
- package/dist/realtimefeeds/ascendex.js +6 -0
- package/dist/realtimefeeds/ascendex.js.map +1 -1
- package/dist/realtimefeeds/bybit.d.ts +2 -0
- package/dist/realtimefeeds/bybit.d.ts.map +1 -1
- package/dist/realtimefeeds/bybit.js +6 -0
- package/dist/realtimefeeds/bybit.js.map +1 -1
- package/dist/realtimefeeds/bybitspot.d.ts +10 -0
- package/dist/realtimefeeds/bybitspot.d.ts.map +1 -0
- package/dist/realtimefeeds/bybitspot.js +40 -0
- package/dist/realtimefeeds/bybitspot.js.map +1 -0
- package/dist/realtimefeeds/delta.d.ts +2 -0
- package/dist/realtimefeeds/delta.d.ts.map +1 -1
- package/dist/realtimefeeds/delta.js +6 -0
- package/dist/realtimefeeds/delta.js.map +1 -1
- package/dist/realtimefeeds/ftx.d.ts +2 -0
- package/dist/realtimefeeds/ftx.d.ts.map +1 -1
- package/dist/realtimefeeds/ftx.js +6 -0
- package/dist/realtimefeeds/ftx.js.map +1 -1
- package/dist/realtimefeeds/index.d.ts.map +1 -1
- package/dist/realtimefeeds/index.js +5 -1
- package/dist/realtimefeeds/index.js.map +1 -1
- package/dist/realtimefeeds/mango.d.ts +5 -0
- package/dist/realtimefeeds/mango.d.ts.map +1 -0
- package/dist/realtimefeeds/mango.js +12 -0
- package/dist/realtimefeeds/mango.js.map +1 -0
- package/dist/realtimefeeds/poloniex.d.ts +6 -3
- package/dist/realtimefeeds/poloniex.d.ts.map +1 -1
- package/dist/realtimefeeds/poloniex.js +14 -9
- package/dist/realtimefeeds/poloniex.js.map +1 -1
- package/dist/realtimefeeds/realtimefeed.d.ts +1 -0
- package/dist/realtimefeeds/realtimefeed.d.ts.map +1 -1
- package/dist/realtimefeeds/realtimefeed.js +7 -1
- package/dist/realtimefeeds/realtimefeed.js.map +1 -1
- package/package.json +1 -1
- package/src/consts.ts +21 -2
- package/src/mappers/bybitspot.ts +129 -0
- package/src/mappers/huobi.ts +1 -1
- package/src/mappers/index.ts +21 -7
- package/src/mappers/poloniex.ts +134 -1
- package/src/mappers/serum.ts +27 -13
- package/src/realtimefeeds/ascendex.ts +8 -0
- package/src/realtimefeeds/bybit.ts +8 -0
- package/src/realtimefeeds/bybitspot.ts +39 -0
- package/src/realtimefeeds/delta.ts +8 -0
- package/src/realtimefeeds/ftx.ts +8 -0
- package/src/realtimefeeds/index.ts +5 -1
- package/src/realtimefeeds/mango.ts +5 -0
- package/src/realtimefeeds/poloniex.ts +16 -10
- package/src/realtimefeeds/realtimefeed.ts +7 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poloniex.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/poloniex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,qBAAa,oBAAqB,SAAQ,gBAAgB;IACxD,SAAS,CAAC,QAAQ,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"poloniex.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/poloniex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,qBAAa,oBAAqB,SAAQ,gBAAgB;IACxD,SAAS,CAAC,QAAQ,CAAC,MAAM,qCAAoC;IAE7D,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;;;;;IAc1D,SAAS,CAAC,cAAc,aAIvB;IAED,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG;IAIrC,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;CAGhD"}
|
|
@@ -5,25 +5,30 @@ const realtimefeed_1 = require("./realtimefeed");
|
|
|
5
5
|
class PoloniexRealTimeFeed extends realtimefeed_1.RealTimeFeedBase {
|
|
6
6
|
constructor() {
|
|
7
7
|
super(...arguments);
|
|
8
|
-
this.wssURL = 'wss://
|
|
8
|
+
this.wssURL = 'wss://ws.poloniex.com/ws/public';
|
|
9
|
+
this.sendCustomPing = () => {
|
|
10
|
+
this.send({
|
|
11
|
+
event: 'ping'
|
|
12
|
+
});
|
|
13
|
+
};
|
|
9
14
|
}
|
|
10
15
|
mapToSubscribeMessages(filters) {
|
|
11
|
-
|
|
16
|
+
return filters.flatMap((filter) => {
|
|
12
17
|
if (!filter.symbols || filter.symbols.length === 0) {
|
|
13
18
|
throw new Error('PoloniexRealTimeFeed requires explicitly specified symbols when subscribing to live feed');
|
|
14
19
|
}
|
|
15
|
-
return filter.symbols;
|
|
16
|
-
});
|
|
17
|
-
const uniqueSymbols = [...new Set(allSymbols)];
|
|
18
|
-
return uniqueSymbols.map((symbol) => {
|
|
19
20
|
return {
|
|
20
|
-
|
|
21
|
-
channel:
|
|
21
|
+
event: 'subscribe',
|
|
22
|
+
channel: [filter.channel],
|
|
23
|
+
symbols: filter.symbols
|
|
22
24
|
};
|
|
23
25
|
});
|
|
24
26
|
}
|
|
27
|
+
messageIsHeartbeat(msg) {
|
|
28
|
+
return msg.event === 'pong';
|
|
29
|
+
}
|
|
25
30
|
messageIsError(message) {
|
|
26
|
-
return message.
|
|
31
|
+
return message.event === 'error';
|
|
27
32
|
}
|
|
28
33
|
}
|
|
29
34
|
exports.PoloniexRealTimeFeed = PoloniexRealTimeFeed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poloniex.js","sourceRoot":"","sources":["../../src/realtimefeeds/poloniex.ts"],"names":[],"mappings":";;;AACA,iDAAiD;AAEjD,MAAa,oBAAqB,SAAQ,+BAAgB;IAA1D;;QACqB,WAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"poloniex.js","sourceRoot":"","sources":["../../src/realtimefeeds/poloniex.ts"],"names":[],"mappings":";;;AACA,iDAAiD;AAEjD,MAAa,oBAAqB,SAAQ,+BAAgB;IAA1D;;QACqB,WAAM,GAAG,iCAAiC,CAAA;QAgBnD,mBAAc,GAAG,GAAG,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC;gBACR,KAAK,EAAE,MAAM;aACd,CAAC,CAAA;QACJ,CAAC,CAAA;IASH,CAAC;IA3BW,sBAAsB,CAAC,OAAyB;QACxD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClD,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;aAC5G;YAED,OAAO;gBACL,KAAK,EAAE,WAAW;gBAClB,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;gBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAQS,kBAAkB,CAAC,GAAQ;QACnC,OAAO,GAAG,CAAC,KAAK,KAAK,MAAM,CAAA;IAC7B,CAAC;IAES,cAAc,CAAC,OAAY;QACnC,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO,CAAA;IAClC,CAAC;CACF;AA9BD,oDA8BC"}
|
|
@@ -26,6 +26,7 @@ export declare abstract class RealTimeFeedBase implements RealTimeFeedIterable {
|
|
|
26
26
|
protected send(msg: any): void;
|
|
27
27
|
protected abstract mapToSubscribeMessages(filters: Filter<string>[]): any[];
|
|
28
28
|
protected abstract messageIsError(message: any): boolean;
|
|
29
|
+
protected sendCustomPing: (() => void) | undefined;
|
|
29
30
|
protected isIgnoredError(_message: any): boolean;
|
|
30
31
|
protected messageIsHeartbeat(_msg: any): boolean;
|
|
31
32
|
protected provideManualSnapshots(_filters: Filter<string>[], _shouldCancel: () => boolean): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtimefeed.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/realtimefeed.ts"],"names":[],"mappings":";;AAAA,OAAO,GAAG,MAAM,OAAO,CAAA;AAGvB,OAAO,EAAe,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAG9C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAE3C,oBAAY,YAAY,GAAG;IACzB,KACE,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACzB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC/B,oBAAoB,CAAA;CACxB,CAAA;AAID,oBAAY,oBAAoB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;AAErD,8BAAsB,gBAAiB,YAAW,oBAAoB;IAgBlE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAEpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAlB5B,CAAC,MAAM,CAAC,aAAa,CAAC;IAItB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAA;IACtC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAC1C,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAI;IAClD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAK;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,sBAAsB,CAAI;IAClC,OAAO,CAAC,GAAG,CAAC,CAAW;IACvB,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,gBAAgB,CAA6C;gBAGhD,SAAS,EAAE,MAAM,EACpC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACR,kBAAkB,EAAE,MAAM,GAAG,SAAS,EACtC,QAAQ,CAAC,WAAU,KAAK,KAAK,IAAI,aAAA;YAoBrC,OAAO;IAkItB,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG;IAUvB,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE;IAE3E,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAExD,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG;IAItC,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG;cAItB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO;IAE/F,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG;cAEb,WAAW;IAE3B,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAA;IAE3C,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,iBAAiB;
|
|
1
|
+
{"version":3,"file":"realtimefeed.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/realtimefeed.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ class RealTimeFeedBase {
|
|
|
19
19
|
this.manualSnapshotsBuffer = [];
|
|
20
20
|
this._receivedMessagesCount = 0;
|
|
21
21
|
this._connectionId = connectionCounter++;
|
|
22
|
+
this.sendCustomPing = undefined;
|
|
22
23
|
this._onConnectionEstabilished = async () => {
|
|
23
24
|
try {
|
|
24
25
|
const subscribeMessages = this.mapToSubscribeMessages(this._filters);
|
|
@@ -208,7 +209,12 @@ class RealTimeFeedBase {
|
|
|
208
209
|
if (this._ws === undefined || this._ws.readyState !== ws_1.default.OPEN) {
|
|
209
210
|
return;
|
|
210
211
|
}
|
|
211
|
-
this.
|
|
212
|
+
if (this.sendCustomPing !== undefined) {
|
|
213
|
+
this.sendCustomPing();
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
this._ws.ping();
|
|
217
|
+
}
|
|
212
218
|
}, 5 * handy_1.ONE_SEC_IN_MS);
|
|
213
219
|
}
|
|
214
220
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtimefeed.js","sourceRoot":"","sources":["../../src/realtimefeeds/realtimefeed.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAuB;AACvB,4CAA0B;AAE1B,mCAA8C;AAC9C,mCAA6B;AAC7B,oCAAgF;AAYhF,IAAI,iBAAiB,GAAG,CAAC,CAAA;AAIzB,MAAsB,gBAAgB;IAepC,YACqB,SAAiB,EACpC,OAAyB,EACR,kBAAsC,EACtC,QAAiC;QAH/B,cAAS,GAAT,SAAS,CAAQ;QAEnB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,aAAQ,GAAR,QAAQ,CAAyB;QAZjC,wBAAmB,GAAW,CAAC,CAAA;QAC/B,0BAAqB,GAAU,EAAE,CAAA;QAE5C,2BAAsB,GAAG,CAAC,CAAA;QAE1B,kBAAa,GAAG,iBAAiB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"realtimefeed.js","sourceRoot":"","sources":["../../src/realtimefeeds/realtimefeed.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/consts.ts
CHANGED
|
@@ -23,6 +23,7 @@ export const EXCHANGES = [
|
|
|
23
23
|
'gemini',
|
|
24
24
|
'poloniex',
|
|
25
25
|
'bybit',
|
|
26
|
+
'bybit-spot',
|
|
26
27
|
'phemex',
|
|
27
28
|
'delta',
|
|
28
29
|
'ftx-us',
|
|
@@ -39,6 +40,7 @@ export const EXCHANGES = [
|
|
|
39
40
|
'ascendex',
|
|
40
41
|
'dydx',
|
|
41
42
|
'serum',
|
|
43
|
+
'mango',
|
|
42
44
|
'huobi-dm-options',
|
|
43
45
|
'star-atlas'
|
|
44
46
|
] as const
|
|
@@ -338,7 +340,7 @@ const DELTA_CHANNELS = [
|
|
|
338
340
|
|
|
339
341
|
const GATE_IO_CHANNELS = ['trades', 'depth', 'ticker'] as const
|
|
340
342
|
const GATE_IO_FUTURES_CHANNELS = ['trades', 'order_book', 'tickers', 'book_ticker'] as const
|
|
341
|
-
const POLONIEX_CHANNELS = ['price_aggregated_book'] as const
|
|
343
|
+
const POLONIEX_CHANNELS = ['price_aggregated_book', 'trades', 'ticker', 'book_lv2'] as const
|
|
342
344
|
const UPBIT_CHANNELS = ['trade', 'orderbook', 'ticker'] as const
|
|
343
345
|
const ASCENDEX_CHANNELS = ['trades', 'depth-realtime', 'depth-snapshot-realtime', 'bbo', 'futures-pricing-data'] as const
|
|
344
346
|
const DYDX_CHANNELS = ['v3_trades', 'v3_orderbook', 'v3_markets'] as const
|
|
@@ -355,8 +357,23 @@ const SERUM_CHANNELS = [
|
|
|
355
357
|
'done'
|
|
356
358
|
] as const
|
|
357
359
|
|
|
360
|
+
const MANGO_CHANNELS = [
|
|
361
|
+
'recent_trades',
|
|
362
|
+
'trade',
|
|
363
|
+
'quote',
|
|
364
|
+
'l2snapshot',
|
|
365
|
+
'l2update',
|
|
366
|
+
'l3snapshot',
|
|
367
|
+
'open',
|
|
368
|
+
'fill',
|
|
369
|
+
'change',
|
|
370
|
+
'done'
|
|
371
|
+
] as const
|
|
372
|
+
|
|
358
373
|
const HUOBI_DM_OPTIONS_CHANNELS = ['trade', 'detail', 'depth', 'bbo', 'open_interest', 'option_market_index', 'option_index'] as const
|
|
359
374
|
|
|
375
|
+
const BYBIT_SPOT_CHANNELS = ['trade', 'bookTicker', 'depth']
|
|
376
|
+
|
|
360
377
|
export const EXCHANGE_CHANNELS_INFO = {
|
|
361
378
|
bitmex: BITMEX_CHANNELS,
|
|
362
379
|
coinbase: COINBASE_CHANNELS,
|
|
@@ -385,6 +402,7 @@ export const EXCHANGE_CHANNELS_INFO = {
|
|
|
385
402
|
'huobi-dm-swap': HUOBI_DM_SWAP_CHANNELS,
|
|
386
403
|
'huobi-dm-linear-swap': HUOBI_DM_LINEAR_SWAP_CHANNELS,
|
|
387
404
|
bybit: BYBIT_CHANNELS,
|
|
405
|
+
'bybit-spot': BYBIT_SPOT_CHANNELS,
|
|
388
406
|
okcoin: OKCOIN_CHANNELS,
|
|
389
407
|
hitbtc: HITBTC_CHANNELS,
|
|
390
408
|
coinflex: COINFLEX_CHANNELS,
|
|
@@ -399,5 +417,6 @@ export const EXCHANGE_CHANNELS_INFO = {
|
|
|
399
417
|
dydx: DYDX_CHANNELS,
|
|
400
418
|
serum: SERUM_CHANNELS,
|
|
401
419
|
'star-atlas': SERUM_CHANNELS,
|
|
402
|
-
'huobi-dm-options': HUOBI_DM_OPTIONS_CHANNELS
|
|
420
|
+
'huobi-dm-options': HUOBI_DM_OPTIONS_CHANNELS,
|
|
421
|
+
mango: MANGO_CHANNELS
|
|
403
422
|
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { upperCaseSymbols } from '../handy'
|
|
2
|
+
import { BookChange, Exchange, BookTicker, Trade } from '../types'
|
|
3
|
+
import { Mapper } from './mapper'
|
|
4
|
+
|
|
5
|
+
export class BybitSpotTradesMapper implements Mapper<'bybit-spot', Trade> {
|
|
6
|
+
constructor(private readonly _exchange: Exchange) {}
|
|
7
|
+
canHandle(message: BybitSpotTradeMessage) {
|
|
8
|
+
return message.topic === 'trade' && message.data !== undefined
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
getFilters(symbols?: string[]) {
|
|
12
|
+
symbols = upperCaseSymbols(symbols)
|
|
13
|
+
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
channel: 'trade',
|
|
17
|
+
symbols
|
|
18
|
+
} as const
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
*map(message: BybitSpotTradeMessage, localTimestamp: Date): IterableIterator<Trade> {
|
|
23
|
+
const bybitTrade = message.data
|
|
24
|
+
yield {
|
|
25
|
+
type: 'trade',
|
|
26
|
+
symbol: message.params.symbol,
|
|
27
|
+
exchange: this._exchange,
|
|
28
|
+
id: bybitTrade.v,
|
|
29
|
+
price: Number(bybitTrade.p),
|
|
30
|
+
amount: Number(bybitTrade.q),
|
|
31
|
+
side: bybitTrade.m === true ? 'buy' : 'sell',
|
|
32
|
+
timestamp: new Date(bybitTrade.t),
|
|
33
|
+
localTimestamp
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export class BybitSpotBookChangeMapper implements Mapper<'bybit-spot', BookChange> {
|
|
39
|
+
constructor(protected readonly _exchange: Exchange) {}
|
|
40
|
+
|
|
41
|
+
canHandle(message: BybitSpotDepthMessage) {
|
|
42
|
+
return message.topic === 'depth' && message.data !== undefined
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
getFilters(symbols?: string[]) {
|
|
46
|
+
symbols = upperCaseSymbols(symbols)
|
|
47
|
+
return [
|
|
48
|
+
{
|
|
49
|
+
channel: 'depth',
|
|
50
|
+
symbols
|
|
51
|
+
} as const
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
*map(message: BybitSpotDepthMessage, localTimestamp: Date) {
|
|
56
|
+
yield {
|
|
57
|
+
type: 'book_change',
|
|
58
|
+
symbol: message.params.symbol,
|
|
59
|
+
exchange: this._exchange,
|
|
60
|
+
isSnapshot: true,
|
|
61
|
+
bids: message.data.b.map(this._mapBookLevel),
|
|
62
|
+
asks: message.data.a.map(this._mapBookLevel),
|
|
63
|
+
timestamp: new Date(message.data.t),
|
|
64
|
+
localTimestamp
|
|
65
|
+
} as const
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private _mapBookLevel(level: [string, string]) {
|
|
69
|
+
return { price: Number(level[0]), amount: Number(level[1]) }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export class BybitSpotBookTickerMapper implements Mapper<'bybit-spot', BookTicker> {
|
|
74
|
+
constructor(protected readonly _exchange: Exchange) {}
|
|
75
|
+
|
|
76
|
+
canHandle(message: BybitSpotBookTickerMessage) {
|
|
77
|
+
return message.topic === 'bookTicker' && message.data !== undefined
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
getFilters(symbols?: string[]) {
|
|
81
|
+
symbols = upperCaseSymbols(symbols)
|
|
82
|
+
return [
|
|
83
|
+
{
|
|
84
|
+
channel: 'bookTicker',
|
|
85
|
+
symbols
|
|
86
|
+
} as const
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
*map(message: BybitSpotBookTickerMessage, localTimestamp: Date) {
|
|
91
|
+
const bookTicker: BookTicker = {
|
|
92
|
+
type: 'book_ticker',
|
|
93
|
+
symbol: message.params.symbol,
|
|
94
|
+
exchange: this._exchange,
|
|
95
|
+
askAmount: message.data.askQty !== undefined ? Number(message.data.askQty) : undefined,
|
|
96
|
+
askPrice: message.data.askPrice !== undefined ? Number(message.data.askPrice) : undefined,
|
|
97
|
+
bidPrice: message.data.bidPrice !== undefined ? Number(message.data.bidPrice) : undefined,
|
|
98
|
+
bidAmount: message.data.bidQty !== undefined ? Number(message.data.bidQty) : undefined,
|
|
99
|
+
timestamp: new Date(message.data.time),
|
|
100
|
+
localTimestamp: localTimestamp
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
yield bookTicker
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
type BybitSpotBookTickerMessage = {
|
|
108
|
+
topic: 'bookTicker'
|
|
109
|
+
params: { symbol: 'BATUSDT'; binary: 'false'; symbolName: 'BATUSDT' }
|
|
110
|
+
data: { symbol: 'BATUSDT'; bidPrice: '0.3985'; bidQty: '1919.99'; askPrice: '0.3997'; askQty: '3747.68'; time: 1659311999973 }
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
type BybitSpotTradeMessage = {
|
|
114
|
+
topic: 'trade'
|
|
115
|
+
params: { symbol: 'XRP3SUSDT'; binary: 'false'; symbolName: 'XRP3SUSDT' }
|
|
116
|
+
data: { v: '2220000000006443832'; t: 1659312000387; p: '6.3957'; q: '3.5962'; m: boolean }
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
type BybitSpotDepthMessage = {
|
|
120
|
+
topic: 'depth'
|
|
121
|
+
params: { symbol: 'RENUSDT'; binary: 'false'; symbolName: 'RENUSDT' }
|
|
122
|
+
data: {
|
|
123
|
+
s: 'RENUSDT'
|
|
124
|
+
t: 1659312000390
|
|
125
|
+
v: '170667316_8244371_5'
|
|
126
|
+
b: [['0.14348', '3249.63']]
|
|
127
|
+
a: [['0.14457', '95.23']]
|
|
128
|
+
}
|
|
129
|
+
}
|
package/src/mappers/huobi.ts
CHANGED
|
@@ -568,7 +568,7 @@ export class HuobiBookTickerMapper implements Mapper<'huobi' | 'huobi-dm' | 'huo
|
|
|
568
568
|
askPrice: message.tick.ask !== undefined && message.tick.ask !== null ? asNumberIfValid(message.tick.ask[0]) : undefined,
|
|
569
569
|
|
|
570
570
|
bidPrice: message.tick.bid !== undefined && message.tick.bid !== null ? asNumberIfValid(message.tick.bid[0]) : undefined,
|
|
571
|
-
bidAmount: message.tick.bid !== undefined && message.tick.
|
|
571
|
+
bidAmount: message.tick.bid !== undefined && message.tick.bid !== null ? asNumberIfValid(message.tick.bid[1]) : undefined,
|
|
572
572
|
timestamp: new Date(message.tick.ts),
|
|
573
573
|
localTimestamp: localTimestamp
|
|
574
574
|
}
|
package/src/mappers/index.ts
CHANGED
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
} from './bitmex'
|
|
29
29
|
import { BitstampBookChangeMapper, bitstampTradesMapper } from './bitstamp'
|
|
30
30
|
import { BybitBookChangeMapper, BybitDerivativeTickerMapper, BybitLiquidationsMapper, BybitTradesMapper } from './bybit'
|
|
31
|
+
import { BybitSpotBookChangeMapper, BybitSpotBookTickerMapper, BybitSpotTradesMapper } from './bybitspot'
|
|
31
32
|
import { CoinbaseBookChangMapper, coinbaseBookTickerMapper, coinbaseTradesMapper } from './coinbase'
|
|
32
33
|
import { coinflexBookChangeMapper, CoinflexDerivativeTickerMapper, coinflexTradesMapper } from './coinflex'
|
|
33
34
|
import {
|
|
@@ -83,7 +84,7 @@ import {
|
|
|
83
84
|
OkexV5TradesMapper
|
|
84
85
|
} from './okex'
|
|
85
86
|
import { phemexBookChangeMapper, PhemexDerivativeTickerMapper, phemexTradesMapper } from './phemex'
|
|
86
|
-
import { PoloniexBookChangeMapper, PoloniexTradesMapper } from './poloniex'
|
|
87
|
+
import { PoloniexBookChangeMapper, PoloniexTradesMapper, PoloniexV2BookChangeMapper, PoloniexV2TradesMapper } from './poloniex'
|
|
87
88
|
import { SerumBookChangeMapper, SerumBookTickerMapper, SerumTradesMapper } from './serum'
|
|
88
89
|
import { UpbitBookChangeMapper, UpbitTradesMapper } from './upbit'
|
|
89
90
|
|
|
@@ -108,6 +109,12 @@ const canUseOkexTbtBookTicker = (localTimestamp: Date) => {
|
|
|
108
109
|
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= OKEX_V5_TBT_BOOK_TICKER_RELEASE_DATE.valueOf()
|
|
109
110
|
}
|
|
110
111
|
|
|
112
|
+
const POLONIEX_V2_API_SWITCH_DATE = new Date('2022-08-02T00:00:00.000Z')
|
|
113
|
+
|
|
114
|
+
const shouldUsePoloniexV2Mappers = (localTimestamp: Date) => {
|
|
115
|
+
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= POLONIEX_V2_API_SWITCH_DATE.valueOf()
|
|
116
|
+
}
|
|
117
|
+
|
|
111
118
|
const tradesMappers = {
|
|
112
119
|
bitmex: () => bitmexTradesMapper,
|
|
113
120
|
binance: () => new BinanceTradesMapper('binance'),
|
|
@@ -151,14 +158,17 @@ const tradesMappers = {
|
|
|
151
158
|
delta: (localTimestamp: Date) => new DeltaTradesMapper(localTimestamp.valueOf() >= new Date('2020-10-14').valueOf()),
|
|
152
159
|
'gate-io': () => new GateIOTradesMapper('gate-io'),
|
|
153
160
|
'gate-io-futures': () => new GateIOFuturesTradesMapper('gate-io-futures'),
|
|
154
|
-
poloniex: () =>
|
|
161
|
+
poloniex: (localTimestamp: Date) =>
|
|
162
|
+
shouldUsePoloniexV2Mappers(localTimestamp) ? new PoloniexV2TradesMapper() : new PoloniexTradesMapper(),
|
|
155
163
|
coinflex: () => coinflexTradesMapper,
|
|
156
164
|
'binance-options': () => new BinanceOptionsTradesMapper(),
|
|
157
165
|
upbit: () => new UpbitTradesMapper(),
|
|
158
166
|
ascendex: () => new AscendexTradesMapper(),
|
|
159
167
|
dydx: () => new DydxTradesMapper(),
|
|
160
168
|
serum: () => new SerumTradesMapper('serum'),
|
|
161
|
-
'star-atlas': () => new SerumTradesMapper('star-atlas')
|
|
169
|
+
'star-atlas': () => new SerumTradesMapper('star-atlas'),
|
|
170
|
+
mango: () => new SerumTradesMapper('mango'),
|
|
171
|
+
'bybit-spot': () => new BybitSpotTradesMapper('bybit-spot')
|
|
162
172
|
}
|
|
163
173
|
|
|
164
174
|
const bookChangeMappers = {
|
|
@@ -208,7 +218,7 @@ const bookChangeMappers = {
|
|
|
208
218
|
'huobi-dm-swap': () => new HuobiBookChangeMapper('huobi-dm-swap'),
|
|
209
219
|
'huobi-dm-linear-swap': () => new HuobiBookChangeMapper('huobi-dm-linear-swap'),
|
|
210
220
|
'huobi-dm-options': () => new HuobiBookChangeMapper('huobi-dm-options'),
|
|
211
|
-
|
|
221
|
+
'bybit-spot': () => new BybitSpotBookChangeMapper('bybit-spot'),
|
|
212
222
|
bybit: () => new BybitBookChangeMapper('bybit', false),
|
|
213
223
|
okcoin: (localTimestamp: Date) =>
|
|
214
224
|
new OkexBookChangeMapper('okcoin', 'spot', localTimestamp.valueOf() >= new Date('2020-02-13').valueOf()),
|
|
@@ -217,14 +227,16 @@ const bookChangeMappers = {
|
|
|
217
227
|
delta: () => deltaBookChangeMapper,
|
|
218
228
|
'gate-io': () => new GateIOBookChangeMapper('gate-io'),
|
|
219
229
|
'gate-io-futures': () => new GateIOFuturesBookChangeMapper('gate-io-futures'),
|
|
220
|
-
poloniex: () =>
|
|
230
|
+
poloniex: (localTimestamp: Date) =>
|
|
231
|
+
shouldUsePoloniexV2Mappers(localTimestamp) ? new PoloniexV2BookChangeMapper() : new PoloniexBookChangeMapper(),
|
|
221
232
|
coinflex: () => coinflexBookChangeMapper,
|
|
222
233
|
'binance-options': () => new BinanceOptionsBookChangeMapper(),
|
|
223
234
|
upbit: () => new UpbitBookChangeMapper(),
|
|
224
235
|
ascendex: () => new AscendexBookChangeMapper(),
|
|
225
236
|
dydx: () => new DydxBookChangeMapper(),
|
|
226
237
|
serum: () => new SerumBookChangeMapper('serum'),
|
|
227
|
-
'star-atlas': () => new SerumBookChangeMapper('star-atlas')
|
|
238
|
+
'star-atlas': () => new SerumBookChangeMapper('star-atlas'),
|
|
239
|
+
mango: () => new SerumBookChangeMapper('mango')
|
|
228
240
|
}
|
|
229
241
|
|
|
230
242
|
const derivativeTickersMappers = {
|
|
@@ -327,7 +339,9 @@ const bookTickersMappers = {
|
|
|
327
339
|
okcoin: () => new OkexBookTickerMapper('okcoin', 'spot'),
|
|
328
340
|
serum: () => new SerumBookTickerMapper('serum'),
|
|
329
341
|
'star-atlas': () => new SerumBookTickerMapper('star-atlas'),
|
|
330
|
-
|
|
342
|
+
mango: () => new SerumBookTickerMapper('mango'),
|
|
343
|
+
'gate-io-futures': () => new GateIOFuturesBookTickerMapper('gate-io-futures'),
|
|
344
|
+
'bybit-spot': () => new BybitSpotBookTickerMapper('bybit-spot')
|
|
331
345
|
}
|
|
332
346
|
|
|
333
347
|
export const normalizeTrades = <T extends keyof typeof tradesMappers>(exchange: T, localTimestamp: Date): Mapper<T, Trade> => {
|
package/src/mappers/poloniex.ts
CHANGED
|
@@ -2,12 +2,87 @@ import { upperCaseSymbols } from '../handy'
|
|
|
2
2
|
import { BookChange, Trade } from '../types'
|
|
3
3
|
import { Mapper } from './mapper'
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
export class PoloniexV2TradesMapper implements Mapper<'poloniex', Trade> {
|
|
6
|
+
canHandle(message: any) {
|
|
7
|
+
return message.channel === 'trades' && message.data !== undefined && message.data.length > 0
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
getFilters(symbols?: string[]) {
|
|
11
|
+
symbols = upperCaseSymbols(symbols)
|
|
12
|
+
|
|
13
|
+
return [
|
|
14
|
+
{
|
|
15
|
+
channel: 'trades',
|
|
16
|
+
symbols
|
|
17
|
+
} as const
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
*map(message: PoloniexV2TradesMessage, localTimestamp: Date): IterableIterator<Trade> {
|
|
22
|
+
for (const item of message.data) {
|
|
23
|
+
yield {
|
|
24
|
+
type: 'trade',
|
|
25
|
+
symbol: item.symbol,
|
|
26
|
+
exchange: 'poloniex',
|
|
27
|
+
id: item.id,
|
|
28
|
+
price: Number(item.price),
|
|
29
|
+
amount: Number(item.quantity),
|
|
30
|
+
side: item.takerSide === 'sell' ? 'sell' : 'buy',
|
|
31
|
+
timestamp: new Date(item.createTime),
|
|
32
|
+
localTimestamp: localTimestamp
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const mapBookLevelV2 = (level: [string, string]) => {
|
|
39
|
+
return {
|
|
40
|
+
price: Number(level[0]),
|
|
41
|
+
amount: Number(level[1])
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export class PoloniexV2BookChangeMapper implements Mapper<'poloniex', BookChange> {
|
|
45
|
+
canHandle(message: any) {
|
|
46
|
+
return message.channel === 'book_lv2' && message.data !== undefined && message.data.length > 0
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
getFilters(symbols?: string[]) {
|
|
50
|
+
symbols = upperCaseSymbols(symbols)
|
|
51
|
+
|
|
52
|
+
return [
|
|
53
|
+
{
|
|
54
|
+
channel: 'book_lv2',
|
|
55
|
+
symbols
|
|
56
|
+
} as const
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
*map(message: PoloniexV2BookMessage, localTimestamp: Date): IterableIterator<BookChange> {
|
|
61
|
+
for (const item of message.data) {
|
|
62
|
+
const bookSnapshot: BookChange = {
|
|
63
|
+
type: 'book_change',
|
|
64
|
+
symbol: item.symbol,
|
|
65
|
+
exchange: 'poloniex',
|
|
66
|
+
isSnapshot: message.action === 'snapshot',
|
|
67
|
+
bids: item.bids.map(mapBookLevelV2),
|
|
68
|
+
asks: item.asks.map(mapBookLevelV2),
|
|
69
|
+
timestamp: new Date(item.ts),
|
|
70
|
+
localTimestamp: localTimestamp
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
yield bookSnapshot
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
6
77
|
|
|
7
78
|
export class PoloniexTradesMapper implements Mapper<'poloniex', Trade> {
|
|
8
79
|
private readonly _channelIdToSymbolMap: Map<number, string> = new Map()
|
|
9
80
|
|
|
10
81
|
canHandle(message: PoloniexPriceAggreatedMessage) {
|
|
82
|
+
if (Array.isArray(message) === false) {
|
|
83
|
+
return false
|
|
84
|
+
}
|
|
85
|
+
|
|
11
86
|
if (message.length < 3) {
|
|
12
87
|
return false
|
|
13
88
|
}
|
|
@@ -80,6 +155,10 @@ export class PoloniexBookChangeMapper implements Mapper<'poloniex', BookChange>
|
|
|
80
155
|
private readonly _channelIdToSymbolMap: Map<number, string> = new Map()
|
|
81
156
|
|
|
82
157
|
canHandle(message: PoloniexPriceAggreatedMessage) {
|
|
158
|
+
if (Array.isArray(message) === false) {
|
|
159
|
+
return false
|
|
160
|
+
}
|
|
161
|
+
|
|
83
162
|
if (message.length < 3) {
|
|
84
163
|
return false
|
|
85
164
|
}
|
|
@@ -153,3 +232,57 @@ type PoloniexBookUpdate = ['o', 0 | 1, string, string]
|
|
|
153
232
|
type PoloniexTrade = ['t', string, 1 | 0, string, string, number]
|
|
154
233
|
|
|
155
234
|
type PoloniexPriceAggreatedMessage = [number, number, (PoloniexBookSnapshot | PoloniexBookUpdate | PoloniexTrade)[], string?]
|
|
235
|
+
|
|
236
|
+
type PoloniexV2SubscribeMessage = {
|
|
237
|
+
event: 'subscribe'
|
|
238
|
+
channel: 'trades'
|
|
239
|
+
symbols: string[]
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
type PoloniexV2TradesMessage = {
|
|
243
|
+
channel: 'trades'
|
|
244
|
+
data: [
|
|
245
|
+
{
|
|
246
|
+
symbol: 'USDD_USDT'
|
|
247
|
+
amount: '53.17153856'
|
|
248
|
+
quantity: '53.0866'
|
|
249
|
+
takerSide: 'sell'
|
|
250
|
+
createTime: 1659916859838
|
|
251
|
+
price: '1.0016'
|
|
252
|
+
id: '60100203'
|
|
253
|
+
ts: 1659916859843
|
|
254
|
+
}
|
|
255
|
+
]
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
type PoloniexV2BookMessage =
|
|
259
|
+
| {
|
|
260
|
+
channel: 'book_lv2'
|
|
261
|
+
data: [
|
|
262
|
+
{
|
|
263
|
+
symbol: 'AAVE_BTC'
|
|
264
|
+
createTime: 1659916859818
|
|
265
|
+
asks: [string, string][]
|
|
266
|
+
bids: [string, string][]
|
|
267
|
+
lastId: 20251
|
|
268
|
+
id: 20252
|
|
269
|
+
ts: 1659916859824
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
action: 'update'
|
|
273
|
+
}
|
|
274
|
+
| {
|
|
275
|
+
channel: 'book_lv2'
|
|
276
|
+
data: [
|
|
277
|
+
{
|
|
278
|
+
symbol: 'AAVE_BTC'
|
|
279
|
+
createTime: 1659900600092
|
|
280
|
+
asks: [string, string][]
|
|
281
|
+
bids: [string, string][]
|
|
282
|
+
lastId: 85
|
|
283
|
+
id: 86
|
|
284
|
+
ts: 1659916800614
|
|
285
|
+
}
|
|
286
|
+
]
|
|
287
|
+
action: 'snapshot'
|
|
288
|
+
}
|
package/src/mappers/serum.ts
CHANGED
|
@@ -31,8 +31,8 @@ export class SerumTradesMapper implements Mapper<'serum' | 'star-atlas', Trade>
|
|
|
31
31
|
price: Number(message.price),
|
|
32
32
|
amount: Number(message.size),
|
|
33
33
|
side: message.side,
|
|
34
|
-
timestamp: new Date(message.timestamp),
|
|
35
|
-
localTimestamp
|
|
34
|
+
timestamp: message.eventTimestamp !== undefined ? new Date(message.eventTimestamp) : new Date(message.timestamp),
|
|
35
|
+
localTimestamp
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -118,17 +118,31 @@ export class SerumBookTickerMapper implements Mapper<'serum' | 'star-atlas', Boo
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
type SerumVialTrade =
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
121
|
+
type SerumVialTrade =
|
|
122
|
+
| {
|
|
123
|
+
type: 'trade'
|
|
124
|
+
market: 'RAY/USDT'
|
|
125
|
+
timestamp: '2021-05-22T00:00:59.448Z'
|
|
126
|
+
slot: 79469377
|
|
127
|
+
version: 3
|
|
128
|
+
id: '96845406386975144808722|185.8|1621641659448'
|
|
129
|
+
side: 'buy'
|
|
130
|
+
price: '5.235'
|
|
131
|
+
size: '185.8'
|
|
132
|
+
eventTimestamp: undefined
|
|
133
|
+
}
|
|
134
|
+
| {
|
|
135
|
+
type: 'trade'
|
|
136
|
+
market: string
|
|
137
|
+
timestamp: string
|
|
138
|
+
slot: number
|
|
139
|
+
version: number
|
|
140
|
+
id: string
|
|
141
|
+
side: 'buy' | 'sell'
|
|
142
|
+
price: string
|
|
143
|
+
size: string
|
|
144
|
+
eventTimestamp: string
|
|
145
|
+
}
|
|
132
146
|
|
|
133
147
|
type SerumVialPriceLevel = [string, string]
|
|
134
148
|
|