• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

javascript-obfuscator / javascript-obfuscator / 19907815758

03 Dec 2025 08:27PM UTC coverage: 97.319%. Remained the same
19907815758

push

github

sanex3339
Adjust precommit hook

1770 of 1891 branches covered (93.6%)

Branch coverage included in aggregate %.

5671 of 5755 relevant lines covered (98.54%)

34102965.58 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

93.33
/src/node-transformers/simplifying-transformers/BlockStatementSimplifyTransformer.ts
1
import { inject, injectable } from 'inversify';
6✔
2
import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
6✔
3

4
import * as ESTree from 'estree';
5

6
import { IOptions } from '../../interfaces/options/IOptions';
7
import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator';
8
import { IStatementSimplifyData } from '../../interfaces/node-transformers/simplifying-transformers/IStatementSimplifyData';
9
import { IVisitor } from '../../interfaces/node-transformers/IVisitor';
10

11
import { NodeTransformer } from '../../enums/node-transformers/NodeTransformer';
6✔
12
import { NodeTransformationStage } from '../../enums/node-transformers/NodeTransformationStage';
6✔
13

14
import { AbstractStatementSimplifyTransformer } from './AbstractStatementSimplifyTransformer';
6✔
15
import { NodeGuards } from '../../node/NodeGuards';
6✔
16
import { NodeFactory } from '../../node/NodeFactory';
6✔
17
import { NodeUtils } from '../../node/NodeUtils';
6✔
18

19
/**
20
 * Simplifies `BlockStatement` node
21
 */
22
@injectable()
23
export class BlockStatementSimplifyTransformer extends AbstractStatementSimplifyTransformer {
6✔
24
    /**
25
     * @type {NodeTransformer[]}
26
     */
27
    public override readonly runAfter: NodeTransformer[] = [NodeTransformer.VariableDeclarationsMergeTransformer];
197,808✔
28

29
    /**
30
     * @param {IRandomGenerator} randomGenerator
31
     * @param {IOptions} options
32
     */
33
    public constructor(
34
        @inject(ServiceIdentifiers.IRandomGenerator) randomGenerator: IRandomGenerator,
35
        @inject(ServiceIdentifiers.IOptions) options: IOptions
36
    ) {
37
        super(randomGenerator, options);
197,808✔
38
    }
39

40
    /**
41
     * @param {NodeTransformationStage} nodeTransformationStage
42
     * @returns {IVisitor | null}
43
     */
44
    public getVisitor(nodeTransformationStage: NodeTransformationStage): IVisitor | null {
45
        switch (nodeTransformationStage) {
1,434,528✔
46
            case NodeTransformationStage.Simplifying:
1,434,528✔
47
                return {
38,988✔
48
                    leave: (node: ESTree.Node, parentNode: ESTree.Node | null): ESTree.Node | undefined => {
49
                        if (parentNode && NodeGuards.isBlockStatementNode(node)) {
350,135,044✔
50
                            return this.transformNode(node, parentNode);
2,614,405✔
51
                        }
52
                    }
53
                };
54

55
            default:
56
                return null;
1,395,540✔
57
        }
58
    }
59

60
    /**
61
     * @param {ESTree.Statement} statementNode
62
     * @param {ESTree.Node} parentNode
63
     * @returns {ESTree.Node}
64
     */
65
    public transformNode(statementNode: ESTree.Statement, parentNode: ESTree.Node): ESTree.Node {
66
        const simplifyData: IStatementSimplifyData | null = this.getStatementSimplifyData(statementNode);
2,614,405✔
67

68
        if (!simplifyData) {
2,614,405!
69
            return statementNode;
×
70
        }
71

72
        const partialStatementNode: ESTree.Statement = this.getPartialStatement(simplifyData);
2,614,405✔
73
        const transformedNode: ESTree.Node = NodeGuards.isBlockStatementNode(partialStatementNode)
2,614,405✔
74
            ? partialStatementNode
2,614,405✔
75
            : NodeFactory.blockStatementNode([partialStatementNode]);
76

77
        return NodeUtils.parentizeNode(transformedNode, parentNode);
2,614,405✔
78
    }
79
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc