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/dist/mappers/phemex.js
CHANGED
|
@@ -80,7 +80,21 @@ const COINS_STARTING_WITH_S = [
|
|
|
80
80
|
'STRKUSD',
|
|
81
81
|
'SOLVUSD',
|
|
82
82
|
'SPKUSDT',
|
|
83
|
-
'SAHARAUSDT'
|
|
83
|
+
'SAHARAUSDT',
|
|
84
|
+
'SOLAMIUSDT',
|
|
85
|
+
'SAPIENUSDT',
|
|
86
|
+
'SOMIUSDT',
|
|
87
|
+
'SKYUSDT',
|
|
88
|
+
'STBLUSDT',
|
|
89
|
+
'STABLEUSDT',
|
|
90
|
+
'SENTUSDT',
|
|
91
|
+
'SPORTFUNUSDT',
|
|
92
|
+
'SKRUSDT',
|
|
93
|
+
'SPACEUSDT',
|
|
94
|
+
'SPX500USDT',
|
|
95
|
+
'SPYXUSDT',
|
|
96
|
+
'SP500USDT',
|
|
97
|
+
'SNDKUSDT'
|
|
84
98
|
];
|
|
85
99
|
function getInstrumentType(symbol) {
|
|
86
100
|
if (/\d+$/.test(symbol)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phemex.js","sourceRoot":"","sources":["../../src/mappers/phemex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAG7D,4CAA4C;AAC5C,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAE,EAAE;IAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;IAE/C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IACjD,SAAS,CAAC,EAAE,GAAG,cAAc,GAAG,IAAI,CAAA;IAEpC,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,8BAA8B,CAAC,MAAc;IACpD,8GAA8G;IAC9G,OAAO,MAAM,KAAK,SAAS,CAAA;AAC7B,CAAC;AAED,MAAM,qBAAqB,GAAG;IAC5B,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,UAAU;IACV,UAAU;IACV,UAAU;IACV,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,WAAW;IACX,SAAS;IACT,UAAU;IACV,SAAS;IACT,QAAQ;IACR,WAAW;IACX,UAAU;IACV,OAAO;IACP,UAAU;IACV,UAAU;IACV,WAAW;IACX,QAAQ;IACR,SAAS;IACT,aAAa;IACb,UAAU;IACV,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;IACT,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,YAAY;
|
|
1
|
+
{"version":3,"file":"phemex.js","sourceRoot":"","sources":["../../src/mappers/phemex.ts"],"names":[],"mappings":"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"}
|
package/dist/mappers/serum.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asNonZeroNumberOrUndefined, upperCaseSymbols } from "../handy.js";
|
|
2
2
|
export class SerumTradesMapper {
|
|
3
3
|
_exchange;
|
|
4
4
|
constructor(_exchange) {
|
|
@@ -97,10 +97,10 @@ export class SerumBookTickerMapper {
|
|
|
97
97
|
type: 'book_ticker',
|
|
98
98
|
symbol: message.market.toUpperCase(),
|
|
99
99
|
exchange: this._exchange,
|
|
100
|
-
askAmount:
|
|
101
|
-
askPrice:
|
|
102
|
-
bidPrice:
|
|
103
|
-
bidAmount:
|
|
100
|
+
askAmount: asNonZeroNumberOrUndefined(message.bestAsk?.[1]),
|
|
101
|
+
askPrice: asNonZeroNumberOrUndefined(message.bestAsk?.[0]),
|
|
102
|
+
bidPrice: asNonZeroNumberOrUndefined(message.bestBid?.[0]),
|
|
103
|
+
bidAmount: asNonZeroNumberOrUndefined(message.bestBid?.[1]),
|
|
104
104
|
timestamp: new Date(message.timestamp),
|
|
105
105
|
localTimestamp: localTimestamp
|
|
106
106
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serum.js","sourceRoot":"","sources":["../../src/mappers/serum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"serum.js","sourceRoot":"","sources":["../../src/mappers/serum.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/exchangedetails.ts
CHANGED
|
@@ -10,7 +10,7 @@ export async function getExchangeDetails<T extends Exchange>(exchange: T) {
|
|
|
10
10
|
return data as ExchangeDetails<T>
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export type SymbolType = 'spot' | 'future' | 'perpetual' | 'option' | 'combo'
|
|
13
|
+
export type SymbolType = 'spot' | 'future' | 'perpetual' | 'option' | 'combo' | 'prediction'
|
|
14
14
|
|
|
15
15
|
export type DatasetType =
|
|
16
16
|
| 'trades'
|
package/src/handy.ts
CHANGED
|
@@ -771,38 +771,42 @@ export function decimalPlaces(n: number) {
|
|
|
771
771
|
}
|
|
772
772
|
|
|
773
773
|
/**
|
|
774
|
-
* Parses optional numeric fields where
|
|
775
|
-
* `0` is valid and preserved
|
|
774
|
+
* Parses optional numeric fields where:
|
|
775
|
+
* * `0` **is valid and preserved**
|
|
776
|
+
* * `undefined`, `null`, `NaN`, `Infinity`, and `-Infinity` are treated as not valid and mapped to `undefined`
|
|
777
|
+
*
|
|
778
|
+
* Use for nullable/optional numeric fields such as open interest, funding rates, and greeks.
|
|
776
779
|
*/
|
|
777
780
|
export function asNumberOrUndefined(val: string | number | undefined | null) {
|
|
778
781
|
if (val === undefined || val === null || val === '') {
|
|
779
782
|
return
|
|
780
783
|
}
|
|
781
784
|
|
|
785
|
+
if (typeof val === 'number') {
|
|
786
|
+
return Number.isFinite(val) ? val : undefined
|
|
787
|
+
}
|
|
788
|
+
|
|
782
789
|
const asNumber = Number(val)
|
|
783
790
|
return Number.isFinite(asNumber) ? asNumber : undefined
|
|
784
791
|
}
|
|
785
792
|
|
|
786
793
|
/**
|
|
787
|
-
* Parses optional numeric fields where
|
|
794
|
+
* Parses optional numeric fields where:
|
|
795
|
+
* * `0`, `undefined`, `null`, `NaN`, `Infinity`, and `-Infinity` are treated as not valid and mapped to `undefined`.
|
|
796
|
+
*
|
|
788
797
|
* Use for empty quote/top-of-book values that exchanges encode as zero.
|
|
789
798
|
*/
|
|
790
|
-
export function
|
|
791
|
-
if (val === undefined || val === null) {
|
|
792
|
-
return
|
|
793
|
-
}
|
|
794
|
-
|
|
795
|
-
var asNumber = Number(val)
|
|
796
|
-
|
|
797
|
-
if (isNaN(asNumber) || isFinite(asNumber) === false) {
|
|
799
|
+
export function asNonZeroNumberOrUndefined(val: string | number | undefined | null) {
|
|
800
|
+
if (val === undefined || val === null || val === '' || val === 0) {
|
|
798
801
|
return
|
|
799
802
|
}
|
|
800
803
|
|
|
801
|
-
if (
|
|
802
|
-
return
|
|
804
|
+
if (typeof val === 'number') {
|
|
805
|
+
return Number.isFinite(val) ? val : undefined
|
|
803
806
|
}
|
|
804
807
|
|
|
805
|
-
|
|
808
|
+
const asNumber = Number(val)
|
|
809
|
+
return Number.isFinite(asNumber) && asNumber !== 0 ? asNumber : undefined
|
|
806
810
|
}
|
|
807
811
|
|
|
808
812
|
export function upperCaseSymbols(symbols?: string[]) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asNonZeroNumberOrUndefined, lowerCaseSymbols, upperCaseSymbols } from '../handy.ts'
|
|
2
2
|
import { BookChange, BookTicker, OptionSummary, Trade } from '../types.ts'
|
|
3
3
|
import { Mapper } from './mapper.ts'
|
|
4
4
|
|
|
@@ -285,34 +285,10 @@ export class BinanceEuropeanOptionSummaryMapper implements Mapper<'binance-europ
|
|
|
285
285
|
|
|
286
286
|
const underlyingIndex = `${base}USDT`
|
|
287
287
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
let bestBidAmount = asNumberIfValid(optionInfo.bq)
|
|
294
|
-
if (bestBidAmount === 0) {
|
|
295
|
-
bestBidAmount = undefined
|
|
296
|
-
}
|
|
297
|
-
let bestAskPrice = asNumberIfValid(optionInfo.ao)
|
|
298
|
-
if (bestAskPrice === 0) {
|
|
299
|
-
bestAskPrice = undefined
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
let bestAskAmount = asNumberIfValid(optionInfo.aq)
|
|
303
|
-
if (bestAskAmount === 0) {
|
|
304
|
-
bestAskAmount = undefined
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
let bestBidIV = bestBidPrice !== undefined ? asNumberIfValid(optionInfo.b) : undefined
|
|
308
|
-
if (bestBidIV === -1) {
|
|
309
|
-
bestBidIV = undefined
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
let bestAskIV = bestAskPrice !== undefined ? asNumberIfValid(optionInfo.a) : undefined
|
|
313
|
-
if (bestAskIV === -1) {
|
|
314
|
-
bestAskIV = undefined
|
|
315
|
-
}
|
|
288
|
+
const bestBidPrice = asNonZeroNumberOrUndefined(optionInfo.bo)
|
|
289
|
+
const bestBidIV = bestBidPrice !== undefined ? asNonZeroNumberOrUndefined(optionInfo.b) : undefined
|
|
290
|
+
const bestAskPrice = asNonZeroNumberOrUndefined(optionInfo.ao)
|
|
291
|
+
const bestAskIV = bestAskPrice !== undefined ? asNonZeroNumberOrUndefined(optionInfo.a) : undefined
|
|
316
292
|
|
|
317
293
|
const optionSummary: OptionSummary = {
|
|
318
294
|
type: 'option_summary',
|
|
@@ -323,24 +299,24 @@ export class BinanceEuropeanOptionSummaryMapper implements Mapper<'binance-europ
|
|
|
323
299
|
expirationDate,
|
|
324
300
|
|
|
325
301
|
bestBidPrice,
|
|
326
|
-
bestBidAmount,
|
|
327
|
-
bestBidIV,
|
|
302
|
+
bestBidAmount: asNonZeroNumberOrUndefined(optionInfo.bq),
|
|
303
|
+
bestBidIV: bestBidIV === -1 ? undefined : bestBidIV,
|
|
328
304
|
|
|
329
305
|
bestAskPrice,
|
|
330
|
-
bestAskAmount,
|
|
331
|
-
bestAskIV,
|
|
306
|
+
bestAskAmount: asNonZeroNumberOrUndefined(optionInfo.aq),
|
|
307
|
+
bestAskIV: bestAskIV === -1 ? undefined : bestAskIV,
|
|
332
308
|
|
|
333
|
-
lastPrice:
|
|
309
|
+
lastPrice: asNonZeroNumberOrUndefined(optionInfo.c),
|
|
334
310
|
|
|
335
311
|
openInterest: this._openInterests.get(optionInfo.s),
|
|
336
312
|
|
|
337
|
-
markPrice:
|
|
313
|
+
markPrice: asNonZeroNumberOrUndefined(optionInfo.mp),
|
|
338
314
|
markIV: undefined,
|
|
339
315
|
|
|
340
|
-
delta:
|
|
341
|
-
gamma:
|
|
342
|
-
vega:
|
|
343
|
-
theta:
|
|
316
|
+
delta: asNonZeroNumberOrUndefined(optionInfo.d),
|
|
317
|
+
gamma: asNonZeroNumberOrUndefined(optionInfo.g),
|
|
318
|
+
vega: asNonZeroNumberOrUndefined(optionInfo.v),
|
|
319
|
+
theta: asNonZeroNumberOrUndefined(optionInfo.t),
|
|
344
320
|
rho: undefined,
|
|
345
321
|
|
|
346
322
|
underlyingPrice: this._indexPrices.get(underlyingIndex),
|
|
@@ -434,43 +410,18 @@ export class BinanceEuropeanOptionSummaryMapperV2 implements Mapper<'binance-eur
|
|
|
434
410
|
const isPut = optionType === 'P'
|
|
435
411
|
const underlyingIndex = `${base}USDT`
|
|
436
412
|
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
let bestBidAmount = asNumberIfValid(markData.bq)
|
|
443
|
-
if (bestBidAmount === 0) {
|
|
444
|
-
bestBidAmount = undefined
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
let bestAskPrice = asNumberIfValid(markData.ao)
|
|
448
|
-
if (bestAskPrice === 0) {
|
|
449
|
-
bestAskPrice = undefined
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
let bestAskAmount = asNumberIfValid(markData.aq)
|
|
453
|
-
if (bestAskAmount === 0) {
|
|
454
|
-
bestAskAmount = undefined
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
let bestBidIV = bestBidPrice !== undefined ? asNumberIfValid(markData.b) : undefined
|
|
458
|
-
if (bestBidIV === -1) {
|
|
459
|
-
bestBidIV = undefined
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
let bestAskIV = bestAskPrice !== undefined ? asNumberIfValid(markData.a) : undefined
|
|
463
|
-
if (bestAskIV === -1) {
|
|
464
|
-
bestAskIV = undefined
|
|
465
|
-
}
|
|
413
|
+
const bestBidPrice = asNonZeroNumberOrUndefined(markData.bo)
|
|
414
|
+
const bestBidIV = bestBidPrice !== undefined ? asNonZeroNumberOrUndefined(markData.b) : undefined
|
|
415
|
+
const bestAskPrice = asNonZeroNumberOrUndefined(markData.ao)
|
|
416
|
+
const bestAskIV = bestAskPrice !== undefined ? asNonZeroNumberOrUndefined(markData.a) : undefined
|
|
466
417
|
|
|
467
|
-
const markPrice =
|
|
468
|
-
const markIV =
|
|
469
|
-
const delta =
|
|
470
|
-
const gamma =
|
|
471
|
-
const vega =
|
|
472
|
-
const theta =
|
|
473
|
-
const underlyingPrice =
|
|
418
|
+
const markPrice = asNonZeroNumberOrUndefined(markData.mp)
|
|
419
|
+
const markIV = asNonZeroNumberOrUndefined(markData.vo)
|
|
420
|
+
const delta = asNonZeroNumberOrUndefined(markData.d)
|
|
421
|
+
const gamma = asNonZeroNumberOrUndefined(markData.g)
|
|
422
|
+
const vega = asNonZeroNumberOrUndefined(markData.v)
|
|
423
|
+
const theta = asNonZeroNumberOrUndefined(markData.t)
|
|
424
|
+
const underlyingPrice = asNonZeroNumberOrUndefined(markData.i) // Index price is included in mark price data
|
|
474
425
|
|
|
475
426
|
const optionSummary: OptionSummary = {
|
|
476
427
|
type: 'option_summary',
|
|
@@ -481,12 +432,12 @@ export class BinanceEuropeanOptionSummaryMapperV2 implements Mapper<'binance-eur
|
|
|
481
432
|
expirationDate,
|
|
482
433
|
|
|
483
434
|
bestBidPrice,
|
|
484
|
-
bestBidAmount,
|
|
485
|
-
bestBidIV,
|
|
435
|
+
bestBidAmount: asNonZeroNumberOrUndefined(markData.bq),
|
|
436
|
+
bestBidIV: bestBidIV === -1 ? undefined : bestBidIV,
|
|
486
437
|
|
|
487
438
|
bestAskPrice,
|
|
488
|
-
bestAskAmount,
|
|
489
|
-
bestAskIV,
|
|
439
|
+
bestAskAmount: asNonZeroNumberOrUndefined(markData.aq),
|
|
440
|
+
bestAskIV: bestAskIV === -1 ? undefined : bestAskIV,
|
|
490
441
|
|
|
491
442
|
lastPrice: this._lastPrices.get(markData.s),
|
|
492
443
|
|
package/src/mappers/bitget.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asNonZeroNumberOrUndefined, upperCaseSymbols } from '../handy.ts'
|
|
2
2
|
import { BookChange, BookTicker, DerivativeTicker, Exchange, Liquidation, Trade } from '../types.ts'
|
|
3
3
|
import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
|
|
4
4
|
|
|
@@ -248,10 +248,10 @@ export class BitgetV3BookTickerMapper implements Mapper<'bitget' | 'bitget-futur
|
|
|
248
248
|
type: 'book_ticker',
|
|
249
249
|
symbol: message.arg.symbol,
|
|
250
250
|
exchange: this._exchange,
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
bidPrice:
|
|
254
|
-
bidAmount:
|
|
251
|
+
askPrice: asNonZeroNumberOrUndefined(bboMessage.a[0]?.[0]),
|
|
252
|
+
askAmount: asNonZeroNumberOrUndefined(bboMessage.a[0]?.[1]),
|
|
253
|
+
bidPrice: asNonZeroNumberOrUndefined(bboMessage.b[0]?.[0]),
|
|
254
|
+
bidAmount: asNonZeroNumberOrUndefined(bboMessage.b[0]?.[1]),
|
|
255
255
|
timestamp: new Date(Number(bboMessage.ts)),
|
|
256
256
|
localTimestamp
|
|
257
257
|
}
|
package/src/mappers/bitmex.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asNonZeroNumberOrUndefined, upperCaseSymbols } from '../handy.ts'
|
|
2
2
|
import { BookChange, BookPriceLevel, BookTicker, DerivativeTicker, FilterForExchange, Liquidation, Trade } from '../types.ts'
|
|
3
3
|
import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
|
|
4
4
|
|
|
@@ -267,11 +267,11 @@ export const bitmexBookTickerMapper: Mapper<'bitmex', BookTicker> = {
|
|
|
267
267
|
type: 'book_ticker',
|
|
268
268
|
symbol: bitmexQuote.symbol,
|
|
269
269
|
exchange: 'bitmex',
|
|
270
|
-
askAmount:
|
|
271
|
-
askPrice:
|
|
270
|
+
askAmount: asNonZeroNumberOrUndefined(bitmexQuote.askSize),
|
|
271
|
+
askPrice: asNonZeroNumberOrUndefined(bitmexQuote.askPrice),
|
|
272
272
|
|
|
273
|
-
bidPrice:
|
|
274
|
-
bidAmount:
|
|
273
|
+
bidPrice: asNonZeroNumberOrUndefined(bitmexQuote.bidPrice),
|
|
274
|
+
bidAmount: asNonZeroNumberOrUndefined(bitmexQuote.bidSize),
|
|
275
275
|
timestamp: new Date(bitmexQuote.timestamp),
|
|
276
276
|
localTimestamp: localTimestamp
|
|
277
277
|
}
|
package/src/mappers/bullish.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asNonZeroNumberOrUndefined, asNumberOrUndefined } from '../handy.ts'
|
|
2
2
|
import { BookChange, BookPriceLevel, BookTicker, DerivativeTicker, OptionSummary, Trade } from '../types.ts'
|
|
3
3
|
import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
|
|
4
4
|
|
|
@@ -102,10 +102,10 @@ export class BullishBookTickerMapper implements Mapper<'bullish', BookTicker> {
|
|
|
102
102
|
type: 'book_ticker',
|
|
103
103
|
symbol: message.data.symbol,
|
|
104
104
|
exchange: 'bullish',
|
|
105
|
-
bidPrice:
|
|
106
|
-
bidAmount:
|
|
107
|
-
askPrice:
|
|
108
|
-
askAmount:
|
|
105
|
+
bidPrice: asNonZeroNumberOrUndefined(message.data.bid[0]),
|
|
106
|
+
bidAmount: asNonZeroNumberOrUndefined(message.data.bid[1]),
|
|
107
|
+
askPrice: asNonZeroNumberOrUndefined(message.data.ask[0]),
|
|
108
|
+
askAmount: asNonZeroNumberOrUndefined(message.data.ask[1]),
|
|
109
109
|
timestamp: new Date(message.data.datetime),
|
|
110
110
|
localTimestamp
|
|
111
111
|
}
|
|
@@ -145,7 +145,7 @@ export class BullishDerivativeTickerMapper implements Mapper<'bullish', Derivati
|
|
|
145
145
|
|
|
146
146
|
*map(message: BullishDerivativeTickerMessage | BullishIndexPriceMessage, localTimestamp: Date): IterableIterator<DerivativeTicker> {
|
|
147
147
|
if (message.dataType === 'V1TAIndexPrice') {
|
|
148
|
-
const price =
|
|
148
|
+
const price = asNonZeroNumberOrUndefined(message.data.price)
|
|
149
149
|
if (price !== undefined) {
|
|
150
150
|
this.indexPrices.set(message.data.assetSymbol, {
|
|
151
151
|
price,
|
|
@@ -160,8 +160,8 @@ export class BullishDerivativeTickerMapper implements Mapper<'bullish', Derivati
|
|
|
160
160
|
const indexAsset = message.data.symbol.split('-')[0]
|
|
161
161
|
const indexPrice = this.indexPrices.get(indexAsset)
|
|
162
162
|
|
|
163
|
-
pendingTickerInfo.updateLastPrice(
|
|
164
|
-
pendingTickerInfo.updateMarkPrice(
|
|
163
|
+
pendingTickerInfo.updateLastPrice(asNonZeroNumberOrUndefined(message.data.last))
|
|
164
|
+
pendingTickerInfo.updateMarkPrice(asNonZeroNumberOrUndefined(message.data.markPrice))
|
|
165
165
|
pendingTickerInfo.updateFundingRate(asNumberOrUndefined(message.data.fundingRate))
|
|
166
166
|
pendingTickerInfo.updateOpenInterest(asNumberOrUndefined(message.data.openInterest))
|
|
167
167
|
pendingTickerInfo.updateIndexPrice(indexPrice?.price)
|
|
@@ -205,7 +205,7 @@ export class BullishOptionSummaryMapper implements Mapper<'bullish', OptionSumma
|
|
|
205
205
|
|
|
206
206
|
*map(message: BullishOptionTickerMessage | BullishIndexPriceMessage, localTimestamp: Date): IterableIterator<OptionSummary> {
|
|
207
207
|
if (message.dataType === 'V1TAIndexPrice') {
|
|
208
|
-
const price =
|
|
208
|
+
const price = asNonZeroNumberOrUndefined(message.data.price)
|
|
209
209
|
if (price !== undefined) {
|
|
210
210
|
this.indexPrices.set(message.data.assetSymbol, {
|
|
211
211
|
price,
|
|
@@ -229,16 +229,16 @@ export class BullishOptionSummaryMapper implements Mapper<'bullish', OptionSumma
|
|
|
229
229
|
optionType: optionType === 'P' ? 'put' : 'call',
|
|
230
230
|
strikePrice: Number(strikePriceText),
|
|
231
231
|
expirationDate,
|
|
232
|
-
bestBidPrice:
|
|
233
|
-
bestBidAmount:
|
|
232
|
+
bestBidPrice: asNonZeroNumberOrUndefined(message.data.bestBid),
|
|
233
|
+
bestBidAmount: asNonZeroNumberOrUndefined(message.data.bidVolume),
|
|
234
234
|
bestBidIV: undefined,
|
|
235
|
-
bestAskPrice:
|
|
236
|
-
bestAskAmount:
|
|
235
|
+
bestAskPrice: asNonZeroNumberOrUndefined(message.data.bestAsk),
|
|
236
|
+
bestAskAmount: asNonZeroNumberOrUndefined(message.data.askVolume),
|
|
237
237
|
bestAskIV: undefined,
|
|
238
|
-
lastPrice:
|
|
238
|
+
lastPrice: asNonZeroNumberOrUndefined(message.data.last),
|
|
239
239
|
openInterest: asNumberOrUndefined(message.data.openInterest),
|
|
240
240
|
markPrice: asNumberOrUndefined(message.data.markPrice),
|
|
241
|
-
markIV:
|
|
241
|
+
markIV: asNonZeroNumberOrUndefined(message.data.impliedVolatility),
|
|
242
242
|
delta: asNumberOrUndefined(message.data.delta),
|
|
243
243
|
gamma: asNumberOrUndefined(message.data.gamma),
|
|
244
244
|
vega: asNumberOrUndefined(message.data.vega),
|
package/src/mappers/bybit.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
|
|
|
@@ -332,27 +332,27 @@ export class BybitV5OptionSummaryMapper implements Mapper<'bybit-options', Optio
|
|
|
332
332
|
strikePrice,
|
|
333
333
|
expirationDate,
|
|
334
334
|
|
|
335
|
-
bestBidPrice:
|
|
336
|
-
bestBidAmount:
|
|
337
|
-
bestBidIV:
|
|
335
|
+
bestBidPrice: asNonZeroNumberOrUndefined(message.data.bidPrice),
|
|
336
|
+
bestBidAmount: asNonZeroNumberOrUndefined(message.data.bidSize),
|
|
337
|
+
bestBidIV: asNonZeroNumberOrUndefined(message.data.bidIv),
|
|
338
338
|
|
|
339
|
-
bestAskPrice:
|
|
340
|
-
bestAskAmount:
|
|
341
|
-
bestAskIV:
|
|
339
|
+
bestAskPrice: asNonZeroNumberOrUndefined(message.data.askPrice),
|
|
340
|
+
bestAskAmount: asNonZeroNumberOrUndefined(message.data.askSize),
|
|
341
|
+
bestAskIV: asNonZeroNumberOrUndefined(message.data.askIv),
|
|
342
342
|
|
|
343
|
-
lastPrice:
|
|
344
|
-
openInterest:
|
|
343
|
+
lastPrice: asNonZeroNumberOrUndefined(message.data.lastPrice),
|
|
344
|
+
openInterest: asNonZeroNumberOrUndefined(message.data.openInterest),
|
|
345
345
|
|
|
346
|
-
markPrice:
|
|
347
|
-
markIV:
|
|
346
|
+
markPrice: asNonZeroNumberOrUndefined(message.data.markPrice),
|
|
347
|
+
markIV: asNonZeroNumberOrUndefined(message.data.markPriceIv),
|
|
348
348
|
|
|
349
|
-
delta:
|
|
350
|
-
gamma:
|
|
351
|
-
vega:
|
|
352
|
-
theta:
|
|
349
|
+
delta: asNonZeroNumberOrUndefined(message.data.delta),
|
|
350
|
+
gamma: asNonZeroNumberOrUndefined(message.data.gamma),
|
|
351
|
+
vega: asNonZeroNumberOrUndefined(message.data.vega),
|
|
352
|
+
theta: asNonZeroNumberOrUndefined(message.data.theta),
|
|
353
353
|
rho: undefined,
|
|
354
354
|
|
|
355
|
-
underlyingPrice:
|
|
355
|
+
underlyingPrice: asNonZeroNumberOrUndefined(message.data.underlyingPrice),
|
|
356
356
|
underlyingIndex: '',
|
|
357
357
|
timestamp: new Date(message.ts),
|
|
358
358
|
localTimestamp: localTimestamp
|
package/src/mappers/deribit.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asNonZeroNumberOrUndefined } from '../handy.ts'
|
|
2
2
|
import { BookChange, BookTicker, DerivativeTicker, Liquidation, OptionSummary, Trade } from '../types.ts'
|
|
3
3
|
import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
|
|
4
4
|
|
|
@@ -200,15 +200,15 @@ export class DeribitOptionSummaryMapper implements Mapper<'deribit', OptionSumma
|
|
|
200
200
|
strikePrice,
|
|
201
201
|
expirationDate,
|
|
202
202
|
|
|
203
|
-
bestBidPrice:
|
|
204
|
-
bestBidAmount:
|
|
205
|
-
bestBidIV:
|
|
203
|
+
bestBidPrice: asNonZeroNumberOrUndefined(optionInfo.best_bid_price),
|
|
204
|
+
bestBidAmount: asNonZeroNumberOrUndefined(optionInfo.best_bid_amount),
|
|
205
|
+
bestBidIV: asNonZeroNumberOrUndefined(optionInfo.bid_iv),
|
|
206
206
|
|
|
207
|
-
bestAskPrice:
|
|
208
|
-
bestAskAmount:
|
|
209
|
-
bestAskIV:
|
|
207
|
+
bestAskPrice: asNonZeroNumberOrUndefined(optionInfo.best_ask_price),
|
|
208
|
+
bestAskAmount: asNonZeroNumberOrUndefined(optionInfo.best_ask_amount),
|
|
209
|
+
bestAskIV: asNonZeroNumberOrUndefined(optionInfo.ask_iv),
|
|
210
210
|
|
|
211
|
-
lastPrice:
|
|
211
|
+
lastPrice: asNonZeroNumberOrUndefined(optionInfo.last_price),
|
|
212
212
|
openInterest: optionInfo.open_interest,
|
|
213
213
|
|
|
214
214
|
markPrice: optionInfo.mark_price,
|
|
@@ -308,10 +308,10 @@ export const deribitBookTickerMapper: Mapper<'deribit', BookTicker> = {
|
|
|
308
308
|
symbol: deribitTicker.instrument_name.toUpperCase(),
|
|
309
309
|
exchange: 'deribit',
|
|
310
310
|
|
|
311
|
-
askAmount:
|
|
312
|
-
askPrice:
|
|
313
|
-
bidPrice:
|
|
314
|
-
bidAmount:
|
|
311
|
+
askAmount: asNonZeroNumberOrUndefined(deribitTicker.best_ask_amount),
|
|
312
|
+
askPrice: asNonZeroNumberOrUndefined(deribitTicker.best_ask_price),
|
|
313
|
+
bidPrice: asNonZeroNumberOrUndefined(deribitTicker.best_bid_price),
|
|
314
|
+
bidAmount: asNonZeroNumberOrUndefined(deribitTicker.best_bid_amount),
|
|
315
315
|
|
|
316
316
|
timestamp: new Date(deribitTicker.timestamp),
|
|
317
317
|
localTimestamp: localTimestamp
|
package/src/mappers/ftx.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asNonZeroNumberOrUndefined, parseμs, upperCaseSymbols } from '../handy.ts'
|
|
2
2
|
import { BookChange, BookTicker, DerivativeTicker, Exchange, Liquidation, Trade } from '../types.ts'
|
|
3
3
|
import { Mapper, PendingTickerInfoHelper } from './mapper.ts'
|
|
4
4
|
|
|
@@ -229,11 +229,11 @@ export class FTXBookTickerMapper implements Mapper<'ftx' | 'ftx-us', BookTicker>
|
|
|
229
229
|
symbol: ftxTicker.market,
|
|
230
230
|
exchange: this._exchange,
|
|
231
231
|
|
|
232
|
-
askAmount:
|
|
233
|
-
askPrice:
|
|
232
|
+
askAmount: asNonZeroNumberOrUndefined(ftxTicker.data.askSize),
|
|
233
|
+
askPrice: asNonZeroNumberOrUndefined(ftxTicker.data.ask),
|
|
234
234
|
|
|
235
|
-
bidPrice:
|
|
236
|
-
bidAmount:
|
|
235
|
+
bidPrice: asNonZeroNumberOrUndefined(ftxTicker.data.bid),
|
|
236
|
+
bidAmount: asNonZeroNumberOrUndefined(ftxTicker.data.bidSize),
|
|
237
237
|
timestamp,
|
|
238
238
|
localTimestamp: localTimestamp
|
|
239
239
|
}
|