UNPKG

@apiratorjs/di-container

Version:

A lightweight dependency injection container for JavaScript and TypeScript with powerful features: modular organization with DiModule.create, lazy initialization, automatic circular dependency detection, and multiple service lifecycles (singleton with bot

44 lines 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DiModule = void 0; class DiModule { constructor(options) { this.options = options; } static create(options) { return new DiModule(options); } register(configurator) { if (this.options.imports) { for (const importedModule of this.options.imports) { configurator.addModule(importedModule); } } if (this.options.providers) { for (const provider of this.options.providers) { this.registerProvider(provider, configurator); } } } registerProvider(provider, configurator) { const { token, useFactory, lifetime } = provider; this.registerByLifetime(token, useFactory, lifetime, configurator); } registerByLifetime(token, factory, lifetime, configurator) { switch (lifetime) { case "singleton": configurator.addSingleton(token, factory); break; case "scoped": configurator.addScoped(token, factory); break; case "transient": configurator.addTransient(token, factory); break; default: throw new Error(`Unknown lifetime: ${lifetime}`); } } } exports.DiModule = DiModule; //# sourceMappingURL=di-module.js.map