index.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports["default"] = rule;
  6. exports.ruleName = exports.meta = exports.messages = void 0;
  7. var _stylelint = require("stylelint");
  8. var _utils = require("../../utils");
  9. var ruleName = (0, _utils.namespace)("no-duplicate-mixins");
  10. exports.ruleName = ruleName;
  11. var messages = _stylelint.utils.ruleMessages(ruleName, {
  12. rejected: function rejected(mixin) {
  13. return "Unexpected duplicate mixin ".concat(mixin);
  14. }
  15. });
  16. exports.messages = messages;
  17. var meta = {
  18. url: (0, _utils.ruleUrl)(ruleName)
  19. };
  20. exports.meta = meta;
  21. function rule(value) {
  22. return function (root, result) {
  23. var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
  24. actual: value
  25. });
  26. if (!validOptions) {
  27. return;
  28. }
  29. var mixins = {};
  30. root.walkAtRules(function (decl) {
  31. var isMixin = decl.name === "mixin";
  32. if (!isMixin) {
  33. return;
  34. }
  35. var mixinName = (0, _utils.atRuleBaseName)(decl);
  36. if (mixins[mixinName]) {
  37. _stylelint.utils.report({
  38. message: messages.rejected(mixinName),
  39. node: decl,
  40. result: result,
  41. ruleName: ruleName
  42. });
  43. }
  44. mixins[mixinName] = true;
  45. });
  46. };
  47. }
  48. rule.ruleName = ruleName;
  49. rule.messages = messages;
  50. rule.meta = meta;