@atlaskit/eslint-plugin-design-system 9.2.5 → 9.3.1
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 +17 -0
- package/README.md +1 -0
- package/constellation/index/usage.mdx +1 -0
- package/constellation/use-heading/usage.mdx +28 -0
- package/dist/cjs/ast-nodes/root.js +32 -0
- package/dist/cjs/presets/all.codegen.js +2 -1
- package/dist/cjs/rules/index.codegen.js +3 -1
- package/dist/cjs/rules/use-heading/config/index.js +15 -0
- package/dist/cjs/rules/use-heading/index.js +39 -0
- package/dist/cjs/rules/use-heading/transformers/common.js +19 -0
- package/dist/cjs/rules/use-heading/transformers/index.js +12 -0
- package/dist/cjs/rules/use-heading/transformers/native-elements.js +99 -0
- package/dist/cjs/rules/use-primitives/transformers/compiled-styled/index.js +1 -2
- package/dist/cjs/rules/use-primitives/transformers/emotion-css/index.js +1 -2
- package/dist/cjs/rules/use-primitives-text/transformers/emphasis-elements.js +1 -2
- package/dist/cjs/rules/use-primitives-text/transformers/paragraph-elements.js +2 -3
- package/dist/cjs/rules/use-primitives-text/transformers/span-elements.js +1 -2
- package/dist/cjs/rules/use-primitives-text/transformers/strong-elements.js +1 -2
- package/dist/cjs/rules/use-tokens-space/transformers/style-property/index.js +1 -2
- package/dist/cjs/rules/utils/create-no-tagged-template-expression-rule/index.js +5 -7
- package/dist/cjs/rules/utils/create-rule.js +4 -7
- package/dist/es2019/ast-nodes/root.js +34 -0
- package/dist/es2019/presets/all.codegen.js +2 -1
- package/dist/es2019/rules/index.codegen.js +3 -1
- package/dist/es2019/rules/use-heading/config/index.js +9 -0
- package/dist/es2019/rules/use-heading/index.js +33 -0
- package/dist/es2019/rules/use-heading/transformers/common.js +9 -0
- package/dist/es2019/rules/use-heading/transformers/index.js +1 -0
- package/dist/es2019/rules/use-heading/transformers/native-elements.js +89 -0
- package/dist/es2019/rules/use-primitives/transformers/compiled-styled/index.js +1 -2
- package/dist/es2019/rules/use-primitives/transformers/emotion-css/index.js +1 -2
- package/dist/es2019/rules/use-primitives-text/transformers/emphasis-elements.js +1 -2
- package/dist/es2019/rules/use-primitives-text/transformers/paragraph-elements.js +2 -3
- package/dist/es2019/rules/use-primitives-text/transformers/span-elements.js +1 -2
- package/dist/es2019/rules/use-primitives-text/transformers/strong-elements.js +1 -2
- package/dist/es2019/rules/use-tokens-space/transformers/style-property/index.js +1 -2
- package/dist/es2019/rules/utils/create-no-tagged-template-expression-rule/index.js +21 -9
- package/dist/es2019/rules/utils/create-rule.js +4 -6
- package/dist/esm/ast-nodes/root.js +32 -0
- package/dist/esm/presets/all.codegen.js +2 -1
- package/dist/esm/rules/index.codegen.js +3 -1
- package/dist/esm/rules/use-heading/config/index.js +9 -0
- package/dist/esm/rules/use-heading/index.js +33 -0
- package/dist/esm/rules/use-heading/transformers/common.js +9 -0
- package/dist/esm/rules/use-heading/transformers/index.js +1 -0
- package/dist/esm/rules/use-heading/transformers/native-elements.js +89 -0
- package/dist/esm/rules/use-primitives/transformers/compiled-styled/index.js +1 -2
- package/dist/esm/rules/use-primitives/transformers/emotion-css/index.js +1 -2
- package/dist/esm/rules/use-primitives-text/transformers/emphasis-elements.js +1 -2
- package/dist/esm/rules/use-primitives-text/transformers/paragraph-elements.js +2 -3
- package/dist/esm/rules/use-primitives-text/transformers/span-elements.js +1 -2
- package/dist/esm/rules/use-primitives-text/transformers/strong-elements.js +1 -2
- package/dist/esm/rules/use-tokens-space/transformers/style-property/index.js +1 -2
- package/dist/esm/rules/utils/create-no-tagged-template-expression-rule/index.js +6 -8
- package/dist/esm/rules/utils/create-rule.js +4 -6
- package/dist/types/ast-nodes/jsx-element.d.ts +2 -2
- package/dist/types/ast-nodes/root.d.ts +8 -0
- package/dist/types/index.codegen.d.ts +1 -0
- package/dist/types/presets/all.codegen.d.ts +2 -1
- package/dist/types/rules/ensure-design-token-usage/rule-meta.d.ts +1 -1
- package/dist/types/rules/index.codegen.d.ts +1 -0
- package/dist/types/rules/use-heading/config/index.d.ts +6 -0
- package/dist/types/rules/use-heading/index.d.ts +3 -0
- package/dist/types/rules/use-heading/transformers/common.d.ts +9 -0
- package/dist/types/rules/use-heading/transformers/index.d.ts +1 -0
- package/dist/types/rules/use-heading/transformers/native-elements.d.ts +18 -0
- package/dist/types/rules/utils/create-rule.d.ts +1 -37
- package/dist/types-ts4.5/ast-nodes/jsx-element.d.ts +2 -2
- package/dist/types-ts4.5/ast-nodes/root.d.ts +8 -0
- package/dist/types-ts4.5/index.codegen.d.ts +1 -0
- package/dist/types-ts4.5/presets/all.codegen.d.ts +2 -1
- package/dist/types-ts4.5/rules/ensure-design-token-usage/rule-meta.d.ts +1 -1
- package/dist/types-ts4.5/rules/index.codegen.d.ts +1 -0
- package/dist/types-ts4.5/rules/use-heading/config/index.d.ts +6 -0
- package/dist/types-ts4.5/rules/use-heading/index.d.ts +3 -0
- package/dist/types-ts4.5/rules/use-heading/transformers/common.d.ts +9 -0
- package/dist/types-ts4.5/rules/use-heading/transformers/index.d.ts +1 -0
- package/dist/types-ts4.5/rules/use-heading/transformers/native-elements.d.ts +18 -0
- package/dist/types-ts4.5/rules/utils/create-rule.d.ts +1 -37
- package/package.json +2 -2
- package/dist/cjs/rules/use-primitives/transformers/compiled-styled/upsert-import-declaration.js +0 -37
- package/dist/cjs/rules/use-primitives/transformers/emotion-css/upsert-import-declaration.js +0 -37
- package/dist/cjs/rules/use-tokens-space/transformers/style-property/upsert-import-declaration.js +0 -37
- package/dist/es2019/rules/use-primitives/transformers/compiled-styled/upsert-import-declaration.js +0 -30
- package/dist/es2019/rules/use-primitives/transformers/emotion-css/upsert-import-declaration.js +0 -30
- package/dist/es2019/rules/use-tokens-space/transformers/style-property/upsert-import-declaration.js +0 -30
- package/dist/esm/rules/use-primitives/transformers/compiled-styled/upsert-import-declaration.js +0 -29
- package/dist/esm/rules/use-primitives/transformers/emotion-css/upsert-import-declaration.js +0 -29
- package/dist/esm/rules/use-tokens-space/transformers/style-property/upsert-import-declaration.js +0 -29
- package/dist/types/rules/use-primitives/transformers/compiled-styled/upsert-import-declaration.d.ts +0 -14
- package/dist/types/rules/use-primitives/transformers/emotion-css/upsert-import-declaration.d.ts +0 -14
- package/dist/types/rules/use-tokens-space/transformers/style-property/upsert-import-declaration.d.ts +0 -14
- package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/upsert-import-declaration.d.ts +0 -14
- package/dist/types-ts4.5/rules/use-primitives/transformers/emotion-css/upsert-import-declaration.d.ts +0 -14
- package/dist/types-ts4.5/rules/use-tokens-space/transformers/style-property/upsert-import-declaration.d.ts +0 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @atlaskit/eslint-plugin-design-system
|
|
2
2
|
|
|
3
|
+
## 9.3.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#88012](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/88012) [`c478a4d80fc9`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/c478a4d80fc9) - The `no-*-tagged-template-expression` rules will no longer autofix usages with mixins in nested selectors. This is because they were producing an array syntax that is not valid in compiled or styled-components.
|
|
8
|
+
|
|
9
|
+
## 9.3.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [#87586](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/87586) [`47d9f5fb1b11`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/47d9f5fb1b11) - Added use-heading rule
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- [#87476](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/87476) [`af296d200ad2`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/af296d200ad2) - Internal refactoring to use `getCreateLintRule` from `@atlaskit/eslint-utils`
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
|
|
3
20
|
## 9.2.5
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -74,6 +74,7 @@ module.exports = {
|
|
|
74
74
|
| <a href="./src/rules/prefer-primitives/README.md">prefer-primitives</a> | Increase awareness of primitive components via code hints. Strictly used for education purposes and discoverability. To enforce usage please refer to the `use-primitives` rule. | | | |
|
|
75
75
|
| <a href="./src/rules/use-button-group-label/README.md">use-button-group-label</a> | Ensures button groups are described to assistive technology by a direct label or by another element. | Yes | | Yes |
|
|
76
76
|
| <a href="./src/rules/use-drawer-label/README.md">use-drawer-label</a> | Encourages to provide accessible name for Atlassian Design System Drawer component. | Yes | | Yes |
|
|
77
|
+
| <a href="./src/rules/use-heading/README.md">use-heading</a> | Encourage the usage of heading components. | | Yes | Yes |
|
|
77
78
|
| <a href="./src/rules/use-heading-level-in-spotlight-card/README.md">use-heading-level-in-spotlight-card</a> | Inform developers of eventual requirement of `headingLevel` prop in `SpotlightCard` component. The heading level should be the appropriate level according to the surrounding context. | Yes | Yes | |
|
|
78
79
|
| <a href="./src/rules/use-href-in-link-item/README.md">use-href-in-link-item</a> | Inform developers of eventual requirement of `href` prop in `LinkItem` component. Elements with a `link` role require an `href` attribute for users to properly navigate, particularly those using assistive technologies. If no valid `href` is required for your use case, consider using a `ButtonItem` instead. | Yes | Yes | Yes |
|
|
79
80
|
| <a href="./src/rules/use-primitives/README.md">use-primitives</a> | Encourage the usage of primitives components. | | Yes | Yes |
|
|
@@ -36,6 +36,7 @@ This plugin contains rules that should be used when working with the [Atlassian
|
|
|
36
36
|
| <a href="prefer-primitives/usage">prefer-primitives</a> | Increase awareness of primitive components via code hints. Strictly used for education purposes and discoverability. To enforce usage please refer to the `use-primitives` rule. | | | |
|
|
37
37
|
| <a href="use-button-group-label/usage">use-button-group-label</a> | Ensures button groups are described to assistive technology by a direct label or by another element. | Yes | | Yes |
|
|
38
38
|
| <a href="use-drawer-label/usage">use-drawer-label</a> | Encourages to provide accessible name for Atlassian Design System Drawer component. | Yes | | Yes |
|
|
39
|
+
| <a href="use-heading/usage">use-heading</a> | Encourage the usage of heading components. | | Yes | Yes |
|
|
39
40
|
| <a href="use-heading-level-in-spotlight-card/usage">use-heading-level-in-spotlight-card</a> | Inform developers of eventual requirement of `headingLevel` prop in `SpotlightCard` component. The heading level should be the appropriate level according to the surrounding context. | Yes | Yes | |
|
|
40
41
|
| <a href="use-href-in-link-item/usage">use-href-in-link-item</a> | Inform developers of eventual requirement of `href` prop in `LinkItem` component. Elements with a `link` role require an `href` attribute for users to properly navigate, particularly those using assistive technologies. If no valid `href` is required for your use case, consider using a `ButtonItem` instead. | Yes | Yes | Yes |
|
|
41
42
|
| <a href="use-primitives/usage">use-primitives</a> | Encourage the usage of primitives components. | | Yes | Yes |
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# use-heading
|
|
2
|
+
|
|
3
|
+
Using primitives allows you to delete bespoke component code and replace it with ready made solutions made by the Atlassian Design System Team.
|
|
4
|
+
|
|
5
|
+
## Examples
|
|
6
|
+
|
|
7
|
+
This rule marks code as violations when it can be replaced 1:1 with a heading component.
|
|
8
|
+
|
|
9
|
+
### Incorrect
|
|
10
|
+
|
|
11
|
+
```jsx
|
|
12
|
+
<div>
|
|
13
|
+
<h1>text</hi>
|
|
14
|
+
<p>content</p>
|
|
15
|
+
</div>
|
|
16
|
+
^^^^
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Correct
|
|
20
|
+
|
|
21
|
+
```jsx
|
|
22
|
+
<div>
|
|
23
|
+
<Heading size="xlarge">text</Heading>
|
|
24
|
+
<p>content</p>
|
|
25
|
+
</div>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Currently, the rule is extremely defensive, only reporting on `h1`, `h2`, `h3`, `h4`, `h5` and `h6` elements that don't have any props outside of `key`, `id` and `data-testid`. We're only targeting instances that are the first child of their siblings.
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.Root = void 0;
|
|
7
7
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
8
|
+
var _import = require("./import");
|
|
8
9
|
/* eslint-disable @repo/internal/react/require-jsdoc */
|
|
9
10
|
|
|
10
11
|
// Little bit unreadable, but better than duplicating the type
|
|
@@ -30,5 +31,36 @@ var Root = exports.Root = {
|
|
|
30
31
|
},
|
|
31
32
|
insertImport: function insertImport(root, data, fixer) {
|
|
32
33
|
return fixer.insertTextBefore(root[0], "".concat((0, _eslintCodemodUtils.insertImportDeclaration)(data.module, data.specifiers), ";\n"));
|
|
34
|
+
},
|
|
35
|
+
upsertNamedImportDeclaration: function upsertNamedImportDeclaration(_ref, context, fixer) {
|
|
36
|
+
var module = _ref.module,
|
|
37
|
+
specifiers = _ref.specifiers;
|
|
38
|
+
// Find any imports that match the packageName
|
|
39
|
+
var root = context.getSourceCode().ast.body;
|
|
40
|
+
var importDeclarations = this.findImportsByModule(root, module);
|
|
41
|
+
|
|
42
|
+
// The named import doesn't exist yet, we can just insert a whole new one
|
|
43
|
+
if (importDeclarations.length === 0) {
|
|
44
|
+
return this.insertImport(root, {
|
|
45
|
+
module: module,
|
|
46
|
+
specifiers: specifiers
|
|
47
|
+
}, fixer);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// The import exists so, modify the existing one
|
|
51
|
+
return _import.Import.insertNamedSpecifiers(importDeclarations[0], specifiers, fixer);
|
|
52
|
+
},
|
|
53
|
+
upsertDefaultImportDeclaration: function upsertDefaultImportDeclaration(_ref2, context, fixer) {
|
|
54
|
+
var module = _ref2.module,
|
|
55
|
+
localName = _ref2.localName;
|
|
56
|
+
// Find any imports that match the packageName
|
|
57
|
+
var root = context.getSourceCode().ast.body;
|
|
58
|
+
var importDeclarations = this.findImportsByModule(root, module);
|
|
59
|
+
|
|
60
|
+
// The import already exist exist
|
|
61
|
+
if (importDeclarations.length > 0) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
return fixer.insertTextBefore(root[0], "import ".concat(localName, " from '").concat(module, "';\n"));
|
|
33
65
|
}
|
|
34
66
|
};
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
|
|
9
|
-
* @codegen <<SignedSource::
|
|
9
|
+
* @codegen <<SignedSource::2e2cf6c0ecfe1b01f3eb24caa223f09e>>
|
|
10
10
|
* @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
|
|
11
11
|
*/
|
|
12
12
|
var _default = exports.default = {
|
|
@@ -37,6 +37,7 @@ var _default = exports.default = {
|
|
|
37
37
|
'@atlaskit/design-system/prefer-primitives': 'warn',
|
|
38
38
|
'@atlaskit/design-system/use-button-group-label': 'warn',
|
|
39
39
|
'@atlaskit/design-system/use-drawer-label': 'warn',
|
|
40
|
+
'@atlaskit/design-system/use-heading': 'warn',
|
|
40
41
|
'@atlaskit/design-system/use-heading-level-in-spotlight-card': 'warn',
|
|
41
42
|
'@atlaskit/design-system/use-href-in-link-item': 'warn',
|
|
42
43
|
'@atlaskit/design-system/use-primitives': 'warn',
|
|
@@ -30,6 +30,7 @@ var _noUnsupportedDragAndDropLibraries = _interopRequireDefault(require("./no-un
|
|
|
30
30
|
var _preferPrimitives = _interopRequireDefault(require("./prefer-primitives"));
|
|
31
31
|
var _useButtonGroupLabel = _interopRequireDefault(require("./use-button-group-label"));
|
|
32
32
|
var _useDrawerLabel = _interopRequireDefault(require("./use-drawer-label"));
|
|
33
|
+
var _useHeading = _interopRequireDefault(require("./use-heading"));
|
|
33
34
|
var _useHeadingLevelInSpotlightCard = _interopRequireDefault(require("./use-heading-level-in-spotlight-card"));
|
|
34
35
|
var _useHrefInLinkItem = _interopRequireDefault(require("./use-href-in-link-item"));
|
|
35
36
|
var _usePrimitives = _interopRequireDefault(require("./use-primitives"));
|
|
@@ -39,7 +40,7 @@ var _useTokensTypography = _interopRequireDefault(require("./use-tokens-typograp
|
|
|
39
40
|
var _useVisuallyHidden = _interopRequireDefault(require("./use-visually-hidden"));
|
|
40
41
|
/**
|
|
41
42
|
* THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
|
|
42
|
-
* @codegen <<SignedSource::
|
|
43
|
+
* @codegen <<SignedSource::eb5c94901f711e67446ba88f0630bf76>>
|
|
43
44
|
* @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
|
|
44
45
|
*/
|
|
45
46
|
var _default = exports.default = {
|
|
@@ -68,6 +69,7 @@ var _default = exports.default = {
|
|
|
68
69
|
'prefer-primitives': _preferPrimitives.default,
|
|
69
70
|
'use-button-group-label': _useButtonGroupLabel.default,
|
|
70
71
|
'use-drawer-label': _useDrawerLabel.default,
|
|
72
|
+
'use-heading': _useHeading.default,
|
|
71
73
|
'use-heading-level-in-spotlight-card': _useHeadingLevelInSpotlightCard.default,
|
|
72
74
|
'use-href-in-link-item': _useHrefInLinkItem.default,
|
|
73
75
|
'use-primitives': _usePrimitives.default,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getConfig = void 0;
|
|
7
|
+
var defaults = {
|
|
8
|
+
patterns: ['native-elements']
|
|
9
|
+
};
|
|
10
|
+
var getConfig = exports.getConfig = function getConfig(overrides) {
|
|
11
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
|
|
12
|
+
// start with an empty object, then merge in the defaults, then merge in overrides.
|
|
13
|
+
// The empty object is returned, as well as modified in place
|
|
14
|
+
return Object.assign({}, defaults, overrides);
|
|
15
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _createRule = require("../utils/create-rule");
|
|
8
|
+
var _config = require("./config");
|
|
9
|
+
var _transformers = require("./transformers");
|
|
10
|
+
var docsUrl = 'https://atlassian.design/components/heading';
|
|
11
|
+
var rule = (0, _createRule.createLintRule)({
|
|
12
|
+
meta: {
|
|
13
|
+
name: 'use-heading',
|
|
14
|
+
type: 'suggestion',
|
|
15
|
+
fixable: 'code',
|
|
16
|
+
hasSuggestions: true,
|
|
17
|
+
docs: {
|
|
18
|
+
description: 'Encourage the usage of heading components.',
|
|
19
|
+
recommended: false,
|
|
20
|
+
severity: 'warn'
|
|
21
|
+
},
|
|
22
|
+
messages: {
|
|
23
|
+
preferHeading: "This element can be replaced with a \"Heading\" component. See ".concat(docsUrl, " for additional guidance.")
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
create: function create(context) {
|
|
27
|
+
var config = (0, _config.getConfig)(context.options[0]);
|
|
28
|
+
return {
|
|
29
|
+
// transforms <h1>...</h1> usages
|
|
30
|
+
'JSXElement[openingElement.name.name=/^h[0-6]$/]': function JSXElementOpeningElementNameNameH06$(node) {
|
|
31
|
+
return _transformers.NativeElements.lint(node, {
|
|
32
|
+
context: context,
|
|
33
|
+
config: config
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
var _default = exports.default = rule;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.allowedAttrs = void 0;
|
|
8
|
+
exports.updateTestIdAttributeFix = updateTestIdAttributeFix;
|
|
9
|
+
var ast = _interopRequireWildcard(require("../../../ast-nodes"));
|
|
10
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
11
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
|
+
// Rename data-testid prop to testId if present
|
|
13
|
+
function updateTestIdAttributeFix(node, fixer) {
|
|
14
|
+
var testIdAttr = ast.JSXElement.getAttributeByName(node, 'data-testid');
|
|
15
|
+
if (testIdAttr) {
|
|
16
|
+
return ast.JSXAttribute.updateName(testIdAttr, 'testId', fixer);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
var allowedAttrs = exports.allowedAttrs = ['id', 'data-testid', 'key'];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "NativeElements", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _nativeElements.NativeElements;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _nativeElements = require("./native-elements");
|
|
@@ -0,0 +1,99 @@
|
|
|
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.NativeElements = 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 _common = require("./common");
|
|
13
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
14
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
|
+
/* eslint-disable @repo/internal/react/require-jsdoc */
|
|
16
|
+
|
|
17
|
+
var tagSizeMap = {
|
|
18
|
+
h1: 'xlarge',
|
|
19
|
+
h2: 'large',
|
|
20
|
+
h3: 'medium',
|
|
21
|
+
h4: 'small',
|
|
22
|
+
h5: 'xsmall',
|
|
23
|
+
h6: 'xxsmall'
|
|
24
|
+
};
|
|
25
|
+
var NativeElements = exports.NativeElements = {
|
|
26
|
+
lint: function lint(node, _ref) {
|
|
27
|
+
var context = _ref.context,
|
|
28
|
+
config = _ref.config;
|
|
29
|
+
// Check whether all criteria needed to make a transformation are met
|
|
30
|
+
if (!NativeElements._check(node, {
|
|
31
|
+
context: context,
|
|
32
|
+
config: config
|
|
33
|
+
})) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
context.report({
|
|
37
|
+
node: node,
|
|
38
|
+
messageId: 'preferHeading',
|
|
39
|
+
suggest: [{
|
|
40
|
+
desc: 'Convert to Heading',
|
|
41
|
+
fix: NativeElements._fix(node, {
|
|
42
|
+
context: context,
|
|
43
|
+
config: config
|
|
44
|
+
})
|
|
45
|
+
}]
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
_check: function _check(node, _ref2) {
|
|
49
|
+
var config = _ref2.config;
|
|
50
|
+
if (!config.patterns.includes('native-elements')) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
if (!(0, _eslintCodemodUtils.isNodeOfType)(node, 'JSXElement')) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
if (!node.parent) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
var elementName = ast.JSXElement.getName(node);
|
|
60
|
+
if (!Object.keys(tagSizeMap).includes(elementName)) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Element has to be first element of its siblings
|
|
65
|
+
if (!((0, _eslintCodemodUtils.isNodeOfType)(node.parent, 'JSXElement') || (0, _eslintCodemodUtils.isNodeOfType)(node.parent, 'JSXFragment'))) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
var siblings = ast.JSXElement.getChildren(node.parent);
|
|
69
|
+
if (siblings.length > 1) {
|
|
70
|
+
var _siblings$0$range, _node$range, _siblings$0$range2, _node$range2;
|
|
71
|
+
// Only report if element is first child element
|
|
72
|
+
if (((_siblings$0$range = siblings[0].range) === null || _siblings$0$range === void 0 ? void 0 : _siblings$0$range[0]) !== ((_node$range = node.range) === null || _node$range === void 0 ? void 0 : _node$range[0]) || ((_siblings$0$range2 = siblings[0].range) === null || _siblings$0$range2 === void 0 ? void 0 : _siblings$0$range2[1]) !== ((_node$range2 = node.range) === null || _node$range2 === void 0 ? void 0 : _node$range2[1])) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (!ast.JSXElement.hasAllowedAttrsOnly(node, _common.allowedAttrs)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
return true;
|
|
80
|
+
},
|
|
81
|
+
_fix: function _fix(node, _ref3) {
|
|
82
|
+
var context = _ref3.context;
|
|
83
|
+
return function (fixer) {
|
|
84
|
+
// change to default import
|
|
85
|
+
var importFix = ast.Root.upsertDefaultImportDeclaration({
|
|
86
|
+
module: '@atlaskit/heading',
|
|
87
|
+
localName: 'Heading'
|
|
88
|
+
}, context, fixer);
|
|
89
|
+
var elementName = ast.JSXElement.getName(node);
|
|
90
|
+
var elementNameFixes = ast.JSXElement.updateName(node, 'Heading', fixer);
|
|
91
|
+
var size = tagSizeMap[elementName];
|
|
92
|
+
var asAttributeFix = ast.JSXElement.addAttribute(node, 'size', size, fixer);
|
|
93
|
+
var testAttributeFix = (0, _common.updateTestIdAttributeFix)(node, fixer);
|
|
94
|
+
return [importFix].concat((0, _toConsumableArray2.default)(elementNameFixes), [asAttributeFix, testAttributeFix]).filter(function (fix) {
|
|
95
|
+
return Boolean(fix);
|
|
96
|
+
}); // Some of the transformers can return arrays with undefined, so filter them out
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
};
|
|
@@ -15,7 +15,6 @@ var _convertJsxCallSite = require("./convert-jsx-call-site");
|
|
|
15
15
|
var _convertStyledComponentCallToJsx = require("./convert-styled-component-call-to-jsx");
|
|
16
16
|
var _findValidJsxUsageToTransform = require("./find-valid-jsx-usage-to-transform");
|
|
17
17
|
var _findValidStyledComponentCall = require("./find-valid-styled-component-call");
|
|
18
|
-
var _upsertImportDeclaration = require("./upsert-import-declaration");
|
|
19
18
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
20
19
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
21
20
|
/* eslint-disable @repo/internal/react/require-jsdoc */
|
|
@@ -105,7 +104,7 @@ var CompiledStyled = exports.CompiledStyled = {
|
|
|
105
104
|
if (!calculatedStylesVariableName) {
|
|
106
105
|
return [];
|
|
107
106
|
}
|
|
108
|
-
var importFixes =
|
|
107
|
+
var importFixes = ast.Root.upsertNamedImportDeclaration({
|
|
109
108
|
module: '@atlaskit/primitives',
|
|
110
109
|
specifiers: ['Box', 'xcss']
|
|
111
110
|
}, context, fixer);
|
|
@@ -13,7 +13,6 @@ var _utils = require("../../utils");
|
|
|
13
13
|
var _validateStyles = require("../../utils/validate-styles");
|
|
14
14
|
var _cssToXcss = require("../css-to-xcss");
|
|
15
15
|
var supported = _interopRequireWildcard(require("./supported"));
|
|
16
|
-
var _upsertImportDeclaration = require("./upsert-import-declaration");
|
|
17
16
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
18
17
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
19
18
|
/* eslint-disable @repo/internal/react/require-jsdoc */
|
|
@@ -108,7 +107,7 @@ var EmotionCSS = exports.EmotionCSS = {
|
|
|
108
107
|
_fix: function _fix(node, _ref3) {
|
|
109
108
|
var context = _ref3.context;
|
|
110
109
|
return function (fixer) {
|
|
111
|
-
var importFix =
|
|
110
|
+
var importFix = ast.Root.upsertNamedImportDeclaration({
|
|
112
111
|
module: '@atlaskit/primitives',
|
|
113
112
|
specifiers: ['Box', 'xcss']
|
|
114
113
|
}, context, fixer);
|
|
@@ -9,7 +9,6 @@ exports.EmphasisElements = void 0;
|
|
|
9
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
10
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
11
11
|
var ast = _interopRequireWildcard(require("../../../ast-nodes"));
|
|
12
|
-
var _upsertImportDeclaration = require("../../use-primitives/transformers/emotion-css/upsert-import-declaration");
|
|
13
12
|
var _common = require("./common");
|
|
14
13
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
15
14
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -69,7 +68,7 @@ var EmphasisElements = exports.EmphasisElements = {
|
|
|
69
68
|
var context = _ref3.context,
|
|
70
69
|
config = _ref3.config;
|
|
71
70
|
return function (fixer) {
|
|
72
|
-
var importFix =
|
|
71
|
+
var importFix = ast.Root.upsertNamedImportDeclaration({
|
|
73
72
|
module: '@atlaskit/primitives',
|
|
74
73
|
specifiers: ['Text']
|
|
75
74
|
}, context, fixer);
|
|
@@ -9,7 +9,6 @@ exports.ParagraphElements = void 0;
|
|
|
9
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
10
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
11
11
|
var ast = _interopRequireWildcard(require("../../../ast-nodes"));
|
|
12
|
-
var _upsertImportDeclaration = require("../../use-primitives/transformers/emotion-css/upsert-import-declaration");
|
|
13
12
|
var _common = require("./common");
|
|
14
13
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
15
14
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -162,7 +161,7 @@ var ParagraphElements = exports.ParagraphElements = {
|
|
|
162
161
|
var context = _ref3.context,
|
|
163
162
|
config = _ref3.config;
|
|
164
163
|
return function (fixer) {
|
|
165
|
-
var importFix =
|
|
164
|
+
var importFix = ast.Root.upsertNamedImportDeclaration({
|
|
166
165
|
module: '@atlaskit/primitives',
|
|
167
166
|
specifiers: ['Text']
|
|
168
167
|
}, context, fixer);
|
|
@@ -183,7 +182,7 @@ var ParagraphElements = exports.ParagraphElements = {
|
|
|
183
182
|
if (!(0, _eslintCodemodUtils.isNodeOfType)(node.parent, 'JSXElement') || !node.parent.closingElement) {
|
|
184
183
|
return [];
|
|
185
184
|
}
|
|
186
|
-
var importFix =
|
|
185
|
+
var importFix = ast.Root.upsertNamedImportDeclaration({
|
|
187
186
|
module: '@atlaskit/primitives',
|
|
188
187
|
specifiers: ['Text', 'Stack']
|
|
189
188
|
}, context, fixer);
|
|
@@ -9,7 +9,6 @@ exports.SpanElements = void 0;
|
|
|
9
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
10
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
11
11
|
var ast = _interopRequireWildcard(require("../../../ast-nodes"));
|
|
12
|
-
var _upsertImportDeclaration = require("../../use-primitives/transformers/emotion-css/upsert-import-declaration");
|
|
13
12
|
var _common = require("./common");
|
|
14
13
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
15
14
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -74,7 +73,7 @@ var SpanElements = exports.SpanElements = {
|
|
|
74
73
|
var context = _ref3.context,
|
|
75
74
|
config = _ref3.config;
|
|
76
75
|
return function (fixer) {
|
|
77
|
-
var importFix =
|
|
76
|
+
var importFix = ast.Root.upsertNamedImportDeclaration({
|
|
78
77
|
module: '@atlaskit/primitives',
|
|
79
78
|
specifiers: ['Text']
|
|
80
79
|
}, context, fixer);
|
|
@@ -9,7 +9,6 @@ exports.StrongElements = void 0;
|
|
|
9
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
10
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
11
11
|
var ast = _interopRequireWildcard(require("../../../ast-nodes"));
|
|
12
|
-
var _upsertImportDeclaration = require("../../use-primitives/transformers/emotion-css/upsert-import-declaration");
|
|
13
12
|
var _common = require("./common");
|
|
14
13
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
15
14
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -69,7 +68,7 @@ var StrongElements = exports.StrongElements = {
|
|
|
69
68
|
var context = _ref3.context,
|
|
70
69
|
config = _ref3.config;
|
|
71
70
|
return function (fixer) {
|
|
72
|
-
var importFix =
|
|
71
|
+
var importFix = ast.Root.upsertNamedImportDeclaration({
|
|
73
72
|
module: '@atlaskit/primitives',
|
|
74
73
|
specifiers: ['Text']
|
|
75
74
|
}, context, fixer);
|
|
@@ -11,7 +11,6 @@ var ast = _interopRequireWildcard(require("../../../../ast-nodes"));
|
|
|
11
11
|
var _utils = require("../../utils");
|
|
12
12
|
var _styleMap = require("./style-map");
|
|
13
13
|
var _supported = _interopRequireDefault(require("./supported"));
|
|
14
|
-
var _upsertImportDeclaration = require("./upsert-import-declaration");
|
|
15
14
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
16
15
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
16
|
/* eslint-disable @repo/internal/react/require-jsdoc */
|
|
@@ -116,7 +115,7 @@ var StyleProperty = exports.StyleProperty = {
|
|
|
116
115
|
*/
|
|
117
116
|
_fix: function _fix(ref, context) {
|
|
118
117
|
return function (fixer) {
|
|
119
|
-
var importFix =
|
|
118
|
+
var importFix = ast.Root.upsertNamedImportDeclaration({
|
|
120
119
|
module: '@atlaskit/tokens',
|
|
121
120
|
specifiers: ['token']
|
|
122
121
|
}, context, fixer);
|
|
@@ -80,7 +80,7 @@ var createNoTaggedTemplateExpressionRule = exports.createNoTaggedTemplateExpress
|
|
|
80
80
|
return _context.abrupt("return");
|
|
81
81
|
case 11:
|
|
82
82
|
args = (0, _toArguments.toArguments)(source, quasi);
|
|
83
|
-
if (!
|
|
83
|
+
if (!args.some(hasNestedSelectorWithMultipleArguments)) {
|
|
84
84
|
_context.next = 14;
|
|
85
85
|
break;
|
|
86
86
|
}
|
|
@@ -140,19 +140,17 @@ var createNoTaggedTemplateExpressionRule = exports.createNoTaggedTemplateExpress
|
|
|
140
140
|
};
|
|
141
141
|
};
|
|
142
142
|
};
|
|
143
|
-
function
|
|
143
|
+
function hasNestedSelectorWithMultipleArguments(arg) {
|
|
144
144
|
if (arg.type === 'literal' || arg.type === 'expression' || arg.type === 'declaration') {
|
|
145
145
|
return false;
|
|
146
146
|
}
|
|
147
|
-
if (arg.type === 'rule' && arg.declarations.length > 1
|
|
148
|
-
return node.type === 'expression';
|
|
149
|
-
})) {
|
|
147
|
+
if (arg.type === 'rule' && arg.declarations.length > 1) {
|
|
150
148
|
return true;
|
|
151
149
|
}
|
|
152
150
|
if (arg.type === 'block') {
|
|
153
|
-
return arg.blocks.some(
|
|
151
|
+
return arg.blocks.some(hasNestedSelectorWithMultipleArguments);
|
|
154
152
|
}
|
|
155
153
|
if (arg.type === 'rule') {
|
|
156
|
-
return arg.declarations.some(
|
|
154
|
+
return arg.declarations.some(hasNestedSelectorWithMultipleArguments);
|
|
157
155
|
}
|
|
158
156
|
}
|
|
@@ -5,8 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createRule = exports.createLintRule = void 0;
|
|
7
7
|
var _utils = require("@typescript-eslint/utils");
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
var _createRule = require("@atlaskit/eslint-utils/create-rule");
|
|
10
9
|
/**
|
|
11
10
|
* We are moving to our own small abstraction to create a lint rule that we have the power
|
|
12
11
|
* to change and mold to our own needs.
|
|
@@ -19,16 +18,14 @@ var _utils = require("@typescript-eslint/utils");
|
|
|
19
18
|
var createRule = exports.createRule = _utils.ESLintUtils.RuleCreator(function (name) {
|
|
20
19
|
return getRuleUrl(name);
|
|
21
20
|
});
|
|
21
|
+
|
|
22
22
|
/**
|
|
23
23
|
* Tiny wrapped over the ESLint rule module type that ensures
|
|
24
24
|
* there is a docs link to our ESLint plugin documentation page,
|
|
25
25
|
* as well as improving type support.
|
|
26
26
|
*/
|
|
27
|
-
var createLintRule = exports.createLintRule =
|
|
28
|
-
rule.meta.docs.url = getRuleUrl(rule.meta.name);
|
|
29
|
-
return rule;
|
|
30
|
-
};
|
|
27
|
+
var createLintRule = exports.createLintRule = (0, _createRule.getCreateLintRule)(getRuleUrl);
|
|
31
28
|
function getRuleUrl(ruleName) {
|
|
32
|
-
var name =
|
|
29
|
+
var name = (0, _createRule.getPathSafeName)(ruleName);
|
|
33
30
|
return "https://atlassian.design/components/eslint-plugin-design-system/".concat(name, "/usage");
|
|
34
31
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @repo/internal/react/require-jsdoc */
|
|
2
2
|
|
|
3
3
|
import { hasImportDeclaration, insertImportDeclaration, isNodeOfType } from 'eslint-codemod-utils';
|
|
4
|
+
import { Import } from './import';
|
|
4
5
|
// Little bit unreadable, but better than duplicating the type
|
|
5
6
|
|
|
6
7
|
export const Root = {
|
|
@@ -24,5 +25,38 @@ export const Root = {
|
|
|
24
25
|
},
|
|
25
26
|
insertImport(root, data, fixer) {
|
|
26
27
|
return fixer.insertTextBefore(root[0], `${insertImportDeclaration(data.module, data.specifiers)};\n`);
|
|
28
|
+
},
|
|
29
|
+
upsertNamedImportDeclaration({
|
|
30
|
+
module,
|
|
31
|
+
specifiers
|
|
32
|
+
}, context, fixer) {
|
|
33
|
+
// Find any imports that match the packageName
|
|
34
|
+
const root = context.getSourceCode().ast.body;
|
|
35
|
+
const importDeclarations = this.findImportsByModule(root, module);
|
|
36
|
+
|
|
37
|
+
// The named import doesn't exist yet, we can just insert a whole new one
|
|
38
|
+
if (importDeclarations.length === 0) {
|
|
39
|
+
return this.insertImport(root, {
|
|
40
|
+
module,
|
|
41
|
+
specifiers
|
|
42
|
+
}, fixer);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// The import exists so, modify the existing one
|
|
46
|
+
return Import.insertNamedSpecifiers(importDeclarations[0], specifiers, fixer);
|
|
47
|
+
},
|
|
48
|
+
upsertDefaultImportDeclaration({
|
|
49
|
+
module,
|
|
50
|
+
localName
|
|
51
|
+
}, context, fixer) {
|
|
52
|
+
// Find any imports that match the packageName
|
|
53
|
+
const root = context.getSourceCode().ast.body;
|
|
54
|
+
const importDeclarations = this.findImportsByModule(root, module);
|
|
55
|
+
|
|
56
|
+
// The import already exist exist
|
|
57
|
+
if (importDeclarations.length > 0) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
return fixer.insertTextBefore(root[0], `import ${localName} from '${module}';\n`);
|
|
27
61
|
}
|
|
28
62
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
|
|
3
|
-
* @codegen <<SignedSource::
|
|
3
|
+
* @codegen <<SignedSource::2e2cf6c0ecfe1b01f3eb24caa223f09e>>
|
|
4
4
|
* @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
|
|
5
5
|
*/
|
|
6
6
|
export default {
|
|
@@ -31,6 +31,7 @@ export default {
|
|
|
31
31
|
'@atlaskit/design-system/prefer-primitives': 'warn',
|
|
32
32
|
'@atlaskit/design-system/use-button-group-label': 'warn',
|
|
33
33
|
'@atlaskit/design-system/use-drawer-label': 'warn',
|
|
34
|
+
'@atlaskit/design-system/use-heading': 'warn',
|
|
34
35
|
'@atlaskit/design-system/use-heading-level-in-spotlight-card': 'warn',
|
|
35
36
|
'@atlaskit/design-system/use-href-in-link-item': 'warn',
|
|
36
37
|
'@atlaskit/design-system/use-primitives': 'warn',
|