// Func class OperatorStorage extends Array { constructor () { super(); this._indexObject = {}; this._indexObjectIndexOf = {}; } push (item) { if (item instanceof Operator) { if (!this._indexObject[item.operator]) { super.push(item); this._indexObject[item.operator] = item; } } else throw new TypeError("Into OperatorStorage you can add only Operator's instances"); } includes (item) { if (item instanceof Operator) { return this._indexObject[item.operator] !== undefined; } else throw new TypeError("Into OperatorStorage storage only Operator type"); } } // API class Operator { constructor (operatorName, argvHandler = () => true, exec = (argv, module) => {}) { this.operator = operatorName; this.handlers = { argv: argvHandler, exec }; } } module.exports = class NetHelperModule { constructor () { this.operators = new OperatorStorage(); this.statics = { Operator }; } }