eslint-rules/src/polyfill.ts
2023-08-24 07:43:35 -04:00

60 lines
1.2 KiB
TypeScript

// es-iterator-helpers/Iterator.prototype.filter
export function* filter<T>(
iterable: Iterable<T>,
predicate: (value: T) => boolean,
): Iterable<T> {
for (const value of iterable) {
if (predicate(value)) {
yield value;
}
}
}
// es-iterator-helpers/Iterator.prototype.forEach
export function forEach<T>(iterable: Iterable<T>, callback: (value: T) => void) {
for (const value of iterable) {
callback(value);
}
}
// es-iterator-helpers/Iterator.prototype.some
export function some<T>(
iterable: Iterable<T>,
predicate: (value: T) => boolean,
): boolean {
for (const value of iterable) {
if (predicate(value)) {
return true;
}
}
return false;
}
// es-iterator-helpers/Iterator.prototype.find
export function find<T>(
iterable: Iterable<T>,
predicate: (value: T) => boolean,
): T | undefined {
for (const value of iterable) {
if (predicate(value)) {
return value;
}
}
}
// es-iterator-helpers/Iterator.from
export function from<T>(iterable: Iterable<T>) {
return iterable;
}
// es-iterator-helpers/Iterator.prototype.map
export function* map<T, U>(
iterable: Iterable<T>,
callback: (value: T) => U,
): Iterable<U> {
for (const value of iterable) {
yield callback(value);
}
}