A simple dependency injection Container for Javascript/Typescript.
- ☑️ Easy to use
- ☑️ Maintainable
- ☑️ Portable
You can use NPM or Yarn to install it
npm install --save @marcelsud/melody-di
or
yarn add @marcelsud/melody-di
Creating a container and adding dependencies is pretty straightforward.
First, create the container:
import { Container } from '@marcelsud/melody-di'
const container = new Container()
After that add some dependency into the container:
class CalculatorService {
sum(a: number, b: number): number {
return a + b;
}
}
container.set('calculator_service', () => {
return new CalculatorService()
})
Then, get it somewhere else:
const calculatorService = container.get<CalculatorService>('calculator_service')
console.log(calculatorService.sum(10, 5)) // 15
It can also be added as a promise
container.set('calculator_service', async (c: Container) => {
const somethingElse = await c.get<Promise<SomethingElse>>('something_else')
return new CalculatorService(somethingElse)
})
// 2000 years later...
const service = await container.get<Promise<CalculatorService>>('calculator_service')
console.log(service.sum(20, 30)) // 50
You can add a static value into the container, such as a number, a string, or even an object:
container.set('some_config', 'SUPER_SECRET_INFORMATION')
container.set('some_important_ttl', 5000)
container.set('some_config_map', {
something: 'QWERTYUIOPASDFGHJKL'
})
// Directly instantiating the object
container.set('calculator_service', new CalculatorService())
To run the tets:
npm t
or
yarn test
I am a passionate Principal Software Engineer. Amongst my favorite topics are Clean Architecture, Domain-Driven Design and Event-Driven Architecture.
You can find me out on: