From 0fbeff721025804c48022254fc50e4e43f4a9e71 Mon Sep 17 00:00:00 2001 From: Ian Sanders Date: Fri, 6 Sep 2024 15:14:12 +0000 Subject: [PATCH 1/4] Fix to not match --- package-lock.json | 4 ++-- src/utils/is-primer-component.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31c4948..3281d53 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "eslint-plugin-primer-react", - "version": "5.4.0", + "version": "6.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "eslint-plugin-primer-react", - "version": "5.4.0", + "version": "6.0.1", "license": "MIT", "dependencies": { "@styled-system/props": "^5.1.5", diff --git a/src/utils/is-primer-component.js b/src/utils/is-primer-component.js index 10b1ed6..320c1a3 100644 --- a/src/utils/is-primer-component.js +++ b/src/utils/is-primer-component.js @@ -15,6 +15,6 @@ function isPrimerComponent(name, scope) { return false } - return isImportedFrom(/^@primer\/react/, identifier, scope) + return isImportedFrom(/^@primer\/react$/, identifier, scope) } exports.isPrimerComponent = isPrimerComponent From 76c10127abbe4d37738ef2407de8886847e844f0 Mon Sep 17 00:00:00 2001 From: Ian Sanders Date: Fri, 6 Sep 2024 15:14:46 +0000 Subject: [PATCH 2/4] Update test --- src/rules/__tests__/no-unnecessary-components.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rules/__tests__/no-unnecessary-components.test.js b/src/rules/__tests__/no-unnecessary-components.test.js index c6dda7d..45ee567 100644 --- a/src/rules/__tests__/no-unnecessary-components.test.js +++ b/src/rules/__tests__/no-unnecessary-components.test.js @@ -7,7 +7,7 @@ const rule = require('../no-unnecessary-components') const {components} = require('../no-unnecessary-components') const prcImport = 'import React from "react"; import {Box, Text} from "@primer/react";' -const brandImport = 'import React from "react"; import {Box, Text} from "@primer/brand";' +const brandImport = 'import React from "react"; import {Box, Text} from "@primer/react-brand";' /** @param {string} content */ const jsx = content => `export const Component = () => <>${content}` From 24d852645383e9c3df03a6c40540b7f7b24960ad Mon Sep 17 00:00:00 2001 From: Ian Sanders Date: Fri, 6 Sep 2024 15:19:22 +0000 Subject: [PATCH 3/4] Add changeset --- .changeset/twenty-rocks-agree.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/twenty-rocks-agree.md diff --git a/.changeset/twenty-rocks-agree.md b/.changeset/twenty-rocks-agree.md new file mode 100644 index 0000000..83db10d --- /dev/null +++ b/.changeset/twenty-rocks-agree.md @@ -0,0 +1,5 @@ +--- +'eslint-plugin-primer-react': patch +--- + +Fix incorrect rule violations on components imported from @primer/react-brand From 20c03358df068fd993a61868490aeca1f76c00e0 Mon Sep 17 00:00:00 2001 From: Ian Sanders Date: Fri, 6 Sep 2024 15:25:08 +0000 Subject: [PATCH 4/4] Allow subpaths --- src/utils/is-primer-component.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/utils/is-primer-component.js b/src/utils/is-primer-component.js index 320c1a3..959a753 100644 --- a/src/utils/is-primer-component.js +++ b/src/utils/is-primer-component.js @@ -1,6 +1,10 @@ const {isImportedFrom} = require('./is-imported-from') -/** @returns {boolean} */ +/** + * Check if `name` is a JSX component that is imported from `@primer/react` or + * a subpath `@primer/react/*`. + * @returns {boolean} + */ function isPrimerComponent(name, scope) { let identifier @@ -14,7 +18,6 @@ function isPrimerComponent(name, scope) { default: return false } - - return isImportedFrom(/^@primer\/react$/, identifier, scope) + return isImportedFrom(/^@primer\/react(?:$|\/)/, identifier, scope) } exports.isPrimerComponent = isPrimerComponent