DomainLockNode.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import 'format-unicorn';
  2. import { TNodeWithBlockStatement } from '../../types/TNodeWithBlockStatement';
  3. import { TStatement } from '../../types/TStatement';
  4. import { IStackTraceData } from '../../interfaces/stack-trace-analyzer/IStackTraceData';
  5. import { AppendState } from '../../enums/AppendState';
  6. import { DomainLockNodeTemplate } from '../../templates/custom-nodes/domain-lock-nodes/domain-lock-node/DomainLockNodeTemplate';
  7. import { AbstractCustomNode } from '../AbstractCustomNode';
  8. import { CustomNodeAppender } from '../CustomNodeAppender';
  9. import { NodeUtils } from '../../NodeUtils';
  10. import { Utils } from '../../Utils';
  11. export class DomainLockNode extends AbstractCustomNode {
  12. /**
  13. * @type {AppendState}
  14. */
  15. protected appendState: AppendState = AppendState.BeforeObfuscation;
  16. /**
  17. * @param blockScopeNode
  18. * @param stackTraceData
  19. */
  20. public appendNode (blockScopeNode: TNodeWithBlockStatement, stackTraceData: IStackTraceData[]): void {
  21. CustomNodeAppender.appendNode(
  22. stackTraceData,
  23. blockScopeNode,
  24. this.getNode(),
  25. CustomNodeAppender.getRandomStackTraceIndex(stackTraceData.length)
  26. );
  27. }
  28. /**
  29. * @returns {TStatement[]}
  30. */
  31. protected getNodeStructure (): TStatement[] {
  32. let domainsString: string = this.options.domainLock.join(';'),
  33. [hiddenDomainsString, diff]: string[] = Utils.hideString(domainsString, domainsString.length * 3);
  34. return NodeUtils.convertCodeToStructure(
  35. DomainLockNodeTemplate().formatUnicorn({
  36. domainLockFunctionName: Utils.getRandomVariableName(),
  37. diff: diff,
  38. domains: hiddenDomainsString
  39. })
  40. );
  41. }
  42. }