123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- "use strict";
- exports.__esModule = true;
- var _browserslist = require("browserslist");
- var _browserslist2 = _interopRequireDefault(_browserslist);
- var _semver = require("semver");
- var _semver2 = _interopRequireDefault(_semver);
- var _utils = require("./utils");
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- var browserNameMap = {
- android: "android",
- chrome: "chrome",
- and_chr: "chrome",
- edge: "edge",
- firefox: "firefox",
- ie: "ie",
- ios_saf: "ios",
- safari: "safari"
- };
- var isBrowsersQueryValid = function isBrowsersQueryValid(browsers) {
- return typeof browsers === "string" || Array.isArray(browsers);
- };
- var semverMin = function semverMin(first, second) {
- return first && _semver2.default.lt(first, second) ? first : second;
- };
- var getLowestVersions = function getLowestVersions(browsers) {
- return browsers.reduce(function (all, browser) {
- var _browser$split = browser.split(" "),
- browserName = _browser$split[0],
- browserVersion = _browser$split[1];
- var normalizedBrowserName = browserNameMap[browserName];
- if (!normalizedBrowserName) {
- return all;
- }
- try {
- // Browser version can return as "10.0-10.2"
- var splitVersion = browserVersion.split("-")[0];
- var parsedBrowserVersion = (0, _utils.semverify)(splitVersion);
- all[normalizedBrowserName] = semverMin(all[normalizedBrowserName], parsedBrowserVersion);
- } catch (e) {}
- return all;
- }, {});
- };
- var outputDecimalWarning = function outputDecimalWarning(decimalTargets) {
- if (!decimalTargets || !decimalTargets.length) {
- return;
- }
- console.log("Warning, the following targets are using a decimal version:");
- console.log("");
- decimalTargets.forEach(function (_ref) {
- var target = _ref.target,
- value = _ref.value;
- return console.log(" " + target + ": " + value);
- });
- console.log("");
- console.log("We recommend using a string for minor/patch versions to avoid numbers like 6.10");
- console.log("getting parsed as 6.1, which can lead to unexpected behavior.");
- console.log("");
- };
- var targetParserMap = {
- __default: function __default(target, value) {
- return [target, (0, _utils.semverify)(value)];
- },
- // Parse `node: true` and `node: "current"` to version
- node: function node(target, value) {
- var parsed = value === true || value === "current" ? process.versions.node : (0, _utils.semverify)(value);
- return [target, parsed];
- },
- // Only valid value for Uglify is `true`
- uglify: function uglify(target, value) {
- return [target, value === true];
- }
- };
- var getTargets = function getTargets() {
- var targets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var targetOpts = {};
- // Parse browsers target via browserslist
- if (isBrowsersQueryValid(targets.browsers)) {
- targetOpts = getLowestVersions((0, _browserslist2.default)(targets.browsers));
- }
- // Parse remaining targets
- var parsed = Object.keys(targets).reduce(function (results, target) {
- if (target !== "browsers") {
- var value = targets[target];
- // Warn when specifying minor/patch as a decimal
- if (typeof value === "number" && value % 1 !== 0) {
- results.decimalWarnings.push({ target: target, value: value });
- }
- // Check if we have a target parser?
- var parser = targetParserMap[target] || targetParserMap.__default;
- var _parser = parser(target, value),
- parsedTarget = _parser[0],
- parsedValue = _parser[1];
- if (parsedValue) {
- results.targets[parsedTarget] = parsedValue;
- }
- }
- return results;
- }, {
- targets: targetOpts,
- decimalWarnings: []
- });
- outputDecimalWarning(parsed.decimalWarnings);
- return parsed.targets;
- };
- exports.default = getTargets;
|