@acutmore/rxjs
Version:
Reactive Extensions for modern JavaScript
256 lines • 7.68 kB
JavaScript
// 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