| 13 | } |
| 14 | |
| 15 | export async function main() { |
| 16 | const appCtx = new Context('app'); |
| 17 | |
| 18 | // Create a context per request, with `appCtx` as the parent |
| 19 | const requestCtx = new Context(appCtx, 'request'); |
| 20 | |
| 21 | const greeterBinding = appCtx |
| 22 | .bind('services.Greeter') |
| 23 | .toClass(Greeter) |
| 24 | .tag('greeter'); |
| 25 | |
| 26 | // Set prefix to `app` at app context level |
| 27 | appCtx.bind('prefix').to(appCtx.name); |
| 28 | |
| 29 | // Get a greeter from request context |
| 30 | let greeter = await requestCtx.get<Greeter>(greeterBinding.key); |
| 31 | |
| 32 | // Inherit `prefix` from app context |
| 33 | console.log(greeter.greet('John')); |
| 34 | |
| 35 | // Set `prefix` at request context level |
| 36 | requestCtx.bind('prefix').to(requestCtx.name); |
| 37 | greeter = await requestCtx.get<Greeter>(greeterBinding.key); |
| 38 | // Now the request context prefix is used |
| 39 | console.log(greeter.greet('John')); |
| 40 | |
| 41 | // Get a greeter from app context |
| 42 | greeter = await appCtx.get<Greeter>(greeterBinding.key); |
| 43 | // Now the app context prefix is used |
| 44 | console.log(greeter.greet('John')); |
| 45 | } |
| 46 | |
| 47 | if (require.main === module) { |
| 48 | main().catch(err => { |