import { Constructor } from './Constructor'; import { asString } from './Text'; class builder { private static state: any = {}; static singleton = (ctr: Constructor, ...args: any[]): T => builder.state[asString(ctr)] ?? (builder.state[asString(ctr)] = new ctr(...args)); static reset = (): void => { builder.state = {}; }; } export const build = { singleton: (ctr: Constructor, ...args: any[]): T => builder.singleton(ctr, ...args), reset: (): void => builder.reset(), }; export const singleton = (ctr: Constructor, ...args: any[]): T => build.singleton(ctr, ...args);