@atlaskit/eslint-plugin-design-system 4.20.0 → 5.0.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 +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/index.js +31 -14
- package/dist/cjs/rules/ensure-design-token-usage-spacing/utils.js +30 -7
- 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/index.js +31 -16
- package/dist/es2019/rules/ensure-design-token-usage-spacing/utils.js +25 -4
- 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/index.js +32 -15
- package/dist/esm/rules/ensure-design-token-usage-spacing/utils.js +25 -4
- 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/ensure-design-token-usage-spacing/utils.d.ts +2 -0
- 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.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`31ebca384fa`](https://bitbucket.org/atlassian/atlassian-frontend/commits/31ebca384fa) - Improved behaviour of `ensure-design-token-usage-spacing` rule to not report on or replace 0, auto, and calc within spacing properties.
|
|
8
|
+
|
|
9
|
+
## 5.0.0
|
|
10
|
+
|
|
11
|
+
### Major Changes
|
|
12
|
+
|
|
13
|
+
- [`b910bbe6130`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b910bbe6130) - The following rules are now included in the recommended preset as errors:
|
|
14
|
+
|
|
15
|
+
- ensure-design-token-usage
|
|
16
|
+
- no-deprecated-apis
|
|
17
|
+
- no-deprecated-imports
|
|
18
|
+
- no-unsafe-design-token-usage
|
|
19
|
+
|
|
20
|
+
The following rules are now included in the recommended preset as warnings:
|
|
21
|
+
|
|
22
|
+
- no-deprecated-design-token-usage
|
|
23
|
+
|
|
24
|
+
### Minor Changes
|
|
25
|
+
|
|
26
|
+
- [`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.
|
|
27
|
+
|
|
3
28
|
## 4.20.0
|
|
4
29
|
|
|
5
30
|
### Minor 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;
|
|
@@ -118,6 +118,11 @@ var rule = (0, _createRule.createRule)({
|
|
|
118
118
|
});
|
|
119
119
|
return;
|
|
120
120
|
}
|
|
121
|
+
|
|
122
|
+
// Don't report on CSS calc function
|
|
123
|
+
if (node.value.type === 'Literal' && (0, _utils.isCalc)(node.value.value)) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
121
126
|
var propertyName = node.key.name;
|
|
122
127
|
var isFontFamily = /fontFamily/.test(propertyName);
|
|
123
128
|
var value = (0, _utils.getValue)(node.value, context);
|
|
@@ -139,6 +144,11 @@ var rule = (0, _createRule.createRule)({
|
|
|
139
144
|
if (values.length === 1 || isFontFamily) {
|
|
140
145
|
var _values = (0, _slicedToArray2.default)(values, 1),
|
|
141
146
|
_value = _values[0];
|
|
147
|
+
|
|
148
|
+
// Do not report or suggest a token to replace `0`
|
|
149
|
+
if ((0, _utils.isZero)(_value)) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
142
152
|
var pixelValue = isFontFamily ? _value : (0, _utils.emToPixels)(_value, fontSize);
|
|
143
153
|
return context.report({
|
|
144
154
|
node: node,
|
|
@@ -170,17 +180,22 @@ var rule = (0, _createRule.createRule)({
|
|
|
170
180
|
* estree node.
|
|
171
181
|
*
|
|
172
182
|
* @example
|
|
173
|
-
* { padding: '8px 0px' }
|
|
183
|
+
* { padding: '8px 0px' }
|
|
174
184
|
*/
|
|
175
185
|
values.forEach(function (val, index) {
|
|
176
186
|
var pixelValue = (0, _utils.emToPixels)(val, fontSize);
|
|
187
|
+
|
|
188
|
+
// Do not report or suggest a token to replace `0`
|
|
189
|
+
if ((0, _utils.isZero)(val) || val === 'auto') {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
177
192
|
context.report({
|
|
178
193
|
node: node,
|
|
179
194
|
messageId: 'noRawSpacingValues',
|
|
180
195
|
data: {
|
|
181
196
|
payload: "".concat(propertyName, ":").concat(pixelValue)
|
|
182
197
|
},
|
|
183
|
-
fix:
|
|
198
|
+
fix: function fix(fixer) {
|
|
184
199
|
var allResolvableValues = values.every(function (value) {
|
|
185
200
|
return !Number.isNaN((0, _utils.emToPixels)(value, fontSize));
|
|
186
201
|
});
|
|
@@ -189,6 +204,8 @@ var rule = (0, _createRule.createRule)({
|
|
|
189
204
|
}
|
|
190
205
|
var valuesWithTokenReplacement = values.filter(function (value) {
|
|
191
206
|
return (0, _utils.findTokenNameByPropertyValue)(propertyName, value);
|
|
207
|
+
}).filter(function (value) {
|
|
208
|
+
return value !== 0;
|
|
192
209
|
});
|
|
193
210
|
if (valuesWithTokenReplacement.length === 0) {
|
|
194
211
|
// all values could be replaceable but that just means they're numeric
|
|
@@ -211,12 +228,16 @@ var rule = (0, _createRule.createRule)({
|
|
|
211
228
|
return null;
|
|
212
229
|
}
|
|
213
230
|
return (!tokenNode && ruleConfig.applyImport ? [(0, _utils.insertTokensImport)(fixer)] : []).concat([fixer.replaceText(node.value, "`".concat(values.map(function (value, index) {
|
|
231
|
+
if ((0, _utils.isZero)(value)) {
|
|
232
|
+
return originalValues[index];
|
|
233
|
+
}
|
|
214
234
|
var pixelValue = (0, _utils.emToPixels)(value, fontSize);
|
|
215
235
|
var pixelValueString = "".concat(pixelValue, "px");
|
|
216
236
|
// if there is a token we take it, otherwise we go with the original value
|
|
237
|
+
|
|
217
238
|
return (0, _utils.findTokenNameByPropertyValue)(propertyName, value) ? "${".concat((0, _utils.getTokenNodeForValue)(propertyName, pixelValueString), "}") : originalValues[index];
|
|
218
239
|
}).join(' '), "`"))]);
|
|
219
|
-
}
|
|
240
|
+
}
|
|
220
241
|
});
|
|
221
242
|
});
|
|
222
243
|
}
|
|
@@ -225,7 +246,7 @@ var rule = (0, _createRule.createRule)({
|
|
|
225
246
|
// CSSTemplateLiteral and StyledTemplateLiteral
|
|
226
247
|
// const cssTemplateLiteral = css`color: red; padding: 12px`;
|
|
227
248
|
// const styledTemplateLiteral = styled.p`color: red; padding: 8px`;
|
|
228
|
-
'TaggedTemplateExpression[tag.name="css"],TaggedTemplateExpression[tag.object.name="styled"]': function
|
|
249
|
+
'TaggedTemplateExpression[tag.name="css"],TaggedTemplateExpression[tag.object.name="styled"],TaggedTemplateExpression[tag.callee.name="styled"]': function TaggedTemplateExpressionTagNameCssTaggedTemplateExpressionTagObjectNameStyledTaggedTemplateExpressionTagCalleeNameStyled(node) {
|
|
229
250
|
if (node.type !== 'TaggedTemplateExpression') {
|
|
230
251
|
return;
|
|
231
252
|
}
|
|
@@ -282,17 +303,13 @@ var rule = (0, _createRule.createRule)({
|
|
|
282
303
|
// if the value is already valid, nothing to report or replace
|
|
283
304
|
return originalValue;
|
|
284
305
|
}
|
|
285
|
-
if (isNaN(numericOrNanValue) && !isFontFamily) {
|
|
286
|
-
// this can be either a weird expression or a fontsize declaration
|
|
287
306
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
}
|
|
295
|
-
});
|
|
307
|
+
// do not replace 0 with tokens
|
|
308
|
+
if ((0, _utils.isZero)(pxValue) || pxValue === 'auto') {
|
|
309
|
+
return originalValue;
|
|
310
|
+
}
|
|
311
|
+
if (isNaN(numericOrNanValue) && !isFontFamily) {
|
|
312
|
+
// do not report if we have nothing to replace with
|
|
296
313
|
return originalValue;
|
|
297
314
|
}
|
|
298
315
|
|
|
@@ -15,9 +15,9 @@ exports.getTokenNodeForValue = getTokenNodeForValue;
|
|
|
15
15
|
exports.getTokenReplacement = getTokenReplacement;
|
|
16
16
|
exports.getValueFromShorthand = exports.getValue = void 0;
|
|
17
17
|
exports.insertTokensImport = insertTokensImport;
|
|
18
|
-
exports.isSpacingProperty = void 0;
|
|
18
|
+
exports.isSpacingProperty = exports.isCalc = void 0;
|
|
19
19
|
exports.isTokenValueString = isTokenValueString;
|
|
20
|
-
exports.onlyScaleTokens = exports.isValidSpacingValue = exports.isTypographyProperty = void 0;
|
|
20
|
+
exports.onlyScaleTokens = exports.isZero = exports.isValidSpacingValue = exports.isTypographyProperty = void 0;
|
|
21
21
|
exports.processCssNode = processCssNode;
|
|
22
22
|
exports.removePixelSuffix = void 0;
|
|
23
23
|
exports.shouldAnalyzeProperty = shouldAnalyzeProperty;
|
|
@@ -292,12 +292,11 @@ var emToPixels = function emToPixels(value, fontSize) {
|
|
|
292
292
|
return value;
|
|
293
293
|
};
|
|
294
294
|
exports.emToPixels = emToPixels;
|
|
295
|
-
var
|
|
295
|
+
var percentageOrEmOrAuto = /(%$)|(\d+em$)|(auto$)/;
|
|
296
296
|
var removePixelSuffix = function removePixelSuffix(value) {
|
|
297
297
|
var isString = typeof value === 'string';
|
|
298
|
-
|
|
299
298
|
// @ts-ignore This shouldn't be a type error but CI is complaining
|
|
300
|
-
if (isString &&
|
|
299
|
+
if (isString && percentageOrEmOrAuto.test(value)) {
|
|
301
300
|
return value;
|
|
302
301
|
}
|
|
303
302
|
|
|
@@ -305,7 +304,7 @@ var removePixelSuffix = function removePixelSuffix(value) {
|
|
|
305
304
|
return Number(isString ? value.replace('px', '') : value);
|
|
306
305
|
};
|
|
307
306
|
exports.removePixelSuffix = removePixelSuffix;
|
|
308
|
-
var invalidSpacingUnitRegex = /(%$)|(\d+rem$)|(
|
|
307
|
+
var invalidSpacingUnitRegex = /(%$)|(\d+rem$)|(vw$)|(vh$)/;
|
|
309
308
|
var isValidSpacingValue = function isValidSpacingValue(value, fontSize) {
|
|
310
309
|
if (typeof value === 'string') {
|
|
311
310
|
if (invalidSpacingUnitRegex.test(value)) {
|
|
@@ -324,9 +323,33 @@ var isValidSpacingValue = function isValidSpacingValue(value, fontSize) {
|
|
|
324
323
|
}
|
|
325
324
|
return true;
|
|
326
325
|
};
|
|
326
|
+
exports.isValidSpacingValue = isValidSpacingValue;
|
|
327
|
+
var calcRegex = /(^calc)/;
|
|
328
|
+
var isCalc = function isCalc(value) {
|
|
329
|
+
if (typeof value === 'string') {
|
|
330
|
+
if (calcRegex.test(value)) {
|
|
331
|
+
return true;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return false;
|
|
335
|
+
};
|
|
336
|
+
exports.isCalc = isCalc;
|
|
337
|
+
var isZero = function isZero(value) {
|
|
338
|
+
if (typeof value === 'string') {
|
|
339
|
+
if (value === '0px' || value === '0') {
|
|
340
|
+
return true;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
if (typeof value === 'number') {
|
|
344
|
+
if (value === 0) {
|
|
345
|
+
return true;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return false;
|
|
349
|
+
};
|
|
327
350
|
|
|
328
351
|
// convert line-height to lineHeight
|
|
329
|
-
exports.
|
|
352
|
+
exports.isZero = isZero;
|
|
330
353
|
var convertHyphenatedNameToCamelCase = function convertHyphenatedNameToCamelCase(prop) {
|
|
331
354
|
return prop.replace(/-./g, function (m) {
|
|
332
355
|
return m[1].toUpperCase();
|
|
@@ -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
|
};
|