import { Ctor } from '../utils'; import { MetadataTarget } from './metadata-target'; export class MetadataStore { private targets = new Map, MetadataTarget>(); has(target: Ctor) { return this.targets.has(target); } get(target: Ctor): MetadataTarget | undefined { return this.targets.get(target); } getCreate(target: Ctor | Function): MetadataTarget { let meta = this.targets.get(target as Ctor); if (!meta) { meta = new MetadataTarget(target as Ctor); this.targets.set(target as Ctor, meta); } return meta; } getTargets() { return this.targets.entries(); } } export const globalMetadataStore = new MetadataStore();