UNPKG

tardis-dev

Version:

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

88 lines 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BitnomialBookChangMapper = exports.bitnomialTradesMapper = void 0; const handy_1 = require("../handy"); exports.bitnomialTradesMapper = { canHandle(message) { return message.type === 'trade'; }, getFilters(symbols) { symbols = (0, handy_1.upperCaseSymbols)(symbols); return [ { channel: 'trade', symbols } ]; }, *map(message, localTimestamp) { const timestamp = new Date(message.timestamp); timestamp.μs = (0, handy_1.parseμs)(message.timestamp); yield { type: 'trade', symbol: message.symbol, exchange: 'bitnomial', id: String(message.ack_id), price: Number(message.price), amount: Number(message.quantity), side: message.taker_side === 'Bid' ? 'buy' : 'sell', timestamp, localTimestamp: localTimestamp }; } }; const mapBookLevel = (level) => { return { price: level[0], amount: level[1] }; }; class BitnomialBookChangMapper { canHandle(message) { return message.type === 'book' || message.type === 'level'; } getFilters(symbols) { symbols = (0, handy_1.upperCaseSymbols)(symbols); return [ { channel: 'book', symbols }, { channel: 'level', symbols } ]; } *map(message, localTimestamp) { const timestamp = new Date(message.timestamp); timestamp.μs = (0, handy_1.parseμs)(message.timestamp); if (message.type === 'book') { yield { type: 'book_change', symbol: message.symbol, exchange: 'bitnomial', isSnapshot: true, bids: message.bids.map(mapBookLevel), asks: message.asks.map(mapBookLevel), timestamp, localTimestamp }; } else { const update = { price: message.price, amount: message.quantity }; yield { type: 'book_change', symbol: message.symbol, exchange: 'bitnomial', isSnapshot: false, bids: message.side === 'Bid' ? [update] : [], asks: message.side === 'Ask' ? [update] : [], timestamp, localTimestamp: localTimestamp }; } } } exports.BitnomialBookChangMapper = BitnomialBookChangMapper; //# sourceMappingURL=bitnomial.js.map