import { IEnumerableFactory } from '../../types'; import { getIterableGenerator } from '../../utilities/utilityFunctions'; export function applyMin( factory: IEnumerableFactory, src: Iterable, keySelector: (item: TSource) => TKey, selector?: (item: TSource) => TResult ): TSource | TResult { if (!selector) { return factory .createBasicEnumerable(getIterableGenerator(src)) .aggregate((prev, curr) => (keySelector(prev) <= keySelector(curr) ? prev : curr)); } return factory .createBasicEnumerable(getIterableGenerator(src)) .select(selector) .aggregate((prev, curr) => (prev <= curr ? prev : curr)); }