You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
2.0 KiB
46 lines
2.0 KiB
'use strict'; |
|
var global = require('../internals/global'); |
|
var fails = require('../internals/fails'); |
|
var uncurryThis = require('../internals/function-uncurry-this'); |
|
var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); |
|
var ArrayIterators = require('../modules/es.array.iterator'); |
|
var wellKnownSymbol = require('../internals/well-known-symbol'); |
|
|
|
var ITERATOR = wellKnownSymbol('iterator'); |
|
var Uint8Array = global.Uint8Array; |
|
var arrayValues = uncurryThis(ArrayIterators.values); |
|
var arrayKeys = uncurryThis(ArrayIterators.keys); |
|
var arrayEntries = uncurryThis(ArrayIterators.entries); |
|
var aTypedArray = ArrayBufferViewCore.aTypedArray; |
|
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; |
|
var TypedArrayPrototype = Uint8Array && Uint8Array.prototype; |
|
|
|
var GENERIC = !fails(function () { |
|
TypedArrayPrototype[ITERATOR].call([1]); |
|
}); |
|
|
|
var ITERATOR_IS_VALUES = !!TypedArrayPrototype |
|
&& TypedArrayPrototype.values |
|
&& TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values |
|
&& TypedArrayPrototype.values.name === 'values'; |
|
|
|
var typedArrayValues = function values() { |
|
return arrayValues(aTypedArray(this)); |
|
}; |
|
|
|
// `%TypedArray%.prototype.entries` method |
|
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries |
|
exportTypedArrayMethod('entries', function entries() { |
|
return arrayEntries(aTypedArray(this)); |
|
}, GENERIC); |
|
// `%TypedArray%.prototype.keys` method |
|
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys |
|
exportTypedArrayMethod('keys', function keys() { |
|
return arrayKeys(aTypedArray(this)); |
|
}, GENERIC); |
|
// `%TypedArray%.prototype.values` method |
|
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values |
|
exportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' }); |
|
// `%TypedArray%.prototype[@@iterator]` method |
|
// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator |
|
exportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });
|
|
|