• 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

88.89
/src/code-transformers/CodeTransformersRunner.ts
1
import { inject, injectable } from 'inversify';
6✔
2

3
import { ServiceIdentifiers } from '../container/ServiceIdentifiers';
6✔
4

5
import { TCodeTransformerFactory } from '../types/container/code-transformers/TCodeTransformerFactory';
6
import { TDictionary } from '../types/TDictionary';
7

8
import { ICodeTransformer } from '../interfaces/code-transformers/ICodeTransformer';
9
import { ICodeTransformersRunner } from '../interfaces/code-transformers/ICodeTransformersRunner';
10
import { ITransformerNamesGroupsBuilder } from '../interfaces/utils/ITransformerNamesGroupsBuilder';
11

12
import { CodeTransformer } from '../enums/code-transformers/CodeTransformer';
13
import { CodeTransformationStage } from '../enums/code-transformers/CodeTransformationStage';
14

15
@injectable()
16
export class CodeTransformersRunner implements ICodeTransformersRunner {
6✔
17
    /**
18
     * @type {TCodeTransformerFactory}
19
     */
20
    private readonly codeTransformerFactory: TCodeTransformerFactory;
21

22
    /**
23
     * @type {ITransformerNamesGroupsBuilder}
24
     */
25
    private readonly codeTransformerNamesGroupsBuilder: ITransformerNamesGroupsBuilder<
26
        CodeTransformer,
27
        ICodeTransformer
28
    >;
29

30
    /**
31
     * @param {TNodeTransformerFactory} codeTransformerFactory
32
     * @param {ITransformerNamesGroupsBuilder} codeTransformerNamesGroupsBuilder
33
     */
34
    public constructor(
35
        @inject(ServiceIdentifiers.Factory__ICodeTransformer)
36
        codeTransformerFactory: TCodeTransformerFactory,
37
        @inject(ServiceIdentifiers.ICodeTransformerNamesGroupsBuilder)
38
        codeTransformerNamesGroupsBuilder: ITransformerNamesGroupsBuilder<CodeTransformer, ICodeTransformer>
39
    ) {
40
        this.codeTransformerFactory = codeTransformerFactory;
197,880✔
41
        this.codeTransformerNamesGroupsBuilder = codeTransformerNamesGroupsBuilder;
197,880✔
42
    }
43

44
    /**
45
     * @param {string} code
46
     * @param {CodeTransformer[]} codeTransformerNames
47
     * @param {CodeTransformationStage} codeTransformationStage
48
     * @returns {string}
49
     */
50
    public transform(
51
        code: string,
52
        codeTransformerNames: CodeTransformer[],
53
        codeTransformationStage: CodeTransformationStage
54
    ): string {
55
        if (!codeTransformerNames.length) {
395,622!
56
            return code;
×
57
        }
58

59
        const normalizedCodeTransformers: TDictionary<ICodeTransformer> = this.buildNormalizedCodeTransformers(
395,622✔
60
            codeTransformerNames,
61
            codeTransformationStage
62
        );
63
        const codeTransformerNamesGroups: CodeTransformer[][] =
64
            this.codeTransformerNamesGroupsBuilder.build(normalizedCodeTransformers);
395,622✔
65

66
        for (const nodeTransformerNamesGroup of codeTransformerNamesGroups) {
395,622✔
67
            for (const nodeTransformerName of nodeTransformerNamesGroup) {
395,622✔
68
                const codeTransformer: ICodeTransformer = normalizedCodeTransformers[nodeTransformerName];
395,622✔
69

70
                code = codeTransformer.transformCode(code, codeTransformationStage);
395,622✔
71
            }
72
        }
73

74
        return code;
395,622✔
75
    }
76

77
    /**
78
     * @param {NodeTransformer[]} codeTransformerNames
79
     * @param {NodeTransformationStage} codeTransformationStage
80
     * @returns {TDictionary<INodeTransformer>}
81
     */
82
    private buildNormalizedCodeTransformers(
83
        codeTransformerNames: CodeTransformer[],
84
        codeTransformationStage: CodeTransformationStage
85
    ): TDictionary<ICodeTransformer> {
86
        return codeTransformerNames.reduce<TDictionary<ICodeTransformer>>(
395,622✔
87
            (acc: TDictionary<ICodeTransformer>, codeTransformerName: CodeTransformer) => {
88
                const codeTransformer: ICodeTransformer = this.codeTransformerFactory(codeTransformerName);
395,622✔
89

90
                return {
395,622✔
91
                    ...acc,
92
                    [codeTransformerName]: codeTransformer
93
                };
94
            },
95
            {}
96
        );
97
    }
98
}
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