Skip to content

Commit

Permalink
Merge pull request #1012 from zloirock/api
Browse files Browse the repository at this point in the history
  • Loading branch information
zloirock committed Dec 15, 2021
2 parents 59e4eff + 55fdcb8 commit cafe9ec
Show file tree
Hide file tree
Showing 1,043 changed files with 2,804 additions and 1,288 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -23,6 +23,7 @@ node_modules/
/packages/core-js-compat/external.json
/packages/core-js-compat/modules.json
/packages/core-js-compat/modules-by-versions.json
/packages/core-js-pure/actual/
/packages/core-js-pure/es/
/packages/core-js-pure/features/
/packages/core-js-pure/internals/
Expand Down
3 changes: 3 additions & 0 deletions CHANGELOG.md
Expand Up @@ -35,6 +35,9 @@
- Added a workaround of most cases breakage modern `String#at` after loading obsolete `String#at` proposal module, [#1019](https://github.com/zloirock/core-js/issues/1019)
- Fixed `Array.prototype.{ values, @@iterator }.name` in V8 ~ Chrome 45-
- Fixed validation of typed arrays in typed arrays iteration methods in V8 ~ Chrome 50-
- Extension of the API, [#1012](https://github.com/zloirock/core-js/issues/1012)
- Added a new `core-js/actual/**` namespace
- Added entry points for each finished post-ES6 proposal

##### 3.19.3 - 2021.12.06
- Fixed internal slots check in methods of some built-in types, [#1017](https://github.com/zloirock/core-js/issues/1017)
Expand Down
927 changes: 523 additions & 404 deletions README.md

Large diffs are not rendered by default.

12 changes: 7 additions & 5 deletions deno/corejs/README.md
@@ -1,4 +1,4 @@
# core-js
![logo](https://user-images.githubusercontent.com/2213682/140570622-ea744c11-632e-4d9a-ba0a-70c390a1fdff.png)

[![Open Collective](https://opencollective.com/core-js/all/badge.svg?label=open%20collective)](https://opencollective.com/core-js) [![version](https://img.shields.io/npm/v/core-js.svg)](https://www.npmjs.com/package/core-js) [![core-js downloads](https://img.shields.io/npm/dm/core-js.svg?label=npm%20i%20core-js)](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [![core-js-pure downloads](https://img.shields.io/npm/dm/core-js-pure.svg?label=npm%20i%20core-js-pure)](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [![tests](https://github.com/zloirock/core-js/workflows/tests/badge.svg)](https://github.com/zloirock/core-js/actions) [![eslint](https://github.com/zloirock/core-js/workflows/eslint/badge.svg)](https://github.com/zloirock/core-js/actions)

Expand Down Expand Up @@ -26,22 +26,24 @@
```js
import 'https://deno.land/x/corejs@v3.19.3/index.js'; // <- at the top of your entry point

Object.hasOwn({ foo: 42 }, 'foo'); // => true
Object.hasOwn({ foo: 42 }, 'foo'); // => true

[1, 2, 3, 4, 5, 6, 7].at(-3); // => 5
[1, 2, 3, 4, 5, 6, 7].at(-3); // => 5

[1, 2, 3, 4, 5].groupBy(it => it % 2); // => { 1: [1, 3, 5], 0: [2, 4] }

Promise.any([
Promise.resolve(1),
Promise.reject(2),
Promise.resolve(3),
]).then(console.log); // => 1
]).then(console.log); // => 1

[1, 2, 3, 4, 5, 6, 7].values()
.drop(1)
.take(5)
.filter(it => it % 2)
.map(it => it ** 2)
.toArray(); // => [9, 25]
.toArray(); // => [9, 25]
```

**It's a bundled global version for Deno 1.0+, for more info see [`core-js` documentation](https://github.com/zloirock/core-js/blob/master/README.md).**
2 changes: 2 additions & 0 deletions packages/core-js-builder/README.md
@@ -1,3 +1,5 @@
![logo](https://user-images.githubusercontent.com/2213682/140570622-ea744c11-632e-4d9a-ba0a-70c390a1fdff.png)

For some cases could be useful to exclude some `core-js` features or generate a polyfill for target engines. This API helps conditionally include or exclude certain parts of [`core-js`](https://github.com/zloirock/core-js), build for targets [specified in `core-js-compat` format](https://github.com/zloirock/core-js/tree/master/packages/core-js-compat#targets-option).

```js
Expand Down
42 changes: 26 additions & 16 deletions packages/core-js-bundle/README.md
@@ -1,4 +1,4 @@
# core-js-bundle
![logo](https://user-images.githubusercontent.com/2213682/140570622-ea744c11-632e-4d9a-ba0a-70c390a1fdff.png)

[![Open Collective](https://opencollective.com/core-js/all/badge.svg?label=open%20collective)](https://opencollective.com/core-js) [![version](https://img.shields.io/npm/v/core-js.svg)](https://www.npmjs.com/package/core-js) [![core-js downloads](https://img.shields.io/npm/dm/core-js.svg?label=npm%20i%20core-js)](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [![core-js-pure downloads](https://img.shields.io/npm/dm/core-js-pure.svg?label=npm%20i%20core-js-pure)](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [![tests](https://github.com/zloirock/core-js/workflows/tests/badge.svg)](https://github.com/zloirock/core-js/actions) [![eslint](https://github.com/zloirock/core-js/workflows/eslint/badge.svg)](https://github.com/zloirock/core-js/actions)

Expand All @@ -22,37 +22,47 @@

---

[*Example*](http://goo.gl/a2xexl):
[*Example of usage*](https://is.gd/XD4mRe):
```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
[1, 2, 3, 4, 5].groupBy(it => it % 2); // => { 1: [1, 3, 5], 0: [2, 4] }
Promise.resolve(42).then(x => console.log(x)); // => 42
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
queueMicrotask(() => console.log('called as microtask'));
```

*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
import 'core-js/actual/array/from'; // <- at the top of your entry point
import 'core-js/actual/array/group-by'; // <- at the top of your entry point
import 'core-js/actual/set'; // <- at the top of your entry point
import 'core-js/actual/promise'; // <- at the top of your entry point
import 'core-js/actual/structured-clone'; // <- at the top of your entry point
import 'core-js/actual/queue-microtask'; // <- 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
[1, 2, 3, 4, 5].groupBy(it => it % 2); // => { 1: [1, 3, 5], 0: [2, 4] }
Promise.resolve(42).then(x => console.log(x)); // => 42
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
queueMicrotask(() => console.log('called as microtask'));
```

*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';
import from from 'core-js-pure/actual/array/from';
import groupBy from 'core-js-pure/actual/array/group-by';
import Set from 'core-js-pure/actual/set';
import Promise from 'core-js-pure/actual/promise';
import structuredClone from 'core-js-pure/actual/structured-clone';
import queueMicrotask from 'core-js-pure/actual/queue-microtask';

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
groupBy([1, 2, 3, 4, 5], it => it % 2); // => { 1: [1, 3, 5], 0: [2, 4] }
Promise.resolve(42).then(x => console.log(x)); // => 42
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
queueMicrotask(() => console.log('called as microtask'));
```

**It's a bundled global version, for more info see [`core-js` documentation](https://github.com/zloirock/core-js/blob/master/README.md).**
2 changes: 2 additions & 0 deletions packages/core-js-compat/README.md
@@ -1,3 +1,5 @@
![logo](https://user-images.githubusercontent.com/2213682/140570622-ea744c11-632e-4d9a-ba0a-70c390a1fdff.png)

[`core-js-compat` package](https://github.com/zloirock/core-js/tree/master/packages/core-js-compat) contains data about the necessity of [`core-js`](https://github.com/zloirock/core-js) modules and API for getting a list of required core-js modules by browserslist query.

```js
Expand Down
42 changes: 26 additions & 16 deletions packages/core-js-pure/README.md
@@ -1,4 +1,4 @@
# core-js-pure
![logo](https://user-images.githubusercontent.com/2213682/140570622-ea744c11-632e-4d9a-ba0a-70c390a1fdff.png)

[![Open Collective](https://opencollective.com/core-js/all/badge.svg?label=open%20collective)](https://opencollective.com/core-js) [![version](https://img.shields.io/npm/v/core-js.svg)](https://www.npmjs.com/package/core-js) [![core-js downloads](https://img.shields.io/npm/dm/core-js.svg?label=npm%20i%20core-js)](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [![core-js-pure downloads](https://img.shields.io/npm/dm/core-js-pure.svg?label=npm%20i%20core-js-pure)](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [![tests](https://github.com/zloirock/core-js/workflows/tests/badge.svg)](https://github.com/zloirock/core-js/actions) [![eslint](https://github.com/zloirock/core-js/workflows/eslint/badge.svg)](https://github.com/zloirock/core-js/actions)

Expand All @@ -22,37 +22,47 @@

---

[*Example*](http://goo.gl/a2xexl):
[*Example of usage*](https://is.gd/XD4mRe):
```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
[1, 2, 3, 4, 5].groupBy(it => it % 2); // => { 1: [1, 3, 5], 0: [2, 4] }
Promise.resolve(42).then(x => console.log(x)); // => 42
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
queueMicrotask(() => console.log('called as microtask'));
```

*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
import 'core-js/actual/array/from'; // <- at the top of your entry point
import 'core-js/actual/array/group-by'; // <- at the top of your entry point
import 'core-js/actual/set'; // <- at the top of your entry point
import 'core-js/actual/promise'; // <- at the top of your entry point
import 'core-js/actual/structured-clone'; // <- at the top of your entry point
import 'core-js/actual/queue-microtask'; // <- 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
[1, 2, 3, 4, 5].groupBy(it => it % 2); // => { 1: [1, 3, 5], 0: [2, 4] }
Promise.resolve(42).then(x => console.log(x)); // => 42
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
queueMicrotask(() => console.log('called as microtask'));
```

*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';
import from from 'core-js-pure/actual/array/from';
import groupBy from 'core-js-pure/actual/array/group-by';
import Set from 'core-js-pure/actual/set';
import Promise from 'core-js-pure/actual/promise';
import structuredClone from 'core-js-pure/actual/structured-clone';
import queueMicrotask from 'core-js-pure/actual/queue-microtask';

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
groupBy([1, 2, 3, 4, 5], it => it % 2); // => { 1: [1, 3, 5], 0: [2, 4] }
Promise.resolve(42).then(x => console.log(x)); // => 42
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
queueMicrotask(() => console.log('called as microtask'));
```

**It's a version without global namespace pollution (the third example), for more info see [`core-js` documentation](https://github.com/zloirock/core-js/blob/master/README.md)**.
42 changes: 26 additions & 16 deletions packages/core-js/README.md
@@ -1,4 +1,4 @@
# core-js
![logo](https://user-images.githubusercontent.com/2213682/140570622-ea744c11-632e-4d9a-ba0a-70c390a1fdff.png)

[![Open Collective](https://opencollective.com/core-js/all/badge.svg?label=open%20collective)](https://opencollective.com/core-js) [![version](https://img.shields.io/npm/v/core-js.svg)](https://www.npmjs.com/package/core-js) [![core-js downloads](https://img.shields.io/npm/dm/core-js.svg?label=npm%20i%20core-js)](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [![core-js-pure downloads](https://img.shields.io/npm/dm/core-js-pure.svg?label=npm%20i%20core-js-pure)](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [![tests](https://github.com/zloirock/core-js/workflows/tests/badge.svg)](https://github.com/zloirock/core-js/actions) [![eslint](https://github.com/zloirock/core-js/workflows/eslint/badge.svg)](https://github.com/zloirock/core-js/actions)

Expand All @@ -22,37 +22,47 @@

---

[*Example*](http://goo.gl/a2xexl):
[*Example of usage*](https://is.gd/XD4mRe):
```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
[1, 2, 3, 4, 5].groupBy(it => it % 2); // => { 1: [1, 3, 5], 0: [2, 4] }
Promise.resolve(42).then(x => console.log(x)); // => 42
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
queueMicrotask(() => console.log('called as microtask'));
```

*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
import 'core-js/actual/array/from'; // <- at the top of your entry point
import 'core-js/actual/array/group-by'; // <- at the top of your entry point
import 'core-js/actual/set'; // <- at the top of your entry point
import 'core-js/actual/promise'; // <- at the top of your entry point
import 'core-js/actual/structured-clone'; // <- at the top of your entry point
import 'core-js/actual/queue-microtask'; // <- 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
[1, 2, 3, 4, 5].groupBy(it => it % 2); // => { 1: [1, 3, 5], 0: [2, 4] }
Promise.resolve(42).then(x => console.log(x)); // => 42
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
queueMicrotask(() => console.log('called as microtask'));
```

*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';
import from from 'core-js-pure/actual/array/from';
import groupBy from 'core-js-pure/actual/array/group-by';
import Set from 'core-js-pure/actual/set';
import Promise from 'core-js-pure/actual/promise';
import structuredClone from 'core-js-pure/actual/structured-clone';
import queueMicrotask from 'core-js-pure/actual/queue-microtask';

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
groupBy([1, 2, 3, 4, 5], it => it % 2); // => { 1: [1, 3, 5], 0: [2, 4] }
Promise.resolve(42).then(x => console.log(x)); // => 42
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
queueMicrotask(() => console.log('called as microtask'));
```

**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).**
1 change: 1 addition & 0 deletions packages/core-js/actual/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.
3 changes: 3 additions & 0 deletions packages/core-js/actual/aggregate-error.js
@@ -0,0 +1,3 @@
var parent = require('../stable/aggregate-error');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array-buffer/constructor.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array-buffer/constructor');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array-buffer/index.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array-buffer');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array-buffer/is-view.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array-buffer/is-view');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array-buffer/slice.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array-buffer/slice');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/at.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/at');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/concat.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/concat');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/copy-within.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/copy-within');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/entries.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/entries');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/every.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/every');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/fill.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/fill');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/filter.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/filter');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/find-index.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/find-index');

module.exports = parent;
4 changes: 4 additions & 0 deletions packages/core-js/actual/array/find-last-index.js
@@ -0,0 +1,4 @@
require('../../modules/esnext.array.find-last-index');
var entryUnbind = require('../../internals/entry-unbind');

module.exports = entryUnbind('Array', 'findLastIndex');
4 changes: 4 additions & 0 deletions packages/core-js/actual/array/find-last.js
@@ -0,0 +1,4 @@
require('../../modules/esnext.array.find-last');
var entryUnbind = require('../../internals/entry-unbind');

module.exports = entryUnbind('Array', 'findLast');
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/find.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/find');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/flat-map.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/flat-map');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/flat.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/flat');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/for-each.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/for-each');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/from.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/from');

module.exports = parent;
5 changes: 5 additions & 0 deletions packages/core-js/actual/array/group-by-to-map.js
@@ -0,0 +1,5 @@
require('../../modules/es.map');
require('../../modules/esnext.array.group-by-to-map');
var entryUnbind = require('../../internals/entry-unbind');

module.exports = entryUnbind('Array', 'groupByToMap');
4 changes: 4 additions & 0 deletions packages/core-js/actual/array/group-by.js
@@ -0,0 +1,4 @@
require('../../modules/esnext.array.group-by');
var entryUnbind = require('../../internals/entry-unbind');

module.exports = entryUnbind('Array', 'groupBy');
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/includes.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/includes');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/index-of.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/index-of');

module.exports = parent;
8 changes: 8 additions & 0 deletions packages/core-js/actual/array/index.js
@@ -0,0 +1,8 @@
var parent = require('../../stable/array');
require('../../modules/es.map');
require('../../modules/esnext.array.find-last');
require('../../modules/esnext.array.find-last-index');
require('../../modules/esnext.array.group-by');
require('../../modules/esnext.array.group-by-to-map');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/is-array.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/is-array');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/iterator.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/iterator');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/join.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/join');

module.exports = parent;
3 changes: 3 additions & 0 deletions packages/core-js/actual/array/keys.js
@@ -0,0 +1,3 @@
var parent = require('../../stable/array/keys');

module.exports = parent;

0 comments on commit cafe9ec

Please sign in to comment.