Skip to content

willguitaradmfar/cdi-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cdi-node

Build Status

Coverage Status

Library that assists in dependency management.

Installation

Requirements

  • NodeJS 8+

$ npm i cdi-node

Usage

Simple

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'

Simple with context

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'

Simple with interceptor variable

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'

Simple with interceptor catch error

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'
}

Simple with interceptor Done

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'
}

Contributing

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.

License

MIT

Releases

No releases published

Packages

No packages published