import { ValueOrPromise } from './value-promise'; /** * Providers allow developers to compute injected values dynamically, * with any dependencies required by the value getter injected automatically * from the Context. * * @example * * ```ts * export class DateProvider implements Provider { * constructor(@inject('stringDate') private param: String){} * value(): Date { * return new Date(param); * } * } * * ctx.bind('stringDate').to('2017-01-01') * ctx.bind('provider_key').toProvider(DateProvider); * * const value = ctx.getAsync('provider_key'); * // value is a Date instance * ``` */ export interface Provider { /** * @returns The value to inject to dependents. * This method can return a promise too, in which case the IoC framework * will resolve this promise to obtain the value to inject. */ value(): ValueOrPromise; }