UNPKG

@acutmore/rxjs

Version:

Reactive Extensions for modern JavaScript

256 lines 7.68 kB
// v4-backwards-compatibility var DisposableImpl = /** @class */ (function () { function DisposableImpl(work) { this.work = work; this._disposed = false; } Object.defineProperty(DisposableImpl.prototype, "closed", { get: function () { return this._disposed; }, enumerable: true, configurable: true }); Object.defineProperty(DisposableImpl.prototype, "isDisposed", { get: function () { return this._disposed; }, enumerable: true, configurable: true }); DisposableImpl.prototype.unsubscribe = function () { if (!this._disposed) { this._disposed = true; if (this.work !== undefined) { this.work(); } } }; return DisposableImpl; }()); export { DisposableImpl }; ; DisposableImpl.prototype.dispose = function () { this.unsubscribe(); }; var Disposable = /** @class */ (function () { function Disposable() { } Disposable.create = function (fn) { return new DisposableImpl(fn); }; Object.defineProperty(Disposable.prototype, "closed", { get: function () { return true; }, enumerable: true, configurable: true }); Object.defineProperty(Disposable.prototype, "isDisposed", { get: function () { return true; }, enumerable: true, configurable: true }); Disposable.prototype.unsubscribe = function () { /* no op */ }; Disposable.empty = new DisposableImpl(function () { }); return Disposable; }()); export { Disposable }; ; Disposable.prototype.dispose = function () { this.unsubscribe(); }; var CompositeDisposable = /** @class */ (function () { function CompositeDisposable() { var disposables = []; for (var _i = 0; _i < arguments.length; _i++) { disposables[_i] = arguments[_i]; } if (disposables.length > 0 && Array.isArray(disposables[0])) { this.disposables = disposables[0]; } else { this.disposables = disposables; } } CompositeDisposable.prototype.add = function (v) { if (this.closed) { v.dispose(); } else { this.disposables.push(v); } }; CompositeDisposable.prototype.remove = function (v) { var index = this.disposables.indexOf(v); if (index !== -1) { var d = this.disposables.splice(index, 1)[0]; d.dispose(); return true; } return false; }; CompositeDisposable.prototype.toArray = function () { return this.disposables.slice(); }; Object.defineProperty(CompositeDisposable.prototype, "length", { get: function () { return this.disposables.length; }, enumerable: true, configurable: true }); CompositeDisposable.prototype.unsubscribe = function () { if (this.closed) { return; } this.closed = true; var arr = this.disposables.slice(); this.disposables = []; var length = arr.length; for (var i = 0; i < length; i++) { arr[i].dispose(); } }; Object.defineProperty(CompositeDisposable.prototype, "isDisposed", { get: function () { return this.closed; }, enumerable: true, configurable: true }); return CompositeDisposable; }()); export { CompositeDisposable }; CompositeDisposable.prototype.dispose = function () { this.unsubscribe(); }; var SerialDisposable = /** @class */ (function () { function SerialDisposable() { this.closed = false; } SerialDisposable.prototype.unsubscribe = function () { if (this.closed) { return; } this.closed = true; var current = this.current; this.current = undefined; if (current !== undefined) { current.dispose(); } }; SerialDisposable.prototype.getDisposable = function () { return this.current; }; SerialDisposable.prototype.setDisposable = function (disposable) { if (this.closed) { if (disposable !== undefined) { disposable.dispose(); } } else { var old = this.current; this.current = disposable; if (old !== undefined) { old.dispose(); } } }; Object.defineProperty(SerialDisposable.prototype, "isDisposed", { get: function () { return this.closed; }, enumerable: true, configurable: true }); return SerialDisposable; }()); export { SerialDisposable }; ; SerialDisposable.prototype.dispose = function () { this.unsubscribe(); }; var SingleAssignmentDisposable = /** @class */ (function () { function SingleAssignmentDisposable() { this.closed = false; } SingleAssignmentDisposable.prototype.unsubscribe = function () { if (this.closed) { return; } this.closed = true; var disposable = this.disposable; this.disposable = undefined; if (disposable !== undefined) { disposable.dispose(); } }; SingleAssignmentDisposable.prototype.getDisposable = function () { return this.disposable; }; SingleAssignmentDisposable.prototype.setDisposable = function (v) { if (this.disposable !== undefined) { throw new Error("SerialDisposable already set"); } if (v !== undefined) { if (this.closed) { v.dispose(); } else { this.disposable = v; } } }; Object.defineProperty(SingleAssignmentDisposable.prototype, "isDisposed", { get: function () { return this.closed; }, enumerable: true, configurable: true }); return SingleAssignmentDisposable; }()); export { SingleAssignmentDisposable }; SingleAssignmentDisposable.prototype.dispose = function () { this.unsubscribe(); }; var RefCountDisposable = /** @class */ (function () { function RefCountDisposable(subscription) { this.subscription = subscription; this.closed = false; this.count = 0; this.primaryDisposed = false; } Object.defineProperty(RefCountDisposable.prototype, "isDisposed", { get: function () { return this.closed; }, enumerable: true, configurable: true }); RefCountDisposable.prototype.unsubscribe = function () { if (this.primaryDisposed) { return; } this.primaryDisposed = true; this._disposeCheck(); }; RefCountDisposable.prototype._disposeCheck = function () { if (!this.closed && this.primaryDisposed && this.count === 0) { this.closed = true; var sub = this.subscription; this.subscription = undefined; sub.dispose(); } }; RefCountDisposable.prototype.getDisposable = function () { var _this = this; if (this.isDisposed) { return Disposable.empty; } this.count++; return new DisposableImpl(function () { _this.count--; _this._disposeCheck(); }); }; return RefCountDisposable; }()); export { RefCountDisposable }; RefCountDisposable.prototype.dispose = function () { this.unsubscribe(); }; //# sourceMappingURL=Disposable.js.map