.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / internals / iterators-core.js
1 'use strict';
2 var fails = require('../internals/fails');
3 var getPrototypeOf = require('../internals/object-get-prototype-of');
4 var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
5 var has = require('../internals/has');
6 var wellKnownSymbol = require('../internals/well-known-symbol');
7 var IS_PURE = require('../internals/is-pure');
8
9 var ITERATOR = wellKnownSymbol('iterator');
10 var BUGGY_SAFARI_ITERATORS = false;
11
12 var returnThis = function () { return this; };
13
14 // `%IteratorPrototype%` object
15 // https://tc39.es/ecma262/#sec-%iteratorprototype%-object
16 var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
17
18 if ([].keys) {
19   arrayIterator = [].keys();
20   // Safari 8 has buggy iterators w/o `next`
21   if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
22   else {
23     PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
24     if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
25   }
26 }
27
28 var NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {
29   var test = {};
30   // FF44- legacy iterators case
31   return IteratorPrototype[ITERATOR].call(test) !== test;
32 });
33
34 if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};
35
36 // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
37 if ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {
38   createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);
39 }
40
41 module.exports = {
42   IteratorPrototype: IteratorPrototype,
43   BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
44 };