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.
30 lines
886 B
30 lines
886 B
'use strict'; |
|
|
|
var GetIntrinsic = require('get-intrinsic'); |
|
var hasPropertyDescriptors = require('has-property-descriptors')(); |
|
|
|
var $TypeError = require('es-errors/type'); |
|
|
|
var $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true); |
|
|
|
var iterProto = require('iterator.prototype'); |
|
var callBound = require('call-bound'); |
|
|
|
var $isPrototypeOf = callBound('Object.prototype.isPrototypeOf'); |
|
|
|
var $Iterator = typeof Iterator === 'function' ? Iterator : function Iterator() { |
|
if ( |
|
!(this instanceof Iterator) |
|
|| this.constructor === Iterator |
|
|| !$isPrototypeOf(Iterator, this.constructor) |
|
) { |
|
throw new $TypeError('`Iterator` can not be called or constructed directly'); |
|
} |
|
}; |
|
|
|
if ($Iterator.prototype !== iterProto) { |
|
$Iterator.prototype = iterProto; |
|
} |
|
$defineProperty($Iterator, 'prototype', { writable: false }); |
|
|
|
module.exports = $Iterator;
|
|
|