UNPKG

tardis-dev

Version:

Convenient access to tick-level historical and real-time cryptocurrency market data via Node.js

102 lines 3.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BybitSpotBookTickerMapper = exports.BybitSpotBookChangeMapper = exports.BybitSpotTradesMapper = void 0; const handy_1 = require("../handy"); class BybitSpotTradesMapper { constructor(_exchange) { this._exchange = _exchange; } canHandle(message) { return message.topic === 'trade' && message.data !== undefined; } getFilters(symbols) { symbols = (0, handy_1.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 }; } } exports.BybitSpotTradesMapper = BybitSpotTradesMapper; class BybitSpotBookChangeMapper { constructor(_exchange) { this._exchange = _exchange; } canHandle(message) { return message.topic === 'depth' && message.data !== undefined; } getFilters(symbols) { symbols = (0, handy_1.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]) }; } } exports.BybitSpotBookChangeMapper = BybitSpotBookChangeMapper; class BybitSpotBookTickerMapper { constructor(_exchange) { this._exchange = _exchange; } canHandle(message) { return message.topic === 'bookTicker' && message.data !== undefined; } getFilters(symbols) { symbols = (0, handy_1.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; } } exports.BybitSpotBookTickerMapper = BybitSpotBookTickerMapper; //# sourceMappingURL=bybitspot.js.map