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)
95 lines (94 loc) • 7.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return UsageCounter;
}
});
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", {});
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxhbm9uPiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXRpbCBjbGFzcyB0byB0cmFjayB1c2FnZXMgb2Ygc29tZXRoaW5nXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVzYWdlQ291bnRlciB7XG4gXG4gIHByaXZhdGUgX3VzYWdlczogUmVjb3JkPHN0cmluZywgU2V0PGFueT4+ID0ge307XG5cbiAgLyoqXG4gICAqIEFjcXVpcmVzIGEgdXNhZ2UuIElmIGFscmVhZHkgYWNxdWlyZWQgYnkgc3BlY2lmaWVkIHVzYWdlLCB0aGUgY291bnQgd29uJ3QgYmUgaW5jcmVtZW50ZWRcbiAgICogQHBhcmFtIGtleSBrZXkgdG8gY291bnRcbiAgICogQHBhcmFtIHVzYWdlIHVzYWdlXG4gICAqL1xuICBhY3F1aXJlKGtleTogc3RyaW5nLCB1c2FnZTogYW55KSB7XG4gICAgdGhpcy5fdXNhZ2VzW2tleV0gfHw9IG5ldyBTZXQoKTtcbiAgICB0aGlzLl91c2FnZXNba2V5XS5hZGQodXNhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIGEgdXNhZ2UuIElmIGFscmVhZHkgbm90IGFjcXVpcmVkIGJ5IHNwZWNpZmllZCB1c2FnZSwgdGhlIGNvdW50ZSB3b24ndCBiZSBkZWNyZW1lbnRlZFxuICAgKiBAcGFyYW0ga2V5IGtleSB0byBjb3VudFxuICAgKiBAcGFyYW0gdXNhZ2UgdXNhZ2VcbiAgICovXG4gIHJlbGVhc2Uoa2V5OiBzdHJpbmcsIHVzYWdlOiBhbnkpIHtcbiAgICB0aGlzLl91c2FnZXNba2V5XT8uZGVsZXRlKHVzYWdlKTtcbiAgICBpZiAoIXRoaXMuX3VzYWdlc1trZXldPy5zaXplKSB7XG4gICAgICBkZWxldGUgdGhpcy5fdXNhZ2VzW2tleV07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIGFsbCB1c2FnZXMgb2YgYSBrZXlcbiAgICogQHBhcmFtIGtleSBrZXkgdG8gcmVsZWFzZVxuICAgKi9cbiAgcmVsZWFzZUFsbChrZXk6IHN0cmluZykge1xuICAgIGZvciAobGV0IHVzYWdlIG9mIHRoaXMuZ2V0VXNhZ2VzKGtleSkpIHtcbiAgICAgIHRoaXMucmVsZWFzZShrZXksIHVzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIGEga2V5IGlzIGN1cnJlbnRseSBpbiB1c2VcbiAgICogQHBhcmFtIGtleSBrZXkgdG8gY2hlY2tcbiAgICogQHJldHVybnMgaXMgaW4gdXNlXG4gICAqL1xuICBpc0luVXNlKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fdXNhZ2VzW2tleV0/LnNpemU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBrZXkgdXNhZ2UgSURzXG4gICAqIEBwYXJhbSBrZXkga2V5IHRvIGNvdW50XG4gICAqIEByZXR1cm5zIHVzYWdlc1xuICAgKi9cbiAgZ2V0VXNhZ2VzKGtleTogYW55KTogU2V0PGFueT4ge1xuICAgIHJldHVybiB0aGlzLl91c2FnZXNba2V5XSB8fCBuZXcgU2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBpZiBrZXkgaXMgYWNxdWlyZWQgYnkgdXNhZ2VcbiAgICogQHBhcmFtIGtleSBrZXkgdG8gY2hlY2tcbiAgICogQHBhcmFtIHVzYWdlIHVzYWdlXG4gICAqIEByZXR1cm5zIGlzIGFjcXVpcmVkXG4gICAqL1xuICBpc0FjcXVpcmVkQnkoa2V5OiBzdHJpbmcsIHVzYWdlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl91c2FnZXNba2V5XT8uaGFzKHVzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGtleXMgd2hpY2ggYXJlIGFjcXVpcmVkIGJ5IHNwZWNpZmljIHVzYWdlXG4gICAqIEBwYXJhbSB1c2FnZSB1c2FnZVxuICAgKiBAcmV0dXJucyBrZXlzIGFjcXVpcmVkIGJ5IHRoZSBzcGVjaWZpZWQgdXNhZ2VcbiAgICovXG4gIGdldEFjcXVpcmVkQnkodXNhZ2U6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IFtrZXksIHVzYWdlc10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fdXNhZ2VzKSkge1xuICAgICAgaWYgKHVzYWdlcy5oYXModXNhZ2UpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJVc2FnZUNvdW50ZXIiLCJhY3F1aXJlIiwia2V5IiwidXNhZ2UiLCJfdXNhZ2VzIiwiU2V0IiwiYWRkIiwicmVsZWFzZSIsImRlbGV0ZSIsInNpemUiLCJyZWxlYXNlQWxsIiwiZ2V0VXNhZ2VzIiwiaXNJblVzZSIsImlzQWNxdWlyZWRCeSIsImhhcyIsImdldEFjcXVpcmVkQnkiLCJyZXN1bHQiLCJ1c2FnZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwicHVzaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFLcUJBOzs7Ozs7Ozs7Ozs7Ozs7O0FBQU4sSUFBQSxBQUFNQSxlQUFOLE1BQU1BO0lBSW5COzs7O0dBSUMsR0FDREMsUUFBUUMsR0FBVyxFQUFFQyxLQUFVLEVBQUU7WUFDL0IsZUFBYUQ7UUFBYixDQUFBLGdCQUFBLElBQUksQ0FBQ0UsT0FBTyxDQUFBLENBQUNGLE9BQUFBLElBQUksS0FBakIsYUFBWSxDQUFDQSxLQUFJLEdBQUssSUFBSUc7UUFDMUIsSUFBSSxDQUFDRCxPQUFPLENBQUNGLElBQUksQ0FBQ0ksR0FBRyxDQUFDSDtJQUN4QjtJQUVBOzs7O0dBSUMsR0FDREksUUFBUUwsR0FBVyxFQUFFQyxLQUFVLEVBQUU7WUFDL0IsbUJBQ0s7U0FETCxvQkFBQSxJQUFJLENBQUNDLE9BQU8sQ0FBQ0YsSUFBSSxjQUFqQix3Q0FBQSxrQkFBbUJNLE1BQU0sQ0FBQ0w7UUFDMUIsSUFBSSxHQUFDLHFCQUFBLElBQUksQ0FBQ0MsT0FBTyxDQUFDRixJQUFJLGNBQWpCLHlDQUFBLG1CQUFtQk8sSUFBSSxHQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDTCxPQUFPLENBQUNGLElBQUk7UUFDMUI7SUFDRjtJQUVBOzs7R0FHQyxHQUNEUSxXQUFXUixHQUFXLEVBQUU7UUFDdEIsS0FBSyxJQUFJQyxTQUFTLElBQUksQ0FBQ1EsU0FBUyxDQUFDVCxLQUFNO1lBQ3JDLElBQUksQ0FBQ0ssT0FBTyxDQUFDTCxLQUFLQztRQUNwQjtJQUNGO0lBRUE7Ozs7R0FJQyxHQUNEUyxRQUFRVixHQUFXLEVBQVc7WUFDbkI7UUFBVCxPQUFPLENBQUMsR0FBQyxvQkFBQSxJQUFJLENBQUNFLE9BQU8sQ0FBQ0YsSUFBSSxjQUFqQix3Q0FBQSxrQkFBbUJPLElBQUk7SUFDbEM7SUFFQTs7OztHQUlDLEdBQ0RFLFVBQVVULEdBQVEsRUFBWTtRQUM1QixPQUFPLElBQUksQ0FBQ0UsT0FBTyxDQUFDRixJQUFJLElBQUksSUFBSUc7SUFDbEM7SUFFQTs7Ozs7R0FLQyxHQUNEUSxhQUFhWCxHQUFXLEVBQUVDLEtBQVUsRUFBVztZQUNwQztRQUFULE9BQU8sQ0FBQyxHQUFDLG9CQUFBLElBQUksQ0FBQ0MsT0FBTyxDQUFDRixJQUFJLGNBQWpCLHdDQUFBLGtCQUFtQlksR0FBRyxDQUFDWDtJQUNsQztJQUVBOzs7O0dBSUMsR0FDRFksY0FBY1osS0FBYSxFQUFZO1FBQ3JDLElBQUlhLFNBQW1CLEVBQUU7UUFDekIsS0FBSyxJQUFJLENBQUNkLEtBQUtlLE9BQU8sSUFBSUMsT0FBT0MsT0FBTyxDQUFDLElBQUksQ0FBQ2YsT0FBTyxFQUFHO1lBQ3RELElBQUlhLE9BQU9ILEdBQUcsQ0FBQ1gsUUFBUTtnQkFDckJhLE9BQU9JLElBQUksQ0FBQ2xCO1lBQ2Q7UUFDRjtRQUNBLE9BQU9jO0lBQ1Q7O1FBM0VBLHVCQUFRWixXQUFvQyxDQUFDOztBQTRFL0MifQ==