Update metadata

This commit is contained in:
Imran Ismail
2019-09-05 12:08:20 +08:00
parent 6e5c237523
commit 56c04146d7
1454 changed files with 204046 additions and 234789 deletions

46
node_modules/es-abstract/.eslintrc generated vendored
View File

@@ -8,13 +8,13 @@
},
"rules": {
"arrow-parens": [2, "always"],
"array-bracket-newline": 0,
"array-element-newline": 0,
"complexity": 0,
"eqeqeq": [2, "allow-null"],
"func-name-matching": 0,
"id-length": [2, { "min": 1, "max": 30 }],
"max-lines": [2, 800],
"max-params": [2, 4],
"max-statements": [2, 24],
"max-statements-per-line": [2, { "max": 2 }],
@@ -24,5 +24,47 @@
"no-extra-parens": 1,
"operator-linebreak": [2, "before"],
"sort-keys": 0,
}
},
"overrides": [
{
"files": "./es5.js",
"rules": {
"max-lines": [2, 600],
"max-statements": [2, 30],
},
},
{
"files": "./es2015.js",
"rules": {
"max-lines": [2, 1500],
},
},
{
"files": "operations/*",
"rules": {
"max-lines": 0,
},
},
{
"files": "operations/*.js",
"parserOptions": {
"ecmaVersion": "2018",
},
"rules": {
//camelcase
//array-callback-return
//consistent-return
"no-console": 0,
"no-multi-str": 0,
},
},
{
"files": "operations/getOps.js",
"rules": {
"no-console": 0,
"no-process-exit": 0,
},
},
],
}

12
node_modules/es-abstract/.github/FUNDING.yml generated vendored Normal file
View File

@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: [ljharb]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: npm/es-abstract
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with a single custom sponsorship URL

4
node_modules/es-abstract/.nycrc generated vendored
View File

@@ -2,8 +2,8 @@
"all": true,
"check-coverage": true,
"reporter": ["text-summary", "text", "html", "json"],
"lines": 86.99,
"statements": 86.86,
"lines": 86,
"statements": 85.93,
"functions": 82.43,
"branches": 76.06,
"exclude": [

58
node_modules/es-abstract/.travis.yml generated vendored
View File

@@ -2,12 +2,13 @@ language: node_js
os:
- linux
node_js:
- "11.6"
- "10.15"
- "12.12"
- "11.15"
- "10.16"
- "9.11"
- "8.15"
- "8.16"
- "7.10"
- "6.16"
- "6.17"
- "5.12"
- "4.9"
- "iojs-v3.3"
@@ -52,6 +53,48 @@ matrix:
env: COVERAGE=true
- node_js: "8"
env: COVERAGE=true
- node_js: "12.11"
env: TEST=true ALLOW_FAILURE=true
- node_js: "12.10"
env: TEST=true ALLOW_FAILURE=true
- node_js: "12.9"
env: TEST=true ALLOW_FAILURE=true
- node_js: "12.8"
env: TEST=true ALLOW_FAILURE=true
- node_js: "12.7"
env: TEST=true ALLOW_FAILURE=true
- node_js: "12.6"
env: TEST=true ALLOW_FAILURE=true
- node_js: "12.5"
env: TEST=true ALLOW_FAILURE=true
- node_js: "12.4"
env: TEST=true ALLOW_FAILURE=true
- node_js: "12.3"
env: TEST=true ALLOW_FAILURE=true
- node_js: "12.2"
env: TEST=true ALLOW_FAILURE=true
- node_js: "12.1"
env: TEST=true ALLOW_FAILURE=true
- node_js: "12.0"
env: TEST=true ALLOW_FAILURE=true
- node_js: "11.14"
env: TEST=true ALLOW_FAILURE=true
- node_js: "11.13"
env: TEST=true ALLOW_FAILURE=true
- node_js: "11.12"
env: TEST=true ALLOW_FAILURE=true
- node_js: "11.11"
env: TEST=true ALLOW_FAILURE=true
- node_js: "11.10"
env: TEST=true ALLOW_FAILURE=true
- node_js: "11.9"
env: TEST=true ALLOW_FAILURE=true
- node_js: "11.8"
env: TEST=true ALLOW_FAILURE=true
- node_js: "11.7"
env: TEST=true ALLOW_FAILURE=true
- node_js: "11.6"
env: TEST=true ALLOW_FAILURE=true
- node_js: "11.5"
env: TEST=true ALLOW_FAILURE=true
- node_js: "11.4"
@@ -64,6 +107,8 @@ matrix:
env: TEST=true ALLOW_FAILURE=true
- node_js: "11.0"
env: TEST=true ALLOW_FAILURE=true
- node_js: "10.15"
env: TEST=true ALLOW_FAILURE=true
- node_js: "10.14"
env: TEST=true ALLOW_FAILURE=true
- node_js: "10.13"
@@ -116,6 +161,8 @@ matrix:
env: TEST=true ALLOW_FAILURE=true
- node_js: "9.0"
env: TEST=true ALLOW_FAILURE=true
- node_js: "8.15"
env: TEST=true ALLOW_FAILURE=true
- node_js: "8.14"
env: TEST=true ALLOW_FAILURE=true
- node_js: "8.13"
@@ -166,6 +213,8 @@ matrix:
env: TEST=true ALLOW_FAILURE=true
- node_js: "7.0"
env: TEST=true ALLOW_FAILURE=true
- node_js: "6.16"
env: TEST=true ALLOW_FAILURE=true
- node_js: "6.15"
env: TEST=true ALLOW_FAILURE=true
- node_js: "6.14"
@@ -281,3 +330,4 @@ matrix:
allow_failures:
- os: osx
- env: TEST=true ALLOW_FAILURE=true
- node_js: "0.6"

View File

@@ -1,3 +1,77 @@
1.16.0 / 2019-10-18
=================
* [New] `ES2015+`: add `SetFunctionName`
* [New] `ES2015+`: add `GetPrototypeFromConstructor`, with caveats
* [New] `ES2015+`: add `CreateListFromArrayLike`
* [New] `ES2016+`: add `OrdinarySetPrototypeOf`
* [New] `ES2016+`: add `OrdinaryGetPrototypeOf`
* [New] add `getSymbolDescription` and `getInferredName` helpers
* [Fix] `GetIterator`: add fallback for pre-Symbol environments, tests
* [Dev Deps] update `object.fromentries`
* [Tests] add `node` `v12.2`
1.15.0 / 2019-10-02
=================
* [New] `ES2018`+: add `DateString`, `TimeString`
* [New] `ES2015`+: add `ToDateString`
* [New] `ES5`+: add `msFromTime`, `SecFromTime`, `MinFromTime`, `HourFromTime`, `TimeWithinDay`, `Day`, `DayFromYear`, `TimeFromYear`, `YearFromTime`, `WeekDay`, `DaysInYear`, `InLeapYear`, `DayWithinYear`, `MonthFromTime`, `DateFromTime`, `MakeDay`, `MakeDate`, `MakeTime`, `TimeClip`, `modulo`
* [New] add `regexTester` helper
* [New] add `callBound` helper
* [New] add ES2020s intrinsic dot notation
* [New] add `isPrefixOf` helper
* [New] add `maxSafeInteger` helper
* [Deps] update `string.prototype.trimleft`, `string.prototype.trimright`
* [Dev Deps] update `eslint`
* [Tests] on `node` `v12.11`
* [meta] npmignore operations scripts; add "deltas"
1.14.2 / 2019-09-08
=================
* [Fix] `ES2016`: `IterableToArrayLike`: add proper fallback for strings, pre-Symbols
* [Tests] on `node` `v12.10`
1.14.1 / 2019-09-03
=================
* [meta] republish with some extra files removed
1.14.0 / 2019-09-02
=================
* [New] add ES2019
* [New] `ES2017+`: add `IterableToList`
* [New] `ES2016`: add `IterableToArrayLike`
* [New] `ES2015+`: add `ArrayCreate`, `ArraySetLength`, `OrdinaryDefineOwnProperty`, `OrdinaryGetOwnProperty`, `OrdinaryHasProperty`, `CreateHTML`, `GetOwnPropertyKeys`, `InstanceofOperator`, `SymbolDescriptiveString`, `GetSubstitution`, `ValidateAndApplyPropertyDescriptor`, `IsPromise`, `OrdinaryHasInstance`, `TestIntegrityLevel`, `SetIntegrityLevel`
* [New] add `callBind` helper, and use it
* [New] add helpers: `isPropertyDescriptor`, `every`
* [New] ES5+: add `Abstract Relational Comparison`
* [New] ES5+: add `Abstract Equality Comparison`, `Strict Equality Comparison`
* [Fix] `ES2015+`: `GetIterator`: only require native Symbols when `method` is omitted
* [Fix] `ES2015`: `Call`: error message now properly displays Symbols using `object-inspect`
* [Fix] `ES2015+`: `ValidateAndApplyPropertyDescriptor`: use ES2017 logic to bypass spec bugs
* [Fix] `ES2015+`: `CreateDataProperty`, `DefinePropertyOrThrow`, `ValidateAndApplyPropertyDescriptor`: add fallbacks for ES3
* [Fix] `ES2015+`: `FromPropertyDescriptor`: no longer requires a fully complete Property Descriptor
* [Fix] `ES5`: `IsPropertyDescriptor`: call into `IsDataDescriptor` and `IsAccessorDescriptor`
* [Refactor] use `has-symbols` for Symbol detection
* [Fix] `helpers/assertRecord`: remove `console.log`
* [Deps] update `object-keys`
* [readme] add security note
* [meta] change http URLs to https
* [meta] linter cleanup
* [meta] fix getOps script
* [meta] add FUNDING.yml
* [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `semver`, `replace`, `cheerio`, `tape`
* [Tests] up to `node` `v12.9`, `v11.15`, `v10.16`, `v8.16`, `v6.17`
* [Tests] temporarily allow node 0.6 to fail; segfaulting in travis
* [Tests] use the values helper more in es5 tests
* [Tests] fix linting to apply to all files
* [Tests] run `npx aud` only on prod deps
* [Tests] add v.descriptors helpers
* [Tests] use `npx aud` instead of `npm audit` with hoops
* [Tests] use `eclint` instead of `editorconfig-tools`
* [Tests] some intrinsic cleanup
* [Tests] migrate es5 tests to use values helper
* [Tests] add some missing ES2015 ops
1.13.0 / 2019-01-02
=================
* [New] add ES2018

View File

@@ -1,39 +1,19 @@
'use strict';
/* globals
Set,
Map,
WeakSet,
WeakMap,
Promise,
Symbol,
Proxy,
Atomics,
SharedArrayBuffer,
ArrayBuffer,
DataView,
Uint8Array,
Float32Array,
Float64Array,
Int8Array,
Int16Array,
Int32Array,
Uint8ClampedArray,
Uint16Array,
Uint32Array,
*/
var undefined; // eslint-disable-line no-shadow-restricted-names
var $TypeError = TypeError;
var ThrowTypeError = Object.getOwnPropertyDescriptor
? (function () { return Object.getOwnPropertyDescriptor(arguments, 'callee').get; }())
: function () { throw new TypeError(); };
: function () { throw new $TypeError(); };
var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';
var hasSymbols = require('has-symbols')();
var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto
@@ -141,8 +121,8 @@ var INTRINSICS = {
'$ %ThrowTypeError%': ThrowTypeError,
'$ %TypedArray%': TypedArray,
'$ %TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,
'$ %TypeError%': TypeError,
'$ %TypeErrorPrototype%': TypeError.prototype,
'$ %TypeError%': $TypeError,
'$ %TypeErrorPrototype%': $TypeError.prototype,
'$ %Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,
'$ %Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,
'$ %Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,
@@ -159,11 +139,22 @@ var INTRINSICS = {
'$ %WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype
};
module.exports = function GetIntrinsic(name, allowMissing) {
if (arguments.length > 1 && typeof allowMissing !== 'boolean') {
throw new TypeError('"allowMissing" argument must be a boolean');
}
var bind = require('function-bind');
var $replace = bind.call(Function.call, String.prototype.replace);
/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */
var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */
var stringToPath = function stringToPath(string) {
var result = [];
$replace(string, rePropName, function (match, number, quote, subString) {
result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match);
});
return result;
};
/* end adaptation */
var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {
var key = '$ ' + name;
if (!(key in INTRINSICS)) {
throw new SyntaxError('intrinsic ' + name + ' does not exist!');
@@ -171,7 +162,28 @@ module.exports = function GetIntrinsic(name, allowMissing) {
// istanbul ignore if // hopefully this is impossible to test :-)
if (typeof INTRINSICS[key] === 'undefined' && !allowMissing) {
throw new TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');
throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');
}
return INTRINSICS[key];
};
module.exports = function GetIntrinsic(name, allowMissing) {
if (arguments.length > 1 && typeof allowMissing !== 'boolean') {
throw new TypeError('"allowMissing" argument must be a boolean');
}
var parts = stringToPath(name);
if (parts.length === 0) {
return getBaseIntrinsic(name, allowMissing);
}
var value = getBaseIntrinsic('%' + parts[0] + '%', allowMissing);
for (var i = 1; i < parts.length; i += 1) {
if (value != null) {
value = value[parts[i]];
}
}
return value;
};

6
node_modules/es-abstract/README.md generated vendored
View File

@@ -12,7 +12,7 @@
ECMAScript spec abstract operations.
When different versions of the spec conflict, the default export will be the latest version of the abstract operation.
All abstract operations will also be available under an `es5`/`es2015`/`es2016`/`es2017`/`es2018` entry point, and exported property, if you require a specific version.
All abstract operations will also be available under an `es5`/`es2015`/`es2016`/`es2017`/`es2018`/`es2019` entry point, and exported property, if you require a specific version.
## Example
@@ -27,6 +27,10 @@ assert(!ES.isCallable(/a/g));
## Tests
Simply clone the repo, `npm install`, and run `npm test`
## Security
Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report.
[package-url]: https://npmjs.org/package/es-abstract
[npm-version-svg]: http://versionbadg.es/ljharb/es-abstract.svg
[travis-svg]: https://travis-ci.org/ljharb/es-abstract.svg

768
node_modules/es-abstract/es2015.js generated vendored
View File

@@ -3,61 +3,108 @@
var has = require('has');
var toPrimitive = require('es-to-primitive/es6');
var keys = require('object-keys');
var inspect = require('object-inspect');
var GetIntrinsic = require('./GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var $RangeError = GetIntrinsic('%RangeError%');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $Array = GetIntrinsic('%Array%');
var $ArrayPrototype = $Array.prototype;
var $String = GetIntrinsic('%String%');
var $Object = GetIntrinsic('%Object%');
var $Number = GetIntrinsic('%Number%');
var $Symbol = GetIntrinsic('%Symbol%', true);
var $RegExp = GetIntrinsic('%RegExp%');
var $Date = GetIntrinsic('%Date%');
var $Function = GetIntrinsic('%Function%');
var $preventExtensions = $Object.preventExtensions;
var hasSymbols = !!$Symbol;
var hasSymbols = require('has-symbols')();
var assertRecord = require('./helpers/assertRecord');
var $isNaN = require('./helpers/isNaN');
var $isFinite = require('./helpers/isFinite');
var MAX_SAFE_INTEGER = $Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;
var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1;
var MAX_SAFE_INTEGER = require('./helpers/maxSafeInteger');
var assign = require('./helpers/assign');
var sign = require('./helpers/sign');
var mod = require('./helpers/mod');
var isPrimitive = require('./helpers/isPrimitive');
var forEach = require('./helpers/forEach');
var every = require('./helpers/every');
var isSamePropertyDescriptor = require('./helpers/isSamePropertyDescriptor');
var isPropertyDescriptor = require('./helpers/isPropertyDescriptor');
var parseInteger = parseInt;
var bind = require('function-bind');
var arraySlice = bind.call(Function.call, $Array.prototype.slice);
var strSlice = bind.call(Function.call, $String.prototype.slice);
var isBinary = bind.call(Function.call, $RegExp.prototype.test, /^0b[01]+$/i);
var isOctal = bind.call(Function.call, $RegExp.prototype.test, /^0o[0-7]+$/i);
var regexExec = bind.call(Function.call, $RegExp.prototype.exec);
var callBound = require('./helpers/callBound');
var regexTester = require('./helpers/regexTester');
var getIteratorMethod = require('./helpers/getIteratorMethod');
var getSymbolDescription = require('./helpers/getSymbolDescription');
var $PromiseThen = callBound('Promise.prototype.then', true);
var arraySlice = callBound('Array.prototype.slice');
var strSlice = callBound('String.prototype.slice');
var $indexOf = callBound('Array.prototype.indexOf');
var $push = callBound('Array.prototype.push');
var isBinary = regexTester(/^0b[01]+$/i);
var isOctal = regexTester(/^0o[0-7]+$/i);
var isDigit = regexTester(/^[0-9]$/);
var regexExec = callBound('RegExp.prototype.exec');
var nonWS = ['\u0085', '\u200b', '\ufffe'].join('');
var nonWSregex = new $RegExp('[' + nonWS + ']', 'g');
var hasNonWS = bind.call(Function.call, $RegExp.prototype.test, nonWSregex);
var invalidHexLiteral = /^[-+]0x[0-9a-f]+$/i;
var isInvalidHexLiteral = bind.call(Function.call, $RegExp.prototype.test, invalidHexLiteral);
var $charCodeAt = bind.call(Function.call, $String.prototype.charCodeAt);
var hasNonWS = regexTester(nonWSregex);
var isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i);
var $charCodeAt = callBound('String.prototype.charCodeAt');
var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
var toStr = bind.call(Function.call, Object.prototype.toString);
var toStr = callBound('Object.prototype.toString');
var $NumberValueOf = bind.call(Function.call, GetIntrinsic('%NumberPrototype%').valueOf);
var $BooleanValueOf = bind.call(Function.call, GetIntrinsic('%BooleanPrototype%').valueOf);
var $StringValueOf = bind.call(Function.call, GetIntrinsic('%StringPrototype%').valueOf);
var $DateValueOf = bind.call(Function.call, GetIntrinsic('%DatePrototype%').valueOf);
var $NumberValueOf = callBound('Number.prototype.valueOf');
var $BooleanValueOf = callBound('Boolean.prototype.valueOf');
var $StringValueOf = callBound('String.prototype.valueOf');
var $DateValueOf = callBound('Date.prototype.valueOf');
var $SymbolToString = callBound('Symbol.prototype.toString', true);
var $floor = Math.floor;
var $abs = Math.abs;
var $ObjectCreate = Object.create;
var $ObjectCreate = $Object.create;
var $gOPD = $Object.getOwnPropertyDescriptor;
var $gOPN = $Object.getOwnPropertyNames;
var $gOPS = $Object.getOwnPropertySymbols;
var $isExtensible = $Object.isExtensible;
var $defineProperty = $Object.defineProperty;
var $setProto = require('./helpers/setProto');
// whitespace from: http://es5.github.io/#x15.5.4.20
var DefineOwnProperty = function DefineOwnProperty(ES, O, P, desc) {
if (!$defineProperty) {
if (!ES.IsDataDescriptor(desc)) {
// ES3 does not support getters/setters
return false;
}
if (!desc['[[Configurable]]'] || !desc['[[Writable]]']) {
return false;
}
// fallback for ES3
if (P in O && $isEnumerable(O, P) !== !!desc['[[Enumerable]]']) {
// a non-enumerable existing property
return false;
}
// property does not exist at all, or exists but is enumerable
var V = desc['[[Value]]'];
O[P] = V; // will use [[Define]]
return ES.SameValue(O[P], V);
}
$defineProperty(O, P, ES.FromPropertyDescriptor(desc));
return true;
};
// whitespace from: https://es5.github.io/#x15.5.4.20
// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324
var ws = [
'\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003',
@@ -65,9 +112,9 @@ var ws = [
'\u2029\uFEFF'
].join('');
var trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');
var replace = bind.call(Function.call, $String.prototype.replace);
var $replace = callBound('String.prototype.replace');
var trim = function (value) {
return replace(value, trimRegex, '');
return $replace(value, trimRegex, '');
};
var ES5 = require('./es5');
@@ -81,7 +128,7 @@ var ES6 = assign(assign({}, ES5), {
Call: function Call(F, V) {
var args = arguments.length > 2 ? arguments[2] : [];
if (!this.IsCallable(F)) {
throw new $TypeError(F + ' is not a function');
throw new $TypeError(inspect(F) + ' is not a function');
}
return F.apply(V, args);
},
@@ -211,11 +258,11 @@ var ES6 = assign(assign({}, ES5), {
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isconstructor
IsConstructor: function IsConstructor(argument) {
return typeof argument === 'function' && !!argument.prototype; // unfortunately there's no way to truly check this without try/catch `new argument`
return typeof argument === 'function' && !!argument.prototype; // unfortunately there's no way to truly check this without try/catch `new argument` or Proxy
},
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isextensible-o
IsExtensible: Object.preventExtensions
IsExtensible: $preventExtensions
? function IsExtensible(obj) {
if (isPrimitive(obj)) {
return false;
@@ -325,7 +372,7 @@ var ES6 = assign(assign({}, ES5), {
}
// 7.3.1.2
if (!this.IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));
}
// 7.3.1.3
return O[P];
@@ -360,6 +407,36 @@ var ES6 = assign(assign({}, ES5), {
throw new $TypeError('no constructor found');
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor
FromPropertyDescriptor: function FromPropertyDescriptor(Desc) {
if (typeof Desc === 'undefined') {
return Desc;
}
assertRecord(this, 'Property Descriptor', 'Desc', Desc);
var obj = {};
if ('[[Value]]' in Desc) {
obj.value = Desc['[[Value]]'];
}
if ('[[Writable]]' in Desc) {
obj.writable = Desc['[[Writable]]'];
}
if ('[[Get]]' in Desc) {
obj.get = Desc['[[Get]]'];
}
if ('[[Set]]' in Desc) {
obj.set = Desc['[[Set]]'];
}
if ('[[Enumerable]]' in Desc) {
obj.enumerable = Desc['[[Enumerable]]'];
}
if ('[[Configurable]]' in Desc) {
obj.configurable = Desc['[[Configurable]]'];
}
return obj;
},
// https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor
CompletePropertyDescriptor: function CompletePropertyDescriptor(Desc) {
assertRecord(this, 'Property Descriptor', 'Desc', Desc);
@@ -459,13 +536,9 @@ var ES6 = assign(assign({}, ES5), {
// https://ecma-international.org/ecma-262/6.0/#sec-getiterator
GetIterator: function GetIterator(obj, method) {
if (!hasSymbols) {
throw new SyntaxError('ES.GetIterator depends on native iterator support.');
}
var actualMethod = method;
if (arguments.length < 2) {
actualMethod = this.GetMethod(obj, $Symbol.iterator);
actualMethod = getIteratorMethod(this, obj);
}
var iterator = this.Call(actualMethod, obj);
if (this.Type(iterator) !== 'Object') {
@@ -615,19 +688,17 @@ var ES6 = assign(assign({}, ES5), {
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
}
var oldDesc = $gOPD(O, P);
var extensible = oldDesc || (typeof $isExtensible !== 'function' || $isExtensible(O));
var extensible = oldDesc || this.IsExtensible(O);
var immutable = oldDesc && (!oldDesc.writable || !oldDesc.configurable);
if (immutable || !extensible) {
return false;
}
var newDesc = {
configurable: true,
enumerable: true,
value: V,
writable: true
};
$defineProperty(O, P, newDesc);
return true;
return DefineOwnProperty(this, O, P, {
'[[Configurable]]': true,
'[[Enumerable]]': true,
'[[Value]]': V,
'[[Writable]]': true
});
},
// https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow
@@ -705,12 +776,12 @@ var ES6 = assign(assign({}, ES5), {
}
var newDesc = {
configurable: true,
enumerable: false,
value: V,
writable: true
'[[Configurable]]': true,
'[[Enumerable]]': false,
'[[Value]]': V,
'[[Writable]]': true
};
return !!$defineProperty(O, P, newDesc);
return DefineOwnProperty(this, O, P, newDesc);
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow
@@ -723,7 +794,12 @@ var ES6 = assign(assign({}, ES5), {
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
}
return !!$defineProperty(O, P, desc);
var Desc = isPropertyDescriptor(this, desc) ? desc : this.ToPropertyDescriptor(desc);
if (!isPropertyDescriptor(this, Desc)) {
throw new $TypeError('Assertion failed: Desc is not a valid Property Descriptor');
}
return DefineOwnProperty(this, O, P, Desc);
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow
@@ -782,6 +858,604 @@ var ES6 = assign(assign({}, ES5), {
// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-date-prototype-object
thisTimeValue: function thisTimeValue(value) {
return $DateValueOf(value);
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-setintegritylevel
SetIntegrityLevel: function SetIntegrityLevel(O, level) {
if (this.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);
var ES = this;
if (level === 'sealed') {
forEach(theKeys, function (k) {
ES.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 (ES.IsAccessorDescriptor(ES.ToPropertyDescriptor(currentDesc))) {
desc = { configurable: false };
} else {
desc = { configurable: false, writable: false };
}
ES.DefinePropertyOrThrow(O, k, desc);
}
});
}
return true;
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-testintegritylevel
TestIntegrityLevel: function TestIntegrityLevel(O, level) {
if (this.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"`');
}
var status = this.IsExtensible(O);
if (status) {
return false;
}
var theKeys = $gOPN(O);
var ES = this;
return theKeys.length === 0 || every(theKeys, function (k) {
var currentDesc = $gOPD(O, k);
if (typeof currentDesc !== 'undefined') {
if (currentDesc.configurable) {
return false;
}
if (level === 'frozen' && ES.IsDataDescriptor(ES.ToPropertyDescriptor(currentDesc)) && currentDesc.writable) {
return false;
}
}
return true;
});
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance
OrdinaryHasInstance: function OrdinaryHasInstance(C, O) {
if (this.IsCallable(C) === false) {
return false;
}
if (this.Type(O) !== 'Object') {
return false;
}
var P = this.Get(C, 'prototype');
if (this.Type(P) !== 'Object') {
throw new $TypeError('OrdinaryHasInstance called on an object with an invalid prototype property.');
}
return O instanceof C;
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasproperty
OrdinaryHasProperty: function OrdinaryHasProperty(O, P) {
if (this.Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
if (!this.IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: P must be a Property Key');
}
return P in O;
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-instanceofoperator
InstanceofOperator: function InstanceofOperator(O, C) {
if (this.Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
var instOfHandler = hasSymbols && $Symbol.hasInstance ? this.GetMethod(C, $Symbol.hasInstance) : void 0;
if (typeof instOfHandler !== 'undefined') {
return this.ToBoolean(this.Call(instOfHandler, C, [O]));
}
if (!this.IsCallable(C)) {
throw new $TypeError('`C` is not Callable');
}
return this.OrdinaryHasInstance(C, O);
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-ispromise
IsPromise: function IsPromise(x) {
if (this.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;
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison
'Abstract Equality Comparison': function AbstractEqualityComparison(x, y) {
var xType = this.Type(x);
var yType = this.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 this['Abstract Equality Comparison'](x, this.ToNumber(y));
}
if (xType === 'String' && yType === 'Number') {
return this['Abstract Equality Comparison'](this.ToNumber(x), y);
}
if (xType === 'Boolean') {
return this['Abstract Equality Comparison'](this.ToNumber(x), y);
}
if (yType === 'Boolean') {
return this['Abstract Equality Comparison'](x, this.ToNumber(y));
}
if ((xType === 'String' || xType === 'Number' || xType === 'Symbol') && yType === 'Object') {
return this['Abstract Equality Comparison'](x, this.ToPrimitive(y));
}
if (xType === 'Object' && (yType === 'String' || yType === 'Number' || yType === 'Symbol')) {
return this['Abstract Equality Comparison'](this.ToPrimitive(x), y);
}
return false;
},
// eslint-disable-next-line max-lines-per-function, max-statements, id-length, max-params
ValidateAndApplyPropertyDescriptor: function ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current) {
// this uses the ES2017+ logic, since it fixes a number of bugs in the ES2015 logic.
var oType = this.Type(O);
if (oType !== 'Undefined' && oType !== 'Object') {
throw new $TypeError('Assertion failed: O must be undefined or an Object');
}
if (this.Type(extensible) !== 'Boolean') {
throw new $TypeError('Assertion failed: extensible must be a Boolean');
}
if (!isPropertyDescriptor(this, Desc)) {
throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
}
if (this.Type(current) !== 'Undefined' && !isPropertyDescriptor(this, current)) {
throw new $TypeError('Assertion failed: current must be a Property Descriptor, or undefined');
}
if (oType !== 'Undefined' && !this.IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: if O is not undefined, P must be a Property Key');
}
if (this.Type(current) === 'Undefined') {
if (!extensible) {
return false;
}
if (this.IsGenericDescriptor(Desc) || this.IsDataDescriptor(Desc)) {
if (oType !== 'Undefined') {
DefineOwnProperty(this, O, P, {
'[[Configurable]]': Desc['[[Configurable]]'],
'[[Enumerable]]': Desc['[[Enumerable]]'],
'[[Value]]': Desc['[[Value]]'],
'[[Writable]]': Desc['[[Writable]]']
});
}
} else {
if (!this.IsAccessorDescriptor(Desc)) {
throw new $TypeError('Assertion failed: Desc is not an accessor descriptor');
}
if (oType !== 'Undefined') {
return DefineOwnProperty(this, O, P, Desc);
}
}
return true;
}
if (this.IsGenericDescriptor(Desc) && !('[[Configurable]]' in Desc) && !('[[Enumerable]]' in Desc)) {
return true;
}
if (isSamePropertyDescriptor(this, Desc, current)) {
return true; // removed by ES2017, but should still be correct
}
// "if every field in Desc is absent, return true" can't really match the assertion that it's a Property Descriptor
if (!current['[[Configurable]]']) {
if (Desc['[[Configurable]]']) {
return false;
}
if ('[[Enumerable]]' in Desc && !Desc['[[Enumerable]]'] === !!current['[[Enumerable]]']) {
return false;
}
}
if (this.IsGenericDescriptor(Desc)) {
// no further validation is required.
} else if (this.IsDataDescriptor(current) !== this.IsDataDescriptor(Desc)) {
if (!current['[[Configurable]]']) {
return false;
}
if (this.IsDataDescriptor(current)) {
if (oType !== 'Undefined') {
DefineOwnProperty(this, O, P, {
'[[Configurable]]': current['[[Configurable]]'],
'[[Enumerable]]': current['[[Enumerable]]'],
'[[Get]]': undefined
});
}
} else if (oType !== 'Undefined') {
DefineOwnProperty(this, O, P, {
'[[Configurable]]': current['[[Configurable]]'],
'[[Enumerable]]': current['[[Enumerable]]'],
'[[Value]]': undefined
});
}
} else if (this.IsDataDescriptor(current) && this.IsDataDescriptor(Desc)) {
if (!current['[[Configurable]]'] && !current['[[Writable]]']) {
if ('[[Writable]]' in Desc && Desc['[[Writable]]']) {
return false;
}
if ('[[Value]]' in Desc && !this.SameValue(Desc['[[Value]]'], current['[[Value]]'])) {
return false;
}
return true;
}
} else if (this.IsAccessorDescriptor(current) && this.IsAccessorDescriptor(Desc)) {
if (!current['[[Configurable]]']) {
if ('[[Set]]' in Desc && !this.SameValue(Desc['[[Set]]'], current['[[Set]]'])) {
return false;
}
if ('[[Get]]' in Desc && !this.SameValue(Desc['[[Get]]'], current['[[Get]]'])) {
return false;
}
return true;
}
} else {
throw new $TypeError('Assertion failed: current and Desc are not both data, both accessors, or one accessor and one data.');
}
if (oType !== 'Undefined') {
return DefineOwnProperty(this, O, P, Desc);
}
return true;
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarydefineownproperty
OrdinaryDefineOwnProperty: function OrdinaryDefineOwnProperty(O, P, Desc) {
if (this.Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: O must be an Object');
}
if (!this.IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: P must be a Property Key');
}
if (!isPropertyDescriptor(this, Desc)) {
throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
}
var desc = $gOPD(O, P);
var current = desc && this.ToPropertyDescriptor(desc);
var extensible = this.IsExtensible(O);
return this.ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current);
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty
OrdinaryGetOwnProperty: function OrdinaryGetOwnProperty(O, P) {
if (this.Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: O must be an Object');
}
if (!this.IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: P must be a Property Key');
}
if (!has(O, P)) {
return void 0;
}
if (!$gOPD) {
// ES3 fallback
var arrayLength = this.IsArray(O) && P === 'length';
var regexLastIndex = this.IsRegExp(O) && P === 'lastIndex';
return {
'[[Configurable]]': !(arrayLength || regexLastIndex),
'[[Enumerable]]': $isEnumerable(O, P),
'[[Value]]': O[P],
'[[Writable]]': true
};
}
return this.ToPropertyDescriptor($gOPD(O, P));
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-arraycreate
ArrayCreate: function ArrayCreate(length) {
if (!this.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
this.OrdinaryDefineOwnProperty(A, 'length', {
'[[Configurable]]': false,
'[[Enumerable]]': false,
'[[Value]]': length,
'[[Writable]]': true
});
*/
return A;
},
// eslint-disable-next-line max-statements, max-lines-per-function
ArraySetLength: function ArraySetLength(A, Desc) {
if (!this.IsArray(A)) {
throw new $TypeError('Assertion failed: A must be an Array');
}
if (!isPropertyDescriptor(this, Desc)) {
throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
}
if (!('[[Value]]' in Desc)) {
return this.OrdinaryDefineOwnProperty(A, 'length', Desc);
}
var newLenDesc = assign({}, Desc);
var newLen = this.ToUint32(Desc['[[Value]]']);
var numberLen = this.ToNumber(Desc['[[Value]]']);
if (newLen !== numberLen) {
throw new $RangeError('Invalid array length');
}
newLenDesc['[[Value]]'] = newLen;
var oldLenDesc = this.OrdinaryGetOwnProperty(A, 'length');
if (!this.IsDataDescriptor(oldLenDesc)) {
throw new $TypeError('Assertion failed: an array had a non-data descriptor on `length`');
}
var oldLen = oldLenDesc['[[Value]]'];
if (newLen >= oldLen) {
return this.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 = this.OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
if (!succeeded) {
return false;
}
while (newLen < oldLen) {
oldLen -= 1;
var deleteSucceeded = delete A[this.ToString(oldLen)];
if (!deleteSucceeded) {
newLenDesc['[[Value]]'] = oldLen + 1;
if (!newWritable) {
newLenDesc['[[Writable]]'] = false;
this.OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
return false;
}
}
}
if (!newWritable) {
return this.OrdinaryDefineOwnProperty(A, 'length', { '[[Writable]]': false });
}
return true;
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-createhtml
CreateHTML: function CreateHTML(string, tag, attribute, value) {
if (this.Type(tag) !== 'String' || this.Type(attribute) !== 'String') {
throw new $TypeError('Assertion failed: `tag` and `attribute` must be strings');
}
var str = this.RequireObjectCoercible(string);
var S = this.ToString(str);
var p1 = '<' + tag;
if (attribute !== '') {
var V = this.ToString(value);
var escapedV = $replace(V, /\x22/g, '&quot;');
p1 += '\x20' + attribute + '\x3D\x22' + escapedV + '\x22';
}
return p1 + '>' + S + '</' + tag + '>';
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys
GetOwnPropertyKeys: function GetOwnPropertyKeys(O, Type) {
if (this.Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
if (Type === 'Symbol') {
return hasSymbols && $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"`');
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-symboldescriptivestring
SymbolDescriptiveString: function SymbolDescriptiveString(sym) {
if (this.Type(sym) !== 'Symbol') {
throw new $TypeError('Assertion failed: `sym` must be a Symbol');
}
return $SymbolToString(sym);
},
// https://www.ecma-international.org/ecma-262/6.0/#sec-getsubstitution
// eslint-disable-next-line max-statements, max-params, max-lines-per-function
GetSubstitution: function GetSubstitution(matched, str, position, captures, replacement) {
if (this.Type(matched) !== 'String') {
throw new $TypeError('Assertion failed: `matched` must be a String');
}
var matchLength = matched.length;
if (this.Type(str) !== 'String') {
throw new $TypeError('Assertion failed: `str` must be a String');
}
var stringLength = str.length;
if (!this.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));
}
var ES = this;
var isStringOrHole = function (capture, index, arr) { return ES.Type(capture) === 'String' || !(index in arr); };
if (!this.IsArray(captures) || !every(captures, isStringOrHole)) {
throw new $TypeError('Assertion failed: `captures` must be a List of Strings, got ' + inspect(captures));
}
if (this.Type(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 = replacement[i];
var isLast = (i + 1) >= replacement.length;
var nextIsLast = (i + 2) >= replacement.length;
if (current === '$' && !isLast) {
var next = 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 : replacement[i + 2];
if (isDigit(next) && next !== '0' && (nextIsLast || !isDigit(nextNext))) {
// $1 through $9, and not followed by a digit
var n = parseInteger(next, 10);
// if (n > m, impl-defined)
result += (n <= m && this.Type(captures[n - 1]) === 'Undefined') ? '' : captures[n - 1];
i += 1;
} else if (isDigit(next) && (nextIsLast || isDigit(nextNext))) {
// $00 through $99
var nn = next + nextNext;
var nnI = parseInteger(nn, 10) - 1;
// if nn === '00' or nn > m, impl-defined
result += (nn <= m && this.Type(captures[nnI]) === 'Undefined') ? '' : captures[nnI];
i += 2;
} else {
result += '$';
}
}
} else {
// the final $, or else not a $
result += replacement[i];
}
}
return result;
},
// https://ecma-international.org/ecma-262/6.0/#sec-todatestring
ToDateString: function ToDateString(tv) {
if (this.Type(tv) !== 'Number') {
throw new $TypeError('Assertion failed: `tv` must be a Number');
}
if ($isNaN(tv)) {
return 'Invalid Date';
}
return $Date(tv);
},
// https://ecma-international.org/ecma-262/6.0/#sec-createlistfromarraylike
CreateListFromArrayLike: function CreateListFromArrayLike(obj) {
var elementTypes = arguments.length > 1
? arguments[1]
: ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'Object'];
if (this.Type(obj) !== 'Object') {
throw new $TypeError('Assertion failed: `obj` must be an Object');
}
if (!this.IsArray(elementTypes)) {
throw new $TypeError('Assertion failed: `elementTypes`, if provided, must be an array');
}
var len = this.ToLength(this.Get(obj, 'length'));
var list = [];
var index = 0;
while (index < len) {
var indexName = this.ToString(index);
var next = this.Get(obj, indexName);
var nextType = this.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;
},
// https://ecma-international.org/ecma-262/6.0/#sec-getprototypefromconstructor
GetPrototypeFromConstructor: function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) {
var intrinsic = GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic
if (!this.IsConstructor(constructor)) {
throw new $TypeError('Assertion failed: `constructor` must be a constructor');
}
var proto = this.Get(constructor, 'prototype');
if (this.Type(proto) !== 'Object') {
if (!(constructor instanceof $Function)) {
// ignore other realms, for now
throw new $TypeError('cross-realm constructors not currently supported');
}
proto = intrinsic;
}
return proto;
},
// https://ecma-international.org/ecma-262/6.0/#sec-setfunctionname
SetFunctionName: function SetFunctionName(F, name) {
if (typeof F !== 'function') {
throw new $TypeError('Assertion failed: `F` must be a function');
}
if (!this.IsExtensible(F) || has(F, 'name')) {
throw new $TypeError('Assertion failed: `F` must be extensible, and must not have a `name` own property');
}
var nameType = this.Type(name);
if (nameType !== 'Symbol' && nameType !== 'String') {
throw new $TypeError('Assertion failed: `name` must be a Symbol or a String');
}
if (nameType === '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 this.DefinePropertyOrThrow(F, 'name', {
'[[Value]]': name,
'[[Writable]]': false,
'[[Enumerable]]': false,
'[[Configurable]]': true
});
}
});

84
node_modules/es-abstract/es2016.js generated vendored
View File

@@ -1,15 +1,97 @@
'use strict';
var ES2015 = require('./es2015');
var GetIntrinsic = require('./GetIntrinsic');
var assign = require('./helpers/assign');
var $setProto = require('./helpers/setProto');
var callBound = require('./helpers/callBound');
var getIteratorMethod = require('./helpers/getIteratorMethod');
var $TypeError = GetIntrinsic('%TypeError%');
var $arrayPush = callBound('Array.prototype.push');
var $getProto = require('./helpers/getProto');
var ES2016 = assign(assign({}, ES2015), {
// https://github.com/tc39/ecma262/pull/60
// https://www.ecma-international.org/ecma-262/7.0/#sec-samevaluenonnumber
SameValueNonNumber: 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 this.SameValue(x, y);
},
// https://www.ecma-international.org/ecma-262/7.0/#sec-iterabletoarraylike
IterableToArrayLike: function IterableToArrayLike(items) {
var usingIterator = getIteratorMethod(this, items);
if (typeof usingIterator !== 'undefined') {
var iterator = this.GetIterator(items, usingIterator);
var values = [];
var next = true;
while (next) {
next = this.IteratorStep(iterator);
if (next) {
var nextValue = this.IteratorValue(next);
$arrayPush(values, nextValue);
}
}
return values;
}
return this.ToObject(items);
},
// https://ecma-international.org/ecma-262/7.0/#sec-ordinarygetprototypeof
OrdinaryGetPrototypeOf: function (O) {
if (this.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);
},
// https://ecma-international.org/ecma-262/7.0/#sec-ordinarysetprototypeof
OrdinarySetPrototypeOf: function (O, V) {
if (this.Type(V) !== 'Object' && this.Type(V) !== 'Null') {
throw new $TypeError('Assertion failed: V must be Object or Null');
}
/*
var extensible = this.IsExtensible(O);
var current = this.OrdinaryGetPrototypeOf(O);
if (this.SameValue(V, current)) {
return true;
}
if (!extensible) {
return false;
}
*/
try {
$setProto(O, V);
} catch (e) {
return false;
}
return this.OrdinaryGetPrototypeOf(O) === V;
/*
var p = V;
var done = false;
while (!done) {
if (p === null) {
done = true;
} else if (this.SameValue(p, O)) {
return false;
} else {
if (wat) {
done = true;
} else {
p = p.[[Prototype]];
}
}
}
O.[[Prototype]] = V;
return true;
*/
}
});

27
node_modules/es-abstract/es2017.js generated vendored
View File

@@ -1,16 +1,17 @@
'use strict';
var bind = require('function-bind');
var GetIntrinsic = require('./GetIntrinsic');
var ES2016 = require('./es2016');
var assign = require('./helpers/assign');
var forEach = require('./helpers/forEach');
var GetIntrinsic = require('./GetIntrinsic');
var callBind = require('./helpers/callBind');
var $TypeError = GetIntrinsic('%TypeError%');
var $isEnumerable = bind.call(Function.call, GetIntrinsic('%ObjectPrototype%').propertyIsEnumerable);
var $pushApply = bind.call(Function.apply, GetIntrinsic('%ArrayPrototype%').push);
var callBound = require('./helpers/callBound');
var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
var $pushApply = callBind.apply(GetIntrinsic('%Array.prototype.push%'));
var $arrayPush = callBound('Array.prototype.push');
var ES2017 = assign(assign({}, ES2016), {
ToIndex: function ToIndex(value) {
@@ -46,9 +47,25 @@ var ES2017 = assign(assign({}, ES2016), {
return results;
}
throw new $TypeError('Assertion failed: "kind" is not "key", "value", or "key+value": ' + kind);
},
// https://www.ecma-international.org/ecma-262/8.0/#sec-iterabletolist
IterableToList: function IterableToList(items, method) {
var iterator = this.GetIterator(items, method);
var values = [];
var next = true;
while (next) {
next = this.IteratorStep(iterator);
if (next) {
var nextValue = this.IteratorValue(next);
$arrayPush(values, nextValue);
}
}
return values;
}
});
delete ES2017.EnumerableOwnNames; // replaced with EnumerableOwnProperties
delete ES2017.IterableToArrayLike; // replaced with IterableToList
module.exports = ES2017;

166
node_modules/es-abstract/es2018.js generated vendored
View File

@@ -1,28 +1,44 @@
'use strict';
var bind = require('function-bind');
var GetIntrinsic = require('./GetIntrinsic');
var keys = require('object-keys');
var inspect = require('object-inspect');
var ES2017 = require('./es2017');
var assign = require('./helpers/assign');
var forEach = require('./helpers/forEach');
var GetIntrinsic = require('./GetIntrinsic');
var callBind = require('./helpers/callBind');
var every = require('./helpers/every');
var isPrefixOf = require('./helpers/isPrefixOf');
var $String = GetIntrinsic('%String%');
var $Object = GetIntrinsic('%Object%');
var $TypeError = GetIntrinsic('%TypeError%');
var $SymbolProto = GetIntrinsic('%SymbolPrototype%', true);
var $SymbolValueOf = $SymbolProto ? bind.call(Function.call, $SymbolProto.valueOf) : null;
var $StringProto = GetIntrinsic('%StringPrototype%');
var $charAt = bind.call(Function.call, $StringProto.charAt);
var callBound = require('./helpers/callBound');
var regexTester = require('./helpers/regexTester');
var $isNaN = require('./helpers/isNaN');
var $PromiseResolveOrig = GetIntrinsic('%Promise_resolve%', true);
var $PromiseResolve = $PromiseResolveOrig ? bind.call(Function.call, $PromiseResolveOrig) : null;
var $SymbolValueOf = callBound('Symbol.prototype.valueOf', true);
// var $charAt = callBound('String.prototype.charAt');
var $strSlice = callBound('String.prototype.slice');
var $indexOf = callBound('String.prototype.indexOf');
var $parseInt = parseInt;
var $isEnumerable = bind.call(Function.call, GetIntrinsic('%ObjectPrototype%').propertyIsEnumerable);
var $pushApply = bind.call(Function.apply, GetIntrinsic('%ArrayPrototype%').push);
var $gOPS = $SymbolValueOf ? $Object.getOwnPropertySymbols : null;
var isDigit = regexTester(/^[0-9]$/);
var $PromiseResolve = callBound('Promise.resolve', true);
var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
var $pushApply = callBind.apply(GetIntrinsic('%Array.prototype.push%'));
var $gOPS = $SymbolValueOf ? GetIntrinsic('%Object.getOwnPropertySymbols%') : null;
var padTimeComponent = function padTimeComponent(c, count) {
return $strSlice('00' + c, -(count || 2));
};
var weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var OwnPropertyKeys = function OwnPropertyKeys(ES, source) {
var ownKeys = keys(source);
@@ -56,6 +72,8 @@ var ES2018 = assign(assign({}, ES2017), {
throw new TypeError('Assertion failed: "q" must be a String');
}
return isPrefixOf(p, q);
/*
if (p === q || p === '') {
return true;
}
@@ -74,6 +92,7 @@ var ES2018 = assign(assign({}, ES2017), {
}
}
return true;
*/
},
// https://www.ecma-international.org/ecma-262/9.0/#sec-tostring-applied-to-the-number-type
@@ -139,6 +158,127 @@ var ES2018 = assign(assign({}, ES2017), {
throw new SyntaxError('This environment does not support Promises.');
}
return $PromiseResolve(C, x);
},
// http://www.ecma-international.org/ecma-262/9.0/#sec-getsubstitution
// eslint-disable-next-line max-statements, max-params, max-lines-per-function
GetSubstitution: function GetSubstitution(matched, str, position, captures, namedCaptures, replacement) {
if (this.Type(matched) !== 'String') {
throw new $TypeError('Assertion failed: `matched` must be a String');
}
var matchLength = matched.length;
if (this.Type(str) !== 'String') {
throw new $TypeError('Assertion failed: `str` must be a String');
}
var stringLength = str.length;
if (!this.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));
}
var ES = this;
var isStringOrHole = function (capture, index, arr) { return ES.Type(capture) === 'String' || !(index in arr); };
if (!this.IsArray(captures) || !every(captures, isStringOrHole)) {
throw new $TypeError('Assertion failed: `captures` must be a List of Strings, got ' + inspect(captures));
}
if (this.Type(replacement) !== 'String') {
throw new $TypeError('Assertion failed: `replacement` must be a String');
}
var tailPos = position + matchLength;
var m = captures.length;
if (this.Type(namedCaptures) !== 'Undefined') {
namedCaptures = this.ToObject(namedCaptures); // eslint-disable-line no-param-reassign
}
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 = replacement[i];
var isLast = (i + 1) >= replacement.length;
var nextIsLast = (i + 2) >= replacement.length;
if (current === '$' && !isLast) {
var next = 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 : 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 && this.Type(captures[n - 1]) === 'Undefined') ? '' : captures[n - 1];
i += 1;
} else if (isDigit(next) && (nextIsLast || isDigit(nextNext))) {
// $00 through $99
var nn = next + nextNext;
var nnI = $parseInt(nn, 10) - 1;
// if nn === '00' or nn > m, impl-defined
result += (nn <= m && this.Type(captures[nnI]) === 'Undefined') ? '' : captures[nnI];
i += 2;
} else if (next === '<') {
// eslint-disable-next-line max-depth
if (this.Type(namedCaptures) === 'Undefined') {
result += '$<';
i += 2;
} else {
var endIndex = $indexOf(replacement, '>', i);
// eslint-disable-next-line max-depth
if (endIndex > -1) {
var groupName = $strSlice(replacement, i, endIndex);
var capture = this.Get(namedCaptures, groupName);
// eslint-disable-next-line max-depth
if (this.Type(capture) !== 'Undefined') {
result += this.ToString(capture);
}
i += '$<' + groupName + '>'.length;
}
}
} else {
result += '$';
}
}
} else {
// the final $, or else not a $
result += replacement[i];
}
}
return result;
},
// https://www.ecma-international.org/ecma-262/9.0/#sec-datestring
DateString: function DateString(tv) {
if (this.Type(tv) !== 'Number' || $isNaN(tv)) {
throw new $TypeError('Assertion failed: `tv` must be a non-NaN Number');
}
var weekday = weekdays[this.WeekDay(tv)];
var month = months[this.MonthFromTime(tv)];
var day = padTimeComponent(this.DateFromTime(tv));
var year = padTimeComponent(this.YearFromTime(tv), 4);
return weekday + '\x20' + month + '\x20' + day + '\x20' + year;
},
// https://www.ecma-international.org/ecma-262/9.0/#sec-timestring
TimeString: function TimeString(tv) {
if (this.Type(tv) !== 'Number' || $isNaN(tv)) {
throw new $TypeError('Assertion failed: `tv` must be a non-NaN Number');
}
var hour = this.HourFromTime(tv);
var minute = this.MinFromTime(tv);
var second = this.SecFromTime(tv);
return padTimeComponent(hour) + ':' + padTimeComponent(minute) + ':' + padTimeComponent(second) + '\x20GMT';
}
});

111
node_modules/es-abstract/es2019.js generated vendored Normal file
View File

@@ -0,0 +1,111 @@
'use strict';
var trimStart = require('string.prototype.trimleft');
var trimEnd = require('string.prototype.trimright');
var inspect = require('object-inspect');
var ES2018 = require('./es2018');
var assign = require('./helpers/assign');
var MAX_SAFE_INTEGER = require('./helpers/maxSafeInteger');
var GetIntrinsic = require('./GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var ES2019 = assign(assign({}, ES2018), {
// https://tc39.es/ecma262/#sec-add-entries-from-iterable
AddEntriesFromIterable: function AddEntriesFromIterable(target, iterable, adder) {
if (!this.IsCallable(adder)) {
throw new $TypeError('Assertion failed: `adder` is not callable');
}
if (iterable == null) {
throw new $TypeError('Assertion failed: `iterable` is present, and not nullish');
}
var iteratorRecord = this.GetIterator(iterable);
while (true) { // eslint-disable-line no-constant-condition
var next = this.IteratorStep(iteratorRecord);
if (!next) {
return target;
}
var nextItem = this.IteratorValue(next);
if (this.Type(nextItem) !== 'Object') {
var error = new $TypeError('iterator next must return an Object, got ' + inspect(nextItem));
return this.IteratorClose(
iteratorRecord,
function () { throw error; } // eslint-disable-line no-loop-func
);
}
try {
var k = this.Get(nextItem, '0');
var v = this.Get(nextItem, '1');
this.Call(adder, target, [k, v]);
} catch (e) {
return this.IteratorClose(
iteratorRecord,
function () { throw e; } // eslint-disable-line no-loop-func
);
}
}
},
// https://ecma-international.org/ecma-262/10.0/#sec-flattenintoarray
// eslint-disable-next-line max-params, max-statements
FlattenIntoArray: function FlattenIntoArray(target, source, sourceLen, start, depth) {
var mapperFunction;
if (arguments.length > 5) {
mapperFunction = arguments[5];
}
var targetIndex = start;
var sourceIndex = 0;
while (sourceIndex < sourceLen) {
var P = this.ToString(sourceIndex);
var exists = this.HasProperty(source, P);
if (exists === true) {
var element = this.Get(source, P);
if (typeof mapperFunction !== 'undefined') {
if (arguments.length <= 6) {
throw new $TypeError('Assertion failed: thisArg is required when mapperFunction is provided');
}
element = this.Call(mapperFunction, arguments[6], [element, sourceIndex, source]);
}
var shouldFlatten = false;
if (depth > 0) {
shouldFlatten = this.IsArray(element);
}
if (shouldFlatten) {
var elementLen = this.ToLength(this.Get(element, 'length'));
targetIndex = this.FlattenIntoArray(target, element, elementLen, targetIndex, depth - 1);
} else {
if (targetIndex >= MAX_SAFE_INTEGER) {
throw new $TypeError('index too large');
}
this.CreateDataPropertyOrThrow(target, this.ToString(targetIndex), element);
targetIndex += 1;
}
}
sourceIndex += 1;
}
return targetIndex;
},
// https://ecma-international.org/ecma-262/10.0/#sec-trimstring
TrimString: function TrimString(string, where) {
var str = this.RequireObjectCoercible(string);
var S = this.ToString(str);
var T;
if (where === 'start') {
T = trimStart(S);
} else if (where === 'end') {
T = trimEnd(S);
} else if (where === 'start+end') {
T = trimStart(trimEnd(S));
} else {
throw new $TypeError('Assertion failed: invalid `where` value; must be "start", "end", or "start+end"');
}
return T;
}
});
module.exports = ES2019;

361
node_modules/es-abstract/es5.js generated vendored
View File

@@ -3,21 +3,39 @@
var GetIntrinsic = require('./GetIntrinsic');
var $Object = GetIntrinsic('%Object%');
var $EvalError = GetIntrinsic('%EvalError%');
var $TypeError = GetIntrinsic('%TypeError%');
var $String = GetIntrinsic('%String%');
var $Date = GetIntrinsic('%Date%');
var $Number = GetIntrinsic('%Number%');
var $floor = GetIntrinsic('%Math.floor%');
var $DateUTC = GetIntrinsic('%Date.UTC%');
var $abs = GetIntrinsic('%Math.abs%');
var assertRecord = require('./helpers/assertRecord');
var isPropertyDescriptor = require('./helpers/isPropertyDescriptor');
var $isNaN = require('./helpers/isNaN');
var $isFinite = require('./helpers/isFinite');
var sign = require('./helpers/sign');
var mod = require('./helpers/mod');
var isPrefixOf = require('./helpers/isPrefixOf');
var callBound = require('./helpers/callBound');
var IsCallable = require('is-callable');
var toPrimitive = require('es-to-primitive/es5');
var has = require('has');
var $getUTCFullYear = callBound('Date.prototype.getUTCFullYear');
var HoursPerDay = 24;
var MinutesPerHour = 60;
var SecondsPerMinute = 60;
var msPerSecond = 1e3;
var msPerMinute = msPerSecond * SecondsPerMinute;
var msPerHour = msPerMinute * MinutesPerHour;
var msPerDay = 86400000;
// https://es5.github.io/#x9
var ES5 = {
ToPrimitive: toPrimitive,
@@ -69,7 +87,7 @@ var ES5 = {
return $isNaN(x) && $isNaN(y);
},
// https://www.ecma-international.org/ecma-262/5.1/#sec-8
// https://ecma-international.org/ecma-262/5.1/#sec-8
Type: function Type(x) {
if (x === null) {
return 'Null';
@@ -93,30 +111,7 @@ var ES5 = {
// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type
IsPropertyDescriptor: function IsPropertyDescriptor(Desc) {
if (this.Type(Desc) !== 'Object') {
return false;
}
var allowed = {
'[[Configurable]]': true,
'[[Enumerable]]': true,
'[[Get]]': true,
'[[Set]]': true,
'[[Value]]': true,
'[[Writable]]': true
};
for (var key in Desc) { // eslint-disable-line
if (has(Desc, key) && !allowed[key]) {
return false;
}
}
var isData = has(Desc, '[[Value]]');
var IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');
if (isData && IsAccessor) {
throw new $TypeError('Property Descriptors may not be both accessor and data descriptors');
}
return true;
return isPropertyDescriptor(this, Desc);
},
// https://ecma-international.org/ecma-262/5.1/#sec-8.10.1
@@ -229,6 +224,320 @@ var ES5 = {
throw new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute');
}
return desc;
},
// https://ecma-international.org/ecma-262/5.1/#sec-11.9.3
'Abstract Equality Comparison': function AbstractEqualityComparison(x, y) {
var xType = this.Type(x);
var yType = this.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 this['Abstract Equality Comparison'](x, this.ToNumber(y));
}
if (xType === 'String' && yType === 'Number') {
return this['Abstract Equality Comparison'](this.ToNumber(x), y);
}
if (xType === 'Boolean') {
return this['Abstract Equality Comparison'](this.ToNumber(x), y);
}
if (yType === 'Boolean') {
return this['Abstract Equality Comparison'](x, this.ToNumber(y));
}
if ((xType === 'String' || xType === 'Number') && yType === 'Object') {
return this['Abstract Equality Comparison'](x, this.ToPrimitive(y));
}
if (xType === 'Object' && (yType === 'String' || yType === 'Number')) {
return this['Abstract Equality Comparison'](this.ToPrimitive(x), y);
}
return false;
},
// https://ecma-international.org/ecma-262/5.1/#sec-11.9.6
'Strict Equality Comparison': function StrictEqualityComparison(x, y) {
var xType = this.Type(x);
var yType = this.Type(y);
if (xType !== yType) {
return false;
}
if (xType === 'Undefined' || xType === 'Null') {
return true;
}
return x === y; // shortcut for steps 4-7
},
// https://ecma-international.org/ecma-262/5.1/#sec-11.8.5
// eslint-disable-next-line max-statements
'Abstract Relational Comparison': function AbstractRelationalComparison(x, y, LeftFirst) {
if (this.Type(LeftFirst) !== 'Boolean') {
throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean');
}
var px;
var py;
if (LeftFirst) {
px = this.ToPrimitive(x, $Number);
py = this.ToPrimitive(y, $Number);
} else {
py = this.ToPrimitive(y, $Number);
px = this.ToPrimitive(x, $Number);
}
var bothStrings = this.Type(px) === 'String' && this.Type(py) === 'String';
if (!bothStrings) {
var nx = this.ToNumber(px);
var ny = this.ToNumber(py);
if ($isNaN(nx) || $isNaN(ny)) {
return undefined;
}
if ($isFinite(nx) && $isFinite(ny) && nx === ny) {
return false;
}
if (nx === 0 && ny === 0) {
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
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10
msFromTime: function msFromTime(t) {
return mod(t, msPerSecond);
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10
SecFromTime: function SecFromTime(t) {
return mod($floor(t / msPerSecond), SecondsPerMinute);
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10
MinFromTime: function MinFromTime(t) {
return mod($floor(t / msPerMinute), MinutesPerHour);
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10
HourFromTime: function HourFromTime(t) {
return mod($floor(t / msPerHour), HoursPerDay);
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2
Day: function Day(t) {
return $floor(t / msPerDay);
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2
TimeWithinDay: function TimeWithinDay(t) {
return mod(t, msPerDay);
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3
DayFromYear: function DayFromYear(y) {
return (365 * (y - 1970)) + $floor((y - 1969) / 4) - $floor((y - 1901) / 100) + $floor((y - 1601) / 400);
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3
TimeFromYear: function TimeFromYear(y) {
return msPerDay * this.DayFromYear(y);
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3
YearFromTime: function YearFromTime(t) {
// largest y such that this.TimeFromYear(y) <= t
return $getUTCFullYear(new $Date(t));
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.6
WeekDay: function WeekDay(t) {
return mod(this.Day(t) + 4, 7);
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3
DaysInYear: function DaysInYear(y) {
if (mod(y, 4) !== 0) {
return 365;
}
if (mod(y, 100) !== 0) {
return 366;
}
if (mod(y, 400) !== 0) {
return 365;
}
return 366;
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3
InLeapYear: function InLeapYear(t) {
var days = this.DaysInYear(this.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);
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4
DayWithinYear: function DayWithinYear(t) {
return this.Day(t) - this.DayFromYear(this.YearFromTime(t));
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4
MonthFromTime: function MonthFromTime(t) {
var day = this.DayWithinYear(t);
if (0 <= day && day < 31) {
return 0;
}
var leap = this.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;
}
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.5
DateFromTime: function DateFromTime(t) {
var m = this.MonthFromTime(t);
var d = this.DayWithinYear(t);
if (m === 0) {
return d + 1;
}
if (m === 1) {
return d - 30;
}
var leap = this.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);
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12
MakeDay: function MakeDay(year, month, date) {
if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) {
return NaN;
}
var y = this.ToInteger(year);
var m = this.ToInteger(month);
var dt = this.ToInteger(date);
var ym = y + $floor(m / 12);
var mn = mod(m, 12);
var t = $DateUTC(ym, mn, 1);
if (this.YearFromTime(t) !== ym || this.MonthFromTime(t) !== mn || this.DateFromTime(t) !== 1) {
return NaN;
}
return this.Day(t) + dt - 1;
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.13
MakeDate: function MakeDate(day, time) {
if (!$isFinite(day) || !$isFinite(time)) {
return NaN;
}
return (day * msPerDay) + time;
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.11
MakeTime: function MakeTime(hour, min, sec, ms) {
if (!$isFinite(hour) || !$isFinite(min) || !$isFinite(sec) || !$isFinite(ms)) {
return NaN;
}
var h = this.ToInteger(hour);
var m = this.ToInteger(min);
var s = this.ToInteger(sec);
var milli = this.ToInteger(ms);
var t = (h * msPerHour) + (m * msPerMinute) + (s * msPerSecond) + milli;
return t;
},
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.14
TimeClip: function TimeClip(time) {
if (!$isFinite(time) || $abs(time) > 8.64e15) {
return NaN;
}
return $Number(new $Date(this.ToNumber(time)));
},
// https://ecma-international.org/ecma-262/5.1/#sec-5.2
modulo: function modulo(x, y) {
return mod(x, y);
}
};

View File

@@ -8,42 +8,41 @@ var $SyntaxError = GetIntrinsic('%SyntaxError%');
var has = require('has');
var predicates = {
// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type
'Property Descriptor': function isPropertyDescriptor(ES, Desc) {
if (ES.Type(Desc) !== 'Object') {
return false;
}
var allowed = {
'[[Configurable]]': true,
'[[Enumerable]]': true,
'[[Get]]': true,
'[[Set]]': true,
'[[Value]]': true,
'[[Writable]]': true
};
// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type
'Property Descriptor': function isPropertyDescriptor(ES, Desc) {
if (ES.Type(Desc) !== 'Object') {
return false;
}
var allowed = {
'[[Configurable]]': true,
'[[Enumerable]]': true,
'[[Get]]': true,
'[[Set]]': true,
'[[Value]]': true,
'[[Writable]]': true
};
for (var key in Desc) { // eslint-disable-line
if (has(Desc, key) && !allowed[key]) {
return false;
}
}
for (var key in Desc) { // eslint-disable-line
if (has(Desc, key) && !allowed[key]) {
return false;
}
}
var isData = has(Desc, '[[Value]]');
var IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');
if (isData && IsAccessor) {
throw new $TypeError('Property Descriptors may not be both accessor and data descriptors');
}
return true;
}
var isData = has(Desc, '[[Value]]');
var IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');
if (isData && IsAccessor) {
throw new $TypeError('Property Descriptors may not be both accessor and data descriptors');
}
return true;
}
};
module.exports = function assertRecord(ES, recordType, argumentName, value) {
var predicate = predicates[recordType];
if (typeof predicate !== 'function') {
throw new $SyntaxError('unknown record type: ' + recordType);
}
if (!predicate(ES, value)) {
throw new $TypeError(argumentName + ' must be a ' + recordType);
}
console.log(predicate(ES, value), value);
var predicate = predicates[recordType];
if (typeof predicate !== 'function') {
throw new $SyntaxError('unknown record type: ' + recordType);
}
if (!predicate(ES, value)) {
throw new $TypeError(argumentName + ' must be a ' + recordType);
}
};

View File

@@ -1,13 +1,17 @@
var bind = require('function-bind');
var has = bind.call(Function.call, Object.prototype.hasOwnProperty);
'use strict';
var $assign = Object.assign;
var GetIntrinsic = require('../GetIntrinsic');
var has = require('has');
var $assign = GetIntrinsic('%Object%').assign;
module.exports = function assign(target, source) {
if ($assign) {
return $assign(target, source);
}
// eslint-disable-next-line no-restricted-syntax
for (var key in source) {
if (has(source, key)) {
target[key] = source[key];

17
node_modules/es-abstract/helpers/callBind.js generated vendored Normal file
View File

@@ -0,0 +1,17 @@
'use strict';
var bind = require('function-bind');
var GetIntrinsic = require('../GetIntrinsic');
var $Function = GetIntrinsic('%Function%');
var $apply = $Function.apply;
var $call = $Function.call;
module.exports = function callBind() {
return bind.apply($call, arguments);
};
module.exports.apply = function applyBind() {
return bind.apply($apply, arguments);
};

15
node_modules/es-abstract/helpers/callBound.js generated vendored Normal file
View File

@@ -0,0 +1,15 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var callBind = require('./callBind');
var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));
module.exports = function callBoundIntrinsic(name, allowMissing) {
var intrinsic = GetIntrinsic(name, !!allowMissing);
if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {
return callBind(intrinsic);
}
return intrinsic;
};

10
node_modules/es-abstract/helpers/every.js generated vendored Normal file
View File

@@ -0,0 +1,10 @@
'use strict';
module.exports = function every(array, predicate) {
for (var i = 0; i < array.length; i += 1) {
if (!predicate(array[i], i, array)) {
return false;
}
}
return true;
};

View File

@@ -2,6 +2,6 @@
module.exports = function forEach(array, callback) {
for (var i = 0; i < array.length; i += 1) {
callback(array[i], i, array);
callback(array[i], i, array); // eslint-disable-line callback-return
}
};

10
node_modules/es-abstract/helpers/getInferredName.js generated vendored Normal file
View File

@@ -0,0 +1,10 @@
'use strict';
var getInferredName;
try {
// eslint-disable-next-line no-new-func
getInferredName = Function('s', 'return { [s]() {} }[s].name;');
} catch (e) {}
var inferred = function () {};
module.exports = getInferredName && inferred.name === 'inferred' ? getInferredName : null;

46
node_modules/es-abstract/helpers/getIteratorMethod.js generated vendored Normal file
View File

@@ -0,0 +1,46 @@
'use strict';
var hasSymbols = require('has-symbols')();
var GetIntrinsic = require('../GetIntrinsic');
var callBound = require('./callBound');
var $iterator = GetIntrinsic('%Symbol.iterator%', true);
var $arraySlice = callBound('Array.prototype.slice');
var $arrayJoin = callBound('Array.prototype.join');
module.exports = function getIteratorMethod(ES, iterable) {
var usingIterator;
if (hasSymbols) {
usingIterator = ES.GetMethod(iterable, $iterator);
} else if (ES.IsArray(iterable)) {
usingIterator = function () {
var i = -1;
var arr = this; // eslint-disable-line no-invalid-this
return {
next: function () {
i += 1;
return {
done: i >= arr.length,
value: arr[i]
};
}
};
};
} else if (ES.Type(iterable) === 'String') {
usingIterator = function () {
var i = 0;
return {
next: function () {
var nextIndex = ES.AdvanceStringIndex(iterable, i, true);
var value = $arrayJoin($arraySlice(iterable, i, nextIndex), '');
i = nextIndex;
return {
done: nextIndex > iterable.length,
value: value
};
}
};
};
}
return usingIterator;
};

15
node_modules/es-abstract/helpers/getProto.js generated vendored Normal file
View File

@@ -0,0 +1,15 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var originalGetProto = GetIntrinsic('%Object.getPrototypeOf%', true);
var $ArrayProto = GetIntrinsic('%Array.prototype%');
module.exports = originalGetProto || (
// eslint-disable-next-line no-proto
[].__proto__ === $ArrayProto
? function (O) {
return O.__proto__; // eslint-disable-line no-proto
}
: null
);

View File

@@ -0,0 +1,30 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var callBound = require('./callBound');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var symToStr = callBound('Symbol.prototype.toString', true);
var getInferredName = require('./getInferredName');
module.exports = function getSymbolDescription(symbol) {
if (!symToStr) {
throw new $SyntaxError('Symbols are not supported in this environment');
}
var str = symToStr(symbol); // will throw if not a symbol
if (getInferredName) {
var name = getInferredName(symbol);
if (name === '') { return; }
// eslint-disable-next-line consistent-return
return name.slice(1, -1); // name.slice('['.length, -']'.length);
}
var desc = str.slice(7, -1); // str.slice('Symbol('.length, -')'.length);
if (desc) {
// eslint-disable-next-line consistent-return
return desc;
}
};

View File

@@ -1,3 +1,5 @@
'use strict';
var $isNaN = Number.isNaN || function (a) { return a !== a; };
module.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; };

View File

@@ -1,3 +1,5 @@
'use strict';
module.exports = Number.isNaN || function isNaN(a) {
return a !== a;
};

13
node_modules/es-abstract/helpers/isPrefixOf.js generated vendored Normal file
View File

@@ -0,0 +1,13 @@
'use strict';
var $strSlice = require('../helpers/callBound')('String.prototype.slice');
module.exports = function isPrefixOf(prefix, string) {
if (prefix === string) {
return true;
}
if (prefix.length > string.length) {
return false;
}
return $strSlice(string, 0, prefix.length) === prefix;
};

View File

@@ -1,3 +1,5 @@
'use strict';
module.exports = function isPrimitive(value) {
return value === null || (typeof value !== 'function' && typeof value !== 'object');
};

View File

@@ -0,0 +1,31 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var has = require('has');
var $TypeError = GetIntrinsic('%TypeError%');
module.exports = function IsPropertyDescriptor(ES, Desc) {
if (ES.Type(Desc) !== 'Object') {
return false;
}
var allowed = {
'[[Configurable]]': true,
'[[Enumerable]]': true,
'[[Get]]': true,
'[[Set]]': true,
'[[Value]]': true,
'[[Writable]]': true
};
for (var key in Desc) { // eslint-disable-line
if (has(Desc, key) && !allowed[key]) {
return false;
}
}
if (ES.IsDataDescriptor(Desc) && ES.IsAccessorDescriptor(Desc)) {
throw new $TypeError('Property Descriptors may not be both accessor and data descriptors');
}
return true;
};

View File

@@ -0,0 +1,20 @@
'use strict';
var every = require('./every');
module.exports = function isSamePropertyDescriptor(ES, D1, D2) {
var fields = [
'[[Configurable]]',
'[[Enumerable]]',
'[[Get]]',
'[[Set]]',
'[[Value]]',
'[[Writable]]'
];
return every(fields, function (field) {
if ((field in D1) !== (field in D2)) {
return false;
}
return ES.SameValue(D1[field], D2[field]);
});
};

8
node_modules/es-abstract/helpers/maxSafeInteger.js generated vendored Normal file
View File

@@ -0,0 +1,8 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $Math = GetIntrinsic('%Math%');
var $Number = GetIntrinsic('%Number%');
module.exports = $Number.MAX_SAFE_INTEGER || $Math.pow(2, 53) - 1;

View File

@@ -1,3 +1,5 @@
'use strict';
module.exports = function mod(number, modulo) {
var remain = number % modulo;
return Math.floor(remain >= 0 ? remain : remain + modulo);

11
node_modules/es-abstract/helpers/regexTester.js generated vendored Normal file
View File

@@ -0,0 +1,11 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $test = GetIntrinsic('RegExp.prototype.test');
var callBind = require('./callBind');
module.exports = function regexTester(regex) {
return callBind($test, regex);
};

16
node_modules/es-abstract/helpers/setProto.js generated vendored Normal file
View File

@@ -0,0 +1,16 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var originalSetProto = GetIntrinsic('%Object.setPrototypeOf%', true);
var $ArrayProto = GetIntrinsic('%Array.prototype%');
module.exports = originalSetProto || (
// eslint-disable-next-line no-proto, no-negated-condition
[].__proto__ !== $ArrayProto
? null
: function (O, proto) {
O.__proto__ = proto; // eslint-disable-line no-proto
return O;
}
);

View File

@@ -1,3 +1,5 @@
'use strict';
module.exports = function sign(number) {
return number >= 0 ? 1 : -1;
};

4
node_modules/es-abstract/index.js generated vendored
View File

@@ -7,6 +7,7 @@ var ES2015 = require('./es2015');
var ES2016 = require('./es2016');
var ES2017 = require('./es2017');
var ES2018 = require('./es2018');
var ES2019 = require('./es2019');
var ES = {
ES5: ES5,
@@ -15,7 +16,8 @@ var ES = {
ES7: ES2016,
ES2016: ES2016,
ES2017: ES2017,
ES2018: ES2018
ES2018: ES2018,
ES2019: ES2019
};
assign(ES, ES5);
delete ES.CheckObjectCoercible; // renamed in ES6 to RequireObjectCoercible

View File

@@ -1,79 +0,0 @@
'use strict';
module.exports = {
IsPropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type',
IsAccessorDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor',
IsDataDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor',
IsGenericDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-isgenericdescriptor',
FromPropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor',
ToPropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-topropertydescriptor',
CompletePropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor',
ToPrimitive: 'https://ecma-international.org/ecma-262/6.0/#sec-toprimitive',
ToBoolean: 'https://ecma-international.org/ecma-262/6.0/#sec-toboolean',
ToNumber: 'https://ecma-international.org/ecma-262/6.0/#sec-tonumber',
ToInteger: 'https://ecma-international.org/ecma-262/6.0/#sec-tointeger',
ToInt32: 'https://ecma-international.org/ecma-262/6.0/#sec-toint32',
ToUint32: 'https://ecma-international.org/ecma-262/6.0/#sec-touint32',
ToInt16: 'https://ecma-international.org/ecma-262/6.0/#sec-toint16',
ToUint16: 'https://ecma-international.org/ecma-262/6.0/#sec-touint16',
ToInt8: 'https://ecma-international.org/ecma-262/6.0/#sec-toint8',
ToUint8: 'https://ecma-international.org/ecma-262/6.0/#sec-touint8',
ToUint8Clamp: 'https://ecma-international.org/ecma-262/6.0/#sec-touint8clamp',
ToString: 'https://ecma-international.org/ecma-262/6.0/#sec-tostring',
ToObject: 'https://ecma-international.org/ecma-262/6.0/#sec-toobject',
ToPropertyKey: 'https://ecma-international.org/ecma-262/6.0/#sec-topropertykey',
ToLength: 'https://ecma-international.org/ecma-262/6.0/#sec-tolength',
CanonicalNumericIndexString: 'https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring',
RequireObjectCoercible: 'https://ecma-international.org/ecma-262/6.0/#sec-requireobjectcoercible',
IsArray: 'https://ecma-international.org/ecma-262/6.0/#sec-isarray',
IsCallable: 'https://ecma-international.org/ecma-262/6.0/#sec-iscallable',
IsConstructor: 'https://ecma-international.org/ecma-262/6.0/#sec-isconstructor',
IsExtensible: 'https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o',
IsInteger: 'https://ecma-international.org/ecma-262/6.0/#sec-isinteger',
IsPropertyKey: 'https://ecma-international.org/ecma-262/6.0/#sec-ispropertykey',
IsRegExp: 'https://ecma-international.org/ecma-262/6.0/#sec-isregexp',
SameValue: 'https://ecma-international.org/ecma-262/6.0/#sec-samevalue',
SameValueZero: 'https://ecma-international.org/ecma-262/6.0/#sec-samevaluezero',
Get: 'https://ecma-international.org/ecma-262/6.0/#sec-get-o-p',
GetV: 'https://ecma-international.org/ecma-262/6.0/#sec-getv',
Set: 'https://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw',
CreateDataProperty: 'https://ecma-international.org/ecma-262/6.0/#sec-createdataproperty',
CreateMethodProperty: 'https://ecma-international.org/ecma-262/6.0/#sec-createmethodproperty',
CreateDataPropertyOrThrow: 'https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow',
DefinePropertyOrThrow: 'https://ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow',
DeletePropertyOrThrow: 'https://ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow',
GetMethod: 'https://ecma-international.org/ecma-262/6.0/#sec-getmethod',
HasProperty: 'https://ecma-international.org/ecma-262/6.0/#sec-hasproperty',
HasOwnProperty: 'https://ecma-international.org/ecma-262/6.0/#sec-hasownproperty',
Call: 'https://ecma-international.org/ecma-262/6.0/#sec-call',
Construct: 'https://ecma-international.org/ecma-262/6.0/#sec-construct',
SetIntegrityLevel: 'https://ecma-international.org/ecma-262/6.0/#sec-setintegritylevel',
TestIntegrityLevel: 'https://ecma-international.org/ecma-262/6.0/#sec-testintegritylevel',
CreateArrayFromList: 'https://ecma-international.org/ecma-262/6.0/#sec-createarrayfromlist',
CreateListFromArrayLike: 'https://ecma-international.org/ecma-262/6.0/#sec-createlistfromarraylike',
Invoke: 'https://ecma-international.org/ecma-262/6.0/#sec-invoke',
OrdinaryHasInstance: 'https://ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance',
SpeciesConstructor: 'https://ecma-international.org/ecma-262/6.0/#sec-speciesconstructor',
EnumerableOwnNames: 'https://ecma-international.org/ecma-262/6.0/#sec-enumerableownnames',
GetIterator: 'https://ecma-international.org/ecma-262/6.0/#sec-getiterator',
IteratorNext: 'https://ecma-international.org/ecma-262/6.0/#sec-iteratornext',
IteratorComplete: 'https://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete',
IteratorValue: 'https://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue',
IteratorStep: 'https://ecma-international.org/ecma-262/6.0/#sec-iteratorstep',
IteratorClose: 'https://ecma-international.org/ecma-262/6.0/#sec-iteratorclose',
CreateIterResultObject: 'https://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject',
CreateListIterator: 'https://ecma-international.org/ecma-262/6.0/#sec-createlistiterator',
Type: 'https://ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types',
thisBooleanValue: 'https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-boolean-prototype-object',
thisNumberValue: 'https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-number-prototype-object',
thisTimeValue: 'https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-date-prototype-object',
thisStringValue: 'https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-string-prototype-object',
RegExpExec: 'https://ecma-international.org/ecma-262/6.0/#sec-regexpexec',
RegExpBuiltinExec: 'https://ecma-international.org/ecma-262/6.0/#sec-regexpbuiltinexec',
IsConcatSpreadable: 'https://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable',
IsPromise: 'https://ecma-international.org/ecma-262/6.0/#sec-ispromise',
ArraySpeciesCreate: 'https://ecma-international.org/ecma-262/6.0/#sec-arrayspeciescreate',
ObjectCreate: 'https://ecma-international.org/ecma-262/6.0/#sec-objectcreate',
AdvanceStringIndex: 'https://ecma-international.org/ecma-262/6.0/#sec-advancestringindex',
NormalCompletion: 'https://ecma-international.org/ecma-262/6.0/#sec-normalcompletion'
};

View File

@@ -1,283 +0,0 @@
'use strict';
module.exports = {
IsPropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type', // not actually an abstract op
abs: 'https://ecma-international.org/ecma-262/7.0/#sec-algorithm-conventions',
'Abstract Equality Comparison': 'https://ecma-international.org/ecma-262/7.0/#sec-abstract-equality-comparison',
'Abstract Relational Comparison': 'https://ecma-international.org/ecma-262/7.0/#sec-abstract-relational-comparison',
AddRestrictedFunctionProperties: 'https://ecma-international.org/ecma-262/7.0/#sec-addrestrictedfunctionproperties',
AdvanceStringIndex: 'https://ecma-international.org/ecma-262/7.0/#sec-advancestringindex',
AllocateArrayBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-allocatearraybuffer',
AllocateTypedArray: 'https://ecma-international.org/ecma-262/7.0/#sec-allocatetypedarray',
AllocateTypedArrayBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-allocatetypedarraybuffer',
ArrayCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-arraycreate',
ArraySetLength: 'https://ecma-international.org/ecma-262/7.0/#sec-arraysetlength',
ArraySpeciesCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-arrayspeciescreate',
BlockDeclarationInstantiation: 'https://ecma-international.org/ecma-262/7.0/#sec-blockdeclarationinstantiation',
BoundFunctionCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-boundfunctioncreate',
Call: 'https://ecma-international.org/ecma-262/7.0/#sec-call',
Canonicalize: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-canonicalize-ch',
CanonicalNumericIndexString: 'https://ecma-international.org/ecma-262/7.0/#sec-canonicalnumericindexstring',
CharacterRange: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-characterrange-abstract-operation',
CharacterRangeOrUnion: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation',
CharacterSetMatcher: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation',
CloneArrayBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-clonearraybuffer',
CompletePropertyDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-completepropertydescriptor',
Completion: 'https://ecma-international.org/ecma-262/7.0/#sec-completion-record-specification-type',
Construct: 'https://ecma-international.org/ecma-262/7.0/#sec-construct',
CopyDataBlockBytes: 'https://ecma-international.org/ecma-262/7.0/#sec-copydatablockbytes',
CreateArrayFromList: 'https://ecma-international.org/ecma-262/7.0/#sec-createarrayfromlist',
CreateArrayIterator: 'https://ecma-international.org/ecma-262/7.0/#sec-createarrayiterator',
CreateBuiltinFunction: 'https://ecma-international.org/ecma-262/7.0/#sec-createbuiltinfunction',
CreateByteDataBlock: 'https://ecma-international.org/ecma-262/7.0/#sec-createbytedatablock',
CreateDataProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-createdataproperty',
CreateDataPropertyOrThrow: 'https://ecma-international.org/ecma-262/7.0/#sec-createdatapropertyorthrow',
CreateDynamicFunction: 'https://ecma-international.org/ecma-262/7.0/#sec-createdynamicfunction',
CreateHTML: 'https://ecma-international.org/ecma-262/7.0/#sec-createhtml',
CreateIntrinsics: 'https://ecma-international.org/ecma-262/7.0/#sec-createintrinsics',
CreateIterResultObject: 'https://ecma-international.org/ecma-262/7.0/#sec-createiterresultobject',
CreateListFromArrayLike: 'https://ecma-international.org/ecma-262/7.0/#sec-createlistfromarraylike',
CreateListIterator: 'https://ecma-international.org/ecma-262/7.0/#sec-createlistiterator',
CreateMapIterator: 'https://ecma-international.org/ecma-262/7.0/#sec-createmapiterator',
CreateMappedArgumentsObject: 'https://ecma-international.org/ecma-262/7.0/#sec-createmappedargumentsobject',
CreateMethodProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-createmethodproperty',
CreatePerIterationEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-createperiterationenvironment',
CreateRealm: 'https://ecma-international.org/ecma-262/7.0/#sec-createrealm',
CreateResolvingFunctions: 'https://ecma-international.org/ecma-262/7.0/#sec-createresolvingfunctions',
CreateSetIterator: 'https://ecma-international.org/ecma-262/7.0/#sec-createsetiterator',
CreateStringIterator: 'https://ecma-international.org/ecma-262/7.0/#sec-createstringiterator',
CreateUnmappedArgumentsObject: 'https://ecma-international.org/ecma-262/7.0/#sec-createunmappedargumentsobject',
DateFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-date-number',
Day: 'https://ecma-international.org/ecma-262/7.0/#sec-day-number-and-time-within-day',
DayFromYear: 'https://ecma-international.org/ecma-262/7.0/#sec-year-number',
DaysInYear: 'https://ecma-international.org/ecma-262/7.0/#sec-year-number',
DayWithinYear: 'https://ecma-international.org/ecma-262/7.0/#sec-month-number',
Decode: 'https://ecma-international.org/ecma-262/7.0/#sec-decode',
DefinePropertyOrThrow: 'https://ecma-international.org/ecma-262/7.0/#sec-definepropertyorthrow',
DeletePropertyOrThrow: 'https://ecma-international.org/ecma-262/7.0/#sec-deletepropertyorthrow',
DetachArrayBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-detacharraybuffer',
Encode: 'https://ecma-international.org/ecma-262/7.0/#sec-encode',
EnqueueJob: 'https://ecma-international.org/ecma-262/7.0/#sec-enqueuejob',
EnumerableOwnNames: 'https://ecma-international.org/ecma-262/7.0/#sec-enumerableownnames',
EnumerateObjectProperties: 'https://ecma-international.org/ecma-262/7.0/#sec-enumerate-object-properties',
EscapeRegExpPattern: 'https://ecma-international.org/ecma-262/7.0/#sec-escaperegexppattern',
EvalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/7.0/#sec-evaldeclarationinstantiation',
EvaluateCall: 'https://ecma-international.org/ecma-262/7.0/#sec-evaluatecall',
EvaluateDirectCall: 'https://ecma-international.org/ecma-262/7.0/#sec-evaluatedirectcall',
EvaluateNew: 'https://ecma-international.org/ecma-262/7.0/#sec-evaluatenew',
floor: 'https://ecma-international.org/ecma-262/7.0/#sec-algorithm-conventions',
ForBodyEvaluation: 'https://ecma-international.org/ecma-262/7.0/#sec-forbodyevaluation',
'ForIn/OfBodyEvaluation': 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset',
'ForIn/OfHeadEvaluation': 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind',
FromPropertyDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-frompropertydescriptor',
FulfillPromise: 'https://ecma-international.org/ecma-262/7.0/#sec-fulfillpromise',
FunctionAllocate: 'https://ecma-international.org/ecma-262/7.0/#sec-functionallocate',
FunctionCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-functioncreate',
FunctionDeclarationInstantiation: 'https://ecma-international.org/ecma-262/7.0/#sec-functiondeclarationinstantiation',
FunctionInitialize: 'https://ecma-international.org/ecma-262/7.0/#sec-functioninitialize',
GeneratorFunctionCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-generatorfunctioncreate',
GeneratorResume: 'https://ecma-international.org/ecma-262/7.0/#sec-generatorresume',
GeneratorResumeAbrupt: 'https://ecma-international.org/ecma-262/7.0/#sec-generatorresumeabrupt',
GeneratorStart: 'https://ecma-international.org/ecma-262/7.0/#sec-generatorstart',
GeneratorValidate: 'https://ecma-international.org/ecma-262/7.0/#sec-generatorvalidate',
GeneratorYield: 'https://ecma-international.org/ecma-262/7.0/#sec-generatoryield',
Get: 'https://ecma-international.org/ecma-262/7.0/#sec-get-o-p',
GetActiveScriptOrModule: 'https://ecma-international.org/ecma-262/7.0/#sec-getactivescriptormodule',
GetFunctionRealm: 'https://ecma-international.org/ecma-262/7.0/#sec-getfunctionrealm',
GetGlobalObject: 'https://ecma-international.org/ecma-262/7.0/#sec-getglobalobject',
GetIdentifierReference: 'https://ecma-international.org/ecma-262/7.0/#sec-getidentifierreference',
GetIterator: 'https://ecma-international.org/ecma-262/7.0/#sec-getiterator',
GetMethod: 'https://ecma-international.org/ecma-262/7.0/#sec-getmethod',
GetModuleNamespace: 'https://ecma-international.org/ecma-262/7.0/#sec-getmodulenamespace',
GetNewTarget: 'https://ecma-international.org/ecma-262/7.0/#sec-getnewtarget',
GetOwnPropertyKeys: 'https://ecma-international.org/ecma-262/7.0/#sec-getownpropertykeys',
GetPrototypeFromConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-getprototypefromconstructor',
GetSubstitution: 'https://ecma-international.org/ecma-262/7.0/#sec-getsubstitution',
GetSuperConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-getsuperconstructor',
GetTemplateObject: 'https://ecma-international.org/ecma-262/7.0/#sec-gettemplateobject',
GetThisEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-getthisenvironment',
GetThisValue: 'https://ecma-international.org/ecma-262/7.0/#sec-getthisvalue',
GetV: 'https://ecma-international.org/ecma-262/7.0/#sec-getv',
GetValue: 'https://ecma-international.org/ecma-262/7.0/#sec-getvalue',
GetValueFromBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-getvaluefrombuffer',
GetViewValue: 'https://ecma-international.org/ecma-262/7.0/#sec-getviewvalue',
GlobalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/7.0/#sec-globaldeclarationinstantiation',
HasOwnProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-hasownproperty',
HasProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-hasproperty',
HostPromiseRejectionTracker: 'https://ecma-international.org/ecma-262/7.0/#sec-host-promise-rejection-tracker',
HostReportErrors: 'https://ecma-international.org/ecma-262/7.0/#sec-host-report-errors',
HostResolveImportedModule: 'https://ecma-international.org/ecma-262/7.0/#sec-hostresolveimportedmodule',
HourFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds',
HoursPerDay: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds',
IfAbruptRejectPromise: 'https://ecma-international.org/ecma-262/7.0/#sec-ifabruptrejectpromise',
ImportedLocalNames: 'https://ecma-international.org/ecma-262/7.0/#sec-importedlocalnames',
InitializeBoundName: 'https://ecma-international.org/ecma-262/7.0/#sec-initializeboundname',
InitializeHostDefinedRealm: 'https://ecma-international.org/ecma-262/7.0/#sec-initializehostdefinedrealm',
InitializeReferencedBinding: 'https://ecma-international.org/ecma-262/7.0/#sec-initializereferencedbinding',
InLeapYear: 'https://ecma-international.org/ecma-262/7.0/#sec-year-number',
InstanceofOperator: 'https://ecma-international.org/ecma-262/7.0/#sec-instanceofoperator',
IntegerIndexedElementGet: 'https://ecma-international.org/ecma-262/7.0/#sec-integerindexedelementget',
IntegerIndexedElementSet: 'https://ecma-international.org/ecma-262/7.0/#sec-integerindexedelementset',
IntegerIndexedObjectCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-integerindexedobjectcreate',
InternalizeJSONProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-internalizejsonproperty',
Invoke: 'https://ecma-international.org/ecma-262/7.0/#sec-invoke',
IsAccessorDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-isaccessordescriptor',
IsAnonymousFunctionDefinition: 'https://ecma-international.org/ecma-262/7.0/#sec-isanonymousfunctiondefinition',
IsArray: 'https://ecma-international.org/ecma-262/7.0/#sec-isarray',
IsCallable: 'https://ecma-international.org/ecma-262/7.0/#sec-iscallable',
IsCompatiblePropertyDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-iscompatiblepropertydescriptor',
IsConcatSpreadable: 'https://ecma-international.org/ecma-262/7.0/#sec-isconcatspreadable',
IsConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-isconstructor',
IsDataDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-isdatadescriptor',
IsDetachedBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-isdetachedbuffer',
IsExtensible: 'https://ecma-international.org/ecma-262/7.0/#sec-isextensible-o',
IsGenericDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-isgenericdescriptor',
IsInTailPosition: 'https://ecma-international.org/ecma-262/7.0/#sec-isintailposition',
IsInteger: 'https://ecma-international.org/ecma-262/7.0/#sec-isinteger',
IsLabelledFunction: 'https://ecma-international.org/ecma-262/7.0/#sec-islabelledfunction',
IsPromise: 'https://ecma-international.org/ecma-262/7.0/#sec-ispromise',
IsPropertyKey: 'https://ecma-international.org/ecma-262/7.0/#sec-ispropertykey',
IsRegExp: 'https://ecma-international.org/ecma-262/7.0/#sec-isregexp',
IsWordChar: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-iswordchar-abstract-operation',
IterableToArrayLike: 'https://ecma-international.org/ecma-262/7.0/#sec-iterabletoarraylike',
IteratorClose: 'https://ecma-international.org/ecma-262/7.0/#sec-iteratorclose',
IteratorComplete: 'https://ecma-international.org/ecma-262/7.0/#sec-iteratorcomplete',
IteratorNext: 'https://ecma-international.org/ecma-262/7.0/#sec-iteratornext',
IteratorStep: 'https://ecma-international.org/ecma-262/7.0/#sec-iteratorstep',
IteratorValue: 'https://ecma-international.org/ecma-262/7.0/#sec-iteratorvalue',
LocalTime: 'https://ecma-international.org/ecma-262/7.0/#sec-localtime',
LoopContinues: 'https://ecma-international.org/ecma-262/7.0/#sec-loopcontinues',
MakeArgGetter: 'https://ecma-international.org/ecma-262/7.0/#sec-makearggetter',
MakeArgSetter: 'https://ecma-international.org/ecma-262/7.0/#sec-makeargsetter',
MakeClassConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-makeclassconstructor',
MakeConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-makeconstructor',
MakeDate: 'https://ecma-international.org/ecma-262/7.0/#sec-makedate',
MakeDay: 'https://ecma-international.org/ecma-262/7.0/#sec-makeday',
MakeMethod: 'https://ecma-international.org/ecma-262/7.0/#sec-makemethod',
MakeSuperPropertyReference: 'https://ecma-international.org/ecma-262/7.0/#sec-makesuperpropertyreference',
MakeTime: 'https://ecma-international.org/ecma-262/7.0/#sec-maketime',
max: 'https://ecma-international.org/ecma-262/7.0/#sec-algorithm-conventions',
min: 'https://ecma-international.org/ecma-262/7.0/#sec-algorithm-conventions',
MinFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds',
MinutesPerHour: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds',
ModuleNamespaceCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-modulenamespacecreate',
modulo: 'https://ecma-international.org/ecma-262/7.0/#sec-algorithm-conventions',
MonthFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-month-number',
msFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds',
msPerDay: 'https://ecma-international.org/ecma-262/7.0/#sec-day-number-and-time-within-day',
msPerHour: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds',
msPerMinute: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds',
msPerSecond: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds',
NewDeclarativeEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-newdeclarativeenvironment',
NewFunctionEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-newfunctionenvironment',
NewGlobalEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-newglobalenvironment',
NewModuleEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-newmoduleenvironment',
NewObjectEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-newobjectenvironment',
NewPromiseCapability: 'https://ecma-international.org/ecma-262/7.0/#sec-newpromisecapability',
NextJob: 'https://ecma-international.org/ecma-262/7.0/#sec-nextjob-result',
NormalCompletion: 'https://ecma-international.org/ecma-262/7.0/#sec-normalcompletion',
ObjectCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-objectcreate',
ObjectDefineProperties: 'https://ecma-international.org/ecma-262/7.0/#sec-objectdefineproperties',
OrdinaryCallBindThis: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarycallbindthis',
OrdinaryCallEvaluateBody: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarycallevaluatebody',
OrdinaryCreateFromConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarycreatefromconstructor',
OrdinaryDefineOwnProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarydefineownproperty',
OrdinaryDelete: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarydelete',
OrdinaryGet: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinaryget',
OrdinaryGetOwnProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarygetownproperty',
OrdinaryGetPrototypeOf: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarygetprototypeof',
OrdinaryHasInstance: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinaryhasinstance',
OrdinaryHasProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinaryhasproperty',
OrdinaryIsExtensible: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinaryisextensible',
OrdinaryOwnPropertyKeys: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinaryownpropertykeys',
OrdinaryPreventExtensions: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarypreventextensions',
OrdinarySet: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinaryset',
OrdinarySetPrototypeOf: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarysetprototypeof',
ParseModule: 'https://ecma-international.org/ecma-262/7.0/#sec-parsemodule',
ParseScript: 'https://ecma-international.org/ecma-262/7.0/#sec-parse-script',
PerformEval: 'https://ecma-international.org/ecma-262/7.0/#sec-performeval',
PerformPromiseAll: 'https://ecma-international.org/ecma-262/7.0/#sec-performpromiseall',
PerformPromiseRace: 'https://ecma-international.org/ecma-262/7.0/#sec-performpromiserace',
PerformPromiseThen: 'https://ecma-international.org/ecma-262/7.0/#sec-performpromisethen',
PrepareForOrdinaryCall: 'https://ecma-international.org/ecma-262/7.0/#sec-prepareforordinarycall',
PrepareForTailCall: 'https://ecma-international.org/ecma-262/7.0/#sec-preparefortailcall',
PromiseReactionJob: 'https://ecma-international.org/ecma-262/7.0/#sec-promisereactionjob',
PromiseResolveThenableJob: 'https://ecma-international.org/ecma-262/7.0/#sec-promiseresolvethenablejob',
ProxyCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-proxycreate',
PutValue: 'https://ecma-international.org/ecma-262/7.0/#sec-putvalue',
QuoteJSONString: 'https://ecma-international.org/ecma-262/7.0/#sec-quotejsonstring',
RegExpAlloc: 'https://ecma-international.org/ecma-262/7.0/#sec-regexpalloc',
RegExpBuiltinExec: 'https://ecma-international.org/ecma-262/7.0/#sec-regexpbuiltinexec',
RegExpCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-regexpcreate',
RegExpExec: 'https://ecma-international.org/ecma-262/7.0/#sec-regexpexec',
RegExpInitialize: 'https://ecma-international.org/ecma-262/7.0/#sec-regexpinitialize',
RejectPromise: 'https://ecma-international.org/ecma-262/7.0/#sec-rejectpromise',
RepeatMatcher: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-repeatmatcher-abstract-operation',
RequireObjectCoercible: 'https://ecma-international.org/ecma-262/7.0/#sec-requireobjectcoercible',
ResolveBinding: 'https://ecma-international.org/ecma-262/7.0/#sec-resolvebinding',
ResolveThisBinding: 'https://ecma-international.org/ecma-262/7.0/#sec-resolvethisbinding',
ReturnIfAbrupt: 'https://ecma-international.org/ecma-262/7.0/#sec-returnifabrupt',
SameValue: 'https://ecma-international.org/ecma-262/7.0/#sec-samevalue',
SameValueNonNumber: 'https://ecma-international.org/ecma-262/7.0/#sec-samevaluenonnumber',
SameValueZero: 'https://ecma-international.org/ecma-262/7.0/#sec-samevaluezero',
ScriptEvaluation: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-scriptevaluation',
ScriptEvaluationJob: 'https://ecma-international.org/ecma-262/7.0/#sec-scriptevaluationjob',
SecFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds',
SecondsPerMinute: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds',
SerializeJSONArray: 'https://ecma-international.org/ecma-262/7.0/#sec-serializejsonarray',
SerializeJSONObject: 'https://ecma-international.org/ecma-262/7.0/#sec-serializejsonobject',
SerializeJSONProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-serializejsonproperty',
Set: 'https://ecma-international.org/ecma-262/7.0/#sec-set-o-p-v-throw',
SetDefaultGlobalBindings: 'https://ecma-international.org/ecma-262/7.0/#sec-setdefaultglobalbindings',
SetFunctionName: 'https://ecma-international.org/ecma-262/7.0/#sec-setfunctionname',
SetIntegrityLevel: 'https://ecma-international.org/ecma-262/7.0/#sec-setintegritylevel',
SetRealmGlobalObject: 'https://ecma-international.org/ecma-262/7.0/#sec-setrealmglobalobject',
SetValueInBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-setvalueinbuffer',
SetViewValue: 'https://ecma-international.org/ecma-262/7.0/#sec-setviewvalue',
SortCompare: 'https://ecma-international.org/ecma-262/7.0/#sec-sortcompare',
SpeciesConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-speciesconstructor',
SplitMatch: 'https://ecma-international.org/ecma-262/7.0/#sec-splitmatch',
'Strict Equality Comparison': 'https://ecma-international.org/ecma-262/7.0/#sec-strict-equality-comparison',
StringCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-stringcreate',
SymbolDescriptiveString: 'https://ecma-international.org/ecma-262/7.0/#sec-symboldescriptivestring',
TestIntegrityLevel: 'https://ecma-international.org/ecma-262/7.0/#sec-testintegritylevel',
thisBooleanValue: 'https://ecma-international.org/ecma-262/7.0/#sec-thisbooleanvalue',
thisNumberValue: 'https://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-number-prototype-object',
thisStringValue: 'https://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-string-prototype-object',
thisTimeValue: 'https://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-date-prototype-object',
TimeClip: 'https://ecma-international.org/ecma-262/7.0/#sec-timeclip',
TimeFromYear: 'https://ecma-international.org/ecma-262/7.0/#sec-year-number',
TimeWithinDay: 'https://ecma-international.org/ecma-262/7.0/#sec-day-number-and-time-within-day',
ToBoolean: 'https://ecma-international.org/ecma-262/7.0/#sec-toboolean',
ToDateString: 'https://ecma-international.org/ecma-262/7.0/#sec-todatestring',
ToInt16: 'https://ecma-international.org/ecma-262/7.0/#sec-toint16',
ToInt32: 'https://ecma-international.org/ecma-262/7.0/#sec-toint32',
ToInt8: 'https://ecma-international.org/ecma-262/7.0/#sec-toint8',
ToInteger: 'https://ecma-international.org/ecma-262/7.0/#sec-tointeger',
ToLength: 'https://ecma-international.org/ecma-262/7.0/#sec-tolength',
ToNumber: 'https://ecma-international.org/ecma-262/7.0/#sec-tonumber',
ToObject: 'https://ecma-international.org/ecma-262/7.0/#sec-toobject',
TopLevelModuleEvaluationJob: 'https://ecma-international.org/ecma-262/7.0/#sec-toplevelmoduleevaluationjob',
ToPrimitive: 'https://ecma-international.org/ecma-262/7.0/#sec-toprimitive',
ToPropertyDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-topropertydescriptor',
ToPropertyKey: 'https://ecma-international.org/ecma-262/7.0/#sec-topropertykey',
ToString: 'https://ecma-international.org/ecma-262/7.0/#sec-tostring',
'ToString Applied to the Number Type': 'https://ecma-international.org/ecma-262/7.0/#sec-tostring-applied-to-the-number-type',
ToUint16: 'https://ecma-international.org/ecma-262/7.0/#sec-touint16',
ToUint32: 'https://ecma-international.org/ecma-262/7.0/#sec-touint32',
ToUint8: 'https://ecma-international.org/ecma-262/7.0/#sec-touint8',
ToUint8Clamp: 'https://ecma-international.org/ecma-262/7.0/#sec-touint8clamp',
TriggerPromiseReactions: 'https://ecma-international.org/ecma-262/7.0/#sec-triggerpromisereactions',
Type: 'https://ecma-international.org/ecma-262/7.0/#sec-ecmascript-data-types-and-values',
TypedArrayCreate: 'https://ecma-international.org/ecma-262/7.0/#typedarray-create',
TypedArraySpeciesCreate: 'https://ecma-international.org/ecma-262/7.0/#typedarray-species-create',
UpdateEmpty: 'https://ecma-international.org/ecma-262/7.0/#sec-updateempty',
UTC: 'https://ecma-international.org/ecma-262/7.0/#sec-utc-t',
UTF16Decode: 'https://ecma-international.org/ecma-262/7.0/#sec-utf16decode',
UTF16Encoding: 'https://ecma-international.org/ecma-262/7.0/#sec-utf16encoding',
ValidateAndApplyPropertyDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-validateandapplypropertydescriptor',
ValidateTypedArray: 'https://ecma-international.org/ecma-262/7.0/#sec-validatetypedarray',
WeekDay: 'https://ecma-international.org/ecma-262/7.0/#sec-week-day',
YearFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-year-number'
};

View File

@@ -1,331 +0,0 @@
'use strict';
module.exports = {
IsPropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type', // not actually an abstract op
abs: 'https://ecma-international.org/ecma-262/8.0/#eqn-abs',
'Abstract Equality Comparison': 'https://ecma-international.org/ecma-262/8.0/#sec-abstract-equality-comparison',
'Abstract Relational Comparison': 'https://ecma-international.org/ecma-262/8.0/#sec-abstract-relational-comparison',
AddRestrictedFunctionProperties: 'https://ecma-international.org/ecma-262/8.0/#sec-addrestrictedfunctionproperties',
AddWaiter: 'https://ecma-international.org/ecma-262/8.0/#sec-addwaiter',
AdvanceStringIndex: 'https://ecma-international.org/ecma-262/8.0/#sec-advancestringindex',
'agent-order': 'https://ecma-international.org/ecma-262/8.0/#sec-agent-order',
AgentCanSuspend: 'https://ecma-international.org/ecma-262/8.0/#sec-agentcansuspend',
AgentSignifier: 'https://ecma-international.org/ecma-262/8.0/#sec-agentsignifier',
AllocateArrayBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-allocatearraybuffer',
AllocateSharedArrayBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-allocatesharedarraybuffer',
AllocateTypedArray: 'https://ecma-international.org/ecma-262/8.0/#sec-allocatetypedarray',
AllocateTypedArrayBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-allocatetypedarraybuffer',
ArrayCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-arraycreate',
ArraySetLength: 'https://ecma-international.org/ecma-262/8.0/#sec-arraysetlength',
ArraySpeciesCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-arrayspeciescreate',
AsyncFunctionAwait: 'https://ecma-international.org/ecma-262/8.0/#sec-async-functions-abstract-operations-async-function-await',
AsyncFunctionCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-async-functions-abstract-operations-async-function-create',
AsyncFunctionStart: 'https://ecma-international.org/ecma-262/8.0/#sec-async-functions-abstract-operations-async-function-start',
AtomicLoad: 'https://ecma-international.org/ecma-262/8.0/#sec-atomicload',
AtomicReadModifyWrite: 'https://ecma-international.org/ecma-262/8.0/#sec-atomicreadmodifywrite',
BlockDeclarationInstantiation: 'https://ecma-international.org/ecma-262/8.0/#sec-blockdeclarationinstantiation',
BoundFunctionCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-boundfunctioncreate',
Call: 'https://ecma-international.org/ecma-262/8.0/#sec-call',
Canonicalize: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-canonicalize-ch',
CanonicalNumericIndexString: 'https://ecma-international.org/ecma-262/8.0/#sec-canonicalnumericindexstring',
CharacterRange: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-characterrange-abstract-operation',
CharacterRangeOrUnion: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation',
CharacterSetMatcher: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation',
CloneArrayBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-clonearraybuffer',
CompletePropertyDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-completepropertydescriptor',
Completion: 'https://ecma-international.org/ecma-262/8.0/#sec-completion-record-specification-type',
ComposeWriteEventBytes: 'https://ecma-international.org/ecma-262/8.0/#sec-composewriteeventbytes',
Construct: 'https://ecma-international.org/ecma-262/8.0/#sec-construct',
CopyDataBlockBytes: 'https://ecma-international.org/ecma-262/8.0/#sec-copydatablockbytes',
CreateArrayFromList: 'https://ecma-international.org/ecma-262/8.0/#sec-createarrayfromlist',
CreateArrayIterator: 'https://ecma-international.org/ecma-262/8.0/#sec-createarrayiterator',
CreateBuiltinFunction: 'https://ecma-international.org/ecma-262/8.0/#sec-createbuiltinfunction',
CreateByteDataBlock: 'https://ecma-international.org/ecma-262/8.0/#sec-createbytedatablock',
CreateDataProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-createdataproperty',
CreateDataPropertyOrThrow: 'https://ecma-international.org/ecma-262/8.0/#sec-createdatapropertyorthrow',
CreateDynamicFunction: 'https://ecma-international.org/ecma-262/8.0/#sec-createdynamicfunction',
CreateHTML: 'https://ecma-international.org/ecma-262/8.0/#sec-createhtml',
CreateIntrinsics: 'https://ecma-international.org/ecma-262/8.0/#sec-createintrinsics',
CreateIterResultObject: 'https://ecma-international.org/ecma-262/8.0/#sec-createiterresultobject',
CreateListFromArrayLike: 'https://ecma-international.org/ecma-262/8.0/#sec-createlistfromarraylike',
CreateListIterator: 'https://ecma-international.org/ecma-262/8.0/#sec-createlistiterator',
CreateMapIterator: 'https://ecma-international.org/ecma-262/8.0/#sec-createmapiterator',
CreateMappedArgumentsObject: 'https://ecma-international.org/ecma-262/8.0/#sec-createmappedargumentsobject',
CreateMethodProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-createmethodproperty',
CreatePerIterationEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-createperiterationenvironment',
CreateRealm: 'https://ecma-international.org/ecma-262/8.0/#sec-createrealm',
CreateResolvingFunctions: 'https://ecma-international.org/ecma-262/8.0/#sec-createresolvingfunctions',
CreateSetIterator: 'https://ecma-international.org/ecma-262/8.0/#sec-createsetiterator',
CreateSharedByteDataBlock: 'https://ecma-international.org/ecma-262/8.0/#sec-createsharedbytedatablock',
CreateStringIterator: 'https://ecma-international.org/ecma-262/8.0/#sec-createstringiterator',
CreateUnmappedArgumentsObject: 'https://ecma-international.org/ecma-262/8.0/#sec-createunmappedargumentsobject',
DateFromTime: 'https://ecma-international.org/ecma-262/8.0/#sec-date-number',
Day: 'https://ecma-international.org/ecma-262/8.0/#eqn-Day',
DayFromYear: 'https://ecma-international.org/ecma-262/8.0/#eqn-DaysFromYear',
DaysInYear: 'https://ecma-international.org/ecma-262/8.0/#eqn-DaysInYear',
DayWithinYear: 'https://ecma-international.org/ecma-262/8.0/#eqn-DayWithinYear',
Decode: 'https://ecma-international.org/ecma-262/8.0/#sec-decode',
DefinePropertyOrThrow: 'https://ecma-international.org/ecma-262/8.0/#sec-definepropertyorthrow',
DeletePropertyOrThrow: 'https://ecma-international.org/ecma-262/8.0/#sec-deletepropertyorthrow',
DetachArrayBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-detacharraybuffer',
Encode: 'https://ecma-international.org/ecma-262/8.0/#sec-encode',
EnqueueJob: 'https://ecma-international.org/ecma-262/8.0/#sec-enqueuejob',
EnterCriticalSection: 'https://ecma-international.org/ecma-262/8.0/#sec-entercriticalsection',
EnumerableOwnProperties: 'https://ecma-international.org/ecma-262/8.0/#sec-enumerableownproperties',
EnumerateObjectProperties: 'https://ecma-international.org/ecma-262/8.0/#sec-enumerate-object-properties',
EscapeRegExpPattern: 'https://ecma-international.org/ecma-262/8.0/#sec-escaperegexppattern',
EvalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/8.0/#sec-evaldeclarationinstantiation',
EvaluateCall: 'https://ecma-international.org/ecma-262/8.0/#sec-evaluatecall',
EvaluateDirectCall: 'https://ecma-international.org/ecma-262/8.0/#sec-evaluatedirectcall',
EvaluateNew: 'https://ecma-international.org/ecma-262/8.0/#sec-evaluatenew',
EventSet: 'https://ecma-international.org/ecma-262/8.0/#sec-event-set',
floor: 'https://ecma-international.org/ecma-262/8.0/#eqn-floor',
ForBodyEvaluation: 'https://ecma-international.org/ecma-262/8.0/#sec-forbodyevaluation',
'ForIn/OfBodyEvaluation': 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset',
'ForIn/OfHeadEvaluation': 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind',
FromPropertyDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-frompropertydescriptor',
FulfillPromise: 'https://ecma-international.org/ecma-262/8.0/#sec-fulfillpromise',
FunctionAllocate: 'https://ecma-international.org/ecma-262/8.0/#sec-functionallocate',
FunctionCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-functioncreate',
FunctionDeclarationInstantiation: 'https://ecma-international.org/ecma-262/8.0/#sec-functiondeclarationinstantiation',
FunctionInitialize: 'https://ecma-international.org/ecma-262/8.0/#sec-functioninitialize',
GeneratorFunctionCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-generatorfunctioncreate',
GeneratorResume: 'https://ecma-international.org/ecma-262/8.0/#sec-generatorresume',
GeneratorResumeAbrupt: 'https://ecma-international.org/ecma-262/8.0/#sec-generatorresumeabrupt',
GeneratorStart: 'https://ecma-international.org/ecma-262/8.0/#sec-generatorstart',
GeneratorValidate: 'https://ecma-international.org/ecma-262/8.0/#sec-generatorvalidate',
GeneratorYield: 'https://ecma-international.org/ecma-262/8.0/#sec-generatoryield',
Get: 'https://ecma-international.org/ecma-262/8.0/#sec-get-o-p',
GetActiveScriptOrModule: 'https://ecma-international.org/ecma-262/8.0/#sec-getactivescriptormodule',
GetBase: 'https://ecma-international.org/ecma-262/8.0/#ao-getbase',
GetFunctionRealm: 'https://ecma-international.org/ecma-262/8.0/#sec-getfunctionrealm',
GetGlobalObject: 'https://ecma-international.org/ecma-262/8.0/#sec-getglobalobject',
GetIdentifierReference: 'https://ecma-international.org/ecma-262/8.0/#sec-getidentifierreference',
GetIterator: 'https://ecma-international.org/ecma-262/8.0/#sec-getiterator',
GetMethod: 'https://ecma-international.org/ecma-262/8.0/#sec-getmethod',
GetModifySetValueInBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-getmodifysetvalueinbuffer',
GetModuleNamespace: 'https://ecma-international.org/ecma-262/8.0/#sec-getmodulenamespace',
GetNewTarget: 'https://ecma-international.org/ecma-262/8.0/#sec-getnewtarget',
GetOwnPropertyKeys: 'https://ecma-international.org/ecma-262/8.0/#sec-getownpropertykeys',
GetPrototypeFromConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-getprototypefromconstructor',
GetReferencedName: 'https://ecma-international.org/ecma-262/8.0/#ao-getreferencedname',
GetSubstitution: 'https://ecma-international.org/ecma-262/8.0/#sec-getsubstitution',
GetSuperConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-getsuperconstructor',
GetTemplateObject: 'https://ecma-international.org/ecma-262/8.0/#sec-gettemplateobject',
GetThisEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-getthisenvironment',
GetThisValue: 'https://ecma-international.org/ecma-262/8.0/#sec-getthisvalue',
GetV: 'https://ecma-international.org/ecma-262/8.0/#sec-getv',
GetValue: 'https://ecma-international.org/ecma-262/8.0/#sec-getvalue',
GetValueFromBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-getvaluefrombuffer',
GetViewValue: 'https://ecma-international.org/ecma-262/8.0/#sec-getviewvalue',
GetWaiterList: 'https://ecma-international.org/ecma-262/8.0/#sec-getwaiterlist',
GlobalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/8.0/#sec-globaldeclarationinstantiation',
'happens-before': 'https://ecma-international.org/ecma-262/8.0/#sec-happens-before',
HasOwnProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-hasownproperty',
HasPrimitiveBase: 'https://ecma-international.org/ecma-262/8.0/#ao-hasprimitivebase',
HasProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-hasproperty',
'host-synchronizes-with': 'https://ecma-international.org/ecma-262/8.0/#sec-host-synchronizes-with',
HostEnsureCanCompileStrings: 'https://ecma-international.org/ecma-262/8.0/#sec-hostensurecancompilestrings',
HostEventSet: 'https://ecma-international.org/ecma-262/8.0/#sec-hosteventset',
HostPromiseRejectionTracker: 'https://ecma-international.org/ecma-262/8.0/#sec-host-promise-rejection-tracker',
HostReportErrors: 'https://ecma-international.org/ecma-262/8.0/#sec-host-report-errors',
HostResolveImportedModule: 'https://ecma-international.org/ecma-262/8.0/#sec-hostresolveimportedmodule',
HourFromTime: 'https://ecma-international.org/ecma-262/8.0/#eqn-HourFromTime',
HoursPerDay: 'https://ecma-international.org/ecma-262/8.0/#eqn-HoursPerDay',
IfAbruptRejectPromise: 'https://ecma-international.org/ecma-262/8.0/#sec-ifabruptrejectpromise',
ImportedLocalNames: 'https://ecma-international.org/ecma-262/8.0/#sec-importedlocalnames',
InitializeBoundName: 'https://ecma-international.org/ecma-262/8.0/#sec-initializeboundname',
InitializeHostDefinedRealm: 'https://ecma-international.org/ecma-262/8.0/#sec-initializehostdefinedrealm',
InitializeReferencedBinding: 'https://ecma-international.org/ecma-262/8.0/#sec-initializereferencedbinding',
InLeapYear: 'https://ecma-international.org/ecma-262/8.0/#eqn-InLeapYear',
InstanceofOperator: 'https://ecma-international.org/ecma-262/8.0/#sec-instanceofoperator',
IntegerIndexedElementGet: 'https://ecma-international.org/ecma-262/8.0/#sec-integerindexedelementget',
IntegerIndexedElementSet: 'https://ecma-international.org/ecma-262/8.0/#sec-integerindexedelementset',
IntegerIndexedObjectCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-integerindexedobjectcreate',
InternalizeJSONProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-internalizejsonproperty',
Invoke: 'https://ecma-international.org/ecma-262/8.0/#sec-invoke',
IsAccessorDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-isaccessordescriptor',
IsAnonymousFunctionDefinition: 'https://ecma-international.org/ecma-262/8.0/#sec-isanonymousfunctiondefinition',
IsArray: 'https://ecma-international.org/ecma-262/8.0/#sec-isarray',
IsCallable: 'https://ecma-international.org/ecma-262/8.0/#sec-iscallable',
IsCompatiblePropertyDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-iscompatiblepropertydescriptor',
IsConcatSpreadable: 'https://ecma-international.org/ecma-262/8.0/#sec-isconcatspreadable',
IsConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-isconstructor',
IsDataDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-isdatadescriptor',
IsDetachedBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-isdetachedbuffer',
IsExtensible: 'https://ecma-international.org/ecma-262/8.0/#sec-isextensible-o',
IsGenericDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-isgenericdescriptor',
IsInTailPosition: 'https://ecma-international.org/ecma-262/8.0/#sec-isintailposition',
IsInteger: 'https://ecma-international.org/ecma-262/8.0/#sec-isinteger',
IsLabelledFunction: 'https://ecma-international.org/ecma-262/8.0/#sec-islabelledfunction',
IsPromise: 'https://ecma-international.org/ecma-262/8.0/#sec-ispromise',
IsPropertyKey: 'https://ecma-international.org/ecma-262/8.0/#sec-ispropertykey',
IsPropertyReference: 'https://ecma-international.org/ecma-262/8.0/#ao-ispropertyreference',
IsRegExp: 'https://ecma-international.org/ecma-262/8.0/#sec-isregexp',
IsSharedArrayBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-issharedarraybuffer',
IsStrictReference: 'https://ecma-international.org/ecma-262/8.0/#ao-isstrictreference',
IsSuperReference: 'https://ecma-international.org/ecma-262/8.0/#ao-issuperreference',
IsUnresolvableReference: 'https://ecma-international.org/ecma-262/8.0/#ao-isunresolvablereference',
IsWordChar: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-iswordchar-abstract-operation',
IterableToList: 'https://ecma-international.org/ecma-262/8.0/#sec-iterabletolist',
IteratorClose: 'https://ecma-international.org/ecma-262/8.0/#sec-iteratorclose',
IteratorComplete: 'https://ecma-international.org/ecma-262/8.0/#sec-iteratorcomplete',
IteratorNext: 'https://ecma-international.org/ecma-262/8.0/#sec-iteratornext',
IteratorStep: 'https://ecma-international.org/ecma-262/8.0/#sec-iteratorstep',
IteratorValue: 'https://ecma-international.org/ecma-262/8.0/#sec-iteratorvalue',
LeaveCriticalSection: 'https://ecma-international.org/ecma-262/8.0/#sec-leavecriticalsection',
LocalTime: 'https://ecma-international.org/ecma-262/8.0/#sec-localtime',
LoopContinues: 'https://ecma-international.org/ecma-262/8.0/#sec-loopcontinues',
MakeArgGetter: 'https://ecma-international.org/ecma-262/8.0/#sec-makearggetter',
MakeArgSetter: 'https://ecma-international.org/ecma-262/8.0/#sec-makeargsetter',
MakeClassConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-makeclassconstructor',
MakeConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-makeconstructor',
MakeDate: 'https://ecma-international.org/ecma-262/8.0/#sec-makedate',
MakeDay: 'https://ecma-international.org/ecma-262/8.0/#sec-makeday',
MakeMethod: 'https://ecma-international.org/ecma-262/8.0/#sec-makemethod',
MakeSuperPropertyReference: 'https://ecma-international.org/ecma-262/8.0/#sec-makesuperpropertyreference',
MakeTime: 'https://ecma-international.org/ecma-262/8.0/#sec-maketime',
max: 'https://ecma-international.org/ecma-262/8.0/#eqn-max',
'memory-order': 'https://ecma-international.org/ecma-262/8.0/#sec-memory-order',
min: 'https://ecma-international.org/ecma-262/8.0/#eqn-min',
MinFromTime: 'https://ecma-international.org/ecma-262/8.0/#eqn-MinFromTime',
MinutesPerHour: 'https://ecma-international.org/ecma-262/8.0/#eqn-MinutesPerHour',
ModuleNamespaceCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-modulenamespacecreate',
modulo: 'https://ecma-international.org/ecma-262/8.0/#eqn-modulo',
MonthFromTime: 'https://ecma-international.org/ecma-262/8.0/#eqn-MonthFromTime',
msFromTime: 'https://ecma-international.org/ecma-262/8.0/#eqn-msFromTime',
msPerDay: 'https://ecma-international.org/ecma-262/8.0/#eqn-msPerDay',
msPerHour: 'https://ecma-international.org/ecma-262/8.0/#eqn-msPerHour',
msPerMinute: 'https://ecma-international.org/ecma-262/8.0/#eqn-msPerMinute',
msPerSecond: 'https://ecma-international.org/ecma-262/8.0/#eqn-msPerSecond',
NewDeclarativeEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-newdeclarativeenvironment',
NewFunctionEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-newfunctionenvironment',
NewGlobalEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-newglobalenvironment',
NewModuleEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-newmoduleenvironment',
NewObjectEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-newobjectenvironment',
NewPromiseCapability: 'https://ecma-international.org/ecma-262/8.0/#sec-newpromisecapability',
NormalCompletion: 'https://ecma-international.org/ecma-262/8.0/#sec-normalcompletion',
NumberToRawBytes: 'https://ecma-international.org/ecma-262/8.0/#sec-numbertorawbytes',
ObjectCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-objectcreate',
ObjectDefineProperties: 'https://ecma-international.org/ecma-262/8.0/#sec-objectdefineproperties',
OrdinaryCallBindThis: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarycallbindthis',
OrdinaryCallEvaluateBody: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarycallevaluatebody',
OrdinaryCreateFromConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarycreatefromconstructor',
OrdinaryDefineOwnProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarydefineownproperty',
OrdinaryDelete: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarydelete',
OrdinaryGet: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinaryget',
OrdinaryGetOwnProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarygetownproperty',
OrdinaryGetPrototypeOf: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarygetprototypeof',
OrdinaryHasInstance: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinaryhasinstance',
OrdinaryHasProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinaryhasproperty',
OrdinaryIsExtensible: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinaryisextensible',
OrdinaryOwnPropertyKeys: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinaryownpropertykeys',
OrdinaryPreventExtensions: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarypreventextensions',
OrdinarySet: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinaryset',
OrdinarySetPrototypeOf: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarysetprototypeof',
OrdinaryToPrimitive: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarytoprimitive',
ParseModule: 'https://ecma-international.org/ecma-262/8.0/#sec-parsemodule',
ParseScript: 'https://ecma-international.org/ecma-262/8.0/#sec-parse-script',
PerformEval: 'https://ecma-international.org/ecma-262/8.0/#sec-performeval',
PerformPromiseAll: 'https://ecma-international.org/ecma-262/8.0/#sec-performpromiseall',
PerformPromiseRace: 'https://ecma-international.org/ecma-262/8.0/#sec-performpromiserace',
PerformPromiseThen: 'https://ecma-international.org/ecma-262/8.0/#sec-performpromisethen',
PrepareForOrdinaryCall: 'https://ecma-international.org/ecma-262/8.0/#sec-prepareforordinarycall',
PrepareForTailCall: 'https://ecma-international.org/ecma-262/8.0/#sec-preparefortailcall',
PromiseReactionJob: 'https://ecma-international.org/ecma-262/8.0/#sec-promisereactionjob',
PromiseResolveThenableJob: 'https://ecma-international.org/ecma-262/8.0/#sec-promiseresolvethenablejob',
ProxyCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-proxycreate',
PutValue: 'https://ecma-international.org/ecma-262/8.0/#sec-putvalue',
QuoteJSONString: 'https://ecma-international.org/ecma-262/8.0/#sec-quotejsonstring',
RawBytesToNumber: 'https://ecma-international.org/ecma-262/8.0/#sec-rawbytestonumber',
'reads-bytes-from': 'https://ecma-international.org/ecma-262/8.0/#sec-reads-bytes-from',
'reads-from': 'https://ecma-international.org/ecma-262/8.0/#sec-reads-from',
RegExpAlloc: 'https://ecma-international.org/ecma-262/8.0/#sec-regexpalloc',
RegExpBuiltinExec: 'https://ecma-international.org/ecma-262/8.0/#sec-regexpbuiltinexec',
RegExpCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-regexpcreate',
RegExpExec: 'https://ecma-international.org/ecma-262/8.0/#sec-regexpexec',
RegExpInitialize: 'https://ecma-international.org/ecma-262/8.0/#sec-regexpinitialize',
RejectPromise: 'https://ecma-international.org/ecma-262/8.0/#sec-rejectpromise',
RemoveWaiter: 'https://ecma-international.org/ecma-262/8.0/#sec-removewaiter',
RemoveWaiters: 'https://ecma-international.org/ecma-262/8.0/#sec-removewaiters',
RepeatMatcher: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-repeatmatcher-abstract-operation',
RequireObjectCoercible: 'https://ecma-international.org/ecma-262/8.0/#sec-requireobjectcoercible',
ResolveBinding: 'https://ecma-international.org/ecma-262/8.0/#sec-resolvebinding',
ResolveThisBinding: 'https://ecma-international.org/ecma-262/8.0/#sec-resolvethisbinding',
ReturnIfAbrupt: 'https://ecma-international.org/ecma-262/8.0/#sec-returnifabrupt',
RunJobs: 'https://ecma-international.org/ecma-262/8.0/#sec-runjobs',
SameValue: 'https://ecma-international.org/ecma-262/8.0/#sec-samevalue',
SameValueNonNumber: 'https://ecma-international.org/ecma-262/8.0/#sec-samevaluenonnumber',
SameValueZero: 'https://ecma-international.org/ecma-262/8.0/#sec-samevaluezero',
ScriptEvaluation: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-scriptevaluation',
ScriptEvaluationJob: 'https://ecma-international.org/ecma-262/8.0/#sec-scriptevaluationjob',
SecFromTime: 'https://ecma-international.org/ecma-262/8.0/#eqn-SecFromTime',
SecondsPerMinute: 'https://ecma-international.org/ecma-262/8.0/#eqn-SecondsPerMinute',
SerializeJSONArray: 'https://ecma-international.org/ecma-262/8.0/#sec-serializejsonarray',
SerializeJSONObject: 'https://ecma-international.org/ecma-262/8.0/#sec-serializejsonobject',
SerializeJSONProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-serializejsonproperty',
Set: 'https://ecma-international.org/ecma-262/8.0/#sec-set-o-p-v-throw',
SetDefaultGlobalBindings: 'https://ecma-international.org/ecma-262/8.0/#sec-setdefaultglobalbindings',
SetFunctionName: 'https://ecma-international.org/ecma-262/8.0/#sec-setfunctionname',
SetImmutablePrototype: 'https://ecma-international.org/ecma-262/8.0/#sec-set-immutable-prototype',
SetIntegrityLevel: 'https://ecma-international.org/ecma-262/8.0/#sec-setintegritylevel',
SetRealmGlobalObject: 'https://ecma-international.org/ecma-262/8.0/#sec-setrealmglobalobject',
SetValueInBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-setvalueinbuffer',
SetViewValue: 'https://ecma-international.org/ecma-262/8.0/#sec-setviewvalue',
SharedDataBlockEventSet: 'https://ecma-international.org/ecma-262/8.0/#sec-sharedatablockeventset',
SortCompare: 'https://ecma-international.org/ecma-262/8.0/#sec-sortcompare',
SpeciesConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-speciesconstructor',
SplitMatch: 'https://ecma-international.org/ecma-262/8.0/#sec-splitmatch',
'Strict Equality Comparison': 'https://ecma-international.org/ecma-262/8.0/#sec-strict-equality-comparison',
StringCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-stringcreate',
StringGetOwnProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-stringgetownproperty',
Suspend: 'https://ecma-international.org/ecma-262/8.0/#sec-suspend',
SymbolDescriptiveString: 'https://ecma-international.org/ecma-262/8.0/#sec-symboldescriptivestring',
'synchronizes-with': 'https://ecma-international.org/ecma-262/8.0/#sec-synchronizes-with',
TestIntegrityLevel: 'https://ecma-international.org/ecma-262/8.0/#sec-testintegritylevel',
thisBooleanValue: 'https://ecma-international.org/ecma-262/8.0/#sec-thisbooleanvalue',
thisNumberValue: 'https://ecma-international.org/ecma-262/8.0/#sec-thisnumbervalue',
thisStringValue: 'https://ecma-international.org/ecma-262/8.0/#sec-thisstringvalue',
thisTimeValue: 'https://ecma-international.org/ecma-262/8.0/#sec-thistimevalue',
TimeClip: 'https://ecma-international.org/ecma-262/8.0/#sec-timeclip',
TimeFromYear: 'https://ecma-international.org/ecma-262/8.0/#eqn-TimeFromYear',
TimeWithinDay: 'https://ecma-international.org/ecma-262/8.0/#eqn-TimeWithinDay',
ToBoolean: 'https://ecma-international.org/ecma-262/8.0/#sec-toboolean',
ToDateString: 'https://ecma-international.org/ecma-262/8.0/#sec-todatestring',
ToIndex: 'https://ecma-international.org/ecma-262/8.0/#sec-toindex',
ToInt16: 'https://ecma-international.org/ecma-262/8.0/#sec-toint16',
ToInt32: 'https://ecma-international.org/ecma-262/8.0/#sec-toint32',
ToInt8: 'https://ecma-international.org/ecma-262/8.0/#sec-toint8',
ToInteger: 'https://ecma-international.org/ecma-262/8.0/#sec-tointeger',
ToLength: 'https://ecma-international.org/ecma-262/8.0/#sec-tolength',
ToNumber: 'https://ecma-international.org/ecma-262/8.0/#sec-tonumber',
ToObject: 'https://ecma-international.org/ecma-262/8.0/#sec-toobject',
TopLevelModuleEvaluationJob: 'https://ecma-international.org/ecma-262/8.0/#sec-toplevelmoduleevaluationjob',
ToPrimitive: 'https://ecma-international.org/ecma-262/8.0/#sec-toprimitive',
ToPropertyDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-topropertydescriptor',
ToPropertyKey: 'https://ecma-international.org/ecma-262/8.0/#sec-topropertykey',
ToString: 'https://ecma-international.org/ecma-262/8.0/#sec-tostring',
'ToString Applied to the Number Type': 'https://ecma-international.org/ecma-262/8.0/#sec-tostring-applied-to-the-number-type',
ToUint16: 'https://ecma-international.org/ecma-262/8.0/#sec-touint16',
ToUint32: 'https://ecma-international.org/ecma-262/8.0/#sec-touint32',
ToUint8: 'https://ecma-international.org/ecma-262/8.0/#sec-touint8',
ToUint8Clamp: 'https://ecma-international.org/ecma-262/8.0/#sec-touint8clamp',
TriggerPromiseReactions: 'https://ecma-international.org/ecma-262/8.0/#sec-triggerpromisereactions',
Type: 'https://ecma-international.org/ecma-262/8.0/#sec-ecmascript-data-types-and-values',
TypedArrayCreate: 'https://ecma-international.org/ecma-262/8.0/#typedarray-create',
TypedArraySpeciesCreate: 'https://ecma-international.org/ecma-262/8.0/#typedarray-species-create',
UpdateEmpty: 'https://ecma-international.org/ecma-262/8.0/#sec-updateempty',
UTC: 'https://ecma-international.org/ecma-262/8.0/#sec-utc-t',
UTF16Decode: 'https://ecma-international.org/ecma-262/8.0/#sec-utf16decode',
UTF16Encoding: 'https://ecma-international.org/ecma-262/8.0/#sec-utf16encoding',
ValidateAndApplyPropertyDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-validateandapplypropertydescriptor',
ValidateAtomicAccess: 'https://ecma-international.org/ecma-262/8.0/#sec-validateatomicaccess',
ValidateSharedIntegerTypedArray: 'https://ecma-international.org/ecma-262/8.0/#sec-validatesharedintegertypedarray',
ValidateTypedArray: 'https://ecma-international.org/ecma-262/8.0/#sec-validatetypedarray',
ValueOfReadEvent: 'https://ecma-international.org/ecma-262/8.0/#sec-valueofreadevent',
WakeWaiter: 'https://ecma-international.org/ecma-262/8.0/#sec-wakewaiter',
WeekDay: 'https://ecma-international.org/ecma-262/8.0/#sec-week-day',
WordCharacters: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-wordcharacters-abstract-operation',
YearFromTime: 'https://ecma-international.org/ecma-262/8.0/#eqn-YearFromTime'
};

View File

@@ -1,357 +0,0 @@
'use strict';
module.exports = {
abs: 'https://ecma-international.org/ecma-262/9.0/#eqn-abs',
'Abstract Equality Comparison': 'https://ecma-international.org/ecma-262/9.0/#sec-abstract-equality-comparison',
'Abstract Relational Comparison': 'https://ecma-international.org/ecma-262/9.0/#sec-abstract-relational-comparison',
AddRestrictedFunctionProperties: 'https://ecma-international.org/ecma-262/9.0/#sec-addrestrictedfunctionproperties',
AddWaiter: 'https://ecma-international.org/ecma-262/9.0/#sec-addwaiter',
AdvanceStringIndex: 'https://ecma-international.org/ecma-262/9.0/#sec-advancestringindex',
'agent-order': 'https://ecma-international.org/ecma-262/9.0/#sec-agent-order',
AgentCanSuspend: 'https://ecma-international.org/ecma-262/9.0/#sec-agentcansuspend',
AgentSignifier: 'https://ecma-international.org/ecma-262/9.0/#sec-agentsignifier',
AllocateArrayBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-allocatearraybuffer',
AllocateSharedArrayBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-allocatesharedarraybuffer',
AllocateTypedArray: 'https://ecma-international.org/ecma-262/9.0/#sec-allocatetypedarray',
AllocateTypedArrayBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-allocatetypedarraybuffer',
ArrayCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-arraycreate',
ArraySetLength: 'https://ecma-international.org/ecma-262/9.0/#sec-arraysetlength',
ArraySpeciesCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-arrayspeciescreate',
AsyncFunctionCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-async-functions-abstract-operations-async-function-create',
AsyncFunctionStart: 'https://ecma-international.org/ecma-262/9.0/#sec-async-functions-abstract-operations-async-function-start',
AsyncGeneratorEnqueue: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratorenqueue',
AsyncGeneratorFunctionCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratorfunctioncreate',
AsyncGeneratorReject: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratorreject',
AsyncGeneratorResolve: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratorresolve',
AsyncGeneratorResumeNext: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratorresumenext',
AsyncGeneratorStart: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratorstart',
AsyncGeneratorYield: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratoryield',
AsyncIteratorClose: 'https://ecma-international.org/ecma-262/9.0/#sec-asynciteratorclose',
AtomicLoad: 'https://ecma-international.org/ecma-262/9.0/#sec-atomicload',
AtomicReadModifyWrite: 'https://ecma-international.org/ecma-262/9.0/#sec-atomicreadmodifywrite',
Await: 'https://ecma-international.org/ecma-262/9.0/#await',
BackreferenceMatcher: 'https://ecma-international.org/ecma-262/9.0/#sec-backreference-matcher',
BlockDeclarationInstantiation: 'https://ecma-international.org/ecma-262/9.0/#sec-blockdeclarationinstantiation',
BoundFunctionCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-boundfunctioncreate',
Call: 'https://ecma-international.org/ecma-262/9.0/#sec-call',
Canonicalize: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-canonicalize-ch',
CanonicalNumericIndexString: 'https://ecma-international.org/ecma-262/9.0/#sec-canonicalnumericindexstring',
CaseClauseIsSelected: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-caseclauseisselected',
CharacterRange: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-characterrange-abstract-operation',
CharacterRangeOrUnion: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation',
CharacterSetMatcher: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation',
CloneArrayBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-clonearraybuffer',
CompletePropertyDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-completepropertydescriptor',
Completion: 'https://ecma-international.org/ecma-262/9.0/#sec-completion-record-specification-type',
ComposeWriteEventBytes: 'https://ecma-international.org/ecma-262/9.0/#sec-composewriteeventbytes',
Construct: 'https://ecma-international.org/ecma-262/9.0/#sec-construct',
CopyDataBlockBytes: 'https://ecma-international.org/ecma-262/9.0/#sec-copydatablockbytes',
CopyDataProperties: 'https://ecma-international.org/ecma-262/9.0/#sec-copydataproperties',
CreateArrayFromList: 'https://ecma-international.org/ecma-262/9.0/#sec-createarrayfromlist',
CreateArrayIterator: 'https://ecma-international.org/ecma-262/9.0/#sec-createarrayiterator',
CreateAsyncFromSyncIterator: 'https://ecma-international.org/ecma-262/9.0/#sec-createasyncfromsynciterator',
CreateBuiltinFunction: 'https://ecma-international.org/ecma-262/9.0/#sec-createbuiltinfunction',
CreateByteDataBlock: 'https://ecma-international.org/ecma-262/9.0/#sec-createbytedatablock',
CreateDataProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-createdataproperty',
CreateDataPropertyOrThrow: 'https://ecma-international.org/ecma-262/9.0/#sec-createdatapropertyorthrow',
CreateDynamicFunction: 'https://ecma-international.org/ecma-262/9.0/#sec-createdynamicfunction',
CreateHTML: 'https://ecma-international.org/ecma-262/9.0/#sec-createhtml',
CreateIntrinsics: 'https://ecma-international.org/ecma-262/9.0/#sec-createintrinsics',
CreateIterResultObject: 'https://ecma-international.org/ecma-262/9.0/#sec-createiterresultobject',
CreateListFromArrayLike: 'https://ecma-international.org/ecma-262/9.0/#sec-createlistfromarraylike',
CreateListIteratorRecord: 'https://ecma-international.org/ecma-262/9.0/#sec-createlistiteratorRecord',
CreateMapIterator: 'https://ecma-international.org/ecma-262/9.0/#sec-createmapiterator',
CreateMappedArgumentsObject: 'https://ecma-international.org/ecma-262/9.0/#sec-createmappedargumentsobject',
CreateMethodProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-createmethodproperty',
CreatePerIterationEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-createperiterationenvironment',
CreateRealm: 'https://ecma-international.org/ecma-262/9.0/#sec-createrealm',
CreateResolvingFunctions: 'https://ecma-international.org/ecma-262/9.0/#sec-createresolvingfunctions',
CreateSetIterator: 'https://ecma-international.org/ecma-262/9.0/#sec-createsetiterator',
CreateSharedByteDataBlock: 'https://ecma-international.org/ecma-262/9.0/#sec-createsharedbytedatablock',
CreateStringIterator: 'https://ecma-international.org/ecma-262/9.0/#sec-createstringiterator',
CreateUnmappedArgumentsObject: 'https://ecma-international.org/ecma-262/9.0/#sec-createunmappedargumentsobject',
DateFromTime: 'https://ecma-international.org/ecma-262/9.0/#sec-date-number',
DateString: 'https://ecma-international.org/ecma-262/9.0/#sec-datestring',
Day: 'https://ecma-international.org/ecma-262/9.0/#eqn-Day',
DayFromYear: 'https://ecma-international.org/ecma-262/9.0/#eqn-DaysFromYear',
DaysInYear: 'https://ecma-international.org/ecma-262/9.0/#eqn-DaysInYear',
DayWithinYear: 'https://ecma-international.org/ecma-262/9.0/#eqn-DayWithinYear',
Decode: 'https://ecma-international.org/ecma-262/9.0/#sec-decode',
DefinePropertyOrThrow: 'https://ecma-international.org/ecma-262/9.0/#sec-definepropertyorthrow',
DeletePropertyOrThrow: 'https://ecma-international.org/ecma-262/9.0/#sec-deletepropertyorthrow',
DetachArrayBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-detacharraybuffer',
Encode: 'https://ecma-international.org/ecma-262/9.0/#sec-encode',
EnqueueJob: 'https://ecma-international.org/ecma-262/9.0/#sec-enqueuejob',
EnterCriticalSection: 'https://ecma-international.org/ecma-262/9.0/#sec-entercriticalsection',
EnumerableOwnPropertyNames: 'https://ecma-international.org/ecma-262/9.0/#sec-enumerableownpropertynames',
EnumerateObjectProperties: 'https://ecma-international.org/ecma-262/9.0/#sec-enumerate-object-properties',
EscapeRegExpPattern: 'https://ecma-international.org/ecma-262/9.0/#sec-escaperegexppattern',
EvalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/9.0/#sec-evaldeclarationinstantiation',
EvaluateCall: 'https://ecma-international.org/ecma-262/9.0/#sec-evaluatecall',
EvaluateNew: 'https://ecma-international.org/ecma-262/9.0/#sec-evaluatenew',
EventSet: 'https://ecma-international.org/ecma-262/9.0/#sec-event-set',
floor: 'https://ecma-international.org/ecma-262/9.0/#eqn-floor',
ForBodyEvaluation: 'https://ecma-international.org/ecma-262/9.0/#sec-forbodyevaluation',
'ForIn/OfBodyEvaluation': 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset',
'ForIn/OfHeadEvaluation': 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind',
FromPropertyDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-frompropertydescriptor',
FulfillPromise: 'https://ecma-international.org/ecma-262/9.0/#sec-fulfillpromise',
FunctionAllocate: 'https://ecma-international.org/ecma-262/9.0/#sec-functionallocate',
FunctionCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-functioncreate',
FunctionDeclarationInstantiation: 'https://ecma-international.org/ecma-262/9.0/#sec-functiondeclarationinstantiation',
FunctionInitialize: 'https://ecma-international.org/ecma-262/9.0/#sec-functioninitialize',
GeneratorFunctionCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-generatorfunctioncreate',
GeneratorResume: 'https://ecma-international.org/ecma-262/9.0/#sec-generatorresume',
GeneratorResumeAbrupt: 'https://ecma-international.org/ecma-262/9.0/#sec-generatorresumeabrupt',
GeneratorStart: 'https://ecma-international.org/ecma-262/9.0/#sec-generatorstart',
GeneratorValidate: 'https://ecma-international.org/ecma-262/9.0/#sec-generatorvalidate',
GeneratorYield: 'https://ecma-international.org/ecma-262/9.0/#sec-generatoryield',
Get: 'https://ecma-international.org/ecma-262/9.0/#sec-get-o-p',
GetActiveScriptOrModule: 'https://ecma-international.org/ecma-262/9.0/#sec-getactivescriptormodule',
GetBase: 'https://ecma-international.org/ecma-262/9.0/#sec-getbase',
GetFunctionRealm: 'https://ecma-international.org/ecma-262/9.0/#sec-getfunctionrealm',
GetGeneratorKind: 'https://ecma-international.org/ecma-262/9.0/#sec-getgeneratorkind',
GetGlobalObject: 'https://ecma-international.org/ecma-262/9.0/#sec-getglobalobject',
GetIdentifierReference: 'https://ecma-international.org/ecma-262/9.0/#sec-getidentifierreference',
GetIterator: 'https://ecma-international.org/ecma-262/9.0/#sec-getiterator',
GetMethod: 'https://ecma-international.org/ecma-262/9.0/#sec-getmethod',
GetModifySetValueInBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-getmodifysetvalueinbuffer',
GetModuleNamespace: 'https://ecma-international.org/ecma-262/9.0/#sec-getmodulenamespace',
GetNewTarget: 'https://ecma-international.org/ecma-262/9.0/#sec-getnewtarget',
GetOwnPropertyKeys: 'https://ecma-international.org/ecma-262/9.0/#sec-getownpropertykeys',
GetPrototypeFromConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-getprototypefromconstructor',
GetReferencedName: 'https://ecma-international.org/ecma-262/9.0/#sec-getreferencedname',
GetSubstitution: 'https://ecma-international.org/ecma-262/9.0/#sec-getsubstitution',
GetSuperConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-getsuperconstructor',
GetTemplateObject: 'https://ecma-international.org/ecma-262/9.0/#sec-gettemplateobject',
GetThisEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-getthisenvironment',
GetThisValue: 'https://ecma-international.org/ecma-262/9.0/#sec-getthisvalue',
GetV: 'https://ecma-international.org/ecma-262/9.0/#sec-getv',
GetValue: 'https://ecma-international.org/ecma-262/9.0/#sec-getvalue',
GetValueFromBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-getvaluefrombuffer',
GetViewValue: 'https://ecma-international.org/ecma-262/9.0/#sec-getviewvalue',
GetWaiterList: 'https://ecma-international.org/ecma-262/9.0/#sec-getwaiterlist',
GlobalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/9.0/#sec-globaldeclarationinstantiation',
'happens-before': 'https://ecma-international.org/ecma-262/9.0/#sec-happens-before',
HasOwnProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-hasownproperty',
HasPrimitiveBase: 'https://ecma-international.org/ecma-262/9.0/#sec-hasprimitivebase',
HasProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-hasproperty',
'host-synchronizes-with': 'https://ecma-international.org/ecma-262/9.0/#sec-host-synchronizes-with',
HostEnsureCanCompileStrings: 'https://ecma-international.org/ecma-262/9.0/#sec-hostensurecancompilestrings',
HostEventSet: 'https://ecma-international.org/ecma-262/9.0/#sec-hosteventset',
HostPromiseRejectionTracker: 'https://ecma-international.org/ecma-262/9.0/#sec-host-promise-rejection-tracker',
HostReportErrors: 'https://ecma-international.org/ecma-262/9.0/#sec-host-report-errors',
HostResolveImportedModule: 'https://ecma-international.org/ecma-262/9.0/#sec-hostresolveimportedmodule',
HourFromTime: 'https://ecma-international.org/ecma-262/9.0/#eqn-HourFromTime',
HoursPerDay: 'https://ecma-international.org/ecma-262/9.0/#eqn-HoursPerDay',
IfAbruptRejectPromise: 'https://ecma-international.org/ecma-262/9.0/#sec-ifabruptrejectpromise',
ImportedLocalNames: 'https://ecma-international.org/ecma-262/9.0/#sec-importedlocalnames',
InitializeBoundName: 'https://ecma-international.org/ecma-262/9.0/#sec-initializeboundname',
InitializeHostDefinedRealm: 'https://ecma-international.org/ecma-262/9.0/#sec-initializehostdefinedrealm',
InitializeReferencedBinding: 'https://ecma-international.org/ecma-262/9.0/#sec-initializereferencedbinding',
InLeapYear: 'https://ecma-international.org/ecma-262/9.0/#eqn-InLeapYear',
InnerModuleEvaluation: 'https://ecma-international.org/ecma-262/9.0/#sec-innermoduleevaluation',
InnerModuleInstantiation: 'https://ecma-international.org/ecma-262/9.0/#sec-innermoduleinstantiation',
InstanceofOperator: 'https://ecma-international.org/ecma-262/9.0/#sec-instanceofoperator',
IntegerIndexedElementGet: 'https://ecma-international.org/ecma-262/9.0/#sec-integerindexedelementget',
IntegerIndexedElementSet: 'https://ecma-international.org/ecma-262/9.0/#sec-integerindexedelementset',
IntegerIndexedObjectCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-integerindexedobjectcreate',
InternalizeJSONProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-internalizejsonproperty',
Invoke: 'https://ecma-international.org/ecma-262/9.0/#sec-invoke',
IsAccessorDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-isaccessordescriptor',
IsAnonymousFunctionDefinition: 'https://ecma-international.org/ecma-262/9.0/#sec-isanonymousfunctiondefinition',
IsArray: 'https://ecma-international.org/ecma-262/9.0/#sec-isarray',
IsCallable: 'https://ecma-international.org/ecma-262/9.0/#sec-iscallable',
IsCompatiblePropertyDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-iscompatiblepropertydescriptor',
IsConcatSpreadable: 'https://ecma-international.org/ecma-262/9.0/#sec-isconcatspreadable',
IsConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-isconstructor',
IsDataDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-isdatadescriptor',
IsDetachedBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-isdetachedbuffer',
IsExtensible: 'https://ecma-international.org/ecma-262/9.0/#sec-isextensible-o',
IsGenericDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-isgenericdescriptor',
IsInTailPosition: 'https://ecma-international.org/ecma-262/9.0/#sec-isintailposition',
IsInteger: 'https://ecma-international.org/ecma-262/9.0/#sec-isinteger',
IsLabelledFunction: 'https://ecma-international.org/ecma-262/9.0/#sec-islabelledfunction',
IsPromise: 'https://ecma-international.org/ecma-262/9.0/#sec-ispromise',
IsPropertyKey: 'https://ecma-international.org/ecma-262/9.0/#sec-ispropertykey',
IsPropertyReference: 'https://ecma-international.org/ecma-262/9.0/#sec-ispropertyreference',
IsRegExp: 'https://ecma-international.org/ecma-262/9.0/#sec-isregexp',
IsSharedArrayBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-issharedarraybuffer',
IsStrictReference: 'https://ecma-international.org/ecma-262/9.0/#sec-isstrictreference',
IsStringPrefix: 'https://ecma-international.org/ecma-262/9.0/#sec-isstringprefix',
IsSuperReference: 'https://ecma-international.org/ecma-262/9.0/#sec-issuperreference',
IsUnresolvableReference: 'https://ecma-international.org/ecma-262/9.0/#sec-isunresolvablereference',
IsWordChar: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-iswordchar-abstract-operation',
IterableToList: 'https://ecma-international.org/ecma-262/9.0/#sec-iterabletolist',
IteratorClose: 'https://ecma-international.org/ecma-262/9.0/#sec-iteratorclose',
IteratorComplete: 'https://ecma-international.org/ecma-262/9.0/#sec-iteratorcomplete',
IteratorNext: 'https://ecma-international.org/ecma-262/9.0/#sec-iteratornext',
IteratorStep: 'https://ecma-international.org/ecma-262/9.0/#sec-iteratorstep',
IteratorValue: 'https://ecma-international.org/ecma-262/9.0/#sec-iteratorvalue',
LeaveCriticalSection: 'https://ecma-international.org/ecma-262/9.0/#sec-leavecriticalsection',
LocalTime: 'https://ecma-international.org/ecma-262/9.0/#sec-localtime',
LoopContinues: 'https://ecma-international.org/ecma-262/9.0/#sec-loopcontinues',
MakeArgGetter: 'https://ecma-international.org/ecma-262/9.0/#sec-makearggetter',
MakeArgSetter: 'https://ecma-international.org/ecma-262/9.0/#sec-makeargsetter',
MakeClassConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-makeclassconstructor',
MakeConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-makeconstructor',
MakeDate: 'https://ecma-international.org/ecma-262/9.0/#sec-makedate',
MakeDay: 'https://ecma-international.org/ecma-262/9.0/#sec-makeday',
MakeMethod: 'https://ecma-international.org/ecma-262/9.0/#sec-makemethod',
MakeSuperPropertyReference: 'https://ecma-international.org/ecma-262/9.0/#sec-makesuperpropertyreference',
MakeTime: 'https://ecma-international.org/ecma-262/9.0/#sec-maketime',
max: 'https://ecma-international.org/ecma-262/9.0/#eqn-max',
'memory-order': 'https://ecma-international.org/ecma-262/9.0/#sec-memory-order',
min: 'https://ecma-international.org/ecma-262/9.0/#eqn-min',
MinFromTime: 'https://ecma-international.org/ecma-262/9.0/#eqn-MinFromTime',
MinutesPerHour: 'https://ecma-international.org/ecma-262/9.0/#eqn-MinutesPerHour',
ModuleDeclarationEnvironmentSetup: 'https://ecma-international.org/ecma-262/9.0/#sec-moduledeclarationenvironmentsetup',
ModuleExecution: 'https://ecma-international.org/ecma-262/9.0/#sec-moduleexecution',
ModuleNamespaceCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-modulenamespacecreate',
modulo: 'https://ecma-international.org/ecma-262/9.0/#eqn-modulo',
MonthFromTime: 'https://ecma-international.org/ecma-262/9.0/#eqn-MonthFromTime',
msFromTime: 'https://ecma-international.org/ecma-262/9.0/#eqn-msFromTime',
msPerDay: 'https://ecma-international.org/ecma-262/9.0/#eqn-msPerDay',
msPerHour: 'https://ecma-international.org/ecma-262/9.0/#eqn-msPerHour',
msPerMinute: 'https://ecma-international.org/ecma-262/9.0/#eqn-msPerMinute',
msPerSecond: 'https://ecma-international.org/ecma-262/9.0/#eqn-msPerSecond',
NewDeclarativeEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-newdeclarativeenvironment',
NewFunctionEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-newfunctionenvironment',
NewGlobalEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-newglobalenvironment',
NewModuleEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-newmoduleenvironment',
NewObjectEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-newobjectenvironment',
NewPromiseCapability: 'https://ecma-international.org/ecma-262/9.0/#sec-newpromisecapability',
NormalCompletion: 'https://ecma-international.org/ecma-262/9.0/#sec-normalcompletion',
NumberToRawBytes: 'https://ecma-international.org/ecma-262/9.0/#sec-numbertorawbytes',
NumberToString: 'https://ecma-international.org/ecma-262/9.0/#sec-tostring-applied-to-the-number-type',
ObjectCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-objectcreate',
ObjectDefineProperties: 'https://ecma-international.org/ecma-262/9.0/#sec-objectdefineproperties',
OrdinaryCallBindThis: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarycallbindthis',
OrdinaryCallEvaluateBody: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarycallevaluatebody',
OrdinaryCreateFromConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarycreatefromconstructor',
OrdinaryDefineOwnProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarydefineownproperty',
OrdinaryDelete: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarydelete',
OrdinaryGet: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinaryget',
OrdinaryGetOwnProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarygetownproperty',
OrdinaryGetPrototypeOf: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarygetprototypeof',
OrdinaryHasInstance: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinaryhasinstance',
OrdinaryHasProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinaryhasproperty',
OrdinaryIsExtensible: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinaryisextensible',
OrdinaryOwnPropertyKeys: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinaryownpropertykeys',
OrdinaryPreventExtensions: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarypreventextensions',
OrdinarySet: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinaryset',
OrdinarySetPrototypeOf: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarysetprototypeof',
OrdinarySetWithOwnDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarysetwithowndescriptor',
OrdinaryToPrimitive: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarytoprimitive',
ParseModule: 'https://ecma-international.org/ecma-262/9.0/#sec-parsemodule',
ParseScript: 'https://ecma-international.org/ecma-262/9.0/#sec-parse-script',
PerformEval: 'https://ecma-international.org/ecma-262/9.0/#sec-performeval',
PerformPromiseAll: 'https://ecma-international.org/ecma-262/9.0/#sec-performpromiseall',
PerformPromiseRace: 'https://ecma-international.org/ecma-262/9.0/#sec-performpromiserace',
PerformPromiseThen: 'https://ecma-international.org/ecma-262/9.0/#sec-performpromisethen',
PrepareForOrdinaryCall: 'https://ecma-international.org/ecma-262/9.0/#sec-prepareforordinarycall',
PrepareForTailCall: 'https://ecma-international.org/ecma-262/9.0/#sec-preparefortailcall',
PromiseReactionJob: 'https://ecma-international.org/ecma-262/9.0/#sec-promisereactionjob',
PromiseResolve: 'https://ecma-international.org/ecma-262/9.0/#sec-promise-resolve',
PromiseResolveThenableJob: 'https://ecma-international.org/ecma-262/9.0/#sec-promiseresolvethenablejob',
ProxyCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-proxycreate',
PutValue: 'https://ecma-international.org/ecma-262/9.0/#sec-putvalue',
QuoteJSONString: 'https://ecma-international.org/ecma-262/9.0/#sec-quotejsonstring',
RawBytesToNumber: 'https://ecma-international.org/ecma-262/9.0/#sec-rawbytestonumber',
'reads-bytes-from': 'https://ecma-international.org/ecma-262/9.0/#sec-reads-bytes-from',
'reads-from': 'https://ecma-international.org/ecma-262/9.0/#sec-reads-from',
RegExpAlloc: 'https://ecma-international.org/ecma-262/9.0/#sec-regexpalloc',
RegExpBuiltinExec: 'https://ecma-international.org/ecma-262/9.0/#sec-regexpbuiltinexec',
RegExpCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-regexpcreate',
RegExpExec: 'https://ecma-international.org/ecma-262/9.0/#sec-regexpexec',
RegExpInitialize: 'https://ecma-international.org/ecma-262/9.0/#sec-regexpinitialize',
RejectPromise: 'https://ecma-international.org/ecma-262/9.0/#sec-rejectpromise',
RemoveWaiter: 'https://ecma-international.org/ecma-262/9.0/#sec-removewaiter',
RemoveWaiters: 'https://ecma-international.org/ecma-262/9.0/#sec-removewaiters',
RepeatMatcher: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-repeatmatcher-abstract-operation',
RequireObjectCoercible: 'https://ecma-international.org/ecma-262/9.0/#sec-requireobjectcoercible',
ResolveBinding: 'https://ecma-international.org/ecma-262/9.0/#sec-resolvebinding',
ResolveThisBinding: 'https://ecma-international.org/ecma-262/9.0/#sec-resolvethisbinding',
ReturnIfAbrupt: 'https://ecma-international.org/ecma-262/9.0/#sec-returnifabrupt',
RunJobs: 'https://ecma-international.org/ecma-262/9.0/#sec-runjobs',
SameValue: 'https://ecma-international.org/ecma-262/9.0/#sec-samevalue',
SameValueNonNumber: 'https://ecma-international.org/ecma-262/9.0/#sec-samevaluenonnumber',
SameValueZero: 'https://ecma-international.org/ecma-262/9.0/#sec-samevaluezero',
ScriptEvaluation: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-scriptevaluation',
ScriptEvaluationJob: 'https://ecma-international.org/ecma-262/9.0/#sec-scriptevaluationjob',
SecFromTime: 'https://ecma-international.org/ecma-262/9.0/#eqn-SecFromTime',
SecondsPerMinute: 'https://ecma-international.org/ecma-262/9.0/#eqn-SecondsPerMinute',
SerializeJSONArray: 'https://ecma-international.org/ecma-262/9.0/#sec-serializejsonarray',
SerializeJSONObject: 'https://ecma-international.org/ecma-262/9.0/#sec-serializejsonobject',
SerializeJSONProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-serializejsonproperty',
Set: 'https://ecma-international.org/ecma-262/9.0/#sec-set-o-p-v-throw',
SetDefaultGlobalBindings: 'https://ecma-international.org/ecma-262/9.0/#sec-setdefaultglobalbindings',
SetFunctionLength: 'https://ecma-international.org/ecma-262/9.0/#sec-setfunctionlength',
SetFunctionName: 'https://ecma-international.org/ecma-262/9.0/#sec-setfunctionname',
SetImmutablePrototype: 'https://ecma-international.org/ecma-262/9.0/#sec-set-immutable-prototype',
SetIntegrityLevel: 'https://ecma-international.org/ecma-262/9.0/#sec-setintegritylevel',
SetRealmGlobalObject: 'https://ecma-international.org/ecma-262/9.0/#sec-setrealmglobalobject',
SetValueInBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-setvalueinbuffer',
SetViewValue: 'https://ecma-international.org/ecma-262/9.0/#sec-setviewvalue',
SharedDataBlockEventSet: 'https://ecma-international.org/ecma-262/9.0/#sec-sharedatablockeventset',
SortCompare: 'https://ecma-international.org/ecma-262/9.0/#sec-sortcompare',
SpeciesConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-speciesconstructor',
SplitMatch: 'https://ecma-international.org/ecma-262/9.0/#sec-splitmatch',
'Strict Equality Comparison': 'https://ecma-international.org/ecma-262/9.0/#sec-strict-equality-comparison',
StringCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-stringcreate',
StringGetOwnProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-stringgetownproperty',
Suspend: 'https://ecma-international.org/ecma-262/9.0/#sec-suspend',
SymbolDescriptiveString: 'https://ecma-international.org/ecma-262/9.0/#sec-symboldescriptivestring',
'synchronizes-with': 'https://ecma-international.org/ecma-262/9.0/#sec-synchronizes-with',
TestIntegrityLevel: 'https://ecma-international.org/ecma-262/9.0/#sec-testintegritylevel',
thisBooleanValue: 'https://ecma-international.org/ecma-262/9.0/#sec-thisbooleanvalue',
thisNumberValue: 'https://ecma-international.org/ecma-262/9.0/#sec-thisnumbervalue',
thisStringValue: 'https://ecma-international.org/ecma-262/9.0/#sec-thisstringvalue',
thisSymbolValue: 'https://ecma-international.org/ecma-262/9.0/#sec-thissymbolvalue',
thisTimeValue: 'https://ecma-international.org/ecma-262/9.0/#sec-thistimevalue',
ThrowCompletion: 'https://ecma-international.org/ecma-262/9.0/#sec-throwcompletion',
TimeClip: 'https://ecma-international.org/ecma-262/9.0/#sec-timeclip',
TimeFromYear: 'https://ecma-international.org/ecma-262/9.0/#eqn-TimeFromYear',
TimeString: 'https://ecma-international.org/ecma-262/9.0/#sec-timestring',
TimeWithinDay: 'https://ecma-international.org/ecma-262/9.0/#eqn-TimeWithinDay',
TimeZoneString: 'https://ecma-international.org/ecma-262/9.0/#sec-timezoneestring',
ToBoolean: 'https://ecma-international.org/ecma-262/9.0/#sec-toboolean',
ToDateString: 'https://ecma-international.org/ecma-262/9.0/#sec-todatestring',
ToIndex: 'https://ecma-international.org/ecma-262/9.0/#sec-toindex',
ToInt16: 'https://ecma-international.org/ecma-262/9.0/#sec-toint16',
ToInt32: 'https://ecma-international.org/ecma-262/9.0/#sec-toint32',
ToInt8: 'https://ecma-international.org/ecma-262/9.0/#sec-toint8',
ToInteger: 'https://ecma-international.org/ecma-262/9.0/#sec-tointeger',
ToLength: 'https://ecma-international.org/ecma-262/9.0/#sec-tolength',
ToNumber: 'https://ecma-international.org/ecma-262/9.0/#sec-tonumber',
ToObject: 'https://ecma-international.org/ecma-262/9.0/#sec-toobject',
TopLevelModuleEvaluationJob: 'https://ecma-international.org/ecma-262/9.0/#sec-toplevelmoduleevaluationjob',
ToPrimitive: 'https://ecma-international.org/ecma-262/9.0/#sec-toprimitive',
ToPropertyDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-topropertydescriptor',
ToPropertyKey: 'https://ecma-international.org/ecma-262/9.0/#sec-topropertykey',
ToString: 'https://ecma-international.org/ecma-262/9.0/#sec-tostring',
ToUint16: 'https://ecma-international.org/ecma-262/9.0/#sec-touint16',
ToUint32: 'https://ecma-international.org/ecma-262/9.0/#sec-touint32',
ToUint8: 'https://ecma-international.org/ecma-262/9.0/#sec-touint8',
ToUint8Clamp: 'https://ecma-international.org/ecma-262/9.0/#sec-touint8clamp',
TriggerPromiseReactions: 'https://ecma-international.org/ecma-262/9.0/#sec-triggerpromisereactions',
Type: 'https://ecma-international.org/ecma-262/9.0/#sec-ecmascript-data-types-and-values',
TypedArrayCreate: 'https://ecma-international.org/ecma-262/9.0/#typedarray-create',
TypedArraySpeciesCreate: 'https://ecma-international.org/ecma-262/9.0/#typedarray-species-create',
UnicodeEscape: 'https://ecma-international.org/ecma-262/9.0/#sec-unicodeescape',
UnicodeMatchProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-unicodematchproperty-p',
UnicodeMatchPropertyValue: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-unicodematchpropertyvalue-p-v',
UpdateEmpty: 'https://ecma-international.org/ecma-262/9.0/#sec-updateempty',
UTC: 'https://ecma-international.org/ecma-262/9.0/#sec-utc-t',
UTF16Decode: 'https://ecma-international.org/ecma-262/9.0/#sec-utf16decode',
UTF16Encoding: 'https://ecma-international.org/ecma-262/9.0/#sec-utf16encoding',
ValidateAndApplyPropertyDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-validateandapplypropertydescriptor',
ValidateAtomicAccess: 'https://ecma-international.org/ecma-262/9.0/#sec-validateatomicaccess',
ValidateSharedIntegerTypedArray: 'https://ecma-international.org/ecma-262/9.0/#sec-validatesharedintegertypedarray',
ValidateTypedArray: 'https://ecma-international.org/ecma-262/9.0/#sec-validatetypedarray',
ValueOfReadEvent: 'https://ecma-international.org/ecma-262/9.0/#sec-valueofreadevent',
WakeWaiter: 'https://ecma-international.org/ecma-262/9.0/#sec-wakewaiter',
WeekDay: 'https://ecma-international.org/ecma-262/9.0/#sec-week-day',
WordCharacters: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-wordcharacters-abstract-operation',
YearFromTime: 'https://ecma-international.org/ecma-262/9.0/#eqn-YearFromTime'
};

View File

@@ -1,9 +0,0 @@
'use strict';
module.exports = {
IsAccessorDescriptor: 'https://ecma-international.org/ecma-262/5.1/#sec-8.10.1',
IsDataDescriptor: 'https://ecma-international.org/ecma-262/5.1/#sec-8.10.2',
IsGenericDescriptor: 'https://ecma-international.org/ecma-262/5.1/#sec-8.10.3',
FromPropertyDescriptor: 'https://ecma-international.org/ecma-262/5.1/#sec-8.10.4',
ToPropertyDescriptor: 'https://ecma-international.org/ecma-262/5.1/#sec-8.10.5'
};

View File

@@ -1,61 +0,0 @@
#!/usr/bin/env node
var fs = require('fs');
var path = require('path');
var execSync = require('child_process').execSync;
var $ = require('cheerio');
var fromEntries = require('object.fromentries');
if (process.argv.length !== 3) {
throw new RangeError('please provide a year');
}
var year = parseInt(process.argv[2]);
if (year < 2016) {
throw new RangeError('ES2016+ only');
}
var edition = year - 2009;
var specHTMLurl = new URL('https://raw.githubusercontent.com/tc39/ecma262/es' + year + '/spec.html');
var specHTML = String(execSync('curl --silent ' + specHTMLurl));
var root = $(specHTML);
var aOps = root.filter('[aoid]').add(root.find('[aoid]'));
var missings = [];
var entries = aOps.toArray().map(function (x) {
var op = $(x);
var aoid = op.attr('aoid');
var id = op.attr('id');
if (!id) {
id = op.closest('[id]').attr('id');
}
if (!id) {
missings.push(aoid);
}
return [
aoid,
'https://ecma-international.org/ecma-262/' + edition + '.0/#' + id
];
});
if (missings.length > 0) {
console.error('Missing URLs:', missings);
process.exit(1);
}
entries.sort(function (a, b) { return a[0].localeCompare(b[0]); });
var obj = fromEntries(entries);
var outputPath = path.join('operations', year + '.js');
fs.writeFileSync(outputPath, '\'use strict\';\n\nmodule.exports = ' + JSON.stringify(obj, null, '\t')+ ';\n');
console.log('npx eslint --quiet --fix ' + outputPath);
execSync('npx eslint --quiet --fix ' + outputPath);

View File

@@ -1,33 +1,27 @@
{
"_args": [
[
"es-abstract@1.13.0",
"/Users/imranismail/Projects/setup-kustomize"
]
],
"_development": true,
"_from": "es-abstract@1.13.0",
"_id": "es-abstract@1.13.0",
"_from": "es-abstract@^1.5.1",
"_id": "es-abstract@1.16.0",
"_inBundle": false,
"_integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
"_integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==",
"_location": "/es-abstract",
"_phantomChildren": {},
"_requested": {
"type": "version",
"type": "range",
"registry": true,
"raw": "es-abstract@1.13.0",
"raw": "es-abstract@^1.5.1",
"name": "es-abstract",
"escapedName": "es-abstract",
"rawSpec": "1.13.0",
"rawSpec": "^1.5.1",
"saveSpec": null,
"fetchSpec": "1.13.0"
"fetchSpec": "^1.5.1"
},
"_requiredBy": [
"/object.getownpropertydescriptors"
],
"_resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
"_spec": "1.13.0",
"_where": "/Users/imranismail/Projects/setup-kustomize",
"_resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz",
"_shasum": "d3a26dc9c3283ac9750dca569586e976d9dcc06d",
"_spec": "es-abstract@^1.5.1",
"_where": "/Users/imranismail/Projects/setup-kustomize/node_modules/object.getownpropertydescriptors",
"author": {
"name": "Jordan Harband",
"email": "ljharb@gmail.com",
@@ -36,6 +30,7 @@
"bugs": {
"url": "https://github.com/ljharb/es-abstract/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Jordan Harband",
@@ -47,26 +42,32 @@
"es-to-primitive": "^1.2.0",
"function-bind": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.0",
"is-callable": "^1.1.4",
"is-regex": "^1.0.4",
"object-keys": "^1.0.12"
"object-inspect": "^1.6.0",
"object-keys": "^1.1.1",
"string.prototype.trimleft": "^2.1.0",
"string.prototype.trimright": "^2.1.0"
},
"deprecated": false,
"description": "ECMAScript spec abstract operations.",
"devDependencies": {
"@ljharb/eslint-config": "^13.1.1",
"cheerio": "^1.0.0-rc.2",
"editorconfig-tools": "^0.1.1",
"eslint": "^5.11.1",
"@ljharb/eslint-config": "^14.1.0",
"cheerio": "^1.0.0-rc.3",
"diff": "^4.0.1",
"eclint": "^2.8.1",
"eslint": "^6.5.1",
"foreach": "^2.0.5",
"make-arrow-function": "^1.1.0",
"nyc": "^10.3.2",
"object-inspect": "^1.6.0",
"object-is": "^1.0.1",
"object.assign": "^4.1.0",
"object.fromentries": "^2.0.0",
"replace": "^1.0.1",
"safe-publish-latest": "^1.1.2",
"semver": "^5.6.0",
"tape": "^4.9.2"
"object.fromentries": "^2.0.1",
"replace": "^1.1.1",
"safe-publish-latest": "^1.1.3",
"semver": "^6.3.0",
"tape": "^4.11.0"
},
"engines": {
"node": ">= 0.4"
@@ -97,14 +98,11 @@
"url": "git://github.com/ljharb/es-abstract.git"
},
"scripts": {
"audit": "npm audit",
"coverage": "nyc npm run --silent tests-only >/dev/null",
"eccheck": "editorconfig-tools check *.js **/*.js > /dev/null",
"lint": "eslint test/*.js *.js",
"postaudit": "rm package-lock.json",
"eccheck": "eclint check *.js **/*.js > /dev/null",
"lint": "eslint .",
"postcoverage": "nyc report",
"posttest": "npm run audit",
"preaudit": "npm install --package-lock --package-lock-only",
"posttest": "npx aud --production",
"prepublish": "safe-publish-latest",
"pretest": "npm run --silent lint",
"test": "npm run tests-only",
@@ -128,5 +126,5 @@
"android-browser/4.2"
]
},
"version": "1.13.0"
"version": "1.16.0"
}

View File

@@ -32,3 +32,17 @@ test('throws', function (t) {
t.end();
});
test('base intrinsics', function (t) {
t.equal(GetIntrinsic('%Object%'), Object, '%Object% yields Object');
t.equal(GetIntrinsic('%Array%'), Array, '%Array% yields Array');
t.end();
});
test('dotted paths', function (t) {
t.equal(GetIntrinsic('%Object.prototype.toString%'), Object.prototype.toString, '%Object.prototype.toString% yields Object.prototype.toString');
t.equal(GetIntrinsic('%Array.prototype.push%'), Array.prototype.push, '%Array.prototype.push% yields Array.prototype.push');
t.end();
});

View File

@@ -4,6 +4,6 @@ var ES = require('../').ES2015;
var ops = require('../operations/2015');
var expectedMissing = ['Construct', 'SetIntegrityLevel', 'TestIntegrityLevel', 'CreateArrayFromList', 'CreateListFromArrayLike', 'OrdinaryHasInstance', 'CreateListIterator', 'RegExpBuiltinExec', 'IsPromise', 'NormalCompletion'];
var expectedMissing = ['Construct', 'CreateArrayFromList', 'CreateListIterator', 'NormalCompletion', 'RegExpBuiltinExec'];
require('./tests').es2015(ES, ops, expectedMissing);

View File

@@ -4,6 +4,6 @@ var ES = require('../').ES2016;
var ops = require('../operations/2016');
var expectedMissing = ['Abstract Equality Comparison', 'Abstract Relational Comparison', 'AddRestrictedFunctionProperties', 'AllocateArrayBuffer', 'AllocateTypedArray', 'AllocateTypedArrayBuffer', 'ArrayCreate', 'ArraySetLength', 'BlockDeclarationInstantiation', 'BoundFunctionCreate', 'Canonicalize', 'CharacterRange', 'CharacterRangeOrUnion', 'CharacterSetMatcher', 'CloneArrayBuffer', 'Completion', 'Construct', 'CopyDataBlockBytes', 'CreateArrayFromList', 'CreateArrayIterator', 'CreateBuiltinFunction', 'CreateByteDataBlock', 'CreateDynamicFunction', 'CreateHTML', 'CreateIntrinsics', 'CreateListFromArrayLike', 'CreateListIterator', 'CreateMapIterator', 'CreateMappedArgumentsObject', 'CreatePerIterationEnvironment', 'CreateRealm', 'CreateResolvingFunctions', 'CreateSetIterator', 'CreateStringIterator', 'CreateUnmappedArgumentsObject', 'DateFromTime', 'Day', 'DayFromYear', 'DayWithinYear', 'DaysInYear', 'Decode', 'DetachArrayBuffer', 'Encode', 'EnqueueJob', 'EnumerateObjectProperties', 'EscapeRegExpPattern', 'EvalDeclarationInstantiation', 'EvaluateCall', 'EvaluateDirectCall', 'EvaluateNew', 'ForBodyEvaluation', 'ForIn/OfBodyEvaluation', 'ForIn/OfHeadEvaluation', 'FulfillPromise', 'FunctionAllocate', 'FunctionCreate', 'FunctionDeclarationInstantiation', 'FunctionInitialize', 'GeneratorFunctionCreate', 'GeneratorResume', 'GeneratorResumeAbrupt', 'GeneratorStart', 'GeneratorValidate', 'GeneratorYield', 'GetActiveScriptOrModule', 'GetFunctionRealm', 'GetGlobalObject', 'GetIdentifierReference', 'GetModuleNamespace', 'GetNewTarget', 'GetOwnPropertyKeys', 'GetPrototypeFromConstructor', 'GetSubstitution', 'GetSuperConstructor', 'GetTemplateObject', 'GetThisEnvironment', 'GetThisValue', 'GetValue', 'GetValueFromBuffer', 'GetViewValue', 'GlobalDeclarationInstantiation', 'HostPromiseRejectionTracker', 'HostReportErrors', 'HostResolveImportedModule', 'HourFromTime', 'HoursPerDay', 'IfAbruptRejectPromise', 'ImportedLocalNames', 'InLeapYear', 'InitializeBoundName', 'InitializeHostDefinedRealm', 'InitializeReferencedBinding', 'InstanceofOperator', 'IntegerIndexedElementGet', 'IntegerIndexedElementSet', 'IntegerIndexedObjectCreate', 'InternalizeJSONProperty', 'IsAnonymousFunctionDefinition', 'IsCompatiblePropertyDescriptor', 'IsDetachedBuffer', 'IsInTailPosition', 'IsLabelledFunction', 'IsPromise', 'IsWordChar', 'IterableToArrayLike', 'LocalTime', 'LoopContinues', 'MakeArgGetter', 'MakeArgSetter', 'MakeClassConstructor', 'MakeConstructor', 'MakeDate', 'MakeDay', 'MakeMethod', 'MakeSuperPropertyReference', 'MakeTime', 'MinFromTime', 'MinutesPerHour', 'ModuleNamespaceCreate', 'MonthFromTime', 'NewDeclarativeEnvironment', 'NewFunctionEnvironment', 'NewGlobalEnvironment', 'NewModuleEnvironment', 'NewObjectEnvironment', 'NewPromiseCapability', 'NextJob', 'NormalCompletion', 'ObjectDefineProperties', 'OrdinaryCallBindThis', 'OrdinaryCallEvaluateBody', 'OrdinaryCreateFromConstructor', 'OrdinaryDefineOwnProperty', 'OrdinaryDelete', 'OrdinaryGet', 'OrdinaryGetOwnProperty', 'OrdinaryGetPrototypeOf', 'OrdinaryHasInstance', 'OrdinaryHasProperty', 'OrdinaryIsExtensible', 'OrdinaryOwnPropertyKeys', 'OrdinaryPreventExtensions', 'OrdinarySet', 'OrdinarySetPrototypeOf', 'ParseModule', 'ParseScript', 'PerformEval', 'PerformPromiseAll', 'PerformPromiseRace', 'PerformPromiseThen', 'PrepareForOrdinaryCall', 'PrepareForTailCall', 'PromiseReactionJob', 'PromiseResolveThenableJob', 'ProxyCreate', 'PutValue', 'QuoteJSONString', 'RegExpAlloc', 'RegExpBuiltinExec', 'RegExpCreate', 'RegExpInitialize', 'RejectPromise', 'RepeatMatcher', 'ResolveBinding', 'ResolveThisBinding', 'ReturnIfAbrupt', 'ScriptEvaluation', 'ScriptEvaluationJob', 'SecFromTime', 'SecondsPerMinute', 'SerializeJSONArray', 'SerializeJSONObject', 'SerializeJSONProperty', 'SetDefaultGlobalBindings', 'SetFunctionName', 'SetIntegrityLevel', 'SetRealmGlobalObject', 'SetValueInBuffer', 'SetViewValue', 'SortCompare', 'SplitMatch', 'Strict Equality Comparison', 'StringCreate', 'SymbolDescriptiveString', 'TestIntegrityLevel', 'TimeClip', 'TimeFromYear', 'TimeWithinDay', 'ToDateString', 'ToString Applied to the Number Type', 'TopLevelModuleEvaluationJob', 'TriggerPromiseReactions', 'TypedArrayCreate', 'TypedArraySpeciesCreate', 'UTC', 'UTF16Decode', 'UTF16Encoding', 'UpdateEmpty', 'ValidateAndApplyPropertyDescriptor', 'ValidateTypedArray', 'WeekDay', 'YearFromTime', 'abs', 'floor', 'max', 'min', 'modulo', 'msFromTime', 'msPerDay', 'msPerHour', 'msPerMinute', 'msPerSecond'];
var expectedMissing = ['AddRestrictedFunctionProperties', 'AllocateArrayBuffer', 'AllocateTypedArray', 'AllocateTypedArrayBuffer', 'BlockDeclarationInstantiation', 'BoundFunctionCreate', 'Canonicalize', 'CharacterRange', 'CharacterRangeOrUnion', 'CharacterSetMatcher', 'CloneArrayBuffer', 'Completion', 'Construct', 'CopyDataBlockBytes', 'CreateArrayFromList', 'CreateArrayIterator', 'CreateBuiltinFunction', 'CreateByteDataBlock', 'CreateDynamicFunction', 'CreateIntrinsics', 'CreateListIterator', 'CreateMapIterator', 'CreateMappedArgumentsObject', 'CreatePerIterationEnvironment', 'CreateRealm', 'CreateResolvingFunctions', 'CreateSetIterator', 'CreateStringIterator', 'CreateUnmappedArgumentsObject', 'Decode', 'DetachArrayBuffer', 'Encode', 'EnqueueJob', 'EnumerateObjectProperties', 'EscapeRegExpPattern', 'EvalDeclarationInstantiation', 'EvaluateCall', 'EvaluateDirectCall', 'EvaluateNew', 'ForBodyEvaluation', 'ForIn/OfBodyEvaluation', 'ForIn/OfHeadEvaluation', 'FulfillPromise', 'FunctionAllocate', 'FunctionCreate', 'FunctionDeclarationInstantiation', 'FunctionInitialize', 'GeneratorFunctionCreate', 'GeneratorResume', 'GeneratorResumeAbrupt', 'GeneratorStart', 'GeneratorValidate', 'GeneratorYield', 'GetActiveScriptOrModule', 'GetFunctionRealm', 'GetGlobalObject', 'GetIdentifierReference', 'GetModuleNamespace', 'GetNewTarget', 'GetSuperConstructor', 'GetTemplateObject', 'GetThisEnvironment', 'GetThisValue', 'GetValue', 'GetValueFromBuffer', 'GetViewValue', 'GlobalDeclarationInstantiation', 'HostPromiseRejectionTracker', 'HostReportErrors', 'HostResolveImportedModule', 'IfAbruptRejectPromise', 'ImportedLocalNames', 'InitializeBoundName', 'InitializeHostDefinedRealm', 'InitializeReferencedBinding', 'IntegerIndexedElementGet', 'IntegerIndexedElementSet', 'IntegerIndexedObjectCreate', 'InternalizeJSONProperty', 'IsAnonymousFunctionDefinition', 'IsCompatiblePropertyDescriptor', 'IsDetachedBuffer', 'IsInTailPosition', 'IsLabelledFunction', 'IsWordChar', 'LocalTime', 'LoopContinues', 'MakeArgGetter', 'MakeArgSetter', 'MakeClassConstructor', 'MakeConstructor', 'MakeMethod', 'MakeSuperPropertyReference', 'ModuleNamespaceCreate', 'NewDeclarativeEnvironment', 'NewFunctionEnvironment', 'NewGlobalEnvironment', 'NewModuleEnvironment', 'NewObjectEnvironment', 'NewPromiseCapability', 'NextJob', 'NormalCompletion', 'ObjectDefineProperties', 'OrdinaryCallBindThis', 'OrdinaryCallEvaluateBody', 'OrdinaryCreateFromConstructor', 'OrdinaryDelete', 'OrdinaryGet', 'OrdinaryIsExtensible', 'OrdinaryOwnPropertyKeys', 'OrdinaryPreventExtensions', 'OrdinarySet', 'ParseModule', 'ParseScript', 'PerformEval', 'PerformPromiseAll', 'PerformPromiseRace', 'PerformPromiseThen', 'PrepareForOrdinaryCall', 'PrepareForTailCall', 'PromiseReactionJob', 'PromiseResolveThenableJob', 'ProxyCreate', 'PutValue', 'QuoteJSONString', 'RegExpAlloc', 'RegExpBuiltinExec', 'RegExpCreate', 'RegExpInitialize', 'RejectPromise', 'RepeatMatcher', 'ResolveBinding', 'ResolveThisBinding', 'ReturnIfAbrupt', 'ScriptEvaluation', 'ScriptEvaluationJob', 'SerializeJSONArray', 'SerializeJSONObject', 'SerializeJSONProperty', 'SetDefaultGlobalBindings', 'SetRealmGlobalObject', 'SetValueInBuffer', 'SetViewValue', 'SortCompare', 'SplitMatch', 'StringCreate', 'ToString Applied to the Number Type', 'TopLevelModuleEvaluationJob', 'TriggerPromiseReactions', 'TypedArrayCreate', 'TypedArraySpeciesCreate', 'UTC', 'UTF16Decode', 'UTF16Encoding', 'UpdateEmpty', 'ValidateTypedArray', 'abs', 'floor', 'max', 'min'];
require('./tests').es2016(ES, ops, expectedMissing);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

9
node_modules/es-abstract/test/es2019.js generated vendored Normal file

File diff suppressed because one or more lines are too long

591
node_modules/es-abstract/test/es5.js generated vendored
View File

@@ -5,45 +5,31 @@ var test = require('tape');
var forEach = require('foreach');
var is = require('object-is');
var debug = require('object-inspect');
var coercibleObject = { valueOf: function () { return '3'; }, toString: function () { return 42; } };
var coercibleFnObject = {
valueOf: function () { return function valueOfFn() {}; },
toString: function () { return 42; }
};
var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } };
var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } };
var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } };
var uncoercibleFnObject = {
valueOf: function () { return function valueOfFn() {}; },
toString: function () { return function toStrFn() {}; }
};
var objects = [{}, coercibleObject, toStringOnlyObject, valueOfOnlyObject];
var numbers = [0, -0, Infinity, -Infinity, 42];
var nonNullPrimitives = [true, false, 'foo', ''].concat(numbers);
var primitives = [undefined, null].concat(nonNullPrimitives);
var v = require('./helpers/values');
test('ToPrimitive', function (t) {
t.test('primitives', function (st) {
var testPrimitive = function (primitive) {
st.ok(is(ES.ToPrimitive(primitive), primitive), primitive + ' is returned correctly');
st.ok(is(ES.ToPrimitive(primitive), primitive), debug(primitive) + ' is returned correctly');
};
forEach(primitives, testPrimitive);
forEach(v.primitives, testPrimitive);
st.end();
});
t.test('objects', function (st) {
st.equal(ES.ToPrimitive(coercibleObject), coercibleObject.valueOf(), 'coercibleObject coerces to valueOf');
st.equal(ES.ToPrimitive(coercibleObject, Number), coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf');
st.equal(ES.ToPrimitive(coercibleObject, String), coercibleObject.toString(), 'coercibleObject with hint String coerces to toString');
st.equal(ES.ToPrimitive(coercibleFnObject), coercibleFnObject.toString(), 'coercibleFnObject coerces to toString');
st.equal(ES.ToPrimitive(toStringOnlyObject), toStringOnlyObject.toString(), 'toStringOnlyObject returns toString');
st.equal(ES.ToPrimitive(valueOfOnlyObject), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf');
st.equal(ES.ToPrimitive(v.coercibleObject), v.coercibleObject.valueOf(), 'coercibleObject coerces to valueOf');
st.equal(ES.ToPrimitive(v.coercibleObject, Number), v.coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf');
st.equal(ES.ToPrimitive(v.coercibleObject, String), v.coercibleObject.toString(), 'coercibleObject with hint String coerces to toString');
st.equal(ES.ToPrimitive(v.coercibleFnObject), v.coercibleFnObject.toString(), 'coercibleFnObject coerces to toString');
st.equal(ES.ToPrimitive(v.toStringOnlyObject), v.toStringOnlyObject.toString(), 'toStringOnlyObject returns toString');
st.equal(ES.ToPrimitive(v.valueOfOnlyObject), v.valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf');
st.equal(ES.ToPrimitive({}), '[object Object]', '{} with no hint coerces to Object#toString');
st.equal(ES.ToPrimitive({}, String), '[object Object]', '{} with hint String coerces to Object#toString');
st.equal(ES.ToPrimitive({}, Number), '[object Object]', '{} with hint Number coerces to Object#toString');
st['throws'](function () { return ES.ToPrimitive(uncoercibleObject); }, TypeError, 'uncoercibleObject throws a TypeError');
st['throws'](function () { return ES.ToPrimitive(uncoercibleFnObject); }, TypeError, 'uncoercibleFnObject throws a TypeError');
st['throws'](function () { return ES.ToPrimitive(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws a TypeError');
st['throws'](function () { return ES.ToPrimitive(v.uncoercibleFnObject); }, TypeError, 'uncoercibleFnObject throws a TypeError');
st.end();
});
@@ -63,10 +49,10 @@ test('ToBoolean', function (t) {
});
t.equal(false, ES.ToBoolean(''), 'empty string coerces to false');
t.equal(true, ES.ToBoolean('foo'), 'nonempty string coerces to true');
forEach(objects, function (obj) {
forEach(v.objects, function (obj) {
t.equal(true, ES.ToBoolean(obj), 'object coerces to true');
});
t.equal(true, ES.ToBoolean(uncoercibleObject), 'uncoercibleObject coerces to true');
t.equal(true, ES.ToBoolean(v.uncoercibleObject), 'uncoercibleObject coerces to true');
t.end();
});
@@ -82,10 +68,10 @@ test('ToNumber', function (t) {
forEach(['foo', '0', '4a', '2.0', 'Infinity', '-Infinity'], function (numString) {
t.ok(is(+numString, ES.ToNumber(numString)), '"' + numString + '" coerces to ' + Number(numString));
});
forEach(objects, function (object) {
forEach(v.objects, function (object) {
t.ok(is(ES.ToNumber(object), ES.ToNumber(ES.ToPrimitive(object))), 'object ' + object + ' coerces to same as ToPrimitive of object does');
});
t['throws'](function () { return ES.ToNumber(uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
t['throws'](function () { return ES.ToNumber(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
t.end();
});
@@ -96,7 +82,7 @@ test('ToInteger', function (t) {
t.ok(is(-num, ES.ToInteger(-num)), '-' + num + ' returns itself');
});
t.equal(3, ES.ToInteger(Math.PI), 'pi returns 3');
t['throws'](function () { return ES.ToInteger(uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
t['throws'](function () { return ES.ToInteger(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
t.end();
});
@@ -106,7 +92,7 @@ test('ToInt32', function (t) {
t.ok(is(0, ES.ToInt32(num)), num + ' returns +0');
t.ok(is(0, ES.ToInt32(-num)), '-' + num + ' returns +0');
});
t['throws'](function () { return ES.ToInt32(uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
t['throws'](function () { return ES.ToInt32(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
t.ok(is(ES.ToInt32(0x100000000), 0), '2^32 returns +0');
t.ok(is(ES.ToInt32(0x100000000 - 1), -1), '2^32 - 1 returns -1');
t.ok(is(ES.ToInt32(0x80000000), -0x80000000), '2^31 returns -2^31');
@@ -124,7 +110,7 @@ test('ToUint32', function (t) {
t.ok(is(0, ES.ToUint32(num)), num + ' returns +0');
t.ok(is(0, ES.ToUint32(-num)), '-' + num + ' returns +0');
});
t['throws'](function () { return ES.ToUint32(uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
t['throws'](function () { return ES.ToUint32(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
t.ok(is(ES.ToUint32(0x100000000), 0), '2^32 returns +0');
t.ok(is(ES.ToUint32(0x100000000 - 1), 0x100000000 - 1), '2^32 - 1 returns 2^32 - 1');
t.ok(is(ES.ToUint32(0x80000000), 0x80000000), '2^31 returns 2^31');
@@ -142,7 +128,7 @@ test('ToUint16', function (t) {
t.ok(is(0, ES.ToUint16(num)), num + ' returns +0');
t.ok(is(0, ES.ToUint16(-num)), '-' + num + ' returns +0');
});
t['throws'](function () { return ES.ToUint16(uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
t['throws'](function () { return ES.ToUint16(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
t.ok(is(ES.ToUint16(0x100000000), 0), '2^32 returns +0');
t.ok(is(ES.ToUint16(0x100000000 - 1), 0x10000 - 1), '2^32 - 1 returns 2^16 - 1');
t.ok(is(ES.ToUint16(0x80000000), 0), '2^31 returns +0');
@@ -153,14 +139,14 @@ test('ToUint16', function (t) {
});
test('ToString', function (t) {
t['throws'](function () { return ES.ToString(uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
t['throws'](function () { return ES.ToString(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
t.end();
});
test('ToObject', function (t) {
t['throws'](function () { return ES.ToObject(undefined); }, TypeError, 'undefined throws');
t['throws'](function () { return ES.ToObject(null); }, TypeError, 'null throws');
forEach(numbers, function (number) {
forEach(v.numbers, function (number) {
var obj = ES.ToObject(number);
t.equal(typeof obj, 'object', 'number ' + number + ' coerces to object');
t.equal(true, obj instanceof Number, 'object of ' + number + ' is Number object');
@@ -173,17 +159,17 @@ test('CheckObjectCoercible', function (t) {
t['throws'](function () { return ES.CheckObjectCoercible(undefined); }, TypeError, 'undefined throws');
t['throws'](function () { return ES.CheckObjectCoercible(null); }, TypeError, 'null throws');
var checkCoercible = function (value) {
t.doesNotThrow(function () { return ES.CheckObjectCoercible(value); }, '"' + value + '" does not throw');
t.doesNotThrow(function () { return ES.CheckObjectCoercible(value); }, debug(value) + ' does not throw');
};
forEach(objects.concat(nonNullPrimitives), checkCoercible);
forEach(v.objects.concat(v.nonNullPrimitives), checkCoercible);
t.end();
});
test('IsCallable', function (t) {
t.equal(true, ES.IsCallable(function () {}), 'function is callable');
var nonCallables = [/a/g, {}, Object.prototype, NaN].concat(primitives);
var nonCallables = [/a/g, {}, Object.prototype, NaN].concat(v.primitives);
forEach(nonCallables, function (nonCallable) {
t.equal(false, ES.IsCallable(nonCallable), nonCallable + ' is not callable');
t.equal(false, ES.IsCallable(nonCallable), debug(nonCallable) + ' is not callable');
});
t.end();
});
@@ -191,8 +177,8 @@ test('IsCallable', function (t) {
test('SameValue', function (t) {
t.equal(true, ES.SameValue(NaN, NaN), 'NaN is SameValue as NaN');
t.equal(false, ES.SameValue(0, -0), '+0 is not SameValue as -0');
forEach(objects.concat(primitives), function (val) {
t.equal(val === val, ES.SameValue(val, val), '"' + val + '" is SameValue to itself');
forEach(v.objects.concat(v.primitives), function (val) {
t.equal(val === val, ES.SameValue(val, val), debug(val) + ' is SameValue to itself');
});
t.end();
});
@@ -211,107 +197,84 @@ test('Type', function (t) {
t.end();
});
var bothDescriptor = function () {
return { '[[Get]]': function () {}, '[[Value]]': true };
};
var accessorDescriptor = function () {
return {
'[[Get]]': function () {},
'[[Enumerable]]': true,
'[[Configurable]]': true
};
};
var mutatorDescriptor = function () {
return {
'[[Set]]': function () {},
'[[Enumerable]]': true,
'[[Configurable]]': true
};
};
var dataDescriptor = function () {
return {
'[[Value]]': 42,
'[[Writable]]': false,
'[[Configurable]]': false
};
};
var genericDescriptor = function () {
return {
'[[Configurable]]': true,
'[[Enumerable]]': false
};
};
test('IsPropertyDescriptor', function (t) {
forEach(primitives, function (primitive) {
t.equal(ES.IsPropertyDescriptor(primitive), false, primitive + ' is not a Property Descriptor');
forEach(v.primitives, function (primitive) {
t.equal(ES.IsPropertyDescriptor(primitive), false, debug(primitive) + ' is not a Property Descriptor');
});
t.equal(ES.IsPropertyDescriptor({ invalid: true }), false, 'invalid keys not allowed on a Property Descriptor');
t.equal(ES.IsPropertyDescriptor({}), true, 'empty object is an incomplete Property Descriptor');
t.equal(ES.IsPropertyDescriptor(accessorDescriptor()), true, 'accessor descriptor is a Property Descriptor');
t.equal(ES.IsPropertyDescriptor(mutatorDescriptor()), true, 'mutator descriptor is a Property Descriptor');
t.equal(ES.IsPropertyDescriptor(dataDescriptor()), true, 'data descriptor is a Property Descriptor');
t.equal(ES.IsPropertyDescriptor(genericDescriptor()), true, 'generic descriptor is a Property Descriptor');
t.equal(ES.IsPropertyDescriptor(v.accessorDescriptor()), true, 'accessor descriptor is a Property Descriptor');
t.equal(ES.IsPropertyDescriptor(v.mutatorDescriptor()), true, 'mutator descriptor is a Property Descriptor');
t.equal(ES.IsPropertyDescriptor(v.dataDescriptor()), true, 'data descriptor is a Property Descriptor');
t.equal(ES.IsPropertyDescriptor(v.genericDescriptor()), true, 'generic descriptor is a Property Descriptor');
t['throws'](function () {
ES.IsPropertyDescriptor(bothDescriptor());
}, TypeError, 'a Property Descriptor can not be both a Data and an Accessor Descriptor');
t['throws'](
function () { ES.IsPropertyDescriptor(v.bothDescriptor()); },
TypeError,
'a Property Descriptor can not be both a Data and an Accessor Descriptor'
);
t['throws'](
function () { ES.IsPropertyDescriptor(v.bothDescriptorWritable()); },
TypeError,
'a Property Descriptor can not be both a Data and an Accessor Descriptor'
);
t.end();
});
test('IsAccessorDescriptor', function (t) {
forEach(nonNullPrimitives.concat(null), function (primitive) {
t['throws'](function () { ES.IsAccessorDescriptor(primitive); }, TypeError, primitive + ' is not a Property Descriptor');
forEach(v.nonNullPrimitives.concat(null), function (primitive) {
t['throws'](function () { ES.IsAccessorDescriptor(primitive); }, TypeError, debug(primitive) + ' is not a Property Descriptor');
});
t.equal(ES.IsAccessorDescriptor(), false, 'no value is not an Accessor Descriptor');
t.equal(ES.IsAccessorDescriptor(undefined), false, 'undefined value is not an Accessor Descriptor');
t.equal(ES.IsAccessorDescriptor(accessorDescriptor()), true, 'accessor descriptor is an Accessor Descriptor');
t.equal(ES.IsAccessorDescriptor(mutatorDescriptor()), true, 'mutator descriptor is an Accessor Descriptor');
t.equal(ES.IsAccessorDescriptor(dataDescriptor()), false, 'data descriptor is not an Accessor Descriptor');
t.equal(ES.IsAccessorDescriptor(genericDescriptor()), false, 'generic descriptor is not an Accessor Descriptor');
t.equal(ES.IsAccessorDescriptor(v.accessorDescriptor()), true, 'accessor descriptor is an Accessor Descriptor');
t.equal(ES.IsAccessorDescriptor(v.mutatorDescriptor()), true, 'mutator descriptor is an Accessor Descriptor');
t.equal(ES.IsAccessorDescriptor(v.dataDescriptor()), false, 'data descriptor is not an Accessor Descriptor');
t.equal(ES.IsAccessorDescriptor(v.genericDescriptor()), false, 'generic descriptor is not an Accessor Descriptor');
t.end();
});
test('IsDataDescriptor', function (t) {
forEach(nonNullPrimitives.concat(null), function (primitive) {
t['throws'](function () { ES.IsDataDescriptor(primitive); }, TypeError, primitive + ' is not a Property Descriptor');
forEach(v.nonNullPrimitives.concat(null), function (primitive) {
t['throws'](function () { ES.IsDataDescriptor(primitive); }, TypeError, debug(primitive) + ' is not a Property Descriptor');
});
t.equal(ES.IsDataDescriptor(), false, 'no value is not a Data Descriptor');
t.equal(ES.IsDataDescriptor(undefined), false, 'undefined value is not a Data Descriptor');
t.equal(ES.IsDataDescriptor(accessorDescriptor()), false, 'accessor descriptor is not a Data Descriptor');
t.equal(ES.IsDataDescriptor(mutatorDescriptor()), false, 'mutator descriptor is not a Data Descriptor');
t.equal(ES.IsDataDescriptor(dataDescriptor()), true, 'data descriptor is a Data Descriptor');
t.equal(ES.IsDataDescriptor(genericDescriptor()), false, 'generic descriptor is not a Data Descriptor');
t.equal(ES.IsDataDescriptor(v.accessorDescriptor()), false, 'accessor descriptor is not a Data Descriptor');
t.equal(ES.IsDataDescriptor(v.mutatorDescriptor()), false, 'mutator descriptor is not a Data Descriptor');
t.equal(ES.IsDataDescriptor(v.dataDescriptor()), true, 'data descriptor is a Data Descriptor');
t.equal(ES.IsDataDescriptor(v.genericDescriptor()), false, 'generic descriptor is not a Data Descriptor');
t.end();
});
test('IsGenericDescriptor', function (t) {
forEach(nonNullPrimitives.concat(null), function (primitive) {
forEach(v.nonNullPrimitives.concat(null), function (primitive) {
t['throws'](
function () { ES.IsGenericDescriptor(primitive); },
TypeError,
primitive + ' is not a Property Descriptor'
debug(primitive) + ' is not a Property Descriptor'
);
});
t.equal(ES.IsGenericDescriptor(), false, 'no value is not a Data Descriptor');
t.equal(ES.IsGenericDescriptor(undefined), false, 'undefined value is not a Data Descriptor');
t.equal(ES.IsGenericDescriptor(accessorDescriptor()), false, 'accessor descriptor is not a generic Descriptor');
t.equal(ES.IsGenericDescriptor(mutatorDescriptor()), false, 'mutator descriptor is not a generic Descriptor');
t.equal(ES.IsGenericDescriptor(dataDescriptor()), false, 'data descriptor is not a generic Descriptor');
t.equal(ES.IsGenericDescriptor(v.accessorDescriptor()), false, 'accessor descriptor is not a generic Descriptor');
t.equal(ES.IsGenericDescriptor(v.mutatorDescriptor()), false, 'mutator descriptor is not a generic Descriptor');
t.equal(ES.IsGenericDescriptor(v.dataDescriptor()), false, 'data descriptor is not a generic Descriptor');
t.equal(ES.IsGenericDescriptor(genericDescriptor()), true, 'generic descriptor is a generic Descriptor');
t.equal(ES.IsGenericDescriptor(v.genericDescriptor()), true, 'generic descriptor is a generic Descriptor');
t.end();
});
@@ -320,15 +283,15 @@ test('FromPropertyDescriptor', function (t) {
t.equal(ES.FromPropertyDescriptor(), undefined, 'no value begets undefined');
t.equal(ES.FromPropertyDescriptor(undefined), undefined, 'undefined value begets undefined');
forEach(nonNullPrimitives.concat(null), function (primitive) {
forEach(v.nonNullPrimitives.concat(null), function (primitive) {
t['throws'](
function () { ES.FromPropertyDescriptor(primitive); },
TypeError,
primitive + ' is not a Property Descriptor'
debug(primitive) + ' is not a Property Descriptor'
);
});
var accessor = accessorDescriptor();
var accessor = v.accessorDescriptor();
t.deepEqual(ES.FromPropertyDescriptor(accessor), {
get: accessor['[[Get]]'],
set: accessor['[[Set]]'],
@@ -336,14 +299,14 @@ test('FromPropertyDescriptor', function (t) {
configurable: !!accessor['[[Configurable]]']
});
var mutator = mutatorDescriptor();
var mutator = v.mutatorDescriptor();
t.deepEqual(ES.FromPropertyDescriptor(mutator), {
get: mutator['[[Get]]'],
set: mutator['[[Set]]'],
enumerable: !!mutator['[[Enumerable]]'],
configurable: !!mutator['[[Configurable]]']
});
var data = dataDescriptor();
var data = v.dataDescriptor();
t.deepEqual(ES.FromPropertyDescriptor(data), {
value: data['[[Value]]'],
writable: data['[[Writable]]'],
@@ -352,7 +315,7 @@ test('FromPropertyDescriptor', function (t) {
});
t['throws'](
function () { ES.FromPropertyDescriptor(genericDescriptor()); },
function () { ES.FromPropertyDescriptor(v.genericDescriptor()); },
TypeError,
'a complete Property Descriptor is required'
);
@@ -361,36 +324,36 @@ test('FromPropertyDescriptor', function (t) {
});
test('ToPropertyDescriptor', function (t) {
forEach(nonNullPrimitives.concat(null), function (primitive) {
forEach(v.nonNullPrimitives.concat(null), function (primitive) {
t['throws'](
function () { ES.ToPropertyDescriptor(primitive); },
TypeError,
primitive + ' is not an Object'
debug(primitive) + ' is not an Object'
);
});
var accessor = accessorDescriptor();
var accessor = v.accessorDescriptor();
t.deepEqual(ES.ToPropertyDescriptor({
get: accessor['[[Get]]'],
enumerable: !!accessor['[[Enumerable]]'],
configurable: !!accessor['[[Configurable]]']
}), accessor);
var mutator = mutatorDescriptor();
var mutator = v.mutatorDescriptor();
t.deepEqual(ES.ToPropertyDescriptor({
set: mutator['[[Set]]'],
enumerable: !!mutator['[[Enumerable]]'],
configurable: !!mutator['[[Configurable]]']
}), mutator);
var data = dataDescriptor();
var data = v.descriptors.nonConfigurable(v.dataDescriptor());
t.deepEqual(ES.ToPropertyDescriptor({
value: data['[[Value]]'],
writable: data['[[Writable]]'],
configurable: !!data['[[Configurable]]']
}), data);
var both = bothDescriptor();
var both = v.bothDescriptor();
t['throws'](
function () {
ES.ToPropertyDescriptor({ get: both['[[Get]]'], value: both['[[Value]]'] });
@@ -413,3 +376,407 @@ test('ToPropertyDescriptor', function (t) {
t.end();
});
test('Abstract Equality Comparison', function (t) {
t.test('same types use ===', function (st) {
forEach(v.primitives.concat(v.objects), function (value) {
st.equal(ES['Abstract Equality Comparison'](value, value), value === value, debug(value) + ' is abstractly equal to itself');
});
st.end();
});
t.test('different types coerce', function (st) {
var pairs = [
[null, undefined],
[3, '3'],
[true, '3'],
[true, 3],
[false, 0],
[false, '0'],
[3, [3]],
['3', [3]],
[true, [1]],
[false, [0]],
[String(v.coercibleObject), v.coercibleObject],
[Number(String(v.coercibleObject)), v.coercibleObject],
[Number(v.coercibleObject), v.coercibleObject],
[String(Number(v.coercibleObject)), v.coercibleObject]
];
forEach(pairs, function (pair) {
var a = pair[0];
var b = pair[1];
// eslint-disable-next-line eqeqeq
st.equal(ES['Abstract Equality Comparison'](a, b), a == b, debug(a) + ' == ' + debug(b));
// eslint-disable-next-line eqeqeq
st.equal(ES['Abstract Equality Comparison'](b, a), b == a, debug(b) + ' == ' + debug(a));
});
st.end();
});
t.end();
});
test('Strict Equality Comparison', function (t) {
t.test('same types use ===', function (st) {
forEach(v.primitives.concat(v.objects), function (value) {
st.equal(ES['Strict Equality Comparison'](value, value), value === value, debug(value) + ' is strictly equal to itself');
});
st.end();
});
t.test('different types are not ===', function (st) {
var pairs = [
[null, undefined],
[3, '3'],
[true, '3'],
[true, 3],
[false, 0],
[false, '0'],
[3, [3]],
['3', [3]],
[true, [1]],
[false, [0]],
[String(v.coercibleObject), v.coercibleObject],
[Number(String(v.coercibleObject)), v.coercibleObject],
[Number(v.coercibleObject), v.coercibleObject],
[String(Number(v.coercibleObject)), v.coercibleObject]
];
forEach(pairs, function (pair) {
var a = pair[0];
var b = pair[1];
st.equal(ES['Strict Equality Comparison'](a, b), a === b, debug(a) + ' === ' + debug(b));
st.equal(ES['Strict Equality Comparison'](b, a), b === a, debug(b) + ' === ' + debug(a));
});
st.end();
});
t.end();
});
test('Abstract Relational Comparison', function (t) {
t.test('at least one operand is NaN', function (st) {
st.equal(ES['Abstract Relational Comparison'](NaN, {}, true), undefined, 'LeftFirst: first is NaN, returns undefined');
st.equal(ES['Abstract Relational Comparison']({}, NaN, true), undefined, 'LeftFirst: second is NaN, returns undefined');
st.equal(ES['Abstract Relational Comparison'](NaN, {}, false), undefined, '!LeftFirst: first is NaN, returns undefined');
st.equal(ES['Abstract Relational Comparison']({}, NaN, false), undefined, '!LeftFirst: second is NaN, returns undefined');
st.end();
});
t.equal(ES['Abstract Relational Comparison'](3, 4, true), true, 'LeftFirst: 3 is less than 4');
t.equal(ES['Abstract Relational Comparison'](4, 3, true), false, 'LeftFirst: 3 is not less than 4');
t.equal(ES['Abstract Relational Comparison'](3, 4, false), true, '!LeftFirst: 3 is less than 4');
t.equal(ES['Abstract Relational Comparison'](4, 3, false), false, '!LeftFirst: 3 is not less than 4');
t.equal(ES['Abstract Relational Comparison']('3', '4', true), true, 'LeftFirst: "3" is less than "4"');
t.equal(ES['Abstract Relational Comparison']('4', '3', true), false, 'LeftFirst: "3" is not less than "4"');
t.equal(ES['Abstract Relational Comparison']('3', '4', false), true, '!LeftFirst: "3" is less than "4"');
t.equal(ES['Abstract Relational Comparison']('4', '3', false), false, '!LeftFirst: "3" is not less than "4"');
t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, 42, true), true, 'LeftFirst: coercible object is less than 42');
t.equal(ES['Abstract Relational Comparison'](42, v.coercibleObject, true), false, 'LeftFirst: 42 is not less than coercible object');
t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, 42, false), true, '!LeftFirst: coercible object is less than 42');
t.equal(ES['Abstract Relational Comparison'](42, v.coercibleObject, false), false, '!LeftFirst: 42 is not less than coercible object');
t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, '3', true), false, 'LeftFirst: coercible object is not less than "3"');
t.equal(ES['Abstract Relational Comparison']('3', v.coercibleObject, true), false, 'LeftFirst: "3" is not less than coercible object');
t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, '3', false), false, '!LeftFirst: coercible object is not less than "3"');
t.equal(ES['Abstract Relational Comparison']('3', v.coercibleObject, false), false, '!LeftFirst: "3" is not less than coercible object');
t.end();
});
test('FromPropertyDescriptor', function (t) {
t.equal(ES.FromPropertyDescriptor(), undefined, 'no value begets undefined');
t.equal(ES.FromPropertyDescriptor(undefined), undefined, 'undefined value begets undefined');
forEach(v.nonUndefinedPrimitives, function (primitive) {
t['throws'](
function () { ES.FromPropertyDescriptor(primitive); },
TypeError,
debug(primitive) + ' is not a Property Descriptor'
);
});
var accessor = v.accessorDescriptor();
t.deepEqual(ES.FromPropertyDescriptor(accessor), {
get: accessor['[[Get]]'],
set: accessor['[[Set]]'],
enumerable: !!accessor['[[Enumerable]]'],
configurable: !!accessor['[[Configurable]]']
});
var mutator = v.mutatorDescriptor();
t.deepEqual(ES.FromPropertyDescriptor(mutator), {
get: mutator['[[Get]]'],
set: mutator['[[Set]]'],
enumerable: !!mutator['[[Enumerable]]'],
configurable: !!mutator['[[Configurable]]']
});
var data = v.dataDescriptor();
t.deepEqual(ES.FromPropertyDescriptor(data), {
value: data['[[Value]]'],
writable: data['[[Writable]]'],
enumerable: !!data['[[Enumerable]]'],
configurable: !!data['[[Configurable]]']
});
t['throws'](
function () { ES.FromPropertyDescriptor(v.genericDescriptor()); },
TypeError,
'a complete Property Descriptor is required'
);
t.end();
});
test('SecFromTime', function (t) {
var now = new Date();
t.equal(ES.SecFromTime(now.getTime()), now.getUTCSeconds(), 'second from Date timestamp matches getUTCSeconds');
t.end();
});
test('MinFromTime', function (t) {
var now = new Date();
t.equal(ES.MinFromTime(now.getTime()), now.getUTCMinutes(), 'minute from Date timestamp matches getUTCMinutes');
t.end();
});
test('HourFromTime', function (t) {
var now = new Date();
t.equal(ES.HourFromTime(now.getTime()), now.getUTCHours(), 'hour from Date timestamp matches getUTCHours');
t.end();
});
test('msFromTime', function (t) {
var now = new Date();
t.equal(ES.msFromTime(now.getTime()), now.getUTCMilliseconds(), 'ms from Date timestamp matches getUTCMilliseconds');
t.end();
});
var msPerSecond = 1e3;
var msPerMinute = 60 * msPerSecond;
var msPerHour = 60 * msPerMinute;
var msPerDay = 24 * msPerHour;
test('Day', function (t) {
var time = Date.UTC(2019, 8, 10, 2, 3, 4, 5);
var add = 2.5;
var later = new Date(time + (add * msPerDay));
t.equal(ES.Day(later.getTime()), ES.Day(time) + Math.floor(add), 'adding 2.5 days worth of ms, gives a Day delta of 2');
t.end();
});
test('TimeWithinDay', function (t) {
var time = Date.UTC(2019, 8, 10, 2, 3, 4, 5);
var add = 2.5;
var later = new Date(time + (add * msPerDay));
t.equal(ES.TimeWithinDay(later.getTime()), ES.TimeWithinDay(time) + (0.5 * msPerDay), 'adding 2.5 days worth of ms, gives a TimeWithinDay delta of +0.5');
t.end();
});
test('DayFromYear', function (t) {
t.equal(ES.DayFromYear(2021) - ES.DayFromYear(2020), 366, '2021 is a leap year, has 366 days');
t.equal(ES.DayFromYear(2020) - ES.DayFromYear(2019), 365, '2020 is not a leap year, has 365 days');
t.equal(ES.DayFromYear(2019) - ES.DayFromYear(2018), 365, '2019 is not a leap year, has 365 days');
t.equal(ES.DayFromYear(2018) - ES.DayFromYear(2017), 365, '2018 is not a leap year, has 365 days');
t.equal(ES.DayFromYear(2017) - ES.DayFromYear(2016), 366, '2017 is a leap year, has 366 days');
t.end();
});
test('TimeFromYear', function (t) {
for (var i = 1900; i < 2100; i += 1) {
t.equal(ES.TimeFromYear(i), Date.UTC(i, 0, 1), 'TimeFromYear matches a Date objects year: ' + i);
}
t.end();
});
test('YearFromTime', function (t) {
for (var i = 1900; i < 2100; i += 1) {
t.equal(ES.YearFromTime(Date.UTC(i, 0, 1)), i, 'YearFromTime matches a Date objects year on 1/1: ' + i);
t.equal(ES.YearFromTime(Date.UTC(i, 10, 1)), i, 'YearFromTime matches a Date objects year on 10/1: ' + i);
}
t.end();
});
test('WeekDay', function (t) {
var now = new Date();
var today = now.getUTCDay();
for (var i = 0; i < 7; i += 1) {
var weekDay = ES.WeekDay(now.getTime() + (i * msPerDay));
t.equal(weekDay, (today + i) % 7, i + ' days after today (' + today + '), WeekDay is ' + weekDay);
}
t.end();
});
test('DaysInYear', function (t) {
t.equal(ES.DaysInYear(2021), 365, '2021 is not a leap year');
t.equal(ES.DaysInYear(2020), 366, '2020 is a leap year');
t.equal(ES.DaysInYear(2019), 365, '2019 is not a leap year');
t.equal(ES.DaysInYear(2018), 365, '2018 is not a leap year');
t.equal(ES.DaysInYear(2017), 365, '2017 is not a leap year');
t.equal(ES.DaysInYear(2016), 366, '2016 is a leap year');
t.end();
});
test('InLeapYear', function (t) {
t.equal(ES.InLeapYear(Date.UTC(2021, 0, 1)), 0, '2021 is not a leap year');
t.equal(ES.InLeapYear(Date.UTC(2020, 0, 1)), 1, '2020 is a leap year');
t.equal(ES.InLeapYear(Date.UTC(2019, 0, 1)), 0, '2019 is not a leap year');
t.equal(ES.InLeapYear(Date.UTC(2018, 0, 1)), 0, '2018 is not a leap year');
t.equal(ES.InLeapYear(Date.UTC(2017, 0, 1)), 0, '2017 is not a leap year');
t.equal(ES.InLeapYear(Date.UTC(2016, 0, 1)), 1, '2016 is a leap year');
t.end();
});
test('DayWithinYear', function (t) {
t.equal(ES.DayWithinYear(Date.UTC(2019, 0, 1)), 0, '1/1 is the 1st day');
t.equal(ES.DayWithinYear(Date.UTC(2019, 11, 31)), 364, '12/31 is the 365th day in a non leap year');
t.equal(ES.DayWithinYear(Date.UTC(2016, 11, 31)), 365, '12/31 is the 366th day in a leap year');
t.end();
});
test('MonthFromTime', function (t) {
t.equal(ES.MonthFromTime(Date.UTC(2019, 0, 1)), 0, 'non-leap: 1/1 gives January');
t.equal(ES.MonthFromTime(Date.UTC(2019, 0, 31)), 0, 'non-leap: 1/31 gives January');
t.equal(ES.MonthFromTime(Date.UTC(2019, 1, 1)), 1, 'non-leap: 2/1 gives February');
t.equal(ES.MonthFromTime(Date.UTC(2019, 1, 28)), 1, 'non-leap: 2/28 gives February');
t.equal(ES.MonthFromTime(Date.UTC(2019, 1, 29)), 2, 'non-leap: 2/29 gives March');
t.equal(ES.MonthFromTime(Date.UTC(2019, 2, 1)), 2, 'non-leap: 3/1 gives March');
t.equal(ES.MonthFromTime(Date.UTC(2019, 2, 31)), 2, 'non-leap: 3/31 gives March');
t.equal(ES.MonthFromTime(Date.UTC(2019, 3, 1)), 3, 'non-leap: 4/1 gives April');
t.equal(ES.MonthFromTime(Date.UTC(2019, 3, 30)), 3, 'non-leap: 4/30 gives April');
t.equal(ES.MonthFromTime(Date.UTC(2019, 4, 1)), 4, 'non-leap: 5/1 gives May');
t.equal(ES.MonthFromTime(Date.UTC(2019, 4, 31)), 4, 'non-leap: 5/31 gives May');
t.equal(ES.MonthFromTime(Date.UTC(2019, 5, 1)), 5, 'non-leap: 6/1 gives June');
t.equal(ES.MonthFromTime(Date.UTC(2019, 5, 30)), 5, 'non-leap: 6/30 gives June');
t.equal(ES.MonthFromTime(Date.UTC(2019, 6, 1)), 6, 'non-leap: 7/1 gives July');
t.equal(ES.MonthFromTime(Date.UTC(2019, 6, 31)), 6, 'non-leap: 7/31 gives July');
t.equal(ES.MonthFromTime(Date.UTC(2019, 7, 1)), 7, 'non-leap: 8/1 gives August');
t.equal(ES.MonthFromTime(Date.UTC(2019, 7, 30)), 7, 'non-leap: 8/30 gives August');
t.equal(ES.MonthFromTime(Date.UTC(2019, 8, 1)), 8, 'non-leap: 9/1 gives September');
t.equal(ES.MonthFromTime(Date.UTC(2019, 8, 30)), 8, 'non-leap: 9/30 gives September');
t.equal(ES.MonthFromTime(Date.UTC(2019, 9, 1)), 9, 'non-leap: 10/1 gives October');
t.equal(ES.MonthFromTime(Date.UTC(2019, 9, 31)), 9, 'non-leap: 10/31 gives October');
t.equal(ES.MonthFromTime(Date.UTC(2019, 10, 1)), 10, 'non-leap: 11/1 gives November');
t.equal(ES.MonthFromTime(Date.UTC(2019, 10, 30)), 10, 'non-leap: 11/30 gives November');
t.equal(ES.MonthFromTime(Date.UTC(2019, 11, 1)), 11, 'non-leap: 12/1 gives December');
t.equal(ES.MonthFromTime(Date.UTC(2019, 11, 31)), 11, 'non-leap: 12/31 gives December');
t.equal(ES.MonthFromTime(Date.UTC(2016, 0, 1)), 0, 'leap: 1/1 gives January');
t.equal(ES.MonthFromTime(Date.UTC(2016, 0, 31)), 0, 'leap: 1/31 gives January');
t.equal(ES.MonthFromTime(Date.UTC(2016, 1, 1)), 1, 'leap: 2/1 gives February');
t.equal(ES.MonthFromTime(Date.UTC(2016, 1, 28)), 1, 'leap: 2/28 gives February');
t.equal(ES.MonthFromTime(Date.UTC(2016, 1, 29)), 1, 'leap: 2/29 gives February');
t.equal(ES.MonthFromTime(Date.UTC(2016, 2, 1)), 2, 'leap: 3/1 gives March');
t.equal(ES.MonthFromTime(Date.UTC(2016, 2, 31)), 2, 'leap: 3/31 gives March');
t.equal(ES.MonthFromTime(Date.UTC(2016, 3, 1)), 3, 'leap: 4/1 gives April');
t.equal(ES.MonthFromTime(Date.UTC(2016, 3, 30)), 3, 'leap: 4/30 gives April');
t.equal(ES.MonthFromTime(Date.UTC(2016, 4, 1)), 4, 'leap: 5/1 gives May');
t.equal(ES.MonthFromTime(Date.UTC(2016, 4, 31)), 4, 'leap: 5/31 gives May');
t.equal(ES.MonthFromTime(Date.UTC(2016, 5, 1)), 5, 'leap: 6/1 gives June');
t.equal(ES.MonthFromTime(Date.UTC(2016, 5, 30)), 5, 'leap: 6/30 gives June');
t.equal(ES.MonthFromTime(Date.UTC(2016, 6, 1)), 6, 'leap: 7/1 gives July');
t.equal(ES.MonthFromTime(Date.UTC(2016, 6, 31)), 6, 'leap: 7/31 gives July');
t.equal(ES.MonthFromTime(Date.UTC(2016, 7, 1)), 7, 'leap: 8/1 gives August');
t.equal(ES.MonthFromTime(Date.UTC(2016, 7, 30)), 7, 'leap: 8/30 gives August');
t.equal(ES.MonthFromTime(Date.UTC(2016, 8, 1)), 8, 'leap: 9/1 gives September');
t.equal(ES.MonthFromTime(Date.UTC(2016, 8, 30)), 8, 'leap: 9/30 gives September');
t.equal(ES.MonthFromTime(Date.UTC(2016, 9, 1)), 9, 'leap: 10/1 gives October');
t.equal(ES.MonthFromTime(Date.UTC(2016, 9, 31)), 9, 'leap: 10/31 gives October');
t.equal(ES.MonthFromTime(Date.UTC(2016, 10, 1)), 10, 'leap: 11/1 gives November');
t.equal(ES.MonthFromTime(Date.UTC(2016, 10, 30)), 10, 'leap: 11/30 gives November');
t.equal(ES.MonthFromTime(Date.UTC(2016, 11, 1)), 11, 'leap: 12/1 gives December');
t.equal(ES.MonthFromTime(Date.UTC(2016, 11, 31)), 11, 'leap: 12/31 gives December');
t.end();
});
test('DateFromTime', function (t) {
var i;
for (i = 1; i <= 28; i += 1) {
t.equal(ES.DateFromTime(Date.UTC(2019, 1, i)), i, '2019.02.' + i + ' is date ' + i);
}
for (i = 1; i <= 29; i += 1) {
t.equal(ES.DateFromTime(Date.UTC(2016, 1, i)), i, '2016.02.' + i + ' is date ' + i);
}
for (i = 1; i <= 30; i += 1) {
t.equal(ES.DateFromTime(Date.UTC(2019, 8, i)), i, '2019.09.' + i + ' is date ' + i);
}
for (i = 1; i <= 31; i += 1) {
t.equal(ES.DateFromTime(Date.UTC(2019, 9, i)), i, '2019.10.' + i + ' is date ' + i);
}
t.end();
});
test('MakeDay', function (t) {
var day2015 = 16687;
t.equal(ES.MakeDay(2015, 8, 9), day2015, '2015.09.09 is day 16687');
var day2016 = day2015 + 366; // 2016 is a leap year
t.equal(ES.MakeDay(2016, 8, 9), day2016, '2015.09.09 is day 17053');
var day2017 = day2016 + 365;
t.equal(ES.MakeDay(2017, 8, 9), day2017, '2017.09.09 is day 17418');
var day2018 = day2017 + 365;
t.equal(ES.MakeDay(2018, 8, 9), day2018, '2018.09.09 is day 17783');
var day2019 = day2018 + 365;
t.equal(ES.MakeDay(2019, 8, 9), day2019, '2019.09.09 is day 18148');
t.end();
});
test('MakeDate', function (t) {
forEach(v.infinities.concat(NaN), function (nonFiniteNumber) {
t.ok(is(ES.MakeDate(nonFiniteNumber, 0), NaN), debug(nonFiniteNumber) + ' is not a finite `day`');
t.ok(is(ES.MakeDate(0, nonFiniteNumber), NaN), debug(nonFiniteNumber) + ' is not a finite `time`');
});
t.equal(ES.MakeDate(0, 0), 0, 'zero day and zero time is zero date');
t.equal(ES.MakeDate(0, 123), 123, 'zero day and nonzero time is a date of the "time"');
t.equal(ES.MakeDate(1, 0), msPerDay, 'day of 1 and zero time is a date of "ms per day"');
t.equal(ES.MakeDate(3, 0), 3 * msPerDay, 'day of 3 and zero time is a date of thrice "ms per day"');
t.equal(ES.MakeDate(1, 123), msPerDay + 123, 'day of 1 and nonzero time is a date of "ms per day" plus the "time"');
t.equal(ES.MakeDate(3, 123), (3 * msPerDay) + 123, 'day of 3 and nonzero time is a date of thrice "ms per day" plus the "time"');
t.end();
});
test('MakeTime', function (t) {
forEach(v.infinities.concat(NaN), function (nonFiniteNumber) {
t.ok(is(ES.MakeTime(nonFiniteNumber, 0, 0, 0), NaN), debug(nonFiniteNumber) + ' is not a finite `hour`');
t.ok(is(ES.MakeTime(0, nonFiniteNumber, 0, 0), NaN), debug(nonFiniteNumber) + ' is not a finite `min`');
t.ok(is(ES.MakeTime(0, 0, nonFiniteNumber, 0), NaN), debug(nonFiniteNumber) + ' is not a finite `sec`');
t.ok(is(ES.MakeTime(0, 0, 0, nonFiniteNumber), NaN), debug(nonFiniteNumber) + ' is not a finite `ms`');
});
t.equal(
ES.MakeTime(1.2, 2.3, 3.4, 4.5),
(1 * msPerHour) + (2 * msPerMinute) + (3 * msPerSecond) + 4,
'all numbers are converted to integer, multiplied by the right number of ms, and summed'
);
t.end();
});
test('TimeClip', function (t) {
forEach(v.infinities.concat(NaN), function (nonFiniteNumber) {
t.ok(is(ES.TimeClip(nonFiniteNumber), NaN), debug(nonFiniteNumber) + ' is not a finite `time`');
});
t.ok(is(ES.TimeClip(8.64e15 + 1), NaN), '8.64e15 is the largest magnitude considered "finite"');
t.ok(is(ES.TimeClip(-8.64e15 - 1), NaN), '-8.64e15 is the largest magnitude considered "finite"');
forEach(v.zeroes.concat([-10, 10, Date.now()]), function (time) {
t.equal(ES.TimeClip(time), time, debug(time) + ' is a time of ' + debug(time));
});
t.end();
});
test('modulo', function (t) {
t.equal(3 % 2, 1, '+3 % 2 is +1');
t.equal(ES.modulo(3, 2), 1, '+3 mod 2 is +1');
t.equal(-3 % 2, -1, '-3 % 2 is -1');
t.equal(ES.modulo(-3, 2), 1, '-3 mod 2 is +1');
t.end();
});

View File

@@ -7,54 +7,54 @@ var assertRecord = require('../../helpers/assertRecord');
var v = require('./values');
module.exports = function assertRecordTests(ES, test) {
test('Property Descriptor', function (t) {
var record = 'Property Descriptor';
test('Property Descriptor', function (t) {
var record = 'Property Descriptor';
forEach(v.nonUndefinedPrimitives, function (primitive) {
t['throws'](
function () { assertRecord(ES, record, 'arg', primitive); },
TypeError,
debug(primitive) + ' is not a Property Descriptor'
);
});
forEach(v.nonUndefinedPrimitives, function (primitive) {
t['throws'](
function () { assertRecord(ES, record, 'arg', primitive); },
TypeError,
debug(primitive) + ' is not a Property Descriptor'
);
});
t['throws'](
function () { assertRecord(ES, record, 'arg', { invalid: true }); },
TypeError,
'invalid keys not allowed on a Property Descriptor'
);
t['throws'](
function () { assertRecord(ES, record, 'arg', { invalid: true }); },
TypeError,
'invalid keys not allowed on a Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES, record, 'arg', {}); },
'empty object is an incomplete Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES, record, 'arg', {}); },
'empty object is an incomplete Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES, record, 'arg', v.accessorDescriptor()); },
'accessor descriptor is a Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES, record, 'arg', v.accessorDescriptor()); },
'accessor descriptor is a Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES, record, 'arg', v.mutatorDescriptor()); },
'mutator descriptor is a Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES, record, 'arg', v.mutatorDescriptor()); },
'mutator descriptor is a Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES, record, 'arg', v.dataDescriptor()); },
'data descriptor is a Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES, record, 'arg', v.dataDescriptor()); },
'data descriptor is a Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES, record, 'arg', v.genericDescriptor()); },
'generic descriptor is a Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES, record, 'arg', v.genericDescriptor()); },
'generic descriptor is a Property Descriptor'
);
t['throws'](
function () { assertRecord(ES, record, 'arg', v.bothDescriptor()); },
TypeError,
'a Property Descriptor can not be both a Data and an Accessor Descriptor'
);
t['throws'](
function () { assertRecord(ES, record, 'arg', v.bothDescriptor()); },
TypeError,
'a Property Descriptor can not be both a Data and an Accessor Descriptor'
);
t.end();
});
t.end();
});
};

View File

@@ -0,0 +1,50 @@
'use strict';
var test = require('tape');
var debug = require('object-inspect');
var forEach = require('foreach');
var v = require('./values');
var getSymbolDescription = require('../../helpers/getSymbolDescription');
test('getSymbolDescription', function (t) {
t.test('no symbols', { skip: v.hasSymbols }, function (st) {
st['throws'](
getSymbolDescription,
SyntaxError,
'requires Symbol support'
);
st.end();
});
forEach(v.nonSymbolPrimitives.concat(v.objects), function (nonSymbol) {
t['throws'](
function () { getSymbolDescription(nonSymbol); },
TypeError,
debug(nonSymbol) + ' is not a Symbol'
);
});
t.test('with symbols', { skip: !v.hasSymbols }, function (st) {
forEach(
[
[Symbol(), undefined],
[Symbol(undefined), undefined],
[Symbol(null), 'null'],
[Symbol(''), ''],
[Symbol.iterator, 'Symbol.iterator'],
[Symbol('foo'), 'foo']
],
function (pair) {
var sym = pair[0];
var desc = pair[1];
st.equal(getSymbolDescription(sym), desc, debug(sym) + ' yields ' + debug(desc));
}
);
st.end();
});
t.end();
});

View File

@@ -1,15 +1,27 @@
'use strict';
var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';
var assign = require('../../helpers/assign');
var hasSymbols = require('has-symbols')();
var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } };
var coercibleFnObject = {
valueOf: function () { return function valueOfFn() {}; },
toString: function () { return 42; }
};
var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } };
var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } };
var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } };
var objects = [{}, coercibleObject, toStringOnlyObject, valueOfOnlyObject];
var uncoercibleFnObject = {
valueOf: function () { return function valueOfFn() {}; },
toString: function () { return function toStrFn() {}; }
};
var objects = [{}, coercibleObject, coercibleFnObject, toStringOnlyObject, valueOfOnlyObject];
var nullPrimitives = [undefined, null];
var nonIntegerNumbers = [-1.3, 0.2, 1.8, 1 / 3];
var numbers = [0, -0, Infinity, -Infinity, 42].concat(nonIntegerNumbers);
var zeroes = [0, -0];
var infinities = [Infinity, -Infinity];
var numbers = zeroes.concat([42], infinities, nonIntegerNumbers);
var strings = ['', 'foo', 'a\uD83D\uDCA9c'];
var booleans = [true, false];
var symbols = hasSymbols ? [Symbol.iterator, Symbol('foo')] : [];
@@ -25,15 +37,44 @@ var nonBooleans = [].concat(nullPrimitives, strings, symbols, numbers, objects);
var falsies = [].concat(nullPrimitives, false, '', 0, -0, NaN);
var truthies = [].concat(true, 'foo', 42, symbols, objects);
var timestamps = [].concat(0, 946713600000, 1546329600000);
var nonFunctions = [].concat(primitives, objects, [42]);
var nonArrays = [].concat(nonFunctions);
var descriptors = {
configurable: function (descriptor) {
return assign(assign({}, descriptor), { '[[Configurable]]': true });
},
nonConfigurable: function (descriptor) {
return assign(assign({}, descriptor), { '[[Configurable]]': false });
},
enumerable: function (descriptor) {
return assign(assign({}, descriptor), { '[[Enumerable]]': true });
},
nonEnumerable: function (descriptor) {
return assign(assign({}, descriptor), { '[[Enumerable]]': false });
},
writable: function (descriptor) {
return assign(assign({}, descriptor), { '[[Writable]]': true });
},
nonWritable: function (descriptor) {
return assign(assign({}, descriptor), { '[[Writable]]': false });
}
};
module.exports = {
coercibleObject: coercibleObject,
coercibleFnObject: coercibleFnObject,
valueOfOnlyObject: valueOfOnlyObject,
toStringOnlyObject: toStringOnlyObject,
uncoercibleObject: uncoercibleObject,
uncoercibleFnObject: uncoercibleFnObject,
objects: objects,
nonFunctions: nonFunctions,
nonArrays: nonArrays,
nullPrimitives: nullPrimitives,
numbers: numbers,
zeroes: zeroes,
infinities: infinities,
strings: strings,
booleans: booleans,
symbols: symbols,
@@ -55,30 +96,26 @@ module.exports = {
bothDescriptor: function () {
return { '[[Get]]': function () {}, '[[Value]]': true };
},
accessorDescriptor: function () {
return {
'[[Get]]': function () {},
'[[Enumerable]]': true,
'[[Configurable]]': true
};
bothDescriptorWritable: function () {
return descriptors.writable({ '[[Get]]': function () {} });
},
accessorDescriptor: function (value) {
return descriptors.enumerable(descriptors.configurable({
'[[Get]]': function get() { return value; }
}));
},
mutatorDescriptor: function () {
return {
'[[Set]]': function () {},
'[[Enumerable]]': true,
'[[Configurable]]': true
};
return descriptors.enumerable(descriptors.configurable({
'[[Set]]': function () {}
}));
},
dataDescriptor: function () {
return {
'[[Value]]': 42,
'[[Writable]]': false
};
dataDescriptor: function (value) {
return descriptors.nonWritable({
'[[Value]]': arguments.length > 0 ? value : 42
});
},
genericDescriptor: function () {
return {
'[[Configurable]]': true,
'[[Enumerable]]': false
};
}
return descriptors.configurable(descriptors.nonEnumerable());
},
descriptors: descriptors
};

View File

@@ -7,7 +7,7 @@ var ESkeys = Object.keys(ES).sort();
var ES6keys = Object.keys(ES.ES6).sort();
test('exposed properties', function (t) {
t.deepEqual(ESkeys, ES6keys.concat(['ES2018', 'ES2017', 'ES7', 'ES2016', 'ES6', 'ES2015', 'ES5']).sort(), 'main ES object keys match ES6 keys');
t.deepEqual(ESkeys, ES6keys.concat(['ES2019', 'ES2018', 'ES2017', 'ES7', 'ES2016', 'ES6', 'ES2015', 'ES5']).sort(), 'main ES object keys match ES6 keys');
t.end();
});
@@ -27,3 +27,4 @@ require('./es7');
require('./es2016');
require('./es2017');
require('./es2018');
require('./es2019');

2063
node_modules/es-abstract/test/tests.js generated vendored

File diff suppressed because it is too large Load Diff