iter-tools-es
Version:
The iterable toolbox
39 lines (31 loc) • 839 B
JavaScript
const {
asyncIterableCurry
} = require('../../internal/async-iterable.js');
const {
__asyncZipAll
} = require('../$zip-all/async-zip-all.js');
const {
__sliceFromStart
} = require('../$slice/slice.js');
const none = Symbol('none');
const zipAllConfig = {
filler: none
};
async function __asyncEqual(iterables, same = Object.is) {
if (iterables.length <= 1) return true;
for await (const stepValues of __asyncZipAll(iterables, zipAllConfig)) {
const firstValue = stepValues[0];
for (const value of __sliceFromStart(stepValues, 1)) {
if (!same(value, firstValue)) return false;
}
}
return true;
}
exports.__asyncEqual = __asyncEqual;
const asyncEqual = /*#__PURE__*/asyncIterableCurry(__asyncEqual, {
minArgs: 0,
maxArgs: 1,
variadic: true,
reduces: true
});
exports.asyncEqual = asyncEqual;