From 96d9dfc1b46433118dc8b27ee845433036120626 Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Fri, 16 Dec 2022 12:29:21 -0500 Subject: [PATCH 1/6] spinner issvg warning try 1 --- .../lib/rules/v5/spinner-svg-default.js | 33 ++++++++++++++++ .../test/rules/v5/spinner-svg-default.js | 39 +++++++++++++++++++ packages/pf-codemods/index.js | 2 +- 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js create mode 100644 packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js diff --git a/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js b/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js new file mode 100644 index 000000000..d10bd9345 --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js @@ -0,0 +1,33 @@ +// const { getPackageImports } = require('../../helpers'); + +// module.exports = { +// meta: {}, +// create: function(context) { +// const imports = getPackageImports(context, '@patternfly/react-core') +// .filter(specifier => specifier.imported.name === 'Spinner'); + +// return imports.length === 0 ? {} : { +// JSXOpeningElement(node) { +// if (imports.map(imp => imp.local.name).includes(node.name.name)) { +// context.report({ +// node, +// message: `Spinner isSVG prop default value has changed from false to true.`, +// }); +// } +// } +// }; +// } +// }; + +const { renameProp } = require('../../helpers'); + +// https://github.com/patternfly/patternfly-react/pull/8183 +module.exports = { + meta: { fixable: 'code' }, + create: renameProp( + 'Spinner', + { isSVG: '' }, + () => `Spinner isSVG prop default value has changed from false to true.` + ) +}; + diff --git a/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js b/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js new file mode 100644 index 000000000..d9932921c --- /dev/null +++ b/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js @@ -0,0 +1,39 @@ +const ruleTester = require('../../ruletester'); +const rule = require('../../../lib/rules/v5/spinner-svg-default'); + +ruleTester.run("spinner-svg-default", rule, { + valid: [ + // { + // code: `import { Spinner } from '@patternfly/react-core'; `, + // }, + { + // No @patternfly/react-core import + code: ``, + }, + { + code: `import { Spinner } from '@patternfly/react-core'; `, + }, + { + // No @patternfly/react-core import + code: ``, + } + ], + invalid: [ + // { + // code: `import { Spinner } from '@patternfly/react-core'; `, + // output: `import { Spinner } from '@patternfly/react-core'; `, + // errors: [{ + // message: `Spinner isSVG prop default value has changed from false to true.`, + // type: "JSXOpeningElement", + // }] + // }, + { + code: `import { Spinner } from '@patternfly/react-core'; `, + output: `import { Spinner } from '@patternfly/react-core'; `, + errors: [{ + message: `Spinner isSVG prop default value has changed from false to true.`, + type: "JSXOpeningElement", + }] + } + ] +}); diff --git a/packages/pf-codemods/index.js b/packages/pf-codemods/index.js index cee0cb888..06db4249a 100755 --- a/packages/pf-codemods/index.js +++ b/packages/pf-codemods/index.js @@ -35,7 +35,7 @@ function printResults(engine, results, format) { } // Don't show warnings - results.forEach(result => result.messages = result.messages.filter(message => message.severity === 2)); + // results.forEach(result => result.messages = result.messages.filter(message => message.severity === 2)); const output = formatter(results, { get rulesMeta() { From 63d064eb1ed3be5150ab4fd41d369eb779361bac Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Fri, 16 Dec 2022 14:34:32 -0500 Subject: [PATCH 2/6] feat(Spinner): remove isSVG --- .../lib/rules/v5/spinner-svg-default.js | 21 ------- .../test/rules/v5/spinner-svg-default.js | 17 +----- packages/pf-codemods/README.md | 58 ++++++++++++------- 3 files changed, 39 insertions(+), 57 deletions(-) diff --git a/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js b/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js index d10bd9345..19076ee67 100644 --- a/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js +++ b/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js @@ -1,24 +1,3 @@ -// const { getPackageImports } = require('../../helpers'); - -// module.exports = { -// meta: {}, -// create: function(context) { -// const imports = getPackageImports(context, '@patternfly/react-core') -// .filter(specifier => specifier.imported.name === 'Spinner'); - -// return imports.length === 0 ? {} : { -// JSXOpeningElement(node) { -// if (imports.map(imp => imp.local.name).includes(node.name.name)) { -// context.report({ -// node, -// message: `Spinner isSVG prop default value has changed from false to true.`, -// }); -// } -// } -// }; -// } -// }; - const { renameProp } = require('../../helpers'); // https://github.com/patternfly/patternfly-react/pull/8183 diff --git a/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js b/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js index d9932921c..d0166577c 100644 --- a/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js +++ b/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js @@ -3,30 +3,15 @@ const rule = require('../../../lib/rules/v5/spinner-svg-default'); ruleTester.run("spinner-svg-default", rule, { valid: [ - // { - // code: `import { Spinner } from '@patternfly/react-core'; `, - // }, - { - // No @patternfly/react-core import - code: ``, - }, { code: `import { Spinner } from '@patternfly/react-core'; `, }, { // No @patternfly/react-core import - code: ``, + code: ``, } ], invalid: [ - // { - // code: `import { Spinner } from '@patternfly/react-core'; `, - // output: `import { Spinner } from '@patternfly/react-core'; `, - // errors: [{ - // message: `Spinner isSVG prop default value has changed from false to true.`, - // type: "JSXOpeningElement", - // }] - // }, { code: `import { Spinner } from '@patternfly/react-core'; `, output: `import { Spinner } from '@patternfly/react-core'; `, diff --git a/packages/pf-codemods/README.md b/packages/pf-codemods/README.md index 5104dd74a..2b7c84bb2 100644 --- a/packages/pf-codemods/README.md +++ b/packages/pf-codemods/README.md @@ -71,7 +71,7 @@ In: Out: ```jsx - + ``` ### datalist-remove-ondrags [(#163)](https://github.com/patternfly/pf-codemods/issues/163) @@ -89,7 +89,7 @@ In: Out: ```jsx - + ``` ### divider-remove-isVertical [(#8199)](https://github.com/patternfly/patternfly-react/pull/8199) @@ -141,7 +141,7 @@ In: Out: ```jsx - + ``` ### pagination-remove-ToggleTemplateProps [(#8134)](https://github.com/patternfly/patternfly-react/pull/8134) @@ -182,15 +182,15 @@ In: ```jsx ``` @@ -198,13 +198,13 @@ Out: ```jsx ``` @@ -250,7 +250,7 @@ In: Out: ```jsx - + ``` ### simpleList-remove-isCurrent [(#8132)](https://github.com/patternfly/patternfly-react/pull/8132) @@ -271,6 +271,24 @@ Out: ``` +### spinner-svg-default [(#8183)](https://github.com/patternfly/patternfly-react/pull/8183) + +We've updated the Spinner to default to an svg, so the `isSVG` property is no longer required. + +#### Examples + +In: + +```jsx + +``` + +Out: + +```jsx + +``` + ### toggle-remove-isprimary [(#8179)](https://github.com/patternfly/patternfly-react/pull/8179) We've removed the deprecated `isPrimary` prop. This rule wil replace it with the "primary" value on the `toggleVariant` prop. @@ -322,5 +340,5 @@ In: Out: ```jsx - + ``` From aff300ffb1abe1d14f49267678b6fe6c6dbb66fe Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Thu, 12 Jan 2023 16:19:04 -0500 Subject: [PATCH 3/6] only true isSVG should be removed --- .../lib/rules/v5/spinner-svg-default.js | 28 +++++++++++++++---- .../test/rules/v5/spinner-svg-default.js | 11 ++++++++ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js b/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js index 19076ee67..995eb1629 100644 --- a/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js +++ b/packages/eslint-plugin-pf-codemods/lib/rules/v5/spinner-svg-default.js @@ -1,12 +1,28 @@ -const { renameProp } = require('../../helpers'); +const { getPackageImports } = require('../../helpers'); // https://github.com/patternfly/patternfly-react/pull/8183 module.exports = { meta: { fixable: 'code' }, - create: renameProp( - 'Spinner', - { isSVG: '' }, - () => `Spinner isSVG prop default value has changed from false to true.` - ) + create: function(context) { + const spinnerImports = getPackageImports(context, '@patternfly/react-core') + .filter(specifier => specifier.imported.name == 'Spinner'); + + return spinnerImports.length === 0 ? {} : { + JSXOpeningElement(node) { + if (spinnerImports.map(imp => imp.local.name).includes(node.name.name)) { + const svgAttribute = node.attributes.find(n => n.name && n.name.name === 'isSVG'); + if (svgAttribute && svgAttribute?.value?.expression?.value !== false) { + context.report({ + node, + message: `Spinner isSVG prop default value has changed from false to true.`, + fix(fixer) { + return fixer.replaceText(svgAttribute, ``); + } + }); + } + } + } + }; + } }; diff --git a/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js b/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js index d0166577c..5d4cae035 100644 --- a/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js +++ b/packages/eslint-plugin-pf-codemods/test/rules/v5/spinner-svg-default.js @@ -6,6 +6,9 @@ ruleTester.run("spinner-svg-default", rule, { { code: `import { Spinner } from '@patternfly/react-core'; `, }, + { + code: `import { Spinner } from '@patternfly/react-core'; `, + }, { // No @patternfly/react-core import code: ``, @@ -19,6 +22,14 @@ ruleTester.run("spinner-svg-default", rule, { message: `Spinner isSVG prop default value has changed from false to true.`, type: "JSXOpeningElement", }] + }, + { + code: `import { Spinner } from '@patternfly/react-core'; `, + output: `import { Spinner } from '@patternfly/react-core'; `, + errors: [{ + message: `Spinner isSVG prop default value has changed from false to true.`, + type: "JSXOpeningElement", + }] } ] }); From b040ef0f9a9d41bfdd9947eb819b78299b46078d Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Fri, 13 Jan 2023 11:32:36 -0500 Subject: [PATCH 4/6] fix a merge error --- packages/eslint-plugin-pf-codemods/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/eslint-plugin-pf-codemods/index.js b/packages/eslint-plugin-pf-codemods/index.js index 33baea5ca..d61541cbd 100644 --- a/packages/eslint-plugin-pf-codemods/index.js +++ b/packages/eslint-plugin-pf-codemods/index.js @@ -55,6 +55,7 @@ const rules = { "pagination-rename-props": require('./lib/rules/v5/pagination-rename-props'), "resizeObserver-function-param": require('./lib/rules/v5/resizeObserver-function-param'), "simpleList-remove-isCurrent": require('./lib/rules/v5/simpleList-remove-isCurrent'), + "spinner-svg-default": require('./lib/rules/v5/spinner-svg-default'), "tableComposable-remove-hasSelectableRowCaption": require('./lib/rules/v5/tableComposable-remove-hasSelectableRowCaption'), "toggle-remove-isPrimary": require('./lib/rules/v5/toggle-remove-isPrimary'), "toolbar-remove-visiblity": require('./lib/rules/v5/toolbar-remove-visiblity'), From 0e078efb28ad5a85339fd9c498a9d571e9db6f46 Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Fri, 13 Jan 2023 11:39:35 -0500 Subject: [PATCH 5/6] fix some issues --- packages/pf-codemods/README.md | 12 ++++++------ packages/pf-codemods/index.js | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/pf-codemods/README.md b/packages/pf-codemods/README.md index 2b7c84bb2..083d2fd9d 100644 --- a/packages/pf-codemods/README.md +++ b/packages/pf-codemods/README.md @@ -71,7 +71,7 @@ In: Out: ```jsx - + ``` ### datalist-remove-ondrags [(#163)](https://github.com/patternfly/pf-codemods/issues/163) @@ -89,7 +89,7 @@ In: Out: ```jsx - + ``` ### divider-remove-isVertical [(#8199)](https://github.com/patternfly/patternfly-react/pull/8199) @@ -141,7 +141,7 @@ In: Out: ```jsx - + ``` ### pagination-remove-ToggleTemplateProps [(#8134)](https://github.com/patternfly/patternfly-react/pull/8134) @@ -250,7 +250,7 @@ In: Out: ```jsx - + ``` ### simpleList-remove-isCurrent [(#8132)](https://github.com/patternfly/patternfly-react/pull/8132) @@ -286,7 +286,7 @@ In: Out: ```jsx - + ``` ### toggle-remove-isprimary [(#8179)](https://github.com/patternfly/patternfly-react/pull/8179) @@ -340,5 +340,5 @@ In: Out: ```jsx - + ``` diff --git a/packages/pf-codemods/index.js b/packages/pf-codemods/index.js index 06db4249a..cee0cb888 100755 --- a/packages/pf-codemods/index.js +++ b/packages/pf-codemods/index.js @@ -35,7 +35,7 @@ function printResults(engine, results, format) { } // Don't show warnings - // results.forEach(result => result.messages = result.messages.filter(message => message.severity === 2)); + results.forEach(result => result.messages = result.messages.filter(message => message.severity === 2)); const output = formatter(results, { get rulesMeta() { From 9cd155af5486569ae037b5ae25a6ba5cd1a2c360 Mon Sep 17 00:00:00 2001 From: Katie McFaul Date: Fri, 13 Jan 2023 11:40:34 -0500 Subject: [PATCH 6/6] add missing space --- packages/pf-codemods/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pf-codemods/README.md b/packages/pf-codemods/README.md index 083d2fd9d..f0188cfe8 100644 --- a/packages/pf-codemods/README.md +++ b/packages/pf-codemods/README.md @@ -340,5 +340,5 @@ In: Out: ```jsx - + ```