|
|
|
@ -678,21 +678,24 @@ function getFromSet( |
|
|
|
const makeIterator = (pair: boolean) => { |
|
|
|
const makeIterator = (pair: boolean) => { |
|
|
|
return function thisIter(this: any) { |
|
|
|
return function thisIter(this: any) { |
|
|
|
const iterable = raw.values(); |
|
|
|
const iterable = raw.values(); |
|
|
|
return { |
|
|
|
// Create an Iterator that inherits Iterator.prototype methods (map, filter, etc.)
|
|
|
|
[Symbol.iterator]() { |
|
|
|
// Wrap the iterator to proxy entries on-demand
|
|
|
|
|
|
|
|
const wrappedIterator = { |
|
|
|
|
|
|
|
next() { |
|
|
|
|
|
|
|
const n = iterable.next(); |
|
|
|
|
|
|
|
if (n.done) return n; |
|
|
|
|
|
|
|
const entry = ensureEntryProxy(n.value); |
|
|
|
return { |
|
|
|
return { |
|
|
|
next() { |
|
|
|
value: pair ? [entry, entry] : entry, |
|
|
|
const n = iterable.next(); |
|
|
|
done: false, |
|
|
|
if (n.done) return n; |
|
|
|
|
|
|
|
const entry = ensureEntryProxy(n.value); |
|
|
|
|
|
|
|
return { |
|
|
|
|
|
|
|
value: pair ? [entry, entry] : entry, |
|
|
|
|
|
|
|
done: false, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}; |
|
|
|
}; |
|
|
|
}, |
|
|
|
}, |
|
|
|
} as Iterable<any>; |
|
|
|
}; |
|
|
|
|
|
|
|
// Set the prototype to Iterator.prototype if available (ES2023+ Iterator Helpers)
|
|
|
|
|
|
|
|
if (typeof Iterator !== "undefined" && Iterator.prototype) { |
|
|
|
|
|
|
|
Object.setPrototypeOf(wrappedIterator, Iterator.prototype); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return wrappedIterator; |
|
|
|
}; |
|
|
|
}; |
|
|
|
}; |
|
|
|
}; |
|
|
|
if (key === "values" || key === "keys") return makeIterator(false); |
|
|
|
if (key === "values" || key === "keys") return makeIterator(false); |
|
|
|
|