UNPKG

ntts

Version:

A CLI tool for refactoring an existing NodeJs application to a fully functional TypeScript application.

18 lines (13 loc) 999 B
import {ReferencedSymbol, ReferencedSymbolEntry, VariableDeclaration} from 'ts-morph'; import VariableParser from '../variable-parser/variable-parser'; import { findReferences } from '../reference-finder/reference-finder'; class WriteAccessChecker { static hasValueChanged = (declaration: VariableDeclaration): boolean => VariableParser .getIdentifiers(declaration.getNameNode()) .reduce((acc: boolean, identifier) => acc || this.symbolsHaveWriteAccess(findReferences(identifier)), false); private static symbolsHaveWriteAccess = (referencedSymbols: ReferencedSymbol[]): boolean => referencedSymbols .reduce((acc: boolean, symbol) => acc || this.referencesHaveWriteAccess(symbol.getReferences()), false); private static referencesHaveWriteAccess = (referenceEntries: ReferencedSymbolEntry[]): boolean => referenceEntries .reduce((acc: boolean, entry) => acc || (!entry.isDefinition() && entry.isWriteAccess()), false); } export default WriteAccessChecker;