tardis-dev 16.5.1 → 16.6.1
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 +4 -4
- package/dist/consts.d.ts +3 -1
- package/dist/consts.d.ts.map +1 -1
- package/dist/consts.js +21 -1
- package/dist/consts.js.map +1 -1
- package/dist/handy.d.ts.map +1 -1
- package/dist/handy.js +6 -3
- package/dist/handy.js.map +1 -1
- package/dist/instrumentinfo.d.ts +1 -1
- package/dist/instrumentinfo.d.ts.map +1 -1
- package/dist/instrumentinfo.js +3 -1
- package/dist/instrumentinfo.js.map +1 -1
- package/dist/mappers/ascendex.d.ts +6 -99
- package/dist/mappers/ascendex.d.ts.map +1 -1
- package/dist/mappers/ascendex.js +13 -4
- package/dist/mappers/ascendex.js.map +1 -1
- package/dist/mappers/binance.d.ts +27 -154
- package/dist/mappers/binance.d.ts.map +1 -1
- package/dist/mappers/binance.js +49 -15
- package/dist/mappers/binance.js.map +1 -1
- package/dist/mappers/binancedex.d.ts +7 -4
- package/dist/mappers/binancedex.d.ts.map +1 -1
- package/dist/mappers/binancedex.js +11 -3
- package/dist/mappers/binancedex.js.map +1 -1
- package/dist/mappers/binanceeuropeanoptions.d.ts +6 -216
- package/dist/mappers/binanceeuropeanoptions.d.ts.map +1 -1
- package/dist/mappers/binanceeuropeanoptions.js +26 -7
- package/dist/mappers/binanceeuropeanoptions.js.map +1 -1
- package/dist/mappers/bitfinex.d.ts +15 -100
- package/dist/mappers/bitfinex.d.ts.map +1 -1
- package/dist/mappers/bitfinex.js +20 -5
- package/dist/mappers/bitfinex.js.map +1 -1
- package/dist/mappers/bitflyer.d.ts +5 -41
- package/dist/mappers/bitflyer.d.ts.map +1 -1
- package/dist/mappers/bitflyer.js +11 -3
- package/dist/mappers/bitflyer.js.map +1 -1
- package/dist/mappers/bitget.d.ts +12 -269
- package/dist/mappers/bitget.d.ts.map +1 -1
- package/dist/mappers/bitget.js +46 -9
- package/dist/mappers/bitget.js.map +1 -1
- package/dist/mappers/bitmex.d.ts +8 -56
- package/dist/mappers/bitmex.d.ts.map +1 -1
- package/dist/mappers/bitmex.js +15 -5
- package/dist/mappers/bitmex.js.map +1 -1
- package/dist/mappers/bitnomial.d.ts +4 -44
- package/dist/mappers/bitnomial.d.ts.map +1 -1
- package/dist/mappers/bitnomial.js +9 -2
- package/dist/mappers/bitnomial.js.map +1 -1
- package/dist/mappers/bitstamp.d.ts +4 -44
- package/dist/mappers/bitstamp.d.ts.map +1 -1
- package/dist/mappers/bitstamp.js +9 -2
- package/dist/mappers/bitstamp.js.map +1 -1
- package/dist/mappers/blockchaincom.d.ts +4 -63
- package/dist/mappers/blockchaincom.d.ts.map +1 -1
- package/dist/mappers/blockchaincom.js +9 -2
- package/dist/mappers/blockchaincom.js.map +1 -1
- package/dist/mappers/bullish.d.ts +8 -158
- package/dist/mappers/bullish.d.ts.map +1 -1
- package/dist/mappers/bullish.js +15 -5
- package/dist/mappers/bullish.js.map +1 -1
- package/dist/mappers/bybit.d.ts +61 -407
- package/dist/mappers/bybit.d.ts.map +1 -1
- package/dist/mappers/bybit.js +60 -15
- package/dist/mappers/bybit.js.map +1 -1
- package/dist/mappers/bybitspot.d.ts +1 -1
- package/dist/mappers/coinbase.d.ts +6 -39
- package/dist/mappers/coinbase.d.ts.map +1 -1
- package/dist/mappers/coinbase.js +11 -3
- package/dist/mappers/coinbase.js.map +1 -1
- package/dist/mappers/coinbaseinternational.d.ts +7 -78
- package/dist/mappers/coinbaseinternational.d.ts.map +1 -1
- package/dist/mappers/coinbaseinternational.js +13 -4
- package/dist/mappers/coinbaseinternational.js.map +1 -1
- package/dist/mappers/coinflex.d.ts +6 -24
- package/dist/mappers/coinflex.d.ts.map +1 -1
- package/dist/mappers/coinflex.js +11 -3
- package/dist/mappers/coinflex.js.map +1 -1
- package/dist/mappers/cryptocom.d.ts +22 -328
- package/dist/mappers/cryptocom.d.ts.map +1 -1
- package/dist/mappers/cryptocom.js +13 -4
- package/dist/mappers/cryptocom.js.map +1 -1
- package/dist/mappers/cryptofacilities.d.ts +8 -96
- package/dist/mappers/cryptofacilities.d.ts.map +1 -1
- package/dist/mappers/cryptofacilities.js +24 -7
- package/dist/mappers/cryptofacilities.js.map +1 -1
- package/dist/mappers/delta.d.ts +7 -114
- package/dist/mappers/delta.d.ts.map +1 -1
- package/dist/mappers/delta.js +30 -10
- package/dist/mappers/delta.js.map +1 -1
- package/dist/mappers/deribit.d.ts +8 -66
- package/dist/mappers/deribit.d.ts.map +1 -1
- package/dist/mappers/deribit.js +17 -6
- package/dist/mappers/deribit.js.map +1 -1
- package/dist/mappers/dydx.d.ts +5 -146
- package/dist/mappers/dydx.d.ts.map +1 -1
- package/dist/mappers/dydx.js +11 -3
- package/dist/mappers/dydx.js.map +1 -1
- package/dist/mappers/dydxv4.d.ts +6 -173
- package/dist/mappers/dydxv4.d.ts.map +1 -1
- package/dist/mappers/dydxv4.js +13 -4
- package/dist/mappers/dydxv4.js.map +1 -1
- package/dist/mappers/ftx.d.ts +12 -107
- package/dist/mappers/ftx.d.ts.map +1 -1
- package/dist/mappers/ftx.js +21 -6
- package/dist/mappers/ftx.js.map +1 -1
- package/dist/mappers/gateio.d.ts +6 -191
- package/dist/mappers/gateio.d.ts.map +1 -1
- package/dist/mappers/gateio.js +28 -8
- package/dist/mappers/gateio.js.map +1 -1
- package/dist/mappers/gateiofutures.d.ts +7 -122
- package/dist/mappers/gateiofutures.d.ts.map +1 -1
- package/dist/mappers/gateiofutures.js +13 -4
- package/dist/mappers/gateiofutures.js.map +1 -1
- package/dist/mappers/gemini.d.ts +6 -3
- package/dist/mappers/gemini.d.ts.map +1 -1
- package/dist/mappers/gemini.js +9 -2
- package/dist/mappers/gemini.js.map +1 -1
- package/dist/mappers/hitbtc.d.ts +6 -3
- package/dist/mappers/hitbtc.d.ts.map +1 -1
- package/dist/mappers/hitbtc.js +9 -2
- package/dist/mappers/hitbtc.js.map +1 -1
- package/dist/mappers/huobi.d.ts +118 -289
- package/dist/mappers/huobi.d.ts.map +1 -1
- package/dist/mappers/huobi.js +45 -7
- package/dist/mappers/huobi.js.map +1 -1
- package/dist/mappers/hyperliquid.d.ts +6 -86
- package/dist/mappers/hyperliquid.d.ts.map +1 -1
- package/dist/mappers/hyperliquid.js +13 -4
- package/dist/mappers/hyperliquid.js.map +1 -1
- package/dist/mappers/index.d.ts +784 -272
- package/dist/mappers/index.d.ts.map +1 -1
- package/dist/mappers/index.js +64 -432
- package/dist/mappers/index.js.map +1 -1
- package/dist/mappers/kraken.d.ts +7 -4
- package/dist/mappers/kraken.d.ts.map +1 -1
- package/dist/mappers/kraken.js +11 -3
- package/dist/mappers/kraken.js.map +1 -1
- package/dist/mappers/kucoin.d.ts +6 -122
- package/dist/mappers/kucoin.d.ts.map +1 -1
- package/dist/mappers/kucoin.js +13 -5
- package/dist/mappers/kucoin.js.map +1 -1
- package/dist/mappers/kucoinfutures.d.ts +6 -207
- package/dist/mappers/kucoinfutures.d.ts.map +1 -1
- package/dist/mappers/kucoinfutures.js +15 -6
- package/dist/mappers/kucoinfutures.js.map +1 -1
- package/dist/mappers/lighter.d.ts +8 -156
- package/dist/mappers/lighter.d.ts.map +1 -1
- package/dist/mappers/lighter.js +15 -5
- package/dist/mappers/lighter.js.map +1 -1
- package/dist/mappers/mapper.d.ts +3 -1
- package/dist/mappers/mapper.d.ts.map +1 -1
- package/dist/mappers/mapper.js.map +1 -1
- package/dist/mappers/mexc.d.ts +122 -0
- package/dist/mappers/mexc.d.ts.map +1 -0
- package/dist/mappers/mexc.js +205 -0
- package/dist/mappers/mexc.js.map +1 -0
- package/dist/mappers/mexcfutures.d.ts +137 -0
- package/dist/mappers/mexcfutures.d.ts.map +1 -0
- package/dist/mappers/mexcfutures.js +225 -0
- package/dist/mappers/mexcfutures.js.map +1 -0
- package/dist/mappers/okex.d.ts +36 -473
- package/dist/mappers/okex.d.ts.map +1 -1
- package/dist/mappers/okex.js +143 -37
- package/dist/mappers/okex.js.map +1 -1
- package/dist/mappers/phemex.d.ts +5 -82
- package/dist/mappers/phemex.d.ts.map +1 -1
- package/dist/mappers/phemex.js +22 -4
- package/dist/mappers/phemex.js.map +1 -1
- package/dist/mappers/poloniex.d.ts +5 -90
- package/dist/mappers/poloniex.d.ts.map +1 -1
- package/dist/mappers/poloniex.js +18 -4
- package/dist/mappers/poloniex.js.map +1 -1
- package/dist/mappers/polymarket.d.ts +7 -31
- package/dist/mappers/polymarket.d.ts.map +1 -1
- package/dist/mappers/polymarket.js +11 -3
- package/dist/mappers/polymarket.js.map +1 -1
- package/dist/mappers/registry.d.ts +41 -0
- package/dist/mappers/registry.d.ts.map +1 -0
- package/dist/mappers/registry.js +111 -0
- package/dist/mappers/registry.js.map +1 -0
- package/dist/mappers/serum.d.ts +16 -89
- package/dist/mappers/serum.d.ts.map +1 -1
- package/dist/mappers/serum.js +21 -3
- package/dist/mappers/serum.js.map +1 -1
- package/dist/mappers/upbit.d.ts +5 -47
- package/dist/mappers/upbit.d.ts.map +1 -1
- package/dist/mappers/upbit.js +9 -2
- package/dist/mappers/upbit.js.map +1 -1
- package/dist/mappers/woox.d.ts +6 -107
- package/dist/mappers/woox.d.ts.map +1 -1
- package/dist/mappers/woox.js +263 -5
- package/dist/mappers/woox.js.map +1 -1
- package/dist/okexsymbols.d.ts +3 -0
- package/dist/okexsymbols.d.ts.map +1 -0
- package/dist/okexsymbols.js +10 -0
- package/dist/okexsymbols.js.map +1 -0
- package/dist/realtimefeeds/hyperliquid.d.ts.map +1 -1
- package/dist/realtimefeeds/hyperliquid.js +3 -1
- package/dist/realtimefeeds/hyperliquid.js.map +1 -1
- package/dist/realtimefeeds/index.d.ts.map +1 -1
- package/dist/realtimefeeds/index.js +4 -0
- package/dist/realtimefeeds/index.js.map +1 -1
- package/dist/realtimefeeds/mexc.d.ts +35 -0
- package/dist/realtimefeeds/mexc.d.ts.map +1 -0
- package/dist/realtimefeeds/mexc.js +261 -0
- package/dist/realtimefeeds/mexc.js.map +1 -0
- package/dist/realtimefeeds/mexcfutures.d.ts +25 -0
- package/dist/realtimefeeds/mexcfutures.d.ts.map +1 -0
- package/dist/realtimefeeds/mexcfutures.js +203 -0
- package/dist/realtimefeeds/mexcfutures.js.map +1 -0
- package/dist/realtimefeeds/okex.d.ts +1 -0
- package/dist/realtimefeeds/okex.d.ts.map +1 -1
- package/dist/realtimefeeds/okex.js +7 -5
- package/dist/realtimefeeds/okex.js.map +1 -1
- package/dist/realtimefeeds/realtimefeed.d.ts +1 -0
- package/dist/realtimefeeds/realtimefeed.d.ts.map +1 -1
- package/dist/realtimefeeds/realtimefeed.js +4 -1
- package/dist/realtimefeeds/realtimefeed.js.map +1 -1
- package/dist/realtimefeeds/woox.d.ts +1 -0
- package/dist/realtimefeeds/woox.d.ts.map +1 -1
- package/dist/realtimefeeds/woox.js +41 -25
- package/dist/realtimefeeds/woox.js.map +1 -1
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +62 -13
- package/dist/replay.js.map +1 -1
- package/example.js +133 -31
- package/package.json +2 -1
- package/src/consts.ts +22 -1
- package/src/handy.ts +6 -3
- package/src/instrumentinfo.ts +5 -2
- package/src/mappers/ascendex.ts +14 -4
- package/src/mappers/binance.ts +61 -21
- package/src/mappers/binancedex.ts +12 -3
- package/src/mappers/binanceeuropeanoptions.ts +28 -7
- package/src/mappers/bitfinex.ts +21 -5
- package/src/mappers/bitflyer.ts +12 -3
- package/src/mappers/bitget.ts +48 -9
- package/src/mappers/bitmex.ts +16 -5
- package/src/mappers/bitnomial.ts +10 -2
- package/src/mappers/bitstamp.ts +10 -2
- package/src/mappers/blockchaincom.ts +10 -2
- package/src/mappers/bullish.ts +16 -5
- package/src/mappers/bybit.ts +70 -15
- package/src/mappers/coinbase.ts +12 -3
- package/src/mappers/coinbaseinternational.ts +14 -4
- package/src/mappers/coinflex.ts +12 -3
- package/src/mappers/cryptocom.ts +14 -4
- package/src/mappers/cryptofacilities.ts +30 -6
- package/src/mappers/delta.ts +41 -7
- package/src/mappers/deribit.ts +18 -6
- package/src/mappers/dydx.ts +12 -3
- package/src/mappers/dydxv4.ts +14 -4
- package/src/mappers/ftx.ts +22 -6
- package/src/mappers/gateio.ts +34 -8
- package/src/mappers/gateiofutures.ts +14 -4
- package/src/mappers/gemini.ts +10 -2
- package/src/mappers/hitbtc.ts +10 -2
- package/src/mappers/huobi.ts +47 -10
- package/src/mappers/hyperliquid.ts +14 -4
- package/src/mappers/index.ts +133 -679
- package/src/mappers/kraken.ts +12 -3
- package/src/mappers/kucoin.ts +19 -5
- package/src/mappers/kucoinfutures.ts +20 -5
- package/src/mappers/lighter.ts +16 -5
- package/src/mappers/mapper.ts +3 -1
- package/src/mappers/mexc.ts +324 -0
- package/src/mappers/mexcfutures.ts +352 -0
- package/src/mappers/okex.ts +178 -37
- package/src/mappers/phemex.ts +25 -4
- package/src/mappers/poloniex.ts +20 -4
- package/src/mappers/polymarket.ts +12 -3
- package/src/mappers/registry.ts +203 -0
- package/src/mappers/serum.ts +22 -3
- package/src/mappers/upbit.ts +10 -2
- package/src/mappers/woox.ts +380 -6
- package/src/okexsymbols.ts +10 -0
- package/src/realtimefeeds/hyperliquid.ts +4 -1
- package/src/realtimefeeds/index.ts +4 -0
- package/src/realtimefeeds/mexc.ts +327 -0
- package/src/realtimefeeds/mexcfutures.ts +269 -0
- package/src/realtimefeeds/okex.ts +7 -5
- package/src/realtimefeeds/realtimefeed.ts +5 -1
- package/src/realtimefeeds/woox.ts +63 -26
- package/src/replay.ts +73 -15
package/src/mappers/index.ts
CHANGED
|
@@ -1,686 +1,140 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
} from './
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
} from './
|
|
22
|
-
import {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
} from './
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
BitgetV3BookChangeMapper,
|
|
36
|
-
BitgetV3BookTickerMapper,
|
|
37
|
-
BitgetV3DerivativeTickerMapper,
|
|
38
|
-
BitgetV3LiquidationsMapper,
|
|
39
|
-
BitgetV3TradesMapper
|
|
40
|
-
} from './bitget.ts'
|
|
41
|
-
import {
|
|
42
|
-
BitmexBookChangeMapper,
|
|
43
|
-
BitmexDerivativeTickerMapper,
|
|
44
|
-
bitmexLiquidationsMapper,
|
|
45
|
-
bitmexBookTickerMapper,
|
|
46
|
-
bitmexTradesMapper
|
|
47
|
-
} from './bitmex.ts'
|
|
48
|
-
import { BitnomialBookChangMapper, bitnomialTradesMapper } from './bitnomial.ts'
|
|
49
|
-
import { BitstampBookChangeMapper, bitstampTradesMapper } from './bitstamp.ts'
|
|
50
|
-
import { BlockchainComBookChangeMapper, BlockchainComTradesMapper } from './blockchaincom.ts'
|
|
51
|
-
import {
|
|
52
|
-
BullishBookChangeMapper,
|
|
53
|
-
BullishBookTickerMapper,
|
|
54
|
-
BullishDerivativeTickerMapper,
|
|
55
|
-
BullishOptionSummaryMapper,
|
|
56
|
-
BullishTradesMapper
|
|
57
|
-
} from './bullish.ts'
|
|
58
|
-
import {
|
|
59
|
-
BybitBookChangeMapper,
|
|
60
|
-
BybitDerivativeTickerMapper,
|
|
61
|
-
BybitLiquidationsMapper,
|
|
62
|
-
BybitTradesMapper,
|
|
63
|
-
BybitV5AllLiquidationsMapper,
|
|
64
|
-
BybitV5BookChangeMapper,
|
|
65
|
-
BybitV5BookTickerMapper,
|
|
66
|
-
BybitV5DerivativeTickerMapper,
|
|
67
|
-
BybitV5LiquidationsMapper,
|
|
68
|
-
BybitV5OptionSummaryMapper,
|
|
69
|
-
BybitV5TradesMapper
|
|
70
|
-
} from './bybit.ts'
|
|
71
|
-
import { BybitSpotBookChangeMapper, BybitSpotBookTickerMapper, BybitSpotTradesMapper } from './bybitspot.ts'
|
|
72
|
-
import { CoinbaseBookChangMapper, coinbaseBookTickerMapper, coinbaseTradesMapper } from './coinbase.ts'
|
|
73
|
-
import {
|
|
74
|
-
CoinbaseInternationalBookChangMapper,
|
|
75
|
-
coinbaseInternationalBookTickerMapper,
|
|
76
|
-
CoinbaseInternationalDerivativeTickerMapper,
|
|
77
|
-
coinbaseInternationalTradesMapper
|
|
78
|
-
} from './coinbaseinternational.ts'
|
|
79
|
-
import { coinflexBookChangeMapper, CoinflexDerivativeTickerMapper, coinflexTradesMapper } from './coinflex.ts'
|
|
80
|
-
import {
|
|
81
|
-
CryptoComBookChangeMapper,
|
|
82
|
-
CryptoComBookTickerMapper,
|
|
83
|
-
CryptoComDerivativeTickerMapper,
|
|
84
|
-
CryptoComTradesMapper
|
|
85
|
-
} from './cryptocom.ts'
|
|
86
|
-
import {
|
|
87
|
-
cryptofacilitiesBookChangeMapper,
|
|
88
|
-
CryptofacilitiesDerivativeTickerMapper,
|
|
89
|
-
cryptofacilitiesLiquidationsMapper,
|
|
90
|
-
cryptofacilitiesBookTickerMapper,
|
|
91
|
-
cryptofacilitiesTradesMapper
|
|
92
|
-
} from './cryptofacilities.ts'
|
|
93
|
-
import { DeltaBookChangeMapper, DeltaBookTickerMapper, DeltaDerivativeTickerMapper, DeltaTradesMapper } from './delta.ts'
|
|
94
|
-
import {
|
|
95
|
-
deribitBookChangeMapper,
|
|
96
|
-
DeribitDerivativeTickerMapper,
|
|
97
|
-
deribitLiquidationsMapper,
|
|
98
|
-
DeribitOptionSummaryMapper,
|
|
99
|
-
deribitBookTickerMapper,
|
|
100
|
-
deribitTradesMapper
|
|
101
|
-
} from './deribit.ts'
|
|
102
|
-
import { DydxBookChangeMapper, DydxDerivativeTickerMapper, DydxTradesMapper } from './dydx.ts'
|
|
103
|
-
import { DydxV4BookChangeMapper, DydxV4DerivativeTickerMapper, DydxV4LiquidationsMapper, DydxV4TradesMapper } from './dydxv4.ts'
|
|
104
|
-
import { FTXBookChangeMapper, FTXDerivativeTickerMapper, FTXLiquidationsMapper, FTXBookTickerMapper, FTXTradesMapper } from './ftx.ts'
|
|
105
|
-
import {
|
|
106
|
-
GateIOBookChangeMapper,
|
|
107
|
-
GateIOTradesMapper,
|
|
108
|
-
GateIOV4BookChangeMapper,
|
|
109
|
-
GateIOV4BookTickerMapper,
|
|
110
|
-
GateIOV4OrderBookV2ChangeMapper,
|
|
111
|
-
GateIOV4TradesMapper
|
|
112
|
-
} from './gateio.ts'
|
|
113
|
-
import {
|
|
114
|
-
GateIOFuturesBookChangeMapper,
|
|
115
|
-
GateIOFuturesBookTickerMapper,
|
|
116
|
-
GateIOFuturesDerivativeTickerMapper,
|
|
117
|
-
GateIOFuturesTradesMapper
|
|
118
|
-
} from './gateiofutures.ts'
|
|
119
|
-
import { geminiBookChangeMapper, geminiTradesMapper } from './gemini.ts'
|
|
120
|
-
import { hitBtcBookChangeMapper, hitBtcTradesMapper } from './hitbtc.ts'
|
|
121
|
-
import {
|
|
122
|
-
HuobiBookChangeMapper,
|
|
123
|
-
HuobiDerivativeTickerMapper,
|
|
124
|
-
HuobiLiquidationsMapper,
|
|
125
|
-
HuobiMBPBookChangeMapper,
|
|
126
|
-
HuobiOptionsSummaryMapper,
|
|
127
|
-
HuobiBookTickerMapper,
|
|
128
|
-
HuobiTradesMapper
|
|
129
|
-
} from './huobi.ts'
|
|
130
|
-
import {
|
|
131
|
-
HyperliquidBookChangeMapper,
|
|
132
|
-
HyperliquidBookTickerMapper,
|
|
133
|
-
HyperliquidDerivativeTickerMapper,
|
|
134
|
-
HyperliquidTradesMapper
|
|
135
|
-
} from './hyperliquid.ts'
|
|
136
|
-
import {
|
|
137
|
-
LighterBookChangeMapper,
|
|
138
|
-
LighterBookTickerMapper,
|
|
139
|
-
LighterDerivativeTickerMapper,
|
|
140
|
-
LighterLiquidationMapper,
|
|
141
|
-
LighterTradesMapper
|
|
142
|
-
} from './lighter.ts'
|
|
143
|
-
import { krakenBookChangeMapper, krakenBookTickerMapper, krakenTradesMapper } from './kraken.ts'
|
|
144
|
-
import { KucoinBookChangeMapper, KucoinBookTickerMapper, KucoinTradesMapper } from './kucoin.ts'
|
|
145
|
-
import {
|
|
146
|
-
KucoinFuturesBookChangeMapper,
|
|
147
|
-
KucoinFuturesBookTickerMapper,
|
|
148
|
-
KucoinFuturesDerivativeTickerMapper,
|
|
149
|
-
KucoinFuturesTradesMapper
|
|
150
|
-
} from './kucoinfutures.ts'
|
|
1
|
+
import { BookChange, BookTicker, DerivativeTicker, Exchange, Liquidation, NormalizedData, OptionSummary, Trade } from '../types.ts'
|
|
2
|
+
import { ascendexMappers } from './ascendex.ts'
|
|
3
|
+
import { binanceMappers } from './binance.ts'
|
|
4
|
+
import { binanceDexMappers } from './binancedex.ts'
|
|
5
|
+
import { binanceEuropeanOptionsMappers } from './binanceeuropeanoptions.ts'
|
|
6
|
+
import { bitfinexMappers } from './bitfinex.ts'
|
|
7
|
+
import { bitflyerMappers } from './bitflyer.ts'
|
|
8
|
+
import { bitgetMappers } from './bitget.ts'
|
|
9
|
+
import { bitmexMappers } from './bitmex.ts'
|
|
10
|
+
import { bitnomialMappers } from './bitnomial.ts'
|
|
11
|
+
import { bitstampMappers } from './bitstamp.ts'
|
|
12
|
+
import { blockchainComMappers } from './blockchaincom.ts'
|
|
13
|
+
import { bullishMappers } from './bullish.ts'
|
|
14
|
+
import { bybitMappers } from './bybit.ts'
|
|
15
|
+
import { coinbaseMappers } from './coinbase.ts'
|
|
16
|
+
import { coinbaseInternationalMappers } from './coinbaseinternational.ts'
|
|
17
|
+
import { coinflexMappers } from './coinflex.ts'
|
|
18
|
+
import { cryptoComMappers } from './cryptocom.ts'
|
|
19
|
+
import { cryptofacilitiesMappers } from './cryptofacilities.ts'
|
|
20
|
+
import { deltaMappers } from './delta.ts'
|
|
21
|
+
import { deribitMappers } from './deribit.ts'
|
|
22
|
+
import { dydxMappers } from './dydx.ts'
|
|
23
|
+
import { dydxV4Mappers } from './dydxv4.ts'
|
|
24
|
+
import { ftxMappers } from './ftx.ts'
|
|
25
|
+
import { gateIOMappers } from './gateio.ts'
|
|
26
|
+
import { gateIOFuturesMappers } from './gateiofutures.ts'
|
|
27
|
+
import { geminiMappers } from './gemini.ts'
|
|
28
|
+
import { hitBtcMappers } from './hitbtc.ts'
|
|
29
|
+
import { huobiMappers } from './huobi.ts'
|
|
30
|
+
import { hyperliquidMappers } from './hyperliquid.ts'
|
|
31
|
+
import { krakenMappers } from './kraken.ts'
|
|
32
|
+
import { kucoinMappers } from './kucoin.ts'
|
|
33
|
+
import { kucoinFuturesMappers } from './kucoinfutures.ts'
|
|
34
|
+
import { lighterMappers } from './lighter.ts'
|
|
151
35
|
import { Mapper } from './mapper.ts'
|
|
152
|
-
import {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
OkexV5LiquidationsMapper,
|
|
163
|
-
OkexV5OptionSummaryMapper,
|
|
164
|
-
OkexV5TradesMapper
|
|
165
|
-
} from './okex.ts'
|
|
166
|
-
import { OkexSpreadsBookChangeMapper, OkexSpreadsBookTickerMapper, OkexSpreadsTradesMapper } from './okexspreads.ts'
|
|
167
|
-
import { phemexBookChangeMapper, PhemexDerivativeTickerMapper, phemexTradesMapper } from './phemex.ts'
|
|
168
|
-
import { PoloniexBookChangeMapper, PoloniexTradesMapper, PoloniexV2BookChangeMapper, PoloniexV2TradesMapper } from './poloniex.ts'
|
|
169
|
-
import { SerumBookChangeMapper, SerumBookTickerMapper, SerumTradesMapper } from './serum.ts'
|
|
170
|
-
import { UpbitBookChangeMapper, UpbitTradesMapper } from './upbit.ts'
|
|
171
|
-
import { WooxBookChangeMapper, WooxBookTickerMapper, WooxDerivativeTickerMapper, wooxTradesMapper } from './woox.ts'
|
|
172
|
-
import { PolymarketBookChangeMapper, PolymarketBookTickerMapper, PolymarketTradesMapper } from './polymarket.ts'
|
|
36
|
+
import { mexcFuturesMappers } from './mexcfutures.ts'
|
|
37
|
+
import { mexcMappers } from './mexc.ts'
|
|
38
|
+
import { okexMappers } from './okex.ts'
|
|
39
|
+
import { phemexMappers } from './phemex.ts'
|
|
40
|
+
import { poloniexMappers } from './poloniex.ts'
|
|
41
|
+
import { polymarketMappers } from './polymarket.ts'
|
|
42
|
+
import { serumMappers } from './serum.ts'
|
|
43
|
+
import { MapperCollection, mergeExchangeMappers } from './registry.ts'
|
|
44
|
+
import { upbitMappers } from './upbit.ts'
|
|
45
|
+
import { wooxMappers } from './woox.ts'
|
|
173
46
|
|
|
174
47
|
export * from './mapper.ts'
|
|
175
48
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
const isRealTime = (date: Date) => {
|
|
179
|
-
if (process.env.__NO_REAL_TIME__) {
|
|
180
|
-
return false
|
|
181
|
-
}
|
|
182
|
-
return date.valueOf() + THREE_MINUTES_IN_MS > new Date().valueOf()
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
const OKEX_V5_API_SWITCH_DATE = new Date('2021-12-23T00:00:00.000Z')
|
|
186
|
-
const OKEX_V5_TBT_BOOK_TICKER_RELEASE_DATE = new Date('2022-05-06T00:00:00.000Z')
|
|
187
|
-
const OKEX_PUBLIC_BOOKS_SWITCH_DATE = new Date('2026-05-21T00:00:00.000Z')
|
|
188
|
-
const shouldUseOkexV5Mappers = (localTimestamp: Date) => {
|
|
189
|
-
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= OKEX_V5_API_SWITCH_DATE.valueOf()
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
const canUseOkexTbtBookTicker = (localTimestamp: Date) => {
|
|
193
|
-
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= OKEX_V5_TBT_BOOK_TICKER_RELEASE_DATE.valueOf()
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
const POLONIEX_V2_API_SWITCH_DATE = new Date('2022-08-02T00:00:00.000Z')
|
|
197
|
-
|
|
198
|
-
const shouldUsePoloniexV2Mappers = (localTimestamp: Date) => {
|
|
199
|
-
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= POLONIEX_V2_API_SWITCH_DATE.valueOf()
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// see https://status.tardis.dev/incidents/ryjyv8tgdgkj
|
|
203
|
-
const shouldUseOKXPublicBooksChannel = (localTimestamp: Date) => {
|
|
204
|
-
return (
|
|
205
|
-
(localTimestamp.valueOf() >= new Date('2023-02-25T00:00:00.000Z').valueOf() &&
|
|
206
|
-
localTimestamp.valueOf() < new Date('2023-03-09T00:00:00.000Z').valueOf()) ||
|
|
207
|
-
localTimestamp.valueOf() >= OKEX_PUBLIC_BOOKS_SWITCH_DATE.valueOf()
|
|
208
|
-
)
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
const shouldIgnoreBookSnapshotOverlap = (date: Date) => {
|
|
212
|
-
if (process.env.IGNORE_BOOK_SNAPSHOT_OVERLAP_ERROR) {
|
|
213
|
-
return true
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
return isRealTime(date) === false
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
const BYBIT_V5_API_SWITCH_DATE = new Date('2023-04-05T00:00:00.000Z')
|
|
220
|
-
|
|
221
|
-
const BYBIT_V5_API_ALL_LIQUIDATION_SUPPORT_DATE = new Date('2025-02-26T00:00:00.000Z')
|
|
222
|
-
|
|
223
|
-
const shouldUseBybitV5Mappers = (localTimestamp: Date) => {
|
|
224
|
-
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= BYBIT_V5_API_SWITCH_DATE.valueOf()
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
const shouldUseBybitAllLiquidationFeed = (localTimestamp: Date) => {
|
|
228
|
-
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= BYBIT_V5_API_ALL_LIQUIDATION_SUPPORT_DATE.valueOf()
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
const BITGET_V3_API_SWITCH_DATE = new Date('2026-04-28T00:00:00.000Z')
|
|
232
|
-
|
|
233
|
-
const shouldUseBitgetV3Mappers = (localTimestamp: Date) => {
|
|
234
|
-
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= BITGET_V3_API_SWITCH_DATE.valueOf()
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
const OKCOIN_V5_API_SWITCH_DATE = new Date('2023-04-27T00:00:00.000Z')
|
|
238
|
-
const shouldUseOkcoinV5Mappers = (localTimestamp: Date) => {
|
|
239
|
-
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= OKCOIN_V5_API_SWITCH_DATE.valueOf()
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
const GATE_IO_V4_API_SWITCH_DATE = new Date('2023-04-29T00:00:00.000Z')
|
|
243
|
-
const GATE_IO_V4_ORDER_BOOK_V2_SWITCH_DATE = new Date('2025-08-01T00:00:00.000Z')
|
|
244
|
-
|
|
245
|
-
const shouldUseGateIOV4Mappers = (localTimestamp: Date) => {
|
|
246
|
-
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= GATE_IO_V4_API_SWITCH_DATE.valueOf()
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
const shouldUseGateIOV4OrderBookV2Mappers = (localTimestamp: Date) => {
|
|
250
|
-
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= GATE_IO_V4_ORDER_BOOK_V2_SWITCH_DATE.valueOf()
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
const shouldUseCFRelativeFunding = (localTimestamp: Date) => {
|
|
254
|
-
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= new Date('2022-09-29T00:00:00.000Z').valueOf()
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
const shouldUseOKXTradesAllChannel = (localTimestamp: Date) => {
|
|
258
|
-
if (process.env.OKX_USE_TRADES_CHANNEL) {
|
|
259
|
-
return false
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= new Date('2023-10-19T00:00:00.000Z').valueOf()
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
const BINANCE_EUROPEAN_OPTIONS_V2_API_SWITCH_DATE = new Date('2025-12-17T00:00:00.000Z')
|
|
266
|
-
|
|
267
|
-
const shouldUseBinanceEuropeanOptionsV2Mappers = (localTimestamp: Date) => {
|
|
268
|
-
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= BINANCE_EUROPEAN_OPTIONS_V2_API_SWITCH_DATE.valueOf()
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
const tradesMappers = {
|
|
272
|
-
bitmex: () => bitmexTradesMapper,
|
|
273
|
-
binance: () => new BinanceTradesMapper('binance'),
|
|
274
|
-
'binance-us': () => new BinanceTradesMapper('binance-us'),
|
|
275
|
-
'binance-jersey': () => new BinanceTradesMapper('binance-jersey'),
|
|
276
|
-
'binance-futures': () => new BinanceTradesMapper('binance-futures'),
|
|
277
|
-
'binance-delivery': () => new BinanceTradesMapper('binance-delivery'),
|
|
278
|
-
'binance-dex': () => binanceDexTradesMapper,
|
|
279
|
-
bitfinex: () => new BitfinexTradesMapper('bitfinex'),
|
|
280
|
-
'bitfinex-derivatives': () => new BitfinexTradesMapper('bitfinex-derivatives'),
|
|
281
|
-
bitflyer: () => bitflyerTradesMapper,
|
|
282
|
-
bitstamp: () => bitstampTradesMapper,
|
|
283
|
-
coinbase: () => coinbaseTradesMapper,
|
|
284
|
-
cryptofacilities: () => cryptofacilitiesTradesMapper,
|
|
285
|
-
deribit: () => deribitTradesMapper,
|
|
286
|
-
ftx: () => new FTXTradesMapper('ftx'),
|
|
287
|
-
'ftx-us': () => new FTXTradesMapper('ftx-us'),
|
|
288
|
-
gemini: () => geminiTradesMapper,
|
|
289
|
-
kraken: () => krakenTradesMapper,
|
|
290
|
-
okex: (localTimestamp: Date) =>
|
|
291
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
292
|
-
? new OkexV5TradesMapper('okex', shouldUseOKXTradesAllChannel(localTimestamp))
|
|
293
|
-
: new OkexTradesMapper('okex', 'spot'),
|
|
294
|
-
|
|
295
|
-
'okex-futures': (localTimestamp: Date) =>
|
|
296
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
297
|
-
? new OkexV5TradesMapper('okex-futures', shouldUseOKXTradesAllChannel(localTimestamp))
|
|
298
|
-
: new OkexTradesMapper('okex-futures', 'futures'),
|
|
299
|
-
|
|
300
|
-
'okex-swap': (localTimestamp: Date) =>
|
|
301
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
302
|
-
? new OkexV5TradesMapper('okex-swap', shouldUseOKXTradesAllChannel(localTimestamp))
|
|
303
|
-
: new OkexTradesMapper('okex-swap', 'swap'),
|
|
304
|
-
|
|
305
|
-
'okex-options': (localTimestamp: Date) =>
|
|
306
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
307
|
-
? new OkexV5TradesMapper('okex-options', shouldUseOKXTradesAllChannel(localTimestamp))
|
|
308
|
-
: new OkexTradesMapper('okex-options', 'option'),
|
|
309
|
-
|
|
310
|
-
huobi: () => new HuobiTradesMapper('huobi'),
|
|
311
|
-
'huobi-dm': () => new HuobiTradesMapper('huobi-dm'),
|
|
312
|
-
'huobi-dm-swap': () => new HuobiTradesMapper('huobi-dm-swap'),
|
|
313
|
-
'huobi-dm-linear-swap': () => new HuobiTradesMapper('huobi-dm-linear-swap'),
|
|
314
|
-
'huobi-dm-options': () => new HuobiTradesMapper('huobi-dm-options'),
|
|
315
|
-
bybit: (localTimestamp: Date) =>
|
|
316
|
-
shouldUseBybitV5Mappers(localTimestamp) ? new BybitV5TradesMapper('bybit') : new BybitTradesMapper('bybit'),
|
|
317
|
-
okcoin: (localTimestamp: Date) =>
|
|
318
|
-
shouldUseOkcoinV5Mappers(localTimestamp) ? new OkexV5TradesMapper('okcoin', false) : new OkexTradesMapper('okcoin', 'spot'),
|
|
319
|
-
hitbtc: () => hitBtcTradesMapper,
|
|
320
|
-
phemex: () => phemexTradesMapper,
|
|
321
|
-
delta: (localTimestamp: Date) => new DeltaTradesMapper(localTimestamp.valueOf() >= new Date('2020-10-14').valueOf()),
|
|
322
|
-
'gate-io': (localTimestamp: Date) =>
|
|
323
|
-
shouldUseGateIOV4Mappers(localTimestamp) ? new GateIOV4TradesMapper('gate-io') : new GateIOTradesMapper('gate-io'),
|
|
324
|
-
'gate-io-futures': () => new GateIOFuturesTradesMapper('gate-io-futures'),
|
|
325
|
-
poloniex: (localTimestamp: Date) =>
|
|
326
|
-
shouldUsePoloniexV2Mappers(localTimestamp) ? new PoloniexV2TradesMapper() : new PoloniexTradesMapper(),
|
|
327
|
-
coinflex: () => coinflexTradesMapper,
|
|
328
|
-
upbit: () => new UpbitTradesMapper(),
|
|
329
|
-
ascendex: () => new AscendexTradesMapper(),
|
|
330
|
-
dydx: () => new DydxTradesMapper(),
|
|
331
|
-
'dydx-v4': () => new DydxV4TradesMapper(),
|
|
332
|
-
serum: () => new SerumTradesMapper('serum'),
|
|
333
|
-
'star-atlas': () => new SerumTradesMapper('star-atlas'),
|
|
334
|
-
mango: () => new SerumTradesMapper('mango'),
|
|
335
|
-
'bybit-spot': (localTimestamp: Date) =>
|
|
336
|
-
shouldUseBybitV5Mappers(localTimestamp) ? new BybitV5TradesMapper('bybit-spot') : new BybitSpotTradesMapper('bybit-spot'),
|
|
337
|
-
'crypto-com': () => new CryptoComTradesMapper('crypto-com'),
|
|
338
|
-
kucoin: () => new KucoinTradesMapper('kucoin'),
|
|
339
|
-
'kucoin-futures': () => new KucoinFuturesTradesMapper(),
|
|
340
|
-
bitnomial: () => bitnomialTradesMapper,
|
|
341
|
-
'woo-x': () => wooxTradesMapper,
|
|
342
|
-
'blockchain-com': () => new BlockchainComTradesMapper(),
|
|
343
|
-
'bybit-options': () => new BybitV5TradesMapper('bybit-options'),
|
|
344
|
-
'binance-european-options': (localTimestamp: Date) =>
|
|
345
|
-
shouldUseBinanceEuropeanOptionsV2Mappers(localTimestamp)
|
|
346
|
-
? new BinanceEuropeanOptionsTradesMapperV2()
|
|
347
|
-
: new BinanceEuropeanOptionsTradesMapper(),
|
|
348
|
-
'okex-spreads': () => new OkexSpreadsTradesMapper(),
|
|
349
|
-
bitget: (localTimestamp: Date) =>
|
|
350
|
-
shouldUseBitgetV3Mappers(localTimestamp) ? new BitgetV3TradesMapper('bitget') : new BitgetTradesMapper('bitget'),
|
|
351
|
-
'bitget-futures': (localTimestamp: Date) =>
|
|
352
|
-
shouldUseBitgetV3Mappers(localTimestamp) ? new BitgetV3TradesMapper('bitget-futures') : new BitgetTradesMapper('bitget-futures'),
|
|
353
|
-
'coinbase-international': () => coinbaseInternationalTradesMapper,
|
|
354
|
-
hyperliquid: () => new HyperliquidTradesMapper(),
|
|
355
|
-
lighter: () => new LighterTradesMapper(),
|
|
356
|
-
bullish: () => new BullishTradesMapper(),
|
|
357
|
-
polymarket: () => new PolymarketTradesMapper()
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
const bookChangeMappers = {
|
|
361
|
-
bitmex: () => new BitmexBookChangeMapper(),
|
|
362
|
-
binance: (localTimestamp: Date) => new BinanceBookChangeMapper('binance', shouldIgnoreBookSnapshotOverlap(localTimestamp)),
|
|
363
|
-
'binance-us': (localTimestamp: Date) => new BinanceBookChangeMapper('binance-us', shouldIgnoreBookSnapshotOverlap(localTimestamp)),
|
|
364
|
-
'binance-jersey': (localTimestamp: Date) =>
|
|
365
|
-
new BinanceBookChangeMapper('binance-jersey', shouldIgnoreBookSnapshotOverlap(localTimestamp)),
|
|
366
|
-
'binance-futures': (localTimestamp: Date) =>
|
|
367
|
-
new BinanceFuturesBookChangeMapper('binance-futures', shouldIgnoreBookSnapshotOverlap(localTimestamp)),
|
|
368
|
-
'binance-delivery': (localTimestamp: Date) =>
|
|
369
|
-
new BinanceFuturesBookChangeMapper('binance-delivery', shouldIgnoreBookSnapshotOverlap(localTimestamp)),
|
|
370
|
-
'binance-dex': () => binanceDexBookChangeMapper,
|
|
371
|
-
bitfinex: () => new BitfinexBookChangeMapper('bitfinex'),
|
|
372
|
-
'bitfinex-derivatives': () => new BitfinexBookChangeMapper('bitfinex-derivatives'),
|
|
373
|
-
bitflyer: () => new BitflyerBookChangeMapper(),
|
|
374
|
-
bitstamp: () => new BitstampBookChangeMapper(),
|
|
375
|
-
coinbase: () => new CoinbaseBookChangMapper(),
|
|
376
|
-
cryptofacilities: () => cryptofacilitiesBookChangeMapper,
|
|
377
|
-
deribit: () => deribitBookChangeMapper,
|
|
378
|
-
ftx: () => new FTXBookChangeMapper('ftx'),
|
|
379
|
-
'ftx-us': () => new FTXBookChangeMapper('ftx-us'),
|
|
380
|
-
gemini: () => geminiBookChangeMapper,
|
|
381
|
-
kraken: () => krakenBookChangeMapper,
|
|
382
|
-
okex: (localTimestamp: Date) =>
|
|
383
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
384
|
-
? new OkexV5BookChangeMapper('okex', isRealTime(localTimestamp) || shouldUseOKXPublicBooksChannel(localTimestamp))
|
|
385
|
-
: new OkexBookChangeMapper('okex', 'spot', localTimestamp.valueOf() >= new Date('2020-04-10').valueOf()),
|
|
386
|
-
'okex-futures': (localTimestamp: Date) =>
|
|
387
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
388
|
-
? new OkexV5BookChangeMapper('okex-futures', isRealTime(localTimestamp) || shouldUseOKXPublicBooksChannel(localTimestamp))
|
|
389
|
-
: new OkexBookChangeMapper('okex-futures', 'futures', localTimestamp.valueOf() >= new Date('2019-12-05').valueOf()),
|
|
390
|
-
|
|
391
|
-
'okex-swap': (localTimestamp: Date) =>
|
|
392
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
393
|
-
? new OkexV5BookChangeMapper('okex-swap', isRealTime(localTimestamp) || shouldUseOKXPublicBooksChannel(localTimestamp))
|
|
394
|
-
: new OkexBookChangeMapper('okex-swap', 'swap', localTimestamp.valueOf() >= new Date('2020-02-08').valueOf()),
|
|
395
|
-
'okex-options': (localTimestamp: Date) =>
|
|
396
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
397
|
-
? new OkexV5BookChangeMapper('okex-options', isRealTime(localTimestamp) || shouldUseOKXPublicBooksChannel(localTimestamp))
|
|
398
|
-
: new OkexBookChangeMapper('okex-options', 'option', localTimestamp.valueOf() >= new Date('2020-02-08').valueOf()),
|
|
399
|
-
|
|
400
|
-
huobi: (localTimestamp: Date) =>
|
|
401
|
-
localTimestamp.valueOf() >= new Date('2020-07-03').valueOf()
|
|
402
|
-
? new HuobiMBPBookChangeMapper('huobi')
|
|
403
|
-
: new HuobiBookChangeMapper('huobi'),
|
|
404
|
-
|
|
405
|
-
'huobi-dm': () => new HuobiBookChangeMapper('huobi-dm'),
|
|
406
|
-
'huobi-dm-swap': () => new HuobiBookChangeMapper('huobi-dm-swap'),
|
|
407
|
-
'huobi-dm-linear-swap': () => new HuobiBookChangeMapper('huobi-dm-linear-swap'),
|
|
408
|
-
'huobi-dm-options': () => new HuobiBookChangeMapper('huobi-dm-options'),
|
|
409
|
-
'bybit-spot': (localTimestamp: Date) =>
|
|
410
|
-
shouldUseBybitV5Mappers(localTimestamp) ? new BybitV5BookChangeMapper('bybit-spot', 50) : new BybitSpotBookChangeMapper('bybit-spot'),
|
|
411
|
-
bybit: (localTimestamp: Date) =>
|
|
412
|
-
shouldUseBybitV5Mappers(localTimestamp) ? new BybitV5BookChangeMapper('bybit', 50) : new BybitBookChangeMapper('bybit', false),
|
|
413
|
-
okcoin: (localTimestamp: Date) =>
|
|
414
|
-
shouldUseOkcoinV5Mappers(localTimestamp)
|
|
415
|
-
? new OkexV5BookChangeMapper('okcoin', true)
|
|
416
|
-
: new OkexBookChangeMapper('okcoin', 'spot', localTimestamp.valueOf() >= new Date('2020-02-13').valueOf()),
|
|
417
|
-
hitbtc: () => hitBtcBookChangeMapper,
|
|
418
|
-
phemex: () => phemexBookChangeMapper,
|
|
419
|
-
delta: (localTimestamp: Date) => new DeltaBookChangeMapper(localTimestamp.valueOf() >= new Date('2023-04-01').valueOf()),
|
|
420
|
-
'gate-io': (localTimestamp: Date) =>
|
|
421
|
-
shouldUseGateIOV4OrderBookV2Mappers(localTimestamp)
|
|
422
|
-
? new GateIOV4OrderBookV2ChangeMapper('gate-io')
|
|
423
|
-
: shouldUseGateIOV4Mappers(localTimestamp)
|
|
424
|
-
? new GateIOV4BookChangeMapper('gate-io', isRealTime(localTimestamp) == false)
|
|
425
|
-
: new GateIOBookChangeMapper('gate-io'),
|
|
426
|
-
'gate-io-futures': () => new GateIOFuturesBookChangeMapper('gate-io-futures'),
|
|
427
|
-
poloniex: (localTimestamp: Date) =>
|
|
428
|
-
shouldUsePoloniexV2Mappers(localTimestamp) ? new PoloniexV2BookChangeMapper() : new PoloniexBookChangeMapper(),
|
|
429
|
-
coinflex: () => coinflexBookChangeMapper,
|
|
430
|
-
upbit: () => new UpbitBookChangeMapper(),
|
|
431
|
-
ascendex: () => new AscendexBookChangeMapper(),
|
|
432
|
-
dydx: () => new DydxBookChangeMapper(),
|
|
433
|
-
'dydx-v4': () => new DydxV4BookChangeMapper(),
|
|
434
|
-
serum: () => new SerumBookChangeMapper('serum'),
|
|
435
|
-
'star-atlas': () => new SerumBookChangeMapper('star-atlas'),
|
|
436
|
-
mango: () => new SerumBookChangeMapper('mango'),
|
|
437
|
-
'crypto-com': () => new CryptoComBookChangeMapper('crypto-com'),
|
|
438
|
-
kucoin: (localTimestamp: Date) => new KucoinBookChangeMapper('kucoin', isRealTime(localTimestamp) === false),
|
|
439
|
-
'kucoin-futures': (localTimestamp: Date) => new KucoinFuturesBookChangeMapper(isRealTime(localTimestamp) === false),
|
|
440
|
-
bitnomial: () => new BitnomialBookChangMapper(),
|
|
441
|
-
'woo-x': () => new WooxBookChangeMapper(),
|
|
442
|
-
'blockchain-com': () => new BlockchainComBookChangeMapper(),
|
|
443
|
-
'bybit-options': () => new BybitV5BookChangeMapper('bybit-options', 25),
|
|
444
|
-
'binance-european-options': (localTimestamp: Date) =>
|
|
445
|
-
shouldUseBinanceEuropeanOptionsV2Mappers(localTimestamp)
|
|
446
|
-
? new BinanceEuropeanOptionsBookChangeMapperV2()
|
|
447
|
-
: new BinanceEuropeanOptionsBookChangeMapper(),
|
|
448
|
-
'okex-spreads': () => new OkexSpreadsBookChangeMapper(),
|
|
449
|
-
bitget: (localTimestamp: Date) =>
|
|
450
|
-
shouldUseBitgetV3Mappers(localTimestamp) ? new BitgetV3BookChangeMapper('bitget') : new BitgetBookChangeMapper('bitget'),
|
|
451
|
-
'bitget-futures': (localTimestamp: Date) =>
|
|
452
|
-
shouldUseBitgetV3Mappers(localTimestamp)
|
|
453
|
-
? new BitgetV3BookChangeMapper('bitget-futures')
|
|
454
|
-
: new BitgetBookChangeMapper('bitget-futures'),
|
|
455
|
-
'coinbase-international': () => new CoinbaseInternationalBookChangMapper(),
|
|
456
|
-
hyperliquid: () => new HyperliquidBookChangeMapper(),
|
|
457
|
-
lighter: () => new LighterBookChangeMapper(),
|
|
458
|
-
bullish: () => new BullishBookChangeMapper(),
|
|
459
|
-
polymarket: () => new PolymarketBookChangeMapper()
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
const derivativeTickersMappers = {
|
|
463
|
-
bitmex: () => new BitmexDerivativeTickerMapper(),
|
|
464
|
-
'binance-futures': () => new BinanceFuturesDerivativeTickerMapper('binance-futures'),
|
|
465
|
-
'binance-delivery': () => new BinanceFuturesDerivativeTickerMapper('binance-delivery'),
|
|
466
|
-
'bitfinex-derivatives': () => new BitfinexDerivativeTickerMapper(),
|
|
467
|
-
cryptofacilities: (localTimestamp: Date) => new CryptofacilitiesDerivativeTickerMapper(shouldUseCFRelativeFunding(localTimestamp)),
|
|
468
|
-
deribit: () => new DeribitDerivativeTickerMapper(),
|
|
469
|
-
'okex-futures': (localTimestamp: Date) =>
|
|
470
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
471
|
-
? new OkexV5DerivativeTickerMapper('okex-futures')
|
|
472
|
-
: new OkexDerivativeTickerMapper('okex-futures'),
|
|
473
|
-
|
|
474
|
-
'okex-swap': (localTimestamp: Date) =>
|
|
475
|
-
shouldUseOkexV5Mappers(localTimestamp) ? new OkexV5DerivativeTickerMapper('okex-swap') : new OkexDerivativeTickerMapper('okex-swap'),
|
|
476
|
-
|
|
477
|
-
bybit: (localTimestamp: Date) =>
|
|
478
|
-
shouldUseBybitV5Mappers(localTimestamp) ? new BybitV5DerivativeTickerMapper() : new BybitDerivativeTickerMapper(),
|
|
479
|
-
phemex: () => new PhemexDerivativeTickerMapper(),
|
|
480
|
-
ftx: () => new FTXDerivativeTickerMapper('ftx'),
|
|
481
|
-
delta: (localTimestamp: Date) => new DeltaDerivativeTickerMapper(localTimestamp.valueOf() >= new Date('2020-10-14').valueOf()),
|
|
482
|
-
'huobi-dm': () => new HuobiDerivativeTickerMapper('huobi-dm'),
|
|
483
|
-
'huobi-dm-swap': () => new HuobiDerivativeTickerMapper('huobi-dm-swap'),
|
|
484
|
-
'huobi-dm-linear-swap': () => new HuobiDerivativeTickerMapper('huobi-dm-linear-swap'),
|
|
485
|
-
'gate-io-futures': () => new GateIOFuturesDerivativeTickerMapper(),
|
|
486
|
-
coinflex: () => new CoinflexDerivativeTickerMapper(),
|
|
487
|
-
ascendex: () => new AscendexDerivativeTickerMapper(),
|
|
488
|
-
dydx: () => new DydxDerivativeTickerMapper(),
|
|
489
|
-
'dydx-v4': () => new DydxV4DerivativeTickerMapper(),
|
|
490
|
-
'crypto-com': () => new CryptoComDerivativeTickerMapper('crypto-com'),
|
|
491
|
-
'woo-x': () => new WooxDerivativeTickerMapper(),
|
|
492
|
-
'kucoin-futures': () => new KucoinFuturesDerivativeTickerMapper(),
|
|
493
|
-
'bitget-futures': (localTimestamp: Date) =>
|
|
494
|
-
shouldUseBitgetV3Mappers(localTimestamp) ? new BitgetV3DerivativeTickerMapper() : new BitgetDerivativeTickerMapper(),
|
|
495
|
-
'coinbase-international': () => new CoinbaseInternationalDerivativeTickerMapper(),
|
|
496
|
-
hyperliquid: () => new HyperliquidDerivativeTickerMapper(),
|
|
497
|
-
lighter: () => new LighterDerivativeTickerMapper(),
|
|
498
|
-
bullish: () => new BullishDerivativeTickerMapper()
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
const optionsSummaryMappers = {
|
|
502
|
-
deribit: () => new DeribitOptionSummaryMapper(),
|
|
503
|
-
'okex-options': (localTimestamp: Date) =>
|
|
504
|
-
shouldUseOkexV5Mappers(localTimestamp) ? new OkexV5OptionSummaryMapper() : new OkexOptionSummaryMapper(),
|
|
505
|
-
'huobi-dm-options': () => new HuobiOptionsSummaryMapper(),
|
|
506
|
-
'bybit-options': () => new BybitV5OptionSummaryMapper(),
|
|
507
|
-
'binance-european-options': (localTimestamp: Date) =>
|
|
508
|
-
shouldUseBinanceEuropeanOptionsV2Mappers(localTimestamp)
|
|
509
|
-
? new BinanceEuropeanOptionSummaryMapperV2()
|
|
510
|
-
: new BinanceEuropeanOptionSummaryMapper(),
|
|
511
|
-
bullish: () => new BullishOptionSummaryMapper()
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
const liquidationsMappers = {
|
|
515
|
-
ftx: () => new FTXLiquidationsMapper(),
|
|
516
|
-
bitmex: () => bitmexLiquidationsMapper,
|
|
517
|
-
deribit: () => deribitLiquidationsMapper,
|
|
518
|
-
'binance-futures': () => new BinanceLiquidationsMapper('binance-futures'),
|
|
519
|
-
'binance-delivery': () => new BinanceLiquidationsMapper('binance-delivery'),
|
|
520
|
-
'bitfinex-derivatives': () => new BitfinexLiquidationsMapper('bitfinex-derivatives'),
|
|
521
|
-
cryptofacilities: () => cryptofacilitiesLiquidationsMapper,
|
|
522
|
-
'huobi-dm': () => new HuobiLiquidationsMapper('huobi-dm'),
|
|
523
|
-
'dydx-v4': () => new DydxV4LiquidationsMapper(),
|
|
524
|
-
'huobi-dm-swap': () => new HuobiLiquidationsMapper('huobi-dm-swap'),
|
|
525
|
-
'huobi-dm-linear-swap': () => new HuobiLiquidationsMapper('huobi-dm-linear-swap'),
|
|
526
|
-
lighter: () => new LighterLiquidationMapper(),
|
|
527
|
-
bybit: (localTimestamp: Date) =>
|
|
528
|
-
shouldUseBybitV5Mappers(localTimestamp)
|
|
529
|
-
? shouldUseBybitAllLiquidationFeed(localTimestamp)
|
|
530
|
-
? new BybitV5AllLiquidationsMapper('bybit')
|
|
531
|
-
: new BybitV5LiquidationsMapper('bybit')
|
|
532
|
-
: new BybitLiquidationsMapper('bybit'),
|
|
533
|
-
'okex-futures': (localTimestamp: Date) =>
|
|
534
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
535
|
-
? new OkexV5LiquidationsMapper('okex-futures')
|
|
536
|
-
: new OkexLiquidationsMapper('okex-futures', 'futures'),
|
|
537
|
-
'okex-swap': (localTimestamp: Date) =>
|
|
538
|
-
shouldUseOkexV5Mappers(localTimestamp) ? new OkexV5LiquidationsMapper('okex-swap') : new OkexLiquidationsMapper('okex-swap', 'swap'),
|
|
539
|
-
'bitget-futures': () => new BitgetV3LiquidationsMapper()
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
const bookTickersMappers = {
|
|
543
|
-
binance: () => new BinanceBookTickerMapper('binance'),
|
|
544
|
-
'binance-futures': () => new BinanceBookTickerMapper('binance-futures'),
|
|
545
|
-
'binance-delivery': () => new BinanceBookTickerMapper('binance-delivery'),
|
|
546
|
-
'binance-us': () => new BinanceBookTickerMapper('binance-us'),
|
|
547
|
-
ascendex: () => new AscendexBookTickerMapper(),
|
|
548
|
-
'binance-dex': () => binanceDexBookTickerMapper,
|
|
549
|
-
bitfinex: () => new BitfinexBookTickerMapper('bitfinex'),
|
|
550
|
-
'bitfinex-derivatives': () => new BitfinexBookTickerMapper('bitfinex-derivatives'),
|
|
551
|
-
bitflyer: () => bitflyerBookTickerMapper,
|
|
552
|
-
bitmex: () => bitmexBookTickerMapper,
|
|
553
|
-
coinbase: () => coinbaseBookTickerMapper,
|
|
554
|
-
cryptofacilities: () => cryptofacilitiesBookTickerMapper,
|
|
555
|
-
deribit: () => deribitBookTickerMapper,
|
|
556
|
-
ftx: () => new FTXBookTickerMapper('ftx'),
|
|
557
|
-
'ftx-us': () => new FTXBookTickerMapper('ftx-us'),
|
|
558
|
-
huobi: () => new HuobiBookTickerMapper('huobi'),
|
|
559
|
-
'huobi-dm': () => new HuobiBookTickerMapper('huobi-dm'),
|
|
560
|
-
'huobi-dm-swap': () => new HuobiBookTickerMapper('huobi-dm-swap'),
|
|
561
|
-
'huobi-dm-linear-swap': () => new HuobiBookTickerMapper('huobi-dm-linear-swap'),
|
|
562
|
-
kraken: () => krakenBookTickerMapper,
|
|
563
|
-
okex: (localTimestamp: Date) =>
|
|
564
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
565
|
-
? new OkexV5BookTickerMapper('okex', canUseOkexTbtBookTicker(localTimestamp))
|
|
566
|
-
: new OkexBookTickerMapper('okex', 'spot'),
|
|
567
|
-
|
|
568
|
-
'okex-futures': (localTimestamp: Date) =>
|
|
569
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
570
|
-
? new OkexV5BookTickerMapper('okex-futures', canUseOkexTbtBookTicker(localTimestamp))
|
|
571
|
-
: new OkexBookTickerMapper('okex-futures', 'futures'),
|
|
572
|
-
|
|
573
|
-
'okex-swap': (localTimestamp: Date) =>
|
|
574
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
575
|
-
? new OkexV5BookTickerMapper('okex-swap', canUseOkexTbtBookTicker(localTimestamp))
|
|
576
|
-
: new OkexBookTickerMapper('okex-swap', 'swap'),
|
|
577
|
-
|
|
578
|
-
'okex-options': (localTimestamp: Date) =>
|
|
579
|
-
shouldUseOkexV5Mappers(localTimestamp)
|
|
580
|
-
? new OkexV5BookTickerMapper('okex-options', canUseOkexTbtBookTicker(localTimestamp))
|
|
581
|
-
: new OkexBookTickerMapper('okex-options', 'option'),
|
|
582
|
-
|
|
583
|
-
okcoin: (localTimestamp: Date) =>
|
|
584
|
-
shouldUseOkcoinV5Mappers(localTimestamp) ? new OkexV5BookTickerMapper('okcoin', true) : new OkexBookTickerMapper('okcoin', 'spot'),
|
|
585
|
-
serum: () => new SerumBookTickerMapper('serum'),
|
|
586
|
-
'star-atlas': () => new SerumBookTickerMapper('star-atlas'),
|
|
587
|
-
mango: () => new SerumBookTickerMapper('mango'),
|
|
588
|
-
'gate-io-futures': () => new GateIOFuturesBookTickerMapper('gate-io-futures'),
|
|
589
|
-
'bybit-spot': (localTimestamp: Date) =>
|
|
590
|
-
shouldUseBybitV5Mappers(localTimestamp) ? new BybitV5BookTickerMapper('bybit-spot') : new BybitSpotBookTickerMapper('bybit-spot'),
|
|
591
|
-
'crypto-com': () => new CryptoComBookTickerMapper('crypto-com'),
|
|
592
|
-
kucoin: () => new KucoinBookTickerMapper('kucoin'),
|
|
593
|
-
'woo-x': () => new WooxBookTickerMapper(),
|
|
594
|
-
delta: () => new DeltaBookTickerMapper(),
|
|
595
|
-
bybit: () => new BybitV5BookTickerMapper('bybit'),
|
|
596
|
-
'gate-io': () => new GateIOV4BookTickerMapper('gate-io'),
|
|
597
|
-
'okex-spreads': () => new OkexSpreadsBookTickerMapper(),
|
|
598
|
-
'kucoin-futures': () => new KucoinFuturesBookTickerMapper(),
|
|
599
|
-
bitget: (localTimestamp: Date) =>
|
|
600
|
-
shouldUseBitgetV3Mappers(localTimestamp) ? new BitgetV3BookTickerMapper('bitget') : new BitgetBookTickerMapper('bitget'),
|
|
601
|
-
'bitget-futures': (localTimestamp: Date) =>
|
|
602
|
-
shouldUseBitgetV3Mappers(localTimestamp)
|
|
603
|
-
? new BitgetV3BookTickerMapper('bitget-futures')
|
|
604
|
-
: new BitgetBookTickerMapper('bitget-futures'),
|
|
605
|
-
'coinbase-international': () => coinbaseInternationalBookTickerMapper,
|
|
606
|
-
hyperliquid: () => new HyperliquidBookTickerMapper(),
|
|
607
|
-
lighter: () => new LighterBookTickerMapper(),
|
|
608
|
-
bullish: () => new BullishBookTickerMapper(),
|
|
609
|
-
'binance-european-options': () => new BinanceEuropeanOptionsBookTickerMapper(),
|
|
610
|
-
polymarket: () => new PolymarketBookTickerMapper()
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
export const normalizeTrades = <T extends keyof typeof tradesMappers>(exchange: T, localTimestamp: Date): Mapper<T, Trade> => {
|
|
614
|
-
const createTradesMapper = tradesMappers[exchange]
|
|
615
|
-
|
|
616
|
-
if (createTradesMapper === undefined) {
|
|
617
|
-
throw new Error(`normalizeTrades: ${exchange} not supported`)
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
return createTradesMapper(localTimestamp) as Mapper<T, Trade>
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
export const normalizeBookChanges = <T extends keyof typeof bookChangeMappers>(
|
|
49
|
+
type Normalizer<M extends MapperCollection, U extends NormalizedData> = (<T extends keyof M & Exchange>(
|
|
624
50
|
exchange: T,
|
|
625
51
|
localTimestamp: Date
|
|
626
|
-
)
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
export const
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
52
|
+
) => Mapper<T, U>) & {
|
|
53
|
+
getSwitchDates: (exchange: keyof M & Exchange) => readonly Date[]
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const registeredMappers = mergeExchangeMappers(
|
|
57
|
+
ascendexMappers,
|
|
58
|
+
binanceMappers,
|
|
59
|
+
binanceDexMappers,
|
|
60
|
+
binanceEuropeanOptionsMappers,
|
|
61
|
+
bitfinexMappers,
|
|
62
|
+
bitflyerMappers,
|
|
63
|
+
bitgetMappers,
|
|
64
|
+
bitmexMappers,
|
|
65
|
+
bitnomialMappers,
|
|
66
|
+
bitstampMappers,
|
|
67
|
+
blockchainComMappers,
|
|
68
|
+
bullishMappers,
|
|
69
|
+
bybitMappers,
|
|
70
|
+
coinbaseMappers,
|
|
71
|
+
coinbaseInternationalMappers,
|
|
72
|
+
coinflexMappers,
|
|
73
|
+
cryptoComMappers,
|
|
74
|
+
cryptofacilitiesMappers,
|
|
75
|
+
deltaMappers,
|
|
76
|
+
deribitMappers,
|
|
77
|
+
dydxMappers,
|
|
78
|
+
dydxV4Mappers,
|
|
79
|
+
ftxMappers,
|
|
80
|
+
gateIOMappers,
|
|
81
|
+
gateIOFuturesMappers,
|
|
82
|
+
geminiMappers,
|
|
83
|
+
hitBtcMappers,
|
|
84
|
+
huobiMappers,
|
|
85
|
+
hyperliquidMappers,
|
|
86
|
+
krakenMappers,
|
|
87
|
+
kucoinMappers,
|
|
88
|
+
kucoinFuturesMappers,
|
|
89
|
+
lighterMappers,
|
|
90
|
+
mexcFuturesMappers,
|
|
91
|
+
mexcMappers,
|
|
92
|
+
okexMappers,
|
|
93
|
+
phemexMappers,
|
|
94
|
+
poloniexMappers,
|
|
95
|
+
polymarketMappers,
|
|
96
|
+
serumMappers,
|
|
97
|
+
upbitMappers,
|
|
98
|
+
wooxMappers
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
export const normalizeTrades = createNormalizer<typeof registeredMappers.trades, Trade>('normalizeTrades', registeredMappers.trades)
|
|
102
|
+
export const normalizeBookChanges = createNormalizer<typeof registeredMappers.bookChanges, BookChange>(
|
|
103
|
+
'normalizeBookChanges',
|
|
104
|
+
registeredMappers.bookChanges
|
|
105
|
+
)
|
|
106
|
+
export const normalizeDerivativeTickers = createNormalizer<typeof registeredMappers.derivativeTickers, DerivativeTicker>(
|
|
107
|
+
'normalizeDerivativeTickers',
|
|
108
|
+
registeredMappers.derivativeTickers
|
|
109
|
+
)
|
|
110
|
+
export const normalizeOptionsSummary = createNormalizer<typeof registeredMappers.optionsSummary, OptionSummary>(
|
|
111
|
+
'normalizeOptionsSummary',
|
|
112
|
+
registeredMappers.optionsSummary
|
|
113
|
+
)
|
|
114
|
+
export const normalizeLiquidations = createNormalizer<typeof registeredMappers.liquidations, Liquidation>(
|
|
115
|
+
'normalizeLiquidations',
|
|
116
|
+
registeredMappers.liquidations
|
|
117
|
+
)
|
|
118
|
+
export const normalizeBookTickers = createNormalizer<typeof registeredMappers.bookTickers, BookTicker>(
|
|
119
|
+
'normalizeBookTickers',
|
|
120
|
+
registeredMappers.bookTickers
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
function createNormalizer<M extends MapperCollection, U extends NormalizedData>(name: string, mappers: M): Normalizer<M, U> {
|
|
124
|
+
const normalize = (<T extends keyof M & Exchange>(exchange: T, localTimestamp: Date) => {
|
|
125
|
+
const createMapper = mappers[exchange]
|
|
126
|
+
|
|
127
|
+
if (createMapper === undefined) {
|
|
128
|
+
throw new Error(`${name}: ${exchange} not supported`)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return createMapper(localTimestamp) as Mapper<T, U>
|
|
132
|
+
}) as Normalizer<M, U>
|
|
133
|
+
|
|
134
|
+
normalize.getSwitchDates = (exchange) => getMapperSwitchDates(mappers, exchange)
|
|
135
|
+
return normalize
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function getMapperSwitchDates(mappers: MapperCollection, exchange: string) {
|
|
139
|
+
return mappers[exchange]?.switchDates ?? []
|
|
686
140
|
}
|