UNPKG

react-obsidian

Version:

Dependency injection framework for React and React Native applications

21 lines (17 loc) 535 B
class ReferenceCounter { private readonly references = new WeakMap<object, number>(); retain(object: any) { const count = this.references.get(object) ?? 0; this.references.set(object, count + 1); } release<T extends object>(object: T, onReleased: (_object: T) => void) { const count = this.references.get(object)!; if (count === 1) { onReleased(object); this.references.delete(object); } else { this.references.set(object, count - 1); } } } export default new ReferenceCounter();