@luvies/lazy
Version:
A linq-like lazy iteration module that aims to support deno, node & browser
135 lines • 5.54 kB
TypeScript
/**
* 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