blob: 74ed02f050d21c13dbfc06c80c21ae20a8e530ee [file] [log] [blame]
Tim van der Lippefdbd42e2020-04-07 14:14:361'use strict';
2
Nikolay Vitkovd76576c2024-12-02 14:10:153var $TypeError = require('es-errors/type');
Tim van der Lippefdbd42e2020-04-07 14:14:364
5var SameValue = require('./SameValue');
6var ToNumber = require('./ToNumber');
7var ToString = require('./ToString');
Tim van der Lippefdbd42e2020-04-07 14:14:368
Nikolay Vitkovd76576c2024-12-02 14:10:159// https://262.ecma-international.org/6.0/#sec-canonicalnumericindexstring
Tim van der Lippefdbd42e2020-04-07 14:14:3610
11module.exports = function CanonicalNumericIndexString(argument) {
Nikolay Vitkovd76576c2024-12-02 14:10:1512 if (typeof argument !== 'string') {
Tim van der Lippefdbd42e2020-04-07 14:14:3613 throw new $TypeError('Assertion failed: `argument` must be a String');
14 }
15 if (argument === '-0') { return -0; }
16 var n = ToNumber(argument);
17 if (SameValue(ToString(n), argument)) { return n; }
18 return void 0;
19};