UNPKG

ts-ioc-container

Version:
29 lines (28 loc) 951 B
import { List as L } from '../utils'; export 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 ? L.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(); } }