tardis-dev 16.5.0 → 16.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/dist/consts.d.ts +3 -1
  2. package/dist/consts.d.ts.map +1 -1
  3. package/dist/consts.js +21 -1
  4. package/dist/consts.js.map +1 -1
  5. package/dist/handy.d.ts.map +1 -1
  6. package/dist/handy.js +6 -3
  7. package/dist/handy.js.map +1 -1
  8. package/dist/mappers/ascendex.d.ts +6 -99
  9. package/dist/mappers/ascendex.d.ts.map +1 -1
  10. package/dist/mappers/ascendex.js +13 -4
  11. package/dist/mappers/ascendex.js.map +1 -1
  12. package/dist/mappers/binance.d.ts +27 -154
  13. package/dist/mappers/binance.d.ts.map +1 -1
  14. package/dist/mappers/binance.js +49 -15
  15. package/dist/mappers/binance.js.map +1 -1
  16. package/dist/mappers/binancedex.d.ts +7 -4
  17. package/dist/mappers/binancedex.d.ts.map +1 -1
  18. package/dist/mappers/binancedex.js +11 -3
  19. package/dist/mappers/binancedex.js.map +1 -1
  20. package/dist/mappers/binanceeuropeanoptions.d.ts +6 -216
  21. package/dist/mappers/binanceeuropeanoptions.d.ts.map +1 -1
  22. package/dist/mappers/binanceeuropeanoptions.js +26 -7
  23. package/dist/mappers/binanceeuropeanoptions.js.map +1 -1
  24. package/dist/mappers/bitfinex.d.ts +15 -100
  25. package/dist/mappers/bitfinex.d.ts.map +1 -1
  26. package/dist/mappers/bitfinex.js +20 -5
  27. package/dist/mappers/bitfinex.js.map +1 -1
  28. package/dist/mappers/bitflyer.d.ts +5 -41
  29. package/dist/mappers/bitflyer.d.ts.map +1 -1
  30. package/dist/mappers/bitflyer.js +11 -3
  31. package/dist/mappers/bitflyer.js.map +1 -1
  32. package/dist/mappers/bitget.d.ts +12 -269
  33. package/dist/mappers/bitget.d.ts.map +1 -1
  34. package/dist/mappers/bitget.js +46 -9
  35. package/dist/mappers/bitget.js.map +1 -1
  36. package/dist/mappers/bitmex.d.ts +8 -56
  37. package/dist/mappers/bitmex.d.ts.map +1 -1
  38. package/dist/mappers/bitmex.js +15 -5
  39. package/dist/mappers/bitmex.js.map +1 -1
  40. package/dist/mappers/bitnomial.d.ts +4 -44
  41. package/dist/mappers/bitnomial.d.ts.map +1 -1
  42. package/dist/mappers/bitnomial.js +9 -2
  43. package/dist/mappers/bitnomial.js.map +1 -1
  44. package/dist/mappers/bitstamp.d.ts +4 -44
  45. package/dist/mappers/bitstamp.d.ts.map +1 -1
  46. package/dist/mappers/bitstamp.js +9 -2
  47. package/dist/mappers/bitstamp.js.map +1 -1
  48. package/dist/mappers/blockchaincom.d.ts +4 -63
  49. package/dist/mappers/blockchaincom.d.ts.map +1 -1
  50. package/dist/mappers/blockchaincom.js +9 -2
  51. package/dist/mappers/blockchaincom.js.map +1 -1
  52. package/dist/mappers/bullish.d.ts +8 -158
  53. package/dist/mappers/bullish.d.ts.map +1 -1
  54. package/dist/mappers/bullish.js +19 -7
  55. package/dist/mappers/bullish.js.map +1 -1
  56. package/dist/mappers/bybit.d.ts +61 -407
  57. package/dist/mappers/bybit.d.ts.map +1 -1
  58. package/dist/mappers/bybit.js +60 -15
  59. package/dist/mappers/bybit.js.map +1 -1
  60. package/dist/mappers/bybitspot.d.ts +1 -1
  61. package/dist/mappers/coinbase.d.ts +6 -39
  62. package/dist/mappers/coinbase.d.ts.map +1 -1
  63. package/dist/mappers/coinbase.js +11 -3
  64. package/dist/mappers/coinbase.js.map +1 -1
  65. package/dist/mappers/coinbaseinternational.d.ts +7 -78
  66. package/dist/mappers/coinbaseinternational.d.ts.map +1 -1
  67. package/dist/mappers/coinbaseinternational.js +13 -4
  68. package/dist/mappers/coinbaseinternational.js.map +1 -1
  69. package/dist/mappers/coinflex.d.ts +6 -24
  70. package/dist/mappers/coinflex.d.ts.map +1 -1
  71. package/dist/mappers/coinflex.js +11 -3
  72. package/dist/mappers/coinflex.js.map +1 -1
  73. package/dist/mappers/cryptocom.d.ts +22 -328
  74. package/dist/mappers/cryptocom.d.ts.map +1 -1
  75. package/dist/mappers/cryptocom.js +13 -4
  76. package/dist/mappers/cryptocom.js.map +1 -1
  77. package/dist/mappers/cryptofacilities.d.ts +8 -96
  78. package/dist/mappers/cryptofacilities.d.ts.map +1 -1
  79. package/dist/mappers/cryptofacilities.js +24 -7
  80. package/dist/mappers/cryptofacilities.js.map +1 -1
  81. package/dist/mappers/delta.d.ts +7 -114
  82. package/dist/mappers/delta.d.ts.map +1 -1
  83. package/dist/mappers/delta.js +30 -10
  84. package/dist/mappers/delta.js.map +1 -1
  85. package/dist/mappers/deribit.d.ts +8 -66
  86. package/dist/mappers/deribit.d.ts.map +1 -1
  87. package/dist/mappers/deribit.js +17 -6
  88. package/dist/mappers/deribit.js.map +1 -1
  89. package/dist/mappers/dydx.d.ts +5 -146
  90. package/dist/mappers/dydx.d.ts.map +1 -1
  91. package/dist/mappers/dydx.js +11 -3
  92. package/dist/mappers/dydx.js.map +1 -1
  93. package/dist/mappers/dydxv4.d.ts +6 -173
  94. package/dist/mappers/dydxv4.d.ts.map +1 -1
  95. package/dist/mappers/dydxv4.js +13 -4
  96. package/dist/mappers/dydxv4.js.map +1 -1
  97. package/dist/mappers/ftx.d.ts +12 -107
  98. package/dist/mappers/ftx.d.ts.map +1 -1
  99. package/dist/mappers/ftx.js +21 -6
  100. package/dist/mappers/ftx.js.map +1 -1
  101. package/dist/mappers/gateio.d.ts +6 -191
  102. package/dist/mappers/gateio.d.ts.map +1 -1
  103. package/dist/mappers/gateio.js +28 -8
  104. package/dist/mappers/gateio.js.map +1 -1
  105. package/dist/mappers/gateiofutures.d.ts +7 -122
  106. package/dist/mappers/gateiofutures.d.ts.map +1 -1
  107. package/dist/mappers/gateiofutures.js +13 -4
  108. package/dist/mappers/gateiofutures.js.map +1 -1
  109. package/dist/mappers/gemini.d.ts +6 -3
  110. package/dist/mappers/gemini.d.ts.map +1 -1
  111. package/dist/mappers/gemini.js +9 -2
  112. package/dist/mappers/gemini.js.map +1 -1
  113. package/dist/mappers/hitbtc.d.ts +6 -3
  114. package/dist/mappers/hitbtc.d.ts.map +1 -1
  115. package/dist/mappers/hitbtc.js +9 -2
  116. package/dist/mappers/hitbtc.js.map +1 -1
  117. package/dist/mappers/huobi.d.ts +118 -289
  118. package/dist/mappers/huobi.d.ts.map +1 -1
  119. package/dist/mappers/huobi.js +45 -7
  120. package/dist/mappers/huobi.js.map +1 -1
  121. package/dist/mappers/hyperliquid.d.ts +6 -86
  122. package/dist/mappers/hyperliquid.d.ts.map +1 -1
  123. package/dist/mappers/hyperliquid.js +13 -4
  124. package/dist/mappers/hyperliquid.js.map +1 -1
  125. package/dist/mappers/index.d.ts +784 -272
  126. package/dist/mappers/index.d.ts.map +1 -1
  127. package/dist/mappers/index.js +64 -432
  128. package/dist/mappers/index.js.map +1 -1
  129. package/dist/mappers/kraken.d.ts +7 -4
  130. package/dist/mappers/kraken.d.ts.map +1 -1
  131. package/dist/mappers/kraken.js +11 -3
  132. package/dist/mappers/kraken.js.map +1 -1
  133. package/dist/mappers/kucoin.d.ts +6 -122
  134. package/dist/mappers/kucoin.d.ts.map +1 -1
  135. package/dist/mappers/kucoin.js +13 -5
  136. package/dist/mappers/kucoin.js.map +1 -1
  137. package/dist/mappers/kucoinfutures.d.ts +6 -207
  138. package/dist/mappers/kucoinfutures.d.ts.map +1 -1
  139. package/dist/mappers/kucoinfutures.js +15 -6
  140. package/dist/mappers/kucoinfutures.js.map +1 -1
  141. package/dist/mappers/lighter.d.ts +8 -156
  142. package/dist/mappers/lighter.d.ts.map +1 -1
  143. package/dist/mappers/lighter.js +15 -5
  144. package/dist/mappers/lighter.js.map +1 -1
  145. package/dist/mappers/mapper.d.ts +3 -1
  146. package/dist/mappers/mapper.d.ts.map +1 -1
  147. package/dist/mappers/mapper.js.map +1 -1
  148. package/dist/mappers/mexc.d.ts +122 -0
  149. package/dist/mappers/mexc.d.ts.map +1 -0
  150. package/dist/mappers/mexc.js +205 -0
  151. package/dist/mappers/mexc.js.map +1 -0
  152. package/dist/mappers/mexcfutures.d.ts +137 -0
  153. package/dist/mappers/mexcfutures.d.ts.map +1 -0
  154. package/dist/mappers/mexcfutures.js +225 -0
  155. package/dist/mappers/mexcfutures.js.map +1 -0
  156. package/dist/mappers/okex.d.ts +36 -473
  157. package/dist/mappers/okex.d.ts.map +1 -1
  158. package/dist/mappers/okex.js +143 -37
  159. package/dist/mappers/okex.js.map +1 -1
  160. package/dist/mappers/phemex.d.ts +5 -82
  161. package/dist/mappers/phemex.d.ts.map +1 -1
  162. package/dist/mappers/phemex.js +22 -4
  163. package/dist/mappers/phemex.js.map +1 -1
  164. package/dist/mappers/poloniex.d.ts +5 -90
  165. package/dist/mappers/poloniex.d.ts.map +1 -1
  166. package/dist/mappers/poloniex.js +18 -4
  167. package/dist/mappers/poloniex.js.map +1 -1
  168. package/dist/mappers/polymarket.d.ts +7 -31
  169. package/dist/mappers/polymarket.d.ts.map +1 -1
  170. package/dist/mappers/polymarket.js +11 -3
  171. package/dist/mappers/polymarket.js.map +1 -1
  172. package/dist/mappers/registry.d.ts +41 -0
  173. package/dist/mappers/registry.d.ts.map +1 -0
  174. package/dist/mappers/registry.js +111 -0
  175. package/dist/mappers/registry.js.map +1 -0
  176. package/dist/mappers/serum.d.ts +16 -89
  177. package/dist/mappers/serum.d.ts.map +1 -1
  178. package/dist/mappers/serum.js +21 -3
  179. package/dist/mappers/serum.js.map +1 -1
  180. package/dist/mappers/upbit.d.ts +5 -47
  181. package/dist/mappers/upbit.d.ts.map +1 -1
  182. package/dist/mappers/upbit.js +9 -2
  183. package/dist/mappers/upbit.js.map +1 -1
  184. package/dist/mappers/woox.d.ts +6 -107
  185. package/dist/mappers/woox.d.ts.map +1 -1
  186. package/dist/mappers/woox.js +13 -4
  187. package/dist/mappers/woox.js.map +1 -1
  188. package/dist/okexsymbols.d.ts +3 -0
  189. package/dist/okexsymbols.d.ts.map +1 -0
  190. package/dist/okexsymbols.js +10 -0
  191. package/dist/okexsymbols.js.map +1 -0
  192. package/dist/realtimefeeds/hyperliquid.d.ts.map +1 -1
  193. package/dist/realtimefeeds/hyperliquid.js +3 -1
  194. package/dist/realtimefeeds/hyperliquid.js.map +1 -1
  195. package/dist/realtimefeeds/index.d.ts.map +1 -1
  196. package/dist/realtimefeeds/index.js +4 -0
  197. package/dist/realtimefeeds/index.js.map +1 -1
  198. package/dist/realtimefeeds/mexc.d.ts +35 -0
  199. package/dist/realtimefeeds/mexc.d.ts.map +1 -0
  200. package/dist/realtimefeeds/mexc.js +261 -0
  201. package/dist/realtimefeeds/mexc.js.map +1 -0
  202. package/dist/realtimefeeds/mexcfutures.d.ts +25 -0
  203. package/dist/realtimefeeds/mexcfutures.d.ts.map +1 -0
  204. package/dist/realtimefeeds/mexcfutures.js +203 -0
  205. package/dist/realtimefeeds/mexcfutures.js.map +1 -0
  206. package/dist/realtimefeeds/okex.d.ts +1 -0
  207. package/dist/realtimefeeds/okex.d.ts.map +1 -1
  208. package/dist/realtimefeeds/okex.js +7 -5
  209. package/dist/realtimefeeds/okex.js.map +1 -1
  210. package/dist/realtimefeeds/realtimefeed.d.ts +1 -0
  211. package/dist/realtimefeeds/realtimefeed.d.ts.map +1 -1
  212. package/dist/realtimefeeds/realtimefeed.js +4 -1
  213. package/dist/realtimefeeds/realtimefeed.js.map +1 -1
  214. package/dist/replay.d.ts.map +1 -1
  215. package/dist/replay.js +62 -13
  216. package/dist/replay.js.map +1 -1
  217. package/example.js +133 -31
  218. package/package.json +2 -1
  219. package/src/consts.ts +22 -1
  220. package/src/handy.ts +6 -3
  221. package/src/mappers/ascendex.ts +14 -4
  222. package/src/mappers/binance.ts +61 -21
  223. package/src/mappers/binancedex.ts +12 -3
  224. package/src/mappers/binanceeuropeanoptions.ts +28 -7
  225. package/src/mappers/bitfinex.ts +21 -5
  226. package/src/mappers/bitflyer.ts +12 -3
  227. package/src/mappers/bitget.ts +48 -9
  228. package/src/mappers/bitmex.ts +16 -5
  229. package/src/mappers/bitnomial.ts +10 -2
  230. package/src/mappers/bitstamp.ts +10 -2
  231. package/src/mappers/blockchaincom.ts +10 -2
  232. package/src/mappers/bullish.ts +21 -8
  233. package/src/mappers/bybit.ts +70 -15
  234. package/src/mappers/coinbase.ts +12 -3
  235. package/src/mappers/coinbaseinternational.ts +14 -4
  236. package/src/mappers/coinflex.ts +12 -3
  237. package/src/mappers/cryptocom.ts +14 -4
  238. package/src/mappers/cryptofacilities.ts +30 -6
  239. package/src/mappers/delta.ts +41 -7
  240. package/src/mappers/deribit.ts +18 -6
  241. package/src/mappers/dydx.ts +12 -3
  242. package/src/mappers/dydxv4.ts +14 -4
  243. package/src/mappers/ftx.ts +22 -6
  244. package/src/mappers/gateio.ts +34 -8
  245. package/src/mappers/gateiofutures.ts +14 -4
  246. package/src/mappers/gemini.ts +10 -2
  247. package/src/mappers/hitbtc.ts +10 -2
  248. package/src/mappers/huobi.ts +47 -10
  249. package/src/mappers/hyperliquid.ts +14 -4
  250. package/src/mappers/index.ts +133 -679
  251. package/src/mappers/kraken.ts +12 -3
  252. package/src/mappers/kucoin.ts +19 -5
  253. package/src/mappers/kucoinfutures.ts +20 -5
  254. package/src/mappers/lighter.ts +16 -5
  255. package/src/mappers/mapper.ts +3 -1
  256. package/src/mappers/mexc.ts +324 -0
  257. package/src/mappers/mexcfutures.ts +352 -0
  258. package/src/mappers/okex.ts +178 -37
  259. package/src/mappers/phemex.ts +25 -4
  260. package/src/mappers/poloniex.ts +20 -4
  261. package/src/mappers/polymarket.ts +12 -3
  262. package/src/mappers/registry.ts +203 -0
  263. package/src/mappers/serum.ts +22 -3
  264. package/src/mappers/upbit.ts +10 -2
  265. package/src/mappers/woox.ts +14 -4
  266. package/src/okexsymbols.ts +10 -0
  267. package/src/realtimefeeds/hyperliquid.ts +4 -1
  268. package/src/realtimefeeds/index.ts +4 -0
  269. package/src/realtimefeeds/mexc.ts +327 -0
  270. package/src/realtimefeeds/mexcfutures.ts +269 -0
  271. package/src/realtimefeeds/okex.ts +7 -5
  272. package/src/realtimefeeds/realtimefeed.ts +5 -1
  273. package/src/replay.ts +73 -15
@@ -1,686 +1,140 @@
1
- import { ONE_SEC_IN_MS } from '../handy.ts'
2
- import { BookChange, DerivativeTicker, Liquidation, OptionSummary, BookTicker, Trade } from '../types.ts'
3
- import { AscendexBookChangeMapper, AscendexDerivativeTickerMapper, AscendexBookTickerMapper, AscendexTradesMapper } from './ascendex.ts'
4
- import {
5
- BinanceBookChangeMapper,
6
- BinanceFuturesBookChangeMapper,
7
- BinanceFuturesDerivativeTickerMapper,
8
- BinanceLiquidationsMapper,
9
- BinanceBookTickerMapper,
10
- BinanceTradesMapper
11
- } from './binance.ts'
12
- import { binanceDexBookChangeMapper, binanceDexBookTickerMapper, binanceDexTradesMapper } from './binancedex.ts'
13
- import {
14
- BinanceEuropeanOptionsBookChangeMapper,
15
- BinanceEuropeanOptionsBookChangeMapperV2,
16
- BinanceEuropeanOptionsBookTickerMapper,
17
- BinanceEuropeanOptionsTradesMapper,
18
- BinanceEuropeanOptionsTradesMapperV2,
19
- BinanceEuropeanOptionSummaryMapper,
20
- BinanceEuropeanOptionSummaryMapperV2
21
- } from './binanceeuropeanoptions.ts'
22
- import {
23
- BitfinexBookChangeMapper,
24
- BitfinexDerivativeTickerMapper,
25
- BitfinexLiquidationsMapper,
26
- BitfinexBookTickerMapper,
27
- BitfinexTradesMapper
28
- } from './bitfinex.ts'
29
- import { BitflyerBookChangeMapper, bitflyerBookTickerMapper, bitflyerTradesMapper } from './bitflyer.ts'
30
- import {
31
- BitgetBookChangeMapper,
32
- BitgetBookTickerMapper,
33
- BitgetDerivativeTickerMapper,
34
- BitgetTradesMapper,
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
- OkexBookChangeMapper,
154
- OkexBookTickerMapper,
155
- OkexDerivativeTickerMapper,
156
- OkexLiquidationsMapper,
157
- OkexOptionSummaryMapper,
158
- OkexTradesMapper,
159
- OkexV5BookChangeMapper,
160
- OkexV5BookTickerMapper,
161
- OkexV5DerivativeTickerMapper,
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
- const THREE_MINUTES_IN_MS = 3 * 60 * ONE_SEC_IN_MS
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
- ): Mapper<T, BookChange> => {
627
- const createBookChangesMapper = bookChangeMappers[exchange]
628
-
629
- if (createBookChangesMapper === undefined) {
630
- throw new Error(`normalizeBookChanges: ${exchange} not supported`)
631
- }
632
-
633
- return createBookChangesMapper(localTimestamp) as Mapper<T, BookChange>
634
- }
635
-
636
- export const normalizeDerivativeTickers = <T extends keyof typeof derivativeTickersMappers>(
637
- exchange: T,
638
- localTimestamp: Date
639
- ): Mapper<T, DerivativeTicker> => {
640
- const createDerivativeTickerMapper = derivativeTickersMappers[exchange]
641
-
642
- if (createDerivativeTickerMapper === undefined) {
643
- throw new Error(`normalizeDerivativeTickers: ${exchange} not supported`)
644
- }
645
-
646
- return createDerivativeTickerMapper(localTimestamp) as any
647
- }
648
-
649
- export const normalizeOptionsSummary = <T extends keyof typeof optionsSummaryMappers>(
650
- exchange: T,
651
- localTimestamp: Date
652
- ): Mapper<T, OptionSummary> => {
653
- const createOptionSummaryMapper = optionsSummaryMappers[exchange]
654
-
655
- if (createOptionSummaryMapper === undefined) {
656
- throw new Error(`normalizeOptionsSummary: ${exchange} not supported`)
657
- }
658
-
659
- return createOptionSummaryMapper(localTimestamp) as any
660
- }
661
-
662
- export const normalizeLiquidations = <T extends keyof typeof liquidationsMappers>(
663
- exchange: T,
664
- localTimestamp: Date
665
- ): Mapper<T, Liquidation> => {
666
- const createLiquidationsMapper = liquidationsMappers[exchange]
667
-
668
- if (createLiquidationsMapper === undefined) {
669
- throw new Error(`normalizeLiquidations: ${exchange} not supported`)
670
- }
671
-
672
- return createLiquidationsMapper(localTimestamp) as any
673
- }
674
-
675
- export const normalizeBookTickers = <T extends keyof typeof bookTickersMappers>(
676
- exchange: T,
677
- localTimestamp: Date
678
- ): Mapper<T, BookTicker> => {
679
- const createTickerMapper = bookTickersMappers[exchange]
680
-
681
- if (createTickerMapper === undefined) {
682
- throw new Error(`normalizeBookTickers: ${exchange} not supported`)
683
- }
684
-
685
- return createTickerMapper(localTimestamp) as any
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
  }