tardis-dev
Version:
Convenient access to tick-level historical and real-time cryptocurrency market data via Node.js
58 lines • 1.74 kB
JavaScript
import { upperCaseSymbols } from "../handy.js";
export class BlockchainComTradesMapper {
canHandle(message) {
return message.channel === 'trades' && message.event === 'updated';
}
getFilters(symbols) {
symbols = upperCaseSymbols(symbols);
return [
{
channel: 'trades',
symbols
}
];
}
*map(message, localTimestamp) {
yield {
type: 'trade',
symbol: message.symbol,
exchange: 'blockchain-com',
id: message.trade_id,
price: message.price,
amount: message.qty,
side: message.side === 'sell' ? 'sell' : 'buy',
timestamp: new Date(message.timestamp),
localTimestamp: localTimestamp
};
}
}
export class BlockchainComBookChangeMapper {
canHandle(message) {
return message.channel == 'l2' && (message.event === 'snapshot' || message.event === 'updated');
}
getFilters(symbols) {
symbols = upperCaseSymbols(symbols);
return [
{
channel: 'l2',
symbols
}
];
}
*map(message, localTimestamp) {
yield {
type: 'book_change',
symbol: message.symbol,
exchange: 'blockchain-com',
isSnapshot: message.event === 'snapshot',
bids: message.bids.map(this.mapBookLevel),
asks: message.asks.map(this.mapBookLevel),
timestamp: new Date(message.timestamp),
localTimestamp
};
}
mapBookLevel(level) {
return { price: level.px, amount: level.qty };
}
}
//# sourceMappingURL=blockchaincom.js.map