@lifaon/rx-js-light
Version:
Blazing fast Observables
97 lines (96 loc) • 2.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SubscriptionManager = void 0;
var SubscriptionManager = (function () {
function SubscriptionManager() {
this._subscriptionsMap = new Map();
}
Object.defineProperty(SubscriptionManager.prototype, "size", {
get: function () {
return this._subscriptionsMap.size;
},
enumerable: false,
configurable: true
});
SubscriptionManager.prototype.has = function (key) {
return this._subscriptionsMap.has(key);
};
SubscriptionManager.prototype.get = function (key, mode) {
switch (mode) {
case void 0:
return this._subscriptionsMap.get(key);
case 'throw':
{
if (this._subscriptionsMap.has(key)) {
return this._subscriptionsMap.get(key);
} else {
throw new Error(("Missing key: '").concat(key, "'"));
}
}
default:
throw new TypeError(("Unknown mode: '").concat(mode, "'"));
}
};
SubscriptionManager.prototype.set = function (key, subscription, mode) {
if (mode === void 0) {
mode = 'throw';
}
if (this._subscriptionsMap.has(key)) {
switch (mode) {
case 'skip':
break;
case 'replace':
this._subscriptionsMap.get(key).deactivate();
this._subscriptionsMap.set(key, subscription);
break;
case 'throw':
throw new Error(("Already subscribed to: '").concat(key, "'"));
default:
throw new TypeError(("Unknown mode: '").concat(mode, "'"));
}
} else {
this._subscriptionsMap.set(key, subscription);
}
return subscription;
};
SubscriptionManager.prototype.delete = function (key) {
if (this._subscriptionsMap.has(key)) {
this._subscriptionsMap.get(key).deactivate();
}
this._subscriptionsMap.delete(key);
};
SubscriptionManager.prototype.clear = function () {
this.deactivateAll();
this._subscriptionsMap.clear();
};
SubscriptionManager.prototype.activateAll = function () {
var iterator = this._subscriptionsMap.values();
var result;
while (!(result = iterator.next()).done) {
result.value.activate();
}
};
SubscriptionManager.prototype.deactivateAll = function () {
var iterator = this._subscriptionsMap.values();
var result;
while (!(result = iterator.next()).done) {
result.value.deactivate();
}
};
SubscriptionManager.prototype[Symbol.iterator] = function () {
return this._subscriptionsMap[Symbol.iterator]();
};
SubscriptionManager.prototype.entries = function () {
return this._subscriptionsMap.entries();
};
SubscriptionManager.prototype.keys = function () {
return this._subscriptionsMap.keys();
};
SubscriptionManager.prototype.values = function () {
return this._subscriptionsMap.values();
};
return SubscriptionManager;
})();
exports.SubscriptionManager = SubscriptionManager;