UNPKG

@akala/core

Version:
25 lines 979 B
import { defaultInjector } from './injectors/simple-injector.js'; import { ctorToFunction } from './injectors/shared.js'; /** * Decorator factory for creating injectable factories. * @param name - Unique identifier for the factory in the dependency injection container. * @param toInject - Names of dependencies to inject into the factory constructor. */ export function factory(name, ...toInject) { return function (target) { let instance = null; const ctor = ctorToFunction(target); const factory = (...parameters) => { if (!instance) instance = ctor(...parameters); return instance.build(); }; if (toInject.length === 0) { defaultInjector.registerFactory(name, defaultInjector.inject(factory)); } else { defaultInjector.registerFactory(name, defaultInjector.injectWithName(toInject, factory)); } }; } //# sourceMappingURL=factory.js.map