diff --git a/packages/lit-analyzer/src/lib/analyze/parse/parse-dependencies/visit-dependencies.ts b/packages/lit-analyzer/src/lib/analyze/parse/parse-dependencies/visit-dependencies.ts index 9c0faa72..1803808c 100644 --- a/packages/lit-analyzer/src/lib/analyze/parse/parse-dependencies/visit-dependencies.ts +++ b/packages/lit-analyzer/src/lib/analyze/parse/parse-dependencies/visit-dependencies.ts @@ -118,7 +118,9 @@ function visitDirectImports(node: Node, context: IVisitDependenciesContext): voi /*if (("importClause" in node && node.importClause != null) || ("exportClause" in node && node.exportClause != null)) { return; }*/ - + if (node.importClause?.namedBindings?.elements && node.importClause.namedBindings.elements.every(e=>e.isTypeOnly)) { + return; + } emitDirectModuleImportWithName(node.moduleSpecifier.text, node, context); } } diff --git a/packages/lit-analyzer/src/test/parser/dependencies/parse-dependencies.ts b/packages/lit-analyzer/src/test/parser/dependencies/parse-dependencies.ts index 6f3d82ac..b3ad022a 100644 --- a/packages/lit-analyzer/src/test/parser/dependencies/parse-dependencies.ts +++ b/packages/lit-analyzer/src/test/parser/dependencies/parse-dependencies.ts @@ -300,6 +300,26 @@ tsTest("Ignores type-only imports in a file", t => { t.deepEqual(sortedFileNames, ["file2.ts"]); }); +tsTest("Ignores imports with type-only bindings in a file", t => { + const { sourceFile, context } = prepareAnalyzer([ + { fileName: "file1.ts", text: `` }, + { + fileName: "file2.ts", + text: ` + import { type MyElement } from "./file1"; + `, + entry: true + } + ]); + + const dependencies = parseAllIndirectImports(sourceFile, context); + + const sortedFileNames = Array.from(dependencies) + .map(file => file.fileName) + .sort(); + + t.deepEqual(sortedFileNames, ["file2.ts"]); +}); tsTest("Ignores type-only exports in a file", t => { const { sourceFile, context } = prepareAnalyzer([