import { ActivationContext } from "./ActivationContext"; export class ContextResolver { private readonly _context: ActivationContext; constructor(context: ActivationContext) { this._context = context; } resolve(name: K, opts?: O): () => (O extends { default: infer T } ? T : never) | NonNullable; resolve(name: K, opts?: O): (O extends { default: infer T } ? T : never) | NonNullable; resolve(name: keyof S, opts?: {lazy?: boolean, default?: unknown}) { if (opts && opts.lazy) { return () => "default" in opts ? this._context.resolve(name, opts.default) : this._context.resolve(name); } else { return opts && "default" in opts ? this._context.resolve(name, opts.default) : this._context.resolve(name); } } }