1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = getBabelTargets;
|
7 |
|
8 | var _browserslist = _interopRequireDefault(require("browserslist"));
|
9 |
|
10 | var _semver = _interopRequireDefault(require("semver"));
|
11 |
|
12 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13 |
|
14 | const BROWSER_CONTEXT = new Set(['browser', 'web-worker', 'service-worker']);
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 | async function getBabelTargets(config) {
|
28 | let targets = {};
|
29 | let compileTarget = BROWSER_CONTEXT.has(config.env.context) ? 'browsers' : config.env.context;
|
30 | let pkg = await config.getPackage();
|
31 | let packageEngines = pkg === null || pkg === void 0 ? void 0 : pkg.engines;
|
32 |
|
33 | if (compileTarget === 'node') {
|
34 | let nodeVersion = packageEngines === null || packageEngines === void 0 ? void 0 : packageEngines.node;
|
35 |
|
36 | if (typeof nodeVersion === 'string') {
|
37 | try {
|
38 | targets.node = getMinSemver(nodeVersion);
|
39 | } catch (e) {
|
40 | throw new Error("Expected 'node' engine to be a valid Semver Range");
|
41 | }
|
42 | }
|
43 | } else {
|
44 | let browsers;
|
45 |
|
46 | if (packageEngines && (typeof packageEngines.browsers === 'string' || Array.isArray(packageEngines.browsers))) {
|
47 | browsers = packageEngines.browsers;
|
48 | } else if (pkg && pkg.browserslist) {
|
49 | browsers = pkg.browserslist;
|
50 | } else {
|
51 | let browserslist = await loadBrowserslist(config);
|
52 |
|
53 | if (browserslist) {
|
54 | browsers = browserslist;
|
55 | }
|
56 | }
|
57 |
|
58 |
|
59 | if (typeof browsers === 'object' && browsers != null && !Array.isArray(browsers)) {
|
60 | let env = process.env.NODE_ENV || 'development';
|
61 | browsers = browsers[env] || browsers.defaults;
|
62 | }
|
63 |
|
64 | if (browsers) {
|
65 | targets.browsers = (0, _browserslist.default)(browsers).sort();
|
66 | }
|
67 | }
|
68 |
|
69 |
|
70 | if (Object.keys(targets).length === 0) {
|
71 | return null;
|
72 | }
|
73 |
|
74 | return targets;
|
75 | }
|
76 |
|
77 | async function loadBrowserslist(config) {
|
78 | let browserslistConfig = await config.getConfig(['browserslist', '.browserslistrc'], {
|
79 | parse: false
|
80 | });
|
81 |
|
82 | if (browserslistConfig) {
|
83 | return _browserslist.default.parseConfig(browserslistConfig);
|
84 | }
|
85 | }
|
86 |
|
87 |
|
88 |
|
89 | function getMinSemver(version) {
|
90 | let range = new _semver.default.Range(version);
|
91 | let sorted = range.set.sort((a, b) => a[0].semver.compare(b[0].semver));
|
92 | return sorted[0][0].semver.version;
|
93 | } |
\ | No newline at end of file |