Regenerating node_modules

This commit is contained in:
Chris Raynor 2020-09-14 10:42:37 +01:00
parent 09b4a82c83
commit c96f84308a
No known key found for this signature in database
GPG key ID: 579A1FBC36FDA261
5488 changed files with 487362 additions and 60779 deletions

20
node_modules/object.assign/.editorconfig generated vendored Normal file
View file

@ -0,0 +1,20 @@
root = true
[*]
indent_style = tab
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 150
[CHANGELOG.md]
indent_style = space
indent_size = 2
[*.json]
max_line_length = off
[Makefile]
max_line_length = off

1
node_modules/object.assign/.eslintignore generated vendored Normal file
View file

@ -0,0 +1 @@
dist/

26
node_modules/object.assign/.eslintrc generated vendored Normal file
View file

@ -0,0 +1,26 @@
{
"root": true,
"extends": "@ljharb",
"rules": {
"complexity": [2, 19],
"id-length": [2, { "min": 1, "max": 30 }],
"max-statements": [2, 33],
"max-statements-per-line": [2, { "max": 2 }],
"no-magic-numbers": [1, { "ignore": [0] }],
"no-restricted-syntax": [2, "BreakStatement", "ContinueStatement", "DebuggerStatement", "LabeledStatement", "WithStatement"],
},
"overrides": [
{
"files": "test/**",
"rules": {
"no-invalid-this": 1,
"max-lines-per-function": 0,
"max-statements-per-line": [2, { "max": 3 }],
"no-magic-numbers": 0,
},
},
],
}

12
node_modules/object.assign/.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/object.assign
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 up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

View file

@ -0,0 +1,15 @@
name: Automatic Rebase
on: [pull_request_target]
jobs:
_:
name: "Automatic Rebase"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: ljharb/rebase@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -0,0 +1,14 @@
name: Require “Allow Edits”
on: [pull_request_target]
jobs:
_:
name: "Require “Allow Edits”"
runs-on: ubuntu-latest
steps:
- uses: ljharb/require-allow-edits@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

194
node_modules/object.assign/CHANGELOG.md generated vendored Normal file
View file

@ -0,0 +1,194 @@
4.1.1 / 2020-09-11
==================
* [Fix] avoid mutating `Object.assign` in modern engines
* [Refactor] use `callBind` from `es-abstract` instead of `function-bind`
* [Deps] update `has-symbols`, `object-keys`, `define-properties`
* [meta] add `funding` field, FUNDING.yml
* [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`, `browserify`, `covert`, `for-each`, `is`, `tape`, `functions-have-names`; add `aud`, `safe-publish-latest`; remove `jscs`
* [actions] add Require Allow Edits workflow
* [actions] add automatic rebasing / merge commit blocking
* [Tests] ses-compat - add test to ensure package initializes correctly after ses lockdown (#77)
* [Tests] Add passing test for a source of `window.location` (#68)
* [Tests] use shared travis-ci config
* [Tests] use `npx aud` instead of `npm audit` with hoops or `nsp`
* [Tests] use `functions-have-names`
4.1.0 / 2017-12-21
==================
* [New] add `auto` entry point (#52)
* [Refactor] Use `has-symbols` module
* [Deps] update `function-bind`, `object-keys`
* [Dev Deps] update `@es-shims/api`, `browserify`, `nsp`, `eslint`, `@ljharb/eslint-config`, `is`
* [Tests] up to `node` `v9.3`, `v8.9`, `v6.12`; use `nvm install-latest-npm`; pin included builds to LTS
4.0.4 / 2016-07-04
==================
* [Fix] Cache original `getOwnPropertySymbols`, and use that when `Object.getOwnPropertySymbols` is unavailable
* [Deps] update `object-keys`
* [Dev Deps] update `eslint`, `get-own-property-symbols`, `core-js`, `jscs`, `nsp`, `browserify`, `@ljharb/eslint-config`, `tape`, `@es-shims/api`
* [Tests] up to `node` `v6.2`, `v5.10`, `v4.4`
* [Tests] run sham tests on node 0.10
* [Tests] use pretest/posttest for linting/security
4.0.3 / 2015-10-21
==================
* [Fix] Support core-js's Symbol sham (#17)
* [Fix] Ensure that properties removed or made non-enumerable during enumeration are not assigned (#16)
* [Fix] Avoid looking up keys and values more than once
* [Tests] Avoid using `reduce` so `npm run test:shams:corejs` passes in `node` `v0.8` ([core-js#122](https://github.com/zloirock/core-js/issues/122))
* [Tests] Refactor to use my conventional structure that separates shimmed, implementation, and common tests
* [Tests] Create `npm run test:shams` and better organize tests for symbol shams
* [Tests] Remove `nsp` in favor of `requiresafe`
4.0.2 / 2015-10-20
==================
* [Fix] Ensure correct property enumeration order, particularly in v8 (#15)
* [Deps] update `object-keys`, `define-properties`
* [Dev Deps] update `browserify`, `is`, `tape`, `jscs`, `eslint`, `@ljharb/eslint-config`
* [Tests] up to `io.js` `v3.3`, `node` `v4.2`
4.0.1 / 2015-08-16
==================
* [Docs] Add `Symbol` note to readme
4.0.0 / 2015-08-15
==================
* [Breaking] Implement the [es-shim API](es-shims/api).
* [Robustness] Make implementation robust against later modification of environment methods.
* [Refactor] Move implementation to `implementation.js`
* [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG
* [Deps] update `object-keys`, `define-properties`
* [Dev Deps] update `browserify`, `tape`, `eslint`, `jscs`, `browserify`
* [Tests] Add `npm run tests-only`
* [Tests] use my personal shared `eslint` config.
* [Tests] up to `io.js` `v3.0`
3.0.1 / 2015-06-28
==================
* Cache `Object` and `Array#push` to make the shim more robust.
* [Fix] Remove use of `Array#filter`, which isn't in ES3.
* [Deps] Update `object-keys`, `define-properties`
* [Dev Deps] Update `get-own-property-symbols`, `browserify`, `eslint`, `nsp`
* [Tests] Test up to `io.js` `v2.3`
* [Tests] Adding `Object.assign` tests for non-object targets, per https://github.com/paulmillr/es6-shim/issues/348
3.0.0 / 2015-05-20
==================
* Attempt to feature-detect Symbols, even if `typeof Symbol() !== 'symbol'` (#12)
* Make a separate `hasSymbols` internal module
* Update `browserify`, `eslint`
2.0.3 / 2015-06-28
==================
* Cache `Object` and `Array#push` to make the shim more robust.
* [Fix] Remove use of `Array#filter`, which isn't in ES3
* [Deps] Update `object-keys`, `define-properties`
* [Dev Deps] Update `browserify`, `nsp`, `eslint`
* [Tests] Test up to `io.js` `v2.3`
2.0.2 / 2015-05-20
==================
* Make sure `.shim` is non-enumerable.
* Refactor `.shim` implementation to use `define-properties` predicates, rather than `delete`ing the original.
* Update docs to match spec/implementation. (#11)
* Add `npm run eslint`
* Test up to `io.js` `v2.0`
* Update `jscs`, `browserify`, `covert`
2.0.1 / 2015-04-12
==================
* Make sure non-enumerable Symbols are excluded.
2.0.0 / 2015-04-12
==================
* Make sure the shim function overwrites a broken implementation with pending exceptions.
* Ensure shim is not enumerable using `define-properties`
* Ensure `Object.assign` includes symbols.
* All grade A-supported `node`/`iojs` versions now ship with an `npm` that understands `^`.
* Run `travis-ci` tests on `iojs` and `node` v0.12; speed up builds; allow 0.8 failures.
* Add `npm run security` via `nsp`
* Update `browserify`, `jscs`, `tape`, `object-keys`, `is`
1.1.1 / 2014-12-14
==================
* Actually include the browser build in `npm`
1.1.0 / 2014-12-14
==================
* Add `npm run build`, and build an automatic-shimming browser distribution as part of the npm publish process.
* Update `is`, `jscs`
1.0.3 / 2014-11-29
==================
* Revert "optimize --production installs"
1.0.2 / 2014-11-27
==================
* Update `jscs`, `is`, `object-keys`, `tape`
* Add badges to README
* Name URLs in README
* Lock `covert` to `v1.0.0`
* Optimize --production installs
1.0.1 / 2014-08-26
==================
* Update `is`, `covert`
1.0.0 / 2014-08-07
==================
* Update `object-keys`, `tape`
0.5.0 / 2014-07-31
==================
* Object.assign no longer throws on null or undefined sources, per https://bugs.ecmascript.org/show_bug.cgi?id=3096
0.4.3 / 2014-07-30
==================
* Dont modify vars in the function signature, since it deoptimizes v8
0.4.2 / 2014-07-30
==================
* Fixing the version number: v0.4.2
0.4.1 / 2014-07-19
==================
* Revert "Use the native Object.keys if its available."
0.4.0 / 2014-07-19
==================
* Use the native Object.keys if its available.
* Fixes [#2](https://github.com/ljharb/object.assign/issues/2).
* Adding failing tests for [#2](https://github.com/ljharb/object.assign/issues/2).
* Fix indentation.
* Adding `npm run lint`
* Update `tape`, `covert`
* README: Use SVG badge for Travis [#1](https://github.com/ljharb/object.assign/issues/1) from mathiasbynens/patch-1
0.3.1 / 2014-04-10
==================
* Object.assign does partially modify objects if it throws, per https://twitter.com/awbjs/status/454320863093862400
0.3.0 / 2014-04-10
==================
* Update with newest ES6 behavior - Object.assign now takes a variable number of source objects.
* Update `tape`
* Make sure old and unstable nodes dont fail Travis
0.2.1 / 2014-03-16
==================
* Let object-keys handle the fallback
* Update dependency badges
* Adding bower.json
0.2.0 / 2014-03-16
==================
* Use a for loop, because ES3 browsers dont have "reduce"
0.1.1 / 2014-03-14
==================
* Updating readme
0.1.0 / 2014-03-14
==================
* Initial release.

21
node_modules/object.assign/LICENSE generated vendored Normal file
View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014 Jordan Harband
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

135
node_modules/object.assign/README.md generated vendored Normal file
View file

@ -0,0 +1,135 @@
#object.assign <sup>[![Version Badge][npm-version-svg]][npm-url]</sup>
[![Build Status][travis-svg]][travis-url]
[![dependency status][deps-svg]][deps-url]
[![dev dependency status][dev-deps-svg]][dev-deps-url]
[![License][license-image]][license-url]
[![Downloads][downloads-image]][downloads-url]
[![npm badge][npm-badge-png]][npm-url]
[![browser support][testling-png]][testling-url]
An Object.assign shim. Invoke its "shim" method to shim Object.assign if it is unavailable.
This package implements the [es-shim API](https://github.com/es-shims/api) interface. It works in an ES3-supported environment and complies with the [spec](http://www.ecma-international.org/ecma-262/6.0/#sec-object.assign). In an ES6 environment, it will also work properly with `Symbol`s.
Takes a minimum of 2 arguments: `target` and `source`.
Takes a variable sized list of source arguments - at least 1, as many as you want.
Throws a TypeError if the `target` argument is `null` or `undefined`.
Most common usage:
```js
var assign = require('object.assign').getPolyfill(); // returns native method if compliant
/* or */
var assign = require('object.assign/polyfill')(); // returns native method if compliant
```
## Example
```js
var assert = require('assert');
// Multiple sources!
var target = { a: true };
var source1 = { b: true };
var source2 = { c: true };
var sourceN = { n: true };
var expected = {
a: true,
b: true,
c: true,
n: true
};
assign(target, source1, source2, sourceN);
assert.deepEqual(target, expected); // AWESOME!
```
```js
var target = {
a: true,
b: true,
c: true
};
var source1 = {
c: false,
d: false
};
var sourceN = {
e: false
};
var assigned = assign(target, source1, sourceN);
assert.equal(target, assigned); // returns the target object
assert.deepEqual(assigned, {
a: true,
b: true,
c: false,
d: false,
e: false
});
```
```js
/* when Object.assign is not present */
delete Object.assign;
var shimmedAssign = require('object.assign').shim();
/* or */
var shimmedAssign = require('object.assign/shim')();
assert.equal(shimmedAssign, assign);
var target = {
a: true,
b: true,
c: true
};
var source = {
c: false,
d: false,
e: false
};
var assigned = assign(target, source);
assert.deepEqual(Object.assign(target, source), assign(target, source));
```
```js
/* when Object.assign is present */
var shimmedAssign = require('object.assign').shim();
assert.equal(shimmedAssign, Object.assign);
var target = {
a: true,
b: true,
c: true
};
var source = {
c: false,
d: false,
e: false
};
assert.deepEqual(Object.assign(target, source), assign(target, source));
```
## Tests
Simply clone the repo, `npm install`, and run `npm test`
[npm-url]: https://npmjs.org/package/object.assign
[npm-version-svg]: http://versionbadg.es/ljharb/object.assign.svg
[travis-svg]: https://travis-ci.org/ljharb/object.assign.svg
[travis-url]: https://travis-ci.org/ljharb/object.assign
[deps-svg]: https://david-dm.org/ljharb/object.assign.svg?theme=shields.io
[deps-url]: https://david-dm.org/ljharb/object.assign
[dev-deps-svg]: https://david-dm.org/ljharb/object.assign/dev-status.svg?theme=shields.io
[dev-deps-url]: https://david-dm.org/ljharb/object.assign#info=devDependencies
[testling-png]: https://ci.testling.com/ljharb/object.assign.png
[testling-url]: https://ci.testling.com/ljharb/object.assign
[npm-badge-png]: https://nodei.co/npm/object.assign.png?downloads=true&stars=true
[license-image]: http://img.shields.io/npm/l/object.assign.svg
[license-url]: LICENSE
[downloads-image]: http://img.shields.io/npm/dm/object.assign.svg
[downloads-url]: http://npm-stat.com/charts.html?package=object.assign

3
node_modules/object.assign/auto.js generated vendored Normal file
View file

@ -0,0 +1,3 @@
'use strict';
require('./shim')();

840
node_modules/object.assign/dist/browser.js generated vendored Normal file
View file

@ -0,0 +1,840 @@
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
'use strict';
var keys = require('object-keys').shim();
delete keys.shim;
var assign = require('./');
module.exports = assign.shim();
delete assign.shim;
},{"./":3,"object-keys":16}],2:[function(require,module,exports){
'use strict';
// modified from https://github.com/es-shims/es6-shim
var keys = require('object-keys');
var canBeObject = function (obj) {
return typeof obj !== 'undefined' && obj !== null;
};
var hasSymbols = require('has-symbols/shams')();
var callBound = require('es-abstract/helpers/callBound');
var toObject = Object;
var $push = callBound('Array.prototype.push');
var $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');
var originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;
// eslint-disable-next-line no-unused-vars
module.exports = function assign(target, source1) {
if (!canBeObject(target)) { throw new TypeError('target must be an object'); }
var objTarget = toObject(target);
var s, source, i, props, syms, value, key;
for (s = 1; s < arguments.length; ++s) {
source = toObject(arguments[s]);
props = keys(source);
var getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);
if (getSymbols) {
syms = getSymbols(source);
for (i = 0; i < syms.length; ++i) {
key = syms[i];
if ($propIsEnumerable(source, key)) {
$push(props, key);
}
}
}
for (i = 0; i < props.length; ++i) {
key = props[i];
value = source[key];
if ($propIsEnumerable(source, key)) {
objTarget[key] = value;
}
}
}
return objTarget;
};
},{"es-abstract/helpers/callBound":7,"has-symbols/shams":11,"object-keys":16}],3:[function(require,module,exports){
'use strict';
var defineProperties = require('define-properties');
var callBind = require('es-abstract/helpers/callBind');
var implementation = require('./implementation');
var getPolyfill = require('./polyfill');
var shim = require('./shim');
var polyfill = callBind.apply(getPolyfill());
// eslint-disable-next-line no-unused-vars
var bound = function assign(target, source1) {
return polyfill(Object, arguments);
};
defineProperties(bound, {
getPolyfill: getPolyfill,
implementation: implementation,
shim: shim
});
module.exports = bound;
},{"./implementation":2,"./polyfill":18,"./shim":19,"define-properties":4,"es-abstract/helpers/callBind":6}],4:[function(require,module,exports){
'use strict';
var keys = require('object-keys');
var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
var toStr = Object.prototype.toString;
var concat = Array.prototype.concat;
var origDefineProperty = Object.defineProperty;
var isFunction = function (fn) {
return typeof fn === 'function' && toStr.call(fn) === '[object Function]';
};
var arePropertyDescriptorsSupported = function () {
var obj = {};
try {
origDefineProperty(obj, 'x', { enumerable: false, value: obj });
// eslint-disable-next-line no-unused-vars, no-restricted-syntax
for (var _ in obj) { // jscs:ignore disallowUnusedVariables
return false;
}
return obj.x === obj;
} catch (e) { /* this is IE 8. */
return false;
}
};
var supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();
var defineProperty = function (object, name, value, predicate) {
if (name in object && (!isFunction(predicate) || !predicate())) {
return;
}
if (supportsDescriptors) {
origDefineProperty(object, name, {
configurable: true,
enumerable: false,
value: value,
writable: true
});
} else {
object[name] = value;
}
};
var defineProperties = function (object, map) {
var predicates = arguments.length > 2 ? arguments[2] : {};
var props = keys(map);
if (hasSymbols) {
props = concat.call(props, Object.getOwnPropertySymbols(map));
}
for (var i = 0; i < props.length; i += 1) {
defineProperty(object, props[i], map[props[i]], predicates[props[i]]);
}
};
defineProperties.supportsDescriptors = !!supportsDescriptors;
module.exports = defineProperties;
},{"object-keys":16}],5:[function(require,module,exports){
'use strict';
/* globals
AggregateError,
Atomics,
FinalizationRegistry,
SharedArrayBuffer,
WeakRef,
*/
var undefined;
var $SyntaxError = SyntaxError;
var $Function = Function;
var $TypeError = TypeError;
// eslint-disable-next-line consistent-return
var getEvalledConstructor = function (expressionSyntax) {
try {
// eslint-disable-next-line no-new-func
return Function('"use strict"; return (' + expressionSyntax + ').constructor;')();
} catch (e) {}
};
var $gOPD = Object.getOwnPropertyDescriptor;
if ($gOPD) {
try {
$gOPD({}, '');
} catch (e) {
$gOPD = null; // this is IE 8, which has a broken gOPD
}
}
var throwTypeError = function () { throw new $TypeError(); };
var ThrowTypeError = $gOPD
? (function () {
try {
// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties
arguments.callee; // IE 8 does not throw here
return throwTypeError;
} catch (calleeThrows) {
try {
// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')
return $gOPD(arguments, 'callee').get;
} catch (gOPDthrows) {
return throwTypeError;
}
}
}())
: throwTypeError;
var hasSymbols = require('has-symbols')();
var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto
var asyncGenFunction = getEvalledConstructor('async function* () {}');
var asyncGenFunctionPrototype = asyncGenFunction ? asyncGenFunction.prototype : undefined;
var asyncGenPrototype = asyncGenFunctionPrototype ? asyncGenFunctionPrototype.prototype : undefined;
var TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);
var INTRINSICS = {
'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,
'%Array%': Array,
'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,
'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,
'%AsyncFromSyncIteratorPrototype%': undefined,
'%AsyncFunction%': getEvalledConstructor('async function () {}'),
'%AsyncGenerator%': asyncGenFunctionPrototype,
'%AsyncGeneratorFunction%': asyncGenFunction,
'%AsyncIteratorPrototype%': asyncGenPrototype ? getProto(asyncGenPrototype) : undefined,
'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,
'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,
'%Boolean%': Boolean,
'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,
'%Date%': Date,
'%decodeURI%': decodeURI,
'%decodeURIComponent%': decodeURIComponent,
'%encodeURI%': encodeURI,
'%encodeURIComponent%': encodeURIComponent,
'%Error%': Error,
'%eval%': eval, // eslint-disable-line no-eval
'%EvalError%': EvalError,
'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,
'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,
'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,
'%Function%': $Function,
'%GeneratorFunction%': getEvalledConstructor('function* () {}'),
'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,
'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,
'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,
'%isFinite%': isFinite,
'%isNaN%': isNaN,
'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,
'%JSON%': typeof JSON === 'object' ? JSON : undefined,
'%Map%': typeof Map === 'undefined' ? undefined : Map,
'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),
'%Math%': Math,
'%Number%': Number,
'%Object%': Object,
'%parseFloat%': parseFloat,
'%parseInt%': parseInt,
'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,
'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,
'%RangeError%': RangeError,
'%ReferenceError%': ReferenceError,
'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,
'%RegExp%': RegExp,
'%Set%': typeof Set === 'undefined' ? undefined : Set,
'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),
'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,
'%String%': String,
'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,
'%Symbol%': hasSymbols ? Symbol : undefined,
'%SyntaxError%': $SyntaxError,
'%ThrowTypeError%': ThrowTypeError,
'%TypedArray%': TypedArray,
'%TypeError%': $TypeError,
'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,
'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,
'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,
'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,
'%URIError%': URIError,
'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,
'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,
'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet
};
var LEGACY_ALIASES = {
'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],
'%ArrayPrototype%': ['Array', 'prototype'],
'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],
'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],
'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],
'%ArrayProto_values%': ['Array', 'prototype', 'values'],
'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],
'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],
'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],
'%BooleanPrototype%': ['Boolean', 'prototype'],
'%DataViewPrototype%': ['DataView', 'prototype'],
'%DatePrototype%': ['Date', 'prototype'],
'%ErrorPrototype%': ['Error', 'prototype'],
'%EvalErrorPrototype%': ['EvalError', 'prototype'],
'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],
'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],
'%FunctionPrototype%': ['Function', 'prototype'],
'%Generator%': ['GeneratorFunction', 'prototype'],
'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],
'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],
'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],
'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],
'%JSONParse%': ['JSON', 'parse'],
'%JSONStringify%': ['JSON', 'stringify'],
'%MapPrototype%': ['Map', 'prototype'],
'%NumberPrototype%': ['Number', 'prototype'],
'%ObjectPrototype%': ['Object', 'prototype'],
'%ObjProto_toString%': ['Object', 'prototype', 'toString'],
'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],
'%PromisePrototype%': ['Promise', 'prototype'],
'%PromiseProto_then%': ['Promise', 'prototype', 'then'],
'%Promise_all%': ['Promise', 'all'],
'%Promise_reject%': ['Promise', 'reject'],
'%Promise_resolve%': ['Promise', 'resolve'],
'%RangeErrorPrototype%': ['RangeError', 'prototype'],
'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],
'%RegExpPrototype%': ['RegExp', 'prototype'],
'%SetPrototype%': ['Set', 'prototype'],
'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],
'%StringPrototype%': ['String', 'prototype'],
'%SymbolPrototype%': ['Symbol', 'prototype'],
'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],
'%TypedArrayPrototype%': ['TypedArray', 'prototype'],
'%TypeErrorPrototype%': ['TypeError', 'prototype'],
'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],
'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],
'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],
'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],
'%URIErrorPrototype%': ['URIError', 'prototype'],
'%WeakMapPrototype%': ['WeakMap', 'prototype'],
'%WeakSetPrototype%': ['WeakSet', 'prototype']
};
var bind = require('function-bind');
var hasOwn = require('has');
var $concat = bind.call(Function.call, Array.prototype.concat);
var $spliceApply = bind.call(Function.apply, Array.prototype.splice);
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 intrinsicName = name;
var alias;
if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
alias = LEGACY_ALIASES[intrinsicName];
intrinsicName = '%' + alias[0] + '%';
}
if (hasOwn(INTRINSICS, intrinsicName)) {
var value = INTRINSICS[intrinsicName];
if (typeof value === 'undefined' && !allowMissing) {
throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');
}
return {
alias: alias,
name: intrinsicName,
value: value
};
}
throw new $SyntaxError('intrinsic ' + name + ' does not exist!');
};
module.exports = function GetIntrinsic(name, allowMissing) {
if (typeof name !== 'string' || name.length === 0) {
throw new $TypeError('intrinsic name must be a non-empty string');
}
if (arguments.length > 1 && typeof allowMissing !== 'boolean') {
throw new $TypeError('"allowMissing" argument must be a boolean');
}
var parts = stringToPath(name);
var intrinsicBaseName = parts.length > 0 ? parts[0] : '';
var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);
var intrinsicRealName = intrinsic.name;
var value = intrinsic.value;
var skipFurtherCaching = false;
var alias = intrinsic.alias;
if (alias) {
intrinsicBaseName = alias[0];
$spliceApply(parts, $concat([0, 1], alias));
}
for (var i = 1, isOwn = true; i < parts.length; i += 1) {
var part = parts[i];
if (part === 'constructor' || !isOwn) {
skipFurtherCaching = true;
}
intrinsicBaseName += '.' + part;
intrinsicRealName = '%' + intrinsicBaseName + '%';
if (hasOwn(INTRINSICS, intrinsicRealName)) {
value = INTRINSICS[intrinsicRealName];
} else if (value != null) {
if ($gOPD && (i + 1) >= parts.length) {
var desc = $gOPD(value, part);
isOwn = !!desc;
if (!allowMissing && !(part in value)) {
throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');
}
value = isOwn ? desc.get || desc.value : value[part];
} else {
isOwn = hasOwn(value, part);
value = value[part];
}
if (isOwn && !skipFurtherCaching) {
INTRINSICS[intrinsicRealName] = value;
}
}
}
return value;
};
},{"function-bind":9,"has":14,"has-symbols":10}],6:[function(require,module,exports){
'use strict';
var bind = require('function-bind');
var GetIntrinsic = require('../GetIntrinsic');
var $apply = GetIntrinsic('%Function.prototype.apply%');
var $call = GetIntrinsic('%Function.prototype.call%');
var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);
module.exports = function callBind() {
return $reflectApply(bind, $call, arguments);
};
module.exports.apply = function applyBind() {
return $reflectApply(bind, $apply, arguments);
};
},{"../GetIntrinsic":5,"function-bind":9}],7:[function(require,module,exports){
'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;
};
},{"../GetIntrinsic":5,"./callBind":6}],8:[function(require,module,exports){
'use strict';
/* eslint no-invalid-this: 1 */
var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';
var slice = Array.prototype.slice;
var toStr = Object.prototype.toString;
var funcType = '[object Function]';
module.exports = function bind(that) {
var target = this;
if (typeof target !== 'function' || toStr.call(target) !== funcType) {
throw new TypeError(ERROR_MESSAGE + target);
}
var args = slice.call(arguments, 1);
var bound;
var binder = function () {
if (this instanceof bound) {
var result = target.apply(
this,
args.concat(slice.call(arguments))
);
if (Object(result) === result) {
return result;
}
return this;
} else {
return target.apply(
that,
args.concat(slice.call(arguments))
);
}
};
var boundLength = Math.max(0, target.length - args.length);
var boundArgs = [];
for (var i = 0; i < boundLength; i++) {
boundArgs.push('$' + i);
}
bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);
if (target.prototype) {
var Empty = function Empty() {};
Empty.prototype = target.prototype;
bound.prototype = new Empty();
Empty.prototype = null;
}
return bound;
};
},{}],9:[function(require,module,exports){
'use strict';
var implementation = require('./implementation');
module.exports = Function.prototype.bind || implementation;
},{"./implementation":8}],10:[function(require,module,exports){
(function (global){
'use strict';
var origSymbol = global.Symbol;
var hasSymbolSham = require('./shams');
module.exports = function hasNativeSymbols() {
if (typeof origSymbol !== 'function') { return false; }
if (typeof Symbol !== 'function') { return false; }
if (typeof origSymbol('foo') !== 'symbol') { return false; }
if (typeof Symbol('bar') !== 'symbol') { return false; }
return hasSymbolSham();
};
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{"./shams":11}],11:[function(require,module,exports){
'use strict';
/* eslint complexity: [2, 18], max-statements: [2, 33] */
module.exports = function hasSymbols() {
if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }
if (typeof Symbol.iterator === 'symbol') { return true; }
var obj = {};
var sym = Symbol('test');
var symObj = Object(sym);
if (typeof sym === 'string') { return false; }
if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }
if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }
// temp disabled per https://github.com/ljharb/object.assign/issues/17
// if (sym instanceof Symbol) { return false; }
// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4
// if (!(symObj instanceof Symbol)) { return false; }
// if (typeof Symbol.prototype.toString !== 'function') { return false; }
// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }
var symVal = 42;
obj[sym] = symVal;
for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax
if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }
if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }
var syms = Object.getOwnPropertySymbols(obj);
if (syms.length !== 1 || syms[0] !== sym) { return false; }
if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }
if (typeof Object.getOwnPropertyDescriptor === 'function') {
var descriptor = Object.getOwnPropertyDescriptor(obj, sym);
if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }
}
return true;
};
},{}],12:[function(require,module,exports){
arguments[4][8][0].apply(exports,arguments)
},{"dup":8}],13:[function(require,module,exports){
arguments[4][9][0].apply(exports,arguments)
},{"./implementation":12,"dup":9}],14:[function(require,module,exports){
'use strict';
var bind = require('function-bind');
module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);
},{"function-bind":13}],15:[function(require,module,exports){
'use strict';
var keysShim;
if (!Object.keys) {
// modified from https://github.com/es-shims/es5-shim
var has = Object.prototype.hasOwnProperty;
var toStr = Object.prototype.toString;
var isArgs = require('./isArguments'); // eslint-disable-line global-require
var isEnumerable = Object.prototype.propertyIsEnumerable;
var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');
var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');
var dontEnums = [
'toString',
'toLocaleString',
'valueOf',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'constructor'
];
var equalsConstructorPrototype = function (o) {
var ctor = o.constructor;
return ctor && ctor.prototype === o;
};
var excludedKeys = {
$applicationCache: true,
$console: true,
$external: true,
$frame: true,
$frameElement: true,
$frames: true,
$innerHeight: true,
$innerWidth: true,
$onmozfullscreenchange: true,
$onmozfullscreenerror: true,
$outerHeight: true,
$outerWidth: true,
$pageXOffset: true,
$pageYOffset: true,
$parent: true,
$scrollLeft: true,
$scrollTop: true,
$scrollX: true,
$scrollY: true,
$self: true,
$webkitIndexedDB: true,
$webkitStorageInfo: true,
$window: true
};
var hasAutomationEqualityBug = (function () {
/* global window */
if (typeof window === 'undefined') { return false; }
for (var k in window) {
try {
if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {
try {
equalsConstructorPrototype(window[k]);
} catch (e) {
return true;
}
}
} catch (e) {
return true;
}
}
return false;
}());
var equalsConstructorPrototypeIfNotBuggy = function (o) {
/* global window */
if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
return equalsConstructorPrototype(o);
}
try {
return equalsConstructorPrototype(o);
} catch (e) {
return false;
}
};
keysShim = function keys(object) {
var isObject = object !== null && typeof object === 'object';
var isFunction = toStr.call(object) === '[object Function]';
var isArguments = isArgs(object);
var isString = isObject && toStr.call(object) === '[object String]';
var theKeys = [];
if (!isObject && !isFunction && !isArguments) {
throw new TypeError('Object.keys called on a non-object');
}
var skipProto = hasProtoEnumBug && isFunction;
if (isString && object.length > 0 && !has.call(object, 0)) {
for (var i = 0; i < object.length; ++i) {
theKeys.push(String(i));
}
}
if (isArguments && object.length > 0) {
for (var j = 0; j < object.length; ++j) {
theKeys.push(String(j));
}
} else {
for (var name in object) {
if (!(skipProto && name === 'prototype') && has.call(object, name)) {
theKeys.push(String(name));
}
}
}
if (hasDontEnumBug) {
var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);
for (var k = 0; k < dontEnums.length; ++k) {
if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {
theKeys.push(dontEnums[k]);
}
}
}
return theKeys;
};
}
module.exports = keysShim;
},{"./isArguments":17}],16:[function(require,module,exports){
'use strict';
var slice = Array.prototype.slice;
var isArgs = require('./isArguments');
var origKeys = Object.keys;
var keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');
var originalKeys = Object.keys;
keysShim.shim = function shimObjectKeys() {
if (Object.keys) {
var keysWorksWithArguments = (function () {
// Safari 5.0 bug
var args = Object.keys(arguments);
return args && args.length === arguments.length;
}(1, 2));
if (!keysWorksWithArguments) {
Object.keys = function keys(object) { // eslint-disable-line func-name-matching
if (isArgs(object)) {
return originalKeys(slice.call(object));
}
return originalKeys(object);
};
}
} else {
Object.keys = keysShim;
}
return Object.keys || keysShim;
};
module.exports = keysShim;
},{"./implementation":15,"./isArguments":17}],17:[function(require,module,exports){
'use strict';
var toStr = Object.prototype.toString;
module.exports = function isArguments(value) {
var str = toStr.call(value);
var isArgs = str === '[object Arguments]';
if (!isArgs) {
isArgs = str !== '[object Array]' &&
value !== null &&
typeof value === 'object' &&
typeof value.length === 'number' &&
value.length >= 0 &&
toStr.call(value.callee) === '[object Function]';
}
return isArgs;
};
},{}],18:[function(require,module,exports){
'use strict';
var implementation = require('./implementation');
var lacksProperEnumerationOrder = function () {
if (!Object.assign) {
return false;
}
/*
* v8, specifically in node 4.x, has a bug with incorrect property enumeration order
* note: this does not detect the bug unless there's 20 characters
*/
var str = 'abcdefghijklmnopqrst';
var letters = str.split('');
var map = {};
for (var i = 0; i < letters.length; ++i) {
map[letters[i]] = letters[i];
}
var obj = Object.assign({}, map);
var actual = '';
for (var k in obj) {
actual += k;
}
return str !== actual;
};
var assignHasPendingExceptions = function () {
if (!Object.assign || !Object.preventExtensions) {
return false;
}
/*
* Firefox 37 still has "pending exception" logic in its Object.assign implementation,
* which is 72% slower than our shim, and Firefox 40's native implementation.
*/
var thrower = Object.preventExtensions({ 1: 2 });
try {
Object.assign(thrower, 'xy');
} catch (e) {
return thrower[1] === 'y';
}
return false;
};
module.exports = function getPolyfill() {
if (!Object.assign) {
return implementation;
}
if (lacksProperEnumerationOrder()) {
return implementation;
}
if (assignHasPendingExceptions()) {
return implementation;
}
return Object.assign;
};
},{"./implementation":2}],19:[function(require,module,exports){
'use strict';
var define = require('define-properties');
var getPolyfill = require('./polyfill');
module.exports = function shimAssign() {
var polyfill = getPolyfill();
define(
Object,
{ assign: polyfill },
{ assign: function () { return Object.assign !== polyfill; } }
);
return polyfill;
};
},{"./polyfill":18,"define-properties":4}]},{},[1]);

43
node_modules/object.assign/hasSymbols.js generated vendored Normal file
View file

@ -0,0 +1,43 @@
'use strict';
var keys = require('object-keys');
module.exports = function hasSymbols() {
if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }
if (typeof Symbol.iterator === 'symbol') { return true; }
var obj = {};
var sym = Symbol('test');
var symObj = Object(sym);
if (typeof sym === 'string') { return false; }
if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }
if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }
/*
* temp disabled per https://github.com/ljharb/object.assign/issues/17
* if (sym instanceof Symbol) { return false; }
* temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4
* if (!(symObj instanceof Symbol)) { return false; }
*/
var symVal = 42;
obj[sym] = symVal;
for (sym in obj) { return false; } // eslint-disable-line no-unreachable-loop
if (keys(obj).length !== 0) { return false; }
if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }
if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }
var syms = Object.getOwnPropertySymbols(obj);
if (syms.length !== 1 || syms[0] !== sym) { return false; }
if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }
if (typeof Object.getOwnPropertyDescriptor === 'function') {
var descriptor = Object.getOwnPropertyDescriptor(obj, sym);
if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }
}
return true;
};

42
node_modules/object.assign/implementation.js generated vendored Normal file
View file

@ -0,0 +1,42 @@
'use strict';
// modified from https://github.com/es-shims/es6-shim
var keys = require('object-keys');
var canBeObject = function (obj) {
return typeof obj !== 'undefined' && obj !== null;
};
var hasSymbols = require('has-symbols/shams')();
var callBound = require('es-abstract/helpers/callBound');
var toObject = Object;
var $push = callBound('Array.prototype.push');
var $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');
var originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;
// eslint-disable-next-line no-unused-vars
module.exports = function assign(target, source1) {
if (!canBeObject(target)) { throw new TypeError('target must be an object'); }
var objTarget = toObject(target);
var s, source, i, props, syms, value, key;
for (s = 1; s < arguments.length; ++s) {
source = toObject(arguments[s]);
props = keys(source);
var getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);
if (getSymbols) {
syms = getSymbols(source);
for (i = 0; i < syms.length; ++i) {
key = syms[i];
if ($propIsEnumerable(source, key)) {
$push(props, key);
}
}
}
for (i = 0; i < props.length; ++i) {
key = props[i];
value = source[key];
if ($propIsEnumerable(source, key)) {
objTarget[key] = value;
}
}
}
return objTarget;
};

22
node_modules/object.assign/index.js generated vendored Normal file
View file

@ -0,0 +1,22 @@
'use strict';
var defineProperties = require('define-properties');
var callBind = require('es-abstract/helpers/callBind');
var implementation = require('./implementation');
var getPolyfill = require('./polyfill');
var shim = require('./shim');
var polyfill = callBind.apply(getPolyfill());
// eslint-disable-next-line no-unused-vars
var bound = function assign(target, source1) {
return polyfill(Object, arguments);
};
defineProperties(bound, {
getPolyfill: getPolyfill,
implementation: implementation,
shim: shim
});
module.exports = bound;

View file

@ -0,0 +1,13 @@
root = true
[*]
indent_style = tab;
insert_final_newline = true;
quote_type = auto;
space_after_anonymous_functions = true;
space_after_control_statements = true;
spaces_around_operators = true;
trim_trailing_whitespace = true;
spaces_in_brackets = false;
end_of_line = lf;

View file

@ -0,0 +1 @@
coverage

View file

@ -0,0 +1,72 @@
{
"root": true,
"extends": "@ljharb",
"env": {
"es6": true,
},
"rules": {
"array-bracket-newline": 0,
"array-element-newline": 0,
"complexity": 0,
"eqeqeq": [2, "allow-null"],
"func-name-matching": 0,
"id-length": [2, { "min": 1, "max": 40 }],
"max-params": [2, 4],
"max-statements-per-line": [2, { "max": 2 }],
"multiline-comment-style": 0,
"no-magic-numbers": 0,
"new-cap": 0,
"no-extra-parens": 1,
"operator-linebreak": [2, "before"],
"sort-keys": 0,
},
"overrides": [
{
"files": "GetIntrinsic.js",
"rules": {
"max-statements": 0,
}
},
{
"files": "operations/*",
"rules": {
"max-lines": 0,
},
},
{
"files": "operations/*.js",
"parserOptions": {
"ecmaVersion": 2020,
},
"rules": {
"no-console": 0,
"no-multi-str": 0,
},
},
{
"files": "operations/getOps.js",
"rules": {
"no-console": 0,
"no-process-exit": 0,
},
},
{
"files": "test/**",
"rules": {
"id-length": 0,
"max-lines": 0,
"max-lines-per-function": 0,
"max-statements-per-line": [2, { "max": 3 }],
"max-statements": 0,
"no-implicit-coercion": 0,
"no-invalid-this": 1,
"object-curly-newline": 0,
"prefer-regex-literals": 0,
},
},
],
}

View file

@ -0,0 +1,613 @@
2015/AbstractRelationalComparison.js spackled linguist-generated=true
2015/DateFromTime.js spackled linguist-generated=true
2015/Day.js spackled linguist-generated=true
2015/DayFromYear.js spackled linguist-generated=true
2015/DayWithinYear.js spackled linguist-generated=true
2015/DaysInYear.js spackled linguist-generated=true
2015/HourFromTime.js spackled linguist-generated=true
2015/InLeapYear.js spackled linguist-generated=true
2015/IsCallable.js spackled linguist-generated=true
2015/IsPropertyDescriptor.js spackled linguist-generated=true
2015/MakeDate.js spackled linguist-generated=true
2015/MakeDay.js spackled linguist-generated=true
2015/MakeTime.js spackled linguist-generated=true
2015/MinFromTime.js spackled linguist-generated=true
2015/MonthFromTime.js spackled linguist-generated=true
2015/SameValue.js spackled linguist-generated=true
2015/SecFromTime.js spackled linguist-generated=true
2015/StrictEqualityComparison.js spackled linguist-generated=true
2015/TimeClip.js spackled linguist-generated=true
2015/TimeFromYear.js spackled linguist-generated=true
2015/TimeWithinDay.js spackled linguist-generated=true
2015/ToBoolean.js spackled linguist-generated=true
2015/ToInt32.js spackled linguist-generated=true
2015/ToPropertyDescriptor.js spackled linguist-generated=true
2015/ToUint16.js spackled linguist-generated=true
2015/ToUint32.js spackled linguist-generated=true
2015/WeekDay.js spackled linguist-generated=true
2015/YearFromTime.js spackled linguist-generated=true
2015/abs.js spackled linguist-generated=true
2015/floor.js spackled linguist-generated=true
2015/modulo.js spackled linguist-generated=true
2015/msFromTime.js spackled linguist-generated=true
2016/AbstractEqualityComparison.js spackled linguist-generated=true
2016/AbstractRelationalComparison.js spackled linguist-generated=true
2016/AdvanceStringIndex.js spackled linguist-generated=true
2016/ArrayCreate.js spackled linguist-generated=true
2016/ArraySetLength.js spackled linguist-generated=true
2016/ArraySpeciesCreate.js spackled linguist-generated=true
2016/Call.js spackled linguist-generated=true
2016/CanonicalNumericIndexString.js spackled linguist-generated=true
2016/CompletePropertyDescriptor.js spackled linguist-generated=true
2016/CreateDataProperty.js spackled linguist-generated=true
2016/CreateDataPropertyOrThrow.js spackled linguist-generated=true
2016/CreateHTML.js spackled linguist-generated=true
2016/CreateIterResultObject.js spackled linguist-generated=true
2016/CreateListFromArrayLike.js spackled linguist-generated=true
2016/CreateMethodProperty.js spackled linguist-generated=true
2016/DateFromTime.js spackled linguist-generated=true
2016/Day.js spackled linguist-generated=true
2016/DayFromYear.js spackled linguist-generated=true
2016/DayWithinYear.js spackled linguist-generated=true
2016/DaysInYear.js spackled linguist-generated=true
2016/DefinePropertyOrThrow.js spackled linguist-generated=true
2016/DeletePropertyOrThrow.js spackled linguist-generated=true
2016/EnumerableOwnNames.js spackled linguist-generated=true
2016/FromPropertyDescriptor.js spackled linguist-generated=true
2016/Get.js spackled linguist-generated=true
2016/GetIterator.js spackled linguist-generated=true
2016/GetMethod.js spackled linguist-generated=true
2016/GetOwnPropertyKeys.js spackled linguist-generated=true
2016/GetPrototypeFromConstructor.js spackled linguist-generated=true
2016/GetSubstitution.js spackled linguist-generated=true
2016/GetV.js spackled linguist-generated=true
2016/HasOwnProperty.js spackled linguist-generated=true
2016/HasProperty.js spackled linguist-generated=true
2016/HourFromTime.js spackled linguist-generated=true
2016/InLeapYear.js spackled linguist-generated=true
2016/InstanceofOperator.js spackled linguist-generated=true
2016/Invoke.js spackled linguist-generated=true
2016/IsAccessorDescriptor.js spackled linguist-generated=true
2016/IsArray.js spackled linguist-generated=true
2016/IsCallable.js spackled linguist-generated=true
2016/IsConcatSpreadable.js spackled linguist-generated=true
2016/IsConstructor.js spackled linguist-generated=true
2016/IsDataDescriptor.js spackled linguist-generated=true
2016/IsExtensible.js spackled linguist-generated=true
2016/IsGenericDescriptor.js spackled linguist-generated=true
2016/IsInteger.js spackled linguist-generated=true
2016/IsPromise.js spackled linguist-generated=true
2016/IsPropertyDescriptor.js spackled linguist-generated=true
2016/IsPropertyKey.js spackled linguist-generated=true
2016/IsRegExp.js spackled linguist-generated=true
2016/IteratorClose.js spackled linguist-generated=true
2016/IteratorComplete.js spackled linguist-generated=true
2016/IteratorNext.js spackled linguist-generated=true
2016/IteratorStep.js spackled linguist-generated=true
2016/IteratorValue.js spackled linguist-generated=true
2016/MakeDate.js spackled linguist-generated=true
2016/MakeDay.js spackled linguist-generated=true
2016/MakeTime.js spackled linguist-generated=true
2016/MinFromTime.js spackled linguist-generated=true
2016/MonthFromTime.js spackled linguist-generated=true
2016/ObjectCreate.js spackled linguist-generated=true
2016/OrdinaryCreateFromConstructor.js spackled linguist-generated=true
2016/OrdinaryDefineOwnProperty.js spackled linguist-generated=true
2016/OrdinaryGetOwnProperty.js spackled linguist-generated=true
2016/OrdinaryHasInstance.js spackled linguist-generated=true
2016/OrdinaryHasProperty.js spackled linguist-generated=true
2016/QuoteJSONString.js spackled linguist-generated=true
2016/RegExpExec.js spackled linguist-generated=true
2016/RequireObjectCoercible.js spackled linguist-generated=true
2016/SameValue.js spackled linguist-generated=true
2016/SameValueZero.js spackled linguist-generated=true
2016/SecFromTime.js spackled linguist-generated=true
2016/Set.js spackled linguist-generated=true
2016/SetFunctionName.js spackled linguist-generated=true
2016/SetIntegrityLevel.js spackled linguist-generated=true
2016/SpeciesConstructor.js spackled linguist-generated=true
2016/StrictEqualityComparison.js spackled linguist-generated=true
2016/SymbolDescriptiveString.js spackled linguist-generated=true
2016/TestIntegrityLevel.js spackled linguist-generated=true
2016/TimeClip.js spackled linguist-generated=true
2016/TimeFromYear.js spackled linguist-generated=true
2016/TimeWithinDay.js spackled linguist-generated=true
2016/ToBoolean.js spackled linguist-generated=true
2016/ToDateString.js spackled linguist-generated=true
2016/ToInt16.js spackled linguist-generated=true
2016/ToInt32.js spackled linguist-generated=true
2016/ToInt8.js spackled linguist-generated=true
2016/ToInteger.js spackled linguist-generated=true
2016/ToLength.js spackled linguist-generated=true
2016/ToNumber.js spackled linguist-generated=true
2016/ToObject.js spackled linguist-generated=true
2016/ToPrimitive.js spackled linguist-generated=true
2016/ToPropertyDescriptor.js spackled linguist-generated=true
2016/ToPropertyKey.js spackled linguist-generated=true
2016/ToString.js spackled linguist-generated=true
2016/ToUint16.js spackled linguist-generated=true
2016/ToUint32.js spackled linguist-generated=true
2016/ToUint8.js spackled linguist-generated=true
2016/ToUint8Clamp.js spackled linguist-generated=true
2016/Type.js spackled linguist-generated=true
2016/ValidateAndApplyPropertyDescriptor.js spackled linguist-generated=true
2016/WeekDay.js spackled linguist-generated=true
2016/YearFromTime.js spackled linguist-generated=true
2016/abs.js spackled linguist-generated=true
2016/floor.js spackled linguist-generated=true
2016/modulo.js spackled linguist-generated=true
2016/msFromTime.js spackled linguist-generated=true
2016/thisBooleanValue.js spackled linguist-generated=true
2016/thisNumberValue.js spackled linguist-generated=true
2016/thisStringValue.js spackled linguist-generated=true
2016/thisTimeValue.js spackled linguist-generated=true
2017/AbstractEqualityComparison.js spackled linguist-generated=true
2017/AbstractRelationalComparison.js spackled linguist-generated=true
2017/AdvanceStringIndex.js spackled linguist-generated=true
2017/ArrayCreate.js spackled linguist-generated=true
2017/ArraySetLength.js spackled linguist-generated=true
2017/ArraySpeciesCreate.js spackled linguist-generated=true
2017/Call.js spackled linguist-generated=true
2017/CanonicalNumericIndexString.js spackled linguist-generated=true
2017/CompletePropertyDescriptor.js spackled linguist-generated=true
2017/CreateDataProperty.js spackled linguist-generated=true
2017/CreateDataPropertyOrThrow.js spackled linguist-generated=true
2017/CreateHTML.js spackled linguist-generated=true
2017/CreateIterResultObject.js spackled linguist-generated=true
2017/CreateListFromArrayLike.js spackled linguist-generated=true
2017/CreateMethodProperty.js spackled linguist-generated=true
2017/DateFromTime.js spackled linguist-generated=true
2017/Day.js spackled linguist-generated=true
2017/DayFromYear.js spackled linguist-generated=true
2017/DayWithinYear.js spackled linguist-generated=true
2017/DaysInYear.js spackled linguist-generated=true
2017/DefinePropertyOrThrow.js spackled linguist-generated=true
2017/DeletePropertyOrThrow.js spackled linguist-generated=true
2017/FromPropertyDescriptor.js spackled linguist-generated=true
2017/Get.js spackled linguist-generated=true
2017/GetIterator.js spackled linguist-generated=true
2017/GetMethod.js spackled linguist-generated=true
2017/GetOwnPropertyKeys.js spackled linguist-generated=true
2017/GetPrototypeFromConstructor.js spackled linguist-generated=true
2017/GetSubstitution.js spackled linguist-generated=true
2017/GetV.js spackled linguist-generated=true
2017/HasOwnProperty.js spackled linguist-generated=true
2017/HasProperty.js spackled linguist-generated=true
2017/HourFromTime.js spackled linguist-generated=true
2017/InLeapYear.js spackled linguist-generated=true
2017/InstanceofOperator.js spackled linguist-generated=true
2017/Invoke.js spackled linguist-generated=true
2017/IsAccessorDescriptor.js spackled linguist-generated=true
2017/IsArray.js spackled linguist-generated=true
2017/IsCallable.js spackled linguist-generated=true
2017/IsConcatSpreadable.js spackled linguist-generated=true
2017/IsConstructor.js spackled linguist-generated=true
2017/IsDataDescriptor.js spackled linguist-generated=true
2017/IsExtensible.js spackled linguist-generated=true
2017/IsGenericDescriptor.js spackled linguist-generated=true
2017/IsInteger.js spackled linguist-generated=true
2017/IsPromise.js spackled linguist-generated=true
2017/IsPropertyDescriptor.js spackled linguist-generated=true
2017/IsPropertyKey.js spackled linguist-generated=true
2017/IsRegExp.js spackled linguist-generated=true
2017/IteratorClose.js spackled linguist-generated=true
2017/IteratorComplete.js spackled linguist-generated=true
2017/IteratorNext.js spackled linguist-generated=true
2017/IteratorStep.js spackled linguist-generated=true
2017/IteratorValue.js spackled linguist-generated=true
2017/MakeDate.js spackled linguist-generated=true
2017/MakeDay.js spackled linguist-generated=true
2017/MakeTime.js spackled linguist-generated=true
2017/MinFromTime.js spackled linguist-generated=true
2017/MonthFromTime.js spackled linguist-generated=true
2017/ObjectCreate.js spackled linguist-generated=true
2017/OrdinaryCreateFromConstructor.js spackled linguist-generated=true
2017/OrdinaryDefineOwnProperty.js spackled linguist-generated=true
2017/OrdinaryGetOwnProperty.js spackled linguist-generated=true
2017/OrdinaryGetPrototypeOf.js spackled linguist-generated=true
2017/OrdinaryHasInstance.js spackled linguist-generated=true
2017/OrdinaryHasProperty.js spackled linguist-generated=true
2017/OrdinarySetPrototypeOf.js spackled linguist-generated=true
2017/QuoteJSONString.js spackled linguist-generated=true
2017/RegExpExec.js spackled linguist-generated=true
2017/RequireObjectCoercible.js spackled linguist-generated=true
2017/SameValue.js spackled linguist-generated=true
2017/SameValueNonNumber.js spackled linguist-generated=true
2017/SameValueZero.js spackled linguist-generated=true
2017/SecFromTime.js spackled linguist-generated=true
2017/Set.js spackled linguist-generated=true
2017/SetFunctionName.js spackled linguist-generated=true
2017/SetIntegrityLevel.js spackled linguist-generated=true
2017/SpeciesConstructor.js spackled linguist-generated=true
2017/StrictEqualityComparison.js spackled linguist-generated=true
2017/SymbolDescriptiveString.js spackled linguist-generated=true
2017/TestIntegrityLevel.js spackled linguist-generated=true
2017/TimeClip.js spackled linguist-generated=true
2017/TimeFromYear.js spackled linguist-generated=true
2017/TimeWithinDay.js spackled linguist-generated=true
2017/ToBoolean.js spackled linguist-generated=true
2017/ToDateString.js spackled linguist-generated=true
2017/ToInt16.js spackled linguist-generated=true
2017/ToInt32.js spackled linguist-generated=true
2017/ToInt8.js spackled linguist-generated=true
2017/ToInteger.js spackled linguist-generated=true
2017/ToLength.js spackled linguist-generated=true
2017/ToNumber.js spackled linguist-generated=true
2017/ToObject.js spackled linguist-generated=true
2017/ToPrimitive.js spackled linguist-generated=true
2017/ToPropertyDescriptor.js spackled linguist-generated=true
2017/ToPropertyKey.js spackled linguist-generated=true
2017/ToString.js spackled linguist-generated=true
2017/ToUint16.js spackled linguist-generated=true
2017/ToUint32.js spackled linguist-generated=true
2017/ToUint8.js spackled linguist-generated=true
2017/ToUint8Clamp.js spackled linguist-generated=true
2017/Type.js spackled linguist-generated=true
2017/UTF16Encoding.js spackled linguist-generated=true
2017/ValidateAndApplyPropertyDescriptor.js spackled linguist-generated=true
2017/WeekDay.js spackled linguist-generated=true
2017/YearFromTime.js spackled linguist-generated=true
2017/abs.js spackled linguist-generated=true
2017/floor.js spackled linguist-generated=true
2017/modulo.js spackled linguist-generated=true
2017/msFromTime.js spackled linguist-generated=true
2017/thisBooleanValue.js spackled linguist-generated=true
2017/thisNumberValue.js spackled linguist-generated=true
2017/thisStringValue.js spackled linguist-generated=true
2017/thisTimeValue.js spackled linguist-generated=true
2018/AbstractEqualityComparison.js spackled linguist-generated=true
2018/AbstractRelationalComparison.js spackled linguist-generated=true
2018/AdvanceStringIndex.js spackled linguist-generated=true
2018/ArrayCreate.js spackled linguist-generated=true
2018/ArraySetLength.js spackled linguist-generated=true
2018/ArraySpeciesCreate.js spackled linguist-generated=true
2018/Call.js spackled linguist-generated=true
2018/CanonicalNumericIndexString.js spackled linguist-generated=true
2018/CompletePropertyDescriptor.js spackled linguist-generated=true
2018/CreateDataProperty.js spackled linguist-generated=true
2018/CreateDataPropertyOrThrow.js spackled linguist-generated=true
2018/CreateHTML.js spackled linguist-generated=true
2018/CreateIterResultObject.js spackled linguist-generated=true
2018/CreateListFromArrayLike.js spackled linguist-generated=true
2018/CreateMethodProperty.js spackled linguist-generated=true
2018/DateFromTime.js spackled linguist-generated=true
2018/Day.js spackled linguist-generated=true
2018/DayFromYear.js spackled linguist-generated=true
2018/DayWithinYear.js spackled linguist-generated=true
2018/DaysInYear.js spackled linguist-generated=true
2018/DefinePropertyOrThrow.js spackled linguist-generated=true
2018/DeletePropertyOrThrow.js spackled linguist-generated=true
2018/FromPropertyDescriptor.js spackled linguist-generated=true
2018/Get.js spackled linguist-generated=true
2018/GetIterator.js spackled linguist-generated=true
2018/GetMethod.js spackled linguist-generated=true
2018/GetOwnPropertyKeys.js spackled linguist-generated=true
2018/GetPrototypeFromConstructor.js spackled linguist-generated=true
2018/GetV.js spackled linguist-generated=true
2018/HasOwnProperty.js spackled linguist-generated=true
2018/HasProperty.js spackled linguist-generated=true
2018/HourFromTime.js spackled linguist-generated=true
2018/InLeapYear.js spackled linguist-generated=true
2018/InstanceofOperator.js spackled linguist-generated=true
2018/Invoke.js spackled linguist-generated=true
2018/IsAccessorDescriptor.js spackled linguist-generated=true
2018/IsArray.js spackled linguist-generated=true
2018/IsCallable.js spackled linguist-generated=true
2018/IsConcatSpreadable.js spackled linguist-generated=true
2018/IsConstructor.js spackled linguist-generated=true
2018/IsDataDescriptor.js spackled linguist-generated=true
2018/IsExtensible.js spackled linguist-generated=true
2018/IsGenericDescriptor.js spackled linguist-generated=true
2018/IsInteger.js spackled linguist-generated=true
2018/IsPromise.js spackled linguist-generated=true
2018/IsPropertyKey.js spackled linguist-generated=true
2018/IsRegExp.js spackled linguist-generated=true
2018/IterableToList.js spackled linguist-generated=true
2018/IteratorClose.js spackled linguist-generated=true
2018/IteratorComplete.js spackled linguist-generated=true
2018/IteratorNext.js spackled linguist-generated=true
2018/IteratorStep.js spackled linguist-generated=true
2018/IteratorValue.js spackled linguist-generated=true
2018/MakeDate.js spackled linguist-generated=true
2018/MakeDay.js spackled linguist-generated=true
2018/MakeTime.js spackled linguist-generated=true
2018/MinFromTime.js spackled linguist-generated=true
2018/MonthFromTime.js spackled linguist-generated=true
2018/ObjectCreate.js spackled linguist-generated=true
2018/OrdinaryCreateFromConstructor.js spackled linguist-generated=true
2018/OrdinaryDefineOwnProperty.js spackled linguist-generated=true
2018/OrdinaryGetOwnProperty.js spackled linguist-generated=true
2018/OrdinaryGetPrototypeOf.js spackled linguist-generated=true
2018/OrdinaryHasInstance.js spackled linguist-generated=true
2018/OrdinaryHasProperty.js spackled linguist-generated=true
2018/OrdinarySetPrototypeOf.js spackled linguist-generated=true
2018/RegExpExec.js spackled linguist-generated=true
2018/RequireObjectCoercible.js spackled linguist-generated=true
2018/SameValue.js spackled linguist-generated=true
2018/SameValueNonNumber.js spackled linguist-generated=true
2018/SameValueZero.js spackled linguist-generated=true
2018/SecFromTime.js spackled linguist-generated=true
2018/Set.js spackled linguist-generated=true
2018/SetFunctionName.js spackled linguist-generated=true
2018/SetIntegrityLevel.js spackled linguist-generated=true
2018/SpeciesConstructor.js spackled linguist-generated=true
2018/StrictEqualityComparison.js spackled linguist-generated=true
2018/StringGetOwnProperty.js spackled linguist-generated=true
2018/SymbolDescriptiveString.js spackled linguist-generated=true
2018/TestIntegrityLevel.js spackled linguist-generated=true
2018/TimeClip.js spackled linguist-generated=true
2018/TimeFromYear.js spackled linguist-generated=true
2018/TimeWithinDay.js spackled linguist-generated=true
2018/ToBoolean.js spackled linguist-generated=true
2018/ToDateString.js spackled linguist-generated=true
2018/ToIndex.js spackled linguist-generated=true
2018/ToInt16.js spackled linguist-generated=true
2018/ToInt32.js spackled linguist-generated=true
2018/ToInt8.js spackled linguist-generated=true
2018/ToInteger.js spackled linguist-generated=true
2018/ToLength.js spackled linguist-generated=true
2018/ToNumber.js spackled linguist-generated=true
2018/ToObject.js spackled linguist-generated=true
2018/ToPrimitive.js spackled linguist-generated=true
2018/ToPropertyDescriptor.js spackled linguist-generated=true
2018/ToPropertyKey.js spackled linguist-generated=true
2018/ToString.js spackled linguist-generated=true
2018/ToUint16.js spackled linguist-generated=true
2018/ToUint32.js spackled linguist-generated=true
2018/ToUint8.js spackled linguist-generated=true
2018/ToUint8Clamp.js spackled linguist-generated=true
2018/Type.js spackled linguist-generated=true
2018/UTF16Encoding.js spackled linguist-generated=true
2018/ValidateAndApplyPropertyDescriptor.js spackled linguist-generated=true
2018/WeekDay.js spackled linguist-generated=true
2018/YearFromTime.js spackled linguist-generated=true
2018/abs.js spackled linguist-generated=true
2018/floor.js spackled linguist-generated=true
2018/modulo.js spackled linguist-generated=true
2018/msFromTime.js spackled linguist-generated=true
2018/thisBooleanValue.js spackled linguist-generated=true
2018/thisNumberValue.js spackled linguist-generated=true
2018/thisStringValue.js spackled linguist-generated=true
2018/thisTimeValue.js spackled linguist-generated=true
2019/AbstractEqualityComparison.js spackled linguist-generated=true
2019/AbstractRelationalComparison.js spackled linguist-generated=true
2019/AdvanceStringIndex.js spackled linguist-generated=true
2019/ArrayCreate.js spackled linguist-generated=true
2019/ArraySetLength.js spackled linguist-generated=true
2019/ArraySpeciesCreate.js spackled linguist-generated=true
2019/Call.js spackled linguist-generated=true
2019/CanonicalNumericIndexString.js spackled linguist-generated=true
2019/CompletePropertyDescriptor.js spackled linguist-generated=true
2019/CopyDataProperties.js spackled linguist-generated=true
2019/CreateDataProperty.js spackled linguist-generated=true
2019/CreateDataPropertyOrThrow.js spackled linguist-generated=true
2019/CreateHTML.js spackled linguist-generated=true
2019/CreateIterResultObject.js spackled linguist-generated=true
2019/CreateListFromArrayLike.js spackled linguist-generated=true
2019/CreateMethodProperty.js spackled linguist-generated=true
2019/DateFromTime.js spackled linguist-generated=true
2019/DateString.js spackled linguist-generated=true
2019/Day.js spackled linguist-generated=true
2019/DayFromYear.js spackled linguist-generated=true
2019/DayWithinYear.js spackled linguist-generated=true
2019/DaysInYear.js spackled linguist-generated=true
2019/DefinePropertyOrThrow.js spackled linguist-generated=true
2019/DeletePropertyOrThrow.js spackled linguist-generated=true
2019/EnumerableOwnPropertyNames.js spackled linguist-generated=true
2019/FromPropertyDescriptor.js spackled linguist-generated=true
2019/Get.js spackled linguist-generated=true
2019/GetIterator.js spackled linguist-generated=true
2019/GetMethod.js spackled linguist-generated=true
2019/GetOwnPropertyKeys.js spackled linguist-generated=true
2019/GetPrototypeFromConstructor.js spackled linguist-generated=true
2019/GetSubstitution.js spackled linguist-generated=true
2019/GetV.js spackled linguist-generated=true
2019/HasOwnProperty.js spackled linguist-generated=true
2019/HasProperty.js spackled linguist-generated=true
2019/HourFromTime.js spackled linguist-generated=true
2019/InLeapYear.js spackled linguist-generated=true
2019/InstanceofOperator.js spackled linguist-generated=true
2019/Invoke.js spackled linguist-generated=true
2019/IsAccessorDescriptor.js spackled linguist-generated=true
2019/IsArray.js spackled linguist-generated=true
2019/IsCallable.js spackled linguist-generated=true
2019/IsConcatSpreadable.js spackled linguist-generated=true
2019/IsConstructor.js spackled linguist-generated=true
2019/IsDataDescriptor.js spackled linguist-generated=true
2019/IsExtensible.js spackled linguist-generated=true
2019/IsGenericDescriptor.js spackled linguist-generated=true
2019/IsInteger.js spackled linguist-generated=true
2019/IsPromise.js spackled linguist-generated=true
2019/IsPropertyKey.js spackled linguist-generated=true
2019/IsRegExp.js spackled linguist-generated=true
2019/IsStringPrefix.js spackled linguist-generated=true
2019/IterableToList.js spackled linguist-generated=true
2019/IteratorClose.js spackled linguist-generated=true
2019/IteratorComplete.js spackled linguist-generated=true
2019/IteratorNext.js spackled linguist-generated=true
2019/IteratorStep.js spackled linguist-generated=true
2019/IteratorValue.js spackled linguist-generated=true
2019/MakeDate.js spackled linguist-generated=true
2019/MakeDay.js spackled linguist-generated=true
2019/MakeTime.js spackled linguist-generated=true
2019/MinFromTime.js spackled linguist-generated=true
2019/MonthFromTime.js spackled linguist-generated=true
2019/NumberToString.js spackled linguist-generated=true
2019/ObjectCreate.js spackled linguist-generated=true
2019/OrdinaryCreateFromConstructor.js spackled linguist-generated=true
2019/OrdinaryDefineOwnProperty.js spackled linguist-generated=true
2019/OrdinaryGetOwnProperty.js spackled linguist-generated=true
2019/OrdinaryGetPrototypeOf.js spackled linguist-generated=true
2019/OrdinaryHasInstance.js spackled linguist-generated=true
2019/OrdinaryHasProperty.js spackled linguist-generated=true
2019/OrdinarySetPrototypeOf.js spackled linguist-generated=true
2019/PromiseResolve.js spackled linguist-generated=true
2019/RegExpExec.js spackled linguist-generated=true
2019/RequireObjectCoercible.js spackled linguist-generated=true
2019/SameValue.js spackled linguist-generated=true
2019/SameValueNonNumber.js spackled linguist-generated=true
2019/SameValueZero.js spackled linguist-generated=true
2019/SecFromTime.js spackled linguist-generated=true
2019/Set.js spackled linguist-generated=true
2019/SetFunctionLength.js spackled linguist-generated=true
2019/SetFunctionName.js spackled linguist-generated=true
2019/SetIntegrityLevel.js spackled linguist-generated=true
2019/SpeciesConstructor.js spackled linguist-generated=true
2019/StrictEqualityComparison.js spackled linguist-generated=true
2019/StringGetOwnProperty.js spackled linguist-generated=true
2019/SymbolDescriptiveString.js spackled linguist-generated=true
2019/TestIntegrityLevel.js spackled linguist-generated=true
2019/TimeClip.js spackled linguist-generated=true
2019/TimeFromYear.js spackled linguist-generated=true
2019/TimeString.js spackled linguist-generated=true
2019/TimeWithinDay.js spackled linguist-generated=true
2019/ToBoolean.js spackled linguist-generated=true
2019/ToDateString.js spackled linguist-generated=true
2019/ToIndex.js spackled linguist-generated=true
2019/ToInt16.js spackled linguist-generated=true
2019/ToInt32.js spackled linguist-generated=true
2019/ToInt8.js spackled linguist-generated=true
2019/ToInteger.js spackled linguist-generated=true
2019/ToLength.js spackled linguist-generated=true
2019/ToNumber.js spackled linguist-generated=true
2019/ToObject.js spackled linguist-generated=true
2019/ToPrimitive.js spackled linguist-generated=true
2019/ToPropertyDescriptor.js spackled linguist-generated=true
2019/ToPropertyKey.js spackled linguist-generated=true
2019/ToString.js spackled linguist-generated=true
2019/ToUint16.js spackled linguist-generated=true
2019/ToUint32.js spackled linguist-generated=true
2019/ToUint8.js spackled linguist-generated=true
2019/ToUint8Clamp.js spackled linguist-generated=true
2019/Type.js spackled linguist-generated=true
2019/UTF16Encoding.js spackled linguist-generated=true
2019/UnicodeEscape.js spackled linguist-generated=true
2019/ValidateAndApplyPropertyDescriptor.js spackled linguist-generated=true
2019/WeekDay.js spackled linguist-generated=true
2019/YearFromTime.js spackled linguist-generated=true
2019/abs.js spackled linguist-generated=true
2019/floor.js spackled linguist-generated=true
2019/modulo.js spackled linguist-generated=true
2019/msFromTime.js spackled linguist-generated=true
2019/thisBooleanValue.js spackled linguist-generated=true
2019/thisNumberValue.js spackled linguist-generated=true
2019/thisStringValue.js spackled linguist-generated=true
2019/thisSymbolValue.js spackled linguist-generated=true
2020/AbstractEqualityComparison.js spackled linguist-generated=true
2020/AbstractRelationalComparison.js spackled linguist-generated=true
2020/AddEntriesFromIterable.js spackled linguist-generated=true
2020/ArrayCreate.js spackled linguist-generated=true
2020/ArraySetLength.js spackled linguist-generated=true
2020/ArraySpeciesCreate.js spackled linguist-generated=true
2020/Call.js spackled linguist-generated=true
2020/CanonicalNumericIndexString.js spackled linguist-generated=true
2020/CompletePropertyDescriptor.js spackled linguist-generated=true
2020/CopyDataProperties.js spackled linguist-generated=true
2020/CreateDataProperty.js spackled linguist-generated=true
2020/CreateDataPropertyOrThrow.js spackled linguist-generated=true
2020/CreateHTML.js spackled linguist-generated=true
2020/CreateIterResultObject.js spackled linguist-generated=true
2020/CreateMethodProperty.js spackled linguist-generated=true
2020/DateFromTime.js spackled linguist-generated=true
2020/DateString.js spackled linguist-generated=true
2020/Day.js spackled linguist-generated=true
2020/DayFromYear.js spackled linguist-generated=true
2020/DayWithinYear.js spackled linguist-generated=true
2020/DaysInYear.js spackled linguist-generated=true
2020/DefinePropertyOrThrow.js spackled linguist-generated=true
2020/DeletePropertyOrThrow.js spackled linguist-generated=true
2020/EnumerableOwnPropertyNames.js spackled linguist-generated=true
2020/FromPropertyDescriptor.js spackled linguist-generated=true
2020/Get.js spackled linguist-generated=true
2020/GetIterator.js spackled linguist-generated=true
2020/GetMethod.js spackled linguist-generated=true
2020/GetOwnPropertyKeys.js spackled linguist-generated=true
2020/GetPrototypeFromConstructor.js spackled linguist-generated=true
2020/GetSubstitution.js spackled linguist-generated=true
2020/GetV.js spackled linguist-generated=true
2020/HasOwnProperty.js spackled linguist-generated=true
2020/HasProperty.js spackled linguist-generated=true
2020/HourFromTime.js spackled linguist-generated=true
2020/InLeapYear.js spackled linguist-generated=true
2020/InstanceofOperator.js spackled linguist-generated=true
2020/Invoke.js spackled linguist-generated=true
2020/IsAccessorDescriptor.js spackled linguist-generated=true
2020/IsArray.js spackled linguist-generated=true
2020/IsCallable.js spackled linguist-generated=true
2020/IsConcatSpreadable.js spackled linguist-generated=true
2020/IsConstructor.js spackled linguist-generated=true
2020/IsDataDescriptor.js spackled linguist-generated=true
2020/IsExtensible.js spackled linguist-generated=true
2020/IsGenericDescriptor.js spackled linguist-generated=true
2020/IsInteger.js spackled linguist-generated=true
2020/IsPromise.js spackled linguist-generated=true
2020/IsPropertyKey.js spackled linguist-generated=true
2020/IsRegExp.js spackled linguist-generated=true
2020/IsStringPrefix.js spackled linguist-generated=true
2020/IterableToList.js spackled linguist-generated=true
2020/IteratorClose.js spackled linguist-generated=true
2020/IteratorComplete.js spackled linguist-generated=true
2020/IteratorNext.js spackled linguist-generated=true
2020/IteratorStep.js spackled linguist-generated=true
2020/IteratorValue.js spackled linguist-generated=true
2020/MakeDate.js spackled linguist-generated=true
2020/MakeDay.js spackled linguist-generated=true
2020/MakeTime.js spackled linguist-generated=true
2020/MinFromTime.js spackled linguist-generated=true
2020/MonthFromTime.js spackled linguist-generated=true
2020/OrdinaryDefineOwnProperty.js spackled linguist-generated=true
2020/OrdinaryGetOwnProperty.js spackled linguist-generated=true
2020/OrdinaryGetPrototypeOf.js spackled linguist-generated=true
2020/OrdinaryHasInstance.js spackled linguist-generated=true
2020/OrdinaryHasProperty.js spackled linguist-generated=true
2020/OrdinarySetPrototypeOf.js spackled linguist-generated=true
2020/PromiseResolve.js spackled linguist-generated=true
2020/RegExpExec.js spackled linguist-generated=true
2020/RequireObjectCoercible.js spackled linguist-generated=true
2020/SameValue.js spackled linguist-generated=true
2020/SameValueZero.js spackled linguist-generated=true
2020/SecFromTime.js spackled linguist-generated=true
2020/Set.js spackled linguist-generated=true
2020/SetFunctionName.js spackled linguist-generated=true
2020/SetIntegrityLevel.js spackled linguist-generated=true
2020/SpeciesConstructor.js spackled linguist-generated=true
2020/StrictEqualityComparison.js spackled linguist-generated=true
2020/StringGetOwnProperty.js spackled linguist-generated=true
2020/SymbolDescriptiveString.js spackled linguist-generated=true
2020/TestIntegrityLevel.js spackled linguist-generated=true
2020/TimeClip.js spackled linguist-generated=true
2020/TimeFromYear.js spackled linguist-generated=true
2020/TimeString.js spackled linguist-generated=true
2020/TimeWithinDay.js spackled linguist-generated=true
2020/ToBoolean.js spackled linguist-generated=true
2020/ToDateString.js spackled linguist-generated=true
2020/ToIndex.js spackled linguist-generated=true
2020/ToInt16.js spackled linguist-generated=true
2020/ToInt32.js spackled linguist-generated=true
2020/ToInt8.js spackled linguist-generated=true
2020/ToInteger.js spackled linguist-generated=true
2020/ToLength.js spackled linguist-generated=true
2020/ToNumber.js spackled linguist-generated=true
2020/ToObject.js spackled linguist-generated=true
2020/ToPrimitive.js spackled linguist-generated=true
2020/ToPropertyDescriptor.js spackled linguist-generated=true
2020/ToPropertyKey.js spackled linguist-generated=true
2020/ToString.js spackled linguist-generated=true
2020/ToUint16.js spackled linguist-generated=true
2020/ToUint32.js spackled linguist-generated=true
2020/ToUint8.js spackled linguist-generated=true
2020/ToUint8Clamp.js spackled linguist-generated=true
2020/TrimString.js spackled linguist-generated=true
2020/UTF16Encoding.js spackled linguist-generated=true
2020/ValidateAndApplyPropertyDescriptor.js spackled linguist-generated=true
2020/WeekDay.js spackled linguist-generated=true
2020/YearFromTime.js spackled linguist-generated=true
2020/abs.js spackled linguist-generated=true
2020/floor.js spackled linguist-generated=true
2020/modulo.js spackled linguist-generated=true
2020/msFromTime.js spackled linguist-generated=true
2020/thisBooleanValue.js spackled linguist-generated=true
2020/thisNumberValue.js spackled linguist-generated=true
2020/thisStringValue.js spackled linguist-generated=true
2020/thisSymbolValue.js spackled linguist-generated=true
2020/thisTimeValue.js spackled linguist-generated=true

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

View file

@ -0,0 +1,52 @@
name: "Code scanning - action"
on:
push:
pull_request:
schedule:
- cron: '0 17 * * 4'
jobs:
CodeQL-Build:
# CodeQL runs on ubuntu-latest and windows-latest
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
# Override language selection by uncommenting this and choosing your languages
# with:
# languages: go, javascript, csharp, python, cpp, java
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

View file

@ -0,0 +1,15 @@
name: Automatic Rebase
on: [pull_request]
jobs:
_:
name: "Automatic Rebase"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: ljharb/rebase@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -0,0 +1,14 @@
{
"all": true,
"check-coverage": false,
"reporter": ["text-summary", "text", "html", "json"],
"lines": 86,
"statements": 85.93,
"functions": 82.43,
"branches": 76.06,
"exclude": [
"coverage",
"operations",
"test"
]
}

View file

@ -0,0 +1,32 @@
version: ~> 1.0
language: node_js
os:
- linux
cache:
directories:
- "$HOME/.npm"
- "$(nvm cache dir)"
- "$(nvm_version_path $(nvm_version_remote 0.4))"
- "$(nvm_version_path $(nvm_version_remote 0.6))"
- "$(nvm_version_path $(nvm_version_remote 0.10))"
import:
- ljharb/travis-ci:node/all.yml
- ljharb/travis-ci:node/pretest.yml
- ljharb/travis-ci:node/posttest.yml
script:
- 'if [ -n "${COVERAGE-}" ]; then npm run coverage && bash <(curl -s https://codecov.io/bash) -f coverage/*.json; fi'
matrix:
include:
- node_js: "8"
env: COVERAGE=true
- node_js: "4"
env: COVERAGE=true
- node_js: "0.12"
env: COVERAGE=true
- node_js: "0.8"
env: COVERAGE=true
exclude:
- node_js: "0.12"
env: TEST=true
- node_js: "0.8"
env: TEST=true

View file

@ -0,0 +1,37 @@
'use strict';
var ToNumber = require('./ToNumber');
var ToPrimitive = require('./ToPrimitive');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison
module.exports = function AbstractEqualityComparison(x, y) {
var xType = Type(x);
var yType = Type(y);
if (xType === yType) {
return x === y; // ES6+ specified this shortcut anyways.
}
if (x == null && y == null) {
return true;
}
if (xType === 'Number' && yType === 'String') {
return AbstractEqualityComparison(x, ToNumber(y));
}
if (xType === 'String' && yType === 'Number') {
return AbstractEqualityComparison(ToNumber(x), y);
}
if (xType === 'Boolean') {
return AbstractEqualityComparison(ToNumber(x), y);
}
if (yType === 'Boolean') {
return AbstractEqualityComparison(x, ToNumber(y));
}
if ((xType === 'String' || xType === 'Number' || xType === 'Symbol') && yType === 'Object') {
return AbstractEqualityComparison(x, ToPrimitive(y));
}
if (xType === 'Object' && (yType === 'String' || yType === 'Number' || yType === 'Symbol')) {
return AbstractEqualityComparison(ToPrimitive(x), y);
}
return false;
};

View file

@ -0,0 +1,66 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $Number = GetIntrinsic('%Number%');
var $TypeError = GetIntrinsic('%TypeError%');
var $isNaN = require('../helpers/isNaN');
var $isFinite = require('../helpers/isFinite');
var isPrefixOf = require('../helpers/isPrefixOf');
var ToNumber = require('./ToNumber');
var ToPrimitive = require('./ToPrimitive');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/5.1/#sec-11.8.5
// eslint-disable-next-line max-statements
module.exports = function AbstractRelationalComparison(x, y, LeftFirst) {
if (Type(LeftFirst) !== 'Boolean') {
throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean');
}
var px;
var py;
if (LeftFirst) {
px = ToPrimitive(x, $Number);
py = ToPrimitive(y, $Number);
} else {
py = ToPrimitive(y, $Number);
px = ToPrimitive(x, $Number);
}
var bothStrings = Type(px) === 'String' && Type(py) === 'String';
if (!bothStrings) {
var nx = ToNumber(px);
var ny = ToNumber(py);
if ($isNaN(nx) || $isNaN(ny)) {
return undefined;
}
if ($isFinite(nx) && $isFinite(ny) && nx === ny) {
return false;
}
if (nx === 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
};

View file

@ -0,0 +1,47 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var IsInteger = require('./IsInteger');
var Type = require('./Type');
var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');
var isLeadingSurrogate = require('../helpers/isLeadingSurrogate');
var isTrailingSurrogate = require('../helpers/isTrailingSurrogate');
var $TypeError = GetIntrinsic('%TypeError%');
var $charCodeAt = require('../helpers/callBound')('String.prototype.charCodeAt');
// https://ecma-international.org/ecma-262/6.0/#sec-advancestringindex
module.exports = function AdvanceStringIndex(S, index, unicode) {
if (Type(S) !== 'String') {
throw new $TypeError('Assertion failed: `S` must be a String');
}
if (!IsInteger(index) || index < 0 || index > MAX_SAFE_INTEGER) {
throw new $TypeError('Assertion failed: `length` must be an integer >= 0 and <= 2**53');
}
if (Type(unicode) !== 'Boolean') {
throw new $TypeError('Assertion failed: `unicode` must be a Boolean');
}
if (!unicode) {
return index + 1;
}
var length = S.length;
if ((index + 1) >= length) {
return index + 1;
}
var first = $charCodeAt(S, index);
if (!isLeadingSurrogate(first)) {
return index + 1;
}
var second = $charCodeAt(S, index + 1);
if (!isTrailingSurrogate(second)) {
return index + 1;
}
return index + 2;
};

View file

@ -0,0 +1,53 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $ArrayPrototype = GetIntrinsic('%Array.prototype%');
var $RangeError = GetIntrinsic('%RangeError%');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
var IsInteger = require('./IsInteger');
var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1;
var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || (
// eslint-disable-next-line no-proto, no-negated-condition
[].__proto__ !== $ArrayPrototype
? null
: function (O, proto) {
O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign
return O;
}
);
// https://www.ecma-international.org/ecma-262/6.0/#sec-arraycreate
module.exports = function ArrayCreate(length) {
if (!IsInteger(length) || length < 0) {
throw new $TypeError('Assertion failed: `length` must be an integer Number >= 0');
}
if (length > MAX_ARRAY_LENGTH) {
throw new $RangeError('length is greater than (2**32 - 1)');
}
var proto = arguments.length > 1 ? arguments[1] : $ArrayPrototype;
var A = []; // steps 5 - 7, and 9
if (proto !== $ArrayPrototype) { // step 8
if (!$setProto) {
throw new $SyntaxError('ArrayCreate: a `proto` argument that is not `Array.prototype` is not supported in an environment that does not support setting the [[Prototype]]');
}
$setProto(A, proto);
}
if (length !== 0) { // bypasses the need for step 2
A.length = length;
}
/* step 10, the above as a shortcut for the below
OrdinaryDefineOwnProperty(A, 'length', {
'[[Configurable]]': false,
'[[Enumerable]]': false,
'[[Value]]': length,
'[[Writable]]': true
});
*/
return A;
};

View file

@ -0,0 +1,85 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $RangeError = GetIntrinsic('%RangeError%');
var $TypeError = GetIntrinsic('%TypeError%');
var assign = require('object.assign');
var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
var IsArray = require('./IsArray');
var IsAccessorDescriptor = require('./IsAccessorDescriptor');
var IsDataDescriptor = require('./IsDataDescriptor');
var OrdinaryDefineOwnProperty = require('./OrdinaryDefineOwnProperty');
var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty');
var ToNumber = require('./ToNumber');
var ToString = require('./ToString');
var ToUint32 = require('./ToUint32');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-arraysetlength
// eslint-disable-next-line max-statements, max-lines-per-function
module.exports = function ArraySetLength(A, Desc) {
if (!IsArray(A)) {
throw new $TypeError('Assertion failed: A must be an Array');
}
if (!isPropertyDescriptor({
Type: Type,
IsDataDescriptor: IsDataDescriptor,
IsAccessorDescriptor: IsAccessorDescriptor
}, Desc)) {
throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
}
if (!('[[Value]]' in Desc)) {
return OrdinaryDefineOwnProperty(A, 'length', Desc);
}
var newLenDesc = assign({}, Desc);
var newLen = ToUint32(Desc['[[Value]]']);
var numberLen = ToNumber(Desc['[[Value]]']);
if (newLen !== numberLen) {
throw new $RangeError('Invalid array length');
}
newLenDesc['[[Value]]'] = newLen;
var oldLenDesc = OrdinaryGetOwnProperty(A, 'length');
if (!IsDataDescriptor(oldLenDesc)) {
throw new $TypeError('Assertion failed: an array had a non-data descriptor on `length`');
}
var oldLen = oldLenDesc['[[Value]]'];
if (newLen >= oldLen) {
return OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
}
if (!oldLenDesc['[[Writable]]']) {
return false;
}
var newWritable;
if (!('[[Writable]]' in newLenDesc) || newLenDesc['[[Writable]]']) {
newWritable = true;
} else {
newWritable = false;
newLenDesc['[[Writable]]'] = true;
}
var succeeded = OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
if (!succeeded) {
return false;
}
while (newLen < oldLen) {
oldLen -= 1;
// eslint-disable-next-line no-param-reassign
var deleteSucceeded = delete A[ToString(oldLen)];
if (!deleteSucceeded) {
newLenDesc['[[Value]]'] = oldLen + 1;
if (!newWritable) {
newLenDesc['[[Writable]]'] = false;
OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
return false;
}
}
}
if (!newWritable) {
return OrdinaryDefineOwnProperty(A, 'length', { '[[Writable]]': false });
}
return true;
};

View file

@ -0,0 +1,46 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $Array = GetIntrinsic('%Array%');
var $species = GetIntrinsic('%Symbol.species%', true);
var $TypeError = GetIntrinsic('%TypeError%');
var Get = require('./Get');
var IsArray = require('./IsArray');
var IsConstructor = require('./IsConstructor');
var IsInteger = require('./IsInteger');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-arrayspeciescreate
module.exports = function ArraySpeciesCreate(originalArray, length) {
if (!IsInteger(length) || length < 0) {
throw new $TypeError('Assertion failed: length must be an integer >= 0');
}
var len = length === 0 ? 0 : length;
var C;
var isArray = IsArray(originalArray);
if (isArray) {
C = Get(originalArray, 'constructor');
// TODO: figure out how to make a cross-realm normal Array, a same-realm Array
// if (IsConstructor(C)) {
// if C is another realm's Array, C = undefined
// Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ?
// }
if ($species && Type(C) === 'Object') {
C = Get(C, $species);
if (C === null) {
C = void 0;
}
}
}
if (typeof C === 'undefined') {
return $Array(len);
}
if (!IsConstructor(C)) {
throw new $TypeError('C must be a constructor');
}
return new C(len); // Construct(C, len);
};

View file

@ -0,0 +1,13 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var callBound = require('../helpers/callBound');
var $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('%Function.prototype.apply%');
// https://www.ecma-international.org/ecma-262/6.0/#sec-call
module.exports = function Call(F, V) {
var args = arguments.length > 2 ? arguments[2] : [];
return $apply(F, V, args);
};

View file

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

View file

@ -0,0 +1,39 @@
'use strict';
var has = require('has');
var assertRecord = require('../helpers/assertRecord');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsGenericDescriptor = require('./IsGenericDescriptor');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor
module.exports = function CompletePropertyDescriptor(Desc) {
/* eslint no-param-reassign: 0 */
assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) {
if (!has(Desc, '[[Value]]')) {
Desc['[[Value]]'] = void 0;
}
if (!has(Desc, '[[Writable]]')) {
Desc['[[Writable]]'] = false;
}
} else {
if (!has(Desc, '[[Get]]')) {
Desc['[[Get]]'] = void 0;
}
if (!has(Desc, '[[Set]]')) {
Desc['[[Set]]'] = void 0;
}
}
if (!has(Desc, '[[Enumerable]]')) {
Desc['[[Enumerable]]'] = false;
}
if (!has(Desc, '[[Configurable]]')) {
Desc['[[Configurable]]'] = false;
}
return Desc;
};

View file

@ -0,0 +1,45 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var DefineOwnProperty = require('../helpers/DefineOwnProperty');
var FromPropertyDescriptor = require('./FromPropertyDescriptor');
var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsExtensible = require('./IsExtensible');
var IsPropertyKey = require('./IsPropertyKey');
var SameValue = require('./SameValue');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-createdataproperty
module.exports = function CreateDataProperty(O, P, V) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
}
var oldDesc = OrdinaryGetOwnProperty(O, P);
var extensible = !oldDesc || IsExtensible(O);
var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']);
if (immutable || !extensible) {
return false;
}
return DefineOwnProperty(
IsDataDescriptor,
SameValue,
FromPropertyDescriptor,
O,
P,
{
'[[Configurable]]': true,
'[[Enumerable]]': true,
'[[Value]]': V,
'[[Writable]]': true
}
);
};

View file

@ -0,0 +1,25 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var CreateDataProperty = require('./CreateDataProperty');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
// // https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow
module.exports = function CreateDataPropertyOrThrow(O, P, V) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
}
var success = CreateDataProperty(O, P, V);
if (!success) {
throw new $TypeError('unable to create data property');
}
return success;
};

View file

@ -0,0 +1,30 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('../helpers/callBound');
var $replace = callBound('String.prototype.replace');
var RequireObjectCoercible = require('./RequireObjectCoercible');
var ToString = require('./ToString');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-createhtml
module.exports = function CreateHTML(string, tag, attribute, value) {
if (Type(tag) !== 'String' || Type(attribute) !== 'String') {
throw new $TypeError('Assertion failed: `tag` and `attribute` must be strings');
}
var str = RequireObjectCoercible(string);
var S = ToString(str);
var p1 = '<' + tag;
if (attribute !== '') {
var V = ToString(value);
var escapedV = $replace(V, /\x22/g, '&quot;');
p1 += '\x20' + attribute + '\x3D\x22' + escapedV + '\x22';
}
return p1 + '>' + S + '</' + tag + '>';
};

View file

@ -0,0 +1,19 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject
module.exports = function CreateIterResultObject(value, done) {
if (Type(done) !== 'Boolean') {
throw new $TypeError('Assertion failed: Type(done) is not Boolean');
}
return {
value: value,
done: done
};
};

View file

@ -0,0 +1,43 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var callBound = require('../helpers/callBound');
var $TypeError = GetIntrinsic('%TypeError%');
var $indexOf = callBound('Array.prototype.indexOf', true) || callBound('String.prototype.indexOf');
var $push = callBound('Array.prototype.push');
var Get = require('./Get');
var IsArray = require('./IsArray');
var ToLength = require('./ToLength');
var ToString = require('./ToString');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-createlistfromarraylike
module.exports = function CreateListFromArrayLike(obj) {
var elementTypes = arguments.length > 1
? arguments[1]
: ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'Object'];
if (Type(obj) !== 'Object') {
throw new $TypeError('Assertion failed: `obj` must be an Object');
}
if (!IsArray(elementTypes)) {
throw new $TypeError('Assertion failed: `elementTypes`, if provided, must be an array');
}
var len = ToLength(Get(obj, 'length'));
var list = [];
var index = 0;
while (index < len) {
var indexName = ToString(index);
var next = Get(obj, indexName);
var nextType = Type(next);
if ($indexOf(elementTypes, nextType) < 0) {
throw new $TypeError('item type ' + nextType + ' is not a valid elementType');
}
$push(list, next);
index += 1;
}
return list;
};

View file

@ -0,0 +1,40 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var DefineOwnProperty = require('../helpers/DefineOwnProperty');
var FromPropertyDescriptor = require('./FromPropertyDescriptor');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsPropertyKey = require('./IsPropertyKey');
var SameValue = require('./SameValue');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-createmethodproperty
module.exports = function CreateMethodProperty(O, P, V) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
}
var newDesc = {
'[[Configurable]]': true,
'[[Enumerable]]': false,
'[[Value]]': V,
'[[Writable]]': true
};
return DefineOwnProperty(
IsDataDescriptor,
SameValue,
FromPropertyDescriptor,
O,
P,
newDesc
);
};

View file

@ -0,0 +1,54 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $EvalError = GetIntrinsic('%EvalError%');
var DayWithinYear = require('./DayWithinYear');
var InLeapYear = require('./InLeapYear');
var MonthFromTime = require('./MonthFromTime');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.5
module.exports = function DateFromTime(t) {
var m = MonthFromTime(t);
var d = DayWithinYear(t);
if (m === 0) {
return d + 1;
}
if (m === 1) {
return d - 30;
}
var leap = InLeapYear(t);
if (m === 2) {
return d - 58 - leap;
}
if (m === 3) {
return d - 89 - leap;
}
if (m === 4) {
return d - 119 - leap;
}
if (m === 5) {
return d - 150 - leap;
}
if (m === 6) {
return d - 180 - leap;
}
if (m === 7) {
return d - 211 - leap;
}
if (m === 8) {
return d - 242 - leap;
}
if (m === 9) {
return d - 272 - leap;
}
if (m === 10) {
return d - 303 - leap;
}
if (m === 11) {
return d - 333 - leap;
}
throw new $EvalError('Assertion failed: MonthFromTime returned an impossible value: ' + m);
};

View file

@ -0,0 +1,11 @@
'use strict';
var floor = require('./floor');
var msPerDay = require('../helpers/timeConstants').msPerDay;
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2
module.exports = function Day(t) {
return floor(t / msPerDay);
};

View file

@ -0,0 +1,10 @@
'use strict';
var floor = require('./floor');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3
module.exports = function DayFromYear(y) {
return (365 * (y - 1970)) + floor((y - 1969) / 4) - floor((y - 1901) / 100) + floor((y - 1601) / 400);
};

View file

@ -0,0 +1,11 @@
'use strict';
var Day = require('./Day');
var DayFromYear = require('./DayFromYear');
var YearFromTime = require('./YearFromTime');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4
module.exports = function DayWithinYear(t) {
return Day(t) - DayFromYear(YearFromTime(t));
};

View file

@ -0,0 +1,18 @@
'use strict';
var modulo = require('./modulo');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3
module.exports = function DaysInYear(y) {
if (modulo(y, 4) !== 0) {
return 365;
}
if (modulo(y, 100) !== 0) {
return 366;
}
if (modulo(y, 400) !== 0) {
return 365;
}
return 366;
};

View file

@ -0,0 +1,50 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
var DefineOwnProperty = require('../helpers/DefineOwnProperty');
var FromPropertyDescriptor = require('./FromPropertyDescriptor');
var IsAccessorDescriptor = require('./IsAccessorDescriptor');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsPropertyKey = require('./IsPropertyKey');
var SameValue = require('./SameValue');
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow
module.exports = function DefinePropertyOrThrow(O, P, desc) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
}
var Desc = isPropertyDescriptor({
Type: Type,
IsDataDescriptor: IsDataDescriptor,
IsAccessorDescriptor: IsAccessorDescriptor
}, desc) ? desc : ToPropertyDescriptor(desc);
if (!isPropertyDescriptor({
Type: Type,
IsDataDescriptor: IsDataDescriptor,
IsAccessorDescriptor: IsAccessorDescriptor
}, Desc)) {
throw new $TypeError('Assertion failed: Desc is not a valid Property Descriptor');
}
return DefineOwnProperty(
IsDataDescriptor,
SameValue,
FromPropertyDescriptor,
O,
P,
Desc
);
};

View file

@ -0,0 +1,27 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow
module.exports = function DeletePropertyOrThrow(O, P) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
}
// eslint-disable-next-line no-param-reassign
var success = delete O[P];
if (!success) {
throw new $TypeError('Attempt to delete property failed.');
}
return success;
};

View file

@ -0,0 +1,19 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var keys = require('object-keys');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-enumerableownnames
module.exports = function EnumerableOwnNames(O) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
return keys(O);
};

View file

@ -0,0 +1,36 @@
'use strict';
var assertRecord = require('../helpers/assertRecord');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor
module.exports = function FromPropertyDescriptor(Desc) {
if (typeof Desc === 'undefined') {
return Desc;
}
assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
var obj = {};
if ('[[Value]]' in Desc) {
obj.value = Desc['[[Value]]'];
}
if ('[[Writable]]' in Desc) {
obj.writable = Desc['[[Writable]]'];
}
if ('[[Get]]' in Desc) {
obj.get = Desc['[[Get]]'];
}
if ('[[Set]]' in Desc) {
obj.set = Desc['[[Set]]'];
}
if ('[[Enumerable]]' in Desc) {
obj.enumerable = Desc['[[Enumerable]]'];
}
if ('[[Configurable]]' in Desc) {
obj.configurable = Desc['[[Configurable]]'];
}
return obj;
};

View file

@ -0,0 +1,30 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var inspect = require('object-inspect');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
/**
* 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
* 1. Assert: Type(O) is Object.
* 2. Assert: IsPropertyKey(P) is true.
* 3. Return O.[[Get]](P, O).
*/
module.exports = function Get(O, P) {
// 7.3.1.1
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
// 7.3.1.2
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));
}
// 7.3.1.3
return O[P];
};

View file

@ -0,0 +1,35 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var getIteratorMethod = require('../helpers/getIteratorMethod');
var AdvanceStringIndex = require('./AdvanceStringIndex');
var Call = require('./Call');
var GetMethod = require('./GetMethod');
var IsArray = require('./IsArray');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-getiterator
module.exports = function GetIterator(obj, method) {
var actualMethod = method;
if (arguments.length < 2) {
actualMethod = getIteratorMethod(
{
AdvanceStringIndex: AdvanceStringIndex,
GetMethod: GetMethod,
IsArray: IsArray,
Type: Type
},
obj
);
}
var iterator = Call(actualMethod, obj);
if (Type(iterator) !== 'Object') {
throw new $TypeError('iterator must return an object');
}
return iterator;
};

View file

@ -0,0 +1,42 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var GetV = require('./GetV');
var IsCallable = require('./IsCallable');
var IsPropertyKey = require('./IsPropertyKey');
/**
* 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod
* 1. Assert: IsPropertyKey(P) is true.
* 2. Let func be GetV(O, P).
* 3. ReturnIfAbrupt(func).
* 4. If func is either undefined or null, return undefined.
* 5. If IsCallable(func) is false, throw a TypeError exception.
* 6. Return func.
*/
module.exports = function GetMethod(O, P) {
// 7.3.9.1
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
}
// 7.3.9.2
var func = GetV(O, P);
// 7.3.9.4
if (func == null) {
return void 0;
}
// 7.3.9.5
if (!IsCallable(func)) {
throw new $TypeError(P + 'is not a function');
}
// 7.3.9.6
return func;
};

View file

@ -0,0 +1,31 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var hasSymbols = require('has-symbols')();
var $TypeError = GetIntrinsic('%TypeError%');
var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%');
var keys = require('object-keys');
var esType = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys
module.exports = function GetOwnPropertyKeys(O, Type) {
if (esType(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
if (Type === 'Symbol') {
return $gOPS ? $gOPS(O) : [];
}
if (Type === 'String') {
if (!$gOPN) {
return keys(O);
}
return $gOPN(O);
}
throw new $TypeError('Assertion failed: `Type` must be `"String"` or `"Symbol"`');
};

View file

@ -0,0 +1,28 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $Function = GetIntrinsic('%Function%');
var $TypeError = GetIntrinsic('%TypeError%');
var Get = require('./Get');
var IsConstructor = require('./IsConstructor');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-getprototypefromconstructor
module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) {
var intrinsic = GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic
if (!IsConstructor(constructor)) {
throw new $TypeError('Assertion failed: `constructor` must be a constructor');
}
var proto = Get(constructor, 'prototype');
if (Type(proto) !== 'Object') {
if (!(constructor instanceof $Function)) {
// ignore other realms, for now
throw new $TypeError('cross-realm constructors not currently supported');
}
proto = intrinsic;
}
return proto;
};

View file

@ -0,0 +1,104 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var $parseInt = GetIntrinsic('%parseInt%');
var inspect = require('object-inspect');
var regexTester = require('../helpers/regexTester');
var callBound = require('../helpers/callBound');
var every = require('../helpers/every');
var isDigit = regexTester(/^[0-9]$/);
var $charAt = callBound('String.prototype.charAt');
var $strSlice = callBound('String.prototype.slice');
var IsArray = require('./IsArray');
var IsInteger = require('./IsInteger');
var Type = require('./Type');
var canDistinguishSparseFromUndefined = 0 in [undefined]; // IE 6 - 8 have a bug where this returns false
var isStringOrHole = function (capture, index, arr) {
return Type(capture) === 'String' || (canDistinguishSparseFromUndefined ? !(index in arr) : Type(capture) === 'Undefined');
};
// https://www.ecma-international.org/ecma-262/6.0/#sec-getsubstitution
// eslint-disable-next-line max-statements, max-params, max-lines-per-function
module.exports = function GetSubstitution(matched, str, position, captures, replacement) {
if (Type(matched) !== 'String') {
throw new $TypeError('Assertion failed: `matched` must be a String');
}
var matchLength = matched.length;
if (Type(str) !== 'String') {
throw new $TypeError('Assertion failed: `str` must be a String');
}
var stringLength = str.length;
if (!IsInteger(position) || position < 0 || position > stringLength) {
throw new $TypeError('Assertion failed: `position` must be a nonnegative integer, and less than or equal to the length of `string`, got ' + inspect(position));
}
if (!IsArray(captures) || !every(captures, isStringOrHole)) {
throw new $TypeError('Assertion failed: `captures` must be a List of Strings, got ' + inspect(captures));
}
if (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 = $charAt(replacement, i);
var isLast = (i + 1) >= replacement.length;
var nextIsLast = (i + 2) >= replacement.length;
if (current === '$' && !isLast) {
var next = $charAt(replacement, i + 1);
if (next === '$') {
result += '$';
i += 1;
} else if (next === '&') {
result += matched;
i += 1;
} else if (next === '`') {
result += position === 0 ? '' : $strSlice(str, 0, position - 1);
i += 1;
} else if (next === "'") {
result += tailPos >= stringLength ? '' : $strSlice(str, tailPos);
i += 1;
} else {
var nextNext = nextIsLast ? null : $charAt(replacement, i + 2);
if (isDigit(next) && next !== '0' && (nextIsLast || !isDigit(nextNext))) {
// $1 through $9, and not followed by a digit
var n = $parseInt(next, 10);
// if (n > m, impl-defined)
result += n <= m && Type(captures[n - 1]) === 'Undefined' ? '' : captures[n - 1];
i += 1;
} else if (isDigit(next) && (nextIsLast || isDigit(nextNext))) {
// $00 through $99
var nn = next + nextNext;
var nnI = $parseInt(nn, 10) - 1;
// if nn === '00' or nn > m, impl-defined
result += nn <= m && Type(captures[nnI]) === 'Undefined' ? '' : captures[nnI];
i += 2;
} else {
result += '$';
}
}
} else {
// the final $, or else not a $
result += $charAt(replacement, i);
}
}
return result;
};

View file

@ -0,0 +1,29 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var ToObject = require('./ToObject');
/**
* 7.3.2 GetV (V, P)
* 1. Assert: IsPropertyKey(P) is true.
* 2. Let O be ToObject(V).
* 3. ReturnIfAbrupt(O).
* 4. Return O.[[Get]](P, V).
*/
module.exports = function GetV(V, P) {
// 7.3.2.1
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
}
// 7.3.2.2-3
var O = ToObject(V);
// 7.3.2.4
return O[P];
};

View file

@ -0,0 +1,22 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var has = require('has');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-hasownproperty
module.exports = function HasOwnProperty(O, P) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: `O` must be an Object');
}
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: `P` must be a Property Key');
}
return has(O, P);
};

View file

@ -0,0 +1,20 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty
module.exports = function HasProperty(O, P) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: `O` must be an Object');
}
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: `P` must be a Property Key');
}
return P in O;
};

View file

@ -0,0 +1,14 @@
'use strict';
var floor = require('./floor');
var modulo = require('./modulo');
var timeConstants = require('../helpers/timeConstants');
var msPerHour = timeConstants.msPerHour;
var HoursPerDay = timeConstants.HoursPerDay;
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10
module.exports = function HourFromTime(t) {
return modulo(floor(t / msPerHour), HoursPerDay);
};

View file

@ -0,0 +1,21 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $EvalError = GetIntrinsic('%EvalError%');
var DaysInYear = require('./DaysInYear');
var YearFromTime = require('./YearFromTime');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3
module.exports = function InLeapYear(t) {
var days = DaysInYear(YearFromTime(t));
if (days === 365) {
return 0;
}
if (days === 366) {
return 1;
}
throw new $EvalError('Assertion failed: there are not 365 or 366 days in a year, got: ' + days);
};

View file

@ -0,0 +1,30 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var $hasInstance = GetIntrinsic('Symbol.hasInstance', true);
var Call = require('./Call');
var GetMethod = require('./GetMethod');
var IsCallable = require('./IsCallable');
var OrdinaryHasInstance = require('./OrdinaryHasInstance');
var ToBoolean = require('./ToBoolean');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-instanceofoperator
module.exports = function InstanceofOperator(O, C) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
var instOfHandler = $hasInstance ? GetMethod(C, $hasInstance) : void 0;
if (typeof instOfHandler !== 'undefined') {
return ToBoolean(Call(instOfHandler, C, [O]));
}
if (!IsCallable(C)) {
throw new $TypeError('`C` is not Callable');
}
return OrdinaryHasInstance(C, O);
};

View file

@ -0,0 +1,22 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var $arraySlice = require('../helpers/callBound')('Array.prototype.slice');
var Call = require('./Call');
var GetV = require('./GetV');
var IsPropertyKey = require('./IsPropertyKey');
// https://ecma-international.org/ecma-262/6.0/#sec-invoke
module.exports = function Invoke(O, P) {
if (!IsPropertyKey(P)) {
throw new $TypeError('P must be a Property Key');
}
var argumentsList = $arraySlice(arguments, 2);
var func = GetV(O, P);
return Call(func, O, argumentsList);
};

View file

@ -0,0 +1,23 @@
'use strict';
var has = require('has');
var assertRecord = require('../helpers/assertRecord');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor
module.exports = function IsAccessorDescriptor(Desc) {
if (typeof Desc === 'undefined') {
return false;
}
assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
if (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) {
return false;
}
return true;
};

View file

@ -0,0 +1,14 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $Array = GetIntrinsic('%Array%');
// eslint-disable-next-line global-require
var toStr = !$Array.isArray && require('../helpers/callBound')('Object.prototype.toString');
// https://www.ecma-international.org/ecma-262/6.0/#sec-isarray
module.exports = $Array.isArray || function IsArray(argument) {
return toStr(argument) === '[object Array]';
};

View file

@ -0,0 +1,5 @@
'use strict';
// http://www.ecma-international.org/ecma-262/5.1/#sec-9.11
module.exports = require('is-callable');

View file

@ -0,0 +1,25 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $isConcatSpreadable = GetIntrinsic('%Symbol.isConcatSpreadable%', true);
var Get = require('./Get');
var IsArray = require('./IsArray');
var ToBoolean = require('./ToBoolean');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable
module.exports = function IsConcatSpreadable(O) {
if (Type(O) !== 'Object') {
return false;
}
if ($isConcatSpreadable) {
var spreadable = Get(O, $isConcatSpreadable);
if (typeof spreadable !== 'undefined') {
return ToBoolean(spreadable);
}
}
return IsArray(O);
};

View file

@ -0,0 +1,40 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic.js');
var $construct = GetIntrinsic('%Reflect.construct%', true);
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
try {
DefinePropertyOrThrow({}, '', { '[[Get]]': function () {} });
} catch (e) {
// Accessor properties aren't supported
DefinePropertyOrThrow = null;
}
// https://www.ecma-international.org/ecma-262/6.0/#sec-isconstructor
if (DefinePropertyOrThrow && $construct) {
var isConstructorMarker = {};
var badArrayLike = {};
DefinePropertyOrThrow(badArrayLike, 'length', {
'[[Get]]': function () {
throw isConstructorMarker;
},
'[[Enumerable]]': true
});
module.exports = function IsConstructor(argument) {
try {
// `Reflect.construct` invokes `IsConstructor(target)` before `Get(args, 'length')`:
$construct(argument, badArrayLike);
} catch (err) {
return err === isConstructorMarker;
}
};
} else {
module.exports = function IsConstructor(argument) {
// unfortunately there's no way to truly check this without try/catch `new argument` in old environments
return typeof argument === 'function' && !!argument.prototype;
};
}

View file

@ -0,0 +1,23 @@
'use strict';
var has = require('has');
var assertRecord = require('../helpers/assertRecord');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor
module.exports = function IsDataDescriptor(Desc) {
if (typeof Desc === 'undefined') {
return false;
}
assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
if (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) {
return false;
}
return true;
};

View file

@ -0,0 +1,20 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $Object = GetIntrinsic('%Object%');
var isPrimitive = require('../helpers/isPrimitive');
var $preventExtensions = $Object.preventExtensions;
var $isExtensible = $Object.isExtensible;
// https://www.ecma-international.org/ecma-262/6.0/#sec-isextensible-o
module.exports = $preventExtensions
? function IsExtensible(obj) {
return !isPrimitive(obj) && $isExtensible(obj);
}
: function IsExtensible(obj) {
return !isPrimitive(obj);
};

View file

@ -0,0 +1,23 @@
'use strict';
var assertRecord = require('../helpers/assertRecord');
var IsAccessorDescriptor = require('./IsAccessorDescriptor');
var IsDataDescriptor = require('./IsDataDescriptor');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-isgenericdescriptor
module.exports = function IsGenericDescriptor(Desc) {
if (typeof Desc === 'undefined') {
return false;
}
assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
if (!IsAccessorDescriptor(Desc) && !IsDataDescriptor(Desc)) {
return true;
}
return false;
};

View file

@ -0,0 +1,17 @@
'use strict';
var abs = require('./abs');
var floor = require('./floor');
var $isNaN = require('../helpers/isNaN');
var $isFinite = require('../helpers/isFinite');
// https://www.ecma-international.org/ecma-262/6.0/#sec-isinteger
module.exports = function IsInteger(argument) {
if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) {
return false;
}
var absValue = abs(argument);
return floor(absValue) === absValue;
};

View file

@ -0,0 +1,24 @@
'use strict';
var callBound = require('../helpers/callBound');
var $PromiseThen = callBound('Promise.prototype.then', true);
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-ispromise
module.exports = function IsPromise(x) {
if (Type(x) !== 'Object') {
return false;
}
if (!$PromiseThen) { // Promises are not supported
return false;
}
try {
$PromiseThen(x); // throws if not a promise
} catch (e) {
return false;
}
return true;
};

View file

@ -0,0 +1,17 @@
'use strict';
var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
var Type = require('./Type');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsAccessorDescriptor = require('./IsAccessorDescriptor');
// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type
module.exports = function IsPropertyDescriptor(Desc) {
return isPropertyDescriptor({
IsDataDescriptor: IsDataDescriptor,
IsAccessorDescriptor: IsAccessorDescriptor,
Type: Type
}, Desc);
};

View file

@ -0,0 +1,7 @@
'use strict';
// https://www.ecma-international.org/ecma-262/6.0/#sec-ispropertykey
module.exports = function IsPropertyKey(argument) {
return typeof argument === 'string' || typeof argument === 'symbol';
};

View file

@ -0,0 +1,24 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $match = GetIntrinsic('%Symbol.match%', true);
var hasRegExpMatcher = require('is-regex');
var ToBoolean = require('./ToBoolean');
// https://ecma-international.org/ecma-262/6.0/#sec-isregexp
module.exports = function IsRegExp(argument) {
if (!argument || typeof argument !== 'object') {
return false;
}
if ($match) {
var isRegExp = argument[$match];
if (typeof isRegExp !== 'undefined') {
return ToBoolean(isRegExp);
}
}
return hasRegExpMatcher(argument);
};

View file

@ -0,0 +1,50 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var Call = require('./Call');
var GetMethod = require('./GetMethod');
var IsCallable = require('./IsCallable');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-iteratorclose
module.exports = function IteratorClose(iterator, completion) {
if (Type(iterator) !== 'Object') {
throw new $TypeError('Assertion failed: Type(iterator) is not Object');
}
if (!IsCallable(completion)) {
throw new $TypeError('Assertion failed: completion is not a thunk for a Completion Record');
}
var completionThunk = completion;
var iteratorReturn = GetMethod(iterator, 'return');
if (typeof iteratorReturn === 'undefined') {
return completionThunk();
}
var completionRecord;
try {
var innerResult = Call(iteratorReturn, iterator, []);
} catch (e) {
// if we hit here, then "e" is the innerResult completion that needs re-throwing
// if the completion is of type "throw", this will throw.
completionThunk();
completionThunk = null; // ensure it's not called twice.
// if not, then return the innerResult completion
throw e;
}
completionRecord = completionThunk(); // if innerResult worked, then throw if the completion does
completionThunk = null; // ensure it's not called twice.
if (Type(innerResult) !== 'Object') {
throw new $TypeError('iterator .return must return an object');
}
return completionRecord;
};

View file

@ -0,0 +1,18 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var Get = require('./Get');
var ToBoolean = require('./ToBoolean');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete
module.exports = function IteratorComplete(iterResult) {
if (Type(iterResult) !== 'Object') {
throw new $TypeError('Assertion failed: Type(iterResult) is not Object');
}
return ToBoolean(Get(iterResult, 'done'));
};

View file

@ -0,0 +1,18 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var Invoke = require('./Invoke');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-iteratornext
module.exports = function IteratorNext(iterator, value) {
var result = Invoke(iterator, 'next', arguments.length < 2 ? [] : [value]);
if (Type(result) !== 'Object') {
throw new $TypeError('iterator next must return an object');
}
return result;
};

View file

@ -0,0 +1,13 @@
'use strict';
var IteratorComplete = require('./IteratorComplete');
var IteratorNext = require('./IteratorNext');
// https://ecma-international.org/ecma-262/6.0/#sec-iteratorstep
module.exports = function IteratorStep(iterator) {
var result = IteratorNext(iterator);
var done = IteratorComplete(result);
return done === true ? false : result;
};

View file

@ -0,0 +1,18 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var Get = require('./Get');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue
module.exports = function IteratorValue(iterResult) {
if (Type(iterResult) !== 'Object') {
throw new $TypeError('Assertion failed: Type(iterResult) is not Object');
}
return Get(iterResult, 'value');
};

View file

@ -0,0 +1,13 @@
'use strict';
var $isFinite = require('../helpers/isFinite');
var msPerDay = require('../helpers/timeConstants').msPerDay;
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.13
module.exports = function MakeDate(day, time) {
if (!$isFinite(day) || !$isFinite(time)) {
return NaN;
}
return (day * msPerDay) + time;
};

View file

@ -0,0 +1,33 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $DateUTC = GetIntrinsic('%Date.UTC%');
var $isFinite = require('../helpers/isFinite');
var DateFromTime = require('./DateFromTime');
var Day = require('./Day');
var floor = require('./floor');
var modulo = require('./modulo');
var MonthFromTime = require('./MonthFromTime');
var ToInteger = require('./ToInteger');
var YearFromTime = require('./YearFromTime');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12
module.exports = function MakeDay(year, month, date) {
if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) {
return NaN;
}
var y = ToInteger(year);
var m = ToInteger(month);
var dt = ToInteger(date);
var ym = y + floor(m / 12);
var mn = modulo(m, 12);
var t = $DateUTC(ym, mn, 1);
if (YearFromTime(t) !== ym || MonthFromTime(t) !== mn || DateFromTime(t) !== 1) {
return NaN;
}
return Day(t) + dt - 1;
};

View file

@ -0,0 +1,23 @@
'use strict';
var $isFinite = require('../helpers/isFinite');
var timeConstants = require('../helpers/timeConstants');
var msPerSecond = timeConstants.msPerSecond;
var msPerMinute = timeConstants.msPerMinute;
var msPerHour = timeConstants.msPerHour;
var ToInteger = require('./ToInteger');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.11
module.exports = function MakeTime(hour, min, sec, ms) {
if (!$isFinite(hour) || !$isFinite(min) || !$isFinite(sec) || !$isFinite(ms)) {
return NaN;
}
var h = ToInteger(hour);
var m = ToInteger(min);
var s = ToInteger(sec);
var milli = ToInteger(ms);
var t = (h * msPerHour) + (m * msPerMinute) + (s * msPerSecond) + milli;
return t;
};

View file

@ -0,0 +1,14 @@
'use strict';
var floor = require('./floor');
var modulo = require('./modulo');
var timeConstants = require('../helpers/timeConstants');
var msPerMinute = timeConstants.msPerMinute;
var MinutesPerHour = timeConstants.MinutesPerHour;
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10
module.exports = function MinFromTime(t) {
return modulo(floor(t / msPerMinute), MinutesPerHour);
};

View file

@ -0,0 +1,47 @@
'use strict';
var DayWithinYear = require('./DayWithinYear');
var InLeapYear = require('./InLeapYear');
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4
module.exports = function MonthFromTime(t) {
var day = DayWithinYear(t);
if (0 <= day && day < 31) {
return 0;
}
var leap = InLeapYear(t);
if (31 <= day && day < (59 + leap)) {
return 1;
}
if ((59 + leap) <= day && day < (90 + leap)) {
return 2;
}
if ((90 + leap) <= day && day < (120 + leap)) {
return 3;
}
if ((120 + leap) <= day && day < (151 + leap)) {
return 4;
}
if ((151 + leap) <= day && day < (181 + leap)) {
return 5;
}
if ((181 + leap) <= day && day < (212 + leap)) {
return 6;
}
if ((212 + leap) <= day && day < (243 + leap)) {
return 7;
}
if ((243 + leap) <= day && day < (273 + leap)) {
return 8;
}
if ((273 + leap) <= day && day < (304 + leap)) {
return 9;
}
if ((304 + leap) <= day && day < (334 + leap)) {
return 10;
}
if ((334 + leap) <= day && day < (365 + leap)) {
return 11;
}
};

View file

@ -0,0 +1,37 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $ObjectCreate = GetIntrinsic('%Object.create%', true);
var $TypeError = GetIntrinsic('%TypeError%');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var Type = require('./Type');
var hasProto = !({ __proto__: null } instanceof Object);
// https://www.ecma-international.org/ecma-262/6.0/#sec-objectcreate
module.exports = function ObjectCreate(proto, internalSlotsList) {
if (proto !== null && Type(proto) !== 'Object') {
throw new $TypeError('Assertion failed: `proto` must be null or an object');
}
var slots = arguments.length < 2 ? [] : internalSlotsList;
if (slots.length > 0) {
throw new $SyntaxError('es-abstract does not yet support internal slots');
}
if ($ObjectCreate) {
return $ObjectCreate(proto);
}
if (hasProto) {
return { __proto__: proto };
}
if (proto === null) {
throw new $SyntaxError('native Object.create support is required to create null objects');
}
var T = function T() {};
T.prototype = proto;
return new T();
};

View file

@ -0,0 +1,20 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var GetPrototypeFromConstructor = require('./GetPrototypeFromConstructor');
var IsArray = require('./IsArray');
var ObjectCreate = require('./ObjectCreate');
// https://ecma-international.org/ecma-262/6.0/#sec-ordinarycreatefromconstructor
module.exports = function OrdinaryCreateFromConstructor(constructor, intrinsicDefaultProto) {
GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic
var proto = GetPrototypeFromConstructor(constructor, intrinsicDefaultProto);
var slots = arguments.length < 3 ? [] : arguments[2];
if (!IsArray(slots)) {
throw new $TypeError('Assertion failed: if provided, `internalSlotsList` must be a List');
}
return ObjectCreate(proto, slots);
};

View file

@ -0,0 +1,61 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $gOPD = require('../helpers/getOwnPropertyDescriptor');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
var IsAccessorDescriptor = require('./IsAccessorDescriptor');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsExtensible = require('./IsExtensible');
var IsPropertyKey = require('./IsPropertyKey');
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
var SameValue = require('./SameValue');
var Type = require('./Type');
var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarydefineownproperty
module.exports = function OrdinaryDefineOwnProperty(O, P, Desc) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: O must be an Object');
}
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: P must be a Property Key');
}
if (!isPropertyDescriptor({
Type: Type,
IsDataDescriptor: IsDataDescriptor,
IsAccessorDescriptor: IsAccessorDescriptor
}, Desc)) {
throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
}
if (!$gOPD) {
// ES3/IE 8 fallback
if (IsAccessorDescriptor(Desc)) {
throw new $SyntaxError('This environment does not support accessor property descriptors.');
}
var creatingNormalDataProperty = !(P in O)
&& Desc['[[Writable]]']
&& Desc['[[Enumerable]]']
&& Desc['[[Configurable]]']
&& '[[Value]]' in Desc;
var settingExistingDataProperty = (P in O)
&& (!('[[Configurable]]' in Desc) || Desc['[[Configurable]]'])
&& (!('[[Enumerable]]' in Desc) || Desc['[[Enumerable]]'])
&& (!('[[Writable]]' in Desc) || Desc['[[Writable]]'])
&& '[[Value]]' in Desc;
if (creatingNormalDataProperty || settingExistingDataProperty) {
O[P] = Desc['[[Value]]']; // eslint-disable-line no-param-reassign
return SameValue(O[P], Desc['[[Value]]']);
}
throw new $SyntaxError('This environment does not support defining non-writable, non-enumerable, or non-configurable properties');
}
var desc = $gOPD(O, P);
var current = desc && ToPropertyDescriptor(desc);
var extensible = IsExtensible(O);
return ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current);
};

View file

@ -0,0 +1,44 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $gOPD = require('../helpers/getOwnPropertyDescriptor');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('../helpers/callBound');
var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
var has = require('has');
var IsArray = require('./IsArray');
var IsPropertyKey = require('./IsPropertyKey');
var IsRegExp = require('./IsRegExp');
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty
module.exports = function OrdinaryGetOwnProperty(O, P) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: O must be an Object');
}
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: P must be a Property Key');
}
if (!has(O, P)) {
return void 0;
}
if (!$gOPD) {
// ES3 / IE 8 fallback
var arrayLength = IsArray(O) && P === 'length';
var regexLastIndex = IsRegExp(O) && P === 'lastIndex';
return {
'[[Configurable]]': !(arrayLength || regexLastIndex),
'[[Enumerable]]': $isEnumerable(O, P),
'[[Value]]': O[P],
'[[Writable]]': true
};
}
return ToPropertyDescriptor($gOPD(O, P));
};

View file

@ -0,0 +1,25 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var Get = require('./Get');
var IsCallable = require('./IsCallable');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance
module.exports = function OrdinaryHasInstance(C, O) {
if (IsCallable(C) === false) {
return false;
}
if (Type(O) !== 'Object') {
return false;
}
var P = Get(C, 'prototype');
if (Type(P) !== 'Object') {
throw new $TypeError('OrdinaryHasInstance called on an object with an invalid prototype property.');
}
return O instanceof C;
};

View file

@ -0,0 +1,20 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasproperty
module.exports = function OrdinaryHasProperty(O, P) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: P must be a Property Key');
}
return P in O;
};

View file

@ -0,0 +1,52 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('../helpers/callBound');
var forEach = require('../helpers/forEach');
var $charCodeAt = callBound('String.prototype.charCodeAt');
var $numberToString = callBound('Number.prototype.toString');
var $toLowerCase = callBound('String.prototype.toLowerCase');
var $strSlice = callBound('String.prototype.slice');
var $strSplit = callBound('String.prototype.split');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/7.0/#sec-quotejsonstring
var escapes = {
'\u0008': 'b',
'\u000C': 'f',
'\u000A': 'n',
'\u000D': 'r',
'\u0009': 't'
};
module.exports = function QuoteJSONString(value) {
if (Type(value) !== 'String') {
throw new $TypeError('Assertion failed: `value` must be a String');
}
var product = '"';
if (value) {
forEach($strSplit(value), function (C) {
if (C === '"' || C === '\\') {
product += '\u005C' + C;
} else if (C === '\u0008' || C === '\u000C' || C === '\u000A' || C === '\u000D' || C === '\u0009') {
var abbrev = escapes[C];
product += '\u005C' + abbrev;
} else {
var cCharCode = $charCodeAt(C, 0);
if (cCharCode < 0x20) {
product += '\u005Cu' + $toLowerCase($strSlice('0000' + $numberToString(cCharCode, 16), -4));
} else {
product += C;
}
}
});
}
product += '"';
return product;
};

View file

@ -0,0 +1,32 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var regexExec = require('../helpers/callBound')('RegExp.prototype.exec');
var Call = require('./Call');
var Get = require('./Get');
var IsCallable = require('./IsCallable');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-regexpexec
module.exports = function RegExpExec(R, S) {
if (Type(R) !== 'Object') {
throw new $TypeError('Assertion failed: `R` must be an Object');
}
if (Type(S) !== 'String') {
throw new $TypeError('Assertion failed: `S` must be a String');
}
var exec = Get(R, 'exec');
if (IsCallable(exec)) {
var result = Call(exec, R, [S]);
if (result === null || Type(result) === 'Object') {
return result;
}
throw new $TypeError('"exec" method must return `null` or an Object');
}
return regexExec(R, S);
};

View file

@ -0,0 +1,3 @@
'use strict';
module.exports = require('../5/CheckObjectCoercible');

View file

@ -0,0 +1,13 @@
'use strict';
var $isNaN = require('../helpers/isNaN');
// http://www.ecma-international.org/ecma-262/5.1/#sec-9.12
module.exports = function SameValue(x, y) {
if (x === y) { // 0 === -0, but they are not identical.
if (x === 0) { return 1 / x === 1 / y; }
return true;
}
return $isNaN(x) && $isNaN(y);
};

View file

@ -0,0 +1,9 @@
'use strict';
var $isNaN = require('../helpers/isNaN');
// https://www.ecma-international.org/ecma-262/6.0/#sec-samevaluezero
module.exports = function SameValueZero(x, y) {
return (x === y) || ($isNaN(x) && $isNaN(y));
};

View file

@ -0,0 +1,14 @@
'use strict';
var floor = require('./floor');
var modulo = require('./modulo');
var timeConstants = require('../helpers/timeConstants');
var msPerSecond = timeConstants.msPerSecond;
var SecondsPerMinute = timeConstants.SecondsPerMinute;
// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10
module.exports = function SecFromTime(t) {
return modulo(floor(t / msPerSecond), SecondsPerMinute);
};

View file

@ -0,0 +1,47 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var SameValue = require('./SameValue');
var Type = require('./Type');
// IE 9 does not throw in strict mode when writability/configurability/extensibility is violated
var noThrowOnStrictViolation = (function () {
try {
delete [].length;
return true;
} catch (e) {
return false;
}
}());
// https://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw
module.exports = function Set(O, P, V, Throw) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: `O` must be an Object');
}
if (!IsPropertyKey(P)) {
throw new $TypeError('Assertion failed: `P` must be a Property Key');
}
if (Type(Throw) !== 'Boolean') {
throw new $TypeError('Assertion failed: `Throw` must be a Boolean');
}
if (Throw) {
O[P] = V; // eslint-disable-line no-param-reassign
if (noThrowOnStrictViolation && !SameValue(O[P], V)) {
throw new $TypeError('Attempted to assign to readonly property.');
}
return true;
} else {
try {
O[P] = V; // eslint-disable-line no-param-reassign
return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
} catch (e) {
return false;
}
}
};

View file

@ -0,0 +1,44 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var has = require('has');
var $TypeError = GetIntrinsic('%TypeError%');
var getSymbolDescription = require('../helpers/getSymbolDescription');
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
var IsExtensible = require('./IsExtensible');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-setfunctionname
module.exports = function SetFunctionName(F, name) {
if (typeof F !== 'function') {
throw new $TypeError('Assertion failed: `F` must be a function');
}
if (!IsExtensible(F) || has(F, 'name')) {
throw new $TypeError('Assertion failed: `F` must be extensible, and must not have a `name` own property');
}
var nameType = 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 DefinePropertyOrThrow(F, 'name', {
'[[Value]]': name,
'[[Writable]]': false,
'[[Enumerable]]': false,
'[[Configurable]]': true
});
};

View file

@ -0,0 +1,57 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
var $preventExtensions = GetIntrinsic('%Object.preventExtensions%');
var $gOPD = require('../helpers/getOwnPropertyDescriptor');
var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
var forEach = require('../helpers/forEach');
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
var IsAccessorDescriptor = require('./IsAccessorDescriptor');
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/6.0/#sec-setintegritylevel
module.exports = function SetIntegrityLevel(O, level) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
if (level !== 'sealed' && level !== 'frozen') {
throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`');
}
if (!$preventExtensions) {
throw new $SyntaxError('SetIntegrityLevel requires native `Object.preventExtensions` support');
}
var status = $preventExtensions(O);
if (!status) {
return false;
}
if (!$gOPN) {
throw new $SyntaxError('SetIntegrityLevel requires native `Object.getOwnPropertyNames` support');
}
var theKeys = $gOPN(O);
if (level === 'sealed') {
forEach(theKeys, function (k) {
DefinePropertyOrThrow(O, k, { configurable: false });
});
} else if (level === 'frozen') {
forEach(theKeys, function (k) {
var currentDesc = $gOPD(O, k);
if (typeof currentDesc !== 'undefined') {
var desc;
if (IsAccessorDescriptor(ToPropertyDescriptor(currentDesc))) {
desc = { configurable: false };
} else {
desc = { configurable: false, writable: false };
}
DefinePropertyOrThrow(O, k, desc);
}
});
}
return true;
};

View file

@ -0,0 +1,32 @@
'use strict';
var GetIntrinsic = require('../GetIntrinsic');
var $species = GetIntrinsic('%Symbol.species%', true);
var $TypeError = GetIntrinsic('%TypeError%');
var IsConstructor = require('./IsConstructor');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-speciesconstructor
module.exports = function SpeciesConstructor(O, defaultConstructor) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
var C = O.constructor;
if (typeof C === 'undefined') {
return defaultConstructor;
}
if (Type(C) !== 'Object') {
throw new $TypeError('O.constructor is not an Object');
}
var S = $species ? C[$species] : void 0;
if (S == null) {
return defaultConstructor;
}
if (IsConstructor(S)) {
return S;
}
throw new $TypeError('no constructor found');
};

View file

@ -0,0 +1,17 @@
'use strict';
var Type = require('./Type');
// https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6
module.exports = function StrictEqualityComparison(x, y) {
var xType = Type(x);
var yType = Type(y);
if (xType !== yType) {
return false;
}
if (xType === 'Undefined' || xType === 'Null') {
return true;
}
return x === y; // shortcut for steps 4-7
};

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