| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.safeIfNeeded = safeIfNeeded;
- exports.wrap = wrap;
- var _primordials = require("./primordials.cjs");
- const arrayIterators = new _primordials.NativeWeakMap();
- const SafeIteratorPrototype = (0, _primordials.ObjectCreate)(null, {
- next: {
- value: function next() {
- const arrayIterator = (0, _primordials.WeakMapPrototypeGet)(arrayIterators, this);
- return (0, _primordials.ArrayIteratorPrototypeNext)(arrayIterator);
- }
- },
- [_primordials.SymbolIterator]: {
- value: function values() {
- return this;
- }
- }
- });
- function safeIfNeeded(array) {
- if (array[_primordials.SymbolIterator] === _primordials.NativeArrayPrototypeSymbolIterator && _primordials.ArrayIteratorPrototype.next === _primordials.ArrayIteratorPrototypeNext) {
- return array;
- }
- const safe = (0, _primordials.ObjectCreate)(SafeIteratorPrototype);
- (0, _primordials.WeakMapPrototypeSet)(arrayIterators, safe, (0, _primordials.ArrayPrototypeSymbolIterator)(array));
- return safe;
- }
- const generators = new _primordials.NativeWeakMap();
- const DummyArrayIteratorPrototype = (0, _primordials.ObjectCreate)(_primordials.IteratorPrototype, {
- next: {
- value: function next() {
- const generator = (0, _primordials.WeakMapPrototypeGet)(generators, this);
- return (0, _primordials.GeneratorPrototypeNext)(generator);
- },
- writable: true,
- configurable: true
- }
- });
- for (const key of (0, _primordials.ReflectOwnKeys)(_primordials.ArrayIteratorPrototype)) {
- if (key === "next") {
- continue;
- }
- (0, _primordials.ObjectDefineProperty)(DummyArrayIteratorPrototype, key, (0, _primordials.ReflectGetOwnPropertyDescriptor)(_primordials.ArrayIteratorPrototype, key));
- }
- function wrap(generator) {
- const dummy = (0, _primordials.ObjectCreate)(DummyArrayIteratorPrototype);
- (0, _primordials.WeakMapPrototypeSet)(generators, dummy, generator);
- return dummy;
- }
|