UNPKG

fast-iterable

Version:

Provides LINQ-like fluent api operations for iterables and async iterables (ES2018+).

51 lines (50 loc) 2.43 kB
import { AnyIterable, AsyncMapper } from 'augmentative-iterable'; import { AsyncReducer, Comparer, Equality } from '../types/base'; import { AnyMapper, CompareProvider, ResolverType } from '../types-internal'; export declare type IngredientOpt = (predicate?: AnyMapper<any>) => AnyIterable<any>; export declare type Ingredient = (predicate: AnyMapper<any>) => AnyIterable<any>; export declare type ComparerIngredient = (comparer: Comparer<any>) => AnyIterable<any>; export declare type ResolverIngredient = (predicate?: AnyMapper<any>) => any; export declare type RequiredResolverIngredient = (predicate: AnyMapper<any>) => any; export declare type ReduceIngredient = (reducer: AsyncReducer<any, any>, initial: any) => any; export declare type ReduceAndMapIngredient = (reducer: AsyncReducer<any, any>, initial: any, result: AsyncMapper<any, any>) => any; export declare type PartitionIngredient = (size: number | Equality<any>) => AnyIterable<AnyIterable<any>>; export declare type ThresholdIngredient = (threshold: number) => AnyIterable<AnyIterable<any>>; export declare type IterateIngredient = (t: any) => any; export declare type ConcatIngredient = (this: AnyIterable<any>, ...iterables: Array<AnyIterable<any>>) => AnyIterable<any>; export declare type EmptyIngredient = () => AnyIterable<any>; export interface BasicIngredients { resolver: ResolverType; map: Ingredient; filter: Ingredient; takeWhile: Ingredient; forEach: RequiredResolverIngredient; iterate: IterateIngredient; iterateAll: IterateIngredient; toArray: ResolverIngredient; } export interface BasicReduceIngredients extends BasicIngredients { reduce: ReduceIngredient; reduceAndMap: ReduceAndMapIngredient; } export interface CombineIngredients extends BasicIngredients { flatten: IngredientOpt; } export interface GroupIngredients extends BasicReduceIngredients { partition: PartitionIngredient; } export interface DistinctIngredients extends BasicIngredients { partition: PartitionIngredient; filterOrAll: Ingredient | ResolverIngredient; hasLessOrExactly: ThresholdIngredient; reduce: ReduceIngredient; } export interface MinMaxIngredients extends BasicIngredients { first: ResolverIngredient; last: ResolverIngredient; } export interface ComparisonIngredients extends BasicIngredients { count: IngredientOpt; take: ThresholdIngredient; comparer: CompareProvider; }