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
JavaScript
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