Files snapshot from file-caching
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
7e40e5 Tucker McKnight
7e40e5 Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
c69df8 Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
7e40e5 Tucker McKnight
b30bd9 Tucker McKnight
fb82fe Tucker McKnight
b30bd9 Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
b30bd9 Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
b30bd9 Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
fb82fe Tucker McKnight
c69df8 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
b30bd9 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
import { type Repository } from "./dataTypes.ts"
type FlatPatchRecord = {
commit: ReturnType<Repository['commits']['get']>,
repoName: string,
relName: string,
type: "branch" | "tag",
}
let cachedFlatPatches: Array<FlatPatchRecord> | null = null
export default async (repos: Array<Repository>)
: Promise<Array<FlatPatchRecord>> => {
if (cachedFlatPatches !== null) { return cachedFlatPatches }
cachedFlatPatches = repos.flatMap((repo) => {
const branches = repo.branches.flatMap((branch) => {
const flatPatches: Array<FlatPatchRecord> = []
let currentCommit: ReturnType<Repository['commits']['get']> | undefined = repo.commits.get(branch.sha)
while (currentCommit !== undefined) {
flatPatches.push({
type: "branch",
commit: currentCommit,
repoName: repo.name,
relName: branch.name
})
currentCommit = repo.commits.get(currentCommit.parent)
}
return flatPatches
})
const tags = repo.tags.flatMap((tag) => {
const flatPatches: Array<FlatPatchRecord> = []
let currentCommit: ReturnType<Repository['commits']['get']> = repo.commits.get(tag.sha)
while (currentCommit !== undefined) {
flatPatches.push({
type: "tag",
commit: currentCommit,
repoName: repo.name,
relName: tag.name,
})
currentCommit = repo.commits.get(currentCommit.parent)
}
return flatPatches
})
return [...branches, ...tags]
})
return cachedFlatPatches
}