sicua
Version:
A tool for analyzing project structure and dependencies
94 lines (93 loc) • 3.39 kB
TypeScript
import ts from "typescript";
import { TranslationAnalysisResult } from "../../../types/translation.types";
import { ReactI18nextFileFinder } from "./fileFinder";
import { ReactI18nextKeyFinder } from "./keyFinder";
/**
* Analyzer for detecting react-i18next translation issues in a React project
*/
export declare class ReactI18nextAnalyzer {
private sourceFiles;
private context;
private fileFinder;
private keyFinder;
private missingTranslationAnalyzer;
private duplicateTranslationAnalyzer;
private coverageAnalyzer;
/**
* Constructor for the react-i18next analyzer
* @param projectPath Path to the project root
* @param sourceFiles Map of source files to analyze
*/
constructor(projectPath: string, sourceFiles: Map<string, ts.SourceFile>);
/**
* Main analysis method for react-i18next
* @returns Promise that resolves to analysis results
*/
analyze(): Promise<TranslationAnalysisResult>;
/**
* Analyzes duplicate translations across react-i18next namespaces
* @param translationKeys Translation keys found in code
* @param translationFiles Translation files to analyze
* @returns Array of duplicate translations
*/
private analyzeDuplicateTranslations;
/**
* Finds duplicate translations across different namespaces
* @param translationFiles Translation files to analyze
* @returns Array of cross-namespace duplicates
*/
private findCrossNamespaceDuplicates;
/**
* Flattens translations with namespace information
* @param obj Translation object
* @param prefix Current key prefix
* @param namespace Namespace name
* @param filePath File path
* @param valueMap Map to populate with values and their locations
*/
private flattenTranslationsWithNamespace;
/**
* Checks if text is significant enough to warn about duplication
* @param value The text value to check
* @returns Boolean indicating if the text is significant
*/
private isSignificantTextForDuplication;
/**
* Generate react-i18next specific statistics
* @param translationKeys Translation keys found
* @param missingTranslations Missing translations
* @param duplicateTranslations Duplicate translations
* @returns Statistics object
*/
private generateReactI18nextStatistics;
/**
* Counts usage of interpolation in translation keys
* @param translationKeys Translation keys to analyze
* @returns Number of keys using interpolation
*/
private countInterpolationUsage;
/**
* Counts usage of pluralization in translation files
* @returns Number of plural keys found
*/
private countPluralizationUsage;
/**
* Counts plural keys in a translation object
* @param obj Translation object
* @returns Number of plural keys
*/
private countPluralKeys;
/**
* Gets react-i18next specific analysis information
* @returns React-i18next setup information
*/
getReactI18nextInfo(): {
setup: ReturnType<ReactI18nextFileFinder["detectReactI18nextSetup"]>;
keyStatistics: ReturnType<ReactI18nextKeyFinder["getUsageStatistics"]>;
namespaceAnalysis: {
componentName: string;
namespaces: string[];
keyCount: number;
}[];
};
}