File: /var/www/zaklada/html/node_modules/babel-preset-env/lib/targets-parser.js
"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;