@inversifyjs/core
Version:
InversifyJs core package
56 lines • 2.15 kB
JavaScript
import { chain } from '../../common/calculations/chain.js';
import { OneToManyMapStar } from '../../common/models/OneToManyMapStar.js';
var DeactivationRelationKind;
(function (DeactivationRelationKind) {
DeactivationRelationKind["moduleId"] = "moduleId";
DeactivationRelationKind["serviceId"] = "serviceId";
})(DeactivationRelationKind || (DeactivationRelationKind = {}));
export class DeactivationsService {
#deactivationMaps;
#getParent;
constructor(getParent, deactivationMaps) {
this.#deactivationMaps =
deactivationMaps ??
new OneToManyMapStar({
moduleId: {
isOptional: true,
},
serviceId: {
isOptional: false,
},
});
this.#getParent = getParent;
}
static build(getParent) {
return new DeactivationsService(getParent);
}
add(deactivation, relation) {
this.#deactivationMaps.add(deactivation, relation);
}
clone() {
const clone = new DeactivationsService(this.#getParent, this.#deactivationMaps.clone());
return clone;
}
get(serviceIdentifier) {
const deactivationIterables = [];
const deactivations = this.#deactivationMaps.get(DeactivationRelationKind.serviceId, serviceIdentifier);
if (deactivations !== undefined) {
deactivationIterables.push(deactivations);
}
const parentDeactivations = this.#getParent()?.get(serviceIdentifier);
if (parentDeactivations !== undefined) {
deactivationIterables.push(parentDeactivations);
}
if (deactivationIterables.length === 0) {
return undefined;
}
return chain(...deactivationIterables);
}
removeAllByModuleId(moduleId) {
this.#deactivationMaps.removeByRelation(DeactivationRelationKind.moduleId, moduleId);
}
removeAllByServiceId(serviceId) {
this.#deactivationMaps.removeByRelation(DeactivationRelationKind.serviceId, serviceId);
}
}
//# sourceMappingURL=DeactivationsService.js.map