UNPKG

@fraserdarwent/xapi-node

Version:

This project is made possible to get data from Forex market, execute market or limit order with NodeJS/JS through WebSocket connection

65 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Listener = exports.ListenerChild = void 0; class ListenerChild { constructor(listener, listenerId, key) { this.listener = listener; this.listenerId = listenerId; this.key = key; } stopListen() { this.listener.remove(this.listenerId, this.key); } } exports.ListenerChild = ListenerChild; class Listener { constructor() { this._listeners = {}; } get listeners() { return this._listeners; } remove(listenerId, key) { if (this._listeners[listenerId] !== undefined) { if (this._listeners[listenerId][key] !== undefined) { delete this._listeners[listenerId][key]; if (Object.keys(this._listeners[listenerId]).length === 0) { delete this._listeners[listenerId]; } } } } addListener(listenerId, callBack, key = null) { if (typeof (callBack) === 'function') { if (this._listeners[listenerId] === undefined) { this._listeners[listenerId] = {}; } key = key === null ? 'g' + Object.keys(this._listeners[listenerId]).length : 's' + key; this._listeners[listenerId][key] = callBack; return new ListenerChild(this, listenerId, key); } throw new Error('addListener "callBack" parameter is not callback'); } callListener(listenerId, params = []) { let errors = []; let values = []; if (this._listeners[listenerId] !== undefined) { Object.keys(this._listeners[listenerId]).forEach((key) => { try { values.push(this._listeners[listenerId][key](...params)); } catch (e) { errors.push(e); } }); } if (errors.length > 0) { throw errors[0]; } return values; } } exports.Listener = Listener; //# sourceMappingURL=Listener.js.map