'use strict'; var GetIntrinsic = require('get-intrinsic'); var $RangeError = GetIntrinsic('%RangeError%'); var ToInteger = require('./ToInteger'); var ToLength = require('./ToLength'); var SameValueZero = require('./SameValueZero'); // https://262.ecma-international.org/8.0/#sec-toindex module.exports = function ToIndex(value) { if (typeof value === 'undefined') { return 0; } var integerIndex = ToInteger(value); if (integerIndex < 0) { throw new $RangeError('index must be >= 0'); } var index = ToLength(integerIndex); if (!SameValueZero(integerIndex, index)) { throw new $RangeError('index must be >= 0 and < 2 ** 53 - 1'); } return index; };