UNPKG

@luvies/lazy

Version:

A linq-like lazy iteration module that aims to support deno, node & browser

135 lines 5.54 kB
/** * Error messages. * @hidden */ export declare enum Errors { Empty = "Empty iterable", NonNumber = "Cannot perform function on a non-number value" } /** * A function that maps one type to another. */ export declare type MapFn<TSource, TResult> = (source: TSource) => TResult; /** * A function that takes in an accumulated result and the next value, and * outputs the next result. */ export declare type AggFn<T, U> = (acc: U, next: T) => U; /** * A function that takes in a value and outputs a boolean. */ export declare type BoolPredicate<T> = (source: T) => boolean; /** * A function that returns whether 2 values are equal. */ export declare type ComparerFn<T> = (a: T, b: T) => boolean; /** * An iterator callback function. */ export declare type CallbackFn<T> = (element: T, index: number) => void; /** * A function that creates a string from the given value. */ export declare type StrFn<T> = (element: T) => string; /** * @hidden */ export declare function aggregate<TSource>(iterable: Iterable<TSource>, agg: AggFn<TSource, TSource>): TSource; export declare function aggregate<TSource, TAcc>(iterable: Iterable<TSource>, agg: AggFn<TSource, TAcc>, seed: TAcc): TAcc; /** * @hidden */ export declare function all<TElement>(iterable: Iterable<TElement>, predicate: BoolPredicate<TElement>): boolean; /** * @hidden */ export declare function any<TElement>(iterable: Iterable<TElement>, predicate?: BoolPredicate<TElement>): boolean; /** * @hidden */ export declare function average<TElement>(iterable: Iterable<TElement>): TElement extends number ? number : never; export declare function average<TSource>(iterable: Iterable<TSource>, selector: MapFn<TSource, number>): number; /** * @hidden */ export declare function contains<TElement>(iterable: Iterable<TElement>, element: TElement, comparer?: ComparerFn<TElement>): boolean; /** * @hidden */ export declare function count<TElement>(iterable: Iterable<TElement>, predicate?: BoolPredicate<TElement>): number; /** * @hidden */ export declare function elementAt<TElement>(iterable: Iterable<TElement>, index: number): TElement; /** * @hidden */ export declare function elementAtOrDefault<TElement>(iterable: Iterable<TElement>, index: number, defaultValue: TElement): TElement; export declare function elementAtOrDefault<TElement, TDefault>(iterable: Iterable<TElement>, index: number, defaultValue: TDefault): TElement | TDefault; /** * @hidden */ export declare function first<TElement>(iterable: Iterable<TElement>, predicate?: BoolPredicate<TElement>): TElement; /** * @hidden */ export declare function firstOrDefault<TElement>(iterable: Iterable<TElement>, defaultValue: TElement, predicate?: BoolPredicate<TElement>): TElement; export declare function firstOrDefault<TElement, TDefault>(iterable: Iterable<TElement>, defaultValue: TDefault, predicate?: BoolPredicate<TElement>): TElement | TDefault; /** * @hidden */ export declare function forEach<TElement>(iterable: Iterable<TElement>, callbackFn: CallbackFn<TElement>): void; /** * @hidden */ export declare function iterableEquals<TElement>(firstIterable: Iterable<TElement>, secondIterable: Iterable<TElement>, comparer?: ComparerFn<TElement>): boolean; /** * @hidden */ export declare function last<TElement>(iterable: Iterable<TElement>, predicate?: BoolPredicate<TElement>): TElement; /** * @hidden */ export declare function lastOrDefault<TElement>(iterable: Iterable<TElement>, defaultValue: TElement, predicate?: BoolPredicate<TElement>): TElement; export declare function lastOrDefault<TElement, TDefault>(iterable: Iterable<TElement>, defaultValue: TDefault, predicate?: BoolPredicate<TElement>): TElement | TDefault; /** * @hidden */ export declare function max<TElement>(iterable: Iterable<TElement>): TElement extends number ? number : never; export declare function max<TSource>(iterable: Iterable<TSource>, selector: MapFn<TSource, number>): number; /** * @hidden */ export declare function min<TElement>(iterable: Iterable<TElement>): TElement extends number ? number : never; export declare function min<TSource>(iterable: Iterable<TSource>, selector: MapFn<TSource, number>): number; /** * @hidden */ export declare function resolveAll<TElement>(iterable: Iterable<TElement>): Promise<TElement extends PromiseLike<infer TResult> ? TResult[] : TElement[]>; /** * @hidden */ export declare function single<TElement>(iterable: Iterable<TElement>, predicate: BoolPredicate<TElement>): TElement; /** * @hidden */ export declare function singleOrDefault<TElement>(iterable: Iterable<TElement>, predicate: BoolPredicate<TElement>, defaultValue: TElement): TElement; export declare function singleOrDefault<TElement, TDefault>(iterable: Iterable<TElement>, predicate: BoolPredicate<TElement>, defaultValue: TDefault): TElement | TDefault; /** * @hidden */ export declare function stringJoin<TElement>(iterable: Iterable<TElement>, separator?: string, strFn?: StrFn<TElement>): string; /** * @hidden */ export declare function sum<TElement>(iterable: Iterable<TElement>): TElement extends number ? number : never; export declare function sum<TSource>(iterable: Iterable<TSource>, selector: MapFn<TSource, number>): number; /** * @hidden */ export declare function toArray<T>(iterable: Iterable<T>): T[]; /** * @hidden */ export declare function toMap<TSource, TKey, TElement = TSource>(iterable: Iterable<TSource>, keyFn: MapFn<TSource, TKey>, valueFn?: MapFn<TSource, TElement>): Map<TKey, TElement>; //# sourceMappingURL=aggregates.d.ts.map