1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.isPluginRequired = isPluginRequired;
|
7 | exports.default = _default;
|
8 |
|
9 | function _semver() {
|
10 | const data = _interopRequireDefault(require("semver"));
|
11 |
|
12 | _semver = function () {
|
13 | return data;
|
14 | };
|
15 |
|
16 | return data;
|
17 | }
|
18 |
|
19 | var _utils = require("./utils");
|
20 |
|
21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
22 |
|
23 | function 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 |
|
55 | function _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 |