first
This commit is contained in:
62
node_modules/core-js/modules/es.array.iterator.js
generated
vendored
Normal file
62
node_modules/core-js/modules/es.array.iterator.js
generated
vendored
Normal file
@ -0,0 +1,62 @@
|
||||
'use strict';
|
||||
var toIndexedObject = require('../internals/to-indexed-object');
|
||||
var addToUnscopables = require('../internals/add-to-unscopables');
|
||||
var Iterators = require('../internals/iterators');
|
||||
var InternalStateModule = require('../internals/internal-state');
|
||||
var defineProperty = require('../internals/object-define-property').f;
|
||||
var defineIterator = require('../internals/iterator-define');
|
||||
var createIterResultObject = require('../internals/create-iter-result-object');
|
||||
var IS_PURE = require('../internals/is-pure');
|
||||
var DESCRIPTORS = require('../internals/descriptors');
|
||||
|
||||
var ARRAY_ITERATOR = 'Array Iterator';
|
||||
var setInternalState = InternalStateModule.set;
|
||||
var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
|
||||
|
||||
// `Array.prototype.entries` method
|
||||
// https://tc39.es/ecma262/#sec-array.prototype.entries
|
||||
// `Array.prototype.keys` method
|
||||
// https://tc39.es/ecma262/#sec-array.prototype.keys
|
||||
// `Array.prototype.values` method
|
||||
// https://tc39.es/ecma262/#sec-array.prototype.values
|
||||
// `Array.prototype[@@iterator]` method
|
||||
// https://tc39.es/ecma262/#sec-array.prototype-@@iterator
|
||||
// `CreateArrayIterator` internal method
|
||||
// https://tc39.es/ecma262/#sec-createarrayiterator
|
||||
module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
|
||||
setInternalState(this, {
|
||||
type: ARRAY_ITERATOR,
|
||||
target: toIndexedObject(iterated), // target
|
||||
index: 0, // next index
|
||||
kind: kind // kind
|
||||
});
|
||||
// `%ArrayIteratorPrototype%.next` method
|
||||
// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next
|
||||
}, function () {
|
||||
var state = getInternalState(this);
|
||||
var target = state.target;
|
||||
var kind = state.kind;
|
||||
var index = state.index++;
|
||||
if (!target || index >= target.length) {
|
||||
state.target = undefined;
|
||||
return createIterResultObject(undefined, true);
|
||||
}
|
||||
if (kind == 'keys') return createIterResultObject(index, false);
|
||||
if (kind == 'values') return createIterResultObject(target[index], false);
|
||||
return createIterResultObject([index, target[index]], false);
|
||||
}, 'values');
|
||||
|
||||
// argumentsList[@@iterator] is %ArrayProto_values%
|
||||
// https://tc39.es/ecma262/#sec-createunmappedargumentsobject
|
||||
// https://tc39.es/ecma262/#sec-createmappedargumentsobject
|
||||
var values = Iterators.Arguments = Iterators.Array;
|
||||
|
||||
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
|
||||
addToUnscopables('keys');
|
||||
addToUnscopables('values');
|
||||
addToUnscopables('entries');
|
||||
|
||||
// V8 ~ Chrome 45- bug
|
||||
if (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {
|
||||
defineProperty(values, 'name', { value: 'values' });
|
||||
} catch (error) { /* empty */ }
|
Reference in New Issue
Block a user