Running your program
To run your program, you need to use the provide function and call its
return value.
import * as DI from 'diabolo'
DI.provide(mainFunction, {
MyService: myServiceImpl
})()Your provided dependencies can also be a promise. It may be useful if you dynamically import one of your services.
import * as DI from 'diabolo'
async function getImpls() {
if (runtime.isNode) {
const { default: myServiceImpl } = await import('./myService.node.js')
return { MyService: myServiceImpl }
} else {
const { default: myServiceImpl } = await import('./myService.browser.js')
return { MyService: myServiceImpl }
}
}
DI.provide(mainFunction, getImpls())()The provide function is type-safe. If you forget to provide a service, you
will get a TypeScript error.
I decided to export a provide function instead of a run. This way, you
can provide the services you want and call the function later.
import * as DI from 'diabolo'
const providedMainFunction = DI.provide(mainFunction, {
MyService: myServiceImpl
})
providedMainFunction()