@@ -34,61 +34,58 @@ export class ObjectExpressionObfuscator extends AbstractNodeTransformer {
34
34
super ( options ) ;
35
35
}
36
36
37
- /**
38
- * @param objectExpressionNode
39
- */
40
- public transformNode ( objectExpressionNode : ESTree . ObjectExpression ) : void {
41
- objectExpressionNode . properties
42
- . forEach ( ( property : ESTree . Property ) => {
43
- if ( property . shorthand ) {
44
- property . shorthand = false ;
45
- }
46
-
47
- estraverse . traverse ( property . key , {
48
- enter : ( node : ESTree . Node , parentNode : ESTree . Node ) : any => {
49
- if ( Node . isLiteralNode ( node ) ) {
50
- this . obfuscateLiteralPropertyKey ( node ) ;
51
-
52
- return ;
53
- }
54
-
55
- if ( Node . isIdentifierNode ( node ) ) {
56
- this . obfuscateIdentifierPropertyKey ( node ) ;
57
- }
58
- }
59
- } ) ;
60
- } ) ;
61
- }
62
-
63
37
/**
64
38
* @param node
39
+ * @returns {ESTree.Literal }
65
40
*/
66
- private obfuscateLiteralPropertyKey ( node : ESTree . Literal ) : void {
41
+ private static obfuscateLiteralPropertyKey ( node : ESTree . Literal ) : ESTree . Literal {
67
42
if ( typeof node . value === 'string' && ! node [ 'x-verbatim-property' ] ) {
68
43
node [ 'x-verbatim-property' ] = {
69
44
content : `'${ Utils . stringToUnicodeEscapeSequence ( node . value ) } '` ,
70
45
precedence : escodegen . Precedence . Primary
71
46
} ;
72
47
}
48
+
49
+ return node ;
73
50
}
74
51
75
52
/**
76
53
* @param node
54
+ * @returns {ESTree.Literal }
77
55
*/
78
- private obfuscateIdentifierPropertyKey ( node : ESTree . Identifier ) : void {
79
- const nodeValue : string = node . name ;
80
- const literalNode : ESTree . Literal = {
81
- raw : `'${ nodeValue } '` ,
56
+ private static obfuscateIdentifierPropertyKey ( node : ESTree . Identifier ) : ESTree . Literal {
57
+ return {
58
+ type : NodeType . Literal ,
59
+ value : node . name ,
60
+ raw : `'${ node . name } '` ,
82
61
'x-verbatim-property' : {
83
- content : `'${ Utils . stringToUnicodeEscapeSequence ( nodeValue ) } '` ,
62
+ content : `'${ Utils . stringToUnicodeEscapeSequence ( node . name ) } '` ,
84
63
precedence : escodegen . Precedence . Primary
85
- } ,
86
- type : NodeType . Literal ,
87
- value : nodeValue
64
+ }
88
65
} ;
66
+ }
67
+
68
+ /**
69
+ * @param objectExpressionNode
70
+ */
71
+ public transformNode ( objectExpressionNode : ESTree . ObjectExpression ) : void {
72
+ objectExpressionNode . properties
73
+ . forEach ( ( property : ESTree . Property ) => {
74
+ if ( property . shorthand ) {
75
+ property . shorthand = false ;
76
+ }
89
77
90
- delete node . name ;
78
+ estraverse . replace ( property . key , {
79
+ enter : ( node : ESTree . Node , parentNode : ESTree . Node ) : any => {
80
+ if ( Node . isLiteralNode ( node ) ) {
81
+ property . key = ObjectExpressionObfuscator . obfuscateLiteralPropertyKey ( node ) ;
82
+ }
91
83
92
- Object . assign ( node , literalNode ) ;
84
+ if ( Node . isIdentifierNode ( node ) ) {
85
+ property . key = ObjectExpressionObfuscator . obfuscateIdentifierPropertyKey ( node ) ;
86
+ }
87
+ }
88
+ } ) ;
89
+ } ) ;
93
90
}
94
91
}
0 commit comments