UNPKG

@elsikora/cladi

Version:

Zero-dependency TypeScript DI toolkit with typed tokens and scoped lifecycles.

35 lines (31 loc) 1.45 kB
'use strict'; var error_class = require('../../../../infrastructure/class/base/error.class.js'); var get_utility = require('../injectable-metadata/get.utility.js'); var autowireProvider_utility = require('./autowire-provider.utility.js'); /** * Creates autowired provider using token defined in injectable metadata. * @param {Constructor<T>} useClass Class constructor to instantiate. * @param {Omit<ICreateAutowireProviderOptions<T, TDependencies>, "token">} [options] Optional provider overrides. * @returns {IClassProvider<T, TDependencies>} Class provider definition. * @template T Provider instance type. * @template TDependencies Constructor dependency tokens. */ function autowire(useClass, options = {}) { const metadata = get_utility.getInjectableMetadata(useClass); const metadataToken = metadata?.token; if (!metadataToken || typeof metadataToken !== "symbol") { throw new error_class.BaseError("Injectable metadata token is missing; use @Injectable({ token }) or createAutowireProvider(..., { token })", { code: "INJECTABLE_TOKEN_MISSING", context: { className: useClass.name ?? "anonymous-class", }, source: "autowire", }); } return autowireProvider_utility.createAutowireProvider(useClass, { ...options, token: metadataToken, }); } exports.autowire = autowire; //# sourceMappingURL=autowire.utility.js.map