mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
73 lines
3.7 KiB
TypeScript
73 lines
3.7 KiB
TypeScript
import { ContainerModule, interfaces } from 'inversify';
|
|
import { ServiceIdentifiers } from '../../ServiceIdentifiers';
|
|
|
|
import { IIdentifierNamesGenerator } from '../../../interfaces/generators/identifier-names-generators/IIdentifierNamesGenerator';
|
|
import { IOptions } from '../../../interfaces/options/IOptions';
|
|
|
|
import { IdentifierNamesGenerator } from '../../../enums/generators/identifier-names-generators/IdentifierNamesGenerator';
|
|
|
|
import { HexadecimalIdentifierNamesGenerator } from '../../../generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator';
|
|
import { MangledIdentifierNamesGenerator } from '../../../generators/identifier-names-generators/MangledIdentifierNamesGenerator';
|
|
import { DictionaryNamesGenerator } from '../../../generators/identifier-names-generators/DictionaryNamesGenerator';
|
|
|
|
export const generatorsModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => {
|
|
// identifier name generators
|
|
bind<IIdentifierNamesGenerator>(ServiceIdentifiers.IIdentifierNamesGenerator)
|
|
.to(HexadecimalIdentifierNamesGenerator)
|
|
.inSingletonScope()
|
|
.whenTargetNamed(IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator);
|
|
|
|
bind<IIdentifierNamesGenerator>(ServiceIdentifiers.IIdentifierNamesGenerator)
|
|
.to(MangledIdentifierNamesGenerator)
|
|
.inSingletonScope()
|
|
.whenTargetNamed(IdentifierNamesGenerator.MangledIdentifierNamesGenerator);
|
|
|
|
bind<IIdentifierNamesGenerator>(ServiceIdentifiers.IIdentifierNamesGenerator)
|
|
.to(DictionaryNamesGenerator)
|
|
.inSingletonScope()
|
|
.whenTargetNamed(IdentifierNamesGenerator.DictionaryNamesGenerator);
|
|
|
|
// identifier name generator factory
|
|
bind<IIdentifierNamesGenerator>(ServiceIdentifiers.Factory__IIdentifierNamesGenerator)
|
|
.toFactory<IIdentifierNamesGenerator>((context: interfaces.Context): (options: IOptions) => IIdentifierNamesGenerator => {
|
|
let cachedIdentifierNamesGenerator: IIdentifierNamesGenerator | null = null;
|
|
|
|
return (options: IOptions) => {
|
|
if (cachedIdentifierNamesGenerator) {
|
|
return cachedIdentifierNamesGenerator;
|
|
}
|
|
|
|
let identifierNamesGenerator: IIdentifierNamesGenerator;
|
|
|
|
switch (options.identifierNamesGenerator) {
|
|
case IdentifierNamesGenerator.MangledIdentifierNamesGenerator:
|
|
identifierNamesGenerator = context.container.getNamed<IIdentifierNamesGenerator>(
|
|
ServiceIdentifiers.IIdentifierNamesGenerator,
|
|
IdentifierNamesGenerator.MangledIdentifierNamesGenerator
|
|
);
|
|
|
|
break;
|
|
|
|
case IdentifierNamesGenerator.DictionaryNamesGenerator:
|
|
identifierNamesGenerator = context.container.getNamed<IIdentifierNamesGenerator>(
|
|
ServiceIdentifiers.IIdentifierNamesGenerator,
|
|
IdentifierNamesGenerator.DictionaryNamesGenerator
|
|
);
|
|
|
|
break;
|
|
|
|
case IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator:
|
|
default:
|
|
identifierNamesGenerator = context.container.getNamed<IIdentifierNamesGenerator>(
|
|
ServiceIdentifiers.IIdentifierNamesGenerator,
|
|
IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator
|
|
);
|
|
}
|
|
|
|
cachedIdentifierNamesGenerator = identifierNamesGenerator;
|
|
|
|
return identifierNamesGenerator;
|
|
};
|
|
});
|
|
});
|