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.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // @ts-nocheck
  2. 'use strict';
  3. const _ = require('lodash');
  4. const declarationValueIndex = require('../../utils/declarationValueIndex');
  5. const isStandardSyntaxFunction = require('../../utils/isStandardSyntaxFunction');
  6. const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp');
  7. const report = require('../../utils/report');
  8. const ruleMessages = require('../../utils/ruleMessages');
  9. const validateOptions = require('../../utils/validateOptions');
  10. const valueParser = require('postcss-value-parser');
  11. const vendor = require('../../utils/vendor');
  12. const ruleName = 'function-allowed-list';
  13. const messages = ruleMessages(ruleName, {
  14. rejected: (name) => `Unexpected function "${name}"`,
  15. });
  16. function rule(listInput) {
  17. const list = [].concat(listInput);
  18. return (root, result) => {
  19. const validOptions = validateOptions(result, ruleName, {
  20. actual: list,
  21. possible: [_.isString, _.isRegExp],
  22. });
  23. if (!validOptions) {
  24. return;
  25. }
  26. root.walkDecls((decl) => {
  27. const value = decl.value;
  28. valueParser(value).walk((node) => {
  29. if (node.type !== 'function') {
  30. return;
  31. }
  32. if (!isStandardSyntaxFunction(node)) {
  33. return;
  34. }
  35. if (matchesStringOrRegExp(vendor.unprefixed(node.value), list)) {
  36. return;
  37. }
  38. report({
  39. message: messages.rejected(node.value),
  40. node: decl,
  41. index: declarationValueIndex(decl) + node.sourceIndex,
  42. result,
  43. ruleName,
  44. });
  45. });
  46. });
  47. };
  48. }
  49. rule.primaryOptionArray = true;
  50. rule.ruleName = ruleName;
  51. rule.messages = messages;
  52. module.exports = rule;