MCPcopy
hub / github.com/webpack/webpack / compareIterables

Function compareIterables

lib/util/comparators.js:97–123  ·  view source on GitHub ↗
(elementComparator)

Source from the content-addressed store, hash-verified

95 * @returns {Comparator<Iterable<T>>} comparator for iterables of elements
96 */
97const compareIterables = (elementComparator) => {
98 const cacheEntry = compareIteratorsCache.get(elementComparator);
99 if (cacheEntry !== undefined) return cacheEntry;
100 /**
101 * Returns compare result.
102 * @param {Iterable<T>} a first value
103 * @param {Iterable<T>} b second value
104 * @returns {-1 | 0 | 1} compare result
105 */
106 const result = (a, b) => {
107 const aI = a[Symbol.iterator]();
108 const bI = b[Symbol.iterator]();
109 while (true) {
110 const aItem = aI.next();
111 const bItem = bI.next();
112 if (aItem.done) {
113 return bItem.done ? 0 : -1;
114 } else if (bItem.done) {
115 return 1;
116 }
117 const res = elementComparator(aItem.value, bItem.value);
118 if (res !== 0) return res;
119 }
120 };
121 compareIteratorsCache.set(elementComparator, result);
122 return result;
123};
124
125/**
126 * Compare two locations

Callers 4

compareToMethod · 0.85
ChunkGraph.jsFile · 0.85
compareChunksNaturalFunction · 0.85

Calls 2

getMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected