123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 'use strict';
- var $ = require('../internals/export');
- var global = require('../internals/global');
- var anInstance = require('../internals/an-instance');
- var isCallable = require('../internals/is-callable');
- var getPrototypeOf = require('../internals/object-get-prototype-of');
- var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
- var fails = require('../internals/fails');
- var hasOwn = require('../internals/has-own-property');
- var wellKnownSymbol = require('../internals/well-known-symbol');
- var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
- var IS_PURE = require('../internals/is-pure');
- var TO_STRING_TAG = wellKnownSymbol('toStringTag');
- var $TypeError = TypeError;
- var NativeIterator = global.Iterator;
- // FF56- have non-standard global helper `Iterator`
- var FORCED = IS_PURE
- || !isCallable(NativeIterator)
- || NativeIterator.prototype !== IteratorPrototype
- // FF44- non-standard `Iterator` passes previous tests
- || !fails(function () { NativeIterator({}); });
- var IteratorConstructor = function Iterator() {
- anInstance(this, IteratorPrototype);
- if (getPrototypeOf(this) === IteratorPrototype) throw $TypeError('Abstract class Iterator not directly constructable');
- };
- if (!hasOwn(IteratorPrototype, TO_STRING_TAG)) {
- createNonEnumerableProperty(IteratorPrototype, TO_STRING_TAG, 'Iterator');
- }
- if (FORCED || !hasOwn(IteratorPrototype, 'constructor') || IteratorPrototype.constructor === Object) {
- createNonEnumerableProperty(IteratorPrototype, 'constructor', IteratorConstructor);
- }
- IteratorConstructor.prototype = IteratorPrototype;
- // `Iterator` constructor
- // https://github.com/tc39/proposal-iterator-helpers
- $({ global: true, constructor: true, forced: FORCED }, {
- Iterator: IteratorConstructor
- });
|