This commit is contained in:
2022-07-18 02:50:52 +00:00
parent befd344ab0
commit 06181b34d6
8569 changed files with 818704 additions and 352705 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ var ToNumber = require('./ToNumber');
var ToPrimitive = require('./ToPrimitive');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison
// https://ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison
module.exports = function AbstractEqualityComparison(x, y) {
var xType = Type(x);
+2 -5
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $Number = GetIntrinsic('%Number%');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -13,7 +13,7 @@ var ToNumber = require('./ToNumber');
var ToPrimitive = require('./ToPrimitive');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/5.1/#sec-11.8.5
// https://262.ecma-international.org/5.1/#sec-11.8.5
// eslint-disable-next-line max-statements
module.exports = function AbstractRelationalComparison(x, y, LeftFirst) {
@@ -39,9 +39,6 @@ module.exports = function AbstractRelationalComparison(x, y, LeftFirst) {
if ($isFinite(nx) && $isFinite(ny) && nx === ny) {
return false;
}
if (nx === 0 && ny === 0) {
return false;
}
if (nx === Infinity) {
return false;
}
+6 -4
View File
@@ -1,15 +1,17 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var IsInteger = require('./IsInteger');
var Type = require('./Type');
var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');
var isLeadingSurrogate = require('../helpers/isLeadingSurrogate');
var isTrailingSurrogate = require('../helpers/isTrailingSurrogate');
var $TypeError = GetIntrinsic('%TypeError%');
var $charCodeAt = require('../helpers/callBound')('String.prototype.charCodeAt');
var $charCodeAt = require('call-bind/callBound')('String.prototype.charCodeAt');
// https://ecma-international.org/ecma-262/6.0/#sec-advancestringindex
@@ -32,12 +34,12 @@ module.exports = function AdvanceStringIndex(S, index, unicode) {
}
var first = $charCodeAt(S, index);
if (first < 0xD800 || first > 0xDBFF) {
if (!isLeadingSurrogate(first)) {
return index + 1;
}
var second = $charCodeAt(S, index + 1);
if (second < 0xDC00 || second > 0xDFFF) {
if (!isTrailingSurrogate(second)) {
return index + 1;
}
+9 -9
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $ArrayPrototype = GetIntrinsic('%Array.prototype%');
var $RangeError = GetIntrinsic('%RangeError%');
@@ -21,7 +21,7 @@ var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || (
}
);
// https://www.ecma-international.org/ecma-262/6.0/#sec-arraycreate
// https://ecma-international.org/ecma-262/6.0/#sec-arraycreate
module.exports = function ArrayCreate(length) {
if (!IsInteger(length) || length < 0) {
@@ -42,12 +42,12 @@ module.exports = function ArrayCreate(length) {
A.length = length;
}
/* step 10, the above as a shortcut for the below
OrdinaryDefineOwnProperty(A, 'length', {
'[[Configurable]]': false,
'[[Enumerable]]': false,
'[[Value]]': length,
'[[Writable]]': true
});
*/
OrdinaryDefineOwnProperty(A, 'length', {
'[[Configurable]]': false,
'[[Enumerable]]': false,
'[[Value]]': length,
'[[Writable]]': true
});
*/
return A;
};
+2 -2
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $RangeError = GetIntrinsic('%RangeError%');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -19,7 +19,7 @@ var ToString = require('./ToString');
var ToUint32 = require('./ToUint32');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-arraysetlength
// https://ecma-international.org/ecma-262/6.0/#sec-arraysetlength
// eslint-disable-next-line max-statements, max-lines-per-function
module.exports = function ArraySetLength(A, Desc) {
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $Array = GetIntrinsic('%Array%');
var $species = GetIntrinsic('%Symbol.species%', true);
+12 -5
View File
@@ -1,13 +1,20 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var callBound = require('../helpers/callBound');
var GetIntrinsic = require('get-intrinsic');
var callBound = require('call-bind/callBound');
var $TypeError = GetIntrinsic('%TypeError%');
var IsArray = require('./IsArray');
var $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('%Function.prototype.apply%');
// https://www.ecma-international.org/ecma-262/6.0/#sec-call
// https://ecma-international.org/ecma-262/6.0/#sec-call
module.exports = function Call(F, V) {
var args = arguments.length > 2 ? arguments[2] : [];
return $apply(F, V, args);
var argumentsList = arguments.length > 2 ? arguments[2] : [];
if (!IsArray(argumentsList)) {
throw new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');
}
return $apply(F, V, argumentsList);
};
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
+31
View File
@@ -0,0 +1,31 @@
'use strict';
var GetIntrinsic = require('get-intrinsic');
var callBound = require('call-bind/callBound');
var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
var $TypeError = GetIntrinsic('%TypeError%');
var $charCodeAt = callBound('%String.prototype.charCodeAt%');
var $push = callBound('%Array.prototype.push%');
module.exports = function CharacterRange(A, B) {
if (A.length !== 1 || B.length !== 1) {
throw new $TypeError('Assertion failed: CharSets A and B contain exactly one character');
}
var a = A[0];
var b = B[0];
var i = $charCodeAt(a, 0);
var j = $charCodeAt(b, 0);
if (!(i <= j)) {
throw new $TypeError('Assertion failed: i is not <= j');
}
var arr = [];
for (var k = i; k <= j; k += 1) {
$push(arr, $fromCharCode(k));
}
return arr;
};
+4 -4
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -14,7 +14,7 @@ var IsPropertyKey = require('./IsPropertyKey');
var SameValue = require('./SameValue');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-createdataproperty
// https://ecma-international.org/ecma-262/6.0/#sec-createdataproperty
module.exports = function CreateDataProperty(O, P, V) {
if (Type(O) !== 'Object') {
@@ -25,8 +25,8 @@ module.exports = function CreateDataProperty(O, P, V) {
}
var oldDesc = OrdinaryGetOwnProperty(O, P);
var extensible = !oldDesc || IsExtensible(O);
var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']);
if (immutable || !extensible) {
var nonConfigurable = oldDesc && !oldDesc['[[Configurable]]'];
if (nonConfigurable || !extensible) {
return false;
}
return DefineOwnProperty(
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
+3 -3
View File
@@ -1,10 +1,10 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('../helpers/callBound');
var callBound = require('call-bind/callBound');
var $replace = callBound('String.prototype.replace');
@@ -12,7 +12,7 @@ var RequireObjectCoercible = require('./RequireObjectCoercible');
var ToString = require('./ToString');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-createhtml
// https://ecma-international.org/ecma-262/6.0/#sec-createhtml
module.exports = function CreateHTML(string, tag, attribute, value) {
if (Type(tag) !== 'String' || Type(attribute) !== 'String') {
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
+2 -2
View File
@@ -1,8 +1,8 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var callBound = require('../helpers/callBound');
var callBound = require('call-bind/callBound');
var $TypeError = GetIntrinsic('%TypeError%');
var $indexOf = callBound('Array.prototype.indexOf', true) || callBound('String.prototype.indexOf');
+2 -2
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -12,7 +12,7 @@ var IsPropertyKey = require('./IsPropertyKey');
var SameValue = require('./SameValue');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-createmethodproperty
// https://ecma-international.org/ecma-262/6.0/#sec-createmethodproperty
module.exports = function CreateMethodProperty(O, P, V) {
if (Type(O) !== 'Object') {
+2 -2
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $EvalError = GetIntrinsic('%EvalError%');
@@ -8,7 +8,7 @@ var DayWithinYear = require('./DayWithinYear');
var InLeapYear = require('./InLeapYear');
var MonthFromTime = require('./MonthFromTime');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.5
// https://262.ecma-international.org/5.1/#sec-15.9.1.5
module.exports = function DateFromTime(t) {
var m = MonthFromTime(t);
+3 -5
View File
@@ -1,13 +1,11 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $floor = GetIntrinsic('%Math.floor%');
var floor = require('./floor');
var msPerDay = require('../helpers/timeConstants').msPerDay;
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2
// https://262.ecma-international.org/5.1/#sec-15.9.1.2
module.exports = function Day(t) {
return $floor(t / msPerDay);
return floor(t / msPerDay);
};
+3 -5
View File
@@ -1,12 +1,10 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var floor = require('./floor');
var $floor = GetIntrinsic('%Math.floor%');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3
// https://262.ecma-international.org/5.1/#sec-15.9.1.3
module.exports = function DayFromYear(y) {
return (365 * (y - 1970)) + $floor((y - 1969) / 4) - $floor((y - 1901) / 100) + $floor((y - 1601) / 400);
return (365 * (y - 1970)) + floor((y - 1969) / 4) - floor((y - 1901) / 100) + floor((y - 1601) / 400);
};
+1 -1
View File
@@ -4,7 +4,7 @@ var Day = require('./Day');
var DayFromYear = require('./DayFromYear');
var YearFromTime = require('./YearFromTime');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4
// https://262.ecma-international.org/5.1/#sec-15.9.1.4
module.exports = function DayWithinYear(t) {
return Day(t) - DayFromYear(YearFromTime(t));
+5 -5
View File
@@ -1,17 +1,17 @@
'use strict';
var mod = require('../helpers/mod');
var modulo = require('./modulo');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3
// https://262.ecma-international.org/5.1/#sec-15.9.1.3
module.exports = function DaysInYear(y) {
if (mod(y, 4) !== 0) {
if (modulo(y, 4) !== 0) {
return 365;
}
if (mod(y, 100) !== 0) {
if (modulo(y, 100) !== 0) {
return 366;
}
if (mod(y, 400) !== 0) {
if (modulo(y, 400) !== 0) {
return 365;
}
return 366;
+2 -2
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -15,7 +15,7 @@ var SameValue = require('./SameValue');
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow
// https://ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow
module.exports = function DefinePropertyOrThrow(O, P, desc) {
if (Type(O) !== 'Object') {
+2 -2
View File
@@ -1,13 +1,13 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow
// https://ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow
module.exports = function DeletePropertyOrThrow(O, P) {
if (Type(O) !== 'Object') {
+2 -2
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -8,7 +8,7 @@ var keys = require('object-keys');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-enumerableownnames
// https://ecma-international.org/ecma-262/6.0/#sec-enumerableownnames
module.exports = function EnumerableOwnNames(O) {
if (Type(O) !== 'Object') {
+5 -25
View File
@@ -1,36 +1,16 @@
'use strict';
var assertRecord = require('../helpers/assertRecord');
var fromPropertyDescriptor = require('../helpers/fromPropertyDescriptor');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor
// https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor
module.exports = function FromPropertyDescriptor(Desc) {
if (typeof Desc === 'undefined') {
return Desc;
if (typeof Desc !== 'undefined') {
assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
}
assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
var obj = {};
if ('[[Value]]' in Desc) {
obj.value = Desc['[[Value]]'];
}
if ('[[Writable]]' in Desc) {
obj.writable = Desc['[[Writable]]'];
}
if ('[[Get]]' in Desc) {
obj.get = Desc['[[Get]]'];
}
if ('[[Set]]' in Desc) {
obj.set = Desc['[[Set]]'];
}
if ('[[Enumerable]]' in Desc) {
obj.enumerable = Desc['[[Enumerable]]'];
}
if ('[[Configurable]]' in Desc) {
obj.configurable = Desc['[[Configurable]]'];
}
return obj;
return fromPropertyDescriptor(Desc);
};
+2 -7
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -9,12 +9,7 @@ var inspect = require('object-inspect');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
/**
* 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
* 1. Assert: Type(O) is Object.
* 2. Assert: IsPropertyKey(P) is true.
* 3. Return O.[[Get]](P, O).
*/
// https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
module.exports = function Get(O, P) {
// 7.3.1.1
+2 -3
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -20,8 +20,7 @@ module.exports = function GetIterator(obj, method) {
{
AdvanceStringIndex: AdvanceStringIndex,
GetMethod: GetMethod,
IsArray: IsArray,
Type: Type
IsArray: IsArray
},
obj
);
+2 -10
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -8,15 +8,7 @@ var GetV = require('./GetV');
var IsCallable = require('./IsCallable');
var IsPropertyKey = require('./IsPropertyKey');
/**
* 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod
* 1. Assert: IsPropertyKey(P) is true.
* 2. Let func be GetV(O, P).
* 3. ReturnIfAbrupt(func).
* 4. If func is either undefined or null, return undefined.
* 5. If IsCallable(func) is false, throw a TypeError exception.
* 6. Return func.
*/
// https://ecma-international.org/ecma-262/6.0/#sec-getmethod
module.exports = function GetMethod(O, P) {
// 7.3.9.1
+4 -4
View File
@@ -1,18 +1,18 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var hasSymbols = require('has-symbols')();
var $TypeError = GetIntrinsic('%TypeError%');
var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%');
var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%', true);
var keys = require('object-keys');
var esType = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys
// https://ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys
module.exports = function GetOwnPropertyKeys(O, Type) {
if (esType(O) !== 'Object') {
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $Function = GetIntrinsic('%Function%');
var $TypeError = GetIntrinsic('%TypeError%');
+5 -5
View File
@@ -1,7 +1,7 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var $parseInt = GetIntrinsic('%parseInt%');
@@ -9,7 +9,7 @@ var $parseInt = GetIntrinsic('%parseInt%');
var inspect = require('object-inspect');
var regexTester = require('../helpers/regexTester');
var callBound = require('../helpers/callBound');
var callBound = require('call-bind/callBound');
var every = require('../helpers/every');
var isDigit = regexTester(/^[0-9]$/);
@@ -27,7 +27,7 @@ var isStringOrHole = function (capture, index, arr) {
return Type(capture) === 'String' || (canDistinguishSparseFromUndefined ? !(index in arr) : Type(capture) === 'Undefined');
};
// https://www.ecma-international.org/ecma-262/6.0/#sec-getsubstitution
// https://ecma-international.org/ecma-262/6.0/#sec-getsubstitution
// eslint-disable-next-line max-statements, max-params, max-lines-per-function
module.exports = function GetSubstitution(matched, str, position, captures, replacement) {
@@ -82,14 +82,14 @@ module.exports = function GetSubstitution(matched, str, position, captures, repl
// $1 through $9, and not followed by a digit
var n = $parseInt(next, 10);
// if (n > m, impl-defined)
result += (n <= m && Type(captures[n - 1]) === 'Undefined') ? '' : captures[n - 1];
result += n <= m && Type(captures[n - 1]) === 'Undefined' ? '' : captures[n - 1];
i += 1;
} else if (isDigit(next) && (nextIsLast || isDigit(nextNext))) {
// $00 through $99
var nn = next + nextNext;
var nnI = $parseInt(nn, 10) - 1;
// if nn === '00' or nn > m, impl-defined
result += (nn <= m && Type(captures[nnI]) === 'Undefined') ? '' : captures[nnI];
result += nn <= m && Type(captures[nnI]) === 'Undefined' ? '' : captures[nnI];
i += 2;
} else {
result += '$';
+2 -8
View File
@@ -1,19 +1,13 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var ToObject = require('./ToObject');
/**
* 7.3.2 GetV (V, P)
* 1. Assert: IsPropertyKey(P) is true.
* 2. Let O be ToObject(V).
* 3. ReturnIfAbrupt(O).
* 4. Return O.[[Get]](P, V).
*/
// https://ecma-international.org/ecma-262/6.0/#sec-getv
module.exports = function GetV(V, P) {
// 7.3.2.1
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
+4 -6
View File
@@ -1,16 +1,14 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var floor = require('./floor');
var modulo = require('./modulo');
var $floor = GetIntrinsic('%Math.floor%');
var mod = require('../helpers/mod');
var timeConstants = require('../helpers/timeConstants');
var msPerHour = timeConstants.msPerHour;
var HoursPerDay = timeConstants.HoursPerDay;
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10
// https://262.ecma-international.org/5.1/#sec-15.9.1.10
module.exports = function HourFromTime(t) {
return mod($floor(t / msPerHour), HoursPerDay);
return modulo(floor(t / msPerHour), HoursPerDay);
};
+2 -2
View File
@@ -1,13 +1,13 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $EvalError = GetIntrinsic('%EvalError%');
var DaysInYear = require('./DaysInYear');
var YearFromTime = require('./YearFromTime');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3
// https://262.ecma-international.org/5.1/#sec-15.9.1.3
module.exports = function InLeapYear(t) {
var days = DaysInYear(YearFromTime(t));
+2 -2
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -13,7 +13,7 @@ var OrdinaryHasInstance = require('./OrdinaryHasInstance');
var ToBoolean = require('./ToBoolean');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-instanceofoperator
// https://ecma-international.org/ecma-262/6.0/#sec-instanceofoperator
module.exports = function InstanceofOperator(O, C) {
if (Type(O) !== 'Object') {
+7 -5
View File
@@ -1,12 +1,11 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var $arraySlice = require('../helpers/callBound')('Array.prototype.slice');
var Call = require('./Call');
var IsArray = require('./IsArray');
var GetV = require('./GetV');
var IsPropertyKey = require('./IsPropertyKey');
@@ -14,9 +13,12 @@ var IsPropertyKey = require('./IsPropertyKey');
module.exports = function Invoke(O, P) {
if (!IsPropertyKey(P)) {
throw new $TypeError('P must be a Property Key');
throw new $TypeError('Assertion failed: P must be a Property Key');
}
var argumentsList = arguments.length > 2 ? arguments[2] : [];
if (!IsArray(argumentsList)) {
throw new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');
}
var argumentsList = $arraySlice(arguments, 2);
var func = GetV(O, P);
return Call(func, O, argumentsList);
};
+1 -1
View File
@@ -6,7 +6,7 @@ var assertRecord = require('../helpers/assertRecord');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor
// https://ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor
module.exports = function IsAccessorDescriptor(Desc) {
if (typeof Desc === 'undefined') {
+2 -12
View File
@@ -1,14 +1,4 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $Array = GetIntrinsic('%Array%');
// eslint-disable-next-line global-require
var toStr = !$Array.isArray && require('../helpers/callBound')('Object.prototype.toString');
// https://www.ecma-international.org/ecma-262/6.0/#sec-isarray
module.exports = $Array.isArray || function IsArray(argument) {
return toStr(argument) === '[object Array]';
};
// https://ecma-international.org/ecma-262/6.0/#sec-isarray
module.exports = require('../helpers/IsArray');
+1 -1
View File
@@ -1,5 +1,5 @@
'use strict';
// http://www.ecma-international.org/ecma-262/5.1/#sec-9.11
// http://262.ecma-international.org/5.1/#sec-9.11
module.exports = require('is-callable');
+9
View File
@@ -0,0 +1,9 @@
'use strict';
var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
// https://262.ecma-international.org/6.0/#sec-iscompatiblepropertydescriptor
module.exports = function IsCompatiblePropertyDescriptor(Extensible, Desc, Current) {
return ValidateAndApplyPropertyDescriptor(undefined, undefined, Extensible, Desc, Current);
};
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $isConcatSpreadable = GetIntrinsic('%Symbol.isConcatSpreadable%', true);
+1 -1
View File
@@ -12,7 +12,7 @@ try {
DefinePropertyOrThrow = null;
}
// https://www.ecma-international.org/ecma-262/6.0/#sec-isconstructor
// https://ecma-international.org/ecma-262/6.0/#sec-isconstructor
if (DefinePropertyOrThrow && $construct) {
var isConstructorMarker = {};
+1 -1
View File
@@ -6,7 +6,7 @@ var assertRecord = require('../helpers/assertRecord');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor
// https://ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor
module.exports = function IsDataDescriptor(Desc) {
if (typeof Desc === 'undefined') {
+4 -6
View File
@@ -1,15 +1,13 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $Object = GetIntrinsic('%Object%');
var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
var $isExtensible = GetIntrinsic('%Object.isExtensible%', true);
var isPrimitive = require('../helpers/isPrimitive');
var $preventExtensions = $Object.preventExtensions;
var $isExtensible = $Object.isExtensible;
// https://www.ecma-international.org/ecma-262/6.0/#sec-isextensible-o
// https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o
module.exports = $preventExtensions
? function IsExtensible(obj) {
+1 -1
View File
@@ -6,7 +6,7 @@ var IsAccessorDescriptor = require('./IsAccessorDescriptor');
var IsDataDescriptor = require('./IsDataDescriptor');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-isgenericdescriptor
// https://ecma-international.org/ecma-262/6.0/#sec-isgenericdescriptor
module.exports = function IsGenericDescriptor(Desc) {
if (typeof Desc === 'undefined') {
+5 -9
View File
@@ -1,21 +1,17 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $Math = GetIntrinsic('%Math%');
var $floor = $Math.floor;
var $abs = $Math.abs;
var abs = require('./abs');
var floor = require('./floor');
var $isNaN = require('../helpers/isNaN');
var $isFinite = require('../helpers/isFinite');
// https://www.ecma-international.org/ecma-262/6.0/#sec-isinteger
// https://ecma-international.org/ecma-262/6.0/#sec-isinteger
module.exports = function IsInteger(argument) {
if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) {
return false;
}
var abs = $abs(argument);
return $floor(abs) === abs;
var absValue = abs(argument);
return floor(absValue) === absValue;
};
+2 -2
View File
@@ -1,12 +1,12 @@
'use strict';
var callBound = require('../helpers/callBound');
var callBound = require('call-bind/callBound');
var $PromiseThen = callBound('Promise.prototype.then', true);
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-ispromise
// https://ecma-international.org/ecma-262/6.0/#sec-ispromise
module.exports = function IsPromise(x) {
if (Type(x) !== 'Object') {
+3 -1
View File
@@ -1,12 +1,14 @@
'use strict';
// TODO, semver-major: delete this
var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
var Type = require('./Type');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsAccessorDescriptor = require('./IsAccessorDescriptor');
// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type
// https://262.ecma-international.org/6.0/#sec-property-descriptor-specification-type
module.exports = function IsPropertyDescriptor(Desc) {
return isPropertyDescriptor({
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
// https://www.ecma-international.org/ecma-262/6.0/#sec-ispropertykey
// https://ecma-international.org/ecma-262/6.0/#sec-ispropertykey
module.exports = function IsPropertyKey(argument) {
return typeof argument === 'string' || typeof argument === 'symbol';
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $match = GetIntrinsic('%Symbol.match%', true);
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
+1 -1
View File
@@ -3,7 +3,7 @@
var $isFinite = require('../helpers/isFinite');
var msPerDay = require('../helpers/timeConstants').msPerDay;
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.13
// https://262.ecma-international.org/5.1/#sec-15.9.1.13
module.exports = function MakeDate(day, time) {
if (!$isFinite(day) || !$isFinite(time)) {
+6 -6
View File
@@ -1,20 +1,20 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $floor = GetIntrinsic('%Math.floor%');
var $DateUTC = GetIntrinsic('%Date.UTC%');
var mod = require('../helpers/mod');
var $isFinite = require('../helpers/isFinite');
var DateFromTime = require('./DateFromTime');
var Day = require('./Day');
var floor = require('./floor');
var modulo = require('./modulo');
var MonthFromTime = require('./MonthFromTime');
var ToInteger = require('./ToInteger');
var YearFromTime = require('./YearFromTime');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12
// https://262.ecma-international.org/5.1/#sec-15.9.1.12
module.exports = function MakeDay(year, month, date) {
if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) {
@@ -23,8 +23,8 @@ module.exports = function MakeDay(year, month, date) {
var y = ToInteger(year);
var m = ToInteger(month);
var dt = ToInteger(date);
var ym = y + $floor(m / 12);
var mn = mod(m, 12);
var ym = y + floor(m / 12);
var mn = modulo(m, 12);
var t = $DateUTC(ym, mn, 1);
if (YearFromTime(t) !== ym || MonthFromTime(t) !== mn || DateFromTime(t) !== 1) {
return NaN;
+1 -1
View File
@@ -8,7 +8,7 @@ var msPerHour = timeConstants.msPerHour;
var ToInteger = require('./ToInteger');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.11
// https://262.ecma-international.org/5.1/#sec-15.9.1.11
module.exports = function MakeTime(hour, min, sec, ms) {
if (!$isFinite(hour) || !$isFinite(min) || !$isFinite(sec) || !$isFinite(ms)) {
+4 -6
View File
@@ -1,16 +1,14 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var floor = require('./floor');
var modulo = require('./modulo');
var $floor = GetIntrinsic('%Math.floor%');
var mod = require('../helpers/mod');
var timeConstants = require('../helpers/timeConstants');
var msPerMinute = timeConstants.msPerMinute;
var MinutesPerHour = timeConstants.MinutesPerHour;
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10
// https://262.ecma-international.org/5.1/#sec-15.9.1.10
module.exports = function MinFromTime(t) {
return mod($floor(t / msPerMinute), MinutesPerHour);
return modulo(floor(t / msPerMinute), MinutesPerHour);
};
+1 -1
View File
@@ -3,7 +3,7 @@
var DayWithinYear = require('./DayWithinYear');
var InLeapYear = require('./InLeapYear');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4
// https://262.ecma-international.org/5.1/#sec-15.9.1.4
module.exports = function MonthFromTime(t) {
var day = DayWithinYear(t);
+2 -2
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $ObjectCreate = GetIntrinsic('%Object.create%', true);
var $TypeError = GetIntrinsic('%TypeError%');
@@ -10,7 +10,7 @@ var Type = require('./Type');
var hasProto = !({ __proto__: null } instanceof Object);
// https://www.ecma-international.org/ecma-262/6.0/#sec-objectcreate
// https://ecma-international.org/ecma-262/6.0/#sec-objectcreate
module.exports = function ObjectCreate(proto, internalSlotsList) {
if (proto !== null && Type(proto) !== 'Object') {
+40
View File
@@ -0,0 +1,40 @@
'use strict';
var callBound = require('call-bind/callBound');
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
var FromPropertyDescriptor = require('./FromPropertyDescriptor');
var Get = require('./Get');
var ToObject = require('./ToObject');
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
var forEach = require('../helpers/forEach');
var getOwnPropertyDescriptor = require('../helpers/getOwnPropertyDescriptor');
var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
var $push = callBound('Array.prototype.push');
// https://262.ecma-international.org/6.0/#sec-objectdefineproperties
module.exports = function ObjectDefineProperties(O, Properties) {
var props = ToObject(Properties); // step 1
var keys = OwnPropertyKeys(props); // step 2
var descriptors = []; // step 3
forEach(keys, function (nextKey) { // step 4
var propDesc = ToPropertyDescriptor(getOwnPropertyDescriptor(props, nextKey)); // step 4.a
if (typeof propDesc !== 'undefined' && propDesc['[[Enumerable]]']) { // step 4.b
var descObj = Get(props, nextKey); // step 4.b.i
var desc = ToPropertyDescriptor(descObj); // step 4.b.ii
$push(descriptors, [nextKey, desc]); // step 4.b.iii
}
});
forEach(descriptors, function (pair) { // step 5
var P = pair[0]; // step 5.a
var desc = pair[1]; // step 5.b
desc = FromPropertyDescriptor(desc); // TODO: remove this once DefinePropertyOrThrow is fixed
DefinePropertyOrThrow(O, P, desc); // step 5.c
});
return O; // step 6
};
+20
View File
@@ -0,0 +1,20 @@
'use strict';
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var GetPrototypeFromConstructor = require('./GetPrototypeFromConstructor');
var IsArray = require('./IsArray');
var ObjectCreate = require('./ObjectCreate');
// https://ecma-international.org/ecma-262/6.0/#sec-ordinarycreatefromconstructor
module.exports = function OrdinaryCreateFromConstructor(constructor, intrinsicDefaultProto) {
GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic
var proto = GetPrototypeFromConstructor(constructor, intrinsicDefaultProto);
var slots = arguments.length < 3 ? [] : arguments[2];
if (!IsArray(slots)) {
throw new $TypeError('Assertion failed: if provided, `internalSlotsList` must be a List');
}
return ObjectCreate(proto, slots);
};
+2 -2
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $gOPD = require('../helpers/getOwnPropertyDescriptor');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
@@ -17,7 +17,7 @@ var SameValue = require('./SameValue');
var Type = require('./Type');
var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarydefineownproperty
// https://ecma-international.org/ecma-262/6.0/#sec-ordinarydefineownproperty
module.exports = function OrdinaryDefineOwnProperty(O, P, Desc) {
if (Type(O) !== 'Object') {
+3 -3
View File
@@ -1,11 +1,11 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $gOPD = require('../helpers/getOwnPropertyDescriptor');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('../helpers/callBound');
var callBound = require('call-bind/callBound');
var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
@@ -17,7 +17,7 @@ var IsRegExp = require('./IsRegExp');
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty
// https://ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty
module.exports = function OrdinaryGetOwnProperty(O, P) {
if (Type(O) !== 'Object') {
+2 -2
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -8,7 +8,7 @@ var Get = require('./Get');
var IsCallable = require('./IsCallable');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance
// https://ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance
module.exports = function OrdinaryHasInstance(C, O) {
if (IsCallable(C) === false) {
+2 -2
View File
@@ -1,13 +1,13 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasproperty
// https://ecma-international.org/ecma-262/6.0/#sec-ordinaryhasproperty
module.exports = function OrdinaryHasProperty(O, P) {
if (Type(O) !== 'Object') {
+52
View File
@@ -0,0 +1,52 @@
'use strict';
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('call-bind/callBound');
var forEach = require('../helpers/forEach');
var $charCodeAt = callBound('String.prototype.charCodeAt');
var $numberToString = callBound('Number.prototype.toString');
var $toLowerCase = callBound('String.prototype.toLowerCase');
var $strSlice = callBound('String.prototype.slice');
var $strSplit = callBound('String.prototype.split');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-quotejsonstring
var escapes = {
'\u0008': 'b',
'\u000C': 'f',
'\u000A': 'n',
'\u000D': 'r',
'\u0009': 't'
};
module.exports = function QuoteJSONString(value) {
if (Type(value) !== 'String') {
throw new $TypeError('Assertion failed: `value` must be a String');
}
var product = '"';
if (value) {
forEach($strSplit(value), function (C) {
if (C === '"' || C === '\\') {
product += '\u005C' + C;
} else if (C === '\u0008' || C === '\u000C' || C === '\u000A' || C === '\u000D' || C === '\u0009') {
var abbrev = escapes[C];
product += '\u005C' + abbrev;
} else {
var cCharCode = $charCodeAt(C, 0);
if (cCharCode < 0x20) {
product += '\u005Cu' + $toLowerCase($strSlice('0000' + $numberToString(cCharCode, 16), -4));
} else {
product += C;
}
}
});
}
product += '"';
return product;
};
+21
View File
@@ -0,0 +1,21 @@
'use strict';
var GetIntrinsic = require('get-intrinsic');
var $RegExp = GetIntrinsic('%RegExp%');
// var RegExpAlloc = require('./RegExpAlloc');
// var RegExpInitialize = require('./RegExpInitialize');
var ToString = require('./ToString');
// https://262.ecma-international.org/6.0/#sec-regexpcreate
module.exports = function RegExpCreate(P, F) {
// var obj = RegExpAlloc($RegExp);
// return RegExpInitialize(obj, P, F);
// covers spec mechanics; bypass regex brand checking
var pattern = typeof P === 'undefined' ? '' : ToString(P);
var flags = typeof F === 'undefined' ? '' : ToString(F);
return new $RegExp(pattern, flags);
};
+2 -2
View File
@@ -1,10 +1,10 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var regexExec = require('../helpers/callBound')('RegExp.prototype.exec');
var regexExec = require('call-bind/callBound')('RegExp.prototype.exec');
var Call = require('./Call');
var Get = require('./Get');
+1 -1
View File
@@ -2,7 +2,7 @@
var $isNaN = require('../helpers/isNaN');
// http://www.ecma-international.org/ecma-262/5.1/#sec-9.12
// http://262.ecma-international.org/5.1/#sec-9.12
module.exports = function SameValue(x, y) {
if (x === y) { // 0 === -0, but they are not identical.
+1 -1
View File
@@ -2,7 +2,7 @@
var $isNaN = require('../helpers/isNaN');
// https://www.ecma-international.org/ecma-262/6.0/#sec-samevaluezero
// https://ecma-international.org/ecma-262/6.0/#sec-samevaluezero
module.exports = function SameValueZero(x, y) {
return (x === y) || ($isNaN(x) && $isNaN(y));
+4 -6
View File
@@ -1,16 +1,14 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var floor = require('./floor');
var modulo = require('./modulo');
var $floor = GetIntrinsic('%Math.floor%');
var mod = require('../helpers/mod');
var timeConstants = require('../helpers/timeConstants');
var msPerSecond = timeConstants.msPerSecond;
var SecondsPerMinute = timeConstants.SecondsPerMinute;
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10
// https://262.ecma-international.org/5.1/#sec-15.9.1.10
module.exports = function SecFromTime(t) {
return mod($floor(t / msPerSecond), SecondsPerMinute);
return modulo(floor(t / msPerSecond), SecondsPerMinute);
};
+8 -8
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -36,12 +36,12 @@ module.exports = function Set(O, P, V, Throw) {
throw new $TypeError('Attempted to assign to readonly property.');
}
return true;
} else {
try {
O[P] = V; // eslint-disable-line no-param-reassign
return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
} catch (e) {
return false;
}
}
try {
O[P] = V; // eslint-disable-line no-param-reassign
return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
} catch (e) {
return false;
}
};
+2 -2
View File
@@ -1,12 +1,12 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var has = require('has');
var $TypeError = GetIntrinsic('%TypeError%');
var getSymbolDescription = require('../helpers/getSymbolDescription');
var getSymbolDescription = require('get-symbol-description');
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
var IsExtensible = require('./IsExtensible');
+4 -4
View File
@@ -1,12 +1,12 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
var $preventExtensions = GetIntrinsic('%Object.preventExtensions%');
var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
var $gOPD = require('../helpers/getOwnPropertyDescriptor');
var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
var forEach = require('../helpers/forEach');
@@ -15,7 +15,7 @@ var IsAccessorDescriptor = require('./IsAccessorDescriptor');
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-setintegritylevel
// https://ecma-international.org/ecma-262/6.0/#sec-setintegritylevel
module.exports = function SetIntegrityLevel(O, level) {
if (Type(O) !== 'Object') {
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $species = GetIntrinsic('%Symbol.species%', true);
var $TypeError = GetIntrinsic('%TypeError%');
+38
View File
@@ -0,0 +1,38 @@
'use strict';
var GetIntrinsic = require('get-intrinsic');
var callBound = require('call-bind/callBound');
var $TypeError = GetIntrinsic('%TypeError%');
var IsInteger = require('./IsInteger');
var Type = require('./Type');
var $charAt = callBound('String.prototype.charAt');
// https://262.ecma-international.org/6.0/#sec-splitmatch
module.exports = function SplitMatch(S, q, R) {
if (Type(S) !== 'String') {
throw new $TypeError('Assertion failed: `S` must be a String');
}
if (!IsInteger(q)) {
throw new $TypeError('Assertion failed: `q` must be an integer');
}
if (Type(R) !== 'String') {
throw new $TypeError('Assertion failed: `R` must be a String');
}
var r = R.length;
var s = S.length;
if (q + r > s) {
return false;
}
for (var i = 0; i < r; i += 1) {
if ($charAt(S, q + i) !== $charAt(R, i)) {
return false;
}
}
return q + r;
};
+1 -1
View File
@@ -2,7 +2,7 @@
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6
// https://262.ecma-international.org/5.1/#sec-11.9.6
module.exports = function StrictEqualityComparison(x, y) {
var xType = Type(x);
+40
View File
@@ -0,0 +1,40 @@
'use strict';
var GetIntrinsic = require('get-intrinsic');
var $Object = GetIntrinsic('%Object%');
var $StringPrototype = GetIntrinsic('%String.prototype%');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
var Type = require('./Type');
var setProto = require('../helpers/setProto');
// https://262.ecma-international.org/6.0/#sec-stringcreate
module.exports = function StringCreate(value, prototype) {
if (Type(value) !== 'String') {
throw new $TypeError('Assertion failed: `S` must be a String');
}
var S = $Object(value);
if (prototype !== $StringPrototype) {
if (setProto) {
setProto(S, prototype);
} else {
throw new $SyntaxError('StringCreate: a `proto` argument that is not `String.prototype` is not supported in an environment that does not support setting the [[Prototype]]');
}
}
var length = value.length;
DefinePropertyOrThrow(S, 'length', {
'[[Configurable]]': false,
'[[Enumerable]]': false,
'[[Value]]': length,
'[[Writable]]': false
});
return S;
};
+52
View File
@@ -0,0 +1,52 @@
'use strict';
var GetIntrinsic = require('get-intrinsic');
var callBound = require('call-bind/callBound');
var $TypeError = GetIntrinsic('%TypeError%');
var $charAt = callBound('String.prototype.charAt');
var isString = require('is-string');
var isNegativeZero = require('is-negative-zero');
var unbox = require('unbox-primitive');
var CanonicalNumericIndexString = require('./CanonicalNumericIndexString');
var IsInteger = require('./IsInteger');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
// https://262.ecma-international.org/6.0/#sec-stringgetindexproperty
module.exports = function StringGetIndexProperty(S, P) {
if (typeof S === 'string' || !isString(S)) {
throw new $TypeError('Assertion failed: `S` must be a boxed String Object');
}
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: `P` must be a Property Key');
}
if (Type(P) !== 'String') {
return void undefined;
}
var index = CanonicalNumericIndexString(P);
if (typeof index === 'undefined' || !IsInteger(index) || isNegativeZero(index)) {
return void undefined;
}
var str = unbox(S);
var len = str.length;
if (index < 0 || len <= index) {
return void undefined;
}
var resultStr = $charAt(str, index);
return {
'[[Configurable]]': false,
'[[Enumerable]]': true,
'[[Value]]': resultStr,
'[[Writable]]': false
};
};
+3 -3
View File
@@ -1,16 +1,16 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('../helpers/callBound');
var callBound = require('call-bind/callBound');
var $SymbolToString = callBound('Symbol.prototype.toString', true);
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-symboldescriptivestring
// https://ecma-international.org/ecma-262/6.0/#sec-symboldescriptivestring
module.exports = function SymbolDescriptiveString(sym) {
if (Type(sym) !== 'Symbol') {
+4 -4
View File
@@ -1,19 +1,19 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $gOPD = require('../helpers/getOwnPropertyDescriptor');
var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
var $TypeError = GetIntrinsic('%TypeError%');
var every = require('../helpers/every');
var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsExtensible = require('./IsExtensible');
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-testintegritylevel
// https://ecma-international.org/ecma-262/6.0/#sec-testintegritylevel
module.exports = function TestIntegrityLevel(O, level) {
if (Type(O) !== 'Object') {
@@ -26,7 +26,7 @@ module.exports = function TestIntegrityLevel(O, level) {
if (status) {
return false;
}
var theKeys = $gOPN(O);
var theKeys = OwnPropertyKeys(O);
return theKeys.length === 0 || every(theKeys, function (k) {
var currentDesc = $gOPD(O, k);
if (typeof currentDesc !== 'undefined') {
+4 -4
View File
@@ -1,19 +1,19 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $Date = GetIntrinsic('%Date%');
var $Number = GetIntrinsic('%Number%');
var $abs = GetIntrinsic('%Math.abs%');
var $isFinite = require('../helpers/isFinite');
var abs = require('./abs');
var ToNumber = require('./ToNumber');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.14
// https://262.ecma-international.org/5.1/#sec-15.9.1.14
module.exports = function TimeClip(time) {
if (!$isFinite(time) || $abs(time) > 8.64e15) {
if (!$isFinite(time) || abs(time) > 8.64e15) {
return NaN;
}
return $Number(new $Date(ToNumber(time)));
+1 -1
View File
@@ -4,7 +4,7 @@ var msPerDay = require('../helpers/timeConstants').msPerDay;
var DayFromYear = require('./DayFromYear');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3
// https://262.ecma-international.org/5.1/#sec-15.9.1.3
module.exports = function TimeFromYear(y) {
return msPerDay * DayFromYear(y);
+4 -3
View File
@@ -1,11 +1,12 @@
'use strict';
var mod = require('../helpers/mod');
var modulo = require('./modulo');
var msPerDay = require('../helpers/timeConstants').msPerDay;
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2
// https://262.ecma-international.org/5.1/#sec-15.9.1.2
module.exports = function TimeWithinDay(t) {
return mod(t, msPerDay);
return modulo(t, msPerDay);
};
+1 -1
View File
@@ -1,5 +1,5 @@
'use strict';
// http://www.ecma-international.org/ecma-262/5.1/#sec-9.2
// http://262.ecma-international.org/5.1/#sec-9.2
module.exports = function ToBoolean(value) { return !!value; };
+1 -1
View File
@@ -1,6 +1,6 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var $Date = GetIntrinsic('%Date%');
+1 -1
View File
@@ -2,7 +2,7 @@
var ToUint16 = require('./ToUint16');
// https://www.ecma-international.org/ecma-262/6.0/#sec-toint16
// https://ecma-international.org/ecma-262/6.0/#sec-toint16
module.exports = function ToInt16(argument) {
var int16bit = ToUint16(argument);
+1 -1
View File
@@ -2,7 +2,7 @@
var ToNumber = require('./ToNumber');
// http://www.ecma-international.org/ecma-262/5.1/#sec-9.5
// http://262.ecma-international.org/5.1/#sec-9.5
module.exports = function ToInt32(x) {
return ToNumber(x) >> 0;
+1 -1
View File
@@ -2,7 +2,7 @@
var ToUint8 = require('./ToUint8');
// https://www.ecma-international.org/ecma-262/6.0/#sec-toint8
// https://ecma-international.org/ecma-262/6.0/#sec-toint8
module.exports = function ToInt8(argument) {
var int8bit = ToUint8(argument);
+1 -1
View File
@@ -4,7 +4,7 @@ var ES5ToInteger = require('../5/ToInteger');
var ToNumber = require('./ToNumber');
// https://www.ecma-international.org/ecma-262/6.0/#sec-tointeger
// https://ecma-international.org/ecma-262/6.0/#sec-tointeger
module.exports = function ToInteger(value) {
var number = ToNumber(value);
+8 -8
View File
@@ -1,13 +1,13 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var $Number = GetIntrinsic('%Number%');
var $RegExp = GetIntrinsic('%RegExp%');
var $parseInteger = GetIntrinsic('%parseInt%');
var callBound = require('../helpers/callBound');
var callBound = require('call-bind/callBound');
var regexTester = require('../helpers/regexTester');
var isPrimitive = require('../helpers/isPrimitive');
@@ -34,7 +34,7 @@ var $trim = function (value) {
var ToPrimitive = require('./ToPrimitive');
// https://www.ecma-international.org/ecma-262/6.0/#sec-tonumber
// https://ecma-international.org/ecma-262/6.0/#sec-tonumber
module.exports = function ToNumber(argument) {
var value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number);
@@ -48,12 +48,12 @@ module.exports = function ToNumber(argument) {
return ToNumber($parseInteger($strSlice(value, 2), 8));
} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {
return NaN;
} else {
var trimmed = $trim(value);
if (trimmed !== value) {
return ToNumber(trimmed);
}
}
var trimmed = $trim(value);
if (trimmed !== value) {
return ToNumber(trimmed);
}
}
return $Number(value);
};
+2 -2
View File
@@ -1,12 +1,12 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $Object = GetIntrinsic('%Object%');
var RequireObjectCoercible = require('./RequireObjectCoercible');
// https://www.ecma-international.org/ecma-262/6.0/#sec-toobject
// https://ecma-international.org/ecma-262/6.0/#sec-toobject
module.exports = function ToObject(value) {
RequireObjectCoercible(value);
+1 -1
View File
@@ -2,7 +2,7 @@
var toPrimitive = require('es-to-primitive/es2015');
// https://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive
// https://ecma-international.org/ecma-262/6.0/#sec-toprimitive
module.exports = function ToPrimitive(input) {
if (arguments.length > 1) {
+3 -3
View File
@@ -2,7 +2,7 @@
var has = require('has');
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
@@ -10,7 +10,7 @@ var Type = require('./Type');
var ToBoolean = require('./ToBoolean');
var IsCallable = require('./IsCallable');
// https://ecma-international.org/ecma-262/5.1/#sec-8.10.5
// https://262.ecma-international.org/5.1/#sec-8.10.5
module.exports = function ToPropertyDescriptor(Obj) {
if (Type(Obj) !== 'Object') {
@@ -33,7 +33,7 @@ module.exports = function ToPropertyDescriptor(Obj) {
if (has(Obj, 'get')) {
var getter = Obj.get;
if (typeof getter !== 'undefined' && !IsCallable(getter)) {
throw new TypeError('getter must be a function');
throw new $TypeError('getter must be a function');
}
desc['[[Get]]'] = getter;
}
+2 -2
View File
@@ -1,13 +1,13 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $String = GetIntrinsic('%String%');
var ToPrimitive = require('./ToPrimitive');
var ToString = require('./ToString');
// https://www.ecma-international.org/ecma-262/6.0/#sec-topropertykey
// https://ecma-international.org/ecma-262/6.0/#sec-topropertykey
module.exports = function ToPropertyKey(argument) {
var key = ToPrimitive(argument, $String);
+2 -2
View File
@@ -1,11 +1,11 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var GetIntrinsic = require('get-intrinsic');
var $String = GetIntrinsic('%String%');
var $TypeError = GetIntrinsic('%TypeError%');
// https://www.ecma-international.org/ecma-262/6.0/#sec-tostring
// https://ecma-international.org/ecma-262/6.0/#sec-tostring
module.exports = function ToString(argument) {
if (typeof argument === 'symbol') {
+6 -11
View File
@@ -1,24 +1,19 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $Math = GetIntrinsic('%Math%');
var abs = require('./abs');
var floor = require('./floor');
var modulo = require('./modulo');
var ToNumber = require('./ToNumber');
var $isNaN = require('../helpers/isNaN');
var $isFinite = require('../helpers/isFinite');
var $sign = require('../helpers/sign');
var $mod = require('../helpers/mod');
var $floor = $Math.floor;
var $abs = $Math.abs;
// http://www.ecma-international.org/ecma-262/5.1/#sec-9.7
// http://262.ecma-international.org/5.1/#sec-9.7
module.exports = function ToUint16(value) {
var number = ToNumber(value);
if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; }
var posInt = $sign(number) * $floor($abs(number));
return $mod(posInt, 0x10000);
var posInt = $sign(number) * floor(abs(number));
return modulo(posInt, 0x10000);
};
+1 -1
View File
@@ -2,7 +2,7 @@
var ToNumber = require('./ToNumber');
// http://www.ecma-international.org/ecma-262/5.1/#sec-9.6
// http://262.ecma-international.org/5.1/#sec-9.6
module.exports = function ToUint32(x) {
return ToNumber(x) >>> 0;

Some files were not shown because too many files have changed in this diff Show More