UNPKG

@freemework/common

Version:

Common library of the Freemework Project.

16 lines (15 loc) 798 B
import { FException } from "../exception/index.js"; import { FExecutionContext } from "../execution_context/index.js"; /** Define some kind of Publish-Subscribe pattern. See https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern */ export interface FChannelSubscriber<TData, TEvent extends FChannelSubscriber.Event<TData> = FChannelSubscriber.Event<TData>> { addHandler(cb: FChannelSubscriber.Callback<TData, TEvent>): void; removeHandler(cb: FChannelSubscriber.Callback<TData, TEvent>): void; } export declare namespace FChannelSubscriber { interface Event<TData> { readonly data: TData; } interface Callback<TData, TEvent extends Event<TData> = Event<TData>> { (executionContext: FExecutionContext, event: TEvent | FException): Promise<void>; } }