diff --git a/eslint-rules/lib/rules/function-deprecation.js b/eslint-rules/lib/rules/function-deprecation.js index af5b85f680..b334943c48 100644 --- a/eslint-rules/lib/rules/function-deprecation.js +++ b/eslint-rules/lib/rules/function-deprecation.js @@ -66,13 +66,18 @@ module.exports = { // console.warn('from', node.arguments[options.argumentIndex]); const prop = _.find(node.arguments[options.argumentIndex].properties, prop => prop.key.name === options.prop); const propIndex = node.arguments[options.argumentIndex].properties.indexOf(prop); - fixed = fixer.replaceText(node.arguments[options.argumentIndex].properties[propIndex], fix) + fixed = fixer.replaceText(node.arguments[options.argumentIndex].properties[propIndex].key, fix) // console.warn('to', fixed); return fixed; case FIX_TYPES.FUNCTION_NAME: if (node.type === "ImportDeclaration") { // console.warn('fix function import'); const index = getSpecifierIndex(node, options.name); + // Check if the target name already exists to avoid duplicate identifiers + const targetExists = node.specifiers.some((s, i) => i !== index && s.local.name === fix); + if (targetExists) { + return null; + } // console.warn('from', node.specifiers[index]); fixed = fixer.replaceText(node.specifiers[index], fix); // console.warn('to', fixed); diff --git a/eslint-rules/lib/rules/typography-deprecation.js b/eslint-rules/lib/rules/typography-deprecation.js index 9afcfb97ab..5bd1a82e50 100644 --- a/eslint-rules/lib/rules/typography-deprecation.js +++ b/eslint-rules/lib/rules/typography-deprecation.js @@ -41,7 +41,8 @@ module.exports = { fix(fixer) { if (options.fix) { const fix = useShortVersion ? options.fix.substr(`${defaultImportName}.`.length) : options.fix; - return fixer.replaceText(node, fix); + const fixNode = useShortVersion && node.name ? node.name : node; + return fixer.replaceText(fixNode, fix); } } }); diff --git a/eslint-rules/package.json b/eslint-rules/package.json index 5687cf9251..e833a11200 100644 --- a/eslint-rules/package.json +++ b/eslint-rules/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-uilib", - "version": "2.2.4", + "version": "3.0.0", "description": "uilib set of eslint rules", "keywords": [ "eslint", @@ -28,12 +28,11 @@ }, "devDependencies": { "babel-eslint": "^10.1.0", - "eslint": "^5.0.0", - "eslint-config-standard": "^11.0.0", - "eslint-plugin-import": "^2.9.0", - "eslint-plugin-node": "^6.0.1", - "eslint-plugin-promise": "^3.7.0", - "eslint-plugin-standard": "^3.0.1", + "eslint": "^7.0.0", + "eslint-config-standard": "^16.0.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.0.0", "mocha": "^10.8.2", "shell-utils": "^1.0.10" }, diff --git a/eslint-rules/tests/lib/rules/assets-deprecation.js b/eslint-rules/tests/lib/rules/assets-deprecation.js index bb690baf00..cfb236df4a 100644 --- a/eslint-rules/tests/lib/rules/assets-deprecation.js +++ b/eslint-rules/tests/lib/rules/assets-deprecation.js @@ -3,7 +3,7 @@ const rule = require('../../../lib/rules/assets-deprecation'); const deprecationsJson = require('../../assets_deprecation.json'); RuleTester.setDefaultConfig({ - parser: 'babel-eslint', + parser: require.resolve('babel-eslint'), parserOptions: {ecmaVersion: 6, ecmaFeatures: {jsx: true}} }); @@ -205,6 +205,23 @@ class Example extends React.Component { export default Example;`; +const partialClassTest1 = ` +function createImages() { + const IDs1 = require('my-ids-1'); + const {Assets} = require('${ourSource}'); + const IDs2 = require('my-ids-2'); + + const images = {}; + images[IDs1.ID1] = Assets.icons.valid; + images[IDs1.ID2] = Assets.icons.deprecated; + images[IDs1.ID3] = Assets.icons.general.valid; + images[IDs1.ID4] = require('../../images/image1.png'); + images[IDs2.ID5] = require('../../images/image2.png'); + images[IDs2.ID6] = Assets.icons.general.valid2; + images[IDs2.ID7] = Assets.icons.valid2; + return images; +}`; + const error = "'Assets.icons.deprecated' is deprecated. Please use 'Assets.icons.general.valid' instead (fix is available)."; const errorDate = ' Please fix this issue by 2 November, Friday!'; @@ -276,119 +293,115 @@ ruleTester.run('assets-deprecation', rule, { { options: options, code: `${ourImport} ${constDeprecated1}`, - output: `${ourImport} const assets = Assets.icons.general.valid;`, + output: `${ourImport} ${constValid1}`, errors: [{message: error}] }, { options: optionsWithDate, code: `${ourImport} ${constDeprecated1}`, - output: `${ourImport} const assets = Assets.icons.general.valid;`, + output: `${ourImport} ${constValid1}`, errors: [{message: error + errorDate}] }, { options: optionsWithDate, code: `${ourImport} ${constDeprecated2}`, - output: `${ourImport} const assets =