| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 | | 'use strict'; |  | const browserslist = require('browserslist'); |  | const { compare, has } = require('./helpers'); |  | const external = require('./external'); |  |   |  | const aliases = new Map([ |  |   ['and_chr', 'chrome-android'], |  |   ['and_ff', 'firefox-android'], |  |   ['ie_mob', 'ie'], |  |   ['ios_saf', 'ios'], |  |   ['oculus', 'quest'], |  |   ['op_mob', 'opera-android'], |  |   // TODO: Remove from `core-js@4` |  |   ['opera_mobile', 'opera-android'], |  |   ['react', 'react-native'], |  |   ['reactnative', 'react-native'], |  | ]); |  |   |  | const validTargets = new Set([ |  |   'android', |  |   'bun', |  |   'chrome', |  |   'chrome-android', |  |   'deno', |  |   'edge', |  |   'electron', |  |   'firefox', |  |   'firefox-android', |  |   'hermes', |  |   'ie', |  |   'ios', |  |   'node', |  |   'opera', |  |   'opera-android', |  |   'phantom', |  |   'quest', |  |   'react-native', |  |   'rhino', |  |   'safari', |  |   'samsung', |  | ]); |  |   |  | const toLowerKeys = function (object) { |  |   return Object.entries(object).reduce((accumulator, [key, value]) => { |  |     accumulator[key.toLowerCase()] = value; |  |     return accumulator; |  |   }, {}); |  | }; |  |   |  | module.exports = function (targets) { |  |   const { browsers, esmodules, node, ...rest } = (typeof targets != 'object' || Array.isArray(targets)) |  |     ? { browsers: targets } : toLowerKeys(targets); |  |   |  |   const list = Object.entries(rest); |  |   |  |   if (browsers) { |  |     if (typeof browsers == 'string' || Array.isArray(browsers)) { |  |       list.push(...browserslist(browsers).map(it => it.split(' '))); |  |     } else { |  |       list.push(...Object.entries(browsers)); |  |     } |  |   } |  |   if (esmodules) { |  |     list.push(...Object.entries(external.modules)); |  |   } |  |   if (node) { |  |     list.push(['node', node === 'current' ? process.versions.node : node]); |  |   } |  |   |  |   const normalized = list.map(([engine, version]) => { |  |     if (has(browserslist.aliases, engine)) { |  |       engine = browserslist.aliases[engine]; |  |     } |  |     if (aliases.has(engine)) { |  |       engine = aliases.get(engine); |  |     } |  |     return [engine, String(version)]; |  |   }).filter(([engine]) => { |  |     return validTargets.has(engine); |  |   }).sort(([a], [b]) => { |  |     return a < b ? -1 : a > b ? 1 : 0; |  |   }); |  |   |  |   const reducedByMinVersion = new Map(); |  |   for (const [engine, version] of normalized) { |  |     if (!reducedByMinVersion.has(engine) || compare(version, '<=', reducedByMinVersion.get(engine))) { |  |       reducedByMinVersion.set(engine, version); |  |     } |  |   } |  |   |  |   return reducedByMinVersion; |  | }; | 
 |