##// END OF EJS Templates
code comments
code comments

File last commit:

r1:a51ea59f0423 default
r2:154d88dba49c default
Show More
ContextResolver.ts
19 lines | 921 B | video/mp2t | TypeScriptLexer
/ src / main / ts / ContextResolver.ts
cin
working on fluent configuration
r1 import { ActivationContext } from "./ActivationContext";
export class ContextResolver<S extends object> {
private readonly _context: ActivationContext<S>;
constructor(context: ActivationContext<S>) {
this._context = context;
}
resolve<K extends keyof S, O extends { lazy: true}>(name: K, opts?: O): () => (O extends { default: infer T } ? T : never) | NonNullable<S[K]>;
resolve<K extends keyof S, O extends { lazy?: false}>(name: K, opts?: O): (O extends { default: infer T } ? T : never) | NonNullable<S[K]>;
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);
}
}
}