diff --git a/dist/index.js b/dist/index.js index 549be117..88798959 100644 --- a/dist/index.js +++ b/dist/index.js @@ -88,7 +88,7 @@ module.exports = /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 122); +/******/ return __webpack_require__(__webpack_require__.s = 123); /******/ }) /************************************************************************/ /******/ ([ @@ -112,6 +112,7 @@ exports.ServiceIdentifiers = { 'Factory': Symbol('Factory'), 'Factory': Symbol('Factory'), 'Factory': Symbol('Factory'), + 'Factory>': Symbol('Factory>'), ICalleeDataExtractor: Symbol('ICalleeDataExtractor'), ICustomNode: Symbol('ICustomNode'), ICustomNodeGroup: Symbol('ICustomNodeGroup'), @@ -125,6 +126,7 @@ exports.ServiceIdentifiers = { IReplacer: Symbol('IReplacer'), ISourceMapCorrector: Symbol('ISourceMapCorrector'), IStackTraceAnalyzer: Symbol('IStackTraceAnalyzer'), + 'IStorage': Symbol('IStorage'), 'IStorage': Symbol('IStorage') }; @@ -139,7 +141,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__(113); +var chance_1 = __webpack_require__(114); var Utils_1 = __webpack_require__(4); var RandomGeneratorUtils = function () { @@ -256,8 +258,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 JSFuck_1 = __webpack_require__(30); -var isEqual = __webpack_require__(118); +var JSFuck_1 = __webpack_require__(29); +var isEqual = __webpack_require__(119); var Utils = function () { function Utils() { @@ -645,7 +647,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 escodegen = __webpack_require__(17); -var esprima = __webpack_require__(36); +var esprima = __webpack_require__(35); var estraverse = __webpack_require__(6); var NodeType_1 = __webpack_require__(9); var Node_1 = __webpack_require__(5); @@ -844,18 +846,6 @@ var NodeObfuscatorsReplacers = exports.NodeObfuscatorsReplacers; "use strict"; "use strict"; -exports.ObfuscationEvents = { - AfterObfuscation: 'afterObfuscation', - BeforeObfuscation: 'beforeObfuscation' -}; - -/***/ }, -/* 14 */ -/***/ function(module, exports) { - -"use strict"; -"use strict"; - (function (CustomNodes) { CustomNodes[CustomNodes["BinaryExpressionFunctionNode"] = 0] = "BinaryExpressionFunctionNode"; CustomNodes[CustomNodes["ControlFlowStorageCallNode"] = 1] = "ControlFlowStorageCallNode"; @@ -873,6 +863,18 @@ exports.ObfuscationEvents = { })(exports.CustomNodes || (exports.CustomNodes = {})); var CustomNodes = exports.CustomNodes; +/***/ }, +/* 14 */ +/***/ function(module, exports) { + +"use strict"; +"use strict"; + +exports.ObfuscationEvents = { + AfterObfuscation: 'afterObfuscation', + BeforeObfuscation: 'beforeObfuscation' +}; + /***/ }, /* 15 */ /***/ function(module, exports, __webpack_require__) { @@ -884,12 +886,12 @@ 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"); } } -__webpack_require__(120); +__webpack_require__(121); if (!global._babelPolyfill) { - __webpack_require__(112); + __webpack_require__(113); } -var InversifyContainerFacade_1 = __webpack_require__(44); -var JavaScriptObfuscatorCLI_1 = __webpack_require__(43); +var InversifyContainerFacade_1 = __webpack_require__(43); +var JavaScriptObfuscatorCLI_1 = __webpack_require__(42); var ServiceIdentifiers_1 = __webpack_require__(1); var JavaScriptObfuscator = function () { @@ -1384,7 +1386,7 @@ var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var format = __webpack_require__(8); var Initializable_1 = __webpack_require__(3); -var BinaryExpressionFunctionTemplate_1 = __webpack_require__(97); +var BinaryExpressionFunctionTemplate_1 = __webpack_require__(98); var AbstractCustomNode_1 = __webpack_require__(7); var RandomGeneratorUtils_1 = __webpack_require__(2); var BinaryExpressionFunctionNode = function (_AbstractCustomNode_) { @@ -1454,7 +1456,7 @@ var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var format = __webpack_require__(8); var Initializable_1 = __webpack_require__(3); -var ControlFlowStorageCallTemplate_1 = __webpack_require__(98); +var ControlFlowStorageCallTemplate_1 = __webpack_require__(99); var AbstractCustomNode_1 = __webpack_require__(7); var ControlFlowStorageCallNode = function (_AbstractCustomNode_) { _inherits(ControlFlowStorageCallNode, _AbstractCustomNode_); @@ -1503,77 +1505,6 @@ exports.ControlFlowStorageCallNode = ControlFlowStorageCallNode; 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; }; })(); -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -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 __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) { - var c = arguments.length, - r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, - d; - if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { - if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - }return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = undefined && undefined.__metadata || function (k, v) { - if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = undefined && undefined.__param || function (paramIndex, decorator) { - return function (target, key) { - decorator(target, key, paramIndex); - }; -}; -var inversify_1 = __webpack_require__(0); -var ServiceIdentifiers_1 = __webpack_require__(1); -var format = __webpack_require__(8); -var Initializable_1 = __webpack_require__(3); -var ControlFlowStorageTemplate_1 = __webpack_require__(99); -var AbstractCustomNode_1 = __webpack_require__(7); -var ControlFlowStorageNode = function (_AbstractCustomNode_) { - _inherits(ControlFlowStorageNode, _AbstractCustomNode_); - - function ControlFlowStorageNode(options) { - _classCallCheck(this, ControlFlowStorageNode); - - return _possibleConstructorReturn(this, (ControlFlowStorageNode.__proto__ || Object.getPrototypeOf(ControlFlowStorageNode)).call(this, options)); - } - - _createClass(ControlFlowStorageNode, [{ - key: "initialize", - value: function initialize(controlFlowStorage, controlFlowStorageName) { - this.controlFlowStorage = controlFlowStorage; - this.controlFlowStorageName = controlFlowStorageName; - } - }, { - key: "getCode", - value: function getCode() { - return format(ControlFlowStorageTemplate_1.ControlFlowStorageTemplate(), { - controlFlowStorage: this.controlFlowStorage.toString(), - controlFlowStorageName: this.controlFlowStorageName - }); - } - }]); - - return ControlFlowStorageNode; -}(AbstractCustomNode_1.AbstractCustomNode); -__decorate([Initializable_1.initializable(), __metadata('design:type', Object)], ControlFlowStorageNode.prototype, "controlFlowStorage", void 0); -__decorate([Initializable_1.initializable(), __metadata('design:type', String)], ControlFlowStorageNode.prototype, "controlFlowStorageName", void 0); -ControlFlowStorageNode = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata('design:paramtypes', [Object])], ControlFlowStorageNode); -exports.ControlFlowStorageNode = ControlFlowStorageNode; - -/***/ }, -/* 29 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; -"use strict"; - -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; }; })(); - var _get = (function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; @@ -1604,7 +1535,7 @@ var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var format = __webpack_require__(8); var Initializable_1 = __webpack_require__(3); -var StringArrayTemplate_1 = __webpack_require__(109); +var StringArrayTemplate_1 = __webpack_require__(110); var AbstractCustomNode_1 = __webpack_require__(7); var StringArrayNode = function (_AbstractCustomNode_) { _inherits(StringArrayNode, _AbstractCustomNode_); @@ -1653,7 +1584,7 @@ StringArrayNode = __decorate([inversify_1.injectable(), __param(0, inversify_1.i exports.StringArrayNode = StringArrayNode; /***/ }, -/* 30 */ +/* 29 */ /***/ function(module, exports) { "use strict"; @@ -1717,7 +1648,7 @@ exports.JSFuck = { }; /***/ }, -/* 31 */ +/* 30 */ /***/ function(module, exports) { "use strict"; @@ -1730,6 +1661,18 @@ exports.JSFuck = { })(exports.CalleeDataExtractors || (exports.CalleeDataExtractors = {})); var CalleeDataExtractors = exports.CalleeDataExtractors; +/***/ }, +/* 31 */ +/***/ function(module, exports) { + +"use strict"; +"use strict"; + +var NodeControlFlowReplacers; +(function (NodeControlFlowReplacers) { + NodeControlFlowReplacers[NodeControlFlowReplacers["BinaryExpressionControlFlowReplacer"] = 0] = "BinaryExpressionControlFlowReplacer"; +})(NodeControlFlowReplacers = exports.NodeControlFlowReplacers || (exports.NodeControlFlowReplacers = {})); + /***/ }, /* 32 */ /***/ function(module, exports) { @@ -1758,80 +1701,6 @@ var NodeTransformers = exports.NodeTransformers; "use strict"; "use strict"; -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; }; })(); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -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 __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) { - var c = arguments.length, - r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, - d; - if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { - if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - }return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = undefined && undefined.__metadata || function (k, v) { - if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = undefined && undefined.__param || function (paramIndex, decorator) { - return function (target, key) { - decorator(target, key, paramIndex); - }; -}; -var inversify_1 = __webpack_require__(0); -var ServiceIdentifiers_1 = __webpack_require__(1); -var escodegen = __webpack_require__(17); -var AbstractControlFlowReplacer_1 = __webpack_require__(68); -var BinaryExpressionFunctionNode_1 = __webpack_require__(26); -var ControlFlowStorageCallNode_1 = __webpack_require__(27); -var BinaryExpressionControlFlowReplacer_1 = function (_AbstractControlFlowR) { - _inherits(BinaryExpressionControlFlowReplacer, _AbstractControlFlowR); - - function BinaryExpressionControlFlowReplacer(options) { - _classCallCheck(this, BinaryExpressionControlFlowReplacer); - - return _possibleConstructorReturn(this, (BinaryExpressionControlFlowReplacer.__proto__ || Object.getPrototypeOf(BinaryExpressionControlFlowReplacer)).call(this, options)); - } - - _createClass(BinaryExpressionControlFlowReplacer, [{ - key: "replace", - value: function replace(binaryExpressionNode, parentNode, controlFlowStorage, controlFlowStorageCustomNodeName) { - var key = AbstractControlFlowReplacer_1.AbstractControlFlowReplacer.getStorageKey(); - var binaryExpressionFunctionNode = new BinaryExpressionFunctionNode_1.BinaryExpressionFunctionNode(this.options); - binaryExpressionFunctionNode.initialize(binaryExpressionNode.operator); - controlFlowStorage.set(key, binaryExpressionFunctionNode); - var controlFlowStorageCallNode = new ControlFlowStorageCallNode_1.ControlFlowStorageCallNode(this.options); - controlFlowStorageCallNode.initialize(controlFlowStorageCustomNodeName, key, BinaryExpressionControlFlowReplacer_1.getExpressionValue(binaryExpressionNode.left), BinaryExpressionControlFlowReplacer_1.getExpressionValue(binaryExpressionNode.right)); - return controlFlowStorageCallNode; - } - }], [{ - key: "getExpressionValue", - value: function getExpressionValue(expressionNode) { - return escodegen.generate(expressionNode, { - sourceMapWithCode: true - }).code; - } - }]); - - return BinaryExpressionControlFlowReplacer; -}(AbstractControlFlowReplacer_1.AbstractControlFlowReplacer); -var BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1; -BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata('design:paramtypes', [Object])], BinaryExpressionControlFlowReplacer); -exports.BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer; - -/***/ }, -/* 34 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; -"use strict"; - var SourceMapMode_1 = __webpack_require__(19); exports.DEFAULT_PRESET = Object.freeze({ compact: true, @@ -1855,7 +1724,7 @@ exports.DEFAULT_PRESET = Object.freeze({ }); /***/ }, -/* 35 */ +/* 34 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -1929,19 +1798,19 @@ MapStorage = __decorate([inversify_1.injectable(), __metadata('design:paramtypes exports.MapStorage = MapStorage; /***/ }, -/* 36 */ +/* 35 */ /***/ function(module, exports) { module.exports = require("esprima"); /***/ }, -/* 37 */ +/* 36 */ /***/ function(module, exports) { module.exports = require("path"); /***/ }, -/* 38 */ +/* 37 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -1980,7 +1849,7 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator) }; var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); -var esprima = __webpack_require__(36); +var esprima = __webpack_require__(35); var escodegen = __webpack_require__(17); var RandomGeneratorUtils_1 = __webpack_require__(2); var JavaScriptObfuscatorInternal = JavaScriptObfuscatorInternal_1 = function () { @@ -2039,7 +1908,7 @@ exports.JavaScriptObfuscatorInternal = JavaScriptObfuscatorInternal; var JavaScriptObfuscatorInternal_1; /***/ }, -/* 39 */ +/* 38 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2100,7 +1969,7 @@ ObfuscationResult = __decorate([inversify_1.injectable(), __metadata('design:par exports.ObfuscationResult = ObfuscationResult; /***/ }, -/* 40 */ +/* 39 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2135,8 +2004,8 @@ var ServiceIdentifiers_1 = __webpack_require__(1); var estraverse = __webpack_require__(6); var NodeTransformers_1 = __webpack_require__(32); var NodeType_1 = __webpack_require__(9); -var ObfuscationEvents_1 = __webpack_require__(13); -var VisitorDirection_1 = __webpack_require__(64); +var ObfuscationEvents_1 = __webpack_require__(14); +var VisitorDirection_1 = __webpack_require__(65); var Node_1 = __webpack_require__(5); var NodeUtils_1 = __webpack_require__(10); var Obfuscator_1 = function () { @@ -2193,7 +2062,7 @@ Obfuscator = Obfuscator_1 = __decorate([inversify_1.injectable(), __param(0, inv exports.Obfuscator = Obfuscator; /***/ }, -/* 41 */ +/* 40 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2268,7 +2137,7 @@ SourceMapCorrector = __decorate([inversify_1.injectable(), __param(0, inversify_ exports.SourceMapCorrector = SourceMapCorrector; /***/ }, -/* 42 */ +/* 41 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2278,9 +2147,9 @@ 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__(117); -var mkdirp = __webpack_require__(119); -var path = __webpack_require__(37); +var fs = __webpack_require__(118); +var mkdirp = __webpack_require__(120); +var path = __webpack_require__(36); var Utils_1 = __webpack_require__(4); var CLIUtils = function () { @@ -2360,7 +2229,7 @@ CLIUtils.encoding = 'utf8'; exports.CLIUtils = CLIUtils; /***/ }, -/* 43 */ +/* 42 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2379,12 +2248,12 @@ var __assign = undefined && undefined.__assign || Object.assign || function (t) } return t; }; -var commander = __webpack_require__(115); -var path = __webpack_require__(37); +var commander = __webpack_require__(116); +var path = __webpack_require__(36); var SourceMapMode_1 = __webpack_require__(19); var StringArrayEncoding_1 = __webpack_require__(22); -var DefaultPreset_1 = __webpack_require__(34); -var CLIUtils_1 = __webpack_require__(42); +var DefaultPreset_1 = __webpack_require__(33); +var CLIUtils_1 = __webpack_require__(41); var JavaScriptObfuscator_1 = __webpack_require__(15); var Utils_1 = __webpack_require__(4); @@ -2517,7 +2386,7 @@ var JavaScriptObfuscatorCLI = function () { exports.JavaScriptObfuscatorCLI = JavaScriptObfuscatorCLI; /***/ }, -/* 44 */ +/* 43 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2529,18 +2398,18 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); -var CustomNodesModule_1 = __webpack_require__(45); -var NodeControlFlowTransformersModule_1 = __webpack_require__(46); -var NodeObfuscatorsModule_1 = __webpack_require__(47); -var NodeTransformersModule_1 = __webpack_require__(48); -var StackTraceAnalyzerModule_1 = __webpack_require__(49); -var JavaScriptObfuscatorInternal_1 = __webpack_require__(38); +var CustomNodesModule_1 = __webpack_require__(44); +var NodeControlFlowTransformersModule_1 = __webpack_require__(45); +var NodeObfuscatorsModule_1 = __webpack_require__(46); +var NodeTransformersModule_1 = __webpack_require__(47); +var StackTraceAnalyzerModule_1 = __webpack_require__(48); +var StoragesModule_1 = __webpack_require__(49); +var JavaScriptObfuscatorInternal_1 = __webpack_require__(37); var ObfuscationEventEmitter_1 = __webpack_require__(66); -var ObfuscationResult_1 = __webpack_require__(39); -var Obfuscator_1 = __webpack_require__(40); -var Options_1 = __webpack_require__(82); -var SourceMapCorrector_1 = __webpack_require__(41); -var CustomNodeGroupStorage_1 = __webpack_require__(91); +var ObfuscationResult_1 = __webpack_require__(38); +var Obfuscator_1 = __webpack_require__(39); +var Options_1 = __webpack_require__(83); +var SourceMapCorrector_1 = __webpack_require__(40); var InversifyContainerFacade = function () { function InversifyContainerFacade(options) { @@ -2561,8 +2430,8 @@ var InversifyContainerFacade = function () { }; }); this.container.bind(ServiceIdentifiers_1.ServiceIdentifiers.ISourceMapCorrector).to(SourceMapCorrector_1.SourceMapCorrector).inSingletonScope(); - this.container.bind(ServiceIdentifiers_1.ServiceIdentifiers['IStorage']).to(CustomNodeGroupStorage_1.CustomNodeGroupStorage).inSingletonScope(); this.container.bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter).to(ObfuscationEventEmitter_1.ObfuscationEventEmitter).inSingletonScope(); + this.container.load(StoragesModule_1.storagesModule); this.container.load(StackTraceAnalyzerModule_1.stackTraceAnalyzerModule); this.container.load(CustomNodesModule_1.customNodesModule); this.container.load(NodeTransformersModule_1.nodeTransformersModule); @@ -2571,12 +2440,12 @@ var InversifyContainerFacade = function () { } _createClass(InversifyContainerFacade, [{ - key: 'get', + key: "get", value: function get(serviceIdentifier) { return this.container.get(serviceIdentifier); } }, { - key: 'getNamed', + key: "getNamed", value: function getNamed(serviceIdentifier, named) { return this.container.getNamed(serviceIdentifier, named); } @@ -2588,7 +2457,7 @@ var InversifyContainerFacade = function () { exports.InversifyContainerFacade = InversifyContainerFacade; /***/ }, -/* 45 */ +/* 44 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2596,26 +2465,26 @@ exports.InversifyContainerFacade = InversifyContainerFacade; var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); -var CustomNodes_1 = __webpack_require__(14); +var CustomNodes_1 = __webpack_require__(13); var CustomNodeGroups_1 = __webpack_require__(23); var ConsoleOutputCustomNodeGroup_1 = __webpack_require__(51); -var DebugProtectionCustomNodeGroup_1 = __webpack_require__(55); -var DomainLockCustomNodeGroup_1 = __webpack_require__(57); -var SelfDefendingCustomNodeGroup_1 = __webpack_require__(60); -var StringArrayCustomNodeGroup_1 = __webpack_require__(63); +var DebugProtectionCustomNodeGroup_1 = __webpack_require__(56); +var DomainLockCustomNodeGroup_1 = __webpack_require__(58); +var SelfDefendingCustomNodeGroup_1 = __webpack_require__(61); +var StringArrayCustomNodeGroup_1 = __webpack_require__(64); var BinaryExpressionFunctionNode_1 = __webpack_require__(26); var ControlFlowStorageCallNode_1 = __webpack_require__(27); -var ControlFlowStorageNode_1 = __webpack_require__(28); +var ControlFlowStorageNode_1 = __webpack_require__(52); var ConsoleOutputDisableExpressionNode_1 = __webpack_require__(50); -var DebugProtectionFunctionCallNode_1 = __webpack_require__(52); -var DebugProtectionFunctionIntervalNode_1 = __webpack_require__(53); -var DebugProtectionFunctionNode_1 = __webpack_require__(54); -var DomainLockNode_1 = __webpack_require__(56); -var NodeCallsControllerFunctionNode_1 = __webpack_require__(58); -var SelfDefendingUnicodeNode_1 = __webpack_require__(59); -var StringArrayCallsWrapper_1 = __webpack_require__(61); -var StringArrayNode_1 = __webpack_require__(29); -var StringArrayRotateFunctionNode_1 = __webpack_require__(62); +var DebugProtectionFunctionCallNode_1 = __webpack_require__(53); +var DebugProtectionFunctionIntervalNode_1 = __webpack_require__(54); +var DebugProtectionFunctionNode_1 = __webpack_require__(55); +var DomainLockNode_1 = __webpack_require__(57); +var NodeCallsControllerFunctionNode_1 = __webpack_require__(59); +var SelfDefendingUnicodeNode_1 = __webpack_require__(60); +var StringArrayCallsWrapper_1 = __webpack_require__(62); +var StringArrayNode_1 = __webpack_require__(28); +var StringArrayRotateFunctionNode_1 = __webpack_require__(63); exports.customNodesModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode).to(BinaryExpressionFunctionNode_1.BinaryExpressionFunctionNode).whenTargetNamed(CustomNodes_1.CustomNodes.BinaryExpressionFunctionNode); bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode).to(ControlFlowStorageCallNode_1.ControlFlowStorageCallNode).whenTargetNamed(CustomNodes_1.CustomNodes.ControlFlowStorageCallNode); @@ -2647,6 +2516,32 @@ exports.customNodesModule = new inversify_1.ContainerModule(function (bind) { }); }); +/***/ }, +/* 45 */ +/***/ function(module, exports, __webpack_require__) { + +"use strict"; +"use strict"; + +var inversify_1 = __webpack_require__(0); +var ServiceIdentifiers_1 = __webpack_require__(1); +var NodeControlFlowReplacers_1 = __webpack_require__(31); +var BinaryExpressionControlFlowReplacer_1 = __webpack_require__(69); +exports.nodeControlFlowTransformersModule = new inversify_1.ContainerModule(function (bind) { + bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer).to(BinaryExpressionControlFlowReplacer_1.BinaryExpressionControlFlowReplacer).whenTargetNamed(NodeControlFlowReplacers_1.NodeControlFlowReplacers.BinaryExpressionControlFlowReplacer); + bind(ServiceIdentifiers_1.ServiceIdentifiers['Factory']).toFactory(function (context) { + var cache = new Map(); + return function (replacerName) { + if (cache.has(replacerName)) { + return cache.get(replacerName); + } + var controlFlowReplacer = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer, replacerName); + cache.set(replacerName, controlFlowReplacer); + return controlFlowReplacer; + }; + }); +}); + /***/ }, /* 46 */ /***/ function(module, exports, __webpack_require__) { @@ -2656,19 +2551,25 @@ exports.customNodesModule = new inversify_1.ContainerModule(function (bind) { var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); -var NodeControlFlowTransformersReplacers_1 = __webpack_require__(65); -var BinaryExpressionControlFlowReplacer_1 = __webpack_require__(33); -exports.nodeControlFlowTransformersModule = new inversify_1.ContainerModule(function (bind) { - bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer).to(BinaryExpressionControlFlowReplacer_1.BinaryExpressionControlFlowReplacer).whenTargetNamed(NodeControlFlowTransformersReplacers_1.NodeControlFlowTransformersReplacers.BinaryExpressionControlFlowReplacer); - bind(ServiceIdentifiers_1.ServiceIdentifiers['Factory']).toFactory(function (context) { +var NodeObfuscatorsReplacers_1 = __webpack_require__(12); +var BooleanLiteralReplacer_1 = __webpack_require__(79); +var IdentifierReplacer_1 = __webpack_require__(80); +var NumberLiteralReplacer_1 = __webpack_require__(81); +var StringLiteralReplacer_1 = __webpack_require__(82); +exports.nodeObfuscatorsModule = new inversify_1.ContainerModule(function (bind) { + bind(ServiceIdentifiers_1.ServiceIdentifiers.IReplacer).to(BooleanLiteralReplacer_1.BooleanLiteralReplacer).whenTargetNamed(NodeObfuscatorsReplacers_1.NodeObfuscatorsReplacers.BooleanReplacer); + bind(ServiceIdentifiers_1.ServiceIdentifiers.IReplacer).to(IdentifierReplacer_1.IdentifierReplacer).whenTargetNamed(NodeObfuscatorsReplacers_1.NodeObfuscatorsReplacers.IdentifierReplacer); + bind(ServiceIdentifiers_1.ServiceIdentifiers.IReplacer).to(NumberLiteralReplacer_1.NumberLiteralReplacer).whenTargetNamed(NodeObfuscatorsReplacers_1.NodeObfuscatorsReplacers.NumberLiteralReplacer); + bind(ServiceIdentifiers_1.ServiceIdentifiers.IReplacer).to(StringLiteralReplacer_1.StringLiteralReplacer).whenTargetNamed(NodeObfuscatorsReplacers_1.NodeObfuscatorsReplacers.StringLiteralReplacer); + bind(ServiceIdentifiers_1.ServiceIdentifiers['Factory']).toFactory(function (context) { var cache = new Map(); - return function (replacer) { - if (cache.has(replacer)) { - return cache.get(replacer); + return function (replacerName) { + if (cache.has(replacerName)) { + return cache.get(replacerName); } - var controlFlowReplacer = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer, replacer); - cache.set(replacer, controlFlowReplacer); - return controlFlowReplacer; + var obfuscationReplacer = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IReplacer, replacerName); + cache.set(replacerName, obfuscationReplacer); + return obfuscationReplacer; }; }); }); @@ -2680,51 +2581,19 @@ exports.nodeControlFlowTransformersModule = new inversify_1.ContainerModule(func "use strict"; "use strict"; -var inversify_1 = __webpack_require__(0); -var ServiceIdentifiers_1 = __webpack_require__(1); -var NodeObfuscatorsReplacers_1 = __webpack_require__(12); -var BooleanLiteralReplacer_1 = __webpack_require__(78); -var IdentifierReplacer_1 = __webpack_require__(79); -var NumberLiteralReplacer_1 = __webpack_require__(80); -var StringLiteralReplacer_1 = __webpack_require__(81); -exports.nodeObfuscatorsModule = new inversify_1.ContainerModule(function (bind) { - bind(ServiceIdentifiers_1.ServiceIdentifiers.IReplacer).to(BooleanLiteralReplacer_1.BooleanLiteralReplacer).whenTargetNamed(NodeObfuscatorsReplacers_1.NodeObfuscatorsReplacers.BooleanReplacer); - bind(ServiceIdentifiers_1.ServiceIdentifiers.IReplacer).to(IdentifierReplacer_1.IdentifierReplacer).whenTargetNamed(NodeObfuscatorsReplacers_1.NodeObfuscatorsReplacers.IdentifierReplacer); - bind(ServiceIdentifiers_1.ServiceIdentifiers.IReplacer).to(NumberLiteralReplacer_1.NumberLiteralReplacer).whenTargetNamed(NodeObfuscatorsReplacers_1.NodeObfuscatorsReplacers.NumberLiteralReplacer); - bind(ServiceIdentifiers_1.ServiceIdentifiers.IReplacer).to(StringLiteralReplacer_1.StringLiteralReplacer).whenTargetNamed(NodeObfuscatorsReplacers_1.NodeObfuscatorsReplacers.StringLiteralReplacer); - bind(ServiceIdentifiers_1.ServiceIdentifiers['Factory']).toFactory(function (context) { - var cache = new Map(); - return function (replacer) { - if (cache.has(replacer)) { - return cache.get(replacer); - } - var obfuscationReplacer = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IReplacer, replacer); - cache.set(replacer, obfuscationReplacer); - return obfuscationReplacer; - }; - }); -}); - -/***/ }, -/* 48 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; -"use strict"; - var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var NodeTransformers_1 = __webpack_require__(32); var FunctionControlFlowTransformer_1 = __webpack_require__(67); -var CatchClauseObfuscator_1 = __webpack_require__(69); -var FunctionDeclarationObfuscator_1 = __webpack_require__(70); -var FunctionObfuscator_1 = __webpack_require__(71); -var LabeledStatementObfuscator_1 = __webpack_require__(72); -var LiteralObfuscator_1 = __webpack_require__(73); -var MemberExpressionObfuscator_1 = __webpack_require__(74); -var MethodDefinitionObfuscator_1 = __webpack_require__(75); -var ObjectExpressionObfuscator_1 = __webpack_require__(76); -var VariableDeclarationObfuscator_1 = __webpack_require__(77); +var CatchClauseObfuscator_1 = __webpack_require__(70); +var FunctionDeclarationObfuscator_1 = __webpack_require__(71); +var FunctionObfuscator_1 = __webpack_require__(72); +var LabeledStatementObfuscator_1 = __webpack_require__(73); +var LiteralObfuscator_1 = __webpack_require__(74); +var MemberExpressionObfuscator_1 = __webpack_require__(75); +var MethodDefinitionObfuscator_1 = __webpack_require__(76); +var ObjectExpressionObfuscator_1 = __webpack_require__(77); +var VariableDeclarationObfuscator_1 = __webpack_require__(78); exports.nodeTransformersModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(FunctionControlFlowTransformer_1.FunctionControlFlowTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.FunctionControlFlowTransformer); bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(CatchClauseObfuscator_1.CatchClauseObfuscator).whenTargetNamed(NodeTransformers_1.NodeTransformers.CatchClauseObfuscator); @@ -2759,7 +2628,7 @@ exports.nodeTransformersModule = new inversify_1.ContainerModule(function (bind) }); /***/ }, -/* 49 */ +/* 48 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2767,11 +2636,11 @@ exports.nodeTransformersModule = new inversify_1.ContainerModule(function (bind) var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); -var CalleeDataExtractors_1 = __webpack_require__(31); -var FunctionDeclarationCalleeDataExtractor_1 = __webpack_require__(86); -var FunctionExpressionCalleeDataExtractor_1 = __webpack_require__(87); -var ObjectExpressionCalleeDataExtractor_1 = __webpack_require__(88); -var StackTraceAnalyzer_1 = __webpack_require__(85); +var CalleeDataExtractors_1 = __webpack_require__(30); +var FunctionDeclarationCalleeDataExtractor_1 = __webpack_require__(87); +var FunctionExpressionCalleeDataExtractor_1 = __webpack_require__(88); +var ObjectExpressionCalleeDataExtractor_1 = __webpack_require__(89); +var StackTraceAnalyzer_1 = __webpack_require__(86); exports.stackTraceAnalyzerModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.IStackTraceAnalyzer).to(StackTraceAnalyzer_1.StackTraceAnalyzer).inSingletonScope(); bind(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor).to(FunctionDeclarationCalleeDataExtractor_1.FunctionDeclarationCalleeDataExtractor).whenTargetNamed(CalleeDataExtractors_1.CalleeDataExtractors.FunctionDeclarationCalleeDataExtractor); @@ -2790,6 +2659,27 @@ exports.stackTraceAnalyzerModule = new inversify_1.ContainerModule(function (bin }); }); +/***/ }, +/* 49 */ +/***/ function(module, exports, __webpack_require__) { + +"use strict"; +"use strict"; + +var inversify_1 = __webpack_require__(0); +var ServiceIdentifiers_1 = __webpack_require__(1); +var ControlFlowStorage_1 = __webpack_require__(91); +var CustomNodeGroupStorage_1 = __webpack_require__(92); +exports.storagesModule = new inversify_1.ContainerModule(function (bind) { + bind(ServiceIdentifiers_1.ServiceIdentifiers['IStorage']).to(CustomNodeGroupStorage_1.CustomNodeGroupStorage).inSingletonScope(); + bind(ServiceIdentifiers_1.ServiceIdentifiers['IStorage']).to(ControlFlowStorage_1.ControlFlowStorage); + bind(ServiceIdentifiers_1.ServiceIdentifiers['Factory>']).toFactory(function (context) { + return function () { + return context.container.get(ServiceIdentifiers_1.ServiceIdentifiers['IStorage']); + }; + }); +}); + /***/ }, /* 50 */ /***/ function(module, exports, __webpack_require__) { @@ -2826,7 +2716,7 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator) var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var format = __webpack_require__(8); -var ConsoleOutputDisableExpressionTemplate_1 = __webpack_require__(96); +var ConsoleOutputDisableExpressionTemplate_1 = __webpack_require__(97); var Initializable_1 = __webpack_require__(3); var AbstractCustomNode_1 = __webpack_require__(7); var RandomGeneratorUtils_1 = __webpack_require__(2); @@ -2896,8 +2786,8 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator) var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var Initializable_1 = __webpack_require__(3); -var CustomNodes_1 = __webpack_require__(14); -var ObfuscationEvents_1 = __webpack_require__(13); +var CustomNodes_1 = __webpack_require__(13); +var ObfuscationEvents_1 = __webpack_require__(14); var AbstractCustomNodeGroup_1 = __webpack_require__(18); var NodeAppender_1 = __webpack_require__(16); var RandomGeneratorUtils_1 = __webpack_require__(2); @@ -2992,36 +2882,39 @@ var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var format = __webpack_require__(8); var Initializable_1 = __webpack_require__(3); -var DebufProtectionFunctionCallTemplate_1 = __webpack_require__(100); +var ControlFlowStorageTemplate_1 = __webpack_require__(100); var AbstractCustomNode_1 = __webpack_require__(7); -var DebugProtectionFunctionCallNode = function (_AbstractCustomNode_) { - _inherits(DebugProtectionFunctionCallNode, _AbstractCustomNode_); +var ControlFlowStorageNode = function (_AbstractCustomNode_) { + _inherits(ControlFlowStorageNode, _AbstractCustomNode_); - function DebugProtectionFunctionCallNode(options) { - _classCallCheck(this, DebugProtectionFunctionCallNode); + function ControlFlowStorageNode(options) { + _classCallCheck(this, ControlFlowStorageNode); - return _possibleConstructorReturn(this, (DebugProtectionFunctionCallNode.__proto__ || Object.getPrototypeOf(DebugProtectionFunctionCallNode)).call(this, options)); + return _possibleConstructorReturn(this, (ControlFlowStorageNode.__proto__ || Object.getPrototypeOf(ControlFlowStorageNode)).call(this, options)); } - _createClass(DebugProtectionFunctionCallNode, [{ + _createClass(ControlFlowStorageNode, [{ key: "initialize", - value: function initialize(debugProtectionFunctionName) { - this.debugProtectionFunctionName = debugProtectionFunctionName; + value: function initialize(controlFlowStorage, controlFlowStorageName) { + this.controlFlowStorage = controlFlowStorage; + this.controlFlowStorageName = controlFlowStorageName; } }, { key: "getCode", value: function getCode() { - return format(DebufProtectionFunctionCallTemplate_1.DebugProtectionFunctionCallTemplate(), { - debugProtectionFunctionName: this.debugProtectionFunctionName + return format(ControlFlowStorageTemplate_1.ControlFlowStorageTemplate(), { + controlFlowStorage: this.controlFlowStorage.toString(), + controlFlowStorageName: this.controlFlowStorageName }); } }]); - return DebugProtectionFunctionCallNode; + return ControlFlowStorageNode; }(AbstractCustomNode_1.AbstractCustomNode); -__decorate([Initializable_1.initializable(), __metadata('design:type', String)], DebugProtectionFunctionCallNode.prototype, "debugProtectionFunctionName", void 0); -DebugProtectionFunctionCallNode = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata('design:paramtypes', [Object])], DebugProtectionFunctionCallNode); -exports.DebugProtectionFunctionCallNode = DebugProtectionFunctionCallNode; +__decorate([Initializable_1.initializable(), __metadata('design:type', Object)], ControlFlowStorageNode.prototype, "controlFlowStorage", void 0); +__decorate([Initializable_1.initializable(), __metadata('design:type', String)], ControlFlowStorageNode.prototype, "controlFlowStorageName", void 0); +ControlFlowStorageNode = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata('design:paramtypes', [Object])], ControlFlowStorageNode); +exports.ControlFlowStorageNode = ControlFlowStorageNode; /***/ }, /* 53 */ @@ -3060,18 +2953,18 @@ var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var format = __webpack_require__(8); var Initializable_1 = __webpack_require__(3); -var DebugProtectionFunctionIntervalTemplate_1 = __webpack_require__(101); +var DebufProtectionFunctionCallTemplate_1 = __webpack_require__(101); var AbstractCustomNode_1 = __webpack_require__(7); -var DebugProtectionFunctionIntervalNode = function (_AbstractCustomNode_) { - _inherits(DebugProtectionFunctionIntervalNode, _AbstractCustomNode_); +var DebugProtectionFunctionCallNode = function (_AbstractCustomNode_) { + _inherits(DebugProtectionFunctionCallNode, _AbstractCustomNode_); - function DebugProtectionFunctionIntervalNode(options) { - _classCallCheck(this, DebugProtectionFunctionIntervalNode); + function DebugProtectionFunctionCallNode(options) { + _classCallCheck(this, DebugProtectionFunctionCallNode); - return _possibleConstructorReturn(this, (DebugProtectionFunctionIntervalNode.__proto__ || Object.getPrototypeOf(DebugProtectionFunctionIntervalNode)).call(this, options)); + return _possibleConstructorReturn(this, (DebugProtectionFunctionCallNode.__proto__ || Object.getPrototypeOf(DebugProtectionFunctionCallNode)).call(this, options)); } - _createClass(DebugProtectionFunctionIntervalNode, [{ + _createClass(DebugProtectionFunctionCallNode, [{ key: "initialize", value: function initialize(debugProtectionFunctionName) { this.debugProtectionFunctionName = debugProtectionFunctionName; @@ -3079,17 +2972,17 @@ var DebugProtectionFunctionIntervalNode = function (_AbstractCustomNode_) { }, { key: "getCode", value: function getCode() { - return format(DebugProtectionFunctionIntervalTemplate_1.DebugProtectionFunctionIntervalTemplate(), { + return format(DebufProtectionFunctionCallTemplate_1.DebugProtectionFunctionCallTemplate(), { debugProtectionFunctionName: this.debugProtectionFunctionName }); } }]); - return DebugProtectionFunctionIntervalNode; + return DebugProtectionFunctionCallNode; }(AbstractCustomNode_1.AbstractCustomNode); -__decorate([Initializable_1.initializable(), __metadata('design:type', String)], DebugProtectionFunctionIntervalNode.prototype, "debugProtectionFunctionName", void 0); -DebugProtectionFunctionIntervalNode = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata('design:paramtypes', [Object])], DebugProtectionFunctionIntervalNode); -exports.DebugProtectionFunctionIntervalNode = DebugProtectionFunctionIntervalNode; +__decorate([Initializable_1.initializable(), __metadata('design:type', String)], DebugProtectionFunctionCallNode.prototype, "debugProtectionFunctionName", void 0); +DebugProtectionFunctionCallNode = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata('design:paramtypes', [Object])], DebugProtectionFunctionCallNode); +exports.DebugProtectionFunctionCallNode = DebugProtectionFunctionCallNode; /***/ }, /* 54 */ @@ -3128,18 +3021,18 @@ var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var format = __webpack_require__(8); var Initializable_1 = __webpack_require__(3); -var DebugProtectionFunctionTemplate_1 = __webpack_require__(102); +var DebugProtectionFunctionIntervalTemplate_1 = __webpack_require__(102); var AbstractCustomNode_1 = __webpack_require__(7); -var DebugProtectionFunctionNode = function (_AbstractCustomNode_) { - _inherits(DebugProtectionFunctionNode, _AbstractCustomNode_); +var DebugProtectionFunctionIntervalNode = function (_AbstractCustomNode_) { + _inherits(DebugProtectionFunctionIntervalNode, _AbstractCustomNode_); - function DebugProtectionFunctionNode(options) { - _classCallCheck(this, DebugProtectionFunctionNode); + function DebugProtectionFunctionIntervalNode(options) { + _classCallCheck(this, DebugProtectionFunctionIntervalNode); - return _possibleConstructorReturn(this, (DebugProtectionFunctionNode.__proto__ || Object.getPrototypeOf(DebugProtectionFunctionNode)).call(this, options)); + return _possibleConstructorReturn(this, (DebugProtectionFunctionIntervalNode.__proto__ || Object.getPrototypeOf(DebugProtectionFunctionIntervalNode)).call(this, options)); } - _createClass(DebugProtectionFunctionNode, [{ + _createClass(DebugProtectionFunctionIntervalNode, [{ key: "initialize", value: function initialize(debugProtectionFunctionName) { this.debugProtectionFunctionName = debugProtectionFunctionName; @@ -3147,17 +3040,17 @@ var DebugProtectionFunctionNode = function (_AbstractCustomNode_) { }, { key: "getCode", value: function getCode() { - return format(DebugProtectionFunctionTemplate_1.DebugProtectionFunctionTemplate(), { + return format(DebugProtectionFunctionIntervalTemplate_1.DebugProtectionFunctionIntervalTemplate(), { debugProtectionFunctionName: this.debugProtectionFunctionName }); } }]); - return DebugProtectionFunctionNode; + return DebugProtectionFunctionIntervalNode; }(AbstractCustomNode_1.AbstractCustomNode); -__decorate([Initializable_1.initializable(), __metadata('design:type', String)], DebugProtectionFunctionNode.prototype, "debugProtectionFunctionName", void 0); -DebugProtectionFunctionNode = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata('design:paramtypes', [Object])], DebugProtectionFunctionNode); -exports.DebugProtectionFunctionNode = DebugProtectionFunctionNode; +__decorate([Initializable_1.initializable(), __metadata('design:type', String)], DebugProtectionFunctionIntervalNode.prototype, "debugProtectionFunctionName", void 0); +DebugProtectionFunctionIntervalNode = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata('design:paramtypes', [Object])], DebugProtectionFunctionIntervalNode); +exports.DebugProtectionFunctionIntervalNode = DebugProtectionFunctionIntervalNode; /***/ }, /* 55 */ @@ -3194,9 +3087,77 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator) }; var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); +var format = __webpack_require__(8); var Initializable_1 = __webpack_require__(3); -var CustomNodes_1 = __webpack_require__(14); -var ObfuscationEvents_1 = __webpack_require__(13); +var DebugProtectionFunctionTemplate_1 = __webpack_require__(103); +var AbstractCustomNode_1 = __webpack_require__(7); +var DebugProtectionFunctionNode = function (_AbstractCustomNode_) { + _inherits(DebugProtectionFunctionNode, _AbstractCustomNode_); + + function DebugProtectionFunctionNode(options) { + _classCallCheck(this, DebugProtectionFunctionNode); + + return _possibleConstructorReturn(this, (DebugProtectionFunctionNode.__proto__ || Object.getPrototypeOf(DebugProtectionFunctionNode)).call(this, options)); + } + + _createClass(DebugProtectionFunctionNode, [{ + key: "initialize", + value: function initialize(debugProtectionFunctionName) { + this.debugProtectionFunctionName = debugProtectionFunctionName; + } + }, { + key: "getCode", + value: function getCode() { + return format(DebugProtectionFunctionTemplate_1.DebugProtectionFunctionTemplate(), { + debugProtectionFunctionName: this.debugProtectionFunctionName + }); + } + }]); + + return DebugProtectionFunctionNode; +}(AbstractCustomNode_1.AbstractCustomNode); +__decorate([Initializable_1.initializable(), __metadata('design:type', String)], DebugProtectionFunctionNode.prototype, "debugProtectionFunctionName", void 0); +DebugProtectionFunctionNode = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata('design:paramtypes', [Object])], DebugProtectionFunctionNode); +exports.DebugProtectionFunctionNode = DebugProtectionFunctionNode; + +/***/ }, +/* 56 */ +/***/ function(module, exports, __webpack_require__) { + +"use strict"; +"use strict"; + +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; }; })(); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +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 __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) { + var c = arguments.length, + r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, + d; + if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { + if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + }return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = undefined && undefined.__metadata || function (k, v) { + if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = undefined && undefined.__param || function (paramIndex, decorator) { + return function (target, key) { + decorator(target, key, paramIndex); + }; +}; +var inversify_1 = __webpack_require__(0); +var ServiceIdentifiers_1 = __webpack_require__(1); +var Initializable_1 = __webpack_require__(3); +var CustomNodes_1 = __webpack_require__(13); +var ObfuscationEvents_1 = __webpack_require__(14); var AbstractCustomNodeGroup_1 = __webpack_require__(18); var NodeAppender_1 = __webpack_require__(16); var RandomGeneratorUtils_1 = __webpack_require__(2); @@ -3258,7 +3219,7 @@ DebugProtectionCustomNodeGroup = __decorate([inversify_1.injectable(), __param(0 exports.DebugProtectionCustomNodeGroup = DebugProtectionCustomNodeGroup; /***/ }, -/* 56 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3296,7 +3257,7 @@ var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var format = __webpack_require__(8); var Initializable_1 = __webpack_require__(3); -var DomainLockNodeTemplate_1 = __webpack_require__(103); +var DomainLockNodeTemplate_1 = __webpack_require__(104); var AbstractCustomNode_1 = __webpack_require__(7); var CryptUtils_1 = __webpack_require__(25); var RandomGeneratorUtils_1 = __webpack_require__(2); @@ -3338,7 +3299,7 @@ DomainLockNode = __decorate([inversify_1.injectable(), __param(0, inversify_1.in exports.DomainLockNode = DomainLockNode; /***/ }, -/* 57 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3373,8 +3334,8 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator) var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var Initializable_1 = __webpack_require__(3); -var CustomNodes_1 = __webpack_require__(14); -var ObfuscationEvents_1 = __webpack_require__(13); +var CustomNodes_1 = __webpack_require__(13); +var ObfuscationEvents_1 = __webpack_require__(14); var AbstractCustomNodeGroup_1 = __webpack_require__(18); var NodeAppender_1 = __webpack_require__(16); var RandomGeneratorUtils_1 = __webpack_require__(2); @@ -3432,93 +3393,6 @@ __decorate([Initializable_1.initializable(), __metadata('design:type', Map)], Do DomainLockCustomNodeGroup = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers['Factory'])), __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata('design:paramtypes', [Function, Object, Object])], DomainLockCustomNodeGroup); exports.DomainLockCustomNodeGroup = DomainLockCustomNodeGroup; -/***/ }, -/* 58 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; -"use strict"; - -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; }; })(); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -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 __assign = undefined && undefined.__assign || Object.assign || function (t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) { - if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - } - return t; -}; -var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) { - var c = arguments.length, - r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, - d; - if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { - if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - }return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = undefined && undefined.__metadata || function (k, v) { - if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = undefined && undefined.__param || function (paramIndex, decorator) { - return function (target, key) { - decorator(target, key, paramIndex); - }; -}; -var inversify_1 = __webpack_require__(0); -var ServiceIdentifiers_1 = __webpack_require__(1); -var format = __webpack_require__(8); -var ObfuscationEvents_1 = __webpack_require__(13); -var Initializable_1 = __webpack_require__(3); -var SingleNodeCallControllerTemplate_1 = __webpack_require__(95); -var NoCustomNodesPreset_1 = __webpack_require__(21); -var AbstractCustomNode_1 = __webpack_require__(7); -var JavaScriptObfuscator_1 = __webpack_require__(15); -var NodeCallsControllerFunctionNode = function (_AbstractCustomNode_) { - _inherits(NodeCallsControllerFunctionNode, _AbstractCustomNode_); - - function NodeCallsControllerFunctionNode(options) { - _classCallCheck(this, NodeCallsControllerFunctionNode); - - return _possibleConstructorReturn(this, (NodeCallsControllerFunctionNode.__proto__ || Object.getPrototypeOf(NodeCallsControllerFunctionNode)).call(this, options)); - } - - _createClass(NodeCallsControllerFunctionNode, [{ - key: "initialize", - value: function initialize(appendEvent, callsControllerFunctionName) { - this.appendEvent = appendEvent; - this.callsControllerFunctionName = callsControllerFunctionName; - } - }, { - key: "getCode", - value: function getCode() { - if (this.appendEvent === ObfuscationEvents_1.ObfuscationEvents.AfterObfuscation) { - return JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(format(SingleNodeCallControllerTemplate_1.SingleNodeCallControllerTemplate(), { - singleNodeCallControllerFunctionName: this.callsControllerFunctionName - }), __assign({}, NoCustomNodesPreset_1.NO_CUSTOM_NODES_PRESET, { seed: this.options.seed })).getObfuscatedCode(); - } - return format(SingleNodeCallControllerTemplate_1.SingleNodeCallControllerTemplate(), { - singleNodeCallControllerFunctionName: this.callsControllerFunctionName - }); - } - }]); - - return NodeCallsControllerFunctionNode; -}(AbstractCustomNode_1.AbstractCustomNode); -__decorate([Initializable_1.initializable(), __metadata("design:type", String)], NodeCallsControllerFunctionNode.prototype, "appendEvent", void 0); -__decorate([Initializable_1.initializable(), __metadata("design:type", String)], NodeCallsControllerFunctionNode.prototype, "callsControllerFunctionName", void 0); -NodeCallsControllerFunctionNode = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata("design:paramtypes", [Object])], NodeCallsControllerFunctionNode); -exports.NodeCallsControllerFunctionNode = NodeCallsControllerFunctionNode; - /***/ }, /* 59 */ /***/ function(module, exports, __webpack_require__) { @@ -3536,6 +3410,93 @@ 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 __assign = undefined && undefined.__assign || Object.assign || function (t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) { + if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + } + return t; +}; +var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) { + var c = arguments.length, + r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, + d; + if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { + if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + }return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = undefined && undefined.__metadata || function (k, v) { + if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = undefined && undefined.__param || function (paramIndex, decorator) { + return function (target, key) { + decorator(target, key, paramIndex); + }; +}; +var inversify_1 = __webpack_require__(0); +var ServiceIdentifiers_1 = __webpack_require__(1); +var format = __webpack_require__(8); +var ObfuscationEvents_1 = __webpack_require__(14); +var Initializable_1 = __webpack_require__(3); +var SingleNodeCallControllerTemplate_1 = __webpack_require__(96); +var NoCustomNodesPreset_1 = __webpack_require__(21); +var AbstractCustomNode_1 = __webpack_require__(7); +var JavaScriptObfuscator_1 = __webpack_require__(15); +var NodeCallsControllerFunctionNode = function (_AbstractCustomNode_) { + _inherits(NodeCallsControllerFunctionNode, _AbstractCustomNode_); + + function NodeCallsControllerFunctionNode(options) { + _classCallCheck(this, NodeCallsControllerFunctionNode); + + return _possibleConstructorReturn(this, (NodeCallsControllerFunctionNode.__proto__ || Object.getPrototypeOf(NodeCallsControllerFunctionNode)).call(this, options)); + } + + _createClass(NodeCallsControllerFunctionNode, [{ + key: "initialize", + value: function initialize(appendEvent, callsControllerFunctionName) { + this.appendEvent = appendEvent; + this.callsControllerFunctionName = callsControllerFunctionName; + } + }, { + key: "getCode", + value: function getCode() { + if (this.appendEvent === ObfuscationEvents_1.ObfuscationEvents.AfterObfuscation) { + return JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(format(SingleNodeCallControllerTemplate_1.SingleNodeCallControllerTemplate(), { + singleNodeCallControllerFunctionName: this.callsControllerFunctionName + }), __assign({}, NoCustomNodesPreset_1.NO_CUSTOM_NODES_PRESET, { seed: this.options.seed })).getObfuscatedCode(); + } + return format(SingleNodeCallControllerTemplate_1.SingleNodeCallControllerTemplate(), { + singleNodeCallControllerFunctionName: this.callsControllerFunctionName + }); + } + }]); + + return NodeCallsControllerFunctionNode; +}(AbstractCustomNode_1.AbstractCustomNode); +__decorate([Initializable_1.initializable(), __metadata("design:type", String)], NodeCallsControllerFunctionNode.prototype, "appendEvent", void 0); +__decorate([Initializable_1.initializable(), __metadata("design:type", String)], NodeCallsControllerFunctionNode.prototype, "callsControllerFunctionName", void 0); +NodeCallsControllerFunctionNode = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata("design:paramtypes", [Object])], NodeCallsControllerFunctionNode); +exports.NodeCallsControllerFunctionNode = NodeCallsControllerFunctionNode; + +/***/ }, +/* 60 */ +/***/ function(module, exports, __webpack_require__) { + +"use strict"; +"use strict"; + +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; }; })(); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +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 __assign = undefined && undefined.__assign || Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; @@ -3566,7 +3527,7 @@ var ServiceIdentifiers_1 = __webpack_require__(1); var format = __webpack_require__(8); var Initializable_1 = __webpack_require__(3); var NoCustomNodesPreset_1 = __webpack_require__(21); -var SelfDefendingTemplate_1 = __webpack_require__(104); +var SelfDefendingTemplate_1 = __webpack_require__(105); var AbstractCustomNode_1 = __webpack_require__(7); var JavaScriptObfuscator_1 = __webpack_require__(15); var RandomGeneratorUtils_1 = __webpack_require__(2); @@ -3601,7 +3562,7 @@ SelfDefendingUnicodeNode = __decorate([inversify_1.injectable(), __param(0, inve exports.SelfDefendingUnicodeNode = SelfDefendingUnicodeNode; /***/ }, -/* 60 */ +/* 61 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3636,8 +3597,8 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator) var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var Initializable_1 = __webpack_require__(3); -var CustomNodes_1 = __webpack_require__(14); -var ObfuscationEvents_1 = __webpack_require__(13); +var CustomNodes_1 = __webpack_require__(13); +var ObfuscationEvents_1 = __webpack_require__(14); var AbstractCustomNodeGroup_1 = __webpack_require__(18); var NodeAppender_1 = __webpack_require__(16); var RandomGeneratorUtils_1 = __webpack_require__(2); @@ -3696,7 +3657,7 @@ SelfDefendingCustomNodeGroup = __decorate([inversify_1.injectable(), __param(0, exports.SelfDefendingCustomNodeGroup = SelfDefendingCustomNodeGroup; /***/ }, -/* 61 */ +/* 62 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3743,12 +3704,12 @@ var format = __webpack_require__(8); var StringArrayEncoding_1 = __webpack_require__(22); var Initializable_1 = __webpack_require__(3); var NoCustomNodesPreset_1 = __webpack_require__(21); -var AtobTemplate_1 = __webpack_require__(93); -var Rc4Template_1 = __webpack_require__(94); -var SelfDefendingTemplate_1 = __webpack_require__(105); -var StringArrayBase64DecodeNodeTemplate_1 = __webpack_require__(106); -var StringArrayCallsWrapperTemplate_1 = __webpack_require__(107); -var StringArrayRC4DecodeNodeTemplate_1 = __webpack_require__(108); +var AtobTemplate_1 = __webpack_require__(94); +var Rc4Template_1 = __webpack_require__(95); +var SelfDefendingTemplate_1 = __webpack_require__(106); +var StringArrayBase64DecodeNodeTemplate_1 = __webpack_require__(107); +var StringArrayCallsWrapperTemplate_1 = __webpack_require__(108); +var StringArrayRC4DecodeNodeTemplate_1 = __webpack_require__(109); var AbstractCustomNode_1 = __webpack_require__(7); var JavaScriptObfuscator_1 = __webpack_require__(15); var StringArrayCallsWrapper = function (_AbstractCustomNode_) { @@ -3823,7 +3784,7 @@ StringArrayCallsWrapper = __decorate([inversify_1.injectable(), __param(0, inver exports.StringArrayCallsWrapper = StringArrayCallsWrapper; /***/ }, -/* 62 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3869,8 +3830,8 @@ var ServiceIdentifiers_1 = __webpack_require__(1); var format = __webpack_require__(8); var Initializable_1 = __webpack_require__(3); var NoCustomNodesPreset_1 = __webpack_require__(21); -var SelfDefendingTemplate_1 = __webpack_require__(110); -var StringArrayRotateFunctionTemplate_1 = __webpack_require__(111); +var SelfDefendingTemplate_1 = __webpack_require__(111); +var StringArrayRotateFunctionTemplate_1 = __webpack_require__(112); var AbstractCustomNode_1 = __webpack_require__(7); var JavaScriptObfuscator_1 = __webpack_require__(15); var RandomGeneratorUtils_1 = __webpack_require__(2); @@ -3924,7 +3885,7 @@ StringArrayRotateFunctionNode = __decorate([inversify_1.injectable(), __param(0, exports.StringArrayRotateFunctionNode = StringArrayRotateFunctionNode; /***/ }, -/* 63 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3959,13 +3920,13 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator) var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var Initializable_1 = __webpack_require__(3); -var CustomNodes_1 = __webpack_require__(14); -var ObfuscationEvents_1 = __webpack_require__(13); -var StringArrayNode_1 = __webpack_require__(29); +var CustomNodes_1 = __webpack_require__(13); +var ObfuscationEvents_1 = __webpack_require__(14); +var StringArrayNode_1 = __webpack_require__(28); var AbstractCustomNodeGroup_1 = __webpack_require__(18); var NodeAppender_1 = __webpack_require__(16); var RandomGeneratorUtils_1 = __webpack_require__(2); -var StringArrayStorage_1 = __webpack_require__(92); +var StringArrayStorage_1 = __webpack_require__(93); var StringArrayCustomNodeGroup = function (_AbstractCustomNodeGr) { _inherits(StringArrayCustomNodeGroup, _AbstractCustomNodeGr); @@ -4034,7 +3995,7 @@ StringArrayCustomNodeGroup = __decorate([inversify_1.injectable(), __param(0, in exports.StringArrayCustomNodeGroup = StringArrayCustomNodeGroup; /***/ }, -/* 64 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4046,18 +4007,6 @@ exports.VisitorDirection = Utils_1.Utils.strEnumify({ leave: 'leave' }); -/***/ }, -/* 65 */ -/***/ function(module, exports) { - -"use strict"; -"use strict"; - -(function (NodeControlFlowTransformersReplacers) { - NodeControlFlowTransformersReplacers[NodeControlFlowTransformersReplacers["BinaryExpressionControlFlowReplacer"] = 0] = "BinaryExpressionControlFlowReplacer"; -})(exports.NodeControlFlowTransformersReplacers || (exports.NodeControlFlowTransformersReplacers = {})); -var NodeControlFlowTransformersReplacers = exports.NodeControlFlowTransformersReplacers; - /***/ }, /* 66 */ /***/ function(module, exports, __webpack_require__) { @@ -4085,7 +4034,7 @@ var __metadata = undefined && undefined.__metadata || function (k, v) { if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var inversify_1 = __webpack_require__(0); -var events_1 = __webpack_require__(116); +var events_1 = __webpack_require__(117); inversify_1.decorate(inversify_1.injectable(), events_1.EventEmitter); var ObfuscationEventEmitter = function (_events_1$EventEmitte) { _inherits(ObfuscationEventEmitter, _events_1$EventEmitte); @@ -4137,21 +4086,25 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator) var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var estraverse = __webpack_require__(6); +var CustomNodes_1 = __webpack_require__(13); var NodeType_1 = __webpack_require__(9); var AbstractNodeTransformer_1 = __webpack_require__(11); -var BinaryExpressionControlFlowReplacer_1 = __webpack_require__(33); -var ControlFlowStorage_1 = __webpack_require__(90); -var ControlFlowStorageNode_1 = __webpack_require__(28); var Node_1 = __webpack_require__(5); var NodeAppender_1 = __webpack_require__(16); +var NodeControlFlowReplacers_1 = __webpack_require__(31); var RandomGeneratorUtils_1 = __webpack_require__(2); -var FunctionControlFlowTransformer_1 = function (_AbstractNodeTransfor) { +var FunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = function (_AbstractNodeTransfor) { _inherits(FunctionControlFlowTransformer, _AbstractNodeTransfor); - function FunctionControlFlowTransformer(options) { + function FunctionControlFlowTransformer(controlFlowStorageFactory, controlFlowReplacerFactory, customNodeFactory, options) { _classCallCheck(this, FunctionControlFlowTransformer); - return _possibleConstructorReturn(this, (FunctionControlFlowTransformer.__proto__ || Object.getPrototypeOf(FunctionControlFlowTransformer)).call(this, options)); + var _this = _possibleConstructorReturn(this, (FunctionControlFlowTransformer.__proto__ || Object.getPrototypeOf(FunctionControlFlowTransformer)).call(this, options)); + + _this.controlFlowStorageFactory = controlFlowStorageFactory; + _this.controlFlowReplacerFactory = controlFlowReplacerFactory; + _this.customNodeFactory = customNodeFactory; + return _this; } _createClass(FunctionControlFlowTransformer, [{ @@ -4167,15 +4120,15 @@ var FunctionControlFlowTransformer_1 = function (_AbstractNodeTransfor) { if (Node_1.Node.isArrowFunctionExpressionNode(functionNode)) { return; } - var controlFlowStorage = new ControlFlowStorage_1.ControlFlowStorage(); + var controlFlowStorage = this.controlFlowStorageFactory(); var controlFlowStorageCustomNodeName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6); estraverse.replace(functionNode.body, { enter: function enter(node, parentNode) { - var controlFlowReplacer = FunctionControlFlowTransformer_1.controlFlowReplacers.get(node.type); - if (!controlFlowReplacer) { + var controlFlowReplacerName = FunctionControlFlowTransformer_1.controlFlowReplacersMap.get(node.type); + if (controlFlowReplacerName === undefined) { return; } - var controlFlowStorageCallCustomNode = new controlFlowReplacer(_this2.options).replace(node, parentNode, controlFlowStorage, controlFlowStorageCustomNodeName); + var controlFlowStorageCallCustomNode = _this2.controlFlowReplacerFactory(controlFlowReplacerName).replace(node, parentNode, controlFlowStorage, controlFlowStorageCustomNodeName); if (!controlFlowStorageCallCustomNode) { return; } @@ -4189,7 +4142,7 @@ var FunctionControlFlowTransformer_1 = function (_AbstractNodeTransfor) { if (!controlFlowStorage.getLength()) { return; } - var controlFlowStorageCustomNode = new ControlFlowStorageNode_1.ControlFlowStorageNode(this.options); + var controlFlowStorageCustomNode = this.customNodeFactory(CustomNodes_1.CustomNodes.ControlFlowStorageNode); controlFlowStorageCustomNode.initialize(controlFlowStorage, controlFlowStorageCustomNodeName); NodeAppender_1.NodeAppender.prependNode(functionNode.body, controlFlowStorageCustomNode.getNode()); } @@ -4197,10 +4150,10 @@ var FunctionControlFlowTransformer_1 = function (_AbstractNodeTransfor) { return FunctionControlFlowTransformer; }(AbstractNodeTransformer_1.AbstractNodeTransformer); -var FunctionControlFlowTransformer = FunctionControlFlowTransformer_1; -FunctionControlFlowTransformer.controlFlowReplacers = new Map([[NodeType_1.NodeType.BinaryExpression, BinaryExpressionControlFlowReplacer_1.BinaryExpressionControlFlowReplacer]]); -FunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata('design:paramtypes', [Object])], FunctionControlFlowTransformer); +FunctionControlFlowTransformer.controlFlowReplacersMap = new Map([[NodeType_1.NodeType.BinaryExpression, NodeControlFlowReplacers_1.NodeControlFlowReplacers.BinaryExpressionControlFlowReplacer]]); +FunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers['Factory>'])), __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers['Factory'])), __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers['Factory'])), __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata("design:paramtypes", [Function, Function, Function, Object])], FunctionControlFlowTransformer); exports.FunctionControlFlowTransformer = FunctionControlFlowTransformer; +var FunctionControlFlowTransformer_1; /***/ }, /* 68 */ @@ -4273,6 +4226,82 @@ 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 __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) { + var c = arguments.length, + r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, + d; + if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { + if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + }return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = undefined && undefined.__metadata || function (k, v) { + if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = undefined && undefined.__param || function (paramIndex, decorator) { + return function (target, key) { + decorator(target, key, paramIndex); + }; +}; +var inversify_1 = __webpack_require__(0); +var ServiceIdentifiers_1 = __webpack_require__(1); +var escodegen = __webpack_require__(17); +var CustomNodes_1 = __webpack_require__(13); +var AbstractControlFlowReplacer_1 = __webpack_require__(68); +var BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = function (_AbstractControlFlowR) { + _inherits(BinaryExpressionControlFlowReplacer, _AbstractControlFlowR); + + function BinaryExpressionControlFlowReplacer(customNodeFactory, options) { + _classCallCheck(this, BinaryExpressionControlFlowReplacer); + + var _this = _possibleConstructorReturn(this, (BinaryExpressionControlFlowReplacer.__proto__ || Object.getPrototypeOf(BinaryExpressionControlFlowReplacer)).call(this, options)); + + _this.customNodeFactory = customNodeFactory; + return _this; + } + + _createClass(BinaryExpressionControlFlowReplacer, [{ + key: "replace", + value: function replace(binaryExpressionNode, parentNode, controlFlowStorage, controlFlowStorageCustomNodeName) { + var key = AbstractControlFlowReplacer_1.AbstractControlFlowReplacer.getStorageKey(); + var binaryExpressionFunctionNode = this.customNodeFactory(CustomNodes_1.CustomNodes.BinaryExpressionFunctionNode); + var controlFlowStorageCallNode = this.customNodeFactory(CustomNodes_1.CustomNodes.ControlFlowStorageCallNode); + binaryExpressionFunctionNode.initialize(binaryExpressionNode.operator); + controlFlowStorageCallNode.initialize(controlFlowStorageCustomNodeName, key, BinaryExpressionControlFlowReplacer_1.getExpressionValue(binaryExpressionNode.left), BinaryExpressionControlFlowReplacer_1.getExpressionValue(binaryExpressionNode.right)); + controlFlowStorage.set(key, binaryExpressionFunctionNode); + return controlFlowStorageCallNode; + } + }], [{ + key: "getExpressionValue", + value: function getExpressionValue(expressionNode) { + return escodegen.generate(expressionNode, { + sourceMapWithCode: true + }).code; + } + }]); + + return BinaryExpressionControlFlowReplacer; +}(AbstractControlFlowReplacer_1.AbstractControlFlowReplacer); +BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = __decorate([inversify_1.injectable(), __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers['Factory'])), __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), __metadata("design:paramtypes", [Function, Object])], BinaryExpressionControlFlowReplacer); +exports.BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer; +var BinaryExpressionControlFlowReplacer_1; + +/***/ }, +/* 70 */ +/***/ function(module, exports, __webpack_require__) { + +"use strict"; +"use strict"; + +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; }; })(); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +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 __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, @@ -4352,7 +4381,7 @@ CatchClauseObfuscator = __decorate([inversify_1.injectable(), __param(0, inversi exports.CatchClauseObfuscator = CatchClauseObfuscator; /***/ }, -/* 70 */ +/* 71 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4451,7 +4480,7 @@ FunctionDeclarationObfuscator = __decorate([inversify_1.injectable(), __param(0, exports.FunctionDeclarationObfuscator = FunctionDeclarationObfuscator; /***/ }, -/* 71 */ +/* 72 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4556,7 +4585,7 @@ FunctionObfuscator = __decorate([inversify_1.injectable(), __param(0, inversify_ exports.FunctionObfuscator = FunctionObfuscator; /***/ }, -/* 72 */ +/* 73 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4651,7 +4680,7 @@ LabeledStatementObfuscator = __decorate([inversify_1.injectable(), __param(0, in exports.LabeledStatementObfuscator = LabeledStatementObfuscator; /***/ }, -/* 73 */ +/* 74 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4734,7 +4763,7 @@ LiteralObfuscator = __decorate([inversify_1.injectable(), __param(0, inversify_1 exports.LiteralObfuscator = LiteralObfuscator; /***/ }, -/* 74 */ +/* 75 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4841,7 +4870,7 @@ MemberExpressionObfuscator = __decorate([inversify_1.injectable(), __param(0, in exports.MemberExpressionObfuscator = MemberExpressionObfuscator; /***/ }, -/* 75 */ +/* 76 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4923,7 +4952,7 @@ MethodDefinitionObfuscator = MethodDefinitionObfuscator_1 = __decorate([inversif exports.MethodDefinitionObfuscator = MethodDefinitionObfuscator; /***/ }, -/* 76 */ +/* 77 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5028,7 +5057,7 @@ ObjectExpressionObfuscator = __decorate([inversify_1.injectable(), __param(0, in exports.ObjectExpressionObfuscator = ObjectExpressionObfuscator; /***/ }, -/* 77 */ +/* 78 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5130,7 +5159,7 @@ VariableDeclarationObfuscator = __decorate([inversify_1.injectable(), __param(0, exports.VariableDeclarationObfuscator = VariableDeclarationObfuscator; /***/ }, -/* 78 */ +/* 79 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5164,7 +5193,7 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator) }; var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); -var JSFuck_1 = __webpack_require__(30); +var JSFuck_1 = __webpack_require__(29); var AbstractReplacer_1 = __webpack_require__(20); var BooleanLiteralReplacer = function (_AbstractReplacer_1$A) { _inherits(BooleanLiteralReplacer, _AbstractReplacer_1$A); @@ -5188,7 +5217,7 @@ BooleanLiteralReplacer = __decorate([inversify_1.injectable(), __param(0, invers exports.BooleanLiteralReplacer = BooleanLiteralReplacer; /***/ }, -/* 79 */ +/* 80 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5275,7 +5304,7 @@ IdentifierReplacer = __decorate([inversify_1.injectable(), __param(0, inversify_ exports.IdentifierReplacer = IdentifierReplacer; /***/ }, -/* 80 */ +/* 81 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5336,7 +5365,7 @@ NumberLiteralReplacer = __decorate([inversify_1.injectable(), __param(0, inversi exports.NumberLiteralReplacer = NumberLiteralReplacer; /***/ }, -/* 81 */ +/* 82 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5373,7 +5402,7 @@ var ServiceIdentifiers_1 = __webpack_require__(1); var StringArrayEncoding_1 = __webpack_require__(22); var AbstractReplacer_1 = __webpack_require__(20); var CryptUtils_1 = __webpack_require__(25); -var CustomNodes_1 = __webpack_require__(14); +var CustomNodes_1 = __webpack_require__(13); var CustomNodeGroups_1 = __webpack_require__(23); var RandomGeneratorUtils_1 = __webpack_require__(2); var Utils_1 = __webpack_require__(4); @@ -5445,7 +5474,7 @@ StringLiteralReplacer = StringLiteralReplacer_1 = __decorate([inversify_1.inject exports.StringLiteralReplacer = StringLiteralReplacer; /***/ }, -/* 82 */ +/* 83 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5467,10 +5496,10 @@ var __metadata = undefined && undefined.__metadata || function (k, v) { if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var inversify_1 = __webpack_require__(0); -var class_validator_1 = __webpack_require__(114); -var DefaultPreset_1 = __webpack_require__(34); -var OptionsNormalizer_1 = __webpack_require__(83); -var ValidationErrorsFormatter_1 = __webpack_require__(84); +var class_validator_1 = __webpack_require__(115); +var DefaultPreset_1 = __webpack_require__(33); +var OptionsNormalizer_1 = __webpack_require__(84); +var ValidationErrorsFormatter_1 = __webpack_require__(85); var Options_1 = function Options(inputOptions) { _classCallCheck(this, Options); @@ -5519,7 +5548,7 @@ exports.Options = Options; var _a; /***/ }, -/* 83 */ +/* 84 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5691,7 +5720,7 @@ OptionsNormalizer.normalizerRules = [OptionsNormalizer.domainLockRule, OptionsNo exports.OptionsNormalizer = OptionsNormalizer; /***/ }, -/* 84 */ +/* 85 */ /***/ function(module, exports) { "use strict"; @@ -5758,7 +5787,7 @@ var ValidationErrorsFormatter = function () { exports.ValidationErrorsFormatter = ValidationErrorsFormatter; /***/ }, -/* 85 */ +/* 86 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5798,7 +5827,7 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator) var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var estraverse = __webpack_require__(6); -var CalleeDataExtractors_1 = __webpack_require__(31); +var CalleeDataExtractors_1 = __webpack_require__(30); var Node_1 = __webpack_require__(5); var NodeUtils_1 = __webpack_require__(10); var StackTraceAnalyzer = StackTraceAnalyzer_1 = function () { @@ -5883,7 +5912,7 @@ exports.StackTraceAnalyzer = StackTraceAnalyzer; var StackTraceAnalyzer_1; /***/ }, -/* 86 */ +/* 87 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5961,7 +5990,7 @@ FunctionDeclarationCalleeDataExtractor = __decorate([inversify_1.injectable(), _ exports.FunctionDeclarationCalleeDataExtractor = FunctionDeclarationCalleeDataExtractor; /***/ }, -/* 87 */ +/* 88 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6042,7 +6071,7 @@ FunctionExpressionCalleeDataExtractor = __decorate([inversify_1.injectable(), __ exports.FunctionExpressionCalleeDataExtractor = FunctionExpressionCalleeDataExtractor; /***/ }, -/* 88 */ +/* 89 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6193,7 +6222,7 @@ ObjectExpressionCalleeDataExtractor = __decorate([inversify_1.injectable(), __me exports.ObjectExpressionCalleeDataExtractor = ObjectExpressionCalleeDataExtractor; /***/ }, -/* 89 */ +/* 90 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6266,7 +6295,7 @@ __decorate([Initializable_1.initializable(), __metadata('design:type', Array)], exports.ArrayStorage = ArrayStorage; /***/ }, -/* 90 */ +/* 91 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6282,7 +6311,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 MapStorage_1 = __webpack_require__(35); +var MapStorage_1 = __webpack_require__(34); var ControlFlowStorage = function (_MapStorage_1$MapStor) { _inherits(ControlFlowStorage, _MapStorage_1$MapStor); @@ -6316,7 +6345,7 @@ var ControlFlowStorage = function (_MapStorage_1$MapStor) { exports.ControlFlowStorage = ControlFlowStorage; /***/ }, -/* 91 */ +/* 92 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6351,7 +6380,7 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator) var inversify_1 = __webpack_require__(0); var ServiceIdentifiers_1 = __webpack_require__(1); var CustomNodeGroups_1 = __webpack_require__(23); -var MapStorage_1 = __webpack_require__(35); +var MapStorage_1 = __webpack_require__(34); var CustomNodeGroupStorage_1 = function (_MapStorage_1$MapStor) { _inherits(CustomNodeGroupStorage, _MapStorage_1$MapStor); @@ -6390,7 +6419,7 @@ CustomNodeGroupStorage = CustomNodeGroupStorage_1 = __decorate([inversify_1.inje exports.CustomNodeGroupStorage = CustomNodeGroupStorage; /***/ }, -/* 92 */ +/* 93 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6404,7 +6433,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 ArrayStorage_1 = __webpack_require__(89); +var ArrayStorage_1 = __webpack_require__(90); var Utils_1 = __webpack_require__(4); var StringArrayStorage = function (_ArrayStorage_1$Array) { @@ -6439,7 +6468,7 @@ var StringArrayStorage = function (_ArrayStorage_1$Array) { exports.StringArrayStorage = StringArrayStorage; /***/ }, -/* 93 */ +/* 94 */ /***/ function(module, exports) { "use strict"; @@ -6451,7 +6480,7 @@ function AtobTemplate() { exports.AtobTemplate = AtobTemplate; /***/ }, -/* 94 */ +/* 95 */ /***/ function(module, exports) { "use strict"; @@ -6463,7 +6492,7 @@ function Rc4Template() { exports.Rc4Template = Rc4Template; /***/ }, -/* 95 */ +/* 96 */ /***/ function(module, exports) { "use strict"; @@ -6475,7 +6504,7 @@ function SingleNodeCallControllerTemplate() { exports.SingleNodeCallControllerTemplate = SingleNodeCallControllerTemplate; /***/ }, -/* 96 */ +/* 97 */ /***/ function(module, exports) { "use strict"; @@ -6487,7 +6516,7 @@ function ConsoleOutputDisableExpressionTemplate() { exports.ConsoleOutputDisableExpressionTemplate = ConsoleOutputDisableExpressionTemplate; /***/ }, -/* 97 */ +/* 98 */ /***/ function(module, exports) { "use strict"; @@ -6499,7 +6528,7 @@ function BinaryExpressionFunctionTemplate() { exports.BinaryExpressionFunctionTemplate = BinaryExpressionFunctionTemplate; /***/ }, -/* 98 */ +/* 99 */ /***/ function(module, exports) { "use strict"; @@ -6511,7 +6540,7 @@ function ControlFlowStorageCallTemplate() { exports.ControlFlowStorageCallTemplate = ControlFlowStorageCallTemplate; /***/ }, -/* 99 */ +/* 100 */ /***/ function(module, exports) { "use strict"; @@ -6523,7 +6552,7 @@ function ControlFlowStorageTemplate() { exports.ControlFlowStorageTemplate = ControlFlowStorageTemplate; /***/ }, -/* 100 */ +/* 101 */ /***/ function(module, exports) { "use strict"; @@ -6535,7 +6564,7 @@ function DebugProtectionFunctionCallTemplate() { exports.DebugProtectionFunctionCallTemplate = DebugProtectionFunctionCallTemplate; /***/ }, -/* 101 */ +/* 102 */ /***/ function(module, exports) { "use strict"; @@ -6547,7 +6576,7 @@ function DebugProtectionFunctionIntervalTemplate() { exports.DebugProtectionFunctionIntervalTemplate = DebugProtectionFunctionIntervalTemplate; /***/ }, -/* 102 */ +/* 103 */ /***/ function(module, exports) { "use strict"; @@ -6559,7 +6588,7 @@ function DebugProtectionFunctionTemplate() { exports.DebugProtectionFunctionTemplate = DebugProtectionFunctionTemplate; /***/ }, -/* 103 */ +/* 104 */ /***/ function(module, exports) { "use strict"; @@ -6571,7 +6600,7 @@ function DomainLockNodeTemplate() { exports.DomainLockNodeTemplate = DomainLockNodeTemplate; /***/ }, -/* 104 */ +/* 105 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6584,7 +6613,7 @@ function SelfDefendingTemplate() { exports.SelfDefendingTemplate = SelfDefendingTemplate; /***/ }, -/* 105 */ +/* 106 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6597,7 +6626,7 @@ function SelfDefendingTemplate() { exports.SelfDefendingTemplate = SelfDefendingTemplate; /***/ }, -/* 106 */ +/* 107 */ /***/ function(module, exports) { "use strict"; @@ -6609,7 +6638,7 @@ function StringArrayBase64DecodeNodeTemplate() { exports.StringArrayBase64DecodeNodeTemplate = StringArrayBase64DecodeNodeTemplate; /***/ }, -/* 107 */ +/* 108 */ /***/ function(module, exports) { "use strict"; @@ -6621,7 +6650,7 @@ function StringArrayCallsWrapperTemplate() { exports.StringArrayCallsWrapperTemplate = StringArrayCallsWrapperTemplate; /***/ }, -/* 108 */ +/* 109 */ /***/ function(module, exports) { "use strict"; @@ -6633,7 +6662,7 @@ function StringArrayRc4DecodeNodeTemplate() { exports.StringArrayRc4DecodeNodeTemplate = StringArrayRc4DecodeNodeTemplate; /***/ }, -/* 109 */ +/* 110 */ /***/ function(module, exports) { "use strict"; @@ -6645,7 +6674,7 @@ function StringArrayTemplate() { exports.StringArrayTemplate = StringArrayTemplate; /***/ }, -/* 110 */ +/* 111 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6658,7 +6687,7 @@ function SelfDefendingTemplate() { exports.SelfDefendingTemplate = SelfDefendingTemplate; /***/ }, -/* 111 */ +/* 112 */ /***/ function(module, exports) { "use strict"; @@ -6670,62 +6699,62 @@ function StringArrayRotateFunctionTemplate() { exports.StringArrayRotateFunctionTemplate = StringArrayRotateFunctionTemplate; /***/ }, -/* 112 */ +/* 113 */ /***/ function(module, exports) { module.exports = require("babel-polyfill"); /***/ }, -/* 113 */ +/* 114 */ /***/ function(module, exports) { module.exports = require("chance"); /***/ }, -/* 114 */ +/* 115 */ /***/ function(module, exports) { module.exports = require("class-validator"); /***/ }, -/* 115 */ +/* 116 */ /***/ function(module, exports) { module.exports = require("commander"); /***/ }, -/* 116 */ +/* 117 */ /***/ function(module, exports) { module.exports = require("events"); /***/ }, -/* 117 */ +/* 118 */ /***/ function(module, exports) { module.exports = require("fs"); /***/ }, -/* 118 */ +/* 119 */ /***/ function(module, exports) { module.exports = require("is-equal"); /***/ }, -/* 119 */ +/* 120 */ /***/ function(module, exports) { module.exports = require("mkdirp"); /***/ }, -/* 120 */ +/* 121 */ /***/ function(module, exports) { module.exports = require("reflect-metadata"); /***/ }, -/* 121 */, -/* 122 */ +/* 122 */, +/* 123 */ /***/ function(module, exports, __webpack_require__) { "use strict"; diff --git a/package.json b/package.json index 0916e403..6c2c3f49 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "javascript-obfuscator": "./bin/javascript-obfuscator.js" }, "dependencies": { - "babel-polyfill": "6.16.0", + "babel-polyfill": "6.20.0", "chance": "1.0.4", "class-validator": "0.6.6", "commander": "2.9.0", diff --git a/src/container/InversifyContainerFacade.ts b/src/container/InversifyContainerFacade.ts index 92149b0a..2ccc1fa7 100644 --- a/src/container/InversifyContainerFacade.ts +++ b/src/container/InversifyContainerFacade.ts @@ -6,6 +6,7 @@ import { nodeControlFlowTransformersModule } from './modules/node-transformers/N import { nodeObfuscatorsModule } from './modules/node-transformers/NodeObfuscatorsModule'; import { nodeTransformersModule } from './modules/node-transformers/NodeTransformersModule'; import { stackTraceAnalyzerModule } from './modules/stack-trace-analyzer/StackTraceAnalyzerModule'; +import { storagesModule } from './modules/storages/StoragesModule'; import { TInputOptions } from '../types/options/TInputOptions'; @@ -23,9 +24,6 @@ import { ObfuscationResult } from '../ObfuscationResult'; import { Obfuscator } from '../Obfuscator'; import { Options } from "../options/Options"; import { SourceMapCorrector } from '../SourceMapCorrector'; -import { IStorage } from '../interfaces/storages/IStorage'; -import { ICustomNodeGroup } from '../interfaces/custom-nodes/ICustomNodeGroup'; -import { CustomNodeGroupStorage } from '../storages/custom-node-group/CustomNodeGroupStorage'; export class InversifyContainerFacade implements IInversifyContainerFacade { /** @@ -79,17 +77,13 @@ export class InversifyContainerFacade implements IInversifyContainerFacade { .to(SourceMapCorrector) .inSingletonScope(); - this.container - .bind>(ServiceIdentifiers['IStorage']) - .to(CustomNodeGroupStorage) - .inSingletonScope(); - this.container .bind(ServiceIdentifiers.IObfuscationEventEmitter) .to(ObfuscationEventEmitter) .inSingletonScope(); // modules + this.container.load(storagesModule); this.container.load(stackTraceAnalyzerModule); this.container.load(customNodesModule); this.container.load(nodeTransformersModule); diff --git a/src/container/ServiceIdentifiers.ts b/src/container/ServiceIdentifiers.ts index d52e1e1b..8444f373 100644 --- a/src/container/ServiceIdentifiers.ts +++ b/src/container/ServiceIdentifiers.ts @@ -6,6 +6,7 @@ export const ServiceIdentifiers: any = { 'Factory': Symbol('Factory'), 'Factory': Symbol('Factory'), 'Factory': Symbol('Factory'), + 'Factory>': Symbol('Factory>'), ICalleeDataExtractor: Symbol('ICalleeDataExtractor'), ICustomNode: Symbol('ICustomNode'), ICustomNodeGroup: Symbol('ICustomNodeGroup'), @@ -19,5 +20,6 @@ export const ServiceIdentifiers: any = { IReplacer: Symbol('IReplacer'), ISourceMapCorrector: Symbol('ISourceMapCorrector'), IStackTraceAnalyzer: Symbol('IStackTraceAnalyzer'), + 'IStorage': Symbol('IStorage'), 'IStorage': Symbol('IStorage') }; diff --git a/src/container/modules/node-transformers/NodeControlFlowTransformersModule.ts b/src/container/modules/node-transformers/NodeControlFlowTransformersModule.ts index 00066a10..54ab5c27 100644 --- a/src/container/modules/node-transformers/NodeControlFlowTransformersModule.ts +++ b/src/container/modules/node-transformers/NodeControlFlowTransformersModule.ts @@ -3,30 +3,30 @@ import { ServiceIdentifiers } from '../../ServiceIdentifiers'; import { IControlFlowReplacer } from '../../../interfaces/node-transformers/IControlFlowReplacer'; -import { NodeControlFlowTransformersReplacers } from '../../../enums/container/NodeControlFlowTransformersReplacers'; +import { NodeControlFlowReplacers } from '../../../enums/container/NodeControlFlowReplacers'; import { BinaryExpressionControlFlowReplacer } from '../../../node-transformers/node-control-flow-transformers/control-flow-replacers/BinaryExpressionControlFlowReplacer'; export const nodeControlFlowTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => { bind(ServiceIdentifiers.IControlFlowReplacer) .to(BinaryExpressionControlFlowReplacer) - .whenTargetNamed(NodeControlFlowTransformersReplacers.BinaryExpressionControlFlowReplacer); + .whenTargetNamed(NodeControlFlowReplacers.BinaryExpressionControlFlowReplacer); bind(ServiceIdentifiers['Factory']) .toFactory((context: interfaces.Context) => { - const cache: Map = new Map (); + const cache: Map = new Map (); - return (replacer: NodeControlFlowTransformersReplacers) => { - if (cache.has(replacer)) { - return cache.get(replacer); + return (replacerName: NodeControlFlowReplacers) => { + if (cache.has(replacerName)) { + return cache.get(replacerName); } const controlFlowReplacer: IControlFlowReplacer = context.container.getNamed( ServiceIdentifiers.IControlFlowReplacer, - replacer + replacerName ); - cache.set(replacer, controlFlowReplacer); + cache.set(replacerName, controlFlowReplacer); return controlFlowReplacer; }; diff --git a/src/container/modules/node-transformers/NodeObfuscatorsModule.ts b/src/container/modules/node-transformers/NodeObfuscatorsModule.ts index 8c1ac395..aaab99af 100644 --- a/src/container/modules/node-transformers/NodeObfuscatorsModule.ts +++ b/src/container/modules/node-transformers/NodeObfuscatorsModule.ts @@ -31,17 +31,17 @@ export const nodeObfuscatorsModule: interfaces.ContainerModule = new ContainerMo .toFactory((context: interfaces.Context) => { const cache: Map = new Map (); - return (replacer: NodeObfuscatorsReplacers) => { - if (cache.has(replacer)) { - return cache.get(replacer); + return (replacerName: NodeObfuscatorsReplacers) => { + if (cache.has(replacerName)) { + return cache.get(replacerName); } const obfuscationReplacer: IReplacer = context.container.getNamed( ServiceIdentifiers.IReplacer, - replacer + replacerName ); - cache.set(replacer, obfuscationReplacer); + cache.set(replacerName, obfuscationReplacer); return obfuscationReplacer; }; diff --git a/src/container/modules/storages/StoragesModule.ts b/src/container/modules/storages/StoragesModule.ts new file mode 100644 index 00000000..f1787925 --- /dev/null +++ b/src/container/modules/storages/StoragesModule.ts @@ -0,0 +1,27 @@ +import { ContainerModule, interfaces } from 'inversify'; +import { ServiceIdentifiers } from '../../ServiceIdentifiers'; + +import { ICustomNode } from '../../../interfaces/custom-nodes/ICustomNode'; +import { ICustomNodeGroup } from '../../../interfaces/custom-nodes/ICustomNodeGroup'; +import { IStorage } from '../../../interfaces/storages/IStorage'; + +import { ControlFlowStorage } from '../../../storages/control-flow/ControlFlowStorage'; +import { CustomNodeGroupStorage } from '../../../storages/custom-node-group/CustomNodeGroupStorage'; + +export const storagesModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => { + // storages + bind>(ServiceIdentifiers['IStorage']) + .to(CustomNodeGroupStorage) + .inSingletonScope(); + + bind>(ServiceIdentifiers['IStorage']) + .to(ControlFlowStorage); + + // controlFlowStorage factory + bind>(ServiceIdentifiers['Factory>']) + .toFactory>((context: interfaces.Context) => { + return () => { + return context.container.get>(ServiceIdentifiers['IStorage']); + }; + }); +}); diff --git a/src/enums/container/NodeControlFlowReplacers.ts b/src/enums/container/NodeControlFlowReplacers.ts new file mode 100644 index 00000000..2e923e6d --- /dev/null +++ b/src/enums/container/NodeControlFlowReplacers.ts @@ -0,0 +1,3 @@ +export enum NodeControlFlowReplacers { + BinaryExpressionControlFlowReplacer +} diff --git a/src/enums/container/NodeControlFlowTransformersReplacers.ts b/src/enums/container/NodeControlFlowTransformersReplacers.ts deleted file mode 100644 index 553a362a..00000000 --- a/src/enums/container/NodeControlFlowTransformersReplacers.ts +++ /dev/null @@ -1,3 +0,0 @@ -export enum NodeControlFlowTransformersReplacers { - BinaryExpressionControlFlowReplacer -} diff --git a/src/node-transformers/node-control-flow-transformers/FunctionControlFlowTransformer.ts b/src/node-transformers/node-control-flow-transformers/FunctionControlFlowTransformer.ts index 1da1fe92..f02c6a1c 100644 --- a/src/node-transformers/node-control-flow-transformers/FunctionControlFlowTransformer.ts +++ b/src/node-transformers/node-control-flow-transformers/FunctionControlFlowTransformer.ts @@ -4,39 +4,65 @@ import { ServiceIdentifiers } from '../../container/ServiceIdentifiers'; import * as estraverse from 'estraverse'; import * as ESTree from 'estree'; -import { TControlFlowReplacer } from '../../types/node-transformers/TControlFlowReplacer'; +import { TControlFlowReplacerFactory } from '../../types/container/TControlFlowReplacerFactory'; +import { TControlFlowStorageFactory } from '../../types/container/TControlFlowStorageFactory'; +import { TCustomNodeFactory } from '../../types/container/TCustomNodeFactory'; import { TStatement } from '../../types/node/TStatement'; import { ICustomNode } from '../../interfaces/custom-nodes/ICustomNode'; import { IOptions } from '../../interfaces/options/IOptions'; import { IStorage } from '../../interfaces/storages/IStorage'; +import { CustomNodes } from '../../enums/container/CustomNodes'; import { NodeType } from '../../enums/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; -import { BinaryExpressionControlFlowReplacer } from './control-flow-replacers/BinaryExpressionControlFlowReplacer'; -import { ControlFlowStorage } from '../../storages/control-flow/ControlFlowStorage'; -import { ControlFlowStorageNode } from '../../custom-nodes/control-flow-storage-nodes/ControlFlowStorageNode'; import { Node } from '../../node/Node'; import { NodeAppender } from '../../node/NodeAppender'; +import { NodeControlFlowReplacers } from '../../enums/container/NodeControlFlowReplacers'; import { RandomGeneratorUtils } from '../../utils/RandomGeneratorUtils'; @injectable() export class FunctionControlFlowTransformer extends AbstractNodeTransformer { /** - * @type {Map } + * @type {Map } */ - private static readonly controlFlowReplacers: Map = new Map ([ - [NodeType.BinaryExpression, BinaryExpressionControlFlowReplacer] + private static readonly controlFlowReplacersMap: Map = new Map ([ + [NodeType.BinaryExpression, NodeControlFlowReplacers.BinaryExpressionControlFlowReplacer] ]); /** + * @type {TControlFlowReplacerFactory} + */ + private readonly controlFlowReplacerFactory: TControlFlowReplacerFactory; + + /** + * @type {TControlFlowStorageFactory} + */ + private readonly controlFlowStorageFactory: TControlFlowStorageFactory; + + /** + * @type {TCustomNodeFactory} + */ + private readonly customNodeFactory: TCustomNodeFactory; + + /** + * @param controlFlowStorageFactory + * @param controlFlowReplacerFactory + * @param customNodeFactory * @param options */ constructor ( + @inject(ServiceIdentifiers['Factory>']) controlFlowStorageFactory: TControlFlowStorageFactory, + @inject(ServiceIdentifiers['Factory']) controlFlowReplacerFactory: TControlFlowReplacerFactory, + @inject(ServiceIdentifiers['Factory']) customNodeFactory: TCustomNodeFactory, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { super(options); + + this.controlFlowStorageFactory = controlFlowStorageFactory; + this.controlFlowReplacerFactory = controlFlowReplacerFactory; + this.customNodeFactory = customNodeFactory; } /** @@ -54,21 +80,20 @@ export class FunctionControlFlowTransformer extends AbstractNodeTransformer { return; } - const controlFlowStorage: IStorage = new ControlFlowStorage(); + const controlFlowStorage: IStorage = this.controlFlowStorageFactory(); const controlFlowStorageCustomNodeName: string = RandomGeneratorUtils.getRandomVariableName(6); estraverse.replace(functionNode.body, { enter: (node: ESTree.Node, parentNode: ESTree.Node): any => { - const controlFlowReplacer: TControlFlowReplacer | undefined = FunctionControlFlowTransformer - .controlFlowReplacers.get(node.type); + const controlFlowReplacerName: NodeControlFlowReplacers | undefined = FunctionControlFlowTransformer + .controlFlowReplacersMap.get(node.type); - if (!controlFlowReplacer) { + if (controlFlowReplacerName === undefined) { return; } - const controlFlowStorageCallCustomNode: ICustomNode | undefined = new controlFlowReplacer( - this.options - ).replace(node, parentNode, controlFlowStorage, controlFlowStorageCustomNodeName); + const controlFlowStorageCallCustomNode: ICustomNode | undefined = this.controlFlowReplacerFactory(controlFlowReplacerName) + .replace(node, parentNode, controlFlowStorage, controlFlowStorageCustomNodeName); if (!controlFlowStorageCallCustomNode) { return; @@ -78,7 +103,7 @@ export class FunctionControlFlowTransformer extends AbstractNodeTransformer { // so we can get it by index `0` // also we need to return `expression` property of `ExpressionStatement` node because bug: // https://github.com/estools/escodegen/issues/289 - const statementNode: TStatement | undefined = controlFlowStorageCallCustomNode.getNode()[0]; + const statementNode: TStatement = controlFlowStorageCallCustomNode.getNode()[0]; if (!statementNode || !Node.isExpressionStatementNode(statementNode)) { throw new Error(`\`controlFlowStorageCallCustomNode.getNode()\` should returns array with \`ExpressionStatement\` node`); @@ -92,7 +117,7 @@ export class FunctionControlFlowTransformer extends AbstractNodeTransformer { return; } - const controlFlowStorageCustomNode: ICustomNode = new ControlFlowStorageNode(this.options); + const controlFlowStorageCustomNode: ICustomNode = this.customNodeFactory(CustomNodes.ControlFlowStorageNode); controlFlowStorageCustomNode.initialize(controlFlowStorage, controlFlowStorageCustomNodeName); diff --git a/src/node-transformers/node-control-flow-transformers/control-flow-replacers/BinaryExpressionControlFlowReplacer.ts b/src/node-transformers/node-control-flow-transformers/control-flow-replacers/BinaryExpressionControlFlowReplacer.ts index 4a869840..7b87380e 100644 --- a/src/node-transformers/node-control-flow-transformers/control-flow-replacers/BinaryExpressionControlFlowReplacer.ts +++ b/src/node-transformers/node-control-flow-transformers/control-flow-replacers/BinaryExpressionControlFlowReplacer.ts @@ -4,23 +4,34 @@ import { ServiceIdentifiers } from '../../../container/ServiceIdentifiers'; import * as escodegen from 'escodegen'; import * as ESTree from 'estree'; +import { TCustomNodeFactory } from '../../../types/container/TCustomNodeFactory'; + import { ICustomNode } from '../../../interfaces/custom-nodes/ICustomNode'; import { IOptions } from '../../../interfaces/options/IOptions'; import { IStorage } from '../../../interfaces/storages/IStorage'; +import { CustomNodes } from '../../../enums/container/CustomNodes'; + import { AbstractControlFlowReplacer } from './AbstractControlFlowReplacer'; -import { BinaryExpressionFunctionNode } from '../../../custom-nodes/control-flow-replacers-nodes/binary-expression-control-flow-replacer-nodes/BinaryExpressionFunctionNode'; -import { ControlFlowStorageCallNode } from '../../../custom-nodes/control-flow-replacers-nodes/binary-expression-control-flow-replacer-nodes/ControlFlowStorageCallNode'; @injectable() export class BinaryExpressionControlFlowReplacer extends AbstractControlFlowReplacer { /** + * @type {TCustomNodeFactory} + */ + private readonly customNodeFactory: TCustomNodeFactory; + + /** + * @param customNodeFactory * @param options */ constructor ( + @inject(ServiceIdentifiers['Factory']) customNodeFactory: TCustomNodeFactory, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { super(options); + + this.customNodeFactory = customNodeFactory; } /** @@ -47,15 +58,10 @@ export class BinaryExpressionControlFlowReplacer extends AbstractControlFlowRepl controlFlowStorageCustomNodeName: string ): ICustomNode { const key: string = AbstractControlFlowReplacer.getStorageKey(); - const binaryExpressionFunctionNode = new BinaryExpressionFunctionNode(this.options); + const binaryExpressionFunctionNode: ICustomNode = this.customNodeFactory(CustomNodes.BinaryExpressionFunctionNode); + const controlFlowStorageCallNode: ICustomNode = this.customNodeFactory(CustomNodes.ControlFlowStorageCallNode); - // TODO: pass through real stackTraceData binaryExpressionFunctionNode.initialize(binaryExpressionNode.operator); - - controlFlowStorage.set(key, binaryExpressionFunctionNode); - - const controlFlowStorageCallNode: ICustomNode = new ControlFlowStorageCallNode(this.options); - controlFlowStorageCallNode.initialize( controlFlowStorageCustomNodeName, key, @@ -63,6 +69,8 @@ export class BinaryExpressionControlFlowReplacer extends AbstractControlFlowRepl BinaryExpressionControlFlowReplacer.getExpressionValue(binaryExpressionNode.right) ); + controlFlowStorage.set(key, binaryExpressionFunctionNode); + return controlFlowStorageCallNode; } } diff --git a/src/types/container/TControlFlowReplacerFactory.d.ts b/src/types/container/TControlFlowReplacerFactory.d.ts new file mode 100644 index 00000000..e2dcb672 --- /dev/null +++ b/src/types/container/TControlFlowReplacerFactory.d.ts @@ -0,0 +1,5 @@ +import { IControlFlowReplacer } from '../../interfaces/node-transformers/IControlFlowReplacer'; + +import { NodeControlFlowReplacers } from '../../enums/container/NodeControlFlowReplacers'; + +export type TControlFlowReplacerFactory = (replacer: NodeControlFlowReplacers) => IControlFlowReplacer; diff --git a/src/types/container/TControlFlowStorageFactory.d.ts b/src/types/container/TControlFlowStorageFactory.d.ts new file mode 100644 index 00000000..ce5031ba --- /dev/null +++ b/src/types/container/TControlFlowStorageFactory.d.ts @@ -0,0 +1,4 @@ +import { ICustomNode } from '../../interfaces/custom-nodes/ICustomNode'; +import { IStorage } from '../../interfaces/storages/IStorage'; + +export type TControlFlowStorageFactory = () => IStorage; diff --git a/src/types/node-transformers/TControlFlowReplacer.d.ts b/src/types/node-transformers/TControlFlowReplacer.d.ts deleted file mode 100644 index acaafe1b..00000000 --- a/src/types/node-transformers/TControlFlowReplacer.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { IControlFlowReplacer } from '../../interfaces/node-transformers/IControlFlowReplacer'; -import { IOptions } from '../../interfaces/options/IOptions'; - -export type TControlFlowReplacer = (new (options: IOptions) => IControlFlowReplacer); diff --git a/test/unit-tests/storages/ControlFlowStorage.spec.ts b/test/unit-tests/storages/ControlFlowStorage.spec.ts index cd350ff8..f93a9250 100644 --- a/test/unit-tests/storages/ControlFlowStorage.spec.ts +++ b/test/unit-tests/storages/ControlFlowStorage.spec.ts @@ -1,7 +1,8 @@ -/* import { ServiceIdentifiers } from '../../../src/container/ServiceIdentifiers'; - import { assert } from 'chai'; +import { assert } from 'chai'; + +import { TCustomNodeFactory } from '../../../src/types/container/TCustomNodeFactory'; import { ICustomNode } from '../../../src/interfaces/custom-nodes/ICustomNode'; import { IInversifyContainerFacade } from '../../../src/interfaces/container/IInversifyContainerFacade'; @@ -13,19 +14,29 @@ import { InversifyContainerFacade } from '../../../src/container/InversifyContai describe('ControlFlowStorage', () => { describe('toString (): string', () => { - it('should returns obfuscated code if `.toString()` was called on `ObfuscationResult` object', () => { + it('should return correct ControlFlowStorage data after `.toString()` call', () => { + const key1: string = 'key1'; + const key2: string = 'key2'; const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade({ controlFlowFlattening: true }); + const customNodeFactory: TCustomNodeFactory = inversifyContainerFacade + .get(ServiceIdentifiers['Factory']); const controlFlowStorage: IStorage = inversifyContainerFacade .get>(ServiceIdentifiers['IStorage']); - const controlFlowStorageCallNode: ICustomNode = inversifyContainerFacade - .getNamed(ServiceIdentifiers.ICustomNode, CustomNodes.ControlFlowStorageCallNode); + const controlFlowStorageCallNode1: ICustomNode = customNodeFactory(CustomNodes.ControlFlowStorageCallNode); + const controlFlowStorageCallNode2: ICustomNode = customNodeFactory(CustomNodes.ControlFlowStorageCallNode); - controlFlowStorage.set('key1', controlFlowStorageCallNode); + controlFlowStorageCallNode1.initialize('controlFlowStorageName', key1, 1, 2); + controlFlowStorageCallNode2.initialize('controlFlowStorageName', key2, 3, 4); - assert.equal(controlFlowStorage.toString(), [`key1: ${controlFlowStorageCallNode.getCode()}`]); + controlFlowStorage.set(key1, controlFlowStorageCallNode1); + controlFlowStorage.set(key2, controlFlowStorageCallNode2); + + assert.equal( + controlFlowStorage.toString(), + `${key1}: ${controlFlowStorageCallNode1.getCode()},${key2}: ${controlFlowStorageCallNode2.getCode()}` + ); }); }); }); -*/