tardis-dev
Version:
Convenient access to tick-level historical and real-time cryptocurrency market data via Node.js
88 lines • 2.75 kB
JavaScript
;
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