diff --git a/sdk/js/alien-deepsignals/src/deepSignal.ts b/sdk/js/alien-deepsignals/src/deepSignal.ts index f1f08b20..19ce5c4d 100644 --- a/sdk/js/alien-deepsignals/src/deepSignal.ts +++ b/sdk/js/alien-deepsignals/src/deepSignal.ts @@ -678,21 +678,24 @@ function getFromSet( const makeIterator = (pair: boolean) => { return function thisIter(this: any) { const iterable = raw.values(); - return { - [Symbol.iterator]() { + // Create an Iterator that inherits Iterator.prototype methods (map, filter, etc.) + // 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 { - next() { - const n = iterable.next(); - if (n.done) return n; - const entry = ensureEntryProxy(n.value); - return { - value: pair ? [entry, entry] : entry, - done: false, - }; - }, + value: pair ? [entry, entry] : entry, + done: false, }; }, - } as Iterable; + }; + // 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);