UNPKG

proxydi

Version:

A typed hierarchical DI container that resolves circular dependencies via Proxy

28 lines (27 loc) 1.04 kB
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; }