OptionsNormalizer.ts 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { IObfuscatorOptions } from "../interfaces/IObfuscatorOptions";
  2. import { TOptionsNormalizerRule } from "../types/TOptionsNormalizerRule";
  3. export class OptionsNormalizer {
  4. /**
  5. * @type {IObfuscatorOptions}
  6. */
  7. private static DISABLED_UNICODE_ARRAY_OPTIONS: IObfuscatorOptions = {
  8. encodeUnicodeLiterals: false,
  9. rotateUnicodeArray: false,
  10. unicodeArray: false,
  11. unicodeArrayThreshold: 0,
  12. wrapUnicodeArrayCalls: false
  13. };
  14. /**
  15. * @type {IObfuscatorOptions}
  16. */
  17. private static SELF_DEFENDING_OPTIONS: IObfuscatorOptions = {
  18. compact: true,
  19. selfDefending: true
  20. };
  21. /**
  22. * @type {TOptionsNormalizerRule[]}
  23. */
  24. private static normalizerRules: TOptionsNormalizerRule[] = [
  25. OptionsNormalizer.unicodeArrayRule,
  26. OptionsNormalizer.unicodeArrayThresholdRule,
  27. OptionsNormalizer.selfDefendingRule
  28. ];
  29. /**
  30. * @param options
  31. * @returns {IObfuscatorOptions}
  32. */
  33. public static normalizeOptions (options: IObfuscatorOptions): IObfuscatorOptions {
  34. let normalizedOptions: IObfuscatorOptions = Object.assign({}, options);
  35. for (let normalizerRule of OptionsNormalizer.normalizerRules) {
  36. normalizedOptions = normalizerRule(normalizedOptions);
  37. }
  38. return normalizedOptions;
  39. }
  40. /**
  41. * @param options
  42. * @returns {IObfuscatorOptions}
  43. */
  44. private static selfDefendingRule (options: IObfuscatorOptions): IObfuscatorOptions {
  45. if (options.selfDefending) {
  46. Object.assign(options, OptionsNormalizer.SELF_DEFENDING_OPTIONS);
  47. }
  48. return options;
  49. }
  50. /**
  51. * @param options
  52. * @returns {IObfuscatorOptions}
  53. */
  54. private static unicodeArrayRule (options: IObfuscatorOptions): IObfuscatorOptions {
  55. if (!options.unicodeArray) {
  56. Object.assign(options, OptionsNormalizer.DISABLED_UNICODE_ARRAY_OPTIONS);
  57. }
  58. return options;
  59. }
  60. /**
  61. * @param options
  62. * @returns {IObfuscatorOptions}
  63. */
  64. private static unicodeArrayThresholdRule (options: IObfuscatorOptions): IObfuscatorOptions {
  65. if (options.unicodeArrayThreshold === 0) {
  66. Object.assign(options, OptionsNormalizer.DISABLED_UNICODE_ARRAY_OPTIONS);
  67. }
  68. return options;
  69. }
  70. }