import { IDispatch, IDispatchConfig } from "./IDispatch"; import { ILogItem } from "./ILogItem"; import { LogLevel } from "./LogLevel"; export abstract class Dispatch implements IDispatch { children: IDispatch[] = []; constructor(config: IDispatchConfig = {}) { } process(item: ILogItem): void { this.output(item); } output(item: ILogItem): void { for (const dispatch of this.children) { dispatch.process(item); } } chain(dispatch: IDispatch): Dispatch { this.children.push(dispatch); return this; } }