import { ProxyDiContainer } from '../ProxyDiContainer'; import { DependencyId, ContainerizedDependency } from '../types'; export type MiddlewareContext = { container: ProxyDiContainer; dependencyId: DependencyId; dependency: T & ContainerizedDependency; }; export interface MiddlewareEvent { register: (context: MiddlewareContext) => void; remove: (context: MiddlewareContext) => void; resolve: (context: MiddlewareContext) => MiddlewareContext; } export interface MiddlewareResolver { onResolve: (context: MiddlewareContext) => MiddlewareContext; } /** * Describe the middleware that able to listen to the registering of a dependency in containers hierarchy */ export interface MiddlewareRegistrator { onRegister(context: MiddlewareContext): void; } /** * Describe the middleware that able to listen to the removing of a dependency in containers hierarchy */ export interface MiddlewareRemover { onRemove(context: MiddlewareContext): void; }