@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
1 lines • 1.72 kB
Source Map (JSON)
{"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"}