Skip to content

Commit 4f7c1d1

Browse files
Merge branch 'main' into bs/rule-for-tooltip-v2
2 parents ec3ca30 + bd65052 commit 4f7c1d1

File tree

8 files changed

+432
-1013
lines changed

8 files changed

+432
-1013
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# eslint-plugin-primer-react
22

3+
## 4.1.0
4+
5+
### Minor Changes
6+
7+
- [#129](https://github.com/primer/eslint-plugin-primer-react/pull/129) [`eb04624`](https://github.com/primer/eslint-plugin-primer-react/commit/eb046249daaa9ab72d9ca4bbfba30fd494a79e23) Thanks [@joshblack](https://github.com/joshblack)! - Add no-deprecated-entrypoints rule to lint against deprecated import usage in @primer/react
8+
9+
### Patch Changes
10+
11+
- [#133](https://github.com/primer/eslint-plugin-primer-react/pull/133) [`5cc9630`](https://github.com/primer/eslint-plugin-primer-react/commit/5cc96305bfa884cf9f447d1e033bc2f5c9e110b7) Thanks [@siddharthkp](https://github.com/siddharthkp)! - no-system-props: Add alignContent to allowed props for Button
12+
313
## 4.0.4
414

515
### Patch Changes
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# No Deprecated Entrypoints
2+
3+
## Rule Details
4+
5+
This rule enforces the usage of non-deprecated entrypoints from `@primer/react`.
6+
7+
👎 Examples of **incorrect** code for this rule
8+
9+
```jsx
10+
import {DataTable} from '@primer/react/drafts'
11+
12+
function ExampleComponent() {
13+
return <DataTable>{/* ... */}</DataTable>
14+
}
15+
```
16+
17+
👍 Examples of **correct** code for this rule:
18+
19+
```jsx
20+
import {ExampleComponent} from '@primer/react/experimental'
21+
22+
function ExampleComponent() {
23+
return <DataTable>{/* ... */}</DataTable>
24+
}
25+
```

package-lock.json

Lines changed: 328 additions & 1011 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "eslint-plugin-primer-react",
3-
"version": "4.0.4",
3+
"version": "4.1.0",
44
"description": "ESLint rules for Primer React",
55
"main": "src/index.js",
66
"scripts": {
@@ -36,7 +36,7 @@
3636
"styled-system": "^5.1.5"
3737
},
3838
"devDependencies": {
39-
"@changesets/changelog-github": "^0.4.0",
39+
"@changesets/changelog-github": "^0.5.0",
4040
"@changesets/cli": "^2.16.0",
4141
"@github/markdownlint-github": "^0.6.0",
4242
"@github/prettier-config": "0.0.6",

src/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module.exports = {
22
rules: {
33
'direct-slot-children': require('./rules/direct-slot-children'),
44
'no-deprecated-colors': require('./rules/no-deprecated-colors'),
5+
'no-deprecated-entrypoints': require('./rules/no-deprecated-entrypoints'),
56
'no-system-props': require('./rules/no-system-props'),
67
'a11y-tooltip-interactive-trigger': require('./rules/a11y-tooltip-interactive-trigger'),
78
'new-color-css-vars': require('./rules/new-color-css-vars'),
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
'use strict'
2+
3+
const {RuleTester} = require('eslint')
4+
const rule = require('../no-deprecated-entrypoints')
5+
6+
const ruleTester = new RuleTester({
7+
parserOptions: {
8+
ecmaVersion: 'latest',
9+
sourceType: 'module',
10+
ecmaFeatures: {
11+
jsx: true,
12+
},
13+
},
14+
})
15+
16+
ruleTester.run('no-deprecated-entrypoints', rule, {
17+
valid: [`import {Box} from '@primer/react';`],
18+
invalid: [
19+
{
20+
code: `import {DataTable} from '@primer/react/drafts';`,
21+
output: `import {DataTable} from '@primer/react/experimental';`,
22+
errors: [
23+
{
24+
message:
25+
'The drafts entrypoint is deprecated and will be removed in the next major release. Use the experimental entrypoint instead',
26+
},
27+
],
28+
},
29+
],
30+
})
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
'use strict'
2+
3+
const url = require('../url')
4+
5+
/**
6+
* @type {import('eslint').Rule.RuleModule}
7+
*/
8+
module.exports = {
9+
meta: {
10+
type: 'problem',
11+
docs: {
12+
description: 'Avoid using deprecated entrypoints from @primer/react',
13+
recommended: true,
14+
url: url(module),
15+
},
16+
fixable: true,
17+
schema: [],
18+
},
19+
create(context) {
20+
return {
21+
ImportDeclaration(node) {
22+
if (node.source.value === '@primer/react/drafts') {
23+
context.report({
24+
node,
25+
message:
26+
'The drafts entrypoint is deprecated and will be removed in the next major release. Use the experimental entrypoint instead',
27+
fix(fixer) {
28+
return fixer.replaceText(node.source, `'@primer/react/experimental'`)
29+
},
30+
})
31+
}
32+
},
33+
}
34+
},
35+
}

src/rules/no-system-props.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const excludedComponentProps = new Map([
1919
['Avatar', new Set(['size'])],
2020
['AvatarToken', new Set(['size'])],
2121
['Blankslate', new Set(['border'])],
22+
['Button', new Set(['alignContent'])],
2223
['CircleOcticon', new Set(['size'])],
2324
['Dialog', new Set(['width', 'height'])],
2425
['IssueLabelToken', new Set(['size'])],

0 commit comments

Comments
 (0)