.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / modules / es.array.iterator.js
1 'use strict';
2 var toIndexedObject = require('../internals/to-indexed-object');
3 var addToUnscopables = require('../internals/add-to-unscopables');
4 var Iterators = require('../internals/iterators');
5 var InternalStateModule = require('../internals/internal-state');
6 var defineIterator = require('../internals/define-iterator');
7
8 var ARRAY_ITERATOR = 'Array Iterator';
9 var setInternalState = InternalStateModule.set;
10 var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
11
12 // `Array.prototype.entries` method
13 // https://tc39.es/ecma262/#sec-array.prototype.entries
14 // `Array.prototype.keys` method
15 // https://tc39.es/ecma262/#sec-array.prototype.keys
16 // `Array.prototype.values` method
17 // https://tc39.es/ecma262/#sec-array.prototype.values
18 // `Array.prototype[@@iterator]` method
19 // https://tc39.es/ecma262/#sec-array.prototype-@@iterator
20 // `CreateArrayIterator` internal method
21 // https://tc39.es/ecma262/#sec-createarrayiterator
22 module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
23   setInternalState(this, {
24     type: ARRAY_ITERATOR,
25     target: toIndexedObject(iterated), // target
26     index: 0,                          // next index
27     kind: kind                         // kind
28   });
29 // `%ArrayIteratorPrototype%.next` method
30 // https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next
31 }, function () {
32   var state = getInternalState(this);
33   var target = state.target;
34   var kind = state.kind;
35   var index = state.index++;
36   if (!target || index >= target.length) {
37     state.target = undefined;
38     return { value: undefined, done: true };
39   }
40   if (kind == 'keys') return { value: index, done: false };
41   if (kind == 'values') return { value: target[index], done: false };
42   return { value: [index, target[index]], done: false };
43 }, 'values');
44
45 // argumentsList[@@iterator] is %ArrayProto_values%
46 // https://tc39.es/ecma262/#sec-createunmappedargumentsobject
47 // https://tc39.es/ecma262/#sec-createmappedargumentsobject
48 Iterators.Arguments = Iterators.Array;
49
50 // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
51 addToUnscopables('keys');
52 addToUnscopables('values');
53 addToUnscopables('entries');