@nerdo/code-reviewer
Version:
A web-based visual git diff tool for reviewing code changes between commits, branches, and tags
34 lines (33 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileTreeService = void 0;
class FileTreeService {
buildFileTreeWithChanges(baseTree, changes) {
const changeMap = new Map(changes.map(change => [change.path, change]));
return this.enrichTreeWithChanges(baseTree, changeMap);
}
enrichTreeWithChanges(node, changeMap) {
const enrichedNode = { ...node };
if (changeMap.has(node.path)) {
enrichedNode.change = changeMap.get(node.path);
}
if (node.children) {
enrichedNode.children = node.children.map(child => this.enrichTreeWithChanges(child, changeMap));
}
return enrichedNode;
}
sortFileTree(node) {
const sortedNode = { ...node };
if (node.children) {
sortedNode.children = [...node.children].sort((a, b) => {
if (a.type !== b.type) {
return a.type === 'directory' ? -1 : 1;
}
return a.name.localeCompare(b.name);
});
sortedNode.children = sortedNode.children.map(child => this.sortFileTree(child));
}
return sortedNode;
}
}
exports.FileTreeService = FileTreeService;