UNPKG

qtsd-fork

Version:

Do not use this please

101 lines (77 loc) 2.63 kB
'use strict'; exports.__esModule = true; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } var _isDisposable = require('./isDisposable'); var _isDisposable2 = _interopRequireDefault(_isDisposable); /** * Represents a group of disposable resources that are disposed together. */ var CompositeDisposable = (function () { function CompositeDisposable() { for (var _len = arguments.length, disposables = Array(_len), _key = 0; _key < _len; _key++) { disposables[_key] = arguments[_key]; } _classCallCheck(this, CompositeDisposable); if (Array.isArray(disposables[0]) && disposables.length === 1) { disposables = disposables[0]; } for (var i = 0; i < disposables.length; i++) { if (!_isDisposable2['default'](disposables[i])) { throw new Error('Expected a disposable'); } } this.disposables = disposables; this.isDisposed = false; } /** * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed. * @param {Disposable} item Disposable to add. */ CompositeDisposable.prototype.add = function add(item) { if (this.isDisposed) { item.dispose(); } else { this.disposables.push(item); } }; /** * Removes and disposes the first occurrence of a disposable from the CompositeDisposable. * @param {Disposable} item Disposable to remove. * @returns {Boolean} true if found; false otherwise. */ CompositeDisposable.prototype.remove = function remove(item) { if (this.isDisposed) { return false; } var index = this.disposables.indexOf(item); if (index === -1) { return false; } this.disposables.splice(index, 1); item.dispose(); return true; }; /** * Disposes all disposables in the group and removes them from the group. */ CompositeDisposable.prototype.dispose = function dispose() { if (this.isDisposed) { return; } var len = this.disposables.length; var currentDisposables = new Array(len); for (var i = 0; i < len; i++) { currentDisposables[i] = this.disposables[i]; } this.isDisposed = true; this.disposables = []; this.length = 0; for (var i = 0; i < len; i++) { currentDisposables[i].dispose(); } }; return CompositeDisposable; })(); exports['default'] = CompositeDisposable; module.exports = exports['default'];