convenient-di
Advanced tools
Comparing version 1.1.0 to 2.0.0
@@ -5,2 +5,3 @@ const {ContainerBuilder, Reference} = require('node-dependency-injection'); | ||
const _ = require('lodash'); | ||
const camelCase = require('camelcase'); | ||
@@ -48,3 +49,8 @@ class Container extends require('events').EventEmitter { | ||
let serviceConfig = this.config.services[serviceName]; | ||
let registered = this.builder.register(serviceName, require(serviceConfig.path)); | ||
let toRegister = serviceConfig.className? | ||
require(serviceConfig.path)[serviceConfig.className]: | ||
require(serviceConfig.path); | ||
var registered = this.builder.register(serviceName, toRegister); | ||
serviceConfig.dependencies.forEach((dependencyName)=>{ | ||
@@ -98,9 +104,26 @@ registered.addArgument(new Reference(dependencyName)); | ||
setupImportedServices(config){ | ||
const decamelize = require('decamelize'); | ||
Object.keys(config.services).forEach((serviceConfigName) => { | ||
if (serviceConfigName.indexOf('$') != 0) return; | ||
let containerModuleName = decamelize(serviceConfigName.substring(1), '-'); | ||
//overwrite the path with the actual service path | ||
config.services[serviceConfigName].path = require.resolve(containerModuleName); | ||
config.services[serviceConfigName].dependencies = this.common.utils.getConstructorArgumentNamesFromPath(config.services[serviceConfigName].path); | ||
var containerModuleName = serviceConfigName.substring(1); | ||
let className; | ||
if (serviceConfigName.indexOf('::') > -1){ | ||
containerModuleName = containerModuleName.split('::')[0]; | ||
className = serviceConfigName.split('::')[1]; | ||
} | ||
let serviceConfig = config.services[serviceConfigName]; | ||
let containerModuleAliasName = camelCase(containerModuleName); | ||
let moduleAbsolutePath = require.resolve(containerModuleName); | ||
let containerModuleAliasConfig = { | ||
path:moduleAbsolutePath, | ||
className, | ||
//overwrite the path with the actual service path | ||
dependencies:this.common.utils.getConstructorArgumentNamesFromPath(moduleAbsolutePath, className), | ||
config:serviceConfig.config | ||
}; | ||
config.services[containerModuleAliasName] = containerModuleAliasConfig; | ||
//remove the $ configuration | ||
delete config.services[serviceConfigName]; | ||
}); | ||
@@ -107,0 +130,0 @@ return config; |
@@ -46,3 +46,3 @@ const finder = require('find-package-json'); | ||
} | ||
let containerConfig = config.services['$' + camelCase(packageName)].config; | ||
let containerConfig = config.services[camelCase(packageName)].config; | ||
containerConfig.projectPath = `${modulePath}${path.sep}lib`; | ||
@@ -66,3 +66,2 @@ return containerConfig; | ||
this.container.merge(this); | ||
this.hello = true; | ||
} | ||
@@ -69,0 +68,0 @@ |
{ | ||
"name": "convenient-di", | ||
"version": "1.1.0", | ||
"version": "2.0.0", | ||
"description": "Dependency injection via a layout / folder structure convention for service modules.", | ||
@@ -22,3 +22,3 @@ "main": "index.js", | ||
"node-dependency-injection": "^2.3.3", | ||
"plebs": "^1.0.1" | ||
"plebs": "^1.1.0" | ||
}, | ||
@@ -25,0 +25,0 @@ "pre-commit": [ |
21847
597
6
Updatedplebs@^1.1.0