/** A naive, singleton-scoped dependency injection container */ export class Container { readonly #registry: Record; constructor() { this.#registry = {}; } get(registeredInterfaceSymbol: symbol): T { const value = this.#registry[registeredInterfaceSymbol] as T; return value; } register( registeredInterfaceSymbol: symbol, value: T ): Container { this.#registry[registeredInterfaceSymbol] = value; return this; } }