ts-ioc-container
Version:
Typescript IoC container
33 lines (32 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AliasMap = void 0;
const utils_1 = require("../utils");
class AliasMap {
aliasToKeySet = new Map();
deleteKeyFromAliases(key) {
for (const [depKey, aliasSet] of [...this.aliasToKeySet].filter(([k, aliasSet]) => aliasSet.has(key))) {
aliasSet.delete(key);
if (aliasSet.size === 0) {
this.aliasToKeySet.delete(depKey);
}
}
}
findManyKeysByAlias(alias) {
return [...(this.aliasToKeySet.get(alias) ?? [])];
}
findLastKeyByAlias(alias) {
const keys = [...(this.aliasToKeySet.get(alias) ?? [])];
return keys.length > 0 ? utils_1.List.lastOf(keys) : undefined;
}
addAliases(key, aliases) {
for (const alias of aliases) {
const currentAliasKeys = this.aliasToKeySet.get(alias) ?? new Set();
this.aliasToKeySet.set(alias, currentAliasKeys.add(key));
}
}
destroy() {
this.aliasToKeySet.clear();
}
}
exports.AliasMap = AliasMap;