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.

index.js 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // @ts-nocheck
  2. 'use strict';
  3. const mediaParser = require('postcss-media-query-parser').default;
  4. const report = require('../../utils/report');
  5. const ruleMessages = require('../../utils/ruleMessages');
  6. const validateOptions = require('../../utils/validateOptions');
  7. const valueParser = require('postcss-value-parser');
  8. const ruleName = 'no-duplicate-at-import-rules';
  9. const messages = ruleMessages(ruleName, {
  10. rejected: (atImport) => `Unexpected duplicate @import rule ${atImport}`,
  11. });
  12. function rule(actual) {
  13. return (root, result) => {
  14. const validOptions = validateOptions(result, ruleName, { actual });
  15. if (!validOptions) {
  16. return;
  17. }
  18. const imports = {};
  19. root.walkAtRules(/^import$/i, (atRule) => {
  20. const params = valueParser(atRule.params).nodes;
  21. if (!params.length) {
  22. return;
  23. }
  24. // extract uri from url() if exists
  25. const uri =
  26. params[0].type === 'function' && params[0].value === 'url'
  27. ? params[0].nodes[0].value
  28. : params[0].value;
  29. // extract media queries if any
  30. const media = mediaParser(valueParser.stringify(params.slice(1)))
  31. .nodes.map((n) => n.value.replace(/\s/g, ''))
  32. .filter((n) => n.length);
  33. const isDuplicate = media.length
  34. ? imports[uri] && media.some((q) => imports[uri].includes(q))
  35. : imports[uri];
  36. if (isDuplicate) {
  37. report({
  38. message: messages.rejected(uri),
  39. node: atRule,
  40. result,
  41. ruleName,
  42. });
  43. return;
  44. }
  45. if (!imports[uri]) imports[uri] = [];
  46. imports[uri] = imports[uri].concat(media);
  47. });
  48. };
  49. }
  50. rule.ruleName = ruleName;
  51. rule.messages = messages;
  52. module.exports = rule;