Skip to content

Commit

Permalink
Partial rename to async
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolas-van committed Dec 28, 2023
1 parent cb6e02b commit 232f23d
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 66 deletions.
16 changes: 8 additions & 8 deletions modern-async.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ declare module "Queue" {
cancelAllPending(): number;
}
}
declare module "every" {
export default every;
function every<V>(iterable: Iterable<V> | AsyncIterable<V>, iteratee: (value: V, index: number, iterable: Iterable<V> | AsyncIterable<V>) => Promise<boolean> | boolean, queueOrConcurrency?: Queue | number): Promise<boolean>;
declare module "asyncEvery" {
export default asyncEvery;
function asyncEvery<V>(iterable: Iterable<V> | AsyncIterable<V>, iteratee: (value: V, index: number, iterable: Iterable<V> | AsyncIterable<V>) => Promise<boolean> | boolean, queueOrConcurrency?: Queue | number): Promise<boolean>;
import Queue from "Queue";
}
declare module "toArray" {
Expand All @@ -77,9 +77,9 @@ declare module "filterGenerator" {
function filterGenerator<V>(iterable: Iterable<V> | AsyncIterable<V>, iteratee: (value: V, index: number, iterable: Iterable<V> | AsyncIterable<V>) => Promise<boolean> | boolean, queueOrConcurrency?: Queue | number, ordered?: boolean): AsyncIterable<V>;
import Queue from "Queue";
}
declare module "filter" {
export default filter;
function filter<V>(iterable: Iterable<V> | AsyncIterable<V>, iteratee: (value: V, index: number, iterable: Iterable<V> | AsyncIterable<V>) => Promise<boolean> | boolean, queueOrConcurrency?: Queue | number): Promise<V[]>;
declare module "asyncFilter" {
export default asyncFilter;
function asyncFilter<V>(iterable: Iterable<V> | AsyncIterable<V>, iteratee: (value: V, index: number, iterable: Iterable<V> | AsyncIterable<V>) => Promise<boolean> | boolean, queueOrConcurrency?: Queue | number): Promise<V[]>;
import Queue from "Queue";
}
declare module "find" {
Expand Down Expand Up @@ -177,8 +177,8 @@ declare module "modern-async" {
export { default as delay } from "delay";
export { default as delayCancellable } from "delayCancellable";
export { default as Delayer } from "Delayer";
export { default as every } from "every";
export { default as filter } from "filter";
export { default as asyncEvery } from "asyncEvery";
export { default as asyncFilter } from "asyncFilter";
export { default as filterGenerator } from "filterGenerator";
export { default as find } from "find";
export { default as findIndex } from "findIndex";
Expand Down
8 changes: 4 additions & 4 deletions src/every.mjs → src/asyncEvery.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ import findIndex from './findIndex.mjs'
* if a least one of them doesn't pass it. That promise will be rejected if one of the truth test throws
* an exception.
* @example
* import { every, sleep } from 'modern-async'
* import { asyncEvery, sleep } from 'modern-async'
*
* const array = [1, 2, 3]
*
* const result = await every(array, async (v) => {
* const result = await asyncEvery(array, async (v) => {
* // these calls will be performed in parallel with a maximum of 2
* // concurrent calls
* await sleep(10) // waits 10ms
Expand All @@ -42,7 +42,7 @@ import findIndex from './findIndex.mjs'
* console.log(result) // prints true
* // total processing time should be ~ 20ms
*/
async function every (iterable, iteratee, queueOrConcurrency = 1) {
async function asyncEvery (iterable, iteratee, queueOrConcurrency = 1) {
assert(typeof iteratee === 'function', 'iteratee must be a function')
iteratee = asyncWrap(iteratee)
const index = await findIndex(iterable, async (value, index, iterable) => {
Expand All @@ -52,4 +52,4 @@ async function every (iterable, iteratee, queueOrConcurrency = 1) {
return result
}

export default every
export default asyncEvery
58 changes: 29 additions & 29 deletions src/every.test.mjs → src/asyncEvery.test.mjs
Original file line number Diff line number Diff line change
@@ -1,100 +1,100 @@

import { expect, test } from '@jest/globals'
import every from './every.mjs'
import asyncEvery from './asyncEvery.mjs'
import Deferred from './Deferred.mjs'
import { range } from 'itertools'
import delay from './delay.mjs'

// eslint-disable-next-line require-jsdoc
class TestError extends Error {}

test('every compatibility', async () => {
test('asyncEvery compatibility', async () => {
let d = new Deferred()
let p = every([...range(3)], async (v) => {
let p = asyncEvery([...range(3)], async (v) => {
await d.promise
return true
}, 1)
d.resolve()
expect(await p).toBe([...range(3)].every((v) => true))

d = new Deferred()
p = every([...range(3)], async (v) => {
p = asyncEvery([...range(3)], async (v) => {
await d.promise
return v !== 2
}, 1)
d.resolve()
expect(await p).toBe([...range(3)].every((v) => v !== 2))

d = new Deferred()
p = every([...range(3)], async (v) => {
p = asyncEvery([...range(3)], async (v) => {
await d.promise
return false
}, 1)
d.resolve()
expect(await p).toBe([...range(3)].every((v) => false))

d = new Deferred()
p = every([], async (v) => {
p = asyncEvery([], async (v) => {
await d.promise
return false
}, 1)
d.resolve()
expect(await p).toBe([].every((v) => false))

d = new Deferred()
p = every([], async (v) => {
p = asyncEvery([], async (v) => {
await d.promise
return true
}, 1)
d.resolve()
expect(await p).toBe([].every((v) => true))
})

test('every parallel', async () => {
test('asyncEvery parallel', async () => {
let d = new Deferred()
let p = every([...range(3)], async (v) => {
let p = asyncEvery([...range(3)], async (v) => {
await d.promise
return true
}, 10)
d.resolve()
expect(await p).toBe([...range(3)].every((v) => true))

d = new Deferred()
p = every([...range(3)], async (v) => {
p = asyncEvery([...range(3)], async (v) => {
await d.promise
return v !== 2
}, 10)
d.resolve()
expect(await p).toBe([...range(3)].every((v) => v !== 2))

d = new Deferred()
p = every([...range(3)], async (v) => {
p = asyncEvery([...range(3)], async (v) => {
await d.promise
return false
}, 10)
d.resolve()
expect(await p).toBe([...range(3)].every((v) => false))

d = new Deferred()
p = every([], async (v) => {
p = asyncEvery([], async (v) => {
await d.promise
return false
}, 10)
d.resolve()
expect(await p).toBe([].every((v) => false))

d = new Deferred()
p = every([], async (v) => {
p = asyncEvery([], async (v) => {
await d.promise
return true
}, 10)
d.resolve()
expect(await p).toBe([].every((v) => true))
})

test('every first in time', async () => {
test('asyncEvery first in time', async () => {
const ds = [...range(3)].map(() => new Deferred())
const p = every(range(3), async (v, i) => {
const p = asyncEvery(range(3), async (v, i) => {
await ds[i]
return false
}, 3)
Expand All @@ -103,9 +103,9 @@ test('every first in time', async () => {
expect(res).toBe(false)
})

test('every error', async () => {
test('asyncEvery error', async () => {
const callList = [...range(3)].map(() => 0)
const p = every([...range(3)], async (v, i) => {
const p = asyncEvery([...range(3)], async (v, i) => {
callList[i] += 1
if (i === 1) {
throw new TestError()
Expand All @@ -124,12 +124,12 @@ test('every error', async () => {
expect(callList[2]).toStrictEqual(0)
})

test('every infinite concurrency all pass', async () => {
test('asyncEvery infinite concurrency all pass', async () => {
const callCount = {}
;[...range(3)].forEach((i) => { callCount[i] = 0 })
const d = new Deferred()
const ds = [...range(3)].map(() => new Deferred())
const p = every([...range(3)], async (v, i) => {
const p = asyncEvery([...range(3)], async (v, i) => {
callCount[i] += 1
ds[i].resolve()
await d.promise
Expand All @@ -147,12 +147,12 @@ test('every infinite concurrency all pass', async () => {
expect(callCount[2]).toBe(1)
})

test('every infinite concurrency no all pass', async () => {
test('asyncEvery infinite concurrency no all pass', async () => {
const callCount = {}
;[...range(3)].forEach((i) => { callCount[i] = 0 })
const d = new Deferred()
const ds = [...range(3)].map(() => new Deferred())
const p = every([...range(3)], async (v, i) => {
const p = asyncEvery([...range(3)], async (v, i) => {
callCount[i] += 1
ds[i].resolve()
await d.promise
Expand All @@ -174,8 +174,8 @@ test('every infinite concurrency no all pass', async () => {
expect(callCount[2]).toBe(1)
})

test('every infinite concurrency error', async () => {
const p = every([...range(3)], async (v, i) => {
test('asyncEvery infinite concurrency error', async () => {
const p = asyncEvery([...range(3)], async (v, i) => {
if (i === 1) {
throw new TestError()
}
Expand All @@ -191,12 +191,12 @@ test('every infinite concurrency error', async () => {
await delay()
})

test('every concurrency 1 all pass', async () => {
test('asyncEvery concurrency 1 all pass', async () => {
const callCount = {}
;[...range(3)].forEach((i) => { callCount[i] = 0 })
const d = new Deferred()
const ds = [...range(3)].map(() => new Deferred())
const p = every([...range(3)], async (v, i) => {
const p = asyncEvery([...range(3)], async (v, i) => {
callCount[i] += 1
ds[i].resolve()
await d.promise
Expand All @@ -214,12 +214,12 @@ test('every concurrency 1 all pass', async () => {
expect(callCount[2]).toBe(1)
})

test('every concurrency 1 no all pass', async () => {
test('asyncEvery concurrency 1 no all pass', async () => {
const callCount = {}
;[...range(3)].forEach((i) => { callCount[i] = 0 })
const d = new Deferred()
const ds = [...range(3)].map(() => new Deferred())
const p = every([...range(3)], async (v, i) => {
const p = asyncEvery([...range(3)], async (v, i) => {
callCount[i] += 1
ds[i].resolve()
await d.promise
Expand All @@ -241,9 +241,9 @@ test('every concurrency 1 no all pass', async () => {
expect(callCount[2]).toBe(0)
})

test('every concurrency 1 error', async () => {
test('asyncEvery concurrency 1 error', async () => {
const callList = [...range(3)].map(() => 0)
const p = every([...range(3)], async (v, i) => {
const p = asyncEvery([...range(3)], async (v, i) => {
callList[i] += 1
if (i === 1) {
throw new TestError()
Expand Down
8 changes: 4 additions & 4 deletions src/filter.mjs → src/asyncFilter.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ import filterGenerator from './filterGenerator.mjs'
* @returns {Promise<any[]>} A promise that will be resolved with an array containing all the values that passed
* the truth test. This promise will be rejected if any of the `iteratee` calls throws an exception.
* @example
* import { filter, sleep } from 'modern-async'
* import { asyncFilter, sleep } from 'modern-async'
*
* const array = [1, 2, 3]
* const result = await filter(array, async (v) => {
* const result = await asyncFilter(array, async (v) => {
* // these calls will be performed in parallel with a maximum of 2
* // concurrent calls
* await sleep(10) // waits 10ms
Expand All @@ -36,8 +36,8 @@ import filterGenerator from './filterGenerator.mjs'
* console.log(result) // prints [1, 3]
* // total processing time should be ~ 20ms
*/
async function filter (iterable, iteratee, queueOrConcurrency = 1) {
async function asyncFilter (iterable, iteratee, queueOrConcurrency = 1) {
return await toArray(filterGenerator(iterable, iteratee, queueOrConcurrency))
}

export default filter
export default asyncFilter
Loading

0 comments on commit 232f23d

Please sign in to comment.