UNPKG

iter-tools-es

Version:
40 lines (33 loc) 1.06 kB
const { asyncIterableCurry } = require('../../internal/async-iterable.js'); const { asyncSeqsToArray } = require('../../internal/async-any-seq.js'); const { __asyncWindowAhead } = require('../$window-ahead/async-window-ahead.js'); const { __startsWithAnySeq } = require('../$starts-with-any-seq/starts-with-any-seq.js'); async function __asyncIncludesAnySeq(iterable, seqs, same = Object.is) { const seqsArr = await asyncSeqsToArray(seqs); if (!seqsArr.length) return false; if (seqsArr.find(seq => !seq.length)) return true; const maxMatchLength = seqsArr.reduce((max, { length }) => Math.max(max, length), 1); for await (const buffer of __asyncWindowAhead(iterable, maxMatchLength)) { if (__startsWithAnySeq(buffer, seqsArr, same)) { return true; } } return false; } exports.__asyncIncludesAnySeq = __asyncIncludesAnySeq; const asyncIncludesAnySeq = /*#__PURE__*/asyncIterableCurry(__asyncIncludesAnySeq, { minArgs: 1, maxArgs: 2, reduces: true }); exports.asyncIncludesAnySeq = asyncIncludesAnySeq;