eslint-plugin-sort-react-dependency-arrays
Advanced tools
Comparing version
@@ -24,2 +24,21 @@ /** | ||
create(context) { | ||
function getSortableNameFromNode(node) { | ||
if (!node) return ''; | ||
switch (node.type) { | ||
case 'Identifier': | ||
return node.name; | ||
case 'MemberExpression': | ||
// For chained expressions, e.g., `a.b.c`, we'll return `a.b.c` | ||
return ( | ||
getSortableNameFromNode(node.object) + | ||
'.' + | ||
getSortableNameFromNode(node.property) | ||
); | ||
default: | ||
// For any other types or for simplicity, you could just stringify the node. | ||
return context.getSourceCode().getText(node); | ||
} | ||
} | ||
return { | ||
@@ -37,8 +56,15 @@ CallExpression(node) { | ||
const currentNames = currentDependencies.map( | ||
(item) => item.name | ||
getSortableNameFromNode | ||
); | ||
const sortedDependencies = [ | ||
...dependencies.elements, | ||
].sort((a, b) => (a.name < b.name ? -1 : 1)); | ||
const sortedDependencies = [...dependencies.elements] | ||
.map((n) => ({ | ||
...n, | ||
name: getSortableNameFromNode(n), | ||
})) | ||
.sort((a, b) => | ||
a.name | ||
.toLowerCase() | ||
.localeCompare(b.name.toLowerCase()) | ||
); | ||
const sortedNames = sortedDependencies.map( | ||
@@ -45,0 +71,0 @@ (item) => item.name |
{ | ||
"name": "eslint-plugin-sort-react-dependency-arrays", | ||
"description": "ESLint plugin to alphabetically sort React hook dependency arrays", | ||
"version": "0.2.0", | ||
"version": "0.3.0", | ||
"author": "Steven Sacks <stevensacks@gmail.com>", | ||
@@ -26,6 +26,6 @@ "keywords": [ | ||
"devDependencies": { | ||
"eslint": "^8.21.0", | ||
"eslint-plugin-eslint-plugin": "^5.0.2", | ||
"eslint": "8.49.0", | ||
"eslint-plugin-eslint-plugin": "5.1.1", | ||
"eslint-plugin-node": "^11.1.0", | ||
"mocha": "^10.0.0" | ||
"mocha": "10.2.0" | ||
}, | ||
@@ -32,0 +32,0 @@ "peerDependencies": { |
8936
13.39%163
17.27%