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).

51 lines 1.97 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.folderContents = new Store(); } updateContainer(container) { this.containers.set(container); } updateFile(file) { this.files.set(file); } updateFolder(folder) { this.folderContents.set(folder); } overwriteComplexity(complexity) { this.overwriteFolderContents(complexity); } overwriteContainer(containerOutput) { const observableContainer = this.containers.set(containerOutput); observableContainer.onChange(newContainer => this.view.reChildContainer(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)); for (const containerOutput of fileOutput.inner) { this.overwriteContainer(containerOutput); } } overwriteFolderContents(folderOutput) { const observableFolderContents = this.folderContents.set(folderOutput); observableFolderContents.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); } } //# sourceMappingURL=ComplexityModel.js.map