@softwareventures/maintain-project
Version:
Automatically create and maintain TypeScript projects with standard settings for Software Ventures Limited
70 lines • 2.01 kB
JavaScript
export async function* filter(iterable, predicate) {
for await (const element of iterable) {
if (await predicate(element)) {
yield element;
}
}
}
export function asyncFilter(iterable, predicate) {
return filter(iterable, predicate);
}
export function filterFn(predicate) {
return iterable => filter(iterable, predicate);
}
export function asyncFilterFn(predicate) {
return filterFn(predicate);
}
export function exclude(iterable, predicate) {
return filter(iterable, async (element) => !(await predicate(element)));
}
export const asyncExclude = exclude;
export function excludeFn(predicate) {
return iterable => exclude(iterable, predicate);
}
export const asyncExcludeFn = excludeFn;
export async function* excludeNull(iterable) {
for await (const element of iterable) {
if (element != null) {
yield element;
}
}
}
export const asyncExcludeNull = excludeNull;
export async function* map(iterable, f) {
for await (const element of iterable) {
yield await f(element);
}
}
export const asyncMap = map;
export function mapFn(f) {
return iterable => map(iterable, f);
}
export const asyncMapFn = mapFn;
export async function* asyncConcatMap(iterable, f) {
for await (const a of iterable) {
for await (const b of f(a)) {
yield b;
}
}
}
export function asyncConcatMapFn(f) {
return iterable => asyncConcatMap(iterable, f);
}
export async function asyncFold(iterable, f, initial) {
let accumulator = initial;
for await (const element of iterable) {
accumulator = await f(accumulator, element);
}
return accumulator;
}
export function asyncFoldFn(f, initial) {
return async (iterable) => asyncFold(iterable, f, initial);
}
export async function combineAsync(iterable) {
const result = [];
for await (const element of iterable) {
result.push(element);
}
return result;
}
//# sourceMappingURL=async-iterable.js.map