tardis-dev 16.4.0 → 16.4.2
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/README.md +1 -1
- package/dist/exchangedetails.d.ts +1 -1
- package/dist/exchangedetails.d.ts.map +1 -1
- package/dist/handy.d.ts +9 -4
- package/dist/handy.d.ts.map +1 -1
- package/dist/handy.js +17 -12
- package/dist/handy.js.map +1 -1
- package/dist/mappers/binanceeuropeanoptions.d.ts.map +1 -1
- package/dist/mappers/binanceeuropeanoptions.js +30 -70
- package/dist/mappers/binanceeuropeanoptions.js.map +1 -1
- package/dist/mappers/bitget.js +5 -5
- package/dist/mappers/bitget.js.map +1 -1
- package/dist/mappers/bitmex.js +5 -5
- package/dist/mappers/bitmex.js.map +1 -1
- package/dist/mappers/bullish.js +15 -15
- package/dist/mappers/bullish.js.map +1 -1
- package/dist/mappers/bybit.js +16 -16
- package/dist/mappers/bybit.js.map +1 -1
- package/dist/mappers/deribit.js +12 -12
- package/dist/mappers/deribit.js.map +1 -1
- package/dist/mappers/ftx.js +5 -5
- package/dist/mappers/ftx.js.map +1 -1
- package/dist/mappers/huobi.d.ts.map +1 -1
- package/dist/mappers/huobi.js +20 -20
- package/dist/mappers/huobi.js.map +1 -1
- package/dist/mappers/index.d.ts.map +1 -1
- package/dist/mappers/index.js +4 -2
- package/dist/mappers/index.js.map +1 -1
- package/dist/mappers/kraken.js +5 -5
- package/dist/mappers/kraken.js.map +1 -1
- package/dist/mappers/kucoinfutures.d.ts.map +1 -1
- package/dist/mappers/kucoinfutures.js +2 -2
- package/dist/mappers/kucoinfutures.js.map +1 -1
- package/dist/mappers/lighter.js +5 -5
- package/dist/mappers/lighter.js.map +1 -1
- package/dist/mappers/okex.js +38 -38
- package/dist/mappers/okex.js.map +1 -1
- package/dist/mappers/phemex.d.ts.map +1 -1
- package/dist/mappers/phemex.js +15 -1
- package/dist/mappers/phemex.js.map +1 -1
- package/dist/mappers/serum.js +5 -5
- package/dist/mappers/serum.js.map +1 -1
- package/package.json +1 -1
- package/src/exchangedetails.ts +1 -1
- package/src/handy.ts +18 -14
- package/src/mappers/binanceeuropeanoptions.ts +30 -79
- package/src/mappers/bitget.ts +5 -5
- package/src/mappers/bitmex.ts +5 -5
- package/src/mappers/bullish.ts +15 -15
- package/src/mappers/bybit.ts +16 -16
- package/src/mappers/deribit.ts +12 -12
- package/src/mappers/ftx.ts +5 -5
- package/src/mappers/huobi.ts +20 -20
- package/src/mappers/index.ts +4 -2
- package/src/mappers/kraken.ts +5 -5
- package/src/mappers/kucoinfutures.ts +2 -2
- package/src/mappers/lighter.ts +5 -5
- package/src/mappers/okex.ts +38 -38
- package/src/mappers/phemex.ts +15 -1
- package/src/mappers/serum.ts +5 -5
package/src/mappers/huobi.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asNonZeroNumberOrUndefined, CircularBuffer, upperCaseSymbols } from '../handy.ts'
|
|
2
2
|
import { BookChange, BookTicker, DerivativeTicker, Exchange, FilterForExchange, Liquidation, OptionSummary, Trade } from '../types.ts'
|
|
3
3
|
import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
|
|
4
4
|
|
|
@@ -489,26 +489,26 @@ export class HuobiOptionsSummaryMapper implements Mapper<'huobi-dm-options', Opt
|
|
|
489
489
|
strikePrice: Number(symbolParts[4]),
|
|
490
490
|
expirationDate,
|
|
491
491
|
|
|
492
|
-
bestBidPrice:
|
|
492
|
+
bestBidPrice: asNonZeroNumberOrUndefined(marketIndexMessage.data.bid_one),
|
|
493
493
|
|
|
494
494
|
bestBidAmount: undefined,
|
|
495
|
-
bestBidIV:
|
|
495
|
+
bestBidIV: asNonZeroNumberOrUndefined(marketIndexMessage.data.iv_bid_one),
|
|
496
496
|
|
|
497
|
-
bestAskPrice:
|
|
497
|
+
bestAskPrice: asNonZeroNumberOrUndefined(marketIndexMessage.data.ask_one),
|
|
498
498
|
bestAskAmount: undefined,
|
|
499
|
-
bestAskIV:
|
|
499
|
+
bestAskIV: asNonZeroNumberOrUndefined(marketIndexMessage.data.iv_ask_one),
|
|
500
500
|
|
|
501
|
-
lastPrice:
|
|
501
|
+
lastPrice: asNonZeroNumberOrUndefined(marketIndexMessage.data.last_price),
|
|
502
502
|
|
|
503
503
|
openInterest,
|
|
504
504
|
|
|
505
|
-
markPrice: marketIndexMessage.data.mark_price > 0 ?
|
|
506
|
-
markIV:
|
|
505
|
+
markPrice: marketIndexMessage.data.mark_price > 0 ? asNonZeroNumberOrUndefined(marketIndexMessage.data.mark_price) : undefined,
|
|
506
|
+
markIV: asNonZeroNumberOrUndefined(marketIndexMessage.data.iv_mark_price),
|
|
507
507
|
|
|
508
|
-
delta:
|
|
509
|
-
gamma:
|
|
510
|
-
vega:
|
|
511
|
-
theta:
|
|
508
|
+
delta: asNonZeroNumberOrUndefined(marketIndexMessage.data.delta),
|
|
509
|
+
gamma: asNonZeroNumberOrUndefined(marketIndexMessage.data.gamma),
|
|
510
|
+
vega: asNonZeroNumberOrUndefined(marketIndexMessage.data.vega),
|
|
511
|
+
theta: asNonZeroNumberOrUndefined(marketIndexMessage.data.theta),
|
|
512
512
|
rho: undefined,
|
|
513
513
|
|
|
514
514
|
underlyingPrice: lastUnderlyingPrice,
|
|
@@ -555,11 +555,11 @@ export class HuobiBookTickerMapper implements Mapper<'huobi' | 'huobi-dm' | 'huo
|
|
|
555
555
|
symbol,
|
|
556
556
|
exchange: this._exchange,
|
|
557
557
|
|
|
558
|
-
askAmount:
|
|
559
|
-
askPrice:
|
|
558
|
+
askAmount: asNonZeroNumberOrUndefined(message.tick.askSize),
|
|
559
|
+
askPrice: asNonZeroNumberOrUndefined(message.tick.ask),
|
|
560
560
|
|
|
561
|
-
bidPrice:
|
|
562
|
-
bidAmount:
|
|
561
|
+
bidPrice: asNonZeroNumberOrUndefined(message.tick.bid),
|
|
562
|
+
bidAmount: asNonZeroNumberOrUndefined(message.tick.bidSize),
|
|
563
563
|
timestamp: new Date(message.tick.quoteTime),
|
|
564
564
|
localTimestamp: localTimestamp
|
|
565
565
|
}
|
|
@@ -569,11 +569,11 @@ export class HuobiBookTickerMapper implements Mapper<'huobi' | 'huobi-dm' | 'huo
|
|
|
569
569
|
symbol,
|
|
570
570
|
exchange: this._exchange,
|
|
571
571
|
|
|
572
|
-
askAmount:
|
|
573
|
-
askPrice:
|
|
572
|
+
askAmount: asNonZeroNumberOrUndefined(message.tick.ask?.[1]),
|
|
573
|
+
askPrice: asNonZeroNumberOrUndefined(message.tick.ask?.[0]),
|
|
574
574
|
|
|
575
|
-
bidPrice:
|
|
576
|
-
bidAmount:
|
|
575
|
+
bidPrice: asNonZeroNumberOrUndefined(message.tick.bid?.[0]),
|
|
576
|
+
bidAmount: asNonZeroNumberOrUndefined(message.tick.bid?.[1]),
|
|
577
577
|
timestamp: new Date(message.tick.ts),
|
|
578
578
|
localTimestamp: localTimestamp
|
|
579
579
|
}
|
package/src/mappers/index.ts
CHANGED
|
@@ -183,6 +183,7 @@ const isRealTime = (date: Date) => {
|
|
|
183
183
|
|
|
184
184
|
const OKEX_V5_API_SWITCH_DATE = new Date('2021-12-23T00:00:00.000Z')
|
|
185
185
|
const OKEX_V5_TBT_BOOK_TICKER_RELEASE_DATE = new Date('2022-05-06T00:00:00.000Z')
|
|
186
|
+
const OKEX_PUBLIC_BOOKS_SWITCH_DATE = new Date('2026-05-21T00:00:00.000Z')
|
|
186
187
|
const shouldUseOkexV5Mappers = (localTimestamp: Date) => {
|
|
187
188
|
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= OKEX_V5_API_SWITCH_DATE.valueOf()
|
|
188
189
|
}
|
|
@@ -200,8 +201,9 @@ const shouldUsePoloniexV2Mappers = (localTimestamp: Date) => {
|
|
|
200
201
|
// see https://status.tardis.dev/incidents/ryjyv8tgdgkj
|
|
201
202
|
const shouldUseOKXPublicBooksChannel = (localTimestamp: Date) => {
|
|
202
203
|
return (
|
|
203
|
-
localTimestamp.valueOf() >= new Date('2023-02-25T00:00:00.000Z').valueOf() &&
|
|
204
|
-
|
|
204
|
+
(localTimestamp.valueOf() >= new Date('2023-02-25T00:00:00.000Z').valueOf() &&
|
|
205
|
+
localTimestamp.valueOf() < new Date('2023-03-09T00:00:00.000Z').valueOf()) ||
|
|
206
|
+
localTimestamp.valueOf() >= OKEX_PUBLIC_BOOKS_SWITCH_DATE.valueOf()
|
|
205
207
|
)
|
|
206
208
|
}
|
|
207
209
|
|
package/src/mappers/kraken.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asNonZeroNumberOrUndefined, upperCaseSymbols } from '../handy.ts'
|
|
2
2
|
import { BookChange, BookTicker, Trade } from '../types.ts'
|
|
3
3
|
import { Mapper } from './mapper.ts'
|
|
4
4
|
|
|
@@ -158,11 +158,11 @@ export const krakenBookTickerMapper: Mapper<'kraken', BookTicker> = {
|
|
|
158
158
|
symbol: message[3],
|
|
159
159
|
exchange: 'kraken',
|
|
160
160
|
|
|
161
|
-
askAmount:
|
|
162
|
-
askPrice:
|
|
161
|
+
askAmount: asNonZeroNumberOrUndefined(askVolume),
|
|
162
|
+
askPrice: asNonZeroNumberOrUndefined(ask),
|
|
163
163
|
|
|
164
|
-
bidPrice:
|
|
165
|
-
bidAmount:
|
|
164
|
+
bidPrice: asNonZeroNumberOrUndefined(bid),
|
|
165
|
+
bidAmount: asNonZeroNumberOrUndefined(bidVolume),
|
|
166
166
|
timestamp,
|
|
167
167
|
localTimestamp: localTimestamp
|
|
168
168
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { debug } from '../debug.ts'
|
|
2
|
-
import {
|
|
2
|
+
import { asNonZeroNumberOrUndefined, CircularBuffer, upperCaseSymbols } from '../handy.ts'
|
|
3
3
|
import { BookChange, BookTicker, DerivativeTicker, Trade } from '../types.ts'
|
|
4
4
|
import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
|
|
5
5
|
|
|
@@ -310,7 +310,7 @@ export class KucoinFuturesDerivativeTickerMapper implements Mapper<'kucoin-futur
|
|
|
310
310
|
}
|
|
311
311
|
|
|
312
312
|
if (message.subject === 'contractDetails') {
|
|
313
|
-
const openInterestValue =
|
|
313
|
+
const openInterestValue = asNonZeroNumberOrUndefined(message.data.openInterest)
|
|
314
314
|
if (openInterestValue === undefined) {
|
|
315
315
|
return
|
|
316
316
|
}
|
package/src/mappers/lighter.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asNonZeroNumberOrUndefined } from '../handy.ts'
|
|
2
2
|
import { BookChange, BookTicker, DerivativeTicker, Liquidation, Trade } from '../types.ts'
|
|
3
3
|
import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
|
|
4
4
|
|
|
@@ -144,10 +144,10 @@ export class LighterBookTickerMapper implements Mapper<'lighter', BookTicker> {
|
|
|
144
144
|
type: 'book_ticker',
|
|
145
145
|
symbol,
|
|
146
146
|
exchange: 'lighter',
|
|
147
|
-
askAmount:
|
|
148
|
-
askPrice:
|
|
149
|
-
bidPrice:
|
|
150
|
-
bidAmount:
|
|
147
|
+
askAmount: asNonZeroNumberOrUndefined(message.ticker?.a?.size),
|
|
148
|
+
askPrice: asNonZeroNumberOrUndefined(message.ticker?.a?.price),
|
|
149
|
+
bidPrice: asNonZeroNumberOrUndefined(message.ticker?.b?.price),
|
|
150
|
+
bidAmount: asNonZeroNumberOrUndefined(message.ticker?.b?.size),
|
|
151
151
|
timestamp: new Date(message.timestamp),
|
|
152
152
|
localTimestamp
|
|
153
153
|
}
|
package/src/mappers/okex.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asNonZeroNumberOrUndefined, upperCaseSymbols } from '../handy.ts'
|
|
2
2
|
import { BookChange, BookTicker, DerivativeTicker, Exchange, Liquidation, OptionSummary, Trade } from '../types.ts'
|
|
3
3
|
import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
|
|
4
4
|
|
|
@@ -221,11 +221,11 @@ export class OkexV5BookTickerMapper implements Mapper<OKEX_EXCHANGES, BookTicker
|
|
|
221
221
|
symbol: okexTicker.instId,
|
|
222
222
|
exchange: this._exchange,
|
|
223
223
|
|
|
224
|
-
askAmount:
|
|
225
|
-
askPrice:
|
|
224
|
+
askAmount: asNonZeroNumberOrUndefined(okexTicker.askSz),
|
|
225
|
+
askPrice: asNonZeroNumberOrUndefined(okexTicker.askPx),
|
|
226
226
|
|
|
227
|
-
bidPrice:
|
|
228
|
-
bidAmount:
|
|
227
|
+
bidPrice: asNonZeroNumberOrUndefined(okexTicker.bidPx),
|
|
228
|
+
bidAmount: asNonZeroNumberOrUndefined(okexTicker.bidSz),
|
|
229
229
|
timestamp: new Date(Number(okexTicker.ts)),
|
|
230
230
|
localTimestamp: localTimestamp
|
|
231
231
|
}
|
|
@@ -501,7 +501,7 @@ export class OkexV5OptionSummaryMapper implements Mapper<'okex-options', OptionS
|
|
|
501
501
|
for (const dataMessage of message.data) {
|
|
502
502
|
const indexTickerMessage = dataMessage as OkexV5IndexTickerMessage['data'][0]
|
|
503
503
|
|
|
504
|
-
const lastIndexPrice =
|
|
504
|
+
const lastIndexPrice = asNonZeroNumberOrUndefined(indexTickerMessage.idxPx)
|
|
505
505
|
if (lastIndexPrice !== undefined) {
|
|
506
506
|
this._indexPrices.set(indexTickerMessage.instId, lastIndexPrice)
|
|
507
507
|
}
|
|
@@ -513,7 +513,7 @@ export class OkexV5OptionSummaryMapper implements Mapper<'okex-options', OptionS
|
|
|
513
513
|
for (const dataMessage of message.data) {
|
|
514
514
|
const openInterestMessage = dataMessage as OkexV5OpenInterestMessage['data'][0]
|
|
515
515
|
|
|
516
|
-
const openInterestValue =
|
|
516
|
+
const openInterestValue = asNonZeroNumberOrUndefined(openInterestMessage.oi)
|
|
517
517
|
if (openInterestValue !== undefined) {
|
|
518
518
|
this._openInterests.set(openInterestMessage.instId, openInterestValue)
|
|
519
519
|
}
|
|
@@ -525,7 +525,7 @@ export class OkexV5OptionSummaryMapper implements Mapper<'okex-options', OptionS
|
|
|
525
525
|
for (const dataMessage of message.data) {
|
|
526
526
|
const markPriceMessage = dataMessage as OkexV5MarkPriceMessage['data'][0]
|
|
527
527
|
|
|
528
|
-
const markPrice =
|
|
528
|
+
const markPrice = asNonZeroNumberOrUndefined(markPriceMessage.markPx)
|
|
529
529
|
if (markPrice !== undefined) {
|
|
530
530
|
this._markPrices.set(markPriceMessage.instId, markPrice)
|
|
531
531
|
}
|
|
@@ -569,24 +569,24 @@ export class OkexV5OptionSummaryMapper implements Mapper<'okex-options', OptionS
|
|
|
569
569
|
strikePrice,
|
|
570
570
|
expirationDate,
|
|
571
571
|
|
|
572
|
-
bestBidPrice:
|
|
573
|
-
bestBidAmount:
|
|
574
|
-
bestBidIV:
|
|
572
|
+
bestBidPrice: asNonZeroNumberOrUndefined(lastTickerInfo?.bidPx),
|
|
573
|
+
bestBidAmount: asNonZeroNumberOrUndefined(lastTickerInfo?.bidSz),
|
|
574
|
+
bestBidIV: asNonZeroNumberOrUndefined(summary.bidVol),
|
|
575
575
|
|
|
576
|
-
bestAskPrice:
|
|
577
|
-
bestAskAmount:
|
|
578
|
-
bestAskIV:
|
|
576
|
+
bestAskPrice: asNonZeroNumberOrUndefined(lastTickerInfo?.askPx),
|
|
577
|
+
bestAskAmount: asNonZeroNumberOrUndefined(lastTickerInfo?.askSz),
|
|
578
|
+
bestAskIV: asNonZeroNumberOrUndefined(summary.askVol),
|
|
579
579
|
|
|
580
|
-
lastPrice:
|
|
580
|
+
lastPrice: asNonZeroNumberOrUndefined(lastTickerInfo?.last),
|
|
581
581
|
openInterest: lastOpenInterest,
|
|
582
582
|
|
|
583
583
|
markPrice: lastMarkPrice,
|
|
584
|
-
markIV:
|
|
584
|
+
markIV: asNonZeroNumberOrUndefined(summary.markVol),
|
|
585
585
|
|
|
586
|
-
delta:
|
|
587
|
-
gamma:
|
|
588
|
-
vega:
|
|
589
|
-
theta:
|
|
586
|
+
delta: asNonZeroNumberOrUndefined(summary.delta),
|
|
587
|
+
gamma: asNonZeroNumberOrUndefined(summary.gamma),
|
|
588
|
+
vega: asNonZeroNumberOrUndefined(summary.vega),
|
|
589
|
+
theta: asNonZeroNumberOrUndefined(summary.theta),
|
|
590
590
|
rho: undefined,
|
|
591
591
|
|
|
592
592
|
underlyingPrice: lastUnderlyingPrice,
|
|
@@ -970,24 +970,24 @@ export class OkexOptionSummaryMapper implements Mapper<'okex-options', OptionSum
|
|
|
970
970
|
strikePrice,
|
|
971
971
|
expirationDate,
|
|
972
972
|
|
|
973
|
-
bestBidPrice:
|
|
974
|
-
bestBidAmount:
|
|
975
|
-
bestBidIV:
|
|
973
|
+
bestBidPrice: asNonZeroNumberOrUndefined(summary.best_bid),
|
|
974
|
+
bestBidAmount: asNonZeroNumberOrUndefined(summary.best_bid_size),
|
|
975
|
+
bestBidIV: asNonZeroNumberOrUndefined(summary.bid_vol),
|
|
976
976
|
|
|
977
|
-
bestAskPrice:
|
|
978
|
-
bestAskAmount:
|
|
979
|
-
bestAskIV:
|
|
977
|
+
bestAskPrice: asNonZeroNumberOrUndefined(summary.best_ask),
|
|
978
|
+
bestAskAmount: asNonZeroNumberOrUndefined(summary.best_ask_size),
|
|
979
|
+
bestAskIV: asNonZeroNumberOrUndefined(summary.ask_vol),
|
|
980
980
|
|
|
981
|
-
lastPrice:
|
|
982
|
-
openInterest:
|
|
981
|
+
lastPrice: asNonZeroNumberOrUndefined(summary.last),
|
|
982
|
+
openInterest: asNonZeroNumberOrUndefined(summary.open_interest),
|
|
983
983
|
|
|
984
|
-
markPrice:
|
|
985
|
-
markIV:
|
|
984
|
+
markPrice: asNonZeroNumberOrUndefined(summary.mark_price),
|
|
985
|
+
markIV: asNonZeroNumberOrUndefined(summary.mark_vol),
|
|
986
986
|
|
|
987
|
-
delta:
|
|
988
|
-
gamma:
|
|
989
|
-
vega:
|
|
990
|
-
theta:
|
|
987
|
+
delta: asNonZeroNumberOrUndefined(summary.delta),
|
|
988
|
+
gamma: asNonZeroNumberOrUndefined(summary.gamma),
|
|
989
|
+
vega: asNonZeroNumberOrUndefined(summary.vega),
|
|
990
|
+
theta: asNonZeroNumberOrUndefined(summary.theta),
|
|
991
991
|
rho: undefined,
|
|
992
992
|
|
|
993
993
|
underlyingPrice: lastUnderlyingPrice,
|
|
@@ -1069,11 +1069,11 @@ export class OkexBookTickerMapper implements Mapper<OKEX_EXCHANGES, BookTicker>
|
|
|
1069
1069
|
symbol: okexTicker.instrument_id,
|
|
1070
1070
|
exchange: this._exchange,
|
|
1071
1071
|
|
|
1072
|
-
askAmount:
|
|
1073
|
-
askPrice:
|
|
1072
|
+
askAmount: asNonZeroNumberOrUndefined(okexTicker.best_ask_size),
|
|
1073
|
+
askPrice: asNonZeroNumberOrUndefined(okexTicker.best_ask),
|
|
1074
1074
|
|
|
1075
|
-
bidPrice:
|
|
1076
|
-
bidAmount:
|
|
1075
|
+
bidPrice: asNonZeroNumberOrUndefined(okexTicker.best_bid),
|
|
1076
|
+
bidAmount: asNonZeroNumberOrUndefined(okexTicker.best_bid_size),
|
|
1077
1077
|
timestamp: new Date(okexTicker.timestamp),
|
|
1078
1078
|
localTimestamp: localTimestamp
|
|
1079
1079
|
}
|
package/src/mappers/phemex.ts
CHANGED
|
@@ -90,7 +90,21 @@ const COINS_STARTING_WITH_S = [
|
|
|
90
90
|
'STRKUSD',
|
|
91
91
|
'SOLVUSD',
|
|
92
92
|
'SPKUSDT',
|
|
93
|
-
'SAHARAUSDT'
|
|
93
|
+
'SAHARAUSDT',
|
|
94
|
+
'SOLAMIUSDT',
|
|
95
|
+
'SAPIENUSDT',
|
|
96
|
+
'SOMIUSDT',
|
|
97
|
+
'SKYUSDT',
|
|
98
|
+
'STBLUSDT',
|
|
99
|
+
'STABLEUSDT',
|
|
100
|
+
'SENTUSDT',
|
|
101
|
+
'SPORTFUNUSDT',
|
|
102
|
+
'SKRUSDT',
|
|
103
|
+
'SPACEUSDT',
|
|
104
|
+
'SPX500USDT',
|
|
105
|
+
'SPYXUSDT',
|
|
106
|
+
'SP500USDT',
|
|
107
|
+
'SNDKUSDT'
|
|
94
108
|
]
|
|
95
109
|
function getInstrumentType(symbol: string) {
|
|
96
110
|
if (/\d+$/.test(symbol)) {
|
package/src/mappers/serum.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asNonZeroNumberOrUndefined, upperCaseSymbols } from '../handy.ts'
|
|
2
2
|
import { BookChange, BookTicker, Exchange, Trade } from '../types.ts'
|
|
3
3
|
import { Mapper } from './mapper.ts'
|
|
4
4
|
|
|
@@ -107,11 +107,11 @@ export class SerumBookTickerMapper implements Mapper<'serum' | 'star-atlas', Boo
|
|
|
107
107
|
symbol: message.market.toUpperCase(),
|
|
108
108
|
exchange: this._exchange,
|
|
109
109
|
|
|
110
|
-
askAmount:
|
|
111
|
-
askPrice:
|
|
110
|
+
askAmount: asNonZeroNumberOrUndefined(message.bestAsk?.[1]),
|
|
111
|
+
askPrice: asNonZeroNumberOrUndefined(message.bestAsk?.[0]),
|
|
112
112
|
|
|
113
|
-
bidPrice:
|
|
114
|
-
bidAmount:
|
|
113
|
+
bidPrice: asNonZeroNumberOrUndefined(message.bestBid?.[0]),
|
|
114
|
+
bidAmount: asNonZeroNumberOrUndefined(message.bestBid?.[1]),
|
|
115
115
|
timestamp: new Date(message.timestamp),
|
|
116
116
|
localTimestamp: localTimestamp
|
|
117
117
|
}
|