@atlaskit/eslint-plugin-design-system 8.23.2 → 8.23.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/cjs/rules/consistent-css-prop-usage/index.js +25 -5
- package/dist/cjs/rules/use-primitives/index.js +4 -30
- package/dist/cjs/rules/use-primitives/transformers/compiled-styled/convert-jsx-call-site.js +39 -0
- package/dist/cjs/rules/use-primitives/transformers/compiled-styled/convert-styled-component-call-to-jsx.js +44 -0
- package/dist/cjs/rules/use-primitives/{utils → transformers/compiled-styled}/find-valid-styled-component-call.js +5 -2
- package/dist/cjs/rules/use-primitives/transformers/compiled-styled/index.js +117 -0
- package/dist/cjs/rules/use-primitives/transformers/compiled-styled/supported.js +10 -0
- package/dist/cjs/rules/use-primitives/transformers/compiled-styled/upsert-import-declaration.js +37 -0
- package/dist/cjs/rules/use-primitives/transformers/emotion-css/contains-only-supported-attrs.js +27 -0
- package/dist/cjs/rules/use-primitives/transformers/emotion-css/index.js +4 -47
- package/dist/cjs/rules/use-primitives/transformers/emotion-css/supported.js +2 -44
- package/dist/cjs/rules/use-primitives/transformers/emotion-css/upsert-import-declaration.js +37 -0
- package/dist/cjs/rules/use-primitives/transformers/index.js +10 -10
- package/dist/cjs/rules/use-primitives/utils/index.js +1 -43
- package/dist/es2019/rules/consistent-css-prop-usage/index.js +23 -5
- package/dist/es2019/rules/use-primitives/index.js +4 -30
- package/dist/es2019/rules/use-primitives/transformers/compiled-styled/convert-jsx-call-site.js +29 -0
- package/dist/es2019/rules/use-primitives/transformers/compiled-styled/convert-styled-component-call-to-jsx.js +37 -0
- package/dist/es2019/rules/use-primitives/{utils → transformers/compiled-styled}/find-valid-styled-component-call.js +2 -2
- package/dist/es2019/rules/use-primitives/transformers/compiled-styled/index.js +107 -0
- package/dist/es2019/rules/use-primitives/transformers/compiled-styled/supported.js +4 -0
- package/dist/es2019/rules/use-primitives/transformers/compiled-styled/upsert-import-declaration.js +30 -0
- package/dist/es2019/rules/use-primitives/transformers/emotion-css/contains-only-supported-attrs.js +19 -0
- package/dist/es2019/rules/use-primitives/transformers/emotion-css/index.js +4 -48
- package/dist/es2019/rules/use-primitives/transformers/emotion-css/supported.js +1 -43
- package/dist/es2019/rules/use-primitives/transformers/emotion-css/upsert-import-declaration.js +30 -0
- package/dist/es2019/rules/use-primitives/transformers/index.js +2 -2
- package/dist/es2019/rules/use-primitives/utils/index.js +1 -7
- package/dist/esm/rules/consistent-css-prop-usage/index.js +25 -5
- package/dist/esm/rules/use-primitives/index.js +4 -30
- package/dist/esm/rules/use-primitives/transformers/compiled-styled/convert-jsx-call-site.js +30 -0
- package/dist/esm/rules/use-primitives/transformers/compiled-styled/convert-styled-component-call-to-jsx.js +38 -0
- package/dist/esm/rules/use-primitives/{utils → transformers/compiled-styled}/find-valid-styled-component-call.js +2 -2
- package/dist/esm/rules/use-primitives/transformers/compiled-styled/index.js +107 -0
- package/dist/esm/rules/use-primitives/transformers/compiled-styled/supported.js +4 -0
- package/dist/esm/rules/use-primitives/transformers/compiled-styled/upsert-import-declaration.js +29 -0
- package/dist/esm/rules/use-primitives/transformers/emotion-css/contains-only-supported-attrs.js +19 -0
- package/dist/esm/rules/use-primitives/transformers/emotion-css/index.js +4 -47
- package/dist/esm/rules/use-primitives/transformers/emotion-css/supported.js +1 -43
- package/dist/esm/rules/use-primitives/transformers/emotion-css/upsert-import-declaration.js +29 -0
- package/dist/esm/rules/use-primitives/transformers/index.js +2 -2
- package/dist/esm/rules/use-primitives/utils/index.js +1 -7
- package/dist/types/rules/use-primitives/transformers/compiled-styled/convert-jsx-call-site.d.ts +17 -0
- package/dist/types/rules/use-primitives/transformers/compiled-styled/convert-styled-component-call-to-jsx.d.ts +17 -0
- package/dist/types/rules/use-primitives/transformers/compiled-styled/index.d.ts +25 -0
- package/dist/types/rules/use-primitives/transformers/compiled-styled/supported.d.ts +2 -0
- package/dist/types/rules/use-primitives/transformers/compiled-styled/upsert-import-declaration.d.ts +14 -0
- package/dist/types/rules/use-primitives/transformers/emotion-css/contains-only-supported-attrs.d.ts +7 -0
- package/dist/types/rules/use-primitives/transformers/emotion-css/index.d.ts +0 -19
- package/dist/types/rules/use-primitives/transformers/emotion-css/supported.d.ts +0 -7
- package/dist/types/rules/use-primitives/transformers/emotion-css/upsert-import-declaration.d.ts +14 -0
- package/dist/types/rules/use-primitives/transformers/index.d.ts +2 -2
- package/dist/types/rules/use-primitives/utils/index.d.ts +0 -6
- package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/convert-jsx-call-site.d.ts +17 -0
- package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/convert-styled-component-call-to-jsx.d.ts +17 -0
- package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/index.d.ts +25 -0
- package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/supported.d.ts +2 -0
- package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/upsert-import-declaration.d.ts +14 -0
- package/dist/types-ts4.5/rules/use-primitives/transformers/emotion-css/contains-only-supported-attrs.d.ts +7 -0
- package/dist/types-ts4.5/rules/use-primitives/transformers/emotion-css/index.d.ts +0 -19
- package/dist/types-ts4.5/rules/use-primitives/transformers/emotion-css/supported.d.ts +0 -7
- package/dist/types-ts4.5/rules/use-primitives/transformers/emotion-css/upsert-import-declaration.d.ts +14 -0
- package/dist/types-ts4.5/rules/use-primitives/transformers/index.d.ts +2 -2
- package/dist/types-ts4.5/rules/use-primitives/utils/index.d.ts +0 -6
- package/package.json +1 -1
- package/dist/cjs/rules/use-primitives/transformers/jsx-element-to-box.js +0 -26
- package/dist/cjs/rules/use-primitives/transformers/styled-component-to-primitive.js +0 -68
- package/dist/cjs/rules/use-primitives/utils/contains-only-supported-attrs.js +0 -19
- package/dist/cjs/rules/use-primitives/utils/is-valid-tag-name.js +0 -13
- package/dist/cjs/rules/use-primitives/utils/update-jsx-element-name.js +0 -16
- package/dist/cjs/rules/use-primitives/utils/upsert-import-declaration.js +0 -80
- package/dist/es2019/rules/use-primitives/transformers/jsx-element-to-box.js +0 -16
- package/dist/es2019/rules/use-primitives/transformers/styled-component-to-primitive.js +0 -59
- package/dist/es2019/rules/use-primitives/utils/contains-only-supported-attrs.js +0 -13
- package/dist/es2019/rules/use-primitives/utils/is-valid-tag-name.js +0 -7
- package/dist/es2019/rules/use-primitives/utils/update-jsx-element-name.js +0 -12
- package/dist/es2019/rules/use-primitives/utils/upsert-import-declaration.js +0 -76
- package/dist/esm/rules/use-primitives/transformers/jsx-element-to-box.js +0 -19
- package/dist/esm/rules/use-primitives/transformers/styled-component-to-primitive.js +0 -61
- package/dist/esm/rules/use-primitives/utils/contains-only-supported-attrs.js +0 -13
- package/dist/esm/rules/use-primitives/utils/is-valid-tag-name.js +0 -7
- package/dist/esm/rules/use-primitives/utils/update-jsx-element-name.js +0 -10
- package/dist/esm/rules/use-primitives/utils/upsert-import-declaration.js +0 -75
- package/dist/types/rules/use-primitives/transformers/jsx-element-to-box.d.ts +0 -3
- package/dist/types/rules/use-primitives/transformers/styled-component-to-primitive.d.ts +0 -13
- package/dist/types/rules/use-primitives/utils/contains-only-supported-attrs.d.ts +0 -2
- package/dist/types/rules/use-primitives/utils/is-valid-tag-name.d.ts +0 -3
- package/dist/types/rules/use-primitives/utils/update-jsx-element-name.d.ts +0 -3
- package/dist/types/rules/use-primitives/utils/upsert-import-declaration.d.ts +0 -11
- package/dist/types-ts4.5/rules/use-primitives/transformers/jsx-element-to-box.d.ts +0 -3
- package/dist/types-ts4.5/rules/use-primitives/transformers/styled-component-to-primitive.d.ts +0 -13
- package/dist/types-ts4.5/rules/use-primitives/utils/contains-only-supported-attrs.d.ts +0 -2
- package/dist/types-ts4.5/rules/use-primitives/utils/is-valid-tag-name.d.ts +0 -3
- package/dist/types-ts4.5/rules/use-primitives/utils/update-jsx-element-name.d.ts +0 -3
- package/dist/types-ts4.5/rules/use-primitives/utils/upsert-import-declaration.d.ts +0 -11
- /package/dist/cjs/rules/use-primitives/{utils → transformers/compiled-styled}/find-valid-jsx-usage-to-transform.js +0 -0
- /package/dist/es2019/rules/use-primitives/{utils → transformers/compiled-styled}/find-valid-jsx-usage-to-transform.js +0 -0
- /package/dist/esm/rules/use-primitives/{utils → transformers/compiled-styled}/find-valid-jsx-usage-to-transform.js +0 -0
- /package/dist/types/rules/use-primitives/{utils → transformers/compiled-styled}/find-valid-jsx-usage-to-transform.d.ts +0 -0
- /package/dist/types/rules/use-primitives/{utils → transformers/compiled-styled}/find-valid-styled-component-call.d.ts +0 -0
- /package/dist/types-ts4.5/rules/use-primitives/{utils → transformers/compiled-styled}/find-valid-jsx-usage-to-transform.d.ts +0 -0
- /package/dist/types-ts4.5/rules/use-primitives/{utils → transformers/compiled-styled}/find-valid-styled-component-call.d.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @atlaskit/eslint-plugin-design-system
|
|
2
2
|
|
|
3
|
+
## 8.23.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#69222](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/69222) [`a1c52086fdb9`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/a1c52086fdb9) - Address issues in consistent-css-prop-usage hoisting and naming fixers
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
|
|
3
10
|
## 8.23.2
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
|
@@ -13,6 +13,8 @@ var _assign = _interopRequireDefault(require("lodash/assign"));
|
|
|
13
13
|
var _createRule = require("../utils/create-rule");
|
|
14
14
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
15
15
|
|
|
16
|
+
// File-level tracking of styles hoisted from the cssOnTopOfModule/cssAtBottomOfModule fixers
|
|
17
|
+
var hoistedCss = [];
|
|
16
18
|
function isCssCallExpression(node, cssFunctions) {
|
|
17
19
|
cssFunctions = [].concat((0, _toConsumableArray2.default)(cssFunctions), ['cssMap']);
|
|
18
20
|
return !!((0, _eslintCodemodUtils.isNodeOfType)(node, 'CallExpression') && node.callee && node.callee.type === 'Identifier' && cssFunctions.includes(node.callee.name) && node.arguments.length && node.arguments[0].type === 'ObjectExpression');
|
|
@@ -25,11 +27,11 @@ function findSpreadProperties(node) {
|
|
|
25
27
|
property.type === 'ExperimentalSpreadProperty';
|
|
26
28
|
});
|
|
27
29
|
}
|
|
28
|
-
var
|
|
30
|
+
var getProgramNode = function getProgramNode(expression) {
|
|
29
31
|
while (expression.parent.type !== 'Program') {
|
|
30
32
|
expression = expression.parent;
|
|
31
33
|
}
|
|
32
|
-
return expression;
|
|
34
|
+
return expression.parent;
|
|
33
35
|
};
|
|
34
36
|
|
|
35
37
|
// TODO: This can be optimised by implementing a fixer at the very end (Program:exit) and handling all validations at once
|
|
@@ -48,7 +50,7 @@ var getDeclaratorString = function getDeclaratorString(context) {
|
|
|
48
50
|
}
|
|
49
51
|
var variables = scope.variables.map(function (variable) {
|
|
50
52
|
return variable.name;
|
|
51
|
-
});
|
|
53
|
+
}).concat(hoistedCss);
|
|
52
54
|
var count = 2;
|
|
53
55
|
var declaratorName = 'styles';
|
|
54
56
|
|
|
@@ -61,6 +63,9 @@ var getDeclaratorString = function getDeclaratorString(context) {
|
|
|
61
63
|
count++;
|
|
62
64
|
}
|
|
63
65
|
}
|
|
66
|
+
|
|
67
|
+
// Keep track of it by adding it to the hoistedCss global array
|
|
68
|
+
hoistedCss = [].concat((0, _toConsumableArray2.default)(hoistedCss), ["".concat(declaratorName).concat(count)]);
|
|
64
69
|
return "".concat(declaratorName).concat(count);
|
|
65
70
|
};
|
|
66
71
|
function analyzeIdentifier(context, sourceIdentifier, configuration) {
|
|
@@ -123,7 +128,19 @@ function analyzeIdentifier(context, sourceIdentifier, configuration) {
|
|
|
123
128
|
*/
|
|
124
129
|
var fixCssNotInModuleScope = function fixCssNotInModuleScope(fixer, context, configuration, node, cssAttributeName) {
|
|
125
130
|
var sourceCode = context.getSourceCode();
|
|
126
|
-
|
|
131
|
+
|
|
132
|
+
// Get the program node in order to properly position the hoisted styles
|
|
133
|
+
var programNode = getProgramNode(node);
|
|
134
|
+
var fixerNodePlacement = programNode;
|
|
135
|
+
if (configuration.stylesPlacement === 'bottom') {
|
|
136
|
+
// The last value is the bottom of the file
|
|
137
|
+
fixerNodePlacement = programNode.body[programNode.body.length - 1];
|
|
138
|
+
} else {
|
|
139
|
+
// Place after the last ImportDeclaration
|
|
140
|
+
fixerNodePlacement = programNode.body.length === 1 ? programNode.body[0] : programNode.body.find(function (node) {
|
|
141
|
+
return node.type !== 'ImportDeclaration';
|
|
142
|
+
});
|
|
143
|
+
}
|
|
127
144
|
var moduleString;
|
|
128
145
|
var implementFixer = [];
|
|
129
146
|
if (node.type === 'Identifier') {
|
|
@@ -145,7 +162,7 @@ var fixCssNotInModuleScope = function fixCssNotInModuleScope(fixer, context, con
|
|
|
145
162
|
}
|
|
146
163
|
return [].concat(implementFixer, [
|
|
147
164
|
// Insert the node either before or after
|
|
148
|
-
configuration.stylesPlacement === 'bottom' ? fixer.insertTextAfter(
|
|
165
|
+
configuration.stylesPlacement === 'bottom' ? fixer.insertTextAfter(fixerNodePlacement, '\n' + moduleString) : fixer.insertTextBefore(fixerNodePlacement, moduleString + '\n')]);
|
|
149
166
|
};
|
|
150
167
|
|
|
151
168
|
/**
|
|
@@ -276,6 +293,9 @@ var rule = (0, _createRule.createLintRule)({
|
|
|
276
293
|
}), (0, _defineProperty2.default)(_ref3, "JSXAttribute", function JSXAttribute(node) {
|
|
277
294
|
var name = node.name,
|
|
278
295
|
value = node.value;
|
|
296
|
+
|
|
297
|
+
// Always reset to empty array
|
|
298
|
+
hoistedCss = [];
|
|
279
299
|
if (name.type === 'JSXIdentifier' && mergedConfig.cssFunctions.includes(name.name)) {
|
|
280
300
|
// When not a jsx expression. For eg. css=""
|
|
281
301
|
if ((value === null || value === void 0 ? void 0 : value.type) !== 'JSXExpressionContainer') {
|
|
@@ -4,12 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
8
7
|
var _createRule = require("../utils/create-rule");
|
|
9
8
|
var _config = require("./config");
|
|
10
9
|
var _transformers = require("./transformers");
|
|
11
|
-
var _emotionCss = require("./transformers/emotion-css");
|
|
12
|
-
var _utils = require("./utils");
|
|
13
10
|
var boxDocsUrl = 'https://atlassian.design/components/primitives/box';
|
|
14
11
|
var rule = (0, _createRule.createLintRule)({
|
|
15
12
|
meta: {
|
|
@@ -31,37 +28,14 @@ var rule = (0, _createRule.createLintRule)({
|
|
|
31
28
|
return {
|
|
32
29
|
// transforms styled.<html>(...) usages
|
|
33
30
|
CallExpression: function CallExpression(node) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (!(0, _eslintCodemodUtils.isNodeOfType)(node, 'CallExpression')) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
var styledComponentVariableRef = (0, _utils.findValidStyledComponentCall)(node);
|
|
41
|
-
if (!styledComponentVariableRef || !(0, _eslintCodemodUtils.isNodeOfType)(styledComponentVariableRef.id, 'Identifier') || !(0, _utils.isValidCssPropertiesToTransform)(node, config)) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
var styledComponentJsxRef = (0, _utils.findValidJsxUsageToTransform)(styledComponentVariableRef.id.name, context.getScope());
|
|
45
|
-
if (!styledComponentJsxRef) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// if we have both references at this point then we can offer a fix \o/
|
|
50
|
-
context.report({
|
|
51
|
-
node: styledComponentVariableRef,
|
|
52
|
-
messageId: 'preferPrimitivesBox',
|
|
53
|
-
suggest: [{
|
|
54
|
-
desc: "Convert ".concat(styledComponentVariableRef.id.name, " to Box"),
|
|
55
|
-
fix: (0, _transformers.styledComponentToPrimitive)({
|
|
56
|
-
stylesRef: styledComponentVariableRef,
|
|
57
|
-
jsxRef: styledComponentJsxRef
|
|
58
|
-
}, context)
|
|
59
|
-
}]
|
|
31
|
+
_transformers.CompiledStyled.lint(node, {
|
|
32
|
+
context: context,
|
|
33
|
+
config: config
|
|
60
34
|
});
|
|
61
35
|
},
|
|
62
36
|
// transforms <div css={...}> usages
|
|
63
37
|
JSXElement: function JSXElement(node) {
|
|
64
|
-
|
|
38
|
+
_transformers.EmotionCSS.lint(node, {
|
|
65
39
|
context: context,
|
|
66
40
|
config: config
|
|
67
41
|
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.convertJsxCallSite = void 0;
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
+
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
11
|
+
var ast = _interopRequireWildcard(require("../../../../ast-nodes"));
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
/**
|
|
15
|
+
* Transforms a JSXElement from:
|
|
16
|
+
* ```
|
|
17
|
+
* <div>
|
|
18
|
+
* // ...
|
|
19
|
+
* </div>
|
|
20
|
+
* ```
|
|
21
|
+
* to
|
|
22
|
+
* ```
|
|
23
|
+
* <Box xcss={myStyles}>
|
|
24
|
+
* // ...
|
|
25
|
+
* </Box>
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
var convertJsxCallSite = exports.convertJsxCallSite = function convertJsxCallSite(jsxElement, newStylesVariableName, fixer) {
|
|
29
|
+
var fixes = [];
|
|
30
|
+
|
|
31
|
+
// renames the JSX call site
|
|
32
|
+
if ((0, _eslintCodemodUtils.isNodeOfType)(jsxElement, 'JSXElement')) {
|
|
33
|
+
fixes.push.apply(fixes, (0, _toConsumableArray2.default)(ast.JSXElement.updateName(jsxElement, 'Box', fixer)));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// adds xcss prop
|
|
37
|
+
fixes.push(fixer.insertTextAfter(jsxElement.openingElement.name, " xcss={".concat(newStylesVariableName, "}")));
|
|
38
|
+
return fixes;
|
|
39
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.convertStyledComponentToXcss = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
10
|
+
var _cssToXcss = require("../css-to-xcss");
|
|
11
|
+
/**
|
|
12
|
+
* Transforms a variable like:
|
|
13
|
+
* ```
|
|
14
|
+
* const MyComponent = styled.div({
|
|
15
|
+
* padding: '8px',
|
|
16
|
+
* })
|
|
17
|
+
* ```
|
|
18
|
+
* to
|
|
19
|
+
* ```
|
|
20
|
+
* const myComponentStyles = xcss({
|
|
21
|
+
* padding: 'space.100',
|
|
22
|
+
* })
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
var convertStyledComponentToXcss = exports.convertStyledComponentToXcss = function convertStyledComponentToXcss(styles, newStylesVariableName, fixer) {
|
|
26
|
+
var fixes = [];
|
|
27
|
+
|
|
28
|
+
// renames the variable from MyComponent to myComponentStyles
|
|
29
|
+
fixes.push(fixer.replaceText(styles.id, newStylesVariableName));
|
|
30
|
+
|
|
31
|
+
// renames the function call from styled.<tag> to xcss
|
|
32
|
+
if (styles.init && (0, _eslintCodemodUtils.isNodeOfType)(styles.init, 'CallExpression')) {
|
|
33
|
+
fixes.push(fixer.replaceText(styles.init.callee, 'xcss'));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// converts CSS values to XCSS-compatible tokens
|
|
37
|
+
if (styles.init && (0, _eslintCodemodUtils.isNodeOfType)(styles.init, 'CallExpression')) {
|
|
38
|
+
var objectExpression = styles.init.arguments[0];
|
|
39
|
+
if ((0, _eslintCodemodUtils.isNodeOfType)(objectExpression, 'ObjectExpression')) {
|
|
40
|
+
fixes.push.apply(fixes, (0, _toConsumableArray2.default)((0, _cssToXcss.styledObjectToXcssTokens)(objectExpression, fixer)));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return fixes;
|
|
44
|
+
};
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.findValidStyledComponentCall = void 0;
|
|
7
8
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
8
|
-
var
|
|
9
|
+
var supported = _interopRequireWildcard(require("./supported"));
|
|
10
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
9
12
|
/**
|
|
10
13
|
* returns a variable reference if preconditions are favourable for
|
|
11
14
|
* the transformation to proceed, undefined otherwise.
|
|
@@ -46,7 +49,7 @@ var isStyledCallExpression = function isStyledCallExpression(call) {
|
|
|
46
49
|
if (!(0, _eslintCodemodUtils.isNodeOfType)(call.callee.object, 'Identifier') || !(0, _eslintCodemodUtils.isNodeOfType)(call.callee.property, 'Identifier')) {
|
|
47
50
|
return false;
|
|
48
51
|
}
|
|
49
|
-
if (/^styled2?$/.test(call.callee.object.name) &&
|
|
52
|
+
if (/^styled2?$/.test(call.callee.object.name) && supported.elements.includes(call.callee.property.name)) {
|
|
50
53
|
return true;
|
|
51
54
|
}
|
|
52
55
|
return false;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.CompiledStyled = void 0;
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
+
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
11
|
+
var ast = _interopRequireWildcard(require("../../../../ast-nodes"));
|
|
12
|
+
var _utils = require("../../utils");
|
|
13
|
+
var _convertJsxCallSite = require("./convert-jsx-call-site");
|
|
14
|
+
var _convertStyledComponentCallToJsx = require("./convert-styled-component-call-to-jsx");
|
|
15
|
+
var _findValidJsxUsageToTransform = require("./find-valid-jsx-usage-to-transform");
|
|
16
|
+
var _findValidStyledComponentCall = require("./find-valid-styled-component-call");
|
|
17
|
+
var _upsertImportDeclaration = require("./upsert-import-declaration");
|
|
18
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
20
|
+
/* eslint-disable @repo/internal/react/require-jsdoc */
|
|
21
|
+
|
|
22
|
+
var CompiledStyled = exports.CompiledStyled = {
|
|
23
|
+
lint: function lint(node, _ref) {
|
|
24
|
+
var context = _ref.context,
|
|
25
|
+
config = _ref.config;
|
|
26
|
+
if (!(0, _eslintCodemodUtils.isNodeOfType)(node, 'CallExpression')) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Check whether all criteria needed to make a transformation are met
|
|
31
|
+
var _CompiledStyled$_chec = CompiledStyled._check(node, {
|
|
32
|
+
context: context,
|
|
33
|
+
config: config
|
|
34
|
+
}),
|
|
35
|
+
success = _CompiledStyled$_chec.success,
|
|
36
|
+
refs = _CompiledStyled$_chec.refs;
|
|
37
|
+
if (!success || !refs) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
context.report({
|
|
41
|
+
node: refs.styles,
|
|
42
|
+
messageId: 'preferPrimitivesBox',
|
|
43
|
+
suggest: [{
|
|
44
|
+
desc: "Convert ".concat(ast.JSXElement.getName(refs.jsxElement), " to Box"),
|
|
45
|
+
fix: CompiledStyled._fix(refs, context)
|
|
46
|
+
}]
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
_check: function _check(node, _ref2) {
|
|
50
|
+
var context = _ref2.context,
|
|
51
|
+
config = _ref2.config;
|
|
52
|
+
if (!config.patterns.includes('compiled-styled-object')) {
|
|
53
|
+
return {
|
|
54
|
+
success: false
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (!(0, _eslintCodemodUtils.isNodeOfType)(node, 'CallExpression')) {
|
|
58
|
+
return {
|
|
59
|
+
success: false
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
var styledComponentVariableRef = (0, _findValidStyledComponentCall.findValidStyledComponentCall)(node);
|
|
63
|
+
if (!styledComponentVariableRef || !(0, _eslintCodemodUtils.isNodeOfType)(styledComponentVariableRef.id, 'Identifier') || !(0, _utils.isValidCssPropertiesToTransform)(node, config)) {
|
|
64
|
+
return {
|
|
65
|
+
success: false
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
var styledComponentJsxRef = (0, _findValidJsxUsageToTransform.findValidJsxUsageToTransform)(styledComponentVariableRef.id.name, context.getScope());
|
|
69
|
+
if (!styledComponentJsxRef) {
|
|
70
|
+
return {
|
|
71
|
+
success: false
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
if (!(0, _eslintCodemodUtils.isNodeOfType)(styledComponentJsxRef.parent, 'JSXElement')) {
|
|
75
|
+
return {
|
|
76
|
+
success: false
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
var importDeclaration = ast.Root.findImportsByModule(context.getSourceCode().ast.body, '@atlaskit/primitives');
|
|
80
|
+
|
|
81
|
+
// If there is more than one `@atlaskit/primitives` import, then it becomes difficult to determine which import to transform
|
|
82
|
+
if (importDeclaration.length > 1) {
|
|
83
|
+
return {
|
|
84
|
+
success: false
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
success: true,
|
|
89
|
+
refs: {
|
|
90
|
+
styles: styledComponentVariableRef,
|
|
91
|
+
jsxElement: styledComponentJsxRef.parent
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
/**
|
|
96
|
+
* All required validation steps have been taken care of before this
|
|
97
|
+
* transformer is called, so it just goes ahead providing all necessary fixes
|
|
98
|
+
*/
|
|
99
|
+
_fix: function _fix(refs, context) {
|
|
100
|
+
return function (fixer) {
|
|
101
|
+
// generates the new variable name: MyComponent -> myComponentStyles
|
|
102
|
+
var calculatedStylesVariableName = (0, _eslintCodemodUtils.isNodeOfType)(refs.styles.id, 'Identifier') && "".concat(refs.styles.id.name.replace(refs.styles.id.name[0], refs.styles.id.name[0].toLowerCase()), "Styles");
|
|
103
|
+
if (!calculatedStylesVariableName) {
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
var importFixes = (0, _upsertImportDeclaration.upsertImportDeclaration)({
|
|
107
|
+
module: '@atlaskit/primitives',
|
|
108
|
+
specifiers: ['Box', 'xcss']
|
|
109
|
+
}, context, fixer);
|
|
110
|
+
var stylesFixes = (0, _convertStyledComponentCallToJsx.convertStyledComponentToXcss)(refs.styles, calculatedStylesVariableName, fixer);
|
|
111
|
+
var jsxFixes = (0, _convertJsxCallSite.convertJsxCallSite)(refs.jsxElement, calculatedStylesVariableName, fixer);
|
|
112
|
+
return [importFixes].concat((0, _toConsumableArray2.default)(stylesFixes), (0, _toConsumableArray2.default)(jsxFixes)).filter(function (fix) {
|
|
113
|
+
return Boolean(fix);
|
|
114
|
+
}); // Some of the transformers can return arrays with undefined, so filter them out
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
};
|
package/dist/cjs/rules/use-primitives/transformers/compiled-styled/upsert-import-declaration.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.upsertImportDeclaration = void 0;
|
|
8
|
+
var ast = _interopRequireWildcard(require("../../../../ast-nodes"));
|
|
9
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
10
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
11
|
+
/**
|
|
12
|
+
* Currently this is defined here because it's not very general purpose.
|
|
13
|
+
* If we were to move this to `ast-nodes`, half the implementation would be in `Root`,
|
|
14
|
+
* and the other half would be in `Import`.
|
|
15
|
+
*
|
|
16
|
+
* TODO: Refactor and move to `ast-nodes`
|
|
17
|
+
*
|
|
18
|
+
* Note: It does not handle default imports, namespace imports, or aliased imports.
|
|
19
|
+
*/
|
|
20
|
+
var upsertImportDeclaration = exports.upsertImportDeclaration = function upsertImportDeclaration(_ref, context, fixer) {
|
|
21
|
+
var module = _ref.module,
|
|
22
|
+
specifiers = _ref.specifiers;
|
|
23
|
+
// Find any imports that match the packageName
|
|
24
|
+
var root = context.getSourceCode().ast.body;
|
|
25
|
+
var importDeclarations = ast.Root.findImportsByModule(root, module);
|
|
26
|
+
|
|
27
|
+
// The import doesn't exist yet, we can just insert a whole new one
|
|
28
|
+
if (importDeclarations.length === 0) {
|
|
29
|
+
return ast.Root.insertImport(root, {
|
|
30
|
+
module: module,
|
|
31
|
+
specifiers: specifiers
|
|
32
|
+
}, fixer);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// The import exists so, modify the existing one
|
|
36
|
+
return ast.Import.insertNamedSpecifiers(importDeclarations[0], specifiers, fixer);
|
|
37
|
+
};
|
package/dist/cjs/rules/use-primitives/transformers/emotion-css/contains-only-supported-attrs.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.containsOnlySupportedAttrs = void 0;
|
|
8
|
+
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
9
|
+
var ast = _interopRequireWildcard(require("../../../../ast-nodes"));
|
|
10
|
+
var supported = _interopRequireWildcard(require("./supported"));
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
+
/**
|
|
14
|
+
* Check that every attribute in the JSXElement is something we support.
|
|
15
|
+
* We do this via a whitelist in `this.attributes`. The result is we exclude
|
|
16
|
+
* dangerous attrs like `id` and `style`.
|
|
17
|
+
*/
|
|
18
|
+
var containsOnlySupportedAttrs = exports.containsOnlySupportedAttrs = function containsOnlySupportedAttrs(node) {
|
|
19
|
+
var attrs = ast.JSXElement.getAttributes(node);
|
|
20
|
+
return attrs.every(function (attr) {
|
|
21
|
+
if (!(0, _eslintCodemodUtils.isNodeOfType)(attr, 'JSXAttribute')) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
var name = ast.JSXAttribute.getName(attr);
|
|
25
|
+
return supported.attributes.includes(name);
|
|
26
|
+
});
|
|
27
|
+
};
|
|
@@ -11,7 +11,9 @@ var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
|
11
11
|
var ast = _interopRequireWildcard(require("../../../../ast-nodes"));
|
|
12
12
|
var _utils = require("../../utils");
|
|
13
13
|
var _cssToXcss = require("../css-to-xcss");
|
|
14
|
+
var _containsOnlySupportedAttrs = require("./contains-only-supported-attrs");
|
|
14
15
|
var supported = _interopRequireWildcard(require("./supported"));
|
|
16
|
+
var _upsertImportDeclaration = require("./upsert-import-declaration");
|
|
15
17
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
18
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
19
|
/* eslint-disable @repo/internal/react/require-jsdoc */
|
|
@@ -63,7 +65,7 @@ var EmotionCSS = exports.EmotionCSS = {
|
|
|
63
65
|
}
|
|
64
66
|
|
|
65
67
|
// Ignore elements that contain dangerous attributes like `id`.
|
|
66
|
-
if (!
|
|
68
|
+
if (!(0, _containsOnlySupportedAttrs.containsOnlySupportedAttrs)(node)) {
|
|
67
69
|
return false;
|
|
68
70
|
}
|
|
69
71
|
|
|
@@ -105,10 +107,9 @@ var EmotionCSS = exports.EmotionCSS = {
|
|
|
105
107
|
return true;
|
|
106
108
|
},
|
|
107
109
|
_fix: function _fix(node, _ref3) {
|
|
108
|
-
var _this = this;
|
|
109
110
|
var context = _ref3.context;
|
|
110
111
|
return function (fixer) {
|
|
111
|
-
var importFix =
|
|
112
|
+
var importFix = (0, _upsertImportDeclaration.upsertImportDeclaration)({
|
|
112
113
|
module: '@atlaskit/primitives',
|
|
113
114
|
specifiers: ['Box', 'xcss']
|
|
114
115
|
}, context, fixer);
|
|
@@ -120,49 +121,5 @@ var EmotionCSS = exports.EmotionCSS = {
|
|
|
120
121
|
return Boolean(fix);
|
|
121
122
|
}); // Some of the transformers can return arrays with undefined, so filter them out
|
|
122
123
|
};
|
|
123
|
-
},
|
|
124
|
-
/**
|
|
125
|
-
* Check that every attribute in the JSXElement is something we support.
|
|
126
|
-
* We do this via a whitelist in `this.attributes`. The result is we exclude
|
|
127
|
-
* dangerous attrs like `id` and `style`.
|
|
128
|
-
*/
|
|
129
|
-
_containsOnlySupportedAttributes: function _containsOnlySupportedAttributes(node) {
|
|
130
|
-
var attrs = ast.JSXElement.getAttributes(node);
|
|
131
|
-
return attrs.every(function (attr) {
|
|
132
|
-
if (!(0, _eslintCodemodUtils.isNodeOfType)(attr, 'JSXAttribute')) {
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
if (!(0, _eslintCodemodUtils.isNodeOfType)(attr.name, 'JSXIdentifier')) {
|
|
136
|
-
return false;
|
|
137
|
-
}
|
|
138
|
-
return supported.attributes.includes(attr.name.name);
|
|
139
|
-
});
|
|
140
|
-
},
|
|
141
|
-
/**
|
|
142
|
-
* Currently this is defined here because it's not very general purpose.
|
|
143
|
-
* If we were to move this to `ast-nodes`, half the implementation would be in `Root`,
|
|
144
|
-
* and the other half would be in `Import`.
|
|
145
|
-
*
|
|
146
|
-
* TODO: Refactor and move to `ast-nodes`
|
|
147
|
-
*
|
|
148
|
-
* Note: It does not handle default imports, namespace imports, or aliased imports.
|
|
149
|
-
*/
|
|
150
|
-
_upsertImportDeclaration: function _upsertImportDeclaration(_ref4, context, fixer) {
|
|
151
|
-
var module = _ref4.module,
|
|
152
|
-
specifiers = _ref4.specifiers;
|
|
153
|
-
// Find any imports that match the packageName
|
|
154
|
-
var root = context.getSourceCode().ast.body;
|
|
155
|
-
var importDeclarations = ast.Root.findImportsByModule(root, module);
|
|
156
|
-
|
|
157
|
-
// The import doesn't exist yet, we can just insert a whole new one
|
|
158
|
-
if (importDeclarations.length === 0) {
|
|
159
|
-
return ast.Root.insertImport(root, {
|
|
160
|
-
module: module,
|
|
161
|
-
specifiers: specifiers
|
|
162
|
-
}, fixer);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// The import exists so, modify the existing one
|
|
166
|
-
return ast.Import.insertNamedSpecifiers(importDeclarations[0], specifiers, fixer);
|
|
167
124
|
}
|
|
168
125
|
};
|
|
@@ -3,50 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.elements = exports.attributes = void 0;
|
|
7
7
|
var elements = exports.elements = ['div'];
|
|
8
8
|
var attributes = exports.attributes = ['css'
|
|
9
9
|
// 'data-testid'
|
|
10
|
-
];
|
|
11
|
-
|
|
12
|
-
// TODO: https://product-fabric.atlassian.net/browse/DSP-16054
|
|
13
|
-
var spaceTokenMap = {
|
|
14
|
-
'0px': 'space.0',
|
|
15
|
-
'2px': 'space.025',
|
|
16
|
-
'4px': 'space.050',
|
|
17
|
-
'6px': 'space.075',
|
|
18
|
-
'8px': 'space.100',
|
|
19
|
-
'12px': 'space.150',
|
|
20
|
-
'16px': 'space.200',
|
|
21
|
-
'20px': 'space.250',
|
|
22
|
-
'24px': 'space.300',
|
|
23
|
-
'32px': 'space.400',
|
|
24
|
-
'40px': 'space.500',
|
|
25
|
-
'48px': 'space.600',
|
|
26
|
-
'64px': 'space.800',
|
|
27
|
-
'80px': 'space.1000'
|
|
28
|
-
};
|
|
29
|
-
var styles = exports.styles = {
|
|
30
|
-
padding: spaceTokenMap,
|
|
31
|
-
paddingBlock: spaceTokenMap,
|
|
32
|
-
paddingBlockEnd: spaceTokenMap,
|
|
33
|
-
paddingBlockStart: spaceTokenMap,
|
|
34
|
-
paddingBottom: spaceTokenMap,
|
|
35
|
-
paddingInline: spaceTokenMap,
|
|
36
|
-
paddingInlineEnd: spaceTokenMap,
|
|
37
|
-
paddingInlineStart: spaceTokenMap,
|
|
38
|
-
paddingLeft: spaceTokenMap,
|
|
39
|
-
paddingRight: spaceTokenMap,
|
|
40
|
-
paddingTop: spaceTokenMap,
|
|
41
|
-
margin: spaceTokenMap,
|
|
42
|
-
marginBlock: spaceTokenMap,
|
|
43
|
-
marginBlockEnd: spaceTokenMap,
|
|
44
|
-
marginBlockStart: spaceTokenMap,
|
|
45
|
-
marginBottom: spaceTokenMap,
|
|
46
|
-
marginInline: spaceTokenMap,
|
|
47
|
-
marginInlineEnd: spaceTokenMap,
|
|
48
|
-
marginInlineStart: spaceTokenMap,
|
|
49
|
-
marginLeft: spaceTokenMap,
|
|
50
|
-
marginRight: spaceTokenMap,
|
|
51
|
-
marginTop: spaceTokenMap
|
|
52
|
-
};
|
|
10
|
+
];
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.upsertImportDeclaration = void 0;
|
|
8
|
+
var ast = _interopRequireWildcard(require("../../../../ast-nodes"));
|
|
9
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
10
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
11
|
+
/**
|
|
12
|
+
* Currently this is defined here because it's not very general purpose.
|
|
13
|
+
* If we were to move this to `ast-nodes`, half the implementation would be in `Root`,
|
|
14
|
+
* and the other half would be in `Import`.
|
|
15
|
+
*
|
|
16
|
+
* TODO: Refactor and move to `ast-nodes`
|
|
17
|
+
*
|
|
18
|
+
* Note: It does not handle default imports, namespace imports, or aliased imports.
|
|
19
|
+
*/
|
|
20
|
+
var upsertImportDeclaration = exports.upsertImportDeclaration = function upsertImportDeclaration(_ref, context, fixer) {
|
|
21
|
+
var module = _ref.module,
|
|
22
|
+
specifiers = _ref.specifiers;
|
|
23
|
+
// Find any imports that match the packageName
|
|
24
|
+
var root = context.getSourceCode().ast.body;
|
|
25
|
+
var importDeclarations = ast.Root.findImportsByModule(root, module);
|
|
26
|
+
|
|
27
|
+
// The import doesn't exist yet, we can just insert a whole new one
|
|
28
|
+
if (importDeclarations.length === 0) {
|
|
29
|
+
return ast.Root.insertImport(root, {
|
|
30
|
+
module: module,
|
|
31
|
+
specifiers: specifiers
|
|
32
|
+
}, fixer);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// The import exists so, modify the existing one
|
|
36
|
+
return ast.Import.insertNamedSpecifiers(importDeclarations[0], specifiers, fixer);
|
|
37
|
+
};
|