Update rules
This commit is contained in:
45
src/custom/no-useless-import-alias.ts
Normal file
45
src/custom/no-useless-import-alias.ts
Normal file
@ -0,0 +1,45 @@
|
||||
import type { Rule } from 'eslint';
|
||||
import type { Position } from 'estree';
|
||||
|
||||
const rule: Rule.RuleModule = {
|
||||
meta: {
|
||||
type: 'problem',
|
||||
docs: {
|
||||
description:
|
||||
"Ban useless import aliasing like `import { abc as abc } from 'module'`",
|
||||
category: 'Best Practices',
|
||||
recommended: true,
|
||||
},
|
||||
fixable: 'code',
|
||||
},
|
||||
create(context) {
|
||||
return {
|
||||
ImportDeclaration(node) {
|
||||
if (node.specifiers.length === 0) return;
|
||||
|
||||
for (const specifier of node.specifiers) {
|
||||
if (specifier.type !== 'ImportSpecifier') continue;
|
||||
|
||||
const { imported, local } = specifier;
|
||||
if (
|
||||
imported.name === local.name &&
|
||||
!arePositionsEqual(imported.loc!.start, local.loc!.start)
|
||||
) {
|
||||
context.report({
|
||||
node: specifier,
|
||||
message: `Useless aliasing of '${imported.name}'?`,
|
||||
fix(fixer) {
|
||||
return fixer.removeRange([imported.range![1], local.range![1]]);
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
const arePositionsEqual = (a: Position, b: Position) =>
|
||||
a.line === b.line && a.column === b.column;
|
||||
|
||||
export default rule;
|
Reference in New Issue
Block a user