@atlaskit/eslint-plugin-design-system 10.12.0 → 10.12.2

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.
Files changed (32) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/ast-nodes/jsx-element.js +5 -1
  3. package/dist/cjs/rules/use-heading/config/index.js +1 -0
  4. package/dist/cjs/rules/use-heading/index.js +3 -2
  5. package/dist/cjs/rules/use-latest-xcss-syntax-typography/config/index.js +12 -0
  6. package/dist/cjs/rules/use-latest-xcss-syntax-typography/index.js +5 -2
  7. package/dist/cjs/rules/use-primitives-text/config/index.js +1 -0
  8. package/dist/cjs/rules/use-primitives-text/index.js +3 -2
  9. package/dist/cjs/rules/use-tokens-typography/config/index.js +3 -0
  10. package/dist/es2019/ast-nodes/jsx-element.js +5 -1
  11. package/dist/es2019/rules/use-heading/config/index.js +1 -0
  12. package/dist/es2019/rules/use-heading/index.js +3 -2
  13. package/dist/es2019/rules/use-latest-xcss-syntax-typography/config/index.js +6 -0
  14. package/dist/es2019/rules/use-latest-xcss-syntax-typography/index.js +5 -2
  15. package/dist/es2019/rules/use-primitives-text/config/index.js +1 -0
  16. package/dist/es2019/rules/use-primitives-text/index.js +3 -2
  17. package/dist/es2019/rules/use-tokens-typography/config/index.js +3 -0
  18. package/dist/esm/ast-nodes/jsx-element.js +5 -1
  19. package/dist/esm/rules/use-heading/config/index.js +1 -0
  20. package/dist/esm/rules/use-heading/index.js +3 -2
  21. package/dist/esm/rules/use-latest-xcss-syntax-typography/config/index.js +6 -0
  22. package/dist/esm/rules/use-latest-xcss-syntax-typography/index.js +5 -2
  23. package/dist/esm/rules/use-primitives-text/config/index.js +1 -0
  24. package/dist/esm/rules/use-primitives-text/index.js +3 -2
  25. package/dist/esm/rules/use-tokens-typography/config/index.js +3 -0
  26. package/dist/types/rules/use-heading/config/index.d.ts +1 -0
  27. package/dist/types/rules/use-latest-xcss-syntax-typography/config/index.d.ts +4 -0
  28. package/dist/types/rules/use-primitives-text/config/index.d.ts +1 -0
  29. package/dist/types-ts4.5/rules/use-heading/config/index.d.ts +1 -0
  30. package/dist/types-ts4.5/rules/use-latest-xcss-syntax-typography/config/index.d.ts +4 -0
  31. package/dist/types-ts4.5/rules/use-primitives-text/config/index.d.ts +1 -0
  32. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/eslint-plugin-design-system
2
2
 
3
+ ## 10.12.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#124172](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/124172)
8
+ [`19b2005de7c1b`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/19b2005de7c1b) -
9
+ Wrap use-heading, use-primitives-text and use-latest-xcss-syntax-typography with an error boudary
10
+ to stop it breaking issue-automat CI.
11
+
12
+ ## 10.12.1
13
+
14
+ ### Patch Changes
15
+
16
+ - [#124216](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/124216)
17
+ [`66f55374a6828`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/66f55374a6828) -
18
+ use-primitives-text bug fix for inline ESlint ignore statements.
19
+
3
20
  ## 10.12.0
4
21
 
5
22
  ### Minor Changes
@@ -63,12 +63,16 @@ var JSXElementHelper = exports.JSXElement = exports.JSXElementHelper = {
63
63
  return fix;
64
64
  },
65
65
  getChildren: function getChildren(node) {
66
- // Filter out text children with whitespace characters only as JSX removes whitespace used for intendation
67
66
  var filteredChildren = node.children.filter(function (child) {
67
+ // Filter out text children with whitespace characters only as JSX removes whitespace used for intendation
68
68
  if ((0, _eslintCodemodUtils.isNodeOfType)(child, 'JSXText')) {
69
69
  var whiteSpaceChars = new RegExp('\\s', 'g');
70
70
  return !whiteSpaceChars.test(child.value);
71
71
  }
72
+ // Filter out empty JSX expressions, for example JSX expression containing comments only, including eslint ignore comments
73
+ if ((0, _eslintCodemodUtils.isNodeOfType)(child, 'JSXExpressionContainer')) {
74
+ return !(0, _eslintCodemodUtils.isNodeOfType)(child.expression, 'JSXEmptyExpression');
75
+ }
72
76
  return true;
73
77
  });
74
78
  return filteredChildren;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getConfig = void 0;
7
7
  var defaults = {
8
+ failSilently: false,
8
9
  patterns: ['native-elements'],
9
10
  enableUnsafeAutofix: false
10
11
  };
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _createRule = require("../utils/create-rule");
8
+ var _errorBoundary = require("../utils/error-boundary");
8
9
  var _config = require("./config");
9
10
  var _transformers = require("./transformers");
10
11
  var docsUrl = 'https://atlassian.design/components/heading';
@@ -25,7 +26,7 @@ var rule = (0, _createRule.createLintRule)({
25
26
  },
26
27
  create: function create(context) {
27
28
  var config = (0, _config.getConfig)(context.options[0]);
28
- return {
29
+ return (0, _errorBoundary.errorBoundary)({
29
30
  // transforms <h1>...</h1> usages
30
31
  'JSXElement[openingElement.name.name=/^h[0-6]$/]': function JSXElementOpeningElementNameNameH06$(node) {
31
32
  return _transformers.NativeElements.lint(node, {
@@ -33,7 +34,7 @@ var rule = (0, _createRule.createLintRule)({
33
34
  config: config
34
35
  });
35
36
  }
36
- };
37
+ }, config);
37
38
  }
38
39
  });
39
40
  var _default = exports.default = rule;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getConfig = void 0;
7
+ var defaults = {
8
+ failSilently: false
9
+ };
10
+ var getConfig = exports.getConfig = function getConfig(overrides) {
11
+ return Object.assign({}, defaults, overrides);
12
+ };
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.error = exports.default = void 0;
7
7
  var _createRule = require("../utils/create-rule");
8
+ var _errorBoundary = require("../utils/error-boundary");
9
+ var _config = require("./config");
8
10
  var _linters = require("./linters");
9
11
  var error = exports.error = "Don't set fontSize, lineHeight, fontWeight properties on xcss. They are unsafe as they allow invalid combinations of typography tokens. There is ongoing work to make this a TypeScript error. Once that happens, you will have to delete/refactor anyway.";
10
12
  var rule = (0, _createRule.createLintRule)({
@@ -23,7 +25,8 @@ var rule = (0, _createRule.createLintRule)({
23
25
  }
24
26
  },
25
27
  create: function create(context) {
26
- return {
28
+ var config = (0, _config.getConfig)(context.options[0]);
29
+ return (0, _errorBoundary.errorBoundary)({
27
30
  'CallExpression[callee.name="xcss"] ObjectExpression > Property > Identifier[name=/(fontSize|lineHeight|fontWeight)/]': function CallExpressionCalleeNameXcssObjectExpressionPropertyIdentifierNameFontSizeLineHeightFontWeight(node) {
28
31
  return _linters.BannedProperty.lint(node, {
29
32
  context: context
@@ -34,7 +37,7 @@ var rule = (0, _createRule.createLintRule)({
34
37
  context: context
35
38
  });
36
39
  }
37
- };
40
+ }, config);
38
41
  }
39
42
  });
40
43
  var _default = exports.default = rule;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getConfig = void 0;
7
7
  var defaults = {
8
+ failSilently: false,
8
9
  patterns: ['paragraph-elements', 'span-elements', 'strong-elements', 'emphasis-elements'],
9
10
  inheritColor: false,
10
11
  enableUnsafeAutofix: false
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _createRule = require("../utils/create-rule");
8
+ var _errorBoundary = require("../utils/error-boundary");
8
9
  var _config = require("./config");
9
10
  var _transformers = require("./transformers");
10
11
  var textDocsUrl = 'https://atlassian.design/components/primitives/text';
@@ -26,7 +27,7 @@ var rule = (0, _createRule.createLintRule)({
26
27
  },
27
28
  create: function create(context) {
28
29
  var config = (0, _config.getConfig)(context.options[0]);
29
- return {
30
+ return (0, _errorBoundary.errorBoundary)({
30
31
  'JSXElement[openingElement.name.name=span]': function JSXElementOpeningElementNameNameSpan(node) {
31
32
  return _transformers.SpanElements.lint(node, {
32
33
  context: context,
@@ -51,7 +52,7 @@ var rule = (0, _createRule.createLintRule)({
51
52
  config: config
52
53
  });
53
54
  }
54
- };
55
+ }, config);
55
56
  }
56
57
  });
57
58
  var _default = exports.default = rule;
@@ -14,6 +14,9 @@ var ruleSchema = exports.ruleSchema = {
14
14
  },
15
15
  shouldEnforceFallbacks: {
16
16
  type: 'boolean'
17
+ },
18
+ enableUnsafeAutofix: {
19
+ type: 'boolean'
17
20
  }
18
21
  }
19
22
  }
@@ -57,12 +57,16 @@ export const JSXElementHelper = {
57
57
  return fix;
58
58
  },
59
59
  getChildren(node) {
60
- // Filter out text children with whitespace characters only as JSX removes whitespace used for intendation
61
60
  const filteredChildren = node.children.filter(child => {
61
+ // Filter out text children with whitespace characters only as JSX removes whitespace used for intendation
62
62
  if (isNodeOfType(child, 'JSXText')) {
63
63
  const whiteSpaceChars = new RegExp('\\s', 'g');
64
64
  return !whiteSpaceChars.test(child.value);
65
65
  }
66
+ // Filter out empty JSX expressions, for example JSX expression containing comments only, including eslint ignore comments
67
+ if (isNodeOfType(child, 'JSXExpressionContainer')) {
68
+ return !isNodeOfType(child.expression, 'JSXEmptyExpression');
69
+ }
66
70
  return true;
67
71
  });
68
72
  return filteredChildren;
@@ -1,4 +1,5 @@
1
1
  const defaults = {
2
+ failSilently: false,
2
3
  patterns: ['native-elements'],
3
4
  enableUnsafeAutofix: false
4
5
  };
@@ -1,4 +1,5 @@
1
1
  import { createLintRule } from '../utils/create-rule';
2
+ import { errorBoundary } from '../utils/error-boundary';
2
3
  import { getConfig } from './config';
3
4
  import { NativeElements } from './transformers';
4
5
  const docsUrl = 'https://atlassian.design/components/heading';
@@ -19,7 +20,7 @@ const rule = createLintRule({
19
20
  },
20
21
  create(context) {
21
22
  const config = getConfig(context.options[0]);
22
- return {
23
+ return errorBoundary({
23
24
  // transforms <h1>...</h1> usages
24
25
  'JSXElement[openingElement.name.name=/^h[0-6]$/]': node => {
25
26
  return NativeElements.lint(node, {
@@ -27,7 +28,7 @@ const rule = createLintRule({
27
28
  config
28
29
  });
29
30
  }
30
- };
31
+ }, config);
31
32
  }
32
33
  });
33
34
  export default rule;
@@ -0,0 +1,6 @@
1
+ const defaults = {
2
+ failSilently: false
3
+ };
4
+ export const getConfig = overrides => {
5
+ return Object.assign({}, defaults, overrides);
6
+ };
@@ -1,4 +1,6 @@
1
1
  import { createLintRule } from '../utils/create-rule';
2
+ import { errorBoundary } from '../utils/error-boundary';
3
+ import { getConfig } from './config';
2
4
  import { BannedProperty } from './linters';
3
5
  export const error = `Don't set fontSize, lineHeight, fontWeight properties on xcss. They are unsafe as they allow invalid combinations of typography tokens. There is ongoing work to make this a TypeScript error. Once that happens, you will have to delete/refactor anyway.`;
4
6
  const rule = createLintRule({
@@ -17,14 +19,15 @@ const rule = createLintRule({
17
19
  }
18
20
  },
19
21
  create(context) {
20
- return {
22
+ const config = getConfig(context.options[0]);
23
+ return errorBoundary({
21
24
  'CallExpression[callee.name="xcss"] ObjectExpression > Property > Identifier[name=/(fontSize|lineHeight|fontWeight)/]': node => BannedProperty.lint(node, {
22
25
  context
23
26
  }),
24
27
  'CallExpression[callee.name="xcss"] ObjectExpression > Property > Literal[value=/(fontSize|lineHeight|fontWeight)/]': node => BannedProperty.lint(node, {
25
28
  context
26
29
  })
27
- };
30
+ }, config);
28
31
  }
29
32
  });
30
33
  export default rule;
@@ -1,4 +1,5 @@
1
1
  const defaults = {
2
+ failSilently: false,
2
3
  patterns: ['paragraph-elements', 'span-elements', 'strong-elements', 'emphasis-elements'],
3
4
  inheritColor: false,
4
5
  enableUnsafeAutofix: false
@@ -1,4 +1,5 @@
1
1
  import { createLintRule } from '../utils/create-rule';
2
+ import { errorBoundary } from '../utils/error-boundary';
2
3
  import { getConfig } from './config';
3
4
  import { EmphasisElements, ParagraphElements, SpanElements, StrongElements } from './transformers';
4
5
  const textDocsUrl = 'https://atlassian.design/components/primitives/text';
@@ -20,7 +21,7 @@ const rule = createLintRule({
20
21
  },
21
22
  create(context) {
22
23
  const config = getConfig(context.options[0]);
23
- return {
24
+ return errorBoundary({
24
25
  'JSXElement[openingElement.name.name=span]': node => {
25
26
  return SpanElements.lint(node, {
26
27
  context,
@@ -45,7 +46,7 @@ const rule = createLintRule({
45
46
  config
46
47
  });
47
48
  }
48
- };
49
+ }, config);
49
50
  }
50
51
  });
51
52
  export default rule;
@@ -8,6 +8,9 @@ export const ruleSchema = {
8
8
  },
9
9
  shouldEnforceFallbacks: {
10
10
  type: 'boolean'
11
+ },
12
+ enableUnsafeAutofix: {
13
+ type: 'boolean'
11
14
  }
12
15
  }
13
16
  }
@@ -57,12 +57,16 @@ export var JSXElementHelper = {
57
57
  return fix;
58
58
  },
59
59
  getChildren: function getChildren(node) {
60
- // Filter out text children with whitespace characters only as JSX removes whitespace used for intendation
61
60
  var filteredChildren = node.children.filter(function (child) {
61
+ // Filter out text children with whitespace characters only as JSX removes whitespace used for intendation
62
62
  if (isNodeOfType(child, 'JSXText')) {
63
63
  var whiteSpaceChars = new RegExp('\\s', 'g');
64
64
  return !whiteSpaceChars.test(child.value);
65
65
  }
66
+ // Filter out empty JSX expressions, for example JSX expression containing comments only, including eslint ignore comments
67
+ if (isNodeOfType(child, 'JSXExpressionContainer')) {
68
+ return !isNodeOfType(child.expression, 'JSXEmptyExpression');
69
+ }
66
70
  return true;
67
71
  });
68
72
  return filteredChildren;
@@ -1,4 +1,5 @@
1
1
  var defaults = {
2
+ failSilently: false,
2
3
  patterns: ['native-elements'],
3
4
  enableUnsafeAutofix: false
4
5
  };
@@ -1,4 +1,5 @@
1
1
  import { createLintRule } from '../utils/create-rule';
2
+ import { errorBoundary } from '../utils/error-boundary';
2
3
  import { getConfig } from './config';
3
4
  import { NativeElements } from './transformers';
4
5
  var docsUrl = 'https://atlassian.design/components/heading';
@@ -19,7 +20,7 @@ var rule = createLintRule({
19
20
  },
20
21
  create: function create(context) {
21
22
  var config = getConfig(context.options[0]);
22
- return {
23
+ return errorBoundary({
23
24
  // transforms <h1>...</h1> usages
24
25
  'JSXElement[openingElement.name.name=/^h[0-6]$/]': function JSXElementOpeningElementNameNameH06$(node) {
25
26
  return NativeElements.lint(node, {
@@ -27,7 +28,7 @@ var rule = createLintRule({
27
28
  config: config
28
29
  });
29
30
  }
30
- };
31
+ }, config);
31
32
  }
32
33
  });
33
34
  export default rule;
@@ -0,0 +1,6 @@
1
+ var defaults = {
2
+ failSilently: false
3
+ };
4
+ export var getConfig = function getConfig(overrides) {
5
+ return Object.assign({}, defaults, overrides);
6
+ };
@@ -1,4 +1,6 @@
1
1
  import { createLintRule } from '../utils/create-rule';
2
+ import { errorBoundary } from '../utils/error-boundary';
3
+ import { getConfig } from './config';
2
4
  import { BannedProperty } from './linters';
3
5
  export var error = "Don't set fontSize, lineHeight, fontWeight properties on xcss. They are unsafe as they allow invalid combinations of typography tokens. There is ongoing work to make this a TypeScript error. Once that happens, you will have to delete/refactor anyway.";
4
6
  var rule = createLintRule({
@@ -17,7 +19,8 @@ var rule = createLintRule({
17
19
  }
18
20
  },
19
21
  create: function create(context) {
20
- return {
22
+ var config = getConfig(context.options[0]);
23
+ return errorBoundary({
21
24
  'CallExpression[callee.name="xcss"] ObjectExpression > Property > Identifier[name=/(fontSize|lineHeight|fontWeight)/]': function CallExpressionCalleeNameXcssObjectExpressionPropertyIdentifierNameFontSizeLineHeightFontWeight(node) {
22
25
  return BannedProperty.lint(node, {
23
26
  context: context
@@ -28,7 +31,7 @@ var rule = createLintRule({
28
31
  context: context
29
32
  });
30
33
  }
31
- };
34
+ }, config);
32
35
  }
33
36
  });
34
37
  export default rule;
@@ -1,4 +1,5 @@
1
1
  var defaults = {
2
+ failSilently: false,
2
3
  patterns: ['paragraph-elements', 'span-elements', 'strong-elements', 'emphasis-elements'],
3
4
  inheritColor: false,
4
5
  enableUnsafeAutofix: false
@@ -1,4 +1,5 @@
1
1
  import { createLintRule } from '../utils/create-rule';
2
+ import { errorBoundary } from '../utils/error-boundary';
2
3
  import { getConfig } from './config';
3
4
  import { EmphasisElements, ParagraphElements, SpanElements, StrongElements } from './transformers';
4
5
  var textDocsUrl = 'https://atlassian.design/components/primitives/text';
@@ -20,7 +21,7 @@ var rule = createLintRule({
20
21
  },
21
22
  create: function create(context) {
22
23
  var config = getConfig(context.options[0]);
23
- return {
24
+ return errorBoundary({
24
25
  'JSXElement[openingElement.name.name=span]': function JSXElementOpeningElementNameNameSpan(node) {
25
26
  return SpanElements.lint(node, {
26
27
  context: context,
@@ -45,7 +46,7 @@ var rule = createLintRule({
45
46
  config: config
46
47
  });
47
48
  }
48
- };
49
+ }, config);
49
50
  }
50
51
  });
51
52
  export default rule;
@@ -8,6 +8,9 @@ export var ruleSchema = {
8
8
  },
9
9
  shouldEnforceFallbacks: {
10
10
  type: 'boolean'
11
+ },
12
+ enableUnsafeAutofix: {
13
+ type: 'boolean'
11
14
  }
12
15
  }
13
16
  }
@@ -1,5 +1,6 @@
1
1
  type Pattern = 'native-elements';
2
2
  export interface RuleConfig {
3
+ failSilently: boolean;
3
4
  patterns: Pattern[];
4
5
  enableUnsafeAutofix: false;
5
6
  }
@@ -0,0 +1,4 @@
1
+ export interface RuleConfig {
2
+ failSilently: boolean;
3
+ }
4
+ export declare const getConfig: (overrides: Partial<RuleConfig>) => RuleConfig;
@@ -1,5 +1,6 @@
1
1
  type Pattern = 'paragraph-elements' | 'span-elements' | 'strong-elements' | 'emphasis-elements';
2
2
  export interface RuleConfig {
3
+ failSilently: boolean;
3
4
  patterns: Pattern[];
4
5
  inheritColor: boolean;
5
6
  enableUnsafeAutofix: boolean;
@@ -1,5 +1,6 @@
1
1
  type Pattern = 'native-elements';
2
2
  export interface RuleConfig {
3
+ failSilently: boolean;
3
4
  patterns: Pattern[];
4
5
  enableUnsafeAutofix: false;
5
6
  }
@@ -0,0 +1,4 @@
1
+ export interface RuleConfig {
2
+ failSilently: boolean;
3
+ }
4
+ export declare const getConfig: (overrides: Partial<RuleConfig>) => RuleConfig;
@@ -1,5 +1,6 @@
1
1
  type Pattern = 'paragraph-elements' | 'span-elements' | 'strong-elements' | 'emphasis-elements';
2
2
  export interface RuleConfig {
3
+ failSilently: boolean;
3
4
  patterns: Pattern[];
4
5
  inheritColor: boolean;
5
6
  enableUnsafeAutofix: boolean;
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": "10.12.0",
4
+ "version": "10.12.2",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
7
7
  "publishConfig": {