iter-tools-es
Version:
The iterable toolbox
37 lines (30 loc) • 782 B
JavaScript
const {
asyncIterableCurry
} = require('../../internal/async-iterable.js');
const {
defaultCompareOrder
} = require('../../internal/compare.js');
const {
__asyncPeekerate
} = require('../$peekerate/async-peekerate.js');
async function __asyncIsSorted(iterable, compare = defaultCompareOrder) {
const peekr = await __asyncPeekerate(iterable);
while (!peekr.done) {
const {
value
} = peekr;
await peekr.advance();
if (!peekr.done && compare(value, peekr.value) > 0) {
await peekr.return();
return false;
}
}
return true;
}
exports.__asyncIsSorted = __asyncIsSorted;
const asyncIsSorted = /*#__PURE__*/asyncIterableCurry(__asyncIsSorted, {
reduces: true,
minArgs: 0,
maxArgs: 1
});
exports.asyncIsSorted = asyncIsSorted;