Skip to main content
Module

x/evt/lib/types/interfaces/StatefulReadonlyEvt.ts

💧EventEmitter's typesafe replacement
Go to Latest
File

export type Operator<T, U, CtxResult = any> = import("../Operator.ts").Operator<T, U, CtxResult>;
namespace Operator {
export type <T, U, CtxResult = any> = import("../Operator.ts").Operator.<T, U, CtxResult>;
}
type NonPostableEvt<T> = import("./NonPostableEvt.ts").NonPostableEvt<T>;type CtxLike<Result = any> = import("./CtxLike.ts").CtxLike<Result>;type StatefulEvt<T> = import("./StatefulEvt.ts").StatefulEvt<T>;type Evt<T> = import("./Evt.ts").Evt<T>;
export type StateDiff<T> = { prevState: T, newState: T };
export interface StatefulReadonlyEvt<T> extends NonPostableEvt<T> {
/** https://docs.evt.land/api/statefulevt#tostateless-ctx */ toStateless(ctx?: CtxLike): Evt<T>;
readonly state: T;
/** https://docs.evt.land/api/statefulevt#evtdiff */ readonly evtDiff: NonPostableEvt<StateDiff<T>>;
/** https://docs.evt.land/api/statefulevt#evtchange */ readonly evtChange: StatefulReadonlyEvt<T>;
/** https://docs.evt.land/api/statefulevt#evtchangediff */ readonly evtChangeDiff: NonPostableEvt<StateDiff<T>>;
/** https://docs.evt.land/api/statefulevt#pipe */ pipe(): StatefulEvt<T>;
pipe<U, CtxResult>( op: Operator.<T, U, CtxResult> ): StatefulEvt<U>; pipe<U extends T>( op: (data: T) => data is U ): StatefulEvt<U>; pipe( op: (data: T) => boolean ): StatefulEvt<T>;
pipe(ctx: CtxLike<any>): StatefulEvt<T>;
pipe<U, CtxResult>( ctx: CtxLike<any>, op: Operator.<T, U, CtxResult> ): StatefulEvt<U>; pipe<U extends T>( ctx: CtxLike<any>, op: (data: T) => data is U ): StatefulEvt<U>; pipe( ctx: CtxLike<any>, op: (data: T) => boolean ): StatefulEvt<T>;
pipe<B, C, CtxResultOp1, CtxResultOp2>( op1: Operator.<T, B, CtxResultOp1>, op2: Operator.<B, C, CtxResultOp2> ): StatefulEvt<C>; pipe<B, C extends B, CtxResult>( op1: Operator.<T, B, CtxResult>, op2: (data: B) => data is C ): StatefulEvt<C>; pipe<B, CtxResult>( op1: Operator.<T, B, CtxResult>, op2: (data: B) => boolean ): StatefulEvt<B>; pipe<B extends T, C, CtxResult>( op1: (data: T) => data is B, op2: Operator.<B, C, CtxResult> ): StatefulEvt<B>; pipe<B, CtxResult>( op1: (data: T) => boolean, op2: Operator.<T, B, CtxResult> ): StatefulEvt<B>; pipe<B extends T, C extends B>( op1: (data: T) => data is B, op2: (data: B) => data is C ): StatefulEvt<C>; pipe<B extends T>( op1: (data: T) => data is B, op2: (data: B) => boolean ): StatefulEvt<B>; pipe<B extends T>( op1: (data: T) => boolean, op2: (data: T) => data is B ): StatefulEvt<B>; pipe<T>( op1: (data: T) => boolean, op2: (data: T) => boolean ): StatefulEvt<T>;

pipe<B, C, D, CtxResultOp1, CtxResultOp2, CtxResultOp3>( op1: Operator.<T, B, CtxResultOp1>, op2: Operator.<B, C, CtxResultOp2>, op3: Operator.<C, D, CtxResultOp3> ): StatefulEvt<D>;
pipe<B, C, D, E, CtxResultOp1 = any, CtxResultOp2 = any, CtxResultOp3 = any, CtxResultOp4 = any>( op1: Operator.<T, B, CtxResultOp1>, op2: Operator.<B, C, CtxResultOp2>, op3: Operator.<C, D, CtxResultOp3>, op4: Operator.<D, E, CtxResultOp4> ): StatefulEvt<E>;
pipe<B, C, D, E, CtxResultOp1 = any, CtxResultOp2 = any, CtxResultOp3 = any, CtxResultOp4 = any>( op1: Operator.<T, B, CtxResultOp1>, op2: Operator.<B, C, CtxResultOp2>, op3: Operator.<C, D, CtxResultOp3>, op4: Operator.<D, E, CtxResultOp4> ): StatefulEvt<E>;
pipe<B, C, D, E, F, CtxResultOp1 = any, CtxResultOp2 = any, CtxResultOp3 = any, CtxResultOp4 = any, CtxResultOp5 = any>( op1: Operator.<T, B, CtxResultOp1>, op2: Operator.<B, C, CtxResultOp2>, op3: Operator.<C, D, CtxResultOp3>, op4: Operator.<D, E, CtxResultOp4>, op5: Operator.<E, F, CtxResultOp5> ): StatefulEvt<F>;

pipe<B, C, CtxResultOp1 = any, CtxResultOp2 = any>( op1: Operator<T, B, CtxResultOp2>, op2: Operator<B, C, CtxResultOp2> ): StatefulEvt<C>;
pipe<B, C, D, CtxResultOp1 = any, CtxResultOp2 = any, CtxResultOp3 = any>( op1: Operator<T, B, CtxResultOp1>, op2: Operator<B, C, CtxResultOp2>, op3: Operator<C, D, CtxResultOp3> ): StatefulEvt<D>;
pipe<B, C, D, E, CtxResultOp1 = any, CtxResultOp2 = any, CtxResultOp3 = any, CtxResultOp4 = any>( op1: Operator<T, B, CtxResultOp1>, op2: Operator<B, C, CtxResultOp2>, op3: Operator<C, D, CtxResultOp3>, op4: Operator<D, E, CtxResultOp4> ): StatefulEvt<E>;
pipe<B, C, D, E, F, CtxResultOp1 = any, CtxResultOp2 = any, CtxResultOp3 = any, CtxResultOp4 = any, CtxResultOp5 = any>( op1: Operator<T, B, CtxResultOp1>, op2: Operator<B, C, CtxResultOp2>, op3: Operator<C, D, CtxResultOp3>, op4: Operator<D, E, CtxResultOp4>, op5: Operator<E, F, CtxResultOp5> ): StatefulEvt<F>;
pipe( ...ops: [ Operator<T, any, any>, ...Operator<any, any, any>[] ] ): StatefulEvt<any>;
pipe<T>( ...ops: [ Operator<T, any, any>, ...Operator<any, any, any>[] ] ): StatefulEvt<any>;
}