@atlaskit/eslint-plugin-platform 0.6.1 → 0.7.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.
Files changed (126) hide show
  1. package/CHANGELOG.md +103 -28
  2. package/afm-jira/tsconfig.json +20 -0
  3. package/dist/cjs/index.js +48 -2
  4. package/dist/cjs/rules/constants.js +11 -0
  5. package/dist/cjs/rules/ensure-critical-dependency-resolutions/index.js +54 -6
  6. package/dist/cjs/rules/ensure-native-and-af-exports-synced/index.js +16 -7
  7. package/dist/cjs/rules/ensure-valid-emotion-css-prop/index.js +91 -0
  8. package/dist/cjs/rules/inline-usage/index.js +94 -0
  9. package/dist/cjs/rules/no-alias/index.js +64 -0
  10. package/dist/cjs/rules/no-module-level-eval/index.js +45 -0
  11. package/dist/cjs/rules/no-preconditioning/index.js +108 -0
  12. package/dist/cjs/rules/prefer-fg/index.js +106 -0
  13. package/dist/cjs/rules/static-feature-flags/index.js +63 -0
  14. package/dist/cjs/rules/use-recommended-utils/index.js +47 -0
  15. package/dist/cjs/rules/util/registration-utils.js +2 -1
  16. package/dist/cjs/rules/utils.js +53 -0
  17. package/dist/es2019/index.js +52 -2
  18. package/dist/es2019/rules/constants.js +5 -0
  19. package/dist/es2019/rules/ensure-critical-dependency-resolutions/index.js +52 -6
  20. package/dist/es2019/rules/ensure-native-and-af-exports-synced/index.js +15 -7
  21. package/dist/es2019/rules/ensure-valid-emotion-css-prop/index.js +87 -0
  22. package/dist/es2019/rules/inline-usage/index.js +90 -0
  23. package/dist/es2019/rules/no-alias/index.js +58 -0
  24. package/dist/es2019/rules/no-module-level-eval/index.js +39 -0
  25. package/dist/es2019/rules/no-preconditioning/index.js +105 -0
  26. package/dist/es2019/rules/prefer-fg/index.js +81 -0
  27. package/dist/es2019/rules/static-feature-flags/index.js +54 -0
  28. package/dist/es2019/rules/use-recommended-utils/index.js +41 -0
  29. package/dist/es2019/rules/util/registration-utils.js +2 -1
  30. package/dist/es2019/rules/utils.js +29 -0
  31. package/dist/esm/index.js +48 -2
  32. package/dist/esm/rules/constants.js +5 -0
  33. package/dist/esm/rules/ensure-critical-dependency-resolutions/index.js +54 -6
  34. package/dist/esm/rules/ensure-native-and-af-exports-synced/index.js +16 -7
  35. package/dist/esm/rules/ensure-valid-emotion-css-prop/index.js +85 -0
  36. package/dist/esm/rules/inline-usage/index.js +87 -0
  37. package/dist/esm/rules/no-alias/index.js +57 -0
  38. package/dist/esm/rules/no-module-level-eval/index.js +39 -0
  39. package/dist/esm/rules/no-preconditioning/index.js +102 -0
  40. package/dist/esm/rules/prefer-fg/index.js +99 -0
  41. package/dist/esm/rules/static-feature-flags/index.js +56 -0
  42. package/dist/esm/rules/use-recommended-utils/index.js +41 -0
  43. package/dist/esm/rules/util/registration-utils.js +2 -1
  44. package/dist/esm/rules/utils.js +45 -0
  45. package/dist/types/index.d.ts +15 -0
  46. package/dist/types/rules/constants.d.ts +3 -0
  47. package/dist/types/rules/ensure-valid-emotion-css-prop/index.d.ts +3 -0
  48. package/dist/types/rules/inline-usage/index.d.ts +3 -0
  49. package/dist/types/rules/no-alias/index.d.ts +3 -0
  50. package/dist/types/rules/no-module-level-eval/index.d.ts +3 -0
  51. package/dist/types/rules/no-preconditioning/index.d.ts +3 -0
  52. package/dist/types/rules/prefer-fg/index.d.ts +3 -0
  53. package/dist/types/rules/static-feature-flags/index.d.ts +3 -0
  54. package/dist/types/rules/use-recommended-utils/index.d.ts +3 -0
  55. package/dist/types/rules/util/registration-utils.d.ts +1 -0
  56. package/dist/types/rules/utils.d.ts +7 -0
  57. package/dist/types-ts4.5/index.d.ts +15 -0
  58. package/dist/types-ts4.5/rules/constants.d.ts +3 -0
  59. package/dist/types-ts4.5/rules/ensure-valid-emotion-css-prop/index.d.ts +3 -0
  60. package/dist/types-ts4.5/rules/inline-usage/index.d.ts +3 -0
  61. package/dist/types-ts4.5/rules/no-alias/index.d.ts +3 -0
  62. package/dist/types-ts4.5/rules/no-module-level-eval/index.d.ts +3 -0
  63. package/dist/types-ts4.5/rules/no-preconditioning/index.d.ts +3 -0
  64. package/dist/types-ts4.5/rules/prefer-fg/index.d.ts +3 -0
  65. package/dist/types-ts4.5/rules/static-feature-flags/index.d.ts +3 -0
  66. package/dist/types-ts4.5/rules/use-recommended-utils/index.d.ts +3 -0
  67. package/dist/types-ts4.5/rules/util/registration-utils.d.ts +1 -0
  68. package/dist/types-ts4.5/rules/utils.d.ts +7 -0
  69. package/index.js +9 -9
  70. package/package.json +43 -44
  71. package/report.api.md +31 -30
  72. package/src/__tests__/utils/_tester.tsx +16 -16
  73. package/src/index.tsx +102 -51
  74. package/src/rules/constants.tsx +20 -0
  75. package/src/rules/ensure-atlassian-team/__tests__/unit/rule.test.ts +19 -19
  76. package/src/rules/ensure-atlassian-team/index.ts +39 -52
  77. package/src/rules/ensure-critical-dependency-resolutions/__test__/unit/rule.test.tsx +146 -81
  78. package/src/rules/ensure-critical-dependency-resolutions/index.tsx +152 -97
  79. package/src/rules/ensure-feature-flag-prefix/__tests__/unit/rule.test.tsx +51 -51
  80. package/src/rules/ensure-feature-flag-prefix/index.tsx +65 -80
  81. package/src/rules/ensure-feature-flag-registration/__tests__/unit/rule.test.tsx +97 -97
  82. package/src/rules/ensure-feature-flag-registration/index.tsx +88 -105
  83. package/src/rules/ensure-native-and-af-exports-synced/__tests__/unit/rule.test.tsx +180 -180
  84. package/src/rules/ensure-native-and-af-exports-synced/index.tsx +162 -168
  85. package/src/rules/ensure-publish-valid/__tests__/unit/rule.test.ts +34 -36
  86. package/src/rules/ensure-publish-valid/index.ts +66 -81
  87. package/src/rules/ensure-test-runner-arguments/__tests__/unit/rule.test.tsx +93 -93
  88. package/src/rules/ensure-test-runner-arguments/index.tsx +107 -121
  89. package/src/rules/ensure-test-runner-nested-count/__tests__/unit/rule.test.tsx +43 -43
  90. package/src/rules/ensure-test-runner-nested-count/index.tsx +68 -70
  91. package/src/rules/ensure-valid-emotion-css-prop/__tests__/unit/rule.test.ts +142 -0
  92. package/src/rules/ensure-valid-emotion-css-prop/index.ts +96 -0
  93. package/src/rules/inline-usage/README.md +53 -0
  94. package/src/rules/inline-usage/__tests__/rule.test.tsx +106 -0
  95. package/src/rules/inline-usage/index.tsx +130 -0
  96. package/src/rules/no-alias/README.md +29 -0
  97. package/src/rules/no-alias/__tests__/rule.test.tsx +76 -0
  98. package/src/rules/no-alias/index.tsx +75 -0
  99. package/src/rules/no-duplicate-dependencies/__tests__/unit/rule.test.ts +44 -44
  100. package/src/rules/no-duplicate-dependencies/index.ts +68 -73
  101. package/src/rules/no-invalid-feature-flag-usage/__tests__/unit/rule.test.tsx +64 -64
  102. package/src/rules/no-invalid-feature-flag-usage/index.tsx +105 -112
  103. package/src/rules/no-invalid-storybook-decorator-usage/__tests__/unit/rule.test.tsx +13 -13
  104. package/src/rules/no-invalid-storybook-decorator-usage/index.tsx +28 -30
  105. package/src/rules/no-module-level-eval/README.md +53 -0
  106. package/src/rules/no-module-level-eval/__tests__/test.tsx +133 -0
  107. package/src/rules/no-module-level-eval/index.tsx +52 -0
  108. package/src/rules/no-pre-post-installs/__tests__/unit/rule.test.ts +36 -36
  109. package/src/rules/no-pre-post-installs/index.ts +27 -27
  110. package/src/rules/no-preconditioning/README.md +69 -0
  111. package/src/rules/no-preconditioning/__tests__/rule.test.tsx +164 -0
  112. package/src/rules/no-preconditioning/index.tsx +138 -0
  113. package/src/rules/prefer-fg/README.md +3 -0
  114. package/src/rules/prefer-fg/__tests__/rule.test.tsx +83 -0
  115. package/src/rules/prefer-fg/index.tsx +108 -0
  116. package/src/rules/static-feature-flags/README.md +3 -0
  117. package/src/rules/static-feature-flags/__tests__/test.tsx +135 -0
  118. package/src/rules/static-feature-flags/index.tsx +103 -0
  119. package/src/rules/use-recommended-utils/README.md +67 -0
  120. package/src/rules/use-recommended-utils/__tests__/rule.test.tsx +78 -0
  121. package/src/rules/use-recommended-utils/index.tsx +57 -0
  122. package/src/rules/util/handle-ast-object.ts +21 -32
  123. package/src/rules/util/registration-utils.ts +31 -30
  124. package/src/rules/utils.tsx +46 -0
  125. package/tsconfig.app.json +35 -35
  126. package/tsconfig.dev.json +39 -39
@@ -1,199 +1,199 @@
1
1
  import { tester } from '../../../../__tests__/utils/_tester';
2
2
  import rule from '../../index';
3
- import { PackageJson } from 'read-pkg-up';
3
+ import { type PackageJson } from 'read-pkg-up';
4
4
 
5
5
  let mockPath = 'packages/test/package.json';
6
6
 
7
7
  let mockPackageJson: PackageJson = {};
8
8
  jest.mock('read-pkg-up', () => ({
9
- sync: () => ({
10
- path: mockPath,
11
- packageJson: mockPackageJson,
12
- }),
9
+ sync: () => ({
10
+ path: mockPath,
11
+ packageJson: mockPackageJson,
12
+ }),
13
13
  }));
14
14
 
15
15
  describe('valid test cases', () => {
16
- describe('allows @atlaskit/tokens babel-plugin entrypoint', () => {
17
- beforeEach(() => {
18
- mockPackageJson = {
19
- name: '@atlaskit/tokens',
20
- 'af:exports': {
21
- './babel-plugin': './src/entry-points/babel-plugin.tsx',
22
- },
23
- exports: {
24
- './babel-plugin': './babel-plugin.js',
25
- },
26
- };
27
- });
28
- tester.run('ensure-native-and-af-exports-synced', rule, {
29
- valid: [{ code: '' }],
30
- invalid: [],
31
- });
32
- });
16
+ describe('allows @atlaskit/tokens babel-plugin entrypoint', () => {
17
+ beforeEach(() => {
18
+ mockPackageJson = {
19
+ name: '@atlaskit/tokens',
20
+ 'af:exports': {
21
+ './babel-plugin': './src/entry-points/babel-plugin.tsx',
22
+ },
23
+ exports: {
24
+ './babel-plugin': './babel-plugin.js',
25
+ },
26
+ };
27
+ });
28
+ tester.run('ensure-native-and-af-exports-synced', rule, {
29
+ valid: [{ code: '' }],
30
+ invalid: [],
31
+ });
32
+ });
33
33
 
34
- describe('passes for valid directory export', () => {
35
- beforeEach(() => {
36
- mockPackageJson = {
37
- name: '@atlaskit/tokens',
38
- 'af:exports': {
39
- './glyph': './glyph',
40
- './test/icon': './test/icon',
41
- './button': './button',
42
- '.': './src',
43
- },
44
- exports: {
45
- './glyph/*': './glyph/*',
46
- './test/icon/*': './test/icon/*',
47
- './button/*': './button/*.js',
48
- './*': './src/*',
49
- },
50
- };
51
- });
52
- tester.run('ensure-native-and-af-exports-synced', rule, {
53
- valid: [
54
- {
55
- code: '',
56
- filename: 'packages/test/package.json',
57
- },
58
- ],
59
- invalid: [],
60
- });
61
- });
34
+ describe('passes for valid directory export', () => {
35
+ beforeEach(() => {
36
+ mockPackageJson = {
37
+ name: '@atlaskit/tokens',
38
+ 'af:exports': {
39
+ './glyph': './glyph',
40
+ './test/icon': './test/icon',
41
+ './button': './button',
42
+ '.': './src',
43
+ },
44
+ exports: {
45
+ './glyph/*': './glyph/*',
46
+ './test/icon/*': './test/icon/*',
47
+ './button/*': './button/*.js',
48
+ './*': './src/*',
49
+ },
50
+ };
51
+ });
52
+ tester.run('ensure-native-and-af-exports-synced', rule, {
53
+ valid: [
54
+ {
55
+ code: '',
56
+ filename: 'packages/test/package.json',
57
+ },
58
+ ],
59
+ invalid: [],
60
+ });
61
+ });
62
62
 
63
- describe('passes for index.js files', () => {
64
- beforeEach(() => {
65
- mockPackageJson = {
66
- name: '@atlaskit/tokens',
67
- 'af:exports': {
68
- '.': './src/index.tsx',
69
- './gas-v3': './src/gas-v3/index.ts',
70
- './reader': './src/reader/reader.ts',
71
- './writer': './src/writer/writer.ts',
72
- './report': './src/report/report.ts',
73
- },
74
- exports: {
75
- '.': './index.js',
76
- './gas-v3': './gas-v3/index.js',
77
- './reader': './reader/index.js',
78
- './writer': './writer/index.js',
79
- './report': './report/index.js',
80
- },
81
- };
82
- });
83
- tester.run('ensure-native-and-af-exports-synced', rule, {
84
- valid: [
85
- {
86
- code: '',
87
- filename: 'packages/test/package.json',
88
- },
89
- ],
90
- invalid: [],
91
- });
92
- });
63
+ describe('passes for index.js files', () => {
64
+ beforeEach(() => {
65
+ mockPackageJson = {
66
+ name: '@atlaskit/tokens',
67
+ 'af:exports': {
68
+ '.': './src/index.tsx',
69
+ './gas-v3': './src/gas-v3/index.ts',
70
+ './reader': './src/reader/reader.ts',
71
+ './writer': './src/writer/writer.ts',
72
+ './report': './src/report/report.ts',
73
+ },
74
+ exports: {
75
+ '.': './index.js',
76
+ './gas-v3': './gas-v3/index.js',
77
+ './reader': './reader/index.js',
78
+ './writer': './writer/index.js',
79
+ './report': './report/index.js',
80
+ },
81
+ };
82
+ });
83
+ tester.run('ensure-native-and-af-exports-synced', rule, {
84
+ valid: [
85
+ {
86
+ code: '',
87
+ filename: 'packages/test/package.json',
88
+ },
89
+ ],
90
+ invalid: [],
91
+ });
92
+ });
93
93
 
94
- describe('should pass for multiple valid entrypoints', () => {
95
- beforeEach(() => {
96
- mockPackageJson = {
97
- name: '@atlaskit/tokens',
98
- 'af:exports': {
99
- '.': './src/index.tsx',
100
- './rename-mapping': './src/entry-points/rename-mapping.tsx',
101
- './babel-plugin': './src/entry-points/babel-plugin.tsx',
102
- './glyph': './glyph',
103
- './button': './button',
104
- },
105
- exports: {
106
- '.': './index.js',
107
- './rename-mapping': './src/entry-points/rename-mapping.tsx',
108
- './babel-plugin': './src/entry-points/babel-plugin.tsx',
109
- './glyph/*': './glyph/*',
110
- './button/*': './button/*.js',
111
- },
112
- };
113
- });
114
- tester.run('ensure-native-and-af-exports-synced', rule, {
115
- valid: [
116
- {
117
- code: '',
118
- filename: 'packages/test/package.json',
119
- },
120
- ],
121
- invalid: [],
122
- });
123
- });
94
+ describe('should pass for multiple valid entrypoints', () => {
95
+ beforeEach(() => {
96
+ mockPackageJson = {
97
+ name: '@atlaskit/tokens',
98
+ 'af:exports': {
99
+ '.': './src/index.tsx',
100
+ './rename-mapping': './src/entry-points/rename-mapping.tsx',
101
+ './babel-plugin': './src/entry-points/babel-plugin.tsx',
102
+ './glyph': './glyph',
103
+ './button': './button',
104
+ },
105
+ exports: {
106
+ '.': './index.js',
107
+ './rename-mapping': './src/entry-points/rename-mapping.tsx',
108
+ './babel-plugin': './src/entry-points/babel-plugin.tsx',
109
+ './glyph/*': './glyph/*',
110
+ './button/*': './button/*.js',
111
+ },
112
+ };
113
+ });
114
+ tester.run('ensure-native-and-af-exports-synced', rule, {
115
+ valid: [
116
+ {
117
+ code: '',
118
+ filename: 'packages/test/package.json',
119
+ },
120
+ ],
121
+ invalid: [],
122
+ });
123
+ });
124
124
  });
125
125
 
126
126
  describe('invalid test cases', () => {
127
- describe('should fail for mismatched invalid entrypoints', () => {
128
- beforeEach(() => {
129
- mockPackageJson = {
130
- name: '@atlaskit/test',
131
- 'af:exports': {
132
- '.': './src/index.ts',
133
- },
134
- exports: {
135
- '.': './test/index.ts',
136
- },
137
- };
138
- });
139
- tester.run('ensure-native-and-af-exports-synced', rule, {
140
- valid: [],
141
- invalid: [
142
- {
143
- code: '',
144
- filename: 'packages/test/package.json',
145
- errors: [{ messageId: 'unexpectedExportsValue' }],
146
- },
147
- ],
148
- });
149
- });
127
+ describe('should fail for mismatched invalid entrypoints', () => {
128
+ beforeEach(() => {
129
+ mockPackageJson = {
130
+ name: '@atlaskit/test',
131
+ 'af:exports': {
132
+ '.': './src/index.ts',
133
+ },
134
+ exports: {
135
+ '.': './test/index.ts',
136
+ },
137
+ };
138
+ });
139
+ tester.run('ensure-native-and-af-exports-synced', rule, {
140
+ valid: [],
141
+ invalid: [
142
+ {
143
+ code: '',
144
+ filename: 'packages/test/package.json',
145
+ errors: [{ messageId: 'unexpectedExportsValue' }],
146
+ },
147
+ ],
148
+ });
149
+ });
150
150
 
151
- describe('should fail for missing entrypoints', () => {
152
- beforeEach(() => {
153
- mockPackageJson = {
154
- name: '@atlaskit/tokens',
155
- 'af:exports': {
156
- '.': './src/index.ts',
157
- './button': './button',
158
- },
159
- exports: {
160
- '.': './src/index.ts',
161
- },
162
- };
163
- });
164
- tester.run('ensure-native-and-af-exports-synced', rule, {
165
- valid: [],
166
- invalid: [
167
- {
168
- code: '',
169
- filename: 'packages/test/package.json',
170
- errors: [{ messageId: 'missingExportsKey' }],
171
- },
172
- ],
173
- });
174
- });
151
+ describe('should fail for missing entrypoints', () => {
152
+ beforeEach(() => {
153
+ mockPackageJson = {
154
+ name: '@atlaskit/tokens',
155
+ 'af:exports': {
156
+ '.': './src/index.ts',
157
+ './button': './button',
158
+ },
159
+ exports: {
160
+ '.': './src/index.ts',
161
+ },
162
+ };
163
+ });
164
+ tester.run('ensure-native-and-af-exports-synced', rule, {
165
+ valid: [],
166
+ invalid: [
167
+ {
168
+ code: '',
169
+ filename: 'packages/test/package.json',
170
+ errors: [{ messageId: 'missingExportsKey' }],
171
+ },
172
+ ],
173
+ });
174
+ });
175
175
 
176
- describe('should fail for invalid directory export', () => {
177
- beforeEach(() => {
178
- mockPackageJson = {
179
- name: '@atlaskit/tokens',
180
- 'af:exports': {
181
- './button': './button',
182
- },
183
- exports: {
184
- './button/*': './src/button/*',
185
- },
186
- };
187
- });
188
- tester.run('ensure-native-and-af-exports-synced', rule, {
189
- valid: [],
190
- invalid: [
191
- {
192
- code: '',
193
- filename: 'packages/test/package.json',
194
- errors: [{ messageId: 'unexpectedExportsValue' }],
195
- },
196
- ],
197
- });
198
- });
176
+ describe('should fail for invalid directory export', () => {
177
+ beforeEach(() => {
178
+ mockPackageJson = {
179
+ name: '@atlaskit/tokens',
180
+ 'af:exports': {
181
+ './button': './button',
182
+ },
183
+ exports: {
184
+ './button/*': './src/button/*',
185
+ },
186
+ };
187
+ });
188
+ tester.run('ensure-native-and-af-exports-synced', rule, {
189
+ valid: [],
190
+ invalid: [
191
+ {
192
+ code: '',
193
+ filename: 'packages/test/package.json',
194
+ errors: [{ messageId: 'unexpectedExportsValue' }],
195
+ },
196
+ ],
197
+ });
198
+ });
199
199
  });