export class MikroOrmEntitiesStorage { static storage = new Map(); static shouldClear = false; static addEntity(entity, contextName = 'default') { if (this.shouldClear) { this.clear(contextName); this.shouldClear = false; } let set = this.storage.get(contextName); if (!set) { set = new Set(); this.storage.set(contextName, set); } set.add(entity); } static getEntities(contextName = 'default') { return this.storage.get(contextName)?.values() || []; } static clear(contextName = 'default') { this.storage.get(contextName)?.clear(); } /** * When the `addEntity` is called next, the storage will be cleared automatically before it. * We want to keep the cache, as it's populated on require time, but sometimes (tests) the contexts could be cleared. * This resolves both cases by deferring the `clear` call to the first `addEntity` call. */ static clearLater() { this.shouldClear = true; } }