geninq
Version:
A JavaScript version of the Linq library for Generators
46 lines (42 loc) • 1.52 kB
text/typescript
import { Build, Promised } from "./utils";
import "./select";
import "./array";
declare global {
interface Generator<T = unknown, TReturn = any, TNext = unknown> {
/**
* Returns the minimum value in a sequence of number values.
* @returns The minimum value in the sequence.
*/
min(this: Generator<number, TReturn, TNext>): number;
/**
* Invokes a transform function on each element of a generic
* sequence and returns the minimum resulting value.
* @param selector A transform function to apply to each element.
* @returns The minimum value in the sequence.
*/
min(selector: (item: T) => number): number;
}
interface AsyncGenerator<T = unknown, TReturn = any, TNext = unknown> {
/**
* Returns the minimum value in a sequence of number values.
* @returns The minimum value in the sequence.
*/
min(this: Generator<number, TReturn, TNext>): Promise<number>;
/**
* Invokes a transform function on each element of a generic
* sequence and returns the minimum resulting value.
* @param selector A transform function to apply to each element.
* @returns The minimum value in the sequence.
*/
min(selector: (item: T) => Promised<number>): Promise<number>;
}
}
Build(
"min",
function (selector = (i) => i as number) {
return Math.min(...this.select(selector).array());
},
async function (selector = (i) => i as number) {
return Math.min(...(await this.select(selector).array()));
}
);