| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | 'use strict';var callBound = require('call-bound');var $TypeError = require('es-errors/type');var isObject = require('es-object-atoms/isObject');var $indexOf = callBound('Array.prototype.indexOf', true) || callBound('String.prototype.indexOf');var Get = require('./Get');var IsArray = require('./IsArray');var LengthOfArrayLike = require('./LengthOfArrayLike');var ToString = require('./ToString');var Type = require('./Type');var defaultElementTypes = ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'BigInt', 'Object'];// https://262.ecma-international.org/11.0/#sec-createlistfromarraylikemodule.exports = function CreateListFromArrayLike(obj) {	var elementTypes = arguments.length > 1		? arguments[1]		: defaultElementTypes;	if (!isObject(obj)) {		throw new $TypeError('Assertion failed: `obj` must be an Object');	}	if (!IsArray(elementTypes)) {		throw new $TypeError('Assertion failed: `elementTypes`, if provided, must be an array');	}	var len = LengthOfArrayLike(obj);	var list = [];	var index = 0;	while (index < len) {		var indexName = ToString(index);		var next = Get(obj, indexName);		var nextType = Type(next);		if ($indexOf(elementTypes, nextType) < 0) {			throw new $TypeError('item type ' + nextType + ' is not a valid elementType');		}		list[list.length] = next;		index += 1;	}	return list;};
 |