anobis
Version:
JavaScript obfuscator
49 lines (42 loc) • 1.89 kB
text/typescript
import { TOptionsNormalizerRule } from '../types/options/TOptionsNormalizerRule';
import { IOptions } from '../interfaces/options/IOptions';
import { ControlFlowFlatteningThresholdRule } from './normalizer-rules/ControlFlowFlatteningThresholdRule';
import { DeadCodeInjectionRule } from './normalizer-rules/DeadCodeInjectionRule';
import { DeadCodeInjectionThresholdRule } from './normalizer-rules/DeadCodeInjectionThresholdRule';
import { DomainLockRule } from './normalizer-rules/DomainLockRule';
import { SelfDefendingRule } from './normalizer-rules/SelfDefendingRule';
import { SourceMapBaseUrlRule } from './normalizer-rules/SourceMapBaseUrlRule';
import { SourceMapFileNameRule } from './normalizer-rules/SourceMapFileNameRule';
import { StringArrayRule } from './normalizer-rules/StringArrayRule';
import { StringArrayEncodingRule } from './normalizer-rules/StringArrayEncodingRule';
import { StringArrayThresholdRule } from './normalizer-rules/StringArrayThresholdRule';
export class OptionsNormalizer {
/**
* @type {TOptionsNormalizerRule[]}
*/
private static readonly normalizerRules: TOptionsNormalizerRule[] = [
ControlFlowFlatteningThresholdRule,
DeadCodeInjectionRule,
DeadCodeInjectionThresholdRule,
DomainLockRule,
SelfDefendingRule,
SourceMapBaseUrlRule,
SourceMapFileNameRule,
StringArrayRule,
StringArrayEncodingRule,
StringArrayThresholdRule,
];
/**
* @param {IOptions} options
* @returns {IOptions}
*/
public static normalizeOptions (options: IOptions): IOptions {
let normalizedOptions: IOptions = {
...options
};
for (const normalizerRule of OptionsNormalizer.normalizerRules) {
normalizedOptions = normalizerRule(normalizedOptions);
}
return normalizedOptions;
}
}