All files async-sort.js

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

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 261x 1x 1x                           16x 15x   15x   14x     1x  
const { validateIsFunction, validateIsIterable } = require('./validation'),
	{ asyncQuickSort } = require('./async-quick-sort'),
	{ compareByUnicode } = require('./helpers');
 
/**
 * Async Sort
 *
 * Asynchronously sorts and resolves when fully sorted
 * note that the object is sorted in place and no copy is made
 * @async
 * @param {any[]} iterable
 * @param {Function} [compare=compareByUnicode] - default is sort by item's unicode value
 * @return {Promise<iterable>} returns original iterable
 * @throws {TypeError}
 */
async function asyncSort(iterable, compare = compareByUnicode) {
	validateIsIterable(iterable);
	validateIsFunction(compare);
 
	await asyncQuickSort(iterable, 0, iterable.length - 1, compare);
 
	return iterable;
}
 
module.exports = { asyncSort };