Skip to content

Commit 5e10fd0

Browse files
authored
[ATA] Remove duplicate modules from getReferencesForModule (#3391)
1 parent 3977b08 commit 5e10fd0

File tree

3 files changed

+24
-12
lines changed

3 files changed

+24
-12
lines changed

.changeset/khaki-spoons-double.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@typescript/ata": patch
3+
---
4+
5+
Remove duplicate modules from getReferencesForModule

packages/ata/src/index.ts

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -173,19 +173,21 @@ export const getReferencesForModule = (ts: typeof import("typescript"), code: st
173173
.filter(f => !isDtsFile(f.fileName))
174174
.filter(d => !libMap.has(d.fileName))
175175

176-
return references.map(r => {
177-
let version = undefined
178-
if (!r.fileName.startsWith(".")) {
179-
version = "latest"
180-
const line = code.slice(r.end).split("\n")[0]!
181-
if (line.includes("// types:")) version = line.split("// types: ")[1]!.trim()
182-
}
176+
return references
177+
.map(r => {
178+
let version = undefined
179+
if (!r.fileName.startsWith(".")) {
180+
version = "latest"
181+
const line = code.slice(r.end).split("\n")[0]!
182+
if (line.includes("// types:")) version = line.split("// types: ")[1]!.trim()
183+
}
183184

184-
return {
185-
module: r.fileName,
186-
version,
187-
}
188-
})
185+
return {
186+
module: r.fileName,
187+
version,
188+
}
189+
})
190+
.filter((r, index, self) => self.findIndex(m => m.module === r.module && m.version === r.version) === index)
189191
}
190192

191193
/** A list of modules from the current sourcefile which we don't have existing files for */

packages/ata/tests/ata.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ describe(getReferencesForModule, () => {
1616
const code = "import {asda} from '123' // types: 1.2.3"
1717
expect(getReferencesForModule(ts, code)[0]).toEqual({ module: "123", version: "1.2.3" })
1818
})
19+
20+
it("removes duplicate imports", () => {
21+
const code = "import 'abc'; import {asda} from 'abc'"
22+
expect(getReferencesForModule(ts, code).map(m => m.module)).toEqual(["abc"])
23+
})
1924
})
2025

2126
describe("ignores lib references", () => {

0 commit comments

Comments
 (0)