index.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 sassAtRules = ["at-root", "content", "debug", "each", "else", "else if", "error", "extend", "for", "forward", "function", "if", "import", "include", "media", "mixin", "return", "use", "warn", "while"];
  10. var ruleToCheckAgainst = "at-rule-no-unknown";
  11. var ruleName = (0, _utils.namespace)(ruleToCheckAgainst);
  12. exports.ruleName = ruleName;
  13. var messages = _stylelint.utils.ruleMessages(ruleName, {
  14. rejected: function rejected() {
  15. var _rules$ruleToCheckAga;
  16. return (_rules$ruleToCheckAga = _stylelint.rules[ruleToCheckAgainst].messages).rejected.apply(_rules$ruleToCheckAga, arguments).replace(" (".concat(ruleToCheckAgainst, ")"), "");
  17. }
  18. });
  19. exports.messages = messages;
  20. var meta = {
  21. url: (0, _utils.ruleUrl)(ruleName)
  22. };
  23. exports.meta = meta;
  24. function rule(primaryOption, secondaryOptions) {
  25. return function (root, result) {
  26. var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
  27. actual: primaryOption
  28. }, {
  29. actual: secondaryOptions,
  30. possible: {
  31. ignoreAtRules: [_utils.isRegExp, _utils.isString]
  32. },
  33. optional: true
  34. });
  35. if (!validOptions) {
  36. return;
  37. }
  38. var optionsAtRules = secondaryOptions && secondaryOptions.ignoreAtRules;
  39. var ignoreAtRules = sassAtRules.concat(optionsAtRules || []);
  40. var defaultedOptions = Object.assign({}, secondaryOptions, {
  41. ignoreAtRules: ignoreAtRules
  42. });
  43. _stylelint.utils.checkAgainstRule({
  44. ruleName: ruleToCheckAgainst,
  45. ruleSettings: [primaryOption, defaultedOptions],
  46. root: root
  47. }, function (warning) {
  48. var name = warning.node.name;
  49. if (!ignoreAtRules.includes(name)) {
  50. _stylelint.utils.report({
  51. message: messages.rejected("@".concat(name)),
  52. ruleName: ruleName,
  53. result: result,
  54. node: warning.node,
  55. start: {
  56. line: warning.line,
  57. column: warning.column
  58. },
  59. end: {
  60. line: warning.endLine,
  61. column: warning.endColumn
  62. }
  63. });
  64. }
  65. });
  66. };
  67. }
  68. rule.ruleName = ruleName;
  69. rule.messages = messages;
  70. rule.meta = meta;