ts-ioc-container
Version:
Fast, lightweight TypeScript dependency injection container with a clean API, scoped lifecycles, decorators, tokens, hooks, lazy injection, customizable providers, and no global container objects.
23 lines (22 loc) • 693 B
JavaScript
export class AliasMap {
aliasToKeySet = new Map();
getKeysByAlias(alias) {
return [...(this.aliasToKeySet.get(alias) ?? [])];
}
setAliasesByKey(key, aliases) {
// reset existing key's aliases
for (const [alias, keySet] of this.aliasToKeySet) {
keySet.delete(key);
if (keySet.size === 0) {
this.aliasToKeySet.delete(alias);
}
}
for (const alias of aliases) {
const dependencyKeySet = this.aliasToKeySet.get(alias) ?? new Set();
this.aliasToKeySet.set(alias, dependencyKeySet.add(key));
}
}
destroy() {
this.aliasToKeySet.clear();
}
}