UNPKG

@aimee-blue/ab-service-kit

Version:
9 lines (8 loc) 1.05 kB
import { OperatorFunction, ObservedValueOf } from 'rxjs'; declare type IsEqualTypes<L, R> = L extends R ? (R extends L ? true : never) : never; declare type InputStreamValueType<T extends (...args: unknown[]) => OperatorFunction<unknown, unknown>> = ObservedValueOf<Parameters<ReturnType<T>>[0]>; declare type OutputStreamValueType<T extends (...args: unknown[]) => OperatorFunction<unknown, unknown>> = ObservedValueOf<ReturnType<ReturnType<T>>>; declare type IdentityOp<T extends (...args: unknown[]) => OperatorFunction<unknown, unknown>> = (..._args: Parameters<T>) => OperatorFunction<InputStreamValueType<T>, InputStreamValueType<T>>; declare type ConditionalOperatorReturnType<Op extends (...args: unknown[]) => OperatorFunction<unknown, unknown>> = IsEqualTypes<InputStreamValueType<Op>, OutputStreamValueType<Op>> extends true ? Op : Op | IdentityOp<Op>; export declare function conditionalOperator<Op extends (...args: unknown[]) => OperatorFunction<unknown, unknown>>(condition: boolean, op: Op): ConditionalOperatorReturnType<Op>; export {};