UNPKG

ts-flex-query

Version:
11 lines (10 loc) 1.19 kB
import { PipeOperator } from '../..'; import { publicFunctionContainers } from '../../functions/main'; import { FuncFields, UnionToIntersection } from '../../types/utils'; type FlattenedFunctions = { [TMember in FuncFields<UnionToIntersection<typeof publicFunctionContainers[keyof typeof publicFunctionContainers]>> & string]: UnionToIntersection<typeof publicFunctionContainers[keyof typeof publicFunctionContainers]>[TMember]; }; type PipeOperators<TIn, TArgs extends unknown[]> = TArgs extends [infer TFirst, ...infer TRest] ? [PipeOperator<TIn, TFirst>, ...PipeOperators<TIn, TRest>] : []; export declare function customFunc<TIn, TContainer extends Record<any, (...xs: any) => any>, TMember extends keyof TContainer & string>(container: TContainer, member: TMember, ...args: NoInfer<PipeOperators<TIn, Parameters<TContainer[TMember]>>>): TContainer[TMember] extends (...xs: any) => any ? PipeOperator<TIn, ReturnType<TContainer[TMember]>> : never; export declare function func<TIn, TFunc extends keyof FlattenedFunctions>(key: TFunc, ...args: NoInfer<PipeOperators<TIn, Parameters<FlattenedFunctions[TFunc]>>>): PipeOperator<TIn, ReturnType<FlattenedFunctions[TFunc]>>; export {};