UNPKG

gateio-api

Version:

Complete & Robust Node.js SDK for Gate.com's REST APIs, WebSockets & WebSocket APIs, with TypeScript declarations.

172 lines 5.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WS_BASE_URL_MAP = exports.WS_KEY_MAP = void 0; exports.neverGuard = neverGuard; exports.getPromiseRefForWSAPIRequest = getPromiseRefForWSAPIRequest; exports.getPrivateSpotTopics = getPrivateSpotTopics; exports.getPrivateFuturesTopics = getPrivateFuturesTopics; exports.getPrivateOptionsTopics = getPrivateOptionsTopics; exports.safeTerminateWs = safeTerminateWs; /** * Should be one WS key per unique URL. Some URLs may need a suffix. */ exports.WS_KEY_MAP = { /** * Spot & Margin * https://www.gate.io/docs/developers/apiv4/ws/en/ */ spotV4: 'spotV4', /** * Perpetual futures (USDT) * https://www.gate.io/docs/developers/futures/ws/en/#gate-io-futures-websocket-v4 */ perpFuturesUSDTV4: 'perpFuturesUSDTV4', /** * Perpetual futures (BTC) * https://www.gate.io/docs/developers/futures/ws/en/#gate-io-futures-websocket-v4 */ perpFuturesBTCV4: 'perpFuturesBTCV4', /** * Delivery Futures (USDT) * https://www.gate.io/docs/developers/delivery/ws/en/ */ deliveryFuturesUSDTV4: 'deliveryFuturesUSDTV4', /** * Delivery Futures (BTC) * https://www.gate.io/docs/developers/delivery/ws/en/ */ deliveryFuturesBTCV4: 'deliveryFuturesBTCV4', /** * Options * https://www.gate.io/docs/developers/options/ws/en/ */ optionsV4: 'optionsV4', /** * Announcements V4 * https://www.gate.io/docs/developers/options/ws/en/ */ announcementsV4: 'announcementsV4', }; exports.WS_BASE_URL_MAP = { spotV4: { livenet: 'wss://api.gateio.ws/ws/v4/', testnet: 'NoTestnetForSpotWebsockets!', }, perpFuturesUSDTV4: { livenet: 'wss://fx-ws.gateio.ws/v4/ws/usdt', testnet: 'wss://fx-ws-testnet.gateio.ws/v4/ws/usdt', }, perpFuturesBTCV4: { livenet: 'wss://fx-ws.gateio.ws/v4/ws/btc', testnet: 'wss://fx-ws-testnet.gateio.ws/v4/ws/btc', }, deliveryFuturesUSDTV4: { livenet: 'wss://fx-ws.gateio.ws/v4/ws/delivery/usdt', testnet: 'wss://fx-ws-testnet.gateio.ws/v4/ws/delivery/usdt', }, deliveryFuturesBTCV4: { livenet: 'wss://fx-ws.gateio.ws/v4/ws/delivery/btc', testnet: 'wss://fx-ws-testnet.gateio.ws/v4/ws/delivery/btc', }, optionsV4: { livenet: 'wss://op-ws.gateio.live/v4/ws', testnet: 'wss://op-ws-testnet.gateio.live/v4/ws', }, announcementsV4: { livenet: 'wss://api.gateio.ws/ws/v4/ann', testnet: 'NoTestnetForAnnouncementsWebSockets!', }, }; function neverGuard(x, msg) { return new Error(`Unhandled value exception "${x}", ${msg}`); } /** * WS API promises are stored using a primary key. This key is constructed using * properties found in every request & reply. */ function getPromiseRefForWSAPIRequest(requestEvent) { const promiseRef = [requestEvent.channel, requestEvent.payload?.req_id].join('_'); return promiseRef; } function getPrivateSpotTopics() { // Consumeable channels for spot const privateSpotTopics = [ 'spot.orders', 'spot.usertrades', 'spot.balances', 'spot.margin_balances', 'spot.funding_balances', 'spot.cross_balances', 'spot.priceorders', ]; // WebSocket API for spot const privateSpotWSAPITopics = [ 'spot.login', 'spot.order_place', 'spot.order_cancel', 'spot.order_cancel_ids', 'spot.order_cancel_cp', 'spot.order_amend', 'spot.order_status', ]; return [...privateSpotTopics, ...privateSpotWSAPITopics]; } function getPrivateFuturesTopics() { // These are the same for perps vs delivery futures const privatePerpetualFuturesTopics = [ 'futures.orders', 'futures.usertrades', 'futures.liquidates', 'futures.auto_deleverages', 'futures.position_closes', 'futures.balances', 'futures.reduce_risk_limits', 'futures.positions', 'futures.autoorders', ]; const privatePerpetualFuturesWSAPITopics = [ 'futures.login', 'futures.order_place', 'futures.order_batch_place', 'futures.order_cancel', 'futures.order_cancel_cp', 'futures.order_amend', 'futures.order_list', 'futures.order_status', ]; return [ ...privatePerpetualFuturesTopics, ...privatePerpetualFuturesWSAPITopics, ]; } function getPrivateOptionsTopics() { const privateOptionsTopics = [ 'options.orders', 'options.usertrades', 'options.liquidates', 'options.user_settlements', 'options.position_closes', 'options.balances', 'options.positions', ]; return [...privateOptionsTopics]; } /** * ws.terminate() is undefined in browsers. * This only works in node.js, not in browsers. * Does nothing if `ws` is undefined. Does nothing in browsers. */ function safeTerminateWs(ws, fallbackToClose) { if (!ws) { return false; } if (typeof ws['terminate'] === 'function') { ws.terminate(); return true; } else if (fallbackToClose) { ws.close(); } return false; } //# sourceMappingURL=websocket-util.js.map