Initial commit
This commit is contained in:
37
node_modules/es-abstract/2017/AbstractEqualityComparison.js
generated
vendored
Normal file
37
node_modules/es-abstract/2017/AbstractEqualityComparison.js
generated
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
'use strict';
|
||||
|
||||
var ToNumber = require('./ToNumber');
|
||||
var ToPrimitive = require('./ToPrimitive');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-abstract-equality-comparison
|
||||
|
||||
module.exports = function AbstractEqualityComparison(x, y) {
|
||||
var xType = Type(x);
|
||||
var yType = Type(y);
|
||||
if (xType === yType) {
|
||||
return x === y; // ES6+ specified this shortcut anyways.
|
||||
}
|
||||
if (x == null && y == null) {
|
||||
return true;
|
||||
}
|
||||
if (xType === 'Number' && yType === 'String') {
|
||||
return AbstractEqualityComparison(x, ToNumber(y));
|
||||
}
|
||||
if (xType === 'String' && yType === 'Number') {
|
||||
return AbstractEqualityComparison(ToNumber(x), y);
|
||||
}
|
||||
if (xType === 'Boolean') {
|
||||
return AbstractEqualityComparison(ToNumber(x), y);
|
||||
}
|
||||
if (yType === 'Boolean') {
|
||||
return AbstractEqualityComparison(x, ToNumber(y));
|
||||
}
|
||||
if ((xType === 'String' || xType === 'Number' || xType === 'Symbol') && yType === 'Object') {
|
||||
return AbstractEqualityComparison(x, ToPrimitive(y));
|
||||
}
|
||||
if (xType === 'Object' && (yType === 'String' || yType === 'Number' || yType === 'Symbol')) {
|
||||
return AbstractEqualityComparison(ToPrimitive(x), y);
|
||||
}
|
||||
return false;
|
||||
};
|
62
node_modules/es-abstract/2017/AbstractRelationalComparison.js
generated
vendored
Normal file
62
node_modules/es-abstract/2017/AbstractRelationalComparison.js
generated
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $Number = GetIntrinsic('%Number%');
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var $isNaN = require('../helpers/isNaN');
|
||||
var $isFinite = require('../helpers/isFinite');
|
||||
var isPrefixOf = require('../helpers/isPrefixOf');
|
||||
|
||||
var ToNumber = require('./ToNumber');
|
||||
var ToPrimitive = require('./ToPrimitive');
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-11.8.5
|
||||
|
||||
// eslint-disable-next-line max-statements
|
||||
module.exports = function AbstractRelationalComparison(x, y, LeftFirst) {
|
||||
if (typeof LeftFirst !== 'boolean') {
|
||||
throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean');
|
||||
}
|
||||
var px;
|
||||
var py;
|
||||
if (LeftFirst) {
|
||||
px = ToPrimitive(x, $Number);
|
||||
py = ToPrimitive(y, $Number);
|
||||
} else {
|
||||
py = ToPrimitive(y, $Number);
|
||||
px = ToPrimitive(x, $Number);
|
||||
}
|
||||
var bothStrings = typeof px === 'string' && typeof py === 'string';
|
||||
if (!bothStrings) {
|
||||
var nx = ToNumber(px);
|
||||
var ny = ToNumber(py);
|
||||
if ($isNaN(nx) || $isNaN(ny)) {
|
||||
return undefined;
|
||||
}
|
||||
if ($isFinite(nx) && $isFinite(ny) && nx === ny) {
|
||||
return false;
|
||||
}
|
||||
if (nx === Infinity) {
|
||||
return false;
|
||||
}
|
||||
if (ny === Infinity) {
|
||||
return true;
|
||||
}
|
||||
if (ny === -Infinity) {
|
||||
return false;
|
||||
}
|
||||
if (nx === -Infinity) {
|
||||
return true;
|
||||
}
|
||||
return nx < ny; // by now, these are both nonzero, finite, and not equal
|
||||
}
|
||||
if (isPrefixOf(py, px)) {
|
||||
return false;
|
||||
}
|
||||
if (isPrefixOf(px, py)) {
|
||||
return true;
|
||||
}
|
||||
return px < py; // both strings, neither a prefix of the other. shortcut for steps c-f
|
||||
};
|
43
node_modules/es-abstract/2017/AdvanceStringIndex.js
generated
vendored
Normal file
43
node_modules/es-abstract/2017/AdvanceStringIndex.js
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
'use strict';
|
||||
|
||||
var isInteger = require('../helpers/isInteger');
|
||||
var isLeadingSurrogate = require('../helpers/isLeadingSurrogate');
|
||||
var isTrailingSurrogate = require('../helpers/isTrailingSurrogate');
|
||||
var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var $charCodeAt = require('call-bind/callBound')('String.prototype.charCodeAt');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-advancestringindex
|
||||
|
||||
module.exports = function AdvanceStringIndex(S, index, unicode) {
|
||||
if (typeof S !== 'string') {
|
||||
throw new $TypeError('Assertion failed: `S` must be a String');
|
||||
}
|
||||
if (!isInteger(index) || index < 0 || index > MAX_SAFE_INTEGER) {
|
||||
throw new $TypeError('Assertion failed: `length` must be an integer >= 0 and <= 2**53');
|
||||
}
|
||||
if (typeof unicode !== 'boolean') {
|
||||
throw new $TypeError('Assertion failed: `unicode` must be a Boolean');
|
||||
}
|
||||
if (!unicode) {
|
||||
return index + 1;
|
||||
}
|
||||
var length = S.length;
|
||||
if ((index + 1) >= length) {
|
||||
return index + 1;
|
||||
}
|
||||
|
||||
var first = $charCodeAt(S, index);
|
||||
if (!isLeadingSurrogate(first)) {
|
||||
return index + 1;
|
||||
}
|
||||
|
||||
var second = $charCodeAt(S, index + 1);
|
||||
if (!isTrailingSurrogate(second)) {
|
||||
return index + 1;
|
||||
}
|
||||
|
||||
return index + 2;
|
||||
};
|
54
node_modules/es-abstract/2017/ArrayCreate.js
generated
vendored
Normal file
54
node_modules/es-abstract/2017/ArrayCreate.js
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $ArrayPrototype = GetIntrinsic('%Array.prototype%');
|
||||
var $RangeError = require('es-errors/range');
|
||||
var $SyntaxError = require('es-errors/syntax');
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var isInteger = require('../helpers/isInteger');
|
||||
|
||||
var hasProto = require('has-proto')();
|
||||
|
||||
var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1;
|
||||
|
||||
var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || (
|
||||
hasProto
|
||||
? function (O, proto) {
|
||||
O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign
|
||||
return O;
|
||||
}
|
||||
: null
|
||||
);
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-arraycreate
|
||||
|
||||
module.exports = function ArrayCreate(length) {
|
||||
if (!isInteger(length) || length < 0) {
|
||||
throw new $TypeError('Assertion failed: `length` must be an integer Number >= 0');
|
||||
}
|
||||
if (length > MAX_ARRAY_LENGTH) {
|
||||
throw new $RangeError('length is greater than (2**32 - 1)');
|
||||
}
|
||||
var proto = arguments.length > 1 ? arguments[1] : $ArrayPrototype;
|
||||
var A = []; // steps 5 - 7, and 9
|
||||
if (proto !== $ArrayPrototype) { // step 8
|
||||
if (!$setProto) {
|
||||
throw new $SyntaxError('ArrayCreate: a `proto` argument that is not `Array.prototype` is not supported in an environment that does not support setting the [[Prototype]]');
|
||||
}
|
||||
$setProto(A, proto);
|
||||
}
|
||||
if (length !== 0) { // bypasses the need for step 2
|
||||
A.length = length;
|
||||
}
|
||||
/* step 10, the above as a shortcut for the below
|
||||
OrdinaryDefineOwnProperty(A, 'length', {
|
||||
'[[Configurable]]': false,
|
||||
'[[Enumerable]]': false,
|
||||
'[[Value]]': length,
|
||||
'[[Writable]]': true
|
||||
});
|
||||
*/
|
||||
return A;
|
||||
};
|
77
node_modules/es-abstract/2017/ArraySetLength.js
generated
vendored
Normal file
77
node_modules/es-abstract/2017/ArraySetLength.js
generated
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
'use strict';
|
||||
|
||||
var $RangeError = require('es-errors/range');
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var assign = require('object.assign');
|
||||
|
||||
var isPropertyDescriptor = require('../helpers/records/property-descriptor');
|
||||
|
||||
var IsArray = require('./IsArray');
|
||||
var IsDataDescriptor = require('./IsDataDescriptor');
|
||||
var OrdinaryDefineOwnProperty = require('./OrdinaryDefineOwnProperty');
|
||||
var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty');
|
||||
var ToNumber = require('./ToNumber');
|
||||
var ToString = require('./ToString');
|
||||
var ToUint32 = require('./ToUint32');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-arraysetlength
|
||||
|
||||
// eslint-disable-next-line max-statements, max-lines-per-function
|
||||
module.exports = function ArraySetLength(A, Desc) {
|
||||
if (!IsArray(A)) {
|
||||
throw new $TypeError('Assertion failed: A must be an Array');
|
||||
}
|
||||
if (!isPropertyDescriptor(Desc)) {
|
||||
throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
|
||||
}
|
||||
if (!('[[Value]]' in Desc)) {
|
||||
return OrdinaryDefineOwnProperty(A, 'length', Desc);
|
||||
}
|
||||
var newLenDesc = assign({}, Desc);
|
||||
var newLen = ToUint32(Desc['[[Value]]']);
|
||||
var numberLen = ToNumber(Desc['[[Value]]']);
|
||||
if (newLen !== numberLen) {
|
||||
throw new $RangeError('Invalid array length');
|
||||
}
|
||||
newLenDesc['[[Value]]'] = newLen;
|
||||
var oldLenDesc = OrdinaryGetOwnProperty(A, 'length');
|
||||
if (!IsDataDescriptor(oldLenDesc)) {
|
||||
throw new $TypeError('Assertion failed: an array had a non-data descriptor on `length`');
|
||||
}
|
||||
var oldLen = oldLenDesc['[[Value]]'];
|
||||
if (newLen >= oldLen) {
|
||||
return OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
|
||||
}
|
||||
if (!oldLenDesc['[[Writable]]']) {
|
||||
return false;
|
||||
}
|
||||
var newWritable;
|
||||
if (!('[[Writable]]' in newLenDesc) || newLenDesc['[[Writable]]']) {
|
||||
newWritable = true;
|
||||
} else {
|
||||
newWritable = false;
|
||||
newLenDesc['[[Writable]]'] = true;
|
||||
}
|
||||
var succeeded = OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
|
||||
if (!succeeded) {
|
||||
return false;
|
||||
}
|
||||
while (newLen < oldLen) {
|
||||
oldLen -= 1;
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
var deleteSucceeded = delete A[ToString(oldLen)];
|
||||
if (!deleteSucceeded) {
|
||||
newLenDesc['[[Value]]'] = oldLen + 1;
|
||||
if (!newWritable) {
|
||||
newLenDesc['[[Writable]]'] = false;
|
||||
OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!newWritable) {
|
||||
return OrdinaryDefineOwnProperty(A, 'length', { '[[Writable]]': false });
|
||||
}
|
||||
return true;
|
||||
};
|
47
node_modules/es-abstract/2017/ArraySpeciesCreate.js
generated
vendored
Normal file
47
node_modules/es-abstract/2017/ArraySpeciesCreate.js
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $Array = GetIntrinsic('%Array%');
|
||||
var $species = GetIntrinsic('%Symbol.species%', true);
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var Get = require('./Get');
|
||||
var IsArray = require('./IsArray');
|
||||
var IsConstructor = require('./IsConstructor');
|
||||
var Type = require('./Type');
|
||||
|
||||
var isInteger = require('../helpers/isInteger');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-arrayspeciescreate
|
||||
|
||||
module.exports = function ArraySpeciesCreate(originalArray, length) {
|
||||
if (!isInteger(length) || length < 0) {
|
||||
throw new $TypeError('Assertion failed: length must be an integer >= 0');
|
||||
}
|
||||
var len = length === 0 ? 0 : length;
|
||||
var C;
|
||||
var isArray = IsArray(originalArray);
|
||||
if (isArray) {
|
||||
C = Get(originalArray, 'constructor');
|
||||
// TODO: figure out how to make a cross-realm normal Array, a same-realm Array
|
||||
// if (IsConstructor(C)) {
|
||||
// if C is another realm's Array, C = undefined
|
||||
// Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ?
|
||||
// }
|
||||
if ($species && Type(C) === 'Object') {
|
||||
C = Get(C, $species);
|
||||
if (C === null) {
|
||||
C = void 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (typeof C === 'undefined') {
|
||||
return $Array(len);
|
||||
}
|
||||
if (!IsConstructor(C)) {
|
||||
throw new $TypeError('C must be a constructor');
|
||||
}
|
||||
return new C(len); // Construct(C, len);
|
||||
};
|
||||
|
20
node_modules/es-abstract/2017/Call.js
generated
vendored
Normal file
20
node_modules/es-abstract/2017/Call.js
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
var callBound = require('call-bind/callBound');
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var IsArray = require('./IsArray');
|
||||
|
||||
var $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('Function.prototype.apply');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-call
|
||||
|
||||
module.exports = function Call(F, V) {
|
||||
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);
|
||||
};
|
19
node_modules/es-abstract/2017/CanonicalNumericIndexString.js
generated
vendored
Normal file
19
node_modules/es-abstract/2017/CanonicalNumericIndexString.js
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var SameValue = require('./SameValue');
|
||||
var ToNumber = require('./ToNumber');
|
||||
var ToString = require('./ToString');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-canonicalnumericindexstring
|
||||
|
||||
module.exports = function CanonicalNumericIndexString(argument) {
|
||||
if (typeof 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;
|
||||
};
|
51
node_modules/es-abstract/2017/Canonicalize.js
generated
vendored
Normal file
51
node_modules/es-abstract/2017/Canonicalize.js
generated
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var callBound = require('call-bind/callBound');
|
||||
var hasOwn = require('hasown');
|
||||
|
||||
var $charCodeAt = callBound('String.prototype.charCodeAt');
|
||||
var $toUpperCase = callBound('String.prototype.toUpperCase');
|
||||
|
||||
var caseFolding = require('../helpers/caseFolding.json');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-runtime-semantics-canonicalize-ch
|
||||
|
||||
module.exports = function Canonicalize(ch, IgnoreCase, Unicode) {
|
||||
if (typeof ch !== 'string') {
|
||||
throw new $TypeError('Assertion failed: `ch` must be a character');
|
||||
}
|
||||
|
||||
if (typeof IgnoreCase !== 'boolean' || typeof Unicode !== 'boolean') {
|
||||
throw new $TypeError('Assertion failed: `IgnoreCase` and `Unicode` must be Booleans');
|
||||
}
|
||||
|
||||
if (!IgnoreCase) {
|
||||
return ch; // step 1
|
||||
}
|
||||
|
||||
if (Unicode) { // step 2
|
||||
if (hasOwn(caseFolding.C, ch)) {
|
||||
return caseFolding.C[ch];
|
||||
}
|
||||
if (hasOwn(caseFolding.S, ch)) {
|
||||
return caseFolding.S[ch];
|
||||
}
|
||||
return ch; // step 2.b
|
||||
}
|
||||
|
||||
var u = $toUpperCase(ch); // step 2
|
||||
|
||||
if (u.length !== 1) {
|
||||
return ch; // step 3
|
||||
}
|
||||
|
||||
var cu = u; // step 4
|
||||
|
||||
if ($charCodeAt(ch, 0) >= 128 && $charCodeAt(cu, 0) < 128) {
|
||||
return ch; // step 5
|
||||
}
|
||||
|
||||
return cu;
|
||||
};
|
31
node_modules/es-abstract/2017/CharacterRange.js
generated
vendored
Normal file
31
node_modules/es-abstract/2017/CharacterRange.js
generated
vendored
Normal 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 = require('es-errors/type');
|
||||
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;
|
||||
};
|
43
node_modules/es-abstract/2017/CompletePropertyDescriptor.js
generated
vendored
Normal file
43
node_modules/es-abstract/2017/CompletePropertyDescriptor.js
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var hasOwn = require('hasown');
|
||||
|
||||
var IsDataDescriptor = require('./IsDataDescriptor');
|
||||
var IsGenericDescriptor = require('./IsGenericDescriptor');
|
||||
|
||||
var isPropertyDescriptor = require('../helpers/records/property-descriptor');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-completepropertydescriptor
|
||||
|
||||
module.exports = function CompletePropertyDescriptor(Desc) {
|
||||
if (!isPropertyDescriptor(Desc)) {
|
||||
throw new $TypeError('Assertion failed: `Desc` must be a Property Descriptor');
|
||||
}
|
||||
|
||||
/* eslint no-param-reassign: 0 */
|
||||
|
||||
if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) {
|
||||
if (!hasOwn(Desc, '[[Value]]')) {
|
||||
Desc['[[Value]]'] = void 0;
|
||||
}
|
||||
if (!hasOwn(Desc, '[[Writable]]')) {
|
||||
Desc['[[Writable]]'] = false;
|
||||
}
|
||||
} else {
|
||||
if (!hasOwn(Desc, '[[Get]]')) {
|
||||
Desc['[[Get]]'] = void 0;
|
||||
}
|
||||
if (!hasOwn(Desc, '[[Set]]')) {
|
||||
Desc['[[Set]]'] = void 0;
|
||||
}
|
||||
}
|
||||
if (!hasOwn(Desc, '[[Enumerable]]')) {
|
||||
Desc['[[Enumerable]]'] = false;
|
||||
}
|
||||
if (!hasOwn(Desc, '[[Configurable]]')) {
|
||||
Desc['[[Configurable]]'] = false;
|
||||
}
|
||||
return Desc;
|
||||
};
|
51
node_modules/es-abstract/2017/CompletionRecord.js
generated
vendored
Normal file
51
node_modules/es-abstract/2017/CompletionRecord.js
generated
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
'use strict';
|
||||
|
||||
var $SyntaxError = require('es-errors/syntax');
|
||||
|
||||
var SLOT = require('internal-slot');
|
||||
|
||||
// https://262.ecma-international.org/7.0/#sec-completion-record-specification-type
|
||||
|
||||
var CompletionRecord = function CompletionRecord(type, value) {
|
||||
if (!(this instanceof CompletionRecord)) {
|
||||
return new CompletionRecord(type, value);
|
||||
}
|
||||
if (type !== 'normal' && type !== 'break' && type !== 'continue' && type !== 'return' && type !== 'throw') {
|
||||
throw new $SyntaxError('Assertion failed: `type` must be one of "normal", "break", "continue", "return", or "throw"');
|
||||
}
|
||||
SLOT.set(this, '[[Type]]', type);
|
||||
SLOT.set(this, '[[Value]]', value);
|
||||
// [[Target]] slot?
|
||||
};
|
||||
|
||||
CompletionRecord.prototype.type = function Type() {
|
||||
return SLOT.get(this, '[[Type]]');
|
||||
};
|
||||
|
||||
CompletionRecord.prototype.value = function Value() {
|
||||
return SLOT.get(this, '[[Value]]');
|
||||
};
|
||||
|
||||
CompletionRecord.prototype['?'] = function ReturnIfAbrupt() {
|
||||
var type = SLOT.get(this, '[[Type]]');
|
||||
var value = SLOT.get(this, '[[Value]]');
|
||||
|
||||
if (type === 'normal') {
|
||||
return value;
|
||||
}
|
||||
if (type === 'throw') {
|
||||
throw value;
|
||||
}
|
||||
throw new $SyntaxError('Completion Record is not of type "normal" or "throw": other types not supported');
|
||||
};
|
||||
|
||||
CompletionRecord.prototype['!'] = function assert() {
|
||||
var type = SLOT.get(this, '[[Type]]');
|
||||
|
||||
if (type !== 'normal') {
|
||||
throw new $SyntaxError('Assertion failed: Completion Record is not of type "normal"');
|
||||
}
|
||||
return SLOT.get(this, '[[Value]]');
|
||||
};
|
||||
|
||||
module.exports = CompletionRecord;
|
25
node_modules/es-abstract/2017/CreateDataProperty.js
generated
vendored
Normal file
25
node_modules/es-abstract/2017/CreateDataProperty.js
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
var OrdinaryDefineOwnProperty = require('./OrdinaryDefineOwnProperty');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-createdataproperty
|
||||
|
||||
module.exports = function CreateDataProperty(O, P, V) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
|
||||
}
|
||||
var newDesc = {
|
||||
'[[Configurable]]': true,
|
||||
'[[Enumerable]]': true,
|
||||
'[[Value]]': V,
|
||||
'[[Writable]]': true
|
||||
};
|
||||
return OrdinaryDefineOwnProperty(O, P, newDesc);
|
||||
};
|
23
node_modules/es-abstract/2017/CreateDataPropertyOrThrow.js
generated
vendored
Normal file
23
node_modules/es-abstract/2017/CreateDataPropertyOrThrow.js
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var CreateDataProperty = require('./CreateDataProperty');
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
var Type = require('./Type');
|
||||
|
||||
// // https://262.ecma-international.org/6.0/#sec-createdatapropertyorthrow
|
||||
|
||||
module.exports = function CreateDataPropertyOrThrow(O, P, V) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
|
||||
}
|
||||
var success = CreateDataProperty(O, P, V);
|
||||
if (!success) {
|
||||
throw new $TypeError('unable to create data property');
|
||||
}
|
||||
return success;
|
||||
};
|
27
node_modules/es-abstract/2017/CreateHTML.js
generated
vendored
Normal file
27
node_modules/es-abstract/2017/CreateHTML.js
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var callBound = require('call-bind/callBound');
|
||||
|
||||
var $replace = callBound('String.prototype.replace');
|
||||
|
||||
var RequireObjectCoercible = require('./RequireObjectCoercible');
|
||||
var ToString = require('./ToString');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-createhtml
|
||||
|
||||
module.exports = function CreateHTML(string, tag, attribute, value) {
|
||||
if (typeof tag !== 'string' || typeof attribute !== 'string') {
|
||||
throw new $TypeError('Assertion failed: `tag` and `attribute` must be strings');
|
||||
}
|
||||
var str = RequireObjectCoercible(string);
|
||||
var S = ToString(str);
|
||||
var p1 = '<' + tag;
|
||||
if (attribute !== '') {
|
||||
var V = ToString(value);
|
||||
var escapedV = $replace(V, /\x22/g, '"');
|
||||
p1 += '\x20' + attribute + '\x3D\x22' + escapedV + '\x22';
|
||||
}
|
||||
return p1 + '>' + S + '</' + tag + '>';
|
||||
};
|
15
node_modules/es-abstract/2017/CreateIterResultObject.js
generated
vendored
Normal file
15
node_modules/es-abstract/2017/CreateIterResultObject.js
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-createiterresultobject
|
||||
|
||||
module.exports = function CreateIterResultObject(value, done) {
|
||||
if (typeof done !== 'boolean') {
|
||||
throw new $TypeError('Assertion failed: Type(done) is not Boolean');
|
||||
}
|
||||
return {
|
||||
value: value,
|
||||
done: done
|
||||
};
|
||||
};
|
43
node_modules/es-abstract/2017/CreateListFromArrayLike.js
generated
vendored
Normal file
43
node_modules/es-abstract/2017/CreateListFromArrayLike.js
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
'use strict';
|
||||
|
||||
var callBound = require('call-bind/callBound');
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
var $indexOf = callBound('Array.prototype.indexOf', true) || callBound('String.prototype.indexOf');
|
||||
var $push = callBound('Array.prototype.push');
|
||||
|
||||
var Get = require('./Get');
|
||||
var IsArray = require('./IsArray');
|
||||
var ToLength = require('./ToLength');
|
||||
var ToString = require('./ToString');
|
||||
var Type = require('./Type');
|
||||
|
||||
var defaultElementTypes = ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'Object'];
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-createlistfromarraylike
|
||||
module.exports = function CreateListFromArrayLike(obj) {
|
||||
var elementTypes = arguments.length > 1
|
||||
? arguments[1]
|
||||
: defaultElementTypes;
|
||||
|
||||
if (Type(obj) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: `obj` must be an Object');
|
||||
}
|
||||
if (!IsArray(elementTypes)) {
|
||||
throw new $TypeError('Assertion failed: `elementTypes`, if provided, must be an array');
|
||||
}
|
||||
var len = ToLength(Get(obj, 'length'));
|
||||
var list = [];
|
||||
var index = 0;
|
||||
while (index < len) {
|
||||
var indexName = ToString(index);
|
||||
var next = Get(obj, indexName);
|
||||
var nextType = Type(next);
|
||||
if ($indexOf(elementTypes, nextType) < 0) {
|
||||
throw new $TypeError('item type ' + nextType + ' is not a valid elementType');
|
||||
}
|
||||
$push(list, next);
|
||||
index += 1;
|
||||
}
|
||||
return list;
|
||||
};
|
38
node_modules/es-abstract/2017/CreateMethodProperty.js
generated
vendored
Normal file
38
node_modules/es-abstract/2017/CreateMethodProperty.js
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var DefineOwnProperty = require('../helpers/DefineOwnProperty');
|
||||
|
||||
var FromPropertyDescriptor = require('./FromPropertyDescriptor');
|
||||
var IsDataDescriptor = require('./IsDataDescriptor');
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
var SameValue = require('./SameValue');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-createmethodproperty
|
||||
|
||||
module.exports = function CreateMethodProperty(O, P, V) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
|
||||
}
|
||||
|
||||
var newDesc = {
|
||||
'[[Configurable]]': true,
|
||||
'[[Enumerable]]': false,
|
||||
'[[Value]]': V,
|
||||
'[[Writable]]': true
|
||||
};
|
||||
return DefineOwnProperty(
|
||||
IsDataDescriptor,
|
||||
SameValue,
|
||||
FromPropertyDescriptor,
|
||||
O,
|
||||
P,
|
||||
newDesc
|
||||
);
|
||||
};
|
52
node_modules/es-abstract/2017/DateFromTime.js
generated
vendored
Normal file
52
node_modules/es-abstract/2017/DateFromTime.js
generated
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
'use strict';
|
||||
|
||||
var $EvalError = require('es-errors/eval');
|
||||
|
||||
var DayWithinYear = require('./DayWithinYear');
|
||||
var InLeapYear = require('./InLeapYear');
|
||||
var MonthFromTime = require('./MonthFromTime');
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-15.9.1.5
|
||||
|
||||
module.exports = function DateFromTime(t) {
|
||||
var m = MonthFromTime(t);
|
||||
var d = DayWithinYear(t);
|
||||
if (m === 0) {
|
||||
return d + 1;
|
||||
}
|
||||
if (m === 1) {
|
||||
return d - 30;
|
||||
}
|
||||
var leap = InLeapYear(t);
|
||||
if (m === 2) {
|
||||
return d - 58 - leap;
|
||||
}
|
||||
if (m === 3) {
|
||||
return d - 89 - leap;
|
||||
}
|
||||
if (m === 4) {
|
||||
return d - 119 - leap;
|
||||
}
|
||||
if (m === 5) {
|
||||
return d - 150 - leap;
|
||||
}
|
||||
if (m === 6) {
|
||||
return d - 180 - leap;
|
||||
}
|
||||
if (m === 7) {
|
||||
return d - 211 - leap;
|
||||
}
|
||||
if (m === 8) {
|
||||
return d - 242 - leap;
|
||||
}
|
||||
if (m === 9) {
|
||||
return d - 272 - leap;
|
||||
}
|
||||
if (m === 10) {
|
||||
return d - 303 - leap;
|
||||
}
|
||||
if (m === 11) {
|
||||
return d - 333 - leap;
|
||||
}
|
||||
throw new $EvalError('Assertion failed: MonthFromTime returned an impossible value: ' + m);
|
||||
};
|
11
node_modules/es-abstract/2017/Day.js
generated
vendored
Normal file
11
node_modules/es-abstract/2017/Day.js
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
'use strict';
|
||||
|
||||
var floor = require('./floor');
|
||||
|
||||
var msPerDay = require('../helpers/timeConstants').msPerDay;
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-15.9.1.2
|
||||
|
||||
module.exports = function Day(t) {
|
||||
return floor(t / msPerDay);
|
||||
};
|
10
node_modules/es-abstract/2017/DayFromYear.js
generated
vendored
Normal file
10
node_modules/es-abstract/2017/DayFromYear.js
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
'use strict';
|
||||
|
||||
var floor = require('./floor');
|
||||
|
||||
// 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);
|
||||
};
|
||||
|
11
node_modules/es-abstract/2017/DayWithinYear.js
generated
vendored
Normal file
11
node_modules/es-abstract/2017/DayWithinYear.js
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
'use strict';
|
||||
|
||||
var Day = require('./Day');
|
||||
var DayFromYear = require('./DayFromYear');
|
||||
var YearFromTime = require('./YearFromTime');
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-15.9.1.4
|
||||
|
||||
module.exports = function DayWithinYear(t) {
|
||||
return Day(t) - DayFromYear(YearFromTime(t));
|
||||
};
|
18
node_modules/es-abstract/2017/DaysInYear.js
generated
vendored
Normal file
18
node_modules/es-abstract/2017/DaysInYear.js
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
'use strict';
|
||||
|
||||
var modulo = require('./modulo');
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-15.9.1.3
|
||||
|
||||
module.exports = function DaysInYear(y) {
|
||||
if (modulo(y, 4) !== 0) {
|
||||
return 365;
|
||||
}
|
||||
if (modulo(y, 100) !== 0) {
|
||||
return 366;
|
||||
}
|
||||
if (modulo(y, 400) !== 0) {
|
||||
return 365;
|
||||
}
|
||||
return 366;
|
||||
};
|
39
node_modules/es-abstract/2017/DefinePropertyOrThrow.js
generated
vendored
Normal file
39
node_modules/es-abstract/2017/DefinePropertyOrThrow.js
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var isPropertyDescriptor = require('../helpers/records/property-descriptor');
|
||||
var DefineOwnProperty = require('../helpers/DefineOwnProperty');
|
||||
|
||||
var FromPropertyDescriptor = require('./FromPropertyDescriptor');
|
||||
var IsDataDescriptor = require('./IsDataDescriptor');
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
var SameValue = require('./SameValue');
|
||||
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-definepropertyorthrow
|
||||
|
||||
module.exports = function DefinePropertyOrThrow(O, P, desc) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
|
||||
}
|
||||
|
||||
var Desc = isPropertyDescriptor(desc) ? desc : ToPropertyDescriptor(desc);
|
||||
if (!isPropertyDescriptor(Desc)) {
|
||||
throw new $TypeError('Assertion failed: Desc is not a valid Property Descriptor');
|
||||
}
|
||||
|
||||
return DefineOwnProperty(
|
||||
IsDataDescriptor,
|
||||
SameValue,
|
||||
FromPropertyDescriptor,
|
||||
O,
|
||||
P,
|
||||
Desc
|
||||
);
|
||||
};
|
25
node_modules/es-abstract/2017/DeletePropertyOrThrow.js
generated
vendored
Normal file
25
node_modules/es-abstract/2017/DeletePropertyOrThrow.js
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-deletepropertyorthrow
|
||||
|
||||
module.exports = function DeletePropertyOrThrow(O, P) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
var success = delete O[P];
|
||||
if (!success) {
|
||||
throw new $TypeError('Attempt to delete property failed.');
|
||||
}
|
||||
return success;
|
||||
};
|
39
node_modules/es-abstract/2017/DetachArrayBuffer.js
generated
vendored
Normal file
39
node_modules/es-abstract/2017/DetachArrayBuffer.js
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
'use strict';
|
||||
|
||||
var $SyntaxError = require('es-errors/syntax');
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var IsDetachedBuffer = require('./IsDetachedBuffer');
|
||||
|
||||
var isArrayBuffer = require('is-array-buffer');
|
||||
var isSharedArrayBuffer = require('is-shared-array-buffer');
|
||||
|
||||
var MessageChannel;
|
||||
try {
|
||||
// eslint-disable-next-line global-require
|
||||
MessageChannel = require('worker_threads').MessageChannel; // node 11.7+
|
||||
} catch (e) { /**/ }
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-detacharraybuffer
|
||||
|
||||
/* globals postMessage */
|
||||
|
||||
module.exports = function DetachArrayBuffer(arrayBuffer) {
|
||||
if (!isArrayBuffer(arrayBuffer) || isSharedArrayBuffer(arrayBuffer)) {
|
||||
throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot, and not a Shared Array Buffer');
|
||||
}
|
||||
|
||||
if (!IsDetachedBuffer(arrayBuffer)) { // node v21.0.0+ throws when you structuredClone a detached buffer
|
||||
if (typeof structuredClone === 'function') {
|
||||
structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
|
||||
} else if (typeof postMessage === 'function') {
|
||||
postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
|
||||
} else if (MessageChannel) {
|
||||
(new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
|
||||
} else {
|
||||
throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
43
node_modules/es-abstract/2017/EnumerableOwnProperties.js
generated
vendored
Normal file
43
node_modules/es-abstract/2017/EnumerableOwnProperties.js
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var objectKeys = require('object-keys');
|
||||
|
||||
var callBound = require('call-bind/callBound');
|
||||
|
||||
var callBind = require('call-bind');
|
||||
|
||||
var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
|
||||
var $pushApply = callBind.apply(GetIntrinsic('%Array.prototype.push%'));
|
||||
|
||||
var forEach = require('../helpers/forEach');
|
||||
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-enumerableownproperties
|
||||
|
||||
module.exports = function EnumerableOwnProperties(O, kind) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
|
||||
var keys = objectKeys(O);
|
||||
if (kind === 'key') {
|
||||
return keys;
|
||||
}
|
||||
if (kind === 'value' || kind === 'key+value') {
|
||||
var results = [];
|
||||
forEach(keys, function (key) {
|
||||
if ($isEnumerable(O, key)) {
|
||||
$pushApply(results, [
|
||||
kind === 'value' ? O[key] : [key, O[key]]
|
||||
]);
|
||||
}
|
||||
});
|
||||
return results;
|
||||
}
|
||||
throw new $TypeError('Assertion failed: "kind" is not "key", "value", or "key+value": ' + kind);
|
||||
};
|
16
node_modules/es-abstract/2017/FromPropertyDescriptor.js
generated
vendored
Normal file
16
node_modules/es-abstract/2017/FromPropertyDescriptor.js
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var isPropertyDescriptor = require('../helpers/records/property-descriptor');
|
||||
var fromPropertyDescriptor = require('../helpers/fromPropertyDescriptor');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-frompropertydescriptor
|
||||
|
||||
module.exports = function FromPropertyDescriptor(Desc) {
|
||||
if (typeof Desc !== 'undefined' && !isPropertyDescriptor(Desc)) {
|
||||
throw new $TypeError('Assertion failed: `Desc` must be a Property Descriptor');
|
||||
}
|
||||
|
||||
return fromPropertyDescriptor(Desc);
|
||||
};
|
23
node_modules/es-abstract/2017/Get.js
generated
vendored
Normal file
23
node_modules/es-abstract/2017/Get.js
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var inspect = require('object-inspect');
|
||||
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-get-o-p
|
||||
|
||||
module.exports = function Get(O, P) {
|
||||
// 7.3.1.1
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
// 7.3.1.2
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));
|
||||
}
|
||||
// 7.3.1.3
|
||||
return O[P];
|
||||
};
|
9
node_modules/es-abstract/2017/GetGlobalObject.js
generated
vendored
Normal file
9
node_modules/es-abstract/2017/GetGlobalObject.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
'use strict';
|
||||
|
||||
var getGlobal = require('globalthis/polyfill');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-getglobalobject
|
||||
|
||||
module.exports = function GetGlobalObject() {
|
||||
return getGlobal();
|
||||
};
|
32
node_modules/es-abstract/2017/GetIterator.js
generated
vendored
Normal file
32
node_modules/es-abstract/2017/GetIterator.js
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var getIteratorMethod = require('../helpers/getIteratorMethod');
|
||||
var AdvanceStringIndex = require('./AdvanceStringIndex');
|
||||
var Call = require('./Call');
|
||||
var GetMethod = require('./GetMethod');
|
||||
var IsArray = require('./IsArray');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-getiterator
|
||||
|
||||
module.exports = function GetIterator(obj, method) {
|
||||
var actualMethod = method;
|
||||
if (arguments.length < 2) {
|
||||
actualMethod = getIteratorMethod(
|
||||
{
|
||||
AdvanceStringIndex: AdvanceStringIndex,
|
||||
GetMethod: GetMethod,
|
||||
IsArray: IsArray
|
||||
},
|
||||
obj
|
||||
);
|
||||
}
|
||||
var iterator = Call(actualMethod, obj);
|
||||
if (Type(iterator) !== 'Object') {
|
||||
throw new $TypeError('iterator must return an object');
|
||||
}
|
||||
|
||||
return iterator;
|
||||
};
|
34
node_modules/es-abstract/2017/GetMethod.js
generated
vendored
Normal file
34
node_modules/es-abstract/2017/GetMethod.js
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var GetV = require('./GetV');
|
||||
var IsCallable = require('./IsCallable');
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
|
||||
var inspect = require('object-inspect');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-getmethod
|
||||
|
||||
module.exports = function GetMethod(O, P) {
|
||||
// 7.3.9.1
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
|
||||
}
|
||||
|
||||
// 7.3.9.2
|
||||
var func = GetV(O, P);
|
||||
|
||||
// 7.3.9.4
|
||||
if (func == null) {
|
||||
return void 0;
|
||||
}
|
||||
|
||||
// 7.3.9.5
|
||||
if (!IsCallable(func)) {
|
||||
throw new $TypeError(inspect(P) + ' is not a function: ' + inspect(func));
|
||||
}
|
||||
|
||||
// 7.3.9.6
|
||||
return func;
|
||||
};
|
31
node_modules/es-abstract/2017/GetOwnPropertyKeys.js
generated
vendored
Normal file
31
node_modules/es-abstract/2017/GetOwnPropertyKeys.js
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var hasSymbols = require('has-symbols')();
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
|
||||
var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%', true);
|
||||
var keys = require('object-keys');
|
||||
|
||||
var esType = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-getownpropertykeys
|
||||
|
||||
module.exports = function GetOwnPropertyKeys(O, Type) {
|
||||
if (esType(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
if (Type === 'Symbol') {
|
||||
return $gOPS ? $gOPS(O) : [];
|
||||
}
|
||||
if (Type === 'String') {
|
||||
if (!$gOPN) {
|
||||
return keys(O);
|
||||
}
|
||||
return $gOPN(O);
|
||||
}
|
||||
throw new $TypeError('Assertion failed: `Type` must be `"String"` or `"Symbol"`');
|
||||
};
|
32
node_modules/es-abstract/2017/GetPrototypeFromConstructor.js
generated
vendored
Normal file
32
node_modules/es-abstract/2017/GetPrototypeFromConstructor.js
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $Function = GetIntrinsic('%Function%');
|
||||
var $TypeError = require('es-errors/type');
|
||||
var $SyntaxError = require('es-errors/syntax');
|
||||
|
||||
var Get = require('./Get');
|
||||
var IsConstructor = require('./IsConstructor');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-getprototypefromconstructor
|
||||
|
||||
module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) {
|
||||
var intrinsic = GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic
|
||||
if (Type(intrinsic) !== 'Object') {
|
||||
throw new $TypeError('intrinsicDefaultProto must be an object');
|
||||
}
|
||||
if (!IsConstructor(constructor)) {
|
||||
throw new $TypeError('Assertion failed: `constructor` must be a constructor');
|
||||
}
|
||||
var proto = Get(constructor, 'prototype');
|
||||
if (Type(proto) !== 'Object') {
|
||||
if (!(constructor instanceof $Function)) {
|
||||
// ignore other realms, for now
|
||||
throw new $SyntaxError('cross-realm constructors not currently supported');
|
||||
}
|
||||
proto = intrinsic;
|
||||
}
|
||||
return proto;
|
||||
};
|
99
node_modules/es-abstract/2017/GetSubstitution.js
generated
vendored
Normal file
99
node_modules/es-abstract/2017/GetSubstitution.js
generated
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
var $parseInt = GetIntrinsic('%parseInt%');
|
||||
|
||||
var inspect = require('object-inspect');
|
||||
|
||||
var regexTester = require('safe-regex-test');
|
||||
var callBound = require('call-bind/callBound');
|
||||
var every = require('../helpers/every');
|
||||
|
||||
var isDigit = regexTester(/^[0-9]$/);
|
||||
|
||||
var $charAt = callBound('String.prototype.charAt');
|
||||
var $strSlice = callBound('String.prototype.slice');
|
||||
|
||||
var IsArray = require('./IsArray');
|
||||
|
||||
var isInteger = require('../helpers/isInteger');
|
||||
var isStringOrUndefined = require('../helpers/isStringOrUndefined');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-getsubstitution
|
||||
|
||||
// eslint-disable-next-line max-statements, max-lines-per-function
|
||||
module.exports = function GetSubstitution(matched, str, position, captures, replacement) {
|
||||
if (typeof matched !== 'string') {
|
||||
throw new $TypeError('Assertion failed: `matched` must be a String');
|
||||
}
|
||||
var matchLength = matched.length;
|
||||
|
||||
if (typeof str !== 'string') {
|
||||
throw new $TypeError('Assertion failed: `str` must be a String');
|
||||
}
|
||||
var stringLength = str.length;
|
||||
|
||||
if (!isInteger(position) || position < 0 || position > stringLength) {
|
||||
throw new $TypeError('Assertion failed: `position` must be a nonnegative integer, and less than or equal to the length of `string`, got ' + inspect(position));
|
||||
}
|
||||
|
||||
if (!IsArray(captures) || !every(captures, isStringOrUndefined)) {
|
||||
throw new $TypeError('Assertion failed: `captures` must be a List of Strings, got ' + inspect(captures));
|
||||
}
|
||||
|
||||
if (typeof replacement !== 'string') {
|
||||
throw new $TypeError('Assertion failed: `replacement` must be a String');
|
||||
}
|
||||
|
||||
var tailPos = position + matchLength;
|
||||
var m = captures.length;
|
||||
|
||||
var result = '';
|
||||
for (var i = 0; i < replacement.length; i += 1) {
|
||||
// if this is a $, and it's not the end of the replacement
|
||||
var current = $charAt(replacement, i);
|
||||
var isLast = (i + 1) >= replacement.length;
|
||||
var nextIsLast = (i + 2) >= replacement.length;
|
||||
if (current === '$' && !isLast) {
|
||||
var next = $charAt(replacement, i + 1);
|
||||
if (next === '$') {
|
||||
result += '$';
|
||||
i += 1;
|
||||
} else if (next === '&') {
|
||||
result += matched;
|
||||
i += 1;
|
||||
} else if (next === '`') {
|
||||
result += position === 0 ? '' : $strSlice(str, 0, position - 1);
|
||||
i += 1;
|
||||
} else if (next === "'") {
|
||||
result += tailPos >= stringLength ? '' : $strSlice(str, tailPos);
|
||||
i += 1;
|
||||
} else {
|
||||
var nextNext = nextIsLast ? null : $charAt(replacement, i + 2);
|
||||
if (isDigit(next) && next !== '0' && (nextIsLast || !isDigit(nextNext))) {
|
||||
// $1 through $9, and not followed by a digit
|
||||
var n = $parseInt(next, 10);
|
||||
// if (n > m, impl-defined)
|
||||
result += n <= m && typeof 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 && typeof captures[nnI] === 'undefined' ? '' : captures[nnI];
|
||||
i += 2;
|
||||
} else {
|
||||
result += '$';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// the final $, or else not a $
|
||||
result += $charAt(replacement, i);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
};
|
23
node_modules/es-abstract/2017/GetV.js
generated
vendored
Normal file
23
node_modules/es-abstract/2017/GetV.js
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var inspect = require('object-inspect');
|
||||
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
// var ToObject = require('./ToObject');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-getv
|
||||
|
||||
module.exports = function GetV(V, P) {
|
||||
// 7.3.2.1
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));
|
||||
}
|
||||
|
||||
// 7.3.2.2-3
|
||||
// var O = ToObject(V);
|
||||
|
||||
// 7.3.2.4
|
||||
return V[P];
|
||||
};
|
97
node_modules/es-abstract/2017/GetValueFromBuffer.js
generated
vendored
Normal file
97
node_modules/es-abstract/2017/GetValueFromBuffer.js
generated
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $SyntaxError = require('es-errors/syntax');
|
||||
var $TypeError = require('es-errors/type');
|
||||
var $Uint8Array = GetIntrinsic('%Uint8Array%', true);
|
||||
|
||||
var callBound = require('call-bind/callBound');
|
||||
|
||||
var $slice = callBound('Array.prototype.slice');
|
||||
|
||||
var isInteger = require('../helpers/isInteger');
|
||||
|
||||
var IsDetachedBuffer = require('./IsDetachedBuffer');
|
||||
var RawBytesToNumber = require('./RawBytesToNumber');
|
||||
|
||||
var isArrayBuffer = require('is-array-buffer');
|
||||
var isSharedArrayBuffer = require('is-shared-array-buffer');
|
||||
var safeConcat = require('safe-array-concat');
|
||||
|
||||
var tableTAO = require('./tables/typed-array-objects');
|
||||
|
||||
var defaultEndianness = require('../helpers/defaultEndianness');
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-getvaluefrombuffer
|
||||
|
||||
module.exports = function GetValueFromBuffer(arrayBuffer, byteIndex, type, isTypedArray, order) {
|
||||
var isSAB = isSharedArrayBuffer(arrayBuffer);
|
||||
if (!isArrayBuffer(arrayBuffer) && !isSAB) {
|
||||
throw new $TypeError('Assertion failed: `arrayBuffer` must be an ArrayBuffer or a SharedArrayBuffer');
|
||||
}
|
||||
|
||||
if (!isInteger(byteIndex)) {
|
||||
throw new $TypeError('Assertion failed: `byteIndex` must be an integer');
|
||||
}
|
||||
|
||||
if (typeof type !== 'string') {
|
||||
throw new $TypeError('Assertion failed: `type` must be a string');
|
||||
}
|
||||
|
||||
if (typeof isTypedArray !== 'boolean') {
|
||||
throw new $TypeError('Assertion failed: `isTypedArray` must be a boolean');
|
||||
}
|
||||
|
||||
if (typeof order !== 'string') {
|
||||
throw new $TypeError('Assertion failed: `order` must be a string');
|
||||
}
|
||||
|
||||
if (arguments.length > 5 && typeof arguments[5] !== 'boolean') {
|
||||
throw new $TypeError('Assertion failed: `isLittleEndian` must be a boolean, if present');
|
||||
}
|
||||
|
||||
if (IsDetachedBuffer(arrayBuffer)) {
|
||||
throw new $TypeError('Assertion failed: `arrayBuffer` is detached'); // step 1
|
||||
}
|
||||
|
||||
// 2. Assert: There are sufficient bytes in arrayBuffer starting at byteIndex to represent a value of type.
|
||||
|
||||
if (byteIndex < 0) {
|
||||
throw new $TypeError('Assertion failed: `byteIndex` must be non-negative'); // step 3
|
||||
}
|
||||
|
||||
// 4. Let block be arrayBuffer.[[ArrayBufferData]].
|
||||
|
||||
var elementSize = tableTAO.size['$' + type]; // step 5
|
||||
if (!elementSize) {
|
||||
throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "Float32", or "Float64"');
|
||||
}
|
||||
|
||||
var rawValue;
|
||||
if (isSAB) { // step 6
|
||||
/*
|
||||
a. Let execution be the [[CandidateExecution]] field of the surrounding agent's Agent Record.
|
||||
b. Let eventList be the [[EventList]] field of the element in execution.[[EventLists]] whose [[AgentSignifier]] is AgentSignifier().
|
||||
c. If isTypedArray is true and type is "Int8", "Uint8", "Int16", "Uint16", "Int32", or "Uint32", let noTear be true; otherwise let noTear be false.
|
||||
d. Let rawValue be a List of length elementSize of nondeterministically chosen byte values.
|
||||
e. NOTE: In implementations, rawValue is the result of a non-atomic or atomic read instruction on the underlying hardware. The nondeterminism is a semantic prescription of the memory model to describe observable behaviour of hardware with weak consistency.
|
||||
f. Let readEvent be ReadSharedMemory{ [[Order]]: order, [[NoTear]]: noTear, [[Block]]: block, [[ByteIndex]]: byteIndex, [[ElementSize]]: elementSize }.
|
||||
g. Append readEvent to eventList.
|
||||
h. Append Chosen Value Record { [[Event]]: readEvent, [[ChosenValue]]: rawValue } to execution.[[ChosenValues]].
|
||||
*/
|
||||
throw new $SyntaxError('TODO: support SharedArrayBuffers');
|
||||
} else {
|
||||
// 7. Let rawValue be a List of elementSize containing, in order, the elementSize sequence of bytes starting with block[byteIndex].
|
||||
rawValue = $slice(new $Uint8Array(arrayBuffer, byteIndex), 0, elementSize); // step 6
|
||||
}
|
||||
|
||||
// 8. If isLittleEndian is not present, set isLittleEndian to either true or false. The choice is implementation dependent and should be the alternative that is most efficient for the implementation. An implementation must use the same value each time this step is executed and the same value must be used for the corresponding step in the SetValueInBuffer abstract operation.
|
||||
var isLittleEndian = arguments.length > 5 ? arguments[5] : defaultEndianness === 'little'; // step 8
|
||||
|
||||
var bytes = isLittleEndian
|
||||
? $slice(safeConcat([0, 0, 0, 0, 0, 0, 0, 0], rawValue), -elementSize)
|
||||
: $slice(safeConcat(rawValue, [0, 0, 0, 0, 0, 0, 0, 0]), 0, elementSize);
|
||||
|
||||
return RawBytesToNumber(type, bytes, isLittleEndian);
|
||||
};
|
20
node_modules/es-abstract/2017/HasOwnProperty.js
generated
vendored
Normal file
20
node_modules/es-abstract/2017/HasOwnProperty.js
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var hasOwn = require('hasown');
|
||||
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-hasownproperty
|
||||
|
||||
module.exports = function HasOwnProperty(O, P) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: `O` must be an Object');
|
||||
}
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: `P` must be a Property Key');
|
||||
}
|
||||
return hasOwn(O, P);
|
||||
};
|
18
node_modules/es-abstract/2017/HasProperty.js
generated
vendored
Normal file
18
node_modules/es-abstract/2017/HasProperty.js
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-hasproperty
|
||||
|
||||
module.exports = function HasProperty(O, P) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: `O` must be an Object');
|
||||
}
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: `P` must be a Property Key');
|
||||
}
|
||||
return P in O;
|
||||
};
|
14
node_modules/es-abstract/2017/HourFromTime.js
generated
vendored
Normal file
14
node_modules/es-abstract/2017/HourFromTime.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
'use strict';
|
||||
|
||||
var floor = require('./floor');
|
||||
var modulo = require('./modulo');
|
||||
|
||||
var timeConstants = require('../helpers/timeConstants');
|
||||
var msPerHour = timeConstants.msPerHour;
|
||||
var HoursPerDay = timeConstants.HoursPerDay;
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-15.9.1.10
|
||||
|
||||
module.exports = function HourFromTime(t) {
|
||||
return modulo(floor(t / msPerHour), HoursPerDay);
|
||||
};
|
19
node_modules/es-abstract/2017/InLeapYear.js
generated
vendored
Normal file
19
node_modules/es-abstract/2017/InLeapYear.js
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
var $EvalError = require('es-errors/eval');
|
||||
|
||||
var DaysInYear = require('./DaysInYear');
|
||||
var YearFromTime = require('./YearFromTime');
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-15.9.1.3
|
||||
|
||||
module.exports = function InLeapYear(t) {
|
||||
var days = DaysInYear(YearFromTime(t));
|
||||
if (days === 365) {
|
||||
return 0;
|
||||
}
|
||||
if (days === 366) {
|
||||
return 1;
|
||||
}
|
||||
throw new $EvalError('Assertion failed: there are not 365 or 366 days in a year, got: ' + days);
|
||||
};
|
30
node_modules/es-abstract/2017/InstanceofOperator.js
generated
vendored
Normal file
30
node_modules/es-abstract/2017/InstanceofOperator.js
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var $hasInstance = GetIntrinsic('Symbol.hasInstance', true);
|
||||
|
||||
var Call = require('./Call');
|
||||
var GetMethod = require('./GetMethod');
|
||||
var IsCallable = require('./IsCallable');
|
||||
var OrdinaryHasInstance = require('./OrdinaryHasInstance');
|
||||
var ToBoolean = require('./ToBoolean');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-instanceofoperator
|
||||
|
||||
module.exports = function InstanceofOperator(O, C) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
var instOfHandler = $hasInstance ? GetMethod(C, $hasInstance) : void 0;
|
||||
if (typeof instOfHandler !== 'undefined') {
|
||||
return ToBoolean(Call(instOfHandler, C, [O]));
|
||||
}
|
||||
if (!IsCallable(C)) {
|
||||
throw new $TypeError('`C` is not Callable');
|
||||
}
|
||||
return OrdinaryHasInstance(C, O);
|
||||
};
|
58
node_modules/es-abstract/2017/IntegerIndexedElementGet.js
generated
vendored
Normal file
58
node_modules/es-abstract/2017/IntegerIndexedElementGet.js
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
'use strict';
|
||||
|
||||
var $SyntaxError = require('es-errors/syntax');
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var GetValueFromBuffer = require('./GetValueFromBuffer');
|
||||
var IsDetachedBuffer = require('./IsDetachedBuffer');
|
||||
var IsInteger = require('./IsInteger');
|
||||
|
||||
var isNegativeZero = require('../helpers/isNegativeZero');
|
||||
|
||||
var typedArrayLength = require('typed-array-length');
|
||||
var typedArrayBuffer = require('typed-array-buffer');
|
||||
var typedArrayByteOffset = require('typed-array-byte-offset');
|
||||
var whichTypedArray = require('which-typed-array');
|
||||
|
||||
var tableTAO = require('./tables/typed-array-objects');
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-integerindexedelementget
|
||||
|
||||
module.exports = function IntegerIndexedElementGet(O, index) {
|
||||
if (typeof index !== 'number') {
|
||||
throw new $TypeError('`index` must be a Number'); // step 1
|
||||
}
|
||||
var arrayTypeName = whichTypedArray(O); // step 10
|
||||
if (!arrayTypeName) {
|
||||
throw new $TypeError('`O` must be a TypedArray'); // step 2
|
||||
}
|
||||
if (arrayTypeName === 'BigInt64Array' || arrayTypeName === 'BigUint64Array') {
|
||||
throw new $SyntaxError('BigInt64Array and BigUint64Array do not exist until ES2020');
|
||||
}
|
||||
|
||||
var buffer = typedArrayBuffer(O); // step 3
|
||||
|
||||
if (IsDetachedBuffer(buffer)) {
|
||||
throw new $TypeError('`O` has a detached buffer'); // step 4
|
||||
}
|
||||
|
||||
if (!IsInteger(index) || isNegativeZero(index)) {
|
||||
return void undefined; // steps 5 - 6
|
||||
}
|
||||
|
||||
var length = typedArrayLength(O); // step 7
|
||||
|
||||
if (index < 0 || index >= length) {
|
||||
return void undefined; // step 8
|
||||
}
|
||||
|
||||
var offset = typedArrayByteOffset(O); // step 9
|
||||
|
||||
var elementType = tableTAO.name['$' + arrayTypeName]; // step 13
|
||||
|
||||
var elementSize = tableTAO.size['$' + elementType]; // step 11
|
||||
|
||||
var indexedPosition = (index * elementSize) + offset; // step 12
|
||||
|
||||
return GetValueFromBuffer(buffer, indexedPosition, elementType, true, 'Unordered'); // step 14
|
||||
};
|
58
node_modules/es-abstract/2017/IntegerIndexedElementSet.js
generated
vendored
Normal file
58
node_modules/es-abstract/2017/IntegerIndexedElementSet.js
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var IsDetachedBuffer = require('./IsDetachedBuffer');
|
||||
var IsInteger = require('./IsInteger');
|
||||
var SetValueInBuffer = require('./SetValueInBuffer');
|
||||
var ToNumber = require('./ToNumber');
|
||||
|
||||
var isNegativeZero = require('is-negative-zero');
|
||||
var typedArrayBuffer = require('typed-array-buffer');
|
||||
var typedArrayByteOffset = require('typed-array-byte-offset');
|
||||
var typedArrayLength = require('typed-array-length');
|
||||
var whichTypedArray = require('which-typed-array');
|
||||
|
||||
var tableTAO = require('./tables/typed-array-objects');
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-integerindexedelementset
|
||||
|
||||
module.exports = function IntegerIndexedElementSet(O, index, value) {
|
||||
if (typeof index !== 'number') {
|
||||
throw new $TypeError('`index` must be a Number'); // step 1
|
||||
}
|
||||
var arrayTypeName = whichTypedArray(O); // step 12
|
||||
if (!arrayTypeName) {
|
||||
throw new $TypeError('`O` must be a TypedArray'); // step 2
|
||||
}
|
||||
|
||||
var numValue = ToNumber(value); // step 3
|
||||
|
||||
var buffer = typedArrayBuffer(O); // step 5
|
||||
|
||||
if (IsDetachedBuffer(buffer)) {
|
||||
throw new $TypeError('`O` has a detached buffer'); // step 6
|
||||
}
|
||||
|
||||
if (!IsInteger(index) || isNegativeZero(index)) {
|
||||
return false; // steps 7 - 8
|
||||
}
|
||||
|
||||
var length = typedArrayLength(O); // step 9
|
||||
|
||||
if (index < 0 || index >= length) {
|
||||
return false; // step 10
|
||||
}
|
||||
|
||||
var offset = typedArrayByteOffset(O); // step 11
|
||||
|
||||
var elementType = tableTAO.name['$' + arrayTypeName]; // step 15
|
||||
|
||||
var elementSize = tableTAO.size['$' + elementType]; // step 13
|
||||
|
||||
var indexedPosition = (index * elementSize) + offset; // step 14
|
||||
|
||||
SetValueInBuffer(buffer, indexedPosition, elementType, numValue, true, 'Unordered'); // step 16
|
||||
|
||||
return true; // step 17
|
||||
};
|
68
node_modules/es-abstract/2017/InternalizeJSONProperty.js
generated
vendored
Normal file
68
node_modules/es-abstract/2017/InternalizeJSONProperty.js
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var Call = require('./Call');
|
||||
var CreateDataProperty = require('./CreateDataProperty');
|
||||
var EnumerableOwnProperties = require('./EnumerableOwnProperties');
|
||||
var Get = require('./Get');
|
||||
var IsArray = require('./IsArray');
|
||||
var ToLength = require('./ToLength');
|
||||
var ToString = require('./ToString');
|
||||
var Type = require('./Type');
|
||||
|
||||
var forEach = require('../helpers/forEach');
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-internalizejsonproperty
|
||||
|
||||
// note: `reviver` was implicitly closed-over until ES2020, where it becomes a third argument
|
||||
|
||||
module.exports = function InternalizeJSONProperty(holder, name, reviver) {
|
||||
if (Type(holder) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: `holder` is not an Object');
|
||||
}
|
||||
if (typeof name !== 'string') {
|
||||
throw new $TypeError('Assertion failed: `name` is not a String');
|
||||
}
|
||||
if (typeof reviver !== 'function') {
|
||||
throw new $TypeError('Assertion failed: `reviver` is not a Function');
|
||||
}
|
||||
|
||||
var val = Get(holder, name); // step 1
|
||||
|
||||
if (Type(val) === 'Object') { // step 2
|
||||
var isArray = IsArray(val); // step 2.a
|
||||
if (isArray) { // step 2.b
|
||||
var I = 0; // step 2.b.i
|
||||
|
||||
var len = ToLength(Get(val, 'length')); // step 2.b.ii
|
||||
|
||||
while (I < len) { // step 2.b.iii
|
||||
var newElement = InternalizeJSONProperty(val, ToString(I), reviver); // step 2.b.iv.1
|
||||
|
||||
if (typeof newElement === 'undefined') { // step 2.b.iii.2
|
||||
delete val[ToString(I)]; // step 2.b.iii.2.a
|
||||
} else { // step 2.b.iii.3
|
||||
CreateDataProperty(val, ToString(I), newElement); // step 2.b.iii.3.a
|
||||
}
|
||||
|
||||
I += 1; // step 2.b.iii.4
|
||||
}
|
||||
} else { // step 2.c
|
||||
var keys = EnumerableOwnProperties(val, 'key'); // step 2.c.i
|
||||
|
||||
forEach(keys, function (P) { // step 2.c.ii
|
||||
// eslint-disable-next-line no-shadow
|
||||
var newElement = InternalizeJSONProperty(val, P, reviver); // step 2.c.ii.1
|
||||
|
||||
if (typeof newElement === 'undefined') { // step 2.c.ii.2
|
||||
delete val[P]; // step 2.c.ii.2.a
|
||||
} else { // step 2.c.ii.3
|
||||
CreateDataProperty(val, P, newElement); // step 2.c.ii.3.a
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return Call(reviver, holder, [name, val]); // step 3
|
||||
};
|
22
node_modules/es-abstract/2017/Invoke.js
generated
vendored
Normal file
22
node_modules/es-abstract/2017/Invoke.js
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var Call = require('./Call');
|
||||
var IsArray = require('./IsArray');
|
||||
var GetV = require('./GetV');
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-invoke
|
||||
|
||||
module.exports = function Invoke(O, P) {
|
||||
if (!IsPropertyKey(P)) {
|
||||
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 func = GetV(O, P);
|
||||
return Call(func, O, argumentsList);
|
||||
};
|
25
node_modules/es-abstract/2017/IsAccessorDescriptor.js
generated
vendored
Normal file
25
node_modules/es-abstract/2017/IsAccessorDescriptor.js
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var hasOwn = require('hasown');
|
||||
|
||||
var isPropertyDescriptor = require('../helpers/records/property-descriptor');
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-8.10.1
|
||||
|
||||
module.exports = function IsAccessorDescriptor(Desc) {
|
||||
if (typeof Desc === 'undefined') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isPropertyDescriptor(Desc)) {
|
||||
throw new $TypeError('Assertion failed: `Desc` must be a Property Descriptor');
|
||||
}
|
||||
|
||||
if (!hasOwn(Desc, '[[Get]]') && !hasOwn(Desc, '[[Set]]')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
4
node_modules/es-abstract/2017/IsArray.js
generated
vendored
Normal file
4
node_modules/es-abstract/2017/IsArray.js
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
'use strict';
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-isarray
|
||||
module.exports = require('../helpers/IsArray');
|
5
node_modules/es-abstract/2017/IsCallable.js
generated
vendored
Normal file
5
node_modules/es-abstract/2017/IsCallable.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
'use strict';
|
||||
|
||||
// http://262.ecma-international.org/5.1/#sec-9.11
|
||||
|
||||
module.exports = require('is-callable');
|
9
node_modules/es-abstract/2017/IsCompatiblePropertyDescriptor.js
generated
vendored
Normal file
9
node_modules/es-abstract/2017/IsCompatiblePropertyDescriptor.js
generated
vendored
Normal 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);
|
||||
};
|
25
node_modules/es-abstract/2017/IsConcatSpreadable.js
generated
vendored
Normal file
25
node_modules/es-abstract/2017/IsConcatSpreadable.js
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $isConcatSpreadable = GetIntrinsic('%Symbol.isConcatSpreadable%', true);
|
||||
|
||||
var Get = require('./Get');
|
||||
var IsArray = require('./IsArray');
|
||||
var ToBoolean = require('./ToBoolean');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-isconcatspreadable
|
||||
|
||||
module.exports = function IsConcatSpreadable(O) {
|
||||
if (Type(O) !== 'Object') {
|
||||
return false;
|
||||
}
|
||||
if ($isConcatSpreadable) {
|
||||
var spreadable = Get(O, $isConcatSpreadable);
|
||||
if (typeof spreadable !== 'undefined') {
|
||||
return ToBoolean(spreadable);
|
||||
}
|
||||
}
|
||||
return IsArray(O);
|
||||
};
|
40
node_modules/es-abstract/2017/IsConstructor.js
generated
vendored
Normal file
40
node_modules/es-abstract/2017/IsConstructor.js
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('../GetIntrinsic.js');
|
||||
|
||||
var $construct = GetIntrinsic('%Reflect.construct%', true);
|
||||
|
||||
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
|
||||
try {
|
||||
DefinePropertyOrThrow({}, '', { '[[Get]]': function () {} });
|
||||
} catch (e) {
|
||||
// Accessor properties aren't supported
|
||||
DefinePropertyOrThrow = null;
|
||||
}
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-isconstructor
|
||||
|
||||
if (DefinePropertyOrThrow && $construct) {
|
||||
var isConstructorMarker = {};
|
||||
var badArrayLike = {};
|
||||
DefinePropertyOrThrow(badArrayLike, 'length', {
|
||||
'[[Get]]': function () {
|
||||
throw isConstructorMarker;
|
||||
},
|
||||
'[[Enumerable]]': true
|
||||
});
|
||||
|
||||
module.exports = function IsConstructor(argument) {
|
||||
try {
|
||||
// `Reflect.construct` invokes `IsConstructor(target)` before `Get(args, 'length')`:
|
||||
$construct(argument, badArrayLike);
|
||||
} catch (err) {
|
||||
return err === isConstructorMarker;
|
||||
}
|
||||
};
|
||||
} else {
|
||||
module.exports = function IsConstructor(argument) {
|
||||
// unfortunately there's no way to truly check this without try/catch `new argument` in old environments
|
||||
return typeof argument === 'function' && !!argument.prototype;
|
||||
};
|
||||
}
|
25
node_modules/es-abstract/2017/IsDataDescriptor.js
generated
vendored
Normal file
25
node_modules/es-abstract/2017/IsDataDescriptor.js
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var hasOwn = require('hasown');
|
||||
|
||||
var isPropertyDescriptor = require('../helpers/records/property-descriptor');
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-8.10.2
|
||||
|
||||
module.exports = function IsDataDescriptor(Desc) {
|
||||
if (typeof Desc === 'undefined') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isPropertyDescriptor(Desc)) {
|
||||
throw new $TypeError('Assertion failed: `Desc` must be a Property Descriptor');
|
||||
}
|
||||
|
||||
if (!hasOwn(Desc, '[[Value]]') && !hasOwn(Desc, '[[Writable]]')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
28
node_modules/es-abstract/2017/IsDetachedBuffer.js
generated
vendored
Normal file
28
node_modules/es-abstract/2017/IsDetachedBuffer.js
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var $byteLength = require('array-buffer-byte-length');
|
||||
var availableTypedArrays = require('available-typed-arrays')();
|
||||
var callBound = require('call-bind/callBound');
|
||||
var isArrayBuffer = require('is-array-buffer');
|
||||
var isSharedArrayBuffer = require('is-shared-array-buffer');
|
||||
|
||||
var $sabByteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-isdetachedbuffer
|
||||
|
||||
module.exports = function IsDetachedBuffer(arrayBuffer) {
|
||||
var isSAB = isSharedArrayBuffer(arrayBuffer);
|
||||
if (!isArrayBuffer(arrayBuffer) && !isSAB) {
|
||||
throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot');
|
||||
}
|
||||
if ((isSAB ? $sabByteLength : $byteLength)(arrayBuffer) === 0) {
|
||||
try {
|
||||
new global[availableTypedArrays[0]](arrayBuffer); // eslint-disable-line no-new
|
||||
} catch (error) {
|
||||
return !!error && error.name === 'TypeError';
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
18
node_modules/es-abstract/2017/IsExtensible.js
generated
vendored
Normal file
18
node_modules/es-abstract/2017/IsExtensible.js
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
|
||||
var $isExtensible = GetIntrinsic('%Object.isExtensible%', true);
|
||||
|
||||
var isPrimitive = require('../helpers/isPrimitive');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-isextensible-o
|
||||
|
||||
module.exports = $preventExtensions
|
||||
? function IsExtensible(obj) {
|
||||
return !isPrimitive(obj) && $isExtensible(obj);
|
||||
}
|
||||
: function IsExtensible(obj) {
|
||||
return !isPrimitive(obj);
|
||||
};
|
26
node_modules/es-abstract/2017/IsGenericDescriptor.js
generated
vendored
Normal file
26
node_modules/es-abstract/2017/IsGenericDescriptor.js
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var IsAccessorDescriptor = require('./IsAccessorDescriptor');
|
||||
var IsDataDescriptor = require('./IsDataDescriptor');
|
||||
|
||||
var isPropertyDescriptor = require('../helpers/records/property-descriptor');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-isgenericdescriptor
|
||||
|
||||
module.exports = function IsGenericDescriptor(Desc) {
|
||||
if (typeof Desc === 'undefined') {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isPropertyDescriptor(Desc)) {
|
||||
throw new $TypeError('Assertion failed: `Desc` must be a Property Descriptor');
|
||||
}
|
||||
|
||||
if (!IsAccessorDescriptor(Desc) && !IsDataDescriptor(Desc)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
9
node_modules/es-abstract/2017/IsInteger.js
generated
vendored
Normal file
9
node_modules/es-abstract/2017/IsInteger.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
'use strict';
|
||||
|
||||
var isInteger = require('../helpers/isInteger');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-isinteger
|
||||
|
||||
module.exports = function IsInteger(argument) {
|
||||
return isInteger(argument);
|
||||
};
|
24
node_modules/es-abstract/2017/IsPromise.js
generated
vendored
Normal file
24
node_modules/es-abstract/2017/IsPromise.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
'use strict';
|
||||
|
||||
var callBound = require('call-bind/callBound');
|
||||
|
||||
var $PromiseThen = callBound('Promise.prototype.then', true);
|
||||
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-ispromise
|
||||
|
||||
module.exports = function IsPromise(x) {
|
||||
if (Type(x) !== 'Object') {
|
||||
return false;
|
||||
}
|
||||
if (!$PromiseThen) { // Promises are not supported
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
$PromiseThen(x); // throws if not a promise
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
11
node_modules/es-abstract/2017/IsPropertyDescriptor.js
generated
vendored
Normal file
11
node_modules/es-abstract/2017/IsPropertyDescriptor.js
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
'use strict';
|
||||
|
||||
// TODO, semver-major: delete this
|
||||
|
||||
var isPropertyDescriptor = require('../helpers/records/property-descriptor');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-property-descriptor-specification-type
|
||||
|
||||
module.exports = function IsPropertyDescriptor(Desc) {
|
||||
return isPropertyDescriptor(Desc);
|
||||
};
|
7
node_modules/es-abstract/2017/IsPropertyKey.js
generated
vendored
Normal file
7
node_modules/es-abstract/2017/IsPropertyKey.js
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-ispropertykey
|
||||
|
||||
module.exports = function IsPropertyKey(argument) {
|
||||
return typeof argument === 'string' || typeof argument === 'symbol';
|
||||
};
|
24
node_modules/es-abstract/2017/IsRegExp.js
generated
vendored
Normal file
24
node_modules/es-abstract/2017/IsRegExp.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $match = GetIntrinsic('%Symbol.match%', true);
|
||||
|
||||
var hasRegExpMatcher = require('is-regex');
|
||||
|
||||
var ToBoolean = require('./ToBoolean');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-isregexp
|
||||
|
||||
module.exports = function IsRegExp(argument) {
|
||||
if (!argument || typeof argument !== 'object') {
|
||||
return false;
|
||||
}
|
||||
if ($match) {
|
||||
var isRegExp = argument[$match];
|
||||
if (typeof isRegExp !== 'undefined') {
|
||||
return ToBoolean(isRegExp);
|
||||
}
|
||||
}
|
||||
return hasRegExpMatcher(argument);
|
||||
};
|
17
node_modules/es-abstract/2017/IsSharedArrayBuffer.js
generated
vendored
Normal file
17
node_modules/es-abstract/2017/IsSharedArrayBuffer.js
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var Type = require('./Type');
|
||||
|
||||
var isSharedArrayBuffer = require('is-shared-array-buffer');
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-issharedarraybuffer
|
||||
|
||||
module.exports = function IsSharedArrayBuffer(obj) {
|
||||
if (Type(obj) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
|
||||
return isSharedArrayBuffer(obj);
|
||||
};
|
45
node_modules/es-abstract/2017/IsWordChar.js
generated
vendored
Normal file
45
node_modules/es-abstract/2017/IsWordChar.js
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var callBound = require('call-bind/callBound');
|
||||
|
||||
var $indexOf = callBound('String.prototype.indexOf');
|
||||
|
||||
var IsArray = require('./IsArray');
|
||||
var IsInteger = require('./IsInteger');
|
||||
var WordCharacters = require('./WordCharacters');
|
||||
|
||||
var every = require('../helpers/every');
|
||||
|
||||
var isChar = function isChar(c) {
|
||||
return typeof c === 'string';
|
||||
};
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-runtime-semantics-iswordchar-abstract-operation
|
||||
|
||||
// note: prior to ES2023, this AO erroneously omitted the latter of its arguments.
|
||||
module.exports = function IsWordChar(e, InputLength, Input, IgnoreCase, Unicode) {
|
||||
if (!IsInteger(e)) {
|
||||
throw new $TypeError('Assertion failed: `e` must be an integer');
|
||||
}
|
||||
if (!IsInteger(InputLength)) {
|
||||
throw new $TypeError('Assertion failed: `InputLength` must be an integer');
|
||||
}
|
||||
if (!IsArray(Input) || !every(Input, isChar)) {
|
||||
throw new $TypeError('Assertion failed: `Input` must be a List of characters');
|
||||
}
|
||||
if (typeof IgnoreCase !== 'boolean' || typeof Unicode !== 'boolean') {
|
||||
throw new $TypeError('Assertion failed: `IgnoreCase` and `Unicode` must be booleans');
|
||||
}
|
||||
|
||||
if (e === -1 || e === InputLength) {
|
||||
return false; // step 1
|
||||
}
|
||||
|
||||
var c = Input[e]; // step 2
|
||||
|
||||
var wordChars = WordCharacters(IgnoreCase, Unicode);
|
||||
|
||||
return $indexOf(wordChars, c) > -1; // steps 3-4
|
||||
};
|
24
node_modules/es-abstract/2017/IterableToList.js
generated
vendored
Normal file
24
node_modules/es-abstract/2017/IterableToList.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
'use strict';
|
||||
|
||||
var callBound = require('call-bind/callBound');
|
||||
var $arrayPush = callBound('Array.prototype.push');
|
||||
|
||||
var GetIterator = require('./GetIterator');
|
||||
var IteratorStep = require('./IteratorStep');
|
||||
var IteratorValue = require('./IteratorValue');
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-iterabletolist
|
||||
|
||||
module.exports = function IterableToList(items, method) {
|
||||
var iterator = GetIterator(items, method);
|
||||
var values = [];
|
||||
var next = true;
|
||||
while (next) {
|
||||
next = IteratorStep(iterator);
|
||||
if (next) {
|
||||
var nextValue = IteratorValue(next);
|
||||
$arrayPush(values, nextValue);
|
||||
}
|
||||
}
|
||||
return values;
|
||||
};
|
49
node_modules/es-abstract/2017/IteratorClose.js
generated
vendored
Normal file
49
node_modules/es-abstract/2017/IteratorClose.js
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var Call = require('./Call');
|
||||
var CompletionRecord = require('./CompletionRecord');
|
||||
var GetMethod = require('./GetMethod');
|
||||
var IsCallable = require('./IsCallable');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-iteratorclose
|
||||
|
||||
module.exports = function IteratorClose(iterator, completion) {
|
||||
if (Type(iterator) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(iterator) is not Object');
|
||||
}
|
||||
if (!IsCallable(completion) && !(completion instanceof CompletionRecord)) {
|
||||
throw new $TypeError('Assertion failed: completion is not a thunk representing a Completion Record, nor a Completion Record instance');
|
||||
}
|
||||
var completionThunk = completion instanceof CompletionRecord ? function () { return completion['?'](); } : completion;
|
||||
|
||||
var iteratorReturn = GetMethod(iterator, 'return');
|
||||
|
||||
if (typeof iteratorReturn === 'undefined') {
|
||||
return completionThunk();
|
||||
}
|
||||
|
||||
var completionRecord;
|
||||
try {
|
||||
var innerResult = Call(iteratorReturn, iterator, []);
|
||||
} catch (e) {
|
||||
// if we hit here, then "e" is the innerResult completion that needs re-throwing
|
||||
|
||||
// if the completion is of type "throw", this will throw.
|
||||
completionThunk();
|
||||
completionThunk = null; // ensure it's not called twice.
|
||||
|
||||
// if not, then return the innerResult completion
|
||||
throw e;
|
||||
}
|
||||
completionRecord = completionThunk(); // if innerResult worked, then throw if the completion does
|
||||
completionThunk = null; // ensure it's not called twice.
|
||||
|
||||
if (Type(innerResult) !== 'Object') {
|
||||
throw new $TypeError('iterator .return must return an object');
|
||||
}
|
||||
|
||||
return completionRecord;
|
||||
};
|
16
node_modules/es-abstract/2017/IteratorComplete.js
generated
vendored
Normal file
16
node_modules/es-abstract/2017/IteratorComplete.js
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var Get = require('./Get');
|
||||
var ToBoolean = require('./ToBoolean');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-iteratorcomplete
|
||||
|
||||
module.exports = function IteratorComplete(iterResult) {
|
||||
if (Type(iterResult) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(iterResult) is not Object');
|
||||
}
|
||||
return ToBoolean(Get(iterResult, 'done'));
|
||||
};
|
16
node_modules/es-abstract/2017/IteratorNext.js
generated
vendored
Normal file
16
node_modules/es-abstract/2017/IteratorNext.js
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var Invoke = require('./Invoke');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-iteratornext
|
||||
|
||||
module.exports = function IteratorNext(iterator, value) {
|
||||
var result = Invoke(iterator, 'next', arguments.length < 2 ? [] : [value]);
|
||||
if (Type(result) !== 'Object') {
|
||||
throw new $TypeError('iterator next must return an object');
|
||||
}
|
||||
return result;
|
||||
};
|
13
node_modules/es-abstract/2017/IteratorStep.js
generated
vendored
Normal file
13
node_modules/es-abstract/2017/IteratorStep.js
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
'use strict';
|
||||
|
||||
var IteratorComplete = require('./IteratorComplete');
|
||||
var IteratorNext = require('./IteratorNext');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-iteratorstep
|
||||
|
||||
module.exports = function IteratorStep(iterator) {
|
||||
var result = IteratorNext(iterator);
|
||||
var done = IteratorComplete(result);
|
||||
return done === true ? false : result;
|
||||
};
|
||||
|
16
node_modules/es-abstract/2017/IteratorValue.js
generated
vendored
Normal file
16
node_modules/es-abstract/2017/IteratorValue.js
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var Get = require('./Get');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-iteratorvalue
|
||||
|
||||
module.exports = function IteratorValue(iterResult) {
|
||||
if (Type(iterResult) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(iterResult) is not Object');
|
||||
}
|
||||
return Get(iterResult, 'value');
|
||||
};
|
||||
|
13
node_modules/es-abstract/2017/MakeDate.js
generated
vendored
Normal file
13
node_modules/es-abstract/2017/MakeDate.js
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
'use strict';
|
||||
|
||||
var $isFinite = require('../helpers/isFinite');
|
||||
var msPerDay = require('../helpers/timeConstants').msPerDay;
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-15.9.1.13
|
||||
|
||||
module.exports = function MakeDate(day, time) {
|
||||
if (!$isFinite(day) || !$isFinite(time)) {
|
||||
return NaN;
|
||||
}
|
||||
return (day * msPerDay) + time;
|
||||
};
|
33
node_modules/es-abstract/2017/MakeDay.js
generated
vendored
Normal file
33
node_modules/es-abstract/2017/MakeDay.js
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $DateUTC = GetIntrinsic('%Date.UTC%');
|
||||
|
||||
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://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)) {
|
||||
return NaN;
|
||||
}
|
||||
var y = ToInteger(year);
|
||||
var m = ToInteger(month);
|
||||
var dt = ToInteger(date);
|
||||
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;
|
||||
}
|
||||
return Day(t) + dt - 1;
|
||||
};
|
23
node_modules/es-abstract/2017/MakeTime.js
generated
vendored
Normal file
23
node_modules/es-abstract/2017/MakeTime.js
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
'use strict';
|
||||
|
||||
var $isFinite = require('../helpers/isFinite');
|
||||
var timeConstants = require('../helpers/timeConstants');
|
||||
var msPerSecond = timeConstants.msPerSecond;
|
||||
var msPerMinute = timeConstants.msPerMinute;
|
||||
var msPerHour = timeConstants.msPerHour;
|
||||
|
||||
var ToInteger = require('./ToInteger');
|
||||
|
||||
// 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)) {
|
||||
return NaN;
|
||||
}
|
||||
var h = ToInteger(hour);
|
||||
var m = ToInteger(min);
|
||||
var s = ToInteger(sec);
|
||||
var milli = ToInteger(ms);
|
||||
var t = (h * msPerHour) + (m * msPerMinute) + (s * msPerSecond) + milli;
|
||||
return t;
|
||||
};
|
14
node_modules/es-abstract/2017/MinFromTime.js
generated
vendored
Normal file
14
node_modules/es-abstract/2017/MinFromTime.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
'use strict';
|
||||
|
||||
var floor = require('./floor');
|
||||
var modulo = require('./modulo');
|
||||
|
||||
var timeConstants = require('../helpers/timeConstants');
|
||||
var msPerMinute = timeConstants.msPerMinute;
|
||||
var MinutesPerHour = timeConstants.MinutesPerHour;
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-15.9.1.10
|
||||
|
||||
module.exports = function MinFromTime(t) {
|
||||
return modulo(floor(t / msPerMinute), MinutesPerHour);
|
||||
};
|
47
node_modules/es-abstract/2017/MonthFromTime.js
generated
vendored
Normal file
47
node_modules/es-abstract/2017/MonthFromTime.js
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
'use strict';
|
||||
|
||||
var DayWithinYear = require('./DayWithinYear');
|
||||
var InLeapYear = require('./InLeapYear');
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-15.9.1.4
|
||||
|
||||
module.exports = function MonthFromTime(t) {
|
||||
var day = DayWithinYear(t);
|
||||
if (0 <= day && day < 31) {
|
||||
return 0;
|
||||
}
|
||||
var leap = InLeapYear(t);
|
||||
if (31 <= day && day < (59 + leap)) {
|
||||
return 1;
|
||||
}
|
||||
if ((59 + leap) <= day && day < (90 + leap)) {
|
||||
return 2;
|
||||
}
|
||||
if ((90 + leap) <= day && day < (120 + leap)) {
|
||||
return 3;
|
||||
}
|
||||
if ((120 + leap) <= day && day < (151 + leap)) {
|
||||
return 4;
|
||||
}
|
||||
if ((151 + leap) <= day && day < (181 + leap)) {
|
||||
return 5;
|
||||
}
|
||||
if ((181 + leap) <= day && day < (212 + leap)) {
|
||||
return 6;
|
||||
}
|
||||
if ((212 + leap) <= day && day < (243 + leap)) {
|
||||
return 7;
|
||||
}
|
||||
if ((243 + leap) <= day && day < (273 + leap)) {
|
||||
return 8;
|
||||
}
|
||||
if ((273 + leap) <= day && day < (304 + leap)) {
|
||||
return 9;
|
||||
}
|
||||
if ((304 + leap) <= day && day < (334 + leap)) {
|
||||
return 10;
|
||||
}
|
||||
if ((334 + leap) <= day && day < (365 + leap)) {
|
||||
return 11;
|
||||
}
|
||||
};
|
34
node_modules/es-abstract/2017/NewPromiseCapability.js
generated
vendored
Normal file
34
node_modules/es-abstract/2017/NewPromiseCapability.js
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var IsCallable = require('./IsCallable');
|
||||
var IsConstructor = require('./IsConstructor');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-newpromisecapability
|
||||
|
||||
module.exports = function NewPromiseCapability(C) {
|
||||
if (!IsConstructor(C)) {
|
||||
throw new $TypeError('C must be a constructor'); // step 1
|
||||
}
|
||||
|
||||
var resolvingFunctions = { '[[Resolve]]': void undefined, '[[Reject]]': void undefined }; // step 3
|
||||
|
||||
var promise = new C(function (resolve, reject) { // steps 4-5
|
||||
if (typeof resolvingFunctions['[[Resolve]]'] !== 'undefined' || typeof resolvingFunctions['[[Reject]]'] !== 'undefined') {
|
||||
throw new $TypeError('executor has already been called'); // step 4.a, 4.b
|
||||
}
|
||||
resolvingFunctions['[[Resolve]]'] = resolve; // step 4.c
|
||||
resolvingFunctions['[[Reject]]'] = reject; // step 4.d
|
||||
}); // step 4-6
|
||||
|
||||
if (!IsCallable(resolvingFunctions['[[Resolve]]']) || !IsCallable(resolvingFunctions['[[Reject]]'])) {
|
||||
throw new $TypeError('executor must provide valid resolve and reject functions'); // steps 7-8
|
||||
}
|
||||
|
||||
return {
|
||||
'[[Promise]]': promise,
|
||||
'[[Resolve]]': resolvingFunctions['[[Resolve]]'],
|
||||
'[[Reject]]': resolvingFunctions['[[Reject]]']
|
||||
}; // step 9
|
||||
};
|
9
node_modules/es-abstract/2017/NormalCompletion.js
generated
vendored
Normal file
9
node_modules/es-abstract/2017/NormalCompletion.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
'use strict';
|
||||
|
||||
var CompletionRecord = require('./CompletionRecord');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-normalcompletion
|
||||
|
||||
module.exports = function NormalCompletion(value) {
|
||||
return new CompletionRecord('normal', value);
|
||||
};
|
71
node_modules/es-abstract/2017/NumberToRawBytes.js
generated
vendored
Normal file
71
node_modules/es-abstract/2017/NumberToRawBytes.js
generated
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var hasOwnProperty = require('./HasOwnProperty');
|
||||
var ToInt16 = require('./ToInt16');
|
||||
var ToInt32 = require('./ToInt32');
|
||||
var ToInt8 = require('./ToInt8');
|
||||
var ToUint16 = require('./ToUint16');
|
||||
var ToUint32 = require('./ToUint32');
|
||||
var ToUint8 = require('./ToUint8');
|
||||
var ToUint8Clamp = require('./ToUint8Clamp');
|
||||
|
||||
var valueToFloat32Bytes = require('../helpers/valueToFloat32Bytes');
|
||||
var valueToFloat64Bytes = require('../helpers/valueToFloat64Bytes');
|
||||
var integerToNBytes = require('../helpers/integerToNBytes');
|
||||
|
||||
var keys = require('object-keys');
|
||||
|
||||
// https://262.ecma-international.org/8.0/#table-50
|
||||
var TypeToSizes = {
|
||||
__proto__: null,
|
||||
Int8: 1,
|
||||
Uint8: 1,
|
||||
Uint8C: 1,
|
||||
Int16: 2,
|
||||
Uint16: 2,
|
||||
Int32: 4,
|
||||
Uint32: 4,
|
||||
Float32: 4,
|
||||
Float64: 8
|
||||
};
|
||||
|
||||
var TypeToAO = {
|
||||
__proto__: null,
|
||||
Int8: ToInt8,
|
||||
Uint8: ToUint8,
|
||||
Uint8C: ToUint8Clamp,
|
||||
Int16: ToInt16,
|
||||
Uint16: ToUint16,
|
||||
Int32: ToInt32,
|
||||
Uint32: ToUint32
|
||||
};
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-numbertorawbytes
|
||||
|
||||
module.exports = function NumberToRawBytes(type, value, isLittleEndian) {
|
||||
if (typeof type !== 'string' || !hasOwnProperty(TypeToSizes, type)) {
|
||||
throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
|
||||
}
|
||||
if (typeof value !== 'number') {
|
||||
throw new $TypeError('Assertion failed: `value` must be a Number');
|
||||
}
|
||||
if (typeof isLittleEndian !== 'boolean') {
|
||||
throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
|
||||
}
|
||||
|
||||
if (type === 'Float32') { // step 1
|
||||
return valueToFloat32Bytes(value, isLittleEndian);
|
||||
} else if (type === 'Float64') { // step 2
|
||||
return valueToFloat64Bytes(value, isLittleEndian);
|
||||
} // step 3
|
||||
|
||||
var n = TypeToSizes[type]; // step 3.a
|
||||
|
||||
var convOp = TypeToAO[type]; // step 3.b
|
||||
|
||||
var intValue = convOp(value); // step 3.c
|
||||
|
||||
return integerToNBytes(intValue, n, isLittleEndian); // step 3.d, 3.e, 4
|
||||
};
|
50
node_modules/es-abstract/2017/ObjectCreate.js
generated
vendored
Normal file
50
node_modules/es-abstract/2017/ObjectCreate.js
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $ObjectCreate = GetIntrinsic('%Object.create%', true);
|
||||
var $TypeError = require('es-errors/type');
|
||||
var $SyntaxError = require('es-errors/syntax');
|
||||
|
||||
var IsArray = require('./IsArray');
|
||||
var Type = require('./Type');
|
||||
|
||||
var forEach = require('../helpers/forEach');
|
||||
|
||||
var SLOT = require('internal-slot');
|
||||
|
||||
var hasProto = require('has-proto')();
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-objectcreate
|
||||
|
||||
module.exports = function ObjectCreate(proto, internalSlotsList) {
|
||||
if (proto !== null && Type(proto) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: `proto` must be null or an object');
|
||||
}
|
||||
var slots = arguments.length < 2 ? [] : internalSlotsList; // step 1
|
||||
if (arguments.length >= 2 && !IsArray(slots)) {
|
||||
throw new $TypeError('Assertion failed: `internalSlotsList` must be an Array');
|
||||
}
|
||||
|
||||
var O;
|
||||
if ($ObjectCreate) {
|
||||
O = $ObjectCreate(proto);
|
||||
} else if (hasProto) {
|
||||
O = { __proto__: proto };
|
||||
} else {
|
||||
if (proto === null) {
|
||||
throw new $SyntaxError('native Object.create support is required to create null objects');
|
||||
}
|
||||
var T = function T() {};
|
||||
T.prototype = proto;
|
||||
O = new T();
|
||||
}
|
||||
|
||||
if (slots.length > 0) {
|
||||
forEach(slots, function (slot) {
|
||||
SLOT.set(O, slot, void undefined);
|
||||
});
|
||||
}
|
||||
|
||||
return O; // step 6
|
||||
};
|
38
node_modules/es-abstract/2017/ObjectDefineProperties.js
generated
vendored
Normal file
38
node_modules/es-abstract/2017/ObjectDefineProperties.js
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
'use strict';
|
||||
|
||||
var callBound = require('call-bind/callBound');
|
||||
|
||||
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
|
||||
var Get = require('./Get');
|
||||
var ToObject = require('./ToObject');
|
||||
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
|
||||
|
||||
var forEach = require('../helpers/forEach');
|
||||
var getOwnPropertyDescriptor = require('gopd');
|
||||
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
|
||||
DefinePropertyOrThrow(O, P, desc); // step 5.c
|
||||
});
|
||||
|
||||
return O; // step 6
|
||||
};
|
20
node_modules/es-abstract/2017/OrdinaryCreateFromConstructor.js
generated
vendored
Normal file
20
node_modules/es-abstract/2017/OrdinaryCreateFromConstructor.js
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var GetPrototypeFromConstructor = require('./GetPrototypeFromConstructor');
|
||||
var IsArray = require('./IsArray');
|
||||
var ObjectCreate = require('./ObjectCreate');
|
||||
|
||||
// https://262.ecma-international.org/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);
|
||||
};
|
54
node_modules/es-abstract/2017/OrdinaryDefineOwnProperty.js
generated
vendored
Normal file
54
node_modules/es-abstract/2017/OrdinaryDefineOwnProperty.js
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
'use strict';
|
||||
|
||||
var $gOPD = require('gopd');
|
||||
var $SyntaxError = require('es-errors/syntax');
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var isPropertyDescriptor = require('../helpers/records/property-descriptor');
|
||||
|
||||
var IsAccessorDescriptor = require('./IsAccessorDescriptor');
|
||||
var IsExtensible = require('./IsExtensible');
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
|
||||
var SameValue = require('./SameValue');
|
||||
var Type = require('./Type');
|
||||
var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-ordinarydefineownproperty
|
||||
|
||||
module.exports = function OrdinaryDefineOwnProperty(O, P, Desc) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: O must be an Object');
|
||||
}
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: P must be a Property Key');
|
||||
}
|
||||
if (!isPropertyDescriptor(Desc)) {
|
||||
throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
|
||||
}
|
||||
if (!$gOPD) {
|
||||
// ES3/IE 8 fallback
|
||||
if (IsAccessorDescriptor(Desc)) {
|
||||
throw new $SyntaxError('This environment does not support accessor property descriptors.');
|
||||
}
|
||||
var creatingNormalDataProperty = !(P in O)
|
||||
&& Desc['[[Writable]]']
|
||||
&& Desc['[[Enumerable]]']
|
||||
&& Desc['[[Configurable]]']
|
||||
&& '[[Value]]' in Desc;
|
||||
var settingExistingDataProperty = (P in O)
|
||||
&& (!('[[Configurable]]' in Desc) || Desc['[[Configurable]]'])
|
||||
&& (!('[[Enumerable]]' in Desc) || Desc['[[Enumerable]]'])
|
||||
&& (!('[[Writable]]' in Desc) || Desc['[[Writable]]'])
|
||||
&& '[[Value]]' in Desc;
|
||||
if (creatingNormalDataProperty || settingExistingDataProperty) {
|
||||
O[P] = Desc['[[Value]]']; // eslint-disable-line no-param-reassign
|
||||
return SameValue(O[P], Desc['[[Value]]']);
|
||||
}
|
||||
throw new $SyntaxError('This environment does not support defining non-writable, non-enumerable, or non-configurable properties');
|
||||
}
|
||||
var desc = $gOPD(O, P);
|
||||
var current = desc && ToPropertyDescriptor(desc);
|
||||
var extensible = IsExtensible(O);
|
||||
return ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current);
|
||||
};
|
42
node_modules/es-abstract/2017/OrdinaryGetOwnProperty.js
generated
vendored
Normal file
42
node_modules/es-abstract/2017/OrdinaryGetOwnProperty.js
generated
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
'use strict';
|
||||
|
||||
var $gOPD = require('gopd');
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var callBound = require('call-bind/callBound');
|
||||
|
||||
var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
|
||||
|
||||
var hasOwn = require('hasown');
|
||||
|
||||
var IsArray = require('./IsArray');
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
var IsRegExp = require('./IsRegExp');
|
||||
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-ordinarygetownproperty
|
||||
|
||||
module.exports = function OrdinaryGetOwnProperty(O, P) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: O must be an Object');
|
||||
}
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: P must be a Property Key');
|
||||
}
|
||||
if (!hasOwn(O, P)) {
|
||||
return void 0;
|
||||
}
|
||||
if (!$gOPD) {
|
||||
// ES3 / IE 8 fallback
|
||||
var arrayLength = IsArray(O) && P === 'length';
|
||||
var regexLastIndex = IsRegExp(O) && P === 'lastIndex';
|
||||
return {
|
||||
'[[Configurable]]': !(arrayLength || regexLastIndex),
|
||||
'[[Enumerable]]': $isEnumerable(O, P),
|
||||
'[[Value]]': O[P],
|
||||
'[[Writable]]': true
|
||||
};
|
||||
}
|
||||
return ToPropertyDescriptor($gOPD(O, P));
|
||||
};
|
19
node_modules/es-abstract/2017/OrdinaryGetPrototypeOf.js
generated
vendored
Normal file
19
node_modules/es-abstract/2017/OrdinaryGetPrototypeOf.js
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var $getProto = require('../helpers/getProto');
|
||||
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/7.0/#sec-ordinarygetprototypeof
|
||||
|
||||
module.exports = function OrdinaryGetPrototypeOf(O) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: O must be an Object');
|
||||
}
|
||||
if (!$getProto) {
|
||||
throw new $TypeError('This environment does not support fetching prototypes.');
|
||||
}
|
||||
return $getProto(O);
|
||||
};
|
23
node_modules/es-abstract/2017/OrdinaryHasInstance.js
generated
vendored
Normal file
23
node_modules/es-abstract/2017/OrdinaryHasInstance.js
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var Get = require('./Get');
|
||||
var IsCallable = require('./IsCallable');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-ordinaryhasinstance
|
||||
|
||||
module.exports = function OrdinaryHasInstance(C, O) {
|
||||
if (!IsCallable(C)) {
|
||||
return false;
|
||||
}
|
||||
if (Type(O) !== 'Object') {
|
||||
return false;
|
||||
}
|
||||
var P = Get(C, 'prototype');
|
||||
if (Type(P) !== 'Object') {
|
||||
throw new $TypeError('OrdinaryHasInstance called on an object with an invalid prototype property.');
|
||||
}
|
||||
return O instanceof C;
|
||||
};
|
18
node_modules/es-abstract/2017/OrdinaryHasProperty.js
generated
vendored
Normal file
18
node_modules/es-abstract/2017/OrdinaryHasProperty.js
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-ordinaryhasproperty
|
||||
|
||||
module.exports = function OrdinaryHasProperty(O, P) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: P must be a Property Key');
|
||||
}
|
||||
return P in O;
|
||||
};
|
50
node_modules/es-abstract/2017/OrdinarySetPrototypeOf.js
generated
vendored
Normal file
50
node_modules/es-abstract/2017/OrdinarySetPrototypeOf.js
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var $setProto = require('../helpers/setProto');
|
||||
|
||||
var OrdinaryGetPrototypeOf = require('./OrdinaryGetPrototypeOf');
|
||||
|
||||
// https://262.ecma-international.org/7.0/#sec-ordinarysetprototypeof
|
||||
|
||||
module.exports = function OrdinarySetPrototypeOf(O, V) {
|
||||
if (typeof V !== 'object') {
|
||||
throw new $TypeError('Assertion failed: V must be Object or Null');
|
||||
}
|
||||
/*
|
||||
var extensible = IsExtensible(O);
|
||||
var current = OrdinaryGetPrototypeOf(O);
|
||||
if (SameValue(V, current)) {
|
||||
return true;
|
||||
}
|
||||
if (!extensible) {
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
try {
|
||||
$setProto(O, V);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
return OrdinaryGetPrototypeOf(O) === V;
|
||||
/*
|
||||
var p = V;
|
||||
var done = false;
|
||||
while (!done) {
|
||||
if (p === null) {
|
||||
done = true;
|
||||
} else if (SameValue(p, O)) {
|
||||
return false;
|
||||
} else {
|
||||
if (wat) {
|
||||
done = true;
|
||||
} else {
|
||||
p = p.[[Prototype]];
|
||||
}
|
||||
}
|
||||
}
|
||||
O.[[Prototype]] = V;
|
||||
return true;
|
||||
*/
|
||||
};
|
36
node_modules/es-abstract/2017/OrdinaryToPrimitive.js
generated
vendored
Normal file
36
node_modules/es-abstract/2017/OrdinaryToPrimitive.js
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var Call = require('./Call');
|
||||
var Get = require('./Get');
|
||||
var IsCallable = require('./IsCallable');
|
||||
var Type = require('./Type');
|
||||
|
||||
var inspect = require('object-inspect');
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-ordinarytoprimitive
|
||||
|
||||
module.exports = function OrdinaryToPrimitive(O, hint) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
if (/* typeof hint !== 'string' || */ hint !== 'string' && hint !== 'number') {
|
||||
throw new $TypeError('Assertion failed: `hint` must be "string" or "number"');
|
||||
}
|
||||
|
||||
var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
|
||||
|
||||
for (var i = 0; i < methodNames.length; i += 1) {
|
||||
var name = methodNames[i];
|
||||
var method = Get(O, name);
|
||||
if (IsCallable(method)) {
|
||||
var result = Call(method, O);
|
||||
if (Type(result) !== 'Object') {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
throw new $TypeError('No primitive value for ' + inspect(O));
|
||||
};
|
48
node_modules/es-abstract/2017/QuoteJSONString.js
generated
vendored
Normal file
48
node_modules/es-abstract/2017/QuoteJSONString.js
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
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');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-quotejsonstring
|
||||
|
||||
var escapes = {
|
||||
'\u0008': 'b',
|
||||
'\u000C': 'f',
|
||||
'\u000A': 'n',
|
||||
'\u000D': 'r',
|
||||
'\u0009': 't'
|
||||
};
|
||||
|
||||
module.exports = function QuoteJSONString(value) {
|
||||
if (typeof 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;
|
||||
};
|
72
node_modules/es-abstract/2017/RawBytesToNumber.js
generated
vendored
Normal file
72
node_modules/es-abstract/2017/RawBytesToNumber.js
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
'use strict';
|
||||
|
||||
var callBound = require('call-bind/callBound');
|
||||
|
||||
var $RangeError = require('es-errors/range');
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var $charAt = callBound('String.prototype.charAt');
|
||||
var $reverse = callBound('Array.prototype.reverse');
|
||||
var $slice = callBound('Array.prototype.slice');
|
||||
|
||||
var hasOwnProperty = require('./HasOwnProperty');
|
||||
var IsArray = require('./IsArray');
|
||||
|
||||
var bytesAsFloat32 = require('../helpers/bytesAsFloat32');
|
||||
var bytesAsFloat64 = require('../helpers/bytesAsFloat64');
|
||||
var bytesAsInteger = require('../helpers/bytesAsInteger');
|
||||
var every = require('../helpers/every');
|
||||
var isByteValue = require('../helpers/isByteValue');
|
||||
|
||||
var keys = require('object-keys');
|
||||
|
||||
// https://262.ecma-international.org/8.0/#table-50
|
||||
var TypeToSizes = {
|
||||
__proto__: null,
|
||||
Int8: 1,
|
||||
Uint8: 1,
|
||||
Uint8C: 1,
|
||||
Int16: 2,
|
||||
Uint16: 2,
|
||||
Int32: 4,
|
||||
Uint32: 4,
|
||||
Float32: 4,
|
||||
Float64: 8
|
||||
};
|
||||
|
||||
// https://262.ecma-international.org/8.0/#sec-rawbytestonumber
|
||||
|
||||
module.exports = function RawBytesToNumber(type, rawBytes, isLittleEndian) {
|
||||
if (typeof type !== 'string' || !hasOwnProperty(TypeToSizes, type)) {
|
||||
throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
|
||||
}
|
||||
if (!IsArray(rawBytes) || !every(rawBytes, isByteValue)) {
|
||||
throw new $TypeError('Assertion failed: `rawBytes` must be an Array of bytes');
|
||||
}
|
||||
if (typeof isLittleEndian !== 'boolean') {
|
||||
throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
|
||||
}
|
||||
|
||||
var elementSize = TypeToSizes[type]; // step 1
|
||||
|
||||
if (rawBytes.length !== elementSize) {
|
||||
// this assertion is not in the spec, but it'd be an editorial error if it were ever violated
|
||||
throw new $RangeError('Assertion failed: `rawBytes` must have a length of ' + elementSize + ' for type ' + type);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
rawBytes = $slice(rawBytes, 0, elementSize);
|
||||
if (!isLittleEndian) {
|
||||
$reverse(rawBytes); // step 2
|
||||
}
|
||||
|
||||
if (type === 'Float32') { // step 3
|
||||
return bytesAsFloat32(rawBytes);
|
||||
}
|
||||
|
||||
if (type === 'Float64') { // step 4
|
||||
return bytesAsFloat64(rawBytes);
|
||||
}
|
||||
|
||||
return bytesAsInteger(rawBytes, elementSize, $charAt(type, 0) === 'U', false);
|
||||
};
|
21
node_modules/es-abstract/2017/RegExpCreate.js
generated
vendored
Normal file
21
node_modules/es-abstract/2017/RegExpCreate.js
generated
vendored
Normal 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);
|
||||
};
|
30
node_modules/es-abstract/2017/RegExpExec.js
generated
vendored
Normal file
30
node_modules/es-abstract/2017/RegExpExec.js
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var regexExec = require('call-bind/callBound')('RegExp.prototype.exec');
|
||||
|
||||
var Call = require('./Call');
|
||||
var Get = require('./Get');
|
||||
var IsCallable = require('./IsCallable');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-regexpexec
|
||||
|
||||
module.exports = function RegExpExec(R, S) {
|
||||
if (Type(R) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: `R` must be an Object');
|
||||
}
|
||||
if (typeof S !== 'string') {
|
||||
throw new $TypeError('Assertion failed: `S` must be a String');
|
||||
}
|
||||
var exec = Get(R, 'exec');
|
||||
if (IsCallable(exec)) {
|
||||
var result = Call(exec, R, [S]);
|
||||
if (typeof result === 'object') {
|
||||
return result;
|
||||
}
|
||||
throw new $TypeError('"exec" method must return `null` or an Object');
|
||||
}
|
||||
return regexExec(R, S);
|
||||
};
|
3
node_modules/es-abstract/2017/RequireObjectCoercible.js
generated
vendored
Normal file
3
node_modules/es-abstract/2017/RequireObjectCoercible.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = require('es-object-atoms/RequireObjectCoercible');
|
13
node_modules/es-abstract/2017/SameValue.js
generated
vendored
Normal file
13
node_modules/es-abstract/2017/SameValue.js
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
'use strict';
|
||||
|
||||
var $isNaN = require('../helpers/isNaN');
|
||||
|
||||
// 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.
|
||||
if (x === 0) { return 1 / x === 1 / y; }
|
||||
return true;
|
||||
}
|
||||
return $isNaN(x) && $isNaN(y);
|
||||
};
|
14
node_modules/es-abstract/2017/SameValueNonNumber.js
generated
vendored
Normal file
14
node_modules/es-abstract/2017/SameValueNonNumber.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var SameValue = require('./SameValue');
|
||||
|
||||
// https://262.ecma-international.org/7.0/#sec-samevaluenonnumber
|
||||
|
||||
module.exports = function SameValueNonNumber(x, y) {
|
||||
if (typeof x === 'number' || typeof x !== typeof y) {
|
||||
throw new $TypeError('SameValueNonNumber requires two non-number values of the same type.');
|
||||
}
|
||||
return SameValue(x, y);
|
||||
};
|
9
node_modules/es-abstract/2017/SameValueZero.js
generated
vendored
Normal file
9
node_modules/es-abstract/2017/SameValueZero.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
'use strict';
|
||||
|
||||
var $isNaN = require('../helpers/isNaN');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-samevaluezero
|
||||
|
||||
module.exports = function SameValueZero(x, y) {
|
||||
return (x === y) || ($isNaN(x) && $isNaN(y));
|
||||
};
|
14
node_modules/es-abstract/2017/SecFromTime.js
generated
vendored
Normal file
14
node_modules/es-abstract/2017/SecFromTime.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
'use strict';
|
||||
|
||||
var floor = require('./floor');
|
||||
var modulo = require('./modulo');
|
||||
|
||||
var timeConstants = require('../helpers/timeConstants');
|
||||
var msPerSecond = timeConstants.msPerSecond;
|
||||
var SecondsPerMinute = timeConstants.SecondsPerMinute;
|
||||
|
||||
// https://262.ecma-international.org/5.1/#sec-15.9.1.10
|
||||
|
||||
module.exports = function SecFromTime(t) {
|
||||
return modulo(floor(t / msPerSecond), SecondsPerMinute);
|
||||
};
|
45
node_modules/es-abstract/2017/Set.js
generated
vendored
Normal file
45
node_modules/es-abstract/2017/Set.js
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var IsPropertyKey = require('./IsPropertyKey');
|
||||
var SameValue = require('./SameValue');
|
||||
var Type = require('./Type');
|
||||
|
||||
// IE 9 does not throw in strict mode when writability/configurability/extensibility is violated
|
||||
var noThrowOnStrictViolation = (function () {
|
||||
try {
|
||||
delete [].length;
|
||||
return true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}());
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-set-o-p-v-throw
|
||||
|
||||
module.exports = function Set(O, P, V, Throw) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: `O` must be an Object');
|
||||
}
|
||||
if (!IsPropertyKey(P)) {
|
||||
throw new $TypeError('Assertion failed: `P` must be a Property Key');
|
||||
}
|
||||
if (typeof Throw !== 'boolean') {
|
||||
throw new $TypeError('Assertion failed: `Throw` must be a Boolean');
|
||||
}
|
||||
if (Throw) {
|
||||
O[P] = V; // eslint-disable-line no-param-reassign
|
||||
if (noThrowOnStrictViolation && !SameValue(O[P], V)) {
|
||||
throw new $TypeError('Attempted to assign to readonly property.');
|
||||
}
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
O[P] = V; // eslint-disable-line no-param-reassign
|
||||
return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
};
|
40
node_modules/es-abstract/2017/SetFunctionName.js
generated
vendored
Normal file
40
node_modules/es-abstract/2017/SetFunctionName.js
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
'use strict';
|
||||
|
||||
var hasOwn = require('hasown');
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
|
||||
var getSymbolDescription = require('get-symbol-description');
|
||||
|
||||
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
|
||||
var IsExtensible = require('./IsExtensible');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-setfunctionname
|
||||
|
||||
module.exports = function SetFunctionName(F, name) {
|
||||
if (typeof F !== 'function') {
|
||||
throw new $TypeError('Assertion failed: `F` must be a function');
|
||||
}
|
||||
if (!IsExtensible(F) || hasOwn(F, 'name')) {
|
||||
throw new $TypeError('Assertion failed: `F` must be extensible, and must not have a `name` own property');
|
||||
}
|
||||
if (typeof name !== 'symbol' && typeof name !== 'string') {
|
||||
throw new $TypeError('Assertion failed: `name` must be a Symbol or a String');
|
||||
}
|
||||
if (typeof name === 'symbol') {
|
||||
var description = getSymbolDescription(name);
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
name = typeof description === 'undefined' ? '' : '[' + description + ']';
|
||||
}
|
||||
if (arguments.length > 2) {
|
||||
var prefix = arguments[2];
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
name = prefix + ' ' + name;
|
||||
}
|
||||
return DefinePropertyOrThrow(F, 'name', {
|
||||
'[[Value]]': name,
|
||||
'[[Writable]]': false,
|
||||
'[[Enumerable]]': false,
|
||||
'[[Configurable]]': true
|
||||
});
|
||||
};
|
57
node_modules/es-abstract/2017/SetIntegrityLevel.js
generated
vendored
Normal file
57
node_modules/es-abstract/2017/SetIntegrityLevel.js
generated
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $SyntaxError = require('es-errors/syntax');
|
||||
var $TypeError = require('es-errors/type');
|
||||
var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
|
||||
var $gOPD = require('gopd');
|
||||
var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
|
||||
|
||||
var forEach = require('../helpers/forEach');
|
||||
|
||||
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
|
||||
var IsAccessorDescriptor = require('./IsAccessorDescriptor');
|
||||
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
|
||||
var Type = require('./Type');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-setintegritylevel
|
||||
|
||||
module.exports = function SetIntegrityLevel(O, level) {
|
||||
if (Type(O) !== 'Object') {
|
||||
throw new $TypeError('Assertion failed: Type(O) is not Object');
|
||||
}
|
||||
if (level !== 'sealed' && level !== 'frozen') {
|
||||
throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`');
|
||||
}
|
||||
if (!$preventExtensions) {
|
||||
throw new $SyntaxError('SetIntegrityLevel requires native `Object.preventExtensions` support');
|
||||
}
|
||||
var status = $preventExtensions(O);
|
||||
if (!status) {
|
||||
return false;
|
||||
}
|
||||
if (!$gOPN) {
|
||||
throw new $SyntaxError('SetIntegrityLevel requires native `Object.getOwnPropertyNames` support');
|
||||
}
|
||||
var theKeys = $gOPN(O);
|
||||
if (level === 'sealed') {
|
||||
forEach(theKeys, function (k) {
|
||||
DefinePropertyOrThrow(O, k, { configurable: false });
|
||||
});
|
||||
} else if (level === 'frozen') {
|
||||
forEach(theKeys, function (k) {
|
||||
var currentDesc = $gOPD(O, k);
|
||||
if (typeof currentDesc !== 'undefined') {
|
||||
var desc;
|
||||
if (IsAccessorDescriptor(ToPropertyDescriptor(currentDesc))) {
|
||||
desc = { configurable: false };
|
||||
} else {
|
||||
desc = { configurable: false, writable: false };
|
||||
}
|
||||
DefinePropertyOrThrow(O, k, desc);
|
||||
}
|
||||
});
|
||||
}
|
||||
return true;
|
||||
};
|
110
node_modules/es-abstract/2017/SetValueInBuffer.js
generated
vendored
Normal file
110
node_modules/es-abstract/2017/SetValueInBuffer.js
generated
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('get-intrinsic');
|
||||
|
||||
var $TypeError = require('es-errors/type');
|
||||
var $Uint8Array = GetIntrinsic('%Uint8Array%', true);
|
||||
|
||||
var isInteger = require('../helpers/isInteger');
|
||||
|
||||
var IsDetachedBuffer = require('./IsDetachedBuffer');
|
||||
var ToInt16 = require('./ToInt16');
|
||||
var ToInt32 = require('./ToInt32');
|
||||
var ToInt8 = require('./ToInt8');
|
||||
var ToUint16 = require('./ToUint16');
|
||||
var ToUint32 = require('./ToUint32');
|
||||
var ToUint8 = require('./ToUint8');
|
||||
var ToUint8Clamp = require('./ToUint8Clamp');
|
||||
|
||||
var isArrayBuffer = require('is-array-buffer');
|
||||
var hasOwn = require('hasown');
|
||||
|
||||
var tableTAO = require('./tables/typed-array-objects');
|
||||
|
||||
var TypeToAO = {
|
||||
__proto__: null,
|
||||
Int8: ToInt8,
|
||||
Uint8: ToUint8,
|
||||
Uint8C: ToUint8Clamp,
|
||||
Int16: ToInt16,
|
||||
Uint16: ToUint16,
|
||||
Int32: ToInt32,
|
||||
Uint32: ToUint32
|
||||
};
|
||||
|
||||
var defaultEndianness = require('../helpers/defaultEndianness');
|
||||
var forEach = require('../helpers/forEach');
|
||||
var integerToNBytes = require('../helpers/integerToNBytes');
|
||||
var valueToFloat32Bytes = require('../helpers/valueToFloat32Bytes');
|
||||
var valueToFloat64Bytes = require('../helpers/valueToFloat64Bytes');
|
||||
|
||||
// https://262.ecma-international.org/6.0/#sec-setvalueinbuffer
|
||||
|
||||
module.exports = function SetValueInBuffer(arrayBuffer, byteIndex, type, value) {
|
||||
if (!isArrayBuffer(arrayBuffer)) {
|
||||
throw new $TypeError('Assertion failed: `arrayBuffer` must be an ArrayBuffer');
|
||||
}
|
||||
|
||||
if (!isInteger(byteIndex)) {
|
||||
throw new $TypeError('Assertion failed: `byteIndex` must be an integer');
|
||||
}
|
||||
|
||||
if (typeof type !== 'string' || !hasOwn(tableTAO.size, '$' + type)) {
|
||||
throw new $TypeError('Assertion failed: `type` must be a Typed Array Element Type');
|
||||
}
|
||||
|
||||
if (typeof value !== 'number') {
|
||||
throw new $TypeError('Assertion failed: `value` must be a number');
|
||||
}
|
||||
|
||||
if (arguments.length > 4 && typeof arguments[4] !== 'boolean') {
|
||||
throw new $TypeError('Assertion failed: `isLittleEndian` must be a boolean, if present');
|
||||
}
|
||||
|
||||
if (IsDetachedBuffer(arrayBuffer)) {
|
||||
throw new $TypeError('Assertion failed: ArrayBuffer is detached'); // step 1
|
||||
}
|
||||
|
||||
// 2. Assert: There are sufficient bytes in arrayBuffer starting at byteIndex to represent a value of type.
|
||||
|
||||
if (byteIndex < 0) {
|
||||
throw new $TypeError('Assertion failed: `byteIndex` must be non-negative'); // step 3
|
||||
}
|
||||
|
||||
// 4. Assert: Type(value) is Number.
|
||||
|
||||
// 5. Let block be arrayBuffer’s [[ArrayBufferData]] internal slot.
|
||||
|
||||
// 6. Assert: block is not undefined.
|
||||
|
||||
var elementSize = tableTAO.size['$' + type]; // step 7
|
||||
if (!elementSize) {
|
||||
throw new $TypeError('Assertion failed: `type` must be one of "Int8", "Uint8", "Uint8C", "Int16", "Uint16", "Int32", "Uint32", "Float32", or "Float64"');
|
||||
}
|
||||
|
||||
// 8. If isLittleEndian is not present, set isLittleEndian to either true or false. The choice is implementation dependent and should be the alternative that is most efficient for the implementation. An implementation must use the same value each time this step is executed and the same value must be used for the corresponding step in the GetValueFromBuffer abstract operation.
|
||||
var isLittleEndian = arguments.length > 4 ? arguments[4] : defaultEndianness === 'little'; // step 8
|
||||
|
||||
var rawBytes;
|
||||
if (type === 'Float32') { // step 1
|
||||
rawBytes = valueToFloat32Bytes(value, isLittleEndian);
|
||||
} else if (type === 'Float64') { // step 2
|
||||
rawBytes = valueToFloat64Bytes(value, isLittleEndian);
|
||||
} else {
|
||||
var n = elementSize; // step 3.a
|
||||
|
||||
var convOp = TypeToAO[type]; // step 3.b
|
||||
|
||||
var intValue = convOp(value); // step 3.c
|
||||
|
||||
rawBytes = integerToNBytes(intValue, n, isLittleEndian); // step 3.d, 3.e, 4
|
||||
}
|
||||
|
||||
// 12. Store the individual bytes of rawBytes into block, in order, starting at block[byteIndex].
|
||||
var arr = new $Uint8Array(arrayBuffer, byteIndex, elementSize);
|
||||
forEach(rawBytes, function (rawByte, i) {
|
||||
arr[i] = rawByte;
|
||||
});
|
||||
|
||||
// 13. Return NormalCompletion(undefined).
|
||||
};
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user