BlackListObfuscatingGuard.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { injectable } from 'inversify';
  2. import * as ESTree from 'estree';
  3. import { IObfuscatingGuard } from '../../../interfaces/node-transformers/preparing-transformers/obfuscating-guards/IObfuscatingGuard';
  4. import { ObfuscatingGuardResult } from '../../../enums/node/ObfuscatingGuardResult';
  5. import { NodeGuards } from '../../../node/NodeGuards';
  6. @injectable()
  7. export class BlackListObfuscatingGuard implements IObfuscatingGuard {
  8. /**
  9. * @type {((node: Node) => boolean)[]}
  10. */
  11. private static readonly blackListGuards: ((node: ESTree.Node) => boolean)[] = [
  12. NodeGuards.isDirectiveNode
  13. ];
  14. /**
  15. * @type {number}
  16. */
  17. private readonly blackListGuardsLength: number;
  18. public constructor () {
  19. this.blackListGuardsLength = BlackListObfuscatingGuard.blackListGuards.length;
  20. }
  21. /**
  22. * @param {Node} node
  23. * @returns {ObfuscatingGuardResult}
  24. */
  25. public check (node: ESTree.Node): ObfuscatingGuardResult {
  26. for (let i: number = 0; i < this.blackListGuardsLength; i++) {
  27. if (BlackListObfuscatingGuard.blackListGuards[i](node)) {
  28. return ObfuscatingGuardResult.Ignore;
  29. }
  30. }
  31. return ObfuscatingGuardResult.Transform;
  32. }
  33. }