@atlaskit/eslint-plugin-design-system
Version:
The essential plugin for use with the Atlassian Design System.
69 lines (68 loc) • 2.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _eslintCodemodUtils = require("eslint-codemod-utils");
var _createLintRule = require("../utils/create-lint-rule");
var _physicalLogicalMap = require("./physical-logical-map");
var rule = (0, _createLintRule.createLintRule)({
meta: {
name: 'no-physical-properties',
fixable: 'code',
docs: {
description: 'Disallow physical properties and values in `css` and `cssMap` function calls.',
recommended: false,
severity: 'error'
},
messages: {
noPhysicalProperties: 'Physical properties are not allowed in `css` and `cssMap` functions as they do not support different reading modes. Use a logical property instead.',
noPhysicalValues: 'Physical values are not allowed in `css` and `cssMap` functions.'
}
},
create: function create(context) {
return {
// Handle css() calls
'CallExpression[callee.name=css] > ObjectExpression Property,CallExpression[callee.name=xcss] > ObjectExpression Property': function CallExpressionCalleeNameCss__ObjectExpression_PropertyCallExpressionCalleeNameXcss__ObjectExpression_Property(node) {
if (!(0, _eslintCodemodUtils.isNodeOfType)(node, 'Property')) {
return;
}
if (!(0, _eslintCodemodUtils.isNodeOfType)(node.key, 'Identifier')) {
return;
}
var key = node.key;
if (key.name in _physicalLogicalMap.physicalLogicalMap) {
context.report({
node: key,
messageId: 'noPhysicalProperties',
fix: function fix(fixer) {
var logicalProperty = _physicalLogicalMap.physicalLogicalMap[key.name];
return fixer.replaceText(key, logicalProperty);
}
});
}
},
// Handle cssMap() calls
'CallExpression[callee.name=cssMap] > ObjectExpression Property > ObjectExpression Property': function CallExpressionCalleeNameCssMap__ObjectExpression_Property__ObjectExpression_Property(node) {
if (!(0, _eslintCodemodUtils.isNodeOfType)(node, 'Property')) {
return;
}
if (!(0, _eslintCodemodUtils.isNodeOfType)(node.key, 'Identifier')) {
return;
}
var key = node.key;
if (key.name in _physicalLogicalMap.physicalLogicalMap) {
context.report({
node: key,
messageId: 'noPhysicalProperties',
fix: function fix(fixer) {
var logicalProperty = _physicalLogicalMap.physicalLogicalMap[key.name];
return fixer.replaceText(key, logicalProperty);
}
});
}
}
};
}
});
var _default = exports.default = rule;