proxydi
Version:
A typed hierarchical DI container that resolves circular dependencies via Proxy
28 lines (27 loc) • 1.04 kB
TypeScript
import { ProxyDiContainer } from '../ProxyDiContainer';
import { DependencyId, ContainerizedDependency } from '../types';
export type MiddlewareContext<T extends any> = {
container: ProxyDiContainer;
dependencyId: DependencyId;
dependency: T & ContainerizedDependency;
};
export interface MiddlewareEvent {
register: <T>(context: MiddlewareContext<T>) => void;
remove: <T>(context: MiddlewareContext<T>) => void;
resolve: <T>(context: MiddlewareContext<T>) => MiddlewareContext<T>;
}
export interface MiddlewareResolver<T> {
onResolve: (context: MiddlewareContext<T>) => MiddlewareContext<T>;
}
/**
* Describe the middleware that able to listen to the registering of a dependency in containers hierarchy
*/
export interface MiddlewareRegistrator<T> {
onRegister(context: MiddlewareContext<T>): void;
}
/**
* Describe the middleware that able to listen to the removing of a dependency in containers hierarchy
*/
export interface MiddlewareRemover<T> {
onRemove(context: MiddlewareContext<T>): void;
}