big-moving.ru/api/soft/monako/esm/vs/base/common/lifecycle.js

64 lines
1.8 KiB
JavaScript
Raw Normal View History

2022-06-24 15:29:23 +05:00
export function isDisposable(thing) {
return typeof thing.dispose === 'function'
&& thing.dispose.length === 0;
}
export function dispose(first) {
var rest = [];
for (var _i = 1; _i < arguments.length; _i++) {
rest[_i - 1] = arguments[_i];
}
if (Array.isArray(first)) {
first.forEach(function (d) { return d && d.dispose(); });
return [];
}
else if (rest.length === 0) {
if (first) {
first.dispose();
return first;
}
return undefined;
}
else {
dispose(first);
dispose(rest);
return [];
}
}
export function combinedDisposable(disposables) {
return { dispose: function () { return dispose(disposables); } };
}
export function toDisposable(fn) {
return { dispose: function () { fn(); } };
}
var Disposable = /** @class */ (function () {
function Disposable() {
this._toDispose = [];
this._lifecycle_disposable_isDisposed = false;
}
Disposable.prototype.dispose = function () {
this._lifecycle_disposable_isDisposed = true;
this._toDispose = dispose(this._toDispose);
};
Disposable.prototype._register = function (t) {
if (this._lifecycle_disposable_isDisposed) {
console.warn('Registering disposable on object that has already been disposed.');
t.dispose();
}
else {
this._toDispose.push(t);
}
return t;
};
Disposable.None = Object.freeze({ dispose: function () { } });
return Disposable;
}());
export { Disposable };
var ImmortalReference = /** @class */ (function () {
function ImmortalReference(object) {
this.object = object;
}
ImmortalReference.prototype.dispose = function () { };
return ImmortalReference;
}());
export { ImmortalReference };