mobx 6.13.4 → 6.13.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobx",
3
- "version": "6.13.4",
3
+ "version": "6.13.6",
4
4
  "description": "Simple, scalable state management.",
5
5
  "source": "src/mobx.ts",
6
6
  "main": "dist/index.js",
@@ -211,16 +211,11 @@ export class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillCh
211
211
  }
212
212
 
213
213
  entries() {
214
- let nextIndex = 0
215
- const keys = Array.from(this.keys())
216
- const values = Array.from(this.values())
214
+ const values = this.values()
217
215
  return makeIterableForSet<[T, T]>({
218
216
  next() {
219
- const index = nextIndex
220
- nextIndex += 1
221
- return index < values.length
222
- ? { value: [keys[index], values[index]], done: false }
223
- : { value: undefined, done: true }
217
+ const { value, done } = values.next()
218
+ return !done ? { value: [value, value], done } : { value: undefined, done }
224
219
  }
225
220
  })
226
221
  }
@@ -232,13 +227,13 @@ export class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillCh
232
227
  values(): SetIterator<T> {
233
228
  this.atom_.reportObserved()
234
229
  const self = this
235
- let nextIndex = 0
236
- const observableValues = Array.from(this.data_.values())
230
+ const values = this.data_.values()
237
231
  return makeIterableForSet({
238
232
  next() {
239
- return nextIndex < observableValues.length
240
- ? { value: self.dehanceValue_(observableValues[nextIndex++]), done: false }
241
- : { value: undefined, done: true }
233
+ const { value, done } = values.next()
234
+ return !done
235
+ ? { value: self.dehanceValue_(value), done }
236
+ : { value: undefined, done }
242
237
  }
243
238
  })
244
239
  }
@@ -1,5 +1,15 @@
1
+ import { getGlobal } from "../internal"
2
+
3
+ // safely get iterator prototype if available
4
+ const maybeIteratorPrototype = getGlobal().Iterator?.prototype || {}
5
+
1
6
  export function makeIterable<T, TReturn = unknown>(
2
7
  iterator: Iterator<T>
3
8
  ): IteratorObject<T, TReturn> {
4
- return Object.assign(Object.create(Iterator.prototype), iterator)
9
+ iterator[Symbol.iterator] = getSelf
10
+ return Object.assign(Object.create(maybeIteratorPrototype), iterator)
11
+ }
12
+
13
+ function getSelf() {
14
+ return this
5
15
  }