UNPKG

2.23 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.isPluginRequired = isPluginRequired;
7exports.default = _default;
8
9function _semver() {
10 const data = _interopRequireDefault(require("semver"));
11
12 _semver = function () {
13 return data;
14 };
15
16 return data;
17}
18
19var _utils = require("./utils");
20
21function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
23function isPluginRequired(supportedEnvironments, plugin) {
24 const targetEnvironments = Object.keys(supportedEnvironments);
25
26 if (targetEnvironments.length === 0) {
27 return true;
28 }
29
30 const isRequiredForEnvironments = targetEnvironments.filter(environment => {
31 if (!plugin[environment]) {
32 return true;
33 }
34
35 const lowestImplementedVersion = plugin[environment];
36 const lowestTargetedVersion = supportedEnvironments[environment];
37
38 if ((0, _utils.isUnreleasedVersion)(lowestTargetedVersion, environment)) {
39 return false;
40 }
41
42 if ((0, _utils.isUnreleasedVersion)(lowestImplementedVersion, environment)) {
43 return true;
44 }
45
46 if (!_semver().default.valid(lowestTargetedVersion.toString())) {
47 throw new Error(`Invalid version passed for target "${environment}": "${lowestTargetedVersion}". ` + "Versions must be in semver format (major.minor.patch)");
48 }
49
50 return _semver().default.gt((0, _utils.semverify)(lowestImplementedVersion), lowestTargetedVersion.toString());
51 });
52 return isRequiredForEnvironments.length > 0;
53}
54
55function _default(list, includes, excludes, targets, defaultIncludes, defaultExcludes, pluginSyntaxMap) {
56 const result = new Set();
57
58 for (const item in list) {
59 if (!excludes.has(item) && (isPluginRequired(targets, list[item]) || includes.has(item))) {
60 result.add(item);
61 } else if (pluginSyntaxMap) {
62 const shippedProposalsSyntax = pluginSyntaxMap.get(item);
63
64 if (shippedProposalsSyntax) {
65 result.add(shippedProposalsSyntax);
66 }
67 }
68 }
69
70 if (defaultIncludes) {
71 defaultIncludes.forEach(item => !excludes.has(item) && result.add(item));
72 }
73
74 if (defaultExcludes) {
75 defaultExcludes.forEach(item => !includes.has(item) && result.delete(item));
76 }
77
78 return result;
79}
\No newline at end of file