inversify
Version:
A powerful and lightweight inversion of control container for JavaScript and Node.js apps powered by TypeScript.
52 lines (51 loc) • 1.9 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModuleActivationStore = void 0;
const lookup_1 = require("./lookup");
class ModuleActivationStore {
constructor() {
this._map = new Map();
}
remove(moduleId) {
if (this._map.has(moduleId)) {
const handlers = this._map.get(moduleId);
this._map.delete(moduleId);
return handlers;
}
return this._getEmptyHandlersStore();
}
addDeactivation(moduleId, serviceIdentifier, onDeactivation) {
this._getModuleActivationHandlers(moduleId)
.onDeactivations.add(serviceIdentifier, onDeactivation);
}
addActivation(moduleId, serviceIdentifier, onActivation) {
this._getModuleActivationHandlers(moduleId)
.onActivations.add(serviceIdentifier, onActivation);
}
clone() {
const clone = new ModuleActivationStore();
this._map.forEach((handlersStore, moduleId) => {
clone._map.set(moduleId, {
onActivations: handlersStore.onActivations.clone(),
onDeactivations: handlersStore.onDeactivations.clone(),
});
});
return clone;
}
_getModuleActivationHandlers(moduleId) {
let moduleActivationHandlers = this._map.get(moduleId);
if (moduleActivationHandlers === undefined) {
moduleActivationHandlers = this._getEmptyHandlersStore();
this._map.set(moduleId, moduleActivationHandlers);
}
return moduleActivationHandlers;
}
_getEmptyHandlersStore() {
const handlersStore = {
onActivations: new lookup_1.Lookup(),
onDeactivations: new lookup_1.Lookup()
};
return handlersStore;
}
}
exports.ModuleActivationStore = ModuleActivationStore;
;