UNPKG

@atlaskit/eslint-plugin-design-system

Version:

The essential plugin for use with the Atlassian Design System.

69 lines (68 loc) 2.75 kB
"use strict"; 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;