UNPKG

tardis-dev

Version:

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

64 lines 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.geminiBookChangeMapper = exports.geminiTradesMapper = void 0; const handy_1 = require("../handy"); // https://docs.gemini.com/websocket-api/#market-data-version-2 exports.geminiTradesMapper = { canHandle(message) { return message.type === 'trade'; }, getFilters(symbols) { symbols = (0, handy_1.upperCaseSymbols)(symbols); return [ { channel: 'trade', symbols } ]; }, *map(geminiTrade, localTimestamp) { yield { type: 'trade', symbol: geminiTrade.symbol, exchange: 'gemini', id: String(geminiTrade.event_id), price: Number(geminiTrade.price), amount: Number(geminiTrade.quantity), side: geminiTrade.side === 'buy' ? 'buy' : geminiTrade.side === 'sell' ? 'sell' : 'unknown', timestamp: new Date(geminiTrade.timestamp), localTimestamp: localTimestamp }; } }; const mapBookLevel = (level) => { const price = Number(level[1]); const amount = Number(level[2]); return { price, amount }; }; exports.geminiBookChangeMapper = { canHandle(message) { return message.type === 'l2_updates'; }, getFilters(symbols) { symbols = (0, handy_1.upperCaseSymbols)(symbols); return [ { channel: 'l2_updates', symbols } ]; }, *map(geminiL2Updates, localTimestamp) { yield { type: 'book_change', symbol: geminiL2Updates.symbol, exchange: 'gemini', isSnapshot: geminiL2Updates.auction_events !== undefined, bids: geminiL2Updates.changes.filter((c) => c[0] === 'buy').map(mapBookLevel), asks: geminiL2Updates.changes.filter((c) => c[0] === 'sell').map(mapBookLevel), timestamp: localTimestamp, localTimestamp }; } }; //# sourceMappingURL=gemini.js.map