Software zum Installieren eines Smart-Mirror Frameworks , zum Nutzen von hochschulrelevanten Informationen, auf einem Raspberry-Pi.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

filter-items.js 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.targetsSupported = targetsSupported;
  6. exports.isRequired = isRequired;
  7. exports.default = filterItems;
  8. var _semver = require("semver");
  9. var _plugins = require("@babel/compat-data/plugins");
  10. var _utils = require("./utils");
  11. function targetsSupported(target, support) {
  12. const targetEnvironments = Object.keys(target);
  13. if (targetEnvironments.length === 0) {
  14. return false;
  15. }
  16. const unsupportedEnvironments = targetEnvironments.filter(environment => {
  17. const lowestImplementedVersion = (0, _utils.getLowestImplementedVersion)(support, environment);
  18. if (!lowestImplementedVersion) {
  19. return true;
  20. }
  21. const lowestTargetedVersion = target[environment];
  22. if ((0, _utils.isUnreleasedVersion)(lowestTargetedVersion, environment)) {
  23. return false;
  24. }
  25. if ((0, _utils.isUnreleasedVersion)(lowestImplementedVersion, environment)) {
  26. return true;
  27. }
  28. if (!_semver.valid(lowestTargetedVersion.toString())) {
  29. throw new Error(`Invalid version passed for target "${environment}": "${lowestTargetedVersion}". ` + "Versions must be in semver format (major.minor.patch)");
  30. }
  31. return _semver.gt((0, _utils.semverify)(lowestImplementedVersion), lowestTargetedVersion.toString());
  32. });
  33. return unsupportedEnvironments.length === 0;
  34. }
  35. function isRequired(name, targets, {
  36. compatData = _plugins,
  37. includes,
  38. excludes
  39. } = {}) {
  40. if (excludes != null && excludes.has(name)) return false;
  41. if (includes != null && includes.has(name)) return true;
  42. return !targetsSupported(targets, compatData[name]);
  43. }
  44. function filterItems(list, includes, excludes, targets, defaultIncludes, defaultExcludes, pluginSyntaxMap) {
  45. const result = new Set();
  46. const options = {
  47. compatData: list,
  48. includes,
  49. excludes
  50. };
  51. for (const item in list) {
  52. if (isRequired(item, targets, options)) {
  53. result.add(item);
  54. } else if (pluginSyntaxMap) {
  55. const shippedProposalsSyntax = pluginSyntaxMap.get(item);
  56. if (shippedProposalsSyntax) {
  57. result.add(shippedProposalsSyntax);
  58. }
  59. }
  60. }
  61. if (defaultIncludes) {
  62. defaultIncludes.forEach(item => !excludes.has(item) && result.add(item));
  63. }
  64. if (defaultExcludes) {
  65. defaultExcludes.forEach(item => !includes.has(item) && result.delete(item));
  66. }
  67. return result;
  68. }