import { typeGuard } from "tsafe/typeGuard"; import type { NonPostableEvtLike } from "./NonPostableEvtLike"; import type { Handler } from "../Handler"; /** * Minimal interface that an object must implement to be a valid context argument * ( for interop between mismatching EVT versions ) * */ export interface CtxLike { done(result: Result): void; abort(error: Error): void; zz__addHandler(handler: Handler>, evt: NonPostableEvtLike): void; zz__removeHandler(handler: Handler>): void; } export namespace CtxLike { export function match(o: any): o is CtxLike { return ( typeGuard(o, true) && o instanceof Object && typeof o.done === "function" && typeof o.abort === "function" && typeof o.zz__addHandler === "function" && typeof o.zz__removeHandler === "function" ); } }