{"version":3,"sources":["../../src/shared/conditionalOperator.ts"],"names":["noOp","stream","conditionalOperator","condition","op","_args"],"mappings":";;;;;;;AAEA,MAAMA,IAAI,GAAOC,MAAJ,IAA8BA,MAA3C;;AA2BO,SAASC,mBAAT,CAELC,SAFK,EAEeC,EAFf,EAE0D;AAC/D,MAAID,SAAJ,EAAe;AACb,WAAOC,EAAP;AACD,GAFD,MAEO;AACL,WAAQ,CAAC,GAAGC,KAAJ,KACNL,IADF;AAED;AACF","sourcesContent":["import { OperatorFunction, Observable, ObservedValueOf } from 'rxjs';\n\nconst noOp = <T>(stream: Observable<T>) => stream;\n\ntype IsEqualTypes<L, R> = L extends R ? (R extends L ? true : never) : never;\n\ntype InputStreamValueType<\n  T extends (...args: unknown[]) => OperatorFunction<unknown, unknown>\n> = ObservedValueOf<Parameters<ReturnType<T>>[0]>;\n\ntype OutputStreamValueType<\n  T extends (...args: unknown[]) => OperatorFunction<unknown, unknown>\n> = ObservedValueOf<ReturnType<ReturnType<T>>>;\n\ntype IdentityOp<\n  T extends (...args: unknown[]) => OperatorFunction<unknown, unknown>\n> = (\n  ..._args: Parameters<T>\n) => OperatorFunction<InputStreamValueType<T>, InputStreamValueType<T>>;\n\ntype ConditionalOperatorReturnType<\n  Op extends (...args: unknown[]) => OperatorFunction<unknown, unknown>\n> = IsEqualTypes<\n  InputStreamValueType<Op>,\n  OutputStreamValueType<Op>\n> extends true\n  ? Op\n  : Op | IdentityOp<Op>;\n\nexport function conditionalOperator<\n  Op extends (...args: unknown[]) => OperatorFunction<unknown, unknown>\n>(condition: boolean, op: Op): ConditionalOperatorReturnType<Op> {\n  if (condition) {\n    return op as ConditionalOperatorReturnType<Op>;\n  } else {\n    return ((..._args: Parameters<Op>) =>\n      noOp) as ConditionalOperatorReturnType<Op>;\n  }\n}\n"],"file":"conditionalOperator.js"}