fix no-import-of-default-export (#659)

* fix message of no-import-of-default-export

* run prettier

* only check .d.ts files
This commit is contained in:
Nathan Shively-Sanders
2023-03-28 08:43:35 -07:00
committed by GitHub
parent 6380f4681c
commit 35746f1c63
2 changed files with 27 additions and 21 deletions

View File

@@ -19,27 +19,32 @@ const rule = createRule({
create(context) {
const parserServices = ESLintUtils.getParserServices(context);
const checker = parserServices.program.getTypeChecker();
return {
// eslint-disable-next-line @typescript-eslint/naming-convention
ImportDeclaration(node) {
const defaultName = node.specifiers.find((spec) => spec.type === "ImportDefaultSpecifier")?.local;
if (!defaultName) {
return;
}
const importName = defaultName.name;
const source = parserServices.esTreeNodeToTSNodeMap.get(node.source);
const sym = checker.getSymbolAtLocation(source);
if (
sym?.declarations?.some((d) => getStatements(d)?.some((s) => ts.isExportAssignment(s) && !!s.isExportEquals))
) {
context.report({
messageId: "noImportDefaultOfExportEquals",
data: { moduleName: node.source, importName },
node: defaultName,
});
}
},
};
if (context.getFilename().endsWith(".d.ts")) {
return {
// eslint-disable-next-line @typescript-eslint/naming-convention
ImportDeclaration(node) {
const defaultName = node.specifiers.find((spec) => spec.type === "ImportDefaultSpecifier")?.local;
if (!defaultName) {
return;
}
const importName = defaultName.name;
const source = parserServices.esTreeNodeToTSNodeMap.get(node.source);
const sym = checker.getSymbolAtLocation(source);
if (
sym?.declarations?.some((d) => getStatements(d)?.some((s) => ts.isExportAssignment(s) && !!s.isExportEquals))
) {
context.report({
messageId: "noImportDefaultOfExportEquals",
data: { moduleName: node.source.value, importName },
node: defaultName,
});
}
},
};
}
else {
return {};
}
},
});

View File

@@ -27,6 +27,7 @@ import a from "a";
{
line: 7,
messageId: "noImportDefaultOfExportEquals",
data: { moduleName: "a", importName: "a" },
},
],
},