index.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // @ts-nocheck
  2. 'use strict';
  3. const _ = require('lodash');
  4. const atRuleParamIndex = require('../../utils/atRuleParamIndex');
  5. const report = require('../../utils/report');
  6. const ruleMessages = require('../../utils/ruleMessages');
  7. const validateOptions = require('../../utils/validateOptions');
  8. const ruleName = 'keyframes-name-pattern';
  9. const messages = ruleMessages(ruleName, {
  10. expected: (keyframeName) => `Expected keyframe name "${keyframeName}" to match specified pattern`,
  11. });
  12. function rule(pattern) {
  13. return (root, result) => {
  14. const validOptions = validateOptions(result, ruleName, {
  15. actual: pattern,
  16. possible: [_.isRegExp, _.isString],
  17. });
  18. if (!validOptions) {
  19. return;
  20. }
  21. const regex = _.isString(pattern) ? new RegExp(pattern) : pattern;
  22. root.walkAtRules(/keyframes/i, (keyframesNode) => {
  23. const value = keyframesNode.params;
  24. if (regex.test(value)) {
  25. return;
  26. }
  27. report({
  28. index: atRuleParamIndex(keyframesNode),
  29. message: messages.expected(value),
  30. node: keyframesNode,
  31. ruleName,
  32. result,
  33. });
  34. });
  35. };
  36. }
  37. rule.ruleName = ruleName;
  38. rule.messages = messages;
  39. module.exports = rule;