All files async-map-sort.js

100% Statements 9/9
100% Branches 1/1
100% Functions 1/1
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 361x 1x 1x 1x                                         11x 10x 9x   9x           1x  
const { asyncMap } = require('./async-map'),
	{ asyncSort } = require('./async-sort'),
	{ compareByUnicode } = require('./helpers'),
	{ validateIsIterable, validateIsFunction } = require('./validation');
 
/**
 * Async Map Sort
 *
 * Map asynchronously, then sort asynchronously
 * (although you should use a synchronous function here if possible)
 * then resolve
 * alternatively reject at the first error
 * @async
 * @param {any[]} iterable
 * @param {Function} mappingFunction - mappingFunction(currentValue, index, array)
 * @param {Function} [comparisonFunction=compareByUnicode]
 * @return {Promise<any[]>}
 * @throws {TypeError}
 */
async function asyncMapSort(
	iterable,
	mappingFunction,
	comparisonFunction = compareByUnicode
) {
	validateIsIterable(iterable);
	validateIsFunction(mappingFunction);
	validateIsFunction(comparisonFunction);
 
	return asyncSort(
		await asyncMap(iterable, mappingFunction),
		comparisonFunction
	);
}
 
module.exports = { asyncMapSort };