context-tree
Version:
Simple hierarchical dependency injection library, as the part of Fractal Architecture
32 lines (31 loc) • 1.2 kB
TypeScript
type Resolver<T> = () => T;
export declare class ContextResolver<T> {
readonly context: Context<T>;
readonly resolver: Resolver<T>;
constructor(context: Context<T>, resolver: Resolver<T>);
}
export interface IContext {
context: IContext | IContext[] | null | undefined;
contextType?: Context<any>;
contextResolvers?: ContextResolvers;
}
export declare class ContextResolvers {
private resolvers;
addResolver(resolver: ContextResolver<any>): void;
removeResolver(context: Context<any>): void;
findResolver<T>(_context: Context<T>): Resolver<T> | null;
}
export declare class Context<T> {
readonly parent: Context<any> | null;
readonly name: string;
constructor(name: string, parent?: Context<any> | null);
static resolvers(resolvers: Array<ContextResolver<any>>): ContextResolvers;
static checkRequired(instance: any): void;
partial<P extends Partial<T>>(name: string): Context<P>;
resolvesTo(resolver: Resolver<T>): ContextResolver<T>;
resolve(instance: IContext): T;
resolveMaybe(instance: IContext): T | undefined;
findResolver(startInstance: IContext): Resolver<T> | null;
private contextTypeResolver;
}
export {};