tardis-dev
Version:
Convenient access to tick-level historical and real-time cryptocurrency market data via Node.js
430 lines • 31.5 kB
JavaScript
import { ONE_SEC_IN_MS } from "../handy.js";
import { AscendexBookChangeMapper, AscendexDerivativeTickerMapper, AscendexBookTickerMapper, AscendexTradesMapper } from "./ascendex.js";
import { BinanceBookChangeMapper, BinanceFuturesBookChangeMapper, BinanceFuturesDerivativeTickerMapper, BinanceLiquidationsMapper, BinanceBookTickerMapper, BinanceTradesMapper } from "./binance.js";
import { binanceDexBookChangeMapper, binanceDexBookTickerMapper, binanceDexTradesMapper } from "./binancedex.js";
import { BinanceEuropeanOptionsBookChangeMapper, BinanceEuropeanOptionsBookChangeMapperV2, BinanceEuropeanOptionsBookTickerMapper, BinanceEuropeanOptionsTradesMapper, BinanceEuropeanOptionsTradesMapperV2, BinanceEuropeanOptionSummaryMapper, BinanceEuropeanOptionSummaryMapperV2 } from "./binanceeuropeanoptions.js";
import { BitfinexBookChangeMapper, BitfinexDerivativeTickerMapper, BitfinexLiquidationsMapper, BitfinexBookTickerMapper, BitfinexTradesMapper } from "./bitfinex.js";
import { BitflyerBookChangeMapper, bitflyerBookTickerMapper, bitflyerTradesMapper } from "./bitflyer.js";
import { BitgetBookChangeMapper, BitgetBookTickerMapper, BitgetDerivativeTickerMapper, BitgetTradesMapper, BitgetV3BookChangeMapper, BitgetV3BookTickerMapper, BitgetV3DerivativeTickerMapper, BitgetV3LiquidationsMapper, BitgetV3TradesMapper } from "./bitget.js";
import { BitmexBookChangeMapper, BitmexDerivativeTickerMapper, bitmexLiquidationsMapper, bitmexBookTickerMapper, bitmexTradesMapper } from "./bitmex.js";
import { BitnomialBookChangMapper, bitnomialTradesMapper } from "./bitnomial.js";
import { BitstampBookChangeMapper, bitstampTradesMapper } from "./bitstamp.js";
import { BlockchainComBookChangeMapper, BlockchainComTradesMapper } from "./blockchaincom.js";
import { BullishBookChangeMapper, BullishBookTickerMapper, BullishDerivativeTickerMapper, BullishOptionSummaryMapper, BullishTradesMapper } from "./bullish.js";
import { BybitBookChangeMapper, BybitDerivativeTickerMapper, BybitLiquidationsMapper, BybitTradesMapper, BybitV5AllLiquidationsMapper, BybitV5BookChangeMapper, BybitV5BookTickerMapper, BybitV5DerivativeTickerMapper, BybitV5LiquidationsMapper, BybitV5OptionSummaryMapper, BybitV5TradesMapper } from "./bybit.js";
import { BybitSpotBookChangeMapper, BybitSpotBookTickerMapper, BybitSpotTradesMapper } from "./bybitspot.js";
import { CoinbaseBookChangMapper, coinbaseBookTickerMapper, coinbaseTradesMapper } from "./coinbase.js";
import { CoinbaseInternationalBookChangMapper, coinbaseInternationalBookTickerMapper, CoinbaseInternationalDerivativeTickerMapper, coinbaseInternationalTradesMapper } from "./coinbaseinternational.js";
import { coinflexBookChangeMapper, CoinflexDerivativeTickerMapper, coinflexTradesMapper } from "./coinflex.js";
import { CryptoComBookChangeMapper, CryptoComBookTickerMapper, CryptoComDerivativeTickerMapper, CryptoComTradesMapper } from "./cryptocom.js";
import { cryptofacilitiesBookChangeMapper, CryptofacilitiesDerivativeTickerMapper, cryptofacilitiesLiquidationsMapper, cryptofacilitiesBookTickerMapper, cryptofacilitiesTradesMapper } from "./cryptofacilities.js";
import { DeltaBookChangeMapper, DeltaBookTickerMapper, DeltaDerivativeTickerMapper, DeltaTradesMapper } from "./delta.js";
import { deribitBookChangeMapper, DeribitDerivativeTickerMapper, deribitLiquidationsMapper, DeribitOptionSummaryMapper, deribitBookTickerMapper, deribitTradesMapper } from "./deribit.js";
import { DydxBookChangeMapper, DydxDerivativeTickerMapper, DydxTradesMapper } from "./dydx.js";
import { DydxV4BookChangeMapper, DydxV4DerivativeTickerMapper, DydxV4LiquidationsMapper, DydxV4TradesMapper } from "./dydxv4.js";
import { FTXBookChangeMapper, FTXDerivativeTickerMapper, FTXLiquidationsMapper, FTXBookTickerMapper, FTXTradesMapper } from "./ftx.js";
import { GateIOBookChangeMapper, GateIOTradesMapper, GateIOV4BookChangeMapper, GateIOV4BookTickerMapper, GateIOV4OrderBookV2ChangeMapper, GateIOV4TradesMapper } from "./gateio.js";
import { GateIOFuturesBookChangeMapper, GateIOFuturesBookTickerMapper, GateIOFuturesDerivativeTickerMapper, GateIOFuturesTradesMapper } from "./gateiofutures.js";
import { geminiBookChangeMapper, geminiTradesMapper } from "./gemini.js";
import { hitBtcBookChangeMapper, hitBtcTradesMapper } from "./hitbtc.js";
import { HuobiBookChangeMapper, HuobiDerivativeTickerMapper, HuobiLiquidationsMapper, HuobiMBPBookChangeMapper, HuobiOptionsSummaryMapper, HuobiBookTickerMapper, HuobiTradesMapper } from "./huobi.js";
import { HyperliquidBookChangeMapper, HyperliquidBookTickerMapper, HyperliquidDerivativeTickerMapper, HyperliquidTradesMapper } from "./hyperliquid.js";
import { LighterBookChangeMapper, LighterBookTickerMapper, LighterDerivativeTickerMapper, LighterLiquidationMapper, LighterTradesMapper } from "./lighter.js";
import { krakenBookChangeMapper, krakenBookTickerMapper, krakenTradesMapper } from "./kraken.js";
import { KucoinBookChangeMapper, KucoinBookTickerMapper, KucoinTradesMapper } from "./kucoin.js";
import { KucoinFuturesBookChangeMapper, KucoinFuturesBookTickerMapper, KucoinFuturesDerivativeTickerMapper, KucoinFuturesTradesMapper } from "./kucoinfutures.js";
import { OkexBookChangeMapper, OkexBookTickerMapper, OkexDerivativeTickerMapper, OkexLiquidationsMapper, OkexOptionSummaryMapper, OkexTradesMapper, OkexV5BookChangeMapper, OkexV5BookTickerMapper, OkexV5DerivativeTickerMapper, OkexV5LiquidationsMapper, OkexV5OptionSummaryMapper, OkexV5TradesMapper } from "./okex.js";
import { OkexSpreadsBookChangeMapper, OkexSpreadsBookTickerMapper, OkexSpreadsTradesMapper } from "./okexspreads.js";
import { phemexBookChangeMapper, PhemexDerivativeTickerMapper, phemexTradesMapper } from "./phemex.js";
import { PoloniexBookChangeMapper, PoloniexTradesMapper, PoloniexV2BookChangeMapper, PoloniexV2TradesMapper } from "./poloniex.js";
import { SerumBookChangeMapper, SerumBookTickerMapper, SerumTradesMapper } from "./serum.js";
import { UpbitBookChangeMapper, UpbitTradesMapper } from "./upbit.js";
import { WooxBookChangeMapper, WooxBookTickerMapper, WooxDerivativeTickerMapper, wooxTradesMapper } from "./woox.js";
export * from "./mapper.js";
const THREE_MINUTES_IN_MS = 3 * 60 * ONE_SEC_IN_MS;
const isRealTime = (date) => {
if (process.env.__NO_REAL_TIME__) {
return false;
}
return date.valueOf() + THREE_MINUTES_IN_MS > new Date().valueOf();
};
const OKEX_V5_API_SWITCH_DATE = new Date('2021-12-23T00:00:00.000Z');
const OKEX_V5_TBT_BOOK_TICKER_RELEASE_DATE = new Date('2022-05-06T00:00:00.000Z');
const OKEX_PUBLIC_BOOKS_SWITCH_DATE = new Date('2026-05-21T00:00:00.000Z');
const shouldUseOkexV5Mappers = (localTimestamp) => {
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= OKEX_V5_API_SWITCH_DATE.valueOf();
};
const canUseOkexTbtBookTicker = (localTimestamp) => {
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= OKEX_V5_TBT_BOOK_TICKER_RELEASE_DATE.valueOf();
};
const POLONIEX_V2_API_SWITCH_DATE = new Date('2022-08-02T00:00:00.000Z');
const shouldUsePoloniexV2Mappers = (localTimestamp) => {
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= POLONIEX_V2_API_SWITCH_DATE.valueOf();
};
// see https://status.tardis.dev/incidents/ryjyv8tgdgkj
const shouldUseOKXPublicBooksChannel = (localTimestamp) => {
return ((localTimestamp.valueOf() >= new Date('2023-02-25T00:00:00.000Z').valueOf() &&
localTimestamp.valueOf() < new Date('2023-03-09T00:00:00.000Z').valueOf()) ||
localTimestamp.valueOf() >= OKEX_PUBLIC_BOOKS_SWITCH_DATE.valueOf());
};
const shouldIgnoreBookSnapshotOverlap = (date) => {
if (process.env.IGNORE_BOOK_SNAPSHOT_OVERLAP_ERROR) {
return true;
}
return isRealTime(date) === false;
};
const BYBIT_V5_API_SWITCH_DATE = new Date('2023-04-05T00:00:00.000Z');
const BYBIT_V5_API_ALL_LIQUIDATION_SUPPORT_DATE = new Date('2025-02-26T00:00:00.000Z');
const shouldUseBybitV5Mappers = (localTimestamp) => {
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= BYBIT_V5_API_SWITCH_DATE.valueOf();
};
const shouldUseBybitAllLiquidationFeed = (localTimestamp) => {
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= BYBIT_V5_API_ALL_LIQUIDATION_SUPPORT_DATE.valueOf();
};
const BITGET_V3_API_SWITCH_DATE = new Date('2026-04-28T00:00:00.000Z');
const shouldUseBitgetV3Mappers = (localTimestamp) => {
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= BITGET_V3_API_SWITCH_DATE.valueOf();
};
const OKCOIN_V5_API_SWITCH_DATE = new Date('2023-04-27T00:00:00.000Z');
const shouldUseOkcoinV5Mappers = (localTimestamp) => {
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= OKCOIN_V5_API_SWITCH_DATE.valueOf();
};
const GATE_IO_V4_API_SWITCH_DATE = new Date('2023-04-29T00:00:00.000Z');
const GATE_IO_V4_ORDER_BOOK_V2_SWITCH_DATE = new Date('2025-08-01T00:00:00.000Z');
const shouldUseGateIOV4Mappers = (localTimestamp) => {
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= GATE_IO_V4_API_SWITCH_DATE.valueOf();
};
const shouldUseGateIOV4OrderBookV2Mappers = (localTimestamp) => {
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= GATE_IO_V4_ORDER_BOOK_V2_SWITCH_DATE.valueOf();
};
const shouldUseCFRelativeFunding = (localTimestamp) => {
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= new Date('2022-09-29T00:00:00.000Z').valueOf();
};
const shouldUseOKXTradesAllChannel = (localTimestamp) => {
if (process.env.OKX_USE_TRADES_CHANNEL) {
return false;
}
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= new Date('2023-10-19T00:00:00.000Z').valueOf();
};
const BINANCE_EUROPEAN_OPTIONS_V2_API_SWITCH_DATE = new Date('2025-12-17T00:00:00.000Z');
const shouldUseBinanceEuropeanOptionsV2Mappers = (localTimestamp) => {
return isRealTime(localTimestamp) || localTimestamp.valueOf() >= BINANCE_EUROPEAN_OPTIONS_V2_API_SWITCH_DATE.valueOf();
};
const tradesMappers = {
bitmex: () => bitmexTradesMapper,
binance: () => new BinanceTradesMapper('binance'),
'binance-us': () => new BinanceTradesMapper('binance-us'),
'binance-jersey': () => new BinanceTradesMapper('binance-jersey'),
'binance-futures': () => new BinanceTradesMapper('binance-futures'),
'binance-delivery': () => new BinanceTradesMapper('binance-delivery'),
'binance-dex': () => binanceDexTradesMapper,
bitfinex: () => new BitfinexTradesMapper('bitfinex'),
'bitfinex-derivatives': () => new BitfinexTradesMapper('bitfinex-derivatives'),
bitflyer: () => bitflyerTradesMapper,
bitstamp: () => bitstampTradesMapper,
coinbase: () => coinbaseTradesMapper,
cryptofacilities: () => cryptofacilitiesTradesMapper,
deribit: () => deribitTradesMapper,
ftx: () => new FTXTradesMapper('ftx'),
'ftx-us': () => new FTXTradesMapper('ftx-us'),
gemini: () => geminiTradesMapper,
kraken: () => krakenTradesMapper,
okex: (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5TradesMapper('okex', shouldUseOKXTradesAllChannel(localTimestamp))
: new OkexTradesMapper('okex', 'spot'),
'okex-futures': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5TradesMapper('okex-futures', shouldUseOKXTradesAllChannel(localTimestamp))
: new OkexTradesMapper('okex-futures', 'futures'),
'okex-swap': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5TradesMapper('okex-swap', shouldUseOKXTradesAllChannel(localTimestamp))
: new OkexTradesMapper('okex-swap', 'swap'),
'okex-options': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5TradesMapper('okex-options', shouldUseOKXTradesAllChannel(localTimestamp))
: new OkexTradesMapper('okex-options', 'option'),
huobi: () => new HuobiTradesMapper('huobi'),
'huobi-dm': () => new HuobiTradesMapper('huobi-dm'),
'huobi-dm-swap': () => new HuobiTradesMapper('huobi-dm-swap'),
'huobi-dm-linear-swap': () => new HuobiTradesMapper('huobi-dm-linear-swap'),
'huobi-dm-options': () => new HuobiTradesMapper('huobi-dm-options'),
bybit: (localTimestamp) => shouldUseBybitV5Mappers(localTimestamp) ? new BybitV5TradesMapper('bybit') : new BybitTradesMapper('bybit'),
okcoin: (localTimestamp) => shouldUseOkcoinV5Mappers(localTimestamp) ? new OkexV5TradesMapper('okcoin', false) : new OkexTradesMapper('okcoin', 'spot'),
hitbtc: () => hitBtcTradesMapper,
phemex: () => phemexTradesMapper,
delta: (localTimestamp) => new DeltaTradesMapper(localTimestamp.valueOf() >= new Date('2020-10-14').valueOf()),
'gate-io': (localTimestamp) => shouldUseGateIOV4Mappers(localTimestamp) ? new GateIOV4TradesMapper('gate-io') : new GateIOTradesMapper('gate-io'),
'gate-io-futures': () => new GateIOFuturesTradesMapper('gate-io-futures'),
poloniex: (localTimestamp) => shouldUsePoloniexV2Mappers(localTimestamp) ? new PoloniexV2TradesMapper() : new PoloniexTradesMapper(),
coinflex: () => coinflexTradesMapper,
upbit: () => new UpbitTradesMapper(),
ascendex: () => new AscendexTradesMapper(),
dydx: () => new DydxTradesMapper(),
'dydx-v4': () => new DydxV4TradesMapper(),
serum: () => new SerumTradesMapper('serum'),
'star-atlas': () => new SerumTradesMapper('star-atlas'),
mango: () => new SerumTradesMapper('mango'),
'bybit-spot': (localTimestamp) => shouldUseBybitV5Mappers(localTimestamp) ? new BybitV5TradesMapper('bybit-spot') : new BybitSpotTradesMapper('bybit-spot'),
'crypto-com': () => new CryptoComTradesMapper('crypto-com'),
kucoin: () => new KucoinTradesMapper('kucoin'),
'kucoin-futures': () => new KucoinFuturesTradesMapper(),
bitnomial: () => bitnomialTradesMapper,
'woo-x': () => wooxTradesMapper,
'blockchain-com': () => new BlockchainComTradesMapper(),
'bybit-options': () => new BybitV5TradesMapper('bybit-options'),
'binance-european-options': (localTimestamp) => shouldUseBinanceEuropeanOptionsV2Mappers(localTimestamp)
? new BinanceEuropeanOptionsTradesMapperV2()
: new BinanceEuropeanOptionsTradesMapper(),
'okex-spreads': () => new OkexSpreadsTradesMapper(),
bitget: (localTimestamp) => shouldUseBitgetV3Mappers(localTimestamp) ? new BitgetV3TradesMapper('bitget') : new BitgetTradesMapper('bitget'),
'bitget-futures': (localTimestamp) => shouldUseBitgetV3Mappers(localTimestamp) ? new BitgetV3TradesMapper('bitget-futures') : new BitgetTradesMapper('bitget-futures'),
'coinbase-international': () => coinbaseInternationalTradesMapper,
hyperliquid: () => new HyperliquidTradesMapper(),
lighter: () => new LighterTradesMapper(),
bullish: () => new BullishTradesMapper()
};
const bookChangeMappers = {
bitmex: () => new BitmexBookChangeMapper(),
binance: (localTimestamp) => new BinanceBookChangeMapper('binance', shouldIgnoreBookSnapshotOverlap(localTimestamp)),
'binance-us': (localTimestamp) => new BinanceBookChangeMapper('binance-us', shouldIgnoreBookSnapshotOverlap(localTimestamp)),
'binance-jersey': (localTimestamp) => new BinanceBookChangeMapper('binance-jersey', shouldIgnoreBookSnapshotOverlap(localTimestamp)),
'binance-futures': (localTimestamp) => new BinanceFuturesBookChangeMapper('binance-futures', shouldIgnoreBookSnapshotOverlap(localTimestamp)),
'binance-delivery': (localTimestamp) => new BinanceFuturesBookChangeMapper('binance-delivery', shouldIgnoreBookSnapshotOverlap(localTimestamp)),
'binance-dex': () => binanceDexBookChangeMapper,
bitfinex: () => new BitfinexBookChangeMapper('bitfinex'),
'bitfinex-derivatives': () => new BitfinexBookChangeMapper('bitfinex-derivatives'),
bitflyer: () => new BitflyerBookChangeMapper(),
bitstamp: () => new BitstampBookChangeMapper(),
coinbase: () => new CoinbaseBookChangMapper(),
cryptofacilities: () => cryptofacilitiesBookChangeMapper,
deribit: () => deribitBookChangeMapper,
ftx: () => new FTXBookChangeMapper('ftx'),
'ftx-us': () => new FTXBookChangeMapper('ftx-us'),
gemini: () => geminiBookChangeMapper,
kraken: () => krakenBookChangeMapper,
okex: (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5BookChangeMapper('okex', isRealTime(localTimestamp) || shouldUseOKXPublicBooksChannel(localTimestamp))
: new OkexBookChangeMapper('okex', 'spot', localTimestamp.valueOf() >= new Date('2020-04-10').valueOf()),
'okex-futures': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5BookChangeMapper('okex-futures', isRealTime(localTimestamp) || shouldUseOKXPublicBooksChannel(localTimestamp))
: new OkexBookChangeMapper('okex-futures', 'futures', localTimestamp.valueOf() >= new Date('2019-12-05').valueOf()),
'okex-swap': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5BookChangeMapper('okex-swap', isRealTime(localTimestamp) || shouldUseOKXPublicBooksChannel(localTimestamp))
: new OkexBookChangeMapper('okex-swap', 'swap', localTimestamp.valueOf() >= new Date('2020-02-08').valueOf()),
'okex-options': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5BookChangeMapper('okex-options', isRealTime(localTimestamp) || shouldUseOKXPublicBooksChannel(localTimestamp))
: new OkexBookChangeMapper('okex-options', 'option', localTimestamp.valueOf() >= new Date('2020-02-08').valueOf()),
huobi: (localTimestamp) => localTimestamp.valueOf() >= new Date('2020-07-03').valueOf()
? new HuobiMBPBookChangeMapper('huobi')
: new HuobiBookChangeMapper('huobi'),
'huobi-dm': () => new HuobiBookChangeMapper('huobi-dm'),
'huobi-dm-swap': () => new HuobiBookChangeMapper('huobi-dm-swap'),
'huobi-dm-linear-swap': () => new HuobiBookChangeMapper('huobi-dm-linear-swap'),
'huobi-dm-options': () => new HuobiBookChangeMapper('huobi-dm-options'),
'bybit-spot': (localTimestamp) => shouldUseBybitV5Mappers(localTimestamp) ? new BybitV5BookChangeMapper('bybit-spot', 50) : new BybitSpotBookChangeMapper('bybit-spot'),
bybit: (localTimestamp) => shouldUseBybitV5Mappers(localTimestamp) ? new BybitV5BookChangeMapper('bybit', 50) : new BybitBookChangeMapper('bybit', false),
okcoin: (localTimestamp) => shouldUseOkcoinV5Mappers(localTimestamp)
? new OkexV5BookChangeMapper('okcoin', true)
: new OkexBookChangeMapper('okcoin', 'spot', localTimestamp.valueOf() >= new Date('2020-02-13').valueOf()),
hitbtc: () => hitBtcBookChangeMapper,
phemex: () => phemexBookChangeMapper,
delta: (localTimestamp) => new DeltaBookChangeMapper(localTimestamp.valueOf() >= new Date('2023-04-01').valueOf()),
'gate-io': (localTimestamp) => shouldUseGateIOV4OrderBookV2Mappers(localTimestamp)
? new GateIOV4OrderBookV2ChangeMapper('gate-io')
: shouldUseGateIOV4Mappers(localTimestamp)
? new GateIOV4BookChangeMapper('gate-io', isRealTime(localTimestamp) == false)
: new GateIOBookChangeMapper('gate-io'),
'gate-io-futures': () => new GateIOFuturesBookChangeMapper('gate-io-futures'),
poloniex: (localTimestamp) => shouldUsePoloniexV2Mappers(localTimestamp) ? new PoloniexV2BookChangeMapper() : new PoloniexBookChangeMapper(),
coinflex: () => coinflexBookChangeMapper,
upbit: () => new UpbitBookChangeMapper(),
ascendex: () => new AscendexBookChangeMapper(),
dydx: () => new DydxBookChangeMapper(),
'dydx-v4': () => new DydxV4BookChangeMapper(),
serum: () => new SerumBookChangeMapper('serum'),
'star-atlas': () => new SerumBookChangeMapper('star-atlas'),
mango: () => new SerumBookChangeMapper('mango'),
'crypto-com': () => new CryptoComBookChangeMapper('crypto-com'),
kucoin: (localTimestamp) => new KucoinBookChangeMapper('kucoin', isRealTime(localTimestamp) === false),
'kucoin-futures': (localTimestamp) => new KucoinFuturesBookChangeMapper(isRealTime(localTimestamp) === false),
bitnomial: () => new BitnomialBookChangMapper(),
'woo-x': () => new WooxBookChangeMapper(),
'blockchain-com': () => new BlockchainComBookChangeMapper(),
'bybit-options': () => new BybitV5BookChangeMapper('bybit-options', 25),
'binance-european-options': (localTimestamp) => shouldUseBinanceEuropeanOptionsV2Mappers(localTimestamp)
? new BinanceEuropeanOptionsBookChangeMapperV2()
: new BinanceEuropeanOptionsBookChangeMapper(),
'okex-spreads': () => new OkexSpreadsBookChangeMapper(),
bitget: (localTimestamp) => shouldUseBitgetV3Mappers(localTimestamp) ? new BitgetV3BookChangeMapper('bitget') : new BitgetBookChangeMapper('bitget'),
'bitget-futures': (localTimestamp) => shouldUseBitgetV3Mappers(localTimestamp)
? new BitgetV3BookChangeMapper('bitget-futures')
: new BitgetBookChangeMapper('bitget-futures'),
'coinbase-international': () => new CoinbaseInternationalBookChangMapper(),
hyperliquid: () => new HyperliquidBookChangeMapper(),
lighter: () => new LighterBookChangeMapper(),
bullish: () => new BullishBookChangeMapper()
};
const derivativeTickersMappers = {
bitmex: () => new BitmexDerivativeTickerMapper(),
'binance-futures': () => new BinanceFuturesDerivativeTickerMapper('binance-futures'),
'binance-delivery': () => new BinanceFuturesDerivativeTickerMapper('binance-delivery'),
'bitfinex-derivatives': () => new BitfinexDerivativeTickerMapper(),
cryptofacilities: (localTimestamp) => new CryptofacilitiesDerivativeTickerMapper(shouldUseCFRelativeFunding(localTimestamp)),
deribit: () => new DeribitDerivativeTickerMapper(),
'okex-futures': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5DerivativeTickerMapper('okex-futures')
: new OkexDerivativeTickerMapper('okex-futures'),
'okex-swap': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp) ? new OkexV5DerivativeTickerMapper('okex-swap') : new OkexDerivativeTickerMapper('okex-swap'),
bybit: (localTimestamp) => shouldUseBybitV5Mappers(localTimestamp) ? new BybitV5DerivativeTickerMapper() : new BybitDerivativeTickerMapper(),
phemex: () => new PhemexDerivativeTickerMapper(),
ftx: () => new FTXDerivativeTickerMapper('ftx'),
delta: (localTimestamp) => new DeltaDerivativeTickerMapper(localTimestamp.valueOf() >= new Date('2020-10-14').valueOf()),
'huobi-dm': () => new HuobiDerivativeTickerMapper('huobi-dm'),
'huobi-dm-swap': () => new HuobiDerivativeTickerMapper('huobi-dm-swap'),
'huobi-dm-linear-swap': () => new HuobiDerivativeTickerMapper('huobi-dm-linear-swap'),
'gate-io-futures': () => new GateIOFuturesDerivativeTickerMapper(),
coinflex: () => new CoinflexDerivativeTickerMapper(),
ascendex: () => new AscendexDerivativeTickerMapper(),
dydx: () => new DydxDerivativeTickerMapper(),
'dydx-v4': () => new DydxV4DerivativeTickerMapper(),
'crypto-com': () => new CryptoComDerivativeTickerMapper('crypto-com'),
'woo-x': () => new WooxDerivativeTickerMapper(),
'kucoin-futures': () => new KucoinFuturesDerivativeTickerMapper(),
'bitget-futures': (localTimestamp) => shouldUseBitgetV3Mappers(localTimestamp) ? new BitgetV3DerivativeTickerMapper() : new BitgetDerivativeTickerMapper(),
'coinbase-international': () => new CoinbaseInternationalDerivativeTickerMapper(),
hyperliquid: () => new HyperliquidDerivativeTickerMapper(),
lighter: () => new LighterDerivativeTickerMapper(),
bullish: () => new BullishDerivativeTickerMapper()
};
const optionsSummaryMappers = {
deribit: () => new DeribitOptionSummaryMapper(),
'okex-options': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp) ? new OkexV5OptionSummaryMapper() : new OkexOptionSummaryMapper(),
'huobi-dm-options': () => new HuobiOptionsSummaryMapper(),
'bybit-options': () => new BybitV5OptionSummaryMapper(),
'binance-european-options': (localTimestamp) => shouldUseBinanceEuropeanOptionsV2Mappers(localTimestamp)
? new BinanceEuropeanOptionSummaryMapperV2()
: new BinanceEuropeanOptionSummaryMapper(),
bullish: () => new BullishOptionSummaryMapper()
};
const liquidationsMappers = {
ftx: () => new FTXLiquidationsMapper(),
bitmex: () => bitmexLiquidationsMapper,
deribit: () => deribitLiquidationsMapper,
'binance-futures': () => new BinanceLiquidationsMapper('binance-futures'),
'binance-delivery': () => new BinanceLiquidationsMapper('binance-delivery'),
'bitfinex-derivatives': () => new BitfinexLiquidationsMapper('bitfinex-derivatives'),
cryptofacilities: () => cryptofacilitiesLiquidationsMapper,
'huobi-dm': () => new HuobiLiquidationsMapper('huobi-dm'),
'dydx-v4': () => new DydxV4LiquidationsMapper(),
'huobi-dm-swap': () => new HuobiLiquidationsMapper('huobi-dm-swap'),
'huobi-dm-linear-swap': () => new HuobiLiquidationsMapper('huobi-dm-linear-swap'),
lighter: () => new LighterLiquidationMapper(),
bybit: (localTimestamp) => shouldUseBybitV5Mappers(localTimestamp)
? shouldUseBybitAllLiquidationFeed(localTimestamp)
? new BybitV5AllLiquidationsMapper('bybit')
: new BybitV5LiquidationsMapper('bybit')
: new BybitLiquidationsMapper('bybit'),
'okex-futures': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5LiquidationsMapper('okex-futures')
: new OkexLiquidationsMapper('okex-futures', 'futures'),
'okex-swap': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp) ? new OkexV5LiquidationsMapper('okex-swap') : new OkexLiquidationsMapper('okex-swap', 'swap'),
'bitget-futures': () => new BitgetV3LiquidationsMapper()
};
const bookTickersMappers = {
binance: () => new BinanceBookTickerMapper('binance'),
'binance-futures': () => new BinanceBookTickerMapper('binance-futures'),
'binance-delivery': () => new BinanceBookTickerMapper('binance-delivery'),
'binance-us': () => new BinanceBookTickerMapper('binance-us'),
ascendex: () => new AscendexBookTickerMapper(),
'binance-dex': () => binanceDexBookTickerMapper,
bitfinex: () => new BitfinexBookTickerMapper('bitfinex'),
'bitfinex-derivatives': () => new BitfinexBookTickerMapper('bitfinex-derivatives'),
bitflyer: () => bitflyerBookTickerMapper,
bitmex: () => bitmexBookTickerMapper,
coinbase: () => coinbaseBookTickerMapper,
cryptofacilities: () => cryptofacilitiesBookTickerMapper,
deribit: () => deribitBookTickerMapper,
ftx: () => new FTXBookTickerMapper('ftx'),
'ftx-us': () => new FTXBookTickerMapper('ftx-us'),
huobi: () => new HuobiBookTickerMapper('huobi'),
'huobi-dm': () => new HuobiBookTickerMapper('huobi-dm'),
'huobi-dm-swap': () => new HuobiBookTickerMapper('huobi-dm-swap'),
'huobi-dm-linear-swap': () => new HuobiBookTickerMapper('huobi-dm-linear-swap'),
kraken: () => krakenBookTickerMapper,
okex: (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5BookTickerMapper('okex', canUseOkexTbtBookTicker(localTimestamp))
: new OkexBookTickerMapper('okex', 'spot'),
'okex-futures': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5BookTickerMapper('okex-futures', canUseOkexTbtBookTicker(localTimestamp))
: new OkexBookTickerMapper('okex-futures', 'futures'),
'okex-swap': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5BookTickerMapper('okex-swap', canUseOkexTbtBookTicker(localTimestamp))
: new OkexBookTickerMapper('okex-swap', 'swap'),
'okex-options': (localTimestamp) => shouldUseOkexV5Mappers(localTimestamp)
? new OkexV5BookTickerMapper('okex-options', canUseOkexTbtBookTicker(localTimestamp))
: new OkexBookTickerMapper('okex-options', 'option'),
okcoin: (localTimestamp) => shouldUseOkcoinV5Mappers(localTimestamp) ? new OkexV5BookTickerMapper('okcoin', true) : new OkexBookTickerMapper('okcoin', 'spot'),
serum: () => new SerumBookTickerMapper('serum'),
'star-atlas': () => new SerumBookTickerMapper('star-atlas'),
mango: () => new SerumBookTickerMapper('mango'),
'gate-io-futures': () => new GateIOFuturesBookTickerMapper('gate-io-futures'),
'bybit-spot': (localTimestamp) => shouldUseBybitV5Mappers(localTimestamp) ? new BybitV5BookTickerMapper('bybit-spot') : new BybitSpotBookTickerMapper('bybit-spot'),
'crypto-com': () => new CryptoComBookTickerMapper('crypto-com'),
kucoin: () => new KucoinBookTickerMapper('kucoin'),
'woo-x': () => new WooxBookTickerMapper(),
delta: () => new DeltaBookTickerMapper(),
bybit: () => new BybitV5BookTickerMapper('bybit'),
'gate-io': () => new GateIOV4BookTickerMapper('gate-io'),
'okex-spreads': () => new OkexSpreadsBookTickerMapper(),
'kucoin-futures': () => new KucoinFuturesBookTickerMapper(),
bitget: (localTimestamp) => shouldUseBitgetV3Mappers(localTimestamp) ? new BitgetV3BookTickerMapper('bitget') : new BitgetBookTickerMapper('bitget'),
'bitget-futures': (localTimestamp) => shouldUseBitgetV3Mappers(localTimestamp)
? new BitgetV3BookTickerMapper('bitget-futures')
: new BitgetBookTickerMapper('bitget-futures'),
'coinbase-international': () => coinbaseInternationalBookTickerMapper,
hyperliquid: () => new HyperliquidBookTickerMapper(),
lighter: () => new LighterBookTickerMapper(),
bullish: () => new BullishBookTickerMapper(),
'binance-european-options': () => new BinanceEuropeanOptionsBookTickerMapper()
};
export const normalizeTrades = (exchange, localTimestamp) => {
const createTradesMapper = tradesMappers[exchange];
if (createTradesMapper === undefined) {
throw new Error(`normalizeTrades: ${exchange} not supported`);
}
return createTradesMapper(localTimestamp);
};
export const normalizeBookChanges = (exchange, localTimestamp) => {
const createBookChangesMapper = bookChangeMappers[exchange];
if (createBookChangesMapper === undefined) {
throw new Error(`normalizeBookChanges: ${exchange} not supported`);
}
return createBookChangesMapper(localTimestamp);
};
export const normalizeDerivativeTickers = (exchange, localTimestamp) => {
const createDerivativeTickerMapper = derivativeTickersMappers[exchange];
if (createDerivativeTickerMapper === undefined) {
throw new Error(`normalizeDerivativeTickers: ${exchange} not supported`);
}
return createDerivativeTickerMapper(localTimestamp);
};
export const normalizeOptionsSummary = (exchange, localTimestamp) => {
const createOptionSummaryMapper = optionsSummaryMappers[exchange];
if (createOptionSummaryMapper === undefined) {
throw new Error(`normalizeOptionsSummary: ${exchange} not supported`);
}
return createOptionSummaryMapper(localTimestamp);
};
export const normalizeLiquidations = (exchange, localTimestamp) => {
const createLiquidationsMapper = liquidationsMappers[exchange];
if (createLiquidationsMapper === undefined) {
throw new Error(`normalizeLiquidations: ${exchange} not supported`);
}
return createLiquidationsMapper(localTimestamp);
};
export const normalizeBookTickers = (exchange, localTimestamp) => {
const createTickerMapper = bookTickersMappers[exchange];
if (createTickerMapper === undefined) {
throw new Error(`normalizeBookTickers: ${exchange} not supported`);
}
return createTickerMapper(localTimestamp);
};
//# sourceMappingURL=index.js.map