tardis-dev
Version:
Convenient access to tick-level historical and real-time cryptocurrency market data via Node.js
99 lines • 3.05 kB
JavaScript
import { upperCaseSymbols } from "../handy.js";
export class BybitSpotTradesMapper {
_exchange;
constructor(_exchange) {
this._exchange = _exchange;
}
canHandle(message) {
return message.topic === 'trade' && message.data !== undefined;
}
getFilters(symbols) {
symbols = upperCaseSymbols(symbols);
return [
{
channel: 'trade',
symbols
}
];
}
*map(message, localTimestamp) {
const bybitTrade = message.data;
yield {
type: 'trade',
symbol: message.params.symbol,
exchange: this._exchange,
id: bybitTrade.v,
price: Number(bybitTrade.p),
amount: Number(bybitTrade.q),
side: bybitTrade.m === true ? 'buy' : 'sell',
timestamp: new Date(bybitTrade.t),
localTimestamp
};
}
}
export class BybitSpotBookChangeMapper {
_exchange;
constructor(_exchange) {
this._exchange = _exchange;
}
canHandle(message) {
return message.topic === 'depth' && message.data !== undefined;
}
getFilters(symbols) {
symbols = upperCaseSymbols(symbols);
return [
{
channel: 'depth',
symbols
}
];
}
*map(message, localTimestamp) {
yield {
type: 'book_change',
symbol: message.params.symbol,
exchange: this._exchange,
isSnapshot: true,
bids: message.data.b.map(this._mapBookLevel),
asks: message.data.a.map(this._mapBookLevel),
timestamp: new Date(message.data.t),
localTimestamp
};
}
_mapBookLevel(level) {
return { price: Number(level[0]), amount: Number(level[1]) };
}
}
export class BybitSpotBookTickerMapper {
_exchange;
constructor(_exchange) {
this._exchange = _exchange;
}
canHandle(message) {
return message.topic === 'bookTicker' && message.data !== undefined;
}
getFilters(symbols) {
symbols = upperCaseSymbols(symbols);
return [
{
channel: 'bookTicker',
symbols
}
];
}
*map(message, localTimestamp) {
const bookTicker = {
type: 'book_ticker',
symbol: message.params.symbol,
exchange: this._exchange,
askAmount: message.data.askQty !== undefined ? Number(message.data.askQty) : undefined,
askPrice: message.data.askPrice !== undefined ? Number(message.data.askPrice) : undefined,
bidPrice: message.data.bidPrice !== undefined ? Number(message.data.bidPrice) : undefined,
bidAmount: message.data.bidQty !== undefined ? Number(message.data.bidQty) : undefined,
timestamp: new Date(message.data.time),
localTimestamp: localTimestamp
};
yield bookTicker;
}
}
//# sourceMappingURL=bybitspot.js.map