35 lines
844 B
Plaintext
35 lines
844 B
Plaintext
'use strict';
|
|
|
|
var GetIntrinsic = require('get-intrinsic');
|
|
var gPO = require('reflect.getprototypeof');
|
|
var hasSymbols = require('has-symbols');
|
|
var define = require('define-properties');
|
|
var setFunctionName = require('set-function-name');
|
|
|
|
var arrayIterProto = GetIntrinsic('%ArrayIteratorPrototype%', true);
|
|
|
|
var iterProto = arrayIterProto && gPO(arrayIterProto);
|
|
|
|
var result = iterProto || {};
|
|
|
|
if (hasSymbols()) {
|
|
var defined = {};
|
|
var predicates = {};
|
|
var trueThunk = function () {
|
|
return true;
|
|
};
|
|
|
|
if (!(Symbol.iterator in result)) {
|
|
// needed when result === iterProto, or, node 0.11.15 - 3
|
|
defined[Symbol.iterator] = setFunctionName(function SymbolIterator() {
|
|
return this;
|
|
}, '[Symbol.iterator]', true);
|
|
|
|
predicates[Symbol.iterator] = trueThunk;
|
|
}
|
|
|
|
define(result, defined, predicates);
|
|
}
|
|
|
|
module.exports = result;
|