OptionsNormalizer.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { injectable } from 'inversify';
  2. import { TOptionsNormalizerRule } from '../types/options/TOptionsNormalizerRule';
  3. import { IOptions } from '../interfaces/options/IOptions';
  4. import { IOptionsNormalizer } from '../interfaces/options/IOptionsNormalizer';
  5. import { ControlFlowFlatteningThresholdRule } from './normalizer-rules/ControlFlowFlatteningThresholdRule';
  6. import { DeadCodeInjectionRule } from './normalizer-rules/DeadCodeInjectionRule';
  7. import { DeadCodeInjectionThresholdRule } from './normalizer-rules/DeadCodeInjectionThresholdRule';
  8. import { DomainLockRule } from './normalizer-rules/DomainLockRule';
  9. import { IdentifierNamesCacheRule } from './normalizer-rules/IdentifierNamesCacheRule';
  10. import { InputFileNameRule } from './normalizer-rules/InputFileNameRule';
  11. import { SeedRule } from './normalizer-rules/SeedRule';
  12. import { SelfDefendingRule } from './normalizer-rules/SelfDefendingRule';
  13. import { SourceMapBaseUrlRule } from './normalizer-rules/SourceMapBaseUrlRule';
  14. import { SourceMapFileNameRule } from './normalizer-rules/SourceMapFileNameRule';
  15. import { SplitStringsChunkLengthRule } from './normalizer-rules/SplitStringsChunkLengthRule';
  16. import { StringArrayRule } from './normalizer-rules/StringArrayRule';
  17. import { StringArrayEncodingRule } from './normalizer-rules/StringArrayEncodingRule';
  18. import { StringArrayWrappersChainedCallsRule } from './normalizer-rules/StringArrayWappersChainedCalls';
  19. @injectable()
  20. export class OptionsNormalizer implements IOptionsNormalizer {
  21. /**
  22. * @type {TOptionsNormalizerRule[]}
  23. */
  24. private static readonly normalizerRules: TOptionsNormalizerRule[] = [
  25. ControlFlowFlatteningThresholdRule,
  26. DeadCodeInjectionRule,
  27. DeadCodeInjectionThresholdRule,
  28. DomainLockRule,
  29. IdentifierNamesCacheRule,
  30. InputFileNameRule,
  31. SeedRule,
  32. SelfDefendingRule,
  33. SourceMapBaseUrlRule,
  34. SourceMapFileNameRule,
  35. SplitStringsChunkLengthRule,
  36. StringArrayRule,
  37. StringArrayEncodingRule,
  38. StringArrayWrappersChainedCallsRule,
  39. ];
  40. /**
  41. * @param {IOptions} options
  42. * @returns {IOptions}
  43. */
  44. public normalize (options: IOptions): IOptions {
  45. let normalizedOptions: IOptions = {
  46. ...options
  47. };
  48. for (const normalizerRule of OptionsNormalizer.normalizerRules) {
  49. normalizedOptions = normalizerRule(normalizedOptions);
  50. }
  51. return normalizedOptions;
  52. }
  53. }