[6a3a178] | 1 | 'use strict';
|
---|
| 2 | // https://github.com/tc39/proposal-iterator-helpers
|
---|
| 3 | var $ = require('../internals/export');
|
---|
| 4 | var global = require('../internals/global');
|
---|
| 5 | var anInstance = require('../internals/an-instance');
|
---|
| 6 | var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
---|
| 7 | var fails = require('../internals/fails');
|
---|
| 8 | var has = require('../internals/has');
|
---|
| 9 | var wellKnownSymbol = require('../internals/well-known-symbol');
|
---|
| 10 | var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
|
---|
| 11 | var IS_PURE = require('../internals/is-pure');
|
---|
| 12 |
|
---|
| 13 | var ITERATOR = wellKnownSymbol('iterator');
|
---|
| 14 | var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
---|
| 15 |
|
---|
| 16 | var NativeIterator = global.Iterator;
|
---|
| 17 |
|
---|
| 18 | // FF56- have non-standard global helper `Iterator`
|
---|
| 19 | var FORCED = IS_PURE
|
---|
| 20 | || typeof NativeIterator != 'function'
|
---|
| 21 | || NativeIterator.prototype !== IteratorPrototype
|
---|
| 22 | // FF44- non-standard `Iterator` passes previous tests
|
---|
| 23 | || !fails(function () { NativeIterator({}); });
|
---|
| 24 |
|
---|
| 25 | var IteratorConstructor = function Iterator() {
|
---|
| 26 | anInstance(this, IteratorConstructor);
|
---|
| 27 | };
|
---|
| 28 |
|
---|
| 29 | if (IS_PURE) {
|
---|
| 30 | IteratorPrototype = {};
|
---|
| 31 | createNonEnumerableProperty(IteratorPrototype, ITERATOR, function () {
|
---|
| 32 | return this;
|
---|
| 33 | });
|
---|
| 34 | }
|
---|
| 35 |
|
---|
| 36 | if (!has(IteratorPrototype, TO_STRING_TAG)) {
|
---|
| 37 | createNonEnumerableProperty(IteratorPrototype, TO_STRING_TAG, 'Iterator');
|
---|
| 38 | }
|
---|
| 39 |
|
---|
| 40 | if (FORCED || !has(IteratorPrototype, 'constructor') || IteratorPrototype.constructor === Object) {
|
---|
| 41 | createNonEnumerableProperty(IteratorPrototype, 'constructor', IteratorConstructor);
|
---|
| 42 | }
|
---|
| 43 |
|
---|
| 44 | IteratorConstructor.prototype = IteratorPrototype;
|
---|
| 45 |
|
---|
| 46 | $({ global: true, forced: FORCED }, {
|
---|
| 47 | Iterator: IteratorConstructor
|
---|
| 48 | });
|
---|