| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | 'use strict';var $TypeError = require('es-errors/type');var Call = require('./Call');var IsLessThan = require('./IsLessThan');var ToNumber = require('./ToNumber');var ToString = require('./ToString');var isNaN = require('math-intrinsics/isNaN');// https://262.ecma-international.org/14.0/#sec-comparearrayelementsmodule.exports = function CompareArrayElements(x, y, compareFn) {	if (typeof compareFn !== 'function' && typeof compareFn !== 'undefined') {		throw new $TypeError('Assertion failed: `compareFn` must be a function or undefined');	}	if (typeof x === 'undefined' && typeof y === 'undefined') {		return 0; // step 1	}	if (typeof x === 'undefined') {		return 1; // step 2	}	if (typeof y === 'undefined') {		return -1; // step 3	}	if (typeof compareFn !== 'undefined') { // step 4		var v = ToNumber(Call(compareFn, void undefined, [x, y])); // step 4.a		if (isNaN(v)) {			return 0; // step 4.b		}		return v; // step 4.c	}	var xString = ToString(x); // step 5	var yString = ToString(y); // step 6	var xSmaller = IsLessThan(xString, yString, true); // step 7	if (xSmaller) {		return -1; // step 8	}	var ySmaller = IsLessThan(yString, xString, true); // step 9	if (ySmaller) {		return 1; // step 10	}	return 0; // step 11};
 |