sanex3339 8 роки тому
батько
коміт
182ba99ee4
37 змінених файлів з 229 додано та 229 видалено
  1. 83 83
      dist/index.js
  2. 1 1
      package.json
  3. 3 3
      src/Obfuscator.ts
  4. 2 2
      src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts
  5. 2 2
      src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts
  6. 2 2
      src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts
  7. 2 2
      src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts
  8. 2 2
      src/custom-nodes/domain-lock-nodes/DomainLockNode.ts
  9. 2 2
      src/custom-nodes/node-calls-controller-nodes/NodeCallsControllerFunctionNode.ts
  10. 2 2
      src/custom-nodes/self-defending-nodes/SelfDefendingUnicodeNode.ts
  11. 2 2
      src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts
  12. 2 2
      src/custom-nodes/unicode-array-nodes/UnicodeArrayNode.ts
  13. 2 2
      src/custom-nodes/unicode-array-nodes/UnicodeArrayRotateFunctionNode.ts
  14. 1 1
      src/node-groups/ConsoleOutputNodesGroup.ts
  15. 1 1
      src/node-groups/DomainLockNodesGroup.ts
  16. 1 1
      src/node-groups/SelfDefendingNodesGroup.ts
  17. 3 3
      src/node-obfuscators/CatchClauseObfuscator.ts
  18. 3 3
      src/node-obfuscators/FunctionDeclarationObfuscator.ts
  19. 3 3
      src/node-obfuscators/FunctionObfuscator.ts
  20. 2 2
      src/node-obfuscators/LiteralObfuscator.ts
  21. 3 3
      src/node-obfuscators/MemberExpressionObfuscator.ts
  22. 2 2
      src/node-obfuscators/MethodDefinitionObfuscator.ts
  23. 3 3
      src/node-obfuscators/ObjectExpressionObfuscator.ts
  24. 3 3
      src/node-obfuscators/VariableDeclarationObfuscator.ts
  25. 2 2
      src/node-obfuscators/replacers/StringLiteralReplacer.ts
  26. 7 7
      src/node/Node.ts
  27. 4 4
      src/node/NodeAppender.ts
  28. 9 9
      src/node/NodeUtils.ts
  29. 3 3
      src/stack-trace-analyzer/StackTraceAnalyzer.ts
  30. 4 4
      src/stack-trace-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor.ts
  31. 7 7
      src/stack-trace-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor.ts
  32. 14 14
      src/stack-trace-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor.ts
  33. 20 20
      test/fixtures/compile-performance.js
  34. 16 16
      test/functional-tests/stack-trace-analyzer/StackTraceAnalyzer.spec.ts
  35. 2 2
      test/index.spec.ts
  36. 7 7
      test/unit-tests/node/NodeAppender.spec.ts
  37. 2 2
      test/unit-tests/node/NodeUtils.spec.ts

+ 83 - 83
dist/index.js

@@ -298,7 +298,7 @@ var escodegen = __webpack_require__(12);
 var esprima = __webpack_require__(24);
 var estraverse = __webpack_require__(5);
 var NodeType_1 = __webpack_require__(7);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var Utils_1 = __webpack_require__(0);
 
 var NodeUtils = function () {
@@ -331,7 +331,7 @@ var NodeUtils = function () {
         value: function getBlockStatementNodeByIndex(node) {
             var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
 
-            if (Nodes_1.Nodes.isNodeHasBlockStatement(node)) {
+            if (Node_1.Node.isNodeHasBlockStatement(node)) {
                 if (node.body[index] === undefined) {
                     throw new ReferenceError('Wrong index `' + index + '`. Block-statement body length is `' + node.body.length + '`');
                 }
@@ -348,7 +348,7 @@ var NodeUtils = function () {
             if (!parentNode) {
                 throw new ReferenceError('`parentNode` property of given node is `undefined`');
             }
-            if (Nodes_1.Nodes.isBlockStatementNode(parentNode)) {
+            if (Node_1.Node.isBlockStatementNode(parentNode)) {
                 if (!parentNode.parentNode) {
                     throw new ReferenceError('`parentNode` property of `parentNode` of given node is `undefined`');
                 }
@@ -359,7 +359,7 @@ var NodeUtils = function () {
                 }
                 return parentNode;
             }
-            if (Nodes_1.Nodes.isProgramNode(parentNode)) {
+            if (Node_1.Node.isProgramNode(parentNode)) {
                 return parentNode;
             }
             return NodeUtils.getBlockScopeOfNode(parentNode);
@@ -375,7 +375,7 @@ var NodeUtils = function () {
                         if (node.type === NodeType_1.NodeType.Program) {
                             value = node;
                         } else {
-                            value = Nodes_1.Nodes.getProgramNode([node]);
+                            value = Node_1.Node.getProgramNode([node]);
                             value['parentNode'] = value;
                         }
                         isRootNode = false;
@@ -420,6 +420,19 @@ exports.NodeUtils = NodeUtils;
 
 /***/ },
 /* 2 */
+/***/ function(module, exports) {
+
+"use strict";
+"use strict";
+
+(function (AppendState) {
+    AppendState[AppendState["AfterObfuscation"] = 0] = "AfterObfuscation";
+    AppendState[AppendState["BeforeObfuscation"] = 1] = "BeforeObfuscation";
+})(exports.AppendState || (exports.AppendState = {}));
+var AppendState = exports.AppendState;
+
+/***/ },
+/* 3 */
 /***/ function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -431,12 +444,12 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
 
 var NodeType_1 = __webpack_require__(7);
 
-var Nodes = function () {
-    function Nodes() {
-        _classCallCheck(this, Nodes);
+var Node = function () {
+    function Node() {
+        _classCallCheck(this, Node);
     }
 
-    _createClass(Nodes, null, [{
+    _createClass(Node, null, [{
         key: 'getProgramNode',
         value: function getProgramNode(bodyNode) {
             return {
@@ -509,11 +522,11 @@ var Nodes = function () {
     }, {
         key: 'isReplaceableIdentifierNode',
         value: function isReplaceableIdentifierNode(node, parentNode) {
-            if (!Nodes.isIdentifierNode(node)) {
+            if (!Node.isIdentifierNode(node)) {
                 return false;
             }
-            var parentNodeIsPropertyNode = Nodes.isPropertyNode(parentNode) && parentNode.key === node;
-            var parentNodeIsMemberExpressionNode = Nodes.isMemberExpressionNode(parentNode) && parentNode.computed === false && parentNode.property === node;
+            var parentNodeIsPropertyNode = Node.isPropertyNode(parentNode) && parentNode.key === node;
+            var parentNodeIsMemberExpressionNode = Node.isMemberExpressionNode(parentNode) && parentNode.computed === false && parentNode.property === node;
             return !parentNodeIsPropertyNode && !parentNodeIsMemberExpressionNode;
         }
     }, {
@@ -533,23 +546,10 @@ var Nodes = function () {
         }
     }]);
 
-    return Nodes;
+    return Node;
 }();
 
-exports.Nodes = Nodes;
-
-/***/ },
-/* 3 */
-/***/ function(module, exports) {
-
-"use strict";
-"use strict";
-
-(function (AppendState) {
-    AppendState[AppendState["AfterObfuscation"] = 0] = "AfterObfuscation";
-    AppendState[AppendState["BeforeObfuscation"] = 1] = "BeforeObfuscation";
-})(exports.AppendState || (exports.AppendState = {}));
-var AppendState = exports.AppendState;
+exports.Node = Node;
 
 /***/ },
 /* 4 */
@@ -837,7 +837,7 @@ var _createClass = (function () { function defineProperties(target, props) { for
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 
 var AbstractNodesGroup = function () {
     function AbstractNodesGroup(stackTraceData, options) {
@@ -1003,7 +1003,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
 __webpack_require__(8);
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var SingleNodeCallControllerTemplate_1 = __webpack_require__(65);
 var NoCustomNodesPreset_1 = __webpack_require__(16);
 var AbstractCustomNode_1 = __webpack_require__(6);
@@ -1111,7 +1111,7 @@ var StringLiteralReplacer = function (_AbstractReplacer_1$A) {
         value: function replaceStringLiteralWithUnicodeArrayCall(value) {
             var unicodeArrayNode = this.nodes.get('unicodeArrayNode');
             if (!unicodeArrayNode) {
-                throw new ReferenceError('`unicodeArrayNode` node is not found in Map with custom nodes.');
+                throw new ReferenceError('`unicodeArrayNode` node is not found in Map with custom node.');
             }
             var rc4Key = '';
             switch (this.options.unicodeArrayEncoding) {
@@ -1137,7 +1137,7 @@ var StringLiteralReplacer = function (_AbstractReplacer_1$A) {
             hexadecimalIndex = new NumberLiteralReplacer_1.NumberLiteralReplacer(this.nodes, this.options).replace(indexOfValue);
             var unicodeArrayCallsWrapper = this.nodes.get('unicodeArrayCallsWrapper');
             if (!unicodeArrayCallsWrapper) {
-                throw new ReferenceError('`unicodeArrayCallsWrapper` node is not found in Map with custom nodes.');
+                throw new ReferenceError('`unicodeArrayCallsWrapper` node is not found in Map with custom node.');
             }
             if (this.options.unicodeArrayEncoding === UnicodeArrayEncoding_1.UnicodeArrayEncoding.rc4) {
                 return unicodeArrayCallsWrapper.getNodeIdentifier() + '(\'' + hexadecimalIndex + '\', ' + Utils_1.Utils.stringToUnicode(rc4Key) + ')';
@@ -1430,7 +1430,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
 var estraverse = __webpack_require__(5);
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var NodeType_1 = __webpack_require__(7);
 var CatchClauseObfuscator_1 = __webpack_require__(47);
 var ConsoleOutputNodesGroup_1 = __webpack_require__(42);
@@ -1441,7 +1441,7 @@ var FunctionObfuscator_1 = __webpack_require__(49);
 var LiteralObfuscator_1 = __webpack_require__(50);
 var MemberExpressionObfuscator_1 = __webpack_require__(51);
 var MethodDefinitionObfuscator_1 = __webpack_require__(52);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var NodeUtils_1 = __webpack_require__(1);
 var ObjectExpressionObfuscator_1 = __webpack_require__(53);
 var SelfDefendingNodesGroup_1 = __webpack_require__(45);
@@ -1461,7 +1461,7 @@ var Obfuscator = function () {
     _createClass(Obfuscator, [{
         key: 'obfuscateNode',
         value: function obfuscateNode(node) {
-            if (Nodes_1.Nodes.isProgramNode(node) && !node.body.length) {
+            if (Node_1.Node.isProgramNode(node) && !node.body.length) {
                 return node;
             }
             NodeUtils_1.NodeUtils.parentize(node);
@@ -1915,7 +1915,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
 __webpack_require__(8);
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var ConsoleOutputDisableExpressionTemplate_1 = __webpack_require__(66);
 var AbstractCustomNode_1 = __webpack_require__(6);
 var NodeAppender_1 = __webpack_require__(4);
@@ -1973,7 +1973,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
 __webpack_require__(8);
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var DebufProtectionFunctionCallTemplate_1 = __webpack_require__(67);
 var AbstractCustomNode_1 = __webpack_require__(6);
 var NodeAppender_1 = __webpack_require__(4);
@@ -2027,7 +2027,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
 __webpack_require__(8);
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var DebugProtectionFunctionIntervalTemplate_1 = __webpack_require__(68);
 var AbstractCustomNode_1 = __webpack_require__(6);
 var NodeAppender_1 = __webpack_require__(4);
@@ -2081,7 +2081,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
 __webpack_require__(8);
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var DebugProtectionFunctionTemplate_1 = __webpack_require__(69);
 var AbstractCustomNode_1 = __webpack_require__(6);
 var NodeAppender_1 = __webpack_require__(4);
@@ -2148,7 +2148,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
 __webpack_require__(8);
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var DomainLockNodeTemplate_1 = __webpack_require__(70);
 var AbstractCustomNode_1 = __webpack_require__(6);
 var NodeAppender_1 = __webpack_require__(4);
@@ -2212,7 +2212,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
 
 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var NoCustomNodesPreset_1 = __webpack_require__(16);
 var SelfDefendingTemplate_1 = __webpack_require__(71);
 var AbstractCustomNode_1 = __webpack_require__(6);
@@ -2274,7 +2274,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
 __webpack_require__(8);
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var UnicodeArrayEncoding_1 = __webpack_require__(18);
 var NoCustomNodesPreset_1 = __webpack_require__(16);
 var AtobTemplate_1 = __webpack_require__(63);
@@ -2386,7 +2386,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
 __webpack_require__(8);
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var UnicodeArrayTemplate_1 = __webpack_require__(76);
 var AbstractCustomNode_1 = __webpack_require__(6);
 var NodeAppender_1 = __webpack_require__(4);
@@ -2473,7 +2473,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
 __webpack_require__(8);
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var NoCustomNodesPreset_1 = __webpack_require__(16);
 var SelfDefendingTemplate_1 = __webpack_require__(77);
 var UnicodeArrayRotateFunctionTemplate_1 = __webpack_require__(78);
@@ -2699,7 +2699,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
 
 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var NodeCallsControllerFunctionNode_1 = __webpack_require__(17);
 var SelfDefendingUnicodeNode_1 = __webpack_require__(38);
 var AbstractNodesGroup_1 = __webpack_require__(11);
@@ -2750,7 +2750,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
 
 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
-var AppendState_1 = __webpack_require__(3);
+var AppendState_1 = __webpack_require__(2);
 var UnicodeArrayCallsWrapper_1 = __webpack_require__(39);
 var UnicodeArrayNode_1 = __webpack_require__(40);
 var UnicodeArrayRotateFunctionNode_1 = __webpack_require__(41);
@@ -2820,7 +2820,7 @@ var estraverse = __webpack_require__(5);
 var NodeType_1 = __webpack_require__(7);
 var AbstractNodeObfuscator_1 = __webpack_require__(9);
 var IdentifierReplacer_1 = __webpack_require__(15);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var NodeUtils_1 = __webpack_require__(1);
 
 var CatchClauseObfuscator = function (_AbstractNodeObfuscat) {
@@ -2859,7 +2859,7 @@ var CatchClauseObfuscator = function (_AbstractNodeObfuscat) {
 
             estraverse.replace(catchClauseNode, {
                 enter: function enter(node, parentNode) {
-                    if (Nodes_1.Nodes.isReplaceableIdentifierNode(node, parentNode)) {
+                    if (Node_1.Node.isReplaceableIdentifierNode(node, parentNode)) {
                         node.name = _this3.identifierReplacer.replace(node.name);
                     }
                 }
@@ -2891,7 +2891,7 @@ var estraverse = __webpack_require__(5);
 var NodeType_1 = __webpack_require__(7);
 var AbstractNodeObfuscator_1 = __webpack_require__(9);
 var IdentifierReplacer_1 = __webpack_require__(15);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var NodeUtils_1 = __webpack_require__(1);
 
 var FunctionDeclarationObfuscator = function (_AbstractNodeObfuscat) {
@@ -2934,7 +2934,7 @@ var FunctionDeclarationObfuscator = function (_AbstractNodeObfuscat) {
             var scopeNode = NodeUtils_1.NodeUtils.getBlockScopeOfNode(functionDeclarationNode);
             estraverse.replace(scopeNode, {
                 enter: function enter(node, parentNode) {
-                    if (Nodes_1.Nodes.isReplaceableIdentifierNode(node, parentNode)) {
+                    if (Node_1.Node.isReplaceableIdentifierNode(node, parentNode)) {
                         node.name = _this3.identifierReplacer.replace(node.name);
                     }
                 }
@@ -2966,7 +2966,7 @@ var estraverse = __webpack_require__(5);
 var NodeType_1 = __webpack_require__(7);
 var AbstractNodeObfuscator_1 = __webpack_require__(9);
 var IdentifierReplacer_1 = __webpack_require__(15);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var NodeUtils_1 = __webpack_require__(1);
 
 var FunctionObfuscator = function (_AbstractNodeObfuscat) {
@@ -3007,7 +3007,7 @@ var FunctionObfuscator = function (_AbstractNodeObfuscat) {
 
             var replaceVisitor = {
                 enter: function enter(node, parentNode) {
-                    if (Nodes_1.Nodes.isReplaceableIdentifierNode(node, parentNode)) {
+                    if (Node_1.Node.isReplaceableIdentifierNode(node, parentNode)) {
                         var newNodeName = _this3.identifierReplacer.replace(node.name);
                         if (node.name !== newNodeName) {
                             node.name = newNodeName;
@@ -3048,7 +3048,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
 var escodegen = __webpack_require__(12);
 var AbstractNodeObfuscator_1 = __webpack_require__(9);
 var BooleanLiteralReplacer_1 = __webpack_require__(55);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var NumberLiteralReplacer_1 = __webpack_require__(22);
 var StringLiteralReplacer_1 = __webpack_require__(19);
 
@@ -3064,7 +3064,7 @@ var LiteralObfuscator = function (_AbstractNodeObfuscat) {
     _createClass(LiteralObfuscator, [{
         key: 'obfuscateNode',
         value: function obfuscateNode(literalNode, parentNode) {
-            if (Nodes_1.Nodes.isPropertyNode(parentNode) && parentNode.key === literalNode) {
+            if (Node_1.Node.isPropertyNode(parentNode) && parentNode.key === literalNode) {
                 return;
             }
             var content = void 0;
@@ -3112,7 +3112,7 @@ var escodegen = __webpack_require__(12);
 var estraverse = __webpack_require__(5);
 var NodeType_1 = __webpack_require__(7);
 var AbstractNodeObfuscator_1 = __webpack_require__(9);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var StringLiteralReplacer_1 = __webpack_require__(19);
 
 var MemberExpressionObfuscator = function (_AbstractNodeObfuscat) {
@@ -3131,11 +3131,11 @@ var MemberExpressionObfuscator = function (_AbstractNodeObfuscat) {
 
             estraverse.replace(memberExpressionNode.property, {
                 enter: function enter(node, parentNode) {
-                    if (Nodes_1.Nodes.isLiteralNode(node)) {
+                    if (Node_1.Node.isLiteralNode(node)) {
                         _this2.obfuscateLiteralProperty(node);
                         return;
                     }
-                    if (Nodes_1.Nodes.isIdentifierNode(node)) {
+                    if (Node_1.Node.isIdentifierNode(node)) {
                         if (memberExpressionNode.computed) {
                             return;
                         }
@@ -3195,7 +3195,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
 
 var estraverse = __webpack_require__(5);
 var AbstractNodeObfuscator_1 = __webpack_require__(9);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var Utils_1 = __webpack_require__(0);
 var StringLiteralReplacer_1 = __webpack_require__(19);
 
@@ -3223,7 +3223,7 @@ var MethodDefinitionObfuscator = function (_AbstractNodeObfuscat) {
 
             estraverse.replace(methodDefinitionNode.key, {
                 enter: function enter(node) {
-                    if (Nodes_1.Nodes.isIdentifierNode(node) && !Utils_1.Utils.arrayContains(_this2.ignoredNames, node.name) && methodDefinitionNode.computed === false) {
+                    if (Node_1.Node.isIdentifierNode(node) && !Utils_1.Utils.arrayContains(_this2.ignoredNames, node.name) && methodDefinitionNode.computed === false) {
                         methodDefinitionNode.computed = true;
                         node.name = new StringLiteralReplacer_1.StringLiteralReplacer(_this2.nodes, _this2.options).replace(node.name);
                         return;
@@ -3258,7 +3258,7 @@ var escodegen = __webpack_require__(12);
 var estraverse = __webpack_require__(5);
 var NodeType_1 = __webpack_require__(7);
 var AbstractNodeObfuscator_1 = __webpack_require__(9);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var Utils_1 = __webpack_require__(0);
 
 var ObjectExpressionObfuscator = function (_AbstractNodeObfuscat) {
@@ -3281,11 +3281,11 @@ var ObjectExpressionObfuscator = function (_AbstractNodeObfuscat) {
                 }
                 estraverse.replace(property.key, {
                     enter: function enter(node, parentNode) {
-                        if (Nodes_1.Nodes.isLiteralNode(node)) {
+                        if (Node_1.Node.isLiteralNode(node)) {
                             _this2.obfuscateLiteralPropertyKey(node);
                             return;
                         }
-                        if (Nodes_1.Nodes.isIdentifierNode(node)) {
+                        if (Node_1.Node.isIdentifierNode(node)) {
                             _this2.obfuscateIdentifierPropertyKey(node);
                         }
                     }
@@ -3344,7 +3344,7 @@ var estraverse = __webpack_require__(5);
 var NodeType_1 = __webpack_require__(7);
 var AbstractNodeObfuscator_1 = __webpack_require__(9);
 var IdentifierReplacer_1 = __webpack_require__(15);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var NodeUtils_1 = __webpack_require__(1);
 
 var VariableDeclarationObfuscator = function (_AbstractNodeObfuscat) {
@@ -3389,7 +3389,7 @@ var VariableDeclarationObfuscator = function (_AbstractNodeObfuscat) {
             var scopeNode = variableDeclarationNode.kind === 'var' ? NodeUtils_1.NodeUtils.getBlockScopeOfNode(variableDeclarationNode) : variableParentNode;
             estraverse.replace(scopeNode, {
                 enter: function enter(node, parentNode) {
-                    if (!node.obfuscated && Nodes_1.Nodes.isReplaceableIdentifierNode(node, parentNode)) {
+                    if (!node.obfuscated && Node_1.Node.isReplaceableIdentifierNode(node, parentNode)) {
                         node.name = _this3.identifierReplacer.replace(node.name);
                     }
                 }
@@ -3763,7 +3763,7 @@ var NodeType_1 = __webpack_require__(7);
 var FunctionDeclarationCalleeDataExtractor_1 = __webpack_require__(60);
 var FunctionExpressionCalleeDataExtractor_1 = __webpack_require__(61);
 var ObjectExpressionCalleeDataExtractor_1 = __webpack_require__(62);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var NodeUtils_1 = __webpack_require__(1);
 
 var StackTraceAnalyzer = function () {
@@ -3794,7 +3794,7 @@ var StackTraceAnalyzer = function () {
                 }
                 estraverse.traverse(rootNode, {
                     enter: function enter(node) {
-                        if (!Nodes_1.Nodes.isCallExpressionNode(node) || rootNode.parentNode !== NodeUtils_1.NodeUtils.getBlockScopeOfNode(node)) {
+                        if (!Node_1.Node.isCallExpressionNode(node) || rootNode.parentNode !== NodeUtils_1.NodeUtils.getBlockScopeOfNode(node)) {
                             return;
                         }
                         _this.calleeDataExtractors.forEach(function (calleeDataExtractor) {
@@ -3852,7 +3852,7 @@ var _createClass = (function () { function defineProperties(target, props) { for
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
 var estraverse = __webpack_require__(5);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var NodeUtils_1 = __webpack_require__(1);
 
 var FunctionDeclarationCalleeDataExtractor = function () {
@@ -3867,7 +3867,7 @@ var FunctionDeclarationCalleeDataExtractor = function () {
         key: 'extract',
         value: function extract() {
             var calleeBlockStatement = null;
-            if (Nodes_1.Nodes.isIdentifierNode(this.callee)) {
+            if (Node_1.Node.isIdentifierNode(this.callee)) {
                 calleeBlockStatement = this.getCalleeBlockStatement(NodeUtils_1.NodeUtils.getBlockScopeOfNode(this.blockScopeBody[0]), this.callee.name);
             }
             if (!calleeBlockStatement) {
@@ -3884,7 +3884,7 @@ var FunctionDeclarationCalleeDataExtractor = function () {
             var calleeBlockStatement = null;
             estraverse.traverse(node, {
                 enter: function enter(node) {
-                    if (Nodes_1.Nodes.isFunctionDeclarationNode(node) && node.id.name === name) {
+                    if (Node_1.Node.isFunctionDeclarationNode(node) && node.id.name === name) {
                         calleeBlockStatement = node.body;
                         return estraverse.VisitorOption.Break;
                     }
@@ -3911,7 +3911,7 @@ var _createClass = (function () { function defineProperties(target, props) { for
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
 var estraverse = __webpack_require__(5);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var NodeUtils_1 = __webpack_require__(1);
 
 var FunctionExpressionCalleeDataExtractor = function () {
@@ -3926,10 +3926,10 @@ var FunctionExpressionCalleeDataExtractor = function () {
         key: 'extract',
         value: function extract() {
             var calleeBlockStatement = null;
-            if (Nodes_1.Nodes.isIdentifierNode(this.callee)) {
+            if (Node_1.Node.isIdentifierNode(this.callee)) {
                 calleeBlockStatement = this.getCalleeBlockStatement(NodeUtils_1.NodeUtils.getBlockScopeOfNode(this.blockScopeBody[0]), this.callee.name);
             }
-            if (Nodes_1.Nodes.isFunctionExpressionNode(this.callee)) {
+            if (Node_1.Node.isFunctionExpressionNode(this.callee)) {
                 calleeBlockStatement = this.callee.body;
             }
             if (!calleeBlockStatement) {
@@ -3946,7 +3946,7 @@ var FunctionExpressionCalleeDataExtractor = function () {
             var calleeBlockStatement = null;
             estraverse.traverse(node, {
                 enter: function enter(node, parentNode) {
-                    if (Nodes_1.Nodes.isFunctionExpressionNode(node) && Nodes_1.Nodes.isVariableDeclaratorNode(parentNode) && Nodes_1.Nodes.isIdentifierNode(parentNode.id) && parentNode.id.name === name) {
+                    if (Node_1.Node.isFunctionExpressionNode(node) && Node_1.Node.isVariableDeclaratorNode(parentNode) && Node_1.Node.isIdentifierNode(parentNode.id) && parentNode.id.name === name) {
                         calleeBlockStatement = node.body;
                         return estraverse.VisitorOption.Break;
                     }
@@ -3973,7 +3973,7 @@ var _createClass = (function () { function defineProperties(target, props) { for
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
 var estraverse = __webpack_require__(5);
-var Nodes_1 = __webpack_require__(2);
+var Node_1 = __webpack_require__(3);
 var NodeUtils_1 = __webpack_require__(1);
 
 var ObjectExpressionCalleeDataExtractor = function () {
@@ -3989,7 +3989,7 @@ var ObjectExpressionCalleeDataExtractor = function () {
         value: function extract() {
             var calleeBlockStatement = null,
                 functionExpressionName = null;
-            if (Nodes_1.Nodes.isMemberExpressionNode(this.callee)) {
+            if (Node_1.Node.isMemberExpressionNode(this.callee)) {
                 var objectMembersCallsChain = this.createObjectMembersCallsChain([], this.callee);
                 if (!objectMembersCallsChain.length) {
                     return null;
@@ -4008,16 +4008,16 @@ var ObjectExpressionCalleeDataExtractor = function () {
     }, {
         key: 'createObjectMembersCallsChain',
         value: function createObjectMembersCallsChain(currentChain, memberExpression) {
-            if (Nodes_1.Nodes.isIdentifierNode(memberExpression.property) && memberExpression.computed === false) {
+            if (Node_1.Node.isIdentifierNode(memberExpression.property) && memberExpression.computed === false) {
                 currentChain.unshift(memberExpression.property.name);
-            } else if (Nodes_1.Nodes.isLiteralNode(memberExpression.property) && (typeof memberExpression.property.value === 'string' || typeof memberExpression.property.value === 'number')) {
+            } else if (Node_1.Node.isLiteralNode(memberExpression.property) && (typeof memberExpression.property.value === 'string' || typeof memberExpression.property.value === 'number')) {
                 currentChain.unshift(memberExpression.property.value);
             } else {
                 return currentChain;
             }
-            if (Nodes_1.Nodes.isMemberExpressionNode(memberExpression.object)) {
+            if (Node_1.Node.isMemberExpressionNode(memberExpression.object)) {
                 return this.createObjectMembersCallsChain(currentChain, memberExpression.object);
-            } else if (Nodes_1.Nodes.isIdentifierNode(memberExpression.object)) {
+            } else if (Node_1.Node.isIdentifierNode(memberExpression.object)) {
                 currentChain.unshift(memberExpression.object.name);
             }
             return currentChain;
@@ -4034,7 +4034,7 @@ var ObjectExpressionCalleeDataExtractor = function () {
             var calleeBlockStatement = null;
             estraverse.traverse(node, {
                 enter: function enter(node, parentNode) {
-                    if (Nodes_1.Nodes.isVariableDeclaratorNode(node) && Nodes_1.Nodes.isIdentifierNode(node.id) && node.init && Nodes_1.Nodes.isObjectExpressionNode(node.init) && node.id.name === objectName) {
+                    if (Node_1.Node.isVariableDeclaratorNode(node) && Node_1.Node.isIdentifierNode(node.id) && node.init && Node_1.Node.isObjectExpressionNode(node.init) && node.id.name === objectName) {
                         calleeBlockStatement = _this.findCalleeBlockStatement(node.init.properties, objectMembersCallsChain);
                         return estraverse.VisitorOption.Break;
                     }
@@ -4057,15 +4057,15 @@ var ObjectExpressionCalleeDataExtractor = function () {
                 for (var _iterator = objectExpressionProperties[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
                     var propertyNode = _step.value;
 
-                    var isTargetPropertyNodeWithIdentifierKey = Nodes_1.Nodes.isIdentifierNode(propertyNode.key) && propertyNode.key.name === nextItemInCallsChain;
-                    var isTargetPropertyNodeWithLiteralKey = Nodes_1.Nodes.isLiteralNode(propertyNode.key) && Boolean(propertyNode.key.value) && propertyNode.key.value === nextItemInCallsChain;
+                    var isTargetPropertyNodeWithIdentifierKey = Node_1.Node.isIdentifierNode(propertyNode.key) && propertyNode.key.name === nextItemInCallsChain;
+                    var isTargetPropertyNodeWithLiteralKey = Node_1.Node.isLiteralNode(propertyNode.key) && Boolean(propertyNode.key.value) && propertyNode.key.value === nextItemInCallsChain;
                     if (!isTargetPropertyNodeWithIdentifierKey && !isTargetPropertyNodeWithLiteralKey) {
                         continue;
                     }
-                    if (Nodes_1.Nodes.isObjectExpressionNode(propertyNode.value)) {
+                    if (Node_1.Node.isObjectExpressionNode(propertyNode.value)) {
                         return this.findCalleeBlockStatement(propertyNode.value.properties, objectMembersCallsChain);
                     }
-                    if (Nodes_1.Nodes.isFunctionExpressionNode(propertyNode.value)) {
+                    if (Node_1.Node.isFunctionExpressionNode(propertyNode.value)) {
                         return propertyNode.value.body;
                     }
                 }

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "javascript-obfuscator",
-  "version": "0.8.0-dev.4",
+  "version": "0.8.0-dev.5",
   "description": "JavaScript obfuscator",
   "keywords": [
     "obfuscator",

+ 3 - 3
src/Obfuscator.ts

@@ -22,8 +22,8 @@ import { FunctionObfuscator } from './node-obfuscators/FunctionObfuscator';
 import { LiteralObfuscator } from './node-obfuscators/LiteralObfuscator';
 import { MemberExpressionObfuscator } from './node-obfuscators/MemberExpressionObfuscator';
 import { MethodDefinitionObfuscator } from './node-obfuscators/MethodDefinitionObfuscator';
-import { Nodes } from './Nodes';
-import { NodeUtils } from './NodeUtils';
+import { Node } from './node/Node';
+import { NodeUtils } from './node/NodeUtils';
 import { ObjectExpressionObfuscator } from './node-obfuscators/ObjectExpressionObfuscator';
 import { SelfDefendingNodesGroup } from './node-groups/SelfDefendingNodesGroup';
 import { UnicodeArrayNodesGroup } from './node-groups/UnicodeArrayNodesGroup';
@@ -90,7 +90,7 @@ export class Obfuscator implements IObfuscator {
      * @returns {ESTree.Node}
      */
     public obfuscateNode (node: ESTree.Program): ESTree.Node {
-        if (Nodes.isProgramNode(node) && !node.body.length) {
+        if (Node.isProgramNode(node) && !node.body.length) {
             return node;
         }
 

+ 2 - 2
src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts

@@ -11,8 +11,8 @@ import { AppendState } from '../../enums/AppendState';
 import { ConsoleOutputDisableExpressionTemplate } from '../../templates/custom-nodes/console-output-nodes/console-output-disable-expression-node/ConsoleOutputDisableExpressionTemplate';
 
 import { AbstractCustomNode } from '../AbstractCustomNode';
-import { NodeAppender } from '../../NodeAppender';
-import { NodeUtils } from '../../NodeUtils';
+import { NodeAppender } from '../../node/NodeAppender';
+import { NodeUtils } from '../../node/NodeUtils';
 import { Utils } from '../../Utils';
 
 export class ConsoleOutputDisableExpressionNode extends AbstractCustomNode {

+ 2 - 2
src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts

@@ -10,8 +10,8 @@ import { AppendState } from '../../enums/AppendState';
 import { DebugProtectionFunctionCallTemplate } from '../../templates/custom-nodes/debug-protection-nodes/debug-protection-function-call-node/DebufProtectionFunctionCallTemplate';
 
 import { AbstractCustomNode } from '../AbstractCustomNode';
-import { NodeAppender } from '../../NodeAppender';
-import { NodeUtils } from '../../NodeUtils';
+import { NodeAppender } from '../../node/NodeAppender';
+import { NodeUtils } from '../../node/NodeUtils';
 
 export class DebugProtectionFunctionCallNode extends AbstractCustomNode {
     /**

+ 2 - 2
src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts

@@ -10,8 +10,8 @@ import { AppendState } from '../../enums/AppendState';
 import { DebugProtectionFunctionIntervalTemplate } from '../../templates/custom-nodes/debug-protection-nodes/debug-protection-function-interval-node/DebugProtectionFunctionIntervalTemplate';
 
 import { AbstractCustomNode } from '../AbstractCustomNode';
-import { NodeAppender } from '../../NodeAppender';
-import { NodeUtils } from '../../NodeUtils';
+import { NodeAppender } from '../../node/NodeAppender';
+import { NodeUtils } from '../../node/NodeUtils';
 
 export class DebugProtectionFunctionIntervalNode extends AbstractCustomNode {
     /**

+ 2 - 2
src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts

@@ -10,8 +10,8 @@ import { AppendState } from '../../enums/AppendState';
 import { DebugProtectionFunctionTemplate } from '../../templates/custom-nodes/debug-protection-nodes/debug-protection-function-node/DebugProtectionFunctionTemplate';
 
 import { AbstractCustomNode } from '../AbstractCustomNode';
-import { NodeAppender } from '../../NodeAppender';
-import { NodeUtils } from '../../NodeUtils';
+import { NodeAppender } from '../../node/NodeAppender';
+import { NodeUtils } from '../../node/NodeUtils';
 import { Utils } from '../../Utils';
 
 export class DebugProtectionFunctionNode extends AbstractCustomNode {

+ 2 - 2
src/custom-nodes/domain-lock-nodes/DomainLockNode.ts

@@ -11,8 +11,8 @@ import { AppendState } from '../../enums/AppendState';
 import { DomainLockNodeTemplate } from '../../templates/custom-nodes/domain-lock-nodes/domain-lock-node/DomainLockNodeTemplate';
 
 import { AbstractCustomNode } from '../AbstractCustomNode';
-import { NodeAppender } from '../../NodeAppender';
-import { NodeUtils } from '../../NodeUtils';
+import { NodeAppender } from '../../node/NodeAppender';
+import { NodeUtils } from '../../node/NodeUtils';
 import { Utils } from '../../Utils';
 
 export class DomainLockNode extends AbstractCustomNode {

+ 2 - 2
src/custom-nodes/node-calls-controller-nodes/NodeCallsControllerFunctionNode.ts

@@ -14,8 +14,8 @@ import { NO_CUSTOM_NODES_PRESET } from '../../preset-options/NoCustomNodesPreset
 
 import { AbstractCustomNode } from '../AbstractCustomNode';
 import { JavaScriptObfuscator } from '../../JavaScriptObfuscator';
-import { NodeAppender } from '../../NodeAppender';
-import { NodeUtils } from '../../NodeUtils';
+import { NodeAppender } from '../../node/NodeAppender';
+import { NodeUtils } from '../../node/NodeUtils';
 
 export class NodeCallsControllerFunctionNode extends AbstractCustomNode {
     /**

+ 2 - 2
src/custom-nodes/self-defending-nodes/SelfDefendingUnicodeNode.ts

@@ -11,9 +11,9 @@ import { NO_CUSTOM_NODES_PRESET } from '../../preset-options/NoCustomNodesPreset
 import { SelfDefendingTemplate } from '../../templates/custom-nodes/self-defending-nodes/self-defending-unicode-node/SelfDefendingTemplate';
 
 import { AbstractCustomNode } from '../AbstractCustomNode';
-import { NodeAppender } from '../../NodeAppender';
+import { NodeAppender } from '../../node/NodeAppender';
 import { JavaScriptObfuscator } from '../../JavaScriptObfuscator';
-import { NodeUtils } from '../../NodeUtils';
+import { NodeUtils } from '../../node/NodeUtils';
 import { Utils } from '../../Utils';
 
 export class SelfDefendingUnicodeNode extends AbstractCustomNode {

+ 2 - 2
src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts

@@ -19,8 +19,8 @@ import { UnicodeArrayRc4DecodeNodeTemplate } from '../../templates/custom-nodes/
 
 import { AbstractCustomNode } from '../AbstractCustomNode';
 import { JavaScriptObfuscator } from '../../JavaScriptObfuscator';
-import { NodeAppender } from '../../NodeAppender';
-import { NodeUtils } from '../../NodeUtils';
+import { NodeAppender } from '../../node/NodeAppender';
+import { NodeUtils } from '../../node/NodeUtils';
 import { UnicodeArray } from '../../UnicodeArray';
 
 export class UnicodeArrayCallsWrapper extends AbstractCustomNode {

+ 2 - 2
src/custom-nodes/unicode-array-nodes/UnicodeArrayNode.ts

@@ -12,8 +12,8 @@ import { UnicodeArray } from '../../UnicodeArray';
 import { UnicodeArrayTemplate } from '../../templates/custom-nodes/unicode-array-nodes/unicode-array-node/UnicodeArrayTemplate';
 
 import { AbstractCustomNode } from '../AbstractCustomNode';
-import { NodeAppender } from '../../NodeAppender';
-import { NodeUtils } from '../../NodeUtils';
+import { NodeAppender } from '../../node/NodeAppender';
+import { NodeUtils } from '../../node/NodeUtils';
 
 export class UnicodeArrayNode extends AbstractCustomNode {
     /**

+ 2 - 2
src/custom-nodes/unicode-array-nodes/UnicodeArrayRotateFunctionNode.ts

@@ -14,8 +14,8 @@ import { UnicodeArrayRotateFunctionTemplate } from '../../templates/custom-nodes
 
 import { AbstractCustomNode } from '../AbstractCustomNode';
 import { JavaScriptObfuscator } from '../../JavaScriptObfuscator';
-import { NodeAppender } from '../../NodeAppender';
-import { NodeUtils } from '../../NodeUtils';
+import { NodeAppender } from '../../node/NodeAppender';
+import { NodeUtils } from '../../node/NodeUtils';
 import { UnicodeArray } from '../../UnicodeArray';
 import { Utils } from '../../Utils';
 

+ 1 - 1
src/node-groups/ConsoleOutputNodesGroup.ts

@@ -4,7 +4,7 @@ import { ConsoleOutputDisableExpressionNode } from '../custom-nodes/console-outp
 import { NodeCallsControllerFunctionNode } from '../custom-nodes/node-calls-controller-nodes/NodeCallsControllerFunctionNode';
 
 import { AbstractNodesGroup } from './AbstractNodesGroup';
-import { NodeAppender } from '../NodeAppender';
+import { NodeAppender } from '../node/NodeAppender';
 import { Utils } from '../Utils';
 
 export class ConsoleOutputNodesGroup extends AbstractNodesGroup {

+ 1 - 1
src/node-groups/DomainLockNodesGroup.ts

@@ -4,7 +4,7 @@ import { DomainLockNode } from '../custom-nodes/domain-lock-nodes/DomainLockNode
 import { NodeCallsControllerFunctionNode } from '../custom-nodes/node-calls-controller-nodes/NodeCallsControllerFunctionNode';
 
 import { AbstractNodesGroup } from './AbstractNodesGroup';
-import { NodeAppender } from '../NodeAppender';
+import { NodeAppender } from '../node/NodeAppender';
 import { Utils } from '../Utils';
 
 export class DomainLockNodesGroup extends AbstractNodesGroup {

+ 1 - 1
src/node-groups/SelfDefendingNodesGroup.ts

@@ -6,7 +6,7 @@ import { NodeCallsControllerFunctionNode } from '../custom-nodes/node-calls-cont
 import { SelfDefendingUnicodeNode } from '../custom-nodes/self-defending-nodes/SelfDefendingUnicodeNode';
 
 import { AbstractNodesGroup } from './AbstractNodesGroup';
-import { NodeAppender } from '../NodeAppender';
+import { NodeAppender } from '../node/NodeAppender';
 import { Utils } from '../Utils';
 
 export class SelfDefendingNodesGroup extends AbstractNodesGroup {

+ 3 - 3
src/node-obfuscators/CatchClauseObfuscator.ts

@@ -8,8 +8,8 @@ import { NodeType } from '../enums/NodeType';
 
 import { AbstractNodeObfuscator } from './AbstractNodeObfuscator';
 import { IdentifierReplacer } from './replacers/IdentifierReplacer';
-import { Nodes } from '../Nodes';
-import { NodeUtils } from '../NodeUtils';
+import { Node } from '../node/Node';
+import { NodeUtils } from '../node/NodeUtils';
 
 /**
  * replaces:
@@ -58,7 +58,7 @@ export class CatchClauseObfuscator extends AbstractNodeObfuscator {
     private replaceCatchClauseParam (catchClauseNode: ESTree.CatchClause): void {
         estraverse.replace(catchClauseNode, {
             enter: (node: ESTree.Node, parentNode: ESTree.Node): any => {
-                if (Nodes.isReplaceableIdentifierNode(node, parentNode)) {
+                if (Node.isReplaceableIdentifierNode(node, parentNode)) {
                     node.name = this.identifierReplacer.replace(node.name);
                 }
             }

+ 3 - 3
src/node-obfuscators/FunctionDeclarationObfuscator.ts

@@ -8,8 +8,8 @@ import { NodeType } from '../enums/NodeType';
 
 import { AbstractNodeObfuscator } from './AbstractNodeObfuscator';
 import { IdentifierReplacer } from './replacers/IdentifierReplacer';
-import { Nodes } from '../Nodes';
-import { NodeUtils } from '../NodeUtils';
+import { Node } from '../node/Node';
+import { NodeUtils } from '../node/NodeUtils';
 
 /**
  * replaces:
@@ -68,7 +68,7 @@ export class FunctionDeclarationObfuscator extends AbstractNodeObfuscator {
 
         estraverse.replace(scopeNode, {
             enter: (node: ESTree.Node, parentNode: ESTree.Node): any => {
-                if (Nodes.isReplaceableIdentifierNode(node, parentNode)) {
+                if (Node.isReplaceableIdentifierNode(node, parentNode)) {
                     node.name = this.identifierReplacer.replace(node.name);
                 }
             }

+ 3 - 3
src/node-obfuscators/FunctionObfuscator.ts

@@ -8,8 +8,8 @@ import { NodeType } from '../enums/NodeType';
 
 import { AbstractNodeObfuscator } from './AbstractNodeObfuscator';
 import { IdentifierReplacer } from './replacers/IdentifierReplacer';
-import { Nodes } from '../Nodes';
-import { NodeUtils } from '../NodeUtils';
+import { Node } from '../node/Node';
+import { NodeUtils } from '../node/NodeUtils';
 
 /**
  * replaces:
@@ -61,7 +61,7 @@ export class FunctionObfuscator extends AbstractNodeObfuscator {
     private replaceFunctionParams (functionNode: ESTree.Function): void {
         let replaceVisitor: estraverse.Visitor = {
             enter: (node: ESTree.Node, parentNode: ESTree.Node): any => {
-                if (Nodes.isReplaceableIdentifierNode(node, parentNode)) {
+                if (Node.isReplaceableIdentifierNode(node, parentNode)) {
                     const newNodeName: string = this.identifierReplacer.replace(node.name);
 
                     if (node.name !== newNodeName) {

+ 2 - 2
src/node-obfuscators/LiteralObfuscator.ts

@@ -3,7 +3,7 @@ import * as ESTree from 'estree';
 
 import { AbstractNodeObfuscator } from './AbstractNodeObfuscator';
 import { BooleanLiteralReplacer } from './replacers/BooleanLiteralReplacer';
-import { Nodes } from '../Nodes';
+import { Node } from '../node/Node';
 import { NumberLiteralReplacer } from './replacers/NumberLiteralReplacer';
 import { StringLiteralReplacer } from './replacers/StringLiteralReplacer';
 
@@ -13,7 +13,7 @@ export class LiteralObfuscator extends AbstractNodeObfuscator {
      * @param parentNode
      */
     public obfuscateNode (literalNode: ESTree.Literal, parentNode: ESTree.Node): void {
-        if (Nodes.isPropertyNode(parentNode) && parentNode.key === literalNode) {
+        if (Node.isPropertyNode(parentNode) && parentNode.key === literalNode) {
             return;
         }
 

+ 3 - 3
src/node-obfuscators/MemberExpressionObfuscator.ts

@@ -5,7 +5,7 @@ import * as ESTree from 'estree';
 import { NodeType } from '../enums/NodeType';
 
 import { AbstractNodeObfuscator } from './AbstractNodeObfuscator';
-import { Nodes } from '../Nodes';
+import { Node } from '../node/Node';
 import { StringLiteralReplacer } from './replacers/StringLiteralReplacer';
 
 export class MemberExpressionObfuscator extends AbstractNodeObfuscator {
@@ -15,13 +15,13 @@ export class MemberExpressionObfuscator extends AbstractNodeObfuscator {
     public obfuscateNode (memberExpressionNode: ESTree.MemberExpression): void {
         estraverse.replace(memberExpressionNode.property, {
             enter: (node: ESTree.Node, parentNode: ESTree.Node): any => {
-                if (Nodes.isLiteralNode(node)) {
+                if (Node.isLiteralNode(node)) {
                     this.obfuscateLiteralProperty(node);
 
                     return;
                 }
 
-                if (Nodes.isIdentifierNode(node)) {
+                if (Node.isIdentifierNode(node)) {
                     if (memberExpressionNode.computed) {
                         return;
                     }

+ 2 - 2
src/node-obfuscators/MethodDefinitionObfuscator.ts

@@ -2,7 +2,7 @@ import * as estraverse from 'estraverse';
 import * as ESTree from 'estree';
 
 import { AbstractNodeObfuscator } from './AbstractNodeObfuscator';
-import { Nodes } from '../Nodes';
+import { Node } from '../node/Node';
 import { Utils } from '../Utils';
 import { StringLiteralReplacer } from './replacers/StringLiteralReplacer';
 
@@ -34,7 +34,7 @@ export class MethodDefinitionObfuscator extends AbstractNodeObfuscator {
         estraverse.replace(methodDefinitionNode.key, {
             enter: (node: ESTree.Node): any => {
                 if (
-                    Nodes.isIdentifierNode(node) &&
+                    Node.isIdentifierNode(node) &&
                     !Utils.arrayContains(this.ignoredNames, node.name) &&
                     methodDefinitionNode.computed === false
                 ) {

+ 3 - 3
src/node-obfuscators/ObjectExpressionObfuscator.ts

@@ -5,7 +5,7 @@ import * as ESTree from 'estree';
 import { NodeType } from '../enums/NodeType';
 
 import { AbstractNodeObfuscator } from './AbstractNodeObfuscator';
-import { Nodes } from '../Nodes';
+import { Node } from '../node/Node';
 import { Utils } from '../Utils';
 
 /**
@@ -31,13 +31,13 @@ export class ObjectExpressionObfuscator extends AbstractNodeObfuscator {
 
                 estraverse.replace(property.key, {
                     enter: (node: ESTree.Node, parentNode: ESTree.Node): any => {
-                        if (Nodes.isLiteralNode(node)) {
+                        if (Node.isLiteralNode(node)) {
                             this.obfuscateLiteralPropertyKey(node);
 
                             return;
                         }
 
-                        if (Nodes.isIdentifierNode(node)) {
+                        if (Node.isIdentifierNode(node)) {
                             this.obfuscateIdentifierPropertyKey(node);
                         }
                     }

+ 3 - 3
src/node-obfuscators/VariableDeclarationObfuscator.ts

@@ -8,8 +8,8 @@ import { NodeType } from '../enums/NodeType';
 
 import { AbstractNodeObfuscator } from './AbstractNodeObfuscator';
 import { IdentifierReplacer } from './replacers/IdentifierReplacer';
-import { Nodes } from '../Nodes';
-import { NodeUtils } from '../NodeUtils';
+import { Node } from '../node/Node';
+import { NodeUtils } from '../node/NodeUtils';
 
 /**
  * replaces:
@@ -73,7 +73,7 @@ export class VariableDeclarationObfuscator extends AbstractNodeObfuscator {
 
         estraverse.replace(scopeNode, {
             enter: (node: ESTree.Node, parentNode: ESTree.Node): any => {
-                if (!node.obfuscated && Nodes.isReplaceableIdentifierNode(node, parentNode)) {
+                if (!node.obfuscated && Node.isReplaceableIdentifierNode(node, parentNode)) {
                     node.name = this.identifierReplacer.replace(node.name);
                 }
             }

+ 2 - 2
src/node-obfuscators/replacers/StringLiteralReplacer.ts

@@ -45,7 +45,7 @@ export class StringLiteralReplacer extends AbstractReplacer {
         const unicodeArrayNode: TUnicodeArrayNode = <TUnicodeArrayNode>this.nodes.get('unicodeArrayNode');
 
         if (!unicodeArrayNode) {
-            throw new ReferenceError('`unicodeArrayNode` node is not found in Map with custom nodes.');
+            throw new ReferenceError('`unicodeArrayNode` node is not found in Map with custom node.');
         }
 
         let rc4Key: string = '';
@@ -83,7 +83,7 @@ export class StringLiteralReplacer extends AbstractReplacer {
         const unicodeArrayCallsWrapper: TUnicodeArrayCallsWrapper = <TUnicodeArrayCallsWrapper>this.nodes.get('unicodeArrayCallsWrapper');
 
         if (!unicodeArrayCallsWrapper) {
-            throw new ReferenceError('`unicodeArrayCallsWrapper` node is not found in Map with custom nodes.');
+            throw new ReferenceError('`unicodeArrayCallsWrapper` node is not found in Map with custom node.');
         }
 
         if (this.options.unicodeArrayEncoding === UnicodeArrayEncoding.rc4) {

+ 7 - 7
src/Nodes.ts → src/node/Node.ts

@@ -1,11 +1,11 @@
 import * as ESTree from 'estree';
 
-import { TNodeWithBlockStatement } from './types/TNodeWithBlockStatement';
-import { TStatement } from './types/TStatement';
+import { TNodeWithBlockStatement } from '../types/TNodeWithBlockStatement';
+import { TStatement } from '../types/TStatement';
 
-import { NodeType } from './enums/NodeType';
+import { NodeType } from '../enums/NodeType';
 
-export class Nodes {
+export class Node {
     /**
      * @param bodyNode
      * @returns ESTree.Program
@@ -123,13 +123,13 @@ export class Nodes {
      * @returns {boolean}
      */
     public static isReplaceableIdentifierNode (node: ESTree.Node, parentNode: ESTree.Node): node is ESTree.Identifier {
-        if (!Nodes.isIdentifierNode(node)) {
+        if (!Node.isIdentifierNode(node)) {
             return false;
         }
 
-        const parentNodeIsPropertyNode: boolean = Nodes.isPropertyNode(parentNode) && parentNode.key === node;
+        const parentNodeIsPropertyNode: boolean = Node.isPropertyNode(parentNode) && parentNode.key === node;
         const parentNodeIsMemberExpressionNode: boolean = (
-            Nodes.isMemberExpressionNode(parentNode) &&
+            Node.isMemberExpressionNode(parentNode) &&
             parentNode.computed === false &&
             parentNode.property === node
         );

+ 4 - 4
src/NodeAppender.ts → src/node/NodeAppender.ts

@@ -1,11 +1,11 @@
 import * as ESTree from 'estree';
 
-import { TNodeWithBlockStatement } from './types/TNodeWithBlockStatement';
-import { TStatement } from './types/TStatement';
+import { TNodeWithBlockStatement } from '../types/TNodeWithBlockStatement';
+import { TStatement } from '../types/TStatement';
 
-import { IStackTraceData } from './interfaces/stack-trace-analyzer/IStackTraceData';
+import { IStackTraceData } from '../interfaces/stack-trace-analyzer/IStackTraceData';
 
-import { Utils } from './Utils';
+import { Utils } from '../Utils';
 
 /**
  * This class appends node into a first deepest BlockStatement in order of function calls

+ 9 - 9
src/NodeUtils.ts → src/node/NodeUtils.ts

@@ -3,13 +3,13 @@ import * as esprima from 'esprima';
 import * as estraverse from 'estraverse';
 import * as ESTree from 'estree';
 
-import { TNodeWithBlockStatement } from './types/TNodeWithBlockStatement';
-import { TStatement } from './types/TStatement';
+import { TNodeWithBlockStatement } from '../types/TNodeWithBlockStatement';
+import { TStatement } from '../types/TStatement';
 
-import { NodeType } from './enums/NodeType';
+import { NodeType } from '../enums/NodeType';
 
-import { Nodes } from './Nodes';
-import { Utils } from './Utils';
+import { Node } from './Node';
+import { Utils } from '../Utils';
 
 export class NodeUtils {
     /**
@@ -56,7 +56,7 @@ export class NodeUtils {
      * @returns {ESTree.Node}
      */
     public static getBlockStatementNodeByIndex (node: ESTree.Node, index: number = 0): ESTree.Node {
-        if (Nodes.isNodeHasBlockStatement(node)) {
+        if (Node.isNodeHasBlockStatement(node)) {
             if (node.body[index] === undefined) {
                 throw new ReferenceError(`Wrong index \`${index}\`. Block-statement body length is \`${node.body.length}\``);
             }
@@ -79,7 +79,7 @@ export class NodeUtils {
             throw new ReferenceError('`parentNode` property of given node is `undefined`');
         }
 
-        if (Nodes.isBlockStatementNode(parentNode)) {
+        if (Node.isBlockStatementNode(parentNode)) {
             if (!parentNode.parentNode) {
                 throw new ReferenceError('`parentNode` property of `parentNode` of given node is `undefined`');
             }
@@ -93,7 +93,7 @@ export class NodeUtils {
             return parentNode;
         }
 
-        if (Nodes.isProgramNode(parentNode)) {
+        if (Node.isProgramNode(parentNode)) {
             return parentNode;
         }
 
@@ -114,7 +114,7 @@ export class NodeUtils {
                     if (node.type === NodeType.Program) {
                         value = node;
                     } else {
-                        value = Nodes.getProgramNode(<TStatement[]>[node]);
+                        value = Node.getProgramNode(<TStatement[]>[node]);
                         value['parentNode'] = value;
                     }
 

+ 3 - 3
src/stack-trace-analyzer/StackTraceAnalyzer.ts

@@ -13,8 +13,8 @@ import { FunctionDeclarationCalleeDataExtractor } from './callee-data-extractors
 import { FunctionExpressionCalleeDataExtractor } from './callee-data-extractors/FunctionExpressionCalleeDataExtractor';
 import { ObjectExpressionCalleeDataExtractor } from './callee-data-extractors/ObjectExpressionCalleeDataExtractor';
 
-import { Nodes } from '../Nodes';
-import { NodeUtils } from '../NodeUtils';
+import { Node } from '../node/Node';
+import { NodeUtils } from '../node/NodeUtils';
 
 /**
  * This class generates a data with code stack trace functions calls
@@ -130,7 +130,7 @@ export class StackTraceAnalyzer implements IStackTraceAnalyzer {
 
             estraverse.traverse(rootNode, {
                 enter: (node: ESTree.Node): any => {
-                    if (!Nodes.isCallExpressionNode(node) || rootNode.parentNode !== NodeUtils.getBlockScopeOfNode(node)) {
+                    if (!Node.isCallExpressionNode(node) || rootNode.parentNode !== NodeUtils.getBlockScopeOfNode(node)) {
                         return;
                     }
 

+ 4 - 4
src/stack-trace-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor.ts

@@ -4,8 +4,8 @@ import * as ESTree from 'estree';
 import { ICalleeData } from '../../interfaces/stack-trace-analyzer/ICalleeData';
 import { ICalleeDataExtractor } from '../../interfaces/stack-trace-analyzer/ICalleeDataExtractor';
 
-import { Nodes } from '../../Nodes';
-import { NodeUtils } from '../../NodeUtils';
+import { Node } from '../../node/Node';
+import { NodeUtils } from '../../node/NodeUtils';
 
 export class FunctionDeclarationCalleeDataExtractor implements ICalleeDataExtractor {
     /**
@@ -33,7 +33,7 @@ export class FunctionDeclarationCalleeDataExtractor implements ICalleeDataExtrac
     public extract (): ICalleeData|null {
         let calleeBlockStatement: ESTree.BlockStatement|null = null;
 
-        if (Nodes.isIdentifierNode(this.callee)) {
+        if (Node.isIdentifierNode(this.callee)) {
             calleeBlockStatement = this.getCalleeBlockStatement(
                 NodeUtils.getBlockScopeOfNode(this.blockScopeBody[0]),
                 this.callee.name
@@ -60,7 +60,7 @@ export class FunctionDeclarationCalleeDataExtractor implements ICalleeDataExtrac
 
         estraverse.traverse(node, {
             enter: (node: ESTree.Node): any => {
-                if (Nodes.isFunctionDeclarationNode(node) && node.id.name === name) {
+                if (Node.isFunctionDeclarationNode(node) && node.id.name === name) {
                     calleeBlockStatement = node.body;
 
                     return estraverse.VisitorOption.Break;

+ 7 - 7
src/stack-trace-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor.ts

@@ -4,8 +4,8 @@ import * as ESTree from 'estree';
 import { ICalleeData } from '../../interfaces/stack-trace-analyzer/ICalleeData';
 import { ICalleeDataExtractor } from '../../interfaces/stack-trace-analyzer/ICalleeDataExtractor';
 
-import { Nodes } from '../../Nodes';
-import { NodeUtils } from '../../NodeUtils';
+import { Node } from '../../node/Node';
+import { NodeUtils } from '../../node/NodeUtils';
 
 export class FunctionExpressionCalleeDataExtractor implements ICalleeDataExtractor {
     /**
@@ -33,14 +33,14 @@ export class FunctionExpressionCalleeDataExtractor implements ICalleeDataExtract
     public extract (): ICalleeData|null {
         let calleeBlockStatement: ESTree.BlockStatement|null = null;
 
-        if (Nodes.isIdentifierNode(this.callee)) {
+        if (Node.isIdentifierNode(this.callee)) {
             calleeBlockStatement = this.getCalleeBlockStatement(
                 NodeUtils.getBlockScopeOfNode(this.blockScopeBody[0]),
                 this.callee.name
             );
         }
 
-        if (Nodes.isFunctionExpressionNode(this.callee)) {
+        if (Node.isFunctionExpressionNode(this.callee)) {
             calleeBlockStatement = this.callee.body;
         }
 
@@ -65,9 +65,9 @@ export class FunctionExpressionCalleeDataExtractor implements ICalleeDataExtract
         estraverse.traverse(node, {
             enter: (node: ESTree.Node, parentNode: ESTree.Node): any => {
                 if (
-                    Nodes.isFunctionExpressionNode(node) &&
-                    Nodes.isVariableDeclaratorNode(parentNode) &&
-                    Nodes.isIdentifierNode(parentNode.id) &&
+                    Node.isFunctionExpressionNode(node) &&
+                    Node.isVariableDeclaratorNode(parentNode) &&
+                    Node.isIdentifierNode(parentNode.id) &&
                     parentNode.id.name === name
                 ) {
                     calleeBlockStatement = node.body;

+ 14 - 14
src/stack-trace-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor.ts

@@ -6,8 +6,8 @@ import { TObjectMembersCallsChain } from '../../types/TObjectMembersCallsChain';
 import { ICalleeData } from '../../interfaces/stack-trace-analyzer/ICalleeData';
 import { ICalleeDataExtractor } from '../../interfaces/stack-trace-analyzer/ICalleeDataExtractor';
 
-import { Nodes } from '../../Nodes';
-import { NodeUtils } from '../../NodeUtils';
+import { Node } from '../../node/Node';
+import { NodeUtils } from '../../node/NodeUtils';
 
 export class ObjectExpressionCalleeDataExtractor implements ICalleeDataExtractor {
     /**
@@ -36,7 +36,7 @@ export class ObjectExpressionCalleeDataExtractor implements ICalleeDataExtractor
         let calleeBlockStatement: ESTree.BlockStatement|null = null,
             functionExpressionName: string|number|null = null;
 
-        if (Nodes.isMemberExpressionNode(this.callee)) {
+        if (Node.isMemberExpressionNode(this.callee)) {
             const objectMembersCallsChain: TObjectMembersCallsChain = this.createObjectMembersCallsChain(
                 [],
                 this.callee
@@ -77,10 +77,10 @@ export class ObjectExpressionCalleeDataExtractor implements ICalleeDataExtractor
         memberExpression: ESTree.MemberExpression
     ): TObjectMembersCallsChain {
         // first step: processing memberExpression `property` property
-        if (Nodes.isIdentifierNode(memberExpression.property) && memberExpression.computed === false) {
+        if (Node.isIdentifierNode(memberExpression.property) && memberExpression.computed === false) {
             currentChain.unshift(memberExpression.property.name);
         } else if (
-            Nodes.isLiteralNode(memberExpression.property) &&
+            Node.isLiteralNode(memberExpression.property) &&
             (
                 typeof memberExpression.property.value === 'string' ||
                 typeof memberExpression.property.value === 'number'
@@ -92,9 +92,9 @@ export class ObjectExpressionCalleeDataExtractor implements ICalleeDataExtractor
         }
 
         // second step: processing memberExpression `object` property
-        if (Nodes.isMemberExpressionNode(memberExpression.object)) {
+        if (Node.isMemberExpressionNode(memberExpression.object)) {
             return this.createObjectMembersCallsChain(currentChain, memberExpression.object);
-        } else if (Nodes.isIdentifierNode(memberExpression.object)) {
+        } else if (Node.isIdentifierNode(memberExpression.object)) {
             currentChain.unshift(memberExpression.object.name);
         }
 
@@ -121,10 +121,10 @@ export class ObjectExpressionCalleeDataExtractor implements ICalleeDataExtractor
         estraverse.traverse(node, {
             enter: (node: ESTree.Node, parentNode: ESTree.Node): any => {
                 if (
-                    Nodes.isVariableDeclaratorNode(node) &&
-                    Nodes.isIdentifierNode(node.id) &&
+                    Node.isVariableDeclaratorNode(node) &&
+                    Node.isIdentifierNode(node.id) &&
                     node.init &&
-                    Nodes.isObjectExpressionNode(node.init) &&
+                    Node.isObjectExpressionNode(node.init) &&
                     node.id.name === objectName
                 ) {
                     calleeBlockStatement = this.findCalleeBlockStatement(node.init.properties, objectMembersCallsChain);
@@ -154,9 +154,9 @@ export class ObjectExpressionCalleeDataExtractor implements ICalleeDataExtractor
 
         for (const propertyNode of objectExpressionProperties) {
             const isTargetPropertyNodeWithIdentifierKey: boolean =
-                Nodes.isIdentifierNode(propertyNode.key) && propertyNode.key.name === nextItemInCallsChain;
+                Node.isIdentifierNode(propertyNode.key) && propertyNode.key.name === nextItemInCallsChain;
             const isTargetPropertyNodeWithLiteralKey: boolean =
-                Nodes.isLiteralNode(propertyNode.key) &&
+                Node.isLiteralNode(propertyNode.key) &&
                 Boolean(propertyNode.key.value) &&
                 propertyNode.key.value === nextItemInCallsChain;
 
@@ -164,11 +164,11 @@ export class ObjectExpressionCalleeDataExtractor implements ICalleeDataExtractor
                 continue;
             }
 
-            if (Nodes.isObjectExpressionNode(propertyNode.value)) {
+            if (Node.isObjectExpressionNode(propertyNode.value)) {
                 return this.findCalleeBlockStatement(propertyNode.value.properties, objectMembersCallsChain);
             }
 
-            if (Nodes.isFunctionExpressionNode(propertyNode.value)) {
+            if (Node.isFunctionExpressionNode(propertyNode.value)) {
                 return propertyNode.value.body;
             }
         }

+ 20 - 20
test/fixtures/compile-performance.js

@@ -28644,7 +28644,7 @@
          *       <some-element *ngSwitchCase="match_expression_2">...</some-element>
          *       <some-other-element *ngSwitchCase="match_expression_3">...</some-other-element>
          *       <ng-container *ngSwitchCase="match_expression_3">
-         *         <!-- use a ng-container to group multiple root nodes -->
+         *         <!-- use a ng-container to group multiple root node -->
          *         <inner-element></inner-element>
          *         <inner-other-element></inner-other-element>
          *       </ng-container>
@@ -30197,7 +30197,7 @@
                 return new ExtractionResult(this._messages, this._errors);
             };
             /**
-             * Returns a tree where all translatable nodes are translated
+             * Returns a tree where all translatable node are translated
              */
             _Visitor.prototype.merge = function (nodes, translations, interpolationConfig) {
                 this._init(_VisitorMode.Merge, interpolationConfig);
@@ -30286,7 +30286,7 @@
                 var wasInI18nNode = this._inI18nNode;
                 var wasInImplicitNode = this._inImplicitNode;
                 var childNodes;
-                // Extract only top level nodes with the (implicit) "i18n" attribute if not in a block or an ICU
+                // Extract only top level node with the (implicit) "i18n" attribute if not in a block or an ICU
                 // message
                 var i18nAttr = _getI18nAttr(el);
                 var isImplicit = this._implicitTags.some(function (tag) { return el.name === tag; }) &&
@@ -30333,7 +30333,7 @@
                         this._reportError(el, 'Could not mark an element as translatable inside a translatable section');
                     }
                     if (this._mode == _VisitorMode.Extract) {
-                        // Descend into child nodes for extraction
+                        // Descend into child node for extraction
                         __WEBPACK_IMPORTED_MODULE_0__ml_parser_ast__["g" /* visitAll */](this, el.children);
                     }
                     if (this._mode == _VisitorMode.Merge) {
@@ -30354,7 +30354,7 @@
                 this._inI18nNode = wasInI18nNode;
                 this._inImplicitNode = wasInImplicitNode;
                 if (this._mode === _VisitorMode.Merge) {
-                    // There are no childNodes in translatable sections - those nodes will be replace anyway
+                    // There are no childNodes in translatable sections - those node will be replace anyway
                     var translatedAttrs = this._translateAttributes(el);
                     return new __WEBPACK_IMPORTED_MODULE_0__ml_parser_ast__["e" /* Element */](el.name, translatedAttrs, childNodes, el.sourceSpan, el.startSourceSpan, el.endSourceSpan);
                 }
@@ -30483,7 +30483,7 @@
                 /**
                  * A translatable section could be:
                  * - a translatable element,
-                 * - nodes between `<!-- i18n -->` and `<!-- /i18n -->` comments
+                 * - node between `<!-- i18n -->` and `<!-- /i18n -->` comments
                  */
                 get: function () {
                     return this._msgCountAtSectionStart !== void 0;
@@ -30893,7 +30893,7 @@
             };
             Xliff.prototype.load = function (content, url, messageBundle) {
                 var _this = this;
-                // Parse the xtb file into xml nodes
+                // Parse the xtb file into xml node
                 var result = new __WEBPACK_IMPORTED_MODULE_2__ml_parser_xml_parser__["a" /* XmlParser */]().parse(content, url);
                 if (result.errors.length) {
                     throw new Error("xtb parse errors:\n" + result.errors.join('\n'));
@@ -31301,7 +31301,7 @@
             Xtb.prototype.write = function (messageMap) { throw new Error('Unsupported'); };
             Xtb.prototype.load = function (content, url, messageBundle) {
                 var _this = this;
-                // Parse the xtb file into xml nodes
+                // Parse the xtb file into xml node
                 var result = new __WEBPACK_IMPORTED_MODULE_1__ml_parser_xml_parser__["a" /* XmlParser */]().parse(content, url);
                 if (result.errors.length) {
                     throw new Error("xtb parse errors:\n" + result.errors.join('\n'));
@@ -33874,7 +33874,7 @@
                 this.declarationElement = declarationElement;
                 this.templateVariableBindings = templateVariableBindings;
                 this.nodes = [];
-                // root nodes or AppElements for ViewContainers
+                // root node or AppElements for ViewContainers
                 this.rootNodesOrAppElements = [];
                 this.bindings = [];
                 this.classStatements = [];
@@ -34337,7 +34337,7 @@
                 // Recursively convert the node now without the guarded member access.
                 var access = this.visit(ast, _Mode.Expression);
                 // Remove the mapping. This is not strictly required as the converter only traverses each node
-                // once but is safer if the conversion is changed to traverse the nodes more than once.
+                // once but is safer if the conversion is changed to traverse the node more than once.
                 this._nodeMap.delete(leftMostSafe);
                 // If we allcoated a temporary, release it.
                 if (temporary) {
@@ -34583,7 +34583,7 @@
                 return renderNode;
             };
             ViewBuilderVisitor.prototype.visitNgContent = function (ast, parent) {
-                // the projected nodes originate from a different view, so we don't
+                // the projected node originate from a different view, so we don't
                 // have debug information for them...
                 this.view.createMethod.resetDebugInfo(null, ast);
                 var parentRenderNode = this._getParentRenderNode(parent);
@@ -34599,7 +34599,7 @@
                 }
                 else if (this._isRootNode(parent)) {
                     if (this.view.viewType !== __WEBPACK_IMPORTED_MODULE_7__private_import_core__["j" /* ViewType */].COMPONENT) {
-                        // store root nodes only for embedded/host views
+                        // store root node only for embedded/host views
                         this.view.rootNodesOrAppElements.push(nodesExpression);
                     }
                 }
@@ -34718,7 +34718,7 @@
             return ViewBuilderVisitor;
         }());
         /**
-         * Walks up the nodes while the direct parent is a container.
+         * Walks up the node while the direct parent is a container.
          *
          * Returns the outer container or the node itself when it is not a direct child of a container.
          *
@@ -34732,7 +34732,7 @@
             return node;
         }
         /**
-         * Walks up the nodes while they are container and returns the first parent which is not.
+         * Walks up the node while they are container and returns the first parent which is not.
          *
          * Returns the parent of the outer container or the node itself when it is not a container.
          *
@@ -36547,7 +36547,7 @@
                 });
             }
         }
-// Need to keep the nodes in a global Map so that multiple angular apps are supported.
+// Need to keep the node in a global Map so that multiple angular apps are supported.
         var _nativeNodeToDebugNode = new Map();
         /**
          * @experimental
@@ -49968,7 +49968,7 @@
 
         var _expParser = new __WEBPACK_IMPORTED_MODULE_1__expression_parser_parser__["a" /* Parser */](new __WEBPACK_IMPORTED_MODULE_0__expression_parser_lexer__["c" /* Lexer */]());
         /**
-         * Returns a function converting html nodes to an i18n Message given an interpolationConfig
+         * Returns a function converting html node to an i18n Message given an interpolationConfig
          */
         function createI18nMessageFactory(interpolationConfig) {
             var visitor = new _I18nVisitor(_expParser, interpolationConfig);
@@ -50566,7 +50566,7 @@
             /**
              * @param _file The html source
              * @param _getTagDefinition
-             * @param _tokenizeIcu Whether to tokenize ICU messages (considered as text nodes when false)
+             * @param _tokenizeIcu Whether to tokenize ICU messages (considered as text node when false)
              * @param _interpolationConfig
              */
             function _Tokenizer(_file, _getTagDefinition, _tokenizeIcu, _interpolationConfig) {
@@ -55685,7 +55685,7 @@
                 this.disposables = disposables;
                 this.subscriptions = subscriptions;
                 if (this.type === __WEBPACK_IMPORTED_MODULE_13__view_type__["a" /* ViewType */].COMPONENT) {
-                    // Note: the render nodes have been attached to their host element
+                    // Note: the render node have been attached to their host element
                     // in the ViewFactory already.
                     this.declarationAppElement.parentView.viewChildren.push(this);
                     this.dirtyParentQueriesInternal();
@@ -55967,7 +55967,7 @@
                 var appEl = node;
                 lastNode = appEl.nativeElement;
                 if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__facade_lang__["e" /* isPresent */])(appEl.nestedViews)) {
-                    // Note: Views might have no root nodes at all!
+                    // Note: Views might have no root node at all!
                     for (var i = appEl.nestedViews.length - 1; i >= 0; i--) {
                         var nestedView = appEl.nestedViews[i];
                         if (nestedView.rootNodesOrAppElements.length > 0) {
@@ -58103,7 +58103,7 @@
                         this.chars(DOM.nodeValue(current));
                     }
                     else {
-                        // Strip non-element, non-text nodes.
+                        // Strip non-element, non-text node.
                         this.sanitizedSomething = true;
                     }
                     if (DOM.firstChild(current)) {

+ 16 - 16
test/functional-tests/stack-trace-analyzer/StackTraceAnalyzer.spec.ts

@@ -8,9 +8,9 @@ import { IStackTraceData } from '../../../src/interfaces/stack-trace-analyzer/IS
 
 import { readFileAsString } from '../../helpers/readFileAsString';
 
-import { Nodes } from '../../../src/Nodes';
+import { Node } from '../../../src/node/Node';
 import { NodeMocks } from '../../mocks/NodeMocks';
-import { NodeUtils } from '../../../src/NodeUtils';
+import { NodeUtils } from '../../../src/node/NodeUtils';
 import { StackTraceAnalyzer } from '../../../src/stack-trace-analyzer/StackTraceAnalyzer';
 
 const assert: any = chai.assert;
@@ -26,8 +26,8 @@ function getFunctionDeclarationByName (astTree: ESTree.Node, name: string): ESTr
     estraverse.traverse(astTree, {
         enter: (node: ESTree.Node): any => {
             if (
-                Nodes.isFunctionDeclarationNode(node) &&
-                Nodes.isIdentifierNode(node.id) &&
+                Node.isFunctionDeclarationNode(node) &&
+                Node.isIdentifierNode(node.id) &&
                 node.id.name === name
             ) {
                 functionDeclarationNode = node;
@@ -51,10 +51,10 @@ function getFunctionExpressionByName (astTree: ESTree.Node, name: string): ESTre
     estraverse.traverse(astTree, {
         enter: (node: ESTree.Node): any => {
             if (
-                Nodes.isVariableDeclaratorNode(node) &&
+                Node.isVariableDeclaratorNode(node) &&
                 node.init &&
-                Nodes.isFunctionExpressionNode(node.init) &&
-                Nodes.isIdentifierNode(node.id) &&
+                Node.isFunctionExpressionNode(node.init) &&
+                Node.isIdentifierNode(node.id) &&
                 node.id.name === name
             ) {
                 functionExpressionNode = node.init;
@@ -78,9 +78,9 @@ function getFunctionExpressionById (astTree: ESTree.Node, id: string): ESTree.Fu
     estraverse.traverse(astTree, {
         enter: (node: ESTree.Node): any => {
             if (
-                Nodes.isFunctionExpressionNode(node) &&
+                Node.isFunctionExpressionNode(node) &&
                 node.id &&
-                Nodes.isIdentifierNode(node.id) &&
+                Node.isIdentifierNode(node.id) &&
                 node.id.name === id
             ) {
                 functionExpressionNode = node;
@@ -106,10 +106,10 @@ function getObjectFunctionExpressionByName (astTree: ESTree.Node, objectName: st
     estraverse.traverse(astTree, {
         enter: (node: ESTree.Node): any => {
             if (
-                Nodes.isVariableDeclaratorNode(node) &&
-                Nodes.isIdentifierNode(node.id) &&
+                Node.isVariableDeclaratorNode(node) &&
+                Node.isIdentifierNode(node.id) &&
                 node.init &&
-                Nodes.isObjectExpressionNode(node.init) &&
+                Node.isObjectExpressionNode(node.init) &&
                 node.id.name === objectName
             ) {
                 targetObjectExpressionNode = node.init;
@@ -126,11 +126,11 @@ function getObjectFunctionExpressionByName (astTree: ESTree.Node, objectName: st
     estraverse.traverse(targetObjectExpressionNode, {
         enter: (node: ESTree.Node): any => {
             if (
-                Nodes.isPropertyNode(node) &&
-                Nodes.isFunctionExpressionNode(node.value) &&
+                Node.isPropertyNode(node) &&
+                Node.isFunctionExpressionNode(node.value) &&
                 (
-                    (Nodes.isIdentifierNode(node.key) && node.key.name === name) ||
-                    (Nodes.isLiteralNode(node.key) && node.key.value === name)
+                    (Node.isIdentifierNode(node.key) && node.key.name === name) ||
+                    (Node.isLiteralNode(node.key) && node.key.value === name)
                 )
             ) {
                 functionExpressionNode = node.value;

+ 2 - 2
test/index.spec.ts

@@ -7,8 +7,8 @@ BabelPolyfill.append();
 /**
  * Unit tests
  */
-import './unit-tests/NodeAppender.spec';
-import './unit-tests/NodeUtils.spec';
+import './unit-tests/node/NodeAppender.spec';
+import './unit-tests/node/NodeUtils.spec';
 import './unit-tests/ObfuscationResult.spec';
 import './unit-tests/OptionsNormalizer.spec';
 import './unit-tests/SourceMapCorrector.spec';

+ 7 - 7
test/unit-tests/NodeAppender.spec.ts → test/unit-tests/node/NodeAppender.spec.ts

@@ -1,16 +1,16 @@
 import * as chai from 'chai';
 import * as ESTree from 'estree';
 
-import { TStatement } from '../../src/types/TStatement';
+import { TStatement } from '../../../src/types/TStatement';
 
-import { IStackTraceData } from '../../src/interfaces/stack-trace-analyzer/IStackTraceData';
+import { IStackTraceData } from '../../../src/interfaces/stack-trace-analyzer/IStackTraceData';
 
-import { readFileAsString } from '../helpers/readFileAsString';
+import { readFileAsString } from '../../helpers/readFileAsString';
 
-import { NodeAppender } from '../../src/NodeAppender';
-import { NodeMocks } from '../mocks/NodeMocks';
-import { NodeUtils } from '../../src/NodeUtils';
-import { StackTraceAnalyzer } from '../../src/stack-trace-analyzer/StackTraceAnalyzer';
+import { NodeAppender } from '../../../src/node/NodeAppender';
+import { NodeMocks } from '../../mocks/NodeMocks';
+import { NodeUtils } from '../../../src/node/NodeUtils';
+import { StackTraceAnalyzer } from '../../../src/stack-trace-analyzer/StackTraceAnalyzer';
 
 const assert: any = chai.assert;
 

+ 2 - 2
test/unit-tests/NodeUtils.spec.ts → test/unit-tests/node/NodeUtils.spec.ts

@@ -1,8 +1,8 @@
 import * as chai from 'chai';
 import * as ESTree from 'estree';
 
-import { NodeMocks } from '../mocks/NodeMocks';
-import { NodeUtils } from '../../src/NodeUtils';
+import { NodeMocks } from '../../mocks/NodeMocks';
+import { NodeUtils } from '../../../src/node/NodeUtils';
 
 const assert: any = chai.assert;