import { Injector } from "./Injector"; import { Type, GenericClassDecorator, Constructor } from "./Internals"; /** * @returns {GenericClassDecorator>} * @constructor */ export function Singleton(config?: { interface?: Constructor, initializationPriority?: number }): GenericClassDecorator> { return (clazz: Type) => { Injector['singletonDefinitions'].push({ initializationPriority: config ?. initializationPriority, ctor: clazz }) if(config && config.interface){ Injector['tokenLookupTable'][config.interface.name] = clazz } } } export function Inject(token: Constructor) { return function (receiver: Object, key: string) { Injector['injectionQueue'].push({ token, receiver, key }) } }