UNPKG

ts-bakery

Version:

Baked dependency injection for Typescript.

50 lines 1.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Paths_1 = require("../Util/Paths"); const DependencyContainer_1 = require("./DependencyContainer"); const ManualInjector_1 = require("./ManualInjector"); class DependencyResolver { constructor() { this.modules = []; this.moduleNames = new Set(); this.container = new DependencyContainer_1.default(); ManualInjector_1.default.setResolver(this); } build() { this.validatePaths(); this.registerModules(); this.buildRegistrations(); this.instantiateFromRegistrations(); this.callPostResolvables(); } manualInject(instance) { this.container.manualInject(instance); } registerModule(constructor) { if (this.moduleNames.has(constructor.name)) { throw new Error(`Module with name ${constructor.name} has already been registered.`); } this.moduleNames.add(constructor.name); const module = new constructor(); this.modules.push(module); } validatePaths() { Paths_1.default.validate(); } buildRegistrations() { const allRegistrations = []; for (const module of this.modules) { const regs = module.buildRegistrations(); allRegistrations.push(...regs); } this.container.registerDependencies(allRegistrations); } instantiateFromRegistrations() { this.container.instantiateFromRegistrations(); } callPostResolvables() { this.container.callPostResolvables(); } } exports.default = DependencyResolver; //# sourceMappingURL=DependencyResolver.js.map