UNPKG

okx-api

Version:

Complete Node.js SDK for OKX's REST APIs and WebSockets, with TypeScript & end-to-end tests

97 lines 3.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isRawAPIResponse = isRawAPIResponse; exports.isWsEvent = isWsEvent; exports.isWsDataEvent = isWsDataEvent; exports.isWsErrorEvent = isWsErrorEvent; exports.isWsLoginEvent = isWsLoginEvent; exports.isWsSubscribeEvent = isWsSubscribeEvent; exports.isWsUnsubscribeEvent = isWsUnsubscribeEvent; exports.isConnCountEvent = isConnCountEvent; exports.neverGuard = neverGuard; exports.isWSAPIResponse = isWSAPIResponse; function isRawAPIResponse(response) { if (typeof response !== 'object' || !response) { return false; } if ('code' in response && 'msg' in response && 'data' in response) { return true; } return false; } /** Simple type guard that a websocket event extends a known event schema */ function isWsEvent(evtData) { if (typeof evtData !== 'object' || !evtData) { return false; } if ('event' in evtData) { return true; } return false; } function isWsDataEvent(evtData) { if (typeof evtData !== 'object' || !evtData) { return false; } if ('arg' in evtData && 'data' in evtData) { return true; } return false; } function isWsErrorEvent(evt) { return isWsEvent(evt) && evt.event === 'error'; } /** Usually a response to authenticating over ws */ function isWsLoginEvent(evt) { return isWsEvent(evt) && evt.event === 'login'; } /** A response to subscribing to a channel */ function isWsSubscribeEvent(evtData) { return isWsEvent(evtData) && evtData.event === 'subscribe'; } /** A response to unsubscribing from a channel */ function isWsUnsubscribeEvent(evtData) { return isWsEvent(evtData) && evtData.event === 'unsubscribe'; } /** Information event */ function isConnCountEvent(evtData) { return isWsEvent(evtData) && evtData.event === 'channel-conn-count'; } /** Simple typescript guard never expecting code to reach it (will throw typescript error if called) */ function neverGuard(x, msg) { return new Error(`Unhandled value exception "${x}", ${msg}`); } function isWSAPIResponse(msg) { if (typeof msg !== 'object' || !msg) { return false; } const response = msg; /** * Very simple type guard around this structure. Could also just check the "op" is a known WS API operation, but this might be slightly faster as the list of operations grows: { id: '2', op: 'order', code: '1', msg: '', data: [ { tag: '159881cb7207BCDE', ts: '1753783406701', ordId: '', clOrdId: '', sCode: 'asdfasfsafdasf', sMsg: 'adsfadsfasdf' } ], inTime: '1753783406701275', outTime: '1753783406702251', wsKey: 'prodPrivate', isWSAPIResponse: false } */ if (typeof response.id !== 'string' || typeof response.inTime !== 'string') { return false; } return true; } //# sourceMappingURL=typeGuards.js.map