Files snapshot from file-caching

./src/flatRels.ts

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
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
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
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
import { type Repository } from "./dataTypes.ts"

type BranchEntry = {
  relName: string,
  type: "branch",
  repoName: string,
  compareTo: string,
  ahead: number,
  behind: number,
}

type TagEntry = {
  relName: string,
  type: "tag",
  repoName: string,
}

let cachedRels: Array<BranchEntry | TagEntry> | null = null

export default (repos: Array<Repository>) => {
  if (cachedRels !== null) { return cachedRels }

  cachedRels = repos.flatMap((repo) => {
    const branches: Array<BranchEntry> = repo.branches.map((branch) => {
      const result: BranchEntry = {
        relName: branch.name,
        type: "branch",
        repoName: repo.name,
        compareTo: branch.compareTo,
        ahead: branch.ahead,
        behind: branch.behind,
      }
      if (branch.description) { result['description'] = branch.description }
      return result
    })
    const tags: Array<TagEntry> = repo.tags.map((tag) => {
      return {
        relName: tag.name,
        type: "tag",
        repoName: repo.name,
      }
    })

    return [...branches, ...tags]
  })

  return cachedRels
}