| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- let stylelint = require('stylelint');
- let checkAlphabeticalOrder = require('../checkAlphabeticalOrder');
- let { isStandardSyntaxProperty, isCustomProperty, vendor } = require('../../utils');
- // eslint-disable-next-line max-params
- module.exports = function checkNode(node, result, ruleName, messages) {
- let allPropData = [];
- node.each(function processEveryNode(child) {
- if (child.type !== 'decl') {
- return;
- }
- let { prop } = child;
- if (!isStandardSyntaxProperty(prop)) {
- return;
- }
- if (isCustomProperty(prop)) {
- return;
- }
- let unprefixedPropName = vendor.unprefixed(prop);
- // Hack to allow -moz-osx-font-smoothing to be understood
- // just like -webkit-font-smoothing
- if (unprefixedPropName.startsWith('osx-')) {
- unprefixedPropName = unprefixedPropName.slice(4);
- }
- let propData = {
- name: prop,
- unprefixedName: unprefixedPropName,
- index: allPropData.length,
- node: child,
- };
- let previousPropData = allPropData[allPropData.length - 1]; // eslint-disable-line unicorn/prefer-at -- Need to support older Node.js
- allPropData.push(propData);
- // Skip first decl
- if (!previousPropData) {
- return;
- }
- let isCorrectOrder = checkAlphabeticalOrder(previousPropData, propData);
- if (isCorrectOrder) {
- return;
- }
- stylelint.utils.report({
- message: messages.expected(propData.name, previousPropData.name),
- node: child,
- result,
- ruleName,
- });
- });
- };
|