core-js-compat 3.20.3 → 3.22.0

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 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, // array of required modules
8
- targets, // object with targets for each module
9
- } = require('core-js-compat')({
10
- targets: '> 2.5%', // browserslist query or object of minimum environment versions to support
11
- filter: /^(es|web)\./, // optional filter - string-prefix, regexp or list of modules
12
- version: '3.20', // used `core-js` version, by default - the latest
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.symbol.match-all': { ios: '12.2-12.4' },
19
- 'es.array.unscopables.flat': { ios: '12.2-12.4' },
20
- 'es.array.unscopables.flat-map': { ios: '12.2-12.4' },
21
- 'es.math.hypot': { chrome: '77' },
22
- 'es.promise.all-settled': { firefox: '69', ios: '12.2-12.4' },
23
- 'es.promise.finally': { ios: '12.2-12.4' },
24
- 'es.string.match-all': { chrome: '77', firefox: '69', ios: '12.2-12.4' },
25
- 'es.string.replace': { firefox: '69', ios: '12.2-12.4' },
26
- 'es.typed-array.float32-array': { ios: '12.2-12.4' },
27
- 'es.typed-array.float64-array': { ios: '12.2-12.4' },
28
- 'es.typed-array.int8-array': { ios: '12.2-12.4' },
29
- 'es.typed-array.int16-array': { ios: '12.2-12.4' },
30
- 'es.typed-array.int32-array': { ios: '12.2-12.4' },
31
- 'es.typed-array.uint8-array': { ios: '12.2-12.4' },
32
- 'es.typed-array.uint8-clamped-array': { ios: '12.2-12.4' },
33
- 'es.typed-array.uint16-array': { ios: '12.2-12.4' },
34
- 'es.typed-array.uint32-array': { ios: '12.2-12.4' },
35
- 'es.typed-array.from': { ios: '12.2-12.4' },
36
- 'es.typed-array.of': { ios: '12.2-12.4' },
37
- 'web.dom-collections.iterator': { ios: '12.2-12.4' },
38
- 'web.immediate': { chrome: '77', firefox: '69', ios: '12.2-12.4' },
39
- 'web.url': { ios: '12.2-12.4' },
40
- 'web.url.to-json': { ios: '12.2-12.4' },
41
- 'web.url-search-params': { ios: '12.2-12.4' }
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, filter, version }); // => { list: Array<ModuleName>, targets: { [ModuleName]: { [EngineName]: EngineVersion } } }
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, filter, version }); // => { list: Array<ModuleName>, targets: { [ModuleName]: { [EngineName]: EngineVersion } } }
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.20'); // => Array<ModuleName>
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.20'); // => Array<ModuleName>
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 modules = require('./modules');
6
+ const allModules = require('./modules');
6
7
  const targetsParser = require('./targets-parser');
7
8
 
8
- function checkModule(name, targets) {
9
- if (!has(data, name)) throw new TypeError(`Incorrect module: ${ name }`);
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
- const requirements = data[name];
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: false,
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 ({ targets, filter, version }) {
28
- const parsedTargets = targetsParser(targets);
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
- let $modules = Array.isArray(filter) ? filter : modules;
58
+ exclude = normalizeModules(exclude);
36
59
 
37
- if (filter instanceof RegExp) {
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 (version) {
44
- $modules = intersection($modules, getModulesListForTargetVersion(version));
45
- }
62
+ if (exclude.size) modules = modules.filter(it => !exclude.has(it));
46
63
 
47
- for (const key of $modules) {
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
@@ -230,7 +230,9 @@
230
230
  "ios": "15.0",
231
231
  "node": "16.11",
232
232
  "opera": "80",
233
- "safari": "15.0"
233
+ "opera_mobile": "66",
234
+ "safari": "15.0",
235
+ "samsung": "17.0"
234
236
  },
235
237
  "es.error.to-string": {
236
238
  "android": "4.4.3",
@@ -244,6 +246,7 @@
244
246
  "node": "0.11.13",
245
247
  "opera": "20",
246
248
  "opera_mobile": "20",
249
+ "rhino": "1.7.14",
247
250
  "safari": "8.0",
248
251
  "samsung": "2.0"
249
252
  },
@@ -271,7 +274,9 @@
271
274
  "ios": "15.0",
272
275
  "node": "16.11",
273
276
  "opera": "80",
274
- "safari": "15.0"
277
+ "opera_mobile": "66",
278
+ "safari": "15.0",
279
+ "samsung": "17.0"
275
280
  },
276
281
  "es.array.at": {
277
282
  "android": "92",
@@ -280,6 +285,7 @@
280
285
  "edge": "92",
281
286
  "electron": "14.0",
282
287
  "firefox": "90",
288
+ "ios": "15.4",
283
289
  "node": "16.6",
284
290
  "opera": "78",
285
291
  "opera_mobile": "65",
@@ -740,6 +746,7 @@
740
746
  "node": "0.11.9",
741
747
  "opera": "19",
742
748
  "opera_mobile": "19",
749
+ "rhino": "1.7.14",
743
750
  "safari": "7.1",
744
751
  "samsung": "2.0"
745
752
  },
@@ -981,6 +988,7 @@
981
988
  "node": "12.0",
982
989
  "opera": "58",
983
990
  "opera_mobile": "50",
991
+ "rhino": "1.7.14",
984
992
  "safari": "12.1",
985
993
  "samsung": "10.0"
986
994
  },
@@ -1321,6 +1329,7 @@
1321
1329
  "node": "0.11.13",
1322
1330
  "opera": "21",
1323
1331
  "opera_mobile": "21",
1332
+ "rhino": "1.7.14",
1324
1333
  "safari": "9.0",
1325
1334
  "samsung": "2.0"
1326
1335
  },
@@ -1425,6 +1434,7 @@
1425
1434
  "node": "0.11.13",
1426
1435
  "opera": "22",
1427
1436
  "opera_mobile": "22",
1437
+ "rhino": "1.7.14",
1428
1438
  "safari": "11.0",
1429
1439
  "samsung": "3.0"
1430
1440
  },
@@ -1439,6 +1449,7 @@
1439
1449
  "node": "0.11.13",
1440
1450
  "opera": "22",
1441
1451
  "opera_mobile": "22",
1452
+ "rhino": "1.7.14",
1442
1453
  "safari": "9.0",
1443
1454
  "samsung": "3.0"
1444
1455
  },
@@ -1453,6 +1464,7 @@
1453
1464
  "node": "6.5",
1454
1465
  "opera": "38",
1455
1466
  "opera_mobile": "38",
1467
+ "rhino": "1.7.14",
1456
1468
  "safari": "11",
1457
1469
  "samsung": "5.0"
1458
1470
  },
@@ -1593,6 +1605,7 @@
1593
1605
  "node": "7.0",
1594
1606
  "opera": "41",
1595
1607
  "opera_mobile": "41",
1608
+ "rhino": "1.7.14",
1596
1609
  "safari": "10.1",
1597
1610
  "samsung": "6.0"
1598
1611
  },
@@ -1622,6 +1635,7 @@
1622
1635
  "node": "12.0",
1623
1636
  "opera": "60",
1624
1637
  "opera_mobile": "52",
1638
+ "rhino": "1.7.14",
1625
1639
  "safari": "12.1",
1626
1640
  "samsung": "11.0"
1627
1641
  },
@@ -1691,9 +1705,12 @@
1691
1705
  "edge": "93",
1692
1706
  "electron": "14.0",
1693
1707
  "firefox": "92",
1708
+ "ios": "15.4",
1694
1709
  "node": "16.9",
1695
1710
  "opera": "79",
1696
- "safari": "15.4"
1711
+ "opera_mobile": "66",
1712
+ "safari": "15.4",
1713
+ "samsung": "17.0"
1697
1714
  },
1698
1715
  "es.object.is": {
1699
1716
  "android": "4.1",
@@ -1871,6 +1888,7 @@
1871
1888
  "node": "7.0",
1872
1889
  "opera": "41",
1873
1890
  "opera_mobile": "41",
1891
+ "rhino": "1.7.14",
1874
1892
  "safari": "10.1",
1875
1893
  "samsung": "6.0"
1876
1894
  },
@@ -2278,6 +2296,7 @@
2278
2296
  "edge": "92",
2279
2297
  "electron": "14.0",
2280
2298
  "firefox": "90",
2299
+ "ios": "15.4",
2281
2300
  "node": "16.6",
2282
2301
  "opera": "78",
2283
2302
  "opera_mobile": "65",
@@ -2426,6 +2445,7 @@
2426
2445
  "node": "1.0",
2427
2446
  "opera": "28",
2428
2447
  "opera_mobile": "28",
2448
+ "rhino": "1.7.14",
2429
2449
  "safari": "9.0",
2430
2450
  "samsung": "3.4"
2431
2451
  },
@@ -2586,6 +2606,7 @@
2586
2606
  "opera": "15",
2587
2607
  "opera_mobile": "15",
2588
2608
  "phantom": "2.0",
2609
+ "rhino": "1.7.14",
2589
2610
  "safari": "6.0",
2590
2611
  "samsung": "1.0"
2591
2612
  },
@@ -2665,6 +2686,7 @@
2665
2686
  "opera": "15",
2666
2687
  "opera_mobile": "15",
2667
2688
  "phantom": "2.0",
2689
+ "rhino": "1.7.14",
2668
2690
  "safari": "6.0",
2669
2691
  "samsung": "1.0"
2670
2692
  },
@@ -2680,6 +2702,7 @@
2680
2702
  "opera": "15",
2681
2703
  "opera_mobile": "15",
2682
2704
  "phantom": "2.0",
2705
+ "rhino": "1.7.14",
2683
2706
  "safari": "6.0",
2684
2707
  "samsung": "1.0"
2685
2708
  },
@@ -2711,6 +2734,7 @@
2711
2734
  "opera": "15",
2712
2735
  "opera_mobile": "15",
2713
2736
  "phantom": "2.0",
2737
+ "rhino": "1.7.14",
2714
2738
  "safari": "6.0",
2715
2739
  "samsung": "1.0"
2716
2740
  },
@@ -2911,6 +2935,7 @@
2911
2935
  "edge": "92",
2912
2936
  "electron": "14.0",
2913
2937
  "firefox": "90",
2938
+ "ios": "15.4",
2914
2939
  "node": "16.6",
2915
2940
  "opera": "78",
2916
2941
  "opera_mobile": "65",
@@ -3179,7 +3204,9 @@
3179
3204
  "ios": "14.5",
3180
3205
  "node": "17.0",
3181
3206
  "opera": "81",
3182
- "safari": "14.1"
3207
+ "opera_mobile": "67",
3208
+ "safari": "14.1",
3209
+ "samsung": "17.0"
3183
3210
  },
3184
3211
  "es.typed-array.slice": {
3185
3212
  "android": "45",
@@ -3234,6 +3261,7 @@
3234
3261
  "node": "0.11.0",
3235
3262
  "opera": "16",
3236
3263
  "opera_mobile": "16",
3264
+ "rhino": "1.7.14",
3237
3265
  "safari": "7.1",
3238
3266
  "samsung": "1.5"
3239
3267
  },
@@ -3334,6 +3362,7 @@
3334
3362
  "edge": "92",
3335
3363
  "electron": "14.0",
3336
3364
  "firefox": "90",
3365
+ "ios": "15.4",
3337
3366
  "node": "16.6",
3338
3367
  "opera": "78",
3339
3368
  "opera_mobile": "65",
@@ -3348,7 +3377,9 @@
3348
3377
  "deno": "1.16",
3349
3378
  "edge": "97",
3350
3379
  "electron": "17.0",
3380
+ "ios": "15.4",
3351
3381
  "opera": "83",
3382
+ "opera_mobile": "68",
3352
3383
  "safari": "15.4"
3353
3384
  },
3354
3385
  "esnext.array.find-last-index": {
@@ -3357,7 +3388,9 @@
3357
3388
  "deno": "1.16",
3358
3389
  "edge": "97",
3359
3390
  "electron": "17.0",
3391
+ "ios": "15.4",
3360
3392
  "opera": "83",
3393
+ "opera_mobile": "68",
3361
3394
  "safari": "15.4"
3362
3395
  },
3363
3396
  "esnext.array.group-by": {},
@@ -3401,6 +3434,7 @@
3401
3434
  "node": "12.0",
3402
3435
  "opera": "58",
3403
3436
  "opera_mobile": "50",
3437
+ "rhino": "1.7.14",
3404
3438
  "safari": "12.1",
3405
3439
  "samsung": "10.0"
3406
3440
  },
@@ -3461,9 +3495,12 @@
3461
3495
  "edge": "93",
3462
3496
  "electron": "14.0",
3463
3497
  "firefox": "92",
3498
+ "ios": "15.4",
3464
3499
  "node": "16.9",
3465
3500
  "opera": "79",
3466
- "safari": "15.4"
3501
+ "opera_mobile": "66",
3502
+ "safari": "15.4",
3503
+ "samsung": "17.0"
3467
3504
  },
3468
3505
  "esnext.object.iterate-entries": {},
3469
3506
  "esnext.object.iterate-keys": {},
@@ -3571,6 +3608,7 @@
3571
3608
  "edge": "92",
3572
3609
  "electron": "14.0",
3573
3610
  "firefox": "90",
3611
+ "ios": "15.4",
3574
3612
  "node": "16.6",
3575
3613
  "opera": "78",
3576
3614
  "opera_mobile": "65",
@@ -3585,7 +3623,9 @@
3585
3623
  "deno": "1.16",
3586
3624
  "edge": "97",
3587
3625
  "electron": "17.0",
3626
+ "ios": "15.4",
3588
3627
  "opera": "83",
3628
+ "opera_mobile": "68",
3589
3629
  "safari": "15.4"
3590
3630
  },
3591
3631
  "esnext.typed-array.find-last-index": {
@@ -3594,7 +3634,9 @@
3594
3634
  "deno": "1.16",
3595
3635
  "edge": "97",
3596
3636
  "electron": "17.0",
3637
+ "ios": "15.4",
3597
3638
  "opera": "83",
3639
+ "opera_mobile": "68",
3598
3640
  "safari": "15.4"
3599
3641
  },
3600
3642
  "esnext.typed-array.group-by": {},
@@ -3612,6 +3654,34 @@
3612
3654
  "esnext.weak-set.delete-all": {},
3613
3655
  "esnext.weak-set.from": {},
3614
3656
  "esnext.weak-set.of": {},
3657
+ "web.atob": {
3658
+ "android": "37",
3659
+ "chrome": "34",
3660
+ "deno": "1.0",
3661
+ "edge": "16",
3662
+ "electron": "0.20",
3663
+ "firefox": "27",
3664
+ "ios": "10.3",
3665
+ "opera": "10.5",
3666
+ "opera_mobile": "10.5",
3667
+ "safari": "10.1",
3668
+ "samsung": "2.0"
3669
+ },
3670
+ "web.btoa": {
3671
+ "android": "3.0",
3672
+ "chrome": "4",
3673
+ "deno": "1.0",
3674
+ "edge": "16",
3675
+ "electron": "0.20",
3676
+ "firefox": "27",
3677
+ "ios": "1.0",
3678
+ "node": "17.5",
3679
+ "opera": "10.5",
3680
+ "opera_mobile": "10.5",
3681
+ "phantom": "1.9",
3682
+ "safari": "3.0",
3683
+ "samsung": "1.0"
3684
+ },
3615
3685
  "web.dom-collections.for-each": {
3616
3686
  "android": "58",
3617
3687
  "chrome": "58",
@@ -3657,7 +3727,7 @@
3657
3727
  "samsung": "5.0"
3658
3728
  },
3659
3729
  "web.dom-exception.stack": {
3660
- "deno": "1.7",
3730
+ "deno": "1.15",
3661
3731
  "firefox": "37",
3662
3732
  "node": "17.0"
3663
3733
  },