diff options
Diffstat (limited to 'src/node_modules/es-abstract/2019/ToIndex.js')
-rw-r--r-- | src/node_modules/es-abstract/2019/ToIndex.js | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/node_modules/es-abstract/2019/ToIndex.js b/src/node_modules/es-abstract/2019/ToIndex.js new file mode 100644 index 0000000..a55398d --- /dev/null +++ b/src/node_modules/es-abstract/2019/ToIndex.js @@ -0,0 +1,26 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $RangeError = GetIntrinsic('%RangeError%'); + +var ToInteger = require('./ToInteger'); +var ToLength = require('./ToLength'); +var SameValueZero = require('./SameValueZero'); + +// https://www.ecma-international.org/ecma-262/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; +}; |