UNPKG

ts-flex-query

Version:
8 lines (7 loc) 853 B
import { Expression } from '../core/expression'; import { PipeOperator } from '../core/pipe-operator'; import { IfPrimitive } from '../types/utils'; export type ObjectValueSelector<T = any> = (keyof T & string) | ((obj: Expression<T>) => Expression) | PipeOperator<T>; export type ObjectValueSelectorType<TObj, TSelector extends ObjectValueSelector> = TSelector extends keyof TObj ? TObj[TSelector] : TSelector extends PipeOperator<TObj, infer TOut> ? TOut : TSelector extends ((obj: Expression<any>) => Expression<infer TResult>) ? TResult : never; export type PrimitiveObjectValueSelector<TObj, TSelector extends ObjectValueSelector> = IfPrimitive<ObjectValueSelectorType<TObj, TSelector>, TSelector, [TObj, 'Selected value must be primitve.']>; export declare function createQueryFromObjectValueSelector(selector: ObjectValueSelector): PipeOperator;