ts-flex-query
Version:
Flexible and type-safe data queries
8 lines (7 loc) • 979 B
TypeScript
import { PipeOperator } from '../../core/pipe-operator';
import { MergeOutType } from './merge';
import { SchemaSpec, SchemaType, SpecificSchemaSpec, ValidSchemaSpec } from './query-schema';
import { RecordOutType, RecordSpec } from './record';
type GroupAndAggregateOutType<TIn, TSchema extends SchemaSpec, TAggregations extends RecordSpec<TIn[]> | undefined> = SchemaType<TIn, TSchema> extends Record<string, any> ? (undefined extends TAggregations ? SchemaType<TIn, TSchema> : MergeOutType<SchemaType<TIn, TSchema>, RecordOutType<TIn[], NonNullable<TAggregations>>>)[] : never;
export declare function groupAndAggregate<TIn, TSchema extends SpecificSchemaSpec<TIn, null>, TAggregations extends RecordSpec<TIn[]> | undefined>(groupValueSchema: TSchema extends infer T ? T extends ValidSchemaSpec<TIn, TSchema> ? TSchema : ValidSchemaSpec<TIn, TSchema> : never, aggregates?: TAggregations): PipeOperator<TIn[], GroupAndAggregateOutType<TIn, TSchema, TAggregations>>;
export {};