@hackape/tardis-dev
Version:
Convenient access to tick-level historical and real-time cryptocurrency market data via Node.js
83 lines • 2.63 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.binanceDexBookChangeMapper = exports.binanceDexTradesMapper = void 0;
// https://docs.binance.org/api-reference/dex-api/ws-streams.html
exports.binanceDexTradesMapper = {
canHandle(message) {
return message.stream === 'trades';
},
getFilters(symbols) {
return [
{
channel: 'trades',
symbols
}
];
},
*map(binanceDexTradeResponse, localTimestamp) {
for (const binanceDexTrade of binanceDexTradeResponse.data) {
yield {
type: 'trade',
symbol: binanceDexTrade.s,
exchange: 'binance-dex',
id: binanceDexTrade.t,
price: Number(binanceDexTrade.p),
amount: Number(binanceDexTrade.q),
side: binanceDexTrade.tt === 2 ? 'sell' : 'buy',
timestamp: new Date(Math.floor(binanceDexTrade.T / 1000000)),
localTimestamp: localTimestamp
};
}
}
};
const mapBookLevel = (level) => {
const price = Number(level[0]);
const amount = Number(level[1]);
return { price, amount };
};
exports.binanceDexBookChangeMapper = {
canHandle(message) {
return message.stream === 'marketDiff' || message.stream === 'depthSnapshot';
},
getFilters(symbols) {
return [
{
channel: 'depthSnapshot',
symbols
},
{
channel: 'marketDiff',
symbols
}
];
},
*map(message, localTimestamp) {
if ('symbol' in message.data) {
// we've got snapshot message
yield {
type: 'book_change',
symbol: message.data.symbol,
exchange: 'binance-dex',
isSnapshot: true,
bids: message.data.bids.map(mapBookLevel),
asks: message.data.asks.map(mapBookLevel),
timestamp: localTimestamp,
localTimestamp
};
}
else {
// we've got update
yield {
type: 'book_change',
symbol: message.data.s,
exchange: 'binance-dex',
isSnapshot: false,
bids: message.data.b.map(mapBookLevel),
asks: message.data.a.map(mapBookLevel),
timestamp: localTimestamp,
localTimestamp
};
}
}
};
//# sourceMappingURL=binancedex.js.map
;