@atlaskit/eslint-plugin-design-system 4.19.1 → 5.0.0
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 +25 -0
- package/README.md +3 -3
- package/constellation/index/usage.mdx +6 -4
- package/dist/cjs/presets/recommended.codegen.js +6 -3
- package/dist/cjs/rules/ensure-design-token-usage/index.js +7 -6
- package/dist/cjs/rules/ensure-design-token-usage-spacing/utils.js +1 -1
- package/dist/cjs/rules/icon-label/index.js +4 -5
- package/dist/cjs/rules/no-banned-imports/index.js +5 -3
- package/dist/cjs/rules/no-deprecated-apis/index.js +1 -1
- package/dist/cjs/rules/no-deprecated-design-token-usage/index.js +5 -3
- package/dist/cjs/rules/no-deprecated-imports/index.js +1 -1
- package/dist/cjs/rules/no-margin/index.js +5 -2
- package/dist/cjs/rules/no-unsafe-design-token-usage/index.js +5 -3
- package/dist/cjs/rules/use-primitives/index.js +4 -2
- package/dist/cjs/rules/use-visually-hidden/index.js +5 -5
- package/dist/cjs/rules/utils/create-rule.js +23 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/presets/recommended.codegen.js +6 -3
- package/dist/es2019/rules/ensure-design-token-usage/index.js +7 -16
- package/dist/es2019/rules/ensure-design-token-usage-spacing/utils.js +1 -1
- package/dist/es2019/rules/icon-label/index.js +4 -5
- package/dist/es2019/rules/no-banned-imports/index.js +5 -3
- package/dist/es2019/rules/no-deprecated-apis/index.js +1 -1
- package/dist/es2019/rules/no-deprecated-design-token-usage/index.js +5 -3
- package/dist/es2019/rules/no-deprecated-imports/index.js +1 -1
- package/dist/es2019/rules/no-margin/index.js +5 -2
- package/dist/es2019/rules/no-unsafe-design-token-usage/index.js +5 -3
- package/dist/es2019/rules/use-primitives/index.js +4 -2
- package/dist/es2019/rules/use-visually-hidden/index.js +5 -5
- package/dist/es2019/rules/utils/create-rule.js +20 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/presets/recommended.codegen.js +6 -3
- package/dist/esm/rules/ensure-design-token-usage/index.js +7 -6
- package/dist/esm/rules/ensure-design-token-usage-spacing/utils.js +1 -1
- package/dist/esm/rules/icon-label/index.js +4 -5
- package/dist/esm/rules/no-banned-imports/index.js +5 -3
- package/dist/esm/rules/no-deprecated-apis/index.js +1 -1
- package/dist/esm/rules/no-deprecated-design-token-usage/index.js +5 -3
- package/dist/esm/rules/no-deprecated-imports/index.js +1 -1
- package/dist/esm/rules/no-margin/index.js +5 -2
- package/dist/esm/rules/no-unsafe-design-token-usage/index.js +5 -3
- package/dist/esm/rules/use-primitives/index.js +4 -2
- package/dist/esm/rules/use-visually-hidden/index.js +5 -5
- package/dist/esm/rules/utils/create-rule.js +21 -2
- package/dist/esm/version.json +1 -1
- package/dist/types/index.codegen.d.ts +3 -0
- package/dist/types/presets/recommended.codegen.d.ts +4 -1
- package/dist/types/rules/icon-label/index.d.ts +1 -2
- package/dist/types/rules/no-banned-imports/index.d.ts +1 -2
- package/dist/types/rules/use-primitives/index.d.ts +1 -2
- package/dist/types/rules/utils/create-rule.d.ts +43 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @atlaskit/eslint-plugin-design-system
|
|
2
2
|
|
|
3
|
+
## 5.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [`b910bbe6130`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b910bbe6130) - The following rules are now included in the recommended preset as errors:
|
|
8
|
+
|
|
9
|
+
- ensure-design-token-usage
|
|
10
|
+
- no-deprecated-apis
|
|
11
|
+
- no-deprecated-imports
|
|
12
|
+
- no-unsafe-design-token-usage
|
|
13
|
+
|
|
14
|
+
The following rules are now included in the recommended preset as warnings:
|
|
15
|
+
|
|
16
|
+
- no-deprecated-design-token-usage
|
|
17
|
+
|
|
18
|
+
### Minor Changes
|
|
19
|
+
|
|
20
|
+
- [`b689e24847d`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b689e24847d) - All lint rule violations in IDEs now point to their corresponding documentation on https://atlassian.design.
|
|
21
|
+
|
|
22
|
+
## 4.20.0
|
|
23
|
+
|
|
24
|
+
### Minor Changes
|
|
25
|
+
|
|
26
|
+
- [`fa50be73bfe`](https://bitbucket.org/atlassian/atlassian-frontend/commits/fa50be73bfe) - [ux] Spacing rule now also looks at and attempts to parse additional properties.
|
|
27
|
+
|
|
3
28
|
## 4.19.1
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -49,15 +49,15 @@ module.exports = {
|
|
|
49
49
|
|
|
50
50
|
| Rule | Description | Recommended | Fixable | Suggestions |
|
|
51
51
|
| ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------- | ------- | ----------- |
|
|
52
|
-
| <a href="./src/rules/ensure-design-token-usage/README.md">ensure-design-token-usage</a> | Enforces usage of design tokens. |
|
|
52
|
+
| <a href="./src/rules/ensure-design-token-usage/README.md">ensure-design-token-usage</a> | Enforces usage of design tokens. | Yes | Yes | Yes |
|
|
53
53
|
| <a href="./src/rules/ensure-design-token-usage-spacing/README.md">ensure-design-token-usage-spacing</a> | Enforces usage of spacing design tokens rather than hard-coded values. | | Yes | |
|
|
54
54
|
| <a href="./src/rules/icon-label/README.md">icon-label</a> | Enforces accessible usage of icon labels when composed with Atlassian Design System components. | Yes | Yes | |
|
|
55
55
|
| <a href="./src/rules/no-banned-imports/README.md">no-banned-imports</a> | Disallow importing banned modules. | Yes | | |
|
|
56
56
|
| <a href="./src/rules/no-deprecated-apis/README.md">no-deprecated-apis</a> | Disallow using deprecated APIs. | Yes | | |
|
|
57
|
-
| <a href="./src/rules/no-deprecated-design-token-usage/README.md">no-deprecated-design-token-usage</a> | Disallow using deprecated design tokens. |
|
|
57
|
+
| <a href="./src/rules/no-deprecated-design-token-usage/README.md">no-deprecated-design-token-usage</a> | Disallow using deprecated design tokens. | Yes | Yes | |
|
|
58
58
|
| <a href="./src/rules/no-deprecated-imports/README.md">no-deprecated-imports</a> | Disallow importing deprecated modules. | Yes | | |
|
|
59
59
|
| <a href="./src/rules/no-margin/README.md">no-margin</a> | Disallow using the margin CSS property. | | | |
|
|
60
|
-
| <a href="./src/rules/no-unsafe-design-token-usage/README.md">no-unsafe-design-token-usage</a> | Enforces design token usage is statically and locally analyzable. |
|
|
60
|
+
| <a href="./src/rules/no-unsafe-design-token-usage/README.md">no-unsafe-design-token-usage</a> | Enforces design token usage is statically and locally analyzable. | Yes | Yes | |
|
|
61
61
|
| <a href="./src/rules/use-primitives/README.md">use-primitives</a> | Encourage the usage of primitives components. | | Yes | |
|
|
62
62
|
| <a href="./src/rules/use-visually-hidden/README.md">use-visually-hidden</a> | Enforce usage of the visually hidden component. | Yes | Yes | |
|
|
63
63
|
|
|
@@ -13,15 +13,15 @@ This plugin contains rules that should be used when working with the [Atlassian
|
|
|
13
13
|
|
|
14
14
|
| Rule | Description | Recommended | Fixable | Suggestions |
|
|
15
15
|
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------- | ------- | ----------- |
|
|
16
|
-
| <a href="#ensure-design-token-usage">ensure-design-token-usage</a> | Enforces usage of design tokens. |
|
|
16
|
+
| <a href="#ensure-design-token-usage">ensure-design-token-usage</a> | Enforces usage of design tokens. | Yes | Yes | Yes |
|
|
17
17
|
| <a href="#ensure-design-token-usage-spacing">ensure-design-token-usage-spacing</a> | Enforces usage of spacing design tokens rather than hard-coded values. | | Yes | |
|
|
18
18
|
| <a href="#icon-label">icon-label</a> | Enforces accessible usage of icon labels when composed with Atlassian Design System components. | Yes | Yes | |
|
|
19
19
|
| <a href="#no-banned-imports">no-banned-imports</a> | Disallow importing banned modules. | Yes | | |
|
|
20
20
|
| <a href="#no-deprecated-apis">no-deprecated-apis</a> | Disallow using deprecated APIs. | Yes | | |
|
|
21
|
-
| <a href="#no-deprecated-design-token-usage">no-deprecated-design-token-usage</a> | Disallow using deprecated design tokens. |
|
|
21
|
+
| <a href="#no-deprecated-design-token-usage">no-deprecated-design-token-usage</a> | Disallow using deprecated design tokens. | Yes | Yes | |
|
|
22
22
|
| <a href="#no-deprecated-imports">no-deprecated-imports</a> | Disallow importing deprecated modules. | Yes | | |
|
|
23
23
|
| <a href="#no-margin">no-margin</a> | Disallow using the margin CSS property. | | | |
|
|
24
|
-
| <a href="#no-unsafe-design-token-usage">no-unsafe-design-token-usage</a> | Enforces design token usage is statically and locally analyzable. |
|
|
24
|
+
| <a href="#no-unsafe-design-token-usage">no-unsafe-design-token-usage</a> | Enforces design token usage is statically and locally analyzable. | Yes | Yes | |
|
|
25
25
|
| <a href="#use-primitives">use-primitives</a> | Encourage the usage of primitives components. | | Yes | |
|
|
26
26
|
| <a href="#use-visually-hidden">use-visually-hidden</a> | Enforce usage of the visually hidden component. | Yes | Yes | |
|
|
27
27
|
|
|
@@ -48,7 +48,7 @@ import { B100 } from '@atlaskit/theme/colors';
|
|
|
48
48
|
css({ color: 'red' });
|
|
49
49
|
^^^
|
|
50
50
|
css({ boxShadow: '0px 1px 1px #161A1D32' });
|
|
51
|
-
|
|
51
|
+
^^^^^^^^^
|
|
52
52
|
css`${e100};`;
|
|
53
53
|
^^^^
|
|
54
54
|
css({ color: B100 });
|
|
@@ -60,6 +60,8 @@ css({ color: B100 });
|
|
|
60
60
|
```js
|
|
61
61
|
import { token } from '@atlaskit/tokens';
|
|
62
62
|
|
|
63
|
+
css({ color: token('color.text.danger') });
|
|
64
|
+
|
|
63
65
|
css({ boxShadow: token('elevation.shadow.card') });
|
|
64
66
|
```
|
|
65
67
|
|
|
@@ -6,16 +6,19 @@ 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::b3d2f24d8d37a87fc2bbd964dfdcb87c>>
|
|
10
10
|
* @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
|
|
11
11
|
*/
|
|
12
12
|
var _default = {
|
|
13
13
|
plugins: ['@atlaskit/design-system'],
|
|
14
14
|
rules: {
|
|
15
|
+
'@atlaskit/design-system/ensure-design-token-usage': 'error',
|
|
15
16
|
'@atlaskit/design-system/icon-label': 'warn',
|
|
16
17
|
'@atlaskit/design-system/no-banned-imports': 'error',
|
|
17
|
-
'@atlaskit/design-system/no-deprecated-apis': '
|
|
18
|
-
'@atlaskit/design-system/no-deprecated-
|
|
18
|
+
'@atlaskit/design-system/no-deprecated-apis': 'error',
|
|
19
|
+
'@atlaskit/design-system/no-deprecated-design-token-usage': 'warn',
|
|
20
|
+
'@atlaskit/design-system/no-deprecated-imports': 'error',
|
|
21
|
+
'@atlaskit/design-system/no-unsafe-design-token-usage': 'error',
|
|
19
22
|
'@atlaskit/design-system/use-visually-hidden': 'error'
|
|
20
23
|
}
|
|
21
24
|
};
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
8
|
+
var _createRule = require("../utils/create-rule");
|
|
8
9
|
var _getIsException = require("../utils/get-is-exception");
|
|
9
10
|
var _isColor = require("../utils/is-color");
|
|
10
11
|
var _isElevation = require("../utils/is-elevation");
|
|
@@ -34,19 +35,19 @@ var filterSuggestion = function filterSuggestion(_ref) {
|
|
|
34
35
|
var shouldReturnSuggestion = _ref.shouldReturnSuggestion;
|
|
35
36
|
return shouldReturnSuggestion;
|
|
36
37
|
};
|
|
37
|
-
var rule = {
|
|
38
|
+
var rule = (0, _createRule.createLintRule)({
|
|
38
39
|
meta: {
|
|
39
|
-
|
|
40
|
+
name: 'ensure-design-token-usage',
|
|
40
41
|
hasSuggestions: true,
|
|
41
42
|
docs: {
|
|
42
43
|
description: 'Enforces usage of design tokens.',
|
|
43
|
-
recommended:
|
|
44
|
+
recommended: 'error'
|
|
44
45
|
},
|
|
45
46
|
fixable: 'code',
|
|
46
47
|
type: 'problem',
|
|
47
48
|
messages: {
|
|
48
|
-
legacyElevation: "Elevations can be sourced from the global theme using the token function made of both a background and shadow. Use \"card\" for card elevations, and \"overlay\" for anything else that should appear elevated
|
|
49
|
-
hardCodedColor: "Colors can be sourced from the global theme using the token function
|
|
49
|
+
legacyElevation: "Elevations can be sourced from the global theme using the token function made of both a background and shadow. Use \"card\" for card elevations, and \"overlay\" for anything else that should appear elevated.",
|
|
50
|
+
hardCodedColor: "Colors can be sourced from the global theme using the token function."
|
|
50
51
|
}
|
|
51
52
|
},
|
|
52
53
|
create: function create(context) {
|
|
@@ -192,6 +193,6 @@ var rule = {
|
|
|
192
193
|
}
|
|
193
194
|
};
|
|
194
195
|
}
|
|
195
|
-
};
|
|
196
|
+
});
|
|
196
197
|
var _default = rule;
|
|
197
198
|
exports.default = _default;
|
|
@@ -28,7 +28,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
28
28
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
29
29
|
var _tokensRaw = require("@atlaskit/tokens/tokens-raw");
|
|
30
30
|
var typographyProperties = ['fontSize', 'fontWeight', 'fontFamily', 'lineHeight'];
|
|
31
|
-
var properties = ['padding', 'paddingBlock', 'paddingInline', 'paddingLeft', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd', 'marginLeft', 'marginTop', 'marginRight', 'marginBottom', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd', 'margin', 'gap', 'rowGap', 'gridRowGap', 'columnGap', 'gridColumnGap'];
|
|
31
|
+
var properties = ['padding', 'paddingBlock', 'paddingInline', 'paddingLeft', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd', 'marginLeft', 'marginTop', 'marginRight', 'marginBottom', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd', 'margin', 'gap', 'rowGap', 'gridRowGap', 'columnGap', 'gridColumnGap', 'top', 'left', 'right', 'bottom', 'inlineStart', 'inlineEnd', 'blockStart', 'blockEnd', 'outline-offset'];
|
|
32
32
|
/**
|
|
33
33
|
* Currently we have a wide range of experimental spacing tokens that we are testing.
|
|
34
34
|
* We only want transforms to apply to the stable scale values, not the rest.
|
|
@@ -5,18 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
8
|
+
var _createRule = require("../utils/create-rule");
|
|
8
9
|
var _jsx = require("../utils/jsx");
|
|
9
10
|
var elements = ['AkButton', 'AKButton', 'Button', 'MenuItem', 'ButtonItem', 'CustomItem', 'CustomThemeButton', 'LoadingButton', 'BreadcrumbsItem'];
|
|
10
11
|
var elementsIconProps = ['iconBefore', 'iconAfter', 'icon'];
|
|
11
|
-
var rule = {
|
|
12
|
+
var rule = (0, _createRule.createLintRule)({
|
|
12
13
|
meta: {
|
|
14
|
+
name: 'icon-label',
|
|
13
15
|
fixable: 'code',
|
|
14
16
|
type: 'suggestion',
|
|
15
17
|
docs: {
|
|
16
|
-
url: 'http://go/adsc/icon/usage#accessibility-guidelines',
|
|
17
18
|
description: 'Enforces accessible usage of icon labels when composed with Atlassian Design System components.',
|
|
18
|
-
// TODO: Move to createRule() api
|
|
19
|
-
// @ts-expect-error
|
|
20
19
|
recommended: 'warn'
|
|
21
20
|
},
|
|
22
21
|
messages: {
|
|
@@ -117,6 +116,6 @@ var rule = {
|
|
|
117
116
|
})
|
|
118
117
|
};
|
|
119
118
|
}
|
|
120
|
-
};
|
|
119
|
+
});
|
|
121
120
|
var _default = rule;
|
|
122
121
|
exports.default = _default;
|
|
@@ -5,13 +5,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
8
|
+
var _createRule = require("../utils/create-rule");
|
|
8
9
|
var _paths = require("./paths");
|
|
9
|
-
var rule = {
|
|
10
|
+
var rule = (0, _createRule.createLintRule)({
|
|
10
11
|
meta: {
|
|
12
|
+
name: 'no-banned-imports',
|
|
11
13
|
type: 'problem',
|
|
12
14
|
docs: {
|
|
13
15
|
description: 'Disallow importing banned modules.',
|
|
14
|
-
recommended:
|
|
16
|
+
recommended: 'error'
|
|
15
17
|
},
|
|
16
18
|
messages: {
|
|
17
19
|
path: "The '{{importSource}}' import is restricted from being used. {{customMessage}}"
|
|
@@ -45,6 +47,6 @@ var rule = {
|
|
|
45
47
|
ExportDefaultDeclaration: checkNode
|
|
46
48
|
};
|
|
47
49
|
}
|
|
48
|
-
};
|
|
50
|
+
});
|
|
49
51
|
var _default = rule;
|
|
50
52
|
exports.default = _default;
|
|
@@ -39,7 +39,7 @@ var rule = (0, _createRule.createRule)({
|
|
|
39
39
|
type: 'suggestion',
|
|
40
40
|
docs: {
|
|
41
41
|
description: 'Disallow using deprecated APIs.',
|
|
42
|
-
recommended: '
|
|
42
|
+
recommended: 'error'
|
|
43
43
|
},
|
|
44
44
|
messages: {
|
|
45
45
|
noDeprecatedJSXAttributes: 'The JSX attribute {{propName}} has been deprecated.'
|
|
@@ -7,11 +7,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _renameMapping = _interopRequireDefault(require("@atlaskit/tokens/rename-mapping"));
|
|
9
9
|
var _tokenIds = require("@atlaskit/tokens/token-ids");
|
|
10
|
-
var
|
|
10
|
+
var _createRule = require("../utils/create-rule");
|
|
11
|
+
var rule = (0, _createRule.createLintRule)({
|
|
11
12
|
meta: {
|
|
13
|
+
name: 'no-deprecated-design-token-usage',
|
|
12
14
|
docs: {
|
|
13
15
|
description: 'Disallow using deprecated design tokens.',
|
|
14
|
-
recommended:
|
|
16
|
+
recommended: 'warn'
|
|
15
17
|
},
|
|
16
18
|
fixable: 'code',
|
|
17
19
|
type: 'problem',
|
|
@@ -58,6 +60,6 @@ var rule = {
|
|
|
58
60
|
}
|
|
59
61
|
};
|
|
60
62
|
}
|
|
61
|
-
};
|
|
63
|
+
});
|
|
62
64
|
var _default = rule;
|
|
63
65
|
exports.default = _default;
|
|
@@ -52,7 +52,7 @@ var rule = (0, _createRule.createRule)({
|
|
|
52
52
|
type: 'suggestion',
|
|
53
53
|
docs: {
|
|
54
54
|
description: 'Disallow importing deprecated modules.',
|
|
55
|
-
recommended: '
|
|
55
|
+
recommended: 'error'
|
|
56
56
|
},
|
|
57
57
|
messages: {
|
|
58
58
|
pathWithCustomMessage: "'{{importSource}}' import is restricted from being used. {{customMessage}}",
|
|
@@ -5,10 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
8
|
-
var
|
|
8
|
+
var _createRule = require("../utils/create-rule");
|
|
9
|
+
var rule = (0, _createRule.createLintRule)({
|
|
9
10
|
meta: {
|
|
11
|
+
name: 'no-margin',
|
|
10
12
|
type: 'problem',
|
|
11
13
|
docs: {
|
|
14
|
+
recommended: false,
|
|
12
15
|
description: 'Disallow using the margin CSS property.'
|
|
13
16
|
},
|
|
14
17
|
messages: {
|
|
@@ -78,6 +81,6 @@ var rule = {
|
|
|
78
81
|
}
|
|
79
82
|
};
|
|
80
83
|
}
|
|
81
|
-
};
|
|
84
|
+
});
|
|
82
85
|
var _default = rule;
|
|
83
86
|
exports.default = _default;
|
|
@@ -9,16 +9,18 @@ var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
|
9
9
|
var _renameMapping = _interopRequireDefault(require("@atlaskit/tokens/rename-mapping"));
|
|
10
10
|
var _tokenIds = require("@atlaskit/tokens/token-ids");
|
|
11
11
|
var _tokenNames = _interopRequireDefault(require("@atlaskit/tokens/token-names"));
|
|
12
|
+
var _createRule = require("../utils/create-rule");
|
|
12
13
|
var _isNode = require("../utils/is-node");
|
|
13
14
|
var _isToken = require("../utils/is-token");
|
|
14
15
|
var defaultConfig = {
|
|
15
16
|
shouldEnforceFallbacks: false
|
|
16
17
|
};
|
|
17
|
-
var rule = {
|
|
18
|
+
var rule = (0, _createRule.createLintRule)({
|
|
18
19
|
meta: {
|
|
20
|
+
name: 'no-unsafe-design-token-usage',
|
|
19
21
|
docs: {
|
|
20
22
|
description: 'Enforces design token usage is statically and locally analyzable.',
|
|
21
|
-
recommended:
|
|
23
|
+
recommended: 'error'
|
|
22
24
|
},
|
|
23
25
|
fixable: 'code',
|
|
24
26
|
type: 'problem',
|
|
@@ -173,6 +175,6 @@ var rule = {
|
|
|
173
175
|
}
|
|
174
176
|
};
|
|
175
177
|
}
|
|
176
|
-
};
|
|
178
|
+
});
|
|
177
179
|
var _default = rule;
|
|
178
180
|
exports.default = _default;
|
|
@@ -5,12 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
8
|
+
var _createRule = require("../utils/create-rule");
|
|
8
9
|
var _utils = require("./utils");
|
|
9
10
|
var boxDocsUrl = 'https://atlassian.design/components/primitves/box/examples';
|
|
10
11
|
var inlineDocsUrl = 'https://atlassian.design/components/primitves/inline/examples';
|
|
11
12
|
var stackDocsUrl = 'https://atlassian.design/components/primitves/stack/examples';
|
|
12
|
-
var rule = {
|
|
13
|
+
var rule = (0, _createRule.createLintRule)({
|
|
13
14
|
meta: {
|
|
15
|
+
name: 'use-primitives',
|
|
14
16
|
type: 'suggestion',
|
|
15
17
|
fixable: 'code',
|
|
16
18
|
docs: {
|
|
@@ -104,6 +106,6 @@ var rule = {
|
|
|
104
106
|
}
|
|
105
107
|
};
|
|
106
108
|
}
|
|
107
|
-
};
|
|
109
|
+
});
|
|
108
110
|
var _default = rule;
|
|
109
111
|
exports.default = _default;
|
|
@@ -7,20 +7,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
9
|
var _eslintCodemodUtils = require("eslint-codemod-utils");
|
|
10
|
+
var _createRule = require("../utils/create-rule");
|
|
10
11
|
var _isNode = require("../utils/is-node");
|
|
11
12
|
var _fixJsx = _interopRequireDefault(require("./fix-jsx"));
|
|
12
13
|
var _fixVanilla = _interopRequireDefault(require("./fix-vanilla"));
|
|
13
14
|
var _utils = require("./utils");
|
|
14
|
-
/* eslint-disable @atlaskit/design-system/use-visually-hidden */
|
|
15
|
-
|
|
16
15
|
var THEME_IMPORT_NAMES = ['visuallyHidden', 'assistive'];
|
|
17
|
-
var rule = {
|
|
16
|
+
var rule = (0, _createRule.createLintRule)({
|
|
18
17
|
meta: {
|
|
18
|
+
name: 'use-visually-hidden',
|
|
19
19
|
type: 'suggestion',
|
|
20
20
|
fixable: 'code',
|
|
21
21
|
docs: {
|
|
22
22
|
description: 'Enforce usage of the visually hidden component.',
|
|
23
|
-
recommended:
|
|
23
|
+
recommended: 'error'
|
|
24
24
|
},
|
|
25
25
|
messages: {
|
|
26
26
|
noDeprecatedUsage: 'Using the export `{{local}}` from `{{import}}` as a mixin is discouraged. Please use `@atlaskit/visually-hidden` instead.',
|
|
@@ -166,6 +166,6 @@ var rule = {
|
|
|
166
166
|
}
|
|
167
167
|
};
|
|
168
168
|
}
|
|
169
|
-
};
|
|
169
|
+
});
|
|
170
170
|
var _default = rule;
|
|
171
171
|
exports.default = _default;
|
|
@@ -3,9 +3,29 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.createRule = void 0;
|
|
6
|
+
exports.createRule = exports.createLintRule = void 0;
|
|
7
7
|
var _utils = require("@typescript-eslint/utils");
|
|
8
|
+
/**
|
|
9
|
+
* We are moving to our own small abstraction to create a lint rule that we have the power
|
|
10
|
+
* to change and mold to our own needs.
|
|
11
|
+
*
|
|
12
|
+
* @see createLintRule
|
|
13
|
+
*
|
|
14
|
+
* @private
|
|
15
|
+
* @deprecated
|
|
16
|
+
*/
|
|
8
17
|
var createRule = _utils.ESLintUtils.RuleCreator(function (name) {
|
|
9
|
-
return "https://atlassian.design/components/eslint-plugin-design-system/
|
|
18
|
+
return "https://atlassian.design/components/eslint-plugin-design-system/usage#".concat(name);
|
|
10
19
|
});
|
|
11
|
-
exports.createRule = createRule;
|
|
20
|
+
exports.createRule = createRule;
|
|
21
|
+
/**
|
|
22
|
+
* Tiny wrapped over the ESLint rule module type that ensures
|
|
23
|
+
* there is a docs link to our ESLint plugin documentation page,
|
|
24
|
+
* as well as improving type support.
|
|
25
|
+
*/
|
|
26
|
+
var createLintRule = function createLintRule(rule) {
|
|
27
|
+
var url = "https://atlassian.design/components/eslint-plugin-design-system/usage#".concat(rule.meta.name);
|
|
28
|
+
rule.meta.docs.url = url;
|
|
29
|
+
return rule;
|
|
30
|
+
};
|
|
31
|
+
exports.createLintRule = createLintRule;
|
package/dist/cjs/version.json
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
|
|
3
|
-
* @codegen <<SignedSource::
|
|
3
|
+
* @codegen <<SignedSource::b3d2f24d8d37a87fc2bbd964dfdcb87c>>
|
|
4
4
|
* @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
|
|
5
5
|
*/
|
|
6
6
|
export default {
|
|
7
7
|
plugins: ['@atlaskit/design-system'],
|
|
8
8
|
rules: {
|
|
9
|
+
'@atlaskit/design-system/ensure-design-token-usage': 'error',
|
|
9
10
|
'@atlaskit/design-system/icon-label': 'warn',
|
|
10
11
|
'@atlaskit/design-system/no-banned-imports': 'error',
|
|
11
|
-
'@atlaskit/design-system/no-deprecated-apis': '
|
|
12
|
-
'@atlaskit/design-system/no-deprecated-
|
|
12
|
+
'@atlaskit/design-system/no-deprecated-apis': 'error',
|
|
13
|
+
'@atlaskit/design-system/no-deprecated-design-token-usage': 'warn',
|
|
14
|
+
'@atlaskit/design-system/no-deprecated-imports': 'error',
|
|
15
|
+
'@atlaskit/design-system/no-unsafe-design-token-usage': 'error',
|
|
13
16
|
'@atlaskit/design-system/use-visually-hidden': 'error'
|
|
14
17
|
}
|
|
15
18
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
2
|
+
import { createLintRule } from '../utils/create-rule';
|
|
2
3
|
import { getIsException } from '../utils/get-is-exception';
|
|
3
4
|
import { includesHardCodedColor, isHardCodedColor, isLegacyColor, isLegacyNamedColor } from '../utils/is-color';
|
|
4
5
|
import { isLegacyElevation } from '../utils/is-elevation';
|
|
@@ -19,29 +20,19 @@ const getTokenSuggestion = (node, reference, config) => [{
|
|
|
19
20
|
const filterSuggestion = ({
|
|
20
21
|
shouldReturnSuggestion
|
|
21
22
|
}) => shouldReturnSuggestion;
|
|
22
|
-
const rule = {
|
|
23
|
+
const rule = createLintRule({
|
|
23
24
|
meta: {
|
|
24
|
-
|
|
25
|
+
name: 'ensure-design-token-usage',
|
|
25
26
|
hasSuggestions: true,
|
|
26
27
|
docs: {
|
|
27
28
|
description: 'Enforces usage of design tokens.',
|
|
28
|
-
recommended:
|
|
29
|
+
recommended: 'error'
|
|
29
30
|
},
|
|
30
31
|
fixable: 'code',
|
|
31
32
|
type: 'problem',
|
|
32
33
|
messages: {
|
|
33
|
-
legacyElevation: `Elevations can be sourced from the global theme using the token function made of both a background and shadow. Use "card" for card elevations, and "overlay" for anything else that should appear elevated
|
|
34
|
-
|
|
35
|
-
{{example}}
|
|
36
|
-
`,
|
|
37
|
-
hardCodedColor: `Colors can be sourced from the global theme using the token function.
|
|
38
|
-
|
|
39
|
-
\`\`\`
|
|
40
|
-
import { token } from '@atlaskit/tokens';
|
|
41
|
-
|
|
42
|
-
token('color.background.blanket');
|
|
43
|
-
\`\`\`
|
|
44
|
-
`
|
|
34
|
+
legacyElevation: `Elevations can be sourced from the global theme using the token function made of both a background and shadow. Use "card" for card elevations, and "overlay" for anything else that should appear elevated.`,
|
|
35
|
+
hardCodedColor: `Colors can be sourced from the global theme using the token function.`
|
|
45
36
|
}
|
|
46
37
|
},
|
|
47
38
|
create(context) {
|
|
@@ -191,5 +182,5 @@ ${' '.repeat(getNodeColumn(node) - 2)}box-shadow: \${token('${elevation.shadow}'
|
|
|
191
182
|
}
|
|
192
183
|
};
|
|
193
184
|
}
|
|
194
|
-
};
|
|
185
|
+
});
|
|
195
186
|
export default rule;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { callExpression, identifier, insertAtStartOfFile, insertImportDeclaration, isNodeOfType, literal } from 'eslint-codemod-utils';
|
|
2
2
|
import { spacing as spacingScale, typography as typographyTokens } from '@atlaskit/tokens/tokens-raw';
|
|
3
3
|
const typographyProperties = ['fontSize', 'fontWeight', 'fontFamily', 'lineHeight'];
|
|
4
|
-
const properties = ['padding', 'paddingBlock', 'paddingInline', 'paddingLeft', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd', 'marginLeft', 'marginTop', 'marginRight', 'marginBottom', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd', 'margin', 'gap', 'rowGap', 'gridRowGap', 'columnGap', 'gridColumnGap'];
|
|
4
|
+
const properties = ['padding', 'paddingBlock', 'paddingInline', 'paddingLeft', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd', 'marginLeft', 'marginTop', 'marginRight', 'marginBottom', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd', 'margin', 'gap', 'rowGap', 'gridRowGap', 'columnGap', 'gridColumnGap', 'top', 'left', 'right', 'bottom', 'inlineStart', 'inlineEnd', 'blockStart', 'blockEnd', 'outline-offset'];
|
|
5
5
|
/**
|
|
6
6
|
* Currently we have a wide range of experimental spacing tokens that we are testing.
|
|
7
7
|
* We only want transforms to apply to the stable scale values, not the rest.
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
2
|
+
import { createLintRule } from '../utils/create-rule';
|
|
2
3
|
import { findProp } from '../utils/jsx';
|
|
3
4
|
const elements = ['AkButton', 'AKButton', 'Button', 'MenuItem', 'ButtonItem', 'CustomItem', 'CustomThemeButton', 'LoadingButton', 'BreadcrumbsItem'];
|
|
4
5
|
const elementsIconProps = ['iconBefore', 'iconAfter', 'icon'];
|
|
5
|
-
const rule = {
|
|
6
|
+
const rule = createLintRule({
|
|
6
7
|
meta: {
|
|
8
|
+
name: 'icon-label',
|
|
7
9
|
fixable: 'code',
|
|
8
10
|
type: 'suggestion',
|
|
9
11
|
docs: {
|
|
10
|
-
url: 'http://go/adsc/icon/usage#accessibility-guidelines',
|
|
11
12
|
description: 'Enforces accessible usage of icon labels when composed with Atlassian Design System components.',
|
|
12
|
-
// TODO: Move to createRule() api
|
|
13
|
-
// @ts-expect-error
|
|
14
13
|
recommended: 'warn'
|
|
15
14
|
},
|
|
16
15
|
messages: {
|
|
@@ -97,5 +96,5 @@ const rule = {
|
|
|
97
96
|
}
|
|
98
97
|
};
|
|
99
98
|
}
|
|
100
|
-
};
|
|
99
|
+
});
|
|
101
100
|
export default rule;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
2
|
+
import { createLintRule } from '../utils/create-rule';
|
|
2
3
|
import { restrictedPaths } from './paths';
|
|
3
|
-
const rule = {
|
|
4
|
+
const rule = createLintRule({
|
|
4
5
|
meta: {
|
|
6
|
+
name: 'no-banned-imports',
|
|
5
7
|
type: 'problem',
|
|
6
8
|
docs: {
|
|
7
9
|
description: 'Disallow importing banned modules.',
|
|
8
|
-
recommended:
|
|
10
|
+
recommended: 'error'
|
|
9
11
|
},
|
|
10
12
|
messages: {
|
|
11
13
|
path: "The '{{importSource}}' import is restricted from being used. {{customMessage}}"
|
|
@@ -40,5 +42,5 @@ const rule = {
|
|
|
40
42
|
ExportDefaultDeclaration: checkNode
|
|
41
43
|
};
|
|
42
44
|
}
|
|
43
|
-
};
|
|
45
|
+
});
|
|
44
46
|
export default rule;
|
|
@@ -27,7 +27,7 @@ const rule = createRule({
|
|
|
27
27
|
type: 'suggestion',
|
|
28
28
|
docs: {
|
|
29
29
|
description: 'Disallow using deprecated APIs.',
|
|
30
|
-
recommended: '
|
|
30
|
+
recommended: 'error'
|
|
31
31
|
},
|
|
32
32
|
messages: {
|
|
33
33
|
noDeprecatedJSXAttributes: 'The JSX attribute {{propName}} has been deprecated.'
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import renameMapping from '@atlaskit/tokens/rename-mapping';
|
|
2
2
|
import { getTokenId } from '@atlaskit/tokens/token-ids';
|
|
3
|
-
|
|
3
|
+
import { createLintRule } from '../utils/create-rule';
|
|
4
|
+
const rule = createLintRule({
|
|
4
5
|
meta: {
|
|
6
|
+
name: 'no-deprecated-design-token-usage',
|
|
5
7
|
docs: {
|
|
6
8
|
description: 'Disallow using deprecated design tokens.',
|
|
7
|
-
recommended:
|
|
9
|
+
recommended: 'warn'
|
|
8
10
|
},
|
|
9
11
|
fixable: 'code',
|
|
10
12
|
type: 'problem',
|
|
@@ -45,5 +47,5 @@ const rule = {
|
|
|
45
47
|
}
|
|
46
48
|
};
|
|
47
49
|
}
|
|
48
|
-
};
|
|
50
|
+
});
|
|
49
51
|
export default rule;
|
|
@@ -40,7 +40,7 @@ const rule = createRule({
|
|
|
40
40
|
type: 'suggestion',
|
|
41
41
|
docs: {
|
|
42
42
|
description: 'Disallow importing deprecated modules.',
|
|
43
|
-
recommended: '
|
|
43
|
+
recommended: 'error'
|
|
44
44
|
},
|
|
45
45
|
messages: {
|
|
46
46
|
pathWithCustomMessage: "'{{importSource}}' import is restricted from being used. {{customMessage}}",
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
2
|
-
|
|
2
|
+
import { createLintRule } from '../utils/create-rule';
|
|
3
|
+
const rule = createLintRule({
|
|
3
4
|
meta: {
|
|
5
|
+
name: 'no-margin',
|
|
4
6
|
type: 'problem',
|
|
5
7
|
docs: {
|
|
8
|
+
recommended: false,
|
|
6
9
|
description: 'Disallow using the margin CSS property.'
|
|
7
10
|
},
|
|
8
11
|
messages: {
|
|
@@ -66,5 +69,5 @@ const rule = {
|
|
|
66
69
|
}
|
|
67
70
|
};
|
|
68
71
|
}
|
|
69
|
-
};
|
|
72
|
+
});
|
|
70
73
|
export default rule;
|
|
@@ -2,16 +2,18 @@ import { isNodeOfType } from 'eslint-codemod-utils';
|
|
|
2
2
|
import renameMapping from '@atlaskit/tokens/rename-mapping';
|
|
3
3
|
import { getTokenId } from '@atlaskit/tokens/token-ids';
|
|
4
4
|
import tokens from '@atlaskit/tokens/token-names';
|
|
5
|
+
import { createLintRule } from '../utils/create-rule';
|
|
5
6
|
import { isDecendantOfStyleBlock, isDecendantOfStyleJsxAttribute } from '../utils/is-node';
|
|
6
7
|
import { isToken } from '../utils/is-token';
|
|
7
8
|
const defaultConfig = {
|
|
8
9
|
shouldEnforceFallbacks: false
|
|
9
10
|
};
|
|
10
|
-
const rule = {
|
|
11
|
+
const rule = createLintRule({
|
|
11
12
|
meta: {
|
|
13
|
+
name: 'no-unsafe-design-token-usage',
|
|
12
14
|
docs: {
|
|
13
15
|
description: 'Enforces design token usage is statically and locally analyzable.',
|
|
14
|
-
recommended:
|
|
16
|
+
recommended: 'error'
|
|
15
17
|
},
|
|
16
18
|
fixable: 'code',
|
|
17
19
|
type: 'problem',
|
|
@@ -172,5 +174,5 @@ token('color.background.blanket');
|
|
|
172
174
|
}
|
|
173
175
|
};
|
|
174
176
|
}
|
|
175
|
-
};
|
|
177
|
+
});
|
|
176
178
|
export default rule;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
2
|
+
import { createLintRule } from '../utils/create-rule';
|
|
2
3
|
import { primitiveFixer, shouldSuggestBox, shouldSuggestInline, shouldSuggestStack } from './utils';
|
|
3
4
|
const boxDocsUrl = 'https://atlassian.design/components/primitves/box/examples';
|
|
4
5
|
const inlineDocsUrl = 'https://atlassian.design/components/primitves/inline/examples';
|
|
5
6
|
const stackDocsUrl = 'https://atlassian.design/components/primitves/stack/examples';
|
|
6
|
-
const rule = {
|
|
7
|
+
const rule = createLintRule({
|
|
7
8
|
meta: {
|
|
9
|
+
name: 'use-primitives',
|
|
8
10
|
type: 'suggestion',
|
|
9
11
|
fixable: 'code',
|
|
10
12
|
docs: {
|
|
@@ -98,5 +100,5 @@ const rule = {
|
|
|
98
100
|
}
|
|
99
101
|
};
|
|
100
102
|
}
|
|
101
|
-
};
|
|
103
|
+
});
|
|
102
104
|
export default rule;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
/* eslint-disable @atlaskit/design-system/use-visually-hidden */
|
|
2
|
-
|
|
3
1
|
import { closestOfType, hasImportDeclaration, isNodeOfType } from 'eslint-codemod-utils';
|
|
2
|
+
import { createLintRule } from '../utils/create-rule';
|
|
4
3
|
import { isStyledObjectNode, isStyledTemplateNode } from '../utils/is-node';
|
|
5
4
|
import fixJsx from './fix-jsx';
|
|
6
5
|
import fixVanilla from './fix-vanilla';
|
|
7
6
|
import { countMatchingKeyValues, getObjectLikeness, makeTemplateLiteralIntoEntries } from './utils';
|
|
8
7
|
const THEME_IMPORT_NAMES = ['visuallyHidden', 'assistive'];
|
|
9
|
-
const rule = {
|
|
8
|
+
const rule = createLintRule({
|
|
10
9
|
meta: {
|
|
10
|
+
name: 'use-visually-hidden',
|
|
11
11
|
type: 'suggestion',
|
|
12
12
|
fixable: 'code',
|
|
13
13
|
docs: {
|
|
14
14
|
description: 'Enforce usage of the visually hidden component.',
|
|
15
|
-
recommended:
|
|
15
|
+
recommended: 'error'
|
|
16
16
|
},
|
|
17
17
|
messages: {
|
|
18
18
|
noDeprecatedUsage: 'Using the export `{{local}}` from `{{import}}` as a mixin is discouraged. Please use `@atlaskit/visually-hidden` instead.',
|
|
@@ -145,5 +145,5 @@ const rule = {
|
|
|
145
145
|
}
|
|
146
146
|
};
|
|
147
147
|
}
|
|
148
|
-
};
|
|
148
|
+
});
|
|
149
149
|
export default rule;
|
|
@@ -1,2 +1,21 @@
|
|
|
1
1
|
import { ESLintUtils } from '@typescript-eslint/utils';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* We are moving to our own small abstraction to create a lint rule that we have the power
|
|
4
|
+
* to change and mold to our own needs.
|
|
5
|
+
*
|
|
6
|
+
* @see createLintRule
|
|
7
|
+
*
|
|
8
|
+
* @private
|
|
9
|
+
* @deprecated
|
|
10
|
+
*/
|
|
11
|
+
export const createRule = ESLintUtils.RuleCreator(name => `https://atlassian.design/components/eslint-plugin-design-system/usage#${name}`);
|
|
12
|
+
/**
|
|
13
|
+
* Tiny wrapped over the ESLint rule module type that ensures
|
|
14
|
+
* there is a docs link to our ESLint plugin documentation page,
|
|
15
|
+
* as well as improving type support.
|
|
16
|
+
*/
|
|
17
|
+
export const createLintRule = rule => {
|
|
18
|
+
const url = `https://atlassian.design/components/eslint-plugin-design-system/usage#${rule.meta.name}`;
|
|
19
|
+
rule.meta.docs.url = url;
|
|
20
|
+
return rule;
|
|
21
|
+
};
|
package/dist/es2019/version.json
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
|
|
3
|
-
* @codegen <<SignedSource::
|
|
3
|
+
* @codegen <<SignedSource::b3d2f24d8d37a87fc2bbd964dfdcb87c>>
|
|
4
4
|
* @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
|
|
5
5
|
*/
|
|
6
6
|
export default {
|
|
7
7
|
plugins: ['@atlaskit/design-system'],
|
|
8
8
|
rules: {
|
|
9
|
+
'@atlaskit/design-system/ensure-design-token-usage': 'error',
|
|
9
10
|
'@atlaskit/design-system/icon-label': 'warn',
|
|
10
11
|
'@atlaskit/design-system/no-banned-imports': 'error',
|
|
11
|
-
'@atlaskit/design-system/no-deprecated-apis': '
|
|
12
|
-
'@atlaskit/design-system/no-deprecated-
|
|
12
|
+
'@atlaskit/design-system/no-deprecated-apis': 'error',
|
|
13
|
+
'@atlaskit/design-system/no-deprecated-design-token-usage': 'warn',
|
|
14
|
+
'@atlaskit/design-system/no-deprecated-imports': 'error',
|
|
15
|
+
'@atlaskit/design-system/no-unsafe-design-token-usage': 'error',
|
|
13
16
|
'@atlaskit/design-system/use-visually-hidden': 'error'
|
|
14
17
|
}
|
|
15
18
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
2
|
+
import { createLintRule } from '../utils/create-rule';
|
|
2
3
|
import { getIsException } from '../utils/get-is-exception';
|
|
3
4
|
import { includesHardCodedColor, isHardCodedColor, isLegacyColor, isLegacyNamedColor } from '../utils/is-color';
|
|
4
5
|
import { isLegacyElevation } from '../utils/is-elevation';
|
|
@@ -28,19 +29,19 @@ var filterSuggestion = function filterSuggestion(_ref) {
|
|
|
28
29
|
var shouldReturnSuggestion = _ref.shouldReturnSuggestion;
|
|
29
30
|
return shouldReturnSuggestion;
|
|
30
31
|
};
|
|
31
|
-
var rule = {
|
|
32
|
+
var rule = createLintRule({
|
|
32
33
|
meta: {
|
|
33
|
-
|
|
34
|
+
name: 'ensure-design-token-usage',
|
|
34
35
|
hasSuggestions: true,
|
|
35
36
|
docs: {
|
|
36
37
|
description: 'Enforces usage of design tokens.',
|
|
37
|
-
recommended:
|
|
38
|
+
recommended: 'error'
|
|
38
39
|
},
|
|
39
40
|
fixable: 'code',
|
|
40
41
|
type: 'problem',
|
|
41
42
|
messages: {
|
|
42
|
-
legacyElevation: "Elevations can be sourced from the global theme using the token function made of both a background and shadow. Use \"card\" for card elevations, and \"overlay\" for anything else that should appear elevated
|
|
43
|
-
hardCodedColor: "Colors can be sourced from the global theme using the token function
|
|
43
|
+
legacyElevation: "Elevations can be sourced from the global theme using the token function made of both a background and shadow. Use \"card\" for card elevations, and \"overlay\" for anything else that should appear elevated.",
|
|
44
|
+
hardCodedColor: "Colors can be sourced from the global theme using the token function."
|
|
44
45
|
}
|
|
45
46
|
},
|
|
46
47
|
create: function create(context) {
|
|
@@ -186,5 +187,5 @@ var rule = {
|
|
|
186
187
|
}
|
|
187
188
|
};
|
|
188
189
|
}
|
|
189
|
-
};
|
|
190
|
+
});
|
|
190
191
|
export default rule;
|
|
@@ -2,7 +2,7 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
|
2
2
|
import { callExpression, identifier, insertAtStartOfFile, insertImportDeclaration, isNodeOfType, literal } from 'eslint-codemod-utils';
|
|
3
3
|
import { spacing as spacingScale, typography as typographyTokens } from '@atlaskit/tokens/tokens-raw';
|
|
4
4
|
var typographyProperties = ['fontSize', 'fontWeight', 'fontFamily', 'lineHeight'];
|
|
5
|
-
var properties = ['padding', 'paddingBlock', 'paddingInline', 'paddingLeft', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd', 'marginLeft', 'marginTop', 'marginRight', 'marginBottom', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd', 'margin', 'gap', 'rowGap', 'gridRowGap', 'columnGap', 'gridColumnGap'];
|
|
5
|
+
var properties = ['padding', 'paddingBlock', 'paddingInline', 'paddingLeft', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd', 'marginLeft', 'marginTop', 'marginRight', 'marginBottom', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd', 'margin', 'gap', 'rowGap', 'gridRowGap', 'columnGap', 'gridColumnGap', 'top', 'left', 'right', 'bottom', 'inlineStart', 'inlineEnd', 'blockStart', 'blockEnd', 'outline-offset'];
|
|
6
6
|
/**
|
|
7
7
|
* Currently we have a wide range of experimental spacing tokens that we are testing.
|
|
8
8
|
* We only want transforms to apply to the stable scale values, not the rest.
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
2
|
+
import { createLintRule } from '../utils/create-rule';
|
|
2
3
|
import { findProp } from '../utils/jsx';
|
|
3
4
|
var elements = ['AkButton', 'AKButton', 'Button', 'MenuItem', 'ButtonItem', 'CustomItem', 'CustomThemeButton', 'LoadingButton', 'BreadcrumbsItem'];
|
|
4
5
|
var elementsIconProps = ['iconBefore', 'iconAfter', 'icon'];
|
|
5
|
-
var rule = {
|
|
6
|
+
var rule = createLintRule({
|
|
6
7
|
meta: {
|
|
8
|
+
name: 'icon-label',
|
|
7
9
|
fixable: 'code',
|
|
8
10
|
type: 'suggestion',
|
|
9
11
|
docs: {
|
|
10
|
-
url: 'http://go/adsc/icon/usage#accessibility-guidelines',
|
|
11
12
|
description: 'Enforces accessible usage of icon labels when composed with Atlassian Design System components.',
|
|
12
|
-
// TODO: Move to createRule() api
|
|
13
|
-
// @ts-expect-error
|
|
14
13
|
recommended: 'warn'
|
|
15
14
|
},
|
|
16
15
|
messages: {
|
|
@@ -111,5 +110,5 @@ var rule = {
|
|
|
111
110
|
})
|
|
112
111
|
};
|
|
113
112
|
}
|
|
114
|
-
};
|
|
113
|
+
});
|
|
115
114
|
export default rule;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
2
|
+
import { createLintRule } from '../utils/create-rule';
|
|
2
3
|
import { restrictedPaths } from './paths';
|
|
3
|
-
var rule = {
|
|
4
|
+
var rule = createLintRule({
|
|
4
5
|
meta: {
|
|
6
|
+
name: 'no-banned-imports',
|
|
5
7
|
type: 'problem',
|
|
6
8
|
docs: {
|
|
7
9
|
description: 'Disallow importing banned modules.',
|
|
8
|
-
recommended:
|
|
10
|
+
recommended: 'error'
|
|
9
11
|
},
|
|
10
12
|
messages: {
|
|
11
13
|
path: "The '{{importSource}}' import is restricted from being used. {{customMessage}}"
|
|
@@ -39,5 +41,5 @@ var rule = {
|
|
|
39
41
|
ExportDefaultDeclaration: checkNode
|
|
40
42
|
};
|
|
41
43
|
}
|
|
42
|
-
};
|
|
44
|
+
});
|
|
43
45
|
export default rule;
|
|
@@ -30,7 +30,7 @@ var rule = createRule({
|
|
|
30
30
|
type: 'suggestion',
|
|
31
31
|
docs: {
|
|
32
32
|
description: 'Disallow using deprecated APIs.',
|
|
33
|
-
recommended: '
|
|
33
|
+
recommended: 'error'
|
|
34
34
|
},
|
|
35
35
|
messages: {
|
|
36
36
|
noDeprecatedJSXAttributes: 'The JSX attribute {{propName}} has been deprecated.'
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import renameMapping from '@atlaskit/tokens/rename-mapping';
|
|
2
2
|
import { getTokenId } from '@atlaskit/tokens/token-ids';
|
|
3
|
-
|
|
3
|
+
import { createLintRule } from '../utils/create-rule';
|
|
4
|
+
var rule = createLintRule({
|
|
4
5
|
meta: {
|
|
6
|
+
name: 'no-deprecated-design-token-usage',
|
|
5
7
|
docs: {
|
|
6
8
|
description: 'Disallow using deprecated design tokens.',
|
|
7
|
-
recommended:
|
|
9
|
+
recommended: 'warn'
|
|
8
10
|
},
|
|
9
11
|
fixable: 'code',
|
|
10
12
|
type: 'problem',
|
|
@@ -51,5 +53,5 @@ var rule = {
|
|
|
51
53
|
}
|
|
52
54
|
};
|
|
53
55
|
}
|
|
54
|
-
};
|
|
56
|
+
});
|
|
55
57
|
export default rule;
|
|
@@ -44,7 +44,7 @@ var rule = createRule({
|
|
|
44
44
|
type: 'suggestion',
|
|
45
45
|
docs: {
|
|
46
46
|
description: 'Disallow importing deprecated modules.',
|
|
47
|
-
recommended: '
|
|
47
|
+
recommended: 'error'
|
|
48
48
|
},
|
|
49
49
|
messages: {
|
|
50
50
|
pathWithCustomMessage: "'{{importSource}}' import is restricted from being used. {{customMessage}}",
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
2
|
-
|
|
2
|
+
import { createLintRule } from '../utils/create-rule';
|
|
3
|
+
var rule = createLintRule({
|
|
3
4
|
meta: {
|
|
5
|
+
name: 'no-margin',
|
|
4
6
|
type: 'problem',
|
|
5
7
|
docs: {
|
|
8
|
+
recommended: false,
|
|
6
9
|
description: 'Disallow using the margin CSS property.'
|
|
7
10
|
},
|
|
8
11
|
messages: {
|
|
@@ -72,5 +75,5 @@ var rule = {
|
|
|
72
75
|
}
|
|
73
76
|
};
|
|
74
77
|
}
|
|
75
|
-
};
|
|
78
|
+
});
|
|
76
79
|
export default rule;
|
|
@@ -2,16 +2,18 @@ import { isNodeOfType } from 'eslint-codemod-utils';
|
|
|
2
2
|
import renameMapping from '@atlaskit/tokens/rename-mapping';
|
|
3
3
|
import { getTokenId } from '@atlaskit/tokens/token-ids';
|
|
4
4
|
import tokens from '@atlaskit/tokens/token-names';
|
|
5
|
+
import { createLintRule } from '../utils/create-rule';
|
|
5
6
|
import { isDecendantOfStyleBlock, isDecendantOfStyleJsxAttribute } from '../utils/is-node';
|
|
6
7
|
import { isToken } from '../utils/is-token';
|
|
7
8
|
var defaultConfig = {
|
|
8
9
|
shouldEnforceFallbacks: false
|
|
9
10
|
};
|
|
10
|
-
var rule = {
|
|
11
|
+
var rule = createLintRule({
|
|
11
12
|
meta: {
|
|
13
|
+
name: 'no-unsafe-design-token-usage',
|
|
12
14
|
docs: {
|
|
13
15
|
description: 'Enforces design token usage is statically and locally analyzable.',
|
|
14
|
-
recommended:
|
|
16
|
+
recommended: 'error'
|
|
15
17
|
},
|
|
16
18
|
fixable: 'code',
|
|
17
19
|
type: 'problem',
|
|
@@ -166,5 +168,5 @@ var rule = {
|
|
|
166
168
|
}
|
|
167
169
|
};
|
|
168
170
|
}
|
|
169
|
-
};
|
|
171
|
+
});
|
|
170
172
|
export default rule;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { isNodeOfType } from 'eslint-codemod-utils';
|
|
2
|
+
import { createLintRule } from '../utils/create-rule';
|
|
2
3
|
import { primitiveFixer, shouldSuggestBox, shouldSuggestInline, shouldSuggestStack } from './utils';
|
|
3
4
|
var boxDocsUrl = 'https://atlassian.design/components/primitves/box/examples';
|
|
4
5
|
var inlineDocsUrl = 'https://atlassian.design/components/primitves/inline/examples';
|
|
5
6
|
var stackDocsUrl = 'https://atlassian.design/components/primitves/stack/examples';
|
|
6
|
-
var rule = {
|
|
7
|
+
var rule = createLintRule({
|
|
7
8
|
meta: {
|
|
9
|
+
name: 'use-primitives',
|
|
8
10
|
type: 'suggestion',
|
|
9
11
|
fixable: 'code',
|
|
10
12
|
docs: {
|
|
@@ -98,5 +100,5 @@ var rule = {
|
|
|
98
100
|
}
|
|
99
101
|
};
|
|
100
102
|
}
|
|
101
|
-
};
|
|
103
|
+
});
|
|
102
104
|
export default rule;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
-
/* eslint-disable @atlaskit/design-system/use-visually-hidden */
|
|
3
|
-
|
|
4
2
|
import { closestOfType, hasImportDeclaration, isNodeOfType } from 'eslint-codemod-utils';
|
|
3
|
+
import { createLintRule } from '../utils/create-rule';
|
|
5
4
|
import { isStyledObjectNode, isStyledTemplateNode } from '../utils/is-node';
|
|
6
5
|
import fixJsx from './fix-jsx';
|
|
7
6
|
import fixVanilla from './fix-vanilla';
|
|
8
7
|
import { countMatchingKeyValues, getObjectLikeness, makeTemplateLiteralIntoEntries } from './utils';
|
|
9
8
|
var THEME_IMPORT_NAMES = ['visuallyHidden', 'assistive'];
|
|
10
|
-
var rule = {
|
|
9
|
+
var rule = createLintRule({
|
|
11
10
|
meta: {
|
|
11
|
+
name: 'use-visually-hidden',
|
|
12
12
|
type: 'suggestion',
|
|
13
13
|
fixable: 'code',
|
|
14
14
|
docs: {
|
|
15
15
|
description: 'Enforce usage of the visually hidden component.',
|
|
16
|
-
recommended:
|
|
16
|
+
recommended: 'error'
|
|
17
17
|
},
|
|
18
18
|
messages: {
|
|
19
19
|
noDeprecatedUsage: 'Using the export `{{local}}` from `{{import}}` as a mixin is discouraged. Please use `@atlaskit/visually-hidden` instead.',
|
|
@@ -159,5 +159,5 @@ var rule = {
|
|
|
159
159
|
}
|
|
160
160
|
};
|
|
161
161
|
}
|
|
162
|
-
};
|
|
162
|
+
});
|
|
163
163
|
export default rule;
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import { ESLintUtils } from '@typescript-eslint/utils';
|
|
2
|
+
/**
|
|
3
|
+
* We are moving to our own small abstraction to create a lint rule that we have the power
|
|
4
|
+
* to change and mold to our own needs.
|
|
5
|
+
*
|
|
6
|
+
* @see createLintRule
|
|
7
|
+
*
|
|
8
|
+
* @private
|
|
9
|
+
* @deprecated
|
|
10
|
+
*/
|
|
2
11
|
export var createRule = ESLintUtils.RuleCreator(function (name) {
|
|
3
|
-
return "https://atlassian.design/components/eslint-plugin-design-system/
|
|
4
|
-
});
|
|
12
|
+
return "https://atlassian.design/components/eslint-plugin-design-system/usage#".concat(name);
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Tiny wrapped over the ESLint rule module type that ensures
|
|
16
|
+
* there is a docs link to our ESLint plugin documentation page,
|
|
17
|
+
* as well as improving type support.
|
|
18
|
+
*/
|
|
19
|
+
export var createLintRule = function createLintRule(rule) {
|
|
20
|
+
var url = "https://atlassian.design/components/eslint-plugin-design-system/usage#".concat(rule.meta.name);
|
|
21
|
+
rule.meta.docs.url = url;
|
|
22
|
+
return rule;
|
|
23
|
+
};
|
package/dist/esm/version.json
CHANGED
|
@@ -19,10 +19,13 @@ export declare const configs: {
|
|
|
19
19
|
recommended: {
|
|
20
20
|
plugins: string[];
|
|
21
21
|
rules: {
|
|
22
|
+
'@atlaskit/design-system/ensure-design-token-usage': string;
|
|
22
23
|
'@atlaskit/design-system/icon-label': string;
|
|
23
24
|
'@atlaskit/design-system/no-banned-imports': string;
|
|
24
25
|
'@atlaskit/design-system/no-deprecated-apis': string;
|
|
26
|
+
'@atlaskit/design-system/no-deprecated-design-token-usage': string;
|
|
25
27
|
'@atlaskit/design-system/no-deprecated-imports': string;
|
|
28
|
+
'@atlaskit/design-system/no-unsafe-design-token-usage': string;
|
|
26
29
|
'@atlaskit/design-system/use-visually-hidden': string;
|
|
27
30
|
};
|
|
28
31
|
};
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
2
|
plugins: string[];
|
|
3
3
|
rules: {
|
|
4
|
+
'@atlaskit/design-system/ensure-design-token-usage': string;
|
|
4
5
|
'@atlaskit/design-system/icon-label': string;
|
|
5
6
|
'@atlaskit/design-system/no-banned-imports': string;
|
|
6
7
|
'@atlaskit/design-system/no-deprecated-apis': string;
|
|
8
|
+
'@atlaskit/design-system/no-deprecated-design-token-usage': string;
|
|
7
9
|
'@atlaskit/design-system/no-deprecated-imports': string;
|
|
10
|
+
'@atlaskit/design-system/no-unsafe-design-token-usage': string;
|
|
8
11
|
'@atlaskit/design-system/use-visually-hidden': string;
|
|
9
12
|
};
|
|
10
13
|
};
|
|
11
14
|
/**
|
|
12
15
|
* THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
|
|
13
|
-
* @codegen <<SignedSource::
|
|
16
|
+
* @codegen <<SignedSource::b3d2f24d8d37a87fc2bbd964dfdcb87c>>
|
|
14
17
|
* @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
|
|
15
18
|
*/
|
|
16
19
|
export default _default;
|
|
@@ -1,2 +1,45 @@
|
|
|
1
1
|
import { ESLintUtils } from '@typescript-eslint/utils';
|
|
2
|
+
import type { Rule } from 'eslint';
|
|
3
|
+
/**
|
|
4
|
+
* We are moving to our own small abstraction to create a lint rule that we have the power
|
|
5
|
+
* to change and mold to our own needs.
|
|
6
|
+
*
|
|
7
|
+
* @see createLintRule
|
|
8
|
+
*
|
|
9
|
+
* @private
|
|
10
|
+
* @deprecated
|
|
11
|
+
*/
|
|
2
12
|
export declare const createRule: <TOptions extends readonly unknown[], TMessageIds extends string, TRuleListener extends import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener = import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleListener>({ name, meta, ...rule }: Readonly<ESLintUtils.RuleWithMetaAndName<TOptions, TMessageIds, TRuleListener>>) => import("@typescript-eslint/utils/dist/ts-eslint/Rule").RuleModule<TMessageIds, TOptions, TRuleListener>;
|
|
13
|
+
export interface LintRule extends Omit<Rule.RuleModule, 'meta'> {
|
|
14
|
+
/**
|
|
15
|
+
* Including this for backwards compat moving from the typescript-eslint util.
|
|
16
|
+
*/
|
|
17
|
+
name?: never;
|
|
18
|
+
meta: LintRuleMeta;
|
|
19
|
+
}
|
|
20
|
+
export interface LintRuleMeta extends Omit<Rule.RuleMetaData, 'docs'> {
|
|
21
|
+
/**
|
|
22
|
+
* Name of the rule.
|
|
23
|
+
* Must match the folder it is in exactly else build will throw.
|
|
24
|
+
*/
|
|
25
|
+
name: string;
|
|
26
|
+
docs: {
|
|
27
|
+
/**
|
|
28
|
+
* Short description of what this rule does.
|
|
29
|
+
*/
|
|
30
|
+
description: string;
|
|
31
|
+
/**
|
|
32
|
+
* If this rule should be in the recommended preset or not.
|
|
33
|
+
* When setting to `"error"` it will mean releasing a breaking change.
|
|
34
|
+
*
|
|
35
|
+
* Set to `false` to exclude it from the recommended preset.
|
|
36
|
+
*/
|
|
37
|
+
recommended: 'warn' | 'error' | false;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Tiny wrapped over the ESLint rule module type that ensures
|
|
42
|
+
* there is a docs link to our ESLint plugin documentation page,
|
|
43
|
+
* as well as improving type support.
|
|
44
|
+
*/
|
|
45
|
+
export declare const createLintRule: (rule: LintRule) => Rule.RuleModule;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/eslint-plugin-design-system",
|
|
3
3
|
"description": "The essential plugin for use with the Atlassian Design System.",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "5.0.0",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"registry": "https://registry.npmjs.org/"
|