blob: c0185d151d41917704fb076742e78905a878d543 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2
3var GetIntrinsic = require('get-intrinsic');
4
5var $RangeError = GetIntrinsic('%RangeError%');
6
7var ToInteger = require('./ToInteger');
8var ToLength = require('./ToLength');
9var SameValue = require('./SameValue');
10
11// https://262.ecma-international.org/12.0/#sec-toindex
12
13module.exports = function ToIndex(value) {
14 if (typeof value === 'undefined') {
15 return 0;
16 }
17 var integerIndex = ToInteger(value);
18 if (integerIndex < 0) {
19 throw new $RangeError('index must be >= 0');
20 }
21 var index = ToLength(integerIndex);
22 if (!SameValue(integerIndex, index)) {
23 throw new $RangeError('index must be >= 0 and < 2 ** 53 - 1');
24 }
25 return index;
26};