-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
invokeOperator.ts
21 lines (16 loc) 路 1.03 KB
/
invokeOperator.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import * as _1 from "../types/Operator.ts";
/**
* Invoke any type of stateless operator and return as if it was a f位.
* Intended to be used alongside Evt.prototype.getStatelessOp()
*/
export function invokeOperator<T, U, CtxResult>(op: _1.Operator.f位.Stateless<T, U, CtxResult>, data: T, isPost?: true): _1.Operator.f位.Result<U, CtxResult>;
export function invokeOperator<T, U extends T>(op: (data: T) => data is U, data: T): _1.Operator.f位.Result<U, never>;
export function invokeOperator<T>(op: (data: T) => boolean, data: T): _1.Operator.f位.Result<T, never>;
export function invokeOperator<T, U, CtxResult>(op: _1.Operator.Stateless<T, U, CtxResult>, data: T, isPost?: true): _1.Operator.f位.Result<U, CtxResult>;
export function invokeOperator<T>(op: _1.Operator.Stateless<T, any, any>, data: T, isPost?: true): _1.Operator.f位.Result<any, any> | _1.Operator.f位.Result<any, never> {
const result = op(data, undefined, isPost);
return _1.z_f1.f位_Result_match(result) ?
result :
!!result ? [data] : null
;
}