UNPKG

cognitive-complexity-ts

Version:

This program analyses TypeScript and JavaScript code according to the [Cognitive Complexity metric](https://www.sonarsource.com/docs/CognitiveComplexity.pdf). It produces a JSON summary and a GUI for exploring the complexity of your codebase.

64 lines 2.34 kB
import { isSortedContainerOutput, isSortedFileOutput } from "../domain/sortedOutput.js"; import { Store } from "../framework.js"; export class ComplexityModel { constructor(view) { this.view = view; this.containers = new Store(); this.files = new Store(); this.folders = new Store(); } updateContainer(container) { this.containers.set(container); } updateFile(file) { this.files.set(file); } updateFolder(folder) { this.folders.set(folder); } overwriteComplexity(complexity) { this.overwriteFolderContents(complexity); } overwriteContainer(containerOutput) { const observableContainer = this.containers.set(containerOutput); observableContainer.onChange((newContainer) => { this.view.reChildContainer(newContainer); this.view.reDepthContainer(newContainer); }); for (const container of containerOutput.inner) { this.overwriteContainer(container); } } overwriteFile(fileOutput) { const observableFile = this.files.set(fileOutput); observableFile.onChange((newFile) => { this.view.reChildFile(newFile); this.view.reDepthFile(newFile); }); for (const containerOutput of fileOutput.inner) { this.overwriteContainer(containerOutput); } } overwriteFolderContents(folderOutput) { const observableFolder = this.folders.set(folderOutput); observableFolder.onChange((newFolder) => { this.view.reChildFolderContents(newFolder); }); folderOutput.inner.forEach((folderEntry) => { isSortedContainerOutput(folderEntry) ? this.overwriteContainer(folderEntry) : isSortedFileOutput(folderEntry) ? this.overwriteFile(folderEntry) : this.overwriteFolder(folderEntry); }); } overwriteFolder(folderOutput) { this.overwriteFolderContents(folderOutput); const observableFolder = this.folders.get(folderOutput.id); observableFolder.onChange((newFolder) => { this.view.reChildFolderContents(newFolder); this.view.reDepthFolder(newFolder); }); } } //# sourceMappingURL=ComplexityModel.js.map