Library that assists in dependency management.
- NodeJS 8+
$ npm i cdi-node
const CDI = require('cdi-node')
const cdi = new CDI()
const _module = cdi.configure({})
_module.fn = ({ _var1 }) => {
return new Promise((resolve, reject) => {
return resolve(_var1)
})
}
const response = await _module.fn({ _var1: 'test' })
// response: 'test'
const CDI = require('cdi-node')
const cdi = new CDI()
const _module = cdi.configure({})
_module.context = '_context'
_module.fn = ({ _var1 }) => {
return new Promise((resolve, reject) => {
return resolve(_var1 + this.context)
})
}
const response = await _module.fn({ _var1: 'test' })
// response: 'test_context'
const CDI = require('cdi-node')
const cdi = new CDI()
cdi.addInterceptorVariable('_var1', async (fnName, args) => {
return args && args._var1 + '_interceptor'
})
const _module = cdi.configure({})
_module.fn = ({ _var1 }) => {
return new Promise((resolve, reject) => {
return resolve(_var1)
})
}
const response = await _module.fn({ _var1: 'test' })
// response: 'test_interceptor'
const CDI = require('cdi-node')
const cdi = new CDI()
cdi.setInterceptorCatch(async (err, fnName, args) => {
if (args && args._var1) {
return err.message + ' + effect + ' + fnName
}
throw err
})
const _module = cdi.configure({})
_module.fn = ({ _var1 }) => {
throw new Error('error test')
}
const response = await _module.fn({ _var1: 'test' })
// response: 'error test + effect + fn'
try{
await _module.fn()
}catch(err){
// err.messge: 'error test'
}
const CDI = require('cdi-node')
const cdi = new CDI()
cdi.setInterceptorDone(async (response, fnName, args) => {
if (response === 'done') {
return response + ' + ' + fnName
}
throw new Error(response)
})
const _module = cdi.configure({})
_module.fn = ({ _var1 }) => {
return 'done'
}
_module._fn = ({ _var1 }) => {
return 'error'
}
const response = await _module.fn({ _var1: 'test' })
// response: 'done + fn'
try{
await _module._fn()
}catch(err){
// err.messge: 'error'
}
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.