import { InversifyContainerFacade } from '../../InversifyContainerFacade'; import { ContainerModule, interfaces } from 'inversify'; import { ServiceIdentifiers } from '../../ServiceIdentifiers'; import { IIdentifierObfuscatingReplacer } from '../../../interfaces/node-transformers/obfuscating-transformers/obfuscating-replacers/IIdentifierObfuscatingReplacer'; import { INodeTransformer } from '../../../interfaces/node-transformers/INodeTransformer'; import { IObfuscatingReplacer } from '../../../interfaces/node-transformers/obfuscating-transformers/obfuscating-replacers/IObfuscatingReplacer'; import { IdentifierObfuscatingReplacer } from '../../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer'; import { LiteralObfuscatingReplacer } from '../../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/LiteralObfuscatingReplacer'; import { NodeTransformer } from '../../../enums/node-transformers/NodeTransformer'; import { BaseIdentifierObfuscatingReplacer } from '../../../node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer'; import { BooleanLiteralObfuscatingReplacer } from '../../../node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/BooleanLiteralObfuscatingReplacer'; import { LabeledStatementTransformer } from '../../../node-transformers/obfuscating-transformers/LabeledStatementTransformer'; import { LiteralTransformer } from '../../../node-transformers/obfuscating-transformers/LiteralTransformer'; import { NumberLiteralObfuscatingReplacer } from '../../../node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/NumberLiteralObfuscatingReplacer'; import { StringLiteralObfuscatingReplacer } from '../../../node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/StringLiteralObfuscatingReplacer'; import { ScopeIdentifiersTransformer } from '../../../node-transformers/obfuscating-transformers/ScopeIdentifiersTransformer'; export const obfuscatingTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => { // obfuscating transformers bind(ServiceIdentifiers.INodeTransformer) .to(LabeledStatementTransformer) .whenTargetNamed(NodeTransformer.LabeledStatementTransformer); bind(ServiceIdentifiers.INodeTransformer) .to(LiteralTransformer) .whenTargetNamed(NodeTransformer.LiteralTransformer); bind(ServiceIdentifiers.INodeTransformer) .to(ScopeIdentifiersTransformer) .whenTargetNamed(NodeTransformer.ScopeIdentifiersTransformer); // literal obfuscating replacers bind(ServiceIdentifiers.IObfuscatingReplacer) .to(BooleanLiteralObfuscatingReplacer) .whenTargetNamed(LiteralObfuscatingReplacer.BooleanLiteralObfuscatingReplacer); bind(ServiceIdentifiers.IObfuscatingReplacer) .to(NumberLiteralObfuscatingReplacer) .whenTargetNamed(LiteralObfuscatingReplacer.NumberLiteralObfuscatingReplacer); bind(ServiceIdentifiers.IObfuscatingReplacer) .to(StringLiteralObfuscatingReplacer) .whenTargetNamed(LiteralObfuscatingReplacer.StringLiteralObfuscatingReplacer); // identifier obfuscating replacers bind(ServiceIdentifiers.IIdentifierObfuscatingReplacer) .to(BaseIdentifierObfuscatingReplacer) .whenTargetNamed(IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer); // literal obfuscating replacer factory bind(ServiceIdentifiers.Factory__IObfuscatingReplacer) .toFactory(InversifyContainerFacade .getCacheFactory( ServiceIdentifiers.IObfuscatingReplacer )); // identifier obfuscating replacer factory bind(ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer) .toFactory(InversifyContainerFacade .getCacheFactory( ServiceIdentifiers.IIdentifierObfuscatingReplacer )); });