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