| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.isPluginRequired = isPluginRequired; |
| exports.default = _default; |
| |
| function _semver() { |
| const data = _interopRequireDefault(require("semver")); |
| |
| _semver = function () { |
| return data; |
| }; |
| |
| return data; |
| } |
| |
| var _utils = require("./utils"); |
| |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
| |
| function isPluginRequired(supportedEnvironments, plugin) { |
| const targetEnvironments = Object.keys(supportedEnvironments); |
| |
| if (targetEnvironments.length === 0) { |
| return true; |
| } |
| |
| const isRequiredForEnvironments = targetEnvironments.filter(environment => { |
| if (!plugin[environment]) { |
| return true; |
| } |
| |
| const lowestImplementedVersion = plugin[environment]; |
| const lowestTargetedVersion = supportedEnvironments[environment]; |
| |
| if ((0, _utils.isUnreleasedVersion)(lowestTargetedVersion, environment)) { |
| return false; |
| } |
| |
| if ((0, _utils.isUnreleasedVersion)(lowestImplementedVersion, environment)) { |
| return true; |
| } |
| |
| if (!_semver().default.valid(lowestTargetedVersion.toString())) { |
| throw new Error(`Invalid version passed for target "${environment}": "${lowestTargetedVersion}". ` + "Versions must be in semver format (major.minor.patch)"); |
| } |
| |
| return _semver().default.gt((0, _utils.semverify)(lowestImplementedVersion), lowestTargetedVersion.toString()); |
| }); |
| return isRequiredForEnvironments.length > 0; |
| } |
| |
| function _default(list, includes, excludes, targets, defaultIncludes, defaultExcludes, pluginSyntaxMap) { |
| const result = new Set(); |
| |
| for (const item in list) { |
| if (!excludes.has(item) && (isPluginRequired(targets, list[item]) || includes.has(item))) { |
| result.add(item); |
| } else if (pluginSyntaxMap) { |
| const shippedProposalsSyntax = pluginSyntaxMap.get(item); |
| |
| if (shippedProposalsSyntax) { |
| result.add(shippedProposalsSyntax); |
| } |
| } |
| } |
| |
| if (defaultIncludes) { |
| defaultIncludes.forEach(item => !excludes.has(item) && result.add(item)); |
| } |
| |
| if (defaultExcludes) { |
| defaultExcludes.forEach(item => !includes.has(item) && result.delete(item)); |
| } |
| |
| return result; |
| } |