| 'use strict'; |
| |
| var GetIntrinsic = require('get-intrinsic'); |
| |
| var $TypeError = GetIntrinsic('%TypeError%'); |
| |
| var SameValue = require('./SameValue'); |
| var ToNumber = require('./ToNumber'); |
| var ToString = require('./ToString'); |
| var Type = require('./Type'); |
| |
| // https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring |
| |
| module.exports = function CanonicalNumericIndexString(argument) { |
| if (Type(argument) !== 'String') { |
| throw new $TypeError('Assertion failed: `argument` must be a String'); |
| } |
| if (argument === '-0') { return -0; } |
| var n = ToNumber(argument); |
| if (SameValue(ToString(n), argument)) { return n; } |
| return void 0; |
| }; |