UNPKG

metaapi.cloud-sdk

Version:

SDK for MetaApi, a professional cloud forex API which includes MetaTrader REST API and MetaTrader websocket API. Supports both MetaTrader 5 (MT5) and MetaTrader 4 (MT4). CopyFactory copy trading API included. (https://metaapi.cloud)

89 lines (88 loc) 7.58 kB
'use strict'; function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } let UsageCounter = class UsageCounter { /** * Acquires a usage. If already acquired by specified usage, the count won't be incremented * @param key key to count * @param usage usage */ acquire(key, usage) { var _this__usages, _key; (_this__usages = this._usages)[_key = key] || (_this__usages[_key] = new Set()); this._usages[key].add(usage); } /** * Releases a usage. If already not acquired by specified usage, the counte won't be decremented * @param key key to count * @param usage usage */ release(key, usage) { var _this__usages_key, _this__usages_key1; (_this__usages_key = this._usages[key]) === null || _this__usages_key === void 0 ? void 0 : _this__usages_key.delete(usage); if (!((_this__usages_key1 = this._usages[key]) === null || _this__usages_key1 === void 0 ? void 0 : _this__usages_key1.size)) { delete this._usages[key]; } } /** * Releases all usages of a key * @param key key to release */ releaseAll(key) { for (let usage of this.getUsages(key)){ this.release(key, usage); } } /** * Returns whether a key is currently in use * @param key key to check * @returns is in use */ isInUse(key) { var _this__usages_key; return !!((_this__usages_key = this._usages[key]) === null || _this__usages_key === void 0 ? void 0 : _this__usages_key.size); } /** * Returns key usage IDs * @param key key to count * @returns usages */ getUsages(key) { return this._usages[key] || new Set(); } /** * Returns if key is acquired by usage * @param key key to check * @param usage usage * @returns is acquired */ isAcquiredBy(key, usage) { var _this__usages_key; return !!((_this__usages_key = this._usages[key]) === null || _this__usages_key === void 0 ? void 0 : _this__usages_key.has(usage)); } /** * Returns keys which are acquired by specific usage * @param usage usage * @returns keys acquired by the specified usage */ getAcquiredBy(usage) { let result = []; for (let [key, usages] of Object.entries(this._usages)){ if (usages.has(usage)) { result.push(key); } } return result; } constructor(){ _define_property(this, "_usages", {}); } }; /** * Util class to track usages of something */ export { UsageCounter as default }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxhbm9uPiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXRpbCBjbGFzcyB0byB0cmFjayB1c2FnZXMgb2Ygc29tZXRoaW5nXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVzYWdlQ291bnRlciB7XG4gXG4gIHByaXZhdGUgX3VzYWdlczogUmVjb3JkPHN0cmluZywgU2V0PGFueT4+ID0ge307XG5cbiAgLyoqXG4gICAqIEFjcXVpcmVzIGEgdXNhZ2UuIElmIGFscmVhZHkgYWNxdWlyZWQgYnkgc3BlY2lmaWVkIHVzYWdlLCB0aGUgY291bnQgd29uJ3QgYmUgaW5jcmVtZW50ZWRcbiAgICogQHBhcmFtIGtleSBrZXkgdG8gY291bnRcbiAgICogQHBhcmFtIHVzYWdlIHVzYWdlXG4gICAqL1xuICBhY3F1aXJlKGtleTogc3RyaW5nLCB1c2FnZTogYW55KSB7XG4gICAgdGhpcy5fdXNhZ2VzW2tleV0gfHw9IG5ldyBTZXQoKTtcbiAgICB0aGlzLl91c2FnZXNba2V5XS5hZGQodXNhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIGEgdXNhZ2UuIElmIGFscmVhZHkgbm90IGFjcXVpcmVkIGJ5IHNwZWNpZmllZCB1c2FnZSwgdGhlIGNvdW50ZSB3b24ndCBiZSBkZWNyZW1lbnRlZFxuICAgKiBAcGFyYW0ga2V5IGtleSB0byBjb3VudFxuICAgKiBAcGFyYW0gdXNhZ2UgdXNhZ2VcbiAgICovXG4gIHJlbGVhc2Uoa2V5OiBzdHJpbmcsIHVzYWdlOiBhbnkpIHtcbiAgICB0aGlzLl91c2FnZXNba2V5XT8uZGVsZXRlKHVzYWdlKTtcbiAgICBpZiAoIXRoaXMuX3VzYWdlc1trZXldPy5zaXplKSB7XG4gICAgICBkZWxldGUgdGhpcy5fdXNhZ2VzW2tleV07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIGFsbCB1c2FnZXMgb2YgYSBrZXlcbiAgICogQHBhcmFtIGtleSBrZXkgdG8gcmVsZWFzZVxuICAgKi9cbiAgcmVsZWFzZUFsbChrZXk6IHN0cmluZykge1xuICAgIGZvciAobGV0IHVzYWdlIG9mIHRoaXMuZ2V0VXNhZ2VzKGtleSkpIHtcbiAgICAgIHRoaXMucmVsZWFzZShrZXksIHVzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIGEga2V5IGlzIGN1cnJlbnRseSBpbiB1c2VcbiAgICogQHBhcmFtIGtleSBrZXkgdG8gY2hlY2tcbiAgICogQHJldHVybnMgaXMgaW4gdXNlXG4gICAqL1xuICBpc0luVXNlKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fdXNhZ2VzW2tleV0/LnNpemU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBrZXkgdXNhZ2UgSURzXG4gICAqIEBwYXJhbSBrZXkga2V5IHRvIGNvdW50XG4gICAqIEByZXR1cm5zIHVzYWdlc1xuICAgKi9cbiAgZ2V0VXNhZ2VzKGtleTogYW55KTogU2V0PGFueT4ge1xuICAgIHJldHVybiB0aGlzLl91c2FnZXNba2V5XSB8fCBuZXcgU2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBpZiBrZXkgaXMgYWNxdWlyZWQgYnkgdXNhZ2VcbiAgICogQHBhcmFtIGtleSBrZXkgdG8gY2hlY2tcbiAgICogQHBhcmFtIHVzYWdlIHVzYWdlXG4gICAqIEByZXR1cm5zIGlzIGFjcXVpcmVkXG4gICAqL1xuICBpc0FjcXVpcmVkQnkoa2V5OiBzdHJpbmcsIHVzYWdlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl91c2FnZXNba2V5XT8uaGFzKHVzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGtleXMgd2hpY2ggYXJlIGFjcXVpcmVkIGJ5IHNwZWNpZmljIHVzYWdlXG4gICAqIEBwYXJhbSB1c2FnZSB1c2FnZVxuICAgKiBAcmV0dXJucyBrZXlzIGFjcXVpcmVkIGJ5IHRoZSBzcGVjaWZpZWQgdXNhZ2VcbiAgICovXG4gIGdldEFjcXVpcmVkQnkodXNhZ2U6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IFtrZXksIHVzYWdlc10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fdXNhZ2VzKSkge1xuICAgICAgaWYgKHVzYWdlcy5oYXModXNhZ2UpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJVc2FnZUNvdW50ZXIiLCJhY3F1aXJlIiwia2V5IiwidXNhZ2UiLCJfdXNhZ2VzIiwiU2V0IiwiYWRkIiwicmVsZWFzZSIsImRlbGV0ZSIsInNpemUiLCJyZWxlYXNlQWxsIiwiZ2V0VXNhZ2VzIiwiaXNJblVzZSIsImlzQWNxdWlyZWRCeSIsImhhcyIsImdldEFjcXVpcmVkQnkiLCJyZXN1bHQiLCJ1c2FnZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwicHVzaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0FBS2UsSUFBQSxBQUFNQSxlQUFOLE1BQU1BO0lBSW5COzs7O0dBSUMsR0FDREMsUUFBUUMsR0FBVyxFQUFFQyxLQUFVLEVBQUU7WUFDL0IsZUFBYUQ7UUFBYixDQUFBLGdCQUFBLElBQUksQ0FBQ0UsT0FBTyxDQUFBLENBQUNGLE9BQUFBLElBQUksS0FBakIsYUFBWSxDQUFDQSxLQUFJLEdBQUssSUFBSUc7UUFDMUIsSUFBSSxDQUFDRCxPQUFPLENBQUNGLElBQUksQ0FBQ0ksR0FBRyxDQUFDSDtJQUN4QjtJQUVBOzs7O0dBSUMsR0FDREksUUFBUUwsR0FBVyxFQUFFQyxLQUFVLEVBQUU7WUFDL0IsbUJBQ0s7U0FETCxvQkFBQSxJQUFJLENBQUNDLE9BQU8sQ0FBQ0YsSUFBSSxjQUFqQix3Q0FBQSxrQkFBbUJNLE1BQU0sQ0FBQ0w7UUFDMUIsSUFBSSxHQUFDLHFCQUFBLElBQUksQ0FBQ0MsT0FBTyxDQUFDRixJQUFJLGNBQWpCLHlDQUFBLG1CQUFtQk8sSUFBSSxHQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDTCxPQUFPLENBQUNGLElBQUk7UUFDMUI7SUFDRjtJQUVBOzs7R0FHQyxHQUNEUSxXQUFXUixHQUFXLEVBQUU7UUFDdEIsS0FBSyxJQUFJQyxTQUFTLElBQUksQ0FBQ1EsU0FBUyxDQUFDVCxLQUFNO1lBQ3JDLElBQUksQ0FBQ0ssT0FBTyxDQUFDTCxLQUFLQztRQUNwQjtJQUNGO0lBRUE7Ozs7R0FJQyxHQUNEUyxRQUFRVixHQUFXLEVBQVc7WUFDbkI7UUFBVCxPQUFPLENBQUMsR0FBQyxvQkFBQSxJQUFJLENBQUNFLE9BQU8sQ0FBQ0YsSUFBSSxjQUFqQix3Q0FBQSxrQkFBbUJPLElBQUk7SUFDbEM7SUFFQTs7OztHQUlDLEdBQ0RFLFVBQVVULEdBQVEsRUFBWTtRQUM1QixPQUFPLElBQUksQ0FBQ0UsT0FBTyxDQUFDRixJQUFJLElBQUksSUFBSUc7SUFDbEM7SUFFQTs7Ozs7R0FLQyxHQUNEUSxhQUFhWCxHQUFXLEVBQUVDLEtBQVUsRUFBVztZQUNwQztRQUFULE9BQU8sQ0FBQyxHQUFDLG9CQUFBLElBQUksQ0FBQ0MsT0FBTyxDQUFDRixJQUFJLGNBQWpCLHdDQUFBLGtCQUFtQlksR0FBRyxDQUFDWDtJQUNsQztJQUVBOzs7O0dBSUMsR0FDRFksY0FBY1osS0FBYSxFQUFZO1FBQ3JDLElBQUlhLFNBQW1CLEVBQUU7UUFDekIsS0FBSyxJQUFJLENBQUNkLEtBQUtlLE9BQU8sSUFBSUMsT0FBT0MsT0FBTyxDQUFDLElBQUksQ0FBQ2YsT0FBTyxFQUFHO1lBQ3RELElBQUlhLE9BQU9ILEdBQUcsQ0FBQ1gsUUFBUTtnQkFDckJhLE9BQU9JLElBQUksQ0FBQ2xCO1lBQ2Q7UUFDRjtRQUNBLE9BQU9jO0lBQ1Q7O1FBM0VBLHVCQUFRWixXQUFvQyxDQUFDOztBQTRFL0M7QUFqRkE7O0NBRUMsR0FDRCxTQUFxQkosMEJBOEVwQiJ9