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.
Files changed (74) hide show
  1. package/dist/consts.d.ts +4 -2
  2. package/dist/consts.d.ts.map +1 -1
  3. package/dist/consts.js +19 -2
  4. package/dist/consts.js.map +1 -1
  5. package/dist/mappers/bybit.d.ts +1 -1
  6. package/dist/mappers/bybitspot.d.ts +96 -0
  7. package/dist/mappers/bybitspot.d.ts.map +1 -0
  8. package/dist/mappers/bybitspot.js +102 -0
  9. package/dist/mappers/bybitspot.js.map +1 -0
  10. package/dist/mappers/huobi.d.ts +3 -3
  11. package/dist/mappers/huobi.js +1 -1
  12. package/dist/mappers/index.d.ts +3 -3
  13. package/dist/mappers/index.d.ts.map +1 -1
  14. package/dist/mappers/index.js +16 -5
  15. package/dist/mappers/index.js.map +1 -1
  16. package/dist/mappers/poloniex.d.ts +60 -0
  17. package/dist/mappers/poloniex.d.ts.map +1 -1
  18. package/dist/mappers/poloniex.js +73 -2
  19. package/dist/mappers/poloniex.js.map +1 -1
  20. package/dist/mappers/serum.d.ts +12 -0
  21. package/dist/mappers/serum.d.ts.map +1 -1
  22. package/dist/mappers/serum.js +2 -2
  23. package/dist/mappers/serum.js.map +1 -1
  24. package/dist/realtimefeeds/ascendex.d.ts +2 -0
  25. package/dist/realtimefeeds/ascendex.d.ts.map +1 -1
  26. package/dist/realtimefeeds/ascendex.js +6 -0
  27. package/dist/realtimefeeds/ascendex.js.map +1 -1
  28. package/dist/realtimefeeds/bybit.d.ts +2 -0
  29. package/dist/realtimefeeds/bybit.d.ts.map +1 -1
  30. package/dist/realtimefeeds/bybit.js +6 -0
  31. package/dist/realtimefeeds/bybit.js.map +1 -1
  32. package/dist/realtimefeeds/bybitspot.d.ts +10 -0
  33. package/dist/realtimefeeds/bybitspot.d.ts.map +1 -0
  34. package/dist/realtimefeeds/bybitspot.js +40 -0
  35. package/dist/realtimefeeds/bybitspot.js.map +1 -0
  36. package/dist/realtimefeeds/delta.d.ts +2 -0
  37. package/dist/realtimefeeds/delta.d.ts.map +1 -1
  38. package/dist/realtimefeeds/delta.js +6 -0
  39. package/dist/realtimefeeds/delta.js.map +1 -1
  40. package/dist/realtimefeeds/ftx.d.ts +2 -0
  41. package/dist/realtimefeeds/ftx.d.ts.map +1 -1
  42. package/dist/realtimefeeds/ftx.js +6 -0
  43. package/dist/realtimefeeds/ftx.js.map +1 -1
  44. package/dist/realtimefeeds/index.d.ts.map +1 -1
  45. package/dist/realtimefeeds/index.js +5 -1
  46. package/dist/realtimefeeds/index.js.map +1 -1
  47. package/dist/realtimefeeds/mango.d.ts +5 -0
  48. package/dist/realtimefeeds/mango.d.ts.map +1 -0
  49. package/dist/realtimefeeds/mango.js +12 -0
  50. package/dist/realtimefeeds/mango.js.map +1 -0
  51. package/dist/realtimefeeds/poloniex.d.ts +6 -3
  52. package/dist/realtimefeeds/poloniex.d.ts.map +1 -1
  53. package/dist/realtimefeeds/poloniex.js +14 -9
  54. package/dist/realtimefeeds/poloniex.js.map +1 -1
  55. package/dist/realtimefeeds/realtimefeed.d.ts +1 -0
  56. package/dist/realtimefeeds/realtimefeed.d.ts.map +1 -1
  57. package/dist/realtimefeeds/realtimefeed.js +7 -1
  58. package/dist/realtimefeeds/realtimefeed.js.map +1 -1
  59. package/package.json +1 -1
  60. package/src/consts.ts +21 -2
  61. package/src/mappers/bybitspot.ts +129 -0
  62. package/src/mappers/huobi.ts +1 -1
  63. package/src/mappers/index.ts +21 -7
  64. package/src/mappers/poloniex.ts +134 -1
  65. package/src/mappers/serum.ts +27 -13
  66. package/src/realtimefeeds/ascendex.ts +8 -0
  67. package/src/realtimefeeds/bybit.ts +8 -0
  68. package/src/realtimefeeds/bybitspot.ts +39 -0
  69. package/src/realtimefeeds/delta.ts +8 -0
  70. package/src/realtimefeeds/ftx.ts +8 -0
  71. package/src/realtimefeeds/index.ts +5 -1
  72. package/src/realtimefeeds/mango.ts +5 -0
  73. package/src/realtimefeeds/poloniex.ts +16 -10
  74. 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,6BAA4B;IAErD,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;;;;IAkB1D,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;CAGhD"}
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://api2.poloniex.com';
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
- const allSymbols = filters.flatMap((filter) => {
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
- command: 'subscribe',
21
- channel: symbol
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.error !== undefined && message.error !== null;
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,yBAAyB,CAAA;IAuBvD,CAAC;IArBW,sBAAsB,CAAC,OAAyB;QACxD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClD,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;aAC5G;YACD,OAAO,MAAM,CAAC,OAAO,CAAA;QACvB,CAAC,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA;QAE9C,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAClC,OAAO;gBACL,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,MAAM;aAChB,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAES,cAAc,CAAC,OAAY;QACnC,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAA;IAC9D,CAAC;CACF;AAxBD,oDAwBC"}
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":"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"}
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._ws.ping();
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":"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"}
1
+ {"version":3,"file":"realtimefeed.js","sourceRoot":"","sources":["../../src/realtimefeeds/realtimefeed.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tardis-dev",
3
- "version": "13.4.9",
3
+ "version": "13.4.12",
4
4
  "engines": {
5
5
  "node": ">=12"
6
6
  },
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
+ }
@@ -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.ask !== null ? asNumberIfValid(message.tick.bid[1]) : undefined,
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
  }
@@ -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: () => new PoloniexTradesMapper(),
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: () => new PoloniexBookChangeMapper(),
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
- 'gate-io-futures': () => new GateIOFuturesBookTickerMapper('gate-io-futures')
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> => {
@@ -2,12 +2,87 @@ import { upperCaseSymbols } from '../handy'
2
2
  import { BookChange, Trade } from '../types'
3
3
  import { Mapper } from './mapper'
4
4
 
5
- // https://docs.poloniex.com/#websocket-api
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
+ }
@@ -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: 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
- type: 'trade'
123
- market: 'RAY/USDT'
124
- timestamp: '2021-05-22T00:00:59.448Z'
125
- slot: 79469377
126
- version: 3
127
- id: '96845406386975144808722|185.8|1621641659448'
128
- side: 'buy'
129
- price: '5.235'
130
- size: '185.8'
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