UNPKG

@codibre/fluent-iterable

Version:

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

45 lines (44 loc) 3.26 kB
import { AsyncMapper, Mapper } from 'augmentative-iterable'; import { Comparer } from '../base'; export interface TopFunction<T> { /** * Calculates the top element of the iterable using a projection and a comparer. This is a resolving operation, will cause a full loop through all the elements of the iterable.<br> * Examples:<br> * * `fluent(['anchor', 'almond', 'bound', 'alpine']).top(word => word.length, (a, b) => b - a)` returns *bound*, the shortest word in the iterable * * `fluent(['anchor', 'almond', 'bound', 'alpine']).top(word => word.charCodeAt(0), (a, b) => a - b)` returns *bound*, latest word in the lexicographical order considering the first character only * @typeparam R The type of the projected elements used for comparison. * @param mapper The function which projects the elements of the iterable into comparable. * @param comparer The comparison function. * @returns The top of the iterable's projected elements. */ <R>(mapper: Mapper<T, R>, comparer: Comparer<R>): T | undefined; /** * Calculates the top element of the iterable using a projection and a comparer. This is a resolving operation, will cause a full loop through all the elements of the iterable.<br> * Examples:<br> * * `fluent(['anchor', 'almond', 'bound', 'alpine']).top(word => word.length, (a, b) => b - a)` returns *bound*, the shortest word in the iterable * * `fluent(['anchor', 'almond', 'bound', 'alpine']).top(word => word.charCodeAt(0), (a, b) => a - b)` returns *bound*, latest word in the lexicographical order considering the first character only * @typeparam R The type of the projected elements used for comparison. * @param mapper The function which projects the elements of the iterable into comparable. * @param comparer The comparison function. * @returns The top of the iterable's projected elements. */ <R extends keyof T>(mapper: R, comparer: Comparer<T[R]>): T | undefined; } export interface AsyncTopFunction<T> { /** * Calculates the top element of the iterable using an asynchronous projection and a comparer. This is a resolving operation, will cause a full loop through all the elements of the iterable. * @typeparam R The type of the projected elements used for comparison. * @param mapper The asynchronous function which projects the elements of the iterable into comparable. * @param comparer The comparison function. * @returns A promise of the top of the iterable's projected elements. */ <R>(mapper: AsyncMapper<T, R>, comparer: Comparer<R>): Promise<T | undefined>; /** * Calculates the top element of the iterable using an asynchronous projection and a comparer. This is a resolving operation, will cause a full loop through all the elements of the iterable. * @typeparam R The type of the projected elements used for comparison. * @param mapper The asynchronous function which projects the elements of the iterable into comparable. * @param comparer The comparison function. * @returns A promise of the top of the iterable's projected elements. */ <R extends keyof T>(mapper: T, comparer: Comparer<T[R]>): Promise<T | undefined>; }