1 | const _bindAll = require('lodash.bindall');
|
2 | const _assign = require('lodash.assign');
|
3 | const Logger = require('./Logger');
|
4 | const ContainerManagement = require('./ContainerManagement');
|
5 | const DependencyManagement = require('./DependencyManagement');
|
6 | const RegistrationManagement = require('./RegistrationManagement');
|
7 |
|
8 | class Injector {
|
9 | constructor(name = 'anonymous_injector', logger = Logger.create()) {
|
10 | _bindAll(this, 'resolveDependency');
|
11 | this.name = name;
|
12 | this.logger = logger;
|
13 | this.dependencies = {};
|
14 | }
|
15 |
|
16 | static create(name, logger) {
|
17 | return new Injector(name, logger);
|
18 | }
|
19 | }
|
20 |
|
21 | _assign(Injector.prototype, ContainerManagement, DependencyManagement, RegistrationManagement);
|
22 |
|
23 | module.exports = Injector;
|