Files snapshot from show-tags

./src/flatFiles.ts

0
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
7e40e5 Tucker McKnight
b8a3bb Tucker McKnight
cdb797 Tucker McKnight
cdb797 Tucker McKnight
cdb797 Tucker McKnight
2a54fe Tucker McKnight
cdb797 Tucker McKnight
2a54fe Tucker McKnight
cdb797 Tucker McKnight
b8a3bb Tucker McKnight
cdb797 Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
2a54fe Tucker McKnight
7e40e5 Tucker McKnight
cdb797 Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
2a54fe Tucker McKnight
7e40e5 Tucker McKnight
2a54fe Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
2a54fe Tucker McKnight
b8a3bb Tucker McKnight
b8a3bb Tucker McKnight
import { type Repository } from "./dataTypes.ts"

let cachedFlatFiles: Array<FlatFileEntry> | null = null
export type FlatFileEntry = {
  file: string,
  refName: string,
  repoName: string,
  type: 'branch' | 'tag',
}

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

  const branches: FlatFileEntry[] = repos.flatMap((repo) => {
    return repo.branches.flatMap((branch) => {
      return Array.from(branch.fileList.keys()).map((file) => {
        return {
          file,
          refName: branch.name,
          repoName: repo.name,
          type: 'branch',
        }
      })
    })
  })

  const tags: FlatFileEntry[] = repos.flatMap((repo) => {
    return repo.tags.flatMap((tag) => {
      return Array.from(tag.fileList.keys()).map((file) => {
        return {
          file,
          refName: tag.name,
          repoName: repo.name,
          type: 'tag',
        }
      })
    })
  })

  cachedFlatFiles = [...branches, ...tags]

  return cachedFlatFiles
}