geninq
Version:
A JavaScript version of the Linq library for Generators
28 lines (24 loc) • 628 B
text/typescript
import { Build, Promised } from "./utils";
declare global {
interface Generator<T = unknown, TReturn = any, TNext = unknown> {
prepend<TItem>(item: TItem): Generator<TItem | T, TNext, TReturn>;
}
interface AsyncGenerator<T = unknown, TReturn = any, TNext = unknown> {
prepend<TItem>(item: Promised<TItem>): AsyncGenerator<T | TItem, TNext, TReturn>;
}
}
Build(
"prepend",
function* (extra) {
yield extra;
for (const item of this) {
yield item;
}
},
async function* (extra) {
yield await Promise.resolve(extra);
for await (const item of this) {
yield item;
}
}
);