diff --git a/core-js/LICENSE b/core-js/LICENSE new file mode 100644 index 0000000000..834b267db7 --- /dev/null +++ b/core-js/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014-2019 Denis Pushkarev + +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. diff --git a/core-js/README.md b/core-js/README.md new file mode 100644 index 0000000000..77e98690bc --- /dev/null +++ b/core-js/README.md @@ -0,0 +1,58 @@ +# core-js + +[![Sponsors on Open Collective](https://opencollective.com/core-js/sponsors/badge.svg)](#sponsors) [![Backers on Open Collective](https://opencollective.com/core-js/backers/badge.svg)](#backers) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/zloirock/core-js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![version](https://img.shields.io/npm/v/core-js.svg)](https://www.npmjs.com/package/core-js) [![npm downloads](https://img.shields.io/npm/dm/core-js.svg)](http://npm-stat.com/charts.html?package=core-js&author=&from=2014-11-18) [![Build Status](https://travis-ci.org/zloirock/core-js.svg)](https://travis-ci.org/zloirock/core-js) [![devDependency status](https://david-dm.org/zloirock/core-js/dev-status.svg)](https://david-dm.org/zloirock/core-js?type=dev) + +> Modular standard library for JavaScript. Includes polyfills for [ECMAScript up to 2019](https://github.com/zloirock/core-js#ecmascript): [promises](https://github.com/zloirock/core-js#ecmascript-promise), [symbols](https://github.com/zloirock/core-js#ecmascript-symbol), [collections](https://github.com/zloirock/core-js#ecmascript-collections), iterators, [typed arrays](https://github.com/zloirock/core-js#ecmascript-typed-arrays), many other features, [ECMAScript proposals](https://github.com/zloirock/core-js#ecmascript-proposals), [some cross-platform WHATWG / W3C features and proposals](#web-standards) like [`URL`](https://github.com/zloirock/core-js#url-and-urlsearchparams). You can load only required features or use it without global namespace pollution. + +## As advertising: the author is looking for a good job -) + +## [core-js@3, babel and a look into the future](https://github.com/zloirock/core-js/tree/master/docs/2019-03-19-core-js-3-babel-and-a-look-into-the-future.md) + +## Raising funds + +`core-js` isn't backed by a company, so the future of this project depends on you. Become a sponsor or a backer [**on Open Collective**](https://opencollective.com/core-js) or [**on Patreon**](https://www.patreon.com/zloirock) if you are interested in `core-js`. + +--- + + + +--- + + + +--- + +[*Example*](http://goo.gl/a2xexl): +```js +import 'core-js'; // <- at the top of your entry point + +Array.from(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3] +[1, [2, 3], [4, [5]]].flat(2); // => [1, 2, 3, 4, 5] +Promise.resolve(32).then(x => console.log(x)); // => 32 +``` + +*You can load only required features*: +```js +import 'core-js/features/array/from'; // <- at the top of your entry point +import 'core-js/features/array/flat'; // <- at the top of your entry point +import 'core-js/features/set'; // <- at the top of your entry point +import 'core-js/features/promise'; // <- at the top of your entry point + +Array.from(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3] +[1, [2, 3], [4, [5]]].flat(2); // => [1, 2, 3, 4, 5] +Promise.resolve(32).then(x => console.log(x)); // => 32 +``` + +*Or use it without global namespace pollution*: +```js +import from from 'core-js-pure/features/array/from'; +import flat from 'core-js-pure/features/array/flat'; +import Set from 'core-js-pure/features/set'; +import Promise from 'core-js-pure/features/promise'; + +from(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3] +flat([1, [2, 3], [4, [5]]], 2); // => [1, 2, 3, 4, 5] +Promise.resolve(32).then(x => console.log(x)); // => 32 +``` + +**It's a global version (first 2 examples), for more info see [`core-js` documentation](https://github.com/zloirock/core-js/blob/master/README.md).** diff --git a/core-js/configurator.js b/core-js/configurator.js new file mode 100644 index 0000000000..caafac15bb --- /dev/null +++ b/core-js/configurator.js @@ -0,0 +1,16 @@ +var isArray = require('./internals/is-array'); +var isForced = require('./internals/is-forced'); +var data = isForced.data; +var normalize = isForced.normalize; + +var setAggressivenessLevel = function (object, constant) { + if (isArray(object)) for (var i = 0; i < object.length; i++) data[normalize(object[i])] = constant; +}; + +module.exports = function (options) { + if (typeof options == 'object') { + setAggressivenessLevel(options.useNative, isForced.NATIVE); + setAggressivenessLevel(options.usePolyfill, isForced.POLYFILL); + setAggressivenessLevel(options.useFeatureDetection, null); + } +}; diff --git a/core-js/es/README.md b/core-js/es/README.md new file mode 100644 index 0000000000..872a356ed9 --- /dev/null +++ b/core-js/es/README.md @@ -0,0 +1 @@ +This folder contains entry points for [stable ECMAScript features](https://github.com/zloirock/core-js/tree/v3#ecmascript) with dependencies. diff --git a/core-js/es/array-buffer/constructor.js b/core-js/es/array-buffer/constructor.js new file mode 100644 index 0000000000..b7a76ed5ce --- /dev/null +++ b/core-js/es/array-buffer/constructor.js @@ -0,0 +1,5 @@ +require('../../modules/es.array-buffer.constructor'); +require('../../modules/es.object.to-string'); +var path = require('../../internals/path'); + +module.exports = path.ArrayBuffer; diff --git a/core-js/es/array-buffer/index.js b/core-js/es/array-buffer/index.js new file mode 100644 index 0000000000..8697373d9e --- /dev/null +++ b/core-js/es/array-buffer/index.js @@ -0,0 +1,7 @@ +require('../../modules/es.array-buffer.constructor'); +require('../../modules/es.array-buffer.is-view'); +require('../../modules/es.array-buffer.slice'); +require('../../modules/es.object.to-string'); +var path = require('../../internals/path'); + +module.exports = path.ArrayBuffer; diff --git a/core-js/es/array-buffer/is-view.js b/core-js/es/array-buffer/is-view.js new file mode 100644 index 0000000000..c86c3b7688 --- /dev/null +++ b/core-js/es/array-buffer/is-view.js @@ -0,0 +1,4 @@ +require('../../modules/es.array-buffer.is-view'); +var path = require('../../internals/path'); + +module.exports = path.ArrayBuffer.isView; diff --git a/core-js/es/array-buffer/slice.js b/core-js/es/array-buffer/slice.js new file mode 100644 index 0000000000..931f8bc976 --- /dev/null +++ b/core-js/es/array-buffer/slice.js @@ -0,0 +1 @@ +require('../../modules/es.array-buffer.slice'); diff --git a/core-js/es/array/concat.js b/core-js/es/array/concat.js new file mode 100644 index 0000000000..9a13ce625b --- /dev/null +++ b/core-js/es/array/concat.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.concat'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'concat'); diff --git a/core-js/es/array/copy-within.js b/core-js/es/array/copy-within.js new file mode 100644 index 0000000000..de8032f659 --- /dev/null +++ b/core-js/es/array/copy-within.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.copy-within'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'copyWithin'); diff --git a/core-js/es/array/entries.js b/core-js/es/array/entries.js new file mode 100644 index 0000000000..efd91b0fed --- /dev/null +++ b/core-js/es/array/entries.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'entries'); diff --git a/core-js/es/array/every.js b/core-js/es/array/every.js new file mode 100644 index 0000000000..b95c87f323 --- /dev/null +++ b/core-js/es/array/every.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.every'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'every'); diff --git a/core-js/es/array/fill.js b/core-js/es/array/fill.js new file mode 100644 index 0000000000..c52d60a132 --- /dev/null +++ b/core-js/es/array/fill.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.fill'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'fill'); diff --git a/core-js/es/array/filter.js b/core-js/es/array/filter.js new file mode 100644 index 0000000000..f1d0e16d5f --- /dev/null +++ b/core-js/es/array/filter.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.filter'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'filter'); diff --git a/core-js/es/array/find-index.js b/core-js/es/array/find-index.js new file mode 100644 index 0000000000..9ccbdda8fe --- /dev/null +++ b/core-js/es/array/find-index.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.find-index'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'findIndex'); diff --git a/core-js/es/array/find.js b/core-js/es/array/find.js new file mode 100644 index 0000000000..7b3cc38b7f --- /dev/null +++ b/core-js/es/array/find.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.find'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'find'); diff --git a/core-js/es/array/flat-map.js b/core-js/es/array/flat-map.js new file mode 100644 index 0000000000..f201cbbc4f --- /dev/null +++ b/core-js/es/array/flat-map.js @@ -0,0 +1,5 @@ +require('../../modules/es.array.flat-map'); +require('../../modules/es.array.unscopables.flat-map'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'flatMap'); diff --git a/core-js/es/array/flat.js b/core-js/es/array/flat.js new file mode 100644 index 0000000000..c6717609a3 --- /dev/null +++ b/core-js/es/array/flat.js @@ -0,0 +1,5 @@ +require('../../modules/es.array.flat'); +require('../../modules/es.array.unscopables.flat'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'flat'); diff --git a/core-js/es/array/for-each.js b/core-js/es/array/for-each.js new file mode 100644 index 0000000000..2851813934 --- /dev/null +++ b/core-js/es/array/for-each.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.for-each'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'forEach'); diff --git a/core-js/es/array/from.js b/core-js/es/array/from.js new file mode 100644 index 0000000000..f54806d287 --- /dev/null +++ b/core-js/es/array/from.js @@ -0,0 +1,5 @@ +require('../../modules/es.string.iterator'); +require('../../modules/es.array.from'); +var path = require('../../internals/path'); + +module.exports = path.Array.from; diff --git a/core-js/es/array/includes.js b/core-js/es/array/includes.js new file mode 100644 index 0000000000..06f837ce07 --- /dev/null +++ b/core-js/es/array/includes.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.includes'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'includes'); diff --git a/core-js/es/array/index-of.js b/core-js/es/array/index-of.js new file mode 100644 index 0000000000..83e91e72f6 --- /dev/null +++ b/core-js/es/array/index-of.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.index-of'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'indexOf'); diff --git a/core-js/es/array/index.js b/core-js/es/array/index.js new file mode 100644 index 0000000000..8c18680fa1 --- /dev/null +++ b/core-js/es/array/index.js @@ -0,0 +1,33 @@ +require('../../modules/es.string.iterator'); +require('../../modules/es.array.from'); +require('../../modules/es.array.is-array'); +require('../../modules/es.array.of'); +require('../../modules/es.array.concat'); +require('../../modules/es.array.copy-within'); +require('../../modules/es.array.every'); +require('../../modules/es.array.fill'); +require('../../modules/es.array.filter'); +require('../../modules/es.array.find'); +require('../../modules/es.array.find-index'); +require('../../modules/es.array.flat'); +require('../../modules/es.array.flat-map'); +require('../../modules/es.array.for-each'); +require('../../modules/es.array.includes'); +require('../../modules/es.array.index-of'); +require('../../modules/es.array.iterator'); +require('../../modules/es.array.join'); +require('../../modules/es.array.last-index-of'); +require('../../modules/es.array.map'); +require('../../modules/es.array.reduce'); +require('../../modules/es.array.reduce-right'); +require('../../modules/es.array.reverse'); +require('../../modules/es.array.slice'); +require('../../modules/es.array.some'); +require('../../modules/es.array.sort'); +require('../../modules/es.array.species'); +require('../../modules/es.array.splice'); +require('../../modules/es.array.unscopables.flat'); +require('../../modules/es.array.unscopables.flat-map'); +var path = require('../../internals/path'); + +module.exports = path.Array; diff --git a/core-js/es/array/is-array.js b/core-js/es/array/is-array.js new file mode 100644 index 0000000000..d000180bc2 --- /dev/null +++ b/core-js/es/array/is-array.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.is-array'); +var path = require('../../internals/path'); + +module.exports = path.Array.isArray; diff --git a/core-js/es/array/iterator.js b/core-js/es/array/iterator.js new file mode 100644 index 0000000000..726484e036 --- /dev/null +++ b/core-js/es/array/iterator.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'values'); diff --git a/core-js/es/array/join.js b/core-js/es/array/join.js new file mode 100644 index 0000000000..523edbf09c --- /dev/null +++ b/core-js/es/array/join.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.join'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'join'); diff --git a/core-js/es/array/keys.js b/core-js/es/array/keys.js new file mode 100644 index 0000000000..679d525505 --- /dev/null +++ b/core-js/es/array/keys.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'keys'); diff --git a/core-js/es/array/last-index-of.js b/core-js/es/array/last-index-of.js new file mode 100644 index 0000000000..616897f9da --- /dev/null +++ b/core-js/es/array/last-index-of.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.last-index-of'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'lastIndexOf'); diff --git a/core-js/es/array/map.js b/core-js/es/array/map.js new file mode 100644 index 0000000000..6b641fe242 --- /dev/null +++ b/core-js/es/array/map.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.map'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'map'); diff --git a/core-js/es/array/of.js b/core-js/es/array/of.js new file mode 100644 index 0000000000..5153029f34 --- /dev/null +++ b/core-js/es/array/of.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.of'); +var path = require('../../internals/path'); + +module.exports = path.Array.of; diff --git a/core-js/es/array/reduce-right.js b/core-js/es/array/reduce-right.js new file mode 100644 index 0000000000..43cb972f20 --- /dev/null +++ b/core-js/es/array/reduce-right.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.reduce-right'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'reduceRight'); diff --git a/core-js/es/array/reduce.js b/core-js/es/array/reduce.js new file mode 100644 index 0000000000..db06a3ffc6 --- /dev/null +++ b/core-js/es/array/reduce.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.reduce'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'reduce'); diff --git a/core-js/es/array/reverse.js b/core-js/es/array/reverse.js new file mode 100644 index 0000000000..d5cc94ee2f --- /dev/null +++ b/core-js/es/array/reverse.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.reverse'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'reverse'); diff --git a/core-js/es/array/slice.js b/core-js/es/array/slice.js new file mode 100644 index 0000000000..0c9eb94236 --- /dev/null +++ b/core-js/es/array/slice.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.slice'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'slice'); diff --git a/core-js/es/array/some.js b/core-js/es/array/some.js new file mode 100644 index 0000000000..407d556303 --- /dev/null +++ b/core-js/es/array/some.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.some'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'some'); diff --git a/core-js/es/array/sort.js b/core-js/es/array/sort.js new file mode 100644 index 0000000000..0336090667 --- /dev/null +++ b/core-js/es/array/sort.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.sort'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'sort'); diff --git a/core-js/es/array/splice.js b/core-js/es/array/splice.js new file mode 100644 index 0000000000..95b51f052c --- /dev/null +++ b/core-js/es/array/splice.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.splice'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'splice'); diff --git a/core-js/es/array/values.js b/core-js/es/array/values.js new file mode 100644 index 0000000000..726484e036 --- /dev/null +++ b/core-js/es/array/values.js @@ -0,0 +1,4 @@ +require('../../modules/es.array.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'values'); diff --git a/core-js/es/array/virtual/concat.js b/core-js/es/array/virtual/concat.js new file mode 100644 index 0000000000..fc9eb035b3 --- /dev/null +++ b/core-js/es/array/virtual/concat.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.concat'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').concat; diff --git a/core-js/es/array/virtual/copy-within.js b/core-js/es/array/virtual/copy-within.js new file mode 100644 index 0000000000..71cc9bdff8 --- /dev/null +++ b/core-js/es/array/virtual/copy-within.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.copy-within'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').copyWithin; diff --git a/core-js/es/array/virtual/entries.js b/core-js/es/array/virtual/entries.js new file mode 100644 index 0000000000..1ce2e786b2 --- /dev/null +++ b/core-js/es/array/virtual/entries.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.iterator'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').entries; diff --git a/core-js/es/array/virtual/every.js b/core-js/es/array/virtual/every.js new file mode 100644 index 0000000000..cc45acc524 --- /dev/null +++ b/core-js/es/array/virtual/every.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.every'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').every; diff --git a/core-js/es/array/virtual/fill.js b/core-js/es/array/virtual/fill.js new file mode 100644 index 0000000000..75b5c8b328 --- /dev/null +++ b/core-js/es/array/virtual/fill.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.fill'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').fill; diff --git a/core-js/es/array/virtual/filter.js b/core-js/es/array/virtual/filter.js new file mode 100644 index 0000000000..90cb323d3b --- /dev/null +++ b/core-js/es/array/virtual/filter.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.filter'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').filter; diff --git a/core-js/es/array/virtual/find-index.js b/core-js/es/array/virtual/find-index.js new file mode 100644 index 0000000000..ff1a621833 --- /dev/null +++ b/core-js/es/array/virtual/find-index.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.find-index'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').findIndex; diff --git a/core-js/es/array/virtual/find.js b/core-js/es/array/virtual/find.js new file mode 100644 index 0000000000..a4372bdc48 --- /dev/null +++ b/core-js/es/array/virtual/find.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.find'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').find; diff --git a/core-js/es/array/virtual/flat-map.js b/core-js/es/array/virtual/flat-map.js new file mode 100644 index 0000000000..9e379f4d83 --- /dev/null +++ b/core-js/es/array/virtual/flat-map.js @@ -0,0 +1,5 @@ +require('../../../modules/es.array.flat-map'); +require('../../../modules/es.array.unscopables.flat-map'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').flatMap; diff --git a/core-js/es/array/virtual/flat.js b/core-js/es/array/virtual/flat.js new file mode 100644 index 0000000000..60b772ee9e --- /dev/null +++ b/core-js/es/array/virtual/flat.js @@ -0,0 +1,5 @@ +require('../../../modules/es.array.flat'); +require('../../../modules/es.array.unscopables.flat'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').flat; diff --git a/core-js/es/array/virtual/for-each.js b/core-js/es/array/virtual/for-each.js new file mode 100644 index 0000000000..c65b26cf31 --- /dev/null +++ b/core-js/es/array/virtual/for-each.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.for-each'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').forEach; diff --git a/core-js/es/array/virtual/includes.js b/core-js/es/array/virtual/includes.js new file mode 100644 index 0000000000..732d58be95 --- /dev/null +++ b/core-js/es/array/virtual/includes.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.includes'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').includes; diff --git a/core-js/es/array/virtual/index-of.js b/core-js/es/array/virtual/index-of.js new file mode 100644 index 0000000000..074e191e62 --- /dev/null +++ b/core-js/es/array/virtual/index-of.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.index-of'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').indexOf; diff --git a/core-js/es/array/virtual/index.js b/core-js/es/array/virtual/index.js new file mode 100644 index 0000000000..f1455e12cb --- /dev/null +++ b/core-js/es/array/virtual/index.js @@ -0,0 +1,29 @@ +require('../../../modules/es.array.concat'); +require('../../../modules/es.array.copy-within'); +require('../../../modules/es.array.every'); +require('../../../modules/es.array.fill'); +require('../../../modules/es.array.filter'); +require('../../../modules/es.array.find'); +require('../../../modules/es.array.find-index'); +require('../../../modules/es.array.flat'); +require('../../../modules/es.array.flat-map'); +require('../../../modules/es.array.for-each'); +require('../../../modules/es.array.includes'); +require('../../../modules/es.array.index-of'); +require('../../../modules/es.array.iterator'); +require('../../../modules/es.array.join'); +require('../../../modules/es.array.last-index-of'); +require('../../../modules/es.array.map'); +require('../../../modules/es.array.reduce'); +require('../../../modules/es.array.reduce-right'); +require('../../../modules/es.array.reverse'); +require('../../../modules/es.array.slice'); +require('../../../modules/es.array.some'); +require('../../../modules/es.array.sort'); +require('../../../modules/es.array.species'); +require('../../../modules/es.array.splice'); +require('../../../modules/es.array.unscopables.flat'); +require('../../../modules/es.array.unscopables.flat-map'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array'); diff --git a/core-js/es/array/virtual/iterator.js b/core-js/es/array/virtual/iterator.js new file mode 100644 index 0000000000..cd9f502f06 --- /dev/null +++ b/core-js/es/array/virtual/iterator.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.iterator'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').values; diff --git a/core-js/es/array/virtual/join.js b/core-js/es/array/virtual/join.js new file mode 100644 index 0000000000..8cb329e92c --- /dev/null +++ b/core-js/es/array/virtual/join.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.join'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').join; diff --git a/core-js/es/array/virtual/keys.js b/core-js/es/array/virtual/keys.js new file mode 100644 index 0000000000..28829901c8 --- /dev/null +++ b/core-js/es/array/virtual/keys.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.iterator'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').keys; diff --git a/core-js/es/array/virtual/last-index-of.js b/core-js/es/array/virtual/last-index-of.js new file mode 100644 index 0000000000..ca1ae9b796 --- /dev/null +++ b/core-js/es/array/virtual/last-index-of.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.last-index-of'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').lastIndexOf; diff --git a/core-js/es/array/virtual/map.js b/core-js/es/array/virtual/map.js new file mode 100644 index 0000000000..7205f966fc --- /dev/null +++ b/core-js/es/array/virtual/map.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.map'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').map; diff --git a/core-js/es/array/virtual/reduce-right.js b/core-js/es/array/virtual/reduce-right.js new file mode 100644 index 0000000000..0ad5926436 --- /dev/null +++ b/core-js/es/array/virtual/reduce-right.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.reduce-right'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').reduceRight; diff --git a/core-js/es/array/virtual/reduce.js b/core-js/es/array/virtual/reduce.js new file mode 100644 index 0000000000..d9b01c4c01 --- /dev/null +++ b/core-js/es/array/virtual/reduce.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.reduce'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').reduce; diff --git a/core-js/es/array/virtual/reverse.js b/core-js/es/array/virtual/reverse.js new file mode 100644 index 0000000000..31ca6d864a --- /dev/null +++ b/core-js/es/array/virtual/reverse.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.reverse'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').reverse; diff --git a/core-js/es/array/virtual/slice.js b/core-js/es/array/virtual/slice.js new file mode 100644 index 0000000000..f60f5d5954 --- /dev/null +++ b/core-js/es/array/virtual/slice.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.slice'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').slice; diff --git a/core-js/es/array/virtual/some.js b/core-js/es/array/virtual/some.js new file mode 100644 index 0000000000..a7ae18f82e --- /dev/null +++ b/core-js/es/array/virtual/some.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.some'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').some; diff --git a/core-js/es/array/virtual/sort.js b/core-js/es/array/virtual/sort.js new file mode 100644 index 0000000000..b7e0a46061 --- /dev/null +++ b/core-js/es/array/virtual/sort.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.sort'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').sort; diff --git a/core-js/es/array/virtual/splice.js b/core-js/es/array/virtual/splice.js new file mode 100644 index 0000000000..2533cecc4f --- /dev/null +++ b/core-js/es/array/virtual/splice.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.splice'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').splice; diff --git a/core-js/es/array/virtual/values.js b/core-js/es/array/virtual/values.js new file mode 100644 index 0000000000..cd9f502f06 --- /dev/null +++ b/core-js/es/array/virtual/values.js @@ -0,0 +1,4 @@ +require('../../../modules/es.array.iterator'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Array').values; diff --git a/core-js/es/data-view/index.js b/core-js/es/data-view/index.js new file mode 100644 index 0000000000..da3582d7ff --- /dev/null +++ b/core-js/es/data-view/index.js @@ -0,0 +1,5 @@ +require('../../modules/es.data-view'); +require('../../modules/es.object.to-string'); +var path = require('../../internals/path'); + +module.exports = path.DataView; diff --git a/core-js/es/date/index.js b/core-js/es/date/index.js new file mode 100644 index 0000000000..88e7a58367 --- /dev/null +++ b/core-js/es/date/index.js @@ -0,0 +1,8 @@ +require('../../modules/es.date.now'); +require('../../modules/es.date.to-json'); +require('../../modules/es.date.to-iso-string'); +require('../../modules/es.date.to-string'); +require('../../modules/es.date.to-primitive'); +var path = require('../../internals/path'); + +module.exports = path.Date; diff --git a/core-js/es/date/now.js b/core-js/es/date/now.js new file mode 100644 index 0000000000..ed6843e37c --- /dev/null +++ b/core-js/es/date/now.js @@ -0,0 +1,4 @@ +require('../../modules/es.date.now'); +var path = require('../../internals/path'); + +module.exports = path.Date.now; diff --git a/core-js/es/date/to-iso-string.js b/core-js/es/date/to-iso-string.js new file mode 100644 index 0000000000..ee06767cca --- /dev/null +++ b/core-js/es/date/to-iso-string.js @@ -0,0 +1,5 @@ +require('../../modules/es.date.to-iso-string'); +require('../../modules/es.date.to-json'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Date', 'toISOString'); diff --git a/core-js/es/date/to-json.js b/core-js/es/date/to-json.js new file mode 100644 index 0000000000..1fa104a272 --- /dev/null +++ b/core-js/es/date/to-json.js @@ -0,0 +1,4 @@ +require('../../modules/es.date.to-json'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Date', 'toJSON'); diff --git a/core-js/es/date/to-primitive.js b/core-js/es/date/to-primitive.js new file mode 100644 index 0000000000..07bdd33613 --- /dev/null +++ b/core-js/es/date/to-primitive.js @@ -0,0 +1,6 @@ +require('../../modules/es.date.to-primitive'); +var toPrimitive = require('../../internals/date-to-primitive'); + +module.exports = function (it, hint) { + return toPrimitive.call(it, hint); +}; diff --git a/core-js/es/date/to-string.js b/core-js/es/date/to-string.js new file mode 100644 index 0000000000..18b713590b --- /dev/null +++ b/core-js/es/date/to-string.js @@ -0,0 +1,6 @@ +require('../../modules/es.date.to-string'); +var dateToString = Date.prototype.toString; + +module.exports = function toString(it) { + return dateToString.call(it); +}; diff --git a/core-js/es/function/bind.js b/core-js/es/function/bind.js new file mode 100644 index 0000000000..a3e3575087 --- /dev/null +++ b/core-js/es/function/bind.js @@ -0,0 +1,4 @@ +require('../../modules/es.function.bind'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Function', 'bind'); diff --git a/core-js/es/function/has-instance.js b/core-js/es/function/has-instance.js new file mode 100644 index 0000000000..33722b083c --- /dev/null +++ b/core-js/es/function/has-instance.js @@ -0,0 +1,4 @@ +require('../../modules/es.function.has-instance'); +var wellKnownSymbol = require('../../internals/well-known-symbol'); + +module.exports = Function[wellKnownSymbol('hasInstance')]; diff --git a/core-js/es/function/index.js b/core-js/es/function/index.js new file mode 100644 index 0000000000..9caa29d080 --- /dev/null +++ b/core-js/es/function/index.js @@ -0,0 +1,6 @@ +require('../../modules/es.function.bind'); +require('../../modules/es.function.name'); +require('../../modules/es.function.has-instance'); +var path = require('../../internals/path'); + +module.exports = path.Function; diff --git a/core-js/es/function/name.js b/core-js/es/function/name.js new file mode 100644 index 0000000000..43344dbd29 --- /dev/null +++ b/core-js/es/function/name.js @@ -0,0 +1 @@ +require('../../modules/es.function.name'); diff --git a/core-js/es/function/virtual/bind.js b/core-js/es/function/virtual/bind.js new file mode 100644 index 0000000000..7ec110d6bb --- /dev/null +++ b/core-js/es/function/virtual/bind.js @@ -0,0 +1,4 @@ +require('../../../modules/es.function.bind'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Function').bind; diff --git a/core-js/es/function/virtual/index.js b/core-js/es/function/virtual/index.js new file mode 100644 index 0000000000..0a0113555d --- /dev/null +++ b/core-js/es/function/virtual/index.js @@ -0,0 +1,4 @@ +require('../../../modules/es.function.bind'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Function'); diff --git a/core-js/es/index.js b/core-js/es/index.js new file mode 100644 index 0000000000..dc8344e11f --- /dev/null +++ b/core-js/es/index.js @@ -0,0 +1,205 @@ +require('../modules/es.symbol'); +require('../modules/es.symbol.async-iterator'); +require('../modules/es.symbol.description'); +require('../modules/es.symbol.has-instance'); +require('../modules/es.symbol.is-concat-spreadable'); +require('../modules/es.symbol.iterator'); +require('../modules/es.symbol.match'); +require('../modules/es.symbol.match-all'); +require('../modules/es.symbol.replace'); +require('../modules/es.symbol.search'); +require('../modules/es.symbol.species'); +require('../modules/es.symbol.split'); +require('../modules/es.symbol.to-primitive'); +require('../modules/es.symbol.to-string-tag'); +require('../modules/es.symbol.unscopables'); +require('../modules/es.object.assign'); +require('../modules/es.object.create'); +require('../modules/es.object.define-property'); +require('../modules/es.object.define-properties'); +require('../modules/es.object.entries'); +require('../modules/es.object.freeze'); +require('../modules/es.object.from-entries'); +require('../modules/es.object.get-own-property-descriptor'); +require('../modules/es.object.get-own-property-descriptors'); +require('../modules/es.object.get-own-property-names'); +require('../modules/es.object.get-prototype-of'); +require('../modules/es.object.is'); +require('../modules/es.object.is-extensible'); +require('../modules/es.object.is-frozen'); +require('../modules/es.object.is-sealed'); +require('../modules/es.object.keys'); +require('../modules/es.object.prevent-extensions'); +require('../modules/es.object.seal'); +require('../modules/es.object.set-prototype-of'); +require('../modules/es.object.values'); +require('../modules/es.object.to-string'); +require('../modules/es.object.define-getter'); +require('../modules/es.object.define-setter'); +require('../modules/es.object.lookup-getter'); +require('../modules/es.object.lookup-setter'); +require('../modules/es.function.bind'); +require('../modules/es.function.name'); +require('../modules/es.function.has-instance'); +require('../modules/es.array.from'); +require('../modules/es.array.is-array'); +require('../modules/es.array.of'); +require('../modules/es.array.concat'); +require('../modules/es.array.copy-within'); +require('../modules/es.array.every'); +require('../modules/es.array.fill'); +require('../modules/es.array.filter'); +require('../modules/es.array.find'); +require('../modules/es.array.find-index'); +require('../modules/es.array.flat'); +require('../modules/es.array.flat-map'); +require('../modules/es.array.for-each'); +require('../modules/es.array.includes'); +require('../modules/es.array.index-of'); +require('../modules/es.array.join'); +require('../modules/es.array.last-index-of'); +require('../modules/es.array.map'); +require('../modules/es.array.reduce'); +require('../modules/es.array.reduce-right'); +require('../modules/es.array.reverse'); +require('../modules/es.array.slice'); +require('../modules/es.array.some'); +require('../modules/es.array.sort'); +require('../modules/es.array.splice'); +require('../modules/es.array.species'); +require('../modules/es.array.unscopables.flat'); +require('../modules/es.array.unscopables.flat-map'); +require('../modules/es.array.iterator'); +require('../modules/es.string.from-code-point'); +require('../modules/es.string.raw'); +require('../modules/es.string.code-point-at'); +require('../modules/es.string.ends-with'); +require('../modules/es.string.includes'); +require('../modules/es.string.match'); +require('../modules/es.string.match-all'); +require('../modules/es.string.pad-end'); +require('../modules/es.string.pad-start'); +require('../modules/es.string.repeat'); +require('../modules/es.string.replace'); +require('../modules/es.string.search'); +require('../modules/es.string.split'); +require('../modules/es.string.starts-with'); +require('../modules/es.string.trim'); +require('../modules/es.string.trim-start'); +require('../modules/es.string.trim-end'); +require('../modules/es.string.iterator'); +require('../modules/es.string.anchor'); +require('../modules/es.string.big'); +require('../modules/es.string.blink'); +require('../modules/es.string.bold'); +require('../modules/es.string.fixed'); +require('../modules/es.string.fontcolor'); +require('../modules/es.string.fontsize'); +require('../modules/es.string.italics'); +require('../modules/es.string.link'); +require('../modules/es.string.small'); +require('../modules/es.string.strike'); +require('../modules/es.string.sub'); +require('../modules/es.string.sup'); +require('../modules/es.regexp.constructor'); +require('../modules/es.regexp.exec'); +require('../modules/es.regexp.flags'); +require('../modules/es.regexp.to-string'); +require('../modules/es.parse-int'); +require('../modules/es.parse-float'); +require('../modules/es.number.constructor'); +require('../modules/es.number.epsilon'); +require('../modules/es.number.is-finite'); +require('../modules/es.number.is-integer'); +require('../modules/es.number.is-nan'); +require('../modules/es.number.is-safe-integer'); +require('../modules/es.number.max-safe-integer'); +require('../modules/es.number.min-safe-integer'); +require('../modules/es.number.parse-float'); +require('../modules/es.number.parse-int'); +require('../modules/es.number.to-fixed'); +require('../modules/es.number.to-precision'); +require('../modules/es.math.acosh'); +require('../modules/es.math.asinh'); +require('../modules/es.math.atanh'); +require('../modules/es.math.cbrt'); +require('../modules/es.math.clz32'); +require('../modules/es.math.cosh'); +require('../modules/es.math.expm1'); +require('../modules/es.math.fround'); +require('../modules/es.math.hypot'); +require('../modules/es.math.imul'); +require('../modules/es.math.log10'); +require('../modules/es.math.log1p'); +require('../modules/es.math.log2'); +require('../modules/es.math.sign'); +require('../modules/es.math.sinh'); +require('../modules/es.math.tanh'); +require('../modules/es.math.to-string-tag'); +require('../modules/es.math.trunc'); +require('../modules/es.date.now'); +require('../modules/es.date.to-json'); +require('../modules/es.date.to-iso-string'); +require('../modules/es.date.to-string'); +require('../modules/es.date.to-primitive'); +require('../modules/es.json.to-string-tag'); +require('../modules/es.promise'); +require('../modules/es.promise.all-settled'); +require('../modules/es.promise.finally'); +require('../modules/es.map'); +require('../modules/es.set'); +require('../modules/es.weak-map'); +require('../modules/es.weak-set'); +require('../modules/es.array-buffer.constructor'); +require('../modules/es.array-buffer.is-view'); +require('../modules/es.array-buffer.slice'); +require('../modules/es.data-view'); +require('../modules/es.typed-array.int8-array'); +require('../modules/es.typed-array.uint8-array'); +require('../modules/es.typed-array.uint8-clamped-array'); +require('../modules/es.typed-array.int16-array'); +require('../modules/es.typed-array.uint16-array'); +require('../modules/es.typed-array.int32-array'); +require('../modules/es.typed-array.uint32-array'); +require('../modules/es.typed-array.float32-array'); +require('../modules/es.typed-array.float64-array'); +require('../modules/es.typed-array.from'); +require('../modules/es.typed-array.of'); +require('../modules/es.typed-array.copy-within'); +require('../modules/es.typed-array.every'); +require('../modules/es.typed-array.fill'); +require('../modules/es.typed-array.filter'); +require('../modules/es.typed-array.find'); +require('../modules/es.typed-array.find-index'); +require('../modules/es.typed-array.for-each'); +require('../modules/es.typed-array.includes'); +require('../modules/es.typed-array.index-of'); +require('../modules/es.typed-array.iterator'); +require('../modules/es.typed-array.join'); +require('../modules/es.typed-array.last-index-of'); +require('../modules/es.typed-array.map'); +require('../modules/es.typed-array.reduce'); +require('../modules/es.typed-array.reduce-right'); +require('../modules/es.typed-array.reverse'); +require('../modules/es.typed-array.set'); +require('../modules/es.typed-array.slice'); +require('../modules/es.typed-array.some'); +require('../modules/es.typed-array.sort'); +require('../modules/es.typed-array.subarray'); +require('../modules/es.typed-array.to-locale-string'); +require('../modules/es.typed-array.to-string'); +require('../modules/es.reflect.apply'); +require('../modules/es.reflect.construct'); +require('../modules/es.reflect.define-property'); +require('../modules/es.reflect.delete-property'); +require('../modules/es.reflect.get'); +require('../modules/es.reflect.get-own-property-descriptor'); +require('../modules/es.reflect.get-prototype-of'); +require('../modules/es.reflect.has'); +require('../modules/es.reflect.is-extensible'); +require('../modules/es.reflect.own-keys'); +require('../modules/es.reflect.prevent-extensions'); +require('../modules/es.reflect.set'); +require('../modules/es.reflect.set-prototype-of'); + +module.exports = require('../internals/path'); diff --git a/core-js/es/instance/bind.js b/core-js/es/instance/bind.js new file mode 100644 index 0000000000..11f932a264 --- /dev/null +++ b/core-js/es/instance/bind.js @@ -0,0 +1,8 @@ +var bind = require('../function/virtual/bind'); + +var FunctionPrototype = Function.prototype; + +module.exports = function (it) { + var own = it.bind; + return it === FunctionPrototype || (it instanceof Function && own === FunctionPrototype.bind) ? bind : own; +}; diff --git a/core-js/es/instance/code-point-at.js b/core-js/es/instance/code-point-at.js new file mode 100644 index 0000000000..c4eaa422c9 --- /dev/null +++ b/core-js/es/instance/code-point-at.js @@ -0,0 +1,9 @@ +var codePointAt = require('../string/virtual/code-point-at'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.codePointAt; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.codePointAt) ? codePointAt : own; +}; diff --git a/core-js/es/instance/concat.js b/core-js/es/instance/concat.js new file mode 100644 index 0000000000..87b74138d7 --- /dev/null +++ b/core-js/es/instance/concat.js @@ -0,0 +1,8 @@ +var concat = require('../array/virtual/concat'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.concat; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.concat) ? concat : own; +}; diff --git a/core-js/es/instance/copy-within.js b/core-js/es/instance/copy-within.js new file mode 100644 index 0000000000..c59f52d375 --- /dev/null +++ b/core-js/es/instance/copy-within.js @@ -0,0 +1,8 @@ +var copyWithin = require('../array/virtual/copy-within'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.copyWithin; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.copyWithin) ? copyWithin : own; +}; diff --git a/core-js/es/instance/ends-with.js b/core-js/es/instance/ends-with.js new file mode 100644 index 0000000000..532d6f7ea3 --- /dev/null +++ b/core-js/es/instance/ends-with.js @@ -0,0 +1,9 @@ +var endsWith = require('../string/virtual/ends-with'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.endsWith; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.endsWith) ? endsWith : own; +}; diff --git a/core-js/es/instance/entries.js b/core-js/es/instance/entries.js new file mode 100644 index 0000000000..8aedc418cf --- /dev/null +++ b/core-js/es/instance/entries.js @@ -0,0 +1,8 @@ +var entries = require('../array/virtual/entries'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.entries; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.entries) ? entries : own; +}; diff --git a/core-js/es/instance/every.js b/core-js/es/instance/every.js new file mode 100644 index 0000000000..1faaccbbe5 --- /dev/null +++ b/core-js/es/instance/every.js @@ -0,0 +1,8 @@ +var every = require('../array/virtual/every'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.every; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.every) ? every : own; +}; diff --git a/core-js/es/instance/fill.js b/core-js/es/instance/fill.js new file mode 100644 index 0000000000..5d0f22be57 --- /dev/null +++ b/core-js/es/instance/fill.js @@ -0,0 +1,8 @@ +var fill = require('../array/virtual/fill'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.fill; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.fill) ? fill : own; +}; diff --git a/core-js/es/instance/filter.js b/core-js/es/instance/filter.js new file mode 100644 index 0000000000..8ba32b66d2 --- /dev/null +++ b/core-js/es/instance/filter.js @@ -0,0 +1,8 @@ +var filter = require('../array/virtual/filter'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.filter; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.filter) ? filter : own; +}; diff --git a/core-js/es/instance/find-index.js b/core-js/es/instance/find-index.js new file mode 100644 index 0000000000..27a0583745 --- /dev/null +++ b/core-js/es/instance/find-index.js @@ -0,0 +1,8 @@ +var findIndex = require('../array/virtual/find-index'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.findIndex; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.findIndex) ? findIndex : own; +}; diff --git a/core-js/es/instance/find.js b/core-js/es/instance/find.js new file mode 100644 index 0000000000..70443c76b8 --- /dev/null +++ b/core-js/es/instance/find.js @@ -0,0 +1,8 @@ +var find = require('../array/virtual/find'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.find; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.find) ? find : own; +}; diff --git a/core-js/es/instance/flags.js b/core-js/es/instance/flags.js new file mode 100644 index 0000000000..f0b91148e6 --- /dev/null +++ b/core-js/es/instance/flags.js @@ -0,0 +1,7 @@ +var flags = require('../regexp/flags'); + +var RegExpPrototype = RegExp.prototype; + +module.exports = function (it) { + return (it === RegExpPrototype || it instanceof RegExp) && !('flags' in it) ? flags(it) : it.flags; +}; diff --git a/core-js/es/instance/flat-map.js b/core-js/es/instance/flat-map.js new file mode 100644 index 0000000000..eca5a41ddf --- /dev/null +++ b/core-js/es/instance/flat-map.js @@ -0,0 +1,8 @@ +var flatMap = require('../array/virtual/flat-map'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.flatMap; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.flatMap) ? flatMap : own; +}; diff --git a/core-js/es/instance/flat.js b/core-js/es/instance/flat.js new file mode 100644 index 0000000000..186a729387 --- /dev/null +++ b/core-js/es/instance/flat.js @@ -0,0 +1,8 @@ +var flat = require('../array/virtual/flat'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.flat; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.flat) ? flat : own; +}; diff --git a/core-js/es/instance/for-each.js b/core-js/es/instance/for-each.js new file mode 100644 index 0000000000..3a2e6a91d1 --- /dev/null +++ b/core-js/es/instance/for-each.js @@ -0,0 +1,8 @@ +var forEach = require('../array/virtual/for-each'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.forEach; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.forEach) ? forEach : own; +}; diff --git a/core-js/es/instance/includes.js b/core-js/es/instance/includes.js new file mode 100644 index 0000000000..d2823737ca --- /dev/null +++ b/core-js/es/instance/includes.js @@ -0,0 +1,13 @@ +var arrayIncludes = require('../array/virtual/includes'); +var stringIncludes = require('../string/virtual/includes'); + +var ArrayPrototype = Array.prototype; +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.includes; + if (it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.includes)) return arrayIncludes; + if (typeof it === 'string' || it === StringPrototype || (it instanceof String && own === StringPrototype.includes)) { + return stringIncludes; + } return own; +}; diff --git a/core-js/es/instance/index-of.js b/core-js/es/instance/index-of.js new file mode 100644 index 0000000000..a5fa42a8cd --- /dev/null +++ b/core-js/es/instance/index-of.js @@ -0,0 +1,8 @@ +var indexOf = require('../array/virtual/index-of'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.indexOf; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.indexOf) ? indexOf : own; +}; diff --git a/core-js/es/instance/keys.js b/core-js/es/instance/keys.js new file mode 100644 index 0000000000..0e2dca2ae2 --- /dev/null +++ b/core-js/es/instance/keys.js @@ -0,0 +1,8 @@ +var keys = require('../array/virtual/keys'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.keys; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.keys) ? keys : own; +}; diff --git a/core-js/es/instance/last-index-of.js b/core-js/es/instance/last-index-of.js new file mode 100644 index 0000000000..729bc658b4 --- /dev/null +++ b/core-js/es/instance/last-index-of.js @@ -0,0 +1,8 @@ +var lastIndexOf = require('../array/virtual/last-index-of'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.lastIndexOf; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.lastIndexOf) ? lastIndexOf : own; +}; diff --git a/core-js/es/instance/map.js b/core-js/es/instance/map.js new file mode 100644 index 0000000000..4d2d17f531 --- /dev/null +++ b/core-js/es/instance/map.js @@ -0,0 +1,8 @@ +var map = require('../array/virtual/map'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.map; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.map) ? map : own; +}; diff --git a/core-js/es/instance/match-all.js b/core-js/es/instance/match-all.js new file mode 100644 index 0000000000..2ab56b11ab --- /dev/null +++ b/core-js/es/instance/match-all.js @@ -0,0 +1,9 @@ +var matchAll = require('../string/virtual/match-all'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.matchAll; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.matchAll) ? matchAll : own; +}; diff --git a/core-js/es/instance/pad-end.js b/core-js/es/instance/pad-end.js new file mode 100644 index 0000000000..40ea6030bc --- /dev/null +++ b/core-js/es/instance/pad-end.js @@ -0,0 +1,9 @@ +var padEnd = require('../string/virtual/pad-end'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.padEnd; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.padEnd) ? padEnd : own; +}; diff --git a/core-js/es/instance/pad-start.js b/core-js/es/instance/pad-start.js new file mode 100644 index 0000000000..1e3220cd27 --- /dev/null +++ b/core-js/es/instance/pad-start.js @@ -0,0 +1,9 @@ +var padStart = require('../string/virtual/pad-start'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.padStart; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.padStart) ? padStart : own; +}; diff --git a/core-js/es/instance/reduce-right.js b/core-js/es/instance/reduce-right.js new file mode 100644 index 0000000000..6a8802f2d9 --- /dev/null +++ b/core-js/es/instance/reduce-right.js @@ -0,0 +1,8 @@ +var reduceRight = require('../array/virtual/reduce-right'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.reduceRight; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.reduceRight) ? reduceRight : own; +}; diff --git a/core-js/es/instance/reduce.js b/core-js/es/instance/reduce.js new file mode 100644 index 0000000000..efa46a9335 --- /dev/null +++ b/core-js/es/instance/reduce.js @@ -0,0 +1,8 @@ +var reduce = require('../array/virtual/reduce'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.reduce; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.reduce) ? reduce : own; +}; diff --git a/core-js/es/instance/repeat.js b/core-js/es/instance/repeat.js new file mode 100644 index 0000000000..d4c05ad380 --- /dev/null +++ b/core-js/es/instance/repeat.js @@ -0,0 +1,9 @@ +var repeat = require('../string/virtual/repeat'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.repeat; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.repeat) ? repeat : own; +}; diff --git a/core-js/es/instance/reverse.js b/core-js/es/instance/reverse.js new file mode 100644 index 0000000000..ca4bfeaf04 --- /dev/null +++ b/core-js/es/instance/reverse.js @@ -0,0 +1,8 @@ +var reverse = require('../array/virtual/reverse'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.reverse; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.reverse) ? reverse : own; +}; diff --git a/core-js/es/instance/slice.js b/core-js/es/instance/slice.js new file mode 100644 index 0000000000..03ef7a7d90 --- /dev/null +++ b/core-js/es/instance/slice.js @@ -0,0 +1,8 @@ +var slice = require('../array/virtual/slice'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.slice; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.slice) ? slice : own; +}; diff --git a/core-js/es/instance/some.js b/core-js/es/instance/some.js new file mode 100644 index 0000000000..562c11ea45 --- /dev/null +++ b/core-js/es/instance/some.js @@ -0,0 +1,8 @@ +var some = require('../array/virtual/some'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.some; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.some) ? some : own; +}; diff --git a/core-js/es/instance/sort.js b/core-js/es/instance/sort.js new file mode 100644 index 0000000000..96edb8037c --- /dev/null +++ b/core-js/es/instance/sort.js @@ -0,0 +1,8 @@ +var sort = require('../array/virtual/sort'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.sort; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.sort) ? sort : own; +}; diff --git a/core-js/es/instance/splice.js b/core-js/es/instance/splice.js new file mode 100644 index 0000000000..5b907f4b3f --- /dev/null +++ b/core-js/es/instance/splice.js @@ -0,0 +1,8 @@ +var splice = require('../array/virtual/splice'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.splice; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.splice) ? splice : own; +}; diff --git a/core-js/es/instance/starts-with.js b/core-js/es/instance/starts-with.js new file mode 100644 index 0000000000..99a01a7f25 --- /dev/null +++ b/core-js/es/instance/starts-with.js @@ -0,0 +1,9 @@ +var startsWith = require('../string/virtual/starts-with'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.startsWith; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.startsWith) ? startsWith : own; +}; diff --git a/core-js/es/instance/trim-end.js b/core-js/es/instance/trim-end.js new file mode 100644 index 0000000000..c004cbafff --- /dev/null +++ b/core-js/es/instance/trim-end.js @@ -0,0 +1,9 @@ +var trimEnd = require('../string/virtual/trim-end'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.trimEnd; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.trimEnd) ? trimEnd : own; +}; diff --git a/core-js/es/instance/trim-left.js b/core-js/es/instance/trim-left.js new file mode 100644 index 0000000000..fc5c3091a5 --- /dev/null +++ b/core-js/es/instance/trim-left.js @@ -0,0 +1,9 @@ +var trimLeft = require('../string/virtual/trim-left'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.trimLeft; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.trimLeft) ? trimLeft : own; +}; diff --git a/core-js/es/instance/trim-right.js b/core-js/es/instance/trim-right.js new file mode 100644 index 0000000000..ef38effcae --- /dev/null +++ b/core-js/es/instance/trim-right.js @@ -0,0 +1,9 @@ +var trimRight = require('../string/virtual/trim-right'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.trimRight; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.trimRight) ? trimRight : own; +}; diff --git a/core-js/es/instance/trim-start.js b/core-js/es/instance/trim-start.js new file mode 100644 index 0000000000..74a89bd937 --- /dev/null +++ b/core-js/es/instance/trim-start.js @@ -0,0 +1,9 @@ +var trimStart = require('../string/virtual/trim-start'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.trimStart; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.trimStart) ? trimStart : own; +}; diff --git a/core-js/es/instance/trim.js b/core-js/es/instance/trim.js new file mode 100644 index 0000000000..cdd3ed9dea --- /dev/null +++ b/core-js/es/instance/trim.js @@ -0,0 +1,9 @@ +var trim = require('../string/virtual/trim'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.trim; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.trim) ? trim : own; +}; diff --git a/core-js/es/instance/values.js b/core-js/es/instance/values.js new file mode 100644 index 0000000000..52c76df283 --- /dev/null +++ b/core-js/es/instance/values.js @@ -0,0 +1,8 @@ +var values = require('../array/virtual/values'); + +var ArrayPrototype = Array.prototype; + +module.exports = function (it) { + var own = it.values; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.values) ? values : own; +}; diff --git a/core-js/es/json/index.js b/core-js/es/json/index.js new file mode 100644 index 0000000000..f8d9216c58 --- /dev/null +++ b/core-js/es/json/index.js @@ -0,0 +1,4 @@ +require('../../modules/es.json.to-string-tag'); +var path = require('../../internals/path'); + +module.exports = path.JSON || (path.JSON = { stringify: JSON.stringify }); diff --git a/core-js/es/json/stringify.js b/core-js/es/json/stringify.js new file mode 100644 index 0000000000..48e6385ac9 --- /dev/null +++ b/core-js/es/json/stringify.js @@ -0,0 +1,6 @@ +var core = require('../../internals/path'); +var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify }); + +module.exports = function stringify(it) { // eslint-disable-line no-unused-vars + return $JSON.stringify.apply($JSON, arguments); +}; diff --git a/core-js/es/json/to-string-tag.js b/core-js/es/json/to-string-tag.js new file mode 100644 index 0000000000..7ed4618c74 --- /dev/null +++ b/core-js/es/json/to-string-tag.js @@ -0,0 +1,3 @@ +require('../../modules/es.json.to-string-tag'); + +module.exports = 'JSON'; diff --git a/core-js/es/map/index.js b/core-js/es/map/index.js new file mode 100644 index 0000000000..ab554cfaa0 --- /dev/null +++ b/core-js/es/map/index.js @@ -0,0 +1,7 @@ +require('../../modules/es.map'); +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +module.exports = path.Map; diff --git a/core-js/es/math/acosh.js b/core-js/es/math/acosh.js new file mode 100644 index 0000000000..0ef459bd6b --- /dev/null +++ b/core-js/es/math/acosh.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.acosh'); +var path = require('../../internals/path'); + +module.exports = path.Math.acosh; diff --git a/core-js/es/math/asinh.js b/core-js/es/math/asinh.js new file mode 100644 index 0000000000..f300ec4d49 --- /dev/null +++ b/core-js/es/math/asinh.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.asinh'); +var path = require('../../internals/path'); + +module.exports = path.Math.asinh; diff --git a/core-js/es/math/atanh.js b/core-js/es/math/atanh.js new file mode 100644 index 0000000000..6ca611190f --- /dev/null +++ b/core-js/es/math/atanh.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.atanh'); +var path = require('../../internals/path'); + +module.exports = path.Math.atanh; diff --git a/core-js/es/math/cbrt.js b/core-js/es/math/cbrt.js new file mode 100644 index 0000000000..c8297a7d0e --- /dev/null +++ b/core-js/es/math/cbrt.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.cbrt'); +var path = require('../../internals/path'); + +module.exports = path.Math.cbrt; diff --git a/core-js/es/math/clz32.js b/core-js/es/math/clz32.js new file mode 100644 index 0000000000..a2ea307d6c --- /dev/null +++ b/core-js/es/math/clz32.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.clz32'); +var path = require('../../internals/path'); + +module.exports = path.Math.clz32; diff --git a/core-js/es/math/cosh.js b/core-js/es/math/cosh.js new file mode 100644 index 0000000000..09dc191cf8 --- /dev/null +++ b/core-js/es/math/cosh.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.cosh'); +var path = require('../../internals/path'); + +module.exports = path.Math.cosh; diff --git a/core-js/es/math/expm1.js b/core-js/es/math/expm1.js new file mode 100644 index 0000000000..96573768ac --- /dev/null +++ b/core-js/es/math/expm1.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.expm1'); +var path = require('../../internals/path'); + +module.exports = path.Math.expm1; diff --git a/core-js/es/math/fround.js b/core-js/es/math/fround.js new file mode 100644 index 0000000000..41c7292ae0 --- /dev/null +++ b/core-js/es/math/fround.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.fround'); +var path = require('../../internals/path'); + +module.exports = path.Math.fround; diff --git a/core-js/es/math/hypot.js b/core-js/es/math/hypot.js new file mode 100644 index 0000000000..34d5175e31 --- /dev/null +++ b/core-js/es/math/hypot.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.hypot'); +var path = require('../../internals/path'); + +module.exports = path.Math.hypot; diff --git a/core-js/es/math/imul.js b/core-js/es/math/imul.js new file mode 100644 index 0000000000..2f17f9321f --- /dev/null +++ b/core-js/es/math/imul.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.imul'); +var path = require('../../internals/path'); + +module.exports = path.Math.imul; diff --git a/core-js/es/math/index.js b/core-js/es/math/index.js new file mode 100644 index 0000000000..8986227087 --- /dev/null +++ b/core-js/es/math/index.js @@ -0,0 +1,21 @@ +require('../../modules/es.math.acosh'); +require('../../modules/es.math.asinh'); +require('../../modules/es.math.atanh'); +require('../../modules/es.math.cbrt'); +require('../../modules/es.math.clz32'); +require('../../modules/es.math.cosh'); +require('../../modules/es.math.expm1'); +require('../../modules/es.math.fround'); +require('../../modules/es.math.hypot'); +require('../../modules/es.math.imul'); +require('../../modules/es.math.log10'); +require('../../modules/es.math.log1p'); +require('../../modules/es.math.log2'); +require('../../modules/es.math.sign'); +require('../../modules/es.math.sinh'); +require('../../modules/es.math.tanh'); +require('../../modules/es.math.to-string-tag'); +require('../../modules/es.math.trunc'); +var path = require('../../internals/path'); + +module.exports = path.Math; diff --git a/core-js/es/math/log10.js b/core-js/es/math/log10.js new file mode 100644 index 0000000000..b91166f3cf --- /dev/null +++ b/core-js/es/math/log10.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.log10'); +var path = require('../../internals/path'); + +module.exports = path.Math.log10; diff --git a/core-js/es/math/log1p.js b/core-js/es/math/log1p.js new file mode 100644 index 0000000000..a1d4db1ede --- /dev/null +++ b/core-js/es/math/log1p.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.log1p'); +var path = require('../../internals/path'); + +module.exports = path.Math.log1p; diff --git a/core-js/es/math/log2.js b/core-js/es/math/log2.js new file mode 100644 index 0000000000..99c0594910 --- /dev/null +++ b/core-js/es/math/log2.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.log2'); +var path = require('../../internals/path'); + +module.exports = path.Math.log2; diff --git a/core-js/es/math/sign.js b/core-js/es/math/sign.js new file mode 100644 index 0000000000..9f6eb951e2 --- /dev/null +++ b/core-js/es/math/sign.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.sign'); +var path = require('../../internals/path'); + +module.exports = path.Math.sign; diff --git a/core-js/es/math/sinh.js b/core-js/es/math/sinh.js new file mode 100644 index 0000000000..cf8d51a047 --- /dev/null +++ b/core-js/es/math/sinh.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.sinh'); +var path = require('../../internals/path'); + +module.exports = path.Math.sinh; diff --git a/core-js/es/math/tanh.js b/core-js/es/math/tanh.js new file mode 100644 index 0000000000..030c175ddb --- /dev/null +++ b/core-js/es/math/tanh.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.tanh'); +var path = require('../../internals/path'); + +module.exports = path.Math.tanh; diff --git a/core-js/es/math/to-string-tag.js b/core-js/es/math/to-string-tag.js new file mode 100644 index 0000000000..c8714c24fe --- /dev/null +++ b/core-js/es/math/to-string-tag.js @@ -0,0 +1,3 @@ +require('../../modules/es.math.to-string-tag'); + +module.exports = 'Math'; diff --git a/core-js/es/math/trunc.js b/core-js/es/math/trunc.js new file mode 100644 index 0000000000..510337ba5e --- /dev/null +++ b/core-js/es/math/trunc.js @@ -0,0 +1,4 @@ +require('../../modules/es.math.trunc'); +var path = require('../../internals/path'); + +module.exports = path.Math.trunc; diff --git a/core-js/es/number/constructor.js b/core-js/es/number/constructor.js new file mode 100644 index 0000000000..a77a1aa8d6 --- /dev/null +++ b/core-js/es/number/constructor.js @@ -0,0 +1,3 @@ +require('../../modules/es.number.constructor'); + +module.exports = Number; diff --git a/core-js/es/number/epsilon.js b/core-js/es/number/epsilon.js new file mode 100644 index 0000000000..627b0777c9 --- /dev/null +++ b/core-js/es/number/epsilon.js @@ -0,0 +1,3 @@ +require('../../modules/es.number.epsilon'); + +module.exports = Math.pow(2, -52); diff --git a/core-js/es/number/index.js b/core-js/es/number/index.js new file mode 100644 index 0000000000..1341b56bee --- /dev/null +++ b/core-js/es/number/index.js @@ -0,0 +1,15 @@ +require('../../modules/es.number.constructor'); +require('../../modules/es.number.epsilon'); +require('../../modules/es.number.is-finite'); +require('../../modules/es.number.is-integer'); +require('../../modules/es.number.is-nan'); +require('../../modules/es.number.is-safe-integer'); +require('../../modules/es.number.max-safe-integer'); +require('../../modules/es.number.min-safe-integer'); +require('../../modules/es.number.parse-float'); +require('../../modules/es.number.parse-int'); +require('../../modules/es.number.to-fixed'); +require('../../modules/es.number.to-precision'); +var path = require('../../internals/path'); + +module.exports = path.Number; diff --git a/core-js/es/number/is-finite.js b/core-js/es/number/is-finite.js new file mode 100644 index 0000000000..dd16f9d09e --- /dev/null +++ b/core-js/es/number/is-finite.js @@ -0,0 +1,4 @@ +require('../../modules/es.number.is-finite'); +var path = require('../../internals/path'); + +module.exports = path.Number.isFinite; diff --git a/core-js/es/number/is-integer.js b/core-js/es/number/is-integer.js new file mode 100644 index 0000000000..c6734a954f --- /dev/null +++ b/core-js/es/number/is-integer.js @@ -0,0 +1,4 @@ +require('../../modules/es.number.is-integer'); +var path = require('../../internals/path'); + +module.exports = path.Number.isInteger; diff --git a/core-js/es/number/is-nan.js b/core-js/es/number/is-nan.js new file mode 100644 index 0000000000..9af93bb6fe --- /dev/null +++ b/core-js/es/number/is-nan.js @@ -0,0 +1,4 @@ +require('../../modules/es.number.is-nan'); +var path = require('../../internals/path'); + +module.exports = path.Number.isNaN; diff --git a/core-js/es/number/is-safe-integer.js b/core-js/es/number/is-safe-integer.js new file mode 100644 index 0000000000..ec34c62976 --- /dev/null +++ b/core-js/es/number/is-safe-integer.js @@ -0,0 +1,4 @@ +require('../../modules/es.number.is-safe-integer'); +var path = require('../../internals/path'); + +module.exports = path.Number.isSafeInteger; diff --git a/core-js/es/number/max-safe-integer.js b/core-js/es/number/max-safe-integer.js new file mode 100644 index 0000000000..b901200ca0 --- /dev/null +++ b/core-js/es/number/max-safe-integer.js @@ -0,0 +1,3 @@ +require('../../modules/es.number.max-safe-integer'); + +module.exports = 0x1FFFFFFFFFFFFF; diff --git a/core-js/es/number/min-safe-integer.js b/core-js/es/number/min-safe-integer.js new file mode 100644 index 0000000000..3678895ab7 --- /dev/null +++ b/core-js/es/number/min-safe-integer.js @@ -0,0 +1,3 @@ +require('../../modules/es.number.min-safe-integer'); + +module.exports = -0x1FFFFFFFFFFFFF; diff --git a/core-js/es/number/parse-float.js b/core-js/es/number/parse-float.js new file mode 100644 index 0000000000..5d71e39386 --- /dev/null +++ b/core-js/es/number/parse-float.js @@ -0,0 +1,4 @@ +require('../../modules/es.number.parse-float'); +var path = require('../../internals/path'); + +module.exports = path.Number.parseFloat; diff --git a/core-js/es/number/parse-int.js b/core-js/es/number/parse-int.js new file mode 100644 index 0000000000..c833b0a1e2 --- /dev/null +++ b/core-js/es/number/parse-int.js @@ -0,0 +1,4 @@ +require('../../modules/es.number.parse-int'); +var path = require('../../internals/path'); + +module.exports = path.Number.parseInt; diff --git a/core-js/es/number/to-fixed.js b/core-js/es/number/to-fixed.js new file mode 100644 index 0000000000..e1271248ad --- /dev/null +++ b/core-js/es/number/to-fixed.js @@ -0,0 +1,4 @@ +require('../../modules/es.number.to-fixed'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Number', 'toFixed'); diff --git a/core-js/es/number/to-precision.js b/core-js/es/number/to-precision.js new file mode 100644 index 0000000000..fd5b83b228 --- /dev/null +++ b/core-js/es/number/to-precision.js @@ -0,0 +1,4 @@ +require('../../modules/es.number.to-precision'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Number', 'toPrecision'); diff --git a/core-js/es/number/virtual/index.js b/core-js/es/number/virtual/index.js new file mode 100644 index 0000000000..693aca9c65 --- /dev/null +++ b/core-js/es/number/virtual/index.js @@ -0,0 +1,5 @@ +require('../../../modules/es.number.to-fixed'); +require('../../../modules/es.number.to-precision'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Number'); diff --git a/core-js/es/number/virtual/to-fixed.js b/core-js/es/number/virtual/to-fixed.js new file mode 100644 index 0000000000..be7265d952 --- /dev/null +++ b/core-js/es/number/virtual/to-fixed.js @@ -0,0 +1,4 @@ +require('../../../modules/es.number.to-fixed'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Number').toFixed; diff --git a/core-js/es/number/virtual/to-precision.js b/core-js/es/number/virtual/to-precision.js new file mode 100644 index 0000000000..701c5aaef8 --- /dev/null +++ b/core-js/es/number/virtual/to-precision.js @@ -0,0 +1,4 @@ +require('../../../modules/es.number.to-precision'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('Number').toPrecision; diff --git a/core-js/es/object/assign.js b/core-js/es/object/assign.js new file mode 100644 index 0000000000..b747e5bb05 --- /dev/null +++ b/core-js/es/object/assign.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.assign'); +var path = require('../../internals/path'); + +module.exports = path.Object.assign; diff --git a/core-js/es/object/create.js b/core-js/es/object/create.js new file mode 100644 index 0000000000..6f060c9245 --- /dev/null +++ b/core-js/es/object/create.js @@ -0,0 +1,8 @@ +require('../../modules/es.object.create'); +var path = require('../../internals/path'); + +var Object = path.Object; + +module.exports = function create(P, D) { + return Object.create(P, D); +}; diff --git a/core-js/es/object/define-getter.js b/core-js/es/object/define-getter.js new file mode 100644 index 0000000000..98b77a0fa3 --- /dev/null +++ b/core-js/es/object/define-getter.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.define-getter'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Object', '__defineGetter__'); diff --git a/core-js/es/object/define-properties.js b/core-js/es/object/define-properties.js new file mode 100644 index 0000000000..30c21aa0a3 --- /dev/null +++ b/core-js/es/object/define-properties.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.define-properties'); +var path = require('../../internals/path'); + +var Object = path.Object; + +var defineProperties = module.exports = function defineProperties(T, D) { + return Object.defineProperties(T, D); +}; + +if (Object.defineProperties.sham) defineProperties.sham = true; diff --git a/core-js/es/object/define-property.js b/core-js/es/object/define-property.js new file mode 100644 index 0000000000..eb51b5fad4 --- /dev/null +++ b/core-js/es/object/define-property.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.define-property'); +var path = require('../../internals/path'); + +var Object = path.Object; + +var defineProperty = module.exports = function defineProperty(it, key, desc) { + return Object.defineProperty(it, key, desc); +}; + +if (Object.defineProperty.sham) defineProperty.sham = true; diff --git a/core-js/es/object/define-setter.js b/core-js/es/object/define-setter.js new file mode 100644 index 0000000000..ccae06a943 --- /dev/null +++ b/core-js/es/object/define-setter.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.define-setter'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Object', '__defineSetter__'); diff --git a/core-js/es/object/entries.js b/core-js/es/object/entries.js new file mode 100644 index 0000000000..4715ad119b --- /dev/null +++ b/core-js/es/object/entries.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.entries'); +var path = require('../../internals/path'); + +module.exports = path.Object.entries; diff --git a/core-js/es/object/freeze.js b/core-js/es/object/freeze.js new file mode 100644 index 0000000000..e50b82b57b --- /dev/null +++ b/core-js/es/object/freeze.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.freeze'); +var path = require('../../internals/path'); + +module.exports = path.Object.freeze; diff --git a/core-js/es/object/from-entries.js b/core-js/es/object/from-entries.js new file mode 100644 index 0000000000..530f16dab1 --- /dev/null +++ b/core-js/es/object/from-entries.js @@ -0,0 +1,5 @@ +require('../../modules/es.array.iterator'); +require('../../modules/es.object.from-entries'); +var path = require('../../internals/path'); + +module.exports = path.Object.fromEntries; diff --git a/core-js/es/object/get-own-property-descriptor.js b/core-js/es/object/get-own-property-descriptor.js new file mode 100644 index 0000000000..002c7ed03a --- /dev/null +++ b/core-js/es/object/get-own-property-descriptor.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.get-own-property-descriptor'); +var path = require('../../internals/path'); + +var Object = path.Object; + +var getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) { + return Object.getOwnPropertyDescriptor(it, key); +}; + +if (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true; diff --git a/core-js/es/object/get-own-property-descriptors.js b/core-js/es/object/get-own-property-descriptors.js new file mode 100644 index 0000000000..e94ed62bfa --- /dev/null +++ b/core-js/es/object/get-own-property-descriptors.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.get-own-property-descriptors'); +var path = require('../../internals/path'); + +module.exports = path.Object.getOwnPropertyDescriptors; diff --git a/core-js/es/object/get-own-property-names.js b/core-js/es/object/get-own-property-names.js new file mode 100644 index 0000000000..4b353d3342 --- /dev/null +++ b/core-js/es/object/get-own-property-names.js @@ -0,0 +1,8 @@ +require('../../modules/es.object.get-own-property-names'); +var path = require('../../internals/path'); + +var Object = path.Object; + +module.exports = function getOwnPropertyNames(it) { + return Object.getOwnPropertyNames(it); +}; diff --git a/core-js/es/object/get-own-property-symbols.js b/core-js/es/object/get-own-property-symbols.js new file mode 100644 index 0000000000..b5c4b5b828 --- /dev/null +++ b/core-js/es/object/get-own-property-symbols.js @@ -0,0 +1,4 @@ +require('../../modules/es.symbol'); +var path = require('../../internals/path'); + +module.exports = path.Object.getOwnPropertySymbols; diff --git a/core-js/es/object/get-prototype-of.js b/core-js/es/object/get-prototype-of.js new file mode 100644 index 0000000000..6c7c96d830 --- /dev/null +++ b/core-js/es/object/get-prototype-of.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.get-prototype-of'); +var path = require('../../internals/path'); + +module.exports = path.Object.getPrototypeOf; diff --git a/core-js/es/object/index.js b/core-js/es/object/index.js new file mode 100644 index 0000000000..0664dfc23a --- /dev/null +++ b/core-js/es/object/index.js @@ -0,0 +1,31 @@ +require('../../modules/es.symbol'); +require('../../modules/es.object.assign'); +require('../../modules/es.object.create'); +require('../../modules/es.object.define-property'); +require('../../modules/es.object.define-properties'); +require('../../modules/es.object.entries'); +require('../../modules/es.object.freeze'); +require('../../modules/es.object.from-entries'); +require('../../modules/es.object.get-own-property-descriptor'); +require('../../modules/es.object.get-own-property-descriptors'); +require('../../modules/es.object.get-own-property-names'); +require('../../modules/es.object.get-prototype-of'); +require('../../modules/es.object.is'); +require('../../modules/es.object.is-extensible'); +require('../../modules/es.object.is-frozen'); +require('../../modules/es.object.is-sealed'); +require('../../modules/es.object.keys'); +require('../../modules/es.object.prevent-extensions'); +require('../../modules/es.object.seal'); +require('../../modules/es.object.set-prototype-of'); +require('../../modules/es.object.values'); +require('../../modules/es.object.to-string'); +require('../../modules/es.object.define-getter'); +require('../../modules/es.object.define-setter'); +require('../../modules/es.object.lookup-getter'); +require('../../modules/es.object.lookup-setter'); +require('../../modules/es.math.to-string-tag'); +require('../../modules/es.json.to-string-tag'); +var path = require('../../internals/path'); + +module.exports = path.Object; diff --git a/core-js/es/object/is-extensible.js b/core-js/es/object/is-extensible.js new file mode 100644 index 0000000000..c38f29124a --- /dev/null +++ b/core-js/es/object/is-extensible.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.is-extensible'); +var path = require('../../internals/path'); + +module.exports = path.Object.isExtensible; diff --git a/core-js/es/object/is-frozen.js b/core-js/es/object/is-frozen.js new file mode 100644 index 0000000000..39ee8d2e7d --- /dev/null +++ b/core-js/es/object/is-frozen.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.is-frozen'); +var path = require('../../internals/path'); + +module.exports = path.Object.isFrozen; diff --git a/core-js/es/object/is-sealed.js b/core-js/es/object/is-sealed.js new file mode 100644 index 0000000000..113a488f6b --- /dev/null +++ b/core-js/es/object/is-sealed.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.is-sealed'); +var path = require('../../internals/path'); + +module.exports = path.Object.isSealed; diff --git a/core-js/es/object/is.js b/core-js/es/object/is.js new file mode 100644 index 0000000000..5691bf9368 --- /dev/null +++ b/core-js/es/object/is.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.is'); +var path = require('../../internals/path'); + +module.exports = path.Object.is; diff --git a/core-js/es/object/keys.js b/core-js/es/object/keys.js new file mode 100644 index 0000000000..c42f42ecb5 --- /dev/null +++ b/core-js/es/object/keys.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.keys'); +var path = require('../../internals/path'); + +module.exports = path.Object.keys; diff --git a/core-js/es/object/lookup-getter.js b/core-js/es/object/lookup-getter.js new file mode 100644 index 0000000000..db2d70a65a --- /dev/null +++ b/core-js/es/object/lookup-getter.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.lookup-setter'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Object', '__lookupGetter__'); diff --git a/core-js/es/object/lookup-setter.js b/core-js/es/object/lookup-setter.js new file mode 100644 index 0000000000..fb48fbf40e --- /dev/null +++ b/core-js/es/object/lookup-setter.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.lookup-setter'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Object', '__lookupSetter__'); diff --git a/core-js/es/object/prevent-extensions.js b/core-js/es/object/prevent-extensions.js new file mode 100644 index 0000000000..5a4a5f61b2 --- /dev/null +++ b/core-js/es/object/prevent-extensions.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.prevent-extensions'); +var path = require('../../internals/path'); + +module.exports = path.Object.preventExtensions; diff --git a/core-js/es/object/seal.js b/core-js/es/object/seal.js new file mode 100644 index 0000000000..0db0262c43 --- /dev/null +++ b/core-js/es/object/seal.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.seal'); +var path = require('../../internals/path'); + +module.exports = path.Object.seal; diff --git a/core-js/es/object/set-prototype-of.js b/core-js/es/object/set-prototype-of.js new file mode 100644 index 0000000000..bab296ac48 --- /dev/null +++ b/core-js/es/object/set-prototype-of.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.set-prototype-of'); +var path = require('../../internals/path'); + +module.exports = path.Object.setPrototypeOf; diff --git a/core-js/es/object/to-string.js b/core-js/es/object/to-string.js new file mode 100644 index 0000000000..491a4ef03d --- /dev/null +++ b/core-js/es/object/to-string.js @@ -0,0 +1,8 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.math.to-string-tag'); +require('../../modules/es.json.to-string-tag'); +var classof = require('../../internals/classof'); + +module.exports = function (it) { + return '[object ' + classof(it) + ']'; +}; diff --git a/core-js/es/object/values.js b/core-js/es/object/values.js new file mode 100644 index 0000000000..84539f4a87 --- /dev/null +++ b/core-js/es/object/values.js @@ -0,0 +1,4 @@ +require('../../modules/es.object.values'); +var path = require('../../internals/path'); + +module.exports = path.Object.values; diff --git a/core-js/es/parse-float.js b/core-js/es/parse-float.js new file mode 100644 index 0000000000..3528d633e8 --- /dev/null +++ b/core-js/es/parse-float.js @@ -0,0 +1,4 @@ +require('../modules/es.parse-float'); +var path = require('../internals/path'); + +module.exports = path.parseFloat; diff --git a/core-js/es/parse-int.js b/core-js/es/parse-int.js new file mode 100644 index 0000000000..75cf1271ef --- /dev/null +++ b/core-js/es/parse-int.js @@ -0,0 +1,4 @@ +require('../modules/es.parse-int'); +var path = require('../internals/path'); + +module.exports = path.parseInt; diff --git a/core-js/es/promise/all-settled.js b/core-js/es/promise/all-settled.js new file mode 100644 index 0000000000..b05ac7eb79 --- /dev/null +++ b/core-js/es/promise/all-settled.js @@ -0,0 +1,11 @@ +'use strict'; +require('../../modules/es.promise'); +require('../../modules/es.promise.all-settled'); +var path = require('../../internals/path'); + +var Promise = path.Promise; +var $allSettled = Promise.allSettled; + +module.exports = function allSettled(iterable) { + return $allSettled.call(typeof this === 'function' ? this : Promise, iterable); +}; diff --git a/core-js/es/promise/finally.js b/core-js/es/promise/finally.js new file mode 100644 index 0000000000..01d4282f81 --- /dev/null +++ b/core-js/es/promise/finally.js @@ -0,0 +1,5 @@ +require('../../modules/es.promise'); +require('../../modules/es.promise.finally'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Promise', 'finally'); diff --git a/core-js/es/promise/index.js b/core-js/es/promise/index.js new file mode 100644 index 0000000000..2b41b45cb5 --- /dev/null +++ b/core-js/es/promise/index.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/web.dom-collections.iterator'); +require('../../modules/es.promise'); +require('../../modules/es.promise.all-settled'); +require('../../modules/es.promise.finally'); +var path = require('../../internals/path'); + +module.exports = path.Promise; diff --git a/core-js/es/reflect/apply.js b/core-js/es/reflect/apply.js new file mode 100644 index 0000000000..0dbe1286d4 --- /dev/null +++ b/core-js/es/reflect/apply.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.apply'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.apply; diff --git a/core-js/es/reflect/construct.js b/core-js/es/reflect/construct.js new file mode 100644 index 0000000000..df90026903 --- /dev/null +++ b/core-js/es/reflect/construct.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.construct'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.construct; diff --git a/core-js/es/reflect/define-property.js b/core-js/es/reflect/define-property.js new file mode 100644 index 0000000000..7b33dcaf0d --- /dev/null +++ b/core-js/es/reflect/define-property.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.define-property'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.defineProperty; diff --git a/core-js/es/reflect/delete-property.js b/core-js/es/reflect/delete-property.js new file mode 100644 index 0000000000..0e023dfbbd --- /dev/null +++ b/core-js/es/reflect/delete-property.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.delete-property'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.deleteProperty; diff --git a/core-js/es/reflect/get-own-property-descriptor.js b/core-js/es/reflect/get-own-property-descriptor.js new file mode 100644 index 0000000000..8c135a3e66 --- /dev/null +++ b/core-js/es/reflect/get-own-property-descriptor.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.get-own-property-descriptor'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.getOwnPropertyDescriptor; diff --git a/core-js/es/reflect/get-prototype-of.js b/core-js/es/reflect/get-prototype-of.js new file mode 100644 index 0000000000..aca74f81ee --- /dev/null +++ b/core-js/es/reflect/get-prototype-of.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.get-prototype-of'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.getPrototypeOf; diff --git a/core-js/es/reflect/get.js b/core-js/es/reflect/get.js new file mode 100644 index 0000000000..239e931867 --- /dev/null +++ b/core-js/es/reflect/get.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.get'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.get; diff --git a/core-js/es/reflect/has.js b/core-js/es/reflect/has.js new file mode 100644 index 0000000000..0dbf29fa06 --- /dev/null +++ b/core-js/es/reflect/has.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.has'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.has; diff --git a/core-js/es/reflect/index.js b/core-js/es/reflect/index.js new file mode 100644 index 0000000000..6a82213c98 --- /dev/null +++ b/core-js/es/reflect/index.js @@ -0,0 +1,16 @@ +require('../../modules/es.reflect.apply'); +require('../../modules/es.reflect.construct'); +require('../../modules/es.reflect.define-property'); +require('../../modules/es.reflect.delete-property'); +require('../../modules/es.reflect.get'); +require('../../modules/es.reflect.get-own-property-descriptor'); +require('../../modules/es.reflect.get-prototype-of'); +require('../../modules/es.reflect.has'); +require('../../modules/es.reflect.is-extensible'); +require('../../modules/es.reflect.own-keys'); +require('../../modules/es.reflect.prevent-extensions'); +require('../../modules/es.reflect.set'); +require('../../modules/es.reflect.set-prototype-of'); +var path = require('../../internals/path'); + +module.exports = path.Reflect; diff --git a/core-js/es/reflect/is-extensible.js b/core-js/es/reflect/is-extensible.js new file mode 100644 index 0000000000..c0943d24ff --- /dev/null +++ b/core-js/es/reflect/is-extensible.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.is-extensible'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.isExtensible; diff --git a/core-js/es/reflect/own-keys.js b/core-js/es/reflect/own-keys.js new file mode 100644 index 0000000000..364fc81887 --- /dev/null +++ b/core-js/es/reflect/own-keys.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.own-keys'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.ownKeys; diff --git a/core-js/es/reflect/prevent-extensions.js b/core-js/es/reflect/prevent-extensions.js new file mode 100644 index 0000000000..8687c1b919 --- /dev/null +++ b/core-js/es/reflect/prevent-extensions.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.prevent-extensions'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.preventExtensions; diff --git a/core-js/es/reflect/set-prototype-of.js b/core-js/es/reflect/set-prototype-of.js new file mode 100644 index 0000000000..819148a558 --- /dev/null +++ b/core-js/es/reflect/set-prototype-of.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.set-prototype-of'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.setPrototypeOf; diff --git a/core-js/es/reflect/set.js b/core-js/es/reflect/set.js new file mode 100644 index 0000000000..25ed86c32c --- /dev/null +++ b/core-js/es/reflect/set.js @@ -0,0 +1,4 @@ +require('../../modules/es.reflect.set'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.set; diff --git a/core-js/es/regexp/constructor.js b/core-js/es/regexp/constructor.js new file mode 100644 index 0000000000..195da54ded --- /dev/null +++ b/core-js/es/regexp/constructor.js @@ -0,0 +1,3 @@ +require('../../modules/es.regexp.constructor'); + +module.exports = RegExp; diff --git a/core-js/es/regexp/flags.js b/core-js/es/regexp/flags.js new file mode 100644 index 0000000000..d3eed6d28c --- /dev/null +++ b/core-js/es/regexp/flags.js @@ -0,0 +1,6 @@ +require('../../modules/es.regexp.flags'); +var flags = require('../../internals/regexp-flags'); + +module.exports = function (it) { + return flags.call(it); +}; diff --git a/core-js/es/regexp/index.js b/core-js/es/regexp/index.js new file mode 100644 index 0000000000..69467e49e3 --- /dev/null +++ b/core-js/es/regexp/index.js @@ -0,0 +1,8 @@ +require('../../modules/es.regexp.constructor'); +require('../../modules/es.regexp.to-string'); +require('../../modules/es.regexp.exec'); +require('../../modules/es.regexp.flags'); +require('../../modules/es.string.match'); +require('../../modules/es.string.replace'); +require('../../modules/es.string.search'); +require('../../modules/es.string.split'); diff --git a/core-js/es/regexp/match.js b/core-js/es/regexp/match.js new file mode 100644 index 0000000000..af0e2fa6bc --- /dev/null +++ b/core-js/es/regexp/match.js @@ -0,0 +1,8 @@ +require('../../modules/es.string.match'); +var wellKnownSymbol = require('../../internals/well-known-symbol'); + +var MATCH = wellKnownSymbol('match'); + +module.exports = function (it, str) { + return RegExp.prototype[MATCH].call(it, str); +}; diff --git a/core-js/es/regexp/replace.js b/core-js/es/regexp/replace.js new file mode 100644 index 0000000000..1311b2a158 --- /dev/null +++ b/core-js/es/regexp/replace.js @@ -0,0 +1,8 @@ +require('../../modules/es.string.replace'); +var wellKnownSymbol = require('../../internals/well-known-symbol'); + +var REPLACE = wellKnownSymbol('replace'); + +module.exports = function (it, str, replacer) { + return RegExp.prototype[REPLACE].call(it, str, replacer); +}; diff --git a/core-js/es/regexp/search.js b/core-js/es/regexp/search.js new file mode 100644 index 0000000000..4adc913e4a --- /dev/null +++ b/core-js/es/regexp/search.js @@ -0,0 +1,8 @@ +require('../../modules/es.string.search'); +var wellKnownSymbol = require('../../internals/well-known-symbol'); + +var SEARCH = wellKnownSymbol('search'); + +module.exports = function (it, str) { + return RegExp.prototype[SEARCH].call(it, str); +}; diff --git a/core-js/es/regexp/split.js b/core-js/es/regexp/split.js new file mode 100644 index 0000000000..49ae5f2bcc --- /dev/null +++ b/core-js/es/regexp/split.js @@ -0,0 +1,8 @@ +require('../../modules/es.string.split'); +var wellKnownSymbol = require('../../internals/well-known-symbol'); + +var SPLIT = wellKnownSymbol('split'); + +module.exports = function (it, str, limit) { + return RegExp.prototype[SPLIT].call(it, str, limit); +}; diff --git a/core-js/es/regexp/to-string.js b/core-js/es/regexp/to-string.js new file mode 100644 index 0000000000..3072e63e89 --- /dev/null +++ b/core-js/es/regexp/to-string.js @@ -0,0 +1,5 @@ +require('../../modules/es.regexp.to-string'); + +module.exports = function toString(it) { + return RegExp.prototype.toString.call(it); +}; diff --git a/core-js/es/set/index.js b/core-js/es/set/index.js new file mode 100644 index 0000000000..52322b6915 --- /dev/null +++ b/core-js/es/set/index.js @@ -0,0 +1,7 @@ +require('../../modules/es.set'); +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +module.exports = path.Set; diff --git a/core-js/es/string/anchor.js b/core-js/es/string/anchor.js new file mode 100644 index 0000000000..254317e17b --- /dev/null +++ b/core-js/es/string/anchor.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.anchor'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'anchor'); diff --git a/core-js/es/string/big.js b/core-js/es/string/big.js new file mode 100644 index 0000000000..d0878eb617 --- /dev/null +++ b/core-js/es/string/big.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.big'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'big'); diff --git a/core-js/es/string/blink.js b/core-js/es/string/blink.js new file mode 100644 index 0000000000..fc96d57fba --- /dev/null +++ b/core-js/es/string/blink.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.blink'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'blink'); diff --git a/core-js/es/string/bold.js b/core-js/es/string/bold.js new file mode 100644 index 0000000000..f098a7ada9 --- /dev/null +++ b/core-js/es/string/bold.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.bold'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'bold'); diff --git a/core-js/es/string/code-point-at.js b/core-js/es/string/code-point-at.js new file mode 100644 index 0000000000..cbaaae36a2 --- /dev/null +++ b/core-js/es/string/code-point-at.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.code-point-at'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'codePointAt'); diff --git a/core-js/es/string/ends-with.js b/core-js/es/string/ends-with.js new file mode 100644 index 0000000000..26d7ffe5e3 --- /dev/null +++ b/core-js/es/string/ends-with.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.ends-with'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'endsWith'); diff --git a/core-js/es/string/fixed.js b/core-js/es/string/fixed.js new file mode 100644 index 0000000000..099ada47bd --- /dev/null +++ b/core-js/es/string/fixed.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.fixed'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'fixed'); diff --git a/core-js/es/string/fontcolor.js b/core-js/es/string/fontcolor.js new file mode 100644 index 0000000000..f3606f6030 --- /dev/null +++ b/core-js/es/string/fontcolor.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.fontcolor'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'fontcolor'); diff --git a/core-js/es/string/fontsize.js b/core-js/es/string/fontsize.js new file mode 100644 index 0000000000..499bfa5514 --- /dev/null +++ b/core-js/es/string/fontsize.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.fontsize'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'fontsize'); diff --git a/core-js/es/string/from-code-point.js b/core-js/es/string/from-code-point.js new file mode 100644 index 0000000000..1eff7642f6 --- /dev/null +++ b/core-js/es/string/from-code-point.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.from-code-point'); +var path = require('../../internals/path'); + +module.exports = path.String.fromCodePoint; diff --git a/core-js/es/string/includes.js b/core-js/es/string/includes.js new file mode 100644 index 0000000000..26d2ad9d3a --- /dev/null +++ b/core-js/es/string/includes.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.includes'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'includes'); diff --git a/core-js/es/string/index.js b/core-js/es/string/index.js new file mode 100644 index 0000000000..b843d33ff9 --- /dev/null +++ b/core-js/es/string/index.js @@ -0,0 +1,34 @@ +require('../../modules/es.string.from-code-point'); +require('../../modules/es.string.raw'); +require('../../modules/es.string.code-point-at'); +require('../../modules/es.string.ends-with'); +require('../../modules/es.string.includes'); +require('../../modules/es.string.match'); +require('../../modules/es.string.match-all'); +require('../../modules/es.string.pad-end'); +require('../../modules/es.string.pad-start'); +require('../../modules/es.string.repeat'); +require('../../modules/es.string.replace'); +require('../../modules/es.string.search'); +require('../../modules/es.string.split'); +require('../../modules/es.string.starts-with'); +require('../../modules/es.string.trim'); +require('../../modules/es.string.trim-start'); +require('../../modules/es.string.trim-end'); +require('../../modules/es.string.iterator'); +require('../../modules/es.string.anchor'); +require('../../modules/es.string.big'); +require('../../modules/es.string.blink'); +require('../../modules/es.string.bold'); +require('../../modules/es.string.fixed'); +require('../../modules/es.string.fontcolor'); +require('../../modules/es.string.fontsize'); +require('../../modules/es.string.italics'); +require('../../modules/es.string.link'); +require('../../modules/es.string.small'); +require('../../modules/es.string.strike'); +require('../../modules/es.string.sub'); +require('../../modules/es.string.sup'); +var path = require('../../internals/path'); + +module.exports = path.String; diff --git a/core-js/es/string/italics.js b/core-js/es/string/italics.js new file mode 100644 index 0000000000..6057f4fdac --- /dev/null +++ b/core-js/es/string/italics.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.italics'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'italics'); diff --git a/core-js/es/string/iterator.js b/core-js/es/string/iterator.js new file mode 100644 index 0000000000..b6d9a1a6dc --- /dev/null +++ b/core-js/es/string/iterator.js @@ -0,0 +1,8 @@ +require('../../modules/es.string.iterator'); +var Iterators = require('../../internals/iterators'); + +var getStringIterator = Iterators.String; + +module.exports = function (it) { + return getStringIterator.call(it); +}; diff --git a/core-js/es/string/link.js b/core-js/es/string/link.js new file mode 100644 index 0000000000..c195d61270 --- /dev/null +++ b/core-js/es/string/link.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.link'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'link'); diff --git a/core-js/es/string/match-all.js b/core-js/es/string/match-all.js new file mode 100644 index 0000000000..e951f4e494 --- /dev/null +++ b/core-js/es/string/match-all.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.match-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'matchAll'); diff --git a/core-js/es/string/match.js b/core-js/es/string/match.js new file mode 100644 index 0000000000..0a372374d7 --- /dev/null +++ b/core-js/es/string/match.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.match'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'match'); diff --git a/core-js/es/string/pad-end.js b/core-js/es/string/pad-end.js new file mode 100644 index 0000000000..237b96d1be --- /dev/null +++ b/core-js/es/string/pad-end.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.pad-end'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'padEnd'); diff --git a/core-js/es/string/pad-start.js b/core-js/es/string/pad-start.js new file mode 100644 index 0000000000..250496f1ff --- /dev/null +++ b/core-js/es/string/pad-start.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.pad-start'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'padStart'); diff --git a/core-js/es/string/raw.js b/core-js/es/string/raw.js new file mode 100644 index 0000000000..e75c54c0f3 --- /dev/null +++ b/core-js/es/string/raw.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.raw'); +var path = require('../../internals/path'); + +module.exports = path.String.raw; diff --git a/core-js/es/string/repeat.js b/core-js/es/string/repeat.js new file mode 100644 index 0000000000..bd6992bd01 --- /dev/null +++ b/core-js/es/string/repeat.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.repeat'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'repeat'); diff --git a/core-js/es/string/replace.js b/core-js/es/string/replace.js new file mode 100644 index 0000000000..0ac4e6a1a3 --- /dev/null +++ b/core-js/es/string/replace.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.replace'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'replace'); diff --git a/core-js/es/string/search.js b/core-js/es/string/search.js new file mode 100644 index 0000000000..c2ed44a696 --- /dev/null +++ b/core-js/es/string/search.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.search'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'search'); diff --git a/core-js/es/string/small.js b/core-js/es/string/small.js new file mode 100644 index 0000000000..4e8780f60e --- /dev/null +++ b/core-js/es/string/small.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.small'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'small'); diff --git a/core-js/es/string/split.js b/core-js/es/string/split.js new file mode 100644 index 0000000000..0651c055f6 --- /dev/null +++ b/core-js/es/string/split.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.split'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'split'); diff --git a/core-js/es/string/starts-with.js b/core-js/es/string/starts-with.js new file mode 100644 index 0000000000..2b22eba167 --- /dev/null +++ b/core-js/es/string/starts-with.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.starts-with'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'startsWith'); diff --git a/core-js/es/string/strike.js b/core-js/es/string/strike.js new file mode 100644 index 0000000000..f986f9e482 --- /dev/null +++ b/core-js/es/string/strike.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.strike'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'strike'); diff --git a/core-js/es/string/sub.js b/core-js/es/string/sub.js new file mode 100644 index 0000000000..19c6c384d2 --- /dev/null +++ b/core-js/es/string/sub.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.sub'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'sub'); diff --git a/core-js/es/string/sup.js b/core-js/es/string/sup.js new file mode 100644 index 0000000000..419785d983 --- /dev/null +++ b/core-js/es/string/sup.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.sup'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'sup'); diff --git a/core-js/es/string/trim-end.js b/core-js/es/string/trim-end.js new file mode 100644 index 0000000000..43042987e3 --- /dev/null +++ b/core-js/es/string/trim-end.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.trim-end'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'trimRight'); diff --git a/core-js/es/string/trim-left.js b/core-js/es/string/trim-left.js new file mode 100644 index 0000000000..a24dcdec33 --- /dev/null +++ b/core-js/es/string/trim-left.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.trim-start'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'trimLeft'); diff --git a/core-js/es/string/trim-right.js b/core-js/es/string/trim-right.js new file mode 100644 index 0000000000..43042987e3 --- /dev/null +++ b/core-js/es/string/trim-right.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.trim-end'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'trimRight'); diff --git a/core-js/es/string/trim-start.js b/core-js/es/string/trim-start.js new file mode 100644 index 0000000000..a24dcdec33 --- /dev/null +++ b/core-js/es/string/trim-start.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.trim-start'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'trimLeft'); diff --git a/core-js/es/string/trim.js b/core-js/es/string/trim.js new file mode 100644 index 0000000000..0fca933129 --- /dev/null +++ b/core-js/es/string/trim.js @@ -0,0 +1,4 @@ +require('../../modules/es.string.trim'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'trim'); diff --git a/core-js/es/string/virtual/anchor.js b/core-js/es/string/virtual/anchor.js new file mode 100644 index 0000000000..3b5cf6b650 --- /dev/null +++ b/core-js/es/string/virtual/anchor.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.anchor'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').anchor; diff --git a/core-js/es/string/virtual/big.js b/core-js/es/string/virtual/big.js new file mode 100644 index 0000000000..a63bd0fbff --- /dev/null +++ b/core-js/es/string/virtual/big.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.big'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').big; diff --git a/core-js/es/string/virtual/blink.js b/core-js/es/string/virtual/blink.js new file mode 100644 index 0000000000..8619c25b43 --- /dev/null +++ b/core-js/es/string/virtual/blink.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.blink'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').blink; diff --git a/core-js/es/string/virtual/bold.js b/core-js/es/string/virtual/bold.js new file mode 100644 index 0000000000..1f5419a42f --- /dev/null +++ b/core-js/es/string/virtual/bold.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.bold'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').bold; diff --git a/core-js/es/string/virtual/code-point-at.js b/core-js/es/string/virtual/code-point-at.js new file mode 100644 index 0000000000..c12691d980 --- /dev/null +++ b/core-js/es/string/virtual/code-point-at.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.code-point-at'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').codePointAt; diff --git a/core-js/es/string/virtual/ends-with.js b/core-js/es/string/virtual/ends-with.js new file mode 100644 index 0000000000..81a13221ee --- /dev/null +++ b/core-js/es/string/virtual/ends-with.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.ends-with'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').endsWith; diff --git a/core-js/es/string/virtual/fixed.js b/core-js/es/string/virtual/fixed.js new file mode 100644 index 0000000000..b3b775f002 --- /dev/null +++ b/core-js/es/string/virtual/fixed.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.fixed'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').fixed; diff --git a/core-js/es/string/virtual/fontcolor.js b/core-js/es/string/virtual/fontcolor.js new file mode 100644 index 0000000000..5b89a227b7 --- /dev/null +++ b/core-js/es/string/virtual/fontcolor.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.fontcolor'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').fontcolor; diff --git a/core-js/es/string/virtual/fontsize.js b/core-js/es/string/virtual/fontsize.js new file mode 100644 index 0000000000..28491b0d68 --- /dev/null +++ b/core-js/es/string/virtual/fontsize.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.fontsize'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').fontsize; diff --git a/core-js/es/string/virtual/includes.js b/core-js/es/string/virtual/includes.js new file mode 100644 index 0000000000..e6d9fabb3b --- /dev/null +++ b/core-js/es/string/virtual/includes.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.includes'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').includes; diff --git a/core-js/es/string/virtual/index.js b/core-js/es/string/virtual/index.js new file mode 100644 index 0000000000..1151b79834 --- /dev/null +++ b/core-js/es/string/virtual/index.js @@ -0,0 +1,32 @@ +require('../../../modules/es.string.code-point-at'); +require('../../../modules/es.string.ends-with'); +require('../../../modules/es.string.includes'); +require('../../../modules/es.string.match'); +require('../../../modules/es.string.match-all'); +require('../../../modules/es.string.pad-end'); +require('../../../modules/es.string.pad-start'); +require('../../../modules/es.string.repeat'); +require('../../../modules/es.string.replace'); +require('../../../modules/es.string.search'); +require('../../../modules/es.string.split'); +require('../../../modules/es.string.starts-with'); +require('../../../modules/es.string.trim'); +require('../../../modules/es.string.trim-start'); +require('../../../modules/es.string.trim-end'); +require('../../../modules/es.string.iterator'); +require('../../../modules/es.string.anchor'); +require('../../../modules/es.string.big'); +require('../../../modules/es.string.blink'); +require('../../../modules/es.string.bold'); +require('../../../modules/es.string.fixed'); +require('../../../modules/es.string.fontcolor'); +require('../../../modules/es.string.fontsize'); +require('../../../modules/es.string.italics'); +require('../../../modules/es.string.link'); +require('../../../modules/es.string.small'); +require('../../../modules/es.string.strike'); +require('../../../modules/es.string.sub'); +require('../../../modules/es.string.sup'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String'); diff --git a/core-js/es/string/virtual/italics.js b/core-js/es/string/virtual/italics.js new file mode 100644 index 0000000000..c6cf80b859 --- /dev/null +++ b/core-js/es/string/virtual/italics.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.italics'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').italics; diff --git a/core-js/es/string/virtual/iterator.js b/core-js/es/string/virtual/iterator.js new file mode 100644 index 0000000000..df1e2aaaa2 --- /dev/null +++ b/core-js/es/string/virtual/iterator.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.iterator'); +var Iterators = require('../../../internals/iterators'); + +module.exports = Iterators.String; diff --git a/core-js/es/string/virtual/link.js b/core-js/es/string/virtual/link.js new file mode 100644 index 0000000000..d387e1686a --- /dev/null +++ b/core-js/es/string/virtual/link.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.link'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').link; diff --git a/core-js/es/string/virtual/match-all.js b/core-js/es/string/virtual/match-all.js new file mode 100644 index 0000000000..6bad2f8f65 --- /dev/null +++ b/core-js/es/string/virtual/match-all.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.match-all'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').matchAll; diff --git a/core-js/es/string/virtual/pad-end.js b/core-js/es/string/virtual/pad-end.js new file mode 100644 index 0000000000..a7d54de4c1 --- /dev/null +++ b/core-js/es/string/virtual/pad-end.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.pad-end'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').padEnd; diff --git a/core-js/es/string/virtual/pad-start.js b/core-js/es/string/virtual/pad-start.js new file mode 100644 index 0000000000..7695cb2f35 --- /dev/null +++ b/core-js/es/string/virtual/pad-start.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.pad-start'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').padStart; diff --git a/core-js/es/string/virtual/repeat.js b/core-js/es/string/virtual/repeat.js new file mode 100644 index 0000000000..dab88b5732 --- /dev/null +++ b/core-js/es/string/virtual/repeat.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.repeat'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').repeat; diff --git a/core-js/es/string/virtual/small.js b/core-js/es/string/virtual/small.js new file mode 100644 index 0000000000..e9352a8da9 --- /dev/null +++ b/core-js/es/string/virtual/small.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.small'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').small; diff --git a/core-js/es/string/virtual/starts-with.js b/core-js/es/string/virtual/starts-with.js new file mode 100644 index 0000000000..917071b924 --- /dev/null +++ b/core-js/es/string/virtual/starts-with.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.starts-with'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').startsWith; diff --git a/core-js/es/string/virtual/strike.js b/core-js/es/string/virtual/strike.js new file mode 100644 index 0000000000..971a1293a0 --- /dev/null +++ b/core-js/es/string/virtual/strike.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.strike'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').strike; diff --git a/core-js/es/string/virtual/sub.js b/core-js/es/string/virtual/sub.js new file mode 100644 index 0000000000..0514fb8bed --- /dev/null +++ b/core-js/es/string/virtual/sub.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.sub'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').sub; diff --git a/core-js/es/string/virtual/sup.js b/core-js/es/string/virtual/sup.js new file mode 100644 index 0000000000..61debf3094 --- /dev/null +++ b/core-js/es/string/virtual/sup.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.sup'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').sup; diff --git a/core-js/es/string/virtual/trim-end.js b/core-js/es/string/virtual/trim-end.js new file mode 100644 index 0000000000..9c1d0c0312 --- /dev/null +++ b/core-js/es/string/virtual/trim-end.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.trim-end'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').trimRight; diff --git a/core-js/es/string/virtual/trim-left.js b/core-js/es/string/virtual/trim-left.js new file mode 100644 index 0000000000..17cfc12dbf --- /dev/null +++ b/core-js/es/string/virtual/trim-left.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.trim-start'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').trimLeft; diff --git a/core-js/es/string/virtual/trim-right.js b/core-js/es/string/virtual/trim-right.js new file mode 100644 index 0000000000..9c1d0c0312 --- /dev/null +++ b/core-js/es/string/virtual/trim-right.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.trim-end'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').trimRight; diff --git a/core-js/es/string/virtual/trim-start.js b/core-js/es/string/virtual/trim-start.js new file mode 100644 index 0000000000..17cfc12dbf --- /dev/null +++ b/core-js/es/string/virtual/trim-start.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.trim-start'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').trimLeft; diff --git a/core-js/es/string/virtual/trim.js b/core-js/es/string/virtual/trim.js new file mode 100644 index 0000000000..6d7b41d6a2 --- /dev/null +++ b/core-js/es/string/virtual/trim.js @@ -0,0 +1,4 @@ +require('../../../modules/es.string.trim'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').trim; diff --git a/core-js/es/symbol/async-iterator.js b/core-js/es/symbol/async-iterator.js new file mode 100644 index 0000000000..6f5dd5d5ed --- /dev/null +++ b/core-js/es/symbol/async-iterator.js @@ -0,0 +1,4 @@ +require('../../modules/es.symbol.async-iterator'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('asyncIterator'); diff --git a/core-js/es/symbol/description.js b/core-js/es/symbol/description.js new file mode 100644 index 0000000000..7bb4b2bc9c --- /dev/null +++ b/core-js/es/symbol/description.js @@ -0,0 +1 @@ +require('../../modules/es.symbol.description'); diff --git a/core-js/es/symbol/for.js b/core-js/es/symbol/for.js new file mode 100644 index 0000000000..9406c70e1b --- /dev/null +++ b/core-js/es/symbol/for.js @@ -0,0 +1,4 @@ +require('../../modules/es.symbol'); +var path = require('../../internals/path'); + +module.exports = path.Symbol['for']; diff --git a/core-js/es/symbol/has-instance.js b/core-js/es/symbol/has-instance.js new file mode 100644 index 0000000000..8fbd177224 --- /dev/null +++ b/core-js/es/symbol/has-instance.js @@ -0,0 +1,5 @@ +require('../../modules/es.symbol.has-instance'); +require('../../modules/es.function.has-instance'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('hasInstance'); diff --git a/core-js/es/symbol/index.js b/core-js/es/symbol/index.js new file mode 100644 index 0000000000..4d6acf4182 --- /dev/null +++ b/core-js/es/symbol/index.js @@ -0,0 +1,22 @@ +require('../../modules/es.array.concat'); +require('../../modules/es.object.to-string'); +require('../../modules/es.symbol'); +require('../../modules/es.symbol.async-iterator'); +require('../../modules/es.symbol.description'); +require('../../modules/es.symbol.has-instance'); +require('../../modules/es.symbol.is-concat-spreadable'); +require('../../modules/es.symbol.iterator'); +require('../../modules/es.symbol.match'); +require('../../modules/es.symbol.match-all'); +require('../../modules/es.symbol.replace'); +require('../../modules/es.symbol.search'); +require('../../modules/es.symbol.species'); +require('../../modules/es.symbol.split'); +require('../../modules/es.symbol.to-primitive'); +require('../../modules/es.symbol.to-string-tag'); +require('../../modules/es.symbol.unscopables'); +require('../../modules/es.math.to-string-tag'); +require('../../modules/es.json.to-string-tag'); +var path = require('../../internals/path'); + +module.exports = path.Symbol; diff --git a/core-js/es/symbol/is-concat-spreadable.js b/core-js/es/symbol/is-concat-spreadable.js new file mode 100644 index 0000000000..860123c01c --- /dev/null +++ b/core-js/es/symbol/is-concat-spreadable.js @@ -0,0 +1,5 @@ +require('../../modules/es.symbol.is-concat-spreadable'); +require('../../modules/es.array.concat'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('isConcatSpreadable'); diff --git a/core-js/es/symbol/iterator.js b/core-js/es/symbol/iterator.js new file mode 100644 index 0000000000..b8398936f4 --- /dev/null +++ b/core-js/es/symbol/iterator.js @@ -0,0 +1,6 @@ +require('../../modules/es.symbol.iterator'); +require('../../modules/es.string.iterator'); +require('../../modules/web.dom-collections.iterator'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('iterator'); diff --git a/core-js/es/symbol/key-for.js b/core-js/es/symbol/key-for.js new file mode 100644 index 0000000000..6c832b9266 --- /dev/null +++ b/core-js/es/symbol/key-for.js @@ -0,0 +1,4 @@ +require('../../modules/es.symbol'); +var path = require('../../internals/path'); + +module.exports = path.Symbol.keyFor; diff --git a/core-js/es/symbol/match-all.js b/core-js/es/symbol/match-all.js new file mode 100644 index 0000000000..dd1c243863 --- /dev/null +++ b/core-js/es/symbol/match-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.symbol.match-all'); +require('../../modules/es.string.match-all'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('matchAll'); diff --git a/core-js/es/symbol/match.js b/core-js/es/symbol/match.js new file mode 100644 index 0000000000..de607a86ec --- /dev/null +++ b/core-js/es/symbol/match.js @@ -0,0 +1,5 @@ +require('../../modules/es.symbol.match'); +require('../../modules/es.string.match'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('match'); diff --git a/core-js/es/symbol/replace.js b/core-js/es/symbol/replace.js new file mode 100644 index 0000000000..95ad78cedd --- /dev/null +++ b/core-js/es/symbol/replace.js @@ -0,0 +1,5 @@ +require('../../modules/es.symbol.replace'); +require('../../modules/es.string.replace'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('replace'); diff --git a/core-js/es/symbol/search.js b/core-js/es/symbol/search.js new file mode 100644 index 0000000000..1717f1ca69 --- /dev/null +++ b/core-js/es/symbol/search.js @@ -0,0 +1,5 @@ +require('../../modules/es.symbol.search'); +require('../../modules/es.string.search'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('search'); diff --git a/core-js/es/symbol/species.js b/core-js/es/symbol/species.js new file mode 100644 index 0000000000..3139bc6b7b --- /dev/null +++ b/core-js/es/symbol/species.js @@ -0,0 +1,4 @@ +require('../../modules/es.symbol.species'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('species'); diff --git a/core-js/es/symbol/split.js b/core-js/es/symbol/split.js new file mode 100644 index 0000000000..3045f77123 --- /dev/null +++ b/core-js/es/symbol/split.js @@ -0,0 +1,5 @@ +require('../../modules/es.symbol.split'); +require('../../modules/es.string.split'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('split'); diff --git a/core-js/es/symbol/to-primitive.js b/core-js/es/symbol/to-primitive.js new file mode 100644 index 0000000000..655270f086 --- /dev/null +++ b/core-js/es/symbol/to-primitive.js @@ -0,0 +1,4 @@ +require('../../modules/es.symbol.to-primitive'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('toPrimitive'); diff --git a/core-js/es/symbol/to-string-tag.js b/core-js/es/symbol/to-string-tag.js new file mode 100644 index 0000000000..6f29062ffc --- /dev/null +++ b/core-js/es/symbol/to-string-tag.js @@ -0,0 +1,7 @@ +require('../../modules/es.symbol.to-string-tag'); +require('../../modules/es.object.to-string'); +require('../../modules/es.math.to-string-tag'); +require('../../modules/es.json.to-string-tag'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('toStringTag'); diff --git a/core-js/es/symbol/unscopables.js b/core-js/es/symbol/unscopables.js new file mode 100644 index 0000000000..cc6f5eb979 --- /dev/null +++ b/core-js/es/symbol/unscopables.js @@ -0,0 +1,4 @@ +require('../../modules/es.symbol.unscopables'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('unscopables'); diff --git a/core-js/es/typed-array/copy-within.js b/core-js/es/typed-array/copy-within.js new file mode 100644 index 0000000000..1352cec72f --- /dev/null +++ b/core-js/es/typed-array/copy-within.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.copy-within'); diff --git a/core-js/es/typed-array/entries.js b/core-js/es/typed-array/entries.js new file mode 100644 index 0000000000..66cc6dca13 --- /dev/null +++ b/core-js/es/typed-array/entries.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/core-js/es/typed-array/every.js b/core-js/es/typed-array/every.js new file mode 100644 index 0000000000..681164be00 --- /dev/null +++ b/core-js/es/typed-array/every.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.every'); diff --git a/core-js/es/typed-array/fill.js b/core-js/es/typed-array/fill.js new file mode 100644 index 0000000000..4d92ac6654 --- /dev/null +++ b/core-js/es/typed-array/fill.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.fill'); diff --git a/core-js/es/typed-array/filter.js b/core-js/es/typed-array/filter.js new file mode 100644 index 0000000000..7d0a630ffa --- /dev/null +++ b/core-js/es/typed-array/filter.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.filter'); diff --git a/core-js/es/typed-array/find-index.js b/core-js/es/typed-array/find-index.js new file mode 100644 index 0000000000..039cd5edde --- /dev/null +++ b/core-js/es/typed-array/find-index.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.find-index'); diff --git a/core-js/es/typed-array/find.js b/core-js/es/typed-array/find.js new file mode 100644 index 0000000000..b3251b9a04 --- /dev/null +++ b/core-js/es/typed-array/find.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.find'); diff --git a/core-js/es/typed-array/float32-array.js b/core-js/es/typed-array/float32-array.js new file mode 100644 index 0000000000..70d1f810fe --- /dev/null +++ b/core-js/es/typed-array/float32-array.js @@ -0,0 +1,5 @@ +require('../../modules/es.typed-array.float32-array'); +require('./methods'); +var global = require('../../internals/global'); + +module.exports = global.Float32Array; diff --git a/core-js/es/typed-array/float64-array.js b/core-js/es/typed-array/float64-array.js new file mode 100644 index 0000000000..b84eae0a9c --- /dev/null +++ b/core-js/es/typed-array/float64-array.js @@ -0,0 +1,5 @@ +require('../../modules/es.typed-array.float64-array'); +require('./methods'); +var global = require('../../internals/global'); + +module.exports = global.Float64Array; diff --git a/core-js/es/typed-array/for-each.js b/core-js/es/typed-array/for-each.js new file mode 100644 index 0000000000..defe03a8dc --- /dev/null +++ b/core-js/es/typed-array/for-each.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.for-each'); diff --git a/core-js/es/typed-array/from.js b/core-js/es/typed-array/from.js new file mode 100644 index 0000000000..e0f34441d1 --- /dev/null +++ b/core-js/es/typed-array/from.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.from'); diff --git a/core-js/es/typed-array/includes.js b/core-js/es/typed-array/includes.js new file mode 100644 index 0000000000..5ff65f9645 --- /dev/null +++ b/core-js/es/typed-array/includes.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.includes'); diff --git a/core-js/es/typed-array/index-of.js b/core-js/es/typed-array/index-of.js new file mode 100644 index 0000000000..87081c0f2b --- /dev/null +++ b/core-js/es/typed-array/index-of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.index-of'); diff --git a/core-js/es/typed-array/index.js b/core-js/es/typed-array/index.js new file mode 100644 index 0000000000..4605b35beb --- /dev/null +++ b/core-js/es/typed-array/index.js @@ -0,0 +1,12 @@ +require('../../modules/es.typed-array.int8-array'); +require('../../modules/es.typed-array.uint8-array'); +require('../../modules/es.typed-array.uint8-clamped-array'); +require('../../modules/es.typed-array.int16-array'); +require('../../modules/es.typed-array.uint16-array'); +require('../../modules/es.typed-array.int32-array'); +require('../../modules/es.typed-array.uint32-array'); +require('../../modules/es.typed-array.float32-array'); +require('../../modules/es.typed-array.float64-array'); +require('./methods'); + +module.exports = require('../../internals/global'); diff --git a/core-js/es/typed-array/int16-array.js b/core-js/es/typed-array/int16-array.js new file mode 100644 index 0000000000..81f5a8e5d0 --- /dev/null +++ b/core-js/es/typed-array/int16-array.js @@ -0,0 +1,5 @@ +require('../../modules/es.typed-array.int16-array'); +require('./methods'); +var global = require('../../internals/global'); + +module.exports = global.Int16Array; diff --git a/core-js/es/typed-array/int32-array.js b/core-js/es/typed-array/int32-array.js new file mode 100644 index 0000000000..48176bf56a --- /dev/null +++ b/core-js/es/typed-array/int32-array.js @@ -0,0 +1,5 @@ +require('../../modules/es.typed-array.int32-array'); +require('./methods'); +var global = require('../../internals/global'); + +module.exports = global.Int32Array; diff --git a/core-js/es/typed-array/int8-array.js b/core-js/es/typed-array/int8-array.js new file mode 100644 index 0000000000..7d53845a78 --- /dev/null +++ b/core-js/es/typed-array/int8-array.js @@ -0,0 +1,5 @@ +require('../../modules/es.typed-array.int8-array'); +require('./methods'); +var global = require('../../internals/global'); + +module.exports = global.Int8Array; diff --git a/core-js/es/typed-array/iterator.js b/core-js/es/typed-array/iterator.js new file mode 100644 index 0000000000..66cc6dca13 --- /dev/null +++ b/core-js/es/typed-array/iterator.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/core-js/es/typed-array/join.js b/core-js/es/typed-array/join.js new file mode 100644 index 0000000000..431129c92f --- /dev/null +++ b/core-js/es/typed-array/join.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.join'); diff --git a/core-js/es/typed-array/keys.js b/core-js/es/typed-array/keys.js new file mode 100644 index 0000000000..66cc6dca13 --- /dev/null +++ b/core-js/es/typed-array/keys.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/core-js/es/typed-array/last-index-of.js b/core-js/es/typed-array/last-index-of.js new file mode 100644 index 0000000000..5682bf44ea --- /dev/null +++ b/core-js/es/typed-array/last-index-of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.last-index-of'); diff --git a/core-js/es/typed-array/map.js b/core-js/es/typed-array/map.js new file mode 100644 index 0000000000..db08fed371 --- /dev/null +++ b/core-js/es/typed-array/map.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.map'); diff --git a/core-js/es/typed-array/methods.js b/core-js/es/typed-array/methods.js new file mode 100644 index 0000000000..4c6ee887fa --- /dev/null +++ b/core-js/es/typed-array/methods.js @@ -0,0 +1,26 @@ +require('../../modules/es.typed-array.from'); +require('../../modules/es.typed-array.of'); +require('../../modules/es.typed-array.copy-within'); +require('../../modules/es.typed-array.every'); +require('../../modules/es.typed-array.fill'); +require('../../modules/es.typed-array.filter'); +require('../../modules/es.typed-array.find'); +require('../../modules/es.typed-array.find-index'); +require('../../modules/es.typed-array.for-each'); +require('../../modules/es.typed-array.includes'); +require('../../modules/es.typed-array.index-of'); +require('../../modules/es.typed-array.join'); +require('../../modules/es.typed-array.last-index-of'); +require('../../modules/es.typed-array.map'); +require('../../modules/es.typed-array.reduce'); +require('../../modules/es.typed-array.reduce-right'); +require('../../modules/es.typed-array.reverse'); +require('../../modules/es.typed-array.set'); +require('../../modules/es.typed-array.slice'); +require('../../modules/es.typed-array.some'); +require('../../modules/es.typed-array.sort'); +require('../../modules/es.typed-array.subarray'); +require('../../modules/es.typed-array.to-locale-string'); +require('../../modules/es.typed-array.to-string'); +require('../../modules/es.typed-array.iterator'); +require('../../modules/es.object.to-string'); diff --git a/core-js/es/typed-array/of.js b/core-js/es/typed-array/of.js new file mode 100644 index 0000000000..121bf5e2d6 --- /dev/null +++ b/core-js/es/typed-array/of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.of'); diff --git a/core-js/es/typed-array/reduce-right.js b/core-js/es/typed-array/reduce-right.js new file mode 100644 index 0000000000..cbd321fc62 --- /dev/null +++ b/core-js/es/typed-array/reduce-right.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reduce-right'); diff --git a/core-js/es/typed-array/reduce.js b/core-js/es/typed-array/reduce.js new file mode 100644 index 0000000000..e2a6f28283 --- /dev/null +++ b/core-js/es/typed-array/reduce.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reduce'); diff --git a/core-js/es/typed-array/reverse.js b/core-js/es/typed-array/reverse.js new file mode 100644 index 0000000000..14995f497b --- /dev/null +++ b/core-js/es/typed-array/reverse.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reverse'); diff --git a/core-js/es/typed-array/set.js b/core-js/es/typed-array/set.js new file mode 100644 index 0000000000..5330e22983 --- /dev/null +++ b/core-js/es/typed-array/set.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.set'); diff --git a/core-js/es/typed-array/slice.js b/core-js/es/typed-array/slice.js new file mode 100644 index 0000000000..37fb8c141a --- /dev/null +++ b/core-js/es/typed-array/slice.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.slice'); diff --git a/core-js/es/typed-array/some.js b/core-js/es/typed-array/some.js new file mode 100644 index 0000000000..495c322f7d --- /dev/null +++ b/core-js/es/typed-array/some.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.some'); diff --git a/core-js/es/typed-array/sort.js b/core-js/es/typed-array/sort.js new file mode 100644 index 0000000000..d6c7e30b99 --- /dev/null +++ b/core-js/es/typed-array/sort.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.sort'); diff --git a/core-js/es/typed-array/subarray.js b/core-js/es/typed-array/subarray.js new file mode 100644 index 0000000000..dbad4ca2d6 --- /dev/null +++ b/core-js/es/typed-array/subarray.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.subarray'); diff --git a/core-js/es/typed-array/to-locale-string.js b/core-js/es/typed-array/to-locale-string.js new file mode 100644 index 0000000000..12c809e233 --- /dev/null +++ b/core-js/es/typed-array/to-locale-string.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.to-locale-string'); diff --git a/core-js/es/typed-array/to-string.js b/core-js/es/typed-array/to-string.js new file mode 100644 index 0000000000..bf9416079f --- /dev/null +++ b/core-js/es/typed-array/to-string.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.to-string'); diff --git a/core-js/es/typed-array/uint16-array.js b/core-js/es/typed-array/uint16-array.js new file mode 100644 index 0000000000..9fe6065e50 --- /dev/null +++ b/core-js/es/typed-array/uint16-array.js @@ -0,0 +1,5 @@ +require('../../modules/es.typed-array.uint16-array'); +require('./methods'); +var global = require('../../internals/global'); + +module.exports = global.Uint16Array; diff --git a/core-js/es/typed-array/uint32-array.js b/core-js/es/typed-array/uint32-array.js new file mode 100644 index 0000000000..26bdb10c22 --- /dev/null +++ b/core-js/es/typed-array/uint32-array.js @@ -0,0 +1,5 @@ +require('../../modules/es.typed-array.uint32-array'); +require('./methods'); +var global = require('../../internals/global'); + +module.exports = global.Uint32Array; diff --git a/core-js/es/typed-array/uint8-array.js b/core-js/es/typed-array/uint8-array.js new file mode 100644 index 0000000000..96a5bf12f9 --- /dev/null +++ b/core-js/es/typed-array/uint8-array.js @@ -0,0 +1,5 @@ +require('../../modules/es.typed-array.uint8-array'); +require('./methods'); +var global = require('../../internals/global'); + +module.exports = global.Uint8Array; diff --git a/core-js/es/typed-array/uint8-clamped-array.js b/core-js/es/typed-array/uint8-clamped-array.js new file mode 100644 index 0000000000..7e2d3ce703 --- /dev/null +++ b/core-js/es/typed-array/uint8-clamped-array.js @@ -0,0 +1,5 @@ +require('../../modules/es.typed-array.uint8-clamped-array'); +require('./methods'); +var global = require('../../internals/global'); + +module.exports = global.Uint8ClampedArray; diff --git a/core-js/es/typed-array/values.js b/core-js/es/typed-array/values.js new file mode 100644 index 0000000000..66cc6dca13 --- /dev/null +++ b/core-js/es/typed-array/values.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/core-js/es/weak-map/index.js b/core-js/es/weak-map/index.js new file mode 100644 index 0000000000..11c79a7b14 --- /dev/null +++ b/core-js/es/weak-map/index.js @@ -0,0 +1,6 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.weak-map'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +module.exports = path.WeakMap; diff --git a/core-js/es/weak-set/index.js b/core-js/es/weak-set/index.js new file mode 100644 index 0000000000..ca5f257d49 --- /dev/null +++ b/core-js/es/weak-set/index.js @@ -0,0 +1,6 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.weak-set'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +module.exports = path.WeakSet; diff --git a/core-js/features/README.md b/core-js/features/README.md new file mode 100644 index 0000000000..62c88a0ddf --- /dev/null +++ b/core-js/features/README.md @@ -0,0 +1 @@ +This folder contains entry points for all `core-js` features with dependencies. It's the recommended way for usage only required features. diff --git a/core-js/features/aggregate-error.js b/core-js/features/aggregate-error.js new file mode 100644 index 0000000000..65d8afd3f3 --- /dev/null +++ b/core-js/features/aggregate-error.js @@ -0,0 +1,6 @@ +require('../modules/web.dom-collections.iterator'); +require('../modules/es.string.iterator'); +require('../modules/esnext.aggregate-error'); +var path = require('../internals/path'); + +module.exports = path.AggregateError; diff --git a/core-js/features/array-buffer/constructor.js b/core-js/features/array-buffer/constructor.js new file mode 100644 index 0000000000..726f87038f --- /dev/null +++ b/core-js/features/array-buffer/constructor.js @@ -0,0 +1 @@ +module.exports = require('../../es/array-buffer/constructor'); diff --git a/core-js/features/array-buffer/index.js b/core-js/features/array-buffer/index.js new file mode 100644 index 0000000000..80b721e901 --- /dev/null +++ b/core-js/features/array-buffer/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/array-buffer'); diff --git a/core-js/features/array-buffer/is-view.js b/core-js/features/array-buffer/is-view.js new file mode 100644 index 0000000000..7fe0ee7702 --- /dev/null +++ b/core-js/features/array-buffer/is-view.js @@ -0,0 +1 @@ +module.exports = require('../../es/array-buffer/is-view'); diff --git a/core-js/features/array-buffer/slice.js b/core-js/features/array-buffer/slice.js new file mode 100644 index 0000000000..237d3b4d68 --- /dev/null +++ b/core-js/features/array-buffer/slice.js @@ -0,0 +1 @@ +module.exports = require('../../es/array-buffer/slice'); diff --git a/core-js/features/array/concat.js b/core-js/features/array/concat.js new file mode 100644 index 0000000000..09185fea44 --- /dev/null +++ b/core-js/features/array/concat.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/concat'); diff --git a/core-js/features/array/copy-within.js b/core-js/features/array/copy-within.js new file mode 100644 index 0000000000..171ea9bab9 --- /dev/null +++ b/core-js/features/array/copy-within.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/copy-within'); diff --git a/core-js/features/array/entries.js b/core-js/features/array/entries.js new file mode 100644 index 0000000000..21631f91fa --- /dev/null +++ b/core-js/features/array/entries.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/entries'); diff --git a/core-js/features/array/every.js b/core-js/features/array/every.js new file mode 100644 index 0000000000..e04ec0d264 --- /dev/null +++ b/core-js/features/array/every.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/every'); diff --git a/core-js/features/array/fill.js b/core-js/features/array/fill.js new file mode 100644 index 0000000000..8d43319836 --- /dev/null +++ b/core-js/features/array/fill.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/fill'); diff --git a/core-js/features/array/filter.js b/core-js/features/array/filter.js new file mode 100644 index 0000000000..5fedc7343e --- /dev/null +++ b/core-js/features/array/filter.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/filter'); diff --git a/core-js/features/array/find-index.js b/core-js/features/array/find-index.js new file mode 100644 index 0000000000..0f687ead10 --- /dev/null +++ b/core-js/features/array/find-index.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/find-index'); diff --git a/core-js/features/array/find.js b/core-js/features/array/find.js new file mode 100644 index 0000000000..2fc2611777 --- /dev/null +++ b/core-js/features/array/find.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/find'); diff --git a/core-js/features/array/flat-map.js b/core-js/features/array/flat-map.js new file mode 100644 index 0000000000..87a5555503 --- /dev/null +++ b/core-js/features/array/flat-map.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/flat-map'); diff --git a/core-js/features/array/flat.js b/core-js/features/array/flat.js new file mode 100644 index 0000000000..7b32eb70e9 --- /dev/null +++ b/core-js/features/array/flat.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/flat'); diff --git a/core-js/features/array/for-each.js b/core-js/features/array/for-each.js new file mode 100644 index 0000000000..df36b3b7e1 --- /dev/null +++ b/core-js/features/array/for-each.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/for-each'); diff --git a/core-js/features/array/from.js b/core-js/features/array/from.js new file mode 100644 index 0000000000..483cff183b --- /dev/null +++ b/core-js/features/array/from.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/from'); diff --git a/core-js/features/array/includes.js b/core-js/features/array/includes.js new file mode 100644 index 0000000000..64cc5866ba --- /dev/null +++ b/core-js/features/array/includes.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/includes'); diff --git a/core-js/features/array/index-of.js b/core-js/features/array/index-of.js new file mode 100644 index 0000000000..42f3d838cd --- /dev/null +++ b/core-js/features/array/index-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/index-of'); diff --git a/core-js/features/array/index.js b/core-js/features/array/index.js new file mode 100644 index 0000000000..5997b1d0a5 --- /dev/null +++ b/core-js/features/array/index.js @@ -0,0 +1,5 @@ +module.exports = require('../../es/array'); + +require('../../modules/esnext.array.is-template-object'); +require('../../modules/esnext.array.last-item'); +require('../../modules/esnext.array.last-index'); diff --git a/core-js/features/array/is-array.js b/core-js/features/array/is-array.js new file mode 100644 index 0000000000..12bd214b70 --- /dev/null +++ b/core-js/features/array/is-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/is-array'); diff --git a/core-js/features/array/is-template-object.js b/core-js/features/array/is-template-object.js new file mode 100644 index 0000000000..f5eaf818c8 --- /dev/null +++ b/core-js/features/array/is-template-object.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.array.is-template-object'); +var path = require('../../internals/path'); + +module.exports = path.Array.isTemplateObject; diff --git a/core-js/features/array/iterator.js b/core-js/features/array/iterator.js new file mode 100644 index 0000000000..774d23555f --- /dev/null +++ b/core-js/features/array/iterator.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/iterator'); diff --git a/core-js/features/array/join.js b/core-js/features/array/join.js new file mode 100644 index 0000000000..4390ed3baa --- /dev/null +++ b/core-js/features/array/join.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/join'); diff --git a/core-js/features/array/keys.js b/core-js/features/array/keys.js new file mode 100644 index 0000000000..241f21ae6c --- /dev/null +++ b/core-js/features/array/keys.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/keys'); diff --git a/core-js/features/array/last-index-of.js b/core-js/features/array/last-index-of.js new file mode 100644 index 0000000000..0eca23c915 --- /dev/null +++ b/core-js/features/array/last-index-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/last-index-of'); diff --git a/core-js/features/array/last-index.js b/core-js/features/array/last-index.js new file mode 100644 index 0000000000..230cea05ff --- /dev/null +++ b/core-js/features/array/last-index.js @@ -0,0 +1 @@ +require('../../modules/esnext.array.last-index'); diff --git a/core-js/features/array/last-item.js b/core-js/features/array/last-item.js new file mode 100644 index 0000000000..5a4b25b623 --- /dev/null +++ b/core-js/features/array/last-item.js @@ -0,0 +1 @@ +require('../../modules/esnext.array.last-item'); diff --git a/core-js/features/array/map.js b/core-js/features/array/map.js new file mode 100644 index 0000000000..d3cea88bc0 --- /dev/null +++ b/core-js/features/array/map.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/map'); diff --git a/core-js/features/array/of.js b/core-js/features/array/of.js new file mode 100644 index 0000000000..0e69d5becf --- /dev/null +++ b/core-js/features/array/of.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/of'); diff --git a/core-js/features/array/reduce-right.js b/core-js/features/array/reduce-right.js new file mode 100644 index 0000000000..72e0f58ba5 --- /dev/null +++ b/core-js/features/array/reduce-right.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/reduce-right'); diff --git a/core-js/features/array/reduce.js b/core-js/features/array/reduce.js new file mode 100644 index 0000000000..c688c9fdea --- /dev/null +++ b/core-js/features/array/reduce.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/reduce'); diff --git a/core-js/features/array/reverse.js b/core-js/features/array/reverse.js new file mode 100644 index 0000000000..65a1d7a830 --- /dev/null +++ b/core-js/features/array/reverse.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/reverse'); diff --git a/core-js/features/array/slice.js b/core-js/features/array/slice.js new file mode 100644 index 0000000000..67345b2d88 --- /dev/null +++ b/core-js/features/array/slice.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/slice'); diff --git a/core-js/features/array/some.js b/core-js/features/array/some.js new file mode 100644 index 0000000000..ce62873e9b --- /dev/null +++ b/core-js/features/array/some.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/some'); diff --git a/core-js/features/array/sort.js b/core-js/features/array/sort.js new file mode 100644 index 0000000000..4a58b24490 --- /dev/null +++ b/core-js/features/array/sort.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/sort'); diff --git a/core-js/features/array/splice.js b/core-js/features/array/splice.js new file mode 100644 index 0000000000..898b964a36 --- /dev/null +++ b/core-js/features/array/splice.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/splice'); diff --git a/core-js/features/array/values.js b/core-js/features/array/values.js new file mode 100644 index 0000000000..6e8956c4b1 --- /dev/null +++ b/core-js/features/array/values.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/values'); diff --git a/core-js/features/array/virtual/concat.js b/core-js/features/array/virtual/concat.js new file mode 100644 index 0000000000..e4aad47ecf --- /dev/null +++ b/core-js/features/array/virtual/concat.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/concat'); diff --git a/core-js/features/array/virtual/copy-within.js b/core-js/features/array/virtual/copy-within.js new file mode 100644 index 0000000000..3bb56c0d99 --- /dev/null +++ b/core-js/features/array/virtual/copy-within.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/copy-within'); diff --git a/core-js/features/array/virtual/entries.js b/core-js/features/array/virtual/entries.js new file mode 100644 index 0000000000..561c358c17 --- /dev/null +++ b/core-js/features/array/virtual/entries.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/entries'); diff --git a/core-js/features/array/virtual/every.js b/core-js/features/array/virtual/every.js new file mode 100644 index 0000000000..9b22ec88d9 --- /dev/null +++ b/core-js/features/array/virtual/every.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/every'); diff --git a/core-js/features/array/virtual/fill.js b/core-js/features/array/virtual/fill.js new file mode 100644 index 0000000000..2a2ae7628b --- /dev/null +++ b/core-js/features/array/virtual/fill.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/fill'); diff --git a/core-js/features/array/virtual/filter.js b/core-js/features/array/virtual/filter.js new file mode 100644 index 0000000000..bc98bd19c5 --- /dev/null +++ b/core-js/features/array/virtual/filter.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/filter'); diff --git a/core-js/features/array/virtual/find-index.js b/core-js/features/array/virtual/find-index.js new file mode 100644 index 0000000000..dc352bd974 --- /dev/null +++ b/core-js/features/array/virtual/find-index.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/find-index'); diff --git a/core-js/features/array/virtual/find.js b/core-js/features/array/virtual/find.js new file mode 100644 index 0000000000..54ebe1d788 --- /dev/null +++ b/core-js/features/array/virtual/find.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/find'); diff --git a/core-js/features/array/virtual/flat-map.js b/core-js/features/array/virtual/flat-map.js new file mode 100644 index 0000000000..08c9be00b3 --- /dev/null +++ b/core-js/features/array/virtual/flat-map.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/flat-map'); diff --git a/core-js/features/array/virtual/flat.js b/core-js/features/array/virtual/flat.js new file mode 100644 index 0000000000..c53d93f4b5 --- /dev/null +++ b/core-js/features/array/virtual/flat.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/flat'); diff --git a/core-js/features/array/virtual/for-each.js b/core-js/features/array/virtual/for-each.js new file mode 100644 index 0000000000..9b3880f299 --- /dev/null +++ b/core-js/features/array/virtual/for-each.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/for-each'); diff --git a/core-js/features/array/virtual/includes.js b/core-js/features/array/virtual/includes.js new file mode 100644 index 0000000000..e5623fc7a1 --- /dev/null +++ b/core-js/features/array/virtual/includes.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/includes'); diff --git a/core-js/features/array/virtual/index-of.js b/core-js/features/array/virtual/index-of.js new file mode 100644 index 0000000000..e819d9b18e --- /dev/null +++ b/core-js/features/array/virtual/index-of.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/index-of'); diff --git a/core-js/features/array/virtual/index.js b/core-js/features/array/virtual/index.js new file mode 100644 index 0000000000..e6bff15e76 --- /dev/null +++ b/core-js/features/array/virtual/index.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual'); diff --git a/core-js/features/array/virtual/iterator.js b/core-js/features/array/virtual/iterator.js new file mode 100644 index 0000000000..f99a1a05a3 --- /dev/null +++ b/core-js/features/array/virtual/iterator.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/iterator'); diff --git a/core-js/features/array/virtual/join.js b/core-js/features/array/virtual/join.js new file mode 100644 index 0000000000..0fb295ed63 --- /dev/null +++ b/core-js/features/array/virtual/join.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/join'); diff --git a/core-js/features/array/virtual/keys.js b/core-js/features/array/virtual/keys.js new file mode 100644 index 0000000000..efc2d88b10 --- /dev/null +++ b/core-js/features/array/virtual/keys.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/keys'); diff --git a/core-js/features/array/virtual/last-index-of.js b/core-js/features/array/virtual/last-index-of.js new file mode 100644 index 0000000000..cc4ba59778 --- /dev/null +++ b/core-js/features/array/virtual/last-index-of.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/last-index-of'); diff --git a/core-js/features/array/virtual/map.js b/core-js/features/array/virtual/map.js new file mode 100644 index 0000000000..bdd7e52335 --- /dev/null +++ b/core-js/features/array/virtual/map.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/map'); diff --git a/core-js/features/array/virtual/reduce-right.js b/core-js/features/array/virtual/reduce-right.js new file mode 100644 index 0000000000..e00d5391a7 --- /dev/null +++ b/core-js/features/array/virtual/reduce-right.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/reduce-right'); diff --git a/core-js/features/array/virtual/reduce.js b/core-js/features/array/virtual/reduce.js new file mode 100644 index 0000000000..47a30bac4e --- /dev/null +++ b/core-js/features/array/virtual/reduce.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/reduce'); diff --git a/core-js/features/array/virtual/reverse.js b/core-js/features/array/virtual/reverse.js new file mode 100644 index 0000000000..780cd09b78 --- /dev/null +++ b/core-js/features/array/virtual/reverse.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/reverse'); diff --git a/core-js/features/array/virtual/slice.js b/core-js/features/array/virtual/slice.js new file mode 100644 index 0000000000..4d65726f58 --- /dev/null +++ b/core-js/features/array/virtual/slice.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/slice'); diff --git a/core-js/features/array/virtual/some.js b/core-js/features/array/virtual/some.js new file mode 100644 index 0000000000..cb86d9e373 --- /dev/null +++ b/core-js/features/array/virtual/some.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/some'); diff --git a/core-js/features/array/virtual/sort.js b/core-js/features/array/virtual/sort.js new file mode 100644 index 0000000000..5008b036b7 --- /dev/null +++ b/core-js/features/array/virtual/sort.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/sort'); diff --git a/core-js/features/array/virtual/splice.js b/core-js/features/array/virtual/splice.js new file mode 100644 index 0000000000..feace09451 --- /dev/null +++ b/core-js/features/array/virtual/splice.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/splice'); diff --git a/core-js/features/array/virtual/values.js b/core-js/features/array/virtual/values.js new file mode 100644 index 0000000000..7aa326fb0a --- /dev/null +++ b/core-js/features/array/virtual/values.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/values'); diff --git a/core-js/features/clear-immediate.js b/core-js/features/clear-immediate.js new file mode 100644 index 0000000000..54d9bb2d51 --- /dev/null +++ b/core-js/features/clear-immediate.js @@ -0,0 +1 @@ +module.exports = require('../stable/clear-immediate'); diff --git a/core-js/features/composite-key.js b/core-js/features/composite-key.js new file mode 100644 index 0000000000..9fd507b10f --- /dev/null +++ b/core-js/features/composite-key.js @@ -0,0 +1,4 @@ +require('../modules/esnext.composite-key'); +var path = require('../internals/path'); + +module.exports = path.compositeKey; diff --git a/core-js/features/composite-symbol.js b/core-js/features/composite-symbol.js new file mode 100644 index 0000000000..fce960024d --- /dev/null +++ b/core-js/features/composite-symbol.js @@ -0,0 +1,5 @@ +require('../modules/es.symbol'); +require('../modules/esnext.composite-symbol'); +var path = require('../internals/path'); + +module.exports = path.compositeSymbol; diff --git a/core-js/features/data-view/index.js b/core-js/features/data-view/index.js new file mode 100644 index 0000000000..7a754971ca --- /dev/null +++ b/core-js/features/data-view/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/data-view'); diff --git a/core-js/features/date/index.js b/core-js/features/date/index.js new file mode 100644 index 0000000000..5ff65b85b2 --- /dev/null +++ b/core-js/features/date/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/date'); diff --git a/core-js/features/date/now.js b/core-js/features/date/now.js new file mode 100644 index 0000000000..e196b5f3ca --- /dev/null +++ b/core-js/features/date/now.js @@ -0,0 +1 @@ +module.exports = require('../../es/date/now'); diff --git a/core-js/features/date/to-iso-string.js b/core-js/features/date/to-iso-string.js new file mode 100644 index 0000000000..c9348195f5 --- /dev/null +++ b/core-js/features/date/to-iso-string.js @@ -0,0 +1 @@ +module.exports = require('../../es/date/to-iso-string'); diff --git a/core-js/features/date/to-json.js b/core-js/features/date/to-json.js new file mode 100644 index 0000000000..9966af465b --- /dev/null +++ b/core-js/features/date/to-json.js @@ -0,0 +1 @@ +module.exports = require('../../es/date/to-json'); diff --git a/core-js/features/date/to-primitive.js b/core-js/features/date/to-primitive.js new file mode 100644 index 0000000000..f9f11e47cb --- /dev/null +++ b/core-js/features/date/to-primitive.js @@ -0,0 +1 @@ +module.exports = require('../../es/date/to-primitive'); diff --git a/core-js/features/date/to-string.js b/core-js/features/date/to-string.js new file mode 100644 index 0000000000..055f26c439 --- /dev/null +++ b/core-js/features/date/to-string.js @@ -0,0 +1 @@ +module.exports = require('../../es/date/to-string'); diff --git a/core-js/features/dom-collections/for-each.js b/core-js/features/dom-collections/for-each.js new file mode 100644 index 0000000000..6f9c15dde0 --- /dev/null +++ b/core-js/features/dom-collections/for-each.js @@ -0,0 +1 @@ +module.exports = require('../../stable/dom-collections/for-each'); diff --git a/core-js/features/dom-collections/index.js b/core-js/features/dom-collections/index.js new file mode 100644 index 0000000000..1fe8ae80fa --- /dev/null +++ b/core-js/features/dom-collections/index.js @@ -0,0 +1 @@ +module.exports = require('../../stable/dom-collections'); diff --git a/core-js/features/dom-collections/iterator.js b/core-js/features/dom-collections/iterator.js new file mode 100644 index 0000000000..03ac513117 --- /dev/null +++ b/core-js/features/dom-collections/iterator.js @@ -0,0 +1 @@ +module.exports = require('../../stable/dom-collections/iterator'); diff --git a/core-js/features/function/bind.js b/core-js/features/function/bind.js new file mode 100644 index 0000000000..108a677315 --- /dev/null +++ b/core-js/features/function/bind.js @@ -0,0 +1 @@ +module.exports = require('../../es/function/bind'); diff --git a/core-js/features/function/has-instance.js b/core-js/features/function/has-instance.js new file mode 100644 index 0000000000..eac5999193 --- /dev/null +++ b/core-js/features/function/has-instance.js @@ -0,0 +1 @@ +module.exports = require('../../es/function/has-instance'); diff --git a/core-js/features/function/index.js b/core-js/features/function/index.js new file mode 100644 index 0000000000..3bed0f56b7 --- /dev/null +++ b/core-js/features/function/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/function'); diff --git a/core-js/features/function/name.js b/core-js/features/function/name.js new file mode 100644 index 0000000000..b4fe6766cc --- /dev/null +++ b/core-js/features/function/name.js @@ -0,0 +1 @@ +module.exports = require('../../es/function/name'); diff --git a/core-js/features/function/virtual/bind.js b/core-js/features/function/virtual/bind.js new file mode 100644 index 0000000000..2820ffb11d --- /dev/null +++ b/core-js/features/function/virtual/bind.js @@ -0,0 +1 @@ +module.exports = require('../../../es/function/virtual/bind'); diff --git a/core-js/features/function/virtual/index.js b/core-js/features/function/virtual/index.js new file mode 100644 index 0000000000..3234d9d071 --- /dev/null +++ b/core-js/features/function/virtual/index.js @@ -0,0 +1 @@ +module.exports = require('../../../es/function/virtual'); diff --git a/core-js/features/get-iterator-method.js b/core-js/features/get-iterator-method.js new file mode 100644 index 0000000000..a5afc2bd58 --- /dev/null +++ b/core-js/features/get-iterator-method.js @@ -0,0 +1,4 @@ +require('../modules/web.dom-collections.iterator'); +require('../modules/es.string.iterator'); + +module.exports = require('../internals/get-iterator-method'); diff --git a/core-js/features/get-iterator.js b/core-js/features/get-iterator.js new file mode 100644 index 0000000000..c4c6a7884f --- /dev/null +++ b/core-js/features/get-iterator.js @@ -0,0 +1,4 @@ +require('../modules/web.dom-collections.iterator'); +require('../modules/es.string.iterator'); + +module.exports = require('../internals/get-iterator'); diff --git a/core-js/features/global-this.js b/core-js/features/global-this.js new file mode 100644 index 0000000000..f056723c42 --- /dev/null +++ b/core-js/features/global-this.js @@ -0,0 +1,3 @@ +require('../modules/esnext.global-this'); + +module.exports = require('../internals/global'); diff --git a/core-js/features/index.js b/core-js/features/index.js new file mode 100644 index 0000000000..c259160ef5 --- /dev/null +++ b/core-js/features/index.js @@ -0,0 +1 @@ +module.exports = require('..'); diff --git a/core-js/features/instance/at.js b/core-js/features/instance/at.js new file mode 100644 index 0000000000..f9b4f7986d --- /dev/null +++ b/core-js/features/instance/at.js @@ -0,0 +1,9 @@ +var at = require('../string/virtual/at'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.at; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.at) ? at : own; +}; diff --git a/core-js/features/instance/bind.js b/core-js/features/instance/bind.js new file mode 100644 index 0000000000..7f168092f6 --- /dev/null +++ b/core-js/features/instance/bind.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/bind'); diff --git a/core-js/features/instance/code-point-at.js b/core-js/features/instance/code-point-at.js new file mode 100644 index 0000000000..f353ea3e83 --- /dev/null +++ b/core-js/features/instance/code-point-at.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/code-point-at'); diff --git a/core-js/features/instance/code-points.js b/core-js/features/instance/code-points.js new file mode 100644 index 0000000000..6437299295 --- /dev/null +++ b/core-js/features/instance/code-points.js @@ -0,0 +1,9 @@ +var codePoints = require('../string/virtual/code-points'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.codePoints; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.codePoints) ? codePoints : own; +}; diff --git a/core-js/features/instance/concat.js b/core-js/features/instance/concat.js new file mode 100644 index 0000000000..1387932eba --- /dev/null +++ b/core-js/features/instance/concat.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/concat'); diff --git a/core-js/features/instance/copy-within.js b/core-js/features/instance/copy-within.js new file mode 100644 index 0000000000..15e9d29ca2 --- /dev/null +++ b/core-js/features/instance/copy-within.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/copy-within'); diff --git a/core-js/features/instance/ends-with.js b/core-js/features/instance/ends-with.js new file mode 100644 index 0000000000..72a0380408 --- /dev/null +++ b/core-js/features/instance/ends-with.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/ends-with'); diff --git a/core-js/features/instance/entries.js b/core-js/features/instance/entries.js new file mode 100644 index 0000000000..0f3cc1e0c7 --- /dev/null +++ b/core-js/features/instance/entries.js @@ -0,0 +1 @@ +module.exports = require('../../stable/instance/entries'); diff --git a/core-js/features/instance/every.js b/core-js/features/instance/every.js new file mode 100644 index 0000000000..9b285d51ae --- /dev/null +++ b/core-js/features/instance/every.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/every'); diff --git a/core-js/features/instance/fill.js b/core-js/features/instance/fill.js new file mode 100644 index 0000000000..884763c3c8 --- /dev/null +++ b/core-js/features/instance/fill.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/fill'); diff --git a/core-js/features/instance/filter.js b/core-js/features/instance/filter.js new file mode 100644 index 0000000000..94b2339649 --- /dev/null +++ b/core-js/features/instance/filter.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/filter'); diff --git a/core-js/features/instance/find-index.js b/core-js/features/instance/find-index.js new file mode 100644 index 0000000000..79e4118375 --- /dev/null +++ b/core-js/features/instance/find-index.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/find-index'); diff --git a/core-js/features/instance/find.js b/core-js/features/instance/find.js new file mode 100644 index 0000000000..9edd5736ea --- /dev/null +++ b/core-js/features/instance/find.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/find'); diff --git a/core-js/features/instance/flags.js b/core-js/features/instance/flags.js new file mode 100644 index 0000000000..e3bfaa720c --- /dev/null +++ b/core-js/features/instance/flags.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/flags'); diff --git a/core-js/features/instance/flat-map.js b/core-js/features/instance/flat-map.js new file mode 100644 index 0000000000..a98bebd71e --- /dev/null +++ b/core-js/features/instance/flat-map.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/flat-map'); diff --git a/core-js/features/instance/flat.js b/core-js/features/instance/flat.js new file mode 100644 index 0000000000..bc46540952 --- /dev/null +++ b/core-js/features/instance/flat.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/flat'); diff --git a/core-js/features/instance/for-each.js b/core-js/features/instance/for-each.js new file mode 100644 index 0000000000..0540efa004 --- /dev/null +++ b/core-js/features/instance/for-each.js @@ -0,0 +1 @@ +module.exports = require('../../stable/instance/for-each'); diff --git a/core-js/features/instance/includes.js b/core-js/features/instance/includes.js new file mode 100644 index 0000000000..6d13532177 --- /dev/null +++ b/core-js/features/instance/includes.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/includes'); diff --git a/core-js/features/instance/index-of.js b/core-js/features/instance/index-of.js new file mode 100644 index 0000000000..8700e0e2c0 --- /dev/null +++ b/core-js/features/instance/index-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/index-of'); diff --git a/core-js/features/instance/keys.js b/core-js/features/instance/keys.js new file mode 100644 index 0000000000..0f562f8742 --- /dev/null +++ b/core-js/features/instance/keys.js @@ -0,0 +1 @@ +module.exports = require('../../stable/instance/keys'); diff --git a/core-js/features/instance/last-index-of.js b/core-js/features/instance/last-index-of.js new file mode 100644 index 0000000000..b99739ef8a --- /dev/null +++ b/core-js/features/instance/last-index-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/last-index-of'); diff --git a/core-js/features/instance/map.js b/core-js/features/instance/map.js new file mode 100644 index 0000000000..bfb6be1b28 --- /dev/null +++ b/core-js/features/instance/map.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/map'); diff --git a/core-js/features/instance/match-all.js b/core-js/features/instance/match-all.js new file mode 100644 index 0000000000..2decf588e9 --- /dev/null +++ b/core-js/features/instance/match-all.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/match-all'); diff --git a/core-js/features/instance/pad-end.js b/core-js/features/instance/pad-end.js new file mode 100644 index 0000000000..16ed95a01a --- /dev/null +++ b/core-js/features/instance/pad-end.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/pad-end'); diff --git a/core-js/features/instance/pad-start.js b/core-js/features/instance/pad-start.js new file mode 100644 index 0000000000..01925ffbba --- /dev/null +++ b/core-js/features/instance/pad-start.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/pad-start'); diff --git a/core-js/features/instance/reduce-right.js b/core-js/features/instance/reduce-right.js new file mode 100644 index 0000000000..2810409d94 --- /dev/null +++ b/core-js/features/instance/reduce-right.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/reduce-right'); diff --git a/core-js/features/instance/reduce.js b/core-js/features/instance/reduce.js new file mode 100644 index 0000000000..ecee1c959a --- /dev/null +++ b/core-js/features/instance/reduce.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/reduce'); diff --git a/core-js/features/instance/repeat.js b/core-js/features/instance/repeat.js new file mode 100644 index 0000000000..c0a7ec87a6 --- /dev/null +++ b/core-js/features/instance/repeat.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/repeat'); diff --git a/core-js/features/instance/replace-all.js b/core-js/features/instance/replace-all.js new file mode 100644 index 0000000000..d920a60146 --- /dev/null +++ b/core-js/features/instance/replace-all.js @@ -0,0 +1,9 @@ +var replaceAll = require('../string/virtual/replace-all'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.replaceAll; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.replaceAll) ? replaceAll : own; +}; diff --git a/core-js/features/instance/reverse.js b/core-js/features/instance/reverse.js new file mode 100644 index 0000000000..9983586581 --- /dev/null +++ b/core-js/features/instance/reverse.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/reverse'); diff --git a/core-js/features/instance/slice.js b/core-js/features/instance/slice.js new file mode 100644 index 0000000000..1755c4191b --- /dev/null +++ b/core-js/features/instance/slice.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/slice'); diff --git a/core-js/features/instance/some.js b/core-js/features/instance/some.js new file mode 100644 index 0000000000..b32c903b30 --- /dev/null +++ b/core-js/features/instance/some.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/some'); diff --git a/core-js/features/instance/sort.js b/core-js/features/instance/sort.js new file mode 100644 index 0000000000..8891434c22 --- /dev/null +++ b/core-js/features/instance/sort.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/sort'); diff --git a/core-js/features/instance/splice.js b/core-js/features/instance/splice.js new file mode 100644 index 0000000000..1d20660f06 --- /dev/null +++ b/core-js/features/instance/splice.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/splice'); diff --git a/core-js/features/instance/starts-with.js b/core-js/features/instance/starts-with.js new file mode 100644 index 0000000000..4c8905255a --- /dev/null +++ b/core-js/features/instance/starts-with.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/starts-with'); diff --git a/core-js/features/instance/trim-end.js b/core-js/features/instance/trim-end.js new file mode 100644 index 0000000000..eb75cde145 --- /dev/null +++ b/core-js/features/instance/trim-end.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/trim-end'); diff --git a/core-js/features/instance/trim-left.js b/core-js/features/instance/trim-left.js new file mode 100644 index 0000000000..5bef37ab77 --- /dev/null +++ b/core-js/features/instance/trim-left.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/trim-left'); diff --git a/core-js/features/instance/trim-right.js b/core-js/features/instance/trim-right.js new file mode 100644 index 0000000000..c425c7bf7b --- /dev/null +++ b/core-js/features/instance/trim-right.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/trim-right'); diff --git a/core-js/features/instance/trim-start.js b/core-js/features/instance/trim-start.js new file mode 100644 index 0000000000..88616985fa --- /dev/null +++ b/core-js/features/instance/trim-start.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/trim-start'); diff --git a/core-js/features/instance/trim.js b/core-js/features/instance/trim.js new file mode 100644 index 0000000000..61c69d5030 --- /dev/null +++ b/core-js/features/instance/trim.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/trim'); diff --git a/core-js/features/instance/values.js b/core-js/features/instance/values.js new file mode 100644 index 0000000000..9a29e4f069 --- /dev/null +++ b/core-js/features/instance/values.js @@ -0,0 +1 @@ +module.exports = require('../../stable/instance/values'); diff --git a/core-js/features/is-iterable.js b/core-js/features/is-iterable.js new file mode 100644 index 0000000000..7ca65d5b98 --- /dev/null +++ b/core-js/features/is-iterable.js @@ -0,0 +1,4 @@ +require('../modules/web.dom-collections.iterator'); +require('../modules/es.string.iterator'); + +module.exports = require('../internals/is-iterable'); diff --git a/core-js/features/json/index.js b/core-js/features/json/index.js new file mode 100644 index 0000000000..c0b897ff78 --- /dev/null +++ b/core-js/features/json/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/json'); diff --git a/core-js/features/json/stringify.js b/core-js/features/json/stringify.js new file mode 100644 index 0000000000..20cf890355 --- /dev/null +++ b/core-js/features/json/stringify.js @@ -0,0 +1 @@ +module.exports = require('../../es/json/stringify'); diff --git a/core-js/features/json/to-string-tag.js b/core-js/features/json/to-string-tag.js new file mode 100644 index 0000000000..9e9567295b --- /dev/null +++ b/core-js/features/json/to-string-tag.js @@ -0,0 +1 @@ +module.exports = require('../../es/json/to-string-tag'); diff --git a/core-js/features/map/delete-all.js b/core-js/features/map/delete-all.js new file mode 100644 index 0000000000..ecb21135ba --- /dev/null +++ b/core-js/features/map/delete-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.delete-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'deleteAll'); diff --git a/core-js/features/map/every.js b/core-js/features/map/every.js new file mode 100644 index 0000000000..a86e3930a6 --- /dev/null +++ b/core-js/features/map/every.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.every'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'every'); diff --git a/core-js/features/map/filter.js b/core-js/features/map/filter.js new file mode 100644 index 0000000000..23265265b7 --- /dev/null +++ b/core-js/features/map/filter.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.filter'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'filter'); diff --git a/core-js/features/map/find-key.js b/core-js/features/map/find-key.js new file mode 100644 index 0000000000..662c42363d --- /dev/null +++ b/core-js/features/map/find-key.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.find-key'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'findKey'); diff --git a/core-js/features/map/find.js b/core-js/features/map/find.js new file mode 100644 index 0000000000..993b2268c7 --- /dev/null +++ b/core-js/features/map/find.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.find'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'find'); diff --git a/core-js/features/map/from.js b/core-js/features/map/from.js new file mode 100644 index 0000000000..b7d75f907c --- /dev/null +++ b/core-js/features/map/from.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.map'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.map.from'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var Map = path.Map; +var mapFrom = Map.from; + +module.exports = function from(source, mapFn, thisArg) { + return mapFrom.call(typeof this === 'function' ? this : Map, source, mapFn, thisArg); +}; diff --git a/core-js/features/map/group-by.js b/core-js/features/map/group-by.js new file mode 100644 index 0000000000..c4dfdca59a --- /dev/null +++ b/core-js/features/map/group-by.js @@ -0,0 +1,11 @@ +'use strict'; +require('../../modules/es.map'); +require('../../modules/esnext.map.group-by'); +var path = require('../../internals/path'); + +var Map = path.Map; +var mapGroupBy = Map.groupBy; + +module.exports = function groupBy(source, iterable, keyDerivative) { + return mapGroupBy.call(typeof this === 'function' ? this : Map, source, iterable, keyDerivative); +}; diff --git a/core-js/features/map/includes.js b/core-js/features/map/includes.js new file mode 100644 index 0000000000..3ba5acd135 --- /dev/null +++ b/core-js/features/map/includes.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.includes'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'includes'); diff --git a/core-js/features/map/index.js b/core-js/features/map/index.js new file mode 100644 index 0000000000..bc7a5360c0 --- /dev/null +++ b/core-js/features/map/index.js @@ -0,0 +1,20 @@ +module.exports = require('../../es/map'); + +require('../../modules/esnext.map.from'); +require('../../modules/esnext.map.of'); +require('../../modules/esnext.map.delete-all'); +require('../../modules/esnext.map.every'); +require('../../modules/esnext.map.filter'); +require('../../modules/esnext.map.find'); +require('../../modules/esnext.map.find-key'); +require('../../modules/esnext.map.group-by'); +require('../../modules/esnext.map.includes'); +require('../../modules/esnext.map.key-by'); +require('../../modules/esnext.map.key-of'); +require('../../modules/esnext.map.map-keys'); +require('../../modules/esnext.map.map-values'); +require('../../modules/esnext.map.merge'); +require('../../modules/esnext.map.reduce'); +require('../../modules/esnext.map.some'); +require('../../modules/esnext.map.update'); +require('../../modules/esnext.map.update-or-insert'); diff --git a/core-js/features/map/key-by.js b/core-js/features/map/key-by.js new file mode 100644 index 0000000000..b156f020d0 --- /dev/null +++ b/core-js/features/map/key-by.js @@ -0,0 +1,11 @@ +'use strict'; +require('../../modules/es.map'); +require('../../modules/esnext.map.key-by'); +var path = require('../../internals/path'); + +var Map = path.Map; +var mapKeyBy = Map.keyBy; + +module.exports = function keyBy(source, iterable, keyDerivative) { + return mapKeyBy.call(typeof this === 'function' ? this : Map, source, iterable, keyDerivative); +}; diff --git a/core-js/features/map/key-of.js b/core-js/features/map/key-of.js new file mode 100644 index 0000000000..0d0789a4c8 --- /dev/null +++ b/core-js/features/map/key-of.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.key-of'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'keyOf'); diff --git a/core-js/features/map/map-keys.js b/core-js/features/map/map-keys.js new file mode 100644 index 0000000000..07a49a3271 --- /dev/null +++ b/core-js/features/map/map-keys.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.map-keys'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'mapKeys'); diff --git a/core-js/features/map/map-values.js b/core-js/features/map/map-values.js new file mode 100644 index 0000000000..40bf6ca2f6 --- /dev/null +++ b/core-js/features/map/map-values.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.map-values'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'mapValues'); diff --git a/core-js/features/map/merge.js b/core-js/features/map/merge.js new file mode 100644 index 0000000000..839620d6cb --- /dev/null +++ b/core-js/features/map/merge.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.merge'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'merge'); diff --git a/core-js/features/map/of.js b/core-js/features/map/of.js new file mode 100644 index 0000000000..57f2a76254 --- /dev/null +++ b/core-js/features/map/of.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.map'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.map.of'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var Map = path.Map; +var mapOf = Map.of; + +module.exports = function of() { + return mapOf.apply(typeof this === 'function' ? this : Map, arguments); +}; diff --git a/core-js/features/map/reduce.js b/core-js/features/map/reduce.js new file mode 100644 index 0000000000..272b6f8428 --- /dev/null +++ b/core-js/features/map/reduce.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.reduce'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'reduce'); diff --git a/core-js/features/map/some.js b/core-js/features/map/some.js new file mode 100644 index 0000000000..48192fe28b --- /dev/null +++ b/core-js/features/map/some.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.some'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'some'); diff --git a/core-js/features/map/update-or-insert.js b/core-js/features/map/update-or-insert.js new file mode 100644 index 0000000000..09c43531c4 --- /dev/null +++ b/core-js/features/map/update-or-insert.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.update-or-insert'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'updateOrInsert'); diff --git a/core-js/features/map/update.js b/core-js/features/map/update.js new file mode 100644 index 0000000000..3352690095 --- /dev/null +++ b/core-js/features/map/update.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.update'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'update'); diff --git a/core-js/features/math/acosh.js b/core-js/features/math/acosh.js new file mode 100644 index 0000000000..dd8ba00261 --- /dev/null +++ b/core-js/features/math/acosh.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/acosh'); diff --git a/core-js/features/math/asinh.js b/core-js/features/math/asinh.js new file mode 100644 index 0000000000..f811e075c7 --- /dev/null +++ b/core-js/features/math/asinh.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/asinh'); diff --git a/core-js/features/math/atanh.js b/core-js/features/math/atanh.js new file mode 100644 index 0000000000..b063d11c0a --- /dev/null +++ b/core-js/features/math/atanh.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/atanh'); diff --git a/core-js/features/math/cbrt.js b/core-js/features/math/cbrt.js new file mode 100644 index 0000000000..a0679fc9cd --- /dev/null +++ b/core-js/features/math/cbrt.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/cbrt'); diff --git a/core-js/features/math/clamp.js b/core-js/features/math/clamp.js new file mode 100644 index 0000000000..7b81611772 --- /dev/null +++ b/core-js/features/math/clamp.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.clamp'); +var path = require('../../internals/path'); + +module.exports = path.Math.clamp; diff --git a/core-js/features/math/clz32.js b/core-js/features/math/clz32.js new file mode 100644 index 0000000000..e6460540e4 --- /dev/null +++ b/core-js/features/math/clz32.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/clz32'); diff --git a/core-js/features/math/cosh.js b/core-js/features/math/cosh.js new file mode 100644 index 0000000000..a2be861ee0 --- /dev/null +++ b/core-js/features/math/cosh.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/cosh'); diff --git a/core-js/features/math/deg-per-rad.js b/core-js/features/math/deg-per-rad.js new file mode 100644 index 0000000000..c9451124d8 --- /dev/null +++ b/core-js/features/math/deg-per-rad.js @@ -0,0 +1,3 @@ +require('../../modules/esnext.math.deg-per-rad'); + +module.exports = Math.PI / 180; diff --git a/core-js/features/math/degrees.js b/core-js/features/math/degrees.js new file mode 100644 index 0000000000..119c32704d --- /dev/null +++ b/core-js/features/math/degrees.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.degrees'); +var path = require('../../internals/path'); + +module.exports = path.Math.degrees; diff --git a/core-js/features/math/expm1.js b/core-js/features/math/expm1.js new file mode 100644 index 0000000000..a268bf3185 --- /dev/null +++ b/core-js/features/math/expm1.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/expm1'); diff --git a/core-js/features/math/fround.js b/core-js/features/math/fround.js new file mode 100644 index 0000000000..1dc91bb680 --- /dev/null +++ b/core-js/features/math/fround.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/fround'); diff --git a/core-js/features/math/fscale.js b/core-js/features/math/fscale.js new file mode 100644 index 0000000000..2a3cdd89c5 --- /dev/null +++ b/core-js/features/math/fscale.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.fscale'); +var path = require('../../internals/path'); + +module.exports = path.Math.fscale; diff --git a/core-js/features/math/hypot.js b/core-js/features/math/hypot.js new file mode 100644 index 0000000000..e6d0e640b1 --- /dev/null +++ b/core-js/features/math/hypot.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/hypot'); diff --git a/core-js/features/math/iaddh.js b/core-js/features/math/iaddh.js new file mode 100644 index 0000000000..abfcd8a519 --- /dev/null +++ b/core-js/features/math/iaddh.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.iaddh'); +var path = require('../../internals/path'); + +module.exports = path.Math.iaddh; diff --git a/core-js/features/math/imul.js b/core-js/features/math/imul.js new file mode 100644 index 0000000000..8cca8ef8ff --- /dev/null +++ b/core-js/features/math/imul.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/imul'); diff --git a/core-js/features/math/imulh.js b/core-js/features/math/imulh.js new file mode 100644 index 0000000000..b81cf3456d --- /dev/null +++ b/core-js/features/math/imulh.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.imulh'); +var path = require('../../internals/path'); + +module.exports = path.Math.imulh; diff --git a/core-js/features/math/index.js b/core-js/features/math/index.js new file mode 100644 index 0000000000..c2aae1535d --- /dev/null +++ b/core-js/features/math/index.js @@ -0,0 +1,15 @@ +module.exports = require('../../es/math'); + +require('../../modules/esnext.math.clamp'); +require('../../modules/esnext.math.deg-per-rad'); +require('../../modules/esnext.math.degrees'); +require('../../modules/esnext.math.fscale'); +require('../../modules/esnext.math.iaddh'); +require('../../modules/esnext.math.isubh'); +require('../../modules/esnext.math.imulh'); +require('../../modules/esnext.math.rad-per-deg'); +require('../../modules/esnext.math.radians'); +require('../../modules/esnext.math.scale'); +require('../../modules/esnext.math.seeded-prng'); +require('../../modules/esnext.math.signbit'); +require('../../modules/esnext.math.umulh'); diff --git a/core-js/features/math/isubh.js b/core-js/features/math/isubh.js new file mode 100644 index 0000000000..a14e102289 --- /dev/null +++ b/core-js/features/math/isubh.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.isubh'); +var path = require('../../internals/path'); + +module.exports = path.Math.isubh; diff --git a/core-js/features/math/log10.js b/core-js/features/math/log10.js new file mode 100644 index 0000000000..272e219074 --- /dev/null +++ b/core-js/features/math/log10.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/log10'); diff --git a/core-js/features/math/log1p.js b/core-js/features/math/log1p.js new file mode 100644 index 0000000000..8974895c6d --- /dev/null +++ b/core-js/features/math/log1p.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/log1p'); diff --git a/core-js/features/math/log2.js b/core-js/features/math/log2.js new file mode 100644 index 0000000000..792eb936fe --- /dev/null +++ b/core-js/features/math/log2.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/log2'); diff --git a/core-js/features/math/rad-per-deg.js b/core-js/features/math/rad-per-deg.js new file mode 100644 index 0000000000..3eee674929 --- /dev/null +++ b/core-js/features/math/rad-per-deg.js @@ -0,0 +1,3 @@ +require('../../modules/esnext.math.rad-per-deg'); + +module.exports = 180 / Math.PI; diff --git a/core-js/features/math/radians.js b/core-js/features/math/radians.js new file mode 100644 index 0000000000..1f02607922 --- /dev/null +++ b/core-js/features/math/radians.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.radians'); +var path = require('../../internals/path'); + +module.exports = path.Math.radians; diff --git a/core-js/features/math/scale.js b/core-js/features/math/scale.js new file mode 100644 index 0000000000..c44428d952 --- /dev/null +++ b/core-js/features/math/scale.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.scale'); +var path = require('../../internals/path'); + +module.exports = path.Math.scale; diff --git a/core-js/features/math/seeded-prng.js b/core-js/features/math/seeded-prng.js new file mode 100644 index 0000000000..80491b90c0 --- /dev/null +++ b/core-js/features/math/seeded-prng.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.seeded-prng'); +var path = require('../../internals/path'); + +module.exports = path.Math.seededPRNG; diff --git a/core-js/features/math/sign.js b/core-js/features/math/sign.js new file mode 100644 index 0000000000..1fd8f83005 --- /dev/null +++ b/core-js/features/math/sign.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/sign'); diff --git a/core-js/features/math/signbit.js b/core-js/features/math/signbit.js new file mode 100644 index 0000000000..ac2862a539 --- /dev/null +++ b/core-js/features/math/signbit.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.signbit'); +var path = require('../../internals/path'); + +module.exports = path.Math.signbit; diff --git a/core-js/features/math/sinh.js b/core-js/features/math/sinh.js new file mode 100644 index 0000000000..0314605140 --- /dev/null +++ b/core-js/features/math/sinh.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/sinh'); diff --git a/core-js/features/math/tanh.js b/core-js/features/math/tanh.js new file mode 100644 index 0000000000..d5bbc71216 --- /dev/null +++ b/core-js/features/math/tanh.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/tanh'); diff --git a/core-js/features/math/to-string-tag.js b/core-js/features/math/to-string-tag.js new file mode 100644 index 0000000000..081cf92548 --- /dev/null +++ b/core-js/features/math/to-string-tag.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/to-string-tag'); diff --git a/core-js/features/math/trunc.js b/core-js/features/math/trunc.js new file mode 100644 index 0000000000..08da6bfded --- /dev/null +++ b/core-js/features/math/trunc.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/trunc'); diff --git a/core-js/features/math/umulh.js b/core-js/features/math/umulh.js new file mode 100644 index 0000000000..447bf712e3 --- /dev/null +++ b/core-js/features/math/umulh.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.umulh'); +var path = require('../../internals/path'); + +module.exports = path.Math.umulh; diff --git a/core-js/features/number/constructor.js b/core-js/features/number/constructor.js new file mode 100644 index 0000000000..2564b5428c --- /dev/null +++ b/core-js/features/number/constructor.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/constructor'); diff --git a/core-js/features/number/epsilon.js b/core-js/features/number/epsilon.js new file mode 100644 index 0000000000..c655aea68b --- /dev/null +++ b/core-js/features/number/epsilon.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/epsilon'); diff --git a/core-js/features/number/from-string.js b/core-js/features/number/from-string.js new file mode 100644 index 0000000000..65654be13e --- /dev/null +++ b/core-js/features/number/from-string.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.number.from-string'); +var path = require('../../internals/path'); + +module.exports = path.Number.fromString; diff --git a/core-js/features/number/index.js b/core-js/features/number/index.js new file mode 100644 index 0000000000..3de7c8fda3 --- /dev/null +++ b/core-js/features/number/index.js @@ -0,0 +1,3 @@ +module.exports = require('../../es/number'); + +require('../../modules/esnext.number.from-string'); diff --git a/core-js/features/number/is-finite.js b/core-js/features/number/is-finite.js new file mode 100644 index 0000000000..4df7cee02f --- /dev/null +++ b/core-js/features/number/is-finite.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/is-finite'); diff --git a/core-js/features/number/is-integer.js b/core-js/features/number/is-integer.js new file mode 100644 index 0000000000..703130788b --- /dev/null +++ b/core-js/features/number/is-integer.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/is-integer'); diff --git a/core-js/features/number/is-nan.js b/core-js/features/number/is-nan.js new file mode 100644 index 0000000000..93b4a6a522 --- /dev/null +++ b/core-js/features/number/is-nan.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/is-nan'); diff --git a/core-js/features/number/is-safe-integer.js b/core-js/features/number/is-safe-integer.js new file mode 100644 index 0000000000..260215b8a9 --- /dev/null +++ b/core-js/features/number/is-safe-integer.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/is-safe-integer'); diff --git a/core-js/features/number/max-safe-integer.js b/core-js/features/number/max-safe-integer.js new file mode 100644 index 0000000000..2bd9174710 --- /dev/null +++ b/core-js/features/number/max-safe-integer.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/max-safe-integer'); diff --git a/core-js/features/number/min-safe-integer.js b/core-js/features/number/min-safe-integer.js new file mode 100644 index 0000000000..bcfe57e771 --- /dev/null +++ b/core-js/features/number/min-safe-integer.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/min-safe-integer'); diff --git a/core-js/features/number/parse-float.js b/core-js/features/number/parse-float.js new file mode 100644 index 0000000000..bd9e1c61d2 --- /dev/null +++ b/core-js/features/number/parse-float.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/parse-float'); diff --git a/core-js/features/number/parse-int.js b/core-js/features/number/parse-int.js new file mode 100644 index 0000000000..06473b8aa2 --- /dev/null +++ b/core-js/features/number/parse-int.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/parse-int'); diff --git a/core-js/features/number/to-fixed.js b/core-js/features/number/to-fixed.js new file mode 100644 index 0000000000..a63c47aba9 --- /dev/null +++ b/core-js/features/number/to-fixed.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/to-fixed'); diff --git a/core-js/features/number/to-precision.js b/core-js/features/number/to-precision.js new file mode 100644 index 0000000000..94c0c0bb4f --- /dev/null +++ b/core-js/features/number/to-precision.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/to-precision'); diff --git a/core-js/features/number/virtual/index.js b/core-js/features/number/virtual/index.js new file mode 100644 index 0000000000..538fb741a9 --- /dev/null +++ b/core-js/features/number/virtual/index.js @@ -0,0 +1 @@ +module.exports = require('../../../es/number/virtual'); diff --git a/core-js/features/number/virtual/to-fixed.js b/core-js/features/number/virtual/to-fixed.js new file mode 100644 index 0000000000..34a6e3d9de --- /dev/null +++ b/core-js/features/number/virtual/to-fixed.js @@ -0,0 +1 @@ +module.exports = require('../../../es/number/virtual/to-fixed'); diff --git a/core-js/features/number/virtual/to-precision.js b/core-js/features/number/virtual/to-precision.js new file mode 100644 index 0000000000..34d15ac152 --- /dev/null +++ b/core-js/features/number/virtual/to-precision.js @@ -0,0 +1 @@ +module.exports = require('../../../es/number/virtual/to-precision'); diff --git a/core-js/features/object/assign.js b/core-js/features/object/assign.js new file mode 100644 index 0000000000..71bb520708 --- /dev/null +++ b/core-js/features/object/assign.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/assign'); diff --git a/core-js/features/object/create.js b/core-js/features/object/create.js new file mode 100644 index 0000000000..c8c535c776 --- /dev/null +++ b/core-js/features/object/create.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/create'); diff --git a/core-js/features/object/define-getter.js b/core-js/features/object/define-getter.js new file mode 100644 index 0000000000..9dcc7dce99 --- /dev/null +++ b/core-js/features/object/define-getter.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/define-getter'); diff --git a/core-js/features/object/define-properties.js b/core-js/features/object/define-properties.js new file mode 100644 index 0000000000..df17acf962 --- /dev/null +++ b/core-js/features/object/define-properties.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/define-properties'); diff --git a/core-js/features/object/define-property.js b/core-js/features/object/define-property.js new file mode 100644 index 0000000000..0d3d32bbc2 --- /dev/null +++ b/core-js/features/object/define-property.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/define-property'); diff --git a/core-js/features/object/define-setter.js b/core-js/features/object/define-setter.js new file mode 100644 index 0000000000..51eba85f1b --- /dev/null +++ b/core-js/features/object/define-setter.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/define-setter'); diff --git a/core-js/features/object/entries.js b/core-js/features/object/entries.js new file mode 100644 index 0000000000..a0720ef4d5 --- /dev/null +++ b/core-js/features/object/entries.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/entries'); diff --git a/core-js/features/object/freeze.js b/core-js/features/object/freeze.js new file mode 100644 index 0000000000..fb649bba6d --- /dev/null +++ b/core-js/features/object/freeze.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/freeze'); diff --git a/core-js/features/object/from-entries.js b/core-js/features/object/from-entries.js new file mode 100644 index 0000000000..8b8ae99043 --- /dev/null +++ b/core-js/features/object/from-entries.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/from-entries'); diff --git a/core-js/features/object/get-own-property-descriptor.js b/core-js/features/object/get-own-property-descriptor.js new file mode 100644 index 0000000000..b0404d86dd --- /dev/null +++ b/core-js/features/object/get-own-property-descriptor.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/get-own-property-descriptor'); diff --git a/core-js/features/object/get-own-property-descriptors.js b/core-js/features/object/get-own-property-descriptors.js new file mode 100644 index 0000000000..2cec864d83 --- /dev/null +++ b/core-js/features/object/get-own-property-descriptors.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/get-own-property-descriptors'); diff --git a/core-js/features/object/get-own-property-names.js b/core-js/features/object/get-own-property-names.js new file mode 100644 index 0000000000..13d60c0cd7 --- /dev/null +++ b/core-js/features/object/get-own-property-names.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/get-own-property-names'); diff --git a/core-js/features/object/get-own-property-symbols.js b/core-js/features/object/get-own-property-symbols.js new file mode 100644 index 0000000000..301e00a9cf --- /dev/null +++ b/core-js/features/object/get-own-property-symbols.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/get-own-property-symbols'); diff --git a/core-js/features/object/get-prototype-of.js b/core-js/features/object/get-prototype-of.js new file mode 100644 index 0000000000..27d2631e2b --- /dev/null +++ b/core-js/features/object/get-prototype-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/get-prototype-of'); diff --git a/core-js/features/object/index.js b/core-js/features/object/index.js new file mode 100644 index 0000000000..ce38cc2695 --- /dev/null +++ b/core-js/features/object/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/object'); diff --git a/core-js/features/object/is-extensible.js b/core-js/features/object/is-extensible.js new file mode 100644 index 0000000000..c228ed7a28 --- /dev/null +++ b/core-js/features/object/is-extensible.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/is-extensible'); diff --git a/core-js/features/object/is-frozen.js b/core-js/features/object/is-frozen.js new file mode 100644 index 0000000000..67bfab7201 --- /dev/null +++ b/core-js/features/object/is-frozen.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/is-frozen'); diff --git a/core-js/features/object/is-sealed.js b/core-js/features/object/is-sealed.js new file mode 100644 index 0000000000..f4b1b13981 --- /dev/null +++ b/core-js/features/object/is-sealed.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/is-sealed'); diff --git a/core-js/features/object/is.js b/core-js/features/object/is.js new file mode 100644 index 0000000000..70fd5bd5f8 --- /dev/null +++ b/core-js/features/object/is.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/is'); diff --git a/core-js/features/object/keys.js b/core-js/features/object/keys.js new file mode 100644 index 0000000000..076a4dbec3 --- /dev/null +++ b/core-js/features/object/keys.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/keys'); diff --git a/core-js/features/object/lookup-getter.js b/core-js/features/object/lookup-getter.js new file mode 100644 index 0000000000..77c189c83f --- /dev/null +++ b/core-js/features/object/lookup-getter.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/lookup-getter'); diff --git a/core-js/features/object/lookup-setter.js b/core-js/features/object/lookup-setter.js new file mode 100644 index 0000000000..c81418c26d --- /dev/null +++ b/core-js/features/object/lookup-setter.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/lookup-setter'); diff --git a/core-js/features/object/prevent-extensions.js b/core-js/features/object/prevent-extensions.js new file mode 100644 index 0000000000..45e224eaee --- /dev/null +++ b/core-js/features/object/prevent-extensions.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/prevent-extensions'); diff --git a/core-js/features/object/seal.js b/core-js/features/object/seal.js new file mode 100644 index 0000000000..9982772e45 --- /dev/null +++ b/core-js/features/object/seal.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/seal'); diff --git a/core-js/features/object/set-prototype-of.js b/core-js/features/object/set-prototype-of.js new file mode 100644 index 0000000000..829f3a1b99 --- /dev/null +++ b/core-js/features/object/set-prototype-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/set-prototype-of'); diff --git a/core-js/features/object/to-string.js b/core-js/features/object/to-string.js new file mode 100644 index 0000000000..cd78944a1c --- /dev/null +++ b/core-js/features/object/to-string.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/to-string'); diff --git a/core-js/features/object/values.js b/core-js/features/object/values.js new file mode 100644 index 0000000000..20c13ee08e --- /dev/null +++ b/core-js/features/object/values.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/values'); diff --git a/core-js/features/observable/index.js b/core-js/features/observable/index.js new file mode 100644 index 0000000000..9f694bc9ac --- /dev/null +++ b/core-js/features/observable/index.js @@ -0,0 +1,8 @@ +require('../../modules/esnext.observable'); +require('../../modules/esnext.symbol.observable'); +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +module.exports = path.Observable; diff --git a/core-js/features/parse-float.js b/core-js/features/parse-float.js new file mode 100644 index 0000000000..8fa047145b --- /dev/null +++ b/core-js/features/parse-float.js @@ -0,0 +1 @@ +module.exports = require('../es/parse-float'); diff --git a/core-js/features/parse-int.js b/core-js/features/parse-int.js new file mode 100644 index 0000000000..5ca5602343 --- /dev/null +++ b/core-js/features/parse-int.js @@ -0,0 +1 @@ +module.exports = require('../es/parse-int'); diff --git a/core-js/features/promise/all-settled.js b/core-js/features/promise/all-settled.js new file mode 100644 index 0000000000..2b11d6b8f9 --- /dev/null +++ b/core-js/features/promise/all-settled.js @@ -0,0 +1,4 @@ +// TODO: Remove from `core-js@4` +require('../../modules/esnext.promise.all-settled'); + +module.exports = require('../../es/promise/all-settled'); diff --git a/core-js/features/promise/any.js b/core-js/features/promise/any.js new file mode 100644 index 0000000000..7246403513 --- /dev/null +++ b/core-js/features/promise/any.js @@ -0,0 +1,12 @@ +'use strict'; +require('../../modules/es.promise'); +require('../../modules/esnext.aggregate-error'); +require('../../modules/esnext.promise.any'); +var path = require('../../internals/path'); + +var Promise = path.Promise; +var $any = Promise.any; + +module.exports = function any(iterable) { + return $any.call(typeof this === 'function' ? this : Promise, iterable); +}; diff --git a/core-js/features/promise/finally.js b/core-js/features/promise/finally.js new file mode 100644 index 0000000000..33a51d4e3f --- /dev/null +++ b/core-js/features/promise/finally.js @@ -0,0 +1 @@ +module.exports = require('../../es/promise/finally'); diff --git a/core-js/features/promise/index.js b/core-js/features/promise/index.js new file mode 100644 index 0000000000..71492a27fc --- /dev/null +++ b/core-js/features/promise/index.js @@ -0,0 +1,7 @@ +module.exports = require('../../es/promise'); + +require('../../modules/esnext.aggregate-error'); +// TODO: Remove from `core-js@4` +require('../../modules/esnext.promise.all-settled'); +require('../../modules/esnext.promise.try'); +require('../../modules/esnext.promise.any'); diff --git a/core-js/features/promise/try.js b/core-js/features/promise/try.js new file mode 100644 index 0000000000..b7a6e3b4f0 --- /dev/null +++ b/core-js/features/promise/try.js @@ -0,0 +1,11 @@ +'use strict'; +require('../../modules/es.promise'); +require('../../modules/esnext.promise.try'); +var path = require('../../internals/path'); + +var Promise = path.Promise; +var promiseTry = Promise['try']; + +module.exports = { 'try': function (callbackfn) { + return promiseTry.call(typeof this === 'function' ? this : Promise, callbackfn); +} }['try']; diff --git a/core-js/features/queue-microtask.js b/core-js/features/queue-microtask.js new file mode 100644 index 0000000000..33a41cea4c --- /dev/null +++ b/core-js/features/queue-microtask.js @@ -0,0 +1 @@ +module.exports = require('../stable/queue-microtask'); diff --git a/core-js/features/reflect/apply.js b/core-js/features/reflect/apply.js new file mode 100644 index 0000000000..d7b952067d --- /dev/null +++ b/core-js/features/reflect/apply.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/apply'); diff --git a/core-js/features/reflect/construct.js b/core-js/features/reflect/construct.js new file mode 100644 index 0000000000..0f286a32e0 --- /dev/null +++ b/core-js/features/reflect/construct.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/construct'); diff --git a/core-js/features/reflect/define-metadata.js b/core-js/features/reflect/define-metadata.js new file mode 100644 index 0000000000..156cc957d1 --- /dev/null +++ b/core-js/features/reflect/define-metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.define-metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.defineMetadata; diff --git a/core-js/features/reflect/define-property.js b/core-js/features/reflect/define-property.js new file mode 100644 index 0000000000..d19b9265d3 --- /dev/null +++ b/core-js/features/reflect/define-property.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/define-property'); diff --git a/core-js/features/reflect/delete-metadata.js b/core-js/features/reflect/delete-metadata.js new file mode 100644 index 0000000000..bbb8c48162 --- /dev/null +++ b/core-js/features/reflect/delete-metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.delete-metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.deleteMetadata; diff --git a/core-js/features/reflect/delete-property.js b/core-js/features/reflect/delete-property.js new file mode 100644 index 0000000000..d79e29b3fe --- /dev/null +++ b/core-js/features/reflect/delete-property.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/delete-property'); diff --git a/core-js/features/reflect/get-metadata-keys.js b/core-js/features/reflect/get-metadata-keys.js new file mode 100644 index 0000000000..8137178ab7 --- /dev/null +++ b/core-js/features/reflect/get-metadata-keys.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.get-metadata-keys'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.getMetadataKeys; diff --git a/core-js/features/reflect/get-metadata.js b/core-js/features/reflect/get-metadata.js new file mode 100644 index 0000000000..3d00b4e4b7 --- /dev/null +++ b/core-js/features/reflect/get-metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.get-metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.getMetadata; diff --git a/core-js/features/reflect/get-own-metadata-keys.js b/core-js/features/reflect/get-own-metadata-keys.js new file mode 100644 index 0000000000..020828fd83 --- /dev/null +++ b/core-js/features/reflect/get-own-metadata-keys.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.get-own-metadata-keys'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.getOwnMetadataKeys; diff --git a/core-js/features/reflect/get-own-metadata.js b/core-js/features/reflect/get-own-metadata.js new file mode 100644 index 0000000000..90f626c895 --- /dev/null +++ b/core-js/features/reflect/get-own-metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.get-own-metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.getOwnMetadata; diff --git a/core-js/features/reflect/get-own-property-descriptor.js b/core-js/features/reflect/get-own-property-descriptor.js new file mode 100644 index 0000000000..0483bca36b --- /dev/null +++ b/core-js/features/reflect/get-own-property-descriptor.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/get-own-property-descriptor'); diff --git a/core-js/features/reflect/get-prototype-of.js b/core-js/features/reflect/get-prototype-of.js new file mode 100644 index 0000000000..cd6d7e0ba3 --- /dev/null +++ b/core-js/features/reflect/get-prototype-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/get-prototype-of'); diff --git a/core-js/features/reflect/get.js b/core-js/features/reflect/get.js new file mode 100644 index 0000000000..ee78111138 --- /dev/null +++ b/core-js/features/reflect/get.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/get'); diff --git a/core-js/features/reflect/has-metadata.js b/core-js/features/reflect/has-metadata.js new file mode 100644 index 0000000000..3072c51e32 --- /dev/null +++ b/core-js/features/reflect/has-metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.has-metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.hasMetadata; diff --git a/core-js/features/reflect/has-own-metadata.js b/core-js/features/reflect/has-own-metadata.js new file mode 100644 index 0000000000..09eb765436 --- /dev/null +++ b/core-js/features/reflect/has-own-metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.has-own-metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.hasOwnMetadata; diff --git a/core-js/features/reflect/has.js b/core-js/features/reflect/has.js new file mode 100644 index 0000000000..94ab23b957 --- /dev/null +++ b/core-js/features/reflect/has.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/has'); diff --git a/core-js/features/reflect/index.js b/core-js/features/reflect/index.js new file mode 100644 index 0000000000..2bcb0bda42 --- /dev/null +++ b/core-js/features/reflect/index.js @@ -0,0 +1,11 @@ +module.exports = require('../../es/reflect'); + +require('../../modules/esnext.reflect.define-metadata'); +require('../../modules/esnext.reflect.delete-metadata'); +require('../../modules/esnext.reflect.get-metadata'); +require('../../modules/esnext.reflect.get-metadata-keys'); +require('../../modules/esnext.reflect.get-own-metadata'); +require('../../modules/esnext.reflect.get-own-metadata-keys'); +require('../../modules/esnext.reflect.has-metadata'); +require('../../modules/esnext.reflect.has-own-metadata'); +require('../../modules/esnext.reflect.metadata'); diff --git a/core-js/features/reflect/is-extensible.js b/core-js/features/reflect/is-extensible.js new file mode 100644 index 0000000000..79eee47a47 --- /dev/null +++ b/core-js/features/reflect/is-extensible.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/is-extensible'); diff --git a/core-js/features/reflect/metadata.js b/core-js/features/reflect/metadata.js new file mode 100644 index 0000000000..d1faf13a9f --- /dev/null +++ b/core-js/features/reflect/metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.metadata; diff --git a/core-js/features/reflect/own-keys.js b/core-js/features/reflect/own-keys.js new file mode 100644 index 0000000000..d2690afcd7 --- /dev/null +++ b/core-js/features/reflect/own-keys.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/own-keys'); diff --git a/core-js/features/reflect/prevent-extensions.js b/core-js/features/reflect/prevent-extensions.js new file mode 100644 index 0000000000..7f536b2fc4 --- /dev/null +++ b/core-js/features/reflect/prevent-extensions.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/prevent-extensions'); diff --git a/core-js/features/reflect/set-prototype-of.js b/core-js/features/reflect/set-prototype-of.js new file mode 100644 index 0000000000..334b24f7f3 --- /dev/null +++ b/core-js/features/reflect/set-prototype-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/set-prototype-of'); diff --git a/core-js/features/reflect/set.js b/core-js/features/reflect/set.js new file mode 100644 index 0000000000..fb8326924e --- /dev/null +++ b/core-js/features/reflect/set.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/set'); diff --git a/core-js/features/regexp/constructor.js b/core-js/features/regexp/constructor.js new file mode 100644 index 0000000000..39f94c96b1 --- /dev/null +++ b/core-js/features/regexp/constructor.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/constructor'); diff --git a/core-js/features/regexp/flags.js b/core-js/features/regexp/flags.js new file mode 100644 index 0000000000..c8cca6a53f --- /dev/null +++ b/core-js/features/regexp/flags.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/flags'); diff --git a/core-js/features/regexp/index.js b/core-js/features/regexp/index.js new file mode 100644 index 0000000000..232877ca9e --- /dev/null +++ b/core-js/features/regexp/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp'); diff --git a/core-js/features/regexp/match.js b/core-js/features/regexp/match.js new file mode 100644 index 0000000000..18c58a6259 --- /dev/null +++ b/core-js/features/regexp/match.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/match'); diff --git a/core-js/features/regexp/replace.js b/core-js/features/regexp/replace.js new file mode 100644 index 0000000000..7164a238d5 --- /dev/null +++ b/core-js/features/regexp/replace.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/replace'); diff --git a/core-js/features/regexp/search.js b/core-js/features/regexp/search.js new file mode 100644 index 0000000000..6b0635152d --- /dev/null +++ b/core-js/features/regexp/search.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/search'); diff --git a/core-js/features/regexp/split.js b/core-js/features/regexp/split.js new file mode 100644 index 0000000000..4739453e69 --- /dev/null +++ b/core-js/features/regexp/split.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/split'); diff --git a/core-js/features/regexp/to-string.js b/core-js/features/regexp/to-string.js new file mode 100644 index 0000000000..4d7834251e --- /dev/null +++ b/core-js/features/regexp/to-string.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/to-string'); diff --git a/core-js/features/set-immediate.js b/core-js/features/set-immediate.js new file mode 100644 index 0000000000..8306724c61 --- /dev/null +++ b/core-js/features/set-immediate.js @@ -0,0 +1 @@ +module.exports = require('../stable/set-immediate'); diff --git a/core-js/features/set-interval.js b/core-js/features/set-interval.js new file mode 100644 index 0000000000..faa70f8de6 --- /dev/null +++ b/core-js/features/set-interval.js @@ -0,0 +1 @@ +module.exports = require('../stable/set-interval'); diff --git a/core-js/features/set-timeout.js b/core-js/features/set-timeout.js new file mode 100644 index 0000000000..cec67eee1e --- /dev/null +++ b/core-js/features/set-timeout.js @@ -0,0 +1 @@ +module.exports = require('../stable/set-timeout'); diff --git a/core-js/features/set/add-all.js b/core-js/features/set/add-all.js new file mode 100644 index 0000000000..d045d5eed6 --- /dev/null +++ b/core-js/features/set/add-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.add-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'addAll'); diff --git a/core-js/features/set/delete-all.js b/core-js/features/set/delete-all.js new file mode 100644 index 0000000000..aa7597453b --- /dev/null +++ b/core-js/features/set/delete-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.delete-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'deleteAll'); diff --git a/core-js/features/set/difference.js b/core-js/features/set/difference.js new file mode 100644 index 0000000000..24a7194827 --- /dev/null +++ b/core-js/features/set/difference.js @@ -0,0 +1,7 @@ +require('../../modules/es.set'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.set.difference'); +require('../../modules/web.dom-collections.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'difference'); diff --git a/core-js/features/set/every.js b/core-js/features/set/every.js new file mode 100644 index 0000000000..f22294ad39 --- /dev/null +++ b/core-js/features/set/every.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.every'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'every'); diff --git a/core-js/features/set/filter.js b/core-js/features/set/filter.js new file mode 100644 index 0000000000..ffb4a027d5 --- /dev/null +++ b/core-js/features/set/filter.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.filter'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'filter'); diff --git a/core-js/features/set/find.js b/core-js/features/set/find.js new file mode 100644 index 0000000000..8627805dc0 --- /dev/null +++ b/core-js/features/set/find.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.find'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'find'); diff --git a/core-js/features/set/from.js b/core-js/features/set/from.js new file mode 100644 index 0000000000..f18623b3cb --- /dev/null +++ b/core-js/features/set/from.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.set'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.set.from'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var Set = path.Set; +var setFrom = Set.from; + +module.exports = function from(source, mapFn, thisArg) { + return setFrom.call(typeof this === 'function' ? this : Set, source, mapFn, thisArg); +}; diff --git a/core-js/features/set/index.js b/core-js/features/set/index.js new file mode 100644 index 0000000000..63a4f2333b --- /dev/null +++ b/core-js/features/set/index.js @@ -0,0 +1,20 @@ +module.exports = require('../../es/set'); + +require('../../modules/esnext.set.from'); +require('../../modules/esnext.set.of'); +require('../../modules/esnext.set.add-all'); +require('../../modules/esnext.set.delete-all'); +require('../../modules/esnext.set.every'); +require('../../modules/esnext.set.difference'); +require('../../modules/esnext.set.filter'); +require('../../modules/esnext.set.find'); +require('../../modules/esnext.set.intersection'); +require('../../modules/esnext.set.is-disjoint-from'); +require('../../modules/esnext.set.is-subset-of'); +require('../../modules/esnext.set.is-superset-of'); +require('../../modules/esnext.set.join'); +require('../../modules/esnext.set.map'); +require('../../modules/esnext.set.reduce'); +require('../../modules/esnext.set.some'); +require('../../modules/esnext.set.symmetric-difference'); +require('../../modules/esnext.set.union'); diff --git a/core-js/features/set/intersection.js b/core-js/features/set/intersection.js new file mode 100644 index 0000000000..203edfe96e --- /dev/null +++ b/core-js/features/set/intersection.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.intersection'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'intersection'); diff --git a/core-js/features/set/is-disjoint-from.js b/core-js/features/set/is-disjoint-from.js new file mode 100644 index 0000000000..88ca08be98 --- /dev/null +++ b/core-js/features/set/is-disjoint-from.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.is-disjoint-from'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'isDisjointFrom'); diff --git a/core-js/features/set/is-subset-of.js b/core-js/features/set/is-subset-of.js new file mode 100644 index 0000000000..21ab3d498d --- /dev/null +++ b/core-js/features/set/is-subset-of.js @@ -0,0 +1,7 @@ +require('../../modules/es.set'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.set.is-subset-of'); +require('../../modules/web.dom-collections.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'isSubsetOf'); diff --git a/core-js/features/set/is-superset-of.js b/core-js/features/set/is-superset-of.js new file mode 100644 index 0000000000..4da6ba12e4 --- /dev/null +++ b/core-js/features/set/is-superset-of.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.is-superset-of'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'isSupersetOf'); diff --git a/core-js/features/set/join.js b/core-js/features/set/join.js new file mode 100644 index 0000000000..b3ae27daef --- /dev/null +++ b/core-js/features/set/join.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.join'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'join'); diff --git a/core-js/features/set/map.js b/core-js/features/set/map.js new file mode 100644 index 0000000000..3957002a74 --- /dev/null +++ b/core-js/features/set/map.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.map'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'map'); diff --git a/core-js/features/set/of.js b/core-js/features/set/of.js new file mode 100644 index 0000000000..114558a2ec --- /dev/null +++ b/core-js/features/set/of.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.set'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.set.of'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var Set = path.Set; +var setOf = Set.of; + +module.exports = function of() { + return setOf.apply(typeof this === 'function' ? this : Set, arguments); +}; diff --git a/core-js/features/set/reduce.js b/core-js/features/set/reduce.js new file mode 100644 index 0000000000..11ab6a4ff6 --- /dev/null +++ b/core-js/features/set/reduce.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.reduce'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'reduce'); diff --git a/core-js/features/set/some.js b/core-js/features/set/some.js new file mode 100644 index 0000000000..0b4227a9f7 --- /dev/null +++ b/core-js/features/set/some.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.some'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'some'); diff --git a/core-js/features/set/symmetric-difference.js b/core-js/features/set/symmetric-difference.js new file mode 100644 index 0000000000..fb04d637aa --- /dev/null +++ b/core-js/features/set/symmetric-difference.js @@ -0,0 +1,7 @@ +require('../../modules/es.set'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.set.symmetric-difference'); +require('../../modules/web.dom-collections.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'symmetricDifference'); diff --git a/core-js/features/set/union.js b/core-js/features/set/union.js new file mode 100644 index 0000000000..d180f8b8e7 --- /dev/null +++ b/core-js/features/set/union.js @@ -0,0 +1,7 @@ +require('../../modules/es.set'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.set.union'); +require('../../modules/web.dom-collections.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'union'); diff --git a/core-js/features/string/anchor.js b/core-js/features/string/anchor.js new file mode 100644 index 0000000000..4705d8e0e9 --- /dev/null +++ b/core-js/features/string/anchor.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/anchor'); diff --git a/core-js/features/string/at.js b/core-js/features/string/at.js new file mode 100644 index 0000000000..d8bcca8fbf --- /dev/null +++ b/core-js/features/string/at.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.string.at'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'at'); diff --git a/core-js/features/string/big.js b/core-js/features/string/big.js new file mode 100644 index 0000000000..8bcf44148f --- /dev/null +++ b/core-js/features/string/big.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/big'); diff --git a/core-js/features/string/blink.js b/core-js/features/string/blink.js new file mode 100644 index 0000000000..334f4a1dc8 --- /dev/null +++ b/core-js/features/string/blink.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/blink'); diff --git a/core-js/features/string/bold.js b/core-js/features/string/bold.js new file mode 100644 index 0000000000..6dbf233088 --- /dev/null +++ b/core-js/features/string/bold.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/bold'); diff --git a/core-js/features/string/code-point-at.js b/core-js/features/string/code-point-at.js new file mode 100644 index 0000000000..fb74eaee91 --- /dev/null +++ b/core-js/features/string/code-point-at.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/code-point-at'); diff --git a/core-js/features/string/code-points.js b/core-js/features/string/code-points.js new file mode 100644 index 0000000000..8a783f3155 --- /dev/null +++ b/core-js/features/string/code-points.js @@ -0,0 +1,3 @@ +require('../../modules/esnext.string.code-points'); + +module.exports = require('../../internals/entry-unbind')('String', 'codePoints'); diff --git a/core-js/features/string/ends-with.js b/core-js/features/string/ends-with.js new file mode 100644 index 0000000000..89dfe343bb --- /dev/null +++ b/core-js/features/string/ends-with.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/ends-with'); diff --git a/core-js/features/string/fixed.js b/core-js/features/string/fixed.js new file mode 100644 index 0000000000..450d466c56 --- /dev/null +++ b/core-js/features/string/fixed.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/fixed'); diff --git a/core-js/features/string/fontcolor.js b/core-js/features/string/fontcolor.js new file mode 100644 index 0000000000..0d1033b1d0 --- /dev/null +++ b/core-js/features/string/fontcolor.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/fontcolor'); diff --git a/core-js/features/string/fontsize.js b/core-js/features/string/fontsize.js new file mode 100644 index 0000000000..2167503c08 --- /dev/null +++ b/core-js/features/string/fontsize.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/fontsize'); diff --git a/core-js/features/string/from-code-point.js b/core-js/features/string/from-code-point.js new file mode 100644 index 0000000000..2ac7d708f7 --- /dev/null +++ b/core-js/features/string/from-code-point.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/from-code-point'); diff --git a/core-js/features/string/includes.js b/core-js/features/string/includes.js new file mode 100644 index 0000000000..62baf5c7ac --- /dev/null +++ b/core-js/features/string/includes.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/includes'); diff --git a/core-js/features/string/index.js b/core-js/features/string/index.js new file mode 100644 index 0000000000..3ff3064891 --- /dev/null +++ b/core-js/features/string/index.js @@ -0,0 +1,6 @@ +module.exports = require('../../es/string'); + +require('../../modules/esnext.string.at'); +// TODO: remove from `core-js@4` +require('../../modules/esnext.string.match-all'); +require('../../modules/esnext.string.replace-all'); diff --git a/core-js/features/string/italics.js b/core-js/features/string/italics.js new file mode 100644 index 0000000000..0bca65552f --- /dev/null +++ b/core-js/features/string/italics.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/italics'); diff --git a/core-js/features/string/iterator.js b/core-js/features/string/iterator.js new file mode 100644 index 0000000000..06e162ca0e --- /dev/null +++ b/core-js/features/string/iterator.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/iterator'); diff --git a/core-js/features/string/link.js b/core-js/features/string/link.js new file mode 100644 index 0000000000..d2ff7b9f3d --- /dev/null +++ b/core-js/features/string/link.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/link'); diff --git a/core-js/features/string/match-all.js b/core-js/features/string/match-all.js new file mode 100644 index 0000000000..949cdd4830 --- /dev/null +++ b/core-js/features/string/match-all.js @@ -0,0 +1,4 @@ +// TODO: remove from `core-js@4` +require('../../modules/esnext.string.match-all'); + +module.exports = require('../../es/string/match-all'); diff --git a/core-js/features/string/match.js b/core-js/features/string/match.js new file mode 100644 index 0000000000..7e56b7777e --- /dev/null +++ b/core-js/features/string/match.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/match'); diff --git a/core-js/features/string/pad-end.js b/core-js/features/string/pad-end.js new file mode 100644 index 0000000000..ef266cb5c3 --- /dev/null +++ b/core-js/features/string/pad-end.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/pad-end'); diff --git a/core-js/features/string/pad-start.js b/core-js/features/string/pad-start.js new file mode 100644 index 0000000000..45f47934f6 --- /dev/null +++ b/core-js/features/string/pad-start.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/pad-start'); diff --git a/core-js/features/string/raw.js b/core-js/features/string/raw.js new file mode 100644 index 0000000000..6bbc950aee --- /dev/null +++ b/core-js/features/string/raw.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/raw'); diff --git a/core-js/features/string/repeat.js b/core-js/features/string/repeat.js new file mode 100644 index 0000000000..b9b9939bbc --- /dev/null +++ b/core-js/features/string/repeat.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/repeat'); diff --git a/core-js/features/string/replace-all.js b/core-js/features/string/replace-all.js new file mode 100644 index 0000000000..6de7f51917 --- /dev/null +++ b/core-js/features/string/replace-all.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.string.replace-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'replaceAll'); diff --git a/core-js/features/string/replace.js b/core-js/features/string/replace.js new file mode 100644 index 0000000000..25cfcf730a --- /dev/null +++ b/core-js/features/string/replace.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/replace'); diff --git a/core-js/features/string/search.js b/core-js/features/string/search.js new file mode 100644 index 0000000000..629c7a5542 --- /dev/null +++ b/core-js/features/string/search.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/search'); diff --git a/core-js/features/string/small.js b/core-js/features/string/small.js new file mode 100644 index 0000000000..da002780cf --- /dev/null +++ b/core-js/features/string/small.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/small'); diff --git a/core-js/features/string/split.js b/core-js/features/string/split.js new file mode 100644 index 0000000000..1ec2611975 --- /dev/null +++ b/core-js/features/string/split.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/split'); diff --git a/core-js/features/string/starts-with.js b/core-js/features/string/starts-with.js new file mode 100644 index 0000000000..6b4598b5c7 --- /dev/null +++ b/core-js/features/string/starts-with.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/starts-with'); diff --git a/core-js/features/string/strike.js b/core-js/features/string/strike.js new file mode 100644 index 0000000000..6e2154628d --- /dev/null +++ b/core-js/features/string/strike.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/strike'); diff --git a/core-js/features/string/sub.js b/core-js/features/string/sub.js new file mode 100644 index 0000000000..0f5d2e37e7 --- /dev/null +++ b/core-js/features/string/sub.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/sub'); diff --git a/core-js/features/string/sup.js b/core-js/features/string/sup.js new file mode 100644 index 0000000000..9e6d1fff69 --- /dev/null +++ b/core-js/features/string/sup.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/sup'); diff --git a/core-js/features/string/trim-end.js b/core-js/features/string/trim-end.js new file mode 100644 index 0000000000..3fe1209064 --- /dev/null +++ b/core-js/features/string/trim-end.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/trim-end'); diff --git a/core-js/features/string/trim-left.js b/core-js/features/string/trim-left.js new file mode 100644 index 0000000000..2260e53ec9 --- /dev/null +++ b/core-js/features/string/trim-left.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/trim-left'); diff --git a/core-js/features/string/trim-right.js b/core-js/features/string/trim-right.js new file mode 100644 index 0000000000..5ec4c3b29b --- /dev/null +++ b/core-js/features/string/trim-right.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/trim-right'); diff --git a/core-js/features/string/trim-start.js b/core-js/features/string/trim-start.js new file mode 100644 index 0000000000..75e8212f6a --- /dev/null +++ b/core-js/features/string/trim-start.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/trim-start'); diff --git a/core-js/features/string/trim.js b/core-js/features/string/trim.js new file mode 100644 index 0000000000..8231ac80bc --- /dev/null +++ b/core-js/features/string/trim.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/trim'); diff --git a/core-js/features/string/virtual/anchor.js b/core-js/features/string/virtual/anchor.js new file mode 100644 index 0000000000..1d3b8b8764 --- /dev/null +++ b/core-js/features/string/virtual/anchor.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/anchor'); diff --git a/core-js/features/string/virtual/at.js b/core-js/features/string/virtual/at.js new file mode 100644 index 0000000000..c78ec2c2d8 --- /dev/null +++ b/core-js/features/string/virtual/at.js @@ -0,0 +1,4 @@ +require('../../../modules/esnext.string.at'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').at; diff --git a/core-js/features/string/virtual/big.js b/core-js/features/string/virtual/big.js new file mode 100644 index 0000000000..cb8c788448 --- /dev/null +++ b/core-js/features/string/virtual/big.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/big'); diff --git a/core-js/features/string/virtual/blink.js b/core-js/features/string/virtual/blink.js new file mode 100644 index 0000000000..d4ad1b8239 --- /dev/null +++ b/core-js/features/string/virtual/blink.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/blink'); diff --git a/core-js/features/string/virtual/bold.js b/core-js/features/string/virtual/bold.js new file mode 100644 index 0000000000..58ff2fa275 --- /dev/null +++ b/core-js/features/string/virtual/bold.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/bold'); diff --git a/core-js/features/string/virtual/code-point-at.js b/core-js/features/string/virtual/code-point-at.js new file mode 100644 index 0000000000..a23f0a7913 --- /dev/null +++ b/core-js/features/string/virtual/code-point-at.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/code-point-at'); diff --git a/core-js/features/string/virtual/code-points.js b/core-js/features/string/virtual/code-points.js new file mode 100644 index 0000000000..e99051653c --- /dev/null +++ b/core-js/features/string/virtual/code-points.js @@ -0,0 +1,3 @@ +require('../../../modules/esnext.string.code-points'); + +module.exports = require('../../../internals/entry-virtual')('String').codePoints; diff --git a/core-js/features/string/virtual/ends-with.js b/core-js/features/string/virtual/ends-with.js new file mode 100644 index 0000000000..e7c2d360c4 --- /dev/null +++ b/core-js/features/string/virtual/ends-with.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/ends-with'); diff --git a/core-js/features/string/virtual/fixed.js b/core-js/features/string/virtual/fixed.js new file mode 100644 index 0000000000..adcae23a3b --- /dev/null +++ b/core-js/features/string/virtual/fixed.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/fixed'); diff --git a/core-js/features/string/virtual/fontcolor.js b/core-js/features/string/virtual/fontcolor.js new file mode 100644 index 0000000000..c0435a264e --- /dev/null +++ b/core-js/features/string/virtual/fontcolor.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/fontcolor'); diff --git a/core-js/features/string/virtual/fontsize.js b/core-js/features/string/virtual/fontsize.js new file mode 100644 index 0000000000..0952c468bd --- /dev/null +++ b/core-js/features/string/virtual/fontsize.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/fontsize'); diff --git a/core-js/features/string/virtual/includes.js b/core-js/features/string/virtual/includes.js new file mode 100644 index 0000000000..671747b853 --- /dev/null +++ b/core-js/features/string/virtual/includes.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/includes'); diff --git a/core-js/features/string/virtual/index.js b/core-js/features/string/virtual/index.js new file mode 100644 index 0000000000..d3f9104f65 --- /dev/null +++ b/core-js/features/string/virtual/index.js @@ -0,0 +1,6 @@ +module.exports = require('../../../es/string/virtual'); + +require('../../../modules/esnext.string.at'); +// TODO: remove from `core-js@4` +require('../../../modules/esnext.string.match-all'); +require('../../../modules/esnext.string.replace-all'); diff --git a/core-js/features/string/virtual/italics.js b/core-js/features/string/virtual/italics.js new file mode 100644 index 0000000000..b7e72cdbaf --- /dev/null +++ b/core-js/features/string/virtual/italics.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/italics'); diff --git a/core-js/features/string/virtual/iterator.js b/core-js/features/string/virtual/iterator.js new file mode 100644 index 0000000000..f52320e511 --- /dev/null +++ b/core-js/features/string/virtual/iterator.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/iterator'); diff --git a/core-js/features/string/virtual/link.js b/core-js/features/string/virtual/link.js new file mode 100644 index 0000000000..20fe8ab879 --- /dev/null +++ b/core-js/features/string/virtual/link.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/link'); diff --git a/core-js/features/string/virtual/match-all.js b/core-js/features/string/virtual/match-all.js new file mode 100644 index 0000000000..d6da16859c --- /dev/null +++ b/core-js/features/string/virtual/match-all.js @@ -0,0 +1,4 @@ +// TODO: remove from `core-js@4` +require('../../../modules/esnext.string.match-all'); + +module.exports = require('../../../es/string/virtual/match-all'); diff --git a/core-js/features/string/virtual/pad-end.js b/core-js/features/string/virtual/pad-end.js new file mode 100644 index 0000000000..128a7ee403 --- /dev/null +++ b/core-js/features/string/virtual/pad-end.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/pad-end'); diff --git a/core-js/features/string/virtual/pad-start.js b/core-js/features/string/virtual/pad-start.js new file mode 100644 index 0000000000..a5e86e81f5 --- /dev/null +++ b/core-js/features/string/virtual/pad-start.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/pad-start'); diff --git a/core-js/features/string/virtual/repeat.js b/core-js/features/string/virtual/repeat.js new file mode 100644 index 0000000000..591cbfdbff --- /dev/null +++ b/core-js/features/string/virtual/repeat.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/repeat'); diff --git a/core-js/features/string/virtual/replace-all.js b/core-js/features/string/virtual/replace-all.js new file mode 100644 index 0000000000..781f261d38 --- /dev/null +++ b/core-js/features/string/virtual/replace-all.js @@ -0,0 +1,4 @@ +require('../../../modules/esnext.string.replace-all'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').replaceAll; diff --git a/core-js/features/string/virtual/small.js b/core-js/features/string/virtual/small.js new file mode 100644 index 0000000000..4c5373075b --- /dev/null +++ b/core-js/features/string/virtual/small.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/small'); diff --git a/core-js/features/string/virtual/starts-with.js b/core-js/features/string/virtual/starts-with.js new file mode 100644 index 0000000000..9722995139 --- /dev/null +++ b/core-js/features/string/virtual/starts-with.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/starts-with'); diff --git a/core-js/features/string/virtual/strike.js b/core-js/features/string/virtual/strike.js new file mode 100644 index 0000000000..3570027d84 --- /dev/null +++ b/core-js/features/string/virtual/strike.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/strike'); diff --git a/core-js/features/string/virtual/sub.js b/core-js/features/string/virtual/sub.js new file mode 100644 index 0000000000..d3a9c6e534 --- /dev/null +++ b/core-js/features/string/virtual/sub.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/sub'); diff --git a/core-js/features/string/virtual/sup.js b/core-js/features/string/virtual/sup.js new file mode 100644 index 0000000000..a2fe71dff0 --- /dev/null +++ b/core-js/features/string/virtual/sup.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/sup'); diff --git a/core-js/features/string/virtual/trim-end.js b/core-js/features/string/virtual/trim-end.js new file mode 100644 index 0000000000..f450167c55 --- /dev/null +++ b/core-js/features/string/virtual/trim-end.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/trim-end'); diff --git a/core-js/features/string/virtual/trim-left.js b/core-js/features/string/virtual/trim-left.js new file mode 100644 index 0000000000..515e7e507c --- /dev/null +++ b/core-js/features/string/virtual/trim-left.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/trim-left'); diff --git a/core-js/features/string/virtual/trim-right.js b/core-js/features/string/virtual/trim-right.js new file mode 100644 index 0000000000..8823454fa3 --- /dev/null +++ b/core-js/features/string/virtual/trim-right.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/trim-right'); diff --git a/core-js/features/string/virtual/trim-start.js b/core-js/features/string/virtual/trim-start.js new file mode 100644 index 0000000000..3afb6eff83 --- /dev/null +++ b/core-js/features/string/virtual/trim-start.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/trim-start'); diff --git a/core-js/features/string/virtual/trim.js b/core-js/features/string/virtual/trim.js new file mode 100644 index 0000000000..12a266abbf --- /dev/null +++ b/core-js/features/string/virtual/trim.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/trim'); diff --git a/core-js/features/symbol/async-dispose.js b/core-js/features/symbol/async-dispose.js new file mode 100644 index 0000000000..39fde3708e --- /dev/null +++ b/core-js/features/symbol/async-dispose.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.symbol.async-dispose'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('asyncDispose'); diff --git a/core-js/features/symbol/async-iterator.js b/core-js/features/symbol/async-iterator.js new file mode 100644 index 0000000000..2d69e19ca2 --- /dev/null +++ b/core-js/features/symbol/async-iterator.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/async-iterator'); diff --git a/core-js/features/symbol/description.js b/core-js/features/symbol/description.js new file mode 100644 index 0000000000..7bb4b2bc9c --- /dev/null +++ b/core-js/features/symbol/description.js @@ -0,0 +1 @@ +require('../../modules/es.symbol.description'); diff --git a/core-js/features/symbol/dispose.js b/core-js/features/symbol/dispose.js new file mode 100644 index 0000000000..09ba080f77 --- /dev/null +++ b/core-js/features/symbol/dispose.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.symbol.dispose'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('dispose'); diff --git a/core-js/features/symbol/for.js b/core-js/features/symbol/for.js new file mode 100644 index 0000000000..58633a4ba9 --- /dev/null +++ b/core-js/features/symbol/for.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/for'); diff --git a/core-js/features/symbol/has-instance.js b/core-js/features/symbol/has-instance.js new file mode 100644 index 0000000000..82bca7ec27 --- /dev/null +++ b/core-js/features/symbol/has-instance.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/has-instance'); diff --git a/core-js/features/symbol/index.js b/core-js/features/symbol/index.js new file mode 100644 index 0000000000..8d801b77f8 --- /dev/null +++ b/core-js/features/symbol/index.js @@ -0,0 +1,7 @@ +module.exports = require('../../es/symbol'); + +require('../../modules/esnext.symbol.async-dispose'); +require('../../modules/esnext.symbol.dispose'); +require('../../modules/esnext.symbol.observable'); +require('../../modules/esnext.symbol.pattern-match'); +require('../../modules/esnext.symbol.replace-all'); diff --git a/core-js/features/symbol/is-concat-spreadable.js b/core-js/features/symbol/is-concat-spreadable.js new file mode 100644 index 0000000000..ce3514e1a2 --- /dev/null +++ b/core-js/features/symbol/is-concat-spreadable.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/is-concat-spreadable'); diff --git a/core-js/features/symbol/iterator.js b/core-js/features/symbol/iterator.js new file mode 100644 index 0000000000..1a102a6c57 --- /dev/null +++ b/core-js/features/symbol/iterator.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/iterator'); diff --git a/core-js/features/symbol/key-for.js b/core-js/features/symbol/key-for.js new file mode 100644 index 0000000000..c66cab7e90 --- /dev/null +++ b/core-js/features/symbol/key-for.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/key-for'); diff --git a/core-js/features/symbol/match-all.js b/core-js/features/symbol/match-all.js new file mode 100644 index 0000000000..66730fe290 --- /dev/null +++ b/core-js/features/symbol/match-all.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/match-all'); diff --git a/core-js/features/symbol/match.js b/core-js/features/symbol/match.js new file mode 100644 index 0000000000..66c5805a5e --- /dev/null +++ b/core-js/features/symbol/match.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/match'); diff --git a/core-js/features/symbol/observable.js b/core-js/features/symbol/observable.js new file mode 100644 index 0000000000..f16e2ce550 --- /dev/null +++ b/core-js/features/symbol/observable.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.symbol.observable'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('observable'); diff --git a/core-js/features/symbol/pattern-match.js b/core-js/features/symbol/pattern-match.js new file mode 100644 index 0000000000..0ccbf594b2 --- /dev/null +++ b/core-js/features/symbol/pattern-match.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.symbol.pattern-match'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('patternMatch'); diff --git a/core-js/features/symbol/replace-all.js b/core-js/features/symbol/replace-all.js new file mode 100644 index 0000000000..570e04a6d6 --- /dev/null +++ b/core-js/features/symbol/replace-all.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.symbol.replace-all'); +var WrappedWellKnownSymbolModule = require('../../internals/wrapped-well-known-symbol'); + +module.exports = WrappedWellKnownSymbolModule.f('replaceAll'); diff --git a/core-js/features/symbol/replace.js b/core-js/features/symbol/replace.js new file mode 100644 index 0000000000..85324c9231 --- /dev/null +++ b/core-js/features/symbol/replace.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/replace'); diff --git a/core-js/features/symbol/search.js b/core-js/features/symbol/search.js new file mode 100644 index 0000000000..33772f66be --- /dev/null +++ b/core-js/features/symbol/search.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/search'); diff --git a/core-js/features/symbol/species.js b/core-js/features/symbol/species.js new file mode 100644 index 0000000000..87979c67e3 --- /dev/null +++ b/core-js/features/symbol/species.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/species'); diff --git a/core-js/features/symbol/split.js b/core-js/features/symbol/split.js new file mode 100644 index 0000000000..c3855a3005 --- /dev/null +++ b/core-js/features/symbol/split.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/split'); diff --git a/core-js/features/symbol/to-primitive.js b/core-js/features/symbol/to-primitive.js new file mode 100644 index 0000000000..1fbb427471 --- /dev/null +++ b/core-js/features/symbol/to-primitive.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/to-primitive'); diff --git a/core-js/features/symbol/to-string-tag.js b/core-js/features/symbol/to-string-tag.js new file mode 100644 index 0000000000..eeeb3a1354 --- /dev/null +++ b/core-js/features/symbol/to-string-tag.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/to-string-tag'); diff --git a/core-js/features/symbol/unscopables.js b/core-js/features/symbol/unscopables.js new file mode 100644 index 0000000000..7ae091b300 --- /dev/null +++ b/core-js/features/symbol/unscopables.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/unscopables'); diff --git a/core-js/features/typed-array/copy-within.js b/core-js/features/typed-array/copy-within.js new file mode 100644 index 0000000000..1352cec72f --- /dev/null +++ b/core-js/features/typed-array/copy-within.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.copy-within'); diff --git a/core-js/features/typed-array/entries.js b/core-js/features/typed-array/entries.js new file mode 100644 index 0000000000..66cc6dca13 --- /dev/null +++ b/core-js/features/typed-array/entries.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/core-js/features/typed-array/every.js b/core-js/features/typed-array/every.js new file mode 100644 index 0000000000..681164be00 --- /dev/null +++ b/core-js/features/typed-array/every.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.every'); diff --git a/core-js/features/typed-array/fill.js b/core-js/features/typed-array/fill.js new file mode 100644 index 0000000000..4d92ac6654 --- /dev/null +++ b/core-js/features/typed-array/fill.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.fill'); diff --git a/core-js/features/typed-array/filter.js b/core-js/features/typed-array/filter.js new file mode 100644 index 0000000000..7d0a630ffa --- /dev/null +++ b/core-js/features/typed-array/filter.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.filter'); diff --git a/core-js/features/typed-array/find-index.js b/core-js/features/typed-array/find-index.js new file mode 100644 index 0000000000..039cd5edde --- /dev/null +++ b/core-js/features/typed-array/find-index.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.find-index'); diff --git a/core-js/features/typed-array/find.js b/core-js/features/typed-array/find.js new file mode 100644 index 0000000000..b3251b9a04 --- /dev/null +++ b/core-js/features/typed-array/find.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.find'); diff --git a/core-js/features/typed-array/float32-array.js b/core-js/features/typed-array/float32-array.js new file mode 100644 index 0000000000..78c91f0a78 --- /dev/null +++ b/core-js/features/typed-array/float32-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/float32-array'); diff --git a/core-js/features/typed-array/float64-array.js b/core-js/features/typed-array/float64-array.js new file mode 100644 index 0000000000..cb90104de0 --- /dev/null +++ b/core-js/features/typed-array/float64-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/float64-array'); diff --git a/core-js/features/typed-array/for-each.js b/core-js/features/typed-array/for-each.js new file mode 100644 index 0000000000..defe03a8dc --- /dev/null +++ b/core-js/features/typed-array/for-each.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.for-each'); diff --git a/core-js/features/typed-array/from.js b/core-js/features/typed-array/from.js new file mode 100644 index 0000000000..e0f34441d1 --- /dev/null +++ b/core-js/features/typed-array/from.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.from'); diff --git a/core-js/features/typed-array/includes.js b/core-js/features/typed-array/includes.js new file mode 100644 index 0000000000..5ff65f9645 --- /dev/null +++ b/core-js/features/typed-array/includes.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.includes'); diff --git a/core-js/features/typed-array/index-of.js b/core-js/features/typed-array/index-of.js new file mode 100644 index 0000000000..87081c0f2b --- /dev/null +++ b/core-js/features/typed-array/index-of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.index-of'); diff --git a/core-js/features/typed-array/index.js b/core-js/features/typed-array/index.js new file mode 100644 index 0000000000..f3ded39d59 --- /dev/null +++ b/core-js/features/typed-array/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array'); diff --git a/core-js/features/typed-array/int16-array.js b/core-js/features/typed-array/int16-array.js new file mode 100644 index 0000000000..d083357db0 --- /dev/null +++ b/core-js/features/typed-array/int16-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/int16-array'); diff --git a/core-js/features/typed-array/int32-array.js b/core-js/features/typed-array/int32-array.js new file mode 100644 index 0000000000..365a971501 --- /dev/null +++ b/core-js/features/typed-array/int32-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/int32-array'); diff --git a/core-js/features/typed-array/int8-array.js b/core-js/features/typed-array/int8-array.js new file mode 100644 index 0000000000..0b9f28c6e1 --- /dev/null +++ b/core-js/features/typed-array/int8-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/int8-array'); diff --git a/core-js/features/typed-array/iterator.js b/core-js/features/typed-array/iterator.js new file mode 100644 index 0000000000..66cc6dca13 --- /dev/null +++ b/core-js/features/typed-array/iterator.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/core-js/features/typed-array/join.js b/core-js/features/typed-array/join.js new file mode 100644 index 0000000000..431129c92f --- /dev/null +++ b/core-js/features/typed-array/join.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.join'); diff --git a/core-js/features/typed-array/keys.js b/core-js/features/typed-array/keys.js new file mode 100644 index 0000000000..66cc6dca13 --- /dev/null +++ b/core-js/features/typed-array/keys.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/core-js/features/typed-array/last-index-of.js b/core-js/features/typed-array/last-index-of.js new file mode 100644 index 0000000000..5682bf44ea --- /dev/null +++ b/core-js/features/typed-array/last-index-of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.last-index-of'); diff --git a/core-js/features/typed-array/map.js b/core-js/features/typed-array/map.js new file mode 100644 index 0000000000..db08fed371 --- /dev/null +++ b/core-js/features/typed-array/map.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.map'); diff --git a/core-js/features/typed-array/of.js b/core-js/features/typed-array/of.js new file mode 100644 index 0000000000..121bf5e2d6 --- /dev/null +++ b/core-js/features/typed-array/of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.of'); diff --git a/core-js/features/typed-array/reduce-right.js b/core-js/features/typed-array/reduce-right.js new file mode 100644 index 0000000000..cbd321fc62 --- /dev/null +++ b/core-js/features/typed-array/reduce-right.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reduce-right'); diff --git a/core-js/features/typed-array/reduce.js b/core-js/features/typed-array/reduce.js new file mode 100644 index 0000000000..e2a6f28283 --- /dev/null +++ b/core-js/features/typed-array/reduce.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reduce'); diff --git a/core-js/features/typed-array/reverse.js b/core-js/features/typed-array/reverse.js new file mode 100644 index 0000000000..14995f497b --- /dev/null +++ b/core-js/features/typed-array/reverse.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reverse'); diff --git a/core-js/features/typed-array/set.js b/core-js/features/typed-array/set.js new file mode 100644 index 0000000000..5330e22983 --- /dev/null +++ b/core-js/features/typed-array/set.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.set'); diff --git a/core-js/features/typed-array/slice.js b/core-js/features/typed-array/slice.js new file mode 100644 index 0000000000..37fb8c141a --- /dev/null +++ b/core-js/features/typed-array/slice.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.slice'); diff --git a/core-js/features/typed-array/some.js b/core-js/features/typed-array/some.js new file mode 100644 index 0000000000..495c322f7d --- /dev/null +++ b/core-js/features/typed-array/some.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.some'); diff --git a/core-js/features/typed-array/sort.js b/core-js/features/typed-array/sort.js new file mode 100644 index 0000000000..d6c7e30b99 --- /dev/null +++ b/core-js/features/typed-array/sort.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.sort'); diff --git a/core-js/features/typed-array/subarray.js b/core-js/features/typed-array/subarray.js new file mode 100644 index 0000000000..dbad4ca2d6 --- /dev/null +++ b/core-js/features/typed-array/subarray.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.subarray'); diff --git a/core-js/features/typed-array/to-locale-string.js b/core-js/features/typed-array/to-locale-string.js new file mode 100644 index 0000000000..12c809e233 --- /dev/null +++ b/core-js/features/typed-array/to-locale-string.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.to-locale-string'); diff --git a/core-js/features/typed-array/to-string.js b/core-js/features/typed-array/to-string.js new file mode 100644 index 0000000000..bf9416079f --- /dev/null +++ b/core-js/features/typed-array/to-string.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.to-string'); diff --git a/core-js/features/typed-array/uint16-array.js b/core-js/features/typed-array/uint16-array.js new file mode 100644 index 0000000000..5ef2cb4977 --- /dev/null +++ b/core-js/features/typed-array/uint16-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/uint16-array'); diff --git a/core-js/features/typed-array/uint32-array.js b/core-js/features/typed-array/uint32-array.js new file mode 100644 index 0000000000..f84c728f6d --- /dev/null +++ b/core-js/features/typed-array/uint32-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/uint32-array'); diff --git a/core-js/features/typed-array/uint8-array.js b/core-js/features/typed-array/uint8-array.js new file mode 100644 index 0000000000..29dbfd6f92 --- /dev/null +++ b/core-js/features/typed-array/uint8-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/uint8-array'); diff --git a/core-js/features/typed-array/uint8-clamped-array.js b/core-js/features/typed-array/uint8-clamped-array.js new file mode 100644 index 0000000000..8fcc6497ab --- /dev/null +++ b/core-js/features/typed-array/uint8-clamped-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/uint8-clamped-array'); diff --git a/core-js/features/typed-array/values.js b/core-js/features/typed-array/values.js new file mode 100644 index 0000000000..66cc6dca13 --- /dev/null +++ b/core-js/features/typed-array/values.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/core-js/features/url-search-params/index.js b/core-js/features/url-search-params/index.js new file mode 100644 index 0000000000..35f1b59f7f --- /dev/null +++ b/core-js/features/url-search-params/index.js @@ -0,0 +1 @@ +module.exports = require('../../stable/url-search-params'); diff --git a/core-js/features/url/index.js b/core-js/features/url/index.js new file mode 100644 index 0000000000..8f9ef4f777 --- /dev/null +++ b/core-js/features/url/index.js @@ -0,0 +1 @@ +module.exports = require('../../stable/url'); diff --git a/core-js/features/url/to-json.js b/core-js/features/url/to-json.js new file mode 100644 index 0000000000..74b9809ffb --- /dev/null +++ b/core-js/features/url/to-json.js @@ -0,0 +1 @@ +module.exports = require('../../stable/url/to-json'); diff --git a/core-js/features/weak-map/delete-all.js b/core-js/features/weak-map/delete-all.js new file mode 100644 index 0000000000..00163f2d09 --- /dev/null +++ b/core-js/features/weak-map/delete-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.weak-map'); +require('../../modules/esnext.weak-map.delete-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('WeakMap', 'deleteAll'); diff --git a/core-js/features/weak-map/from.js b/core-js/features/weak-map/from.js new file mode 100644 index 0000000000..159aecd7cb --- /dev/null +++ b/core-js/features/weak-map/from.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.string.iterator'); +require('../../modules/es.weak-map'); +require('../../modules/esnext.weak-map.from'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var WeakMap = path.WeakMap; +var weakMapFrom = WeakMap.from; + +module.exports = function from(source, mapFn, thisArg) { + return weakMapFrom.call(typeof this === 'function' ? this : WeakMap, source, mapFn, thisArg); +}; diff --git a/core-js/features/weak-map/index.js b/core-js/features/weak-map/index.js new file mode 100644 index 0000000000..a4f4bae85a --- /dev/null +++ b/core-js/features/weak-map/index.js @@ -0,0 +1,5 @@ +module.exports = require('../../es/weak-map'); + +require('../../modules/esnext.weak-map.from'); +require('../../modules/esnext.weak-map.of'); +require('../../modules/esnext.weak-map.delete-all'); diff --git a/core-js/features/weak-map/of.js b/core-js/features/weak-map/of.js new file mode 100644 index 0000000000..5bdf627e8b --- /dev/null +++ b/core-js/features/weak-map/of.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.string.iterator'); +require('../../modules/es.weak-map'); +require('../../modules/esnext.weak-map.of'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var WeakMap = path.WeakMap; +var weakMapOf = WeakMap.of; + +module.exports = function of() { + return weakMapOf.apply(typeof this === 'function' ? this : WeakMap, arguments); +}; diff --git a/core-js/features/weak-set/add-all.js b/core-js/features/weak-set/add-all.js new file mode 100644 index 0000000000..cf7624292f --- /dev/null +++ b/core-js/features/weak-set/add-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.weak-set'); +require('../../modules/esnext.weak-set.add-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('WeakSet', 'addAll'); diff --git a/core-js/features/weak-set/delete-all.js b/core-js/features/weak-set/delete-all.js new file mode 100644 index 0000000000..21e7b43800 --- /dev/null +++ b/core-js/features/weak-set/delete-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.weak-set'); +require('../../modules/esnext.weak-set.delete-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('WeakSet', 'deleteAll'); diff --git a/core-js/features/weak-set/from.js b/core-js/features/weak-set/from.js new file mode 100644 index 0000000000..cd8716af43 --- /dev/null +++ b/core-js/features/weak-set/from.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.string.iterator'); +require('../../modules/es.weak-set'); +require('../../modules/esnext.weak-set.from'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var WeakSet = path.WeakSet; +var weakSetfrom = WeakSet.from; + +module.exports = function from(source, mapFn, thisArg) { + return weakSetfrom.call(typeof this === 'function' ? this : WeakSet, source, mapFn, thisArg); +}; diff --git a/core-js/features/weak-set/index.js b/core-js/features/weak-set/index.js new file mode 100644 index 0000000000..3cbfc7c01a --- /dev/null +++ b/core-js/features/weak-set/index.js @@ -0,0 +1,6 @@ +module.exports = require('../../es/weak-set'); + +require('../../modules/esnext.weak-set.add-all'); +require('../../modules/esnext.weak-set.delete-all'); +require('../../modules/esnext.weak-set.from'); +require('../../modules/esnext.weak-set.of'); diff --git a/core-js/features/weak-set/of.js b/core-js/features/weak-set/of.js new file mode 100644 index 0000000000..4937c39b7a --- /dev/null +++ b/core-js/features/weak-set/of.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.string.iterator'); +require('../../modules/es.weak-set'); +require('../../modules/esnext.weak-set.of'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var WeakSet = path.WeakSet; +var weakSetOf = WeakSet.of; + +module.exports = function of() { + return weakSetOf.apply(typeof this === 'function' ? this : WeakSet, arguments); +}; diff --git a/core-js/index.js b/core-js/index.js new file mode 100644 index 0000000000..cbaed8cac3 --- /dev/null +++ b/core-js/index.js @@ -0,0 +1,5 @@ +require('./es'); +require('./proposals'); +require('./web'); + +module.exports = require('./internals/path'); diff --git a/core-js/internals/README.md b/core-js/internals/README.md new file mode 100644 index 0000000000..f5cca304ca --- /dev/null +++ b/core-js/internals/README.md @@ -0,0 +1 @@ +This folder contains internal parts of `core-js` like helpers. diff --git a/core-js/internals/a-function.js b/core-js/internals/a-function.js new file mode 100644 index 0000000000..b597471f9c --- /dev/null +++ b/core-js/internals/a-function.js @@ -0,0 +1,5 @@ +module.exports = function (it) { + if (typeof it != 'function') { + throw TypeError(String(it) + ' is not a function'); + } return it; +}; diff --git a/core-js/internals/a-possible-prototype.js b/core-js/internals/a-possible-prototype.js new file mode 100644 index 0000000000..7736376e9d --- /dev/null +++ b/core-js/internals/a-possible-prototype.js @@ -0,0 +1,7 @@ +var isObject = require('../internals/is-object'); + +module.exports = function (it) { + if (!isObject(it) && it !== null) { + throw TypeError("Can't set " + String(it) + ' as a prototype'); + } return it; +}; diff --git a/core-js/internals/add-to-unscopables.js b/core-js/internals/add-to-unscopables.js new file mode 100644 index 0000000000..54043cf7b8 --- /dev/null +++ b/core-js/internals/add-to-unscopables.js @@ -0,0 +1,17 @@ +var wellKnownSymbol = require('../internals/well-known-symbol'); +var create = require('../internals/object-create'); +var hide = require('../internals/hide'); + +var UNSCOPABLES = wellKnownSymbol('unscopables'); +var ArrayPrototype = Array.prototype; + +// Array.prototype[@@unscopables] +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +if (ArrayPrototype[UNSCOPABLES] == undefined) { + hide(ArrayPrototype, UNSCOPABLES, create(null)); +} + +// add a key to Array.prototype[@@unscopables] +module.exports = function (key) { + ArrayPrototype[UNSCOPABLES][key] = true; +}; diff --git a/core-js/internals/advance-string-index.js b/core-js/internals/advance-string-index.js new file mode 100644 index 0000000000..700fbf012a --- /dev/null +++ b/core-js/internals/advance-string-index.js @@ -0,0 +1,8 @@ +'use strict'; +var charAt = require('../internals/string-multibyte').charAt; + +// `AdvanceStringIndex` abstract operation +// https://tc39.github.io/ecma262/#sec-advancestringindex +module.exports = function (S, index, unicode) { + return index + (unicode ? charAt(S, index).length : 1); +}; diff --git a/core-js/internals/an-instance.js b/core-js/internals/an-instance.js new file mode 100644 index 0000000000..6f471ccf9f --- /dev/null +++ b/core-js/internals/an-instance.js @@ -0,0 +1,5 @@ +module.exports = function (it, Constructor, name) { + if (!(it instanceof Constructor)) { + throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation'); + } return it; +}; diff --git a/core-js/internals/an-object.js b/core-js/internals/an-object.js new file mode 100644 index 0000000000..40557966d5 --- /dev/null +++ b/core-js/internals/an-object.js @@ -0,0 +1,7 @@ +var isObject = require('../internals/is-object'); + +module.exports = function (it) { + if (!isObject(it)) { + throw TypeError(String(it) + ' is not an object'); + } return it; +}; diff --git a/core-js/internals/array-buffer-view-core.js b/core-js/internals/array-buffer-view-core.js new file mode 100644 index 0000000000..30934d6073 --- /dev/null +++ b/core-js/internals/array-buffer-view-core.js @@ -0,0 +1,164 @@ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var global = require('../internals/global'); +var isObject = require('../internals/is-object'); +var has = require('../internals/has'); +var classof = require('../internals/classof'); +var hide = require('../internals/hide'); +var redefine = require('../internals/redefine'); +var defineProperty = require('../internals/object-define-property').f; +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var uid = require('../internals/uid'); + +var DataView = global.DataView; +var DataViewPrototype = DataView && DataView.prototype; +var Int8Array = global.Int8Array; +var Int8ArrayPrototype = Int8Array && Int8Array.prototype; +var Uint8ClampedArray = global.Uint8ClampedArray; +var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype; +var TypedArray = Int8Array && getPrototypeOf(Int8Array); +var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype); +var ObjectPrototype = Object.prototype; +var isPrototypeOf = ObjectPrototype.isPrototypeOf; + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG'); +var NATIVE_ARRAY_BUFFER = !!(global.ArrayBuffer && DataView); +// Fixing native typed arrays in Opera Presto crashes the browser, see #595 +var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera'; +var TYPED_ARRAY_TAG_REQIRED = false; +var NAME; + +var TypedArrayConstructorsList = { + Int8Array: 1, + Uint8Array: 1, + Uint8ClampedArray: 1, + Int16Array: 2, + Uint16Array: 2, + Int32Array: 4, + Uint32Array: 4, + Float32Array: 4, + Float64Array: 8 +}; + +var isView = function isView(it) { + var klass = classof(it); + return klass === 'DataView' || has(TypedArrayConstructorsList, klass); +}; + +var isTypedArray = function (it) { + return isObject(it) && has(TypedArrayConstructorsList, classof(it)); +}; + +var aTypedArray = function (it) { + if (isTypedArray(it)) return it; + throw TypeError('Target is not a typed array'); +}; + +var aTypedArrayConstructor = function (C) { + if (setPrototypeOf) { + if (isPrototypeOf.call(TypedArray, C)) return C; + } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) { + var TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) { + return C; + } + } throw TypeError('Target is not a typed array constructor'); +}; + +var exportProto = function (KEY, property, forced) { + if (!DESCRIPTORS) return; + if (forced) for (var ARRAY in TypedArrayConstructorsList) { + var TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) { + delete TypedArrayConstructor.prototype[KEY]; + } + } + if (!TypedArrayPrototype[KEY] || forced) { + redefine(TypedArrayPrototype, KEY, forced ? property + : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property); + } +}; + +var exportStatic = function (KEY, property, forced) { + var ARRAY, TypedArrayConstructor; + if (!DESCRIPTORS) return; + if (setPrototypeOf) { + if (forced) for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) { + delete TypedArrayConstructor[KEY]; + } + } + if (!TypedArray[KEY] || forced) { + // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable + try { + return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property); + } catch (error) { /* empty */ } + } else return; + } + for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) { + redefine(TypedArrayConstructor, KEY, property); + } + } +}; + +for (NAME in TypedArrayConstructorsList) { + if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false; +} + +// WebKit bug - typed arrays constructors prototype is Object.prototype +if (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) { + // eslint-disable-next-line no-shadow + TypedArray = function TypedArray() { + throw TypeError('Incorrect invocation'); + }; + if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { + if (global[NAME]) setPrototypeOf(global[NAME], TypedArray); + } +} + +if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) { + TypedArrayPrototype = TypedArray.prototype; + if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { + if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype); + } +} + +// WebKit bug - one more object in Uint8ClampedArray prototype chain +if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) { + setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype); +} + +if (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) { + TYPED_ARRAY_TAG_REQIRED = true; + defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () { + return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined; + } }); + for (NAME in TypedArrayConstructorsList) if (global[NAME]) { + hide(global[NAME], TYPED_ARRAY_TAG, NAME); + } +} + +// WebKit bug - the same parent prototype for typed arrays and data view +if (NATIVE_ARRAY_BUFFER && setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) { + setPrototypeOf(DataViewPrototype, ObjectPrototype); +} + +module.exports = { + NATIVE_ARRAY_BUFFER: NATIVE_ARRAY_BUFFER, + NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS, + TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG, + aTypedArray: aTypedArray, + aTypedArrayConstructor: aTypedArrayConstructor, + exportProto: exportProto, + exportStatic: exportStatic, + isView: isView, + isTypedArray: isTypedArray, + TypedArray: TypedArray, + TypedArrayPrototype: TypedArrayPrototype +}; diff --git a/core-js/internals/array-buffer.js b/core-js/internals/array-buffer.js new file mode 100644 index 0000000000..731c55addf --- /dev/null +++ b/core-js/internals/array-buffer.js @@ -0,0 +1,293 @@ +'use strict'; +var global = require('../internals/global'); +var DESCRIPTORS = require('../internals/descriptors'); +var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER; +var hide = require('../internals/hide'); +var redefineAll = require('../internals/redefine-all'); +var fails = require('../internals/fails'); +var anInstance = require('../internals/an-instance'); +var toInteger = require('../internals/to-integer'); +var toLength = require('../internals/to-length'); +var toIndex = require('../internals/to-index'); +var getOwnPropertyNames = require('../internals/object-get-own-property-names').f; +var defineProperty = require('../internals/object-define-property').f; +var arrayFill = require('../internals/array-fill'); +var setToStringTag = require('../internals/set-to-string-tag'); +var InternalStateModule = require('../internals/internal-state'); + +var getInternalState = InternalStateModule.get; +var setInternalState = InternalStateModule.set; +var ARRAY_BUFFER = 'ArrayBuffer'; +var DATA_VIEW = 'DataView'; +var PROTOTYPE = 'prototype'; +var WRONG_LENGTH = 'Wrong length'; +var WRONG_INDEX = 'Wrong index'; +var NativeArrayBuffer = global[ARRAY_BUFFER]; +var $ArrayBuffer = NativeArrayBuffer; +var $DataView = global[DATA_VIEW]; +var Math = global.Math; +var RangeError = global.RangeError; +// eslint-disable-next-line no-shadow-restricted-names +var Infinity = 1 / 0; +var abs = Math.abs; +var pow = Math.pow; +var floor = Math.floor; +var log = Math.log; +var LN2 = Math.LN2; + +// IEEE754 conversions based on https://github.com/feross/ieee754 +var packIEEE754 = function (number, mantissaLength, bytes) { + var buffer = new Array(bytes); + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0; + var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0; + var index = 0; + var exponent, mantissa, c; + number = abs(number); + // eslint-disable-next-line no-self-compare + if (number != number || number === Infinity) { + // eslint-disable-next-line no-self-compare + mantissa = number != number ? 1 : 0; + exponent = eMax; + } else { + exponent = floor(log(number) / LN2); + if (number * (c = pow(2, -exponent)) < 1) { + exponent--; + c *= 2; + } + if (exponent + eBias >= 1) { + number += rt / c; + } else { + number += rt * pow(2, 1 - eBias); + } + if (number * c >= 2) { + exponent++; + c /= 2; + } + if (exponent + eBias >= eMax) { + mantissa = 0; + exponent = eMax; + } else if (exponent + eBias >= 1) { + mantissa = (number * c - 1) * pow(2, mantissaLength); + exponent = exponent + eBias; + } else { + mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength); + exponent = 0; + } + } + for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8); + exponent = exponent << mantissaLength | mantissa; + exponentLength += mantissaLength; + for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8); + buffer[--index] |= sign * 128; + return buffer; +}; + +var unpackIEEE754 = function (buffer, mantissaLength) { + var bytes = buffer.length; + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var nBits = exponentLength - 7; + var index = bytes - 1; + var sign = buffer[index--]; + var exponent = sign & 127; + var mantissa; + sign >>= 7; + for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8); + mantissa = exponent & (1 << -nBits) - 1; + exponent >>= -nBits; + nBits += mantissaLength; + for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8); + if (exponent === 0) { + exponent = 1 - eBias; + } else if (exponent === eMax) { + return mantissa ? NaN : sign ? -Infinity : Infinity; + } else { + mantissa = mantissa + pow(2, mantissaLength); + exponent = exponent - eBias; + } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength); +}; + +var unpackInt32 = function (buffer) { + return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0]; +}; + +var packInt8 = function (number) { + return [number & 0xFF]; +}; + +var packInt16 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF]; +}; + +var packInt32 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF]; +}; + +var packFloat32 = function (number) { + return packIEEE754(number, 23, 4); +}; + +var packFloat64 = function (number) { + return packIEEE754(number, 52, 8); +}; + +var addGetter = function (Constructor, key) { + defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } }); +}; + +var get = function (view, count, index, isLittleEndian) { + var numIndex = +index; + var intIndex = toIndex(numIndex); + var store = getInternalState(view); + if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX); + var bytes = getInternalState(store.buffer).bytes; + var start = intIndex + store.byteOffset; + var pack = bytes.slice(start, start + count); + return isLittleEndian ? pack : pack.reverse(); +}; + +var set = function (view, count, index, conversion, value, isLittleEndian) { + var numIndex = +index; + var intIndex = toIndex(numIndex); + var store = getInternalState(view); + if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX); + var bytes = getInternalState(store.buffer).bytes; + var start = intIndex + store.byteOffset; + var pack = conversion(+value); + for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1]; +}; + +if (!NATIVE_ARRAY_BUFFER) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer, ARRAY_BUFFER); + var byteLength = toIndex(length); + setInternalState(this, { + bytes: arrayFill.call(new Array(byteLength), 0), + byteLength: byteLength + }); + if (!DESCRIPTORS) this.byteLength = byteLength; + }; + + $DataView = function DataView(buffer, byteOffset, byteLength) { + anInstance(this, $DataView, DATA_VIEW); + anInstance(buffer, $ArrayBuffer, DATA_VIEW); + var bufferLength = getInternalState(buffer).byteLength; + var offset = toInteger(byteOffset); + if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset'); + byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); + if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH); + setInternalState(this, { + buffer: buffer, + byteLength: byteLength, + byteOffset: offset + }); + if (!DESCRIPTORS) { + this.buffer = buffer; + this.byteLength = byteLength; + this.byteOffset = offset; + } + }; + + if (DESCRIPTORS) { + addGetter($ArrayBuffer, 'byteLength'); + addGetter($DataView, 'buffer'); + addGetter($DataView, 'byteLength'); + addGetter($DataView, 'byteOffset'); + } + + redefineAll($DataView[PROTOTYPE], { + getInt8: function getInt8(byteOffset) { + return get(this, 1, byteOffset)[0] << 24 >> 24; + }, + getUint8: function getUint8(byteOffset) { + return get(this, 1, byteOffset)[0]; + }, + getInt16: function getInt16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined); + return (bytes[1] << 8 | bytes[0]) << 16 >> 16; + }, + getUint16: function getUint16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined); + return bytes[1] << 8 | bytes[0]; + }, + getInt32: function getInt32(byteOffset /* , littleEndian */) { + return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)); + }, + getUint32: function getUint32(byteOffset /* , littleEndian */) { + return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0; + }, + getFloat32: function getFloat32(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23); + }, + getFloat64: function getFloat64(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52); + }, + setInt8: function setInt8(byteOffset, value) { + set(this, 1, byteOffset, packInt8, value); + }, + setUint8: function setUint8(byteOffset, value) { + set(this, 1, byteOffset, packInt8, value); + }, + setInt16: function setInt16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setUint16: function setUint16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setInt32: function setInt32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setUint32: function setUint32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { + set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined); + } + }); +} else { + if (!fails(function () { + NativeArrayBuffer(1); + }) || !fails(function () { + new NativeArrayBuffer(-1); // eslint-disable-line no-new + }) || fails(function () { + new NativeArrayBuffer(); // eslint-disable-line no-new + new NativeArrayBuffer(1.5); // eslint-disable-line no-new + new NativeArrayBuffer(NaN); // eslint-disable-line no-new + return NativeArrayBuffer.name != ARRAY_BUFFER; + })) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer); + return new NativeArrayBuffer(toIndex(length)); + }; + var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE]; + for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) { + if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, NativeArrayBuffer[key]); + } + ArrayBufferPrototype.constructor = $ArrayBuffer; + } + // iOS Safari 7.x bug + var testView = new $DataView(new $ArrayBuffer(2)); + var nativeSetInt8 = $DataView[PROTOTYPE].setInt8; + testView.setInt8(0, 2147483648); + testView.setInt8(1, 2147483649); + if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataView[PROTOTYPE], { + setInt8: function setInt8(byteOffset, value) { + nativeSetInt8.call(this, byteOffset, value << 24 >> 24); + }, + setUint8: function setUint8(byteOffset, value) { + nativeSetInt8.call(this, byteOffset, value << 24 >> 24); + } + }, { unsafe: true }); +} + +setToStringTag($ArrayBuffer, ARRAY_BUFFER); +setToStringTag($DataView, DATA_VIEW); +exports[ARRAY_BUFFER] = $ArrayBuffer; +exports[DATA_VIEW] = $DataView; diff --git a/core-js/internals/array-copy-within.js b/core-js/internals/array-copy-within.js new file mode 100644 index 0000000000..70c8edbf92 --- /dev/null +++ b/core-js/internals/array-copy-within.js @@ -0,0 +1,29 @@ +'use strict'; +var toObject = require('../internals/to-object'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var toLength = require('../internals/to-length'); + +var min = Math.min; + +// `Array.prototype.copyWithin` method implementation +// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin +module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { + var O = toObject(this); + var len = toLength(O.length); + var to = toAbsoluteIndex(target, len); + var from = toAbsoluteIndex(start, len); + var end = arguments.length > 2 ? arguments[2] : undefined; + var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); + var inc = 1; + if (from < to && to < from + count) { + inc = -1; + from += count - 1; + to += count - 1; + } + while (count-- > 0) { + if (from in O) O[to] = O[from]; + else delete O[to]; + to += inc; + from += inc; + } return O; +}; diff --git a/core-js/internals/array-fill.js b/core-js/internals/array-fill.js new file mode 100644 index 0000000000..7c15a04f10 --- /dev/null +++ b/core-js/internals/array-fill.js @@ -0,0 +1,17 @@ +'use strict'; +var toObject = require('../internals/to-object'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var toLength = require('../internals/to-length'); + +// `Array.prototype.fill` method implementation +// https://tc39.github.io/ecma262/#sec-array.prototype.fill +module.exports = function fill(value /* , start = 0, end = @length */) { + var O = toObject(this); + var length = toLength(O.length); + var argumentsLength = arguments.length; + var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length); + var end = argumentsLength > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : toAbsoluteIndex(end, length); + while (endPos > index) O[index++] = value; + return O; +}; diff --git a/core-js/internals/array-for-each.js b/core-js/internals/array-for-each.js new file mode 100644 index 0000000000..b666e31540 --- /dev/null +++ b/core-js/internals/array-for-each.js @@ -0,0 +1,9 @@ +'use strict'; +var $forEach = require('../internals/array-iteration').forEach; +var sloppyArrayMethod = require('../internals/sloppy-array-method'); + +// `Array.prototype.forEach` method implementation +// https://tc39.github.io/ecma262/#sec-array.prototype.foreach +module.exports = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); +} : [].forEach; diff --git a/core-js/internals/array-from.js b/core-js/internals/array-from.js new file mode 100644 index 0000000000..9a689463a0 --- /dev/null +++ b/core-js/internals/array-from.js @@ -0,0 +1,41 @@ +'use strict'; +var bind = require('../internals/bind-context'); +var toObject = require('../internals/to-object'); +var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing'); +var isArrayIteratorMethod = require('../internals/is-array-iterator-method'); +var toLength = require('../internals/to-length'); +var createProperty = require('../internals/create-property'); +var getIteratorMethod = require('../internals/get-iterator-method'); + +// `Array.from` method implementation +// https://tc39.github.io/ecma262/#sec-array.from +module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var C = typeof this == 'function' ? this : Array; + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var index = 0; + var iteratorMethod = getIteratorMethod(O); + var length, result, step, iterator; + if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); + // if the target is not iterable or it's an array with the default iterator - use a simple case + if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { + iterator = iteratorMethod.call(O); + result = new C(); + for (;!(step = iterator.next()).done; index++) { + createProperty(result, index, mapping + ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) + : step.value + ); + } + } else { + length = toLength(O.length); + result = new C(length); + for (;length > index; index++) { + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; +}; diff --git a/core-js/internals/array-includes.js b/core-js/internals/array-includes.js new file mode 100644 index 0000000000..a4161204b3 --- /dev/null +++ b/core-js/internals/array-includes.js @@ -0,0 +1,32 @@ +var toIndexedObject = require('../internals/to-indexed-object'); +var toLength = require('../internals/to-length'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); + +// `Array.prototype.{ indexOf, includes }` methods implementation +var createMethod = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +module.exports = { + // `Array.prototype.includes` method + // https://tc39.github.io/ecma262/#sec-array.prototype.includes + includes: createMethod(true), + // `Array.prototype.indexOf` method + // https://tc39.github.io/ecma262/#sec-array.prototype.indexof + indexOf: createMethod(false) +}; diff --git a/core-js/internals/array-iteration.js b/core-js/internals/array-iteration.js new file mode 100644 index 0000000000..eab3f5bf8b --- /dev/null +++ b/core-js/internals/array-iteration.js @@ -0,0 +1,65 @@ +var bind = require('../internals/bind-context'); +var IndexedObject = require('../internals/indexed-object'); +var toObject = require('../internals/to-object'); +var toLength = require('../internals/to-length'); +var arraySpeciesCreate = require('../internals/array-species-create'); + +var push = [].push; + +// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation +var createMethod = function (TYPE) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + return function ($this, callbackfn, that, specificCreate) { + var O = toObject($this); + var self = IndexedObject(O); + var boundFunction = bind(callbackfn, that, 3); + var length = toLength(self.length); + var index = 0; + var create = specificCreate || arraySpeciesCreate; + var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; + var value, result; + for (;length > index; index++) if (NO_HOLES || index in self) { + value = self[index]; + result = boundFunction(value, index, O); + if (TYPE) { + if (IS_MAP) target[index] = result; // map + else if (result) switch (TYPE) { + case 3: return true; // some + case 5: return value; // find + case 6: return index; // findIndex + case 2: push.call(target, value); // filter + } else if (IS_EVERY) return false; // every + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; + }; +}; + +module.exports = { + // `Array.prototype.forEach` method + // https://tc39.github.io/ecma262/#sec-array.prototype.foreach + forEach: createMethod(0), + // `Array.prototype.map` method + // https://tc39.github.io/ecma262/#sec-array.prototype.map + map: createMethod(1), + // `Array.prototype.filter` method + // https://tc39.github.io/ecma262/#sec-array.prototype.filter + filter: createMethod(2), + // `Array.prototype.some` method + // https://tc39.github.io/ecma262/#sec-array.prototype.some + some: createMethod(3), + // `Array.prototype.every` method + // https://tc39.github.io/ecma262/#sec-array.prototype.every + every: createMethod(4), + // `Array.prototype.find` method + // https://tc39.github.io/ecma262/#sec-array.prototype.find + find: createMethod(5), + // `Array.prototype.findIndex` method + // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod(6) +}; diff --git a/core-js/internals/array-last-index-of.js b/core-js/internals/array-last-index-of.js new file mode 100644 index 0000000000..3401db3fce --- /dev/null +++ b/core-js/internals/array-last-index-of.js @@ -0,0 +1,24 @@ +'use strict'; +var toIndexedObject = require('../internals/to-indexed-object'); +var toInteger = require('../internals/to-integer'); +var toLength = require('../internals/to-length'); +var sloppyArrayMethod = require('../internals/sloppy-array-method'); + +var min = Math.min; +var nativeLastIndexOf = [].lastIndexOf; +var NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; +var SLOPPY_METHOD = sloppyArrayMethod('lastIndexOf'); + +// `Array.prototype.lastIndexOf` method implementation +// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof +module.exports = (NEGATIVE_ZERO || SLOPPY_METHOD) ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { + // convert -0 to +0 + if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0; + var O = toIndexedObject(this); + var length = toLength(O.length); + var index = length - 1; + if (arguments.length > 1) index = min(index, toInteger(arguments[1])); + if (index < 0) index = length + index; + for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0; + return -1; +} : nativeLastIndexOf; diff --git a/core-js/internals/array-method-has-species-support.js b/core-js/internals/array-method-has-species-support.js new file mode 100644 index 0000000000..c93ed5c487 --- /dev/null +++ b/core-js/internals/array-method-has-species-support.js @@ -0,0 +1,15 @@ +var fails = require('../internals/fails'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (METHOD_NAME) { + return !fails(function () { + var array = []; + var constructor = array.constructor = {}; + constructor[SPECIES] = function () { + return { foo: 1 }; + }; + return array[METHOD_NAME](Boolean).foo !== 1; + }); +}; diff --git a/core-js/internals/array-reduce.js b/core-js/internals/array-reduce.js new file mode 100644 index 0000000000..3f170377de --- /dev/null +++ b/core-js/internals/array-reduce.js @@ -0,0 +1,40 @@ +var aFunction = require('../internals/a-function'); +var toObject = require('../internals/to-object'); +var IndexedObject = require('../internals/indexed-object'); +var toLength = require('../internals/to-length'); + +// `Array.prototype.{ reduce, reduceRight }` methods implementation +var createMethod = function (IS_RIGHT) { + return function (that, callbackfn, argumentsLength, memo) { + aFunction(callbackfn); + var O = toObject(that); + var self = IndexedObject(O); + var length = toLength(O.length); + var index = IS_RIGHT ? length - 1 : 0; + var i = IS_RIGHT ? -1 : 1; + if (argumentsLength < 2) while (true) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (IS_RIGHT ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); + } + } + for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; + }; +}; + +module.exports = { + // `Array.prototype.reduce` method + // https://tc39.github.io/ecma262/#sec-array.prototype.reduce + left: createMethod(false), + // `Array.prototype.reduceRight` method + // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright + right: createMethod(true) +}; diff --git a/core-js/internals/array-species-create.js b/core-js/internals/array-species-create.js new file mode 100644 index 0000000000..5c6eaabe14 --- /dev/null +++ b/core-js/internals/array-species-create.js @@ -0,0 +1,20 @@ +var isObject = require('../internals/is-object'); +var isArray = require('../internals/is-array'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var SPECIES = wellKnownSymbol('species'); + +// `ArraySpeciesCreate` abstract operation +// https://tc39.github.io/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray, length) { + var C; + if (isArray(originalArray)) { + C = originalArray.constructor; + // cross-realm fallback + if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; + else if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); +}; diff --git a/core-js/internals/bind-context.js b/core-js/internals/bind-context.js new file mode 100644 index 0000000000..96a7f49c41 --- /dev/null +++ b/core-js/internals/bind-context.js @@ -0,0 +1,24 @@ +var aFunction = require('../internals/a-function'); + +// optional / simple context binding +module.exports = function (fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 0: return function () { + return fn.call(that); + }; + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; diff --git a/core-js/internals/call-with-safe-iteration-closing.js b/core-js/internals/call-with-safe-iteration-closing.js new file mode 100644 index 0000000000..7503656557 --- /dev/null +++ b/core-js/internals/call-with-safe-iteration-closing.js @@ -0,0 +1,13 @@ +var anObject = require('../internals/an-object'); + +// call something on iterator step with safe closing on error +module.exports = function (iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (error) { + var returnMethod = iterator['return']; + if (returnMethod !== undefined) anObject(returnMethod.call(iterator)); + throw error; + } +}; diff --git a/core-js/internals/check-correctness-of-iteration.js b/core-js/internals/check-correctness-of-iteration.js new file mode 100644 index 0000000000..b33ec63e8f --- /dev/null +++ b/core-js/internals/check-correctness-of-iteration.js @@ -0,0 +1,38 @@ +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var ITERATOR = wellKnownSymbol('iterator'); +var SAFE_CLOSING = false; + +try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR] = function () { + return this; + }; + // eslint-disable-next-line no-throw-literal + Array.from(iteratorWithReturn, function () { throw 2; }); +} catch (error) { /* empty */ } + +module.exports = function (exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; +}; diff --git a/core-js/internals/classof-raw.js b/core-js/internals/classof-raw.js new file mode 100644 index 0000000000..332c0bc0b9 --- /dev/null +++ b/core-js/internals/classof-raw.js @@ -0,0 +1,5 @@ +var toString = {}.toString; + +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; diff --git a/core-js/internals/classof.js b/core-js/internals/classof.js new file mode 100644 index 0000000000..5dedaceb6d --- /dev/null +++ b/core-js/internals/classof.js @@ -0,0 +1,25 @@ +var classofRaw = require('../internals/classof-raw'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +// ES3 wrong here +var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } +}; + +// getting tag from ES6+ `Object.prototype.toString` +module.exports = function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) + // ES3 arguments fallback + : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; +}; diff --git a/core-js/internals/collection-add-all.js b/core-js/internals/collection-add-all.js new file mode 100644 index 0000000000..86d1a78a36 --- /dev/null +++ b/core-js/internals/collection-add-all.js @@ -0,0 +1,13 @@ +'use strict'; +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); + +// https://github.com/tc39/collection-methods +module.exports = function (/* ...elements */) { + var set = anObject(this); + var adder = aFunction(set.add); + for (var k = 0, len = arguments.length; k < len; k++) { + adder.call(set, arguments[k]); + } + return set; +}; diff --git a/core-js/internals/collection-delete-all.js b/core-js/internals/collection-delete-all.js new file mode 100644 index 0000000000..37b4d48375 --- /dev/null +++ b/core-js/internals/collection-delete-all.js @@ -0,0 +1,16 @@ +'use strict'; +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); + +// https://github.com/tc39/collection-methods +module.exports = function (/* ...elements */) { + var collection = anObject(this); + var remover = aFunction(collection['delete']); + var allDeleted = true; + var wasDeleted; + for (var k = 0, len = arguments.length; k < len; k++) { + wasDeleted = remover.call(collection, arguments[k]); + allDeleted = allDeleted && wasDeleted; + } + return !!allDeleted; +}; diff --git a/core-js/internals/collection-from.js b/core-js/internals/collection-from.js new file mode 100644 index 0000000000..fcdd078c63 --- /dev/null +++ b/core-js/internals/collection-from.js @@ -0,0 +1,26 @@ +'use strict'; +// https://tc39.github.io/proposal-setmap-offrom/ +var aFunction = require('../internals/a-function'); +var bind = require('../internals/bind-context'); +var iterate = require('../internals/iterate'); + +module.exports = function from(source /* , mapFn, thisArg */) { + var length = arguments.length; + var mapFn = length > 1 ? arguments[1] : undefined; + var mapping, A, n, boundFunction; + aFunction(this); + mapping = mapFn !== undefined; + if (mapping) aFunction(mapFn); + if (source == undefined) return new this(); + A = []; + if (mapping) { + n = 0; + boundFunction = bind(mapFn, length > 2 ? arguments[2] : undefined, 2); + iterate(source, function (nextItem) { + A.push(boundFunction(nextItem, n++)); + }); + } else { + iterate(source, A.push, A); + } + return new this(A); +}; diff --git a/core-js/internals/collection-of.js b/core-js/internals/collection-of.js new file mode 100644 index 0000000000..e68a10743b --- /dev/null +++ b/core-js/internals/collection-of.js @@ -0,0 +1,8 @@ +'use strict'; +// https://tc39.github.io/proposal-setmap-offrom/ +module.exports = function of() { + var length = arguments.length; + var A = new Array(length); + while (length--) A[length] = arguments[length]; + return new this(A); +}; diff --git a/core-js/internals/collection-strong.js b/core-js/internals/collection-strong.js new file mode 100644 index 0000000000..14f6f0ec13 --- /dev/null +++ b/core-js/internals/collection-strong.js @@ -0,0 +1,186 @@ +'use strict'; +var defineProperty = require('../internals/object-define-property').f; +var create = require('../internals/object-create'); +var redefineAll = require('../internals/redefine-all'); +var bind = require('../internals/bind-context'); +var anInstance = require('../internals/an-instance'); +var iterate = require('../internals/iterate'); +var defineIterator = require('../internals/define-iterator'); +var setSpecies = require('../internals/set-species'); +var DESCRIPTORS = require('../internals/descriptors'); +var fastKey = require('../internals/internal-metadata').fastKey; +var InternalStateModule = require('../internals/internal-state'); + +var setInternalState = InternalStateModule.set; +var internalStateGetterFor = InternalStateModule.getterFor; + +module.exports = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, CONSTRUCTOR_NAME); + setInternalState(that, { + type: CONSTRUCTOR_NAME, + index: create(null), + first: undefined, + last: undefined, + size: 0 + }); + if (!DESCRIPTORS) that.size = 0; + if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); + }); + + var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); + + var define = function (that, key, value) { + var state = getInternalState(that); + var entry = getEntry(that, key); + var previous, index; + // change existing entry + if (entry) { + entry.value = value; + // create new entry + } else { + state.last = entry = { + index: index = fastKey(key, true), + key: key, + value: value, + previous: previous = state.last, + next: undefined, + removed: false + }; + if (!state.first) state.first = entry; + if (previous) previous.next = entry; + if (DESCRIPTORS) state.size++; + else that.size++; + // add to index + if (index !== 'F') state.index[index] = entry; + } return that; + }; + + var getEntry = function (that, key) { + var state = getInternalState(that); + // fast case + var index = fastKey(key); + var entry; + if (index !== 'F') return state.index[index]; + // frozen object case + for (entry = state.first; entry; entry = entry.next) { + if (entry.key == key) return entry; + } + }; + + redefineAll(C.prototype, { + // 23.1.3.1 Map.prototype.clear() + // 23.2.3.2 Set.prototype.clear() + clear: function clear() { + var that = this; + var state = getInternalState(that); + var data = state.index; + var entry = state.first; + while (entry) { + entry.removed = true; + if (entry.previous) entry.previous = entry.previous.next = undefined; + delete data[entry.index]; + entry = entry.next; + } + state.first = state.last = undefined; + if (DESCRIPTORS) state.size = 0; + else that.size = 0; + }, + // 23.1.3.3 Map.prototype.delete(key) + // 23.2.3.4 Set.prototype.delete(value) + 'delete': function (key) { + var that = this; + var state = getInternalState(that); + var entry = getEntry(that, key); + if (entry) { + var next = entry.next; + var prev = entry.previous; + delete state.index[entry.index]; + entry.removed = true; + if (prev) prev.next = next; + if (next) next.previous = prev; + if (state.first == entry) state.first = next; + if (state.last == entry) state.last = prev; + if (DESCRIPTORS) state.size--; + else that.size--; + } return !!entry; + }, + // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) + // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) + forEach: function forEach(callbackfn /* , that = undefined */) { + var state = getInternalState(this); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var entry; + while (entry = entry ? entry.next : state.first) { + boundFunction(entry.value, entry.key, this); + // revert to the last existing entry + while (entry && entry.removed) entry = entry.previous; + } + }, + // 23.1.3.7 Map.prototype.has(key) + // 23.2.3.7 Set.prototype.has(value) + has: function has(key) { + return !!getEntry(this, key); + } + }); + + redefineAll(C.prototype, IS_MAP ? { + // 23.1.3.6 Map.prototype.get(key) + get: function get(key) { + var entry = getEntry(this, key); + return entry && entry.value; + }, + // 23.1.3.9 Map.prototype.set(key, value) + set: function set(key, value) { + return define(this, key === 0 ? 0 : key, value); + } + } : { + // 23.2.3.1 Set.prototype.add(value) + add: function add(value) { + return define(this, value = value === 0 ? 0 : value, value); + } + }); + if (DESCRIPTORS) defineProperty(C.prototype, 'size', { + get: function () { + return getInternalState(this).size; + } + }); + return C; + }, + setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) { + var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; + var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); + var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); + // add .keys, .values, .entries, [@@iterator] + // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 + defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) { + setInternalState(this, { + type: ITERATOR_NAME, + target: iterated, + state: getInternalCollectionState(iterated), + kind: kind, + last: undefined + }); + }, function () { + var state = getInternalIteratorState(this); + var kind = state.kind; + var entry = state.last; + // revert to the last existing entry + while (entry && entry.removed) entry = entry.previous; + // get next entry + if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { + // or finish the iteration + state.target = undefined; + return { value: undefined, done: true }; + } + // return step by kind + if (kind == 'keys') return { value: entry.key, done: false }; + if (kind == 'values') return { value: entry.value, done: false }; + return { value: [entry.key, entry.value], done: false }; + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + + // add [@@species], 23.1.2.2, 23.2.2.2 + setSpecies(CONSTRUCTOR_NAME); + } +}; diff --git a/core-js/internals/collection-weak.js b/core-js/internals/collection-weak.js new file mode 100644 index 0000000000..ac8a413a31 --- /dev/null +++ b/core-js/internals/collection-weak.js @@ -0,0 +1,121 @@ +'use strict'; +var redefineAll = require('../internals/redefine-all'); +var getWeakData = require('../internals/internal-metadata').getWeakData; +var anObject = require('../internals/an-object'); +var isObject = require('../internals/is-object'); +var anInstance = require('../internals/an-instance'); +var iterate = require('../internals/iterate'); +var ArrayIterationModule = require('../internals/array-iteration'); +var $has = require('../internals/has'); +var InternalStateModule = require('../internals/internal-state'); + +var setInternalState = InternalStateModule.set; +var internalStateGetterFor = InternalStateModule.getterFor; +var find = ArrayIterationModule.find; +var findIndex = ArrayIterationModule.findIndex; +var id = 0; + +// fallback for uncaught frozen keys +var uncaughtFrozenStore = function (store) { + return store.frozen || (store.frozen = new UncaughtFrozenStore()); +}; + +var UncaughtFrozenStore = function () { + this.entries = []; +}; + +var findUncaughtFrozen = function (store, key) { + return find(store.entries, function (it) { + return it[0] === key; + }); +}; + +UncaughtFrozenStore.prototype = { + get: function (key) { + var entry = findUncaughtFrozen(this, key); + if (entry) return entry[1]; + }, + has: function (key) { + return !!findUncaughtFrozen(this, key); + }, + set: function (key, value) { + var entry = findUncaughtFrozen(this, key); + if (entry) entry[1] = value; + else this.entries.push([key, value]); + }, + 'delete': function (key) { + var index = findIndex(this.entries, function (it) { + return it[0] === key; + }); + if (~index) this.entries.splice(index, 1); + return !!~index; + } +}; + +module.exports = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, CONSTRUCTOR_NAME); + setInternalState(that, { + type: CONSTRUCTOR_NAME, + id: id++, + frozen: undefined + }); + if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); + }); + + var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); + + var define = function (that, key, value) { + var state = getInternalState(that); + var data = getWeakData(anObject(key), true); + if (data === true) uncaughtFrozenStore(state).set(key, value); + else data[state.id] = value; + return that; + }; + + redefineAll(C.prototype, { + // 23.3.3.2 WeakMap.prototype.delete(key) + // 23.4.3.3 WeakSet.prototype.delete(value) + 'delete': function (key) { + var state = getInternalState(this); + if (!isObject(key)) return false; + var data = getWeakData(key); + if (data === true) return uncaughtFrozenStore(state)['delete'](key); + return data && $has(data, state.id) && delete data[state.id]; + }, + // 23.3.3.4 WeakMap.prototype.has(key) + // 23.4.3.4 WeakSet.prototype.has(value) + has: function has(key) { + var state = getInternalState(this); + if (!isObject(key)) return false; + var data = getWeakData(key); + if (data === true) return uncaughtFrozenStore(state).has(key); + return data && $has(data, state.id); + } + }); + + redefineAll(C.prototype, IS_MAP ? { + // 23.3.3.3 WeakMap.prototype.get(key) + get: function get(key) { + var state = getInternalState(this); + if (isObject(key)) { + var data = getWeakData(key); + if (data === true) return uncaughtFrozenStore(state).get(key); + return data ? data[state.id] : undefined; + } + }, + // 23.3.3.5 WeakMap.prototype.set(key, value) + set: function set(key, value) { + return define(this, key, value); + } + } : { + // 23.4.3.1 WeakSet.prototype.add(value) + add: function add(value) { + return define(this, value, true); + } + }); + + return C; + } +}; diff --git a/core-js/internals/collection.js b/core-js/internals/collection.js new file mode 100644 index 0000000000..776c6d3ade --- /dev/null +++ b/core-js/internals/collection.js @@ -0,0 +1,97 @@ +'use strict'; +var $ = require('../internals/export'); +var global = require('../internals/global'); +var isForced = require('../internals/is-forced'); +var redefine = require('../internals/redefine'); +var InternalMetadataModule = require('../internals/internal-metadata'); +var iterate = require('../internals/iterate'); +var anInstance = require('../internals/an-instance'); +var isObject = require('../internals/is-object'); +var fails = require('../internals/fails'); +var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); +var setToStringTag = require('../internals/set-to-string-tag'); +var inheritIfRequired = require('../internals/inherit-if-required'); + +module.exports = function (CONSTRUCTOR_NAME, wrapper, common, IS_MAP, IS_WEAK) { + var NativeConstructor = global[CONSTRUCTOR_NAME]; + var NativePrototype = NativeConstructor && NativeConstructor.prototype; + var Constructor = NativeConstructor; + var ADDER = IS_MAP ? 'set' : 'add'; + var exported = {}; + + var fixMethod = function (KEY) { + var nativeMethod = NativePrototype[KEY]; + redefine(NativePrototype, KEY, + KEY == 'add' ? function add(value) { + nativeMethod.call(this, value === 0 ? 0 : value); + return this; + } : KEY == 'delete' ? function (key) { + return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); + } : KEY == 'get' ? function get(key) { + return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key); + } : KEY == 'has' ? function has(key) { + return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); + } : function set(key, value) { + nativeMethod.call(this, key === 0 ? 0 : key, value); + return this; + } + ); + }; + + // eslint-disable-next-line max-len + if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () { + new NativeConstructor().entries().next(); + })))) { + // create collection constructor + Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); + InternalMetadataModule.REQUIRED = true; + } else if (isForced(CONSTRUCTOR_NAME, true)) { + var instance = new Constructor(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly + // eslint-disable-next-line no-new + var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); }); + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && fails(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new NativeConstructor(); + var index = 5; + while (index--) $instance[ADDER](index, index); + return !$instance.has(-0); + }); + + if (!ACCEPT_ITERABLES) { + Constructor = wrapper(function (dummy, iterable) { + anInstance(dummy, Constructor, CONSTRUCTOR_NAME); + var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); + if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); + return that; + }); + Constructor.prototype = NativePrototype; + NativePrototype.constructor = Constructor; + } + + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + + if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); + + // weak collections should not contains .clear method + if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; + } + + exported[CONSTRUCTOR_NAME] = Constructor; + $({ global: true, forced: Constructor != NativeConstructor }, exported); + + setToStringTag(Constructor, CONSTRUCTOR_NAME); + + if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); + + return Constructor; +}; diff --git a/core-js/internals/composite-key.js b/core-js/internals/composite-key.js new file mode 100644 index 0000000000..68a38c9610 --- /dev/null +++ b/core-js/internals/composite-key.js @@ -0,0 +1,43 @@ +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +var Map = require('../modules/es.map'); +var WeakMap = require('../modules/es.weak-map'); +var create = require('../internals/object-create'); +var isObject = require('../internals/is-object'); + +var Node = function () { + // keys + this.object = null; + this.symbol = null; + // child nodes + this.primitives = null; + this.objectsByIndex = create(null); +}; + +Node.prototype.get = function (key, initializer) { + return this[key] || (this[key] = initializer()); +}; + +Node.prototype.next = function (i, it, IS_OBJECT) { + var store = IS_OBJECT + ? this.objectsByIndex[i] || (this.objectsByIndex[i] = new WeakMap()) + : this.primitives || (this.primitives = new Map()); + var entry = store.get(it); + if (!entry) store.set(it, entry = new Node()); + return entry; +}; + +var root = new Node(); + +module.exports = function () { + var active = root; + var length = arguments.length; + var i, it; + // for prevent leaking, start from objects + for (i = 0; i < length; i++) { + if (isObject(it = arguments[i])) active = active.next(i, it, true); + } + if (this === Object && active === root) throw TypeError('Composite keys must contain a non-primitive component'); + for (i = 0; i < length; i++) { + if (!isObject(it = arguments[i])) active = active.next(i, it, false); + } return active; +}; diff --git a/core-js/internals/copy-constructor-properties.js b/core-js/internals/copy-constructor-properties.js new file mode 100644 index 0000000000..214a819dd1 --- /dev/null +++ b/core-js/internals/copy-constructor-properties.js @@ -0,0 +1,14 @@ +var has = require('../internals/has'); +var ownKeys = require('../internals/own-keys'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var definePropertyModule = require('../internals/object-define-property'); + +module.exports = function (target, source) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } +}; diff --git a/core-js/internals/correct-is-regexp-logic.js b/core-js/internals/correct-is-regexp-logic.js new file mode 100644 index 0000000000..f0d753fdc6 --- /dev/null +++ b/core-js/internals/correct-is-regexp-logic.js @@ -0,0 +1,15 @@ +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var MATCH = wellKnownSymbol('match'); + +module.exports = function (METHOD_NAME) { + var regexp = /./; + try { + '/./'[METHOD_NAME](regexp); + } catch (e) { + try { + regexp[MATCH] = false; + return '/./'[METHOD_NAME](regexp); + } catch (f) { /* empty */ } + } return false; +}; diff --git a/core-js/internals/correct-prototype-getter.js b/core-js/internals/correct-prototype-getter.js new file mode 100644 index 0000000000..6cd8f404a4 --- /dev/null +++ b/core-js/internals/correct-prototype-getter.js @@ -0,0 +1,7 @@ +var fails = require('../internals/fails'); + +module.exports = !fails(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + return Object.getPrototypeOf(new F()) !== F.prototype; +}); diff --git a/core-js/internals/create-html.js b/core-js/internals/create-html.js new file mode 100644 index 0000000000..57e560c300 --- /dev/null +++ b/core-js/internals/create-html.js @@ -0,0 +1,12 @@ +var requireObjectCoercible = require('../internals/require-object-coercible'); + +var quot = /"/g; + +// B.2.3.2.1 CreateHTML(string, tag, attribute, value) +// https://tc39.github.io/ecma262/#sec-createhtml +module.exports = function (string, tag, attribute, value) { + var S = String(requireObjectCoercible(string)); + var p1 = '<' + tag; + if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"'; + return p1 + '>' + S + ''; +}; diff --git a/core-js/internals/create-iterator-constructor.js b/core-js/internals/create-iterator-constructor.js new file mode 100644 index 0000000000..f9dbdb789c --- /dev/null +++ b/core-js/internals/create-iterator-constructor.js @@ -0,0 +1,16 @@ +'use strict'; +var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype; +var create = require('../internals/object-create'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); +var setToStringTag = require('../internals/set-to-string-tag'); +var Iterators = require('../internals/iterators'); + +var returnThis = function () { return this; }; + +module.exports = function (IteratorConstructor, NAME, next) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; +}; diff --git a/core-js/internals/create-property-descriptor.js b/core-js/internals/create-property-descriptor.js new file mode 100644 index 0000000000..090593405f --- /dev/null +++ b/core-js/internals/create-property-descriptor.js @@ -0,0 +1,8 @@ +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; diff --git a/core-js/internals/create-property.js b/core-js/internals/create-property.js new file mode 100644 index 0000000000..c27151a934 --- /dev/null +++ b/core-js/internals/create-property.js @@ -0,0 +1,10 @@ +'use strict'; +var toPrimitive = require('../internals/to-primitive'); +var definePropertyModule = require('../internals/object-define-property'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); + +module.exports = function (object, key, value) { + var propertyKey = toPrimitive(key); + if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else object[propertyKey] = value; +}; diff --git a/core-js/internals/date-to-iso-string.js b/core-js/internals/date-to-iso-string.js new file mode 100644 index 0000000000..f22503a3a7 --- /dev/null +++ b/core-js/internals/date-to-iso-string.js @@ -0,0 +1,31 @@ +'use strict'; +var fails = require('../internals/fails'); +var padStart = require('../internals/string-pad').start; + +var abs = Math.abs; +var DatePrototype = Date.prototype; +var getTime = DatePrototype.getTime; +var nativeDateToISOString = DatePrototype.toISOString; + +// `Date.prototype.toISOString` method implementation +// https://tc39.github.io/ecma262/#sec-date.prototype.toisostring +// PhantomJS / old WebKit fails here: +module.exports = (fails(function () { + return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z'; +}) || !fails(function () { + nativeDateToISOString.call(new Date(NaN)); +})) ? function toISOString() { + if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value'); + var date = this; + var year = date.getUTCFullYear(); + var milliseconds = date.getUTCMilliseconds(); + var sign = year < 0 ? '-' : year > 9999 ? '+' : ''; + return sign + padStart(abs(year), sign ? 6 : 4, 0) + + '-' + padStart(date.getUTCMonth() + 1, 2, 0) + + '-' + padStart(date.getUTCDate(), 2, 0) + + 'T' + padStart(date.getUTCHours(), 2, 0) + + ':' + padStart(date.getUTCMinutes(), 2, 0) + + ':' + padStart(date.getUTCSeconds(), 2, 0) + + '.' + padStart(milliseconds, 3, 0) + + 'Z'; +} : nativeDateToISOString; diff --git a/core-js/internals/date-to-primitive.js b/core-js/internals/date-to-primitive.js new file mode 100644 index 0000000000..fc334f1356 --- /dev/null +++ b/core-js/internals/date-to-primitive.js @@ -0,0 +1,9 @@ +'use strict'; +var anObject = require('../internals/an-object'); +var toPrimitive = require('../internals/to-primitive'); + +module.exports = function (hint) { + if (hint !== 'string' && hint !== 'number' && hint !== 'default') { + throw TypeError('Incorrect hint'); + } return toPrimitive(anObject(this), hint !== 'number'); +}; diff --git a/core-js/internals/define-iterator.js b/core-js/internals/define-iterator.js new file mode 100644 index 0000000000..f5acd4f0f1 --- /dev/null +++ b/core-js/internals/define-iterator.js @@ -0,0 +1,90 @@ +'use strict'; +var $ = require('../internals/export'); +var createIteratorConstructor = require('../internals/create-iterator-constructor'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); +var setToStringTag = require('../internals/set-to-string-tag'); +var hide = require('../internals/hide'); +var redefine = require('../internals/redefine'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var IS_PURE = require('../internals/is-pure'); +var Iterators = require('../internals/iterators'); +var IteratorsCore = require('../internals/iterators-core'); + +var IteratorPrototype = IteratorsCore.IteratorPrototype; +var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; +var ITERATOR = wellKnownSymbol('iterator'); +var KEYS = 'keys'; +var VALUES = 'values'; +var ENTRIES = 'entries'; + +var returnThis = function () { return this; }; + +module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { + hide(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + // Set @@toStringTag to native iterators + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; + } + } + + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return nativeIterator.call(this); }; + } + + // define iterator + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + hide(IterablePrototype, ITERATOR, defaultIterator); + } + Iterators[NAME] = defaultIterator; + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + redefine(IterablePrototype, KEY, methods[KEY]); + } + } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + + return methods; +}; diff --git a/core-js/internals/define-well-known-symbol.js b/core-js/internals/define-well-known-symbol.js new file mode 100644 index 0000000000..d383029176 --- /dev/null +++ b/core-js/internals/define-well-known-symbol.js @@ -0,0 +1,11 @@ +var path = require('../internals/path'); +var has = require('../internals/has'); +var wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol'); +var defineProperty = require('../internals/object-define-property').f; + +module.exports = function (NAME) { + var Symbol = path.Symbol || (path.Symbol = {}); + if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, { + value: wrappedWellKnownSymbolModule.f(NAME) + }); +}; diff --git a/core-js/internals/descriptors.js b/core-js/internals/descriptors.js new file mode 100644 index 0000000000..cae051891d --- /dev/null +++ b/core-js/internals/descriptors.js @@ -0,0 +1,6 @@ +var fails = require('../internals/fails'); + +// Thank's IE8 for his funny defineProperty +module.exports = !fails(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +}); diff --git a/core-js/internals/document-create-element.js b/core-js/internals/document-create-element.js new file mode 100644 index 0000000000..cc6abae0d8 --- /dev/null +++ b/core-js/internals/document-create-element.js @@ -0,0 +1,10 @@ +var global = require('../internals/global'); +var isObject = require('../internals/is-object'); + +var document = global.document; +// typeof document.createElement is 'object' in old IE +var EXISTS = isObject(document) && isObject(document.createElement); + +module.exports = function (it) { + return EXISTS ? document.createElement(it) : {}; +}; diff --git a/core-js/internals/dom-iterables.js b/core-js/internals/dom-iterables.js new file mode 100644 index 0000000000..b04e872907 --- /dev/null +++ b/core-js/internals/dom-iterables.js @@ -0,0 +1,35 @@ +// iterable DOM collections +// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods +module.exports = { + CSSRuleList: 0, + CSSStyleDeclaration: 0, + CSSValueList: 0, + ClientRectList: 0, + DOMRectList: 0, + DOMStringList: 0, + DOMTokenList: 1, + DataTransferItemList: 0, + FileList: 0, + HTMLAllCollection: 0, + HTMLCollection: 0, + HTMLFormElement: 0, + HTMLSelectElement: 0, + MediaList: 0, + MimeTypeArray: 0, + NamedNodeMap: 0, + NodeList: 1, + PaintRequestList: 0, + Plugin: 0, + PluginArray: 0, + SVGLengthList: 0, + SVGNumberList: 0, + SVGPathSegList: 0, + SVGPointList: 0, + SVGStringList: 0, + SVGTransformList: 0, + SourceBufferList: 0, + StyleSheetList: 0, + TextTrackCueList: 0, + TextTrackList: 0, + TouchList: 0 +}; diff --git a/core-js/internals/entry-unbind.js b/core-js/internals/entry-unbind.js new file mode 100644 index 0000000000..4707c9c42a --- /dev/null +++ b/core-js/internals/entry-unbind.js @@ -0,0 +1,8 @@ +var global = require('../internals/global'); +var bind = require('../internals/bind-context'); + +var call = Function.call; + +module.exports = function (CONSTRUCTOR, METHOD, length) { + return bind(call, global[CONSTRUCTOR].prototype[METHOD], length); +}; diff --git a/core-js/internals/entry-virtual.js b/core-js/internals/entry-virtual.js new file mode 100644 index 0000000000..42d08dc022 --- /dev/null +++ b/core-js/internals/entry-virtual.js @@ -0,0 +1,5 @@ +var global = require('../internals/global'); + +module.exports = function (CONSTRUCTOR) { + return global[CONSTRUCTOR].prototype; +}; diff --git a/core-js/internals/enum-bug-keys.js b/core-js/internals/enum-bug-keys.js new file mode 100644 index 0000000000..2ca413b13a --- /dev/null +++ b/core-js/internals/enum-bug-keys.js @@ -0,0 +1,10 @@ +// IE8- don't enum bug keys +module.exports = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' +]; diff --git a/core-js/internals/export.js b/core-js/internals/export.js new file mode 100644 index 0000000000..324e804133 --- /dev/null +++ b/core-js/internals/export.js @@ -0,0 +1,54 @@ +var global = require('../internals/global'); +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; +var hide = require('../internals/hide'); +var redefine = require('../internals/redefine'); +var setGlobal = require('../internals/set-global'); +var copyConstructorProperties = require('../internals/copy-constructor-properties'); +var isForced = require('../internals/is-forced'); + +/* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.noTargetGet - prevent calling a getter on target +*/ +module.exports = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global; + } else if (STATIC) { + target = global[TARGET] || setGlobal(TARGET, {}); + } else { + target = (global[TARGET] || {}).prototype; + } + if (target) for (key in source) { + sourceProperty = source[key]; + if (options.noTargetGet) { + descriptor = getOwnPropertyDescriptor(target, key); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key]; + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contained in target + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty === typeof targetProperty) continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + // add a flag to not completely full polyfills + if (options.sham || (targetProperty && targetProperty.sham)) { + hide(sourceProperty, 'sham', true); + } + // extend global + redefine(target, key, sourceProperty, options); + } +}; diff --git a/core-js/internals/fails.js b/core-js/internals/fails.js new file mode 100644 index 0000000000..f398e2da8e --- /dev/null +++ b/core-js/internals/fails.js @@ -0,0 +1,7 @@ +module.exports = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } +}; diff --git a/core-js/internals/fix-regexp-well-known-symbol-logic.js b/core-js/internals/fix-regexp-well-known-symbol-logic.js new file mode 100644 index 0000000000..563baa3c2e --- /dev/null +++ b/core-js/internals/fix-regexp-well-known-symbol-logic.js @@ -0,0 +1,93 @@ +'use strict'; +var hide = require('../internals/hide'); +var redefine = require('../internals/redefine'); +var fails = require('../internals/fails'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var regexpExec = require('../internals/regexp-exec'); + +var SPECIES = wellKnownSymbol('species'); + +var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + // #replace needs built-in support for named groups. + // #match works fine because it just return the exec results, even if it has + // a "grops" property. + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + return ''.replace(re, '$') !== '7'; +}); + +// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec +// Weex JS has frozen built-in prototypes, so use try / catch wrapper +var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; +}); + +module.exports = function (KEY, length, exec, sham) { + var SYMBOL = wellKnownSymbol(KEY); + + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + re.exec = function () { execCalled = true; return null; }; + + if (KEY === 'split') { + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES] = function () { return re; }; + } + + re[SYMBOL](''); + return !execCalled; + }); + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || + (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) + ) { + var nativeRegExpMethod = /./[SYMBOL]; + var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { + if (regexp.exec === regexpExec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; + } + return { done: true, value: nativeMethod.call(str, regexp, arg2) }; + } + return { done: false }; + }); + var stringMethod = methods[0]; + var regexMethod = methods[1]; + + redefine(String.prototype, KEY, stringMethod); + redefine(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function (string, arg) { return regexMethod.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function (string) { return regexMethod.call(string, this); } + ); + if (sham) hide(RegExp.prototype[SYMBOL], 'sham', true); + } +}; diff --git a/core-js/internals/flatten-into-array.js b/core-js/internals/flatten-into-array.js new file mode 100644 index 0000000000..e218b1dcb8 --- /dev/null +++ b/core-js/internals/flatten-into-array.js @@ -0,0 +1,32 @@ +'use strict'; +var isArray = require('../internals/is-array'); +var toLength = require('../internals/to-length'); +var bind = require('../internals/bind-context'); + +// `FlattenIntoArray` abstract operation +// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray +var flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) { + var targetIndex = start; + var sourceIndex = 0; + var mapFn = mapper ? bind(mapper, thisArg, 3) : false; + var element; + + while (sourceIndex < sourceLen) { + if (sourceIndex in source) { + element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; + + if (depth > 0 && isArray(element)) { + targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1; + } else { + if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length'); + target[targetIndex] = element; + } + + targetIndex++; + } + sourceIndex++; + } + return targetIndex; +}; + +module.exports = flattenIntoArray; diff --git a/core-js/internals/forced-object-prototype-accessors-methods.js b/core-js/internals/forced-object-prototype-accessors-methods.js new file mode 100644 index 0000000000..98cb8ba041 --- /dev/null +++ b/core-js/internals/forced-object-prototype-accessors-methods.js @@ -0,0 +1,13 @@ +'use strict'; +var IS_PURE = require('../internals/is-pure'); +var global = require('../internals/global'); +var fails = require('../internals/fails'); + +// Forced replacement object prototype accessors methods +module.exports = IS_PURE || !fails(function () { + var key = Math.random(); + // In FF throws only define methods + // eslint-disable-next-line no-undef, no-useless-call + __defineSetter__.call(null, key, function () { /* empty */ }); + delete global[key]; +}); diff --git a/core-js/internals/forced-string-html-method.js b/core-js/internals/forced-string-html-method.js new file mode 100644 index 0000000000..d3c884f5e5 --- /dev/null +++ b/core-js/internals/forced-string-html-method.js @@ -0,0 +1,10 @@ +var fails = require('../internals/fails'); + +// check the existence of a method, lowercase +// of a tag and escaping quotes in arguments +module.exports = function (METHOD_NAME) { + return fails(function () { + var test = ''[METHOD_NAME]('"'); + return test !== test.toLowerCase() || test.split('"').length > 3; + }); +}; diff --git a/core-js/internals/forced-string-trim-method.js b/core-js/internals/forced-string-trim-method.js new file mode 100644 index 0000000000..1b169ad902 --- /dev/null +++ b/core-js/internals/forced-string-trim-method.js @@ -0,0 +1,12 @@ +var fails = require('../internals/fails'); +var whitespaces = require('../internals/whitespaces'); + +var non = '\u200B\u0085\u180E'; + +// check that a method works with the correct list +// of whitespaces and has a correct name +module.exports = function (METHOD_NAME) { + return fails(function () { + return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME; + }); +}; diff --git a/core-js/internals/freezing.js b/core-js/internals/freezing.js new file mode 100644 index 0000000000..0ac9fbfb53 --- /dev/null +++ b/core-js/internals/freezing.js @@ -0,0 +1,5 @@ +var fails = require('../internals/fails'); + +module.exports = !fails(function () { + return Object.isExtensible(Object.preventExtensions({})); +}); diff --git a/core-js/internals/function-bind.js b/core-js/internals/function-bind.js new file mode 100644 index 0000000000..6e1e81dd3a --- /dev/null +++ b/core-js/internals/function-bind.js @@ -0,0 +1,27 @@ +'use strict'; +var aFunction = require('../internals/a-function'); +var isObject = require('../internals/is-object'); + +var slice = [].slice; +var factories = {}; + +var construct = function (C, argsLength, args) { + if (!(argsLength in factories)) { + for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']'; + // eslint-disable-next-line no-new-func + factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')'); + } return factories[argsLength](C, args); +}; + +// `Function.prototype.bind` method implementation +// https://tc39.github.io/ecma262/#sec-function.prototype.bind +module.exports = Function.bind || function bind(that /* , ...args */) { + var fn = aFunction(this); + var partArgs = slice.call(arguments, 1); + var boundFunction = function bound(/* args... */) { + var args = partArgs.concat(slice.call(arguments)); + return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args); + }; + if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype; + return boundFunction; +}; diff --git a/core-js/internals/function-to-string.js b/core-js/internals/function-to-string.js new file mode 100644 index 0000000000..6f7e88f3c8 --- /dev/null +++ b/core-js/internals/function-to-string.js @@ -0,0 +1,3 @@ +var shared = require('../internals/shared'); + +module.exports = shared('native-function-to-string', Function.toString); diff --git a/core-js/internals/get-built-in.js b/core-js/internals/get-built-in.js new file mode 100644 index 0000000000..8fcff2678a --- /dev/null +++ b/core-js/internals/get-built-in.js @@ -0,0 +1,11 @@ +var path = require('../internals/path'); +var global = require('../internals/global'); + +var aFunction = function (variable) { + return typeof variable == 'function' ? variable : undefined; +}; + +module.exports = function (namespace, method) { + return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) + : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; +}; diff --git a/core-js/internals/get-iterator-method.js b/core-js/internals/get-iterator-method.js new file mode 100644 index 0000000000..cfac310104 --- /dev/null +++ b/core-js/internals/get-iterator-method.js @@ -0,0 +1,11 @@ +var classof = require('../internals/classof'); +var Iterators = require('../internals/iterators'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = function (it) { + if (it != undefined) return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; diff --git a/core-js/internals/get-iterator.js b/core-js/internals/get-iterator.js new file mode 100644 index 0000000000..f7f7f8ef3b --- /dev/null +++ b/core-js/internals/get-iterator.js @@ -0,0 +1,9 @@ +var anObject = require('../internals/an-object'); +var getIteratorMethod = require('../internals/get-iterator-method'); + +module.exports = function (it) { + var iteratorMethod = getIteratorMethod(it); + if (typeof iteratorMethod != 'function') { + throw TypeError(String(it) + ' is not iterable'); + } return anObject(iteratorMethod.call(it)); +}; diff --git a/core-js/internals/get-map-iterator.js b/core-js/internals/get-map-iterator.js new file mode 100644 index 0000000000..1c608f379c --- /dev/null +++ b/core-js/internals/get-map-iterator.js @@ -0,0 +1,7 @@ +var IS_PURE = require('../internals/is-pure'); +var getIterator = require('../internals/get-iterator'); + +module.exports = IS_PURE ? getIterator : function (it) { + // eslint-disable-next-line no-undef + return Map.prototype.entries.call(it); +}; diff --git a/core-js/internals/get-set-iterator.js b/core-js/internals/get-set-iterator.js new file mode 100644 index 0000000000..4560c2e82c --- /dev/null +++ b/core-js/internals/get-set-iterator.js @@ -0,0 +1,7 @@ +var IS_PURE = require('../internals/is-pure'); +var getIterator = require('../internals/get-iterator'); + +module.exports = IS_PURE ? getIterator : function (it) { + // eslint-disable-next-line no-undef + return Set.prototype.values.call(it); +}; diff --git a/core-js/internals/global.js b/core-js/internals/global.js new file mode 100644 index 0000000000..bb744f126f --- /dev/null +++ b/core-js/internals/global.js @@ -0,0 +1,14 @@ +var O = 'object'; +var check = function (it) { + return it && it.Math == Math && it; +}; + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +module.exports = + // eslint-disable-next-line no-undef + check(typeof globalThis == O && globalThis) || + check(typeof window == O && window) || + check(typeof self == O && self) || + check(typeof global == O && global) || + // eslint-disable-next-line no-new-func + Function('return this')(); diff --git a/core-js/internals/has.js b/core-js/internals/has.js new file mode 100644 index 0000000000..0925c41e6c --- /dev/null +++ b/core-js/internals/has.js @@ -0,0 +1,5 @@ +var hasOwnProperty = {}.hasOwnProperty; + +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; diff --git a/core-js/internals/hidden-keys.js b/core-js/internals/hidden-keys.js new file mode 100644 index 0000000000..f053ebf797 --- /dev/null +++ b/core-js/internals/hidden-keys.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/core-js/internals/hide.js b/core-js/internals/hide.js new file mode 100644 index 0000000000..bdaad25055 --- /dev/null +++ b/core-js/internals/hide.js @@ -0,0 +1,10 @@ +var DESCRIPTORS = require('../internals/descriptors'); +var definePropertyModule = require('../internals/object-define-property'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); + +module.exports = DESCRIPTORS ? function (object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; diff --git a/core-js/internals/host-report-errors.js b/core-js/internals/host-report-errors.js new file mode 100644 index 0000000000..dc84a6c26b --- /dev/null +++ b/core-js/internals/host-report-errors.js @@ -0,0 +1,8 @@ +var global = require('../internals/global'); + +module.exports = function (a, b) { + var console = global.console; + if (console && console.error) { + arguments.length === 1 ? console.error(a) : console.error(a, b); + } +}; diff --git a/core-js/internals/html.js b/core-js/internals/html.js new file mode 100644 index 0000000000..23defa66b2 --- /dev/null +++ b/core-js/internals/html.js @@ -0,0 +1,3 @@ +var getBuiltIn = require('../internals/get-built-in'); + +module.exports = getBuiltIn('document', 'documentElement'); diff --git a/core-js/internals/ie8-dom-define.js b/core-js/internals/ie8-dom-define.js new file mode 100644 index 0000000000..6696ff9dd5 --- /dev/null +++ b/core-js/internals/ie8-dom-define.js @@ -0,0 +1,10 @@ +var DESCRIPTORS = require('../internals/descriptors'); +var fails = require('../internals/fails'); +var createElement = require('../internals/document-create-element'); + +// Thank's IE8 for his funny defineProperty +module.exports = !DESCRIPTORS && !fails(function () { + return Object.defineProperty(createElement('div'), 'a', { + get: function () { return 7; } + }).a != 7; +}); diff --git a/core-js/internals/indexed-object.js b/core-js/internals/indexed-object.js new file mode 100644 index 0000000000..2aa25b5efb --- /dev/null +++ b/core-js/internals/indexed-object.js @@ -0,0 +1,13 @@ +var fails = require('../internals/fails'); +var classof = require('../internals/classof-raw'); + +var split = ''.split; + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +module.exports = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins + return !Object('z').propertyIsEnumerable(0); +}) ? function (it) { + return classof(it) == 'String' ? split.call(it, '') : Object(it); +} : Object; diff --git a/core-js/internals/inherit-if-required.js b/core-js/internals/inherit-if-required.js new file mode 100644 index 0000000000..a033b0c6a9 --- /dev/null +++ b/core-js/internals/inherit-if-required.js @@ -0,0 +1,17 @@ +var isObject = require('../internals/is-object'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); + +// makes subclassing work correct for wrapped built-ins +module.exports = function ($this, dummy, Wrapper) { + var NewTarget, NewTargetPrototype; + if ( + // it can work only with native `setPrototypeOf` + setPrototypeOf && + // we haven't completely correct pre-ES6 way for getting `new.target`, so use this + typeof (NewTarget = dummy.constructor) == 'function' && + NewTarget !== Wrapper && + isObject(NewTargetPrototype = NewTarget.prototype) && + NewTargetPrototype !== Wrapper.prototype + ) setPrototypeOf($this, NewTargetPrototype); + return $this; +}; diff --git a/core-js/internals/internal-metadata.js b/core-js/internals/internal-metadata.js new file mode 100644 index 0000000000..d70c48c3b0 --- /dev/null +++ b/core-js/internals/internal-metadata.js @@ -0,0 +1,61 @@ +var hiddenKeys = require('../internals/hidden-keys'); +var isObject = require('../internals/is-object'); +var has = require('../internals/has'); +var defineProperty = require('../internals/object-define-property').f; +var uid = require('../internals/uid'); +var FREEZING = require('../internals/freezing'); + +var METADATA = uid('meta'); +var id = 0; + +var isExtensible = Object.isExtensible || function () { + return true; +}; + +var setMetadata = function (it) { + defineProperty(it, METADATA, { value: { + objectID: 'O' + ++id, // object ID + weakData: {} // weak collections IDs + } }); +}; + +var fastKey = function (it, create) { + // return a primitive with prefix + if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!has(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMetadata(it); + // return object ID + } return it[METADATA].objectID; +}; + +var getWeakData = function (it, create) { + if (!has(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMetadata(it); + // return the store of weak collections IDs + } return it[METADATA].weakData; +}; + +// add metadata on freeze-family methods calling +var onFreeze = function (it) { + if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it); + return it; +}; + +var meta = module.exports = { + REQUIRED: false, + fastKey: fastKey, + getWeakData: getWeakData, + onFreeze: onFreeze +}; + +hiddenKeys[METADATA] = true; diff --git a/core-js/internals/internal-state.js b/core-js/internals/internal-state.js new file mode 100644 index 0000000000..9a401750b9 --- /dev/null +++ b/core-js/internals/internal-state.js @@ -0,0 +1,61 @@ +var NATIVE_WEAK_MAP = require('../internals/native-weak-map'); +var global = require('../internals/global'); +var isObject = require('../internals/is-object'); +var hide = require('../internals/hide'); +var objectHas = require('../internals/has'); +var sharedKey = require('../internals/shared-key'); +var hiddenKeys = require('../internals/hidden-keys'); + +var WeakMap = global.WeakMap; +var set, get, has; + +var enforce = function (it) { + return has(it) ? get(it) : set(it, {}); +}; + +var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; +}; + +if (NATIVE_WEAK_MAP) { + var store = new WeakMap(); + var wmget = store.get; + var wmhas = store.has; + var wmset = store.set; + set = function (it, metadata) { + wmset.call(store, it, metadata); + return metadata; + }; + get = function (it) { + return wmget.call(store, it) || {}; + }; + has = function (it) { + return wmhas.call(store, it); + }; +} else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + hide(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return objectHas(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return objectHas(it, STATE); + }; +} + +module.exports = { + set: set, + get: get, + has: has, + enforce: enforce, + getterFor: getterFor +}; diff --git a/core-js/internals/is-array-iterator-method.js b/core-js/internals/is-array-iterator-method.js new file mode 100644 index 0000000000..ab0ebe1ebf --- /dev/null +++ b/core-js/internals/is-array-iterator-method.js @@ -0,0 +1,10 @@ +var wellKnownSymbol = require('../internals/well-known-symbol'); +var Iterators = require('../internals/iterators'); + +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayPrototype = Array.prototype; + +// check on default Array iterator +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); +}; diff --git a/core-js/internals/is-array.js b/core-js/internals/is-array.js new file mode 100644 index 0000000000..757515da50 --- /dev/null +++ b/core-js/internals/is-array.js @@ -0,0 +1,7 @@ +var classof = require('../internals/classof-raw'); + +// `IsArray` abstract operation +// https://tc39.github.io/ecma262/#sec-isarray +module.exports = Array.isArray || function isArray(arg) { + return classof(arg) == 'Array'; +}; diff --git a/core-js/internals/is-forced.js b/core-js/internals/is-forced.js new file mode 100644 index 0000000000..cae014febe --- /dev/null +++ b/core-js/internals/is-forced.js @@ -0,0 +1,21 @@ +var fails = require('../internals/fails'); + +var replacement = /#|\.prototype\./; + +var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true + : value == NATIVE ? false + : typeof detection == 'function' ? fails(detection) + : !!detection; +}; + +var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); +}; + +var data = isForced.data = {}; +var NATIVE = isForced.NATIVE = 'N'; +var POLYFILL = isForced.POLYFILL = 'P'; + +module.exports = isForced; diff --git a/core-js/internals/is-integer.js b/core-js/internals/is-integer.js new file mode 100644 index 0000000000..df16086443 --- /dev/null +++ b/core-js/internals/is-integer.js @@ -0,0 +1,9 @@ +var isObject = require('../internals/is-object'); + +var floor = Math.floor; + +// `Number.isInteger` method implementation +// https://tc39.github.io/ecma262/#sec-number.isinteger +module.exports = function isInteger(it) { + return !isObject(it) && isFinite(it) && floor(it) === it; +}; diff --git a/core-js/internals/is-iterable.js b/core-js/internals/is-iterable.js new file mode 100644 index 0000000000..f33bb2df3f --- /dev/null +++ b/core-js/internals/is-iterable.js @@ -0,0 +1,13 @@ +var classof = require('../internals/classof'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var Iterators = require('../internals/iterators'); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = function (it) { + var O = Object(it); + return O[ITERATOR] !== undefined + || '@@iterator' in O + // eslint-disable-next-line no-prototype-builtins + || Iterators.hasOwnProperty(classof(O)); +}; diff --git a/core-js/internals/is-object.js b/core-js/internals/is-object.js new file mode 100644 index 0000000000..dda6e04d27 --- /dev/null +++ b/core-js/internals/is-object.js @@ -0,0 +1,3 @@ +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; diff --git a/core-js/internals/is-pure.js b/core-js/internals/is-pure.js new file mode 100644 index 0000000000..a5d30209bd --- /dev/null +++ b/core-js/internals/is-pure.js @@ -0,0 +1 @@ +module.exports = false; diff --git a/core-js/internals/is-regexp.js b/core-js/internals/is-regexp.js new file mode 100644 index 0000000000..e2c7247e04 --- /dev/null +++ b/core-js/internals/is-regexp.js @@ -0,0 +1,12 @@ +var isObject = require('../internals/is-object'); +var classof = require('../internals/classof-raw'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var MATCH = wellKnownSymbol('match'); + +// `IsRegExp` abstract operation +// https://tc39.github.io/ecma262/#sec-isregexp +module.exports = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp'); +}; diff --git a/core-js/internals/iterate.js b/core-js/internals/iterate.js new file mode 100644 index 0000000000..49ec4cb7db --- /dev/null +++ b/core-js/internals/iterate.js @@ -0,0 +1,42 @@ +var anObject = require('../internals/an-object'); +var isArrayIteratorMethod = require('../internals/is-array-iterator-method'); +var toLength = require('../internals/to-length'); +var bind = require('../internals/bind-context'); +var getIteratorMethod = require('../internals/get-iterator-method'); +var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing'); + +var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; +}; + +var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { + var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1); + var iterator, iterFn, index, length, result, step; + + if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod(iterable); + if (typeof iterFn != 'function') throw TypeError('Target is not iterable'); + // optimisation for array iterators + if (isArrayIteratorMethod(iterFn)) { + for (index = 0, length = toLength(iterable.length); length > index; index++) { + result = AS_ENTRIES + ? boundFunction(anObject(step = iterable[index])[0], step[1]) + : boundFunction(iterable[index]); + if (result && result instanceof Result) return result; + } return new Result(false); + } + iterator = iterFn.call(iterable); + } + + while (!(step = iterator.next()).done) { + result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES); + if (result && result instanceof Result) return result; + } return new Result(false); +}; + +iterate.stop = function (result) { + return new Result(true, result); +}; diff --git a/core-js/internals/iterators-core.js b/core-js/internals/iterators-core.js new file mode 100644 index 0000000000..bdc5e53e1e --- /dev/null +++ b/core-js/internals/iterators-core.js @@ -0,0 +1,35 @@ +'use strict'; +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var hide = require('../internals/hide'); +var has = require('../internals/has'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var IS_PURE = require('../internals/is-pure'); + +var ITERATOR = wellKnownSymbol('iterator'); +var BUGGY_SAFARI_ITERATORS = false; + +var returnThis = function () { return this; }; + +// `%IteratorPrototype%` object +// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object +var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + +if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } +} + +if (IteratorPrototype == undefined) IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis); + +module.exports = { + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS +}; diff --git a/core-js/internals/iterators.js b/core-js/internals/iterators.js new file mode 100644 index 0000000000..f053ebf797 --- /dev/null +++ b/core-js/internals/iterators.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/core-js/internals/math-expm1.js b/core-js/internals/math-expm1.js new file mode 100644 index 0000000000..3a14c07311 --- /dev/null +++ b/core-js/internals/math-expm1.js @@ -0,0 +1,13 @@ +var nativeExpm1 = Math.expm1; +var exp = Math.exp; + +// `Math.expm1` method implementation +// https://tc39.github.io/ecma262/#sec-math.expm1 +module.exports = (!nativeExpm1 + // Old FF bug + || nativeExpm1(10) > 22025.465794806719 || nativeExpm1(10) < 22025.4657948067165168 + // Tor Browser bug + || nativeExpm1(-2e-17) != -2e-17 +) ? function expm1(x) { + return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp(x) - 1; +} : nativeExpm1; diff --git a/core-js/internals/math-fround.js b/core-js/internals/math-fround.js new file mode 100644 index 0000000000..0642e3121c --- /dev/null +++ b/core-js/internals/math-fround.js @@ -0,0 +1,26 @@ +var sign = require('../internals/math-sign'); + +var abs = Math.abs; +var pow = Math.pow; +var EPSILON = pow(2, -52); +var EPSILON32 = pow(2, -23); +var MAX32 = pow(2, 127) * (2 - EPSILON32); +var MIN32 = pow(2, -126); + +var roundTiesToEven = function (n) { + return n + 1 / EPSILON - 1 / EPSILON; +}; + +// `Math.fround` method implementation +// https://tc39.github.io/ecma262/#sec-math.fround +module.exports = Math.fround || function fround(x) { + var $abs = abs(x); + var $sign = sign(x); + var a, result; + if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; + a = (1 + EPSILON32 / EPSILON) * $abs; + result = a - (a - $abs); + // eslint-disable-next-line no-self-compare + if (result > MAX32 || result != result) return $sign * Infinity; + return $sign * result; +}; diff --git a/core-js/internals/math-log1p.js b/core-js/internals/math-log1p.js new file mode 100644 index 0000000000..3d2545c6c4 --- /dev/null +++ b/core-js/internals/math-log1p.js @@ -0,0 +1,7 @@ +var log = Math.log; + +// `Math.log1p` method implementation +// https://tc39.github.io/ecma262/#sec-math.log1p +module.exports = Math.log1p || function log1p(x) { + return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log(1 + x); +}; diff --git a/core-js/internals/math-scale.js b/core-js/internals/math-scale.js new file mode 100644 index 0000000000..59288629e4 --- /dev/null +++ b/core-js/internals/math-scale.js @@ -0,0 +1,16 @@ +// `Math.scale` method implementation +// https://rwaldron.github.io/proposal-math-extensions/ +module.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) { + if ( + arguments.length === 0 + /* eslint-disable no-self-compare */ + || x != x + || inLow != inLow + || inHigh != inHigh + || outLow != outLow + || outHigh != outHigh + /* eslint-enable no-self-compare */ + ) return NaN; + if (x === Infinity || x === -Infinity) return x; + return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow; +}; diff --git a/core-js/internals/math-sign.js b/core-js/internals/math-sign.js new file mode 100644 index 0000000000..9260696338 --- /dev/null +++ b/core-js/internals/math-sign.js @@ -0,0 +1,6 @@ +// `Math.sign` method implementation +// https://tc39.github.io/ecma262/#sec-math.sign +module.exports = Math.sign || function sign(x) { + // eslint-disable-next-line no-self-compare + return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; +}; diff --git a/core-js/internals/microtask.js b/core-js/internals/microtask.js new file mode 100644 index 0000000000..849fb952a0 --- /dev/null +++ b/core-js/internals/microtask.js @@ -0,0 +1,78 @@ +var global = require('../internals/global'); +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; +var classof = require('../internals/classof-raw'); +var macrotask = require('../internals/task').set; +var userAgent = require('../internals/user-agent'); + +var MutationObserver = global.MutationObserver || global.WebKitMutationObserver; +var process = global.process; +var Promise = global.Promise; +var IS_NODE = classof(process) == 'process'; +// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` +var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask'); +var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; + +var flush, head, last, notify, toggle, node, promise, then; + +// modern engines have queueMicrotask method +if (!queueMicrotask) { + flush = function () { + var parent, fn; + if (IS_NODE && (parent = process.domain)) parent.exit(); + while (head) { + fn = head.fn; + head = head.next; + try { + fn(); + } catch (error) { + if (head) notify(); + else last = undefined; + throw error; + } + } last = undefined; + if (parent) parent.enter(); + }; + + // Node.js + if (IS_NODE) { + notify = function () { + process.nextTick(flush); + }; + // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 + } else if (MutationObserver && !/(iphone|ipod|ipad).*applewebkit/i.test(userAgent)) { + toggle = true; + node = document.createTextNode(''); + new MutationObserver(flush).observe(node, { characterData: true }); // eslint-disable-line no-new + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (Promise && Promise.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + promise = Promise.resolve(undefined); + then = promise.then; + notify = function () { + then.call(promise, flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessag + // - onreadystatechange + // - setTimeout + } else { + notify = function () { + // strange IE + webpack dev server bug - use .call(global) + macrotask.call(global, flush); + }; + } +} + +module.exports = queueMicrotask || function (fn) { + var task = { fn: fn, next: undefined }; + if (last) last.next = task; + if (!head) { + head = task; + notify(); + } last = task; +}; diff --git a/core-js/internals/native-promise-constructor.js b/core-js/internals/native-promise-constructor.js new file mode 100644 index 0000000000..dae3822430 --- /dev/null +++ b/core-js/internals/native-promise-constructor.js @@ -0,0 +1,3 @@ +var global = require('../internals/global'); + +module.exports = global.Promise; diff --git a/core-js/internals/native-symbol.js b/core-js/internals/native-symbol.js new file mode 100644 index 0000000000..bb22d6cfcc --- /dev/null +++ b/core-js/internals/native-symbol.js @@ -0,0 +1,7 @@ +var fails = require('../internals/fails'); + +module.exports = !!Object.getOwnPropertySymbols && !fails(function () { + // Chrome 38 Symbol has incorrect toString conversion + // eslint-disable-next-line no-undef + return !String(Symbol()); +}); diff --git a/core-js/internals/native-url.js b/core-js/internals/native-url.js new file mode 100644 index 0000000000..ce353aa726 --- /dev/null +++ b/core-js/internals/native-url.js @@ -0,0 +1,24 @@ +var fails = require('../internals/fails'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var IS_PURE = require('../internals/is-pure'); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = !fails(function () { + var url = new URL('b?e=1', 'http://a'); + var searchParams = url.searchParams; + url.pathname = 'c%20d'; + return (IS_PURE && !url.toJSON) + || !searchParams.sort + || url.href !== 'http://a/c%20d?e=1' + || searchParams.get('e') !== '1' + || String(new URLSearchParams('?a=1')) !== 'a=1' + || !searchParams[ITERATOR] + // throws in Edge + || new URL('https://a@b').username !== 'a' + || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' + // not punycoded in Edge + || new URL('http://тест').host !== 'xn--e1aybc' + // not escaped in Chrome 62- + || new URL('http://a#б').hash !== '#%D0%B1'; +}); diff --git a/core-js/internals/native-weak-map.js b/core-js/internals/native-weak-map.js new file mode 100644 index 0000000000..bc7af5f002 --- /dev/null +++ b/core-js/internals/native-weak-map.js @@ -0,0 +1,6 @@ +var global = require('../internals/global'); +var nativeFunctionToString = require('../internals/function-to-string'); + +var WeakMap = global.WeakMap; + +module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap)); diff --git a/core-js/internals/new-promise-capability.js b/core-js/internals/new-promise-capability.js new file mode 100644 index 0000000000..394edc9780 --- /dev/null +++ b/core-js/internals/new-promise-capability.js @@ -0,0 +1,18 @@ +'use strict'; +var aFunction = require('../internals/a-function'); + +var PromiseCapability = function (C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aFunction(resolve); + this.reject = aFunction(reject); +}; + +// 25.4.1.5 NewPromiseCapability(C) +module.exports.f = function (C) { + return new PromiseCapability(C); +}; diff --git a/core-js/internals/not-a-regexp.js b/core-js/internals/not-a-regexp.js new file mode 100644 index 0000000000..7bb4e9c7aa --- /dev/null +++ b/core-js/internals/not-a-regexp.js @@ -0,0 +1,7 @@ +var isRegExp = require('../internals/is-regexp'); + +module.exports = function (it) { + if (isRegExp(it)) { + throw TypeError("The method doesn't accept regular expressions"); + } return it; +}; diff --git a/core-js/internals/number-is-finite.js b/core-js/internals/number-is-finite.js new file mode 100644 index 0000000000..4b26c4a8c7 --- /dev/null +++ b/core-js/internals/number-is-finite.js @@ -0,0 +1,9 @@ +var global = require('../internals/global'); + +var globalIsFinite = global.isFinite; + +// `Number.isFinite` method +// https://tc39.github.io/ecma262/#sec-number.isfinite +module.exports = Number.isFinite || function isFinite(it) { + return typeof it == 'number' && globalIsFinite(it); +}; diff --git a/core-js/internals/object-assign.js b/core-js/internals/object-assign.js new file mode 100644 index 0000000000..559fac94d0 --- /dev/null +++ b/core-js/internals/object-assign.js @@ -0,0 +1,41 @@ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var fails = require('../internals/fails'); +var objectKeys = require('../internals/object-keys'); +var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols'); +var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable'); +var toObject = require('../internals/to-object'); +var IndexedObject = require('../internals/indexed-object'); + +var nativeAssign = Object.assign; + +// `Object.assign` method +// https://tc39.github.io/ecma262/#sec-object.assign +// should work with symbols and should have deterministic property order (V8 bug) +module.exports = !nativeAssign || fails(function () { + var A = {}; + var B = {}; + // eslint-disable-next-line no-undef + var symbol = Symbol(); + var alphabet = 'abcdefghijklmnopqrst'; + A[symbol] = 7; + alphabet.split('').forEach(function (chr) { B[chr] = chr; }); + return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet; +}) ? function assign(target, source) { // eslint-disable-line no-unused-vars + var T = toObject(target); + var argumentsLength = arguments.length; + var index = 1; + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + var propertyIsEnumerable = propertyIsEnumerableModule.f; + while (argumentsLength > index) { + var S = IndexedObject(arguments[index++]); + var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key]; + } + } return T; +} : nativeAssign; diff --git a/core-js/internals/object-create.js b/core-js/internals/object-create.js new file mode 100644 index 0000000000..fff1c22470 --- /dev/null +++ b/core-js/internals/object-create.js @@ -0,0 +1,49 @@ +var anObject = require('../internals/an-object'); +var defineProperties = require('../internals/object-define-properties'); +var enumBugKeys = require('../internals/enum-bug-keys'); +var hiddenKeys = require('../internals/hidden-keys'); +var html = require('../internals/html'); +var documentCreateElement = require('../internals/document-create-element'); +var sharedKey = require('../internals/shared-key'); +var IE_PROTO = sharedKey('IE_PROTO'); + +var PROTOTYPE = 'prototype'; +var Empty = function () { /* empty */ }; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement('iframe'); + var length = enumBugKeys.length; + var lt = '<'; + var script = 'script'; + var gt = '>'; + var js = 'java' + script + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + iframe.src = String(js); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]]; + return createDict(); +}; + +// `Object.create` method +// https://tc39.github.io/ecma262/#sec-object.create +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : defineProperties(result, Properties); +}; + +hiddenKeys[IE_PROTO] = true; diff --git a/core-js/internals/object-define-properties.js b/core-js/internals/object-define-properties.js new file mode 100644 index 0000000000..c2b53399d9 --- /dev/null +++ b/core-js/internals/object-define-properties.js @@ -0,0 +1,16 @@ +var DESCRIPTORS = require('../internals/descriptors'); +var definePropertyModule = require('../internals/object-define-property'); +var anObject = require('../internals/an-object'); +var objectKeys = require('../internals/object-keys'); + +// `Object.defineProperties` method +// https://tc39.github.io/ecma262/#sec-object.defineproperties +module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = objectKeys(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]); + return O; +}; diff --git a/core-js/internals/object-define-property.js b/core-js/internals/object-define-property.js new file mode 100644 index 0000000000..375f20fb48 --- /dev/null +++ b/core-js/internals/object-define-property.js @@ -0,0 +1,20 @@ +var DESCRIPTORS = require('../internals/descriptors'); +var IE8_DOM_DEFINE = require('../internals/ie8-dom-define'); +var anObject = require('../internals/an-object'); +var toPrimitive = require('../internals/to-primitive'); + +var nativeDefineProperty = Object.defineProperty; + +// `Object.defineProperty` method +// https://tc39.github.io/ecma262/#sec-object.defineproperty +exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return nativeDefineProperty(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; diff --git a/core-js/internals/object-get-own-property-descriptor.js b/core-js/internals/object-get-own-property-descriptor.js new file mode 100644 index 0000000000..acdae01787 --- /dev/null +++ b/core-js/internals/object-get-own-property-descriptor.js @@ -0,0 +1,20 @@ +var DESCRIPTORS = require('../internals/descriptors'); +var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); +var toIndexedObject = require('../internals/to-indexed-object'); +var toPrimitive = require('../internals/to-primitive'); +var has = require('../internals/has'); +var IE8_DOM_DEFINE = require('../internals/ie8-dom-define'); + +var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// `Object.getOwnPropertyDescriptor` method +// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor +exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPrimitive(P, true); + if (IE8_DOM_DEFINE) try { + return nativeGetOwnPropertyDescriptor(O, P); + } catch (error) { /* empty */ } + if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); +}; diff --git a/core-js/internals/object-get-own-property-names-external.js b/core-js/internals/object-get-own-property-names-external.js new file mode 100644 index 0000000000..dfd94f1b67 --- /dev/null +++ b/core-js/internals/object-get-own-property-names-external.js @@ -0,0 +1,22 @@ +var toIndexedObject = require('../internals/to-indexed-object'); +var nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f; + +var toString = {}.toString; + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function (it) { + try { + return nativeGetOwnPropertyNames(it); + } catch (error) { + return windowNames.slice(); + } +}; + +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && toString.call(it) == '[object Window]' + ? getWindowNames(it) + : nativeGetOwnPropertyNames(toIndexedObject(it)); +}; diff --git a/core-js/internals/object-get-own-property-names.js b/core-js/internals/object-get-own-property-names.js new file mode 100644 index 0000000000..f1b1be6ce6 --- /dev/null +++ b/core-js/internals/object-get-own-property-names.js @@ -0,0 +1,10 @@ +var internalObjectKeys = require('../internals/object-keys-internal'); +var enumBugKeys = require('../internals/enum-bug-keys'); + +var hiddenKeys = enumBugKeys.concat('length', 'prototype'); + +// `Object.getOwnPropertyNames` method +// https://tc39.github.io/ecma262/#sec-object.getownpropertynames +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); +}; diff --git a/core-js/internals/object-get-own-property-symbols.js b/core-js/internals/object-get-own-property-symbols.js new file mode 100644 index 0000000000..bc06729056 --- /dev/null +++ b/core-js/internals/object-get-own-property-symbols.js @@ -0,0 +1 @@ +exports.f = Object.getOwnPropertySymbols; diff --git a/core-js/internals/object-get-prototype-of.js b/core-js/internals/object-get-prototype-of.js new file mode 100644 index 0000000000..c0bb726b80 --- /dev/null +++ b/core-js/internals/object-get-prototype-of.js @@ -0,0 +1,17 @@ +var has = require('../internals/has'); +var toObject = require('../internals/to-object'); +var sharedKey = require('../internals/shared-key'); +var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter'); + +var IE_PROTO = sharedKey('IE_PROTO'); +var ObjectPrototype = Object.prototype; + +// `Object.getPrototypeOf` method +// https://tc39.github.io/ecma262/#sec-object.getprototypeof +module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { + O = toObject(O); + if (has(O, IE_PROTO)) return O[IE_PROTO]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectPrototype : null; +}; diff --git a/core-js/internals/object-keys-internal.js b/core-js/internals/object-keys-internal.js new file mode 100644 index 0000000000..40b4c987b4 --- /dev/null +++ b/core-js/internals/object-keys-internal.js @@ -0,0 +1,17 @@ +var has = require('../internals/has'); +var toIndexedObject = require('../internals/to-indexed-object'); +var indexOf = require('../internals/array-includes').indexOf; +var hiddenKeys = require('../internals/hidden-keys'); + +module.exports = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~indexOf(result, key) || result.push(key); + } + return result; +}; diff --git a/core-js/internals/object-keys.js b/core-js/internals/object-keys.js new file mode 100644 index 0000000000..7188505dc5 --- /dev/null +++ b/core-js/internals/object-keys.js @@ -0,0 +1,8 @@ +var internalObjectKeys = require('../internals/object-keys-internal'); +var enumBugKeys = require('../internals/enum-bug-keys'); + +// `Object.keys` method +// https://tc39.github.io/ecma262/#sec-object.keys +module.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); +}; diff --git a/core-js/internals/object-property-is-enumerable.js b/core-js/internals/object-property-is-enumerable.js new file mode 100644 index 0000000000..9ff2209679 --- /dev/null +++ b/core-js/internals/object-property-is-enumerable.js @@ -0,0 +1,13 @@ +'use strict'; +var nativePropertyIsEnumerable = {}.propertyIsEnumerable; +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Nashorn ~ JDK8 bug +var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); + +// `Object.prototype.propertyIsEnumerable` method implementation +// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable +exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; +} : nativePropertyIsEnumerable; diff --git a/core-js/internals/object-set-prototype-of.js b/core-js/internals/object-set-prototype-of.js new file mode 100644 index 0000000000..ce7e97ccf7 --- /dev/null +++ b/core-js/internals/object-set-prototype-of.js @@ -0,0 +1,24 @@ +var anObject = require('../internals/an-object'); +var aPossiblePrototype = require('../internals/a-possible-prototype'); + +// `Object.setPrototypeOf` method +// https://tc39.github.io/ecma262/#sec-object.setprototypeof +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ +module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; + setter.call(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + anObject(O); + aPossiblePrototype(proto); + if (CORRECT_SETTER) setter.call(O, proto); + else O.__proto__ = proto; + return O; + }; +}() : undefined); diff --git a/core-js/internals/object-to-array.js b/core-js/internals/object-to-array.js new file mode 100644 index 0000000000..8e2409df79 --- /dev/null +++ b/core-js/internals/object-to-array.js @@ -0,0 +1,32 @@ +var DESCRIPTORS = require('../internals/descriptors'); +var objectKeys = require('../internals/object-keys'); +var toIndexedObject = require('../internals/to-indexed-object'); +var propertyIsEnumerable = require('../internals/object-property-is-enumerable').f; + +// `Object.{ entries, values }` methods implementation +var createMethod = function (TO_ENTRIES) { + return function (it) { + var O = toIndexedObject(it); + var keys = objectKeys(O); + var length = keys.length; + var i = 0; + var result = []; + var key; + while (length > i) { + key = keys[i++]; + if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) { + result.push(TO_ENTRIES ? [key, O[key]] : O[key]); + } + } + return result; + }; +}; + +module.exports = { + // `Object.entries` method + // https://tc39.github.io/ecma262/#sec-object.entries + entries: createMethod(true), + // `Object.values` method + // https://tc39.github.io/ecma262/#sec-object.values + values: createMethod(false) +}; diff --git a/core-js/internals/object-to-string.js b/core-js/internals/object-to-string.js new file mode 100644 index 0000000000..a08766c771 --- /dev/null +++ b/core-js/internals/object-to-string.js @@ -0,0 +1,14 @@ +'use strict'; +var classof = require('../internals/classof'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var test = {}; + +test[TO_STRING_TAG] = 'z'; + +// `Object.prototype.toString` method implementation +// https://tc39.github.io/ecma262/#sec-object.prototype.tostring +module.exports = String(test) !== '[object z]' ? function toString() { + return '[object ' + classof(this) + ']'; +} : test.toString; diff --git a/core-js/internals/own-keys.js b/core-js/internals/own-keys.js new file mode 100644 index 0000000000..4c3d8b5fdb --- /dev/null +++ b/core-js/internals/own-keys.js @@ -0,0 +1,11 @@ +var getBuiltIn = require('../internals/get-built-in'); +var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names'); +var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols'); +var anObject = require('../internals/an-object'); + +// all object keys, includes non-enumerable and symbols +module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; +}; diff --git a/core-js/internals/parse-float.js b/core-js/internals/parse-float.js new file mode 100644 index 0000000000..1242a674fa --- /dev/null +++ b/core-js/internals/parse-float.js @@ -0,0 +1,14 @@ +var global = require('../internals/global'); +var trim = require('../internals/string-trim').trim; +var whitespaces = require('../internals/whitespaces'); + +var nativeParseFloat = global.parseFloat; +var FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity; + +// `parseFloat` method +// https://tc39.github.io/ecma262/#sec-parsefloat-string +module.exports = FORCED ? function parseFloat(string) { + var trimmedString = trim(String(string)); + var result = nativeParseFloat(trimmedString); + return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result; +} : nativeParseFloat; diff --git a/core-js/internals/parse-int.js b/core-js/internals/parse-int.js new file mode 100644 index 0000000000..a068efab87 --- /dev/null +++ b/core-js/internals/parse-int.js @@ -0,0 +1,14 @@ +var global = require('../internals/global'); +var trim = require('../internals/string-trim').trim; +var whitespaces = require('../internals/whitespaces'); + +var nativeParseInt = global.parseInt; +var hex = /^[+-]?0[Xx]/; +var FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22; + +// `parseInt` method +// https://tc39.github.io/ecma262/#sec-parseint-string-radix +module.exports = FORCED ? function parseInt(string, radix) { + var S = trim(String(string)); + return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10)); +} : nativeParseInt; diff --git a/core-js/internals/path.js b/core-js/internals/path.js new file mode 100644 index 0000000000..21d5120423 --- /dev/null +++ b/core-js/internals/path.js @@ -0,0 +1 @@ +module.exports = require('../internals/global'); diff --git a/core-js/internals/perform.js b/core-js/internals/perform.js new file mode 100644 index 0000000000..3cd8eef9c0 --- /dev/null +++ b/core-js/internals/perform.js @@ -0,0 +1,7 @@ +module.exports = function (exec) { + try { + return { error: false, value: exec() }; + } catch (error) { + return { error: true, value: error }; + } +}; diff --git a/core-js/internals/promise-resolve.js b/core-js/internals/promise-resolve.js new file mode 100644 index 0000000000..18e73e1c78 --- /dev/null +++ b/core-js/internals/promise-resolve.js @@ -0,0 +1,12 @@ +var anObject = require('../internals/an-object'); +var isObject = require('../internals/is-object'); +var newPromiseCapability = require('../internals/new-promise-capability'); + +module.exports = function (C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; +}; diff --git a/core-js/internals/punycode-to-ascii.js b/core-js/internals/punycode-to-ascii.js new file mode 100644 index 0000000000..436d39fe99 --- /dev/null +++ b/core-js/internals/punycode-to-ascii.js @@ -0,0 +1,168 @@ +'use strict'; +// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js +var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 +var base = 36; +var tMin = 1; +var tMax = 26; +var skew = 38; +var damp = 700; +var initialBias = 72; +var initialN = 128; // 0x80 +var delimiter = '-'; // '\x2D' +var regexNonASCII = /[^\0-\u007E]/; // non-ASCII chars +var regexSeparators = /[.\u3002\uFF0E\uFF61]/g; // RFC 3490 separators +var OVERFLOW_ERROR = 'Overflow: input needs wider integers to process'; +var baseMinusTMin = base - tMin; +var floor = Math.floor; +var stringFromCharCode = String.fromCharCode; + +/** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + */ +var ucs2decode = function (string) { + var output = []; + var counter = 0; + var length = string.length; + while (counter < length) { + var value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // It's a high surrogate, and there is a next character. + var extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // Low surrogate. + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // It's an unmatched surrogate; only append this code unit, in case the + // next code unit is the high surrogate of a surrogate pair. + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; +}; + +/** + * Converts a digit/integer into a basic code point. + */ +var digitToBasic = function (digit) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26); +}; + +/** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + */ +var adapt = function (delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); +}; + +/** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + */ +// eslint-disable-next-line max-statements +var encode = function (input) { + var output = []; + + // Convert the input in UCS-2 to an array of Unicode code points. + input = ucs2decode(input); + + // Cache the length. + var inputLength = input.length; + + // Initialize the state. + var n = initialN; + var delta = 0; + var bias = initialBias; + var i, currentValue; + + // Handle the basic code points. + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + var basicLength = output.length; // number of basic code points. + var handledCPCount = basicLength; // number of code points that have been handled; + + // Finish the basic string with a delimiter unless it's empty. + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + // All non-basic code points < n have been handled already. Find the next larger one: + var m = maxInt; + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , but guard against overflow. + var handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + throw RangeError(OVERFLOW_ERROR); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue < n && ++delta > maxInt) { + throw RangeError(OVERFLOW_ERROR); + } + if (currentValue == n) { + // Represent delta as a generalized variable-length integer. + var q = delta; + for (var k = base; /* no condition */; k += base) { + var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) break; + var qMinusT = q - t; + var baseMinusT = base - t; + output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT))); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + } + return output.join(''); +}; + +module.exports = function (input) { + var encoded = []; + var labels = input.toLowerCase().replace(regexSeparators, '\u002E').split('.'); + var i, label; + for (i = 0; i < labels.length; i++) { + label = labels[i]; + encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label); + } + return encoded.join('.'); +}; diff --git a/core-js/internals/redefine-all.js b/core-js/internals/redefine-all.js new file mode 100644 index 0000000000..3dc4477f65 --- /dev/null +++ b/core-js/internals/redefine-all.js @@ -0,0 +1,6 @@ +var redefine = require('../internals/redefine'); + +module.exports = function (target, src, options) { + for (var key in src) redefine(target, key, src[key], options); + return target; +}; diff --git a/core-js/internals/redefine.js b/core-js/internals/redefine.js new file mode 100644 index 0000000000..62f842a5e4 --- /dev/null +++ b/core-js/internals/redefine.js @@ -0,0 +1,39 @@ +var global = require('../internals/global'); +var shared = require('../internals/shared'); +var hide = require('../internals/hide'); +var has = require('../internals/has'); +var setGlobal = require('../internals/set-global'); +var nativeFunctionToString = require('../internals/function-to-string'); +var InternalStateModule = require('../internals/internal-state'); + +var getInternalState = InternalStateModule.get; +var enforceInternalState = InternalStateModule.enforce; +var TEMPLATE = String(nativeFunctionToString).split('toString'); + +shared('inspectSource', function (it) { + return nativeFunctionToString.call(it); +}); + +(module.exports = function (O, key, value, options) { + var unsafe = options ? !!options.unsafe : false; + var simple = options ? !!options.enumerable : false; + var noTargetGet = options ? !!options.noTargetGet : false; + if (typeof value == 'function') { + if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key); + enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); + } + if (O === global) { + if (simple) O[key] = value; + else setGlobal(key, value); + return; + } else if (!unsafe) { + delete O[key]; + } else if (!noTargetGet && O[key]) { + simple = true; + } + if (simple) O[key] = value; + else hide(O, key, value); +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +})(Function.prototype, 'toString', function toString() { + return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this); +}); diff --git a/core-js/internals/reflect-metadata.js b/core-js/internals/reflect-metadata.js new file mode 100644 index 0000000000..a8cd82f3b8 --- /dev/null +++ b/core-js/internals/reflect-metadata.js @@ -0,0 +1,55 @@ +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +var Map = require('../modules/es.map'); +var WeakMap = require('../modules/es.weak-map'); +var shared = require('../internals/shared'); + +var metadata = shared('metadata'); +var store = metadata.store || (metadata.store = new WeakMap()); + +var getOrCreateMetadataMap = function (target, targetKey, create) { + var targetMetadata = store.get(target); + if (!targetMetadata) { + if (!create) return; + store.set(target, targetMetadata = new Map()); + } + var keyMetadata = targetMetadata.get(targetKey); + if (!keyMetadata) { + if (!create) return; + targetMetadata.set(targetKey, keyMetadata = new Map()); + } return keyMetadata; +}; + +var ordinaryHasOwnMetadata = function (MetadataKey, O, P) { + var metadataMap = getOrCreateMetadataMap(O, P, false); + return metadataMap === undefined ? false : metadataMap.has(MetadataKey); +}; + +var ordinaryGetOwnMetadata = function (MetadataKey, O, P) { + var metadataMap = getOrCreateMetadataMap(O, P, false); + return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey); +}; + +var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) { + getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue); +}; + +var ordinaryOwnMetadataKeys = function (target, targetKey) { + var metadataMap = getOrCreateMetadataMap(target, targetKey, false); + var keys = []; + if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); }); + return keys; +}; + +var toMetadataKey = function (it) { + return it === undefined || typeof it == 'symbol' ? it : String(it); +}; + +module.exports = { + store: store, + getMap: getOrCreateMetadataMap, + has: ordinaryHasOwnMetadata, + get: ordinaryGetOwnMetadata, + set: ordinaryDefineOwnMetadata, + keys: ordinaryOwnMetadataKeys, + toKey: toMetadataKey +}; diff --git a/core-js/internals/regexp-exec-abstract.js b/core-js/internals/regexp-exec-abstract.js new file mode 100644 index 0000000000..496225f14a --- /dev/null +++ b/core-js/internals/regexp-exec-abstract.js @@ -0,0 +1,22 @@ +var classof = require('./classof-raw'); +var regexpExec = require('./regexp-exec'); + +// `RegExpExec` abstract operation +// https://tc39.github.io/ecma262/#sec-regexpexec +module.exports = function (R, S) { + var exec = R.exec; + if (typeof exec === 'function') { + var result = exec.call(R, S); + if (typeof result !== 'object') { + throw TypeError('RegExp exec method returned something other than an Object or null'); + } + return result; + } + + if (classof(R) !== 'RegExp') { + throw TypeError('RegExp#exec called on incompatible receiver'); + } + + return regexpExec.call(R, S); +}; + diff --git a/core-js/internals/regexp-exec.js b/core-js/internals/regexp-exec.js new file mode 100644 index 0000000000..7b9aa24daf --- /dev/null +++ b/core-js/internals/regexp-exec.js @@ -0,0 +1,54 @@ +'use strict'; +var regexpFlags = require('./regexp-flags'); + +var nativeExec = RegExp.prototype.exec; +// This always refers to the native implementation, because the +// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, +// which loads this file before patching the method. +var nativeReplace = String.prototype.replace; + +var patchedExec = nativeExec; + +var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/; + var re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1.lastIndex !== 0 || re2.lastIndex !== 0; +})(); + +// nonparticipating capturing group, copied from es5-shim's String#split patch. +var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + +var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; + +if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; + + match = nativeExec.call(re, str); + + if (UPDATES_LAST_INDEX_WRONG && match) { + re.lastIndex = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + nativeReplace.call(match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + return match; + }; +} + +module.exports = patchedExec; diff --git a/core-js/internals/regexp-flags.js b/core-js/internals/regexp-flags.js new file mode 100644 index 0000000000..c77927b023 --- /dev/null +++ b/core-js/internals/regexp-flags.js @@ -0,0 +1,16 @@ +'use strict'; +var anObject = require('../internals/an-object'); + +// `RegExp.prototype.flags` getter implementation +// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.dotAll) result += 's'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; +}; diff --git a/core-js/internals/require-object-coercible.js b/core-js/internals/require-object-coercible.js new file mode 100644 index 0000000000..f7b2662731 --- /dev/null +++ b/core-js/internals/require-object-coercible.js @@ -0,0 +1,6 @@ +// `RequireObjectCoercible` abstract operation +// https://tc39.github.io/ecma262/#sec-requireobjectcoercible +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; diff --git a/core-js/internals/same-value-zero.js b/core-js/internals/same-value-zero.js new file mode 100644 index 0000000000..452f23083c --- /dev/null +++ b/core-js/internals/same-value-zero.js @@ -0,0 +1,6 @@ +// `SameValueZero` abstract operation +// https://tc39.github.io/ecma262/#sec-samevaluezero +module.exports = function (x, y) { + // eslint-disable-next-line no-self-compare + return x === y || x != x && y != y; +}; diff --git a/core-js/internals/same-value.js b/core-js/internals/same-value.js new file mode 100644 index 0000000000..4661f85a29 --- /dev/null +++ b/core-js/internals/same-value.js @@ -0,0 +1,6 @@ +// `SameValue` abstract operation +// https://tc39.github.io/ecma262/#sec-samevalue +module.exports = Object.is || function is(x, y) { + // eslint-disable-next-line no-self-compare + return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; +}; diff --git a/core-js/internals/set-global.js b/core-js/internals/set-global.js new file mode 100644 index 0000000000..6ebbe5db60 --- /dev/null +++ b/core-js/internals/set-global.js @@ -0,0 +1,10 @@ +var global = require('../internals/global'); +var hide = require('../internals/hide'); + +module.exports = function (key, value) { + try { + hide(global, key, value); + } catch (error) { + global[key] = value; + } return value; +}; diff --git a/core-js/internals/set-species.js b/core-js/internals/set-species.js new file mode 100644 index 0000000000..6be87f7280 --- /dev/null +++ b/core-js/internals/set-species.js @@ -0,0 +1,19 @@ +'use strict'; +var getBuiltIn = require('../internals/get-built-in'); +var definePropertyModule = require('../internals/object-define-property'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var DESCRIPTORS = require('../internals/descriptors'); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn(CONSTRUCTOR_NAME); + var defineProperty = definePropertyModule.f; + + if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { + defineProperty(Constructor, SPECIES, { + configurable: true, + get: function () { return this; } + }); + } +}; diff --git a/core-js/internals/set-to-string-tag.js b/core-js/internals/set-to-string-tag.js new file mode 100644 index 0000000000..4f497664ae --- /dev/null +++ b/core-js/internals/set-to-string-tag.js @@ -0,0 +1,11 @@ +var defineProperty = require('../internals/object-define-property').f; +var has = require('../internals/has'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +module.exports = function (it, TAG, STATIC) { + if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { + defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); + } +}; diff --git a/core-js/internals/shared-key.js b/core-js/internals/shared-key.js new file mode 100644 index 0000000000..35bc403d29 --- /dev/null +++ b/core-js/internals/shared-key.js @@ -0,0 +1,8 @@ +var shared = require('../internals/shared'); +var uid = require('../internals/uid'); + +var keys = shared('keys'); + +module.exports = function (key) { + return keys[key] || (keys[key] = uid(key)); +}; diff --git a/core-js/internals/shared.js b/core-js/internals/shared.js new file mode 100644 index 0000000000..2417549c3d --- /dev/null +++ b/core-js/internals/shared.js @@ -0,0 +1,14 @@ +var global = require('../internals/global'); +var setGlobal = require('../internals/set-global'); +var IS_PURE = require('../internals/is-pure'); + +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || setGlobal(SHARED, {}); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: '3.2.1', + mode: IS_PURE ? 'pure' : 'global', + copyright: '© 2019 Denis Pushkarev (zloirock.ru)' +}); diff --git a/core-js/internals/sloppy-array-method.js b/core-js/internals/sloppy-array-method.js new file mode 100644 index 0000000000..8ec998384a --- /dev/null +++ b/core-js/internals/sloppy-array-method.js @@ -0,0 +1,10 @@ +'use strict'; +var fails = require('../internals/fails'); + +module.exports = function (METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !method || !fails(function () { + // eslint-disable-next-line no-useless-call,no-throw-literal + method.call(null, argument || function () { throw 1; }, 1); + }); +}; diff --git a/core-js/internals/species-constructor.js b/core-js/internals/species-constructor.js new file mode 100644 index 0000000000..4d8f565746 --- /dev/null +++ b/core-js/internals/species-constructor.js @@ -0,0 +1,13 @@ +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var SPECIES = wellKnownSymbol('species'); + +// `SpeciesConstructor` abstract operation +// https://tc39.github.io/ecma262/#sec-speciesconstructor +module.exports = function (O, defaultConstructor) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S); +}; diff --git a/core-js/internals/string-multibyte.js b/core-js/internals/string-multibyte.js new file mode 100644 index 0000000000..c0cf086294 --- /dev/null +++ b/core-js/internals/string-multibyte.js @@ -0,0 +1,27 @@ +var toInteger = require('../internals/to-integer'); +var requireObjectCoercible = require('../internals/require-object-coercible'); + +// `String.prototype.{ codePointAt, at }` methods implementation +var createMethod = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = String(requireObjectCoercible($this)); + var position = toInteger(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = S.charCodeAt(position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING ? S.charAt(position) : first + : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; +}; + +module.exports = { + // `String.prototype.codePointAt` method + // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod(true) +}; diff --git a/core-js/internals/string-pad.js b/core-js/internals/string-pad.js new file mode 100644 index 0000000000..c03090e08b --- /dev/null +++ b/core-js/internals/string-pad.js @@ -0,0 +1,31 @@ +// https://github.com/tc39/proposal-string-pad-start-end +var toLength = require('../internals/to-length'); +var repeat = require('../internals/string-repeat'); +var requireObjectCoercible = require('../internals/require-object-coercible'); + +var ceil = Math.ceil; + +// `String.prototype.{ padStart, padEnd }` methods implementation +var createMethod = function (IS_END) { + return function ($this, maxLength, fillString) { + var S = String(requireObjectCoercible($this)); + var stringLength = S.length; + var fillStr = fillString === undefined ? ' ' : String(fillString); + var intMaxLength = toLength(maxLength); + var fillLen, stringFiller; + if (intMaxLength <= stringLength || fillStr == '') return S; + fillLen = intMaxLength - stringLength; + stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length)); + if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen); + return IS_END ? S + stringFiller : stringFiller + S; + }; +}; + +module.exports = { + // `String.prototype.padStart` method + // https://tc39.github.io/ecma262/#sec-string.prototype.padstart + start: createMethod(false), + // `String.prototype.padEnd` method + // https://tc39.github.io/ecma262/#sec-string.prototype.padend + end: createMethod(true) +}; diff --git a/core-js/internals/string-repeat.js b/core-js/internals/string-repeat.js new file mode 100644 index 0000000000..ab872b2fee --- /dev/null +++ b/core-js/internals/string-repeat.js @@ -0,0 +1,14 @@ +'use strict'; +var toInteger = require('../internals/to-integer'); +var requireObjectCoercible = require('../internals/require-object-coercible'); + +// `String.prototype.repeat` method implementation +// https://tc39.github.io/ecma262/#sec-string.prototype.repeat +module.exports = ''.repeat || function repeat(count) { + var str = String(requireObjectCoercible(this)); + var result = ''; + var n = toInteger(count); + if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions'); + for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str; + return result; +}; diff --git a/core-js/internals/string-trim.js b/core-js/internals/string-trim.js new file mode 100644 index 0000000000..294a32c8f4 --- /dev/null +++ b/core-js/internals/string-trim.js @@ -0,0 +1,28 @@ +var requireObjectCoercible = require('../internals/require-object-coercible'); +var whitespaces = require('../internals/whitespaces'); + +var whitespace = '[' + whitespaces + ']'; +var ltrim = RegExp('^' + whitespace + whitespace + '*'); +var rtrim = RegExp(whitespace + whitespace + '*$'); + +// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation +var createMethod = function (TYPE) { + return function ($this) { + var string = String(requireObjectCoercible($this)); + if (TYPE & 1) string = string.replace(ltrim, ''); + if (TYPE & 2) string = string.replace(rtrim, ''); + return string; + }; +}; + +module.exports = { + // `String.prototype.{ trimLeft, trimStart }` methods + // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart + start: createMethod(1), + // `String.prototype.{ trimRight, trimEnd }` methods + // https://tc39.github.io/ecma262/#sec-string.prototype.trimend + end: createMethod(2), + // `String.prototype.trim` method + // https://tc39.github.io/ecma262/#sec-string.prototype.trim + trim: createMethod(3) +}; diff --git a/core-js/internals/task.js b/core-js/internals/task.js new file mode 100644 index 0000000000..7ea4fc4a7b --- /dev/null +++ b/core-js/internals/task.js @@ -0,0 +1,99 @@ +var global = require('../internals/global'); +var fails = require('../internals/fails'); +var classof = require('../internals/classof-raw'); +var bind = require('../internals/bind-context'); +var html = require('../internals/html'); +var createElement = require('../internals/document-create-element'); + +var location = global.location; +var set = global.setImmediate; +var clear = global.clearImmediate; +var process = global.process; +var MessageChannel = global.MessageChannel; +var Dispatch = global.Dispatch; +var counter = 0; +var queue = {}; +var ONREADYSTATECHANGE = 'onreadystatechange'; +var defer, channel, port; + +var run = function (id) { + // eslint-disable-next-line no-prototype-builtins + if (queue.hasOwnProperty(id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; + +var runner = function (id) { + return function () { + run(id); + }; +}; + +var listener = function (event) { + run(event.data); +}; + +var post = function (id) { + // old engines have not location.origin + global.postMessage(id + '', location.protocol + '//' + location.host); +}; + +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if (!set || !clear) { + set = function setImmediate(fn) { + var args = []; + var i = 1; + while (arguments.length > i) args.push(arguments[i++]); + queue[++counter] = function () { + // eslint-disable-next-line no-new-func + (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args); + }; + defer(counter); + return counter; + }; + clear = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (classof(process) == 'process') { + defer = function (id) { + process.nextTick(runner(id)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(runner(id)); + }; + // Browsers with MessageChannel, includes WebWorkers + } else if (MessageChannel) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = listener; + defer = bind(port.postMessage, port, 1); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post)) { + defer = post; + global.addEventListener('message', listener, false); + // IE8- + } else if (ONREADYSTATECHANGE in createElement('script')) { + defer = function (id) { + html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(runner(id), 0); + }; + } +} + +module.exports = { + set: set, + clear: clear +}; diff --git a/core-js/internals/this-number-value.js b/core-js/internals/this-number-value.js new file mode 100644 index 0000000000..7734b329e0 --- /dev/null +++ b/core-js/internals/this-number-value.js @@ -0,0 +1,10 @@ +var classof = require('../internals/classof-raw'); + +// `thisNumberValue` abstract operation +// https://tc39.github.io/ecma262/#sec-thisnumbervalue +module.exports = function (value) { + if (typeof value != 'number' && classof(value) != 'Number') { + throw TypeError('Incorrect invocation'); + } + return +value; +}; diff --git a/core-js/internals/to-absolute-index.js b/core-js/internals/to-absolute-index.js new file mode 100644 index 0000000000..34c837cd4b --- /dev/null +++ b/core-js/internals/to-absolute-index.js @@ -0,0 +1,12 @@ +var toInteger = require('../internals/to-integer'); + +var max = Math.max; +var min = Math.min; + +// Helper for a popular repeating case of the spec: +// Let integer be ? ToInteger(index). +// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length). +module.exports = function (index, length) { + var integer = toInteger(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); +}; diff --git a/core-js/internals/to-index.js b/core-js/internals/to-index.js new file mode 100644 index 0000000000..004a3a22eb --- /dev/null +++ b/core-js/internals/to-index.js @@ -0,0 +1,12 @@ +var toInteger = require('../internals/to-integer'); +var toLength = require('../internals/to-length'); + +// `ToIndex` abstract operation +// https://tc39.github.io/ecma262/#sec-toindex +module.exports = function (it) { + if (it === undefined) return 0; + var number = toInteger(it); + var length = toLength(number); + if (number !== length) throw RangeError('Wrong length or index'); + return length; +}; diff --git a/core-js/internals/to-indexed-object.js b/core-js/internals/to-indexed-object.js new file mode 100644 index 0000000000..98f0799255 --- /dev/null +++ b/core-js/internals/to-indexed-object.js @@ -0,0 +1,7 @@ +// toObject with fallback for non-array-like ES3 strings +var IndexedObject = require('../internals/indexed-object'); +var requireObjectCoercible = require('../internals/require-object-coercible'); + +module.exports = function (it) { + return IndexedObject(requireObjectCoercible(it)); +}; diff --git a/core-js/internals/to-integer.js b/core-js/internals/to-integer.js new file mode 100644 index 0000000000..f7c63906f8 --- /dev/null +++ b/core-js/internals/to-integer.js @@ -0,0 +1,8 @@ +var ceil = Math.ceil; +var floor = Math.floor; + +// `ToInteger` abstract operation +// https://tc39.github.io/ecma262/#sec-tointeger +module.exports = function (argument) { + return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); +}; diff --git a/core-js/internals/to-length.js b/core-js/internals/to-length.js new file mode 100644 index 0000000000..fbc2a49ea6 --- /dev/null +++ b/core-js/internals/to-length.js @@ -0,0 +1,9 @@ +var toInteger = require('../internals/to-integer'); + +var min = Math.min; + +// `ToLength` abstract operation +// https://tc39.github.io/ecma262/#sec-tolength +module.exports = function (argument) { + return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 +}; diff --git a/core-js/internals/to-object.js b/core-js/internals/to-object.js new file mode 100644 index 0000000000..fd635e2568 --- /dev/null +++ b/core-js/internals/to-object.js @@ -0,0 +1,7 @@ +var requireObjectCoercible = require('../internals/require-object-coercible'); + +// `ToObject` abstract operation +// https://tc39.github.io/ecma262/#sec-toobject +module.exports = function (argument) { + return Object(requireObjectCoercible(argument)); +}; diff --git a/core-js/internals/to-offset.js b/core-js/internals/to-offset.js new file mode 100644 index 0000000000..9f3e5f23ab --- /dev/null +++ b/core-js/internals/to-offset.js @@ -0,0 +1,7 @@ +var toInteger = require('../internals/to-integer'); + +module.exports = function (it, BYTES) { + var offset = toInteger(it); + if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset'); + return offset; +}; diff --git a/core-js/internals/to-primitive.js b/core-js/internals/to-primitive.js new file mode 100644 index 0000000000..00a4031417 --- /dev/null +++ b/core-js/internals/to-primitive.js @@ -0,0 +1,14 @@ +var isObject = require('../internals/is-object'); + +// `ToPrimitive` abstract operation +// https://tc39.github.io/ecma262/#sec-toprimitive +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function (input, PREFERRED_STRING) { + if (!isObject(input)) return input; + var fn, val; + if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; + if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; + if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; + throw TypeError("Can't convert object to primitive value"); +}; diff --git a/core-js/internals/typed-array-constructor.js b/core-js/internals/typed-array-constructor.js new file mode 100644 index 0000000000..82c3f9d525 --- /dev/null +++ b/core-js/internals/typed-array-constructor.js @@ -0,0 +1,223 @@ +'use strict'; +var $ = require('../internals/export'); +var global = require('../internals/global'); +var DESCRIPTORS = require('../internals/descriptors'); +var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-arrays-constructors-requires-wrappers'); +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var ArrayBufferModule = require('../internals/array-buffer'); +var anInstance = require('../internals/an-instance'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); +var hide = require('../internals/hide'); +var toLength = require('../internals/to-length'); +var toIndex = require('../internals/to-index'); +var toOffset = require('../internals/to-offset'); +var toPrimitive = require('../internals/to-primitive'); +var has = require('../internals/has'); +var classof = require('../internals/classof'); +var isObject = require('../internals/is-object'); +var create = require('../internals/object-create'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); +var getOwnPropertyNames = require('../internals/object-get-own-property-names').f; +var typedArrayFrom = require('../internals/typed-array-from'); +var forEach = require('../internals/array-iteration').forEach; +var setSpecies = require('../internals/set-species'); +var definePropertyModule = require('../internals/object-define-property'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var InternalStateModule = require('../internals/internal-state'); + +var getInternalState = InternalStateModule.get; +var setInternalState = InternalStateModule.set; +var nativeDefineProperty = definePropertyModule.f; +var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; +var round = Math.round; +var RangeError = global.RangeError; +var ArrayBuffer = ArrayBufferModule.ArrayBuffer; +var DataView = ArrayBufferModule.DataView; +var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; +var TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG; +var TypedArray = ArrayBufferViewCore.TypedArray; +var TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype; +var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; +var isTypedArray = ArrayBufferViewCore.isTypedArray; +var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; +var WRONG_LENGTH = 'Wrong length'; + +var fromList = function (C, list) { + var index = 0; + var length = list.length; + var result = new (aTypedArrayConstructor(C))(length); + while (length > index) result[index] = list[index++]; + return result; +}; + +var addGetter = function (it, key) { + nativeDefineProperty(it, key, { get: function () { + return getInternalState(this)[key]; + } }); +}; + +var isArrayBuffer = function (it) { + var klass; + return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer'; +}; + +var isTypedArrayIndex = function (target, key) { + return isTypedArray(target) + && typeof key != 'symbol' + && key in target + && String(+key) == String(key); +}; + +var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) { + return isTypedArrayIndex(target, key = toPrimitive(key, true)) + ? createPropertyDescriptor(2, target[key]) + : nativeGetOwnPropertyDescriptor(target, key); +}; + +var wrappedDefineProperty = function defineProperty(target, key, descriptor) { + if (isTypedArrayIndex(target, key = toPrimitive(key, true)) + && isObject(descriptor) + && has(descriptor, 'value') + && !has(descriptor, 'get') + && !has(descriptor, 'set') + // TODO: add validation descriptor w/o calling accessors + && !descriptor.configurable + && (!has(descriptor, 'writable') || descriptor.writable) + && (!has(descriptor, 'enumerable') || descriptor.enumerable) + ) { + target[key] = descriptor.value; + return target; + } return nativeDefineProperty(target, key, descriptor); +}; + +if (DESCRIPTORS) { + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor; + definePropertyModule.f = wrappedDefineProperty; + addGetter(TypedArrayPrototype, 'buffer'); + addGetter(TypedArrayPrototype, 'byteOffset'); + addGetter(TypedArrayPrototype, 'byteLength'); + addGetter(TypedArrayPrototype, 'length'); + } + + $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, { + getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor, + defineProperty: wrappedDefineProperty + }); + + // eslint-disable-next-line max-statements + module.exports = function (TYPE, BYTES, wrapper, CLAMPED) { + var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array'; + var GETTER = 'get' + TYPE; + var SETTER = 'set' + TYPE; + var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME]; + var TypedArrayConstructor = NativeTypedArrayConstructor; + var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype; + var exported = {}; + + var getter = function (that, index) { + var data = getInternalState(that); + return data.view[GETTER](index * BYTES + data.byteOffset, true); + }; + + var setter = function (that, index, value) { + var data = getInternalState(that); + if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF; + data.view[SETTER](index * BYTES + data.byteOffset, value, true); + }; + + var addElement = function (that, index) { + nativeDefineProperty(that, index, { + get: function () { + return getter(this, index); + }, + set: function (value) { + return setter(this, index, value); + }, + enumerable: true + }); + }; + + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + TypedArrayConstructor = wrapper(function (that, data, offset, $length) { + anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME); + var index = 0; + var byteOffset = 0; + var buffer, byteLength, length; + if (!isObject(data)) { + length = toIndex(data); + byteLength = length * BYTES; + buffer = new ArrayBuffer(byteLength); + } else if (isArrayBuffer(data)) { + buffer = data; + byteOffset = toOffset(offset, BYTES); + var $len = data.byteLength; + if ($length === undefined) { + if ($len % BYTES) throw RangeError(WRONG_LENGTH); + byteLength = $len - byteOffset; + if (byteLength < 0) throw RangeError(WRONG_LENGTH); + } else { + byteLength = toLength($length) * BYTES; + if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH); + } + length = byteLength / BYTES; + } else if (isTypedArray(data)) { + return fromList(TypedArrayConstructor, data); + } else { + return typedArrayFrom.call(TypedArrayConstructor, data); + } + setInternalState(that, { + buffer: buffer, + byteOffset: byteOffset, + byteLength: byteLength, + length: length, + view: new DataView(buffer) + }); + while (index < length) addElement(that, index++); + }); + + if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); + TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype); + } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) { + TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) { + anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME); + if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data)); + if (isArrayBuffer(data)) return $length !== undefined + ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length) + : typedArrayOffset !== undefined + ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES)) + : new NativeTypedArrayConstructor(data); + if (isTypedArray(data)) return fromList(TypedArrayConstructor, data); + return typedArrayFrom.call(TypedArrayConstructor, data); + }); + + if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); + forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) { + if (!(key in TypedArrayConstructor)) hide(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]); + }); + TypedArrayConstructor.prototype = TypedArrayConstructorPrototype; + } + + if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) { + hide(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor); + } + + if (TYPED_ARRAY_TAG) hide(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME); + + exported[CONSTRUCTOR_NAME] = TypedArrayConstructor; + + $({ + global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS + }, exported); + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) { + hide(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES); + } + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) { + hide(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES); + } + + setSpecies(CONSTRUCTOR_NAME); + }; +} else module.exports = function () { /* empty */ }; diff --git a/core-js/internals/typed-array-from.js b/core-js/internals/typed-array-from.js new file mode 100644 index 0000000000..28d6e3456e --- /dev/null +++ b/core-js/internals/typed-array-from.js @@ -0,0 +1,31 @@ +var toObject = require('../internals/to-object'); +var toLength = require('../internals/to-length'); +var getIteratorMethod = require('../internals/get-iterator-method'); +var isArrayIteratorMethod = require('../internals/is-array-iterator-method'); +var bind = require('../internals/bind-context'); +var aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor; + +module.exports = function from(source /* , mapfn, thisArg */) { + var O = toObject(source); + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iteratorMethod = getIteratorMethod(O); + var i, length, result, step, iterator; + if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) { + iterator = iteratorMethod.call(O); + O = []; + while (!(step = iterator.next()).done) { + O.push(step.value); + } + } + if (mapping && argumentsLength > 2) { + mapfn = bind(mapfn, arguments[2], 2); + } + length = toLength(O.length); + result = new (aTypedArrayConstructor(this))(length); + for (i = 0; length > i; i++) { + result[i] = mapping ? mapfn(O[i], i) : O[i]; + } + return result; +}; diff --git a/core-js/internals/typed-arrays-constructors-requires-wrappers.js b/core-js/internals/typed-arrays-constructors-requires-wrappers.js new file mode 100644 index 0000000000..675466f063 --- /dev/null +++ b/core-js/internals/typed-arrays-constructors-requires-wrappers.js @@ -0,0 +1,22 @@ +/* eslint-disable no-new */ +var global = require('../internals/global'); +var fails = require('../internals/fails'); +var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); +var NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS; + +var ArrayBuffer = global.ArrayBuffer; +var Int8Array = global.Int8Array; + +module.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () { + Int8Array(1); +}) || !fails(function () { + new Int8Array(-1); +}) || !checkCorrectnessOfIteration(function (iterable) { + new Int8Array(); + new Int8Array(null); + new Int8Array(1.5); + new Int8Array(iterable); +}, true) || fails(function () { + // Safari 11 bug + return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1; +}); diff --git a/core-js/internals/uid.js b/core-js/internals/uid.js new file mode 100644 index 0000000000..384c124ef5 --- /dev/null +++ b/core-js/internals/uid.js @@ -0,0 +1,6 @@ +var id = 0; +var postfix = Math.random(); + +module.exports = function (key) { + return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); +}; diff --git a/core-js/internals/user-agent.js b/core-js/internals/user-agent.js new file mode 100644 index 0000000000..30dfa9d7f3 --- /dev/null +++ b/core-js/internals/user-agent.js @@ -0,0 +1,3 @@ +var getBuiltIn = require('../internals/get-built-in'); + +module.exports = getBuiltIn('navigator', 'userAgent') || ''; diff --git a/core-js/internals/webkit-string-pad-bug.js b/core-js/internals/webkit-string-pad-bug.js new file mode 100644 index 0000000000..31ab9fc222 --- /dev/null +++ b/core-js/internals/webkit-string-pad-bug.js @@ -0,0 +1,5 @@ +// https://github.com/zloirock/core-js/issues/280 +var userAgent = require('../internals/user-agent'); + +// eslint-disable-next-line unicorn/no-unsafe-regex +module.exports = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent); diff --git a/core-js/internals/well-known-symbol.js b/core-js/internals/well-known-symbol.js new file mode 100644 index 0000000000..9f9fed1b7a --- /dev/null +++ b/core-js/internals/well-known-symbol.js @@ -0,0 +1,12 @@ +var global = require('../internals/global'); +var shared = require('../internals/shared'); +var uid = require('../internals/uid'); +var NATIVE_SYMBOL = require('../internals/native-symbol'); + +var Symbol = global.Symbol; +var store = shared('wks'); + +module.exports = function (name) { + return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name] + || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; diff --git a/core-js/internals/whitespaces.js b/core-js/internals/whitespaces.js new file mode 100644 index 0000000000..0924bab146 --- /dev/null +++ b/core-js/internals/whitespaces.js @@ -0,0 +1,3 @@ +// a string of all valid unicode whitespaces +// eslint-disable-next-line max-len +module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; diff --git a/core-js/internals/wrapped-well-known-symbol.js b/core-js/internals/wrapped-well-known-symbol.js new file mode 100644 index 0000000000..101822f666 --- /dev/null +++ b/core-js/internals/wrapped-well-known-symbol.js @@ -0,0 +1 @@ +exports.f = require('../internals/well-known-symbol'); diff --git a/core-js/modules/README.md b/core-js/modules/README.md new file mode 100644 index 0000000000..0d6b3cb0e7 --- /dev/null +++ b/core-js/modules/README.md @@ -0,0 +1 @@ +This folder contains implementations of polyfills. It's not recommended to include in your projects directly if you don't completely understand what are you doing. diff --git a/core-js/modules/es.array-buffer.constructor.js b/core-js/modules/es.array-buffer.constructor.js new file mode 100644 index 0000000000..b4e4df4581 --- /dev/null +++ b/core-js/modules/es.array-buffer.constructor.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var global = require('../internals/global'); +var arrayBufferModule = require('../internals/array-buffer'); +var setSpecies = require('../internals/set-species'); + +var ARRAY_BUFFER = 'ArrayBuffer'; +var ArrayBuffer = arrayBufferModule[ARRAY_BUFFER]; +var NativeArrayBuffer = global[ARRAY_BUFFER]; + +// `ArrayBuffer` constructor +// https://tc39.github.io/ecma262/#sec-arraybuffer-constructor +$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, { + ArrayBuffer: ArrayBuffer +}); + +setSpecies(ARRAY_BUFFER); diff --git a/core-js/modules/es.array-buffer.is-view.js b/core-js/modules/es.array-buffer.is-view.js new file mode 100644 index 0000000000..0b23d5c321 --- /dev/null +++ b/core-js/modules/es.array-buffer.is-view.js @@ -0,0 +1,10 @@ +var $ = require('../internals/export'); +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); + +var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; + +// `ArrayBuffer.isView` method +// https://tc39.github.io/ecma262/#sec-arraybuffer.isview +$({ target: 'ArrayBuffer', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, { + isView: ArrayBufferViewCore.isView +}); diff --git a/core-js/modules/es.array-buffer.slice.js b/core-js/modules/es.array-buffer.slice.js new file mode 100644 index 0000000000..c1375434f6 --- /dev/null +++ b/core-js/modules/es.array-buffer.slice.js @@ -0,0 +1,36 @@ +'use strict'; +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var ArrayBufferModule = require('../internals/array-buffer'); +var anObject = require('../internals/an-object'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var toLength = require('../internals/to-length'); +var speciesConstructor = require('../internals/species-constructor'); + +var ArrayBuffer = ArrayBufferModule.ArrayBuffer; +var DataView = ArrayBufferModule.DataView; +var nativeArrayBufferSlice = ArrayBuffer.prototype.slice; + +var INCORRECT_SLICE = fails(function () { + return !new ArrayBuffer(2).slice(1, undefined).byteLength; +}); + +// `ArrayBuffer.prototype.slice` method +// https://tc39.github.io/ecma262/#sec-arraybuffer.prototype.slice +$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, { + slice: function slice(start, end) { + if (nativeArrayBufferSlice !== undefined && end === undefined) { + return nativeArrayBufferSlice.call(anObject(this), start); // FF fix + } + var length = anObject(this).byteLength; + var first = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first)); + var viewSource = new DataView(this); + var viewTarget = new DataView(result); + var index = 0; + while (first < fin) { + viewTarget.setUint8(index++, viewSource.getUint8(first++)); + } return result; + } +}); diff --git a/core-js/modules/es.array.concat.js b/core-js/modules/es.array.concat.js new file mode 100644 index 0000000000..c819dd58ed --- /dev/null +++ b/core-js/modules/es.array.concat.js @@ -0,0 +1,56 @@ +'use strict'; +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var isArray = require('../internals/is-array'); +var isObject = require('../internals/is-object'); +var toObject = require('../internals/to-object'); +var toLength = require('../internals/to-length'); +var createProperty = require('../internals/create-property'); +var arraySpeciesCreate = require('../internals/array-species-create'); +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); +var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; +var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; + +var IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () { + var array = []; + array[IS_CONCAT_SPREADABLE] = false; + return array.concat()[0] !== array; +}); + +var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); + +var isConcatSpreadable = function (O) { + if (!isObject(O)) return false; + var spreadable = O[IS_CONCAT_SPREADABLE]; + return spreadable !== undefined ? !!spreadable : isArray(O); +}; + +var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; + +// `Array.prototype.concat` method +// https://tc39.github.io/ecma262/#sec-array.prototype.concat +// with adding support of @@isConcatSpreadable and @@species +$({ target: 'Array', proto: true, forced: FORCED }, { + concat: function concat(arg) { // eslint-disable-line no-unused-vars + var O = toObject(this); + var A = arraySpeciesCreate(O, 0); + var n = 0; + var i, k, length, len, E; + for (i = -1, length = arguments.length; i < length; i++) { + E = i === -1 ? O : arguments[i]; + if (isConcatSpreadable(E)) { + len = toLength(E.length); + if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); + for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); + } else { + if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); + createProperty(A, n++, E); + } + } + A.length = n; + return A; + } +}); diff --git a/core-js/modules/es.array.copy-within.js b/core-js/modules/es.array.copy-within.js new file mode 100644 index 0000000000..1fb0dda49e --- /dev/null +++ b/core-js/modules/es.array.copy-within.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); +var copyWithin = require('../internals/array-copy-within'); +var addToUnscopables = require('../internals/add-to-unscopables'); + +// `Array.prototype.copyWithin` method +// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin +$({ target: 'Array', proto: true }, { + copyWithin: copyWithin +}); + +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('copyWithin'); diff --git a/core-js/modules/es.array.every.js b/core-js/modules/es.array.every.js new file mode 100644 index 0000000000..da54b92533 --- /dev/null +++ b/core-js/modules/es.array.every.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var $every = require('../internals/array-iteration').every; +var sloppyArrayMethod = require('../internals/sloppy-array-method'); + +// `Array.prototype.every` method +// https://tc39.github.io/ecma262/#sec-array.prototype.every +$({ target: 'Array', proto: true, forced: sloppyArrayMethod('every') }, { + every: function every(callbackfn /* , thisArg */) { + return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/core-js/modules/es.array.fill.js b/core-js/modules/es.array.fill.js new file mode 100644 index 0000000000..ba9f4b46f3 --- /dev/null +++ b/core-js/modules/es.array.fill.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); +var fill = require('../internals/array-fill'); +var addToUnscopables = require('../internals/add-to-unscopables'); + +// `Array.prototype.fill` method +// https://tc39.github.io/ecma262/#sec-array.prototype.fill +$({ target: 'Array', proto: true }, { + fill: fill +}); + +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('fill'); diff --git a/core-js/modules/es.array.filter.js b/core-js/modules/es.array.filter.js new file mode 100644 index 0000000000..54561a908e --- /dev/null +++ b/core-js/modules/es.array.filter.js @@ -0,0 +1,13 @@ +'use strict'; +var $ = require('../internals/export'); +var $filter = require('../internals/array-iteration').filter; +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); + +// `Array.prototype.filter` method +// https://tc39.github.io/ecma262/#sec-array.prototype.filter +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/core-js/modules/es.array.find-index.js b/core-js/modules/es.array.find-index.js new file mode 100644 index 0000000000..6a13c7b27b --- /dev/null +++ b/core-js/modules/es.array.find-index.js @@ -0,0 +1,21 @@ +'use strict'; +var $ = require('../internals/export'); +var $findIndex = require('../internals/array-iteration').findIndex; +var addToUnscopables = require('../internals/add-to-unscopables'); + +var FIND_INDEX = 'findIndex'; +var SKIPS_HOLES = true; + +// Shouldn't skip holes +if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; }); + +// `Array.prototype.findIndex` method +// https://tc39.github.io/ecma262/#sec-array.prototype.findindex +$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { + findIndex: function findIndex(callbackfn /* , that = undefined */) { + return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables(FIND_INDEX); diff --git a/core-js/modules/es.array.find.js b/core-js/modules/es.array.find.js new file mode 100644 index 0000000000..961f804bf2 --- /dev/null +++ b/core-js/modules/es.array.find.js @@ -0,0 +1,21 @@ +'use strict'; +var $ = require('../internals/export'); +var $find = require('../internals/array-iteration').find; +var addToUnscopables = require('../internals/add-to-unscopables'); + +var FIND = 'find'; +var SKIPS_HOLES = true; + +// Shouldn't skip holes +if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); + +// `Array.prototype.find` method +// https://tc39.github.io/ecma262/#sec-array.prototype.find +$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { + find: function find(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables(FIND); diff --git a/core-js/modules/es.array.flat-map.js b/core-js/modules/es.array.flat-map.js new file mode 100644 index 0000000000..5469beef3e --- /dev/null +++ b/core-js/modules/es.array.flat-map.js @@ -0,0 +1,21 @@ +'use strict'; +var $ = require('../internals/export'); +var flattenIntoArray = require('../internals/flatten-into-array'); +var toObject = require('../internals/to-object'); +var toLength = require('../internals/to-length'); +var aFunction = require('../internals/a-function'); +var arraySpeciesCreate = require('../internals/array-species-create'); + +// `Array.prototype.flatMap` method +// https://github.com/tc39/proposal-flatMap +$({ target: 'Array', proto: true }, { + flatMap: function flatMap(callbackfn /* , thisArg */) { + var O = toObject(this); + var sourceLen = toLength(O.length); + var A; + aFunction(callbackfn); + A = arraySpeciesCreate(O, 0); + A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return A; + } +}); diff --git a/core-js/modules/es.array.flat.js b/core-js/modules/es.array.flat.js new file mode 100644 index 0000000000..cb2c9d7535 --- /dev/null +++ b/core-js/modules/es.array.flat.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var flattenIntoArray = require('../internals/flatten-into-array'); +var toObject = require('../internals/to-object'); +var toLength = require('../internals/to-length'); +var toInteger = require('../internals/to-integer'); +var arraySpeciesCreate = require('../internals/array-species-create'); + +// `Array.prototype.flat` method +// https://github.com/tc39/proposal-flatMap +$({ target: 'Array', proto: true }, { + flat: function flat(/* depthArg = 1 */) { + var depthArg = arguments.length ? arguments[0] : undefined; + var O = toObject(this); + var sourceLen = toLength(O.length); + var A = arraySpeciesCreate(O, 0); + A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg)); + return A; + } +}); diff --git a/core-js/modules/es.array.for-each.js b/core-js/modules/es.array.for-each.js new file mode 100644 index 0000000000..4fb29d0730 --- /dev/null +++ b/core-js/modules/es.array.for-each.js @@ -0,0 +1,9 @@ +'use strict'; +var $ = require('../internals/export'); +var forEach = require('../internals/array-for-each'); + +// `Array.prototype.forEach` method +// https://tc39.github.io/ecma262/#sec-array.prototype.foreach +$({ target: 'Array', proto: true, forced: [].forEach != forEach }, { + forEach: forEach +}); diff --git a/core-js/modules/es.array.from.js b/core-js/modules/es.array.from.js new file mode 100644 index 0000000000..5c21cbca97 --- /dev/null +++ b/core-js/modules/es.array.from.js @@ -0,0 +1,13 @@ +var $ = require('../internals/export'); +var from = require('../internals/array-from'); +var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); + +var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { + Array.from(iterable); +}); + +// `Array.from` method +// https://tc39.github.io/ecma262/#sec-array.from +$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, { + from: from +}); diff --git a/core-js/modules/es.array.includes.js b/core-js/modules/es.array.includes.js new file mode 100644 index 0000000000..a374c0faae --- /dev/null +++ b/core-js/modules/es.array.includes.js @@ -0,0 +1,15 @@ +'use strict'; +var $ = require('../internals/export'); +var $includes = require('../internals/array-includes').includes; +var addToUnscopables = require('../internals/add-to-unscopables'); + +// `Array.prototype.includes` method +// https://tc39.github.io/ecma262/#sec-array.prototype.includes +$({ target: 'Array', proto: true }, { + includes: function includes(el /* , fromIndex = 0 */) { + return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('includes'); diff --git a/core-js/modules/es.array.index-of.js b/core-js/modules/es.array.index-of.js new file mode 100644 index 0000000000..004399dff9 --- /dev/null +++ b/core-js/modules/es.array.index-of.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var $indexOf = require('../internals/array-includes').indexOf; +var sloppyArrayMethod = require('../internals/sloppy-array-method'); + +var nativeIndexOf = [].indexOf; + +var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0; +var SLOPPY_METHOD = sloppyArrayMethod('indexOf'); + +// `Array.prototype.indexOf` method +// https://tc39.github.io/ecma262/#sec-array.prototype.indexof +$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, { + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + return NEGATIVE_ZERO + // convert -0 to +0 + ? nativeIndexOf.apply(this, arguments) || 0 + : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/core-js/modules/es.array.is-array.js b/core-js/modules/es.array.is-array.js new file mode 100644 index 0000000000..b77fad6a0d --- /dev/null +++ b/core-js/modules/es.array.is-array.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var isArray = require('../internals/is-array'); + +// `Array.isArray` method +// https://tc39.github.io/ecma262/#sec-array.isarray +$({ target: 'Array', stat: true }, { + isArray: isArray +}); diff --git a/core-js/modules/es.array.iterator.js b/core-js/modules/es.array.iterator.js new file mode 100644 index 0000000000..5e64422699 --- /dev/null +++ b/core-js/modules/es.array.iterator.js @@ -0,0 +1,53 @@ +'use strict'; +var toIndexedObject = require('../internals/to-indexed-object'); +var addToUnscopables = require('../internals/add-to-unscopables'); +var Iterators = require('../internals/iterators'); +var InternalStateModule = require('../internals/internal-state'); +var defineIterator = require('../internals/define-iterator'); + +var ARRAY_ITERATOR = 'Array Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); + +// `Array.prototype.entries` method +// https://tc39.github.io/ecma262/#sec-array.prototype.entries +// `Array.prototype.keys` method +// https://tc39.github.io/ecma262/#sec-array.prototype.keys +// `Array.prototype.values` method +// https://tc39.github.io/ecma262/#sec-array.prototype.values +// `Array.prototype[@@iterator]` method +// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator +// `CreateArrayIterator` internal method +// https://tc39.github.io/ecma262/#sec-createarrayiterator +module.exports = defineIterator(Array, 'Array', function (iterated, kind) { + setInternalState(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject(iterated), // target + index: 0, // next index + kind: kind // kind + }); +// `%ArrayIteratorPrototype%.next` method +// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next +}, function () { + var state = getInternalState(this); + var target = state.target; + var kind = state.kind; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return { value: undefined, done: true }; + } + if (kind == 'keys') return { value: index, done: false }; + if (kind == 'values') return { value: target[index], done: false }; + return { value: [index, target[index]], done: false }; +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% +// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject +// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject +Iterators.Arguments = Iterators.Array; + +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); diff --git a/core-js/modules/es.array.join.js b/core-js/modules/es.array.join.js new file mode 100644 index 0000000000..c733598b40 --- /dev/null +++ b/core-js/modules/es.array.join.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var IndexedObject = require('../internals/indexed-object'); +var toIndexedObject = require('../internals/to-indexed-object'); +var sloppyArrayMethod = require('../internals/sloppy-array-method'); + +var nativeJoin = [].join; + +var ES3_STRINGS = IndexedObject != Object; +var SLOPPY_METHOD = sloppyArrayMethod('join', ','); + +// `Array.prototype.join` method +// https://tc39.github.io/ecma262/#sec-array.prototype.join +$({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, { + join: function join(separator) { + return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator); + } +}); diff --git a/core-js/modules/es.array.last-index-of.js b/core-js/modules/es.array.last-index-of.js new file mode 100644 index 0000000000..d2090551b1 --- /dev/null +++ b/core-js/modules/es.array.last-index-of.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var lastIndexOf = require('../internals/array-last-index-of'); + +// `Array.prototype.lastIndexOf` method +// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof +$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, { + lastIndexOf: lastIndexOf +}); diff --git a/core-js/modules/es.array.map.js b/core-js/modules/es.array.map.js new file mode 100644 index 0000000000..ef71387677 --- /dev/null +++ b/core-js/modules/es.array.map.js @@ -0,0 +1,13 @@ +'use strict'; +var $ = require('../internals/export'); +var $map = require('../internals/array-iteration').map; +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); + +// `Array.prototype.map` method +// https://tc39.github.io/ecma262/#sec-array.prototype.map +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, { + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/core-js/modules/es.array.of.js b/core-js/modules/es.array.of.js new file mode 100644 index 0000000000..2788091b3c --- /dev/null +++ b/core-js/modules/es.array.of.js @@ -0,0 +1,23 @@ +'use strict'; +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var createProperty = require('../internals/create-property'); + +var ISNT_GENERIC = fails(function () { + function F() { /* empty */ } + return !(Array.of.call(F) instanceof F); +}); + +// `Array.of` method +// https://tc39.github.io/ecma262/#sec-array.of +// WebKit Array.of isn't generic +$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, { + of: function of(/* ...args */) { + var index = 0; + var argumentsLength = arguments.length; + var result = new (typeof this == 'function' ? this : Array)(argumentsLength); + while (argumentsLength > index) createProperty(result, index, arguments[index++]); + result.length = argumentsLength; + return result; + } +}); diff --git a/core-js/modules/es.array.reduce-right.js b/core-js/modules/es.array.reduce-right.js new file mode 100644 index 0000000000..292f9d84f8 --- /dev/null +++ b/core-js/modules/es.array.reduce-right.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var $reduceRight = require('../internals/array-reduce').right; +var sloppyArrayMethod = require('../internals/sloppy-array-method'); + +// `Array.prototype.reduceRight` method +// https://tc39.github.io/ecma262/#sec-array.prototype.reduceright +$({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduceRight') }, { + reduceRight: function reduceRight(callbackfn /* , initialValue */) { + return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/core-js/modules/es.array.reduce.js b/core-js/modules/es.array.reduce.js new file mode 100644 index 0000000000..a776812697 --- /dev/null +++ b/core-js/modules/es.array.reduce.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var $reduce = require('../internals/array-reduce').left; +var sloppyArrayMethod = require('../internals/sloppy-array-method'); + +// `Array.prototype.reduce` method +// https://tc39.github.io/ecma262/#sec-array.prototype.reduce +$({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, { + reduce: function reduce(callbackfn /* , initialValue */) { + return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/core-js/modules/es.array.reverse.js b/core-js/modules/es.array.reverse.js new file mode 100644 index 0000000000..16ea40e91c --- /dev/null +++ b/core-js/modules/es.array.reverse.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var isArray = require('../internals/is-array'); + +var nativeReverse = [].reverse; +var test = [1, 2]; + +// `Array.prototype.reverse` method +// https://tc39.github.io/ecma262/#sec-array.prototype.reverse +// fix for Safari 12.0 bug +// https://bugs.webkit.org/show_bug.cgi?id=188794 +$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, { + reverse: function reverse() { + if (isArray(this)) this.length = this.length; + return nativeReverse.call(this); + } +}); diff --git a/core-js/modules/es.array.slice.js b/core-js/modules/es.array.slice.js new file mode 100644 index 0000000000..ac71ebf78a --- /dev/null +++ b/core-js/modules/es.array.slice.js @@ -0,0 +1,45 @@ +'use strict'; +var $ = require('../internals/export'); +var isObject = require('../internals/is-object'); +var isArray = require('../internals/is-array'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var toLength = require('../internals/to-length'); +var toIndexedObject = require('../internals/to-indexed-object'); +var createProperty = require('../internals/create-property'); +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var SPECIES = wellKnownSymbol('species'); +var nativeSlice = [].slice; +var max = Math.max; + +// `Array.prototype.slice` method +// https://tc39.github.io/ecma262/#sec-array.prototype.slice +// fallback for not array-like ES3 strings and DOM objects +$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, { + slice: function slice(start, end) { + var O = toIndexedObject(this); + var length = toLength(O.length); + var k = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible + var Constructor, result, n; + if (isArray(O)) { + Constructor = O.constructor; + // cross-realm fallback + if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) { + Constructor = undefined; + } else if (isObject(Constructor)) { + Constructor = Constructor[SPECIES]; + if (Constructor === null) Constructor = undefined; + } + if (Constructor === Array || Constructor === undefined) { + return nativeSlice.call(O, k, fin); + } + } + result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0)); + for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); + result.length = n; + return result; + } +}); diff --git a/core-js/modules/es.array.some.js b/core-js/modules/es.array.some.js new file mode 100644 index 0000000000..60e77ed6dc --- /dev/null +++ b/core-js/modules/es.array.some.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var $some = require('../internals/array-iteration').some; +var sloppyArrayMethod = require('../internals/sloppy-array-method'); + +// `Array.prototype.some` method +// https://tc39.github.io/ecma262/#sec-array.prototype.some +$({ target: 'Array', proto: true, forced: sloppyArrayMethod('some') }, { + some: function some(callbackfn /* , thisArg */) { + return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/core-js/modules/es.array.sort.js b/core-js/modules/es.array.sort.js new file mode 100644 index 0000000000..b9d70dc916 --- /dev/null +++ b/core-js/modules/es.array.sort.js @@ -0,0 +1,32 @@ +'use strict'; +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var toObject = require('../internals/to-object'); +var fails = require('../internals/fails'); +var sloppyArrayMethod = require('../internals/sloppy-array-method'); + +var nativeSort = [].sort; +var test = [1, 2, 3]; + +// IE8- +var FAILS_ON_UNDEFINED = fails(function () { + test.sort(undefined); +}); +// V8 bug +var FAILS_ON_NULL = fails(function () { + test.sort(null); +}); +// Old WebKit +var SLOPPY_METHOD = sloppyArrayMethod('sort'); + +var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD; + +// `Array.prototype.sort` method +// https://tc39.github.io/ecma262/#sec-array.prototype.sort +$({ target: 'Array', proto: true, forced: FORCED }, { + sort: function sort(comparefn) { + return comparefn === undefined + ? nativeSort.call(toObject(this)) + : nativeSort.call(toObject(this), aFunction(comparefn)); + } +}); diff --git a/core-js/modules/es.array.species.js b/core-js/modules/es.array.species.js new file mode 100644 index 0000000000..a0e78299f7 --- /dev/null +++ b/core-js/modules/es.array.species.js @@ -0,0 +1,5 @@ +var setSpecies = require('../internals/set-species'); + +// `Array[@@species]` getter +// https://tc39.github.io/ecma262/#sec-get-array-@@species +setSpecies('Array'); diff --git a/core-js/modules/es.array.splice.js b/core-js/modules/es.array.splice.js new file mode 100644 index 0000000000..aa17d55551 --- /dev/null +++ b/core-js/modules/es.array.splice.js @@ -0,0 +1,66 @@ +'use strict'; +var $ = require('../internals/export'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var toInteger = require('../internals/to-integer'); +var toLength = require('../internals/to-length'); +var toObject = require('../internals/to-object'); +var arraySpeciesCreate = require('../internals/array-species-create'); +var createProperty = require('../internals/create-property'); +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); + +var max = Math.max; +var min = Math.min; +var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; +var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; + +// `Array.prototype.splice` method +// https://tc39.github.io/ecma262/#sec-array.prototype.splice +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, { + splice: function splice(start, deleteCount /* , ...items */) { + var O = toObject(this); + var len = toLength(O.length); + var actualStart = toAbsoluteIndex(start, len); + var argumentsLength = arguments.length; + var insertCount, actualDeleteCount, A, k, from, to; + if (argumentsLength === 0) { + insertCount = actualDeleteCount = 0; + } else if (argumentsLength === 1) { + insertCount = 0; + actualDeleteCount = len - actualStart; + } else { + insertCount = argumentsLength - 2; + actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart); + } + if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) { + throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED); + } + A = arraySpeciesCreate(O, actualDeleteCount); + for (k = 0; k < actualDeleteCount; k++) { + from = actualStart + k; + if (from in O) createProperty(A, k, O[from]); + } + A.length = actualDeleteCount; + if (insertCount < actualDeleteCount) { + for (k = actualStart; k < len - actualDeleteCount; k++) { + from = k + actualDeleteCount; + to = k + insertCount; + if (from in O) O[to] = O[from]; + else delete O[to]; + } + for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1]; + } else if (insertCount > actualDeleteCount) { + for (k = len - actualDeleteCount; k > actualStart; k--) { + from = k + actualDeleteCount - 1; + to = k + insertCount - 1; + if (from in O) O[to] = O[from]; + else delete O[to]; + } + } + for (k = 0; k < insertCount; k++) { + O[k + actualStart] = arguments[k + 2]; + } + O.length = len - actualDeleteCount + insertCount; + return A; + } +}); diff --git a/core-js/modules/es.array.unscopables.flat-map.js b/core-js/modules/es.array.unscopables.flat-map.js new file mode 100644 index 0000000000..593cf055cf --- /dev/null +++ b/core-js/modules/es.array.unscopables.flat-map.js @@ -0,0 +1,5 @@ +// this method was added to unscopables after implementation +// in popular engines, so it's moved to a separate module +var addToUnscopables = require('../internals/add-to-unscopables'); + +addToUnscopables('flatMap'); diff --git a/core-js/modules/es.array.unscopables.flat.js b/core-js/modules/es.array.unscopables.flat.js new file mode 100644 index 0000000000..ce6656c312 --- /dev/null +++ b/core-js/modules/es.array.unscopables.flat.js @@ -0,0 +1,5 @@ +// this method was added to unscopables after implementation +// in popular engines, so it's moved to a separate module +var addToUnscopables = require('../internals/add-to-unscopables'); + +addToUnscopables('flat'); diff --git a/core-js/modules/es.data-view.js b/core-js/modules/es.data-view.js new file mode 100644 index 0000000000..c369dd3c89 --- /dev/null +++ b/core-js/modules/es.data-view.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); +var ArrayBufferModule = require('../internals/array-buffer'); +var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER; + +// `DataView` constructor +// https://tc39.github.io/ecma262/#sec-dataview-constructor +$({ global: true, forced: !NATIVE_ARRAY_BUFFER }, { + DataView: ArrayBufferModule.DataView +}); diff --git a/core-js/modules/es.date.now.js b/core-js/modules/es.date.now.js new file mode 100644 index 0000000000..c4dc75b09e --- /dev/null +++ b/core-js/modules/es.date.now.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); + +// `Date.now` method +// https://tc39.github.io/ecma262/#sec-date.now +$({ target: 'Date', stat: true }, { + now: function now() { + return new Date().getTime(); + } +}); diff --git a/core-js/modules/es.date.to-iso-string.js b/core-js/modules/es.date.to-iso-string.js new file mode 100644 index 0000000000..14f8ae0b76 --- /dev/null +++ b/core-js/modules/es.date.to-iso-string.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); +var toISOString = require('../internals/date-to-iso-string'); + +// `Date.prototype.toISOString` method +// https://tc39.github.io/ecma262/#sec-date.prototype.toisostring +// PhantomJS / old WebKit has a broken implementations +$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, { + toISOString: toISOString +}); diff --git a/core-js/modules/es.date.to-json.js b/core-js/modules/es.date.to-json.js new file mode 100644 index 0000000000..bcf45175f5 --- /dev/null +++ b/core-js/modules/es.date.to-json.js @@ -0,0 +1,21 @@ +'use strict'; +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var toObject = require('../internals/to-object'); +var toPrimitive = require('../internals/to-primitive'); + +var FORCED = fails(function () { + return new Date(NaN).toJSON() !== null + || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1; +}); + +// `Date.prototype.toJSON` method +// https://tc39.github.io/ecma262/#sec-date.prototype.tojson +$({ target: 'Date', proto: true, forced: FORCED }, { + // eslint-disable-next-line no-unused-vars + toJSON: function toJSON(key) { + var O = toObject(this); + var pv = toPrimitive(O); + return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); + } +}); diff --git a/core-js/modules/es.date.to-primitive.js b/core-js/modules/es.date.to-primitive.js new file mode 100644 index 0000000000..7a308279ac --- /dev/null +++ b/core-js/modules/es.date.to-primitive.js @@ -0,0 +1,10 @@ +var hide = require('../internals/hide'); +var dateToPrimitive = require('../internals/date-to-primitive'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); +var DatePrototype = Date.prototype; + +// `Date.prototype[@@toPrimitive]` method +// https://tc39.github.io/ecma262/#sec-date.prototype-@@toprimitive +if (!(TO_PRIMITIVE in DatePrototype)) hide(DatePrototype, TO_PRIMITIVE, dateToPrimitive); diff --git a/core-js/modules/es.date.to-string.js b/core-js/modules/es.date.to-string.js new file mode 100644 index 0000000000..dc28f0ad93 --- /dev/null +++ b/core-js/modules/es.date.to-string.js @@ -0,0 +1,17 @@ +var redefine = require('../internals/redefine'); + +var DatePrototype = Date.prototype; +var INVALID_DATE = 'Invalid Date'; +var TO_STRING = 'toString'; +var nativeDateToString = DatePrototype[TO_STRING]; +var getTime = DatePrototype.getTime; + +// `Date.prototype.toString` method +// https://tc39.github.io/ecma262/#sec-date.prototype.tostring +if (new Date(NaN) + '' != INVALID_DATE) { + redefine(DatePrototype, TO_STRING, function toString() { + var value = getTime.call(this); + // eslint-disable-next-line no-self-compare + return value === value ? nativeDateToString.call(this) : INVALID_DATE; + }); +} diff --git a/core-js/modules/es.function.bind.js b/core-js/modules/es.function.bind.js new file mode 100644 index 0000000000..fb33e969f1 --- /dev/null +++ b/core-js/modules/es.function.bind.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var bind = require('../internals/function-bind'); + +// `Function.prototype.bind` method +// https://tc39.github.io/ecma262/#sec-function.prototype.bind +$({ target: 'Function', proto: true }, { + bind: bind +}); diff --git a/core-js/modules/es.function.has-instance.js b/core-js/modules/es.function.has-instance.js new file mode 100644 index 0000000000..01383bd9e7 --- /dev/null +++ b/core-js/modules/es.function.has-instance.js @@ -0,0 +1,20 @@ +'use strict'; +var isObject = require('../internals/is-object'); +var definePropertyModule = require('../internals/object-define-property'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var HAS_INSTANCE = wellKnownSymbol('hasInstance'); +var FunctionPrototype = Function.prototype; + +// `Function.prototype[@@hasInstance]` method +// https://tc39.github.io/ecma262/#sec-function.prototype-@@hasinstance +if (!(HAS_INSTANCE in FunctionPrototype)) { + definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: function (O) { + if (typeof this != 'function' || !isObject(O)) return false; + if (!isObject(this.prototype)) return O instanceof this; + // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this: + while (O = getPrototypeOf(O)) if (this.prototype === O) return true; + return false; + } }); +} diff --git a/core-js/modules/es.function.name.js b/core-js/modules/es.function.name.js new file mode 100644 index 0000000000..2312d91ddd --- /dev/null +++ b/core-js/modules/es.function.name.js @@ -0,0 +1,22 @@ +var DESCRIPTORS = require('../internals/descriptors'); +var defineProperty = require('../internals/object-define-property').f; + +var FunctionPrototype = Function.prototype; +var FunctionPrototypeToString = FunctionPrototype.toString; +var nameRE = /^\s*function ([^ (]*)/; +var NAME = 'name'; + +// Function instances `.name` property +// https://tc39.github.io/ecma262/#sec-function-instances-name +if (DESCRIPTORS && !(NAME in FunctionPrototype)) { + defineProperty(FunctionPrototype, NAME, { + configurable: true, + get: function () { + try { + return FunctionPrototypeToString.call(this).match(nameRE)[1]; + } catch (error) { + return ''; + } + } + }); +} diff --git a/core-js/modules/es.json.to-string-tag.js b/core-js/modules/es.json.to-string-tag.js new file mode 100644 index 0000000000..bdfa0cd810 --- /dev/null +++ b/core-js/modules/es.json.to-string-tag.js @@ -0,0 +1,6 @@ +var global = require('../internals/global'); +var setToStringTag = require('../internals/set-to-string-tag'); + +// JSON[@@toStringTag] property +// https://tc39.github.io/ecma262/#sec-json-@@tostringtag +setToStringTag(global.JSON, 'JSON', true); diff --git a/core-js/modules/es.map.js b/core-js/modules/es.map.js new file mode 100644 index 0000000000..ea5f598d8c --- /dev/null +++ b/core-js/modules/es.map.js @@ -0,0 +1,9 @@ +'use strict'; +var collection = require('../internals/collection'); +var collectionStrong = require('../internals/collection-strong'); + +// `Map` constructor +// https://tc39.github.io/ecma262/#sec-map-objects +module.exports = collection('Map', function (get) { + return function Map() { return get(this, arguments.length ? arguments[0] : undefined); }; +}, collectionStrong, true); diff --git a/core-js/modules/es.math.acosh.js b/core-js/modules/es.math.acosh.js new file mode 100644 index 0000000000..62c85a4c33 --- /dev/null +++ b/core-js/modules/es.math.acosh.js @@ -0,0 +1,23 @@ +var $ = require('../internals/export'); +var log1p = require('../internals/math-log1p'); + +var nativeAcosh = Math.acosh; +var log = Math.log; +var sqrt = Math.sqrt; +var LN2 = Math.LN2; + +var FORCED = !nativeAcosh + // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 + || Math.floor(nativeAcosh(Number.MAX_VALUE)) != 710 + // Tor Browser bug: Math.acosh(Infinity) -> NaN + || nativeAcosh(Infinity) != Infinity; + +// `Math.acosh` method +// https://tc39.github.io/ecma262/#sec-math.acosh +$({ target: 'Math', stat: true, forced: FORCED }, { + acosh: function acosh(x) { + return (x = +x) < 1 ? NaN : x > 94906265.62425156 + ? log(x) + LN2 + : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1)); + } +}); diff --git a/core-js/modules/es.math.asinh.js b/core-js/modules/es.math.asinh.js new file mode 100644 index 0000000000..9308e2186d --- /dev/null +++ b/core-js/modules/es.math.asinh.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); + +var nativeAsinh = Math.asinh; +var log = Math.log; +var sqrt = Math.sqrt; + +function asinh(x) { + return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log(x + sqrt(x * x + 1)); +} + +// `Math.asinh` method +// https://tc39.github.io/ecma262/#sec-math.asinh +// Tor Browser bug: Math.asinh(0) -> -0 +$({ target: 'Math', stat: true, forced: !(nativeAsinh && 1 / nativeAsinh(0) > 0) }, { + asinh: asinh +}); diff --git a/core-js/modules/es.math.atanh.js b/core-js/modules/es.math.atanh.js new file mode 100644 index 0000000000..9116f8e483 --- /dev/null +++ b/core-js/modules/es.math.atanh.js @@ -0,0 +1,13 @@ +var $ = require('../internals/export'); + +var nativeAtanh = Math.atanh; +var log = Math.log; + +// `Math.atanh` method +// https://tc39.github.io/ecma262/#sec-math.atanh +// Tor Browser bug: Math.atanh(-0) -> 0 +$({ target: 'Math', stat: true, forced: !(nativeAtanh && 1 / nativeAtanh(-0) < 0) }, { + atanh: function atanh(x) { + return (x = +x) == 0 ? x : log((1 + x) / (1 - x)) / 2; + } +}); diff --git a/core-js/modules/es.math.cbrt.js b/core-js/modules/es.math.cbrt.js new file mode 100644 index 0000000000..b93416f9cc --- /dev/null +++ b/core-js/modules/es.math.cbrt.js @@ -0,0 +1,13 @@ +var $ = require('../internals/export'); +var sign = require('../internals/math-sign'); + +var abs = Math.abs; +var pow = Math.pow; + +// `Math.cbrt` method +// https://tc39.github.io/ecma262/#sec-math.cbrt +$({ target: 'Math', stat: true }, { + cbrt: function cbrt(x) { + return sign(x = +x) * pow(abs(x), 1 / 3); + } +}); diff --git a/core-js/modules/es.math.clz32.js b/core-js/modules/es.math.clz32.js new file mode 100644 index 0000000000..7a18e64af6 --- /dev/null +++ b/core-js/modules/es.math.clz32.js @@ -0,0 +1,13 @@ +var $ = require('../internals/export'); + +var floor = Math.floor; +var log = Math.log; +var LOG2E = Math.LOG2E; + +// `Math.clz32` method +// https://tc39.github.io/ecma262/#sec-math.clz32 +$({ target: 'Math', stat: true }, { + clz32: function clz32(x) { + return (x >>>= 0) ? 31 - floor(log(x + 0.5) * LOG2E) : 32; + } +}); diff --git a/core-js/modules/es.math.cosh.js b/core-js/modules/es.math.cosh.js new file mode 100644 index 0000000000..0c7322a2f8 --- /dev/null +++ b/core-js/modules/es.math.cosh.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var expm1 = require('../internals/math-expm1'); + +var nativeCosh = Math.cosh; +var abs = Math.abs; +var E = Math.E; + +// `Math.cosh` method +// https://tc39.github.io/ecma262/#sec-math.cosh +$({ target: 'Math', stat: true, forced: !nativeCosh || nativeCosh(710) === Infinity }, { + cosh: function cosh(x) { + var t = expm1(abs(x) - 1) + 1; + return (t + 1 / (t * E * E)) * (E / 2); + } +}); diff --git a/core-js/modules/es.math.expm1.js b/core-js/modules/es.math.expm1.js new file mode 100644 index 0000000000..956eb6f129 --- /dev/null +++ b/core-js/modules/es.math.expm1.js @@ -0,0 +1,6 @@ +var $ = require('../internals/export'); +var expm1 = require('../internals/math-expm1'); + +// `Math.expm1` method +// https://tc39.github.io/ecma262/#sec-math.expm1 +$({ target: 'Math', stat: true, forced: expm1 != Math.expm1 }, { expm1: expm1 }); diff --git a/core-js/modules/es.math.fround.js b/core-js/modules/es.math.fround.js new file mode 100644 index 0000000000..5df62db8b0 --- /dev/null +++ b/core-js/modules/es.math.fround.js @@ -0,0 +1,6 @@ +var $ = require('../internals/export'); +var fround = require('../internals/math-fround'); + +// `Math.fround` method +// https://tc39.github.io/ecma262/#sec-math.fround +$({ target: 'Math', stat: true }, { fround: fround }); diff --git a/core-js/modules/es.math.hypot.js b/core-js/modules/es.math.hypot.js new file mode 100644 index 0000000000..0e8d17b46d --- /dev/null +++ b/core-js/modules/es.math.hypot.js @@ -0,0 +1,33 @@ +var $ = require('../internals/export'); + +var $hypot = Math.hypot; +var abs = Math.abs; +var sqrt = Math.sqrt; + +// Chrome 77 bug +// https://bugs.chromium.org/p/v8/issues/detail?id=9546 +var BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity; + +// `Math.hypot` method +// https://tc39.github.io/ecma262/#sec-math.hypot +$({ target: 'Math', stat: true, forced: BUGGY }, { + hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars + var sum = 0; + var i = 0; + var aLen = arguments.length; + var larg = 0; + var arg, div; + while (i < aLen) { + arg = abs(arguments[i++]); + if (larg < arg) { + div = larg / arg; + sum = sum * div * div + 1; + larg = arg; + } else if (arg > 0) { + div = arg / larg; + sum += div * div; + } else sum += arg; + } + return larg === Infinity ? Infinity : larg * sqrt(sum); + } +}); diff --git a/core-js/modules/es.math.imul.js b/core-js/modules/es.math.imul.js new file mode 100644 index 0000000000..3882a3e3a2 --- /dev/null +++ b/core-js/modules/es.math.imul.js @@ -0,0 +1,22 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); + +var nativeImul = Math.imul; + +var FORCED = fails(function () { + return nativeImul(0xFFFFFFFF, 5) != -5 || nativeImul.length != 2; +}); + +// `Math.imul` method +// https://tc39.github.io/ecma262/#sec-math.imul +// some WebKit versions fails with big numbers, some has wrong arity +$({ target: 'Math', stat: true, forced: FORCED }, { + imul: function imul(x, y) { + var UINT16 = 0xFFFF; + var xn = +x; + var yn = +y; + var xl = UINT16 & xn; + var yl = UINT16 & yn; + return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); + } +}); diff --git a/core-js/modules/es.math.log10.js b/core-js/modules/es.math.log10.js new file mode 100644 index 0000000000..86ba3db424 --- /dev/null +++ b/core-js/modules/es.math.log10.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); + +var log = Math.log; +var LOG10E = Math.LOG10E; + +// `Math.log10` method +// https://tc39.github.io/ecma262/#sec-math.log10 +$({ target: 'Math', stat: true }, { + log10: function log10(x) { + return log(x) * LOG10E; + } +}); diff --git a/core-js/modules/es.math.log1p.js b/core-js/modules/es.math.log1p.js new file mode 100644 index 0000000000..0327661844 --- /dev/null +++ b/core-js/modules/es.math.log1p.js @@ -0,0 +1,6 @@ +var $ = require('../internals/export'); +var log1p = require('../internals/math-log1p'); + +// `Math.log1p` method +// https://tc39.github.io/ecma262/#sec-math.log1p +$({ target: 'Math', stat: true }, { log1p: log1p }); diff --git a/core-js/modules/es.math.log2.js b/core-js/modules/es.math.log2.js new file mode 100644 index 0000000000..22fcedf4f1 --- /dev/null +++ b/core-js/modules/es.math.log2.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); + +var log = Math.log; +var LN2 = Math.LN2; + +// `Math.log2` method +// https://tc39.github.io/ecma262/#sec-math.log2 +$({ target: 'Math', stat: true }, { + log2: function log2(x) { + return log(x) / LN2; + } +}); diff --git a/core-js/modules/es.math.sign.js b/core-js/modules/es.math.sign.js new file mode 100644 index 0000000000..19e3a782d3 --- /dev/null +++ b/core-js/modules/es.math.sign.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var sign = require('../internals/math-sign'); + +// `Math.sign` method +// https://tc39.github.io/ecma262/#sec-math.sign +$({ target: 'Math', stat: true }, { + sign: sign +}); diff --git a/core-js/modules/es.math.sinh.js b/core-js/modules/es.math.sinh.js new file mode 100644 index 0000000000..11ba610675 --- /dev/null +++ b/core-js/modules/es.math.sinh.js @@ -0,0 +1,20 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var expm1 = require('../internals/math-expm1'); + +var abs = Math.abs; +var exp = Math.exp; +var E = Math.E; + +var FORCED = fails(function () { + return Math.sinh(-2e-17) != -2e-17; +}); + +// `Math.sinh` method +// https://tc39.github.io/ecma262/#sec-math.sinh +// V8 near Chromium 38 has a problem with very small numbers +$({ target: 'Math', stat: true, forced: FORCED }, { + sinh: function sinh(x) { + return abs(x = +x) < 1 ? (expm1(x) - expm1(-x)) / 2 : (exp(x - 1) - exp(-x - 1)) * (E / 2); + } +}); diff --git a/core-js/modules/es.math.tanh.js b/core-js/modules/es.math.tanh.js new file mode 100644 index 0000000000..3b574020ba --- /dev/null +++ b/core-js/modules/es.math.tanh.js @@ -0,0 +1,14 @@ +var $ = require('../internals/export'); +var expm1 = require('../internals/math-expm1'); + +var exp = Math.exp; + +// `Math.tanh` method +// https://tc39.github.io/ecma262/#sec-math.tanh +$({ target: 'Math', stat: true }, { + tanh: function tanh(x) { + var a = expm1(x = +x); + var b = expm1(-x); + return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x)); + } +}); diff --git a/core-js/modules/es.math.to-string-tag.js b/core-js/modules/es.math.to-string-tag.js new file mode 100644 index 0000000000..4ab08116d6 --- /dev/null +++ b/core-js/modules/es.math.to-string-tag.js @@ -0,0 +1,5 @@ +var setToStringTag = require('../internals/set-to-string-tag'); + +// Math[@@toStringTag] property +// https://tc39.github.io/ecma262/#sec-math-@@tostringtag +setToStringTag(Math, 'Math', true); diff --git a/core-js/modules/es.math.trunc.js b/core-js/modules/es.math.trunc.js new file mode 100644 index 0000000000..0e8351d914 --- /dev/null +++ b/core-js/modules/es.math.trunc.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); + +var ceil = Math.ceil; +var floor = Math.floor; + +// `Math.trunc` method +// https://tc39.github.io/ecma262/#sec-math.trunc +$({ target: 'Math', stat: true }, { + trunc: function trunc(it) { + return (it > 0 ? floor : ceil)(it); + } +}); diff --git a/core-js/modules/es.number.constructor.js b/core-js/modules/es.number.constructor.js new file mode 100644 index 0000000000..f906f8b3cc --- /dev/null +++ b/core-js/modules/es.number.constructor.js @@ -0,0 +1,78 @@ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var global = require('../internals/global'); +var isForced = require('../internals/is-forced'); +var redefine = require('../internals/redefine'); +var has = require('../internals/has'); +var classof = require('../internals/classof-raw'); +var inheritIfRequired = require('../internals/inherit-if-required'); +var toPrimitive = require('../internals/to-primitive'); +var fails = require('../internals/fails'); +var create = require('../internals/object-create'); +var getOwnPropertyNames = require('../internals/object-get-own-property-names').f; +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; +var defineProperty = require('../internals/object-define-property').f; +var trim = require('../internals/string-trim').trim; + +var NUMBER = 'Number'; +var NativeNumber = global[NUMBER]; +var NumberPrototype = NativeNumber.prototype; + +// Opera ~12 has broken Object#toString +var BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER; + +// `ToNumber` abstract operation +// https://tc39.github.io/ecma262/#sec-tonumber +var toNumber = function (argument) { + var it = toPrimitive(argument, false); + var first, third, radix, maxCode, digits, length, index, code; + if (typeof it == 'string' && it.length > 2) { + it = trim(it); + first = it.charCodeAt(0); + if (first === 43 || first === 45) { + third = it.charCodeAt(2); + if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix + } else if (first === 48) { + switch (it.charCodeAt(1)) { + case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i + case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i + default: return +it; + } + digits = it.slice(2); + length = digits.length; + for (index = 0; index < length; index++) { + code = digits.charCodeAt(index); + // parseInt parses a string to a first unavailable symbol + // but ToNumber should return NaN if a string contains unavailable symbols + if (code < 48 || code > maxCode) return NaN; + } return parseInt(digits, radix); + } + } return +it; +}; + +// `Number` constructor +// https://tc39.github.io/ecma262/#sec-number-constructor +if (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) { + var NumberWrapper = function Number(value) { + var it = arguments.length < 1 ? 0 : value; + var dummy = this; + return dummy instanceof NumberWrapper + // check on 1..constructor(foo) case + && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER) + ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it); + }; + for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : ( + // ES3: + 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + + // ES2015 (in case, if modules with ES2015 Number statics required before): + 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger' + ).split(','), j = 0, key; keys.length > j; j++) { + if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) { + defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key)); + } + } + NumberWrapper.prototype = NumberPrototype; + NumberPrototype.constructor = NumberWrapper; + redefine(global, NUMBER, NumberWrapper); +} diff --git a/core-js/modules/es.number.epsilon.js b/core-js/modules/es.number.epsilon.js new file mode 100644 index 0000000000..b60272493f --- /dev/null +++ b/core-js/modules/es.number.epsilon.js @@ -0,0 +1,7 @@ +var $ = require('../internals/export'); + +// `Number.EPSILON` constant +// https://tc39.github.io/ecma262/#sec-number.epsilon +$({ target: 'Number', stat: true }, { + EPSILON: Math.pow(2, -52) +}); diff --git a/core-js/modules/es.number.is-finite.js b/core-js/modules/es.number.is-finite.js new file mode 100644 index 0000000000..6308eb4d99 --- /dev/null +++ b/core-js/modules/es.number.is-finite.js @@ -0,0 +1,6 @@ +var $ = require('../internals/export'); +var numberIsFinite = require('../internals/number-is-finite'); + +// `Number.isFinite` method +// https://tc39.github.io/ecma262/#sec-number.isfinite +$({ target: 'Number', stat: true }, { isFinite: numberIsFinite }); diff --git a/core-js/modules/es.number.is-integer.js b/core-js/modules/es.number.is-integer.js new file mode 100644 index 0000000000..b15b7393de --- /dev/null +++ b/core-js/modules/es.number.is-integer.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var isInteger = require('../internals/is-integer'); + +// `Number.isInteger` method +// https://tc39.github.io/ecma262/#sec-number.isinteger +$({ target: 'Number', stat: true }, { + isInteger: isInteger +}); diff --git a/core-js/modules/es.number.is-nan.js b/core-js/modules/es.number.is-nan.js new file mode 100644 index 0000000000..f384acc678 --- /dev/null +++ b/core-js/modules/es.number.is-nan.js @@ -0,0 +1,10 @@ +var $ = require('../internals/export'); + +// `Number.isNaN` method +// https://tc39.github.io/ecma262/#sec-number.isnan +$({ target: 'Number', stat: true }, { + isNaN: function isNaN(number) { + // eslint-disable-next-line no-self-compare + return number != number; + } +}); diff --git a/core-js/modules/es.number.is-safe-integer.js b/core-js/modules/es.number.is-safe-integer.js new file mode 100644 index 0000000000..cea6704a18 --- /dev/null +++ b/core-js/modules/es.number.is-safe-integer.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); +var isInteger = require('../internals/is-integer'); + +var abs = Math.abs; + +// `Number.isSafeInteger` method +// https://tc39.github.io/ecma262/#sec-number.issafeinteger +$({ target: 'Number', stat: true }, { + isSafeInteger: function isSafeInteger(number) { + return isInteger(number) && abs(number) <= 0x1FFFFFFFFFFFFF; + } +}); diff --git a/core-js/modules/es.number.max-safe-integer.js b/core-js/modules/es.number.max-safe-integer.js new file mode 100644 index 0000000000..7fc5890262 --- /dev/null +++ b/core-js/modules/es.number.max-safe-integer.js @@ -0,0 +1,7 @@ +var $ = require('../internals/export'); + +// `Number.MAX_SAFE_INTEGER` constant +// https://tc39.github.io/ecma262/#sec-number.max_safe_integer +$({ target: 'Number', stat: true }, { + MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF +}); diff --git a/core-js/modules/es.number.min-safe-integer.js b/core-js/modules/es.number.min-safe-integer.js new file mode 100644 index 0000000000..500a8f678a --- /dev/null +++ b/core-js/modules/es.number.min-safe-integer.js @@ -0,0 +1,7 @@ +var $ = require('../internals/export'); + +// `Number.MIN_SAFE_INTEGER` constant +// https://tc39.github.io/ecma262/#sec-number.min_safe_integer +$({ target: 'Number', stat: true }, { + MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF +}); diff --git a/core-js/modules/es.number.parse-float.js b/core-js/modules/es.number.parse-float.js new file mode 100644 index 0000000000..9d88958026 --- /dev/null +++ b/core-js/modules/es.number.parse-float.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var parseFloat = require('../internals/parse-float'); + +// `Number.parseFloat` method +// https://tc39.github.io/ecma262/#sec-number.parseFloat +$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, { + parseFloat: parseFloat +}); diff --git a/core-js/modules/es.number.parse-int.js b/core-js/modules/es.number.parse-int.js new file mode 100644 index 0000000000..c8fcc545e3 --- /dev/null +++ b/core-js/modules/es.number.parse-int.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var parseInt = require('../internals/parse-int'); + +// `Number.parseInt` method +// https://tc39.github.io/ecma262/#sec-number.parseint +$({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, { + parseInt: parseInt +}); diff --git a/core-js/modules/es.number.to-fixed.js b/core-js/modules/es.number.to-fixed.js new file mode 100644 index 0000000000..fa4d3e279d --- /dev/null +++ b/core-js/modules/es.number.to-fixed.js @@ -0,0 +1,126 @@ +'use strict'; +var $ = require('../internals/export'); +var toInteger = require('../internals/to-integer'); +var thisNumberValue = require('../internals/this-number-value'); +var repeat = require('../internals/string-repeat'); +var fails = require('../internals/fails'); + +var nativeToFixed = 1.0.toFixed; +var floor = Math.floor; + +var pow = function (x, n, acc) { + return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc); +}; + +var log = function (x) { + var n = 0; + var x2 = x; + while (x2 >= 4096) { + n += 12; + x2 /= 4096; + } + while (x2 >= 2) { + n += 1; + x2 /= 2; + } return n; +}; + +var FORCED = nativeToFixed && ( + 0.00008.toFixed(3) !== '0.000' || + 0.9.toFixed(0) !== '1' || + 1.255.toFixed(2) !== '1.25' || + 1000000000000000128.0.toFixed(0) !== '1000000000000000128' +) || !fails(function () { + // V8 ~ Android 4.3- + nativeToFixed.call({}); +}); + +// `Number.prototype.toFixed` method +// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed +$({ target: 'Number', proto: true, forced: FORCED }, { + // eslint-disable-next-line max-statements + toFixed: function toFixed(fractionDigits) { + var number = thisNumberValue(this); + var fractDigits = toInteger(fractionDigits); + var data = [0, 0, 0, 0, 0, 0]; + var sign = ''; + var result = '0'; + var e, z, j, k; + + var multiply = function (n, c) { + var index = -1; + var c2 = c; + while (++index < 6) { + c2 += n * data[index]; + data[index] = c2 % 1e7; + c2 = floor(c2 / 1e7); + } + }; + + var divide = function (n) { + var index = 6; + var c = 0; + while (--index >= 0) { + c += data[index]; + data[index] = floor(c / n); + c = (c % n) * 1e7; + } + }; + + var dataToString = function () { + var index = 6; + var s = ''; + while (--index >= 0) { + if (s !== '' || index === 0 || data[index] !== 0) { + var t = String(data[index]); + s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t; + } + } return s; + }; + + if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits'); + // eslint-disable-next-line no-self-compare + if (number != number) return 'NaN'; + if (number <= -1e21 || number >= 1e21) return String(number); + if (number < 0) { + sign = '-'; + number = -number; + } + if (number > 1e-21) { + e = log(number * pow(2, 69, 1)) - 69; + z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1); + z *= 0x10000000000000; + e = 52 - e; + if (e > 0) { + multiply(0, z); + j = fractDigits; + while (j >= 7) { + multiply(1e7, 0); + j -= 7; + } + multiply(pow(10, j, 1), 0); + j = e - 1; + while (j >= 23) { + divide(1 << 23); + j -= 23; + } + divide(1 << j); + multiply(1, 1); + divide(2); + result = dataToString(); + } else { + multiply(0, z); + multiply(1 << -e, 0); + result = dataToString() + repeat.call('0', fractDigits); + } + } + if (fractDigits > 0) { + k = result.length; + result = sign + (k <= fractDigits + ? '0.' + repeat.call('0', fractDigits - k) + result + : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits)); + } else { + result = sign + result; + } return result; + } +}); diff --git a/core-js/modules/es.number.to-precision.js b/core-js/modules/es.number.to-precision.js new file mode 100644 index 0000000000..710829680f --- /dev/null +++ b/core-js/modules/es.number.to-precision.js @@ -0,0 +1,24 @@ +'use strict'; +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var thisNumberValue = require('../internals/this-number-value'); + +var nativeToPrecision = 1.0.toPrecision; + +var FORCED = fails(function () { + // IE7- + return nativeToPrecision.call(1, undefined) !== '1'; +}) || !fails(function () { + // V8 ~ Android 4.3- + nativeToPrecision.call({}); +}); + +// `Number.prototype.toPrecision` method +// https://tc39.github.io/ecma262/#sec-number.prototype.toprecision +$({ target: 'Number', proto: true, forced: FORCED }, { + toPrecision: function toPrecision(precision) { + return precision === undefined + ? nativeToPrecision.call(thisNumberValue(this)) + : nativeToPrecision.call(thisNumberValue(this), precision); + } +}); diff --git a/core-js/modules/es.object.assign.js b/core-js/modules/es.object.assign.js new file mode 100644 index 0000000000..5b00e6ae94 --- /dev/null +++ b/core-js/modules/es.object.assign.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var assign = require('../internals/object-assign'); + +// `Object.assign` method +// https://tc39.github.io/ecma262/#sec-object.assign +$({ target: 'Object', stat: true, forced: Object.assign !== assign }, { + assign: assign +}); diff --git a/core-js/modules/es.object.create.js b/core-js/modules/es.object.create.js new file mode 100644 index 0000000000..3c278691f9 --- /dev/null +++ b/core-js/modules/es.object.create.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var create = require('../internals/object-create'); + +// `Object.create` method +// https://tc39.github.io/ecma262/#sec-object.create +$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, { + create: create +}); diff --git a/core-js/modules/es.object.define-getter.js b/core-js/modules/es.object.define-getter.js new file mode 100644 index 0000000000..6cf5974998 --- /dev/null +++ b/core-js/modules/es.object.define-getter.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var FORCED = require('../internals/forced-object-prototype-accessors-methods'); +var toObject = require('../internals/to-object'); +var aFunction = require('../internals/a-function'); +var definePropertyModule = require('../internals/object-define-property'); + +// `Object.prototype.__defineGetter__` method +// https://tc39.github.io/ecma262/#sec-object.prototype.__defineGetter__ +if (DESCRIPTORS) { + $({ target: 'Object', proto: true, forced: FORCED }, { + __defineGetter__: function __defineGetter__(P, getter) { + definePropertyModule.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true }); + } + }); +} diff --git a/core-js/modules/es.object.define-properties.js b/core-js/modules/es.object.define-properties.js new file mode 100644 index 0000000000..9400799feb --- /dev/null +++ b/core-js/modules/es.object.define-properties.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var defineProperties = require('../internals/object-define-properties'); + +// `Object.defineProperties` method +// https://tc39.github.io/ecma262/#sec-object.defineproperties +$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, { + defineProperties: defineProperties +}); diff --git a/core-js/modules/es.object.define-property.js b/core-js/modules/es.object.define-property.js new file mode 100644 index 0000000000..19fcf5b379 --- /dev/null +++ b/core-js/modules/es.object.define-property.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var objectDefinePropertyModile = require('../internals/object-define-property'); + +// `Object.defineProperty` method +// https://tc39.github.io/ecma262/#sec-object.defineproperty +$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, { + defineProperty: objectDefinePropertyModile.f +}); diff --git a/core-js/modules/es.object.define-setter.js b/core-js/modules/es.object.define-setter.js new file mode 100644 index 0000000000..c0860d5895 --- /dev/null +++ b/core-js/modules/es.object.define-setter.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var FORCED = require('../internals/forced-object-prototype-accessors-methods'); +var toObject = require('../internals/to-object'); +var aFunction = require('../internals/a-function'); +var definePropertyModule = require('../internals/object-define-property'); + +// `Object.prototype.__defineSetter__` method +// https://tc39.github.io/ecma262/#sec-object.prototype.__defineSetter__ +if (DESCRIPTORS) { + $({ target: 'Object', proto: true, forced: FORCED }, { + __defineSetter__: function __defineSetter__(P, setter) { + definePropertyModule.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true }); + } + }); +} diff --git a/core-js/modules/es.object.entries.js b/core-js/modules/es.object.entries.js new file mode 100644 index 0000000000..a22e693bb7 --- /dev/null +++ b/core-js/modules/es.object.entries.js @@ -0,0 +1,10 @@ +var $ = require('../internals/export'); +var $entries = require('../internals/object-to-array').entries; + +// `Object.entries` method +// https://tc39.github.io/ecma262/#sec-object.entries +$({ target: 'Object', stat: true }, { + entries: function entries(O) { + return $entries(O); + } +}); diff --git a/core-js/modules/es.object.freeze.js b/core-js/modules/es.object.freeze.js new file mode 100644 index 0000000000..0a623bdc69 --- /dev/null +++ b/core-js/modules/es.object.freeze.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var FREEZING = require('../internals/freezing'); +var fails = require('../internals/fails'); +var isObject = require('../internals/is-object'); +var onFreeze = require('../internals/internal-metadata').onFreeze; + +var nativeFreeze = Object.freeze; +var FAILS_ON_PRIMITIVES = fails(function () { nativeFreeze(1); }); + +// `Object.freeze` method +// https://tc39.github.io/ecma262/#sec-object.freeze +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { + freeze: function freeze(it) { + return nativeFreeze && isObject(it) ? nativeFreeze(onFreeze(it)) : it; + } +}); diff --git a/core-js/modules/es.object.from-entries.js b/core-js/modules/es.object.from-entries.js new file mode 100644 index 0000000000..2886e81f87 --- /dev/null +++ b/core-js/modules/es.object.from-entries.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var iterate = require('../internals/iterate'); +var createProperty = require('../internals/create-property'); + +// `Object.fromEntries` method +// https://github.com/tc39/proposal-object-from-entries +$({ target: 'Object', stat: true }, { + fromEntries: function fromEntries(iterable) { + var obj = {}; + iterate(iterable, function (k, v) { + createProperty(obj, k, v); + }, undefined, true); + return obj; + } +}); diff --git a/core-js/modules/es.object.get-own-property-descriptor.js b/core-js/modules/es.object.get-own-property-descriptor.js new file mode 100644 index 0000000000..bfeeb888a3 --- /dev/null +++ b/core-js/modules/es.object.get-own-property-descriptor.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var toIndexedObject = require('../internals/to-indexed-object'); +var nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; +var DESCRIPTORS = require('../internals/descriptors'); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); }); +var FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES; + +// `Object.getOwnPropertyDescriptor` method +// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor +$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { + return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key); + } +}); diff --git a/core-js/modules/es.object.get-own-property-descriptors.js b/core-js/modules/es.object.get-own-property-descriptors.js new file mode 100644 index 0000000000..e29c917b03 --- /dev/null +++ b/core-js/modules/es.object.get-own-property-descriptors.js @@ -0,0 +1,24 @@ +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var ownKeys = require('../internals/own-keys'); +var toIndexedObject = require('../internals/to-indexed-object'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var createProperty = require('../internals/create-property'); + +// `Object.getOwnPropertyDescriptors` method +// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors +$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { + var O = toIndexedObject(object); + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + var keys = ownKeys(O); + var result = {}; + var index = 0; + var key, descriptor; + while (keys.length > index) { + descriptor = getOwnPropertyDescriptor(O, key = keys[index++]); + if (descriptor !== undefined) createProperty(result, key, descriptor); + } + return result; + } +}); diff --git a/core-js/modules/es.object.get-own-property-names.js b/core-js/modules/es.object.get-own-property-names.js new file mode 100644 index 0000000000..6a52f45915 --- /dev/null +++ b/core-js/modules/es.object.get-own-property-names.js @@ -0,0 +1,11 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names-external').f; + +var FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); }); + +// `Object.getOwnPropertyNames` method +// https://tc39.github.io/ecma262/#sec-object.getownpropertynames +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + getOwnPropertyNames: nativeGetOwnPropertyNames +}); diff --git a/core-js/modules/es.object.get-prototype-of.js b/core-js/modules/es.object.get-prototype-of.js new file mode 100644 index 0000000000..7cbb548e6d --- /dev/null +++ b/core-js/modules/es.object.get-prototype-of.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var toObject = require('../internals/to-object'); +var nativeGetPrototypeOf = require('../internals/object-get-prototype-of'); +var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter'); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); }); + +// `Object.getPrototypeOf` method +// https://tc39.github.io/ecma262/#sec-object.getprototypeof +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, { + getPrototypeOf: function getPrototypeOf(it) { + return nativeGetPrototypeOf(toObject(it)); + } +}); + diff --git a/core-js/modules/es.object.is-extensible.js b/core-js/modules/es.object.is-extensible.js new file mode 100644 index 0000000000..556405b18b --- /dev/null +++ b/core-js/modules/es.object.is-extensible.js @@ -0,0 +1,14 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var isObject = require('../internals/is-object'); + +var nativeIsExtensible = Object.isExtensible; +var FAILS_ON_PRIMITIVES = fails(function () { nativeIsExtensible(1); }); + +// `Object.isExtensible` method +// https://tc39.github.io/ecma262/#sec-object.isextensible +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + isExtensible: function isExtensible(it) { + return isObject(it) ? nativeIsExtensible ? nativeIsExtensible(it) : true : false; + } +}); diff --git a/core-js/modules/es.object.is-frozen.js b/core-js/modules/es.object.is-frozen.js new file mode 100644 index 0000000000..060314de3e --- /dev/null +++ b/core-js/modules/es.object.is-frozen.js @@ -0,0 +1,14 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var isObject = require('../internals/is-object'); + +var nativeIsFrozen = Object.isFrozen; +var FAILS_ON_PRIMITIVES = fails(function () { nativeIsFrozen(1); }); + +// `Object.isFrozen` method +// https://tc39.github.io/ecma262/#sec-object.isfrozen +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + isFrozen: function isFrozen(it) { + return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true; + } +}); diff --git a/core-js/modules/es.object.is-sealed.js b/core-js/modules/es.object.is-sealed.js new file mode 100644 index 0000000000..0f8b95f410 --- /dev/null +++ b/core-js/modules/es.object.is-sealed.js @@ -0,0 +1,14 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var isObject = require('../internals/is-object'); + +var nativeIsSealed = Object.isSealed; +var FAILS_ON_PRIMITIVES = fails(function () { nativeIsSealed(1); }); + +// `Object.isSealed` method +// https://tc39.github.io/ecma262/#sec-object.issealed +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + isSealed: function isSealed(it) { + return isObject(it) ? nativeIsSealed ? nativeIsSealed(it) : false : true; + } +}); diff --git a/core-js/modules/es.object.is.js b/core-js/modules/es.object.is.js new file mode 100644 index 0000000000..9ef6f0af61 --- /dev/null +++ b/core-js/modules/es.object.is.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var is = require('../internals/same-value'); + +// `Object.is` method +// https://tc39.github.io/ecma262/#sec-object.is +$({ target: 'Object', stat: true }, { + is: is +}); diff --git a/core-js/modules/es.object.keys.js b/core-js/modules/es.object.keys.js new file mode 100644 index 0000000000..dc2488402d --- /dev/null +++ b/core-js/modules/es.object.keys.js @@ -0,0 +1,14 @@ +var $ = require('../internals/export'); +var toObject = require('../internals/to-object'); +var nativeKeys = require('../internals/object-keys'); +var fails = require('../internals/fails'); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); }); + +// `Object.keys` method +// https://tc39.github.io/ecma262/#sec-object.keys +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + keys: function keys(it) { + return nativeKeys(toObject(it)); + } +}); diff --git a/core-js/modules/es.object.lookup-getter.js b/core-js/modules/es.object.lookup-getter.js new file mode 100644 index 0000000000..58743ac3c5 --- /dev/null +++ b/core-js/modules/es.object.lookup-getter.js @@ -0,0 +1,23 @@ +'use strict'; +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var FORCED = require('../internals/forced-object-prototype-accessors-methods'); +var toObject = require('../internals/to-object'); +var toPrimitive = require('../internals/to-primitive'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; + +// `Object.prototype.__lookupGetter__` method +// https://tc39.github.io/ecma262/#sec-object.prototype.__lookupGetter__ +if (DESCRIPTORS) { + $({ target: 'Object', proto: true, forced: FORCED }, { + __lookupGetter__: function __lookupGetter__(P) { + var O = toObject(this); + var key = toPrimitive(P, true); + var desc; + do { + if (desc = getOwnPropertyDescriptor(O, key)) return desc.get; + } while (O = getPrototypeOf(O)); + } + }); +} diff --git a/core-js/modules/es.object.lookup-setter.js b/core-js/modules/es.object.lookup-setter.js new file mode 100644 index 0000000000..e469c45c1d --- /dev/null +++ b/core-js/modules/es.object.lookup-setter.js @@ -0,0 +1,23 @@ +'use strict'; +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var FORCED = require('../internals/forced-object-prototype-accessors-methods'); +var toObject = require('../internals/to-object'); +var toPrimitive = require('../internals/to-primitive'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; + +// `Object.prototype.__lookupSetter__` method +// https://tc39.github.io/ecma262/#sec-object.prototype.__lookupSetter__ +if (DESCRIPTORS) { + $({ target: 'Object', proto: true, forced: FORCED }, { + __lookupSetter__: function __lookupSetter__(P) { + var O = toObject(this); + var key = toPrimitive(P, true); + var desc; + do { + if (desc = getOwnPropertyDescriptor(O, key)) return desc.set; + } while (O = getPrototypeOf(O)); + } + }); +} diff --git a/core-js/modules/es.object.prevent-extensions.js b/core-js/modules/es.object.prevent-extensions.js new file mode 100644 index 0000000000..bb7b268605 --- /dev/null +++ b/core-js/modules/es.object.prevent-extensions.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var isObject = require('../internals/is-object'); +var onFreeze = require('../internals/internal-metadata').onFreeze; +var FREEZING = require('../internals/freezing'); +var fails = require('../internals/fails'); + +var nativePreventExtensions = Object.preventExtensions; +var FAILS_ON_PRIMITIVES = fails(function () { nativePreventExtensions(1); }); + +// `Object.preventExtensions` method +// https://tc39.github.io/ecma262/#sec-object.preventextensions +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { + preventExtensions: function preventExtensions(it) { + return nativePreventExtensions && isObject(it) ? nativePreventExtensions(onFreeze(it)) : it; + } +}); diff --git a/core-js/modules/es.object.seal.js b/core-js/modules/es.object.seal.js new file mode 100644 index 0000000000..35fae0c5b4 --- /dev/null +++ b/core-js/modules/es.object.seal.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var isObject = require('../internals/is-object'); +var onFreeze = require('../internals/internal-metadata').onFreeze; +var FREEZING = require('../internals/freezing'); +var fails = require('../internals/fails'); + +var nativeSeal = Object.seal; +var FAILS_ON_PRIMITIVES = fails(function () { nativeSeal(1); }); + +// `Object.seal` method +// https://tc39.github.io/ecma262/#sec-object.seal +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { + seal: function seal(it) { + return nativeSeal && isObject(it) ? nativeSeal(onFreeze(it)) : it; + } +}); diff --git a/core-js/modules/es.object.set-prototype-of.js b/core-js/modules/es.object.set-prototype-of.js new file mode 100644 index 0000000000..cbe0578d7b --- /dev/null +++ b/core-js/modules/es.object.set-prototype-of.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); + +// `Object.setPrototypeOf` method +// https://tc39.github.io/ecma262/#sec-object.setprototypeof +$({ target: 'Object', stat: true }, { + setPrototypeOf: setPrototypeOf +}); diff --git a/core-js/modules/es.object.to-string.js b/core-js/modules/es.object.to-string.js new file mode 100644 index 0000000000..0799517932 --- /dev/null +++ b/core-js/modules/es.object.to-string.js @@ -0,0 +1,10 @@ +var redefine = require('../internals/redefine'); +var toString = require('../internals/object-to-string'); + +var ObjectPrototype = Object.prototype; + +// `Object.prototype.toString` method +// https://tc39.github.io/ecma262/#sec-object.prototype.tostring +if (toString !== ObjectPrototype.toString) { + redefine(ObjectPrototype, 'toString', toString, { unsafe: true }); +} diff --git a/core-js/modules/es.object.values.js b/core-js/modules/es.object.values.js new file mode 100644 index 0000000000..a3074cf77d --- /dev/null +++ b/core-js/modules/es.object.values.js @@ -0,0 +1,10 @@ +var $ = require('../internals/export'); +var $values = require('../internals/object-to-array').values; + +// `Object.values` method +// https://tc39.github.io/ecma262/#sec-object.values +$({ target: 'Object', stat: true }, { + values: function values(O) { + return $values(O); + } +}); diff --git a/core-js/modules/es.parse-float.js b/core-js/modules/es.parse-float.js new file mode 100644 index 0000000000..48194b01f1 --- /dev/null +++ b/core-js/modules/es.parse-float.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var parseFloatImplementation = require('../internals/parse-float'); + +// `parseFloat` method +// https://tc39.github.io/ecma262/#sec-parsefloat-string +$({ global: true, forced: parseFloat != parseFloatImplementation }, { + parseFloat: parseFloatImplementation +}); diff --git a/core-js/modules/es.parse-int.js b/core-js/modules/es.parse-int.js new file mode 100644 index 0000000000..9e8051b403 --- /dev/null +++ b/core-js/modules/es.parse-int.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var parseIntImplementation = require('../internals/parse-int'); + +// `parseInt` method +// https://tc39.github.io/ecma262/#sec-parseint-string-radix +$({ global: true, forced: parseInt != parseIntImplementation }, { + parseInt: parseIntImplementation +}); diff --git a/core-js/modules/es.promise.all-settled.js b/core-js/modules/es.promise.all-settled.js new file mode 100644 index 0000000000..887f3a651f --- /dev/null +++ b/core-js/modules/es.promise.all-settled.js @@ -0,0 +1,43 @@ +'use strict'; +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var newPromiseCapabilityModule = require('../internals/new-promise-capability'); +var perform = require('../internals/perform'); +var iterate = require('../internals/iterate'); + +// `Promise.allSettled` method +// https://github.com/tc39/proposal-promise-allSettled +$({ target: 'Promise', stat: true }, { + allSettled: function allSettled(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var promiseResolve = aFunction(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + promiseResolve.call(C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = { status: 'fulfilled', value: value }; + --remaining || resolve(values); + }, function (e) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = { status: 'rejected', reason: e }; + --remaining || resolve(values); + }); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); diff --git a/core-js/modules/es.promise.finally.js b/core-js/modules/es.promise.finally.js new file mode 100644 index 0000000000..6c1ec7940a --- /dev/null +++ b/core-js/modules/es.promise.finally.js @@ -0,0 +1,30 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var NativePromise = require('../internals/native-promise-constructor'); +var getBuiltIn = require('../internals/get-built-in'); +var speciesConstructor = require('../internals/species-constructor'); +var promiseResolve = require('../internals/promise-resolve'); +var redefine = require('../internals/redefine'); + +// `Promise.prototype.finally` method +// https://tc39.github.io/ecma262/#sec-promise.prototype.finally +$({ target: 'Promise', proto: true, real: true }, { + 'finally': function (onFinally) { + var C = speciesConstructor(this, getBuiltIn('Promise')); + var isFunction = typeof onFinally == 'function'; + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); + } +}); + +// patch native Promise.prototype for native async functions +if (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) { + redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']); +} diff --git a/core-js/modules/es.promise.js b/core-js/modules/es.promise.js new file mode 100644 index 0000000000..b0d76c63aa --- /dev/null +++ b/core-js/modules/es.promise.js @@ -0,0 +1,371 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var global = require('../internals/global'); +var path = require('../internals/path'); +var NativePromise = require('../internals/native-promise-constructor'); +var redefine = require('../internals/redefine'); +var redefineAll = require('../internals/redefine-all'); +var setToStringTag = require('../internals/set-to-string-tag'); +var setSpecies = require('../internals/set-species'); +var isObject = require('../internals/is-object'); +var aFunction = require('../internals/a-function'); +var anInstance = require('../internals/an-instance'); +var classof = require('../internals/classof-raw'); +var iterate = require('../internals/iterate'); +var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); +var speciesConstructor = require('../internals/species-constructor'); +var task = require('../internals/task').set; +var microtask = require('../internals/microtask'); +var promiseResolve = require('../internals/promise-resolve'); +var hostReportErrors = require('../internals/host-report-errors'); +var newPromiseCapabilityModule = require('../internals/new-promise-capability'); +var perform = require('../internals/perform'); +var userAgent = require('../internals/user-agent'); +var InternalStateModule = require('../internals/internal-state'); +var isForced = require('../internals/is-forced'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var SPECIES = wellKnownSymbol('species'); +var PROMISE = 'Promise'; +var getInternalState = InternalStateModule.get; +var setInternalState = InternalStateModule.set; +var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); +var PromiseConstructor = NativePromise; +var TypeError = global.TypeError; +var document = global.document; +var process = global.process; +var $fetch = global.fetch; +var versions = process && process.versions; +var v8 = versions && versions.v8 || ''; +var newPromiseCapability = newPromiseCapabilityModule.f; +var newGenericPromiseCapability = newPromiseCapability; +var IS_NODE = classof(process) == 'process'; +var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent); +var UNHANDLED_REJECTION = 'unhandledrejection'; +var REJECTION_HANDLED = 'rejectionhandled'; +var PENDING = 0; +var FULFILLED = 1; +var REJECTED = 2; +var HANDLED = 1; +var UNHANDLED = 2; +var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; + +var FORCED = isForced(PROMISE, function () { + // correct subclassing with @@species support + var promise = PromiseConstructor.resolve(1); + var empty = function () { /* empty */ }; + var FakePromise = (promise.constructor = {})[SPECIES] = function (exec) { + exec(empty, empty); + }; + // unhandled rejections tracking support, NodeJS Promise without it fails @@species test + return !((IS_NODE || typeof PromiseRejectionEvent == 'function') + && (!IS_PURE || promise['finally']) + && promise.then(empty) instanceof FakePromise + // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // we can't detect it synchronously, so just check versions + && v8.indexOf('6.6') !== 0 + && userAgent.indexOf('Chrome/66') === -1); +}); + +var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) { + PromiseConstructor.all(iterable)['catch'](function () { /* empty */ }); +}); + +// helpers +var isThenable = function (it) { + var then; + return isObject(it) && typeof (then = it.then) == 'function' ? then : false; +}; + +var notify = function (promise, state, isReject) { + if (state.notified) return; + state.notified = true; + var chain = state.reactions; + microtask(function () { + var value = state.value; + var ok = state.state == FULFILLED; + var index = 0; + // variable length - can't use forEach + while (chain.length > index) { + var reaction = chain[index++]; + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state); + state.rejection = HANDLED; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // can throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(TypeError('Promise-chain cycle')); + } else if (then = isThenable(result)) { + then.call(result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (error) { + if (domain && !exited) domain.exit(); + reject(error); + } + } + state.reactions = []; + state.notified = false; + if (isReject && !state.rejection) onUnhandled(promise, state); + }); +}; + +var dispatchEvent = function (name, promise, reason) { + var event, handler; + if (DISPATCH_EVENT) { + event = document.createEvent('Event'); + event.promise = promise; + event.reason = reason; + event.initEvent(name, false, true); + global.dispatchEvent(event); + } else event = { promise: promise, reason: reason }; + if (handler = global['on' + name]) handler(event); + else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); +}; + +var onUnhandled = function (promise, state) { + task.call(global, function () { + var value = state.value; + var IS_UNHANDLED = isUnhandled(state); + var result; + if (IS_UNHANDLED) { + result = perform(function () { + if (IS_NODE) { + process.emit('unhandledRejection', value, promise); + } else dispatchEvent(UNHANDLED_REJECTION, promise, value); + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; + if (result.error) throw result.value; + } + }); +}; + +var isUnhandled = function (state) { + return state.rejection !== HANDLED && !state.parent; +}; + +var onHandleUnhandled = function (promise, state) { + task.call(global, function () { + if (IS_NODE) { + process.emit('rejectionHandled', promise); + } else dispatchEvent(REJECTION_HANDLED, promise, state.value); + }); +}; + +var bind = function (fn, promise, state, unwrap) { + return function (value) { + fn(promise, state, value, unwrap); + }; +}; + +var internalReject = function (promise, state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + state.value = value; + state.state = REJECTED; + notify(promise, state, true); +}; + +var internalResolve = function (promise, state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + try { + if (promise === value) throw TypeError("Promise can't be resolved itself"); + var then = isThenable(value); + if (then) { + microtask(function () { + var wrapper = { done: false }; + try { + then.call(value, + bind(internalResolve, promise, wrapper, state), + bind(internalReject, promise, wrapper, state) + ); + } catch (error) { + internalReject(promise, wrapper, error, state); + } + }); + } else { + state.value = value; + state.state = FULFILLED; + notify(promise, state, false); + } + } catch (error) { + internalReject(promise, { done: false }, error, state); + } +}; + +// constructor polyfill +if (FORCED) { + // 25.4.3.1 Promise(executor) + PromiseConstructor = function Promise(executor) { + anInstance(this, PromiseConstructor, PROMISE); + aFunction(executor); + Internal.call(this); + var state = getInternalState(this); + try { + executor(bind(internalResolve, this, state), bind(internalReject, this, state)); + } catch (error) { + internalReject(this, state, error); + } + }; + // eslint-disable-next-line no-unused-vars + Internal = function Promise(executor) { + setInternalState(this, { + type: PROMISE, + done: false, + notified: false, + parent: false, + reactions: [], + rejection: false, + state: PENDING, + value: undefined + }); + }; + Internal.prototype = redefineAll(PromiseConstructor.prototype, { + // `Promise.prototype.then` method + // https://tc39.github.io/ecma262/#sec-promise.prototype.then + then: function then(onFulfilled, onRejected) { + var state = getInternalPromiseState(this); + var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); + reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; + reaction.fail = typeof onRejected == 'function' && onRejected; + reaction.domain = IS_NODE ? process.domain : undefined; + state.parent = true; + state.reactions.push(reaction); + if (state.state != PENDING) notify(this, state, false); + return reaction.promise; + }, + // `Promise.prototype.catch` method + // https://tc39.github.io/ecma262/#sec-promise.prototype.catch + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } + }); + OwnPromiseCapability = function () { + var promise = new Internal(); + var state = getInternalState(promise); + this.promise = promise; + this.resolve = bind(internalResolve, promise, state); + this.reject = bind(internalReject, promise, state); + }; + newPromiseCapabilityModule.f = newPromiseCapability = function (C) { + return C === PromiseConstructor || C === PromiseWrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; + + if (!IS_PURE && typeof NativePromise == 'function') { + nativeThen = NativePromise.prototype.then; + + // wrap native Promise#then for native async functions + redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) { + var that = this; + return new PromiseConstructor(function (resolve, reject) { + nativeThen.call(that, resolve, reject); + }).then(onFulfilled, onRejected); + }); + + // wrap fetch result + if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, { + // eslint-disable-next-line no-unused-vars + fetch: function fetch(input) { + return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments)); + } + }); + } +} + +$({ global: true, wrap: true, forced: FORCED }, { + Promise: PromiseConstructor +}); + +setToStringTag(PromiseConstructor, PROMISE, false, true); +setSpecies(PROMISE); + +PromiseWrapper = path[PROMISE]; + +// statics +$({ target: PROMISE, stat: true, forced: FORCED }, { + // `Promise.reject` method + // https://tc39.github.io/ecma262/#sec-promise.reject + reject: function reject(r) { + var capability = newPromiseCapability(this); + capability.reject.call(undefined, r); + return capability.promise; + } +}); + +$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, { + // `Promise.resolve` method + // https://tc39.github.io/ecma262/#sec-promise.resolve + resolve: function resolve(x) { + return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x); + } +}); + +$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, { + // `Promise.all` method + // https://tc39.github.io/ecma262/#sec-promise.all + all: function all(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aFunction(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + $promiseResolve.call(C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + }, + // `Promise.race` method + // https://tc39.github.io/ecma262/#sec-promise.race + race: function race(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aFunction(C.resolve); + iterate(iterable, function (promise) { + $promiseResolve.call(C, promise).then(capability.resolve, reject); + }); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); diff --git a/core-js/modules/es.reflect.apply.js b/core-js/modules/es.reflect.apply.js new file mode 100644 index 0000000000..634222bb76 --- /dev/null +++ b/core-js/modules/es.reflect.apply.js @@ -0,0 +1,25 @@ +var $ = require('../internals/export'); +var getBuiltIn = require('../internals/get-built-in'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var fails = require('../internals/fails'); + +var nativeApply = getBuiltIn('Reflect', 'apply'); +var functionApply = Function.apply; + +// MS Edge argumentsList argument is optional +var OPTIONAL_ARGUMENTS_LIST = !fails(function () { + nativeApply(function () { /* empty */ }); +}); + +// `Reflect.apply` method +// https://tc39.github.io/ecma262/#sec-reflect.apply +$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, { + apply: function apply(target, thisArgument, argumentsList) { + aFunction(target); + anObject(argumentsList); + return nativeApply + ? nativeApply(target, thisArgument, argumentsList) + : functionApply.call(target, thisArgument, argumentsList); + } +}); diff --git a/core-js/modules/es.reflect.construct.js b/core-js/modules/es.reflect.construct.js new file mode 100644 index 0000000000..9e678ddb08 --- /dev/null +++ b/core-js/modules/es.reflect.construct.js @@ -0,0 +1,51 @@ +var $ = require('../internals/export'); +var getBuiltIn = require('../internals/get-built-in'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var isObject = require('../internals/is-object'); +var create = require('../internals/object-create'); +var bind = require('../internals/function-bind'); +var fails = require('../internals/fails'); + +var nativeConstruct = getBuiltIn('Reflect', 'construct'); + +// `Reflect.construct` method +// https://tc39.github.io/ecma262/#sec-reflect.construct +// MS Edge supports only 2 arguments and argumentsList argument is optional +// FF Nightly sets third argument as `new.target`, but does not create `this` from it +var NEW_TARGET_BUG = fails(function () { + function F() { /* empty */ } + return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F); +}); +var ARGS_BUG = !fails(function () { + nativeConstruct(function () { /* empty */ }); +}); +var FORCED = NEW_TARGET_BUG || ARGS_BUG; + +$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, { + construct: function construct(Target, args /* , newTarget */) { + aFunction(Target); + anObject(args); + var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]); + if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget); + if (Target == newTarget) { + // w/o altered newTarget, optimization for 0-4 arguments + switch (args.length) { + case 0: return new Target(); + case 1: return new Target(args[0]); + case 2: return new Target(args[0], args[1]); + case 3: return new Target(args[0], args[1], args[2]); + case 4: return new Target(args[0], args[1], args[2], args[3]); + } + // w/o altered newTarget, lot of arguments case + var $args = [null]; + $args.push.apply($args, args); + return new (bind.apply(Target, $args))(); + } + // with altered newTarget, not support built-in constructors + var proto = newTarget.prototype; + var instance = create(isObject(proto) ? proto : Object.prototype); + var result = Function.apply.call(Target, instance, args); + return isObject(result) ? result : instance; + } +}); diff --git a/core-js/modules/es.reflect.define-property.js b/core-js/modules/es.reflect.define-property.js new file mode 100644 index 0000000000..44343f799d --- /dev/null +++ b/core-js/modules/es.reflect.define-property.js @@ -0,0 +1,28 @@ +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var anObject = require('../internals/an-object'); +var toPrimitive = require('../internals/to-primitive'); +var definePropertyModule = require('../internals/object-define-property'); +var fails = require('../internals/fails'); + +// MS Edge has broken Reflect.defineProperty - throwing instead of returning false +var ERROR_INSTEAD_OF_FALSE = fails(function () { + // eslint-disable-next-line no-undef + Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 }); +}); + +// `Reflect.defineProperty` method +// https://tc39.github.io/ecma262/#sec-reflect.defineproperty +$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, { + defineProperty: function defineProperty(target, propertyKey, attributes) { + anObject(target); + var key = toPrimitive(propertyKey, true); + anObject(attributes); + try { + definePropertyModule.f(target, key, attributes); + return true; + } catch (error) { + return false; + } + } +}); diff --git a/core-js/modules/es.reflect.delete-property.js b/core-js/modules/es.reflect.delete-property.js new file mode 100644 index 0000000000..8cfb32d138 --- /dev/null +++ b/core-js/modules/es.reflect.delete-property.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; + +// `Reflect.deleteProperty` method +// https://tc39.github.io/ecma262/#sec-reflect.deleteproperty +$({ target: 'Reflect', stat: true }, { + deleteProperty: function deleteProperty(target, propertyKey) { + var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey); + return descriptor && !descriptor.configurable ? false : delete target[propertyKey]; + } +}); diff --git a/core-js/modules/es.reflect.get-own-property-descriptor.js b/core-js/modules/es.reflect.get-own-property-descriptor.js new file mode 100644 index 0000000000..335aac4221 --- /dev/null +++ b/core-js/modules/es.reflect.get-own-property-descriptor.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var anObject = require('../internals/an-object'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); + +// `Reflect.getOwnPropertyDescriptor` method +// https://tc39.github.io/ecma262/#sec-reflect.getownpropertydescriptor +$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) { + return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey); + } +}); diff --git a/core-js/modules/es.reflect.get-prototype-of.js b/core-js/modules/es.reflect.get-prototype-of.js new file mode 100644 index 0000000000..97859492bc --- /dev/null +++ b/core-js/modules/es.reflect.get-prototype-of.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var objectGetPrototypeOf = require('../internals/object-get-prototype-of'); +var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter'); + +// `Reflect.getPrototypeOf` method +// https://tc39.github.io/ecma262/#sec-reflect.getprototypeof +$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, { + getPrototypeOf: function getPrototypeOf(target) { + return objectGetPrototypeOf(anObject(target)); + } +}); diff --git a/core-js/modules/es.reflect.get.js b/core-js/modules/es.reflect.get.js new file mode 100644 index 0000000000..10e79628fc --- /dev/null +++ b/core-js/modules/es.reflect.get.js @@ -0,0 +1,24 @@ +var $ = require('../internals/export'); +var isObject = require('../internals/is-object'); +var anObject = require('../internals/an-object'); +var has = require('../internals/has'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); + +// `Reflect.get` method +// https://tc39.github.io/ecma262/#sec-reflect.get +function get(target, propertyKey /* , receiver */) { + var receiver = arguments.length < 3 ? target : arguments[2]; + var descriptor, prototype; + if (anObject(target) === receiver) return target[propertyKey]; + if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value') + ? descriptor.value + : descriptor.get === undefined + ? undefined + : descriptor.get.call(receiver); + if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver); +} + +$({ target: 'Reflect', stat: true }, { + get: get +}); diff --git a/core-js/modules/es.reflect.has.js b/core-js/modules/es.reflect.has.js new file mode 100644 index 0000000000..c6a8ced4da --- /dev/null +++ b/core-js/modules/es.reflect.has.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); + +// `Reflect.has` method +// https://tc39.github.io/ecma262/#sec-reflect.has +$({ target: 'Reflect', stat: true }, { + has: function has(target, propertyKey) { + return propertyKey in target; + } +}); diff --git a/core-js/modules/es.reflect.is-extensible.js b/core-js/modules/es.reflect.is-extensible.js new file mode 100644 index 0000000000..876eae3642 --- /dev/null +++ b/core-js/modules/es.reflect.is-extensible.js @@ -0,0 +1,13 @@ +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); + +var objectIsExtensible = Object.isExtensible; + +// `Reflect.isExtensible` method +// https://tc39.github.io/ecma262/#sec-reflect.isextensible +$({ target: 'Reflect', stat: true }, { + isExtensible: function isExtensible(target) { + anObject(target); + return objectIsExtensible ? objectIsExtensible(target) : true; + } +}); diff --git a/core-js/modules/es.reflect.own-keys.js b/core-js/modules/es.reflect.own-keys.js new file mode 100644 index 0000000000..7a8f3f0e7d --- /dev/null +++ b/core-js/modules/es.reflect.own-keys.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var ownKeys = require('../internals/own-keys'); + +// `Reflect.ownKeys` method +// https://tc39.github.io/ecma262/#sec-reflect.ownkeys +$({ target: 'Reflect', stat: true }, { + ownKeys: ownKeys +}); diff --git a/core-js/modules/es.reflect.prevent-extensions.js b/core-js/modules/es.reflect.prevent-extensions.js new file mode 100644 index 0000000000..92d04753cf --- /dev/null +++ b/core-js/modules/es.reflect.prevent-extensions.js @@ -0,0 +1,19 @@ +var $ = require('../internals/export'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var FREEZING = require('../internals/freezing'); + +// `Reflect.preventExtensions` method +// https://tc39.github.io/ecma262/#sec-reflect.preventextensions +$({ target: 'Reflect', stat: true, sham: !FREEZING }, { + preventExtensions: function preventExtensions(target) { + anObject(target); + try { + var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions'); + if (objectPreventExtensions) objectPreventExtensions(target); + return true; + } catch (error) { + return false; + } + } +}); diff --git a/core-js/modules/es.reflect.set-prototype-of.js b/core-js/modules/es.reflect.set-prototype-of.js new file mode 100644 index 0000000000..7900440cf0 --- /dev/null +++ b/core-js/modules/es.reflect.set-prototype-of.js @@ -0,0 +1,19 @@ +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var aPossiblePrototype = require('../internals/a-possible-prototype'); +var objectSetPrototypeOf = require('../internals/object-set-prototype-of'); + +// `Reflect.setPrototypeOf` method +// https://tc39.github.io/ecma262/#sec-reflect.setprototypeof +if (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, { + setPrototypeOf: function setPrototypeOf(target, proto) { + anObject(target); + aPossiblePrototype(proto); + try { + objectSetPrototypeOf(target, proto); + return true; + } catch (error) { + return false; + } + } +}); diff --git a/core-js/modules/es.reflect.set.js b/core-js/modules/es.reflect.set.js new file mode 100644 index 0000000000..29006fd757 --- /dev/null +++ b/core-js/modules/es.reflect.set.js @@ -0,0 +1,36 @@ +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var isObject = require('../internals/is-object'); +var has = require('../internals/has'); +var definePropertyModule = require('../internals/object-define-property'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); + +// `Reflect.set` method +// https://tc39.github.io/ecma262/#sec-reflect.set +function set(target, propertyKey, V /* , receiver */) { + var receiver = arguments.length < 4 ? target : arguments[3]; + var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey); + var existingDescriptor, prototype; + if (!ownDescriptor) { + if (isObject(prototype = getPrototypeOf(target))) { + return set(prototype, propertyKey, V, receiver); + } + ownDescriptor = createPropertyDescriptor(0); + } + if (has(ownDescriptor, 'value')) { + if (ownDescriptor.writable === false || !isObject(receiver)) return false; + if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) { + if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false; + existingDescriptor.value = V; + definePropertyModule.f(receiver, propertyKey, existingDescriptor); + } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V)); + return true; + } + return ownDescriptor.set === undefined ? false : (ownDescriptor.set.call(receiver, V), true); +} + +$({ target: 'Reflect', stat: true }, { + set: set +}); diff --git a/core-js/modules/es.regexp.constructor.js b/core-js/modules/es.regexp.constructor.js new file mode 100644 index 0000000000..05a3370f29 --- /dev/null +++ b/core-js/modules/es.regexp.constructor.js @@ -0,0 +1,60 @@ +var DESCRIPTORS = require('../internals/descriptors'); +var global = require('../internals/global'); +var isForced = require('../internals/is-forced'); +var inheritIfRequired = require('../internals/inherit-if-required'); +var defineProperty = require('../internals/object-define-property').f; +var getOwnPropertyNames = require('../internals/object-get-own-property-names').f; +var isRegExp = require('../internals/is-regexp'); +var getFlags = require('../internals/regexp-flags'); +var redefine = require('../internals/redefine'); +var fails = require('../internals/fails'); +var setSpecies = require('../internals/set-species'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var MATCH = wellKnownSymbol('match'); +var NativeRegExp = global.RegExp; +var RegExpPrototype = NativeRegExp.prototype; +var re1 = /a/g; +var re2 = /a/g; + +// "new" should create a new object, old webkit bug +var CORRECT_NEW = new NativeRegExp(re1) !== re1; + +var FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || fails(function () { + re2[MATCH] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i'; +}))); + +// `RegExp` constructor +// https://tc39.github.io/ecma262/#sec-regexp-constructor +if (FORCED) { + var RegExpWrapper = function RegExp(pattern, flags) { + var thisIsRegExp = this instanceof RegExpWrapper; + var patternIsRegExp = isRegExp(pattern); + var flagsAreUndefined = flags === undefined; + return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern + : inheritIfRequired(CORRECT_NEW + ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags) + : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper) + ? pattern.source + : pattern, patternIsRegExp && flagsAreUndefined ? getFlags.call(pattern) : flags) + , thisIsRegExp ? this : RegExpPrototype, RegExpWrapper); + }; + var proxy = function (key) { + key in RegExpWrapper || defineProperty(RegExpWrapper, key, { + configurable: true, + get: function () { return NativeRegExp[key]; }, + set: function (it) { NativeRegExp[key] = it; } + }); + }; + var keys = getOwnPropertyNames(NativeRegExp); + var index = 0; + while (keys.length > index) proxy(keys[index++]); + RegExpPrototype.constructor = RegExpWrapper; + RegExpWrapper.prototype = RegExpPrototype; + redefine(global, 'RegExp', RegExpWrapper); +} + +// https://tc39.github.io/ecma262/#sec-get-regexp-@@species +setSpecies('RegExp'); diff --git a/core-js/modules/es.regexp.exec.js b/core-js/modules/es.regexp.exec.js new file mode 100644 index 0000000000..d47a89d69f --- /dev/null +++ b/core-js/modules/es.regexp.exec.js @@ -0,0 +1,7 @@ +'use strict'; +var $ = require('../internals/export'); +var exec = require('../internals/regexp-exec'); + +$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { + exec: exec +}); diff --git a/core-js/modules/es.regexp.flags.js b/core-js/modules/es.regexp.flags.js new file mode 100644 index 0000000000..693b22a8b9 --- /dev/null +++ b/core-js/modules/es.regexp.flags.js @@ -0,0 +1,12 @@ +var DESCRIPTORS = require('../internals/descriptors'); +var objectDefinePropertyModule = require('../internals/object-define-property'); +var regExpFlags = require('../internals/regexp-flags'); + +// `RegExp.prototype.flags` getter +// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags +if (DESCRIPTORS && /./g.flags != 'g') { + objectDefinePropertyModule.f(RegExp.prototype, 'flags', { + configurable: true, + get: regExpFlags + }); +} diff --git a/core-js/modules/es.regexp.to-string.js b/core-js/modules/es.regexp.to-string.js new file mode 100644 index 0000000000..b75a79a959 --- /dev/null +++ b/core-js/modules/es.regexp.to-string.js @@ -0,0 +1,25 @@ +'use strict'; +var redefine = require('../internals/redefine'); +var anObject = require('../internals/an-object'); +var fails = require('../internals/fails'); +var flags = require('../internals/regexp-flags'); + +var TO_STRING = 'toString'; +var RegExpPrototype = RegExp.prototype; +var nativeToString = RegExpPrototype[TO_STRING]; + +var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; }); +// FF44- RegExp#toString has a wrong name +var INCORRECT_NAME = nativeToString.name != TO_STRING; + +// `RegExp.prototype.toString` method +// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring +if (NOT_GENERIC || INCORRECT_NAME) { + redefine(RegExp.prototype, TO_STRING, function toString() { + var R = anObject(this); + var p = String(R.source); + var rf = R.flags; + var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf); + return '/' + p + '/' + f; + }, { unsafe: true }); +} diff --git a/core-js/modules/es.set.js b/core-js/modules/es.set.js new file mode 100644 index 0000000000..962dc8185b --- /dev/null +++ b/core-js/modules/es.set.js @@ -0,0 +1,9 @@ +'use strict'; +var collection = require('../internals/collection'); +var collectionStrong = require('../internals/collection-strong'); + +// `Set` constructor +// https://tc39.github.io/ecma262/#sec-set-objects +module.exports = collection('Set', function (get) { + return function Set() { return get(this, arguments.length ? arguments[0] : undefined); }; +}, collectionStrong); diff --git a/core-js/modules/es.string.anchor.js b/core-js/modules/es.string.anchor.js new file mode 100644 index 0000000000..3a7fd0d9b0 --- /dev/null +++ b/core-js/modules/es.string.anchor.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.anchor` method +// https://tc39.github.io/ecma262/#sec-string.prototype.anchor +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, { + anchor: function anchor(name) { + return createHTML(this, 'a', 'name', name); + } +}); diff --git a/core-js/modules/es.string.big.js b/core-js/modules/es.string.big.js new file mode 100644 index 0000000000..3e530641a0 --- /dev/null +++ b/core-js/modules/es.string.big.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.big` method +// https://tc39.github.io/ecma262/#sec-string.prototype.big +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, { + big: function big() { + return createHTML(this, 'big', '', ''); + } +}); diff --git a/core-js/modules/es.string.blink.js b/core-js/modules/es.string.blink.js new file mode 100644 index 0000000000..fa4b7b547f --- /dev/null +++ b/core-js/modules/es.string.blink.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.blink` method +// https://tc39.github.io/ecma262/#sec-string.prototype.blink +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, { + blink: function blink() { + return createHTML(this, 'blink', '', ''); + } +}); diff --git a/core-js/modules/es.string.bold.js b/core-js/modules/es.string.bold.js new file mode 100644 index 0000000000..e0d07e0d39 --- /dev/null +++ b/core-js/modules/es.string.bold.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.bold` method +// https://tc39.github.io/ecma262/#sec-string.prototype.bold +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, { + bold: function bold() { + return createHTML(this, 'b', '', ''); + } +}); diff --git a/core-js/modules/es.string.code-point-at.js b/core-js/modules/es.string.code-point-at.js new file mode 100644 index 0000000000..26a2da2ef0 --- /dev/null +++ b/core-js/modules/es.string.code-point-at.js @@ -0,0 +1,11 @@ +'use strict'; +var $ = require('../internals/export'); +var codeAt = require('../internals/string-multibyte').codeAt; + +// `String.prototype.codePointAt` method +// https://tc39.github.io/ecma262/#sec-string.prototype.codepointat +$({ target: 'String', proto: true }, { + codePointAt: function codePointAt(pos) { + return codeAt(this, pos); + } +}); diff --git a/core-js/modules/es.string.ends-with.js b/core-js/modules/es.string.ends-with.js new file mode 100644 index 0000000000..7eee44b12f --- /dev/null +++ b/core-js/modules/es.string.ends-with.js @@ -0,0 +1,25 @@ +'use strict'; +var $ = require('../internals/export'); +var toLength = require('../internals/to-length'); +var notARegExp = require('../internals/not-a-regexp'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); + +var nativeEndsWith = ''.endsWith; +var min = Math.min; + +// `String.prototype.endsWith` method +// https://tc39.github.io/ecma262/#sec-string.prototype.endswith +$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('endsWith') }, { + endsWith: function endsWith(searchString /* , endPosition = @length */) { + var that = String(requireObjectCoercible(this)); + notARegExp(searchString); + var endPosition = arguments.length > 1 ? arguments[1] : undefined; + var len = toLength(that.length); + var end = endPosition === undefined ? len : min(toLength(endPosition), len); + var search = String(searchString); + return nativeEndsWith + ? nativeEndsWith.call(that, search, end) + : that.slice(end - search.length, end) === search; + } +}); diff --git a/core-js/modules/es.string.fixed.js b/core-js/modules/es.string.fixed.js new file mode 100644 index 0000000000..5e240e421c --- /dev/null +++ b/core-js/modules/es.string.fixed.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.fixed` method +// https://tc39.github.io/ecma262/#sec-string.prototype.fixed +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, { + fixed: function fixed() { + return createHTML(this, 'tt', '', ''); + } +}); diff --git a/core-js/modules/es.string.fontcolor.js b/core-js/modules/es.string.fontcolor.js new file mode 100644 index 0000000000..50b4f35780 --- /dev/null +++ b/core-js/modules/es.string.fontcolor.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.fontcolor` method +// https://tc39.github.io/ecma262/#sec-string.prototype.fontcolor +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, { + fontcolor: function fontcolor(color) { + return createHTML(this, 'font', 'color', color); + } +}); diff --git a/core-js/modules/es.string.fontsize.js b/core-js/modules/es.string.fontsize.js new file mode 100644 index 0000000000..dbf2826dae --- /dev/null +++ b/core-js/modules/es.string.fontsize.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.fontsize` method +// https://tc39.github.io/ecma262/#sec-string.prototype.fontsize +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, { + fontsize: function fontsize(size) { + return createHTML(this, 'font', 'size', size); + } +}); diff --git a/core-js/modules/es.string.from-code-point.js b/core-js/modules/es.string.from-code-point.js new file mode 100644 index 0000000000..139ed89190 --- /dev/null +++ b/core-js/modules/es.string.from-code-point.js @@ -0,0 +1,27 @@ +var $ = require('../internals/export'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); + +var fromCharCode = String.fromCharCode; +var nativeFromCodePoint = String.fromCodePoint; + +// length should be 1, old FF problem +var INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1; + +// `String.fromCodePoint` method +// https://tc39.github.io/ecma262/#sec-string.fromcodepoint +$({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, { + fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars + var elements = []; + var length = arguments.length; + var i = 0; + var code; + while (length > i) { + code = +arguments[i++]; + if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point'); + elements.push(code < 0x10000 + ? fromCharCode(code) + : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00) + ); + } return elements.join(''); + } +}); diff --git a/core-js/modules/es.string.includes.js b/core-js/modules/es.string.includes.js new file mode 100644 index 0000000000..25dbcd8d4e --- /dev/null +++ b/core-js/modules/es.string.includes.js @@ -0,0 +1,14 @@ +'use strict'; +var $ = require('../internals/export'); +var notARegExp = require('../internals/not-a-regexp'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); + +// `String.prototype.includes` method +// https://tc39.github.io/ecma262/#sec-string.prototype.includes +$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, { + includes: function includes(searchString /* , position = 0 */) { + return !!~String(requireObjectCoercible(this)) + .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/core-js/modules/es.string.italics.js b/core-js/modules/es.string.italics.js new file mode 100644 index 0000000000..ce66fbfc86 --- /dev/null +++ b/core-js/modules/es.string.italics.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.italics` method +// https://tc39.github.io/ecma262/#sec-string.prototype.italics +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, { + italics: function italics() { + return createHTML(this, 'i', '', ''); + } +}); diff --git a/core-js/modules/es.string.iterator.js b/core-js/modules/es.string.iterator.js new file mode 100644 index 0000000000..8a268e0e44 --- /dev/null +++ b/core-js/modules/es.string.iterator.js @@ -0,0 +1,29 @@ +'use strict'; +var charAt = require('../internals/string-multibyte').charAt; +var InternalStateModule = require('../internals/internal-state'); +var defineIterator = require('../internals/define-iterator'); + +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// `String.prototype[@@iterator]` method +// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator +defineIterator(String, 'String', function (iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: String(iterated), + index: 0 + }); +// `%StringIteratorPrototype%.next` method +// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next +}, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return { value: undefined, done: true }; + point = charAt(string, index); + state.index += point.length; + return { value: point, done: false }; +}); diff --git a/core-js/modules/es.string.link.js b/core-js/modules/es.string.link.js new file mode 100644 index 0000000000..fcd97bbef9 --- /dev/null +++ b/core-js/modules/es.string.link.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.link` method +// https://tc39.github.io/ecma262/#sec-string.prototype.link +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, { + link: function link(url) { + return createHTML(this, 'a', 'href', url); + } +}); diff --git a/core-js/modules/es.string.match-all.js b/core-js/modules/es.string.match-all.js new file mode 100644 index 0000000000..53bcc7bb03 --- /dev/null +++ b/core-js/modules/es.string.match-all.js @@ -0,0 +1,94 @@ +'use strict'; +var $ = require('../internals/export'); +var createIteratorConstructor = require('../internals/create-iterator-constructor'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var toLength = require('../internals/to-length'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var classof = require('../internals/classof'); +var getFlags = require('../internals/regexp-flags'); +var hide = require('../internals/hide'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var speciesConstructor = require('../internals/species-constructor'); +var advanceStringIndex = require('../internals/advance-string-index'); +var InternalStateModule = require('../internals/internal-state'); +var IS_PURE = require('../internals/is-pure'); + +var MATCH_ALL = wellKnownSymbol('matchAll'); +var REGEXP_STRING = 'RegExp String'; +var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR); +var RegExpPrototype = RegExp.prototype; +var regExpBuiltinExec = RegExpPrototype.exec; + +var regExpExec = function (R, S) { + var exec = R.exec; + var result; + if (typeof exec == 'function') { + result = exec.call(R, S); + if (typeof result != 'object') throw TypeError('Incorrect exec result'); + return result; + } return regExpBuiltinExec.call(R, S); +}; + +// eslint-disable-next-line max-len +var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, global, fullUnicode) { + setInternalState(this, { + type: REGEXP_STRING_ITERATOR, + regexp: regexp, + string: string, + global: global, + unicode: fullUnicode, + done: false + }); +}, REGEXP_STRING, function next() { + var state = getInternalState(this); + if (state.done) return { value: undefined, done: true }; + var R = state.regexp; + var S = state.string; + var match = regExpExec(R, S); + if (match === null) return { value: undefined, done: state.done = true }; + if (state.global) { + if (String(match[0]) == '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode); + return { value: match, done: false }; + } + state.done = true; + return { value: match, done: false }; +}); + +var $matchAll = function (string) { + var R = anObject(this); + var S = String(string); + var C, flagsValue, flags, matcher, global, fullUnicode; + C = speciesConstructor(R, RegExp); + flagsValue = R.flags; + if (flagsValue === undefined && R instanceof RegExp && !('flags' in RegExpPrototype)) { + flagsValue = getFlags.call(R); + } + flags = flagsValue === undefined ? '' : String(flagsValue); + matcher = new C(C === RegExp ? R.source : R, flags); + global = !!~flags.indexOf('g'); + fullUnicode = !!~flags.indexOf('u'); + matcher.lastIndex = toLength(R.lastIndex); + return new $RegExpStringIterator(matcher, S, global, fullUnicode); +}; + +// `String.prototype.matchAll` method +// https://github.com/tc39/proposal-string-matchall +$({ target: 'String', proto: true }, { + matchAll: function matchAll(regexp) { + var O = requireObjectCoercible(this); + var S, matcher, rx; + if (regexp != null) { + matcher = regexp[MATCH_ALL]; + if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll; + if (matcher != null) return aFunction(matcher).call(regexp, O); + } + S = String(O); + rx = new RegExp(regexp, 'g'); + return IS_PURE ? $matchAll.call(rx, S) : rx[MATCH_ALL](S); + } +}); + +IS_PURE || MATCH_ALL in RegExpPrototype || hide(RegExpPrototype, MATCH_ALL, $matchAll); diff --git a/core-js/modules/es.string.match.js b/core-js/modules/es.string.match.js new file mode 100644 index 0000000000..b69a2a278f --- /dev/null +++ b/core-js/modules/es.string.match.js @@ -0,0 +1,44 @@ +'use strict'; +var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic'); +var anObject = require('../internals/an-object'); +var toLength = require('../internals/to-length'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var advanceStringIndex = require('../internals/advance-string-index'); +var regExpExec = require('../internals/regexp-exec-abstract'); + +// @@match logic +fixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.github.io/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = requireObjectCoercible(this); + var matcher = regexp == undefined ? undefined : regexp[MATCH]; + return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match + function (regexp) { + var res = maybeCallNative(nativeMatch, regexp, this); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + + if (!rx.global) return regExpExec(rx, S); + + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regExpExec(rx, S)) !== null) { + var matchStr = String(result[0]); + A[n] = matchStr; + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + n++; + } + return n === 0 ? null : A; + } + ]; +}); diff --git a/core-js/modules/es.string.pad-end.js b/core-js/modules/es.string.pad-end.js new file mode 100644 index 0000000000..5880847261 --- /dev/null +++ b/core-js/modules/es.string.pad-end.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var $padEnd = require('../internals/string-pad').end; +var WEBKIT_BUG = require('../internals/webkit-string-pad-bug'); + +// `String.prototype.padEnd` method +// https://tc39.github.io/ecma262/#sec-string.prototype.padend +$({ target: 'String', proto: true, forced: WEBKIT_BUG }, { + padEnd: function padEnd(maxLength /* , fillString = ' ' */) { + return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/core-js/modules/es.string.pad-start.js b/core-js/modules/es.string.pad-start.js new file mode 100644 index 0000000000..13e265f0e1 --- /dev/null +++ b/core-js/modules/es.string.pad-start.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var $padStart = require('../internals/string-pad').start; +var WEBKIT_BUG = require('../internals/webkit-string-pad-bug'); + +// `String.prototype.padStart` method +// https://tc39.github.io/ecma262/#sec-string.prototype.padstart +$({ target: 'String', proto: true, forced: WEBKIT_BUG }, { + padStart: function padStart(maxLength /* , fillString = ' ' */) { + return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/core-js/modules/es.string.raw.js b/core-js/modules/es.string.raw.js new file mode 100644 index 0000000000..beb0783949 --- /dev/null +++ b/core-js/modules/es.string.raw.js @@ -0,0 +1,19 @@ +var $ = require('../internals/export'); +var toIndexedObject = require('../internals/to-indexed-object'); +var toLength = require('../internals/to-length'); + +// `String.raw` method +// https://tc39.github.io/ecma262/#sec-string.raw +$({ target: 'String', stat: true }, { + raw: function raw(template) { + var rawTemplate = toIndexedObject(template.raw); + var literalSegments = toLength(rawTemplate.length); + var argumentsLength = arguments.length; + var elements = []; + var i = 0; + while (literalSegments > i) { + elements.push(String(rawTemplate[i++])); + if (i < argumentsLength) elements.push(String(arguments[i])); + } return elements.join(''); + } +}); diff --git a/core-js/modules/es.string.repeat.js b/core-js/modules/es.string.repeat.js new file mode 100644 index 0000000000..43890aa53c --- /dev/null +++ b/core-js/modules/es.string.repeat.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var repeat = require('../internals/string-repeat'); + +// `String.prototype.repeat` method +// https://tc39.github.io/ecma262/#sec-string.prototype.repeat +$({ target: 'String', proto: true }, { + repeat: repeat +}); diff --git a/core-js/modules/es.string.replace.js b/core-js/modules/es.string.replace.js new file mode 100644 index 0000000000..42d37af7ae --- /dev/null +++ b/core-js/modules/es.string.replace.js @@ -0,0 +1,126 @@ +'use strict'; +var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic'); +var anObject = require('../internals/an-object'); +var toObject = require('../internals/to-object'); +var toLength = require('../internals/to-length'); +var toInteger = require('../internals/to-integer'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var advanceStringIndex = require('../internals/advance-string-index'); +var regExpExec = require('../internals/regexp-exec-abstract'); + +var max = Math.max; +var min = Math.min; +var floor = Math.floor; +var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g; +var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g; + +var maybeToString = function (it) { + return it === undefined ? it : String(it); +}; + +// @@replace logic +fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) { + return [ + // `String.prototype.replace` method + // https://tc39.github.io/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = requireObjectCoercible(this); + var replacer = searchValue == undefined ? undefined : searchValue[REPLACE]; + return replacer !== undefined + ? replacer.call(searchValue, O, replaceValue) + : nativeReplace.call(String(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace + function (regexp, replaceValue) { + var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + + var functionalReplace = typeof replaceValue === 'function'; + if (!functionalReplace) replaceValue = String(replaceValue); + + var global = rx.global; + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + var results = []; + while (true) { + var result = regExpExec(rx, S); + if (result === null) break; + + results.push(result); + if (!global) break; + + var matchStr = String(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + } + + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + + var matched = String(result[0]); + var position = max(min(toInteger(result.index), S.length), 0); + var captures = []; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = [matched].concat(captures, position, S); + if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); + var replacement = String(replaceValue.apply(undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += S.slice(nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + return accumulatedResult + S.slice(nextSourcePosition); + } + ]; + + // https://tc39.github.io/ecma262/#sec-getsubstitution + function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return nativeReplace.call(replacement, symbols, function (match, ch) { + var capture; + switch (ch.charAt(0)) { + case '$': return '$'; + case '&': return matched; + case '`': return str.slice(0, position); + case "'": return str.slice(tailPos); + case '<': + capture = namedCaptures[ch.slice(1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); + } +}); diff --git a/core-js/modules/es.string.search.js b/core-js/modules/es.string.search.js new file mode 100644 index 0000000000..8322e2213a --- /dev/null +++ b/core-js/modules/es.string.search.js @@ -0,0 +1,34 @@ +'use strict'; +var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic'); +var anObject = require('../internals/an-object'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var sameValue = require('../internals/same-value'); +var regExpExec = require('../internals/regexp-exec-abstract'); + +// @@search logic +fixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) { + return [ + // `String.prototype.search` method + // https://tc39.github.io/ecma262/#sec-string.prototype.search + function search(regexp) { + var O = requireObjectCoercible(this); + var searcher = regexp == undefined ? undefined : regexp[SEARCH]; + return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); + }, + // `RegExp.prototype[@@search]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search + function (regexp) { + var res = maybeCallNative(nativeSearch, regexp, this); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + + var previousLastIndex = rx.lastIndex; + if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; + var result = regExpExec(rx, S); + if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; + return result === null ? -1 : result.index; + } + ]; +}); diff --git a/core-js/modules/es.string.small.js b/core-js/modules/es.string.small.js new file mode 100644 index 0000000000..f66b11c4d0 --- /dev/null +++ b/core-js/modules/es.string.small.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.small` method +// https://tc39.github.io/ecma262/#sec-string.prototype.small +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, { + small: function small() { + return createHTML(this, 'small', '', ''); + } +}); diff --git a/core-js/modules/es.string.split.js b/core-js/modules/es.string.split.js new file mode 100644 index 0000000000..26743f50b4 --- /dev/null +++ b/core-js/modules/es.string.split.js @@ -0,0 +1,134 @@ +'use strict'; +var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic'); +var isRegExp = require('../internals/is-regexp'); +var anObject = require('../internals/an-object'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var speciesConstructor = require('../internals/species-constructor'); +var advanceStringIndex = require('../internals/advance-string-index'); +var toLength = require('../internals/to-length'); +var callRegExpExec = require('../internals/regexp-exec-abstract'); +var regexpExec = require('../internals/regexp-exec'); +var fails = require('../internals/fails'); + +var arrayPush = [].push; +var min = Math.min; +var MAX_UINT32 = 0xFFFFFFFF; + +// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError +var SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); }); + +// @@split logic +fixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) { + var internalSplit; + if ( + 'abbc'.split(/(b)*/)[1] == 'c' || + 'test'.split(/(?:)/, -1).length != 4 || + 'ab'.split(/(?:ab)*/).length != 2 || + '.'.split(/(.?)(.?)/).length != 4 || + '.'.split(/()()/).length > 1 || + ''.split(/.?/).length + ) { + // based on es5-shim implementation, need to rework it + internalSplit = function (separator, limit) { + var string = String(requireObjectCoercible(this)); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (separator === undefined) return [string]; + // If `separator` is not a regex, use native split + if (!isRegExp(separator)) { + return nativeSplit.call(string, separator, lim); + } + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + while (match = regexpExec.call(separatorCopy, string)) { + lastIndex = separatorCopy.lastIndex; + if (lastIndex > lastLastIndex) { + output.push(string.slice(lastLastIndex, match.index)); + if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1)); + lastLength = match[0].length; + lastLastIndex = lastIndex; + if (output.length >= lim) break; + } + if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop + } + if (lastLastIndex === string.length) { + if (lastLength || !separatorCopy.test('')) output.push(''); + } else output.push(string.slice(lastLastIndex)); + return output.length > lim ? output.slice(0, lim) : output; + }; + // Chakra, V8 + } else if ('0'.split(undefined, 0).length) { + internalSplit = function (separator, limit) { + return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit); + }; + } else internalSplit = nativeSplit; + + return [ + // `String.prototype.split` method + // https://tc39.github.io/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = requireObjectCoercible(this); + var splitter = separator == undefined ? undefined : separator[SPLIT]; + return splitter !== undefined + ? splitter.call(separator, O, limit) + : internalSplit.call(String(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (regexp, limit) { + var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var C = speciesConstructor(rx, RegExp); + + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (SUPPORTS_Y ? 'y' : 'g'); + + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = SUPPORTS_Y ? q : 0; + var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); + var e; + if ( + z === null || + (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + A.push(S.slice(p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + A.push(z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + A.push(S.slice(p)); + return A; + } + ]; +}, !SUPPORTS_Y); diff --git a/core-js/modules/es.string.starts-with.js b/core-js/modules/es.string.starts-with.js new file mode 100644 index 0000000000..14a590482f --- /dev/null +++ b/core-js/modules/es.string.starts-with.js @@ -0,0 +1,23 @@ +'use strict'; +var $ = require('../internals/export'); +var toLength = require('../internals/to-length'); +var notARegExp = require('../internals/not-a-regexp'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); + +var nativeStartsWith = ''.startsWith; +var min = Math.min; + +// `String.prototype.startsWith` method +// https://tc39.github.io/ecma262/#sec-string.prototype.startswith +$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('startsWith') }, { + startsWith: function startsWith(searchString /* , position = 0 */) { + var that = String(requireObjectCoercible(this)); + notARegExp(searchString); + var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); + var search = String(searchString); + return nativeStartsWith + ? nativeStartsWith.call(that, search, index) + : that.slice(index, index + search.length) === search; + } +}); diff --git a/core-js/modules/es.string.strike.js b/core-js/modules/es.string.strike.js new file mode 100644 index 0000000000..81a2ed0031 --- /dev/null +++ b/core-js/modules/es.string.strike.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.strike` method +// https://tc39.github.io/ecma262/#sec-string.prototype.strike +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, { + strike: function strike() { + return createHTML(this, 'strike', '', ''); + } +}); diff --git a/core-js/modules/es.string.sub.js b/core-js/modules/es.string.sub.js new file mode 100644 index 0000000000..db7949e639 --- /dev/null +++ b/core-js/modules/es.string.sub.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.sub` method +// https://tc39.github.io/ecma262/#sec-string.prototype.sub +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, { + sub: function sub() { + return createHTML(this, 'sub', '', ''); + } +}); diff --git a/core-js/modules/es.string.sup.js b/core-js/modules/es.string.sup.js new file mode 100644 index 0000000000..46b6e10c0e --- /dev/null +++ b/core-js/modules/es.string.sup.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/forced-string-html-method'); + +// `String.prototype.sup` method +// https://tc39.github.io/ecma262/#sec-string.prototype.sup +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, { + sup: function sup() { + return createHTML(this, 'sup', '', ''); + } +}); diff --git a/core-js/modules/es.string.trim-end.js b/core-js/modules/es.string.trim-end.js new file mode 100644 index 0000000000..eec4a08a4b --- /dev/null +++ b/core-js/modules/es.string.trim-end.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var $trimEnd = require('../internals/string-trim').end; +var forcedStringTrimMethod = require('../internals/forced-string-trim-method'); + +var FORCED = forcedStringTrimMethod('trimEnd'); + +var trimEnd = FORCED ? function trimEnd() { + return $trimEnd(this); +} : ''.trimEnd; + +// `String.prototype.{ trimEnd, trimRight }` methods +// https://github.com/tc39/ecmascript-string-left-right-trim +$({ target: 'String', proto: true, forced: FORCED }, { + trimEnd: trimEnd, + trimRight: trimEnd +}); diff --git a/core-js/modules/es.string.trim-start.js b/core-js/modules/es.string.trim-start.js new file mode 100644 index 0000000000..882a1871d0 --- /dev/null +++ b/core-js/modules/es.string.trim-start.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var $trimStart = require('../internals/string-trim').start; +var forcedStringTrimMethod = require('../internals/forced-string-trim-method'); + +var FORCED = forcedStringTrimMethod('trimStart'); + +var trimStart = FORCED ? function trimStart() { + return $trimStart(this); +} : ''.trimStart; + +// `String.prototype.{ trimStart, trimLeft }` methods +// https://github.com/tc39/ecmascript-string-left-right-trim +$({ target: 'String', proto: true, forced: FORCED }, { + trimStart: trimStart, + trimLeft: trimStart +}); diff --git a/core-js/modules/es.string.trim.js b/core-js/modules/es.string.trim.js new file mode 100644 index 0000000000..d71156406f --- /dev/null +++ b/core-js/modules/es.string.trim.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var $trim = require('../internals/string-trim').trim; +var forcedStringTrimMethod = require('../internals/forced-string-trim-method'); + +// `String.prototype.trim` method +// https://tc39.github.io/ecma262/#sec-string.prototype.trim +$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { + trim: function trim() { + return $trim(this); + } +}); diff --git a/core-js/modules/es.symbol.async-iterator.js b/core-js/modules/es.symbol.async-iterator.js new file mode 100644 index 0000000000..ecf7281deb --- /dev/null +++ b/core-js/modules/es.symbol.async-iterator.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.asyncIterator` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.asynciterator +defineWellKnownSymbol('asyncIterator'); diff --git a/core-js/modules/es.symbol.description.js b/core-js/modules/es.symbol.description.js new file mode 100644 index 0000000000..ea67abf6fb --- /dev/null +++ b/core-js/modules/es.symbol.description.js @@ -0,0 +1,50 @@ +// `Symbol.prototype.description` getter +// https://tc39.github.io/ecma262/#sec-symbol.prototype.description +'use strict'; +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var global = require('../internals/global'); +var has = require('../internals/has'); +var isObject = require('../internals/is-object'); +var defineProperty = require('../internals/object-define-property').f; +var copyConstructorProperties = require('../internals/copy-constructor-properties'); + +var NativeSymbol = global.Symbol; + +if (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) || + // Safari 12 bug + NativeSymbol().description !== undefined +)) { + var EmptyStringDescriptionStore = {}; + // wrap Symbol constructor for correct work with undefined description + var SymbolWrapper = function Symbol() { + var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]); + var result = this instanceof SymbolWrapper + ? new NativeSymbol(description) + // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)' + : description === undefined ? NativeSymbol() : NativeSymbol(description); + if (description === '') EmptyStringDescriptionStore[result] = true; + return result; + }; + copyConstructorProperties(SymbolWrapper, NativeSymbol); + var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype; + symbolPrototype.constructor = SymbolWrapper; + + var symbolToString = symbolPrototype.toString; + var native = String(NativeSymbol('test')) == 'Symbol(test)'; + var regexp = /^Symbol\((.*)\)[^)]+$/; + defineProperty(symbolPrototype, 'description', { + configurable: true, + get: function description() { + var symbol = isObject(this) ? this.valueOf() : this; + var string = symbolToString.call(symbol); + if (has(EmptyStringDescriptionStore, symbol)) return ''; + var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1'); + return desc === '' ? undefined : desc; + } + }); + + $({ global: true, forced: true }, { + Symbol: SymbolWrapper + }); +} diff --git a/core-js/modules/es.symbol.has-instance.js b/core-js/modules/es.symbol.has-instance.js new file mode 100644 index 0000000000..2226ddb2c5 --- /dev/null +++ b/core-js/modules/es.symbol.has-instance.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.hasInstance` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.hasinstance +defineWellKnownSymbol('hasInstance'); diff --git a/core-js/modules/es.symbol.is-concat-spreadable.js b/core-js/modules/es.symbol.is-concat-spreadable.js new file mode 100644 index 0000000000..d53771ba9f --- /dev/null +++ b/core-js/modules/es.symbol.is-concat-spreadable.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.isConcatSpreadable` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.isconcatspreadable +defineWellKnownSymbol('isConcatSpreadable'); diff --git a/core-js/modules/es.symbol.iterator.js b/core-js/modules/es.symbol.iterator.js new file mode 100644 index 0000000000..e43878df84 --- /dev/null +++ b/core-js/modules/es.symbol.iterator.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.iterator` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.iterator +defineWellKnownSymbol('iterator'); diff --git a/core-js/modules/es.symbol.js b/core-js/modules/es.symbol.js new file mode 100644 index 0000000000..8c06b96601 --- /dev/null +++ b/core-js/modules/es.symbol.js @@ -0,0 +1,299 @@ +'use strict'; +var $ = require('../internals/export'); +var global = require('../internals/global'); +var IS_PURE = require('../internals/is-pure'); +var DESCRIPTORS = require('../internals/descriptors'); +var NATIVE_SYMBOL = require('../internals/native-symbol'); +var fails = require('../internals/fails'); +var has = require('../internals/has'); +var isArray = require('../internals/is-array'); +var isObject = require('../internals/is-object'); +var anObject = require('../internals/an-object'); +var toObject = require('../internals/to-object'); +var toIndexedObject = require('../internals/to-indexed-object'); +var toPrimitive = require('../internals/to-primitive'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); +var nativeObjectCreate = require('../internals/object-create'); +var objectKeys = require('../internals/object-keys'); +var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names'); +var getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external'); +var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var definePropertyModule = require('../internals/object-define-property'); +var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable'); +var hide = require('../internals/hide'); +var redefine = require('../internals/redefine'); +var shared = require('../internals/shared'); +var sharedKey = require('../internals/shared-key'); +var hiddenKeys = require('../internals/hidden-keys'); +var uid = require('../internals/uid'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol'); +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); +var setToStringTag = require('../internals/set-to-string-tag'); +var InternalStateModule = require('../internals/internal-state'); +var $forEach = require('../internals/array-iteration').forEach; + +var HIDDEN = sharedKey('hidden'); +var SYMBOL = 'Symbol'; +var PROTOTYPE = 'prototype'; +var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(SYMBOL); +var ObjectPrototype = Object[PROTOTYPE]; +var $Symbol = global.Symbol; +var JSON = global.JSON; +var nativeJSONStringify = JSON && JSON.stringify; +var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; +var nativeDefineProperty = definePropertyModule.f; +var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; +var nativePropertyIsEnumerable = propertyIsEnumerableModule.f; +var AllSymbols = shared('symbols'); +var ObjectPrototypeSymbols = shared('op-symbols'); +var StringToSymbolRegistry = shared('string-to-symbol-registry'); +var SymbolToStringRegistry = shared('symbol-to-string-registry'); +var WellKnownSymbolsStore = shared('wks'); +var QObject = global.QObject; +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var setSymbolDescriptor = DESCRIPTORS && fails(function () { + return nativeObjectCreate(nativeDefineProperty({}, 'a', { + get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; } + })).a != 7; +}) ? function (O, P, Attributes) { + var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P); + if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; + nativeDefineProperty(O, P, Attributes); + if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { + nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor); + } +} : nativeDefineProperty; + +var wrap = function (tag, description) { + var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]); + setInternalState(symbol, { + type: SYMBOL, + tag: tag, + description: description + }); + if (!DESCRIPTORS) symbol.description = description; + return symbol; +}; + +var isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + return Object(it) instanceof $Symbol; +}; + +var $defineProperty = function defineProperty(O, P, Attributes) { + if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); + anObject(O); + var key = toPrimitive(P, true); + anObject(Attributes); + if (has(AllSymbols, key)) { + if (!Attributes.enumerable) { + if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {})); + O[HIDDEN][key] = true; + } else { + if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; + Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); + } return setSymbolDescriptor(O, key, Attributes); + } return nativeDefineProperty(O, key, Attributes); +}; + +var $defineProperties = function defineProperties(O, Properties) { + anObject(O); + var properties = toIndexedObject(Properties); + var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); + $forEach(keys, function (key) { + if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]); + }); + return O; +}; + +var $create = function create(O, Properties) { + return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); +}; + +var $propertyIsEnumerable = function propertyIsEnumerable(V) { + var P = toPrimitive(V, true); + var enumerable = nativePropertyIsEnumerable.call(this, P); + if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false; + return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true; +}; + +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { + var it = toIndexedObject(O); + var key = toPrimitive(P, true); + if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return; + var descriptor = nativeGetOwnPropertyDescriptor(it, key); + if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) { + descriptor.enumerable = true; + } + return descriptor; +}; + +var $getOwnPropertyNames = function getOwnPropertyNames(O) { + var names = nativeGetOwnPropertyNames(toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key); + }); + return result; +}; + +var $getOwnPropertySymbols = function getOwnPropertySymbols(O) { + var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; + var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) { + result.push(AllSymbols[key]); + } + }); + return result; +}; + +// `Symbol` constructor +// https://tc39.github.io/ecma262/#sec-symbol-constructor +if (!NATIVE_SYMBOL) { + $Symbol = function Symbol() { + if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor'); + var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]); + var tag = uid(description); + var setter = function (value) { + if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value); + if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; + setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value)); + }; + if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter }); + return wrap(tag, description); + }; + + redefine($Symbol[PROTOTYPE], 'toString', function toString() { + return getInternalState(this).tag; + }); + + propertyIsEnumerableModule.f = $propertyIsEnumerable; + definePropertyModule.f = $defineProperty; + getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor; + getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; + getOwnPropertySymbolsModule.f = $getOwnPropertySymbols; + + if (DESCRIPTORS) { + // https://github.com/tc39/proposal-Symbol-description + nativeDefineProperty($Symbol[PROTOTYPE], 'description', { + configurable: true, + get: function description() { + return getInternalState(this).description; + } + }); + if (!IS_PURE) { + redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); + } + } + + wrappedWellKnownSymbolModule.f = function (name) { + return wrap(wellKnownSymbol(name), name); + }; +} + +$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, { + Symbol: $Symbol +}); + +$forEach(objectKeys(WellKnownSymbolsStore), function (name) { + defineWellKnownSymbol(name); +}); + +$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, { + // `Symbol.for` method + // https://tc39.github.io/ecma262/#sec-symbol.for + 'for': function (key) { + var string = String(key); + if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; + var symbol = $Symbol(string); + StringToSymbolRegistry[string] = symbol; + SymbolToStringRegistry[symbol] = string; + return symbol; + }, + // `Symbol.keyFor` method + // https://tc39.github.io/ecma262/#sec-symbol.keyfor + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol'); + if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; + }, + useSetter: function () { USE_SETTER = true; }, + useSimple: function () { USE_SETTER = false; } +}); + +$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, { + // `Object.create` method + // https://tc39.github.io/ecma262/#sec-object.create + create: $create, + // `Object.defineProperty` method + // https://tc39.github.io/ecma262/#sec-object.defineproperty + defineProperty: $defineProperty, + // `Object.defineProperties` method + // https://tc39.github.io/ecma262/#sec-object.defineproperties + defineProperties: $defineProperties, + // `Object.getOwnPropertyDescriptor` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors + getOwnPropertyDescriptor: $getOwnPropertyDescriptor +}); + +$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, { + // `Object.getOwnPropertyNames` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertynames + getOwnPropertyNames: $getOwnPropertyNames, + // `Object.getOwnPropertySymbols` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols + getOwnPropertySymbols: $getOwnPropertySymbols +}); + +// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives +// https://bugs.chromium.org/p/v8/issues/detail?id=3443 +$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + return getOwnPropertySymbolsModule.f(toObject(it)); + } +}); + +// `JSON.stringify` method behavior with symbols +// https://tc39.github.io/ecma262/#sec-json.stringify +JSON && $({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () { + var symbol = $Symbol(); + // MS Edge converts symbol values to JSON as {} + return nativeJSONStringify([symbol]) != '[null]' + // WebKit converts symbol values to JSON as null + || nativeJSONStringify({ a: symbol }) != '{}' + // V8 throws on boxed symbols + || nativeJSONStringify(Object(symbol)) != '{}'; +}) }, { + stringify: function stringify(it) { + var args = [it]; + var index = 1; + var replacer, $replacer; + while (arguments.length > index) args.push(arguments[index++]); + $replacer = replacer = args[1]; + if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + if (!isArray(replacer)) replacer = function (key, value) { + if (typeof $replacer == 'function') value = $replacer.call(this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return nativeJSONStringify.apply(JSON, args); + } +}); + +// `Symbol.prototype[@@toPrimitive]` method +// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive +if (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) hide($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); +// `Symbol.prototype[@@toStringTag]` property +// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag +setToStringTag($Symbol, SYMBOL); + +hiddenKeys[HIDDEN] = true; diff --git a/core-js/modules/es.symbol.match-all.js b/core-js/modules/es.symbol.match-all.js new file mode 100644 index 0000000000..b16c8beaa0 --- /dev/null +++ b/core-js/modules/es.symbol.match-all.js @@ -0,0 +1,4 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.matchAll` well-known symbol +defineWellKnownSymbol('matchAll'); diff --git a/core-js/modules/es.symbol.match.js b/core-js/modules/es.symbol.match.js new file mode 100644 index 0000000000..ec2fbdbedf --- /dev/null +++ b/core-js/modules/es.symbol.match.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.match` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.match +defineWellKnownSymbol('match'); diff --git a/core-js/modules/es.symbol.replace.js b/core-js/modules/es.symbol.replace.js new file mode 100644 index 0000000000..d252d8d4b5 --- /dev/null +++ b/core-js/modules/es.symbol.replace.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.replace` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.replace +defineWellKnownSymbol('replace'); diff --git a/core-js/modules/es.symbol.search.js b/core-js/modules/es.symbol.search.js new file mode 100644 index 0000000000..0c28e62c3e --- /dev/null +++ b/core-js/modules/es.symbol.search.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.search` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.search +defineWellKnownSymbol('search'); diff --git a/core-js/modules/es.symbol.species.js b/core-js/modules/es.symbol.species.js new file mode 100644 index 0000000000..8391f22d78 --- /dev/null +++ b/core-js/modules/es.symbol.species.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.species` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.species +defineWellKnownSymbol('species'); diff --git a/core-js/modules/es.symbol.split.js b/core-js/modules/es.symbol.split.js new file mode 100644 index 0000000000..5f76df44ff --- /dev/null +++ b/core-js/modules/es.symbol.split.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.split` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.split +defineWellKnownSymbol('split'); diff --git a/core-js/modules/es.symbol.to-primitive.js b/core-js/modules/es.symbol.to-primitive.js new file mode 100644 index 0000000000..c2978265c9 --- /dev/null +++ b/core-js/modules/es.symbol.to-primitive.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.toPrimitive` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.toprimitive +defineWellKnownSymbol('toPrimitive'); diff --git a/core-js/modules/es.symbol.to-string-tag.js b/core-js/modules/es.symbol.to-string-tag.js new file mode 100644 index 0000000000..8ddbfad12c --- /dev/null +++ b/core-js/modules/es.symbol.to-string-tag.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.toStringTag` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.tostringtag +defineWellKnownSymbol('toStringTag'); diff --git a/core-js/modules/es.symbol.unscopables.js b/core-js/modules/es.symbol.unscopables.js new file mode 100644 index 0000000000..a9daa60650 --- /dev/null +++ b/core-js/modules/es.symbol.unscopables.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.unscopables` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.unscopables +defineWellKnownSymbol('unscopables'); diff --git a/core-js/modules/es.typed-array.copy-within.js b/core-js/modules/es.typed-array.copy-within.js new file mode 100644 index 0000000000..59d489ae4f --- /dev/null +++ b/core-js/modules/es.typed-array.copy-within.js @@ -0,0 +1,11 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $copyWithin = require('../internals/array-copy-within'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.copyWithin` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin +ArrayBufferViewCore.exportProto('copyWithin', function copyWithin(target, start /* , end */) { + return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined); +}); diff --git a/core-js/modules/es.typed-array.every.js b/core-js/modules/es.typed-array.every.js new file mode 100644 index 0000000000..72ae25599f --- /dev/null +++ b/core-js/modules/es.typed-array.every.js @@ -0,0 +1,11 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $every = require('../internals/array-iteration').every; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.every` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every +ArrayBufferViewCore.exportProto('every', function every(callbackfn /* , thisArg */) { + return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); +}); diff --git a/core-js/modules/es.typed-array.fill.js b/core-js/modules/es.typed-array.fill.js new file mode 100644 index 0000000000..f9eb8723c3 --- /dev/null +++ b/core-js/modules/es.typed-array.fill.js @@ -0,0 +1,12 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $fill = require('../internals/array-fill'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.fill` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill +// eslint-disable-next-line no-unused-vars +ArrayBufferViewCore.exportProto('fill', function fill(value /* , start, end */) { + return $fill.apply(aTypedArray(this), arguments); +}); diff --git a/core-js/modules/es.typed-array.filter.js b/core-js/modules/es.typed-array.filter.js new file mode 100644 index 0000000000..744cecb7a7 --- /dev/null +++ b/core-js/modules/es.typed-array.filter.js @@ -0,0 +1,19 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $filter = require('../internals/array-iteration').filter; +var speciesConstructor = require('../internals/species-constructor'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; + +// `%TypedArray%.prototype.filter` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter +ArrayBufferViewCore.exportProto('filter', function filter(callbackfn /* , thisArg */) { + var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + var C = speciesConstructor(this, this.constructor); + var index = 0; + var length = list.length; + var result = new (aTypedArrayConstructor(C))(length); + while (length > index) result[index] = list[index++]; + return result; +}); diff --git a/core-js/modules/es.typed-array.find-index.js b/core-js/modules/es.typed-array.find-index.js new file mode 100644 index 0000000000..fc98cd4ae5 --- /dev/null +++ b/core-js/modules/es.typed-array.find-index.js @@ -0,0 +1,11 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $findIndex = require('../internals/array-iteration').findIndex; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.findIndex` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex +ArrayBufferViewCore.exportProto('findIndex', function findIndex(predicate /* , thisArg */) { + return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined); +}); diff --git a/core-js/modules/es.typed-array.find.js b/core-js/modules/es.typed-array.find.js new file mode 100644 index 0000000000..c04cf9df69 --- /dev/null +++ b/core-js/modules/es.typed-array.find.js @@ -0,0 +1,11 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $find = require('../internals/array-iteration').find; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.find` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find +ArrayBufferViewCore.exportProto('find', function find(predicate /* , thisArg */) { + return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined); +}); diff --git a/core-js/modules/es.typed-array.float32-array.js b/core-js/modules/es.typed-array.float32-array.js new file mode 100644 index 0000000000..41c0ccef16 --- /dev/null +++ b/core-js/modules/es.typed-array.float32-array.js @@ -0,0 +1,9 @@ +var typedArrayConstructor = require('../internals/typed-array-constructor'); + +// `Float32Array` constructor +// https://tc39.github.io/ecma262/#sec-typedarray-objects +typedArrayConstructor('Float32', 4, function (init) { + return function Float32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); diff --git a/core-js/modules/es.typed-array.float64-array.js b/core-js/modules/es.typed-array.float64-array.js new file mode 100644 index 0000000000..18a0798a17 --- /dev/null +++ b/core-js/modules/es.typed-array.float64-array.js @@ -0,0 +1,9 @@ +var typedArrayConstructor = require('../internals/typed-array-constructor'); + +// `Float64Array` constructor +// https://tc39.github.io/ecma262/#sec-typedarray-objects +typedArrayConstructor('Float64', 8, function (init) { + return function Float64Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); diff --git a/core-js/modules/es.typed-array.for-each.js b/core-js/modules/es.typed-array.for-each.js new file mode 100644 index 0000000000..b761c7ee94 --- /dev/null +++ b/core-js/modules/es.typed-array.for-each.js @@ -0,0 +1,11 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $forEach = require('../internals/array-iteration').forEach; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.forEach` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach +ArrayBufferViewCore.exportProto('forEach', function forEach(callbackfn /* , thisArg */) { + $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); +}); diff --git a/core-js/modules/es.typed-array.from.js b/core-js/modules/es.typed-array.from.js new file mode 100644 index 0000000000..0b027e7b61 --- /dev/null +++ b/core-js/modules/es.typed-array.from.js @@ -0,0 +1,8 @@ +'use strict'; +var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-arrays-constructors-requires-wrappers'); +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var typedArrayFrom = require('../internals/typed-array-from'); + +// `%TypedArray%.from` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.from +ArrayBufferViewCore.exportStatic('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS); diff --git a/core-js/modules/es.typed-array.includes.js b/core-js/modules/es.typed-array.includes.js new file mode 100644 index 0000000000..6ac5a6142c --- /dev/null +++ b/core-js/modules/es.typed-array.includes.js @@ -0,0 +1,11 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $includes = require('../internals/array-includes').includes; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.includes` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes +ArrayBufferViewCore.exportProto('includes', function includes(searchElement /* , fromIndex */) { + return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); +}); diff --git a/core-js/modules/es.typed-array.index-of.js b/core-js/modules/es.typed-array.index-of.js new file mode 100644 index 0000000000..7ed1f49bfe --- /dev/null +++ b/core-js/modules/es.typed-array.index-of.js @@ -0,0 +1,11 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $indexOf = require('../internals/array-includes').indexOf; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.indexOf` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof +ArrayBufferViewCore.exportProto('indexOf', function indexOf(searchElement /* , fromIndex */) { + return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); +}); diff --git a/core-js/modules/es.typed-array.int16-array.js b/core-js/modules/es.typed-array.int16-array.js new file mode 100644 index 0000000000..25b0a859cc --- /dev/null +++ b/core-js/modules/es.typed-array.int16-array.js @@ -0,0 +1,9 @@ +var typedArrayConstructor = require('../internals/typed-array-constructor'); + +// `Int16Array` constructor +// https://tc39.github.io/ecma262/#sec-typedarray-objects +typedArrayConstructor('Int16', 2, function (init) { + return function Int16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); diff --git a/core-js/modules/es.typed-array.int32-array.js b/core-js/modules/es.typed-array.int32-array.js new file mode 100644 index 0000000000..0ad85dcbae --- /dev/null +++ b/core-js/modules/es.typed-array.int32-array.js @@ -0,0 +1,9 @@ +var typedArrayConstructor = require('../internals/typed-array-constructor'); + +// `Int32Array` constructor +// https://tc39.github.io/ecma262/#sec-typedarray-objects +typedArrayConstructor('Int32', 4, function (init) { + return function Int32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); diff --git a/core-js/modules/es.typed-array.int8-array.js b/core-js/modules/es.typed-array.int8-array.js new file mode 100644 index 0000000000..8c5d64ea80 --- /dev/null +++ b/core-js/modules/es.typed-array.int8-array.js @@ -0,0 +1,9 @@ +var typedArrayConstructor = require('../internals/typed-array-constructor'); + +// `Int8Array` constructor +// https://tc39.github.io/ecma262/#sec-typedarray-objects +typedArrayConstructor('Int8', 1, function (init) { + return function Int8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); diff --git a/core-js/modules/es.typed-array.iterator.js b/core-js/modules/es.typed-array.iterator.js new file mode 100644 index 0000000000..2b149254fe --- /dev/null +++ b/core-js/modules/es.typed-array.iterator.js @@ -0,0 +1,38 @@ +'use strict'; +var global = require('../internals/global'); +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var ArrayIterators = require('../modules/es.array.iterator'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var ITERATOR = wellKnownSymbol('iterator'); +var Uint8Array = global.Uint8Array; +var arrayValues = ArrayIterators.values; +var arrayKeys = ArrayIterators.keys; +var arrayEntries = ArrayIterators.entries; +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportProto = ArrayBufferViewCore.exportProto; +var nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR]; + +var CORRECT_ITER_NAME = !!nativeTypedArrayIterator + && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined); + +var typedArrayValues = function values() { + return arrayValues.call(aTypedArray(this)); +}; + +// `%TypedArray%.prototype.entries` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries +exportProto('entries', function entries() { + return arrayEntries.call(aTypedArray(this)); +}); +// `%TypedArray%.prototype.keys` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys +exportProto('keys', function keys() { + return arrayKeys.call(aTypedArray(this)); +}); +// `%TypedArray%.prototype.values` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values +exportProto('values', typedArrayValues, !CORRECT_ITER_NAME); +// `%TypedArray%.prototype[@@iterator]` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator +exportProto(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME); diff --git a/core-js/modules/es.typed-array.join.js b/core-js/modules/es.typed-array.join.js new file mode 100644 index 0000000000..7954e745e7 --- /dev/null +++ b/core-js/modules/es.typed-array.join.js @@ -0,0 +1,12 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var $join = [].join; + +// `%TypedArray%.prototype.join` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join +// eslint-disable-next-line no-unused-vars +ArrayBufferViewCore.exportProto('join', function join(separator) { + return $join.apply(aTypedArray(this), arguments); +}); diff --git a/core-js/modules/es.typed-array.last-index-of.js b/core-js/modules/es.typed-array.last-index-of.js new file mode 100644 index 0000000000..ed76ead4c4 --- /dev/null +++ b/core-js/modules/es.typed-array.last-index-of.js @@ -0,0 +1,12 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $lastIndexOf = require('../internals/array-last-index-of'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.lastIndexOf` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof +// eslint-disable-next-line no-unused-vars +ArrayBufferViewCore.exportProto('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) { + return $lastIndexOf.apply(aTypedArray(this), arguments); +}); diff --git a/core-js/modules/es.typed-array.map.js b/core-js/modules/es.typed-array.map.js new file mode 100644 index 0000000000..354e288569 --- /dev/null +++ b/core-js/modules/es.typed-array.map.js @@ -0,0 +1,15 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $map = require('../internals/array-iteration').map; +var speciesConstructor = require('../internals/species-constructor'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; + +// `%TypedArray%.prototype.map` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map +ArrayBufferViewCore.exportProto('map', function map(mapfn /* , thisArg */) { + return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) { + return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length); + }); +}); diff --git a/core-js/modules/es.typed-array.of.js b/core-js/modules/es.typed-array.of.js new file mode 100644 index 0000000000..03a5543094 --- /dev/null +++ b/core-js/modules/es.typed-array.of.js @@ -0,0 +1,15 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-arrays-constructors-requires-wrappers'); + +var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; + +// `%TypedArray%.of` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.of +ArrayBufferViewCore.exportStatic('of', function of(/* ...items */) { + var index = 0; + var length = arguments.length; + var result = new (aTypedArrayConstructor(this))(length); + while (length > index) result[index] = arguments[index++]; + return result; +}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS); diff --git a/core-js/modules/es.typed-array.reduce-right.js b/core-js/modules/es.typed-array.reduce-right.js new file mode 100644 index 0000000000..df9a7ec93c --- /dev/null +++ b/core-js/modules/es.typed-array.reduce-right.js @@ -0,0 +1,11 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $reduceRight = require('../internals/array-reduce').right; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.reduceRicht` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright +ArrayBufferViewCore.exportProto('reduceRight', function reduceRight(callbackfn /* , initialValue */) { + return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); +}); diff --git a/core-js/modules/es.typed-array.reduce.js b/core-js/modules/es.typed-array.reduce.js new file mode 100644 index 0000000000..ba81c6a188 --- /dev/null +++ b/core-js/modules/es.typed-array.reduce.js @@ -0,0 +1,11 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $reduce = require('../internals/array-reduce').left; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.reduce` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce +ArrayBufferViewCore.exportProto('reduce', function reduce(callbackfn /* , initialValue */) { + return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); +}); diff --git a/core-js/modules/es.typed-array.reverse.js b/core-js/modules/es.typed-array.reverse.js new file mode 100644 index 0000000000..5d7157193c --- /dev/null +++ b/core-js/modules/es.typed-array.reverse.js @@ -0,0 +1,20 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var floor = Math.floor; + +// `%TypedArray%.prototype.reverse` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse +ArrayBufferViewCore.exportProto('reverse', function reverse() { + var that = this; + var length = aTypedArray(that).length; + var middle = floor(length / 2); + var index = 0; + var value; + while (index < middle) { + value = that[index]; + that[index++] = that[--length]; + that[length] = value; + } return that; +}); diff --git a/core-js/modules/es.typed-array.set.js b/core-js/modules/es.typed-array.set.js new file mode 100644 index 0000000000..2e6134cbcb --- /dev/null +++ b/core-js/modules/es.typed-array.set.js @@ -0,0 +1,26 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var toLength = require('../internals/to-length'); +var toOffset = require('../internals/to-offset'); +var toObject = require('../internals/to-object'); +var fails = require('../internals/fails'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +var FORCED = fails(function () { + // eslint-disable-next-line no-undef + new Int8Array(1).set({}); +}); + +// `%TypedArray%.prototype.set` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set +ArrayBufferViewCore.exportProto('set', function set(arrayLike /* , offset */) { + aTypedArray(this); + var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1); + var length = this.length; + var src = toObject(arrayLike); + var len = toLength(src.length); + var index = 0; + if (len + offset > length) throw RangeError('Wrong length'); + while (index < len) this[offset + index] = src[index++]; +}, FORCED); diff --git a/core-js/modules/es.typed-array.slice.js b/core-js/modules/es.typed-array.slice.js new file mode 100644 index 0000000000..663919f40a --- /dev/null +++ b/core-js/modules/es.typed-array.slice.js @@ -0,0 +1,25 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var speciesConstructor = require('../internals/species-constructor'); +var fails = require('../internals/fails'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; +var $slice = [].slice; + +var FORCED = fails(function () { + // eslint-disable-next-line no-undef + new Int8Array(1).slice(); +}); + +// `%TypedArray%.prototype.slice` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice +ArrayBufferViewCore.exportProto('slice', function slice(start, end) { + var list = $slice.call(aTypedArray(this), start, end); + var C = speciesConstructor(this, this.constructor); + var index = 0; + var length = list.length; + var result = new (aTypedArrayConstructor(C))(length); + while (length > index) result[index] = list[index++]; + return result; +}, FORCED); diff --git a/core-js/modules/es.typed-array.some.js b/core-js/modules/es.typed-array.some.js new file mode 100644 index 0000000000..c6838ddac3 --- /dev/null +++ b/core-js/modules/es.typed-array.some.js @@ -0,0 +1,11 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $some = require('../internals/array-iteration').some; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.some` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some +ArrayBufferViewCore.exportProto('some', function some(callbackfn /* , thisArg */) { + return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); +}); diff --git a/core-js/modules/es.typed-array.sort.js b/core-js/modules/es.typed-array.sort.js new file mode 100644 index 0000000000..aef31734fb --- /dev/null +++ b/core-js/modules/es.typed-array.sort.js @@ -0,0 +1,11 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var $sort = [].sort; + +// `%TypedArray%.prototype.sort` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort +ArrayBufferViewCore.exportProto('sort', function sort(comparefn) { + return $sort.call(aTypedArray(this), comparefn); +}); diff --git a/core-js/modules/es.typed-array.subarray.js b/core-js/modules/es.typed-array.subarray.js new file mode 100644 index 0000000000..7e76b4e486 --- /dev/null +++ b/core-js/modules/es.typed-array.subarray.js @@ -0,0 +1,20 @@ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var toLength = require('../internals/to-length'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var speciesConstructor = require('../internals/species-constructor'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; + +// `%TypedArray%.prototype.subarray` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray +ArrayBufferViewCore.exportProto('subarray', function subarray(begin, end) { + var O = aTypedArray(this); + var length = O.length; + var beginIndex = toAbsoluteIndex(begin, length); + return new (speciesConstructor(O, O.constructor))( + O.buffer, + O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT, + toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex) + ); +}); diff --git a/core-js/modules/es.typed-array.to-locale-string.js b/core-js/modules/es.typed-array.to-locale-string.js new file mode 100644 index 0000000000..c4e5a7da38 --- /dev/null +++ b/core-js/modules/es.typed-array.to-locale-string.js @@ -0,0 +1,26 @@ +'use strict'; +var global = require('../internals/global'); +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var fails = require('../internals/fails'); + +var Int8Array = global.Int8Array; +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var $toLocaleString = [].toLocaleString; +var $slice = [].slice; + +// iOS Safari 6.x fails here +var TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () { + $toLocaleString.call(new Int8Array(1)); +}); + +var FORCED = fails(function () { + return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString(); +}) || !fails(function () { + Int8Array.prototype.toLocaleString.call([1, 2]); +}); + +// `%TypedArray%.prototype.toLocaleString` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring +ArrayBufferViewCore.exportProto('toLocaleString', function toLocaleString() { + return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments); +}, FORCED); diff --git a/core-js/modules/es.typed-array.to-string.js b/core-js/modules/es.typed-array.to-string.js new file mode 100644 index 0000000000..fbc76715fe --- /dev/null +++ b/core-js/modules/es.typed-array.to-string.js @@ -0,0 +1,19 @@ +'use strict'; +var global = require('../internals/global'); +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var fails = require('../internals/fails'); + +var Uint8Array = global.Uint8Array; +var Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype; +var arrayToString = [].toString; +var arrayJoin = [].join; + +if (fails(function () { arrayToString.call({}); })) { + arrayToString = function toString() { + return arrayJoin.call(this); + }; +} + +// `%TypedArray%.prototype.toString` method +// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring +ArrayBufferViewCore.exportProto('toString', arrayToString, (Uint8ArrayPrototype || {}).toString != arrayToString); diff --git a/core-js/modules/es.typed-array.uint16-array.js b/core-js/modules/es.typed-array.uint16-array.js new file mode 100644 index 0000000000..faca09b6aa --- /dev/null +++ b/core-js/modules/es.typed-array.uint16-array.js @@ -0,0 +1,9 @@ +var typedArrayConstructor = require('../internals/typed-array-constructor'); + +// `Uint16Array` constructor +// https://tc39.github.io/ecma262/#sec-typedarray-objects +typedArrayConstructor('Uint16', 2, function (init) { + return function Uint16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); diff --git a/core-js/modules/es.typed-array.uint32-array.js b/core-js/modules/es.typed-array.uint32-array.js new file mode 100644 index 0000000000..3d2a8cacfe --- /dev/null +++ b/core-js/modules/es.typed-array.uint32-array.js @@ -0,0 +1,9 @@ +var typedArrayConstructor = require('../internals/typed-array-constructor'); + +// `Uint32Array` constructor +// https://tc39.github.io/ecma262/#sec-typedarray-objects +typedArrayConstructor('Uint32', 4, function (init) { + return function Uint32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); diff --git a/core-js/modules/es.typed-array.uint8-array.js b/core-js/modules/es.typed-array.uint8-array.js new file mode 100644 index 0000000000..5051c64588 --- /dev/null +++ b/core-js/modules/es.typed-array.uint8-array.js @@ -0,0 +1,9 @@ +var typedArrayConstructor = require('../internals/typed-array-constructor'); + +// `Uint8Array` constructor +// https://tc39.github.io/ecma262/#sec-typedarray-objects +typedArrayConstructor('Uint8', 1, function (init) { + return function Uint8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); diff --git a/core-js/modules/es.typed-array.uint8-clamped-array.js b/core-js/modules/es.typed-array.uint8-clamped-array.js new file mode 100644 index 0000000000..806b26f624 --- /dev/null +++ b/core-js/modules/es.typed-array.uint8-clamped-array.js @@ -0,0 +1,9 @@ +var typedArrayConstructor = require('../internals/typed-array-constructor'); + +// `Uint8ClampedArray` constructor +// https://tc39.github.io/ecma262/#sec-typedarray-objects +typedArrayConstructor('Uint8', 1, function (init) { + return function Uint8ClampedArray(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}, true); diff --git a/core-js/modules/es.weak-map.js b/core-js/modules/es.weak-map.js new file mode 100644 index 0000000000..89784bbcef --- /dev/null +++ b/core-js/modules/es.weak-map.js @@ -0,0 +1,67 @@ +'use strict'; +var global = require('../internals/global'); +var redefineAll = require('../internals/redefine-all'); +var InternalMetadataModule = require('../internals/internal-metadata'); +var collection = require('../internals/collection'); +var collectionWeak = require('../internals/collection-weak'); +var isObject = require('../internals/is-object'); +var enforceIternalState = require('../internals/internal-state').enforce; +var NATIVE_WEAK_MAP = require('../internals/native-weak-map'); + +var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; +var isExtensible = Object.isExtensible; +var InternalWeakMap; + +var wrapper = function (get) { + return function WeakMap() { + return get(this, arguments.length ? arguments[0] : undefined); + }; +}; + +// `WeakMap` constructor +// https://tc39.github.io/ecma262/#sec-weakmap-constructor +var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak, true, true); + +// IE11 WeakMap frozen keys fix +// We can't use feature detection because it crash some old IE builds +// https://github.com/zloirock/core-js/issues/485 +if (NATIVE_WEAK_MAP && IS_IE11) { + InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); + InternalMetadataModule.REQUIRED = true; + var WeakMapPrototype = $WeakMap.prototype; + var nativeDelete = WeakMapPrototype['delete']; + var nativeHas = WeakMapPrototype.has; + var nativeGet = WeakMapPrototype.get; + var nativeSet = WeakMapPrototype.set; + redefineAll(WeakMapPrototype, { + 'delete': function (key) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceIternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + return nativeDelete.call(this, key) || state.frozen['delete'](key); + } return nativeDelete.call(this, key); + }, + has: function has(key) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceIternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + return nativeHas.call(this, key) || state.frozen.has(key); + } return nativeHas.call(this, key); + }, + get: function get(key) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceIternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key); + } return nativeGet.call(this, key); + }, + set: function set(key, value) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceIternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value); + } else nativeSet.call(this, key, value); + return this; + } + }); +} diff --git a/core-js/modules/es.weak-set.js b/core-js/modules/es.weak-set.js new file mode 100644 index 0000000000..a412aa557a --- /dev/null +++ b/core-js/modules/es.weak-set.js @@ -0,0 +1,9 @@ +'use strict'; +var collection = require('../internals/collection'); +var collectionWeak = require('../internals/collection-weak'); + +// `WeakSet` constructor +// https://tc39.github.io/ecma262/#sec-weakset-constructor +collection('WeakSet', function (get) { + return function WeakSet() { return get(this, arguments.length ? arguments[0] : undefined); }; +}, collectionWeak, false, true); diff --git a/core-js/modules/esnext.aggregate-error.js b/core-js/modules/esnext.aggregate-error.js new file mode 100644 index 0000000000..ec55c4374c --- /dev/null +++ b/core-js/modules/esnext.aggregate-error.js @@ -0,0 +1,29 @@ +var $ = require('../internals/export'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); +var create = require('../internals/object-create'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); +var iterate = require('../internals/iterate'); +var hide = require('../internals/hide'); + +var $AggregateError = function AggregateError(errors, message) { + var that = this; + if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message); + if (setPrototypeOf) { + that = setPrototypeOf(new Error(message), getPrototypeOf(that)); + } + var errorsArray = []; + iterate(errors, errorsArray.push, errorsArray); + hide(that, 'errors', errorsArray); + if (message !== undefined) hide(that, 'message', String(message)); + return that; +}; + +$AggregateError.prototype = create(Error.prototype, { + constructor: createPropertyDescriptor(5, $AggregateError), + name: createPropertyDescriptor(5, 'AggregateError') +}); + +$({ global: true }, { + AggregateError: $AggregateError +}); diff --git a/core-js/modules/esnext.array.is-template-object.js b/core-js/modules/esnext.array.is-template-object.js new file mode 100644 index 0000000000..a1d8428806 --- /dev/null +++ b/core-js/modules/esnext.array.is-template-object.js @@ -0,0 +1,28 @@ +var $ = require('../internals/export'); +var isArray = require('../internals/is-array'); + +var isFrozen = Object.isFrozen; + +var isFrozenStringArray = function (array, allowUndefined) { + if (!isFrozen || !isArray(array) || !isFrozen(array)) return false; + var index = 0; + var length = array.length; + var element; + while (index < length) { + element = array[index++]; + if (!(typeof element === 'string' || (allowUndefined && typeof element === 'undefined'))) { + return false; + } + } return length !== 0; +}; + +// `Array.isTemplateObject` method +// https://github.com/tc39/proposal-array-is-template-object +$({ target: 'Array', stat: true }, { + isTemplateObject: function isTemplateObject(value) { + if (!isFrozenStringArray(value, true)) return false; + var raw = value.raw; + if (raw.length !== value.length || !isFrozenStringArray(raw, false)) return false; + return true; + } +}); diff --git a/core-js/modules/esnext.array.last-index.js b/core-js/modules/esnext.array.last-index.js new file mode 100644 index 0000000000..60a2bc3fc1 --- /dev/null +++ b/core-js/modules/esnext.array.last-index.js @@ -0,0 +1,21 @@ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var addToUnscopables = require('../internals/add-to-unscopables'); +var toObject = require('../internals/to-object'); +var toLength = require('../internals/to-length'); +var defineProperty = require('../internals/object-define-property').f; + +// `Array.prototype.lastIndex` getter +// https://github.com/keithamus/proposal-array-last +if (DESCRIPTORS && !('lastIndex' in [])) { + defineProperty(Array.prototype, 'lastIndex', { + configurable: true, + get: function lastIndex() { + var O = toObject(this); + var len = toLength(O.length); + return len == 0 ? 0 : len - 1; + } + }); + + addToUnscopables('lastIndex'); +} diff --git a/core-js/modules/esnext.array.last-item.js b/core-js/modules/esnext.array.last-item.js new file mode 100644 index 0000000000..7c638fe71e --- /dev/null +++ b/core-js/modules/esnext.array.last-item.js @@ -0,0 +1,26 @@ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var addToUnscopables = require('../internals/add-to-unscopables'); +var toObject = require('../internals/to-object'); +var toLength = require('../internals/to-length'); +var defineProperty = require('../internals/object-define-property').f; + +// `Array.prototype.lastIndex` accessor +// https://github.com/keithamus/proposal-array-last +if (DESCRIPTORS && !('lastItem' in [])) { + defineProperty(Array.prototype, 'lastItem', { + configurable: true, + get: function lastItem() { + var O = toObject(this); + var len = toLength(O.length); + return len == 0 ? undefined : O[len - 1]; + }, + set: function lastItem(value) { + var O = toObject(this); + var len = toLength(O.length); + return O[len == 0 ? 0 : len - 1] = value; + } + }); + + addToUnscopables('lastItem'); +} diff --git a/core-js/modules/esnext.composite-key.js b/core-js/modules/esnext.composite-key.js new file mode 100644 index 0000000000..43bedaea8b --- /dev/null +++ b/core-js/modules/esnext.composite-key.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var getCompositeKeyNode = require('../internals/composite-key'); +var getBuiltIn = require('../internals/get-built-in'); +var create = require('../internals/object-create'); + +var initializer = function () { + var freeze = getBuiltIn('Object', 'freeze'); + return freeze ? freeze(create(null)) : create(null); +}; + +// https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey +$({ global: true }, { + compositeKey: function compositeKey() { + return getCompositeKeyNode.apply(Object, arguments).get('object', initializer); + } +}); diff --git a/core-js/modules/esnext.composite-symbol.js b/core-js/modules/esnext.composite-symbol.js new file mode 100644 index 0000000000..06d1b229f9 --- /dev/null +++ b/core-js/modules/esnext.composite-symbol.js @@ -0,0 +1,11 @@ +var $ = require('../internals/export'); +var getCompositeKeyNode = require('../internals/composite-key'); +var getBuiltIn = require('../internals/get-built-in'); + +// https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey +$({ global: true }, { + compositeSymbol: function compositeSymbol() { + if (arguments.length === 1 && typeof arguments[0] === 'string') return getBuiltIn('Symbol')['for'](arguments[0]); + return getCompositeKeyNode.apply(null, arguments).get('symbol', getBuiltIn('Symbol')); + } +}); diff --git a/core-js/modules/esnext.global-this.js b/core-js/modules/esnext.global-this.js new file mode 100644 index 0000000000..7e925c8753 --- /dev/null +++ b/core-js/modules/esnext.global-this.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var global = require('../internals/global'); + +// `globalThis` object +// https://github.com/tc39/proposal-global +$({ global: true }, { + globalThis: global +}); diff --git a/core-js/modules/esnext.map.delete-all.js b/core-js/modules/esnext.map.delete-all.js new file mode 100644 index 0000000000..4554b47df0 --- /dev/null +++ b/core-js/modules/esnext.map.delete-all.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var collectionDeleteAll = require('../internals/collection-delete-all'); + +// `Map.prototype.deleteAll` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + deleteAll: function deleteAll(/* ...elements */) { + return collectionDeleteAll.apply(this, arguments); + } +}); diff --git a/core-js/modules/esnext.map.every.js b/core-js/modules/esnext.map.every.js new file mode 100644 index 0000000000..f91460a060 --- /dev/null +++ b/core-js/modules/esnext.map.every.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/bind-context'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.every` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + every: function every(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return !iterate(iterator, function (key, value) { + if (!boundFunction(value, key, map)) return iterate.stop(); + }, undefined, true, true).stopped; + } +}); diff --git a/core-js/modules/esnext.map.filter.js b/core-js/modules/esnext.map.filter.js new file mode 100644 index 0000000000..3813a1f9d0 --- /dev/null +++ b/core-js/modules/esnext.map.filter.js @@ -0,0 +1,26 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var bind = require('../internals/bind-context'); +var speciesConstructor = require('../internals/species-constructor'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.filter` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + filter: function filter(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newMap = new (speciesConstructor(map, getBuiltIn('Map')))(); + var setter = aFunction(newMap.set); + iterate(iterator, function (key, value) { + if (boundFunction(value, key, map)) setter.call(newMap, key, value); + }, undefined, true, true); + return newMap; + } +}); diff --git a/core-js/modules/esnext.map.find-key.js b/core-js/modules/esnext.map.find-key.js new file mode 100644 index 0000000000..72634c7947 --- /dev/null +++ b/core-js/modules/esnext.map.find-key.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/bind-context'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.findKey` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + findKey: function findKey(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate(iterator, function (key, value) { + if (boundFunction(value, key, map)) return iterate.stop(key); + }, undefined, true, true).result; + } +}); diff --git a/core-js/modules/esnext.map.find.js b/core-js/modules/esnext.map.find.js new file mode 100644 index 0000000000..2d759af68b --- /dev/null +++ b/core-js/modules/esnext.map.find.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/bind-context'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.find` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + find: function find(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate(iterator, function (key, value) { + if (boundFunction(value, key, map)) return iterate.stop(value); + }, undefined, true, true).result; + } +}); diff --git a/core-js/modules/esnext.map.from.js b/core-js/modules/esnext.map.from.js new file mode 100644 index 0000000000..9aa6aac7d2 --- /dev/null +++ b/core-js/modules/esnext.map.from.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var from = require('../internals/collection-from'); + +// `Map.from` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from +$({ target: 'Map', stat: true }, { + from: from +}); diff --git a/core-js/modules/esnext.map.group-by.js b/core-js/modules/esnext.map.group-by.js new file mode 100644 index 0000000000..a34c6a01f7 --- /dev/null +++ b/core-js/modules/esnext.map.group-by.js @@ -0,0 +1,22 @@ +'use strict'; +var $ = require('../internals/export'); +var iterate = require('../internals/iterate'); +var aFunction = require('../internals/a-function'); + +// `Map.groupBy` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', stat: true }, { + groupBy: function groupBy(iterable, keyDerivative) { + var newMap = new this(); + aFunction(keyDerivative); + var has = aFunction(newMap.has); + var get = aFunction(newMap.get); + var set = aFunction(newMap.set); + iterate(iterable, function (element) { + var derivedKey = keyDerivative(element); + if (!has.call(newMap, derivedKey)) set.call(newMap, derivedKey, [element]); + else get.call(newMap, derivedKey).push(element); + }); + return newMap; + } +}); diff --git a/core-js/modules/esnext.map.includes.js b/core-js/modules/esnext.map.includes.js new file mode 100644 index 0000000000..5f9aff000a --- /dev/null +++ b/core-js/modules/esnext.map.includes.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var getMapIterator = require('../internals/get-map-iterator'); +var sameValueZero = require('../internals/same-value-zero'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.includes` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + includes: function includes(searchElement) { + return iterate(getMapIterator(anObject(this)), function (key, value) { + if (sameValueZero(value, searchElement)) return iterate.stop(); + }, undefined, true, true).stopped; + } +}); diff --git a/core-js/modules/esnext.map.key-by.js b/core-js/modules/esnext.map.key-by.js new file mode 100644 index 0000000000..0204bf2cbe --- /dev/null +++ b/core-js/modules/esnext.map.key-by.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var iterate = require('../internals/iterate'); +var aFunction = require('../internals/a-function'); + +// `Map.keyBy` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', stat: true }, { + keyBy: function keyBy(iterable, keyDerivative) { + var newMap = new this(); + aFunction(keyDerivative); + var setter = aFunction(newMap.set); + iterate(iterable, function (element) { + setter.call(newMap, keyDerivative(element), element); + }); + return newMap; + } +}); diff --git a/core-js/modules/esnext.map.key-of.js b/core-js/modules/esnext.map.key-of.js new file mode 100644 index 0000000000..1d100dee0c --- /dev/null +++ b/core-js/modules/esnext.map.key-of.js @@ -0,0 +1,16 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.includes` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + keyOf: function keyOf(searchElement) { + return iterate(getMapIterator(anObject(this)), function (key, value) { + if (value === searchElement) return iterate.stop(key); + }, undefined, true, true).result; + } +}); diff --git a/core-js/modules/esnext.map.map-keys.js b/core-js/modules/esnext.map.map-keys.js new file mode 100644 index 0000000000..05c7ae9112 --- /dev/null +++ b/core-js/modules/esnext.map.map-keys.js @@ -0,0 +1,26 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var bind = require('../internals/bind-context'); +var speciesConstructor = require('../internals/species-constructor'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.mapKeys` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + mapKeys: function mapKeys(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newMap = new (speciesConstructor(map, getBuiltIn('Map')))(); + var setter = aFunction(newMap.set); + iterate(iterator, function (key, value) { + setter.call(newMap, boundFunction(value, key, map), value); + }, undefined, true, true); + return newMap; + } +}); diff --git a/core-js/modules/esnext.map.map-values.js b/core-js/modules/esnext.map.map-values.js new file mode 100644 index 0000000000..125fd1030d --- /dev/null +++ b/core-js/modules/esnext.map.map-values.js @@ -0,0 +1,26 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var bind = require('../internals/bind-context'); +var speciesConstructor = require('../internals/species-constructor'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.mapValues` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + mapValues: function mapValues(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newMap = new (speciesConstructor(map, getBuiltIn('Map')))(); + var setter = aFunction(newMap.set); + iterate(iterator, function (key, value) { + setter.call(newMap, key, boundFunction(value, key, map)); + }, undefined, true, true); + return newMap; + } +}); diff --git a/core-js/modules/esnext.map.merge.js b/core-js/modules/esnext.map.merge.js new file mode 100644 index 0000000000..fd2c79ccab --- /dev/null +++ b/core-js/modules/esnext.map.merge.js @@ -0,0 +1,21 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.merge` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + // eslint-disable-next-line no-unused-vars + merge: function merge(iterable /* ...iterbles */) { + var map = anObject(this); + var setter = aFunction(map.set); + var i = 0; + while (i < arguments.length) { + iterate(arguments[i++], setter, map, true); + } + return map; + } +}); diff --git a/core-js/modules/esnext.map.of.js b/core-js/modules/esnext.map.of.js new file mode 100644 index 0000000000..4f84d89d6d --- /dev/null +++ b/core-js/modules/esnext.map.of.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var of = require('../internals/collection-of'); + +// `Map.of` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of +$({ target: 'Map', stat: true }, { + of: of +}); diff --git a/core-js/modules/esnext.map.reduce.js b/core-js/modules/esnext.map.reduce.js new file mode 100644 index 0000000000..91480f4873 --- /dev/null +++ b/core-js/modules/esnext.map.reduce.js @@ -0,0 +1,28 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.reduce` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + reduce: function reduce(callbackfn /* , initialValue */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var accumulator, step; + aFunction(callbackfn); + if (arguments.length > 1) accumulator = arguments[1]; + else { + step = iterator.next(); + if (step.done) throw TypeError('Reduce of empty map with no initial value'); + accumulator = step.value[1]; + } + iterate(iterator, function (key, value) { + accumulator = callbackfn(accumulator, value, key, map); + }, undefined, true, true); + return accumulator; + } +}); diff --git a/core-js/modules/esnext.map.some.js b/core-js/modules/esnext.map.some.js new file mode 100644 index 0000000000..822f437d77 --- /dev/null +++ b/core-js/modules/esnext.map.some.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/bind-context'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.some` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + some: function some(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate(iterator, function (key, value) { + if (boundFunction(value, key, map)) return iterate.stop(); + }, undefined, true, true).stopped; + } +}); diff --git a/core-js/modules/esnext.map.update-or-insert.js b/core-js/modules/esnext.map.update-or-insert.js new file mode 100644 index 0000000000..6a0dac88fe --- /dev/null +++ b/core-js/modules/esnext.map.update-or-insert.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); + +// `Set.prototype.updateOrInsert` method +// https://docs.google.com/presentation/d/1_xtrGSoN1-l2Q74eCXPHBbbrBHsVyqArWN0ebnW-pVQ/ +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + updateOrInsert: function updateOrInsert(key, onUpdate, onInsert) { + var map = anObject(this); + aFunction(onUpdate); + aFunction(onInsert); + var value = map.has(key) ? onUpdate(map.get(key)) : onInsert(); + map.set(key, value); + return value; + } +}); diff --git a/core-js/modules/esnext.map.update.js b/core-js/modules/esnext.map.update.js new file mode 100644 index 0000000000..97358e814b --- /dev/null +++ b/core-js/modules/esnext.map.update.js @@ -0,0 +1,22 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); + +// `Set.prototype.update` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + update: function update(key, callback /* , thunk */) { + var map = anObject(this); + var length = arguments.length; + aFunction(callback); + var isPresentInMap = map.has(key); + if (!isPresentInMap && length < 3) { + throw TypeError('Updating absent value'); + } + var value = isPresentInMap ? map.get(key) : aFunction(length > 2 ? arguments[2] : undefined)(key, map); + map.set(key, callback(value, key, map)); + return map; + } +}); diff --git a/core-js/modules/esnext.math.clamp.js b/core-js/modules/esnext.math.clamp.js new file mode 100644 index 0000000000..c69b1227cb --- /dev/null +++ b/core-js/modules/esnext.math.clamp.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); + +var min = Math.min; +var max = Math.max; + +// `Math.clamp` method +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + clamp: function clamp(x, lower, upper) { + return min(upper, max(lower, x)); + } +}); diff --git a/core-js/modules/esnext.math.deg-per-rad.js b/core-js/modules/esnext.math.deg-per-rad.js new file mode 100644 index 0000000000..b1c09b8e5a --- /dev/null +++ b/core-js/modules/esnext.math.deg-per-rad.js @@ -0,0 +1,7 @@ +var $ = require('../internals/export'); + +// `Math.DEG_PER_RAD` constant +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + DEG_PER_RAD: Math.PI / 180 +}); diff --git a/core-js/modules/esnext.math.degrees.js b/core-js/modules/esnext.math.degrees.js new file mode 100644 index 0000000000..e91de91cb4 --- /dev/null +++ b/core-js/modules/esnext.math.degrees.js @@ -0,0 +1,11 @@ +var $ = require('../internals/export'); + +var RAD_PER_DEG = 180 / Math.PI; + +// `Math.degrees` method +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + degrees: function degrees(radians) { + return radians * RAD_PER_DEG; + } +}); diff --git a/core-js/modules/esnext.math.fscale.js b/core-js/modules/esnext.math.fscale.js new file mode 100644 index 0000000000..3db68ef147 --- /dev/null +++ b/core-js/modules/esnext.math.fscale.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); + +var scale = require('../internals/math-scale'); +var fround = require('../internals/math-fround'); + +// `Math.fscale` method +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + fscale: function fscale(x, inLow, inHigh, outLow, outHigh) { + return fround(scale(x, inLow, inHigh, outLow, outHigh)); + } +}); diff --git a/core-js/modules/esnext.math.iaddh.js b/core-js/modules/esnext.math.iaddh.js new file mode 100644 index 0000000000..25f777bd25 --- /dev/null +++ b/core-js/modules/esnext.math.iaddh.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); + +// `Math.iaddh` method +// https://gist.github.com/BrendanEich/4294d5c212a6d2254703 +$({ target: 'Math', stat: true }, { + iaddh: function iaddh(x0, x1, y0, y1) { + var $x0 = x0 >>> 0; + var $x1 = x1 >>> 0; + var $y0 = y0 >>> 0; + return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0; + } +}); diff --git a/core-js/modules/esnext.math.imulh.js b/core-js/modules/esnext.math.imulh.js new file mode 100644 index 0000000000..3d64bb1309 --- /dev/null +++ b/core-js/modules/esnext.math.imulh.js @@ -0,0 +1,17 @@ +var $ = require('../internals/export'); + +// `Math.imulh` method +// https://gist.github.com/BrendanEich/4294d5c212a6d2254703 +$({ target: 'Math', stat: true }, { + imulh: function imulh(u, v) { + var UINT16 = 0xFFFF; + var $u = +u; + var $v = +v; + var u0 = $u & UINT16; + var v0 = $v & UINT16; + var u1 = $u >> 16; + var v1 = $v >> 16; + var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16); + return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16); + } +}); diff --git a/core-js/modules/esnext.math.isubh.js b/core-js/modules/esnext.math.isubh.js new file mode 100644 index 0000000000..367eaca064 --- /dev/null +++ b/core-js/modules/esnext.math.isubh.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); + +// `Math.isubh` method +// https://gist.github.com/BrendanEich/4294d5c212a6d2254703 +$({ target: 'Math', stat: true }, { + isubh: function isubh(x0, x1, y0, y1) { + var $x0 = x0 >>> 0; + var $x1 = x1 >>> 0; + var $y0 = y0 >>> 0; + return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0; + } +}); diff --git a/core-js/modules/esnext.math.rad-per-deg.js b/core-js/modules/esnext.math.rad-per-deg.js new file mode 100644 index 0000000000..6515cbe583 --- /dev/null +++ b/core-js/modules/esnext.math.rad-per-deg.js @@ -0,0 +1,7 @@ +var $ = require('../internals/export'); + +// `Math.RAD_PER_DEG` constant +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + RAD_PER_DEG: 180 / Math.PI +}); diff --git a/core-js/modules/esnext.math.radians.js b/core-js/modules/esnext.math.radians.js new file mode 100644 index 0000000000..0b25512ec6 --- /dev/null +++ b/core-js/modules/esnext.math.radians.js @@ -0,0 +1,11 @@ +var $ = require('../internals/export'); + +var DEG_PER_RAD = Math.PI / 180; + +// `Math.radians` method +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + radians: function radians(degrees) { + return degrees * DEG_PER_RAD; + } +}); diff --git a/core-js/modules/esnext.math.scale.js b/core-js/modules/esnext.math.scale.js new file mode 100644 index 0000000000..400a9ed518 --- /dev/null +++ b/core-js/modules/esnext.math.scale.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var scale = require('../internals/math-scale'); + +// `Math.scale` method +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + scale: scale +}); diff --git a/core-js/modules/esnext.math.seeded-prng.js b/core-js/modules/esnext.math.seeded-prng.js new file mode 100644 index 0000000000..6e3968889d --- /dev/null +++ b/core-js/modules/esnext.math.seeded-prng.js @@ -0,0 +1,33 @@ +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var numberIsFinite = require('../internals/number-is-finite'); +var createIteratorConstructor = require('../internals/create-iterator-constructor'); +var InternalStateModule = require('../internals/internal-state'); + +var SEEDED_RANDOM = 'Seeded Random'; +var SEEDED_RANDOM_GENERATOR = SEEDED_RANDOM + ' Generator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(SEEDED_RANDOM_GENERATOR); +var SEED_TYPE_ERROR = 'Math.seededPRNG() argument should have a "seed" field with a finite value.'; + +var $SeededRandomGenerator = createIteratorConstructor(function SeededRandomGenerator(seed) { + setInternalState(this, { + type: SEEDED_RANDOM_GENERATOR, + seed: seed % 2147483647 + }); +}, SEEDED_RANDOM, function next() { + var state = getInternalState(this); + var seed = state.seed = (state.seed * 1103515245 + 12345) % 2147483647; + return { value: (seed & 1073741823) / 1073741823, done: false }; +}); + +// `Math.seededPRNG` method +// https://github.com/tc39/proposal-seeded-random +// based on https://github.com/tc39/proposal-seeded-random/blob/78b8258835b57fc2100d076151ab506bc3202ae6/demo.html +$({ target: 'Math', stat: true, forced: true }, { + seededPRNG: function seededPRNG(it) { + var seed = anObject(it).seed; + if (!numberIsFinite(seed)) throw TypeError(SEED_TYPE_ERROR); + return new $SeededRandomGenerator(seed); + } +}); diff --git a/core-js/modules/esnext.math.signbit.js b/core-js/modules/esnext.math.signbit.js new file mode 100644 index 0000000000..1631c9b773 --- /dev/null +++ b/core-js/modules/esnext.math.signbit.js @@ -0,0 +1,10 @@ +var $ = require('../internals/export'); + +// `Math.signbit` method +// https://github.com/tc39/proposal-Math.signbit +$({ target: 'Math', stat: true }, { + signbit: function signbit(x) { + // eslint-disable-next-line no-self-compare + return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0; + } +}); diff --git a/core-js/modules/esnext.math.umulh.js b/core-js/modules/esnext.math.umulh.js new file mode 100644 index 0000000000..3174c2a5db --- /dev/null +++ b/core-js/modules/esnext.math.umulh.js @@ -0,0 +1,17 @@ +var $ = require('../internals/export'); + +// `Math.umulh` method +// https://gist.github.com/BrendanEich/4294d5c212a6d2254703 +$({ target: 'Math', stat: true }, { + umulh: function umulh(u, v) { + var UINT16 = 0xFFFF; + var $u = +u; + var $v = +v; + var u0 = $u & UINT16; + var v0 = $v & UINT16; + var u1 = $u >>> 16; + var v1 = $v >>> 16; + var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16); + return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16); + } +}); diff --git a/core-js/modules/esnext.number.from-string.js b/core-js/modules/esnext.number.from-string.js new file mode 100644 index 0000000000..2e2c0e94ca --- /dev/null +++ b/core-js/modules/esnext.number.from-string.js @@ -0,0 +1,30 @@ +'use strict'; +var $ = require('../internals/export'); +var toInteger = require('../internals/to-integer'); +var parseInt = require('../internals/parse-int'); + +var INVALID_NUMBER_REPRESENTATION = 'Invalid number representation'; +var INVALID_RADIX = 'Invalid radix'; +var valid = /^[\da-z]+$/; + +// `Number.fromString` method +// https://github.com/tc39/proposal-number-fromstring +$({ target: 'Number', stat: true }, { + fromString: function fromString(string, radix) { + var sign = 1; + var R, mathNum; + if (typeof string != 'string') throw TypeError(INVALID_NUMBER_REPRESENTATION); + if (!string.length) throw SyntaxError(INVALID_NUMBER_REPRESENTATION); + if (string.charAt(0) == '-') { + sign = -1; + string = string.slice(1); + if (!string.length) throw SyntaxError(INVALID_NUMBER_REPRESENTATION); + } + R = radix === undefined ? 10 : toInteger(radix); + if (R < 2 || R > 36) throw RangeError(INVALID_RADIX); + if (!valid.test(string) || (mathNum = parseInt(string, R)).toString(R) !== string) { + throw SyntaxError(INVALID_NUMBER_REPRESENTATION); + } + return sign * mathNum; + } +}); diff --git a/core-js/modules/esnext.observable.js b/core-js/modules/esnext.observable.js new file mode 100644 index 0000000000..fdfda49c6b --- /dev/null +++ b/core-js/modules/esnext.observable.js @@ -0,0 +1,207 @@ +'use strict'; +// https://github.com/tc39/proposal-observable +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var setSpecies = require('../internals/set-species'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var isObject = require('../internals/is-object'); +var anInstance = require('../internals/an-instance'); +var defineProperty = require('../internals/object-define-property').f; +var hide = require('../internals/hide'); +var redefineAll = require('../internals/redefine-all'); +var getIterator = require('../internals/get-iterator'); +var iterate = require('../internals/iterate'); +var hostReportErrors = require('../internals/host-report-errors'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var InternalStateModule = require('../internals/internal-state'); + +var OBSERVABLE = wellKnownSymbol('observable'); +var getInternalState = InternalStateModule.get; +var setInternalState = InternalStateModule.set; + +var getMethod = function (fn) { + return fn == null ? undefined : aFunction(fn); +}; + +var cleanupSubscription = function (subscriptionState) { + var cleanup = subscriptionState.cleanup; + if (cleanup) { + subscriptionState.cleanup = undefined; + try { + cleanup(); + } catch (error) { + hostReportErrors(error); + } + } +}; + +var subscriptionClosed = function (subscriptionState) { + return subscriptionState.observer === undefined; +}; + +var close = function (subscription, subscriptionState) { + if (!DESCRIPTORS) { + subscription.closed = true; + var subscriptionObserver = subscriptionState.subscriptionObserver; + if (subscriptionObserver) subscriptionObserver.closed = true; + } subscriptionState.observer = undefined; +}; + +var Subscription = function (observer, subscriber) { + var subscriptionState = setInternalState(this, { + cleanup: undefined, + observer: anObject(observer), + subscriptionObserver: undefined + }); + var start; + if (!DESCRIPTORS) this.closed = false; + try { + if (start = getMethod(observer.start)) start.call(observer, this); + } catch (error) { + hostReportErrors(error); + } + if (subscriptionClosed(subscriptionState)) return; + var subscriptionObserver = subscriptionState.subscriptionObserver = new SubscriptionObserver(this); + try { + var cleanup = subscriber(subscriptionObserver); + var subscription = cleanup; + if (cleanup != null) subscriptionState.cleanup = typeof cleanup.unsubscribe === 'function' + ? function () { subscription.unsubscribe(); } + : aFunction(cleanup); + } catch (error) { + subscriptionObserver.error(error); + return; + } if (subscriptionClosed(subscriptionState)) cleanupSubscription(subscriptionState); +}; + +Subscription.prototype = redefineAll({}, { + unsubscribe: function unsubscribe() { + var subscriptionState = getInternalState(this); + if (!subscriptionClosed(subscriptionState)) { + close(this, subscriptionState); + cleanupSubscription(subscriptionState); + } + } +}); + +if (DESCRIPTORS) defineProperty(Subscription.prototype, 'closed', { + configurable: true, + get: function () { + return subscriptionClosed(getInternalState(this)); + } +}); + +var SubscriptionObserver = function (subscription) { + setInternalState(this, { subscription: subscription }); + if (!DESCRIPTORS) this.closed = false; +}; + +SubscriptionObserver.prototype = redefineAll({}, { + next: function next(value) { + var subscriptionState = getInternalState(getInternalState(this).subscription); + if (!subscriptionClosed(subscriptionState)) { + var observer = subscriptionState.observer; + try { + var nextMethod = getMethod(observer.next); + if (nextMethod) nextMethod.call(observer, value); + } catch (error) { + hostReportErrors(error); + } + } + }, + error: function error(value) { + var subscription = getInternalState(this).subscription; + var subscriptionState = getInternalState(subscription); + if (!subscriptionClosed(subscriptionState)) { + var observer = subscriptionState.observer; + close(subscription, subscriptionState); + try { + var errorMethod = getMethod(observer.error); + if (errorMethod) errorMethod.call(observer, value); + else hostReportErrors(value); + } catch (err) { + hostReportErrors(err); + } cleanupSubscription(subscriptionState); + } + }, + complete: function complete() { + var subscription = getInternalState(this).subscription; + var subscriptionState = getInternalState(subscription); + if (!subscriptionClosed(subscriptionState)) { + var observer = subscriptionState.observer; + close(subscription, subscriptionState); + try { + var completeMethod = getMethod(observer.complete); + if (completeMethod) completeMethod.call(observer); + } catch (error) { + hostReportErrors(error); + } cleanupSubscription(subscriptionState); + } + } +}); + +if (DESCRIPTORS) defineProperty(SubscriptionObserver.prototype, 'closed', { + configurable: true, + get: function () { + return subscriptionClosed(getInternalState(getInternalState(this).subscription)); + } +}); + +var $Observable = function Observable(subscriber) { + anInstance(this, $Observable, 'Observable'); + setInternalState(this, { subscriber: aFunction(subscriber) }); +}; + +redefineAll($Observable.prototype, { + subscribe: function subscribe(observer) { + var length = arguments.length; + return new Subscription(typeof observer === 'function' ? { + next: observer, + error: length > 1 ? arguments[1] : undefined, + complete: length > 2 ? arguments[2] : undefined + } : isObject(observer) ? observer : {}, getInternalState(this).subscriber); + } +}); + +redefineAll($Observable, { + from: function from(x) { + var C = typeof this === 'function' ? this : $Observable; + var observableMethod = getMethod(anObject(x)[OBSERVABLE]); + if (observableMethod) { + var observable = anObject(observableMethod.call(x)); + return observable.constructor === C ? observable : new C(function (observer) { + return observable.subscribe(observer); + }); + } + var iterator = getIterator(x); + return new C(function (observer) { + iterate(iterator, function (it) { + observer.next(it); + if (observer.closed) return iterate.stop(); + }, undefined, false, true); + observer.complete(); + }); + }, + of: function of() { + var C = typeof this === 'function' ? this : $Observable; + var length = arguments.length; + var items = new Array(length); + var index = 0; + while (index < length) items[index] = arguments[index++]; + return new C(function (observer) { + for (var i = 0; i < length; i++) { + observer.next(items[i]); + if (observer.closed) return; + } observer.complete(); + }); + } +}); + +hide($Observable.prototype, OBSERVABLE, function () { return this; }); + +$({ global: true }, { + Observable: $Observable +}); + +setSpecies('Observable'); diff --git a/core-js/modules/esnext.promise.all-settled.js b/core-js/modules/esnext.promise.all-settled.js new file mode 100644 index 0000000000..0b9d7eeeb0 --- /dev/null +++ b/core-js/modules/esnext.promise.all-settled.js @@ -0,0 +1,2 @@ +// TODO: Remove from `core-js@4` +require('./es.promise.all-settled.js'); diff --git a/core-js/modules/esnext.promise.any.js b/core-js/modules/esnext.promise.any.js new file mode 100644 index 0000000000..e26d1b33e2 --- /dev/null +++ b/core-js/modules/esnext.promise.any.js @@ -0,0 +1,46 @@ +'use strict'; +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var getBuiltIn = require('../internals/get-built-in'); +var newPromiseCapabilityModule = require('../internals/new-promise-capability'); +var perform = require('../internals/perform'); +var iterate = require('../internals/iterate'); + +var PROMISE_ANY_ERROR = 'No one promise resolved'; + +// `Promise.any` method +// https://github.com/tc39/proposal-promise-any +$({ target: 'Promise', stat: true }, { + any: function any(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var promiseResolve = aFunction(C.resolve); + var errors = []; + var counter = 0; + var remaining = 1; + var alreadyResolved = false; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyRejected = false; + errors.push(undefined); + remaining++; + promiseResolve.call(C, promise).then(function (value) { + if (alreadyRejected || alreadyResolved) return; + alreadyResolved = true; + resolve(value); + }, function (e) { + if (alreadyRejected || alreadyResolved) return; + alreadyRejected = true; + errors[index] = e; + --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR)); + }); + }); + --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR)); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); diff --git a/core-js/modules/esnext.promise.try.js b/core-js/modules/esnext.promise.try.js new file mode 100644 index 0000000000..7a7b93b6a6 --- /dev/null +++ b/core-js/modules/esnext.promise.try.js @@ -0,0 +1,15 @@ +'use strict'; +var $ = require('../internals/export'); +var newPromiseCapabilityModule = require('../internals/new-promise-capability'); +var perform = require('../internals/perform'); + +// `Promise.try` method +// https://github.com/tc39/proposal-promise-try +$({ target: 'Promise', stat: true }, { + 'try': function (callbackfn) { + var promiseCapability = newPromiseCapabilityModule.f(this); + var result = perform(callbackfn); + (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value); + return promiseCapability.promise; + } +}); diff --git a/core-js/modules/esnext.reflect.define-metadata.js b/core-js/modules/esnext.reflect.define-metadata.js new file mode 100644 index 0000000000..25964392cc --- /dev/null +++ b/core-js/modules/esnext.reflect.define-metadata.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); + +var toMetadataKey = ReflectMetadataModule.toKey; +var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; + +// `Reflect.defineMetadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + defineMetadata: function defineMetadata(metadataKey, metadataValue, target /* , targetKey */) { + var targetKey = arguments.length < 4 ? undefined : toMetadataKey(arguments[3]); + ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), targetKey); + } +}); diff --git a/core-js/modules/esnext.reflect.delete-metadata.js b/core-js/modules/esnext.reflect.delete-metadata.js new file mode 100644 index 0000000000..ec510d38f0 --- /dev/null +++ b/core-js/modules/esnext.reflect.delete-metadata.js @@ -0,0 +1,21 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); + +var toMetadataKey = ReflectMetadataModule.toKey; +var getOrCreateMetadataMap = ReflectMetadataModule.getMap; +var store = ReflectMetadataModule.store; + +// `Reflect.deleteMetadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); + var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false); + if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false; + if (metadataMap.size) return true; + var targetMetadata = store.get(target); + targetMetadata['delete'](targetKey); + return !!targetMetadata.size || store['delete'](target); + } +}); diff --git a/core-js/modules/esnext.reflect.get-metadata-keys.js b/core-js/modules/esnext.reflect.get-metadata-keys.js new file mode 100644 index 0000000000..795f63d641 --- /dev/null +++ b/core-js/modules/esnext.reflect.get-metadata-keys.js @@ -0,0 +1,33 @@ +var $ = require('../internals/export'); +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +var Set = require('../modules/es.set'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var iterate = require('../internals/iterate'); + +var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; +var toMetadataKey = ReflectMetadataModule.toKey; + +var from = function (iter) { + var result = []; + iterate(iter, result.push, result); + return result; +}; + +var ordinaryMetadataKeys = function (O, P) { + var oKeys = ordinaryOwnMetadataKeys(O, P); + var parent = getPrototypeOf(O); + if (parent === null) return oKeys; + var pKeys = ordinaryMetadataKeys(parent, P); + return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys; +}; + +// `Reflect.getMetadataKeys` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + getMetadataKeys: function getMetadataKeys(target /* , targetKey */) { + var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); + return ordinaryMetadataKeys(anObject(target), targetKey); + } +}); diff --git a/core-js/modules/esnext.reflect.get-metadata.js b/core-js/modules/esnext.reflect.get-metadata.js new file mode 100644 index 0000000000..fd344e8454 --- /dev/null +++ b/core-js/modules/esnext.reflect.get-metadata.js @@ -0,0 +1,24 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); + +var ordinaryHasOwnMetadata = ReflectMetadataModule.has; +var ordinaryGetOwnMetadata = ReflectMetadataModule.get; +var toMetadataKey = ReflectMetadataModule.toKey; + +var ordinaryGetMetadata = function (MetadataKey, O, P) { + var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); + if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P); + var parent = getPrototypeOf(O); + return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined; +}; + +// `Reflect.getMetadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + getMetadata: function getMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); + return ordinaryGetMetadata(metadataKey, anObject(target), targetKey); + } +}); diff --git a/core-js/modules/esnext.reflect.get-own-metadata-keys.js b/core-js/modules/esnext.reflect.get-own-metadata-keys.js new file mode 100644 index 0000000000..090bb8dd76 --- /dev/null +++ b/core-js/modules/esnext.reflect.get-own-metadata-keys.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); + +var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; +var toMetadataKey = ReflectMetadataModule.toKey; + +// `Reflect.getOwnMetadataKeys` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) { + var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); + return ordinaryOwnMetadataKeys(anObject(target), targetKey); + } +}); diff --git a/core-js/modules/esnext.reflect.get-own-metadata.js b/core-js/modules/esnext.reflect.get-own-metadata.js new file mode 100644 index 0000000000..81c40d0672 --- /dev/null +++ b/core-js/modules/esnext.reflect.get-own-metadata.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); + +var ordinaryGetOwnMetadata = ReflectMetadataModule.get; +var toMetadataKey = ReflectMetadataModule.toKey; + +// `Reflect.getOwnMetadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); + return ordinaryGetOwnMetadata(metadataKey, anObject(target), targetKey); + } +}); diff --git a/core-js/modules/esnext.reflect.has-metadata.js b/core-js/modules/esnext.reflect.has-metadata.js new file mode 100644 index 0000000000..4b81771848 --- /dev/null +++ b/core-js/modules/esnext.reflect.has-metadata.js @@ -0,0 +1,23 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); + +var ordinaryHasOwnMetadata = ReflectMetadataModule.has; +var toMetadataKey = ReflectMetadataModule.toKey; + +var ordinaryHasMetadata = function (MetadataKey, O, P) { + var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); + if (hasOwn) return true; + var parent = getPrototypeOf(O); + return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false; +}; + +// `Reflect.hasMetadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); + return ordinaryHasMetadata(metadataKey, anObject(target), targetKey); + } +}); diff --git a/core-js/modules/esnext.reflect.has-own-metadata.js b/core-js/modules/esnext.reflect.has-own-metadata.js new file mode 100644 index 0000000000..87774b197d --- /dev/null +++ b/core-js/modules/esnext.reflect.has-own-metadata.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); + +var ordinaryHasOwnMetadata = ReflectMetadataModule.has; +var toMetadataKey = ReflectMetadataModule.toKey; + +// `Reflect.hasOwnMetadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); + return ordinaryHasOwnMetadata(metadataKey, anObject(target), targetKey); + } +}); diff --git a/core-js/modules/esnext.reflect.metadata.js b/core-js/modules/esnext.reflect.metadata.js new file mode 100644 index 0000000000..7e1caa6812 --- /dev/null +++ b/core-js/modules/esnext.reflect.metadata.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); + +var toMetadataKey = ReflectMetadataModule.toKey; +var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; + +// `Reflect.metadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + metadata: function metadata(metadataKey, metadataValue) { + return function decorator(target, key) { + ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetadataKey(key)); + }; + } +}); diff --git a/core-js/modules/esnext.set.add-all.js b/core-js/modules/esnext.set.add-all.js new file mode 100644 index 0000000000..5de5089535 --- /dev/null +++ b/core-js/modules/esnext.set.add-all.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var collectionAddAll = require('../internals/collection-add-all'); + +// `Set.prototype.addAll` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + addAll: function addAll(/* ...elements */) { + return collectionAddAll.apply(this, arguments); + } +}); diff --git a/core-js/modules/esnext.set.delete-all.js b/core-js/modules/esnext.set.delete-all.js new file mode 100644 index 0000000000..43e4195494 --- /dev/null +++ b/core-js/modules/esnext.set.delete-all.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var collectionDeleteAll = require('../internals/collection-delete-all'); + +// `Set.prototype.deleteAll` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + deleteAll: function deleteAll(/* ...elements */) { + return collectionDeleteAll.apply(this, arguments); + } +}); diff --git a/core-js/modules/esnext.set.difference.js b/core-js/modules/esnext.set.difference.js new file mode 100644 index 0000000000..0bb6562657 --- /dev/null +++ b/core-js/modules/esnext.set.difference.js @@ -0,0 +1,22 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var speciesConstructor = require('../internals/species-constructor'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.difference` method +// https://github.com/tc39/proposal-set-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + difference: function difference(iterable) { + var set = anObject(this); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set); + var remover = aFunction(newSet['delete']); + iterate(iterable, function (value) { + remover.call(newSet, value); + }); + return newSet; + } +}); diff --git a/core-js/modules/esnext.set.every.js b/core-js/modules/esnext.set.every.js new file mode 100644 index 0000000000..c8a8e1d9fb --- /dev/null +++ b/core-js/modules/esnext.set.every.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/bind-context'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.every` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + every: function every(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return !iterate(iterator, function (value) { + if (!boundFunction(value, value, set)) return iterate.stop(); + }, undefined, false, true).stopped; + } +}); diff --git a/core-js/modules/esnext.set.filter.js b/core-js/modules/esnext.set.filter.js new file mode 100644 index 0000000000..aeca99ac95 --- /dev/null +++ b/core-js/modules/esnext.set.filter.js @@ -0,0 +1,26 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var bind = require('../internals/bind-context'); +var speciesConstructor = require('../internals/species-constructor'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.filter` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + filter: function filter(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(); + var adder = aFunction(newSet.add); + iterate(iterator, function (value) { + if (boundFunction(value, value, set)) adder.call(newSet, value); + }, undefined, false, true); + return newSet; + } +}); diff --git a/core-js/modules/esnext.set.find.js b/core-js/modules/esnext.set.find.js new file mode 100644 index 0000000000..991ee2e16a --- /dev/null +++ b/core-js/modules/esnext.set.find.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/bind-context'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.find` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + find: function find(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate(iterator, function (value) { + if (boundFunction(value, value, set)) return iterate.stop(value); + }, undefined, false, true).result; + } +}); diff --git a/core-js/modules/esnext.set.from.js b/core-js/modules/esnext.set.from.js new file mode 100644 index 0000000000..3ca34f4517 --- /dev/null +++ b/core-js/modules/esnext.set.from.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var from = require('../internals/collection-from'); + +// `Set.from` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from +$({ target: 'Set', stat: true }, { + from: from +}); diff --git a/core-js/modules/esnext.set.intersection.js b/core-js/modules/esnext.set.intersection.js new file mode 100644 index 0000000000..2d59f0d97a --- /dev/null +++ b/core-js/modules/esnext.set.intersection.js @@ -0,0 +1,23 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var speciesConstructor = require('../internals/species-constructor'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.intersection` method +// https://github.com/tc39/proposal-set-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + intersection: function intersection(iterable) { + var set = anObject(this); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(); + var hasCheck = aFunction(set.has); + var adder = aFunction(newSet.add); + iterate(iterable, function (value) { + if (hasCheck.call(set, value)) adder.call(newSet, value); + }); + return newSet; + } +}); diff --git a/core-js/modules/esnext.set.is-disjoint-from.js b/core-js/modules/esnext.set.is-disjoint-from.js new file mode 100644 index 0000000000..3166ed9f4e --- /dev/null +++ b/core-js/modules/esnext.set.is-disjoint-from.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.isDisjointFrom` method +// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + isDisjointFrom: function isDisjointFrom(iterable) { + var set = anObject(this); + var hasCheck = aFunction(set.has); + return !iterate(iterable, function (value) { + if (hasCheck.call(set, value) === true) return iterate.stop(); + }).stopped; + } +}); diff --git a/core-js/modules/esnext.set.is-subset-of.js b/core-js/modules/esnext.set.is-subset-of.js new file mode 100644 index 0000000000..b3dde5e717 --- /dev/null +++ b/core-js/modules/esnext.set.is-subset-of.js @@ -0,0 +1,25 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var getIterator = require('../internals/get-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.isSubsetOf` method +// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + isSubsetOf: function isSubsetOf(iterable) { + var iterator = getIterator(this); + var otherSet = anObject(iterable); + var hasCheck = otherSet.has; + if (typeof hasCheck != 'function') { + otherSet = new (getBuiltIn('Set'))(iterable); + hasCheck = aFunction(otherSet.has); + } + return !iterate(iterator, function (value) { + if (hasCheck.call(otherSet, value) === false) return iterate.stop(); + }, undefined, false, true).stopped; + } +}); diff --git a/core-js/modules/esnext.set.is-superset-of.js b/core-js/modules/esnext.set.is-superset-of.js new file mode 100644 index 0000000000..303667a644 --- /dev/null +++ b/core-js/modules/esnext.set.is-superset-of.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.isSupersetOf` method +// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + isSupersetOf: function isSupersetOf(iterable) { + var set = anObject(this); + var hasCheck = aFunction(set.has); + return !iterate(iterable, function (value) { + if (hasCheck.call(set, value) === false) return iterate.stop(); + }).stopped; + } +}); diff --git a/core-js/modules/esnext.set.join.js b/core-js/modules/esnext.set.join.js new file mode 100644 index 0000000000..4b78472710 --- /dev/null +++ b/core-js/modules/esnext.set.join.js @@ -0,0 +1,19 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.join` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + join: function join(separator) { + var set = anObject(this); + var iterator = getSetIterator(set); + var sep = separator === undefined ? ',' : String(separator); + var result = []; + iterate(iterator, result.push, result, false, true); + return result.join(sep); + } +}); diff --git a/core-js/modules/esnext.set.map.js b/core-js/modules/esnext.set.map.js new file mode 100644 index 0000000000..023a82a93e --- /dev/null +++ b/core-js/modules/esnext.set.map.js @@ -0,0 +1,26 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var bind = require('../internals/bind-context'); +var speciesConstructor = require('../internals/species-constructor'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.map` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + map: function map(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(); + var adder = aFunction(newSet.add); + iterate(iterator, function (value) { + adder.call(newSet, boundFunction(value, value, set)); + }, undefined, false, true); + return newSet; + } +}); diff --git a/core-js/modules/esnext.set.of.js b/core-js/modules/esnext.set.of.js new file mode 100644 index 0000000000..744698eba9 --- /dev/null +++ b/core-js/modules/esnext.set.of.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var of = require('../internals/collection-of'); + +// `Set.of` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of +$({ target: 'Set', stat: true }, { + of: of +}); diff --git a/core-js/modules/esnext.set.reduce.js b/core-js/modules/esnext.set.reduce.js new file mode 100644 index 0000000000..6a08fa23d8 --- /dev/null +++ b/core-js/modules/esnext.set.reduce.js @@ -0,0 +1,28 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.reduce` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + reduce: function reduce(callbackfn /* , initialValue */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var accumulator, step; + aFunction(callbackfn); + if (arguments.length > 1) accumulator = arguments[1]; + else { + step = iterator.next(); + if (step.done) throw TypeError('Reduce of empty set with no initial value'); + accumulator = step.value; + } + iterate(iterator, function (value) { + accumulator = callbackfn(accumulator, value, value, set); + }, undefined, false, true); + return accumulator; + } +}); diff --git a/core-js/modules/esnext.set.some.js b/core-js/modules/esnext.set.some.js new file mode 100644 index 0000000000..abb653eb1f --- /dev/null +++ b/core-js/modules/esnext.set.some.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/bind-context'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.some` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + some: function some(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate(iterator, function (value) { + if (boundFunction(value, value, set)) return iterate.stop(); + }, undefined, false, true).stopped; + } +}); diff --git a/core-js/modules/esnext.set.symmetric-difference.js b/core-js/modules/esnext.set.symmetric-difference.js new file mode 100644 index 0000000000..ccd326fd9b --- /dev/null +++ b/core-js/modules/esnext.set.symmetric-difference.js @@ -0,0 +1,23 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var speciesConstructor = require('../internals/species-constructor'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.symmetricDifference` method +// https://github.com/tc39/proposal-set-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + symmetricDifference: function symmetricDifference(iterable) { + var set = anObject(this); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set); + var remover = aFunction(newSet['delete']); + var adder = aFunction(newSet.add); + iterate(iterable, function (value) { + remover.call(newSet, value) || adder.call(newSet, value); + }); + return newSet; + } +}); diff --git a/core-js/modules/esnext.set.union.js b/core-js/modules/esnext.set.union.js new file mode 100644 index 0000000000..fc153d400a --- /dev/null +++ b/core-js/modules/esnext.set.union.js @@ -0,0 +1,19 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var speciesConstructor = require('../internals/species-constructor'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.union` method +// https://github.com/tc39/proposal-set-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + union: function union(iterable) { + var set = anObject(this); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set); + iterate(iterable, aFunction(newSet.add), newSet); + return newSet; + } +}); diff --git a/core-js/modules/esnext.string.at.js b/core-js/modules/esnext.string.at.js new file mode 100644 index 0000000000..fc3c44a760 --- /dev/null +++ b/core-js/modules/esnext.string.at.js @@ -0,0 +1,11 @@ +'use strict'; +var $ = require('../internals/export'); +var charAt = require('../internals/string-multibyte').charAt; + +// `String.prototype.at` method +// https://github.com/mathiasbynens/String.prototype.at +$({ target: 'String', proto: true }, { + at: function at(pos) { + return charAt(this, pos); + } +}); diff --git a/core-js/modules/esnext.string.code-points.js b/core-js/modules/esnext.string.code-points.js new file mode 100644 index 0000000000..fcf15d667f --- /dev/null +++ b/core-js/modules/esnext.string.code-points.js @@ -0,0 +1,38 @@ +'use strict'; +var $ = require('../internals/export'); +var createIteratorConstructor = require('../internals/create-iterator-constructor'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var InternalStateModule = require('../internals/internal-state'); +var StringMultibyteModule = require('../internals/string-multibyte'); + +var codeAt = StringMultibyteModule.codeAt; +var charAt = StringMultibyteModule.charAt; +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// TODO: unify with String#@@iterator +var $StringIterator = createIteratorConstructor(function StringIterator(string) { + setInternalState(this, { + type: STRING_ITERATOR, + string: string, + index: 0 + }); +}, 'String', function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return { value: undefined, done: true }; + point = charAt(string, index); + state.index += point.length; + return { value: { codePoint: codeAt(point, 0), position: index }, done: false }; +}); + +// `String.prototype.codePoints` method +// https://github.com/tc39/proposal-string-prototype-codepoints +$({ target: 'String', proto: true }, { + codePoints: function codePoints() { + return new $StringIterator(String(requireObjectCoercible(this))); + } +}); diff --git a/core-js/modules/esnext.string.match-all.js b/core-js/modules/esnext.string.match-all.js new file mode 100644 index 0000000000..d507e03fbf --- /dev/null +++ b/core-js/modules/esnext.string.match-all.js @@ -0,0 +1,3 @@ +// TODO: Remove from `core-js@4` +require('./es.symbol.match-all'); +require('./es.string.match-all'); diff --git a/core-js/modules/esnext.string.replace-all.js b/core-js/modules/esnext.string.replace-all.js new file mode 100644 index 0000000000..521d7de144 --- /dev/null +++ b/core-js/modules/esnext.string.replace-all.js @@ -0,0 +1,53 @@ +'use strict'; +var $ = require('../internals/export'); +var hide = require('../internals/hide'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var anObject = require('../internals/an-object'); +var isRegExp = require('../internals/is-regexp'); +var getRegExpFlags = require('../internals/regexp-flags'); +var speciesConstructor = require('../internals/species-constructor'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var IS_PURE = require('../internals/is-pure'); + +var REPLACE_ALL = wellKnownSymbol('replaceAll'); +var RegExpPrototype = RegExp.prototype; + +var $replaceAll = function (string, replaceValue) { + var rx = anObject(this); + var flags = String('flags' in RegExpPrototype ? rx.flags : getRegExpFlags.call(rx)); + if (!~flags.indexOf('g')) { + rx = new (speciesConstructor(rx, RegExp))(rx.source, flags + 'g'); + } + return String(string).replace(rx, replaceValue); +}; + +// `String.prototype.replaceAll` method +// https://github.com/tc39/proposal-string-replace-all +$({ target: 'String', proto: true }, { + replaceAll: function replaceAll(searchValue, replaceValue) { + var O = requireObjectCoercible(this); + var replacer, string, searchString, template, result, index; + if (searchValue != null) { + replacer = searchValue[REPLACE_ALL]; + if (replacer !== undefined) { + return replacer.call(searchValue, O, replaceValue); + } else if (IS_PURE && isRegExp(searchValue)) { + return $replaceAll.call(searchValue, O, replaceValue); + } + } + string = String(O); + searchString = String(searchValue); + template = string.split(searchString); + if (typeof replaceValue !== 'function') { + return template.join(String(replaceValue)); + } + result = template[0]; + for (index = 1; index < template.length; index++) { + result += String(replaceValue(searchString, index - 1, string)); + result += template[index]; + } + return result; + } +}); + +IS_PURE || REPLACE_ALL in RegExpPrototype || hide(RegExpPrototype, REPLACE_ALL, $replaceAll); diff --git a/core-js/modules/esnext.symbol.async-dispose.js b/core-js/modules/esnext.symbol.async-dispose.js new file mode 100644 index 0000000000..776608e901 --- /dev/null +++ b/core-js/modules/esnext.symbol.async-dispose.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.asyncDispose` well-known symbol +// https://github.com/tc39/proposal-using-statement +defineWellKnownSymbol('asyncDispose'); diff --git a/core-js/modules/esnext.symbol.dispose.js b/core-js/modules/esnext.symbol.dispose.js new file mode 100644 index 0000000000..ac7691dd51 --- /dev/null +++ b/core-js/modules/esnext.symbol.dispose.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.dispose` well-known symbol +// https://github.com/tc39/proposal-using-statement +defineWellKnownSymbol('dispose'); diff --git a/core-js/modules/esnext.symbol.observable.js b/core-js/modules/esnext.symbol.observable.js new file mode 100644 index 0000000000..dc4a4f5501 --- /dev/null +++ b/core-js/modules/esnext.symbol.observable.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.observable` well-known symbol +// https://github.com/tc39/proposal-observable +defineWellKnownSymbol('observable'); diff --git a/core-js/modules/esnext.symbol.pattern-match.js b/core-js/modules/esnext.symbol.pattern-match.js new file mode 100644 index 0000000000..01200639cf --- /dev/null +++ b/core-js/modules/esnext.symbol.pattern-match.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.patternMatch` well-known symbol +// https://github.com/tc39/proposal-pattern-matching +defineWellKnownSymbol('patternMatch'); diff --git a/core-js/modules/esnext.symbol.replace-all.js b/core-js/modules/esnext.symbol.replace-all.js new file mode 100644 index 0000000000..c103887233 --- /dev/null +++ b/core-js/modules/esnext.symbol.replace-all.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.replaceAll` well-known symbol +// https://tc39.github.io/proposal-string-replaceall/ +defineWellKnownSymbol('replaceAll'); diff --git a/core-js/modules/esnext.weak-map.delete-all.js b/core-js/modules/esnext.weak-map.delete-all.js new file mode 100644 index 0000000000..ef56f99c88 --- /dev/null +++ b/core-js/modules/esnext.weak-map.delete-all.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var collectionDeleteAll = require('../internals/collection-delete-all'); + +// `WeakMap.prototype.deleteAll` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'WeakMap', proto: true, real: true, forced: IS_PURE }, { + deleteAll: function deleteAll(/* ...elements */) { + return collectionDeleteAll.apply(this, arguments); + } +}); diff --git a/core-js/modules/esnext.weak-map.from.js b/core-js/modules/esnext.weak-map.from.js new file mode 100644 index 0000000000..8dc7b01a52 --- /dev/null +++ b/core-js/modules/esnext.weak-map.from.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var from = require('../internals/collection-from'); + +// `WeakMap.from` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from +$({ target: 'WeakMap', stat: true }, { + from: from +}); diff --git a/core-js/modules/esnext.weak-map.of.js b/core-js/modules/esnext.weak-map.of.js new file mode 100644 index 0000000000..efea5139b1 --- /dev/null +++ b/core-js/modules/esnext.weak-map.of.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var of = require('../internals/collection-of'); + +// `WeakMap.of` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of +$({ target: 'WeakMap', stat: true }, { + of: of +}); diff --git a/core-js/modules/esnext.weak-set.add-all.js b/core-js/modules/esnext.weak-set.add-all.js new file mode 100644 index 0000000000..e8bb4c9629 --- /dev/null +++ b/core-js/modules/esnext.weak-set.add-all.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var collectionAddAll = require('../internals/collection-add-all'); + +// `WeakSet.prototype.addAll` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'WeakSet', proto: true, real: true, forced: IS_PURE }, { + addAll: function addAll(/* ...elements */) { + return collectionAddAll.apply(this, arguments); + } +}); diff --git a/core-js/modules/esnext.weak-set.delete-all.js b/core-js/modules/esnext.weak-set.delete-all.js new file mode 100644 index 0000000000..b2628213f4 --- /dev/null +++ b/core-js/modules/esnext.weak-set.delete-all.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var collectionDeleteAll = require('../internals/collection-delete-all'); + +// `WeakSet.prototype.deleteAll` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'WeakSet', proto: true, real: true, forced: IS_PURE }, { + deleteAll: function deleteAll(/* ...elements */) { + return collectionDeleteAll.apply(this, arguments); + } +}); diff --git a/core-js/modules/esnext.weak-set.from.js b/core-js/modules/esnext.weak-set.from.js new file mode 100644 index 0000000000..e13acec6dc --- /dev/null +++ b/core-js/modules/esnext.weak-set.from.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var from = require('../internals/collection-from'); + +// `WeakSet.from` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from +$({ target: 'WeakSet', stat: true }, { + from: from +}); diff --git a/core-js/modules/esnext.weak-set.of.js b/core-js/modules/esnext.weak-set.of.js new file mode 100644 index 0000000000..aee9920fe4 --- /dev/null +++ b/core-js/modules/esnext.weak-set.of.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var of = require('../internals/collection-of'); + +// `WeakSet.of` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of +$({ target: 'WeakSet', stat: true }, { + of: of +}); diff --git a/core-js/modules/web.dom-collections.for-each.js b/core-js/modules/web.dom-collections.for-each.js new file mode 100644 index 0000000000..72c125aae4 --- /dev/null +++ b/core-js/modules/web.dom-collections.for-each.js @@ -0,0 +1,15 @@ +var global = require('../internals/global'); +var DOMIterables = require('../internals/dom-iterables'); +var forEach = require('../internals/array-for-each'); +var hide = require('../internals/hide'); + +for (var COLLECTION_NAME in DOMIterables) { + var Collection = global[COLLECTION_NAME]; + var CollectionPrototype = Collection && Collection.prototype; + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { + hide(CollectionPrototype, 'forEach', forEach); + } catch (error) { + CollectionPrototype.forEach = forEach; + } +} diff --git a/core-js/modules/web.dom-collections.iterator.js b/core-js/modules/web.dom-collections.iterator.js new file mode 100644 index 0000000000..38a7709193 --- /dev/null +++ b/core-js/modules/web.dom-collections.iterator.js @@ -0,0 +1,31 @@ +var global = require('../internals/global'); +var DOMIterables = require('../internals/dom-iterables'); +var ArrayIteratorMethods = require('../modules/es.array.iterator'); +var hide = require('../internals/hide'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var ITERATOR = wellKnownSymbol('iterator'); +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var ArrayValues = ArrayIteratorMethods.values; + +for (var COLLECTION_NAME in DOMIterables) { + var Collection = global[COLLECTION_NAME]; + var CollectionPrototype = Collection && Collection.prototype; + if (CollectionPrototype) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[ITERATOR] !== ArrayValues) try { + hide(CollectionPrototype, ITERATOR, ArrayValues); + } catch (error) { + CollectionPrototype[ITERATOR] = ArrayValues; + } + if (!CollectionPrototype[TO_STRING_TAG]) hide(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME); + if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { + hide(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); + } catch (error) { + CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; + } + } + } +} diff --git a/core-js/modules/web.immediate.js b/core-js/modules/web.immediate.js new file mode 100644 index 0000000000..b606d40640 --- /dev/null +++ b/core-js/modules/web.immediate.js @@ -0,0 +1,14 @@ +var global = require('../internals/global'); +var task = require('../internals/task'); + +var FORCED = !global.setImmediate || !global.clearImmediate; + +// http://w3c.github.io/setImmediate/ +require('../internals/export')({ global: true, bind: true, enumerable: true, forced: FORCED }, { + // `setImmediate` method + // http://w3c.github.io/setImmediate/#si-setImmediate + setImmediate: task.set, + // `clearImmediate` method + // http://w3c.github.io/setImmediate/#si-clearImmediate + clearImmediate: task.clear +}); diff --git a/core-js/modules/web.queue-microtask.js b/core-js/modules/web.queue-microtask.js new file mode 100644 index 0000000000..ac5530c1b2 --- /dev/null +++ b/core-js/modules/web.queue-microtask.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var global = require('../internals/global'); +var microtask = require('../internals/microtask'); +var classof = require('../internals/classof-raw'); + +var process = global.process; +var isNode = classof(process) == 'process'; + +// `queueMicrotask` method +// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask +$({ global: true, enumerable: true, noTargetGet: true }, { + queueMicrotask: function queueMicrotask(fn) { + var domain = isNode && process.domain; + microtask(domain ? domain.bind(fn) : fn); + } +}); diff --git a/core-js/modules/web.timers.js b/core-js/modules/web.timers.js new file mode 100644 index 0000000000..0a5fc97481 --- /dev/null +++ b/core-js/modules/web.timers.js @@ -0,0 +1,28 @@ +var $ = require('../internals/export'); +var global = require('../internals/global'); +var userAgent = require('../internals/user-agent'); + +var slice = [].slice; +var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check + +var wrap = function (scheduler) { + return function (handler, timeout /* , ...arguments */) { + var boundArgs = arguments.length > 2; + var args = boundArgs ? slice.call(arguments, 2) : undefined; + return scheduler(boundArgs ? function () { + // eslint-disable-next-line no-new-func + (typeof handler == 'function' ? handler : Function(handler)).apply(this, args); + } : handler, timeout); + }; +}; + +// ie9- setTimeout & setInterval additional parameters fix +// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers +$({ global: true, bind: true, forced: MSIE }, { + // `setTimeout` method + // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout + setTimeout: wrap(global.setTimeout), + // `setInterval` method + // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval + setInterval: wrap(global.setInterval) +}); diff --git a/core-js/modules/web.url-search-params.js b/core-js/modules/web.url-search-params.js new file mode 100644 index 0000000000..57454b3276 --- /dev/null +++ b/core-js/modules/web.url-search-params.js @@ -0,0 +1,311 @@ +'use strict'; +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +require('../modules/es.array.iterator'); +var $ = require('../internals/export'); +var USE_NATIVE_URL = require('../internals/native-url'); +var redefine = require('../internals/redefine'); +var redefineAll = require('../internals/redefine-all'); +var setToStringTag = require('../internals/set-to-string-tag'); +var createIteratorConstructor = require('../internals/create-iterator-constructor'); +var InternalStateModule = require('../internals/internal-state'); +var anInstance = require('../internals/an-instance'); +var hasOwn = require('../internals/has'); +var bind = require('../internals/bind-context'); +var anObject = require('../internals/an-object'); +var isObject = require('../internals/is-object'); +var getIterator = require('../internals/get-iterator'); +var getIteratorMethod = require('../internals/get-iterator-method'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var ITERATOR = wellKnownSymbol('iterator'); +var URL_SEARCH_PARAMS = 'URLSearchParams'; +var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS); +var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR); + +var plus = /\+/g; +var sequences = Array(4); + +var percentSequence = function (bytes) { + return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\da-f]{2}){' + bytes + '})', 'gi')); +}; + +var percentDecode = function (sequence) { + try { + return decodeURIComponent(sequence); + } catch (error) { + return sequence; + } +}; + +var deserialize = function (it) { + var result = it.replace(plus, ' '); + var bytes = 4; + try { + return decodeURIComponent(result); + } catch (error) { + while (bytes) { + result = result.replace(percentSequence(bytes--), percentDecode); + } + return result; + } +}; + +var find = /[!'()~]|%20/g; + +var replace = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+' +}; + +var replacer = function (match) { + return replace[match]; +}; + +var serialize = function (it) { + return encodeURIComponent(it).replace(find, replacer); +}; + +var parseSearchParams = function (result, query) { + if (query) { + var attributes = query.split('&'); + var index = 0; + var attribute, entry; + while (index < attributes.length) { + attribute = attributes[index++]; + if (attribute.length) { + entry = attribute.split('='); + result.push({ + key: deserialize(entry.shift()), + value: deserialize(entry.join('=')) + }); + } + } + } +}; + +var updateSearchParams = function (query) { + this.entries.length = 0; + parseSearchParams(this.entries, query); +}; + +var validateArgumentsLength = function (passed, required) { + if (passed < required) throw TypeError('Not enough arguments'); +}; + +var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) { + setInternalState(this, { + type: URL_SEARCH_PARAMS_ITERATOR, + iterator: getIterator(getInternalParamsState(params).entries), + kind: kind + }); +}, 'Iterator', function next() { + var state = getInternalIteratorState(this); + var kind = state.kind; + var step = state.iterator.next(); + var entry = step.value; + if (!step.done) { + step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value]; + } return step; +}); + +// `URLSearchParams` constructor +// https://url.spec.whatwg.org/#interface-urlsearchparams +var URLSearchParamsConstructor = function URLSearchParams(/* init */) { + anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS); + var init = arguments.length > 0 ? arguments[0] : undefined; + var that = this; + var entries = []; + var iteratorMethod, iterator, step, entryIterator, first, second, key; + + setInternalState(that, { + type: URL_SEARCH_PARAMS, + entries: entries, + updateURL: function () { /* empty */ }, + updateSearchParams: updateSearchParams + }); + + if (init !== undefined) { + if (isObject(init)) { + iteratorMethod = getIteratorMethod(init); + if (typeof iteratorMethod === 'function') { + iterator = iteratorMethod.call(init); + while (!(step = iterator.next()).done) { + entryIterator = getIterator(anObject(step.value)); + if ( + (first = entryIterator.next()).done || + (second = entryIterator.next()).done || + !entryIterator.next().done + ) throw TypeError('Expected sequence with length 2'); + entries.push({ key: first.value + '', value: second.value + '' }); + } + } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' }); + } else { + parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + ''); + } + } +}; + +var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype; + +redefineAll(URLSearchParamsPrototype, { + // `URLSearchParams.prototype.appent` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-append + append: function append(name, value) { + validateArgumentsLength(arguments.length, 2); + var state = getInternalParamsState(this); + state.entries.push({ key: name + '', value: value + '' }); + state.updateURL(); + }, + // `URLSearchParams.prototype.delete` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-delete + 'delete': function (name) { + validateArgumentsLength(arguments.length, 1); + var state = getInternalParamsState(this); + var entries = state.entries; + var key = name + ''; + var index = 0; + while (index < entries.length) { + if (entries[index].key === key) entries.splice(index, 1); + else index++; + } + state.updateURL(); + }, + // `URLSearchParams.prototype.get` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-get + get: function get(name) { + validateArgumentsLength(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = name + ''; + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) return entries[index].value; + } + return null; + }, + // `URLSearchParams.prototype.getAll` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-getall + getAll: function getAll(name) { + validateArgumentsLength(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = name + ''; + var result = []; + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) result.push(entries[index].value); + } + return result; + }, + // `URLSearchParams.prototype.has` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-has + has: function has(name) { + validateArgumentsLength(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = name + ''; + var index = 0; + while (index < entries.length) { + if (entries[index++].key === key) return true; + } + return false; + }, + // `URLSearchParams.prototype.set` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-set + set: function set(name, value) { + validateArgumentsLength(arguments.length, 1); + var state = getInternalParamsState(this); + var entries = state.entries; + var found = false; + var key = name + ''; + var val = value + ''; + var index = 0; + var entry; + for (; index < entries.length; index++) { + entry = entries[index]; + if (entry.key === key) { + if (found) entries.splice(index--, 1); + else { + found = true; + entry.value = val; + } + } + } + if (!found) entries.push({ key: key, value: val }); + state.updateURL(); + }, + // `URLSearchParams.prototype.sort` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-sort + sort: function sort() { + var state = getInternalParamsState(this); + var entries = state.entries; + // Array#sort is not stable in some engines + var slice = entries.slice(); + var entry, entriesIndex, sliceIndex; + entries.length = 0; + for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) { + entry = slice[sliceIndex]; + for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) { + if (entries[entriesIndex].key > entry.key) { + entries.splice(entriesIndex, 0, entry); + break; + } + } + if (entriesIndex === sliceIndex) entries.push(entry); + } + state.updateURL(); + }, + // `URLSearchParams.prototype.forEach` method + forEach: function forEach(callback /* , thisArg */) { + var entries = getInternalParamsState(this).entries; + var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3); + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + boundFunction(entry.value, entry.key, this); + } + }, + // `URLSearchParams.prototype.keys` method + keys: function keys() { + return new URLSearchParamsIterator(this, 'keys'); + }, + // `URLSearchParams.prototype.values` method + values: function values() { + return new URLSearchParamsIterator(this, 'values'); + }, + // `URLSearchParams.prototype.entries` method + entries: function entries() { + return new URLSearchParamsIterator(this, 'entries'); + } +}, { enumerable: true }); + +// `URLSearchParams.prototype[@@iterator]` method +redefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries); + +// `URLSearchParams.prototype.toString` method +// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior +redefine(URLSearchParamsPrototype, 'toString', function toString() { + var entries = getInternalParamsState(this).entries; + var result = []; + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + result.push(serialize(entry.key) + '=' + serialize(entry.value)); + } return result.join('&'); +}, { enumerable: true }); + +setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS); + +$({ global: true, forced: !USE_NATIVE_URL }, { + URLSearchParams: URLSearchParamsConstructor +}); + +module.exports = { + URLSearchParams: URLSearchParamsConstructor, + getState: getInternalParamsState +}; diff --git a/core-js/modules/web.url.js b/core-js/modules/web.url.js new file mode 100644 index 0000000000..2d4a924985 --- /dev/null +++ b/core-js/modules/web.url.js @@ -0,0 +1,1008 @@ +'use strict'; +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +require('../modules/es.string.iterator'); +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var USE_NATIVE_URL = require('../internals/native-url'); +var global = require('../internals/global'); +var defineProperties = require('../internals/object-define-properties'); +var redefine = require('../internals/redefine'); +var anInstance = require('../internals/an-instance'); +var has = require('../internals/has'); +var assign = require('../internals/object-assign'); +var arrayFrom = require('../internals/array-from'); +var codeAt = require('../internals/string-multibyte').codeAt; +var toASCII = require('../internals/punycode-to-ascii'); +var setToStringTag = require('../internals/set-to-string-tag'); +var URLSearchParamsModule = require('../modules/web.url-search-params'); +var InternalStateModule = require('../internals/internal-state'); + +var NativeURL = global.URL; +var URLSearchParams = URLSearchParamsModule.URLSearchParams; +var getInternalSearchParamsState = URLSearchParamsModule.getState; +var setInternalState = InternalStateModule.set; +var getInternalURLState = InternalStateModule.getterFor('URL'); +var floor = Math.floor; +var pow = Math.pow; + +var INVALID_AUTHORITY = 'Invalid authority'; +var INVALID_SCHEME = 'Invalid scheme'; +var INVALID_HOST = 'Invalid host'; +var INVALID_PORT = 'Invalid port'; + +var ALPHA = /[A-Za-z]/; +var ALPHANUMERIC = /[\d+\-.A-Za-z]/; +var DIGIT = /\d/; +var HEX_START = /^(0x|0X)/; +var OCT = /^[0-7]+$/; +var DEC = /^\d+$/; +var HEX = /^[\dA-Fa-f]+$/; +// eslint-disable-next-line no-control-regex +var FORBIDDEN_HOST_CODE_POINT = /[\u0000\u0009\u000A\u000D #%/:?@[\\]]/; +// eslint-disable-next-line no-control-regex +var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\u0000\u0009\u000A\u000D #/:?@[\\]]/; +// eslint-disable-next-line no-control-regex +var LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g; +// eslint-disable-next-line no-control-regex +var TAB_AND_NEW_LINE = /[\u0009\u000A\u000D]/g; +var EOF; + +var parseHost = function (url, input) { + var result, codePoints, index; + if (input.charAt(0) == '[') { + if (input.charAt(input.length - 1) != ']') return INVALID_HOST; + result = parseIPv6(input.slice(1, -1)); + if (!result) return INVALID_HOST; + url.host = result; + // opaque host + } else if (!isSpecial(url)) { + if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST; + result = ''; + codePoints = arrayFrom(input); + for (index = 0; index < codePoints.length; index++) { + result += percentEncode(codePoints[index], C0ControlPercentEncodeSet); + } + url.host = result; + } else { + input = toASCII(input); + if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST; + result = parseIPv4(input); + if (result === null) return INVALID_HOST; + url.host = result; + } +}; + +var parseIPv4 = function (input) { + var parts = input.split('.'); + var partsLength, numbers, index, part, radix, number, ipv4; + if (parts.length && parts[parts.length - 1] == '') { + parts.pop(); + } + partsLength = parts.length; + if (partsLength > 4) return input; + numbers = []; + for (index = 0; index < partsLength; index++) { + part = parts[index]; + if (part == '') return input; + radix = 10; + if (part.length > 1 && part.charAt(0) == '0') { + radix = HEX_START.test(part) ? 16 : 8; + part = part.slice(radix == 8 ? 1 : 2); + } + if (part === '') { + number = 0; + } else { + if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input; + number = parseInt(part, radix); + } + numbers.push(number); + } + for (index = 0; index < partsLength; index++) { + number = numbers[index]; + if (index == partsLength - 1) { + if (number >= pow(256, 5 - partsLength)) return null; + } else if (number > 255) return null; + } + ipv4 = numbers.pop(); + for (index = 0; index < numbers.length; index++) { + ipv4 += numbers[index] * pow(256, 3 - index); + } + return ipv4; +}; + +// eslint-disable-next-line max-statements +var parseIPv6 = function (input) { + var address = [0, 0, 0, 0, 0, 0, 0, 0]; + var pieceIndex = 0; + var compress = null; + var pointer = 0; + var value, length, numbersSeen, ipv4Piece, number, swaps, swap; + + var char = function () { + return input.charAt(pointer); + }; + + if (char() == ':') { + if (input.charAt(1) != ':') return; + pointer += 2; + pieceIndex++; + compress = pieceIndex; + } + while (char()) { + if (pieceIndex == 8) return; + if (char() == ':') { + if (compress !== null) return; + pointer++; + pieceIndex++; + compress = pieceIndex; + continue; + } + value = length = 0; + while (length < 4 && HEX.test(char())) { + value = value * 16 + parseInt(char(), 16); + pointer++; + length++; + } + if (char() == '.') { + if (length == 0) return; + pointer -= length; + if (pieceIndex > 6) return; + numbersSeen = 0; + while (char()) { + ipv4Piece = null; + if (numbersSeen > 0) { + if (char() == '.' && numbersSeen < 4) pointer++; + else return; + } + if (!DIGIT.test(char())) return; + while (DIGIT.test(char())) { + number = parseInt(char(), 10); + if (ipv4Piece === null) ipv4Piece = number; + else if (ipv4Piece == 0) return; + else ipv4Piece = ipv4Piece * 10 + number; + if (ipv4Piece > 255) return; + pointer++; + } + address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; + numbersSeen++; + if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++; + } + if (numbersSeen != 4) return; + break; + } else if (char() == ':') { + pointer++; + if (!char()) return; + } else if (char()) return; + address[pieceIndex++] = value; + } + if (compress !== null) { + swaps = pieceIndex - compress; + pieceIndex = 7; + while (pieceIndex != 0 && swaps > 0) { + swap = address[pieceIndex]; + address[pieceIndex--] = address[compress + swaps - 1]; + address[compress + --swaps] = swap; + } + } else if (pieceIndex != 8) return; + return address; +}; + +var findLongestZeroSequence = function (ipv6) { + var maxIndex = null; + var maxLength = 1; + var currStart = null; + var currLength = 0; + var index = 0; + for (; index < 8; index++) { + if (ipv6[index] !== 0) { + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + currStart = null; + currLength = 0; + } else { + if (currStart === null) currStart = index; + ++currLength; + } + } + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + return maxIndex; +}; + +var serializeHost = function (host) { + var result, index, compress, ignore0; + // ipv4 + if (typeof host == 'number') { + result = []; + for (index = 0; index < 4; index++) { + result.unshift(host % 256); + host = floor(host / 256); + } return result.join('.'); + // ipv6 + } else if (typeof host == 'object') { + result = ''; + compress = findLongestZeroSequence(host); + for (index = 0; index < 8; index++) { + if (ignore0 && host[index] === 0) continue; + if (ignore0) ignore0 = false; + if (compress === index) { + result += index ? ':' : '::'; + ignore0 = true; + } else { + result += host[index].toString(16); + if (index < 7) result += ':'; + } + } + return '[' + result + ']'; + } return host; +}; + +var C0ControlPercentEncodeSet = {}; +var fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, { + ' ': 1, '"': 1, '<': 1, '>': 1, '`': 1 +}); +var pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, { + '#': 1, '?': 1, '{': 1, '}': 1 +}); +var userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, { + '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\': 1, ']': 1, '^': 1, '|': 1 +}); + +var percentEncode = function (char, set) { + var code = codeAt(char, 0); + return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char); +}; + +var specialSchemes = { + ftp: 21, + file: null, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443 +}; + +var isSpecial = function (url) { + return has(specialSchemes, url.scheme); +}; + +var includesCredentials = function (url) { + return url.username != '' || url.password != ''; +}; + +var cannotHaveUsernamePasswordPort = function (url) { + return !url.host || url.cannotBeABaseURL || url.scheme == 'file'; +}; + +var isWindowsDriveLetter = function (string, normalized) { + var second; + return string.length == 2 && ALPHA.test(string.charAt(0)) + && ((second = string.charAt(1)) == ':' || (!normalized && second == '|')); +}; + +var startsWithWindowsDriveLetter = function (string) { + var third; + return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && ( + string.length == 2 || + ((third = string.charAt(2)) === '/' || third === '\\' || third === '?' || third === '#') + ); +}; + +var shortenURLsPath = function (url) { + var path = url.path; + var pathSize = path.length; + if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) { + path.pop(); + } +}; + +var isSingleDot = function (segment) { + return segment === '.' || segment.toLowerCase() === '%2e'; +}; + +var isDoubleDot = function (segment) { + segment = segment.toLowerCase(); + return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e'; +}; + +// States: +var SCHEME_START = {}; +var SCHEME = {}; +var NO_SCHEME = {}; +var SPECIAL_RELATIVE_OR_AUTHORITY = {}; +var PATH_OR_AUTHORITY = {}; +var RELATIVE = {}; +var RELATIVE_SLASH = {}; +var SPECIAL_AUTHORITY_SLASHES = {}; +var SPECIAL_AUTHORITY_IGNORE_SLASHES = {}; +var AUTHORITY = {}; +var HOST = {}; +var HOSTNAME = {}; +var PORT = {}; +var FILE = {}; +var FILE_SLASH = {}; +var FILE_HOST = {}; +var PATH_START = {}; +var PATH = {}; +var CANNOT_BE_A_BASE_URL_PATH = {}; +var QUERY = {}; +var FRAGMENT = {}; + +// eslint-disable-next-line max-statements +var parseURL = function (url, input, stateOverride, base) { + var state = stateOverride || SCHEME_START; + var pointer = 0; + var buffer = ''; + var seenAt = false; + var seenBracket = false; + var seenPasswordToken = false; + var codePoints, char, bufferCodePoints, failure; + + if (!stateOverride) { + url.scheme = ''; + url.username = ''; + url.password = ''; + url.host = null; + url.port = null; + url.path = []; + url.query = null; + url.fragment = null; + url.cannotBeABaseURL = false; + input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, ''); + } + + input = input.replace(TAB_AND_NEW_LINE, ''); + + codePoints = arrayFrom(input); + + while (pointer <= codePoints.length) { + char = codePoints[pointer]; + switch (state) { + case SCHEME_START: + if (char && ALPHA.test(char)) { + buffer += char.toLowerCase(); + state = SCHEME; + } else if (!stateOverride) { + state = NO_SCHEME; + continue; + } else return INVALID_SCHEME; + break; + + case SCHEME: + if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) { + buffer += char.toLowerCase(); + } else if (char == ':') { + if (stateOverride && ( + (isSpecial(url) != has(specialSchemes, buffer)) || + (buffer == 'file' && (includesCredentials(url) || url.port !== null)) || + (url.scheme == 'file' && !url.host) + )) return; + url.scheme = buffer; + if (stateOverride) { + if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null; + return; + } + buffer = ''; + if (url.scheme == 'file') { + state = FILE; + } else if (isSpecial(url) && base && base.scheme == url.scheme) { + state = SPECIAL_RELATIVE_OR_AUTHORITY; + } else if (isSpecial(url)) { + state = SPECIAL_AUTHORITY_SLASHES; + } else if (codePoints[pointer + 1] == '/') { + state = PATH_OR_AUTHORITY; + pointer++; + } else { + url.cannotBeABaseURL = true; + url.path.push(''); + state = CANNOT_BE_A_BASE_URL_PATH; + } + } else if (!stateOverride) { + buffer = ''; + state = NO_SCHEME; + pointer = 0; + continue; + } else return INVALID_SCHEME; + break; + + case NO_SCHEME: + if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME; + if (base.cannotBeABaseURL && char == '#') { + url.scheme = base.scheme; + url.path = base.path.slice(); + url.query = base.query; + url.fragment = ''; + url.cannotBeABaseURL = true; + state = FRAGMENT; + break; + } + state = base.scheme == 'file' ? FILE : RELATIVE; + continue; + + case SPECIAL_RELATIVE_OR_AUTHORITY: + if (char == '/' && codePoints[pointer + 1] == '/') { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + pointer++; + } else { + state = RELATIVE; + continue; + } break; + + case PATH_OR_AUTHORITY: + if (char == '/') { + state = AUTHORITY; + break; + } else { + state = PATH; + continue; + } + + case RELATIVE: + url.scheme = base.scheme; + if (char == EOF) { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.query = base.query; + } else if (char == '/' || (char == '\\' && isSpecial(url))) { + state = RELATIVE_SLASH; + } else if (char == '?') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.path.pop(); + state = PATH; + continue; + } break; + + case RELATIVE_SLASH: + if (isSpecial(url) && (char == '/' || char == '\\')) { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + } else if (char == '/') { + state = AUTHORITY; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + state = PATH; + continue; + } break; + + case SPECIAL_AUTHORITY_SLASHES: + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + if (char != '/' || buffer.charAt(pointer + 1) != '/') continue; + pointer++; + break; + + case SPECIAL_AUTHORITY_IGNORE_SLASHES: + if (char != '/' && char != '\\') { + state = AUTHORITY; + continue; + } break; + + case AUTHORITY: + if (char == '@') { + if (seenAt) buffer = '%40' + buffer; + seenAt = true; + bufferCodePoints = arrayFrom(buffer); + for (var i = 0; i < bufferCodePoints.length; i++) { + var codePoint = bufferCodePoints[i]; + if (codePoint == ':' && !seenPasswordToken) { + seenPasswordToken = true; + continue; + } + var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet); + if (seenPasswordToken) url.password += encodedCodePoints; + else url.username += encodedCodePoints; + } + buffer = ''; + } else if ( + char == EOF || char == '/' || char == '?' || char == '#' || + (char == '\\' && isSpecial(url)) + ) { + if (seenAt && buffer == '') return INVALID_AUTHORITY; + pointer -= arrayFrom(buffer).length + 1; + buffer = ''; + state = HOST; + } else buffer += char; + break; + + case HOST: + case HOSTNAME: + if (stateOverride && url.scheme == 'file') { + state = FILE_HOST; + continue; + } else if (char == ':' && !seenBracket) { + if (buffer == '') return INVALID_HOST; + failure = parseHost(url, buffer); + if (failure) return failure; + buffer = ''; + state = PORT; + if (stateOverride == HOSTNAME) return; + } else if ( + char == EOF || char == '/' || char == '?' || char == '#' || + (char == '\\' && isSpecial(url)) + ) { + if (isSpecial(url) && buffer == '') return INVALID_HOST; + if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return; + failure = parseHost(url, buffer); + if (failure) return failure; + buffer = ''; + state = PATH_START; + if (stateOverride) return; + continue; + } else { + if (char == '[') seenBracket = true; + else if (char == ']') seenBracket = false; + buffer += char; + } break; + + case PORT: + if (DIGIT.test(char)) { + buffer += char; + } else if ( + char == EOF || char == '/' || char == '?' || char == '#' || + (char == '\\' && isSpecial(url)) || + stateOverride + ) { + if (buffer != '') { + var port = parseInt(buffer, 10); + if (port > 0xFFFF) return INVALID_PORT; + url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port; + buffer = ''; + } + if (stateOverride) return; + state = PATH_START; + continue; + } else return INVALID_PORT; + break; + + case FILE: + url.scheme = 'file'; + if (char == '/' || char == '\\') state = FILE_SLASH; + else if (base && base.scheme == 'file') { + if (char == EOF) { + url.host = base.host; + url.path = base.path.slice(); + url.query = base.query; + } else if (char == '?') { + url.host = base.host; + url.path = base.path.slice(); + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.host = base.host; + url.path = base.path.slice(); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + } else { + if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) { + url.host = base.host; + url.path = base.path.slice(); + shortenURLsPath(url); + } + state = PATH; + continue; + } + } else { + state = PATH; + continue; + } break; + + case FILE_SLASH: + if (char == '/' || char == '\\') { + state = FILE_HOST; + break; + } + if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) { + if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]); + else url.host = base.host; + } + state = PATH; + continue; + + case FILE_HOST: + if (char == EOF || char == '/' || char == '\\' || char == '?' || char == '#') { + if (!stateOverride && isWindowsDriveLetter(buffer)) { + state = PATH; + } else if (buffer == '') { + url.host = ''; + if (stateOverride) return; + state = PATH_START; + } else { + failure = parseHost(url, buffer); + if (failure) return failure; + if (url.host == 'localhost') url.host = ''; + if (stateOverride) return; + buffer = ''; + state = PATH_START; + } continue; + } else buffer += char; + break; + + case PATH_START: + if (isSpecial(url)) { + state = PATH; + if (char != '/' && char != '\\') continue; + } else if (!stateOverride && char == '?') { + url.query = ''; + state = QUERY; + } else if (!stateOverride && char == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (char != EOF) { + state = PATH; + if (char != '/') continue; + } break; + + case PATH: + if ( + char == EOF || char == '/' || + (char == '\\' && isSpecial(url)) || + (!stateOverride && (char == '?' || char == '#')) + ) { + if (isDoubleDot(buffer)) { + shortenURLsPath(url); + if (char != '/' && !(char == '\\' && isSpecial(url))) { + url.path.push(''); + } + } else if (isSingleDot(buffer)) { + if (char != '/' && !(char == '\\' && isSpecial(url))) { + url.path.push(''); + } + } else { + if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) { + if (url.host) url.host = ''; + buffer = buffer.charAt(0) + ':'; // normalize windows drive letter + } + url.path.push(buffer); + } + buffer = ''; + if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) { + while (url.path.length > 1 && url.path[0] === '') { + url.path.shift(); + } + } + if (char == '?') { + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.fragment = ''; + state = FRAGMENT; + } + } else { + buffer += percentEncode(char, pathPercentEncodeSet); + } break; + + case CANNOT_BE_A_BASE_URL_PATH: + if (char == '?') { + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (char != EOF) { + url.path[0] += percentEncode(char, C0ControlPercentEncodeSet); + } break; + + case QUERY: + if (!stateOverride && char == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (char != EOF) { + if (char == "'" && isSpecial(url)) url.query += '%27'; + else if (char == '#') url.query += '%23'; + else url.query += percentEncode(char, C0ControlPercentEncodeSet); + } break; + + case FRAGMENT: + if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet); + break; + } + + pointer++; + } +}; + +// `URL` constructor +// https://url.spec.whatwg.org/#url-class +var URLConstructor = function URL(url /* , base */) { + var that = anInstance(this, URLConstructor, 'URL'); + var base = arguments.length > 1 ? arguments[1] : undefined; + var urlString = String(url); + var state = setInternalState(that, { type: 'URL' }); + var baseState, failure; + if (base !== undefined) { + if (base instanceof URLConstructor) baseState = getInternalURLState(base); + else { + failure = parseURL(baseState = {}, String(base)); + if (failure) throw TypeError(failure); + } + } + failure = parseURL(state, urlString, null, baseState); + if (failure) throw TypeError(failure); + var searchParams = state.searchParams = new URLSearchParams(); + var searchParamsState = getInternalSearchParamsState(searchParams); + searchParamsState.updateSearchParams(state.query); + searchParamsState.updateURL = function () { + state.query = String(searchParams) || null; + }; + if (!DESCRIPTORS) { + that.href = serializeURL.call(that); + that.origin = getOrigin.call(that); + that.protocol = getProtocol.call(that); + that.username = getUsername.call(that); + that.password = getPassword.call(that); + that.host = getHost.call(that); + that.hostname = getHostname.call(that); + that.port = getPort.call(that); + that.pathname = getPathname.call(that); + that.search = getSearch.call(that); + that.searchParams = getSearchParams.call(that); + that.hash = getHash.call(that); + } +}; + +var URLPrototype = URLConstructor.prototype; + +var serializeURL = function () { + var url = getInternalURLState(this); + var scheme = url.scheme; + var username = url.username; + var password = url.password; + var host = url.host; + var port = url.port; + var path = url.path; + var query = url.query; + var fragment = url.fragment; + var output = scheme + ':'; + if (host !== null) { + output += '//'; + if (includesCredentials(url)) { + output += username + (password ? ':' + password : '') + '@'; + } + output += serializeHost(host); + if (port !== null) output += ':' + port; + } else if (scheme == 'file') output += '//'; + output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : ''; + if (query !== null) output += '?' + query; + if (fragment !== null) output += '#' + fragment; + return output; +}; + +var getOrigin = function () { + var url = getInternalURLState(this); + var scheme = url.scheme; + var port = url.port; + if (scheme == 'blob') try { + return new URL(scheme.path[0]).origin; + } catch (error) { + return 'null'; + } + if (scheme == 'file' || !isSpecial(url)) return 'null'; + return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : ''); +}; + +var getProtocol = function () { + return getInternalURLState(this).scheme + ':'; +}; + +var getUsername = function () { + return getInternalURLState(this).username; +}; + +var getPassword = function () { + return getInternalURLState(this).password; +}; + +var getHost = function () { + var url = getInternalURLState(this); + var host = url.host; + var port = url.port; + return host === null ? '' + : port === null ? serializeHost(host) + : serializeHost(host) + ':' + port; +}; + +var getHostname = function () { + var host = getInternalURLState(this).host; + return host === null ? '' : serializeHost(host); +}; + +var getPort = function () { + var port = getInternalURLState(this).port; + return port === null ? '' : String(port); +}; + +var getPathname = function () { + var url = getInternalURLState(this); + var path = url.path; + return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : ''; +}; + +var getSearch = function () { + var query = getInternalURLState(this).query; + return query ? '?' + query : ''; +}; + +var getSearchParams = function () { + return getInternalURLState(this).searchParams; +}; + +var getHash = function () { + var fragment = getInternalURLState(this).fragment; + return fragment ? '#' + fragment : ''; +}; + +var accessorDescriptor = function (getter, setter) { + return { get: getter, set: setter, configurable: true, enumerable: true }; +}; + +if (DESCRIPTORS) { + defineProperties(URLPrototype, { + // `URL.prototype.href` accessors pair + // https://url.spec.whatwg.org/#dom-url-href + href: accessorDescriptor(serializeURL, function (href) { + var url = getInternalURLState(this); + var urlString = String(href); + var failure = parseURL(url, urlString); + if (failure) throw TypeError(failure); + getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query); + }), + // `URL.prototype.origin` getter + // https://url.spec.whatwg.org/#dom-url-origin + origin: accessorDescriptor(getOrigin), + // `URL.prototype.protocol` accessors pair + // https://url.spec.whatwg.org/#dom-url-protocol + protocol: accessorDescriptor(getProtocol, function (protocol) { + var url = getInternalURLState(this); + parseURL(url, String(protocol) + ':', SCHEME_START); + }), + // `URL.prototype.username` accessors pair + // https://url.spec.whatwg.org/#dom-url-username + username: accessorDescriptor(getUsername, function (username) { + var url = getInternalURLState(this); + var codePoints = arrayFrom(String(username)); + if (cannotHaveUsernamePasswordPort(url)) return; + url.username = ''; + for (var i = 0; i < codePoints.length; i++) { + url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }), + // `URL.prototype.password` accessors pair + // https://url.spec.whatwg.org/#dom-url-password + password: accessorDescriptor(getPassword, function (password) { + var url = getInternalURLState(this); + var codePoints = arrayFrom(String(password)); + if (cannotHaveUsernamePasswordPort(url)) return; + url.password = ''; + for (var i = 0; i < codePoints.length; i++) { + url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }), + // `URL.prototype.host` accessors pair + // https://url.spec.whatwg.org/#dom-url-host + host: accessorDescriptor(getHost, function (host) { + var url = getInternalURLState(this); + if (url.cannotBeABaseURL) return; + parseURL(url, String(host), HOST); + }), + // `URL.prototype.hostname` accessors pair + // https://url.spec.whatwg.org/#dom-url-hostname + hostname: accessorDescriptor(getHostname, function (hostname) { + var url = getInternalURLState(this); + if (url.cannotBeABaseURL) return; + parseURL(url, String(hostname), HOSTNAME); + }), + // `URL.prototype.port` accessors pair + // https://url.spec.whatwg.org/#dom-url-port + port: accessorDescriptor(getPort, function (port) { + var url = getInternalURLState(this); + if (cannotHaveUsernamePasswordPort(url)) return; + port = String(port); + if (port == '') url.port = null; + else parseURL(url, port, PORT); + }), + // `URL.prototype.pathname` accessors pair + // https://url.spec.whatwg.org/#dom-url-pathname + pathname: accessorDescriptor(getPathname, function (pathname) { + var url = getInternalURLState(this); + if (url.cannotBeABaseURL) return; + url.path = []; + parseURL(url, pathname + '', PATH_START); + }), + // `URL.prototype.search` accessors pair + // https://url.spec.whatwg.org/#dom-url-search + search: accessorDescriptor(getSearch, function (search) { + var url = getInternalURLState(this); + search = String(search); + if (search == '') { + url.query = null; + } else { + if ('?' == search.charAt(0)) search = search.slice(1); + url.query = ''; + parseURL(url, search, QUERY); + } + getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query); + }), + // `URL.prototype.searchParams` getter + // https://url.spec.whatwg.org/#dom-url-searchparams + searchParams: accessorDescriptor(getSearchParams), + // `URL.prototype.hash` accessors pair + // https://url.spec.whatwg.org/#dom-url-hash + hash: accessorDescriptor(getHash, function (hash) { + var url = getInternalURLState(this); + hash = String(hash); + if (hash == '') { + url.fragment = null; + return; + } + if ('#' == hash.charAt(0)) hash = hash.slice(1); + url.fragment = ''; + parseURL(url, hash, FRAGMENT); + }) + }); +} + +// `URL.prototype.toJSON` method +// https://url.spec.whatwg.org/#dom-url-tojson +redefine(URLPrototype, 'toJSON', function toJSON() { + return serializeURL.call(this); +}, { enumerable: true }); + +// `URL.prototype.toString` method +// https://url.spec.whatwg.org/#URL-stringification-behavior +redefine(URLPrototype, 'toString', function toString() { + return serializeURL.call(this); +}, { enumerable: true }); + +if (NativeURL) { + var nativeCreateObjectURL = NativeURL.createObjectURL; + var nativeRevokeObjectURL = NativeURL.revokeObjectURL; + // `URL.createObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL + // eslint-disable-next-line no-unused-vars + if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) { + return nativeCreateObjectURL.apply(NativeURL, arguments); + }); + // `URL.revokeObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL + // eslint-disable-next-line no-unused-vars + if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) { + return nativeRevokeObjectURL.apply(NativeURL, arguments); + }); +} + +setToStringTag(URLConstructor, 'URL'); + +$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, { + URL: URLConstructor +}); diff --git a/core-js/modules/web.url.to-json.js b/core-js/modules/web.url.to-json.js new file mode 100644 index 0000000000..7e38169c10 --- /dev/null +++ b/core-js/modules/web.url.to-json.js @@ -0,0 +1,10 @@ +'use strict'; +var $ = require('../internals/export'); + +// `URL.prototype.toJSON` method +// https://url.spec.whatwg.org/#dom-url-tojson +$({ target: 'URL', proto: true, enumerable: true }, { + toJSON: function toJSON() { + return URL.prototype.toString.call(this); + } +}); diff --git a/core-js/package.json b/core-js/package.json new file mode 100644 index 0000000000..b6207c31b7 --- /dev/null +++ b/core-js/package.json @@ -0,0 +1,51 @@ +{ + "name": "core-js", + "description": "Standard library", + "version": "3.2.1", + "repository": { + "type": "git", + "url": "https://github.com/zloirock/core-js.git" + }, + "main": "index.js", + "license": "MIT", + "keywords": [ + "ES3", + "ES5", + "ES6", + "ES7", + "ES2015", + "ES2016", + "ES2017", + "ES2018", + "ES2019", + "ECMAScript 3", + "ECMAScript 5", + "ECMAScript 6", + "ECMAScript 7", + "ECMAScript 2015", + "ECMAScript 2016", + "ECMAScript 2017", + "ECMAScript 2018", + "ECMAScript 2019", + "Harmony", + "Strawman", + "Map", + "Set", + "WeakMap", + "WeakSet", + "Promise", + "Observable", + "Symbol", + "TypedArray", + "URL", + "URLSearchParams", + "queueMicrotask", + "setImmediate", + "polyfill", + "ponyfill", + "shim" + ], + "scripts": { + "postinstall": "node scripts/postinstall || echo \"ignore\"" + } +} diff --git a/core-js/proposals/array-is-template-object.js b/core-js/proposals/array-is-template-object.js new file mode 100644 index 0000000000..37388c4d28 --- /dev/null +++ b/core-js/proposals/array-is-template-object.js @@ -0,0 +1 @@ +require('../modules/esnext.array.is-template-object'); diff --git a/core-js/proposals/array-last.js b/core-js/proposals/array-last.js new file mode 100644 index 0000000000..c6710312b5 --- /dev/null +++ b/core-js/proposals/array-last.js @@ -0,0 +1,2 @@ +require('../modules/esnext.array.last-index'); +require('../modules/esnext.array.last-item'); diff --git a/core-js/proposals/collection-methods.js b/core-js/proposals/collection-methods.js new file mode 100644 index 0000000000..3acb8c08e8 --- /dev/null +++ b/core-js/proposals/collection-methods.js @@ -0,0 +1,27 @@ +require('../modules/esnext.map.group-by'); +require('../modules/esnext.map.key-by'); +require('../modules/esnext.map.delete-all'); +require('../modules/esnext.map.every'); +require('../modules/esnext.map.filter'); +require('../modules/esnext.map.find'); +require('../modules/esnext.map.find-key'); +require('../modules/esnext.map.includes'); +require('../modules/esnext.map.key-of'); +require('../modules/esnext.map.map-keys'); +require('../modules/esnext.map.map-values'); +require('../modules/esnext.map.merge'); +require('../modules/esnext.map.reduce'); +require('../modules/esnext.map.some'); +require('../modules/esnext.map.update'); +require('../modules/esnext.set.add-all'); +require('../modules/esnext.set.delete-all'); +require('../modules/esnext.set.every'); +require('../modules/esnext.set.filter'); +require('../modules/esnext.set.find'); +require('../modules/esnext.set.join'); +require('../modules/esnext.set.map'); +require('../modules/esnext.set.reduce'); +require('../modules/esnext.set.some'); +require('../modules/esnext.weak-map.delete-all'); +require('../modules/esnext.weak-set.add-all'); +require('../modules/esnext.weak-set.delete-all'); diff --git a/core-js/proposals/collection-of-from.js b/core-js/proposals/collection-of-from.js new file mode 100644 index 0000000000..ade30003e6 --- /dev/null +++ b/core-js/proposals/collection-of-from.js @@ -0,0 +1,8 @@ +require('../modules/esnext.map.from'); +require('../modules/esnext.map.of'); +require('../modules/esnext.set.from'); +require('../modules/esnext.set.of'); +require('../modules/esnext.weak-map.from'); +require('../modules/esnext.weak-map.of'); +require('../modules/esnext.weak-set.from'); +require('../modules/esnext.weak-set.of'); diff --git a/core-js/proposals/efficient-64-bit-arithmetic.js b/core-js/proposals/efficient-64-bit-arithmetic.js new file mode 100644 index 0000000000..71d40dcb60 --- /dev/null +++ b/core-js/proposals/efficient-64-bit-arithmetic.js @@ -0,0 +1,4 @@ +require('../modules/esnext.math.iaddh'); +require('../modules/esnext.math.isubh'); +require('../modules/esnext.math.imulh'); +require('../modules/esnext.math.umulh'); diff --git a/core-js/proposals/global-this.js b/core-js/proposals/global-this.js new file mode 100644 index 0000000000..f056723c42 --- /dev/null +++ b/core-js/proposals/global-this.js @@ -0,0 +1,3 @@ +require('../modules/esnext.global-this'); + +module.exports = require('../internals/global'); diff --git a/core-js/proposals/index.js b/core-js/proposals/index.js new file mode 100644 index 0000000000..b87a749070 --- /dev/null +++ b/core-js/proposals/index.js @@ -0,0 +1 @@ +require('../stage'); diff --git a/core-js/proposals/keys-composition.js b/core-js/proposals/keys-composition.js new file mode 100644 index 0000000000..47f5e2ed82 --- /dev/null +++ b/core-js/proposals/keys-composition.js @@ -0,0 +1,2 @@ +require('../modules/esnext.composite-key'); +require('../modules/esnext.composite-symbol'); diff --git a/core-js/proposals/map-update-or-insert.js b/core-js/proposals/map-update-or-insert.js new file mode 100644 index 0000000000..0438870dbd --- /dev/null +++ b/core-js/proposals/map-update-or-insert.js @@ -0,0 +1 @@ +require('../modules/esnext.map.update-or-insert'); diff --git a/core-js/proposals/math-extensions.js b/core-js/proposals/math-extensions.js new file mode 100644 index 0000000000..80d86af3fd --- /dev/null +++ b/core-js/proposals/math-extensions.js @@ -0,0 +1,7 @@ +require('../modules/esnext.math.clamp'); +require('../modules/esnext.math.deg-per-rad'); +require('../modules/esnext.math.degrees'); +require('../modules/esnext.math.fscale'); +require('../modules/esnext.math.rad-per-deg'); +require('../modules/esnext.math.radians'); +require('../modules/esnext.math.scale'); diff --git a/core-js/proposals/math-signbit.js b/core-js/proposals/math-signbit.js new file mode 100644 index 0000000000..e0a51d176a --- /dev/null +++ b/core-js/proposals/math-signbit.js @@ -0,0 +1 @@ +require('../modules/esnext.math.signbit'); diff --git a/core-js/proposals/number-from-string.js b/core-js/proposals/number-from-string.js new file mode 100644 index 0000000000..094d084202 --- /dev/null +++ b/core-js/proposals/number-from-string.js @@ -0,0 +1 @@ +require('../modules/esnext.number.from-string'); diff --git a/core-js/proposals/observable.js b/core-js/proposals/observable.js new file mode 100644 index 0000000000..cf591564d2 --- /dev/null +++ b/core-js/proposals/observable.js @@ -0,0 +1,2 @@ +require('../modules/esnext.observable'); +require('../modules/esnext.symbol.observable'); diff --git a/core-js/proposals/pattern-matching.js b/core-js/proposals/pattern-matching.js new file mode 100644 index 0000000000..d5fce70789 --- /dev/null +++ b/core-js/proposals/pattern-matching.js @@ -0,0 +1 @@ +require('../modules/esnext.symbol.pattern-match'); diff --git a/core-js/proposals/promise-all-settled.js b/core-js/proposals/promise-all-settled.js new file mode 100644 index 0000000000..ae35910d68 --- /dev/null +++ b/core-js/proposals/promise-all-settled.js @@ -0,0 +1,2 @@ +// TODO: Remove from `core-js@4` +require('../modules/esnext.promise.all-settled'); diff --git a/core-js/proposals/promise-any.js b/core-js/proposals/promise-any.js new file mode 100644 index 0000000000..9e147363a5 --- /dev/null +++ b/core-js/proposals/promise-any.js @@ -0,0 +1,2 @@ +require('../modules/esnext.aggregate-error'); +require('../modules/esnext.promise.any'); diff --git a/core-js/proposals/promise-try.js b/core-js/proposals/promise-try.js new file mode 100644 index 0000000000..ce5aca5f00 --- /dev/null +++ b/core-js/proposals/promise-try.js @@ -0,0 +1 @@ +require('../modules/esnext.promise.try'); diff --git a/core-js/proposals/reflect-metadata.js b/core-js/proposals/reflect-metadata.js new file mode 100644 index 0000000000..512b1f2521 --- /dev/null +++ b/core-js/proposals/reflect-metadata.js @@ -0,0 +1,9 @@ +require('../modules/esnext.reflect.define-metadata'); +require('../modules/esnext.reflect.delete-metadata'); +require('../modules/esnext.reflect.get-metadata'); +require('../modules/esnext.reflect.get-metadata-keys'); +require('../modules/esnext.reflect.get-own-metadata'); +require('../modules/esnext.reflect.get-own-metadata-keys'); +require('../modules/esnext.reflect.has-metadata'); +require('../modules/esnext.reflect.has-own-metadata'); +require('../modules/esnext.reflect.metadata'); diff --git a/core-js/proposals/seeded-random.js b/core-js/proposals/seeded-random.js new file mode 100644 index 0000000000..5bbd9049eb --- /dev/null +++ b/core-js/proposals/seeded-random.js @@ -0,0 +1 @@ +require('../modules/esnext.math.seeded-prng'); diff --git a/core-js/proposals/set-methods.js b/core-js/proposals/set-methods.js new file mode 100644 index 0000000000..810546093c --- /dev/null +++ b/core-js/proposals/set-methods.js @@ -0,0 +1,7 @@ +require('../modules/esnext.set.difference'); +require('../modules/esnext.set.intersection'); +require('../modules/esnext.set.is-disjoint-from'); +require('../modules/esnext.set.is-subset-of'); +require('../modules/esnext.set.is-superset-of'); +require('../modules/esnext.set.union'); +require('../modules/esnext.set.symmetric-difference'); diff --git a/core-js/proposals/string-at.js b/core-js/proposals/string-at.js new file mode 100644 index 0000000000..e992e58d48 --- /dev/null +++ b/core-js/proposals/string-at.js @@ -0,0 +1 @@ +require('../modules/esnext.string.at'); diff --git a/core-js/proposals/string-code-points.js b/core-js/proposals/string-code-points.js new file mode 100644 index 0000000000..3717523ee5 --- /dev/null +++ b/core-js/proposals/string-code-points.js @@ -0,0 +1 @@ +require('../modules/esnext.string.code-points'); diff --git a/core-js/proposals/string-match-all.js b/core-js/proposals/string-match-all.js new file mode 100644 index 0000000000..be5ba60e02 --- /dev/null +++ b/core-js/proposals/string-match-all.js @@ -0,0 +1,2 @@ +// TODO: Remove from `core-js@4` +require('../modules/esnext.string.match-all'); diff --git a/core-js/proposals/string-replace-all.js b/core-js/proposals/string-replace-all.js new file mode 100644 index 0000000000..c36697d722 --- /dev/null +++ b/core-js/proposals/string-replace-all.js @@ -0,0 +1,2 @@ +require('../modules/esnext.string.replace-all'); +require('../modules/esnext.symbol.replace-all'); diff --git a/core-js/proposals/url.js b/core-js/proposals/url.js new file mode 100644 index 0000000000..151dfab9f1 --- /dev/null +++ b/core-js/proposals/url.js @@ -0,0 +1,3 @@ +require('../modules/web.url'); +require('../modules/web.url.to-json'); +require('../modules/web.url-search-params'); diff --git a/core-js/proposals/using-statement.js b/core-js/proposals/using-statement.js new file mode 100644 index 0000000000..2ac3df7fc2 --- /dev/null +++ b/core-js/proposals/using-statement.js @@ -0,0 +1,3 @@ +// https://github.com/tc39/proposal-using-statement +require('../modules/esnext.symbol.async-dispose'); +require('../modules/esnext.symbol.dispose'); diff --git a/core-js/scripts/postinstall.js b/core-js/scripts/postinstall.js new file mode 100644 index 0000000000..4f3d3d7b0e --- /dev/null +++ b/core-js/scripts/postinstall.js @@ -0,0 +1,24 @@ +/* eslint-disable max-len */ +var env = process.env; +var ADBLOCK = is(env.ADBLOCK); +var CI = is(env.CI); +var COLOR = is(env.npm_config_color); +var DISABLE_OPENCOLLECTIVE = is(env.DISABLE_OPENCOLLECTIVE); +var SILENT = !!~['silent', 'error', 'warn'].indexOf(env.npm_config_loglevel); + +function is(it) { + return !!it && it !== '0' && it !== 'false'; +} + +function log(it) { + // eslint-disable-next-line no-console,no-control-regex + console.log(COLOR ? it : it.replace(/\u001B\[\d+m/g, '')); +} + +if (!ADBLOCK && !CI && !DISABLE_OPENCOLLECTIVE && !SILENT) { + log('\u001B[96mThank you for using core-js (\u001B[94m https://github.com/zloirock/core-js \u001B[96m) for polyfilling JavaScript standard library!\u001B[0m\n'); + log('\u001B[96mThe project needs your help! Please consider supporting of core-js on Open Collective or Patreon: \u001B[0m'); + log('\u001B[96m>\u001B[94m https://opencollective.com/core-js \u001B[0m'); + log('\u001B[96m>\u001B[94m https://www.patreon.com/zloirock \u001B[0m\n'); + log('\u001B[96mAlso, the author of core-js (\u001B[94m https://github.com/zloirock \u001B[96m) is looking for a good job -)\u001B[0m\n'); +} diff --git a/core-js/stable/README.md b/core-js/stable/README.md new file mode 100644 index 0000000000..903150c44e --- /dev/null +++ b/core-js/stable/README.md @@ -0,0 +1 @@ +This folder contains entry points for all stable `core-js` features with dependencies. It's the recommended way for usage only required features. diff --git a/core-js/stable/array-buffer/constructor.js b/core-js/stable/array-buffer/constructor.js new file mode 100644 index 0000000000..726f87038f --- /dev/null +++ b/core-js/stable/array-buffer/constructor.js @@ -0,0 +1 @@ +module.exports = require('../../es/array-buffer/constructor'); diff --git a/core-js/stable/array-buffer/index.js b/core-js/stable/array-buffer/index.js new file mode 100644 index 0000000000..80b721e901 --- /dev/null +++ b/core-js/stable/array-buffer/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/array-buffer'); diff --git a/core-js/stable/array-buffer/is-view.js b/core-js/stable/array-buffer/is-view.js new file mode 100644 index 0000000000..7fe0ee7702 --- /dev/null +++ b/core-js/stable/array-buffer/is-view.js @@ -0,0 +1 @@ +module.exports = require('../../es/array-buffer/is-view'); diff --git a/core-js/stable/array-buffer/slice.js b/core-js/stable/array-buffer/slice.js new file mode 100644 index 0000000000..237d3b4d68 --- /dev/null +++ b/core-js/stable/array-buffer/slice.js @@ -0,0 +1 @@ +module.exports = require('../../es/array-buffer/slice'); diff --git a/core-js/stable/array/concat.js b/core-js/stable/array/concat.js new file mode 100644 index 0000000000..09185fea44 --- /dev/null +++ b/core-js/stable/array/concat.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/concat'); diff --git a/core-js/stable/array/copy-within.js b/core-js/stable/array/copy-within.js new file mode 100644 index 0000000000..171ea9bab9 --- /dev/null +++ b/core-js/stable/array/copy-within.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/copy-within'); diff --git a/core-js/stable/array/entries.js b/core-js/stable/array/entries.js new file mode 100644 index 0000000000..21631f91fa --- /dev/null +++ b/core-js/stable/array/entries.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/entries'); diff --git a/core-js/stable/array/every.js b/core-js/stable/array/every.js new file mode 100644 index 0000000000..e04ec0d264 --- /dev/null +++ b/core-js/stable/array/every.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/every'); diff --git a/core-js/stable/array/fill.js b/core-js/stable/array/fill.js new file mode 100644 index 0000000000..8d43319836 --- /dev/null +++ b/core-js/stable/array/fill.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/fill'); diff --git a/core-js/stable/array/filter.js b/core-js/stable/array/filter.js new file mode 100644 index 0000000000..5fedc7343e --- /dev/null +++ b/core-js/stable/array/filter.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/filter'); diff --git a/core-js/stable/array/find-index.js b/core-js/stable/array/find-index.js new file mode 100644 index 0000000000..0f687ead10 --- /dev/null +++ b/core-js/stable/array/find-index.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/find-index'); diff --git a/core-js/stable/array/find.js b/core-js/stable/array/find.js new file mode 100644 index 0000000000..2fc2611777 --- /dev/null +++ b/core-js/stable/array/find.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/find'); diff --git a/core-js/stable/array/flat-map.js b/core-js/stable/array/flat-map.js new file mode 100644 index 0000000000..87a5555503 --- /dev/null +++ b/core-js/stable/array/flat-map.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/flat-map'); diff --git a/core-js/stable/array/flat.js b/core-js/stable/array/flat.js new file mode 100644 index 0000000000..7b32eb70e9 --- /dev/null +++ b/core-js/stable/array/flat.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/flat'); diff --git a/core-js/stable/array/for-each.js b/core-js/stable/array/for-each.js new file mode 100644 index 0000000000..df36b3b7e1 --- /dev/null +++ b/core-js/stable/array/for-each.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/for-each'); diff --git a/core-js/stable/array/from.js b/core-js/stable/array/from.js new file mode 100644 index 0000000000..483cff183b --- /dev/null +++ b/core-js/stable/array/from.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/from'); diff --git a/core-js/stable/array/includes.js b/core-js/stable/array/includes.js new file mode 100644 index 0000000000..64cc5866ba --- /dev/null +++ b/core-js/stable/array/includes.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/includes'); diff --git a/core-js/stable/array/index-of.js b/core-js/stable/array/index-of.js new file mode 100644 index 0000000000..42f3d838cd --- /dev/null +++ b/core-js/stable/array/index-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/index-of'); diff --git a/core-js/stable/array/index.js b/core-js/stable/array/index.js new file mode 100644 index 0000000000..7d2a31e2bb --- /dev/null +++ b/core-js/stable/array/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/array'); diff --git a/core-js/stable/array/is-array.js b/core-js/stable/array/is-array.js new file mode 100644 index 0000000000..12bd214b70 --- /dev/null +++ b/core-js/stable/array/is-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/is-array'); diff --git a/core-js/stable/array/iterator.js b/core-js/stable/array/iterator.js new file mode 100644 index 0000000000..774d23555f --- /dev/null +++ b/core-js/stable/array/iterator.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/iterator'); diff --git a/core-js/stable/array/join.js b/core-js/stable/array/join.js new file mode 100644 index 0000000000..4390ed3baa --- /dev/null +++ b/core-js/stable/array/join.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/join'); diff --git a/core-js/stable/array/keys.js b/core-js/stable/array/keys.js new file mode 100644 index 0000000000..241f21ae6c --- /dev/null +++ b/core-js/stable/array/keys.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/keys'); diff --git a/core-js/stable/array/last-index-of.js b/core-js/stable/array/last-index-of.js new file mode 100644 index 0000000000..0eca23c915 --- /dev/null +++ b/core-js/stable/array/last-index-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/last-index-of'); diff --git a/core-js/stable/array/map.js b/core-js/stable/array/map.js new file mode 100644 index 0000000000..d3cea88bc0 --- /dev/null +++ b/core-js/stable/array/map.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/map'); diff --git a/core-js/stable/array/of.js b/core-js/stable/array/of.js new file mode 100644 index 0000000000..0e69d5becf --- /dev/null +++ b/core-js/stable/array/of.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/of'); diff --git a/core-js/stable/array/reduce-right.js b/core-js/stable/array/reduce-right.js new file mode 100644 index 0000000000..72e0f58ba5 --- /dev/null +++ b/core-js/stable/array/reduce-right.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/reduce-right'); diff --git a/core-js/stable/array/reduce.js b/core-js/stable/array/reduce.js new file mode 100644 index 0000000000..c688c9fdea --- /dev/null +++ b/core-js/stable/array/reduce.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/reduce'); diff --git a/core-js/stable/array/reverse.js b/core-js/stable/array/reverse.js new file mode 100644 index 0000000000..65a1d7a830 --- /dev/null +++ b/core-js/stable/array/reverse.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/reverse'); diff --git a/core-js/stable/array/slice.js b/core-js/stable/array/slice.js new file mode 100644 index 0000000000..67345b2d88 --- /dev/null +++ b/core-js/stable/array/slice.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/slice'); diff --git a/core-js/stable/array/some.js b/core-js/stable/array/some.js new file mode 100644 index 0000000000..ce62873e9b --- /dev/null +++ b/core-js/stable/array/some.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/some'); diff --git a/core-js/stable/array/sort.js b/core-js/stable/array/sort.js new file mode 100644 index 0000000000..4a58b24490 --- /dev/null +++ b/core-js/stable/array/sort.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/sort'); diff --git a/core-js/stable/array/splice.js b/core-js/stable/array/splice.js new file mode 100644 index 0000000000..898b964a36 --- /dev/null +++ b/core-js/stable/array/splice.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/splice'); diff --git a/core-js/stable/array/values.js b/core-js/stable/array/values.js new file mode 100644 index 0000000000..6e8956c4b1 --- /dev/null +++ b/core-js/stable/array/values.js @@ -0,0 +1 @@ +module.exports = require('../../es/array/values'); diff --git a/core-js/stable/array/virtual/concat.js b/core-js/stable/array/virtual/concat.js new file mode 100644 index 0000000000..e4aad47ecf --- /dev/null +++ b/core-js/stable/array/virtual/concat.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/concat'); diff --git a/core-js/stable/array/virtual/copy-within.js b/core-js/stable/array/virtual/copy-within.js new file mode 100644 index 0000000000..3bb56c0d99 --- /dev/null +++ b/core-js/stable/array/virtual/copy-within.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/copy-within'); diff --git a/core-js/stable/array/virtual/entries.js b/core-js/stable/array/virtual/entries.js new file mode 100644 index 0000000000..561c358c17 --- /dev/null +++ b/core-js/stable/array/virtual/entries.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/entries'); diff --git a/core-js/stable/array/virtual/every.js b/core-js/stable/array/virtual/every.js new file mode 100644 index 0000000000..9b22ec88d9 --- /dev/null +++ b/core-js/stable/array/virtual/every.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/every'); diff --git a/core-js/stable/array/virtual/fill.js b/core-js/stable/array/virtual/fill.js new file mode 100644 index 0000000000..2a2ae7628b --- /dev/null +++ b/core-js/stable/array/virtual/fill.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/fill'); diff --git a/core-js/stable/array/virtual/filter.js b/core-js/stable/array/virtual/filter.js new file mode 100644 index 0000000000..bc98bd19c5 --- /dev/null +++ b/core-js/stable/array/virtual/filter.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/filter'); diff --git a/core-js/stable/array/virtual/find-index.js b/core-js/stable/array/virtual/find-index.js new file mode 100644 index 0000000000..dc352bd974 --- /dev/null +++ b/core-js/stable/array/virtual/find-index.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/find-index'); diff --git a/core-js/stable/array/virtual/find.js b/core-js/stable/array/virtual/find.js new file mode 100644 index 0000000000..54ebe1d788 --- /dev/null +++ b/core-js/stable/array/virtual/find.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/find'); diff --git a/core-js/stable/array/virtual/flat-map.js b/core-js/stable/array/virtual/flat-map.js new file mode 100644 index 0000000000..08c9be00b3 --- /dev/null +++ b/core-js/stable/array/virtual/flat-map.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/flat-map'); diff --git a/core-js/stable/array/virtual/flat.js b/core-js/stable/array/virtual/flat.js new file mode 100644 index 0000000000..c53d93f4b5 --- /dev/null +++ b/core-js/stable/array/virtual/flat.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/flat'); diff --git a/core-js/stable/array/virtual/for-each.js b/core-js/stable/array/virtual/for-each.js new file mode 100644 index 0000000000..9b3880f299 --- /dev/null +++ b/core-js/stable/array/virtual/for-each.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/for-each'); diff --git a/core-js/stable/array/virtual/includes.js b/core-js/stable/array/virtual/includes.js new file mode 100644 index 0000000000..e5623fc7a1 --- /dev/null +++ b/core-js/stable/array/virtual/includes.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/includes'); diff --git a/core-js/stable/array/virtual/index-of.js b/core-js/stable/array/virtual/index-of.js new file mode 100644 index 0000000000..e819d9b18e --- /dev/null +++ b/core-js/stable/array/virtual/index-of.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/index-of'); diff --git a/core-js/stable/array/virtual/index.js b/core-js/stable/array/virtual/index.js new file mode 100644 index 0000000000..e6bff15e76 --- /dev/null +++ b/core-js/stable/array/virtual/index.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual'); diff --git a/core-js/stable/array/virtual/iterator.js b/core-js/stable/array/virtual/iterator.js new file mode 100644 index 0000000000..f99a1a05a3 --- /dev/null +++ b/core-js/stable/array/virtual/iterator.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/iterator'); diff --git a/core-js/stable/array/virtual/join.js b/core-js/stable/array/virtual/join.js new file mode 100644 index 0000000000..0fb295ed63 --- /dev/null +++ b/core-js/stable/array/virtual/join.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/join'); diff --git a/core-js/stable/array/virtual/keys.js b/core-js/stable/array/virtual/keys.js new file mode 100644 index 0000000000..efc2d88b10 --- /dev/null +++ b/core-js/stable/array/virtual/keys.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/keys'); diff --git a/core-js/stable/array/virtual/last-index-of.js b/core-js/stable/array/virtual/last-index-of.js new file mode 100644 index 0000000000..cc4ba59778 --- /dev/null +++ b/core-js/stable/array/virtual/last-index-of.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/last-index-of'); diff --git a/core-js/stable/array/virtual/map.js b/core-js/stable/array/virtual/map.js new file mode 100644 index 0000000000..bdd7e52335 --- /dev/null +++ b/core-js/stable/array/virtual/map.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/map'); diff --git a/core-js/stable/array/virtual/reduce-right.js b/core-js/stable/array/virtual/reduce-right.js new file mode 100644 index 0000000000..e00d5391a7 --- /dev/null +++ b/core-js/stable/array/virtual/reduce-right.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/reduce-right'); diff --git a/core-js/stable/array/virtual/reduce.js b/core-js/stable/array/virtual/reduce.js new file mode 100644 index 0000000000..47a30bac4e --- /dev/null +++ b/core-js/stable/array/virtual/reduce.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/reduce'); diff --git a/core-js/stable/array/virtual/reverse.js b/core-js/stable/array/virtual/reverse.js new file mode 100644 index 0000000000..780cd09b78 --- /dev/null +++ b/core-js/stable/array/virtual/reverse.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/reverse'); diff --git a/core-js/stable/array/virtual/slice.js b/core-js/stable/array/virtual/slice.js new file mode 100644 index 0000000000..4d65726f58 --- /dev/null +++ b/core-js/stable/array/virtual/slice.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/slice'); diff --git a/core-js/stable/array/virtual/some.js b/core-js/stable/array/virtual/some.js new file mode 100644 index 0000000000..cb86d9e373 --- /dev/null +++ b/core-js/stable/array/virtual/some.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/some'); diff --git a/core-js/stable/array/virtual/sort.js b/core-js/stable/array/virtual/sort.js new file mode 100644 index 0000000000..5008b036b7 --- /dev/null +++ b/core-js/stable/array/virtual/sort.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/sort'); diff --git a/core-js/stable/array/virtual/splice.js b/core-js/stable/array/virtual/splice.js new file mode 100644 index 0000000000..feace09451 --- /dev/null +++ b/core-js/stable/array/virtual/splice.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/splice'); diff --git a/core-js/stable/array/virtual/values.js b/core-js/stable/array/virtual/values.js new file mode 100644 index 0000000000..7aa326fb0a --- /dev/null +++ b/core-js/stable/array/virtual/values.js @@ -0,0 +1 @@ +module.exports = require('../../../es/array/virtual/values'); diff --git a/core-js/stable/clear-immediate.js b/core-js/stable/clear-immediate.js new file mode 100644 index 0000000000..b5a6d4ae12 --- /dev/null +++ b/core-js/stable/clear-immediate.js @@ -0,0 +1,3 @@ +require('../modules/web.immediate'); + +module.exports = require('../internals/path').clearImmediate; diff --git a/core-js/stable/data-view/index.js b/core-js/stable/data-view/index.js new file mode 100644 index 0000000000..7a754971ca --- /dev/null +++ b/core-js/stable/data-view/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/data-view'); diff --git a/core-js/stable/date/index.js b/core-js/stable/date/index.js new file mode 100644 index 0000000000..5ff65b85b2 --- /dev/null +++ b/core-js/stable/date/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/date'); diff --git a/core-js/stable/date/now.js b/core-js/stable/date/now.js new file mode 100644 index 0000000000..e196b5f3ca --- /dev/null +++ b/core-js/stable/date/now.js @@ -0,0 +1 @@ +module.exports = require('../../es/date/now'); diff --git a/core-js/stable/date/to-iso-string.js b/core-js/stable/date/to-iso-string.js new file mode 100644 index 0000000000..c9348195f5 --- /dev/null +++ b/core-js/stable/date/to-iso-string.js @@ -0,0 +1 @@ +module.exports = require('../../es/date/to-iso-string'); diff --git a/core-js/stable/date/to-json.js b/core-js/stable/date/to-json.js new file mode 100644 index 0000000000..9966af465b --- /dev/null +++ b/core-js/stable/date/to-json.js @@ -0,0 +1 @@ +module.exports = require('../../es/date/to-json'); diff --git a/core-js/stable/date/to-primitive.js b/core-js/stable/date/to-primitive.js new file mode 100644 index 0000000000..f9f11e47cb --- /dev/null +++ b/core-js/stable/date/to-primitive.js @@ -0,0 +1 @@ +module.exports = require('../../es/date/to-primitive'); diff --git a/core-js/stable/date/to-string.js b/core-js/stable/date/to-string.js new file mode 100644 index 0000000000..055f26c439 --- /dev/null +++ b/core-js/stable/date/to-string.js @@ -0,0 +1 @@ +module.exports = require('../../es/date/to-string'); diff --git a/core-js/stable/dom-collections/for-each.js b/core-js/stable/dom-collections/for-each.js new file mode 100644 index 0000000000..c251fedf31 --- /dev/null +++ b/core-js/stable/dom-collections/for-each.js @@ -0,0 +1,3 @@ +require('../../modules/web.dom-collections.for-each'); + +module.exports = require('../../internals/array-for-each'); diff --git a/core-js/stable/dom-collections/index.js b/core-js/stable/dom-collections/index.js new file mode 100644 index 0000000000..7d262cb636 --- /dev/null +++ b/core-js/stable/dom-collections/index.js @@ -0,0 +1,12 @@ +require('../../modules/web.dom-collections.for-each'); +require('../../modules/web.dom-collections.iterator'); +var ArrayIterators = require('../../modules/es.array.iterator'); +var forEach = require('../../internals/array-for-each'); + +module.exports = { + keys: ArrayIterators.keys, + values: ArrayIterators.values, + entries: ArrayIterators.entries, + iterator: ArrayIterators.values, + forEach: forEach +}; diff --git a/core-js/stable/dom-collections/iterator.js b/core-js/stable/dom-collections/iterator.js new file mode 100644 index 0000000000..3bc1e900e8 --- /dev/null +++ b/core-js/stable/dom-collections/iterator.js @@ -0,0 +1,4 @@ +require('../../modules/web.dom-collections.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'values'); diff --git a/core-js/stable/function/bind.js b/core-js/stable/function/bind.js new file mode 100644 index 0000000000..108a677315 --- /dev/null +++ b/core-js/stable/function/bind.js @@ -0,0 +1 @@ +module.exports = require('../../es/function/bind'); diff --git a/core-js/stable/function/has-instance.js b/core-js/stable/function/has-instance.js new file mode 100644 index 0000000000..eac5999193 --- /dev/null +++ b/core-js/stable/function/has-instance.js @@ -0,0 +1 @@ +module.exports = require('../../es/function/has-instance'); diff --git a/core-js/stable/function/index.js b/core-js/stable/function/index.js new file mode 100644 index 0000000000..3bed0f56b7 --- /dev/null +++ b/core-js/stable/function/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/function'); diff --git a/core-js/stable/function/name.js b/core-js/stable/function/name.js new file mode 100644 index 0000000000..b4fe6766cc --- /dev/null +++ b/core-js/stable/function/name.js @@ -0,0 +1 @@ +module.exports = require('../../es/function/name'); diff --git a/core-js/stable/function/virtual/bind.js b/core-js/stable/function/virtual/bind.js new file mode 100644 index 0000000000..2820ffb11d --- /dev/null +++ b/core-js/stable/function/virtual/bind.js @@ -0,0 +1 @@ +module.exports = require('../../../es/function/virtual/bind'); diff --git a/core-js/stable/function/virtual/index.js b/core-js/stable/function/virtual/index.js new file mode 100644 index 0000000000..3234d9d071 --- /dev/null +++ b/core-js/stable/function/virtual/index.js @@ -0,0 +1 @@ +module.exports = require('../../../es/function/virtual'); diff --git a/core-js/stable/global-this.js b/core-js/stable/global-this.js new file mode 100644 index 0000000000..b6c15b3930 --- /dev/null +++ b/core-js/stable/global-this.js @@ -0,0 +1,3 @@ +require('../modules/esnext.global-this'); + +module.exports = require('../internals/path').globalThis; diff --git a/core-js/stable/index.js b/core-js/stable/index.js new file mode 100644 index 0000000000..39527b41bf --- /dev/null +++ b/core-js/stable/index.js @@ -0,0 +1,4 @@ +require('../es'); +require('../web'); + +module.exports = require('../internals/path'); diff --git a/core-js/stable/instance/bind.js b/core-js/stable/instance/bind.js new file mode 100644 index 0000000000..7f168092f6 --- /dev/null +++ b/core-js/stable/instance/bind.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/bind'); diff --git a/core-js/stable/instance/code-point-at.js b/core-js/stable/instance/code-point-at.js new file mode 100644 index 0000000000..f353ea3e83 --- /dev/null +++ b/core-js/stable/instance/code-point-at.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/code-point-at'); diff --git a/core-js/stable/instance/concat.js b/core-js/stable/instance/concat.js new file mode 100644 index 0000000000..1387932eba --- /dev/null +++ b/core-js/stable/instance/concat.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/concat'); diff --git a/core-js/stable/instance/copy-within.js b/core-js/stable/instance/copy-within.js new file mode 100644 index 0000000000..15e9d29ca2 --- /dev/null +++ b/core-js/stable/instance/copy-within.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/copy-within'); diff --git a/core-js/stable/instance/ends-with.js b/core-js/stable/instance/ends-with.js new file mode 100644 index 0000000000..72a0380408 --- /dev/null +++ b/core-js/stable/instance/ends-with.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/ends-with'); diff --git a/core-js/stable/instance/entries.js b/core-js/stable/instance/entries.js new file mode 100644 index 0000000000..080b814354 --- /dev/null +++ b/core-js/stable/instance/entries.js @@ -0,0 +1,16 @@ +require('../../modules/web.dom-collections.iterator'); +var entries = require('../array/virtual/entries'); +var classof = require('../../internals/classof'); +var ArrayPrototype = Array.prototype; + +var DOMIterables = { + DOMTokenList: true, + NodeList: true +}; + +module.exports = function (it) { + var own = it.entries; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.entries) + // eslint-disable-next-line no-prototype-builtins + || DOMIterables.hasOwnProperty(classof(it)) ? entries : own; +}; diff --git a/core-js/stable/instance/every.js b/core-js/stable/instance/every.js new file mode 100644 index 0000000000..9b285d51ae --- /dev/null +++ b/core-js/stable/instance/every.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/every'); diff --git a/core-js/stable/instance/fill.js b/core-js/stable/instance/fill.js new file mode 100644 index 0000000000..884763c3c8 --- /dev/null +++ b/core-js/stable/instance/fill.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/fill'); diff --git a/core-js/stable/instance/filter.js b/core-js/stable/instance/filter.js new file mode 100644 index 0000000000..94b2339649 --- /dev/null +++ b/core-js/stable/instance/filter.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/filter'); diff --git a/core-js/stable/instance/find-index.js b/core-js/stable/instance/find-index.js new file mode 100644 index 0000000000..79e4118375 --- /dev/null +++ b/core-js/stable/instance/find-index.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/find-index'); diff --git a/core-js/stable/instance/find.js b/core-js/stable/instance/find.js new file mode 100644 index 0000000000..9edd5736ea --- /dev/null +++ b/core-js/stable/instance/find.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/find'); diff --git a/core-js/stable/instance/flags.js b/core-js/stable/instance/flags.js new file mode 100644 index 0000000000..e3bfaa720c --- /dev/null +++ b/core-js/stable/instance/flags.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/flags'); diff --git a/core-js/stable/instance/flat-map.js b/core-js/stable/instance/flat-map.js new file mode 100644 index 0000000000..a98bebd71e --- /dev/null +++ b/core-js/stable/instance/flat-map.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/flat-map'); diff --git a/core-js/stable/instance/flat.js b/core-js/stable/instance/flat.js new file mode 100644 index 0000000000..bc46540952 --- /dev/null +++ b/core-js/stable/instance/flat.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/flat'); diff --git a/core-js/stable/instance/for-each.js b/core-js/stable/instance/for-each.js new file mode 100644 index 0000000000..1254e9f041 --- /dev/null +++ b/core-js/stable/instance/for-each.js @@ -0,0 +1,16 @@ +require('../../modules/web.dom-collections.iterator'); +var forEach = require('../array/virtual/for-each'); +var classof = require('../../internals/classof'); +var ArrayPrototype = Array.prototype; + +var DOMIterables = { + DOMTokenList: true, + NodeList: true +}; + +module.exports = function (it) { + var own = it.forEach; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.forEach) + // eslint-disable-next-line no-prototype-builtins + || DOMIterables.hasOwnProperty(classof(it)) ? forEach : own; +}; diff --git a/core-js/stable/instance/includes.js b/core-js/stable/instance/includes.js new file mode 100644 index 0000000000..6d13532177 --- /dev/null +++ b/core-js/stable/instance/includes.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/includes'); diff --git a/core-js/stable/instance/index-of.js b/core-js/stable/instance/index-of.js new file mode 100644 index 0000000000..8700e0e2c0 --- /dev/null +++ b/core-js/stable/instance/index-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/index-of'); diff --git a/core-js/stable/instance/keys.js b/core-js/stable/instance/keys.js new file mode 100644 index 0000000000..b83acb7810 --- /dev/null +++ b/core-js/stable/instance/keys.js @@ -0,0 +1,16 @@ +require('../../modules/web.dom-collections.iterator'); +var keys = require('../array/virtual/keys'); +var classof = require('../../internals/classof'); +var ArrayPrototype = Array.prototype; + +var DOMIterables = { + DOMTokenList: true, + NodeList: true +}; + +module.exports = function (it) { + var own = it.keys; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.keys) + // eslint-disable-next-line no-prototype-builtins + || DOMIterables.hasOwnProperty(classof(it)) ? keys : own; +}; diff --git a/core-js/stable/instance/last-index-of.js b/core-js/stable/instance/last-index-of.js new file mode 100644 index 0000000000..b99739ef8a --- /dev/null +++ b/core-js/stable/instance/last-index-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/last-index-of'); diff --git a/core-js/stable/instance/map.js b/core-js/stable/instance/map.js new file mode 100644 index 0000000000..bfb6be1b28 --- /dev/null +++ b/core-js/stable/instance/map.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/map'); diff --git a/core-js/stable/instance/match-all.js b/core-js/stable/instance/match-all.js new file mode 100644 index 0000000000..2decf588e9 --- /dev/null +++ b/core-js/stable/instance/match-all.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/match-all'); diff --git a/core-js/stable/instance/pad-end.js b/core-js/stable/instance/pad-end.js new file mode 100644 index 0000000000..16ed95a01a --- /dev/null +++ b/core-js/stable/instance/pad-end.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/pad-end'); diff --git a/core-js/stable/instance/pad-start.js b/core-js/stable/instance/pad-start.js new file mode 100644 index 0000000000..01925ffbba --- /dev/null +++ b/core-js/stable/instance/pad-start.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/pad-start'); diff --git a/core-js/stable/instance/reduce-right.js b/core-js/stable/instance/reduce-right.js new file mode 100644 index 0000000000..2810409d94 --- /dev/null +++ b/core-js/stable/instance/reduce-right.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/reduce-right'); diff --git a/core-js/stable/instance/reduce.js b/core-js/stable/instance/reduce.js new file mode 100644 index 0000000000..ecee1c959a --- /dev/null +++ b/core-js/stable/instance/reduce.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/reduce'); diff --git a/core-js/stable/instance/repeat.js b/core-js/stable/instance/repeat.js new file mode 100644 index 0000000000..c0a7ec87a6 --- /dev/null +++ b/core-js/stable/instance/repeat.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/repeat'); diff --git a/core-js/stable/instance/reverse.js b/core-js/stable/instance/reverse.js new file mode 100644 index 0000000000..9983586581 --- /dev/null +++ b/core-js/stable/instance/reverse.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/reverse'); diff --git a/core-js/stable/instance/slice.js b/core-js/stable/instance/slice.js new file mode 100644 index 0000000000..1755c4191b --- /dev/null +++ b/core-js/stable/instance/slice.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/slice'); diff --git a/core-js/stable/instance/some.js b/core-js/stable/instance/some.js new file mode 100644 index 0000000000..b32c903b30 --- /dev/null +++ b/core-js/stable/instance/some.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/some'); diff --git a/core-js/stable/instance/sort.js b/core-js/stable/instance/sort.js new file mode 100644 index 0000000000..8891434c22 --- /dev/null +++ b/core-js/stable/instance/sort.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/sort'); diff --git a/core-js/stable/instance/splice.js b/core-js/stable/instance/splice.js new file mode 100644 index 0000000000..1d20660f06 --- /dev/null +++ b/core-js/stable/instance/splice.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/splice'); diff --git a/core-js/stable/instance/starts-with.js b/core-js/stable/instance/starts-with.js new file mode 100644 index 0000000000..4c8905255a --- /dev/null +++ b/core-js/stable/instance/starts-with.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/starts-with'); diff --git a/core-js/stable/instance/trim-end.js b/core-js/stable/instance/trim-end.js new file mode 100644 index 0000000000..eb75cde145 --- /dev/null +++ b/core-js/stable/instance/trim-end.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/trim-end'); diff --git a/core-js/stable/instance/trim-left.js b/core-js/stable/instance/trim-left.js new file mode 100644 index 0000000000..5bef37ab77 --- /dev/null +++ b/core-js/stable/instance/trim-left.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/trim-left'); diff --git a/core-js/stable/instance/trim-right.js b/core-js/stable/instance/trim-right.js new file mode 100644 index 0000000000..c425c7bf7b --- /dev/null +++ b/core-js/stable/instance/trim-right.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/trim-right'); diff --git a/core-js/stable/instance/trim-start.js b/core-js/stable/instance/trim-start.js new file mode 100644 index 0000000000..88616985fa --- /dev/null +++ b/core-js/stable/instance/trim-start.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/trim-start'); diff --git a/core-js/stable/instance/trim.js b/core-js/stable/instance/trim.js new file mode 100644 index 0000000000..61c69d5030 --- /dev/null +++ b/core-js/stable/instance/trim.js @@ -0,0 +1 @@ +module.exports = require('../../es/instance/trim'); diff --git a/core-js/stable/instance/values.js b/core-js/stable/instance/values.js new file mode 100644 index 0000000000..febcba3330 --- /dev/null +++ b/core-js/stable/instance/values.js @@ -0,0 +1,16 @@ +require('../../modules/web.dom-collections.iterator'); +var values = require('../array/virtual/values'); +var classof = require('../../internals/classof'); +var ArrayPrototype = Array.prototype; + +var DOMIterables = { + DOMTokenList: true, + NodeList: true +}; + +module.exports = function (it) { + var own = it.values; + return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.values) + // eslint-disable-next-line no-prototype-builtins + || DOMIterables.hasOwnProperty(classof(it)) ? values : own; +}; diff --git a/core-js/stable/json/index.js b/core-js/stable/json/index.js new file mode 100644 index 0000000000..c0b897ff78 --- /dev/null +++ b/core-js/stable/json/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/json'); diff --git a/core-js/stable/json/stringify.js b/core-js/stable/json/stringify.js new file mode 100644 index 0000000000..20cf890355 --- /dev/null +++ b/core-js/stable/json/stringify.js @@ -0,0 +1 @@ +module.exports = require('../../es/json/stringify'); diff --git a/core-js/stable/json/to-string-tag.js b/core-js/stable/json/to-string-tag.js new file mode 100644 index 0000000000..9e9567295b --- /dev/null +++ b/core-js/stable/json/to-string-tag.js @@ -0,0 +1 @@ +module.exports = require('../../es/json/to-string-tag'); diff --git a/core-js/stable/map/index.js b/core-js/stable/map/index.js new file mode 100644 index 0000000000..1ccbaf974f --- /dev/null +++ b/core-js/stable/map/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/map'); diff --git a/core-js/stable/math/acosh.js b/core-js/stable/math/acosh.js new file mode 100644 index 0000000000..dd8ba00261 --- /dev/null +++ b/core-js/stable/math/acosh.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/acosh'); diff --git a/core-js/stable/math/asinh.js b/core-js/stable/math/asinh.js new file mode 100644 index 0000000000..f811e075c7 --- /dev/null +++ b/core-js/stable/math/asinh.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/asinh'); diff --git a/core-js/stable/math/atanh.js b/core-js/stable/math/atanh.js new file mode 100644 index 0000000000..b063d11c0a --- /dev/null +++ b/core-js/stable/math/atanh.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/atanh'); diff --git a/core-js/stable/math/cbrt.js b/core-js/stable/math/cbrt.js new file mode 100644 index 0000000000..a0679fc9cd --- /dev/null +++ b/core-js/stable/math/cbrt.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/cbrt'); diff --git a/core-js/stable/math/clz32.js b/core-js/stable/math/clz32.js new file mode 100644 index 0000000000..e6460540e4 --- /dev/null +++ b/core-js/stable/math/clz32.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/clz32'); diff --git a/core-js/stable/math/cosh.js b/core-js/stable/math/cosh.js new file mode 100644 index 0000000000..a2be861ee0 --- /dev/null +++ b/core-js/stable/math/cosh.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/cosh'); diff --git a/core-js/stable/math/expm1.js b/core-js/stable/math/expm1.js new file mode 100644 index 0000000000..a268bf3185 --- /dev/null +++ b/core-js/stable/math/expm1.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/expm1'); diff --git a/core-js/stable/math/fround.js b/core-js/stable/math/fround.js new file mode 100644 index 0000000000..1dc91bb680 --- /dev/null +++ b/core-js/stable/math/fround.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/fround'); diff --git a/core-js/stable/math/hypot.js b/core-js/stable/math/hypot.js new file mode 100644 index 0000000000..e6d0e640b1 --- /dev/null +++ b/core-js/stable/math/hypot.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/hypot'); diff --git a/core-js/stable/math/imul.js b/core-js/stable/math/imul.js new file mode 100644 index 0000000000..8cca8ef8ff --- /dev/null +++ b/core-js/stable/math/imul.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/imul'); diff --git a/core-js/stable/math/index.js b/core-js/stable/math/index.js new file mode 100644 index 0000000000..d9c722fc99 --- /dev/null +++ b/core-js/stable/math/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/math'); diff --git a/core-js/stable/math/log10.js b/core-js/stable/math/log10.js new file mode 100644 index 0000000000..272e219074 --- /dev/null +++ b/core-js/stable/math/log10.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/log10'); diff --git a/core-js/stable/math/log1p.js b/core-js/stable/math/log1p.js new file mode 100644 index 0000000000..8974895c6d --- /dev/null +++ b/core-js/stable/math/log1p.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/log1p'); diff --git a/core-js/stable/math/log2.js b/core-js/stable/math/log2.js new file mode 100644 index 0000000000..792eb936fe --- /dev/null +++ b/core-js/stable/math/log2.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/log2'); diff --git a/core-js/stable/math/sign.js b/core-js/stable/math/sign.js new file mode 100644 index 0000000000..1fd8f83005 --- /dev/null +++ b/core-js/stable/math/sign.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/sign'); diff --git a/core-js/stable/math/sinh.js b/core-js/stable/math/sinh.js new file mode 100644 index 0000000000..0314605140 --- /dev/null +++ b/core-js/stable/math/sinh.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/sinh'); diff --git a/core-js/stable/math/tanh.js b/core-js/stable/math/tanh.js new file mode 100644 index 0000000000..d5bbc71216 --- /dev/null +++ b/core-js/stable/math/tanh.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/tanh'); diff --git a/core-js/stable/math/to-string-tag.js b/core-js/stable/math/to-string-tag.js new file mode 100644 index 0000000000..081cf92548 --- /dev/null +++ b/core-js/stable/math/to-string-tag.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/to-string-tag'); diff --git a/core-js/stable/math/trunc.js b/core-js/stable/math/trunc.js new file mode 100644 index 0000000000..08da6bfded --- /dev/null +++ b/core-js/stable/math/trunc.js @@ -0,0 +1 @@ +module.exports = require('../../es/math/trunc'); diff --git a/core-js/stable/number/constructor.js b/core-js/stable/number/constructor.js new file mode 100644 index 0000000000..2564b5428c --- /dev/null +++ b/core-js/stable/number/constructor.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/constructor'); diff --git a/core-js/stable/number/epsilon.js b/core-js/stable/number/epsilon.js new file mode 100644 index 0000000000..c655aea68b --- /dev/null +++ b/core-js/stable/number/epsilon.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/epsilon'); diff --git a/core-js/stable/number/index.js b/core-js/stable/number/index.js new file mode 100644 index 0000000000..ac9a5b2530 --- /dev/null +++ b/core-js/stable/number/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/number'); diff --git a/core-js/stable/number/is-finite.js b/core-js/stable/number/is-finite.js new file mode 100644 index 0000000000..4df7cee02f --- /dev/null +++ b/core-js/stable/number/is-finite.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/is-finite'); diff --git a/core-js/stable/number/is-integer.js b/core-js/stable/number/is-integer.js new file mode 100644 index 0000000000..703130788b --- /dev/null +++ b/core-js/stable/number/is-integer.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/is-integer'); diff --git a/core-js/stable/number/is-nan.js b/core-js/stable/number/is-nan.js new file mode 100644 index 0000000000..93b4a6a522 --- /dev/null +++ b/core-js/stable/number/is-nan.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/is-nan'); diff --git a/core-js/stable/number/is-safe-integer.js b/core-js/stable/number/is-safe-integer.js new file mode 100644 index 0000000000..260215b8a9 --- /dev/null +++ b/core-js/stable/number/is-safe-integer.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/is-safe-integer'); diff --git a/core-js/stable/number/max-safe-integer.js b/core-js/stable/number/max-safe-integer.js new file mode 100644 index 0000000000..2bd9174710 --- /dev/null +++ b/core-js/stable/number/max-safe-integer.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/max-safe-integer'); diff --git a/core-js/stable/number/min-safe-integer.js b/core-js/stable/number/min-safe-integer.js new file mode 100644 index 0000000000..bcfe57e771 --- /dev/null +++ b/core-js/stable/number/min-safe-integer.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/min-safe-integer'); diff --git a/core-js/stable/number/parse-float.js b/core-js/stable/number/parse-float.js new file mode 100644 index 0000000000..bd9e1c61d2 --- /dev/null +++ b/core-js/stable/number/parse-float.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/parse-float'); diff --git a/core-js/stable/number/parse-int.js b/core-js/stable/number/parse-int.js new file mode 100644 index 0000000000..06473b8aa2 --- /dev/null +++ b/core-js/stable/number/parse-int.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/parse-int'); diff --git a/core-js/stable/number/to-fixed.js b/core-js/stable/number/to-fixed.js new file mode 100644 index 0000000000..a63c47aba9 --- /dev/null +++ b/core-js/stable/number/to-fixed.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/to-fixed'); diff --git a/core-js/stable/number/to-precision.js b/core-js/stable/number/to-precision.js new file mode 100644 index 0000000000..94c0c0bb4f --- /dev/null +++ b/core-js/stable/number/to-precision.js @@ -0,0 +1 @@ +module.exports = require('../../es/number/to-precision'); diff --git a/core-js/stable/number/virtual/index.js b/core-js/stable/number/virtual/index.js new file mode 100644 index 0000000000..538fb741a9 --- /dev/null +++ b/core-js/stable/number/virtual/index.js @@ -0,0 +1 @@ +module.exports = require('../../../es/number/virtual'); diff --git a/core-js/stable/number/virtual/to-fixed.js b/core-js/stable/number/virtual/to-fixed.js new file mode 100644 index 0000000000..34a6e3d9de --- /dev/null +++ b/core-js/stable/number/virtual/to-fixed.js @@ -0,0 +1 @@ +module.exports = require('../../../es/number/virtual/to-fixed'); diff --git a/core-js/stable/number/virtual/to-precision.js b/core-js/stable/number/virtual/to-precision.js new file mode 100644 index 0000000000..34d15ac152 --- /dev/null +++ b/core-js/stable/number/virtual/to-precision.js @@ -0,0 +1 @@ +module.exports = require('../../../es/number/virtual/to-precision'); diff --git a/core-js/stable/object/assign.js b/core-js/stable/object/assign.js new file mode 100644 index 0000000000..71bb520708 --- /dev/null +++ b/core-js/stable/object/assign.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/assign'); diff --git a/core-js/stable/object/create.js b/core-js/stable/object/create.js new file mode 100644 index 0000000000..c8c535c776 --- /dev/null +++ b/core-js/stable/object/create.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/create'); diff --git a/core-js/stable/object/define-getter.js b/core-js/stable/object/define-getter.js new file mode 100644 index 0000000000..9dcc7dce99 --- /dev/null +++ b/core-js/stable/object/define-getter.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/define-getter'); diff --git a/core-js/stable/object/define-properties.js b/core-js/stable/object/define-properties.js new file mode 100644 index 0000000000..df17acf962 --- /dev/null +++ b/core-js/stable/object/define-properties.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/define-properties'); diff --git a/core-js/stable/object/define-property.js b/core-js/stable/object/define-property.js new file mode 100644 index 0000000000..0d3d32bbc2 --- /dev/null +++ b/core-js/stable/object/define-property.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/define-property'); diff --git a/core-js/stable/object/define-setter.js b/core-js/stable/object/define-setter.js new file mode 100644 index 0000000000..51eba85f1b --- /dev/null +++ b/core-js/stable/object/define-setter.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/define-setter'); diff --git a/core-js/stable/object/entries.js b/core-js/stable/object/entries.js new file mode 100644 index 0000000000..a0720ef4d5 --- /dev/null +++ b/core-js/stable/object/entries.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/entries'); diff --git a/core-js/stable/object/freeze.js b/core-js/stable/object/freeze.js new file mode 100644 index 0000000000..fb649bba6d --- /dev/null +++ b/core-js/stable/object/freeze.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/freeze'); diff --git a/core-js/stable/object/from-entries.js b/core-js/stable/object/from-entries.js new file mode 100644 index 0000000000..8b8ae99043 --- /dev/null +++ b/core-js/stable/object/from-entries.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/from-entries'); diff --git a/core-js/stable/object/get-own-property-descriptor.js b/core-js/stable/object/get-own-property-descriptor.js new file mode 100644 index 0000000000..b0404d86dd --- /dev/null +++ b/core-js/stable/object/get-own-property-descriptor.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/get-own-property-descriptor'); diff --git a/core-js/stable/object/get-own-property-descriptors.js b/core-js/stable/object/get-own-property-descriptors.js new file mode 100644 index 0000000000..2cec864d83 --- /dev/null +++ b/core-js/stable/object/get-own-property-descriptors.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/get-own-property-descriptors'); diff --git a/core-js/stable/object/get-own-property-names.js b/core-js/stable/object/get-own-property-names.js new file mode 100644 index 0000000000..13d60c0cd7 --- /dev/null +++ b/core-js/stable/object/get-own-property-names.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/get-own-property-names'); diff --git a/core-js/stable/object/get-own-property-symbols.js b/core-js/stable/object/get-own-property-symbols.js new file mode 100644 index 0000000000..301e00a9cf --- /dev/null +++ b/core-js/stable/object/get-own-property-symbols.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/get-own-property-symbols'); diff --git a/core-js/stable/object/get-prototype-of.js b/core-js/stable/object/get-prototype-of.js new file mode 100644 index 0000000000..27d2631e2b --- /dev/null +++ b/core-js/stable/object/get-prototype-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/get-prototype-of'); diff --git a/core-js/stable/object/index.js b/core-js/stable/object/index.js new file mode 100644 index 0000000000..ce38cc2695 --- /dev/null +++ b/core-js/stable/object/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/object'); diff --git a/core-js/stable/object/is-extensible.js b/core-js/stable/object/is-extensible.js new file mode 100644 index 0000000000..c228ed7a28 --- /dev/null +++ b/core-js/stable/object/is-extensible.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/is-extensible'); diff --git a/core-js/stable/object/is-frozen.js b/core-js/stable/object/is-frozen.js new file mode 100644 index 0000000000..67bfab7201 --- /dev/null +++ b/core-js/stable/object/is-frozen.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/is-frozen'); diff --git a/core-js/stable/object/is-sealed.js b/core-js/stable/object/is-sealed.js new file mode 100644 index 0000000000..f4b1b13981 --- /dev/null +++ b/core-js/stable/object/is-sealed.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/is-sealed'); diff --git a/core-js/stable/object/is.js b/core-js/stable/object/is.js new file mode 100644 index 0000000000..70fd5bd5f8 --- /dev/null +++ b/core-js/stable/object/is.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/is'); diff --git a/core-js/stable/object/keys.js b/core-js/stable/object/keys.js new file mode 100644 index 0000000000..076a4dbec3 --- /dev/null +++ b/core-js/stable/object/keys.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/keys'); diff --git a/core-js/stable/object/lookup-getter.js b/core-js/stable/object/lookup-getter.js new file mode 100644 index 0000000000..77c189c83f --- /dev/null +++ b/core-js/stable/object/lookup-getter.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/lookup-getter'); diff --git a/core-js/stable/object/lookup-setter.js b/core-js/stable/object/lookup-setter.js new file mode 100644 index 0000000000..c81418c26d --- /dev/null +++ b/core-js/stable/object/lookup-setter.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/lookup-setter'); diff --git a/core-js/stable/object/prevent-extensions.js b/core-js/stable/object/prevent-extensions.js new file mode 100644 index 0000000000..45e224eaee --- /dev/null +++ b/core-js/stable/object/prevent-extensions.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/prevent-extensions'); diff --git a/core-js/stable/object/seal.js b/core-js/stable/object/seal.js new file mode 100644 index 0000000000..9982772e45 --- /dev/null +++ b/core-js/stable/object/seal.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/seal'); diff --git a/core-js/stable/object/set-prototype-of.js b/core-js/stable/object/set-prototype-of.js new file mode 100644 index 0000000000..829f3a1b99 --- /dev/null +++ b/core-js/stable/object/set-prototype-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/set-prototype-of'); diff --git a/core-js/stable/object/to-string.js b/core-js/stable/object/to-string.js new file mode 100644 index 0000000000..cd78944a1c --- /dev/null +++ b/core-js/stable/object/to-string.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/to-string'); diff --git a/core-js/stable/object/values.js b/core-js/stable/object/values.js new file mode 100644 index 0000000000..20c13ee08e --- /dev/null +++ b/core-js/stable/object/values.js @@ -0,0 +1 @@ +module.exports = require('../../es/object/values'); diff --git a/core-js/stable/parse-float.js b/core-js/stable/parse-float.js new file mode 100644 index 0000000000..8fa047145b --- /dev/null +++ b/core-js/stable/parse-float.js @@ -0,0 +1 @@ +module.exports = require('../es/parse-float'); diff --git a/core-js/stable/parse-int.js b/core-js/stable/parse-int.js new file mode 100644 index 0000000000..5ca5602343 --- /dev/null +++ b/core-js/stable/parse-int.js @@ -0,0 +1 @@ +module.exports = require('../es/parse-int'); diff --git a/core-js/stable/promise/all-settled.js b/core-js/stable/promise/all-settled.js new file mode 100644 index 0000000000..135cc0905c --- /dev/null +++ b/core-js/stable/promise/all-settled.js @@ -0,0 +1 @@ +module.exports = require('../../es/promise/all-settled'); diff --git a/core-js/stable/promise/finally.js b/core-js/stable/promise/finally.js new file mode 100644 index 0000000000..33a51d4e3f --- /dev/null +++ b/core-js/stable/promise/finally.js @@ -0,0 +1 @@ +module.exports = require('../../es/promise/finally'); diff --git a/core-js/stable/promise/index.js b/core-js/stable/promise/index.js new file mode 100644 index 0000000000..83fd728605 --- /dev/null +++ b/core-js/stable/promise/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/promise'); diff --git a/core-js/stable/queue-microtask.js b/core-js/stable/queue-microtask.js new file mode 100644 index 0000000000..515a390bb4 --- /dev/null +++ b/core-js/stable/queue-microtask.js @@ -0,0 +1 @@ +module.exports = require('../web/queue-microtask'); diff --git a/core-js/stable/reflect/apply.js b/core-js/stable/reflect/apply.js new file mode 100644 index 0000000000..d7b952067d --- /dev/null +++ b/core-js/stable/reflect/apply.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/apply'); diff --git a/core-js/stable/reflect/construct.js b/core-js/stable/reflect/construct.js new file mode 100644 index 0000000000..0f286a32e0 --- /dev/null +++ b/core-js/stable/reflect/construct.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/construct'); diff --git a/core-js/stable/reflect/define-property.js b/core-js/stable/reflect/define-property.js new file mode 100644 index 0000000000..d19b9265d3 --- /dev/null +++ b/core-js/stable/reflect/define-property.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/define-property'); diff --git a/core-js/stable/reflect/delete-property.js b/core-js/stable/reflect/delete-property.js new file mode 100644 index 0000000000..d79e29b3fe --- /dev/null +++ b/core-js/stable/reflect/delete-property.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/delete-property'); diff --git a/core-js/stable/reflect/get-own-property-descriptor.js b/core-js/stable/reflect/get-own-property-descriptor.js new file mode 100644 index 0000000000..0483bca36b --- /dev/null +++ b/core-js/stable/reflect/get-own-property-descriptor.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/get-own-property-descriptor'); diff --git a/core-js/stable/reflect/get-prototype-of.js b/core-js/stable/reflect/get-prototype-of.js new file mode 100644 index 0000000000..cd6d7e0ba3 --- /dev/null +++ b/core-js/stable/reflect/get-prototype-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/get-prototype-of'); diff --git a/core-js/stable/reflect/get.js b/core-js/stable/reflect/get.js new file mode 100644 index 0000000000..ee78111138 --- /dev/null +++ b/core-js/stable/reflect/get.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/get'); diff --git a/core-js/stable/reflect/has.js b/core-js/stable/reflect/has.js new file mode 100644 index 0000000000..94ab23b957 --- /dev/null +++ b/core-js/stable/reflect/has.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/has'); diff --git a/core-js/stable/reflect/index.js b/core-js/stable/reflect/index.js new file mode 100644 index 0000000000..81a847792e --- /dev/null +++ b/core-js/stable/reflect/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect'); diff --git a/core-js/stable/reflect/is-extensible.js b/core-js/stable/reflect/is-extensible.js new file mode 100644 index 0000000000..79eee47a47 --- /dev/null +++ b/core-js/stable/reflect/is-extensible.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/is-extensible'); diff --git a/core-js/stable/reflect/own-keys.js b/core-js/stable/reflect/own-keys.js new file mode 100644 index 0000000000..d2690afcd7 --- /dev/null +++ b/core-js/stable/reflect/own-keys.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/own-keys'); diff --git a/core-js/stable/reflect/prevent-extensions.js b/core-js/stable/reflect/prevent-extensions.js new file mode 100644 index 0000000000..7f536b2fc4 --- /dev/null +++ b/core-js/stable/reflect/prevent-extensions.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/prevent-extensions'); diff --git a/core-js/stable/reflect/set-prototype-of.js b/core-js/stable/reflect/set-prototype-of.js new file mode 100644 index 0000000000..334b24f7f3 --- /dev/null +++ b/core-js/stable/reflect/set-prototype-of.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/set-prototype-of'); diff --git a/core-js/stable/reflect/set.js b/core-js/stable/reflect/set.js new file mode 100644 index 0000000000..fb8326924e --- /dev/null +++ b/core-js/stable/reflect/set.js @@ -0,0 +1 @@ +module.exports = require('../../es/reflect/set'); diff --git a/core-js/stable/regexp/constructor.js b/core-js/stable/regexp/constructor.js new file mode 100644 index 0000000000..39f94c96b1 --- /dev/null +++ b/core-js/stable/regexp/constructor.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/constructor'); diff --git a/core-js/stable/regexp/flags.js b/core-js/stable/regexp/flags.js new file mode 100644 index 0000000000..c8cca6a53f --- /dev/null +++ b/core-js/stable/regexp/flags.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/flags'); diff --git a/core-js/stable/regexp/index.js b/core-js/stable/regexp/index.js new file mode 100644 index 0000000000..232877ca9e --- /dev/null +++ b/core-js/stable/regexp/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp'); diff --git a/core-js/stable/regexp/match.js b/core-js/stable/regexp/match.js new file mode 100644 index 0000000000..18c58a6259 --- /dev/null +++ b/core-js/stable/regexp/match.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/match'); diff --git a/core-js/stable/regexp/replace.js b/core-js/stable/regexp/replace.js new file mode 100644 index 0000000000..7164a238d5 --- /dev/null +++ b/core-js/stable/regexp/replace.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/replace'); diff --git a/core-js/stable/regexp/search.js b/core-js/stable/regexp/search.js new file mode 100644 index 0000000000..6b0635152d --- /dev/null +++ b/core-js/stable/regexp/search.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/search'); diff --git a/core-js/stable/regexp/split.js b/core-js/stable/regexp/split.js new file mode 100644 index 0000000000..4739453e69 --- /dev/null +++ b/core-js/stable/regexp/split.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/split'); diff --git a/core-js/stable/regexp/to-string.js b/core-js/stable/regexp/to-string.js new file mode 100644 index 0000000000..4d7834251e --- /dev/null +++ b/core-js/stable/regexp/to-string.js @@ -0,0 +1 @@ +module.exports = require('../../es/regexp/to-string'); diff --git a/core-js/stable/set-immediate.js b/core-js/stable/set-immediate.js new file mode 100644 index 0000000000..a9e4396710 --- /dev/null +++ b/core-js/stable/set-immediate.js @@ -0,0 +1,3 @@ +require('../modules/web.immediate'); + +module.exports = require('../internals/path').setImmediate; diff --git a/core-js/stable/set-interval.js b/core-js/stable/set-interval.js new file mode 100644 index 0000000000..51a60789ff --- /dev/null +++ b/core-js/stable/set-interval.js @@ -0,0 +1,3 @@ +require('../modules/web.timers'); + +module.exports = require('../internals/path').setInterval; diff --git a/core-js/stable/set-timeout.js b/core-js/stable/set-timeout.js new file mode 100644 index 0000000000..b7bc7d7343 --- /dev/null +++ b/core-js/stable/set-timeout.js @@ -0,0 +1,3 @@ +require('../modules/web.timers'); + +module.exports = require('../internals/path').setTimeout; diff --git a/core-js/stable/set/index.js b/core-js/stable/set/index.js new file mode 100644 index 0000000000..48226afb8c --- /dev/null +++ b/core-js/stable/set/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/set'); diff --git a/core-js/stable/string/anchor.js b/core-js/stable/string/anchor.js new file mode 100644 index 0000000000..4705d8e0e9 --- /dev/null +++ b/core-js/stable/string/anchor.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/anchor'); diff --git a/core-js/stable/string/big.js b/core-js/stable/string/big.js new file mode 100644 index 0000000000..8bcf44148f --- /dev/null +++ b/core-js/stable/string/big.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/big'); diff --git a/core-js/stable/string/blink.js b/core-js/stable/string/blink.js new file mode 100644 index 0000000000..334f4a1dc8 --- /dev/null +++ b/core-js/stable/string/blink.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/blink'); diff --git a/core-js/stable/string/bold.js b/core-js/stable/string/bold.js new file mode 100644 index 0000000000..6dbf233088 --- /dev/null +++ b/core-js/stable/string/bold.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/bold'); diff --git a/core-js/stable/string/code-point-at.js b/core-js/stable/string/code-point-at.js new file mode 100644 index 0000000000..fb74eaee91 --- /dev/null +++ b/core-js/stable/string/code-point-at.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/code-point-at'); diff --git a/core-js/stable/string/ends-with.js b/core-js/stable/string/ends-with.js new file mode 100644 index 0000000000..89dfe343bb --- /dev/null +++ b/core-js/stable/string/ends-with.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/ends-with'); diff --git a/core-js/stable/string/fixed.js b/core-js/stable/string/fixed.js new file mode 100644 index 0000000000..450d466c56 --- /dev/null +++ b/core-js/stable/string/fixed.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/fixed'); diff --git a/core-js/stable/string/fontcolor.js b/core-js/stable/string/fontcolor.js new file mode 100644 index 0000000000..0d1033b1d0 --- /dev/null +++ b/core-js/stable/string/fontcolor.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/fontcolor'); diff --git a/core-js/stable/string/fontsize.js b/core-js/stable/string/fontsize.js new file mode 100644 index 0000000000..2167503c08 --- /dev/null +++ b/core-js/stable/string/fontsize.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/fontsize'); diff --git a/core-js/stable/string/from-code-point.js b/core-js/stable/string/from-code-point.js new file mode 100644 index 0000000000..2ac7d708f7 --- /dev/null +++ b/core-js/stable/string/from-code-point.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/from-code-point'); diff --git a/core-js/stable/string/includes.js b/core-js/stable/string/includes.js new file mode 100644 index 0000000000..62baf5c7ac --- /dev/null +++ b/core-js/stable/string/includes.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/includes'); diff --git a/core-js/stable/string/index.js b/core-js/stable/string/index.js new file mode 100644 index 0000000000..0f992c3210 --- /dev/null +++ b/core-js/stable/string/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/string'); diff --git a/core-js/stable/string/italics.js b/core-js/stable/string/italics.js new file mode 100644 index 0000000000..0bca65552f --- /dev/null +++ b/core-js/stable/string/italics.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/italics'); diff --git a/core-js/stable/string/iterator.js b/core-js/stable/string/iterator.js new file mode 100644 index 0000000000..06e162ca0e --- /dev/null +++ b/core-js/stable/string/iterator.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/iterator'); diff --git a/core-js/stable/string/link.js b/core-js/stable/string/link.js new file mode 100644 index 0000000000..d2ff7b9f3d --- /dev/null +++ b/core-js/stable/string/link.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/link'); diff --git a/core-js/stable/string/match-all.js b/core-js/stable/string/match-all.js new file mode 100644 index 0000000000..ff63633d8b --- /dev/null +++ b/core-js/stable/string/match-all.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/match-all'); diff --git a/core-js/stable/string/match.js b/core-js/stable/string/match.js new file mode 100644 index 0000000000..7e56b7777e --- /dev/null +++ b/core-js/stable/string/match.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/match'); diff --git a/core-js/stable/string/pad-end.js b/core-js/stable/string/pad-end.js new file mode 100644 index 0000000000..ef266cb5c3 --- /dev/null +++ b/core-js/stable/string/pad-end.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/pad-end'); diff --git a/core-js/stable/string/pad-start.js b/core-js/stable/string/pad-start.js new file mode 100644 index 0000000000..45f47934f6 --- /dev/null +++ b/core-js/stable/string/pad-start.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/pad-start'); diff --git a/core-js/stable/string/raw.js b/core-js/stable/string/raw.js new file mode 100644 index 0000000000..6bbc950aee --- /dev/null +++ b/core-js/stable/string/raw.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/raw'); diff --git a/core-js/stable/string/repeat.js b/core-js/stable/string/repeat.js new file mode 100644 index 0000000000..b9b9939bbc --- /dev/null +++ b/core-js/stable/string/repeat.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/repeat'); diff --git a/core-js/stable/string/replace.js b/core-js/stable/string/replace.js new file mode 100644 index 0000000000..25cfcf730a --- /dev/null +++ b/core-js/stable/string/replace.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/replace'); diff --git a/core-js/stable/string/search.js b/core-js/stable/string/search.js new file mode 100644 index 0000000000..629c7a5542 --- /dev/null +++ b/core-js/stable/string/search.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/search'); diff --git a/core-js/stable/string/small.js b/core-js/stable/string/small.js new file mode 100644 index 0000000000..da002780cf --- /dev/null +++ b/core-js/stable/string/small.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/small'); diff --git a/core-js/stable/string/split.js b/core-js/stable/string/split.js new file mode 100644 index 0000000000..1ec2611975 --- /dev/null +++ b/core-js/stable/string/split.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/split'); diff --git a/core-js/stable/string/starts-with.js b/core-js/stable/string/starts-with.js new file mode 100644 index 0000000000..6b4598b5c7 --- /dev/null +++ b/core-js/stable/string/starts-with.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/starts-with'); diff --git a/core-js/stable/string/strike.js b/core-js/stable/string/strike.js new file mode 100644 index 0000000000..6e2154628d --- /dev/null +++ b/core-js/stable/string/strike.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/strike'); diff --git a/core-js/stable/string/sub.js b/core-js/stable/string/sub.js new file mode 100644 index 0000000000..0f5d2e37e7 --- /dev/null +++ b/core-js/stable/string/sub.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/sub'); diff --git a/core-js/stable/string/sup.js b/core-js/stable/string/sup.js new file mode 100644 index 0000000000..9e6d1fff69 --- /dev/null +++ b/core-js/stable/string/sup.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/sup'); diff --git a/core-js/stable/string/trim-end.js b/core-js/stable/string/trim-end.js new file mode 100644 index 0000000000..3fe1209064 --- /dev/null +++ b/core-js/stable/string/trim-end.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/trim-end'); diff --git a/core-js/stable/string/trim-left.js b/core-js/stable/string/trim-left.js new file mode 100644 index 0000000000..2260e53ec9 --- /dev/null +++ b/core-js/stable/string/trim-left.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/trim-left'); diff --git a/core-js/stable/string/trim-right.js b/core-js/stable/string/trim-right.js new file mode 100644 index 0000000000..5ec4c3b29b --- /dev/null +++ b/core-js/stable/string/trim-right.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/trim-right'); diff --git a/core-js/stable/string/trim-start.js b/core-js/stable/string/trim-start.js new file mode 100644 index 0000000000..75e8212f6a --- /dev/null +++ b/core-js/stable/string/trim-start.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/trim-start'); diff --git a/core-js/stable/string/trim.js b/core-js/stable/string/trim.js new file mode 100644 index 0000000000..8231ac80bc --- /dev/null +++ b/core-js/stable/string/trim.js @@ -0,0 +1 @@ +module.exports = require('../../es/string/trim'); diff --git a/core-js/stable/string/virtual/anchor.js b/core-js/stable/string/virtual/anchor.js new file mode 100644 index 0000000000..1d3b8b8764 --- /dev/null +++ b/core-js/stable/string/virtual/anchor.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/anchor'); diff --git a/core-js/stable/string/virtual/big.js b/core-js/stable/string/virtual/big.js new file mode 100644 index 0000000000..cb8c788448 --- /dev/null +++ b/core-js/stable/string/virtual/big.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/big'); diff --git a/core-js/stable/string/virtual/blink.js b/core-js/stable/string/virtual/blink.js new file mode 100644 index 0000000000..d4ad1b8239 --- /dev/null +++ b/core-js/stable/string/virtual/blink.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/blink'); diff --git a/core-js/stable/string/virtual/bold.js b/core-js/stable/string/virtual/bold.js new file mode 100644 index 0000000000..58ff2fa275 --- /dev/null +++ b/core-js/stable/string/virtual/bold.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/bold'); diff --git a/core-js/stable/string/virtual/code-point-at.js b/core-js/stable/string/virtual/code-point-at.js new file mode 100644 index 0000000000..a23f0a7913 --- /dev/null +++ b/core-js/stable/string/virtual/code-point-at.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/code-point-at'); diff --git a/core-js/stable/string/virtual/ends-with.js b/core-js/stable/string/virtual/ends-with.js new file mode 100644 index 0000000000..e7c2d360c4 --- /dev/null +++ b/core-js/stable/string/virtual/ends-with.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/ends-with'); diff --git a/core-js/stable/string/virtual/fixed.js b/core-js/stable/string/virtual/fixed.js new file mode 100644 index 0000000000..adcae23a3b --- /dev/null +++ b/core-js/stable/string/virtual/fixed.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/fixed'); diff --git a/core-js/stable/string/virtual/fontcolor.js b/core-js/stable/string/virtual/fontcolor.js new file mode 100644 index 0000000000..c0435a264e --- /dev/null +++ b/core-js/stable/string/virtual/fontcolor.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/fontcolor'); diff --git a/core-js/stable/string/virtual/fontsize.js b/core-js/stable/string/virtual/fontsize.js new file mode 100644 index 0000000000..0952c468bd --- /dev/null +++ b/core-js/stable/string/virtual/fontsize.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/fontsize'); diff --git a/core-js/stable/string/virtual/includes.js b/core-js/stable/string/virtual/includes.js new file mode 100644 index 0000000000..671747b853 --- /dev/null +++ b/core-js/stable/string/virtual/includes.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/includes'); diff --git a/core-js/stable/string/virtual/index.js b/core-js/stable/string/virtual/index.js new file mode 100644 index 0000000000..0d9bc2972d --- /dev/null +++ b/core-js/stable/string/virtual/index.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual'); diff --git a/core-js/stable/string/virtual/italics.js b/core-js/stable/string/virtual/italics.js new file mode 100644 index 0000000000..b7e72cdbaf --- /dev/null +++ b/core-js/stable/string/virtual/italics.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/italics'); diff --git a/core-js/stable/string/virtual/iterator.js b/core-js/stable/string/virtual/iterator.js new file mode 100644 index 0000000000..f52320e511 --- /dev/null +++ b/core-js/stable/string/virtual/iterator.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/iterator'); diff --git a/core-js/stable/string/virtual/link.js b/core-js/stable/string/virtual/link.js new file mode 100644 index 0000000000..20fe8ab879 --- /dev/null +++ b/core-js/stable/string/virtual/link.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/link'); diff --git a/core-js/stable/string/virtual/match-all.js b/core-js/stable/string/virtual/match-all.js new file mode 100644 index 0000000000..59960bbcc6 --- /dev/null +++ b/core-js/stable/string/virtual/match-all.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/match-all'); diff --git a/core-js/stable/string/virtual/pad-end.js b/core-js/stable/string/virtual/pad-end.js new file mode 100644 index 0000000000..128a7ee403 --- /dev/null +++ b/core-js/stable/string/virtual/pad-end.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/pad-end'); diff --git a/core-js/stable/string/virtual/pad-start.js b/core-js/stable/string/virtual/pad-start.js new file mode 100644 index 0000000000..a5e86e81f5 --- /dev/null +++ b/core-js/stable/string/virtual/pad-start.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/pad-start'); diff --git a/core-js/stable/string/virtual/repeat.js b/core-js/stable/string/virtual/repeat.js new file mode 100644 index 0000000000..591cbfdbff --- /dev/null +++ b/core-js/stable/string/virtual/repeat.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/repeat'); diff --git a/core-js/stable/string/virtual/small.js b/core-js/stable/string/virtual/small.js new file mode 100644 index 0000000000..4c5373075b --- /dev/null +++ b/core-js/stable/string/virtual/small.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/small'); diff --git a/core-js/stable/string/virtual/starts-with.js b/core-js/stable/string/virtual/starts-with.js new file mode 100644 index 0000000000..9722995139 --- /dev/null +++ b/core-js/stable/string/virtual/starts-with.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/starts-with'); diff --git a/core-js/stable/string/virtual/strike.js b/core-js/stable/string/virtual/strike.js new file mode 100644 index 0000000000..3570027d84 --- /dev/null +++ b/core-js/stable/string/virtual/strike.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/strike'); diff --git a/core-js/stable/string/virtual/sub.js b/core-js/stable/string/virtual/sub.js new file mode 100644 index 0000000000..d3a9c6e534 --- /dev/null +++ b/core-js/stable/string/virtual/sub.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/sub'); diff --git a/core-js/stable/string/virtual/sup.js b/core-js/stable/string/virtual/sup.js new file mode 100644 index 0000000000..a2fe71dff0 --- /dev/null +++ b/core-js/stable/string/virtual/sup.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/sup'); diff --git a/core-js/stable/string/virtual/trim-end.js b/core-js/stable/string/virtual/trim-end.js new file mode 100644 index 0000000000..f450167c55 --- /dev/null +++ b/core-js/stable/string/virtual/trim-end.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/trim-end'); diff --git a/core-js/stable/string/virtual/trim-left.js b/core-js/stable/string/virtual/trim-left.js new file mode 100644 index 0000000000..515e7e507c --- /dev/null +++ b/core-js/stable/string/virtual/trim-left.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/trim-left'); diff --git a/core-js/stable/string/virtual/trim-right.js b/core-js/stable/string/virtual/trim-right.js new file mode 100644 index 0000000000..8823454fa3 --- /dev/null +++ b/core-js/stable/string/virtual/trim-right.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/trim-right'); diff --git a/core-js/stable/string/virtual/trim-start.js b/core-js/stable/string/virtual/trim-start.js new file mode 100644 index 0000000000..3afb6eff83 --- /dev/null +++ b/core-js/stable/string/virtual/trim-start.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/trim-start'); diff --git a/core-js/stable/string/virtual/trim.js b/core-js/stable/string/virtual/trim.js new file mode 100644 index 0000000000..12a266abbf --- /dev/null +++ b/core-js/stable/string/virtual/trim.js @@ -0,0 +1 @@ +module.exports = require('../../../es/string/virtual/trim'); diff --git a/core-js/stable/symbol/async-iterator.js b/core-js/stable/symbol/async-iterator.js new file mode 100644 index 0000000000..2d69e19ca2 --- /dev/null +++ b/core-js/stable/symbol/async-iterator.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/async-iterator'); diff --git a/core-js/stable/symbol/description.js b/core-js/stable/symbol/description.js new file mode 100644 index 0000000000..7bb4b2bc9c --- /dev/null +++ b/core-js/stable/symbol/description.js @@ -0,0 +1 @@ +require('../../modules/es.symbol.description'); diff --git a/core-js/stable/symbol/for.js b/core-js/stable/symbol/for.js new file mode 100644 index 0000000000..58633a4ba9 --- /dev/null +++ b/core-js/stable/symbol/for.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/for'); diff --git a/core-js/stable/symbol/has-instance.js b/core-js/stable/symbol/has-instance.js new file mode 100644 index 0000000000..82bca7ec27 --- /dev/null +++ b/core-js/stable/symbol/has-instance.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/has-instance'); diff --git a/core-js/stable/symbol/index.js b/core-js/stable/symbol/index.js new file mode 100644 index 0000000000..317092735a --- /dev/null +++ b/core-js/stable/symbol/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol'); diff --git a/core-js/stable/symbol/is-concat-spreadable.js b/core-js/stable/symbol/is-concat-spreadable.js new file mode 100644 index 0000000000..ce3514e1a2 --- /dev/null +++ b/core-js/stable/symbol/is-concat-spreadable.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/is-concat-spreadable'); diff --git a/core-js/stable/symbol/iterator.js b/core-js/stable/symbol/iterator.js new file mode 100644 index 0000000000..1a102a6c57 --- /dev/null +++ b/core-js/stable/symbol/iterator.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/iterator'); diff --git a/core-js/stable/symbol/key-for.js b/core-js/stable/symbol/key-for.js new file mode 100644 index 0000000000..c66cab7e90 --- /dev/null +++ b/core-js/stable/symbol/key-for.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/key-for'); diff --git a/core-js/stable/symbol/match-all.js b/core-js/stable/symbol/match-all.js new file mode 100644 index 0000000000..66730fe290 --- /dev/null +++ b/core-js/stable/symbol/match-all.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/match-all'); diff --git a/core-js/stable/symbol/match.js b/core-js/stable/symbol/match.js new file mode 100644 index 0000000000..66c5805a5e --- /dev/null +++ b/core-js/stable/symbol/match.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/match'); diff --git a/core-js/stable/symbol/replace.js b/core-js/stable/symbol/replace.js new file mode 100644 index 0000000000..85324c9231 --- /dev/null +++ b/core-js/stable/symbol/replace.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/replace'); diff --git a/core-js/stable/symbol/search.js b/core-js/stable/symbol/search.js new file mode 100644 index 0000000000..33772f66be --- /dev/null +++ b/core-js/stable/symbol/search.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/search'); diff --git a/core-js/stable/symbol/species.js b/core-js/stable/symbol/species.js new file mode 100644 index 0000000000..87979c67e3 --- /dev/null +++ b/core-js/stable/symbol/species.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/species'); diff --git a/core-js/stable/symbol/split.js b/core-js/stable/symbol/split.js new file mode 100644 index 0000000000..c3855a3005 --- /dev/null +++ b/core-js/stable/symbol/split.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/split'); diff --git a/core-js/stable/symbol/to-primitive.js b/core-js/stable/symbol/to-primitive.js new file mode 100644 index 0000000000..1fbb427471 --- /dev/null +++ b/core-js/stable/symbol/to-primitive.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/to-primitive'); diff --git a/core-js/stable/symbol/to-string-tag.js b/core-js/stable/symbol/to-string-tag.js new file mode 100644 index 0000000000..eeeb3a1354 --- /dev/null +++ b/core-js/stable/symbol/to-string-tag.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/to-string-tag'); diff --git a/core-js/stable/symbol/unscopables.js b/core-js/stable/symbol/unscopables.js new file mode 100644 index 0000000000..7ae091b300 --- /dev/null +++ b/core-js/stable/symbol/unscopables.js @@ -0,0 +1 @@ +module.exports = require('../../es/symbol/unscopables'); diff --git a/core-js/stable/typed-array/copy-within.js b/core-js/stable/typed-array/copy-within.js new file mode 100644 index 0000000000..1352cec72f --- /dev/null +++ b/core-js/stable/typed-array/copy-within.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.copy-within'); diff --git a/core-js/stable/typed-array/entries.js b/core-js/stable/typed-array/entries.js new file mode 100644 index 0000000000..66cc6dca13 --- /dev/null +++ b/core-js/stable/typed-array/entries.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/core-js/stable/typed-array/every.js b/core-js/stable/typed-array/every.js new file mode 100644 index 0000000000..681164be00 --- /dev/null +++ b/core-js/stable/typed-array/every.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.every'); diff --git a/core-js/stable/typed-array/fill.js b/core-js/stable/typed-array/fill.js new file mode 100644 index 0000000000..4d92ac6654 --- /dev/null +++ b/core-js/stable/typed-array/fill.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.fill'); diff --git a/core-js/stable/typed-array/filter.js b/core-js/stable/typed-array/filter.js new file mode 100644 index 0000000000..7d0a630ffa --- /dev/null +++ b/core-js/stable/typed-array/filter.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.filter'); diff --git a/core-js/stable/typed-array/find-index.js b/core-js/stable/typed-array/find-index.js new file mode 100644 index 0000000000..039cd5edde --- /dev/null +++ b/core-js/stable/typed-array/find-index.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.find-index'); diff --git a/core-js/stable/typed-array/find.js b/core-js/stable/typed-array/find.js new file mode 100644 index 0000000000..b3251b9a04 --- /dev/null +++ b/core-js/stable/typed-array/find.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.find'); diff --git a/core-js/stable/typed-array/float32-array.js b/core-js/stable/typed-array/float32-array.js new file mode 100644 index 0000000000..78c91f0a78 --- /dev/null +++ b/core-js/stable/typed-array/float32-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/float32-array'); diff --git a/core-js/stable/typed-array/float64-array.js b/core-js/stable/typed-array/float64-array.js new file mode 100644 index 0000000000..cb90104de0 --- /dev/null +++ b/core-js/stable/typed-array/float64-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/float64-array'); diff --git a/core-js/stable/typed-array/for-each.js b/core-js/stable/typed-array/for-each.js new file mode 100644 index 0000000000..defe03a8dc --- /dev/null +++ b/core-js/stable/typed-array/for-each.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.for-each'); diff --git a/core-js/stable/typed-array/from.js b/core-js/stable/typed-array/from.js new file mode 100644 index 0000000000..e0f34441d1 --- /dev/null +++ b/core-js/stable/typed-array/from.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.from'); diff --git a/core-js/stable/typed-array/includes.js b/core-js/stable/typed-array/includes.js new file mode 100644 index 0000000000..5ff65f9645 --- /dev/null +++ b/core-js/stable/typed-array/includes.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.includes'); diff --git a/core-js/stable/typed-array/index-of.js b/core-js/stable/typed-array/index-of.js new file mode 100644 index 0000000000..87081c0f2b --- /dev/null +++ b/core-js/stable/typed-array/index-of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.index-of'); diff --git a/core-js/stable/typed-array/index.js b/core-js/stable/typed-array/index.js new file mode 100644 index 0000000000..f3ded39d59 --- /dev/null +++ b/core-js/stable/typed-array/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array'); diff --git a/core-js/stable/typed-array/int16-array.js b/core-js/stable/typed-array/int16-array.js new file mode 100644 index 0000000000..d083357db0 --- /dev/null +++ b/core-js/stable/typed-array/int16-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/int16-array'); diff --git a/core-js/stable/typed-array/int32-array.js b/core-js/stable/typed-array/int32-array.js new file mode 100644 index 0000000000..365a971501 --- /dev/null +++ b/core-js/stable/typed-array/int32-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/int32-array'); diff --git a/core-js/stable/typed-array/int8-array.js b/core-js/stable/typed-array/int8-array.js new file mode 100644 index 0000000000..0b9f28c6e1 --- /dev/null +++ b/core-js/stable/typed-array/int8-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/int8-array'); diff --git a/core-js/stable/typed-array/iterator.js b/core-js/stable/typed-array/iterator.js new file mode 100644 index 0000000000..66cc6dca13 --- /dev/null +++ b/core-js/stable/typed-array/iterator.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/core-js/stable/typed-array/join.js b/core-js/stable/typed-array/join.js new file mode 100644 index 0000000000..431129c92f --- /dev/null +++ b/core-js/stable/typed-array/join.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.join'); diff --git a/core-js/stable/typed-array/keys.js b/core-js/stable/typed-array/keys.js new file mode 100644 index 0000000000..66cc6dca13 --- /dev/null +++ b/core-js/stable/typed-array/keys.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/core-js/stable/typed-array/last-index-of.js b/core-js/stable/typed-array/last-index-of.js new file mode 100644 index 0000000000..5682bf44ea --- /dev/null +++ b/core-js/stable/typed-array/last-index-of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.last-index-of'); diff --git a/core-js/stable/typed-array/map.js b/core-js/stable/typed-array/map.js new file mode 100644 index 0000000000..db08fed371 --- /dev/null +++ b/core-js/stable/typed-array/map.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.map'); diff --git a/core-js/stable/typed-array/of.js b/core-js/stable/typed-array/of.js new file mode 100644 index 0000000000..121bf5e2d6 --- /dev/null +++ b/core-js/stable/typed-array/of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.of'); diff --git a/core-js/stable/typed-array/reduce-right.js b/core-js/stable/typed-array/reduce-right.js new file mode 100644 index 0000000000..cbd321fc62 --- /dev/null +++ b/core-js/stable/typed-array/reduce-right.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reduce-right'); diff --git a/core-js/stable/typed-array/reduce.js b/core-js/stable/typed-array/reduce.js new file mode 100644 index 0000000000..e2a6f28283 --- /dev/null +++ b/core-js/stable/typed-array/reduce.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reduce'); diff --git a/core-js/stable/typed-array/reverse.js b/core-js/stable/typed-array/reverse.js new file mode 100644 index 0000000000..14995f497b --- /dev/null +++ b/core-js/stable/typed-array/reverse.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reverse'); diff --git a/core-js/stable/typed-array/set.js b/core-js/stable/typed-array/set.js new file mode 100644 index 0000000000..5330e22983 --- /dev/null +++ b/core-js/stable/typed-array/set.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.set'); diff --git a/core-js/stable/typed-array/slice.js b/core-js/stable/typed-array/slice.js new file mode 100644 index 0000000000..37fb8c141a --- /dev/null +++ b/core-js/stable/typed-array/slice.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.slice'); diff --git a/core-js/stable/typed-array/some.js b/core-js/stable/typed-array/some.js new file mode 100644 index 0000000000..495c322f7d --- /dev/null +++ b/core-js/stable/typed-array/some.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.some'); diff --git a/core-js/stable/typed-array/sort.js b/core-js/stable/typed-array/sort.js new file mode 100644 index 0000000000..d6c7e30b99 --- /dev/null +++ b/core-js/stable/typed-array/sort.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.sort'); diff --git a/core-js/stable/typed-array/subarray.js b/core-js/stable/typed-array/subarray.js new file mode 100644 index 0000000000..dbad4ca2d6 --- /dev/null +++ b/core-js/stable/typed-array/subarray.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.subarray'); diff --git a/core-js/stable/typed-array/to-locale-string.js b/core-js/stable/typed-array/to-locale-string.js new file mode 100644 index 0000000000..12c809e233 --- /dev/null +++ b/core-js/stable/typed-array/to-locale-string.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.to-locale-string'); diff --git a/core-js/stable/typed-array/to-string.js b/core-js/stable/typed-array/to-string.js new file mode 100644 index 0000000000..bf9416079f --- /dev/null +++ b/core-js/stable/typed-array/to-string.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.to-string'); diff --git a/core-js/stable/typed-array/uint16-array.js b/core-js/stable/typed-array/uint16-array.js new file mode 100644 index 0000000000..5ef2cb4977 --- /dev/null +++ b/core-js/stable/typed-array/uint16-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/uint16-array'); diff --git a/core-js/stable/typed-array/uint32-array.js b/core-js/stable/typed-array/uint32-array.js new file mode 100644 index 0000000000..f84c728f6d --- /dev/null +++ b/core-js/stable/typed-array/uint32-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/uint32-array'); diff --git a/core-js/stable/typed-array/uint8-array.js b/core-js/stable/typed-array/uint8-array.js new file mode 100644 index 0000000000..29dbfd6f92 --- /dev/null +++ b/core-js/stable/typed-array/uint8-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/uint8-array'); diff --git a/core-js/stable/typed-array/uint8-clamped-array.js b/core-js/stable/typed-array/uint8-clamped-array.js new file mode 100644 index 0000000000..8fcc6497ab --- /dev/null +++ b/core-js/stable/typed-array/uint8-clamped-array.js @@ -0,0 +1 @@ +module.exports = require('../../es/typed-array/uint8-clamped-array'); diff --git a/core-js/stable/typed-array/values.js b/core-js/stable/typed-array/values.js new file mode 100644 index 0000000000..66cc6dca13 --- /dev/null +++ b/core-js/stable/typed-array/values.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/core-js/stable/url-search-params/index.js b/core-js/stable/url-search-params/index.js new file mode 100644 index 0000000000..e14322b1b4 --- /dev/null +++ b/core-js/stable/url-search-params/index.js @@ -0,0 +1 @@ +module.exports = require('../../web/url-search-params'); diff --git a/core-js/stable/url/index.js b/core-js/stable/url/index.js new file mode 100644 index 0000000000..755eb2ffe9 --- /dev/null +++ b/core-js/stable/url/index.js @@ -0,0 +1 @@ +module.exports = require('../../web/url'); diff --git a/core-js/stable/url/to-json.js b/core-js/stable/url/to-json.js new file mode 100644 index 0000000000..0d841b68ef --- /dev/null +++ b/core-js/stable/url/to-json.js @@ -0,0 +1 @@ +require('../../modules/web.url.to-json'); diff --git a/core-js/stable/weak-map/index.js b/core-js/stable/weak-map/index.js new file mode 100644 index 0000000000..482af14bcb --- /dev/null +++ b/core-js/stable/weak-map/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/weak-map'); diff --git a/core-js/stable/weak-set/index.js b/core-js/stable/weak-set/index.js new file mode 100644 index 0000000000..a0a3d64f74 --- /dev/null +++ b/core-js/stable/weak-set/index.js @@ -0,0 +1 @@ +module.exports = require('../../es/weak-set'); diff --git a/core-js/stage/0.js b/core-js/stage/0.js new file mode 100644 index 0000000000..4f720f194a --- /dev/null +++ b/core-js/stage/0.js @@ -0,0 +1,5 @@ +require('../proposals/efficient-64-bit-arithmetic'); +require('../proposals/string-at'); +require('../proposals/url'); + +module.exports = require('./1'); diff --git a/core-js/stage/1.js b/core-js/stage/1.js new file mode 100644 index 0000000000..98b215ce52 --- /dev/null +++ b/core-js/stage/1.js @@ -0,0 +1,15 @@ +require('../proposals/array-last'); +require('../proposals/collection-methods'); +require('../proposals/collection-of-from'); +require('../proposals/keys-composition'); +require('../proposals/map-update-or-insert'); +require('../proposals/math-extensions'); +require('../proposals/math-signbit'); +require('../proposals/number-from-string'); +require('../proposals/observable'); +require('../proposals/pattern-matching'); +require('../proposals/promise-try'); +require('../proposals/seeded-random'); +require('../proposals/string-code-points'); + +module.exports = require('./2'); diff --git a/core-js/stage/2.js b/core-js/stage/2.js new file mode 100644 index 0000000000..b2a8b4d2a5 --- /dev/null +++ b/core-js/stage/2.js @@ -0,0 +1,7 @@ +require('../proposals/array-is-template-object'); +require('../proposals/promise-any'); +require('../proposals/set-methods'); +require('../proposals/string-replace-all'); +require('../proposals/using-statement'); + +module.exports = require('./3'); diff --git a/core-js/stage/3.js b/core-js/stage/3.js new file mode 100644 index 0000000000..b90990f5c1 --- /dev/null +++ b/core-js/stage/3.js @@ -0,0 +1,3 @@ +require('../proposals/global-this'); + +module.exports = require('./4'); diff --git a/core-js/stage/4.js b/core-js/stage/4.js new file mode 100644 index 0000000000..ecd7460487 --- /dev/null +++ b/core-js/stage/4.js @@ -0,0 +1,4 @@ +require('../proposals/promise-all-settled'); +require('../proposals/string-match-all'); + +module.exports = require('../internals/path'); diff --git a/core-js/stage/README.md b/core-js/stage/README.md new file mode 100644 index 0000000000..0da7eaef6c --- /dev/null +++ b/core-js/stage/README.md @@ -0,0 +1 @@ +This folder contains entry points for [ECMAScript proposals](https://github.com/zloirock/core-js/tree/v3#ecmascript-proposals) with dependencies. diff --git a/core-js/stage/index.js b/core-js/stage/index.js new file mode 100644 index 0000000000..24dcf2e564 --- /dev/null +++ b/core-js/stage/index.js @@ -0,0 +1 @@ +module.exports = require('./pre'); diff --git a/core-js/stage/pre.js b/core-js/stage/pre.js new file mode 100644 index 0000000000..bc939d1637 --- /dev/null +++ b/core-js/stage/pre.js @@ -0,0 +1,3 @@ +require('../proposals/reflect-metadata'); + +module.exports = require('./0'); diff --git a/core-js/web/README.md b/core-js/web/README.md new file mode 100644 index 0000000000..40ff72acf3 --- /dev/null +++ b/core-js/web/README.md @@ -0,0 +1 @@ +This folder contains entry points for features from [WHATWG / W3C](https://github.com/zloirock/core-js/tree/v3#web-standards) with dependencies. diff --git a/core-js/web/dom-collections.js b/core-js/web/dom-collections.js new file mode 100644 index 0000000000..601c1ce660 --- /dev/null +++ b/core-js/web/dom-collections.js @@ -0,0 +1,4 @@ +require('../modules/web.dom-collections.for-each'); +require('../modules/web.dom-collections.iterator'); + +module.exports = require('../internals/path'); diff --git a/core-js/web/immediate.js b/core-js/web/immediate.js new file mode 100644 index 0000000000..19bb0f75da --- /dev/null +++ b/core-js/web/immediate.js @@ -0,0 +1,3 @@ +require('../modules/web.immediate'); + +module.exports = require('../internals/path'); diff --git a/core-js/web/index.js b/core-js/web/index.js new file mode 100644 index 0000000000..f1ea3aba97 --- /dev/null +++ b/core-js/web/index.js @@ -0,0 +1,10 @@ +require('../modules/web.dom-collections.for-each'); +require('../modules/web.dom-collections.iterator'); +require('../modules/web.immediate'); +require('../modules/web.queue-microtask'); +require('../modules/web.timers'); +require('../modules/web.url'); +require('../modules/web.url.to-json'); +require('../modules/web.url-search-params'); + +module.exports = require('../internals/path'); diff --git a/core-js/web/queue-microtask.js b/core-js/web/queue-microtask.js new file mode 100644 index 0000000000..10f9f30348 --- /dev/null +++ b/core-js/web/queue-microtask.js @@ -0,0 +1,4 @@ +require('../modules/web.queue-microtask'); +var path = require('../internals/path'); + +module.exports = path.queueMicrotask; diff --git a/core-js/web/timers.js b/core-js/web/timers.js new file mode 100644 index 0000000000..bf93612545 --- /dev/null +++ b/core-js/web/timers.js @@ -0,0 +1,3 @@ +require('../modules/web.timers'); + +module.exports = require('../internals/path'); diff --git a/core-js/web/url-search-params.js b/core-js/web/url-search-params.js new file mode 100644 index 0000000000..9434608bbb --- /dev/null +++ b/core-js/web/url-search-params.js @@ -0,0 +1,4 @@ +require('../modules/web.url-search-params'); +var path = require('../internals/path'); + +module.exports = path.URLSearchParams; diff --git a/core-js/web/url.js b/core-js/web/url.js new file mode 100644 index 0000000000..2faed2eddc --- /dev/null +++ b/core-js/web/url.js @@ -0,0 +1,6 @@ +require('../modules/web.url'); +require('../modules/web.url.to-json'); +require('../modules/web.url-search-params'); +var path = require('../internals/path'); + +module.exports = path.URL;