import { InversifyContainerFacade } from '../../InversifyContainerFacade'; import { ContainerModule, interfaces } from 'inversify'; import { ServiceIdentifiers } from '../../ServiceIdentifiers'; import { ICalleeDataExtractor } from '../../../interfaces/analyzers/calls-graph-analyzer/ICalleeDataExtractor'; import { ICallsGraphAnalyzer } from '../../../interfaces/analyzers/calls-graph-analyzer/ICallsGraphAnalyzer'; import { INumberNumericalExpressionAnalyzer } from '../../../interfaces/analyzers/number-numerical-expression-analyzer/INumberNumericalExpressionAnalyzer'; import { IPrevailingKindOfVariablesAnalyzer } from '../../../interfaces/analyzers/calls-graph-analyzer/IPrevailingKindOfVariablesAnalyzer'; import { IScopeAnalyzer } from '../../../interfaces/analyzers/scope-analyzer/IScopeAnalyzer'; import { IStringArrayStorageAnalyzer } from '../../../interfaces/analyzers/string-array-storage-analyzer/IStringArrayStorageAnalyzer'; import { CalleeDataExtractor } from '../../../enums/analyzers/calls-graph-analyzer/CalleeDataExtractor'; import { CallsGraphAnalyzer } from '../../../analyzers/calls-graph-analyzer/CallsGraphAnalyzer'; import { FunctionDeclarationCalleeDataExtractor } from '../../../analyzers/calls-graph-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor'; import { FunctionExpressionCalleeDataExtractor } from '../../../analyzers/calls-graph-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor'; import { NumberNumericalExpressionAnalyzer } from '../../../analyzers/number-numerical-expression-analyzer/NumberNumericalExpressionAnalyzer'; import { ObjectExpressionCalleeDataExtractor } from '../../../analyzers/calls-graph-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor'; import { PrevailingKindOfVariablesAnalyzer } from '../../../analyzers/prevailing-kind-of-variables-analyzer/PrevailingKindOfVariablesAnalyzer'; import { ScopeAnalyzer } from '../../../analyzers/scope-analyzer/ScopeAnalyzer'; import { StringArrayStorageAnalyzer } from '../../../analyzers/string-array-storage-analyzer/StringArrayStorageAnalyzer'; export const analyzersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => { // calls graph analyzer bind(ServiceIdentifiers.ICallsGraphAnalyzer) .to(CallsGraphAnalyzer) .inSingletonScope(); // number numerical expression analyzer bind(ServiceIdentifiers.INumberNumericalExpressionAnalyzer) .to(NumberNumericalExpressionAnalyzer) .inSingletonScope(); // prevailing kind of variables analyzer bind(ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer) .to(PrevailingKindOfVariablesAnalyzer) .inSingletonScope(); // scope analyzer bind(ServiceIdentifiers.IScopeAnalyzer) .to(ScopeAnalyzer) .inSingletonScope(); // string array storage analyzer bind(ServiceIdentifiers.IStringArrayStorageAnalyzer) .to(StringArrayStorageAnalyzer) .inSingletonScope(); // callee data extractors bind(ServiceIdentifiers.ICalleeDataExtractor) .to(FunctionDeclarationCalleeDataExtractor) .whenTargetNamed(CalleeDataExtractor.FunctionDeclarationCalleeDataExtractor); bind(ServiceIdentifiers.ICalleeDataExtractor) .to(FunctionExpressionCalleeDataExtractor) .whenTargetNamed(CalleeDataExtractor.FunctionExpressionCalleeDataExtractor); bind(ServiceIdentifiers.ICalleeDataExtractor) .to(ObjectExpressionCalleeDataExtractor) .whenTargetNamed(CalleeDataExtractor.ObjectExpressionCalleeDataExtractor); // callee data extractor factory bind(ServiceIdentifiers.Factory__ICalleeDataExtractor) .toFactory(InversifyContainerFacade .getCacheFactory( ServiceIdentifiers.ICalleeDataExtractor )); });