|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.targetsSupported = targetsSupported;
- exports.isRequired = isRequired;
- exports.default = filterItems;
-
- var _semver = require("semver");
-
- var _plugins = require("@babel/compat-data/plugins");
-
- var _utils = require("./utils");
-
- function targetsSupported(target, support) {
- const targetEnvironments = Object.keys(target);
-
- if (targetEnvironments.length === 0) {
- return false;
- }
-
- const unsupportedEnvironments = targetEnvironments.filter(environment => {
- const lowestImplementedVersion = (0, _utils.getLowestImplementedVersion)(support, environment);
-
- if (!lowestImplementedVersion) {
- return true;
- }
-
- const lowestTargetedVersion = target[environment];
-
- if ((0, _utils.isUnreleasedVersion)(lowestTargetedVersion, environment)) {
- return false;
- }
-
- if ((0, _utils.isUnreleasedVersion)(lowestImplementedVersion, environment)) {
- return true;
- }
-
- if (!_semver.valid(lowestTargetedVersion.toString())) {
- throw new Error(`Invalid version passed for target "${environment}": "${lowestTargetedVersion}". ` + "Versions must be in semver format (major.minor.patch)");
- }
-
- return _semver.gt((0, _utils.semverify)(lowestImplementedVersion), lowestTargetedVersion.toString());
- });
- return unsupportedEnvironments.length === 0;
- }
-
- function isRequired(name, targets, {
- compatData = _plugins,
- includes,
- excludes
- } = {}) {
- if (excludes != null && excludes.has(name)) return false;
- if (includes != null && includes.has(name)) return true;
- return !targetsSupported(targets, compatData[name]);
- }
-
- function filterItems(list, includes, excludes, targets, defaultIncludes, defaultExcludes, pluginSyntaxMap) {
- const result = new Set();
- const options = {
- compatData: list,
- includes,
- excludes
- };
-
- for (const item in list) {
- if (isRequired(item, targets, options)) {
- 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;
- }
|