UNPKG

geninq

Version:

A JavaScript version of the Linq library for Generators

34 lines (30 loc) 791 B
import { Build, Promised } from "./utils"; declare global { interface Generator<T = unknown, TReturn = any, TNext = unknown> { select<TResult>( selector: (item: T, index: number) => TResult ): Generator<TResult, TReturn, TNext>; } interface AsyncGenerator<T = unknown, TReturn = any, TNext = unknown> { select<TResult>( selector: (item: T, index: number) => Promised<TResult> ): AsyncGenerator<TResult, TReturn, TNext>; } } Build( "select", function* (selector) { let index = 0; for (const item of this) { yield selector(item, index); index++; } }, async function* (selector) { let index = 0; for await (const item of this) { yield await Promise.resolve(selector(item, index)); index++; } } );