Kaynağa Gözat

0.9.0 preparation: updated README.md, CHANGELOG.md and dependencies

sanex3339 8 yıl önce
ebeveyn
işleme
cf7b51992b
4 değiştirilmiş dosya ile 183 ekleme ve 166 silme
  1. 10 0
      CHANGELOG.md
  2. 66 51
      README.md
  3. 103 111
      dist/index.js
  4. 4 4
      package.json

+ 10 - 0
CHANGELOG.md

@@ -1,5 +1,15 @@
 Change Log
 ===
+v0.9.0
+* **Breaking change:** dropped `[email protected]` and `[email protected]` support.
+* **New option:** `controlFlowFlattening` allows to enable/disable **Control Flow flattening**. Control flow flattening is a structure transformation of the source code that hinders program comprehension.
+* **New option:** `controlFlowFlatteningThreshold` allows to set percentage of nodes that will affected by `controlFlowFlattening`.
+* Significantly increased obfuscation performance.
+* Huge internal refactoring.
+* Better `es2015` support: correct obfuscation of `TemplateLiteral`, `ArrayPattern`, `AssignmentPattern` nodes.
+* Switched from `npm` to `yarn` internally.
+* Various bug fixes.
+
 v0.9.0-beta.5
 ---
 * Increased performance

+ 66 - 51
README.md

@@ -71,39 +71,59 @@ var obfuscationResult = JavaScriptObfuscator.obfuscate(
 
 console.log(obfuscationResult.getObfuscatedCode());
 /*
-var _0x20c3 = [
+var _0x6b22 = [
+    '\x67\x63\x73',
+    '\x32\x7c\x34\x7c\x30\x7c\x35\x7c\x31\x7c\x33',
+    '\x73\x70\x6c\x69\x74',
     '\x6c\x6f\x67',
-    '\x78\x4c\x77',
-    '\x51\x72\x6b'
+    '\x68\x49\x4d'
 ];
-(function (_0x3cd8ee, _0x363b84) {
-    var _0x52ec75 = function (_0xda70d7) {
-        while (--_0xda70d7) {
-            _0x3cd8ee['\x70\x75\x73\x68'](_0x3cd8ee['\x73\x68\x69\x66\x74']());
+(function (_0xe12ddf, _0x9bc9d1) {
+    var _0x3a950b = function (_0x78e498) {
+        while (--_0x78e498) {
+            _0xe12ddf['\x70\x75\x73\x68'](_0xe12ddf['\x73\x68\x69\x66\x74']());
         }
     };
-    _0x52ec75(++_0x363b84);
-}(_0x20c3, 0x11e));
-var _0xc320 = function (_0x578269, _0x5685a1) {
-    var _0x578269 = parseInt(_0x578269, 0x10);
-    var _0xef46f2 = _0x20c3[_0x578269];
-    return _0xef46f2;
+    _0x3a950b(++_0x9bc9d1);
+}(_0x6b22, 0x1cd));
+var _0x26b2 = function (_0x348b1e, _0x346c2a) {
+    _0x348b1e = _0x348b1e - 0x0;
+    var _0x45ae32 = _0x6b22[_0x348b1e];
+    return _0x45ae32;
 };
 (function () {
-    var _0x2559cb = {
-        '\x78\x4c\x77': function _0x1(_0x1936fd, _0x5ed38f) {
-            return _0x1936fd + _0x5ed38f;
+    var _0x3a3615 = {
+        '\x68\x49\x4d': function _0x4c002e(_0x5a880a, _0xe710e3) {
+            return _0x5a880a - _0xe710e3;
         },
-        '\x51\x72\x6b': function _0x3(_0x4414d6, _0x1db310) {
-            return _0x4414d6 + _0x1db310;
+        '\x67\x63\x73': function _0x4cbf4b(_0xe1f02d, _0x5d1157) {
+            return _0xe1f02d + _0x5d1157;
         }
     };
-    var _0x32d9b = '\x35' - 0x3;
-    var _0x2b7aac = _0x2559cb[_0xc320('0x0')]('\x35', 0x3);
-    var _0x3c7304 = _0x2559cb['\x51\x72\x6b']('\x35', -'\x32');
-    console['\x6c\x6f\x67'](_0x32d9b);
-    console[_0xc320('0x2')](_0x2b7aac);
-    console[_0xc320('0x2')](_0x3c7304);
+    var _0x26dbf0 = _0x26b2('0x0')[_0x26b2('0x1')]('\x7c'), _0x345ed7 = 0x0;
+    while (!![]) {
+        switch (_0x26dbf0[_0x345ed7++]) {
+        case '\x30':
+            var _0x5eb388 = '\x35' + -'\x32';
+            continue;
+        case '\x31':
+            console[_0x26b2('0x2')](_0x52a502);
+            continue;
+        case '\x32':
+            var _0xd18cf9 = _0x3a3615[_0x26b2('0x3')]('\x35', 0x3);
+            continue;
+        case '\x33':
+            console[_0x26b2('0x2')](_0x5eb388);
+            continue;
+        case '\x34':
+            var _0x52a502 = _0x3a3615[_0x26b2('0x4')]('\x35', 0x3);
+            continue;
+        case '\x35':
+            console[_0x26b2('0x2')](_0xd18cf9);
+            continue;
+        }
+        break;
+    }
 }());
 */
 ```
@@ -231,41 +251,36 @@ Example:
 
 // output
 (function () {
-    var _0x4cd5dd = {
-        '\x42\x4e\x62': function _0x14cffe(_0x38a20c, _0x42b1f2) {
-            return _0x38a20c + _0x42b1f2;
-        }
-    };
-    function _0xd58698() {
-        var _0x36cac7 = {
-            '\x6a\x52\x79': function _0x2d3ac9(_0x2e037c, _0x457f42) {
-                return _0x4cd5dd['BNb'](_0x2e037c, _0x457f42);
-            }
-        };
+    function _0x425898() {
         return function () {
-            var _0x42a17d = '5\x7c3\x7c2\x7c6\x7c4\x7c1\x7c0'['split']('\x7c'), _0x1fcdcf = 0x0;
+            var _0x2b972d = {
+                '\x42\x6c\x67': function _0x160d18(_0xdc9f31, _0x3741dd) {
+                    return _0xdc9f31 + _0x3741dd;
+                }
+            };
+            var _0x170490 = '\x35\x7c\x34\x7c\x33\x7c\x32\x7c\x30\x7c\x36\x7c\x31'['\x73\x70\x6c\x69\x74']('\x7c'), _0x4f3437 = 0x0;
             while (!![]) {
-                switch (_0x42a17d[_0x1fcdcf++]) {
-                case '0':
-                    console['log'](0x6);
+                switch (_0x170490[_0x4f3437++]) {
+                case '\x30':
+                    console['\x6c\x6f\x67'](0x4);
                     continue;
-                case '1':
-                    console['log'](0x5);
+                case '\x31':
+                    console['\x6c\x6f\x67'](0x6);
                     continue;
-                case '2':
-                    console['log'](0x2);
+                case '\x32':
+                    console['\x6c\x6f\x67'](0x3);
                     continue;
-                case '3':
-                    console['log'](0x1);
+                case '\x33':
+                    console['\x6c\x6f\x67'](0x2);
                     continue;
-                case '4':
-                    console['log'](0x4);
+                case '\x34':
+                    console['\x6c\x6f\x67'](0x1);
                     continue;
-                case '5':
-                    var _0x15a932 = _0x36cac7['jRy'](0x1, 0x2);
+                case '\x35':
+                    var _0x476f51 = _0x2b972d['\x42\x6c\x67'](0x1, 0x2);
                     continue;
-                case '6':
-                    console['log'](0x3);
+                case '\x36':
+                    console['\x6c\x6f\x67'](0x5);
                     continue;
                 }
                 break;

+ 103 - 111
dist/index.js

@@ -90,7 +90,7 @@ module.exports =
 /******/ 	__webpack_require__.p = "";
 /******/
 /******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = 146);
+/******/ 	return __webpack_require__(__webpack_require__.s = 145);
 /******/ })
 /************************************************************************/
 /******/ ([
@@ -351,7 +351,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 chance_1 = __webpack_require__(138);
+var chance_1 = __webpack_require__(137);
 var Utils_1 = __webpack_require__(13);
 
 var RandomGeneratorUtils = function () {
@@ -862,12 +862,6 @@ exports.Utils = Utils;
 
 /***/ }),
 /* 14 */
-/***/ (function(module, exports) {
-
-module.exports = require("babel-runtime/core-js/map");
-
-/***/ }),
-/* 15 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -895,7 +889,7 @@ var CustomNodes;
 })(CustomNodes = exports.CustomNodes || (exports.CustomNodes = {}));
 
 /***/ }),
-/* 16 */
+/* 15 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -916,6 +910,12 @@ var AbstractNodeTransformer = function AbstractNodeTransformer(options) {
 AbstractNodeTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], AbstractNodeTransformer);
 exports.AbstractNodeTransformer = AbstractNodeTransformer;
 
+/***/ }),
+/* 16 */
+/***/ (function(module, exports) {
+
+module.exports = require("babel-runtime/core-js/map");
+
 /***/ }),
 /* 17 */
 /***/ (function(module, exports) {
@@ -1321,24 +1321,32 @@ exports.ObfuscationEvents = {
 };
 
 /***/ }),
-/* 22 */,
-/* 23 */
+/* 22 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
-var _classCallCheck2 = __webpack_require__(3);
+var ObfuscationReplacers;
+(function (ObfuscationReplacers) {
+    ObfuscationReplacers[ObfuscationReplacers["BooleanReplacer"] = 0] = "BooleanReplacer";
+    ObfuscationReplacers[ObfuscationReplacers["IdentifierReplacer"] = 1] = "IdentifierReplacer";
+    ObfuscationReplacers[ObfuscationReplacers["NumberLiteralReplacer"] = 2] = "NumberLiteralReplacer";
+    ObfuscationReplacers[ObfuscationReplacers["StringLiteralReplacer"] = 3] = "StringLiteralReplacer";
+})(ObfuscationReplacers = exports.ObfuscationReplacers || (exports.ObfuscationReplacers = {}));
 
-var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
+/***/ }),
+/* 23 */
+/***/ (function(module, exports, __webpack_require__) {
 
-var _createClass2 = __webpack_require__(4);
+"use strict";
 
-var _createClass3 = _interopRequireDefault(_createClass2);
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
-__webpack_require__(144);
+__webpack_require__(143);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var InversifyContainerFacade_1 = __webpack_require__(56);
 var JavaScriptObfuscatorCLI_1 = __webpack_require__(55);
@@ -1346,10 +1354,10 @@ var RandomGeneratorUtils_1 = __webpack_require__(9);
 
 var JavaScriptObfuscator = function () {
     function JavaScriptObfuscator() {
-        (0, _classCallCheck3.default)(this, JavaScriptObfuscator);
+        _classCallCheck(this, JavaScriptObfuscator);
     }
 
-    (0, _createClass3.default)(JavaScriptObfuscator, null, [{
+    _createClass(JavaScriptObfuscator, null, [{
         key: "obfuscate",
         value: function obfuscate(sourceCode) {
             var inputOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -1368,6 +1376,7 @@ var JavaScriptObfuscator = function () {
             new JavaScriptObfuscatorCLI_1.JavaScriptObfuscatorCLI(argv).run();
         }
     }]);
+
     return JavaScriptObfuscator;
 }();
 
@@ -1841,6 +1850,20 @@ var CalleeDataExtractors;
 "use strict";
 
 
+var ControlFlowReplacers;
+(function (ControlFlowReplacers) {
+    ControlFlowReplacers[ControlFlowReplacers["BinaryExpressionControlFlowReplacer"] = 0] = "BinaryExpressionControlFlowReplacer";
+    ControlFlowReplacers[ControlFlowReplacers["CallExpressionControlFlowReplacer"] = 1] = "CallExpressionControlFlowReplacer";
+    ControlFlowReplacers[ControlFlowReplacers["LogicalExpressionControlFlowReplacer"] = 2] = "LogicalExpressionControlFlowReplacer";
+})(ControlFlowReplacers = exports.ControlFlowReplacers || (exports.ControlFlowReplacers = {}));
+
+/***/ }),
+/* 39 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
 var CustomNodeGroups;
 (function (CustomNodeGroups) {
     CustomNodeGroups[CustomNodeGroups["ConsoleOutputCustomNodeGroup"] = 0] = "ConsoleOutputCustomNodeGroup";
@@ -1851,7 +1874,6 @@ var CustomNodeGroups;
 })(CustomNodeGroups = exports.CustomNodeGroups || (exports.CustomNodeGroups = {}));
 
 /***/ }),
-/* 39 */,
 /* 40 */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -1946,7 +1968,7 @@ var AbstractControlFlowReplacer_1;
 "use strict";
 
 
-var _map = __webpack_require__(14);
+var _map = __webpack_require__(16);
 
 var _map2 = _interopRequireDefault(_map);
 
@@ -1976,7 +1998,7 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var AbstractControlFlowReplacer_1 = __webpack_require__(41);
-var CustomNodes_1 = __webpack_require__(15);
+var CustomNodes_1 = __webpack_require__(14);
 var Node_1 = __webpack_require__(11);
 var ExpressionWithOperatorControlFlowReplacer = function (_AbstractControlFlowR) {
     (0, _inherits3.default)(ExpressionWithOperatorControlFlowReplacer, _AbstractControlFlowR);
@@ -2054,7 +2076,7 @@ var _toConsumableArray2 = __webpack_require__(35);
 
 var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
 
-var _map = __webpack_require__(14);
+var _map = __webpack_require__(16);
 
 var _map2 = _interopRequireDefault(_map);
 
@@ -2514,8 +2536,8 @@ 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 fs = __webpack_require__(142);
-var mkdirp = __webpack_require__(143);
+var fs = __webpack_require__(141);
+var mkdirp = __webpack_require__(142);
 var path = __webpack_require__(49);
 
 var CLIUtils = function () {
@@ -2616,7 +2638,7 @@ var _createClass3 = _interopRequireDefault(_createClass2);
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 var tslib_1 = __webpack_require__(1);
-var commander = __webpack_require__(140);
+var commander = __webpack_require__(139);
 var path = __webpack_require__(49);
 var SourceMapMode_1 = __webpack_require__(27);
 var StringArrayEncoding_1 = __webpack_require__(31);
@@ -2834,7 +2856,7 @@ exports.InversifyContainerFacade = InversifyContainerFacade;
 "use strict";
 
 
-var _map = __webpack_require__(14);
+var _map = __webpack_require__(16);
 
 var _map2 = _interopRequireDefault(_map);
 
@@ -2842,8 +2864,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
-var CustomNodes_1 = __webpack_require__(15);
-var CustomNodeGroups_1 = __webpack_require__(38);
+var CustomNodes_1 = __webpack_require__(14);
+var CustomNodeGroups_1 = __webpack_require__(39);
 var ConsoleOutputCustomNodeGroup_1 = __webpack_require__(64);
 var DebugProtectionCustomNodeGroup_1 = __webpack_require__(75);
 var DomainLockCustomNodeGroup_1 = __webpack_require__(77);
@@ -2920,7 +2942,7 @@ exports.customNodesModule = new inversify_1.ContainerModule(function (bind) {
 
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
-var ControlFlowReplacers_1 = __webpack_require__(148);
+var ControlFlowReplacers_1 = __webpack_require__(38);
 var BinaryExpressionControlFlowReplacer_1 = __webpack_require__(89);
 var CallExpressionControlFlowReplacer_1 = __webpack_require__(90);
 var LogicalExpressionControlFlowReplacer_1 = __webpack_require__(91);
@@ -2948,7 +2970,7 @@ exports.controlFlowTransformersModule = new inversify_1.ContainerModule(function
 "use strict";
 
 
-var _map = __webpack_require__(14);
+var _map = __webpack_require__(16);
 
 var _map2 = _interopRequireDefault(_map);
 
@@ -3004,7 +3026,7 @@ exports.nodeTransformersModule = new inversify_1.ContainerModule(function (bind)
 
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
-var ObfuscationReplacers_1 = __webpack_require__(147);
+var ObfuscationReplacers_1 = __webpack_require__(22);
 var BooleanLiteralReplacer_1 = __webpack_require__(102);
 var IdentifierReplacer_1 = __webpack_require__(103);
 var NumberLiteralReplacer_1 = __webpack_require__(104);
@@ -3034,7 +3056,7 @@ exports.obfuscatingTransformersModule = new inversify_1.ContainerModule(function
 "use strict";
 
 
-var _map = __webpack_require__(14);
+var _map = __webpack_require__(16);
 
 var _map2 = _interopRequireDefault(_map);
 
@@ -3167,7 +3189,7 @@ exports.ConsoleOutputDisableExpressionNode = ConsoleOutputDisableExpressionNode;
 "use strict";
 
 
-var _map = __webpack_require__(14);
+var _map = __webpack_require__(16);
 
 var _map2 = _interopRequireDefault(_map);
 
@@ -3197,7 +3219,7 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var Initializable_1 = __webpack_require__(10);
-var CustomNodes_1 = __webpack_require__(15);
+var CustomNodes_1 = __webpack_require__(14);
 var ObfuscationEvents_1 = __webpack_require__(21);
 var AbstractCustomNodeGroup_1 = __webpack_require__(25);
 var NodeAppender_1 = __webpack_require__(24);
@@ -3960,7 +3982,7 @@ exports.DebugProtectionFunctionNode = DebugProtectionFunctionNode;
 "use strict";
 
 
-var _map = __webpack_require__(14);
+var _map = __webpack_require__(16);
 
 var _map2 = _interopRequireDefault(_map);
 
@@ -3990,7 +4012,7 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var Initializable_1 = __webpack_require__(10);
-var CustomNodes_1 = __webpack_require__(15);
+var CustomNodes_1 = __webpack_require__(14);
 var ObfuscationEvents_1 = __webpack_require__(21);
 var AbstractCustomNodeGroup_1 = __webpack_require__(25);
 var NodeAppender_1 = __webpack_require__(24);
@@ -4143,7 +4165,7 @@ exports.DomainLockNode = DomainLockNode;
 "use strict";
 
 
-var _map = __webpack_require__(14);
+var _map = __webpack_require__(16);
 
 var _map2 = _interopRequireDefault(_map);
 
@@ -4173,7 +4195,7 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var Initializable_1 = __webpack_require__(10);
-var CustomNodes_1 = __webpack_require__(15);
+var CustomNodes_1 = __webpack_require__(14);
 var ObfuscationEvents_1 = __webpack_require__(21);
 var AbstractCustomNodeGroup_1 = __webpack_require__(25);
 var NodeAppender_1 = __webpack_require__(24);
@@ -4390,7 +4412,7 @@ exports.SelfDefendingUnicodeNode = SelfDefendingUnicodeNode;
 "use strict";
 
 
-var _map = __webpack_require__(14);
+var _map = __webpack_require__(16);
 
 var _map2 = _interopRequireDefault(_map);
 
@@ -4420,7 +4442,7 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var Initializable_1 = __webpack_require__(10);
-var CustomNodes_1 = __webpack_require__(15);
+var CustomNodes_1 = __webpack_require__(14);
 var ObfuscationEvents_1 = __webpack_require__(21);
 var AbstractCustomNodeGroup_1 = __webpack_require__(25);
 var NodeAppender_1 = __webpack_require__(24);
@@ -4776,7 +4798,7 @@ exports.StringArrayRotateFunctionNode = StringArrayRotateFunctionNode;
 "use strict";
 
 
-var _map = __webpack_require__(14);
+var _map = __webpack_require__(16);
 
 var _map2 = _interopRequireDefault(_map);
 
@@ -4806,7 +4828,7 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var Initializable_1 = __webpack_require__(10);
-var CustomNodes_1 = __webpack_require__(15);
+var CustomNodes_1 = __webpack_require__(14);
 var ObfuscationEvents_1 = __webpack_require__(21);
 var AbstractCustomNodeGroup_1 = __webpack_require__(25);
 var NodeAppender_1 = __webpack_require__(24);
@@ -4919,7 +4941,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 
 var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
-var events_1 = __webpack_require__(141);
+var events_1 = __webpack_require__(140);
 inversify_1.decorate(inversify_1.injectable(), events_1.EventEmitter);
 var ObfuscationEventEmitter = function (_events_1$EventEmitte) {
     (0, _inherits3.default)(ObfuscationEventEmitter, _events_1$EventEmitte);
@@ -4952,8 +4974,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
 var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
-var CustomNodes_1 = __webpack_require__(15);
-var AbstractNodeTransformer_1 = __webpack_require__(16);
+var CustomNodes_1 = __webpack_require__(14);
+var AbstractNodeTransformer_1 = __webpack_require__(15);
 var Node_1 = __webpack_require__(11);
 var RandomGeneratorUtils_1 = __webpack_require__(9);
 var Utils_1 = __webpack_require__(13);
@@ -5037,12 +5059,12 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var estraverse = __webpack_require__(17);
-var CustomNodes_1 = __webpack_require__(15);
+var CustomNodes_1 = __webpack_require__(14);
 var NodeType_1 = __webpack_require__(19);
-var AbstractNodeTransformer_1 = __webpack_require__(16);
+var AbstractNodeTransformer_1 = __webpack_require__(15);
 var Node_1 = __webpack_require__(11);
 var NodeAppender_1 = __webpack_require__(24);
-var ControlFlowReplacers_1 = __webpack_require__(148);
+var ControlFlowReplacers_1 = __webpack_require__(38);
 var NodeUtils_1 = __webpack_require__(8);
 var RandomGeneratorUtils_1 = __webpack_require__(9);
 var FunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = function (_AbstractNodeTransfor) {
@@ -5194,7 +5216,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
-var CustomNodes_1 = __webpack_require__(15);
+var CustomNodes_1 = __webpack_require__(14);
 var ExpressionWithOperatorControlFlowReplacer_1 = __webpack_require__(42);
 var BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = function (_ExpressionWithOperat) {
     (0, _inherits3.default)(BinaryExpressionControlFlowReplacer, _ExpressionWithOperat);
@@ -5253,7 +5275,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
-var CustomNodes_1 = __webpack_require__(15);
+var CustomNodes_1 = __webpack_require__(14);
 var AbstractControlFlowReplacer_1 = __webpack_require__(41);
 var Node_1 = __webpack_require__(11);
 var CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer_1 = function (_AbstractControlFlowR) {
@@ -5329,7 +5351,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
-var CustomNodes_1 = __webpack_require__(15);
+var CustomNodes_1 = __webpack_require__(14);
 var ExpressionWithOperatorControlFlowReplacer_1 = __webpack_require__(42);
 var Node_1 = __webpack_require__(11);
 var NodeUtils_1 = __webpack_require__(8);
@@ -5393,7 +5415,7 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var NodeType_1 = __webpack_require__(19);
-var AbstractNodeTransformer_1 = __webpack_require__(16);
+var AbstractNodeTransformer_1 = __webpack_require__(15);
 var Node_1 = __webpack_require__(11);
 var MemberExpressionTransformer = function (_AbstractNodeTransfor) {
     _inherits(MemberExpressionTransformer, _AbstractNodeTransfor);
@@ -5459,7 +5481,7 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var NodeType_1 = __webpack_require__(19);
-var AbstractNodeTransformer_1 = __webpack_require__(16);
+var AbstractNodeTransformer_1 = __webpack_require__(15);
 var Node_1 = __webpack_require__(11);
 var MethodDefinitionTransformer = MethodDefinitionTransformer_1 = function (_AbstractNodeTransfor) {
     _inherits(MethodDefinitionTransformer, _AbstractNodeTransfor);
@@ -5525,7 +5547,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
 var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
-var AbstractNodeTransformer_1 = __webpack_require__(16);
+var AbstractNodeTransformer_1 = __webpack_require__(15);
 var Node_1 = __webpack_require__(11);
 var Nodes_1 = __webpack_require__(20);
 var TemplateLiteralTransformer = TemplateLiteralTransformer_1 = function (_AbstractNodeTransfor) {
@@ -5616,8 +5638,8 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var estraverse = __webpack_require__(17);
-var ObfuscationReplacers_1 = __webpack_require__(147);
-var AbstractNodeTransformer_1 = __webpack_require__(16);
+var ObfuscationReplacers_1 = __webpack_require__(22);
+var AbstractNodeTransformer_1 = __webpack_require__(15);
 var Node_1 = __webpack_require__(11);
 var CatchClauseTransformer = function (_AbstractNodeTransfor) {
     _inherits(CatchClauseTransformer, _AbstractNodeTransfor);
@@ -5702,9 +5724,9 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var estraverse = __webpack_require__(17);
-var ObfuscationReplacers_1 = __webpack_require__(147);
+var ObfuscationReplacers_1 = __webpack_require__(22);
 var NodeType_1 = __webpack_require__(19);
-var AbstractNodeTransformer_1 = __webpack_require__(16);
+var AbstractNodeTransformer_1 = __webpack_require__(15);
 var Node_1 = __webpack_require__(11);
 var NodeUtils_1 = __webpack_require__(8);
 var FunctionDeclarationTransformer = function (_AbstractNodeTransfor) {
@@ -5810,8 +5832,8 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var estraverse = __webpack_require__(17);
-var ObfuscationReplacers_1 = __webpack_require__(147);
-var AbstractNodeTransformer_1 = __webpack_require__(16);
+var ObfuscationReplacers_1 = __webpack_require__(22);
+var AbstractNodeTransformer_1 = __webpack_require__(15);
 var Node_1 = __webpack_require__(11);
 var FunctionTransformer = function (_AbstractNodeTransfor) {
     _inherits(FunctionTransformer, _AbstractNodeTransfor);
@@ -5915,8 +5937,8 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var estraverse = __webpack_require__(17);
-var ObfuscationReplacers_1 = __webpack_require__(147);
-var AbstractNodeTransformer_1 = __webpack_require__(16);
+var ObfuscationReplacers_1 = __webpack_require__(22);
+var AbstractNodeTransformer_1 = __webpack_require__(15);
 var Node_1 = __webpack_require__(11);
 var LabeledStatementTransformer = function (_AbstractNodeTransfor) {
     _inherits(LabeledStatementTransformer, _AbstractNodeTransfor);
@@ -5997,8 +6019,8 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var escodegen = __webpack_require__(26);
-var ObfuscationReplacers_1 = __webpack_require__(147);
-var AbstractNodeTransformer_1 = __webpack_require__(16);
+var ObfuscationReplacers_1 = __webpack_require__(22);
+var AbstractNodeTransformer_1 = __webpack_require__(15);
 var Node_1 = __webpack_require__(11);
 var LiteralTransformer = function (_AbstractNodeTransfor) {
     _inherits(LiteralTransformer, _AbstractNodeTransfor);
@@ -6078,7 +6100,7 @@ var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var escodegen = __webpack_require__(26);
 var NodeType_1 = __webpack_require__(19);
-var AbstractNodeTransformer_1 = __webpack_require__(16);
+var AbstractNodeTransformer_1 = __webpack_require__(15);
 var Node_1 = __webpack_require__(11);
 var Utils_1 = __webpack_require__(13);
 var ObjectExpressionTransformer = ObjectExpressionTransformer_1 = function (_AbstractNodeTransfor) {
@@ -6169,9 +6191,9 @@ var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
 var estraverse = __webpack_require__(17);
-var ObfuscationReplacers_1 = __webpack_require__(147);
+var ObfuscationReplacers_1 = __webpack_require__(22);
 var NodeType_1 = __webpack_require__(19);
-var AbstractNodeTransformer_1 = __webpack_require__(16);
+var AbstractNodeTransformer_1 = __webpack_require__(15);
 var Node_1 = __webpack_require__(11);
 var NodeUtils_1 = __webpack_require__(8);
 var VariableDeclarationTransformer = function (_AbstractNodeTransfor) {
@@ -6392,7 +6414,7 @@ exports.IdentifierReplacer = IdentifierReplacer;
 "use strict";
 
 
-var _map = __webpack_require__(14);
+var _map = __webpack_require__(16);
 
 var _map2 = _interopRequireDefault(_map);
 
@@ -6588,7 +6610,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 
 var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
-var class_validator_1 = __webpack_require__(139);
+var class_validator_1 = __webpack_require__(138);
 var Default_1 = __webpack_require__(43);
 var OptionsNormalizer_1 = __webpack_require__(107);
 var ValidationErrorsFormatter_1 = __webpack_require__(108);
@@ -7463,7 +7485,7 @@ exports.ControlFlowStorage = ControlFlowStorage;
 "use strict";
 
 
-var _map = __webpack_require__(14);
+var _map = __webpack_require__(16);
 
 var _map2 = _interopRequireDefault(_map);
 
@@ -7492,7 +7514,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 var tslib_1 = __webpack_require__(1);
 var inversify_1 = __webpack_require__(0);
 var ServiceIdentifiers_1 = __webpack_require__(2);
-var CustomNodeGroups_1 = __webpack_require__(38);
+var CustomNodeGroups_1 = __webpack_require__(39);
 var MapStorage_1 = __webpack_require__(44);
 var RandomGeneratorUtils_1 = __webpack_require__(9);
 var CustomNodeGroupStorage = CustomNodeGroupStorage_1 = function (_MapStorage_1$MapStor) {
@@ -7830,51 +7852,50 @@ module.exports = require("babel-runtime/core-js/object/define-property");
 module.exports = require("babel-runtime/core-js/object/get-own-property-descriptor");
 
 /***/ }),
-/* 137 */,
-/* 138 */
+/* 137 */
 /***/ (function(module, exports) {
 
 module.exports = require("chance");
 
 /***/ }),
-/* 139 */
+/* 138 */
 /***/ (function(module, exports) {
 
 module.exports = require("class-validator");
 
 /***/ }),
-/* 140 */
+/* 139 */
 /***/ (function(module, exports) {
 
 module.exports = require("commander");
 
 /***/ }),
-/* 141 */
+/* 140 */
 /***/ (function(module, exports) {
 
 module.exports = require("events");
 
 /***/ }),
-/* 142 */
+/* 141 */
 /***/ (function(module, exports) {
 
 module.exports = require("fs");
 
 /***/ }),
-/* 143 */
+/* 142 */
 /***/ (function(module, exports) {
 
 module.exports = require("mkdirp");
 
 /***/ }),
-/* 144 */
+/* 143 */
 /***/ (function(module, exports) {
 
 module.exports = require("reflect-metadata");
 
 /***/ }),
-/* 145 */,
-/* 146 */
+/* 144 */,
+/* 145 */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
@@ -7883,35 +7904,6 @@ module.exports = require("reflect-metadata");
 var JavaScriptObfuscator_1 = __webpack_require__(23);
 module.exports = JavaScriptObfuscator_1.JavaScriptObfuscator;
 
-/***/ }),
-/* 147 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var ObfuscationReplacers;
-(function (ObfuscationReplacers) {
-    ObfuscationReplacers[ObfuscationReplacers["BooleanReplacer"] = 0] = "BooleanReplacer";
-    ObfuscationReplacers[ObfuscationReplacers["IdentifierReplacer"] = 1] = "IdentifierReplacer";
-    ObfuscationReplacers[ObfuscationReplacers["NumberLiteralReplacer"] = 2] = "NumberLiteralReplacer";
-    ObfuscationReplacers[ObfuscationReplacers["StringLiteralReplacer"] = 3] = "StringLiteralReplacer";
-})(ObfuscationReplacers = exports.ObfuscationReplacers || (exports.ObfuscationReplacers = {}));
-
-/***/ }),
-/* 148 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var ControlFlowReplacers;
-(function (ControlFlowReplacers) {
-    ControlFlowReplacers[ControlFlowReplacers["BinaryExpressionControlFlowReplacer"] = 0] = "BinaryExpressionControlFlowReplacer";
-    ControlFlowReplacers[ControlFlowReplacers["CallExpressionControlFlowReplacer"] = 1] = "CallExpressionControlFlowReplacer";
-    ControlFlowReplacers[ControlFlowReplacers["LogicalExpressionControlFlowReplacer"] = 2] = "LogicalExpressionControlFlowReplacer";
-})(ControlFlowReplacers = exports.ControlFlowReplacers || (exports.ControlFlowReplacers = {}));
-
 /***/ })
 /******/ ]);
 //# sourceMappingURL=index.js.map

+ 4 - 4
package.json

@@ -1,6 +1,6 @@
 {
   "name": "javascript-obfuscator",
-  "version": "0.9.0-beta.5",
+  "version": "0.9.0",
   "description": "JavaScript obfuscator",
   "keywords": [
     "obfuscator",
@@ -29,7 +29,7 @@
     "lodash": "4.17.4",
     "mkdirp": "0.5.1",
     "reflect-metadata": "0.1.9",
-    "source-map-support": "0.4.10",
+    "source-map-support": "0.4.11",
     "string-template": "1.0.0",
     "tslib": "1.5.0"
   },
@@ -41,7 +41,7 @@
     "@types/esprima": "2.1.33",
     "@types/estraverse": "0.0.6",
     "@types/estree": "0.0.34",
-    "@types/lodash": "4.14.50",
+    "@types/lodash": "4.14.51",
     "@types/mkdirp": "0.3.29",
     "@types/mocha": "2.2.38",
     "@types/node": "7.0.4",
@@ -58,7 +58,7 @@
     "mocha": "3.2.0",
     "sinon": "2.0.0-pre.4",
     "ts-node": "2.0.0",
-    "tslint": "4.4.1",
+    "tslint": "4.4.2",
     "tslint-loader": "3.3.0",
     "typescript": "2.1.5",
     "webpack": "2.2.0",