tardis-dev 13.1.1 → 13.1.5

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 (142) hide show
  1. package/dist/combine.js +34 -26
  2. package/dist/combine.js.map +1 -1
  3. package/dist/computable/computable.d.ts.map +1 -1
  4. package/dist/computable/computable.js +23 -18
  5. package/dist/computable/computable.js.map +1 -1
  6. package/dist/handy.d.ts +2 -0
  7. package/dist/handy.d.ts.map +1 -1
  8. package/dist/handy.js +15 -1
  9. package/dist/handy.js.map +1 -1
  10. package/dist/mappers/ascendex.d.ts +1 -1
  11. package/dist/mappers/ascendex.d.ts.map +1 -1
  12. package/dist/mappers/ascendex.js +5 -0
  13. package/dist/mappers/ascendex.js.map +1 -1
  14. package/dist/mappers/binance.d.ts +1 -1
  15. package/dist/mappers/binance.d.ts.map +1 -1
  16. package/dist/mappers/binance.js +5 -11
  17. package/dist/mappers/binance.js.map +1 -1
  18. package/dist/mappers/binancedex.d.ts +1 -1
  19. package/dist/mappers/binancedex.d.ts.map +1 -1
  20. package/dist/mappers/binancedex.js +4 -0
  21. package/dist/mappers/binancedex.js.map +1 -1
  22. package/dist/mappers/binanceoptions.d.ts.map +1 -1
  23. package/dist/mappers/binanceoptions.js +3 -0
  24. package/dist/mappers/binanceoptions.js.map +1 -1
  25. package/dist/mappers/bitfinex.d.ts +1 -1
  26. package/dist/mappers/bitfinex.d.ts.map +1 -1
  27. package/dist/mappers/bitfinex.js +5 -0
  28. package/dist/mappers/bitfinex.js.map +1 -1
  29. package/dist/mappers/bitflyer.d.ts +1 -1
  30. package/dist/mappers/bitflyer.d.ts.map +1 -1
  31. package/dist/mappers/bitflyer.js +3 -0
  32. package/dist/mappers/bitflyer.js.map +1 -1
  33. package/dist/mappers/bitmex.d.ts +1 -1
  34. package/dist/mappers/bitmex.d.ts.map +1 -1
  35. package/dist/mappers/bitmex.js +5 -0
  36. package/dist/mappers/bitmex.js.map +1 -1
  37. package/dist/mappers/bitstamp.d.ts.map +1 -1
  38. package/dist/mappers/bitstamp.js +3 -8
  39. package/dist/mappers/bitstamp.js.map +1 -1
  40. package/dist/mappers/bybit.d.ts.map +1 -1
  41. package/dist/mappers/bybit.js +8 -1
  42. package/dist/mappers/bybit.js.map +1 -1
  43. package/dist/mappers/coinbase.d.ts.map +1 -1
  44. package/dist/mappers/coinbase.js +3 -0
  45. package/dist/mappers/coinbase.js.map +1 -1
  46. package/dist/mappers/coinflex.d.ts +1 -1
  47. package/dist/mappers/coinflex.d.ts.map +1 -1
  48. package/dist/mappers/coinflex.js +4 -0
  49. package/dist/mappers/coinflex.js.map +1 -1
  50. package/dist/mappers/cryptofacilities.d.ts +1 -1
  51. package/dist/mappers/cryptofacilities.d.ts.map +1 -1
  52. package/dist/mappers/cryptofacilities.js +6 -0
  53. package/dist/mappers/cryptofacilities.js.map +1 -1
  54. package/dist/mappers/delta.d.ts +1 -1
  55. package/dist/mappers/delta.d.ts.map +1 -1
  56. package/dist/mappers/delta.js +4 -0
  57. package/dist/mappers/delta.js.map +1 -1
  58. package/dist/mappers/deribit.d.ts +1 -1
  59. package/dist/mappers/deribit.d.ts.map +1 -1
  60. package/dist/mappers/deribit.js +6 -0
  61. package/dist/mappers/deribit.js.map +1 -1
  62. package/dist/mappers/dydx.d.ts +1 -1
  63. package/dist/mappers/dydx.d.ts.map +1 -1
  64. package/dist/mappers/dydx.js +4 -0
  65. package/dist/mappers/dydx.js.map +1 -1
  66. package/dist/mappers/ftx.d.ts +1 -1
  67. package/dist/mappers/ftx.d.ts.map +1 -1
  68. package/dist/mappers/ftx.js +5 -0
  69. package/dist/mappers/ftx.js.map +1 -1
  70. package/dist/mappers/gateio.d.ts.map +1 -1
  71. package/dist/mappers/gateio.js +3 -0
  72. package/dist/mappers/gateio.js.map +1 -1
  73. package/dist/mappers/gateiofutures.d.ts +1 -1
  74. package/dist/mappers/gateiofutures.d.ts.map +1 -1
  75. package/dist/mappers/gateiofutures.js +4 -0
  76. package/dist/mappers/gateiofutures.js.map +1 -1
  77. package/dist/mappers/gemini.d.ts.map +1 -1
  78. package/dist/mappers/gemini.js +3 -0
  79. package/dist/mappers/gemini.js.map +1 -1
  80. package/dist/mappers/hitbtc.d.ts.map +1 -1
  81. package/dist/mappers/hitbtc.js +3 -0
  82. package/dist/mappers/hitbtc.js.map +1 -1
  83. package/dist/mappers/huobi.d.ts +2 -2
  84. package/dist/mappers/huobi.d.ts.map +1 -1
  85. package/dist/mappers/huobi.js +4 -2
  86. package/dist/mappers/huobi.js.map +1 -1
  87. package/dist/mappers/kraken.d.ts.map +1 -1
  88. package/dist/mappers/kraken.js +3 -0
  89. package/dist/mappers/kraken.js.map +1 -1
  90. package/dist/mappers/okex.d.ts +10 -8
  91. package/dist/mappers/okex.d.ts.map +1 -1
  92. package/dist/mappers/okex.js +18 -3
  93. package/dist/mappers/okex.js.map +1 -1
  94. package/dist/mappers/poloniex.d.ts.map +1 -1
  95. package/dist/mappers/poloniex.js +3 -0
  96. package/dist/mappers/poloniex.js.map +1 -1
  97. package/dist/mappers/serum.d.ts +1 -1
  98. package/dist/mappers/serum.d.ts.map +1 -1
  99. package/dist/mappers/serum.js +9 -0
  100. package/dist/mappers/serum.js.map +1 -1
  101. package/dist/mappers/upbit.d.ts +1 -1
  102. package/dist/mappers/upbit.d.ts.map +1 -1
  103. package/dist/mappers/upbit.js +3 -0
  104. package/dist/mappers/upbit.js.map +1 -1
  105. package/dist/realtimefeeds/deribit.d.ts +1 -0
  106. package/dist/realtimefeeds/deribit.d.ts.map +1 -1
  107. package/dist/realtimefeeds/deribit.js +23 -3
  108. package/dist/realtimefeeds/deribit.js.map +1 -1
  109. package/dist/realtimefeeds/realtimefeed.js +1 -1
  110. package/dist/realtimefeeds/realtimefeed.js.map +1 -1
  111. package/package.json +1 -1
  112. package/src/combine.ts +33 -27
  113. package/src/computable/computable.ts +21 -17
  114. package/src/handy.ts +14 -0
  115. package/src/mappers/ascendex.ts +6 -1
  116. package/src/mappers/binance.ts +2 -9
  117. package/src/mappers/binancedex.ts +6 -1
  118. package/src/mappers/binanceoptions.ts +7 -1
  119. package/src/mappers/bitfinex.ts +10 -1
  120. package/src/mappers/bitflyer.ts +8 -2
  121. package/src/mappers/bitmex.ts +12 -2
  122. package/src/mappers/bitstamp.ts +1 -7
  123. package/src/mappers/bybit.ts +12 -1
  124. package/src/mappers/coinbase.ts +7 -1
  125. package/src/mappers/coinflex.ts +8 -1
  126. package/src/mappers/cryptofacilities.ts +12 -1
  127. package/src/mappers/delta.ts +8 -1
  128. package/src/mappers/deribit.ts +14 -2
  129. package/src/mappers/dydx.ts +8 -1
  130. package/src/mappers/ftx.ts +12 -2
  131. package/src/mappers/gateio.ts +5 -0
  132. package/src/mappers/gateiofutures.ts +8 -1
  133. package/src/mappers/gemini.ts +5 -0
  134. package/src/mappers/hitbtc.ts +5 -0
  135. package/src/mappers/huobi.ts +7 -3
  136. package/src/mappers/kraken.ts +7 -1
  137. package/src/mappers/okex.ts +35 -6
  138. package/src/mappers/poloniex.ts +5 -0
  139. package/src/mappers/serum.ts +14 -2
  140. package/src/mappers/upbit.ts +6 -1
  141. package/src/realtimefeeds/deribit.ts +26 -4
  142. package/src/realtimefeeds/realtimefeed.ts +2 -2
@@ -1,5 +1,5 @@
1
- import { asNumberIfValid } from '../handy'
2
- import { BookChange, DerivativeTicker, Exchange, Trade, OptionSummary, Liquidation, BookTicker } from '../types'
1
+ import { asNumberIfValid, upperCaseSymbols } from '../handy'
2
+ import { BookChange, BookTicker, DerivativeTicker, Exchange, Liquidation, OptionSummary, Trade } from '../types'
3
3
  import { Mapper, PendingTickerInfoHelper } from './mapper'
4
4
 
5
5
  // V5 Okex API mappers
@@ -16,6 +16,8 @@ export class OkexV5TradesMapper implements Mapper<OKEX_EXCHANGES, Trade> {
16
16
  }
17
17
 
18
18
  getFilters(symbols?: string[]) {
19
+ symbols = upperCaseSymbols(symbols)
20
+
19
21
  return [
20
22
  {
21
23
  channel: `trades` as const,
@@ -59,6 +61,8 @@ export class OkexV5BookChangeMapper implements Mapper<OKEX_EXCHANGES, BookChange
59
61
  }
60
62
 
61
63
  getFilters(symbols?: string[]) {
64
+ symbols = upperCaseSymbols(symbols)
65
+
62
66
  return [
63
67
  {
64
68
  channel: `books-l2-tbt` as const,
@@ -104,6 +108,8 @@ export class OkexV5BookTickerMapper implements Mapper<OKEX_EXCHANGES, BookTicker
104
108
  }
105
109
 
106
110
  getFilters(symbols?: string[]) {
111
+ symbols = upperCaseSymbols(symbols)
112
+
107
113
  return [
108
114
  {
109
115
  channel: `tickers` as const,
@@ -154,6 +160,8 @@ export class OkexV5DerivativeTickerMapper implements Mapper<'okex-futures' | 'ok
154
160
  }
155
161
 
156
162
  getFilters(symbols?: string[]) {
163
+ symbols = upperCaseSymbols(symbols)
164
+
157
165
  const channels = this._exchange === 'okex-futures' ? this._futuresChannels : this._swapChannels
158
166
  return channels.map((channel) => {
159
167
  if (channel === 'index-tickers') {
@@ -228,9 +236,12 @@ export class OkexV5DerivativeTickerMapper implements Mapper<'okex-futures' | 'ok
228
236
  if (message.arg.channel === 'funding-rate') {
229
237
  const fundingRateMessage = dataMessage as OkexV5FundingRateMessage['data'][0]
230
238
 
231
- pendingTickerInfo.updateFundingRate(Number(fundingRateMessage.fundingRate))
232
- //
233
- pendingTickerInfo.updateFundingTimestamp(new Date(Number(fundingRateMessage.fundingTime)))
239
+ if (fundingRateMessage.fundingRate !== undefined) {
240
+ pendingTickerInfo.updateFundingRate(Number(fundingRateMessage.fundingRate))
241
+ }
242
+ if (fundingRateMessage.fundingTime !== undefined) {
243
+ pendingTickerInfo.updateFundingTimestamp(new Date(Number(fundingRateMessage.fundingTime)))
244
+ }
234
245
 
235
246
  if (fundingRateMessage.nextFundingRate !== undefined) {
236
247
  pendingTickerInfo.updatePredictedFundingRate(Number(fundingRateMessage.nextFundingRate))
@@ -266,6 +277,8 @@ export class OkexV5LiquidationsMapper implements Mapper<OKEX_EXCHANGES, Liquidat
266
277
  }
267
278
 
268
279
  getFilters(symbols?: string[]) {
280
+ symbols = upperCaseSymbols(symbols)
281
+
269
282
  return [
270
283
  {
271
284
  channel: 'liquidations',
@@ -314,6 +327,8 @@ export class OkexV5OptionSummaryMapper implements Mapper<'okex-options', OptionS
314
327
  }
315
328
 
316
329
  getFilters(symbols?: string[]) {
330
+ symbols = upperCaseSymbols(symbols)
331
+
317
332
  const indexes =
318
333
  symbols !== undefined
319
334
  ? symbols.map((s) => {
@@ -532,7 +547,9 @@ type OkexV5IndexTickerMessage = {
532
547
 
533
548
  type OkexV5FundingRateMessage = {
534
549
  arg: { channel: 'funding-rate'; instId: string }
535
- data: [{ fundingRate: '0.00048105'; fundingTime: '1640131200000'; instId: string; instType: 'SWAP'; nextFundingRate: '0.00114' }]
550
+ data: [
551
+ { fundingRate: '0.00048105' | undefined; fundingTime: '1640131200000'; instId: string; instType: 'SWAP'; nextFundingRate: '0.00114' }
552
+ ]
536
553
  }
537
554
 
538
555
  type OkexV5LiquidationMessage = {
@@ -577,6 +594,8 @@ export class OkexTradesMapper implements Mapper<OKEX_EXCHANGES, Trade> {
577
594
  }
578
595
 
579
596
  getFilters(symbols?: string[]) {
597
+ symbols = upperCaseSymbols(symbols)
598
+
580
599
  return [
581
600
  {
582
601
  channel: `${this._market}/trade` as const,
@@ -625,6 +644,8 @@ export class OkexBookChangeMapper implements Mapper<OKEX_EXCHANGES, BookChange>
625
644
  }
626
645
 
627
646
  getFilters(symbols?: string[]) {
647
+ symbols = upperCaseSymbols(symbols)
648
+
628
649
  if (this._canUseTickByTickChannel) {
629
650
  return [
630
651
  {
@@ -689,6 +710,8 @@ export class OkexDerivativeTickerMapper implements Mapper<'okex-futures' | 'okex
689
710
  }
690
711
 
691
712
  getFilters(symbols?: string[]) {
713
+ symbols = upperCaseSymbols(symbols)
714
+
692
715
  const channels = this._exchange === 'okex-futures' ? this._futuresChannels : this._swapChannels
693
716
  return channels.map((channel) => {
694
717
  return {
@@ -745,6 +768,8 @@ export class OkexOptionSummaryMapper implements Mapper<'okex-options', OptionSum
745
768
  }
746
769
 
747
770
  getFilters(symbols?: string[]) {
771
+ symbols = upperCaseSymbols(symbols)
772
+
748
773
  const indexes =
749
774
  symbols !== undefined
750
775
  ? symbols.map((s) => {
@@ -834,6 +859,8 @@ export class OkexLiquidationsMapper implements Mapper<OKEX_EXCHANGES, Liquidatio
834
859
  }
835
860
 
836
861
  getFilters(symbols?: string[]) {
862
+ symbols = upperCaseSymbols(symbols)
863
+
837
864
  return [
838
865
  {
839
866
  channel: `${this._market}/liquidation`,
@@ -868,6 +895,8 @@ export class OkexBookTickerMapper implements Mapper<OKEX_EXCHANGES, BookTicker>
868
895
  }
869
896
 
870
897
  getFilters(symbols?: string[]) {
898
+ symbols = upperCaseSymbols(symbols)
899
+
871
900
  return [
872
901
  {
873
902
  channel: `${this._market}/ticker`,
@@ -1,3 +1,4 @@
1
+ import { upperCaseSymbols } from '../handy'
1
2
  import { BookChange, Trade } from '../types'
2
3
  import { Mapper } from './mapper'
3
4
 
@@ -19,6 +20,8 @@ export class PoloniexTradesMapper implements Mapper<'poloniex', Trade> {
19
20
  }
20
21
 
21
22
  getFilters(symbols?: string[]) {
23
+ symbols = upperCaseSymbols(symbols)
24
+
22
25
  return [
23
26
  {
24
27
  channel: 'price_aggregated_book',
@@ -89,6 +92,8 @@ export class PoloniexBookChangeMapper implements Mapper<'poloniex', BookChange>
89
92
  }
90
93
 
91
94
  getFilters(symbols?: string[]) {
95
+ symbols = upperCaseSymbols(symbols)
96
+
92
97
  return [
93
98
  {
94
99
  channel: 'price_aggregated_book',
@@ -1,6 +1,6 @@
1
+ import { asNumberIfValid, upperCaseSymbols } from '../handy'
2
+ import { BookChange, BookTicker, Exchange, Trade } from '../types'
1
3
  import { Mapper } from './mapper'
2
- import { Trade, BookChange, BookTicker, Exchange } from '../types'
3
- import { asNumberIfValid } from '../handy'
4
4
 
5
5
  export class SerumTradesMapper implements Mapper<'serum' | 'star-atlas', Trade> {
6
6
  constructor(private readonly _exchange: Exchange) {}
@@ -10,6 +10,10 @@ export class SerumTradesMapper implements Mapper<'serum' | 'star-atlas', Trade>
10
10
  }
11
11
 
12
12
  getFilters(symbols?: string[]) {
13
+ if (this._exchange === 'serum') {
14
+ symbols = upperCaseSymbols(symbols)
15
+ }
16
+
13
17
  return [
14
18
  {
15
19
  channel: 'trade',
@@ -41,6 +45,10 @@ export class SerumBookChangeMapper implements Mapper<'serum' | 'star-atlas', Boo
41
45
  }
42
46
 
43
47
  getFilters(symbols?: string[]) {
48
+ if (this._exchange === 'serum') {
49
+ symbols = upperCaseSymbols(symbols)
50
+ }
51
+
44
52
  return [
45
53
  {
46
54
  channel: 'l2snapshot',
@@ -81,6 +89,10 @@ export class SerumBookTickerMapper implements Mapper<'serum' | 'star-atlas', Boo
81
89
  }
82
90
 
83
91
  getFilters(symbols?: string[]) {
92
+ if (this._exchange === 'serum') {
93
+ symbols = upperCaseSymbols(symbols)
94
+ }
95
+
84
96
  return [
85
97
  {
86
98
  channel: 'quote',
@@ -1,5 +1,6 @@
1
+ import { upperCaseSymbols } from '../handy'
2
+ import { BookChange, BookPriceLevel, Trade } from '../types'
1
3
  import { Mapper } from './mapper'
2
- import { Trade, BookChange, BookPriceLevel } from '../types'
3
4
 
4
5
  export class UpbitTradesMapper implements Mapper<'upbit', Trade> {
5
6
  canHandle(message: UpbitTrade) {
@@ -7,6 +8,8 @@ export class UpbitTradesMapper implements Mapper<'upbit', Trade> {
7
8
  }
8
9
 
9
10
  getFilters(symbols?: string[]) {
11
+ symbols = upperCaseSymbols(symbols)
12
+
10
13
  return [
11
14
  {
12
15
  channel: 'trade',
@@ -36,6 +39,8 @@ export class UpbitBookChangeMapper implements Mapper<'upbit', BookChange> {
36
39
  }
37
40
 
38
41
  getFilters(symbols?: string[]) {
42
+ symbols = upperCaseSymbols(symbols)
43
+
39
44
  return [
40
45
  {
41
46
  channel: 'orderbook',
@@ -7,6 +7,7 @@ export class DeribitRealTimeDataFeed extends RealTimeFeedBase {
7
7
  protected channelsWithIntervals: FilterForExchange['deribit']['channel'][] = ['book', 'perpetual', 'trades', 'ticker']
8
8
 
9
9
  protected mapToSubscribeMessages(filters: Filter<string>[]): any[] {
10
+ const hasCredentials = this.hasCredentials()
10
11
  const channels = filters
11
12
  .map((filter) => {
12
13
  if (!filter.symbols || filter.symbols.length === 0) {
@@ -14,17 +15,21 @@ export class DeribitRealTimeDataFeed extends RealTimeFeedBase {
14
15
  }
15
16
 
16
17
  return filter.symbols.map((symbol) => {
17
- const suffix = this.channelsWithIntervals.includes(filter.channel as any) ? '.raw' : ''
18
+ let suffix = this.channelsWithIntervals.includes(filter.channel as any) ? '.raw' : ''
19
+ if (hasCredentials === false && filter.channel === 'book') {
20
+ // deribit requires authentications for raw book data feed
21
+ suffix = '.100ms'
22
+ }
23
+
18
24
  return `${filter.channel}.${symbol}${suffix}`
19
25
  })
20
26
  })
21
27
  .flatMap((f) => f)
22
-
23
28
  return [
24
29
  {
25
30
  jsonrpc: '2.0',
26
- id: 1,
27
- method: 'public/subscribe',
31
+ id: 3,
32
+ method: hasCredentials ? 'private/subscribe' : 'public/subscribe',
28
33
  params: {
29
34
  channels
30
35
  }
@@ -36,6 +41,10 @@ export class DeribitRealTimeDataFeed extends RealTimeFeedBase {
36
41
  return message.error !== undefined
37
42
  }
38
43
 
44
+ private hasCredentials() {
45
+ return process.env.DERIBIT_API_CLIENT_ID !== undefined && process.env.DERIBIT_API_CLIENT_SECRET !== undefined
46
+ }
47
+
39
48
  protected onConnected() {
40
49
  // set heartbeat so deribit won't close connection prematurely
41
50
  // https://docs.deribit.com/v2/#public-set_heartbeat
@@ -48,6 +57,19 @@ export class DeribitRealTimeDataFeed extends RealTimeFeedBase {
48
57
  interval: 10
49
58
  }
50
59
  })
60
+
61
+ if (this.hasCredentials()) {
62
+ this.send({
63
+ jsonrpc: '2.0',
64
+ method: 'public/auth',
65
+ id: 1,
66
+ params: {
67
+ grant_type: 'client_credentials',
68
+ client_id: process.env.DERIBIT_API_CLIENT_ID,
69
+ client_secret: process.env.DERIBIT_API_CLIENT_SECRET
70
+ }
71
+ })
72
+ }
51
73
  }
52
74
 
53
75
  protected messageIsHeartbeat(msg: any) {
@@ -246,6 +246,8 @@ export abstract class RealTimeFeedBase implements RealTimeFeedIterable {
246
246
  return prev
247
247
  }, new Set<string>()).size
248
248
 
249
+ this.onConnected()
250
+
249
251
  for (const message of subscribeMessages) {
250
252
  this.send(message)
251
253
  if (this.throttleSubscribeMS > 0) {
@@ -255,8 +257,6 @@ export abstract class RealTimeFeedBase implements RealTimeFeedIterable {
255
257
 
256
258
  this.debug('(connection id: %d) estabilished connection', this._connectionId)
257
259
 
258
- this.onConnected()
259
-
260
260
  //wait before fetching snapshots until we're sure we've got proper connection estabilished (received some messages)
261
261
  while (this._receivedMessagesCount < symbolsCount * 2) {
262
262
  await wait(100)