UNPKG

8.29 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = DetermineTargetsFromConfig;
7exports.Versioning = Versioning;
8
9var _browserslist = _interopRequireDefault(require("browserslist"));
10
11function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
13/**
14 * Determine the targets based on the browserslist config object
15 *
16 * @param configPath - The file or a directory path to look for the browserslist config file
17 */
18function DetermineTargetsFromConfig(configPath, config) {
19 const browserslistOpts = {
20 path: configPath
21 };
22
23 if (Array.isArray(config) || typeof config === 'string') {
24 return (0, _browserslist.default)(config, browserslistOpts);
25 }
26
27 if (config && typeof config === 'object') {
28 return (0, _browserslist.default)([...(config.production || []), ...(config.development || [])], browserslistOpts);
29 }
30
31 return (0, _browserslist.default)(undefined, browserslistOpts);
32}
33/**
34 * Take a list of targets returned from browserslist api, return the lowest version
35 * version of each target
36 */
37
38
39function Versioning(targetslist) {
40 return targetslist // Sort the targets by target name and then version number in ascending order
41 .map(e => {
42 const [target, version] = e.split(' ');
43 return {
44 target,
45 version,
46 parsedVersion: version === 'all' ? 0 : version.includes('-') ? parseFloat(version.split('-')[0]) : parseFloat(version)
47 };
48 }) // Sort the targets by target name and then version number in descending order
49 // ex. [a@3, b@3, a@1] => [a@3, a@1, b@3]
50 .sort((a, b) => {
51 if (b.target === a.target) {
52 // If any version === 'all', return 0. The only version of op_mini is 'all'
53 // Otherwise, compare the versions
54 return typeof b.parsedVersion === 'string' || typeof a.parsedVersion === 'string' ? 0 : b.parsedVersion - a.parsedVersion;
55 }
56
57 return b.target > a.target ? 1 : -1;
58 }) // First last target always has the latest version
59 .filter((e, i, items // Check if the current target is the last of its kind. If it is, then it
60 // is most recent version
61 ) => i + 1 === items.length || e.target !== items[i + 1].target);
62}
63//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9WZXJzaW9uaW5nLmpzIl0sIm5hbWVzIjpbIkRldGVybWluZVRhcmdldHNGcm9tQ29uZmlnIiwiY29uZmlnUGF0aCIsImNvbmZpZyIsImJyb3dzZXJzbGlzdE9wdHMiLCJwYXRoIiwiQXJyYXkiLCJpc0FycmF5IiwicHJvZHVjdGlvbiIsImRldmVsb3BtZW50IiwidW5kZWZpbmVkIiwiVmVyc2lvbmluZyIsInRhcmdldHNsaXN0IiwibWFwIiwiZSIsInRhcmdldCIsInZlcnNpb24iLCJzcGxpdCIsInBhcnNlZFZlcnNpb24iLCJpbmNsdWRlcyIsInBhcnNlRmxvYXQiLCJzb3J0IiwiYSIsImIiLCJmaWx0ZXIiLCJpIiwiaXRlbXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQ0E7Ozs7QUFTQTs7Ozs7QUFLZSxTQUFTQSwwQkFBVCxDQUNiQyxVQURhLEVBRWJDLE1BRmEsRUFHRTtBQUNmLFFBQU1DLGdCQUFnQixHQUFHO0FBQUVDLElBQUFBLElBQUksRUFBRUg7QUFBUixHQUF6Qjs7QUFFQSxNQUFJSSxLQUFLLENBQUNDLE9BQU4sQ0FBY0osTUFBZCxLQUF5QixPQUFPQSxNQUFQLEtBQWtCLFFBQS9DLEVBQXlEO0FBQ3ZELFdBQU8sMkJBQWFBLE1BQWIsRUFBcUJDLGdCQUFyQixDQUFQO0FBQ0Q7O0FBRUQsTUFBSUQsTUFBTSxJQUFJLE9BQU9BLE1BQVAsS0FBa0IsUUFBaEMsRUFBMEM7QUFDeEMsV0FBTywyQkFDTCxDQUFDLElBQUlBLE1BQU0sQ0FBQ0ssVUFBUCxJQUFxQixFQUF6QixDQUFELEVBQStCLElBQUlMLE1BQU0sQ0FBQ00sV0FBUCxJQUFzQixFQUExQixDQUEvQixDQURLLEVBRUxMLGdCQUZLLENBQVA7QUFJRDs7QUFFRCxTQUFPLDJCQUFhTSxTQUFiLEVBQXdCTixnQkFBeEIsQ0FBUDtBQUNEO0FBRUQ7Ozs7OztBQUlPLFNBQVNPLFVBQVQsQ0FBb0JDLFdBQXBCLEVBQXVFO0FBQzVFLFNBQ0VBLFdBQVcsQ0FDVDtBQURTLEdBRVJDLEdBRkgsQ0FHS0MsQ0FBRCxJQUErQjtBQUM3QixVQUFNLENBQUNDLE1BQUQsRUFBU0MsT0FBVCxJQUFvQkYsQ0FBQyxDQUFDRyxLQUFGLENBQVEsR0FBUixDQUExQjtBQUNBLFdBQU87QUFDTEYsTUFBQUEsTUFESztBQUVMQyxNQUFBQSxPQUZLO0FBR0xFLE1BQUFBLGFBQWEsRUFDWEYsT0FBTyxLQUFLLEtBQVosR0FDSSxDQURKLEdBRUlBLE9BQU8sQ0FBQ0csUUFBUixDQUFpQixHQUFqQixJQUNBQyxVQUFVLENBQUNKLE9BQU8sQ0FBQ0MsS0FBUixDQUFjLEdBQWQsRUFBbUIsQ0FBbkIsQ0FBRCxDQURWLEdBRUFHLFVBQVUsQ0FBQ0osT0FBRDtBQVJYLEtBQVA7QUFVRCxHQWZMLEVBaUJFO0FBQ0E7QUFsQkYsR0FtQkdLLElBbkJILENBb0JJLENBQUNDLENBQUQsRUFBb0JDLENBQXBCLEtBQWtEO0FBQ2hELFFBQUlBLENBQUMsQ0FBQ1IsTUFBRixLQUFhTyxDQUFDLENBQUNQLE1BQW5CLEVBQTJCO0FBQ3pCO0FBQ0E7QUFDQSxhQUFPLE9BQU9RLENBQUMsQ0FBQ0wsYUFBVCxLQUEyQixRQUEzQixJQUNMLE9BQU9JLENBQUMsQ0FBQ0osYUFBVCxLQUEyQixRQUR0QixHQUVILENBRkcsR0FHSEssQ0FBQyxDQUFDTCxhQUFGLEdBQWtCSSxDQUFDLENBQUNKLGFBSHhCO0FBSUQ7O0FBQ0QsV0FBT0ssQ0FBQyxDQUFDUixNQUFGLEdBQVdPLENBQUMsQ0FBQ1AsTUFBYixHQUFzQixDQUF0QixHQUEwQixDQUFDLENBQWxDO0FBQ0QsR0E5QkwsRUFnQ0U7QUFoQ0YsR0FpQ0dTLE1BakNILENBa0NJLENBQUNWLENBQUQsRUFBb0JXLENBQXBCLEVBQStCQyxLQUEvQixDQUNFO0FBQ0E7QUFGRixPQUdFRCxDQUFDLEdBQUcsQ0FBSixLQUFVQyxLQUFLLENBQUNDLE1BQWhCLElBQTBCYixDQUFDLENBQUNDLE1BQUYsS0FBYVcsS0FBSyxDQUFDRCxDQUFDLEdBQUcsQ0FBTCxDQUFMLENBQWFWLE1BckMxRCxDQURGO0FBeUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmltcG9ydCBicm93c2Vyc2xpc3QgZnJvbSAnYnJvd3NlcnNsaXN0JztcbmltcG9ydCB0eXBlIHsgQnJvd3Nlckxpc3RDb25maWcgfSBmcm9tICcuL3J1bGVzL2NvbXBhdCc7XG5cbnR5cGUgVGFyZ2V0TGlzdEl0ZW0gPSB7XG4gIHRhcmdldDogc3RyaW5nLFxuICBwYXJzZWRWZXJzaW9uOiBudW1iZXIsXG4gIHZlcnNpb246IHN0cmluZyB8ICdhbGwnXG59O1xuXG4vKipcbiAqIERldGVybWluZSB0aGUgdGFyZ2V0cyBiYXNlZCBvbiB0aGUgYnJvd3NlcnNsaXN0IGNvbmZpZyBvYmplY3RcbiAqXG4gKiBAcGFyYW0gY29uZmlnUGF0aCAtIFRoZSBmaWxlIG9yIGEgZGlyZWN0b3J5IHBhdGggdG8gbG9vayBmb3IgdGhlIGJyb3dzZXJzbGlzdCBjb25maWcgZmlsZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEZXRlcm1pbmVUYXJnZXRzRnJvbUNvbmZpZyhcbiAgY29uZmlnUGF0aDogc3RyaW5nLFxuICBjb25maWc/OiBCcm93c2VyTGlzdENvbmZpZ1xuKTogQXJyYXk8c3RyaW5nPiB7XG4gIGNvbnN0IGJyb3dzZXJzbGlzdE9wdHMgPSB7IHBhdGg6IGNvbmZpZ1BhdGggfTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShjb25maWcpIHx8IHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGJyb3dzZXJzbGlzdChjb25maWcsIGJyb3dzZXJzbGlzdE9wdHMpO1xuICB9XG5cbiAgaWYgKGNvbmZpZyAmJiB0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBicm93c2Vyc2xpc3QoXG4gICAgICBbLi4uKGNvbmZpZy5wcm9kdWN0aW9uIHx8IFtdKSwgLi4uKGNvbmZpZy5kZXZlbG9wbWVudCB8fCBbXSldLFxuICAgICAgYnJvd3NlcnNsaXN0T3B0c1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gYnJvd3NlcnNsaXN0KHVuZGVmaW5lZCwgYnJvd3NlcnNsaXN0T3B0cyk7XG59XG5cbi8qKlxuICogVGFrZSBhIGxpc3Qgb2YgdGFyZ2V0cyByZXR1cm5lZCBmcm9tIGJyb3dzZXJzbGlzdCBhcGksIHJldHVybiB0aGUgbG93ZXN0IHZlcnNpb25cbiAqIHZlcnNpb24gb2YgZWFjaCB0YXJnZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFZlcnNpb25pbmcodGFyZ2V0c2xpc3Q6IEFycmF5PHN0cmluZz4pOiBBcnJheTxUYXJnZXRMaXN0SXRlbT4ge1xuICByZXR1cm4gKFxuICAgIHRhcmdldHNsaXN0XG4gICAgICAvLyBTb3J0IHRoZSB0YXJnZXRzIGJ5IHRhcmdldCBuYW1lIGFuZCB0aGVuIHZlcnNpb24gbnVtYmVyIGluIGFzY2VuZGluZyBvcmRlclxuICAgICAgLm1hcChcbiAgICAgICAgKGU6IHN0cmluZyk6IFRhcmdldExpc3RJdGVtID0+IHtcbiAgICAgICAgICBjb25zdCBbdGFyZ2V0LCB2ZXJzaW9uXSA9IGUuc3BsaXQoJyAnKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICAgIHBhcnNlZFZlcnNpb246XG4gICAgICAgICAgICAgIHZlcnNpb24gPT09ICdhbGwnXG4gICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgOiB2ZXJzaW9uLmluY2x1ZGVzKCctJylcbiAgICAgICAgICAgICAgICA/IHBhcnNlRmxvYXQodmVyc2lvbi5zcGxpdCgnLScpWzBdKVxuICAgICAgICAgICAgICAgIDogcGFyc2VGbG9hdCh2ZXJzaW9uKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC8vIFNvcnQgdGhlIHRhcmdldHMgYnkgdGFyZ2V0IG5hbWUgYW5kIHRoZW4gdmVyc2lvbiBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlclxuICAgICAgLy8gZXguIFthQDMsIGJAMywgYUAxXSA9PiBbYUAzLCBhQDEsIGJAM11cbiAgICAgIC5zb3J0KFxuICAgICAgICAoYTogVGFyZ2V0TGlzdEl0ZW0sIGI6IFRhcmdldExpc3RJdGVtKTogbnVtYmVyID0+IHtcbiAgICAgICAgICBpZiAoYi50YXJnZXQgPT09IGEudGFyZ2V0KSB7XG4gICAgICAgICAgICAvLyBJZiBhbnkgdmVyc2lvbiA9PT0gJ2FsbCcsIHJldHVybiAwLiBUaGUgb25seSB2ZXJzaW9uIG9mIG9wX21pbmkgaXMgJ2FsbCdcbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgY29tcGFyZSB0aGUgdmVyc2lvbnNcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgYi5wYXJzZWRWZXJzaW9uID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgICB0eXBlb2YgYS5wYXJzZWRWZXJzaW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgOiBiLnBhcnNlZFZlcnNpb24gLSBhLnBhcnNlZFZlcnNpb247XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBiLnRhcmdldCA+IGEudGFyZ2V0ID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICApXG4gICAgICAvLyBGaXJzdCBsYXN0IHRhcmdldCBhbHdheXMgaGFzIHRoZSBsYXRlc3QgdmVyc2lvblxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKGU6IFRhcmdldExpc3RJdGVtLCBpOiBudW1iZXIsIGl0ZW1zOiBBcnJheTxUYXJnZXRMaXN0SXRlbT4pOiBib29sZWFuID0+XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdGFyZ2V0IGlzIHRoZSBsYXN0IG9mIGl0cyBraW5kLiBJZiBpdCBpcywgdGhlbiBpdFxuICAgICAgICAgIC8vIGlzIG1vc3QgcmVjZW50IHZlcnNpb25cbiAgICAgICAgICBpICsgMSA9PT0gaXRlbXMubGVuZ3RoIHx8IGUudGFyZ2V0ICE9PSBpdGVtc1tpICsgMV0udGFyZ2V0XG4gICAgICApXG4gICk7XG59XG4iXX0=
\No newline at end of file