core-js-compat 3.21.1 → 3.22.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -34
- package/compat.js +40 -18
- package/data.json +23 -11
- package/entries.json +3681 -156
- package/helpers.js +13 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -3,42 +3,52 @@
|
|
|
3
3
|
[`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.
|
|
4
4
|
|
|
5
5
|
```js
|
|
6
|
+
import compat from 'core-js-compat';
|
|
7
|
+
|
|
6
8
|
const {
|
|
7
|
-
list,
|
|
8
|
-
targets,
|
|
9
|
-
} =
|
|
10
|
-
targets: '>
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
list, // array of required modules
|
|
10
|
+
targets, // object with targets for each module
|
|
11
|
+
} = compat({
|
|
12
|
+
targets: '> 1%', // browserslist query or object of minimum environment versions to support, see below
|
|
13
|
+
modules: [ // optional list / filter of modules - regex, sting or an array of them:
|
|
14
|
+
'core-js/actual', // - an entry point
|
|
15
|
+
'esnext.array.unique-by', // - a module name (or just a start of a module name)
|
|
16
|
+
/^web\./, // - regex that a module name must satisfy
|
|
17
|
+
],
|
|
18
|
+
exclude: [ // optional list / filter of modules to exclude, the signature is similar to `modules` option
|
|
19
|
+
'web.atob',
|
|
20
|
+
],
|
|
21
|
+
version: '3.22', // used `core-js` version, by default - the latest
|
|
13
22
|
});
|
|
14
23
|
|
|
15
24
|
console.log(targets);
|
|
16
25
|
/* =>
|
|
17
26
|
{
|
|
18
|
-
'es.
|
|
19
|
-
'es.
|
|
20
|
-
'es.array.
|
|
21
|
-
'es.
|
|
22
|
-
'es.
|
|
23
|
-
'es.
|
|
24
|
-
'es.
|
|
25
|
-
'
|
|
26
|
-
'
|
|
27
|
-
'
|
|
28
|
-
'
|
|
29
|
-
'
|
|
30
|
-
'
|
|
31
|
-
'
|
|
32
|
-
'
|
|
33
|
-
'
|
|
34
|
-
'
|
|
35
|
-
'
|
|
36
|
-
'
|
|
37
|
-
'
|
|
38
|
-
'
|
|
39
|
-
'
|
|
40
|
-
'web.
|
|
41
|
-
'web.
|
|
27
|
+
'es.error.cause': { ios: '14.5-14.8', samsung: '16.0' },
|
|
28
|
+
'es.aggregate-error.cause': { ios: '14.5-14.8', samsung: '16.0' },
|
|
29
|
+
'es.array.at': { ios: '14.5-14.8' },
|
|
30
|
+
'es.object.has-own': { ios: '14.5-14.8', samsung: '16.0' },
|
|
31
|
+
'es.string.at-alternative': { ios: '14.5-14.8' },
|
|
32
|
+
'es.typed-array.at': { ios: '14.5-14.8' },
|
|
33
|
+
'es.typed-array.set': { samsung: '16.0' },
|
|
34
|
+
'esnext.array.find-last': { firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
35
|
+
'esnext.array.find-last-index': { firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
36
|
+
'esnext.array.group-by': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
37
|
+
'esnext.array.group-by-to-map': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
38
|
+
'esnext.array.to-reversed': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
39
|
+
'esnext.array.to-sorted': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
40
|
+
'esnext.array.to-spliced': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
41
|
+
'esnext.array.unique-by': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
42
|
+
'esnext.array.with': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
43
|
+
'esnext.typed-array.find-last': { firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
44
|
+
'esnext.typed-array.find-last-index': { firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
45
|
+
'esnext.typed-array.to-reversed': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
46
|
+
'esnext.typed-array.to-sorted': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
47
|
+
'esnext.typed-array.to-spliced': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
48
|
+
'esnext.typed-array.with': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
49
|
+
'web.dom-exception.stack': { chrome: '98', edge: '99', ios: '14.5-14.8', samsung: '16.0' },
|
|
50
|
+
'web.immediate': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' },
|
|
51
|
+
'web.structured-clone': { chrome: '98', edge: '99', firefox: '98', ios: '14.5-14.8', samsung: '16.0' }
|
|
42
52
|
}
|
|
43
53
|
*/
|
|
44
54
|
```
|
|
@@ -74,9 +84,9 @@ console.log(targets);
|
|
|
74
84
|
|
|
75
85
|
```js
|
|
76
86
|
// equals of of the method from the example above
|
|
77
|
-
require('core-js-compat/compat')({ targets,
|
|
87
|
+
require('core-js-compat/compat')({ targets, modules, version }); // => { list: Array<ModuleName>, targets: { [ModuleName]: { [EngineName]: EngineVersion } } }
|
|
78
88
|
// or
|
|
79
|
-
require('core-js-compat').compat({ targets,
|
|
89
|
+
require('core-js-compat').compat({ targets, modules, version }); // => { list: Array<ModuleName>, targets: { [ModuleName]: { [EngineName]: EngineVersion } } }
|
|
80
90
|
|
|
81
91
|
// full compat data:
|
|
82
92
|
require('core-js-compat/data'); // => { [ModuleName]: { [EngineName]: EngineVersion } }
|
|
@@ -94,9 +104,9 @@ require('core-js-compat/modules'); // => Array<ModuleName>
|
|
|
94
104
|
require('core-js-compat').modules; // => Array<ModuleName>
|
|
95
105
|
|
|
96
106
|
// the subset of modules which available in the passed `core-js` version:
|
|
97
|
-
require('core-js-compat/get-modules-list-for-target-version')('3.
|
|
107
|
+
require('core-js-compat/get-modules-list-for-target-version')('3.22'); // => Array<ModuleName>
|
|
98
108
|
// or
|
|
99
|
-
require('core-js-compat').getModulesListForTargetVersion('3.
|
|
109
|
+
require('core-js-compat').getModulesListForTargetVersion('3.22'); // => Array<ModuleName>
|
|
100
110
|
```
|
|
101
111
|
|
|
102
112
|
If you want to add new / update data about modules required for target engines, [follow this instruction](https://github.com/zloirock/core-js/blob/master/CONTRIBUTING.md#updating-core-js-compat-data).
|
package/compat.js
CHANGED
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
const { compare, has, intersection } = require('./helpers');
|
|
2
|
+
const { compare, filterOutStabilizedProposals, has, intersection } = require('./helpers');
|
|
3
3
|
const data = require('./data');
|
|
4
|
+
const entries = require('./entries');
|
|
4
5
|
const getModulesListForTargetVersion = require('./get-modules-list-for-target-version');
|
|
5
|
-
const
|
|
6
|
+
const allModules = require('./modules');
|
|
6
7
|
const targetsParser = require('./targets-parser');
|
|
7
8
|
|
|
8
|
-
function
|
|
9
|
-
if (
|
|
9
|
+
function getModules(filter) {
|
|
10
|
+
if (typeof filter == 'string') {
|
|
11
|
+
if (has(entries, filter)) return entries[filter];
|
|
12
|
+
return allModules.filter(it => it.startsWith(filter));
|
|
13
|
+
} else if (filter instanceof RegExp) return allModules.filter(it => filter.test(it));
|
|
14
|
+
throw TypeError('Wrong filter!');
|
|
15
|
+
}
|
|
10
16
|
|
|
11
|
-
|
|
17
|
+
function normalizeModules(option) {
|
|
18
|
+
// TODO: use `.flatMap` in core-js@4
|
|
19
|
+
return new Set(Array.isArray(option) ? [].concat.apply([], option.map(getModules)) : getModules(option));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function checkModule(name, targets) {
|
|
12
23
|
const result = {
|
|
13
|
-
required:
|
|
24
|
+
required: !targets,
|
|
14
25
|
targets: {},
|
|
15
26
|
};
|
|
16
27
|
|
|
28
|
+
if (!targets) return result;
|
|
29
|
+
|
|
30
|
+
const requirements = data[name];
|
|
31
|
+
|
|
17
32
|
for (const [engine, version] of targets) {
|
|
18
33
|
if (!has(requirements, engine) || compare(version, '<', requirements[engine])) {
|
|
19
34
|
result.required = true;
|
|
@@ -24,28 +39,35 @@ function checkModule(name, targets) {
|
|
|
24
39
|
return result;
|
|
25
40
|
}
|
|
26
41
|
|
|
27
|
-
module.exports = function ({
|
|
28
|
-
|
|
42
|
+
module.exports = function ({
|
|
43
|
+
filter = null, // TODO: Obsolete, remove from `core-js@4`
|
|
44
|
+
modules = null,
|
|
45
|
+
exclude = [],
|
|
46
|
+
targets = null,
|
|
47
|
+
version = null,
|
|
48
|
+
} = {}) {
|
|
49
|
+
if (modules == null) modules = filter;
|
|
50
|
+
|
|
51
|
+
const parsedTargets = targets ? targetsParser(targets) : null;
|
|
29
52
|
|
|
30
53
|
const result = {
|
|
31
54
|
list: [],
|
|
32
55
|
targets: {},
|
|
33
56
|
};
|
|
34
57
|
|
|
35
|
-
|
|
58
|
+
exclude = normalizeModules(exclude);
|
|
36
59
|
|
|
37
|
-
|
|
38
|
-
$modules = $modules.filter(it => filter.test(it));
|
|
39
|
-
} else if (typeof filter == 'string') {
|
|
40
|
-
$modules = $modules.filter(it => it.startsWith(filter));
|
|
41
|
-
}
|
|
60
|
+
modules = modules ? [...normalizeModules(modules)] : allModules;
|
|
42
61
|
|
|
43
|
-
if (
|
|
44
|
-
$modules = intersection($modules, getModulesListForTargetVersion(version));
|
|
45
|
-
}
|
|
62
|
+
if (exclude.size) modules = modules.filter(it => !exclude.has(it));
|
|
46
63
|
|
|
47
|
-
|
|
64
|
+
modules = intersection(modules, version ? getModulesListForTargetVersion(version) : allModules);
|
|
65
|
+
|
|
66
|
+
modules = filterOutStabilizedProposals(modules);
|
|
67
|
+
|
|
68
|
+
for (const key of modules) {
|
|
48
69
|
const check = checkModule(key, parsedTargets);
|
|
70
|
+
|
|
49
71
|
if (check.required) {
|
|
50
72
|
result.list.push(key);
|
|
51
73
|
result.targets[key] = check.targets;
|
package/data.json
CHANGED
|
@@ -231,7 +231,8 @@
|
|
|
231
231
|
"node": "16.11",
|
|
232
232
|
"opera": "80",
|
|
233
233
|
"opera_mobile": "66",
|
|
234
|
-
"safari": "15.0"
|
|
234
|
+
"safari": "15.0",
|
|
235
|
+
"samsung": "17.0"
|
|
235
236
|
},
|
|
236
237
|
"es.error.to-string": {
|
|
237
238
|
"android": "4.4.3",
|
|
@@ -274,7 +275,8 @@
|
|
|
274
275
|
"node": "16.11",
|
|
275
276
|
"opera": "80",
|
|
276
277
|
"opera_mobile": "66",
|
|
277
|
-
"safari": "15.0"
|
|
278
|
+
"safari": "15.0",
|
|
279
|
+
"samsung": "17.0"
|
|
278
280
|
},
|
|
279
281
|
"es.array.at": {
|
|
280
282
|
"android": "92",
|
|
@@ -1707,7 +1709,8 @@
|
|
|
1707
1709
|
"node": "16.9",
|
|
1708
1710
|
"opera": "79",
|
|
1709
1711
|
"opera_mobile": "66",
|
|
1710
|
-
"safari": "15.4"
|
|
1712
|
+
"safari": "15.4",
|
|
1713
|
+
"samsung": "17.0"
|
|
1711
1714
|
},
|
|
1712
1715
|
"es.object.is": {
|
|
1713
1716
|
"android": "4.1",
|
|
@@ -3202,7 +3205,8 @@
|
|
|
3202
3205
|
"node": "17.0",
|
|
3203
3206
|
"opera": "81",
|
|
3204
3207
|
"opera_mobile": "67",
|
|
3205
|
-
"safari": "14.1"
|
|
3208
|
+
"safari": "14.1",
|
|
3209
|
+
"samsung": "17.0"
|
|
3206
3210
|
},
|
|
3207
3211
|
"es.typed-array.slice": {
|
|
3208
3212
|
"android": "45",
|
|
@@ -3374,7 +3378,9 @@
|
|
|
3374
3378
|
"edge": "97",
|
|
3375
3379
|
"electron": "17.0",
|
|
3376
3380
|
"ios": "15.4",
|
|
3381
|
+
"node": "18.0",
|
|
3377
3382
|
"opera": "83",
|
|
3383
|
+
"opera_mobile": "68",
|
|
3378
3384
|
"safari": "15.4"
|
|
3379
3385
|
},
|
|
3380
3386
|
"esnext.array.find-last-index": {
|
|
@@ -3384,7 +3390,9 @@
|
|
|
3384
3390
|
"edge": "97",
|
|
3385
3391
|
"electron": "17.0",
|
|
3386
3392
|
"ios": "15.4",
|
|
3393
|
+
"node": "18.0",
|
|
3387
3394
|
"opera": "83",
|
|
3395
|
+
"opera_mobile": "68",
|
|
3388
3396
|
"safari": "15.4"
|
|
3389
3397
|
},
|
|
3390
3398
|
"esnext.array.group-by": {},
|
|
@@ -3493,7 +3501,8 @@
|
|
|
3493
3501
|
"node": "16.9",
|
|
3494
3502
|
"opera": "79",
|
|
3495
3503
|
"opera_mobile": "66",
|
|
3496
|
-
"safari": "15.4"
|
|
3504
|
+
"safari": "15.4",
|
|
3505
|
+
"samsung": "17.0"
|
|
3497
3506
|
},
|
|
3498
3507
|
"esnext.object.iterate-entries": {},
|
|
3499
3508
|
"esnext.object.iterate-keys": {},
|
|
@@ -3617,7 +3626,9 @@
|
|
|
3617
3626
|
"edge": "97",
|
|
3618
3627
|
"electron": "17.0",
|
|
3619
3628
|
"ios": "15.4",
|
|
3629
|
+
"node": "18.0",
|
|
3620
3630
|
"opera": "83",
|
|
3631
|
+
"opera_mobile": "68",
|
|
3621
3632
|
"safari": "15.4"
|
|
3622
3633
|
},
|
|
3623
3634
|
"esnext.typed-array.find-last-index": {
|
|
@@ -3627,7 +3638,9 @@
|
|
|
3627
3638
|
"edge": "97",
|
|
3628
3639
|
"electron": "17.0",
|
|
3629
3640
|
"ios": "15.4",
|
|
3641
|
+
"node": "18.0",
|
|
3630
3642
|
"opera": "83",
|
|
3643
|
+
"opera_mobile": "68",
|
|
3631
3644
|
"safari": "15.4"
|
|
3632
3645
|
},
|
|
3633
3646
|
"esnext.typed-array.group-by": {},
|
|
@@ -3649,11 +3662,11 @@
|
|
|
3649
3662
|
"android": "37",
|
|
3650
3663
|
"chrome": "34",
|
|
3651
3664
|
"deno": "1.0",
|
|
3652
|
-
"edge": "
|
|
3665
|
+
"edge": "16",
|
|
3653
3666
|
"electron": "0.20",
|
|
3654
3667
|
"firefox": "27",
|
|
3655
3668
|
"ios": "10.3",
|
|
3656
|
-
"node": "
|
|
3669
|
+
"node": "18.0",
|
|
3657
3670
|
"opera": "10.5",
|
|
3658
3671
|
"opera_mobile": "10.5",
|
|
3659
3672
|
"safari": "10.1",
|
|
@@ -3663,10 +3676,9 @@
|
|
|
3663
3676
|
"android": "3.0",
|
|
3664
3677
|
"chrome": "4",
|
|
3665
3678
|
"deno": "1.0",
|
|
3666
|
-
"edge": "
|
|
3679
|
+
"edge": "16",
|
|
3667
3680
|
"electron": "0.20",
|
|
3668
|
-
"firefox": "
|
|
3669
|
-
"ie": "10",
|
|
3681
|
+
"firefox": "27",
|
|
3670
3682
|
"ios": "1.0",
|
|
3671
3683
|
"node": "17.5",
|
|
3672
3684
|
"opera": "10.5",
|
|
@@ -3720,7 +3732,7 @@
|
|
|
3720
3732
|
"samsung": "5.0"
|
|
3721
3733
|
},
|
|
3722
3734
|
"web.dom-exception.stack": {
|
|
3723
|
-
"deno": "1.
|
|
3735
|
+
"deno": "1.15",
|
|
3724
3736
|
"firefox": "37",
|
|
3725
3737
|
"node": "17.0"
|
|
3726
3738
|
},
|