UNPKG

xud

Version:
122 lines 5.05 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.handler = exports.builder = exports.describe = exports.command = exports.formatOrders = void 0; const cli_table3_1 = __importDefault(require("cli-table3")); const safe_1 = __importDefault(require("colors/safe")); const enums_1 = require("../../constants/enums"); const xudrpc_pb_1 = require("../../proto/xudrpc_pb"); const command_1 = require("../command"); const utils_1 = require("../utils"); const COLUMNS = [15, 13, 18, 15, 13, 18]; const COLUMNS_IN_ORDER_SIDE = COLUMNS.length / 2; const HEADER = [ { content: safe_1.default.green('Buy'), colSpan: 3 }, { content: safe_1.default.red('Sell'), colSpan: 3 }, ]; const SECONDARY_HEADER = [ safe_1.default.green('Quantity'), safe_1.default.green('Price'), safe_1.default.green('Alias'), safe_1.default.red('Quantity'), safe_1.default.red('Price'), safe_1.default.red('Alias'), ]; const addOrderToSide = (orderSide) => { const order = orderSide.pop(); if (order) { return [ utils_1.satsToCoinsStr(order.quantity), order.price.toString(), order.nodeIdentifier.alias, ].map(i => order.isOwnOrder ? safe_1.default.cyan(i) : i); } else { return Array.from(Array(COLUMNS_IN_ORDER_SIDE)).map(() => ''); } }; exports.formatOrders = (orders) => { const formattedOrders = []; orders.ordersMap.forEach(([pairId, tradingPair]) => { const buy = tradingPair.buyOrdersList; const sell = tradingPair.sellOrdersList; const totalRows = buy.length < sell.length ? sell.length : buy.length; const tradingPairOrders = Array.from(Array(totalRows)) .map(() => { return addOrderToSide(buy).concat(addOrderToSide(sell)); }); formattedOrders.push({ pairId, orders: tradingPairOrders, }); }); return formattedOrders; }; const createTable = () => { const table = new cli_table3_1.default({ colWidths: COLUMNS, }); table.push(HEADER); table.push(SECONDARY_HEADER); return table; }; const displayOrdersTable = (tradingPair) => { const table = createTable(); tradingPair.orders.forEach(order => table.push(order)); console.log(safe_1.default.underline(safe_1.default.bold(`\nTrading pair: ${tradingPair.pairId}`))); console.log(table.toString()); }; const displayTables = (orders) => { exports.formatOrders(orders).forEach(displayOrdersTable); }; exports.command = 'listorders [pair_id] [owner] [limit]'; exports.describe = 'list orders from the order book'; exports.builder = (argv) => argv .option('pair_id', { describe: 'trading pair for which to retrieve orders', type: 'string', }) .option('owner', { describe: 'whether to include own, peer or both orders', type: 'string', choices: ['Both', 'Own', 'Peer'], coerce: (ownerStr) => { const ownerLower = ownerStr.toLowerCase(); return ownerLower.charAt(0).toUpperCase() + ownerLower.slice(1); }, default: 'Both', }) .option('limit', { describe: 'max number of orders to return per order book side', type: 'number', }) .example('$0 listorders', 'list all known orders') .example('$0 listorders LTC/BTC', 'list all LTC/BTC orders') .example('$0 listorders LTC/BTC Peer', 'list all LTC/BTC orders from peers') .example('$0 listorders LTC/BTC Peer 10', 'list the 10 best LTC/BTC orders from peers') .example('$0 listorders --owner Own', 'list all local orders') .example('$0 listorders --limit 10', 'list the 10 best orders for all trading pairs'); exports.handler = (argv) => __awaiter(void 0, void 0, void 0, function* () { const request = new xudrpc_pb_1.ListOrdersRequest(); const pairId = argv.pair_id ? argv.pair_id.toUpperCase() : undefined; request.setPairId(pairId); request.setOwner(Number(enums_1.Owner[argv.owner])); if (argv.limit) { request.setLimit(argv.limit); } request.setIncludeAliases(true); (yield command_1.loadXudClient(argv)).listOrders(request, command_1.callback(argv, displayTables)); }); //# sourceMappingURL=listorders.js.map