@kev_nz/async-tools
Advanced tools
Comparing version
{ | ||
"name": "@kev_nz/async-tools", | ||
"version": "1.0.1", | ||
"description": "Async tools", | ||
"version": "1.0.2", | ||
"description": "Async tools - a collection of utility functions for working with async/await code.", | ||
"main": "src/index.js", | ||
"files": [ | ||
"/src" | ||
], | ||
"scripts": { | ||
"test": "jest" | ||
"test": "jest", | ||
"cover": "jest --coverage", | ||
"coverage": "jest --coverage --coverageReporters=text-lcov | coveralls", | ||
"predocs": " jest --coverage --coverageDirectory=./dist/coverage ", | ||
"docs": "publisher" | ||
}, | ||
@@ -34,2 +41,3 @@ "repository": { | ||
"@kev_nz/publisher": "^3.0.1", | ||
"coveralls": "^3.0.3", | ||
"eslint": "^5.16.0", | ||
@@ -36,0 +44,0 @@ "jest": "^24.6.0" |
# Async Tools | ||
[](https://badge.fury.io/js/%40kev_nz%2Fasync-tools)  [](https://coveralls.io/github/Kevnz/async-tools?branch=master) | ||
This is a collection of utility functions for working with async/await code. | ||
@@ -132,1 +134,6 @@ | ||
``` | ||
### Test Coverage | ||
* [Coveralls](https://coveralls.io/github/Kevnz/async-tools?branch=master) | ||
* [Coverage Results](https://kevinisom.info/async-tools/coverage) |
@@ -22,3 +22,3 @@ const mapper = require('../mapper') | ||
const end = Date.now() | ||
expect(end - start).toBeLessThan(20) | ||
expect(end - start).toBeLessThan(50) | ||
expect(chain[0]).toBe(100) | ||
@@ -69,3 +69,5 @@ expect(chain[1]).toBe(200) | ||
if (executing > 3) { | ||
throw new Error(`Currently ${executing} functions running`) | ||
return Promise.reject( | ||
new Error(`Currently ${executing} functions running`) | ||
) | ||
} | ||
@@ -83,2 +85,20 @@ executing++ | ||
}) | ||
it('should throw an error', async () => { | ||
const items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | ||
const limiter = async (item, index) => { | ||
if (index > 3) { | ||
return Promise.reject(new Error(`Over 3`)) | ||
} | ||
await delay(10) | ||
return item * 100 | ||
} | ||
expect(mapper(items, limiter, 1)).rejects.toThrow('Over 3') | ||
try { | ||
await mapper(items, limiter, 1) | ||
expect(true).toBe(false) | ||
} catch (err) { | ||
expect(err.message).toBe('Over 3') | ||
} | ||
}) | ||
}) |
@@ -31,14 +31,16 @@ const mapper = (iterable, mappingFunction, concurrency = Infinity) => | ||
return Promise.resolve(nextItem.value) | ||
.then(element => mappingFunction(element, i)) | ||
.then( | ||
value => { | ||
results[i] = value | ||
resolvingCount-- | ||
return next() | ||
}, | ||
error => { | ||
.then(async element => { | ||
try { | ||
return await mappingFunction(element, i) | ||
} catch (err) { | ||
isRejected = true | ||
return reject(error) | ||
return reject(err) | ||
} | ||
) | ||
}) | ||
.then(value => { | ||
results[i] = value | ||
resolvingCount-- | ||
return next() | ||
}) | ||
} | ||
@@ -45,0 +47,0 @@ |
139
5.3%16034
-12.71%5
25%15
-28.57%341
-14.75%