tardis-dev
Version:
Convenient access to tick-level historical and real-time cryptocurrency market data via Node.js
71 lines • 1.99 kB
JavaScript
import { fromMicroSecondsToDate, upperCaseSymbols } from "../handy.js";
export class UpbitTradesMapper {
canHandle(message) {
return message.type === 'trade';
}
getFilters(symbols) {
symbols = upperCaseSymbols(symbols);
return [
{
channel: 'trade',
symbols
}
];
}
*map(message, localTimestamp) {
yield {
type: 'trade',
symbol: message.code,
exchange: 'upbit',
id: String(message.sequential_id),
price: message.trade_price,
amount: message.trade_volume,
side: message.ask_bid === 'ASK' ? 'sell' : 'buy',
timestamp: fromMicroSecondsToDate(message.trade_timestamp),
localTimestamp: localTimestamp
};
}
}
export class UpbitBookChangeMapper {
canHandle(message) {
return message.type === 'orderbook';
}
getFilters(symbols) {
symbols = upperCaseSymbols(symbols);
return [
{
channel: 'orderbook',
symbols
}
];
}
*map(message, localTimestamp) {
let asks = [];
let bids = [];
for (const level of message.orderbook_units) {
if (level.ask_price > 0) {
asks.push({
price: level.ask_price,
amount: level.ask_size
});
}
if (level.bid_price > 0) {
bids.push({
price: level.bid_price,
amount: level.bid_size
});
}
}
yield {
type: 'book_change',
symbol: message.code,
exchange: 'upbit',
isSnapshot: true,
bids,
asks,
timestamp: fromMicroSecondsToDate(message.timestamp),
localTimestamp
};
}
}
//# sourceMappingURL=upbit.js.map