MCPcopy Create free account
hub / github.com/massCodeIO/massCode / buildNoteFolderPathMap

Function buildNoteFolderPathMap

src/shared/notes/folderPath.ts:7–44  ·  view source on GitHub ↗
(
  folders: FolderLike[],
)

Source from the content-addressed store, hash-verified

5}
6
7export function buildNoteFolderPathMap(
8 folders: FolderLike[],
9): Map<number, string> {
10 const folderById = new Map<number, FolderLike>()
11 folders.forEach(folder => folderById.set(folder.id, folder))
12
13 const resolved = new Map<number, string>()
14 const visiting = new Set<number>()
15
16 const resolve = (folderId: number): string => {
17 const cached = resolved.get(folderId)
18 if (cached !== undefined) {
19 return cached
20 }
21
22 const folder = folderById.get(folderId)
23 if (!folder) {
24 return ''
25 }
26
27 if (visiting.has(folderId)) {
28 return folder.name
29 }
30
31 visiting.add(folderId)
32 const parentPath = folder.parentId !== null ? resolve(folder.parentId) : ''
33 const currentPath = parentPath
34 ? `${parentPath}/${folder.name}`
35 : folder.name
36
37 resolved.set(folderId, currentPath)
38 visiting.delete(folderId)
39 return currentPath
40 }
41
42 folders.forEach(folder => resolve(folder.id))
43 return resolved
44}

Callers 2

searchItemsFunction · 0.90
internal-links.tsFile · 0.90

Calls 2

resolveFunction · 0.70
setMethod · 0.45

Tested by

no test coverage detected