diff --git a/dist/index.js b/dist/index.js index 138dc0b8..0f22eb4e 100644 --- a/dist/index.js +++ b/dist/index.js @@ -90,36 +90,36 @@ module.exports = /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 150); +/******/ return __webpack_require__(__webpack_require__.s = 151); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/helpers/classCallCheck"); -/***/ }, +/***/ }), /* 1 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/helpers/createClass"); -/***/ }, +/***/ }), /* 2 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("inversify"); -/***/ }, +/***/ }), /* 3 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("tslib"); -/***/ }, +/***/ }), /* 4 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -157,32 +157,32 @@ exports.ServiceIdentifiers = { TStringArrayStorage: (0, _symbol2.default)('TStringArrayStorage') }; -/***/ }, +/***/ }), /* 5 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/core-js/object/get-prototype-of"); -/***/ }, +/***/ }), /* 6 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/helpers/inherits"); -/***/ }, +/***/ }), /* 7 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/helpers/possibleConstructorReturn"); -/***/ }, +/***/ }), /* 8 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _getIterator2 = __webpack_require__(22); +var _getIterator2 = __webpack_require__(21); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -201,7 +201,7 @@ var esprima = __webpack_require__(49); var estraverse = __webpack_require__(17); var NodeType_1 = __webpack_require__(18); var Node_1 = __webpack_require__(12); -var Nodes_1 = __webpack_require__(21); +var Nodes_1 = __webpack_require__(20); var NodeUtils = function () { function NodeUtils() { @@ -377,9 +377,9 @@ var NodeUtils = function () { NodeUtils.nodesWithBlockScope = [NodeType_1.NodeType.ArrowFunctionExpression, NodeType_1.NodeType.FunctionDeclaration, NodeType_1.NodeType.FunctionExpression, NodeType_1.NodeType.MethodDefinition, NodeType_1.NodeType.Program]; exports.NodeUtils = NodeUtils; -/***/ }, +/***/ }), /* 9 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -476,9 +476,9 @@ RandomGeneratorUtils.randomGeneratorPoolWithNumbers = RandomGeneratorUtils.rando RandomGeneratorUtils.randomVariableNameSet = new _set2.default(); exports.RandomGeneratorUtils = RandomGeneratorUtils; -/***/ }, +/***/ }), /* 10 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -532,15 +532,15 @@ function initializable() { } exports.initializable = initializable; -/***/ }, +/***/ }), /* 11 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/core-js/map"); -/***/ }, +/***/ }), /* 12 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -567,6 +567,11 @@ var Node = function () { value: function isArrowFunctionExpressionNode(node) { return node.type === NodeType_1.NodeType.ArrowFunctionExpression; } + }, { + key: "isAssignmentPatternNode", + value: function isAssignmentPatternNode(node) { + return node.type === NodeType_1.NodeType.AssignmentPattern; + } }, { key: "isBlockStatementNode", value: function isBlockStatementNode(node) { @@ -635,6 +640,11 @@ var Node = function () { value: function isMemberExpressionNode(node) { return node.type === NodeType_1.NodeType.MemberExpression; } + }, { + key: "isObjectPatternNode", + value: function isObjectPatternNode(node) { + return node.type === NodeType_1.NodeType.ObjectPattern; + } }, { key: "isObjectExpressionNode", value: function isObjectExpressionNode(node) { @@ -686,9 +696,9 @@ var Node = function () { exports.Node = Node; -/***/ }, +/***/ }), /* 13 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -736,9 +746,9 @@ var AbstractCustomNode = function () { AbstractCustomNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], AbstractCustomNode); exports.AbstractCustomNode = AbstractCustomNode; -/***/ }, +/***/ }), /* 14 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -755,11 +765,11 @@ var _slicedToArray2 = __webpack_require__(35); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); -var _getIterator2 = __webpack_require__(22); +var _getIterator2 = __webpack_require__(21); var _getIterator3 = _interopRequireDefault(_getIterator2); -var _toConsumableArray2 = __webpack_require__(26); +var _toConsumableArray2 = __webpack_require__(24); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); @@ -930,9 +940,9 @@ Utils.hexadecimalPrefix = '0x'; Utils.stringToUnicodeEscapeSequenceCache = new _map2.default(); exports.Utils = Utils; -/***/ }, +/***/ }), /* 15 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -958,9 +968,9 @@ var CustomNodes; CustomNodes[CustomNodes["StringArrayRotateFunctionNode"] = 16] = "StringArrayRotateFunctionNode"; })(CustomNodes = exports.CustomNodes || (exports.CustomNodes = {})); -/***/ }, +/***/ }), /* 16 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -984,15 +994,15 @@ var AbstractNodeTransformer = function AbstractNodeTransformer(options) { AbstractNodeTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], AbstractNodeTransformer); exports.AbstractNodeTransformer = AbstractNodeTransformer; -/***/ }, +/***/ }), /* 17 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("estraverse"); -/***/ }, +/***/ }), /* 18 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1002,6 +1012,7 @@ exports.NodeType = Utils_1.Utils.strEnumify({ ArrayExpression: 'ArrayExpression', ArrowFunctionExpression: 'ArrowFunctionExpression', AssignmentExpression: 'AssignmentExpression', + AssignmentPattern: 'AssignmentPattern', BinaryExpression: 'BinaryExpression', BlockStatement: 'BlockStatement', BreakStatement: 'BreakStatement', @@ -1020,6 +1031,7 @@ exports.NodeType = Utils_1.Utils.strEnumify({ MemberExpression: 'MemberExpression', MethodDefinition: 'MethodDefinition', ObjectExpression: 'ObjectExpression', + ObjectPattern: 'ObjectPattern', Program: 'Program', Property: 'Property', ReturnStatement: 'ReturnStatement', @@ -1034,30 +1046,15 @@ exports.NodeType = Utils_1.Utils.strEnumify({ WhileStatement: 'WhileStatement' }); -/***/ }, +/***/ }), /* 19 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("string-template"); -/***/ }, +/***/ }), /* 20 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; - - -var NodeObfuscatorsReplacers; -(function (NodeObfuscatorsReplacers) { - NodeObfuscatorsReplacers[NodeObfuscatorsReplacers["BooleanReplacer"] = 0] = "BooleanReplacer"; - NodeObfuscatorsReplacers[NodeObfuscatorsReplacers["IdentifierReplacer"] = 1] = "IdentifierReplacer"; - NodeObfuscatorsReplacers[NodeObfuscatorsReplacers["NumberLiteralReplacer"] = 2] = "NumberLiteralReplacer"; - NodeObfuscatorsReplacers[NodeObfuscatorsReplacers["StringLiteralReplacer"] = 3] = "StringLiteralReplacer"; -})(NodeObfuscatorsReplacers = exports.NodeObfuscatorsReplacers || (exports.NodeObfuscatorsReplacers = {})); - -/***/ }, -/* 21 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1389,15 +1386,15 @@ var Nodes = function () { exports.Nodes = Nodes; -/***/ }, -/* 22 */ -/***/ function(module, exports) { +/***/ }), +/* 21 */ +/***/ (function(module, exports) { module.exports = require("babel-runtime/core-js/get-iterator"); -/***/ }, -/* 23 */ -/***/ function(module, exports, __webpack_require__) { +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1407,9 +1404,30 @@ exports.ObfuscationEvents = { BeforeObfuscation: 'beforeObfuscation' }; -/***/ }, +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var NodeObfuscatorsReplacers; +(function (NodeObfuscatorsReplacers) { + NodeObfuscatorsReplacers[NodeObfuscatorsReplacers["BooleanReplacer"] = 0] = "BooleanReplacer"; + NodeObfuscatorsReplacers[NodeObfuscatorsReplacers["IdentifierReplacer"] = 1] = "IdentifierReplacer"; + NodeObfuscatorsReplacers[NodeObfuscatorsReplacers["NumberLiteralReplacer"] = 2] = "NumberLiteralReplacer"; + NodeObfuscatorsReplacers[NodeObfuscatorsReplacers["StringLiteralReplacer"] = 3] = "StringLiteralReplacer"; +})(NodeObfuscatorsReplacers = exports.NodeObfuscatorsReplacers || (exports.NodeObfuscatorsReplacers = {})); + +/***/ }), /* 24 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports) { + +module.exports = require("babel-runtime/helpers/toConsumableArray"); + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1462,18 +1480,18 @@ var JavaScriptObfuscator = function () { exports.JavaScriptObfuscator = JavaScriptObfuscator; -/***/ }, -/* 25 */ -/***/ function(module, exports, __webpack_require__) { +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _getIterator2 = __webpack_require__(22); +var _getIterator2 = __webpack_require__(21); var _getIterator3 = _interopRequireDefault(_getIterator2); -var _toConsumableArray2 = __webpack_require__(26); +var _toConsumableArray2 = __webpack_require__(24); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); @@ -1597,15 +1615,9 @@ var NodeAppender = function () { exports.NodeAppender = NodeAppender; -/***/ }, -/* 26 */ -/***/ function(module, exports) { - -module.exports = require("babel-runtime/helpers/toConsumableArray"); - -/***/ }, +/***/ }), /* 27 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1655,15 +1667,15 @@ var AbstractCustomNodeGroup = function () { AbstractCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], AbstractCustomNodeGroup); exports.AbstractCustomNodeGroup = AbstractCustomNodeGroup; -/***/ }, +/***/ }), /* 28 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("escodegen"); -/***/ }, +/***/ }), /* 29 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1673,9 +1685,9 @@ exports.SourceMapMode = { Separate: 'separate' }; -/***/ }, +/***/ }), /* 30 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1697,9 +1709,9 @@ var AbstractReplacer = function AbstractReplacer(options) { AbstractReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], AbstractReplacer); exports.AbstractReplacer = AbstractReplacer; -/***/ }, +/***/ }), /* 31 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1733,9 +1745,9 @@ exports.NO_CUSTOM_NODES_PRESET = (0, _freeze2.default)({ unicodeEscapeSequence: true }); -/***/ }, +/***/ }), /* 32 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1745,9 +1757,9 @@ exports.StringArrayEncoding = { rc4: 'rc4' }; -/***/ }, +/***/ }), /* 33 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1766,9 +1778,9 @@ var AbstractCalleeDataExtractor = function AbstractCalleeDataExtractor() { AbstractCalleeDataExtractor = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata("design:paramtypes", [])], AbstractCalleeDataExtractor); exports.AbstractCalleeDataExtractor = AbstractCalleeDataExtractor; -/***/ }, +/***/ }), /* 34 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1871,15 +1883,15 @@ var CryptUtils = function () { exports.CryptUtils = CryptUtils; -/***/ }, +/***/ }), /* 35 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/helpers/slicedToArray"); -/***/ }, +/***/ }), /* 36 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1941,9 +1953,9 @@ exports.JSFuck = { Z: '\'Z\'' }; -/***/ }, +/***/ }), /* 37 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1955,9 +1967,9 @@ var CalleeDataExtractors; CalleeDataExtractors[CalleeDataExtractors["ObjectExpressionCalleeDataExtractor"] = 2] = "ObjectExpressionCalleeDataExtractor"; })(CalleeDataExtractors = exports.CalleeDataExtractors || (exports.CalleeDataExtractors = {})); -/***/ }, +/***/ }), /* 38 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1971,9 +1983,9 @@ var CustomNodeGroups; CustomNodeGroups[CustomNodeGroups["StringArrayCustomNodeGroup"] = 4] = "StringArrayCustomNodeGroup"; })(CustomNodeGroups = exports.CustomNodeGroups || (exports.CustomNodeGroups = {})); -/***/ }, +/***/ }), /* 39 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1985,9 +1997,9 @@ var NodeControlFlowReplacers; NodeControlFlowReplacers[NodeControlFlowReplacers["LogicalExpressionControlFlowReplacer"] = 2] = "LogicalExpressionControlFlowReplacer"; })(NodeControlFlowReplacers = exports.NodeControlFlowReplacers || (exports.NodeControlFlowReplacers = {})); -/***/ }, +/***/ }), /* 40 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2008,9 +2020,9 @@ var NodeTransformers; NodeTransformers[NodeTransformers["VariableDeclarationTransformer"] = 11] = "VariableDeclarationTransformer"; })(NodeTransformers = exports.NodeTransformers || (exports.NodeTransformers = {})); -/***/ }, +/***/ }), /* 41 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2082,9 +2094,9 @@ AbstractControlFlowReplacer = AbstractControlFlowReplacer_1 = tslib_1.__decorate exports.AbstractControlFlowReplacer = AbstractControlFlowReplacer; var AbstractControlFlowReplacer_1; -/***/ }, +/***/ }), /* 42 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2150,9 +2162,9 @@ var ExpressionWithOperatorControlFlowReplacer = function (_AbstractControlFlowR) ExpressionWithOperatorControlFlowReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], ExpressionWithOperatorControlFlowReplacer); exports.ExpressionWithOperatorControlFlowReplacer = ExpressionWithOperatorControlFlowReplacer; -/***/ }, +/***/ }), /* 43 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2186,14 +2198,14 @@ exports.DEFAULT_PRESET = (0, _freeze2.default)({ unicodeEscapeSequence: true }); -/***/ }, +/***/ }), /* 44 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _toConsumableArray2 = __webpack_require__(26); +var _toConsumableArray2 = __webpack_require__(24); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); @@ -2279,45 +2291,45 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: MapStorage = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata("design:paramtypes", [])], MapStorage); exports.MapStorage = MapStorage; -/***/ }, +/***/ }), /* 45 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/core-js/array/from"); -/***/ }, +/***/ }), /* 46 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/core-js/object/freeze"); -/***/ }, +/***/ }), /* 47 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/core-js/object/keys"); -/***/ }, +/***/ }), /* 48 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/helpers/get"); -/***/ }, +/***/ }), /* 49 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("esprima"); -/***/ }, +/***/ }), /* 50 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("path"); -/***/ }, +/***/ }), /* 51 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2385,9 +2397,9 @@ JavaScriptObfuscatorInternal = JavaScriptObfuscatorInternal_1 = tslib_1.__decora exports.JavaScriptObfuscatorInternal = JavaScriptObfuscatorInternal; var JavaScriptObfuscatorInternal_1; -/***/ }, +/***/ }), /* 52 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2439,21 +2451,25 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: ObfuscationResult = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata("design:paramtypes", [])], ObfuscationResult); exports.ObfuscationResult = ObfuscationResult; -/***/ }, +/***/ }), /* 53 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _map = __webpack_require__(11); - -var _map2 = _interopRequireDefault(_map); - var _defineProperty2 = __webpack_require__(140); var _defineProperty3 = _interopRequireDefault(_defineProperty2); +var _toConsumableArray2 = __webpack_require__(24); + +var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); + +var _map = __webpack_require__(11); + +var _map2 = _interopRequireDefault(_map); + var _classCallCheck2 = __webpack_require__(0); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); @@ -2470,7 +2486,7 @@ var ServiceIdentifiers_1 = __webpack_require__(4); var estraverse = __webpack_require__(17); var NodeTransformers_1 = __webpack_require__(40); var NodeType_1 = __webpack_require__(18); -var ObfuscationEvents_1 = __webpack_require__(23); +var ObfuscationEvents_1 = __webpack_require__(22); var VisitorDirection_1 = __webpack_require__(86); var Node_1 = __webpack_require__(12); var NodeUtils_1 = __webpack_require__(8); @@ -2501,9 +2517,9 @@ var Obfuscator = Obfuscator_1 = function () { }); this.obfuscationEventEmitter.emit(ObfuscationEvents_1.ObfuscationEvents.BeforeObfuscation, astTree, stackTraceData); if (this.options.controlFlowFlattening) { - astTree = this.transformAstTree(astTree, VisitorDirection_1.VisitorDirection.leave, this.nodeTransformersFactory(Obfuscator_1.nodeControlFlowTransformersMap)); + astTree = this.transformAstTree(astTree, VisitorDirection_1.VisitorDirection.leave, this.nodeTransformersFactory(Obfuscator_1.controlFlowTransformersMap)); } - astTree = this.transformAstTree(astTree, VisitorDirection_1.VisitorDirection.enter, this.nodeTransformersFactory(Obfuscator_1.nodeObfuscatorsMap)); + astTree = this.transformAstTree(astTree, VisitorDirection_1.VisitorDirection.enter, this.nodeTransformersFactory(new _map2.default([].concat((0, _toConsumableArray3.default)(Obfuscator_1.convertingTransformersMap), (0, _toConsumableArray3.default)(Obfuscator_1.obfuscatingTransformersMap))))); this.obfuscationEventEmitter.emit(ObfuscationEvents_1.ObfuscationEvents.AfterObfuscation, astTree, stackTraceData); return astTree; } @@ -2522,15 +2538,16 @@ var Obfuscator = Obfuscator_1 = function () { }]); return Obfuscator; }(); -Obfuscator.nodeControlFlowTransformersMap = new _map2.default([[NodeType_1.NodeType.BlockStatement, [NodeTransformers_1.NodeTransformers.BlockStatementControlFlowTransformer]], [NodeType_1.NodeType.FunctionDeclaration, [NodeTransformers_1.NodeTransformers.FunctionControlFlowTransformer]], [NodeType_1.NodeType.FunctionExpression, [NodeTransformers_1.NodeTransformers.FunctionControlFlowTransformer]]]); -Obfuscator.nodeObfuscatorsMap = new _map2.default([[NodeType_1.NodeType.ArrowFunctionExpression, [NodeTransformers_1.NodeTransformers.FunctionTransformer]], [NodeType_1.NodeType.ClassDeclaration, [NodeTransformers_1.NodeTransformers.FunctionDeclarationTransformer]], [NodeType_1.NodeType.CatchClause, [NodeTransformers_1.NodeTransformers.CatchClauseTransformer]], [NodeType_1.NodeType.FunctionDeclaration, [NodeTransformers_1.NodeTransformers.FunctionDeclarationTransformer, NodeTransformers_1.NodeTransformers.FunctionTransformer]], [NodeType_1.NodeType.FunctionExpression, [NodeTransformers_1.NodeTransformers.FunctionTransformer]], [NodeType_1.NodeType.MemberExpression, [NodeTransformers_1.NodeTransformers.MemberExpressionTransformer]], [NodeType_1.NodeType.MethodDefinition, [NodeTransformers_1.NodeTransformers.MethodDefinitionTransformer]], [NodeType_1.NodeType.ObjectExpression, [NodeTransformers_1.NodeTransformers.ObjectExpressionTransformer]], [NodeType_1.NodeType.VariableDeclaration, [NodeTransformers_1.NodeTransformers.VariableDeclarationTransformer]], [NodeType_1.NodeType.LabeledStatement, [NodeTransformers_1.NodeTransformers.LabeledStatementTransformer]], [NodeType_1.NodeType.TemplateLiteral, [NodeTransformers_1.NodeTransformers.TemplateLiteralTransformer]], [NodeType_1.NodeType.Literal, [NodeTransformers_1.NodeTransformers.LiteralTransformer]]]); +Obfuscator.controlFlowTransformersMap = new _map2.default([[NodeType_1.NodeType.BlockStatement, [NodeTransformers_1.NodeTransformers.BlockStatementControlFlowTransformer]], [NodeType_1.NodeType.FunctionDeclaration, [NodeTransformers_1.NodeTransformers.FunctionControlFlowTransformer]], [NodeType_1.NodeType.FunctionExpression, [NodeTransformers_1.NodeTransformers.FunctionControlFlowTransformer]]]); +Obfuscator.convertingTransformersMap = new _map2.default([[NodeType_1.NodeType.MemberExpression, [NodeTransformers_1.NodeTransformers.MemberExpressionTransformer]], [NodeType_1.NodeType.MethodDefinition, [NodeTransformers_1.NodeTransformers.MethodDefinitionTransformer]], [NodeType_1.NodeType.TemplateLiteral, [NodeTransformers_1.NodeTransformers.TemplateLiteralTransformer]]]); +Obfuscator.obfuscatingTransformersMap = new _map2.default([[NodeType_1.NodeType.ArrowFunctionExpression, [NodeTransformers_1.NodeTransformers.FunctionTransformer]], [NodeType_1.NodeType.ClassDeclaration, [NodeTransformers_1.NodeTransformers.FunctionDeclarationTransformer]], [NodeType_1.NodeType.CatchClause, [NodeTransformers_1.NodeTransformers.CatchClauseTransformer]], [NodeType_1.NodeType.FunctionDeclaration, [NodeTransformers_1.NodeTransformers.FunctionDeclarationTransformer, NodeTransformers_1.NodeTransformers.FunctionTransformer]], [NodeType_1.NodeType.FunctionExpression, [NodeTransformers_1.NodeTransformers.FunctionTransformer]], [NodeType_1.NodeType.ObjectExpression, [NodeTransformers_1.NodeTransformers.ObjectExpressionTransformer]], [NodeType_1.NodeType.VariableDeclaration, [NodeTransformers_1.NodeTransformers.VariableDeclarationTransformer]], [NodeType_1.NodeType.LabeledStatement, [NodeTransformers_1.NodeTransformers.LabeledStatementTransformer]], [NodeType_1.NodeType.Literal, [NodeTransformers_1.NodeTransformers.LiteralTransformer]]]); Obfuscator = Obfuscator_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStackTraceAnalyzer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.TCustomNodeGroupStorage)), tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeTransformer)), tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object, Object, Object, Function, Object])], Obfuscator); exports.Obfuscator = Obfuscator; var Obfuscator_1; -/***/ }, +/***/ }), /* 54 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2591,9 +2608,9 @@ var SourceMapCorrector = function () { SourceMapCorrector = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscationResult)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], SourceMapCorrector); exports.SourceMapCorrector = SourceMapCorrector; -/***/ }, +/***/ }), /* 55 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2687,9 +2704,9 @@ CLIUtils.availableInputExtensions = ['.js']; CLIUtils.encoding = 'utf8'; exports.CLIUtils = CLIUtils; -/***/ }, +/***/ }), /* 56 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2715,7 +2732,7 @@ var SourceMapMode_1 = __webpack_require__(29); var StringArrayEncoding_1 = __webpack_require__(32); var Default_1 = __webpack_require__(43); var CLIUtils_1 = __webpack_require__(55); -var JavaScriptObfuscator_1 = __webpack_require__(24); +var JavaScriptObfuscator_1 = __webpack_require__(25); var JavaScriptObfuscatorCLI = function () { function JavaScriptObfuscatorCLI(argv) { @@ -2758,10 +2775,10 @@ var JavaScriptObfuscatorCLI = function () { }, { key: "configureCommands", value: function configureCommands() { - this.commands = new commander.Command().version(JavaScriptObfuscatorCLI.getBuildVersion(), '-v, --version').usage(' [options]').option('-o, --output ', 'Output path for obfuscated code').option('--compact ', 'Disable one line output code compacting', JavaScriptObfuscatorCLI.parseBoolean).option('--controlFlowFlattening ', 'Enables control flow flattening', JavaScriptObfuscatorCLI.parseBoolean).option('--controlFlowFlatteningThreshold ', 'The probability that the control flow flattening transformation will be applied to the node', parseFloat).option('--debugProtection ', 'Disable browser Debug panel (can cause DevTools enabled browser freeze)', JavaScriptObfuscatorCLI.parseBoolean).option('--debugProtectionInterval ', 'Disable browser Debug panel even after page was loaded (can cause DevTools enabled browser freeze)', JavaScriptObfuscatorCLI.parseBoolean).option('--disableConsoleOutput ', 'Allow console.log, console.info, console.error and console.warn messages output into browser console', JavaScriptObfuscatorCLI.parseBoolean).option('--domainLock ', 'Blocks the execution of the code in domains that do not match the passed RegExp patterns (comma separated)', function (val) { - return val.split(','); - }).option('--reservedNames ', 'Disable obfuscation of variable names, function names and names of function parameters that match the passed RegExp patterns (comma separated)', function (val) { - return val.split(','); + this.commands = new commander.Command().version(JavaScriptObfuscatorCLI.getBuildVersion(), '-v, --version').usage(' [options]').option('-o, --output ', 'Output path for obfuscated code').option('--compact ', 'Disable one line output code compacting', JavaScriptObfuscatorCLI.parseBoolean).option('--controlFlowFlattening ', 'Enables control flow flattening', JavaScriptObfuscatorCLI.parseBoolean).option('--controlFlowFlatteningThreshold ', 'The probability that the control flow flattening transformation will be applied to the node', parseFloat).option('--debugProtection ', 'Disable browser Debug panel (can cause DevTools enabled browser freeze)', JavaScriptObfuscatorCLI.parseBoolean).option('--debugProtectionInterval ', 'Disable browser Debug panel even after page was loaded (can cause DevTools enabled browser freeze)', JavaScriptObfuscatorCLI.parseBoolean).option('--disableConsoleOutput ', 'Allow console.log, console.info, console.error and console.warn messages output into browser console', JavaScriptObfuscatorCLI.parseBoolean).option('--domainLock ', 'Blocks the execution of the code in domains that do not match the passed RegExp patterns (comma separated)', function (value) { + return value.split(','); + }).option('--reservedNames ', 'Disable obfuscation of variable names, function names and names of function parameters that match the passed RegExp patterns (comma separated)', function (value) { + return value.split(','); }).option('--rotateStringArray ', 'Disable rotation of unicode array values during obfuscation', JavaScriptObfuscatorCLI.parseBoolean).option('--seed ', 'Sets seed for random generator. This is useful for creating repeatable results.', parseFloat).option('--selfDefending ', 'Disables self-defending for obfuscated code', JavaScriptObfuscatorCLI.parseBoolean).option('--sourceMap ', 'Enables source map generation', JavaScriptObfuscatorCLI.parseBoolean).option('--sourceMapBaseUrl ', 'Sets base url to the source map import url when `--sourceMapMode=separate`').option('--sourceMapFileName ', 'Sets file name for output source map when `--sourceMapMode=separate`').option('--sourceMapMode [inline, separate]', 'Specify source map output mode', JavaScriptObfuscatorCLI.parseSourceMapMode).option('--stringArray ', 'Disables gathering of all literal strings into an array and replacing every literal string with an array call', JavaScriptObfuscatorCLI.parseBoolean).option('--stringArrayEncoding [true, false, base64, rc4]', 'Encodes all strings in strings array using base64 or rc4 (this option can slow down your code speed', JavaScriptObfuscatorCLI.parseStringArrayEncoding).option('--stringArrayThreshold ', 'The probability that the literal string will be inserted into stringArray (Default: 0.8, Min: 0, Max: 1)', parseFloat).option('--unicodeEscapeSequence ', 'Allows to enable/disable string conversion to unicode escape sequence', JavaScriptObfuscatorCLI.parseBoolean).parse(this.rawArguments); this.commands.on('--help', function () { console.log(' Examples:\n'); @@ -2796,7 +2813,7 @@ var JavaScriptObfuscatorCLI = function () { key: "processDataWithSourceMap", value: function processDataWithSourceMap(outputCodePath, options) { var outputSourceMapPath = CLIUtils_1.CLIUtils.getOutputSourceMapPath(outputCodePath, options.sourceMapFileName || ''); - options.sourceMapFileName = path.basename(outputSourceMapPath); + options = tslib_1.__assign({}, options, { sourceMapFileName: path.basename(outputSourceMapPath) }); var obfuscationResult = JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(this.data, options); CLIUtils_1.CLIUtils.writeFile(outputCodePath, obfuscationResult.getObfuscatedCode()); if (options.sourceMapMode === 'separate' && obfuscationResult.getSourceMap()) { @@ -2844,9 +2861,9 @@ var JavaScriptObfuscatorCLI = function () { exports.JavaScriptObfuscatorCLI = JavaScriptObfuscatorCLI; -/***/ }, +/***/ }), /* 57 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2865,7 +2882,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var ControlFlowTransformersModule_1 = __webpack_require__(59); var CustomNodesModule_1 = __webpack_require__(58); -var ObfuscationTransformersModule_1 = __webpack_require__(61); +var ObfuscatingTransformersModule_1 = __webpack_require__(61); var NodeTransformersModule_1 = __webpack_require__(60); var StackTraceAnalyzerModule_1 = __webpack_require__(62); var StoragesModule_1 = __webpack_require__(63); @@ -2901,7 +2918,7 @@ var InversifyContainerFacade = function () { this.container.load(CustomNodesModule_1.customNodesModule); this.container.load(NodeTransformersModule_1.nodeTransformersModule); this.container.load(ControlFlowTransformersModule_1.controlFlowTransformersModule); - this.container.load(ObfuscationTransformersModule_1.obfuscationTransformersModule); + this.container.load(ObfuscatingTransformersModule_1.obfuscatingTransformersModule); } (0, _createClass3.default)(InversifyContainerFacade, [{ @@ -2920,9 +2937,9 @@ var InversifyContainerFacade = function () { exports.InversifyContainerFacade = InversifyContainerFacade; -/***/ }, +/***/ }), /* 58 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3004,9 +3021,9 @@ exports.customNodesModule = new inversify_1.ContainerModule(function (bind) { }); }); -/***/ }, +/***/ }), /* 59 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3040,9 +3057,9 @@ exports.controlFlowTransformersModule = new inversify_1.ContainerModule(function }); }); -/***/ }, +/***/ }), /* 60 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3058,28 +3075,28 @@ var ServiceIdentifiers_1 = __webpack_require__(4); var NodeTransformers_1 = __webpack_require__(40); var FunctionControlFlowTransformer_1 = __webpack_require__(89); var BlockStatementControlFlowTransformer_1 = __webpack_require__(88); -var CatchClauseTransformer_1 = __webpack_require__(93); -var FunctionDeclarationTransformer_1 = __webpack_require__(94); -var FunctionTransformer_1 = __webpack_require__(95); -var LabeledStatementTransformer_1 = __webpack_require__(96); -var LiteralTransformer_1 = __webpack_require__(97); -var MemberExpressionTransformer_1 = __webpack_require__(98); -var MethodDefinitionTransformer_1 = __webpack_require__(99); -var ObjectExpressionTransformer_1 = __webpack_require__(100); -var TemplateLiteralTransformer_1 = __webpack_require__(101); +var CatchClauseTransformer_1 = __webpack_require__(96); +var FunctionDeclarationTransformer_1 = __webpack_require__(97); +var FunctionTransformer_1 = __webpack_require__(98); +var LabeledStatementTransformer_1 = __webpack_require__(99); +var LiteralTransformer_1 = __webpack_require__(100); +var MemberExpressionTransformer_1 = __webpack_require__(93); +var MethodDefinitionTransformer_1 = __webpack_require__(94); +var ObjectExpressionTransformer_1 = __webpack_require__(101); +var TemplateLiteralTransformer_1 = __webpack_require__(95); var VariableDeclarationTransformer_1 = __webpack_require__(102); exports.nodeTransformersModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(BlockStatementControlFlowTransformer_1.BlockStatementControlFlowTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.BlockStatementControlFlowTransformer); bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(FunctionControlFlowTransformer_1.FunctionControlFlowTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.FunctionControlFlowTransformer); + bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(MemberExpressionTransformer_1.MemberExpressionTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.MemberExpressionTransformer); + bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(MethodDefinitionTransformer_1.MethodDefinitionTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.MethodDefinitionTransformer); + bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(TemplateLiteralTransformer_1.TemplateLiteralTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.TemplateLiteralTransformer); bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(CatchClauseTransformer_1.CatchClauseTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.CatchClauseTransformer); bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(FunctionDeclarationTransformer_1.FunctionDeclarationTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.FunctionDeclarationTransformer); bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(FunctionTransformer_1.FunctionTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.FunctionTransformer); bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(LabeledStatementTransformer_1.LabeledStatementTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.LabeledStatementTransformer); bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(LiteralTransformer_1.LiteralTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.LiteralTransformer); - bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(MemberExpressionTransformer_1.MemberExpressionTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.MemberExpressionTransformer); - bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(MethodDefinitionTransformer_1.MethodDefinitionTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.MethodDefinitionTransformer); bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(ObjectExpressionTransformer_1.ObjectExpressionTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.ObjectExpressionTransformer); - bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(TemplateLiteralTransformer_1.TemplateLiteralTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.TemplateLiteralTransformer); bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(VariableDeclarationTransformer_1.VariableDeclarationTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.VariableDeclarationTransformer); bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeTransformer).toFactory(function (context) { var cache = new _map2.default(); @@ -3103,9 +3120,9 @@ exports.nodeTransformersModule = new inversify_1.ContainerModule(function (bind) }); }); -/***/ }, +/***/ }), /* 61 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3118,12 +3135,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); -var NodeObfuscationReplacers_1 = __webpack_require__(20); +var NodeObfuscationReplacers_1 = __webpack_require__(23); var BooleanLiteralReplacer_1 = __webpack_require__(103); var IdentifierReplacer_1 = __webpack_require__(104); var NumberLiteralReplacer_1 = __webpack_require__(105); var StringLiteralReplacer_1 = __webpack_require__(106); -exports.obfuscationTransformersModule = new inversify_1.ContainerModule(function (bind) { +exports.obfuscatingTransformersModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatorReplacer).to(BooleanLiteralReplacer_1.BooleanLiteralReplacer).whenTargetNamed(NodeObfuscationReplacers_1.NodeObfuscatorsReplacers.BooleanReplacer); bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatorReplacer).to(IdentifierReplacer_1.IdentifierReplacer).whenTargetNamed(NodeObfuscationReplacers_1.NodeObfuscatorsReplacers.IdentifierReplacer); bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatorReplacer).to(NumberLiteralReplacer_1.NumberLiteralReplacer).whenTargetNamed(NodeObfuscationReplacers_1.NodeObfuscatorsReplacers.NumberLiteralReplacer); @@ -3141,9 +3158,9 @@ exports.obfuscationTransformersModule = new inversify_1.ContainerModule(function }); }); -/***/ }, +/***/ }), /* 62 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3179,9 +3196,9 @@ exports.stackTraceAnalyzerModule = new inversify_1.ContainerModule(function (bin }); }); -/***/ }, +/***/ }), /* 63 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3203,9 +3220,9 @@ exports.storagesModule = new inversify_1.ContainerModule(function (bind) { }); }); -/***/ }, +/***/ }), /* 64 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3274,9 +3291,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: ConsoleOutputDisableExpressionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], ConsoleOutputDisableExpressionNode); exports.ConsoleOutputDisableExpressionNode = ConsoleOutputDisableExpressionNode; -/***/ }, +/***/ }), /* 65 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3312,9 +3329,9 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var CustomNodes_1 = __webpack_require__(15); -var ObfuscationEvents_1 = __webpack_require__(23); +var ObfuscationEvents_1 = __webpack_require__(22); var AbstractCustomNodeGroup_1 = __webpack_require__(27); -var NodeAppender_1 = __webpack_require__(25); +var NodeAppender_1 = __webpack_require__(26); var RandomGeneratorUtils_1 = __webpack_require__(9); var ConsoleOutputCustomNodeGroup = function (_AbstractCustomNodeGr) { (0, _inherits3.default)(ConsoleOutputCustomNodeGroup, _AbstractCustomNodeGr); @@ -3369,9 +3386,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: ConsoleOutputCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object, Object])], ConsoleOutputCustomNodeGroup); exports.ConsoleOutputCustomNodeGroup = ConsoleOutputCustomNodeGroup; -/***/ }, +/***/ }), /* 66 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3403,7 +3420,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(21); +var Nodes_1 = __webpack_require__(20); var NodeUtils_1 = __webpack_require__(8); var RandomGeneratorUtils_1 = __webpack_require__(9); var BinaryExpressionFunctionNode = function (_AbstractCustomNode_) { @@ -3433,9 +3450,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: BinaryExpressionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], BinaryExpressionFunctionNode); exports.BinaryExpressionFunctionNode = BinaryExpressionFunctionNode; -/***/ }, +/***/ }), /* 67 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3467,7 +3484,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(21); +var Nodes_1 = __webpack_require__(20); var NodeUtils_1 = __webpack_require__(8); var RandomGeneratorUtils_1 = __webpack_require__(9); var BlockStatementControlFlowFlatteningNode = function (_AbstractCustomNode_) { @@ -3507,9 +3524,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: BlockStatementControlFlowFlatteningNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], BlockStatementControlFlowFlatteningNode); exports.BlockStatementControlFlowFlatteningNode = BlockStatementControlFlowFlatteningNode; -/***/ }, +/***/ }), /* 68 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3541,7 +3558,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(21); +var Nodes_1 = __webpack_require__(20); var NodeUtils_1 = __webpack_require__(8); var RandomGeneratorUtils_1 = __webpack_require__(9); var CallExpressionFunctionNode = function (_AbstractCustomNode_) { @@ -3577,9 +3594,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: CallExpressionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], CallExpressionFunctionNode); exports.CallExpressionFunctionNode = CallExpressionFunctionNode; -/***/ }, +/***/ }), /* 69 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3611,7 +3628,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(21); +var Nodes_1 = __webpack_require__(20); var RandomGeneratorUtils_1 = __webpack_require__(9); var NodeUtils_1 = __webpack_require__(8); var LogicalExpressionFunctionNode = function (_AbstractCustomNode_) { @@ -3641,14 +3658,14 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: LogicalExpressionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], LogicalExpressionFunctionNode); exports.LogicalExpressionFunctionNode = LogicalExpressionFunctionNode; -/***/ }, +/***/ }), /* 70 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _toConsumableArray2 = __webpack_require__(26); +var _toConsumableArray2 = __webpack_require__(24); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); @@ -3679,7 +3696,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(21); +var Nodes_1 = __webpack_require__(20); var NodeUtils_1 = __webpack_require__(8); var CallExpressionControlFlowStorageCallNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(CallExpressionControlFlowStorageCallNode, _AbstractCustomNode_); @@ -3714,9 +3731,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: CallExpressionControlFlowStorageCallNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], CallExpressionControlFlowStorageCallNode); exports.CallExpressionControlFlowStorageCallNode = CallExpressionControlFlowStorageCallNode; -/***/ }, +/***/ }), /* 71 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3756,7 +3773,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(21); +var Nodes_1 = __webpack_require__(20); var NodeUtils_1 = __webpack_require__(8); var ControlFlowStorageNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(ControlFlowStorageNode, _AbstractCustomNode_); @@ -3791,9 +3808,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: ControlFlowStorageNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], ControlFlowStorageNode); exports.ControlFlowStorageNode = ControlFlowStorageNode; -/***/ }, +/***/ }), /* 72 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3825,7 +3842,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(21); +var Nodes_1 = __webpack_require__(20); var NodeUtils_1 = __webpack_require__(8); var ExpressionWithOperatorControlFlowStorageCallNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(ExpressionWithOperatorControlFlowStorageCallNode, _AbstractCustomNode_); @@ -3860,9 +3877,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: ExpressionWithOperatorControlFlowStorageCallNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], ExpressionWithOperatorControlFlowStorageCallNode); exports.ExpressionWithOperatorControlFlowStorageCallNode = ExpressionWithOperatorControlFlowStorageCallNode; -/***/ }, +/***/ }), /* 73 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3929,9 +3946,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: DebugProtectionFunctionCallNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DebugProtectionFunctionCallNode); exports.DebugProtectionFunctionCallNode = DebugProtectionFunctionCallNode; -/***/ }, +/***/ }), /* 74 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3998,9 +4015,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: DebugProtectionFunctionIntervalNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DebugProtectionFunctionIntervalNode); exports.DebugProtectionFunctionIntervalNode = DebugProtectionFunctionIntervalNode; -/***/ }, +/***/ }), /* 75 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4067,9 +4084,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: DebugProtectionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DebugProtectionFunctionNode); exports.DebugProtectionFunctionNode = DebugProtectionFunctionNode; -/***/ }, +/***/ }), /* 76 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4105,9 +4122,9 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var CustomNodes_1 = __webpack_require__(15); -var ObfuscationEvents_1 = __webpack_require__(23); +var ObfuscationEvents_1 = __webpack_require__(22); var AbstractCustomNodeGroup_1 = __webpack_require__(27); -var NodeAppender_1 = __webpack_require__(25); +var NodeAppender_1 = __webpack_require__(26); var RandomGeneratorUtils_1 = __webpack_require__(9); var DebugProtectionCustomNodeGroup = function (_AbstractCustomNodeGr) { (0, _inherits3.default)(DebugProtectionCustomNodeGroup, _AbstractCustomNodeGr); @@ -4165,9 +4182,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: DebugProtectionCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object, Object])], DebugProtectionCustomNodeGroup); exports.DebugProtectionCustomNodeGroup = DebugProtectionCustomNodeGroup; -/***/ }, +/***/ }), /* 77 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4250,9 +4267,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: DomainLockNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DomainLockNode); exports.DomainLockNode = DomainLockNode; -/***/ }, +/***/ }), /* 78 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4288,9 +4305,9 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var CustomNodes_1 = __webpack_require__(15); -var ObfuscationEvents_1 = __webpack_require__(23); +var ObfuscationEvents_1 = __webpack_require__(22); var AbstractCustomNodeGroup_1 = __webpack_require__(27); -var NodeAppender_1 = __webpack_require__(25); +var NodeAppender_1 = __webpack_require__(26); var RandomGeneratorUtils_1 = __webpack_require__(9); var DomainLockCustomNodeGroup = function (_AbstractCustomNodeGr) { (0, _inherits3.default)(DomainLockCustomNodeGroup, _AbstractCustomNodeGr); @@ -4345,9 +4362,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: DomainLockCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object, Object])], DomainLockCustomNodeGroup); exports.DomainLockCustomNodeGroup = DomainLockCustomNodeGroup; -/***/ }, +/***/ }), /* 79 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4378,12 +4395,12 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(19); -var ObfuscationEvents_1 = __webpack_require__(23); +var ObfuscationEvents_1 = __webpack_require__(22); var Initializable_1 = __webpack_require__(10); var SingleNodeCallControllerTemplate_1 = __webpack_require__(120); var NoCustomNodes_1 = __webpack_require__(31); var AbstractCustomNode_1 = __webpack_require__(13); -var JavaScriptObfuscator_1 = __webpack_require__(24); +var JavaScriptObfuscator_1 = __webpack_require__(25); var NodeUtils_1 = __webpack_require__(8); var NodeCallsControllerFunctionNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(NodeCallsControllerFunctionNode, _AbstractCustomNode_); @@ -4424,9 +4441,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: NodeCallsControllerFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], NodeCallsControllerFunctionNode); exports.NodeCallsControllerFunctionNode = NodeCallsControllerFunctionNode; -/***/ }, +/***/ }), /* 80 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4461,7 +4478,7 @@ var Initializable_1 = __webpack_require__(10); var NoCustomNodes_1 = __webpack_require__(31); var SelfDefendingTemplate_1 = __webpack_require__(126); var AbstractCustomNode_1 = __webpack_require__(13); -var JavaScriptObfuscator_1 = __webpack_require__(24); +var JavaScriptObfuscator_1 = __webpack_require__(25); var NodeUtils_1 = __webpack_require__(8); var RandomGeneratorUtils_1 = __webpack_require__(9); var SelfDefendingUnicodeNode = function (_AbstractCustomNode_) { @@ -4497,9 +4514,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: SelfDefendingUnicodeNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], SelfDefendingUnicodeNode); exports.SelfDefendingUnicodeNode = SelfDefendingUnicodeNode; -/***/ }, +/***/ }), /* 81 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4535,9 +4552,9 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var CustomNodes_1 = __webpack_require__(15); -var ObfuscationEvents_1 = __webpack_require__(23); +var ObfuscationEvents_1 = __webpack_require__(22); var AbstractCustomNodeGroup_1 = __webpack_require__(27); -var NodeAppender_1 = __webpack_require__(25); +var NodeAppender_1 = __webpack_require__(26); var RandomGeneratorUtils_1 = __webpack_require__(9); var SelfDefendingCustomNodeGroup = function (_AbstractCustomNodeGr) { (0, _inherits3.default)(SelfDefendingCustomNodeGroup, _AbstractCustomNodeGr); @@ -4592,9 +4609,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: SelfDefendingCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object, Object])], SelfDefendingCustomNodeGroup); exports.SelfDefendingCustomNodeGroup = SelfDefendingCustomNodeGroup; -/***/ }, +/***/ }), /* 82 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4635,7 +4652,7 @@ var StringArrayBase64DecodeNodeTemplate_1 = __webpack_require__(128); var StringArrayCallsWrapperTemplate_1 = __webpack_require__(129); var StringArrayRC4DecodeNodeTemplate_1 = __webpack_require__(130); var AbstractCustomNode_1 = __webpack_require__(13); -var JavaScriptObfuscator_1 = __webpack_require__(24); +var JavaScriptObfuscator_1 = __webpack_require__(25); var NodeUtils_1 = __webpack_require__(8); var StringArrayCallsWrapper = function (_AbstractCustomNode_) { (0, _inherits3.default)(StringArrayCallsWrapper, _AbstractCustomNode_); @@ -4706,9 +4723,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: StringArrayCallsWrapper = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], StringArrayCallsWrapper); exports.StringArrayCallsWrapper = StringArrayCallsWrapper; -/***/ }, +/***/ }), /* 83 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4790,9 +4807,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: StringArrayNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], StringArrayNode); exports.StringArrayNode = StringArrayNode; -/***/ }, +/***/ }), /* 84 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4828,7 +4845,7 @@ var NoCustomNodes_1 = __webpack_require__(31); var SelfDefendingTemplate_1 = __webpack_require__(132); var StringArrayRotateFunctionTemplate_1 = __webpack_require__(133); var AbstractCustomNode_1 = __webpack_require__(13); -var JavaScriptObfuscator_1 = __webpack_require__(24); +var JavaScriptObfuscator_1 = __webpack_require__(25); var NodeUtils_1 = __webpack_require__(8); var RandomGeneratorUtils_1 = __webpack_require__(9); var Utils_1 = __webpack_require__(14); @@ -4883,9 +4900,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: StringArrayRotateFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], StringArrayRotateFunctionNode); exports.StringArrayRotateFunctionNode = StringArrayRotateFunctionNode; -/***/ }, +/***/ }), /* 85 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -4921,9 +4938,9 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var CustomNodes_1 = __webpack_require__(15); -var ObfuscationEvents_1 = __webpack_require__(23); +var ObfuscationEvents_1 = __webpack_require__(22); var AbstractCustomNodeGroup_1 = __webpack_require__(27); -var NodeAppender_1 = __webpack_require__(25); +var NodeAppender_1 = __webpack_require__(26); var RandomGeneratorUtils_1 = __webpack_require__(9); var Utils_1 = __webpack_require__(14); var StringArrayCustomNodeGroup = function (_AbstractCustomNodeGr) { @@ -4993,9 +5010,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: StringArrayCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.TStringArrayStorage)), tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])], StringArrayCustomNodeGroup); exports.StringArrayCustomNodeGroup = StringArrayCustomNodeGroup; -/***/ }, +/***/ }), /* 86 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5006,9 +5023,9 @@ exports.VisitorDirection = Utils_1.Utils.strEnumify({ leave: 'leave' }); -/***/ }, +/***/ }), /* 87 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5048,14 +5065,14 @@ var ObfuscationEventEmitter = function (_events_1$EventEmitte) { ObfuscationEventEmitter = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata("design:paramtypes", [])], ObfuscationEventEmitter); exports.ObfuscationEventEmitter = ObfuscationEventEmitter; -/***/ }, +/***/ }), /* 88 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _toConsumableArray2 = __webpack_require__(26); +var _toConsumableArray2 = __webpack_require__(24); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); @@ -5136,9 +5153,9 @@ BlockStatementControlFlowTransformer = BlockStatementControlFlowTransformer_1 = exports.BlockStatementControlFlowTransformer = BlockStatementControlFlowTransformer; var BlockStatementControlFlowTransformer_1; -/***/ }, +/***/ }), /* 89 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5177,7 +5194,7 @@ var CustomNodes_1 = __webpack_require__(15); var NodeType_1 = __webpack_require__(18); var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); -var NodeAppender_1 = __webpack_require__(25); +var NodeAppender_1 = __webpack_require__(26); var NodeControlFlowReplacers_1 = __webpack_require__(39); var NodeUtils_1 = __webpack_require__(8); var RandomGeneratorUtils_1 = __webpack_require__(9); @@ -5275,9 +5292,9 @@ FunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = tslib_1.__de exports.FunctionControlFlowTransformer = FunctionControlFlowTransformer; var FunctionControlFlowTransformer_1; -/***/ }, +/***/ }), /* 90 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5334,9 +5351,9 @@ BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = ts exports.BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer; var BinaryExpressionControlFlowReplacer_1; -/***/ }, +/***/ }), /* 91 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5410,9 +5427,9 @@ CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer_1 = tslib_ exports.CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer; var CallExpressionControlFlowReplacer_1; -/***/ }, +/***/ }), /* 92 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5487,9 +5504,269 @@ LogicalExpressionControlFlowReplacer = LogicalExpressionControlFlowReplacer_1 = exports.LogicalExpressionControlFlowReplacer = LogicalExpressionControlFlowReplacer; var LogicalExpressionControlFlowReplacer_1; -/***/ }, +/***/ }), /* 93 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _getPrototypeOf = __webpack_require__(5); + +var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); + +var _classCallCheck2 = __webpack_require__(0); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = __webpack_require__(1); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _possibleConstructorReturn2 = __webpack_require__(7); + +var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); + +var _inherits2 = __webpack_require__(6); + +var _inherits3 = _interopRequireDefault(_inherits2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var tslib_1 = __webpack_require__(3); +var inversify_1 = __webpack_require__(2); +var ServiceIdentifiers_1 = __webpack_require__(4); +var NodeType_1 = __webpack_require__(18); +var AbstractNodeTransformer_1 = __webpack_require__(16); +var Node_1 = __webpack_require__(12); +var MemberExpressionTransformer = function (_AbstractNodeTransfor) { + (0, _inherits3.default)(MemberExpressionTransformer, _AbstractNodeTransfor); + + function MemberExpressionTransformer(options) { + (0, _classCallCheck3.default)(this, MemberExpressionTransformer); + return (0, _possibleConstructorReturn3.default)(this, (MemberExpressionTransformer.__proto__ || (0, _getPrototypeOf2.default)(MemberExpressionTransformer)).call(this, options)); + } + + (0, _createClass3.default)(MemberExpressionTransformer, [{ + key: "transformNode", + value: function transformNode(memberExpressionNode) { + if (Node_1.Node.isIdentifierNode(memberExpressionNode.property)) { + if (memberExpressionNode.computed) { + return memberExpressionNode; + } + memberExpressionNode.computed = true; + memberExpressionNode.property = { + type: NodeType_1.NodeType.Literal, + value: memberExpressionNode.property.name, + raw: "'" + memberExpressionNode.property.name + "'" + }; + } + return memberExpressionNode; + } + }]); + return MemberExpressionTransformer; +}(AbstractNodeTransformer_1.AbstractNodeTransformer); +MemberExpressionTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], MemberExpressionTransformer); +exports.MemberExpressionTransformer = MemberExpressionTransformer; + +/***/ }), +/* 94 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _getPrototypeOf = __webpack_require__(5); + +var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); + +var _classCallCheck2 = __webpack_require__(0); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = __webpack_require__(1); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _possibleConstructorReturn2 = __webpack_require__(7); + +var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); + +var _inherits2 = __webpack_require__(6); + +var _inherits3 = _interopRequireDefault(_inherits2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var tslib_1 = __webpack_require__(3); +var inversify_1 = __webpack_require__(2); +var ServiceIdentifiers_1 = __webpack_require__(4); +var NodeType_1 = __webpack_require__(18); +var AbstractNodeTransformer_1 = __webpack_require__(16); +var Node_1 = __webpack_require__(12); +var MethodDefinitionTransformer = MethodDefinitionTransformer_1 = function (_AbstractNodeTransfor) { + (0, _inherits3.default)(MethodDefinitionTransformer, _AbstractNodeTransfor); + + function MethodDefinitionTransformer(options) { + (0, _classCallCheck3.default)(this, MethodDefinitionTransformer); + return (0, _possibleConstructorReturn3.default)(this, (MethodDefinitionTransformer.__proto__ || (0, _getPrototypeOf2.default)(MethodDefinitionTransformer)).call(this, options)); + } + + (0, _createClass3.default)(MethodDefinitionTransformer, [{ + key: "transformNode", + value: function transformNode(methodDefinitionNode, parentNode) { + if (Node_1.Node.isIdentifierNode(methodDefinitionNode.key) && !MethodDefinitionTransformer_1.ignoredNames.includes(methodDefinitionNode.key.name) && methodDefinitionNode.computed === false) { + methodDefinitionNode.computed = true; + methodDefinitionNode.key = { + type: NodeType_1.NodeType.Literal, + value: methodDefinitionNode.key.name, + raw: "'" + methodDefinitionNode.key.name + "'" + }; + } + return methodDefinitionNode; + } + }]); + return MethodDefinitionTransformer; +}(AbstractNodeTransformer_1.AbstractNodeTransformer); +MethodDefinitionTransformer.ignoredNames = ['constructor']; +MethodDefinitionTransformer = MethodDefinitionTransformer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], MethodDefinitionTransformer); +exports.MethodDefinitionTransformer = MethodDefinitionTransformer; +var MethodDefinitionTransformer_1; + +/***/ }), +/* 95 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _getIterator2 = __webpack_require__(21); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + +var _getPrototypeOf = __webpack_require__(5); + +var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); + +var _classCallCheck2 = __webpack_require__(0); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = __webpack_require__(1); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _possibleConstructorReturn2 = __webpack_require__(7); + +var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); + +var _inherits2 = __webpack_require__(6); + +var _inherits3 = _interopRequireDefault(_inherits2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var tslib_1 = __webpack_require__(3); +var inversify_1 = __webpack_require__(2); +var ServiceIdentifiers_1 = __webpack_require__(4); +var AbstractNodeTransformer_1 = __webpack_require__(16); +var Node_1 = __webpack_require__(12); +var Nodes_1 = __webpack_require__(20); +var TemplateLiteralTransformer = TemplateLiteralTransformer_1 = function (_AbstractNodeTransfor) { + (0, _inherits3.default)(TemplateLiteralTransformer, _AbstractNodeTransfor); + + function TemplateLiteralTransformer(options) { + (0, _classCallCheck3.default)(this, TemplateLiteralTransformer); + return (0, _possibleConstructorReturn3.default)(this, (TemplateLiteralTransformer.__proto__ || (0, _getPrototypeOf2.default)(TemplateLiteralTransformer)).call(this, options)); + } + + (0, _createClass3.default)(TemplateLiteralTransformer, [{ + key: "transformNode", + value: function transformNode(templateLiteralNode, parentNode) { + var templateLiteralExpressions = templateLiteralNode.expressions; + var nodes = []; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = (0, _getIterator3.default)(templateLiteralNode.quasis), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var templateElement = _step.value; + + nodes.push(Nodes_1.Nodes.getLiteralNode(templateElement.value.cooked)); + var expression = templateLiteralExpressions.shift(); + if (!expression) { + continue; + } + nodes.push(expression); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + nodes = nodes.filter(function (node) { + return !(Node_1.Node.isLiteralNode(node) && node.value === ''); + }); + if (!TemplateLiteralTransformer_1.isLiteralNodeWithStringValue(nodes[0]) && !TemplateLiteralTransformer_1.isLiteralNodeWithStringValue(nodes[1])) { + nodes.unshift(Nodes_1.Nodes.getLiteralNode('')); + } + if (nodes.length > 1) { + var root = Nodes_1.Nodes.getBinaryExpressionNode('+', nodes.shift(), nodes.shift()); + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = (0, _getIterator3.default)(nodes), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var node = _step2.value; + + root = Nodes_1.Nodes.getBinaryExpressionNode('+', root, node); + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + return root; + } + return nodes[0]; + } + }], [{ + key: "isLiteralNodeWithStringValue", + value: function isLiteralNodeWithStringValue(node) { + return node && Node_1.Node.isLiteralNode(node) && typeof node.value === 'string'; + } + }]); + return TemplateLiteralTransformer; +}(AbstractNodeTransformer_1.AbstractNodeTransformer); +TemplateLiteralTransformer = TemplateLiteralTransformer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], TemplateLiteralTransformer); +exports.TemplateLiteralTransformer = TemplateLiteralTransformer; +var TemplateLiteralTransformer_1; + +/***/ }), +/* 96 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5520,7 +5797,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var estraverse = __webpack_require__(17); -var NodeObfuscationReplacers_1 = __webpack_require__(20); +var NodeObfuscationReplacers_1 = __webpack_require__(23); var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var CatchClauseTransformer = function (_AbstractNodeTransfor) { @@ -5573,14 +5850,14 @@ var CatchClauseTransformer = function (_AbstractNodeTransfor) { CatchClauseTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatorReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], CatchClauseTransformer); exports.CatchClauseTransformer = CatchClauseTransformer; -/***/ }, -/* 94 */ -/***/ function(module, exports, __webpack_require__) { +/***/ }), +/* 97 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _getIterator2 = __webpack_require__(22); +var _getIterator2 = __webpack_require__(21); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -5614,7 +5891,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var estraverse = __webpack_require__(17); -var NodeObfuscationReplacers_1 = __webpack_require__(20); +var NodeObfuscationReplacers_1 = __webpack_require__(23); var NodeType_1 = __webpack_require__(18); var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); @@ -5705,9 +5982,9 @@ var FunctionDeclarationTransformer = function (_AbstractNodeTransfor) { FunctionDeclarationTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatorReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], FunctionDeclarationTransformer); exports.FunctionDeclarationTransformer = FunctionDeclarationTransformer; -/***/ }, -/* 95 */ -/***/ function(module, exports, __webpack_require__) { +/***/ }), +/* 98 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5738,7 +6015,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var estraverse = __webpack_require__(17); -var NodeObfuscationReplacers_1 = __webpack_require__(20); +var NodeObfuscationReplacers_1 = __webpack_require__(23); var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var FunctionTransformer = function (_AbstractNodeTransfor) { @@ -5767,9 +6044,20 @@ var FunctionTransformer = function (_AbstractNodeTransfor) { var _this2 = this; functionNode.params.forEach(function (paramsNode) { - if (Node_1.Node.isIdentifierNode(paramsNode)) { - _this2.identifierReplacer.storeNames(paramsNode.name, nodeIdentifier); + if (Node_1.Node.isObjectPatternNode(paramsNode)) { + return estraverse.VisitorOption.Skip; } + estraverse.traverse(paramsNode, { + enter: function enter(node) { + if (Node_1.Node.isAssignmentPatternNode(node) && Node_1.Node.isIdentifierNode(node.left)) { + _this2.identifierReplacer.storeNames(node.left.name, nodeIdentifier); + return estraverse.VisitorOption.Skip; + } + if (Node_1.Node.isIdentifierNode(node)) { + _this2.identifierReplacer.storeNames(node.name, nodeIdentifier); + } + } + }); }); } }, { @@ -5799,9 +6087,9 @@ var FunctionTransformer = function (_AbstractNodeTransfor) { FunctionTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatorReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], FunctionTransformer); exports.FunctionTransformer = FunctionTransformer; -/***/ }, -/* 96 */ -/***/ function(module, exports, __webpack_require__) { +/***/ }), +/* 99 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5832,7 +6120,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var estraverse = __webpack_require__(17); -var NodeObfuscationReplacers_1 = __webpack_require__(20); +var NodeObfuscationReplacers_1 = __webpack_require__(23); var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var LabeledStatementTransformer = function (_AbstractNodeTransfor) { @@ -5879,9 +6167,9 @@ var LabeledStatementTransformer = function (_AbstractNodeTransfor) { LabeledStatementTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatorReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], LabeledStatementTransformer); exports.LabeledStatementTransformer = LabeledStatementTransformer; -/***/ }, -/* 97 */ -/***/ function(module, exports, __webpack_require__) { +/***/ }), +/* 100 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5916,7 +6204,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var escodegen = __webpack_require__(28); -var NodeObfuscationReplacers_1 = __webpack_require__(20); +var NodeObfuscationReplacers_1 = __webpack_require__(23); var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var LiteralTransformer = function (_AbstractNodeTransfor) { @@ -5963,148 +6251,9 @@ var LiteralTransformer = function (_AbstractNodeTransfor) { LiteralTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatorReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], LiteralTransformer); exports.LiteralTransformer = LiteralTransformer; -/***/ }, -/* 98 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; - - -var _getPrototypeOf = __webpack_require__(5); - -var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = __webpack_require__(1); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _possibleConstructorReturn2 = __webpack_require__(7); - -var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - -var _inherits2 = __webpack_require__(6); - -var _inherits3 = _interopRequireDefault(_inherits2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var tslib_1 = __webpack_require__(3); -var inversify_1 = __webpack_require__(2); -var ServiceIdentifiers_1 = __webpack_require__(4); -var NodeObfuscationReplacers_1 = __webpack_require__(20); -var NodeType_1 = __webpack_require__(18); -var AbstractNodeTransformer_1 = __webpack_require__(16); -var Node_1 = __webpack_require__(12); -var MemberExpressionTransformer = function (_AbstractNodeTransfor) { - (0, _inherits3.default)(MemberExpressionTransformer, _AbstractNodeTransfor); - - function MemberExpressionTransformer(replacersFactory, options) { - (0, _classCallCheck3.default)(this, MemberExpressionTransformer); - - var _this = (0, _possibleConstructorReturn3.default)(this, (MemberExpressionTransformer.__proto__ || (0, _getPrototypeOf2.default)(MemberExpressionTransformer)).call(this, options)); - - _this.stringLiteralReplacer = replacersFactory(NodeObfuscationReplacers_1.NodeObfuscatorsReplacers.StringLiteralReplacer); - return _this; - } - - (0, _createClass3.default)(MemberExpressionTransformer, [{ - key: "transformNode", - value: function transformNode(memberExpressionNode) { - if (Node_1.Node.isIdentifierNode(memberExpressionNode.property)) { - if (memberExpressionNode.computed) { - return memberExpressionNode; - } - memberExpressionNode.computed = true; - memberExpressionNode.property = { - type: NodeType_1.NodeType.Literal, - value: memberExpressionNode.property.name, - raw: "'" + memberExpressionNode.property.name + "'" - }; - } - return memberExpressionNode; - } - }]); - return MemberExpressionTransformer; -}(AbstractNodeTransformer_1.AbstractNodeTransformer); -MemberExpressionTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatorReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], MemberExpressionTransformer); -exports.MemberExpressionTransformer = MemberExpressionTransformer; - -/***/ }, -/* 99 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; - - -var _getPrototypeOf = __webpack_require__(5); - -var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = __webpack_require__(1); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _possibleConstructorReturn2 = __webpack_require__(7); - -var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - -var _inherits2 = __webpack_require__(6); - -var _inherits3 = _interopRequireDefault(_inherits2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var tslib_1 = __webpack_require__(3); -var inversify_1 = __webpack_require__(2); -var ServiceIdentifiers_1 = __webpack_require__(4); -var NodeObfuscationReplacers_1 = __webpack_require__(20); -var NodeType_1 = __webpack_require__(18); -var AbstractNodeTransformer_1 = __webpack_require__(16); -var Node_1 = __webpack_require__(12); -var MethodDefinitionTransformer = MethodDefinitionTransformer_1 = function (_AbstractNodeTransfor) { - (0, _inherits3.default)(MethodDefinitionTransformer, _AbstractNodeTransfor); - - function MethodDefinitionTransformer(replacersFactory, options) { - (0, _classCallCheck3.default)(this, MethodDefinitionTransformer); - - var _this = (0, _possibleConstructorReturn3.default)(this, (MethodDefinitionTransformer.__proto__ || (0, _getPrototypeOf2.default)(MethodDefinitionTransformer)).call(this, options)); - - _this.stringLiteralReplacer = replacersFactory(NodeObfuscationReplacers_1.NodeObfuscatorsReplacers.StringLiteralReplacer); - return _this; - } - - (0, _createClass3.default)(MethodDefinitionTransformer, [{ - key: "transformNode", - value: function transformNode(methodDefinitionNode, parentNode) { - if (Node_1.Node.isIdentifierNode(methodDefinitionNode.key) && !MethodDefinitionTransformer_1.ignoredNames.includes(methodDefinitionNode.key.name) && methodDefinitionNode.computed === false) { - methodDefinitionNode.computed = true; - methodDefinitionNode.key = { - type: NodeType_1.NodeType.Literal, - value: methodDefinitionNode.key.name, - raw: "'" + methodDefinitionNode.key.name + "'" - }; - } - return methodDefinitionNode; - } - }]); - return MethodDefinitionTransformer; -}(AbstractNodeTransformer_1.AbstractNodeTransformer); -MethodDefinitionTransformer.ignoredNames = ['constructor']; -MethodDefinitionTransformer = MethodDefinitionTransformer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatorReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], MethodDefinitionTransformer); -exports.MethodDefinitionTransformer = MethodDefinitionTransformer; -var MethodDefinitionTransformer_1; - -/***/ }, -/* 100 */ -/***/ function(module, exports, __webpack_require__) { +/***/ }), +/* 101 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6155,16 +6304,16 @@ var ObjectExpressionTransformer = ObjectExpressionTransformer_1 = function (_Abs property.shorthand = false; } if (Node_1.Node.isLiteralNode(property.key)) { - property.key = ObjectExpressionTransformer_1.obfuscateLiteralPropertyKey(property.key); + property.key = ObjectExpressionTransformer_1.transformLiteralPropertyKey(property.key); } else if (Node_1.Node.isIdentifierNode(property.key)) { - property.key = ObjectExpressionTransformer_1.obfuscateIdentifierPropertyKey(property.key); + property.key = ObjectExpressionTransformer_1.transformIdentifierPropertyKey(property.key); } }); return objectExpressionNode; } }], [{ - key: "obfuscateLiteralPropertyKey", - value: function obfuscateLiteralPropertyKey(node) { + key: "transformLiteralPropertyKey", + value: function transformLiteralPropertyKey(node) { if (typeof node.value === 'string' && !node['x-verbatim-property']) { node['x-verbatim-property'] = { content: "'" + Utils_1.Utils.stringToUnicodeEscapeSequence(node.value) + "'", @@ -6174,8 +6323,8 @@ var ObjectExpressionTransformer = ObjectExpressionTransformer_1 = function (_Abs return node; } }, { - key: "obfuscateIdentifierPropertyKey", - value: function obfuscateIdentifierPropertyKey(node) { + key: "transformIdentifierPropertyKey", + value: function transformIdentifierPropertyKey(node) { return { type: NodeType_1.NodeType.Literal, value: node.name, @@ -6193,149 +6342,14 @@ ObjectExpressionTransformer = ObjectExpressionTransformer_1 = tslib_1.__decorate exports.ObjectExpressionTransformer = ObjectExpressionTransformer; var ObjectExpressionTransformer_1; -/***/ }, -/* 101 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; - - -var _getIterator2 = __webpack_require__(22); - -var _getIterator3 = _interopRequireDefault(_getIterator2); - -var _getPrototypeOf = __webpack_require__(5); - -var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = __webpack_require__(1); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _possibleConstructorReturn2 = __webpack_require__(7); - -var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - -var _inherits2 = __webpack_require__(6); - -var _inherits3 = _interopRequireDefault(_inherits2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var tslib_1 = __webpack_require__(3); -var inversify_1 = __webpack_require__(2); -var ServiceIdentifiers_1 = __webpack_require__(4); -var AbstractNodeTransformer_1 = __webpack_require__(16); -var Node_1 = __webpack_require__(12); -var Nodes_1 = __webpack_require__(21); -var TemplateLiteralTransformer = TemplateLiteralTransformer_1 = function (_AbstractNodeTransfor) { - (0, _inherits3.default)(TemplateLiteralTransformer, _AbstractNodeTransfor); - - function TemplateLiteralTransformer(replacersFactory, options) { - (0, _classCallCheck3.default)(this, TemplateLiteralTransformer); - - var _this = (0, _possibleConstructorReturn3.default)(this, (TemplateLiteralTransformer.__proto__ || (0, _getPrototypeOf2.default)(TemplateLiteralTransformer)).call(this, options)); - - _this.replacersFactory = replacersFactory; - return _this; - } - - (0, _createClass3.default)(TemplateLiteralTransformer, [{ - key: "transformNode", - value: function transformNode(templateLiteralNode, parentNode) { - var templateLiteralExpressions = templateLiteralNode.expressions; - var nodes = []; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = (0, _getIterator3.default)(templateLiteralNode.quasis), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var templateElement = _step.value; - - nodes.push(Nodes_1.Nodes.getLiteralNode(templateElement.value.cooked)); - var expression = templateLiteralExpressions.shift(); - if (!expression) { - continue; - } - nodes.push(expression); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - nodes = nodes.filter(function (node) { - return !(Node_1.Node.isLiteralNode(node) && node.value === ''); - }); - if (!TemplateLiteralTransformer_1.isLiteralNodeWithStringValue(nodes[0]) && !TemplateLiteralTransformer_1.isLiteralNodeWithStringValue(nodes[1])) { - nodes.unshift(Nodes_1.Nodes.getLiteralNode('')); - } - if (nodes.length > 1) { - var root = Nodes_1.Nodes.getBinaryExpressionNode('+', nodes.shift(), nodes.shift()); - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = (0, _getIterator3.default)(nodes), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var node = _step2.value; - - root = Nodes_1.Nodes.getBinaryExpressionNode('+', root, node); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - return root; - } - return nodes[0]; - } - }], [{ - key: "isLiteralNodeWithStringValue", - value: function isLiteralNodeWithStringValue(node) { - return node && Node_1.Node.isLiteralNode(node) && typeof node.value === 'string'; - } - }]); - return TemplateLiteralTransformer; -}(AbstractNodeTransformer_1.AbstractNodeTransformer); -TemplateLiteralTransformer = TemplateLiteralTransformer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatorReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], TemplateLiteralTransformer); -exports.TemplateLiteralTransformer = TemplateLiteralTransformer; -var TemplateLiteralTransformer_1; - -/***/ }, +/***/ }), /* 102 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _getIterator2 = __webpack_require__(22); +var _getIterator2 = __webpack_require__(21); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -6369,7 +6383,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var estraverse = __webpack_require__(17); -var NodeObfuscationReplacers_1 = __webpack_require__(20); +var NodeObfuscationReplacers_1 = __webpack_require__(23); var NodeType_1 = __webpack_require__(18); var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); @@ -6406,9 +6420,14 @@ var VariableDeclarationTransformer = function (_AbstractNodeTransfor) { var _this2 = this; variableDeclarationNode.declarations.forEach(function (declarationNode) { - if (Node_1.Node.isIdentifierNode(declarationNode.id)) { - _this2.identifierReplacer.storeNames(declarationNode.id.name, nodeIdentifier); + if (Node_1.Node.isObjectPatternNode(declarationNode.id)) { + return estraverse.VisitorOption.Skip; } + NodeUtils_1.NodeUtils.typedTraverse(declarationNode.id, NodeType_1.NodeType.Identifier, { + enter: function enter(node) { + return _this2.identifierReplacer.storeNames(node.name, nodeIdentifier); + } + }); }); } }, { @@ -6467,9 +6486,9 @@ var VariableDeclarationTransformer = function (_AbstractNodeTransfor) { VariableDeclarationTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatorReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], VariableDeclarationTransformer); exports.VariableDeclarationTransformer = VariableDeclarationTransformer; -/***/ }, +/***/ }), /* 103 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6520,9 +6539,9 @@ var BooleanLiteralReplacer = function (_AbstractReplacer_1$A) { BooleanLiteralReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], BooleanLiteralReplacer); exports.BooleanLiteralReplacer = BooleanLiteralReplacer; -/***/ }, +/***/ }), /* 104 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6599,9 +6618,9 @@ var IdentifierReplacer = function (_AbstractReplacer_1$A) { IdentifierReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], IdentifierReplacer); exports.IdentifierReplacer = IdentifierReplacer; -/***/ }, +/***/ }), /* 105 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6670,9 +6689,9 @@ var NumberLiteralReplacer = function (_AbstractReplacer_1$A) { NumberLiteralReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], NumberLiteralReplacer); exports.NumberLiteralReplacer = NumberLiteralReplacer; -/***/ }, +/***/ }), /* 106 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6800,9 +6819,9 @@ StringLiteralReplacer = StringLiteralReplacer_1 = tslib_1.__decorate([inversify_ exports.StringLiteralReplacer = StringLiteralReplacer; var StringLiteralReplacer_1; -/***/ }, +/***/ }), /* 107 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6870,14 +6889,14 @@ Options = Options_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__me exports.Options = Options; var Options_1; -/***/ }, +/***/ }), /* 108 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _getIterator2 = __webpack_require__(22); +var _getIterator2 = __webpack_require__(21); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -7055,14 +7074,14 @@ OptionsNormalizer.STRING_ARRAY_ENCODING_OPTIONS = { OptionsNormalizer.normalizerRules = [OptionsNormalizer.controlFlowFlatteningThresholdRule, OptionsNormalizer.domainLockRule, OptionsNormalizer.selfDefendingRule, OptionsNormalizer.sourceMapBaseUrlRule, OptionsNormalizer.sourceMapFileNameRule, OptionsNormalizer.stringArrayRule, OptionsNormalizer.stringArrayEncodingRule, OptionsNormalizer.stringArrayThresholdRule]; exports.OptionsNormalizer = OptionsNormalizer; -/***/ }, +/***/ }), /* 109 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _getIterator2 = __webpack_require__(22); +var _getIterator2 = __webpack_require__(21); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -7131,9 +7150,9 @@ var ValidationErrorsFormatter = function () { exports.ValidationErrorsFormatter = ValidationErrorsFormatter; -/***/ }, +/***/ }), /* 110 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7238,9 +7257,9 @@ StackTraceAnalyzer = StackTraceAnalyzer_1 = tslib_1.__decorate([inversify_1.inje exports.StackTraceAnalyzer = StackTraceAnalyzer; var StackTraceAnalyzer_1; -/***/ }, +/***/ }), /* 111 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7316,9 +7335,9 @@ var FunctionDeclarationCalleeDataExtractor = function (_AbstractCalleeDataEx) { FunctionDeclarationCalleeDataExtractor = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata("design:paramtypes", [])], FunctionDeclarationCalleeDataExtractor); exports.FunctionDeclarationCalleeDataExtractor = FunctionDeclarationCalleeDataExtractor; -/***/ }, +/***/ }), /* 112 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7397,14 +7416,14 @@ var FunctionExpressionCalleeDataExtractor = function (_AbstractCalleeDataEx) { FunctionExpressionCalleeDataExtractor = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata("design:paramtypes", [])], FunctionExpressionCalleeDataExtractor); exports.FunctionExpressionCalleeDataExtractor = FunctionExpressionCalleeDataExtractor; -/***/ }, +/***/ }), /* 113 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _getIterator2 = __webpack_require__(22); +var _getIterator2 = __webpack_require__(21); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -7552,14 +7571,14 @@ var ObjectExpressionCalleeDataExtractor = function (_AbstractCalleeDataEx) { ObjectExpressionCalleeDataExtractor = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata("design:paramtypes", [])], ObjectExpressionCalleeDataExtractor); exports.ObjectExpressionCalleeDataExtractor = ObjectExpressionCalleeDataExtractor; -/***/ }, +/***/ }), /* 114 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _toConsumableArray2 = __webpack_require__(26); +var _toConsumableArray2 = __webpack_require__(24); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); @@ -7640,9 +7659,9 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: ArrayStorage = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata("design:paramtypes", [])], ArrayStorage); exports.ArrayStorage = ArrayStorage; -/***/ }, +/***/ }), /* 115 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7684,9 +7703,9 @@ var ControlFlowStorage = function (_MapStorage_1$MapStor) { exports.ControlFlowStorage = ControlFlowStorage; -/***/ }, +/***/ }), /* 116 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7760,9 +7779,9 @@ CustomNodeGroupStorage = CustomNodeGroupStorage_1 = tslib_1.__decorate([inversif exports.CustomNodeGroupStorage = CustomNodeGroupStorage; var CustomNodeGroupStorage_1; -/***/ }, +/***/ }), /* 117 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7838,9 +7857,9 @@ var StringArrayStorage = function (_ArrayStorage_1$Array) { StringArrayStorage = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata("design:paramtypes", [])], StringArrayStorage); exports.StringArrayStorage = StringArrayStorage; -/***/ }, +/***/ }), /* 118 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7850,9 +7869,9 @@ function AtobTemplate() { } exports.AtobTemplate = AtobTemplate; -/***/ }, +/***/ }), /* 119 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7862,9 +7881,9 @@ function Rc4Template() { } exports.Rc4Template = Rc4Template; -/***/ }, +/***/ }), /* 120 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7874,9 +7893,9 @@ function SingleNodeCallControllerTemplate() { } exports.SingleNodeCallControllerTemplate = SingleNodeCallControllerTemplate; -/***/ }, +/***/ }), /* 121 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7886,9 +7905,9 @@ function ConsoleOutputDisableExpressionTemplate() { } exports.ConsoleOutputDisableExpressionTemplate = ConsoleOutputDisableExpressionTemplate; -/***/ }, +/***/ }), /* 122 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7898,9 +7917,9 @@ function DebugProtectionFunctionCallTemplate() { } exports.DebugProtectionFunctionCallTemplate = DebugProtectionFunctionCallTemplate; -/***/ }, +/***/ }), /* 123 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7910,9 +7929,9 @@ function DebugProtectionFunctionIntervalTemplate() { } exports.DebugProtectionFunctionIntervalTemplate = DebugProtectionFunctionIntervalTemplate; -/***/ }, +/***/ }), /* 124 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7922,9 +7941,9 @@ function DebugProtectionFunctionTemplate() { } exports.DebugProtectionFunctionTemplate = DebugProtectionFunctionTemplate; -/***/ }, +/***/ }), /* 125 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7934,9 +7953,9 @@ function DomainLockNodeTemplate() { } exports.DomainLockNodeTemplate = DomainLockNodeTemplate; -/***/ }, +/***/ }), /* 126 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7947,9 +7966,9 @@ function SelfDefendingTemplate() { } exports.SelfDefendingTemplate = SelfDefendingTemplate; -/***/ }, +/***/ }), /* 127 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7960,9 +7979,9 @@ function SelfDefendingTemplate() { } exports.SelfDefendingTemplate = SelfDefendingTemplate; -/***/ }, +/***/ }), /* 128 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7972,9 +7991,9 @@ function StringArrayBase64DecodeNodeTemplate() { } exports.StringArrayBase64DecodeNodeTemplate = StringArrayBase64DecodeNodeTemplate; -/***/ }, +/***/ }), /* 129 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7984,9 +8003,9 @@ function StringArrayCallsWrapperTemplate() { } exports.StringArrayCallsWrapperTemplate = StringArrayCallsWrapperTemplate; -/***/ }, +/***/ }), /* 130 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7996,9 +8015,9 @@ function StringArrayRc4DecodeNodeTemplate() { } exports.StringArrayRc4DecodeNodeTemplate = StringArrayRc4DecodeNodeTemplate; -/***/ }, +/***/ }), /* 131 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8008,9 +8027,9 @@ function StringArrayTemplate() { } exports.StringArrayTemplate = StringArrayTemplate; -/***/ }, +/***/ }), /* 132 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8021,9 +8040,9 @@ function SelfDefendingTemplate() { } exports.SelfDefendingTemplate = SelfDefendingTemplate; -/***/ }, +/***/ }), /* 133 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8033,112 +8052,113 @@ function StringArrayRotateFunctionTemplate() { } exports.StringArrayRotateFunctionTemplate = StringArrayRotateFunctionTemplate; -/***/ }, +/***/ }), /* 134 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-polyfill"); -/***/ }, +/***/ }), /* 135 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/core-js/object/assign"); -/***/ }, +/***/ }), /* 136 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/core-js/object/define-property"); -/***/ }, +/***/ }), /* 137 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/core-js/object/get-own-property-descriptor"); -/***/ }, +/***/ }), /* 138 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/core-js/set"); -/***/ }, +/***/ }), /* 139 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/core-js/symbol"); -/***/ }, +/***/ }), /* 140 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/helpers/defineProperty"); -/***/ }, +/***/ }), /* 141 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("babel-runtime/helpers/typeof"); -/***/ }, +/***/ }), /* 142 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("chance"); -/***/ }, +/***/ }), /* 143 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("class-validator"); -/***/ }, +/***/ }), /* 144 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("commander"); -/***/ }, +/***/ }), /* 145 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("events"); -/***/ }, +/***/ }), /* 146 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("fs"); -/***/ }, +/***/ }), /* 147 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("lodash"); -/***/ }, +/***/ }), /* 148 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("mkdirp"); -/***/ }, +/***/ }), /* 149 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { module.exports = require("reflect-metadata"); -/***/ }, -/* 150 */ -/***/ function(module, exports, __webpack_require__) { +/***/ }), +/* 150 */, +/* 151 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var JavaScriptObfuscator_1 = __webpack_require__(24); +var JavaScriptObfuscator_1 = __webpack_require__(25); module.exports = JavaScriptObfuscator_1.JavaScriptObfuscator; -/***/ } +/***/ }) /******/ ]); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/package.json b/package.json index 322b42cc..1faf9117 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "escodegen": "1.8.1", "esprima": "3.1.3", "estraverse": "4.2.0", - "inversify": "3.0.0-rc.4", + "inversify": "3.0.0", "lodash": "4.17.4", "mkdirp": "0.5.1", "reflect-metadata": "0.1.9", @@ -44,10 +44,10 @@ "@types/esprima": "2.1.33", "@types/estraverse": "0.0.6", "@types/estree": "0.0.34", - "@types/lodash": "4.14.48", + "@types/lodash": "4.14.50", "@types/mkdirp": "0.3.29", "@types/mocha": "2.2.37", - "@types/node": "6.0.59", + "@types/node": "7.0.0", "@types/sinon": "1.16.34", "@types/string-template": "1.0.2", "awesome-typescript-loader": "3.0.0-beta.18", @@ -63,8 +63,8 @@ "ts-node": "2.0.0", "tslint": "4.3.1", "tslint-loader": "3.3.0", - "typescript": "2.1.4", - "webpack": "2.2.0-rc.3", + "typescript": "2.1.5", + "webpack": "2.2.0-rc.4", "webpack-node-externals": "1.5.4" }, "repository": { diff --git a/src/Obfuscator.ts b/src/Obfuscator.ts index f261b0db..30045ecb 100644 --- a/src/Obfuscator.ts +++ b/src/Obfuscator.ts @@ -29,7 +29,7 @@ export class Obfuscator implements IObfuscator { /** * @type {Map} */ - private static readonly nodeControlFlowTransformersMap: Map = new Map([ + private static readonly controlFlowTransformersMap: Map = new Map([ [NodeType.BlockStatement, [NodeTransformers.BlockStatementControlFlowTransformer]], [NodeType.FunctionDeclaration, [NodeTransformers.FunctionControlFlowTransformer]], [NodeType.FunctionExpression, [NodeTransformers.FunctionControlFlowTransformer]] @@ -38,7 +38,16 @@ export class Obfuscator implements IObfuscator { /** * @type {Map} */ - private static readonly nodeObfuscatorsMap: Map = new Map([ + private static readonly convertingTransformersMap: Map = new Map([ + [NodeType.MemberExpression, [NodeTransformers.MemberExpressionTransformer]], + [NodeType.MethodDefinition, [NodeTransformers.MethodDefinitionTransformer]], + [NodeType.TemplateLiteral, [NodeTransformers.TemplateLiteralTransformer]], + ]); + + /** + * @type {Map} + */ + private static readonly obfuscatingTransformersMap: Map = new Map([ [NodeType.ArrowFunctionExpression, [NodeTransformers.FunctionTransformer]], [NodeType.ClassDeclaration, [NodeTransformers.FunctionDeclarationTransformer]], [NodeType.CatchClause, [NodeTransformers.CatchClauseTransformer]], @@ -47,13 +56,10 @@ export class Obfuscator implements IObfuscator { NodeTransformers.FunctionTransformer ]], [NodeType.FunctionExpression, [NodeTransformers.FunctionTransformer]], - [NodeType.MemberExpression, [NodeTransformers.MemberExpressionTransformer]], - [NodeType.MethodDefinition, [NodeTransformers.MethodDefinitionTransformer]], [NodeType.ObjectExpression, [NodeTransformers.ObjectExpressionTransformer]], [NodeType.VariableDeclaration, [NodeTransformers.VariableDeclarationTransformer]], [NodeType.LabeledStatement, [NodeTransformers.LabeledStatementTransformer]], - [NodeType.TemplateLiteral, [NodeTransformers.TemplateLiteralTransformer]], - [NodeType.Literal, [NodeTransformers.LiteralTransformer]] // should be latest in the chain of obfuscators + [NodeType.Literal, [NodeTransformers.LiteralTransformer]] ]); /** @@ -134,7 +140,7 @@ export class Obfuscator implements IObfuscator { astTree = this.transformAstTree( astTree, VisitorDirection.leave, - this.nodeTransformersFactory(Obfuscator.nodeControlFlowTransformersMap) + this.nodeTransformersFactory(Obfuscator.controlFlowTransformersMap) ); } @@ -142,7 +148,12 @@ export class Obfuscator implements IObfuscator { astTree = this.transformAstTree( astTree, VisitorDirection.enter, - this.nodeTransformersFactory(Obfuscator.nodeObfuscatorsMap) + this.nodeTransformersFactory( + new Map([ + ...Obfuscator.convertingTransformersMap, + ...Obfuscator.obfuscatingTransformersMap + ]) + ) ); this.obfuscationEventEmitter.emit(ObfuscationEvents.AfterObfuscation, astTree, stackTraceData); diff --git a/src/cli/JavaScriptObfuscatorCLI.ts b/src/cli/JavaScriptObfuscatorCLI.ts index b146b5d7..20ff9d80 100644 --- a/src/cli/JavaScriptObfuscatorCLI.ts +++ b/src/cli/JavaScriptObfuscatorCLI.ts @@ -182,12 +182,12 @@ export class JavaScriptObfuscatorCLI { .option( '--domainLock ', 'Blocks the execution of the code in domains that do not match the passed RegExp patterns (comma separated)', - (val: string) => val.split(',') + (value: string) => value.split(',') ) .option( '--reservedNames ', 'Disable obfuscation of variable names, function names and names of function parameters that match the passed RegExp patterns (comma separated)', - (val: string) => val.split(',') + (value: string) => value.split(',') ) .option( '--rotateStringArray ', 'Disable rotation of unicode array values during obfuscation', @@ -286,7 +286,10 @@ export class JavaScriptObfuscatorCLI { options.sourceMapFileName || '' ); - options.sourceMapFileName = path.basename(outputSourceMapPath); + options = { + ...options, + sourceMapFileName: path.basename(outputSourceMapPath) + }; const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(this.data, options); diff --git a/src/container/InversifyContainerFacade.ts b/src/container/InversifyContainerFacade.ts index 824d2b29..3cb3e500 100644 --- a/src/container/InversifyContainerFacade.ts +++ b/src/container/InversifyContainerFacade.ts @@ -3,7 +3,7 @@ import { ServiceIdentifiers } from './ServiceIdentifiers'; import { controlFlowTransformersModule } from './modules/node-transformers/ControlFlowTransformersModule'; import { customNodesModule } from './modules/custom-nodes/CustomNodesModule'; -import { obfuscationTransformersModule } from './modules/node-transformers/ObfuscationTransformersModule'; +import { obfuscatingTransformersModule } from './modules/node-transformers/ObfuscatingTransformersModule'; import { nodeTransformersModule } from './modules/node-transformers/NodeTransformersModule'; import { stackTraceAnalyzerModule } from './modules/stack-trace-analyzer/StackTraceAnalyzerModule'; import { storagesModule } from './modules/storages/StoragesModule'; @@ -88,7 +88,7 @@ export class InversifyContainerFacade implements IInversifyContainerFacade { this.container.load(customNodesModule); this.container.load(nodeTransformersModule); this.container.load(controlFlowTransformersModule); - this.container.load(obfuscationTransformersModule); + this.container.load(obfuscatingTransformersModule); } /** diff --git a/src/container/modules/node-transformers/NodeTransformersModule.ts b/src/container/modules/node-transformers/NodeTransformersModule.ts index 6dee4c5e..1286ef03 100644 --- a/src/container/modules/node-transformers/NodeTransformersModule.ts +++ b/src/container/modules/node-transformers/NodeTransformersModule.ts @@ -8,19 +8,19 @@ import { NodeTransformers } from '../../../enums/container/NodeTransformers'; import { FunctionControlFlowTransformer } from '../../../node-transformers/control-flow-transformers/FunctionControlFlowTransformer'; import { BlockStatementControlFlowTransformer } from '../../../node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer'; -import { CatchClauseTransformer } from '../../../node-transformers/obfuscation-transformers/CatchClauseTransformer'; -import { FunctionDeclarationTransformer } from '../../../node-transformers/obfuscation-transformers/FunctionDeclarationTransformer'; -import { FunctionTransformer } from '../../../node-transformers/obfuscation-transformers/FunctionTransformer'; -import { LabeledStatementTransformer } from '../../../node-transformers/obfuscation-transformers/LabeledStatementTransformer'; -import { LiteralTransformer } from '../../../node-transformers/obfuscation-transformers/LiteralTransformer'; -import { MemberExpressionTransformer } from '../../../node-transformers/obfuscation-transformers/MemberExpressionTransformer'; -import { MethodDefinitionTransformer } from '../../../node-transformers/obfuscation-transformers/MethodDefinitionTransformer'; -import { ObjectExpressionTransformer } from '../../../node-transformers/obfuscation-transformers/ObjectExpressionTransformer'; -import { TemplateLiteralTransformer } from '../../../node-transformers/obfuscation-transformers/TemplateLiteralTransformer'; -import { VariableDeclarationTransformer } from '../../../node-transformers/obfuscation-transformers/VariableDeclarationTransformer'; +import { CatchClauseTransformer } from '../../../node-transformers/obfuscating-transformers/CatchClauseTransformer'; +import { FunctionDeclarationTransformer } from '../../../node-transformers/obfuscating-transformers/FunctionDeclarationTransformer'; +import { FunctionTransformer } from '../../../node-transformers/obfuscating-transformers/FunctionTransformer'; +import { LabeledStatementTransformer } from '../../../node-transformers/obfuscating-transformers/LabeledStatementTransformer'; +import { LiteralTransformer } from '../../../node-transformers/obfuscating-transformers/LiteralTransformer'; +import { MemberExpressionTransformer } from '../../../node-transformers/converting-transformers/MemberExpressionTransformer'; +import { MethodDefinitionTransformer } from '../../../node-transformers/converting-transformers/MethodDefinitionTransformer'; +import { ObjectExpressionTransformer } from '../../../node-transformers/obfuscating-transformers/ObjectExpressionTransformer'; +import { TemplateLiteralTransformer } from '../../../node-transformers/converting-transformers/TemplateLiteralTransformer'; +import { VariableDeclarationTransformer } from '../../../node-transformers/obfuscating-transformers/VariableDeclarationTransformer'; export const nodeTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => { - // node control flow transformers + // control flow transformers bind(ServiceIdentifiers.INodeTransformer) .to(BlockStatementControlFlowTransformer) .whenTargetNamed(NodeTransformers.BlockStatementControlFlowTransformer); @@ -29,7 +29,20 @@ export const nodeTransformersModule: interfaces.ContainerModule = new ContainerM .to(FunctionControlFlowTransformer) .whenTargetNamed(NodeTransformers.FunctionControlFlowTransformer); - // node obfuscators + // converting transformers + bind(ServiceIdentifiers.INodeTransformer) + .to(MemberExpressionTransformer) + .whenTargetNamed(NodeTransformers.MemberExpressionTransformer); + + bind(ServiceIdentifiers.INodeTransformer) + .to(MethodDefinitionTransformer) + .whenTargetNamed(NodeTransformers.MethodDefinitionTransformer); + + bind(ServiceIdentifiers.INodeTransformer) + .to(TemplateLiteralTransformer) + .whenTargetNamed(NodeTransformers.TemplateLiteralTransformer); + + // obfuscation transformers bind(ServiceIdentifiers.INodeTransformer) .to(CatchClauseTransformer) .whenTargetNamed(NodeTransformers.CatchClauseTransformer); @@ -50,22 +63,10 @@ export const nodeTransformersModule: interfaces.ContainerModule = new ContainerM .to(LiteralTransformer) .whenTargetNamed(NodeTransformers.LiteralTransformer); - bind(ServiceIdentifiers.INodeTransformer) - .to(MemberExpressionTransformer) - .whenTargetNamed(NodeTransformers.MemberExpressionTransformer); - - bind(ServiceIdentifiers.INodeTransformer) - .to(MethodDefinitionTransformer) - .whenTargetNamed(NodeTransformers.MethodDefinitionTransformer); - bind(ServiceIdentifiers.INodeTransformer) .to(ObjectExpressionTransformer) .whenTargetNamed(NodeTransformers.ObjectExpressionTransformer); - bind(ServiceIdentifiers.INodeTransformer) - .to(TemplateLiteralTransformer) - .whenTargetNamed(NodeTransformers.TemplateLiteralTransformer); - bind(ServiceIdentifiers.INodeTransformer) .to(VariableDeclarationTransformer) .whenTargetNamed(NodeTransformers.VariableDeclarationTransformer); diff --git a/src/container/modules/node-transformers/ObfuscationTransformersModule.ts b/src/container/modules/node-transformers/ObfuscatingTransformersModule.ts similarity index 87% rename from src/container/modules/node-transformers/ObfuscationTransformersModule.ts rename to src/container/modules/node-transformers/ObfuscatingTransformersModule.ts index 48d3ab90..c0f5aee4 100644 --- a/src/container/modules/node-transformers/ObfuscationTransformersModule.ts +++ b/src/container/modules/node-transformers/ObfuscatingTransformersModule.ts @@ -5,12 +5,12 @@ import { IObfuscationReplacer } from '../../../interfaces/node-transformers/IObf import { NodeObfuscatorsReplacers } from '../../../enums/container/NodeObfuscationReplacers'; -import { BooleanLiteralReplacer } from '../../../node-transformers/obfuscation-transformers/replacers/BooleanLiteralReplacer'; -import { IdentifierReplacer } from '../../../node-transformers/obfuscation-transformers/replacers/IdentifierReplacer'; -import { NumberLiteralReplacer } from '../../../node-transformers/obfuscation-transformers/replacers/NumberLiteralReplacer'; -import { StringLiteralReplacer } from '../../../node-transformers/obfuscation-transformers/replacers/StringLiteralReplacer'; +import { BooleanLiteralReplacer } from '../../../node-transformers/obfuscating-transformers/replacers/BooleanLiteralReplacer'; +import { IdentifierReplacer } from '../../../node-transformers/obfuscating-transformers/replacers/IdentifierReplacer'; +import { NumberLiteralReplacer } from '../../../node-transformers/obfuscating-transformers/replacers/NumberLiteralReplacer'; +import { StringLiteralReplacer } from '../../../node-transformers/obfuscating-transformers/replacers/StringLiteralReplacer'; -export const obfuscationTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => { +export const obfuscatingTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => { bind(ServiceIdentifiers.IObfuscatorReplacer) .to(BooleanLiteralReplacer) .whenTargetNamed(NodeObfuscatorsReplacers.BooleanReplacer); diff --git a/src/enums/NodeType.ts b/src/enums/NodeType.ts index dd3fc540..6fea420c 100644 --- a/src/enums/NodeType.ts +++ b/src/enums/NodeType.ts @@ -4,6 +4,7 @@ export const NodeType: any = Utils.strEnumify({ ArrayExpression: 'ArrayExpression', ArrowFunctionExpression: 'ArrowFunctionExpression', AssignmentExpression: 'AssignmentExpression', + AssignmentPattern: 'AssignmentPattern', BinaryExpression: 'BinaryExpression', BlockStatement: 'BlockStatement', BreakStatement: 'BreakStatement', @@ -22,6 +23,7 @@ export const NodeType: any = Utils.strEnumify({ MemberExpression: 'MemberExpression', MethodDefinition: 'MethodDefinition', ObjectExpression: 'ObjectExpression', + ObjectPattern: 'ObjectPattern', Program: 'Program', Property: 'Property', ReturnStatement: 'ReturnStatement', diff --git a/src/node-transformers/obfuscation-transformers/MemberExpressionTransformer.ts b/src/node-transformers/converting-transformers/MemberExpressionTransformer.ts similarity index 72% rename from src/node-transformers/obfuscation-transformers/MemberExpressionTransformer.ts rename to src/node-transformers/converting-transformers/MemberExpressionTransformer.ts index 98eb479d..8e00cad2 100644 --- a/src/node-transformers/obfuscation-transformers/MemberExpressionTransformer.ts +++ b/src/node-transformers/converting-transformers/MemberExpressionTransformer.ts @@ -4,9 +4,7 @@ import { ServiceIdentifiers } from '../../container/ServiceIdentifiers'; import * as ESTree from 'estree'; import { IOptions } from '../../interfaces/options/IOptions'; -import { IObfuscationReplacer } from '../../interfaces/node-transformers/IObfuscationReplacer'; -import { NodeObfuscatorsReplacers } from '../../enums/container/NodeObfuscationReplacers'; import { NodeType } from '../../enums/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; @@ -15,21 +13,12 @@ import { Node } from '../../node/Node'; @injectable() export class MemberExpressionTransformer extends AbstractNodeTransformer { /** - * @type {IObfuscationReplacer} - */ - private readonly stringLiteralReplacer: IObfuscationReplacer; - - /** - * @param replacersFactory * @param options */ constructor ( - @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { super(options); - - this.stringLiteralReplacer = replacersFactory(NodeObfuscatorsReplacers.StringLiteralReplacer); } /** diff --git a/src/node-transformers/obfuscation-transformers/MethodDefinitionTransformer.ts b/src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts similarity index 76% rename from src/node-transformers/obfuscation-transformers/MethodDefinitionTransformer.ts rename to src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts index 15b1d4b4..13ab7e1c 100644 --- a/src/node-transformers/obfuscation-transformers/MethodDefinitionTransformer.ts +++ b/src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts @@ -4,9 +4,7 @@ import { ServiceIdentifiers } from '../../container/ServiceIdentifiers'; import * as ESTree from 'estree'; import { IOptions } from '../../interfaces/options/IOptions'; -import { IObfuscationReplacer } from '../../interfaces/node-transformers/IObfuscationReplacer'; -import { NodeObfuscatorsReplacers } from '../../enums/container/NodeObfuscationReplacers'; import { NodeType } from '../../enums/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; @@ -29,21 +27,12 @@ export class MethodDefinitionTransformer extends AbstractNodeTransformer { private static readonly ignoredNames: string[] = ['constructor']; /** - * @type {IObfuscationReplacer} - */ - private readonly stringLiteralReplacer: IObfuscationReplacer; - - /** - * @param replacersFactory * @param options */ constructor ( - @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { super(options); - - this.stringLiteralReplacer = replacersFactory(NodeObfuscatorsReplacers.StringLiteralReplacer); } /** diff --git a/src/node-transformers/obfuscation-transformers/TemplateLiteralTransformer.ts b/src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts similarity index 81% rename from src/node-transformers/obfuscation-transformers/TemplateLiteralTransformer.ts rename to src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts index 75de2f53..c390ed4d 100644 --- a/src/node-transformers/obfuscation-transformers/TemplateLiteralTransformer.ts +++ b/src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts @@ -4,9 +4,6 @@ import { ServiceIdentifiers } from '../../container/ServiceIdentifiers'; import * as ESTree from 'estree'; import { IOptions } from '../../interfaces/options/IOptions'; -import { IObfuscationReplacer } from '../../interfaces/node-transformers/IObfuscationReplacer'; - -import { NodeObfuscatorsReplacers } from '../../enums/container/NodeObfuscationReplacers'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; @@ -19,21 +16,12 @@ import { Nodes } from '../../node/Nodes'; @injectable() export class TemplateLiteralTransformer extends AbstractNodeTransformer { /** - * @type {(replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer} - */ - private readonly replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer; - - /** - * @param replacersFactory * @param options */ constructor ( - @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { super(options); - - this.replacersFactory = replacersFactory; } /** diff --git a/src/node-transformers/obfuscation-transformers/CatchClauseTransformer.ts b/src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts similarity index 100% rename from src/node-transformers/obfuscation-transformers/CatchClauseTransformer.ts rename to src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts diff --git a/src/node-transformers/obfuscation-transformers/FunctionDeclarationTransformer.ts b/src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts similarity index 100% rename from src/node-transformers/obfuscation-transformers/FunctionDeclarationTransformer.ts rename to src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts diff --git a/src/node-transformers/obfuscation-transformers/FunctionTransformer.ts b/src/node-transformers/obfuscating-transformers/FunctionTransformer.ts similarity index 80% rename from src/node-transformers/obfuscation-transformers/FunctionTransformer.ts rename to src/node-transformers/obfuscating-transformers/FunctionTransformer.ts index 2a3f6e84..03a83725 100644 --- a/src/node-transformers/obfuscation-transformers/FunctionTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/FunctionTransformer.ts @@ -61,9 +61,23 @@ export class FunctionTransformer extends AbstractNodeTransformer { private storeFunctionParams (functionNode: ESTree.Function, nodeIdentifier: number): void { functionNode.params .forEach((paramsNode: ESTree.Node) => { - if (Node.isIdentifierNode(paramsNode)) { - this.identifierReplacer.storeNames(paramsNode.name, nodeIdentifier); + if (Node.isObjectPatternNode(paramsNode)) { + return estraverse.VisitorOption.Skip; } + + estraverse.traverse(paramsNode, { + enter: (node: ESTree.Node): any => { + if (Node.isAssignmentPatternNode(node) && Node.isIdentifierNode(node.left)) { + this.identifierReplacer.storeNames(node.left.name, nodeIdentifier); + + return estraverse.VisitorOption.Skip; + } + + if (Node.isIdentifierNode(node)) { + this.identifierReplacer.storeNames(node.name, nodeIdentifier); + } + } + }); }); } diff --git a/src/node-transformers/obfuscation-transformers/LabeledStatementTransformer.ts b/src/node-transformers/obfuscating-transformers/LabeledStatementTransformer.ts similarity index 100% rename from src/node-transformers/obfuscation-transformers/LabeledStatementTransformer.ts rename to src/node-transformers/obfuscating-transformers/LabeledStatementTransformer.ts diff --git a/src/node-transformers/obfuscation-transformers/LiteralTransformer.ts b/src/node-transformers/obfuscating-transformers/LiteralTransformer.ts similarity index 100% rename from src/node-transformers/obfuscation-transformers/LiteralTransformer.ts rename to src/node-transformers/obfuscating-transformers/LiteralTransformer.ts diff --git a/src/node-transformers/obfuscation-transformers/ObjectExpressionTransformer.ts b/src/node-transformers/obfuscating-transformers/ObjectExpressionTransformer.ts similarity index 86% rename from src/node-transformers/obfuscation-transformers/ObjectExpressionTransformer.ts rename to src/node-transformers/obfuscating-transformers/ObjectExpressionTransformer.ts index 133166bd..8beddd29 100644 --- a/src/node-transformers/obfuscation-transformers/ObjectExpressionTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/ObjectExpressionTransformer.ts @@ -37,7 +37,7 @@ export class ObjectExpressionTransformer extends AbstractNodeTransformer { * @param node * @returns {ESTree.Literal} */ - private static obfuscateLiteralPropertyKey (node: ESTree.Literal): ESTree.Literal { + private static transformLiteralPropertyKey (node: ESTree.Literal): ESTree.Literal { if (typeof node.value === 'string' && !node['x-verbatim-property']) { node['x-verbatim-property'] = { content : `'${Utils.stringToUnicodeEscapeSequence(node.value)}'`, @@ -52,7 +52,7 @@ export class ObjectExpressionTransformer extends AbstractNodeTransformer { * @param node * @returns {ESTree.Literal} */ - private static obfuscateIdentifierPropertyKey (node: ESTree.Identifier): ESTree.Literal { + private static transformIdentifierPropertyKey (node: ESTree.Identifier): ESTree.Literal { return { type: NodeType.Literal, value: node.name, @@ -76,9 +76,9 @@ export class ObjectExpressionTransformer extends AbstractNodeTransformer { } if (Node.isLiteralNode(property.key)) { - property.key = ObjectExpressionTransformer.obfuscateLiteralPropertyKey(property.key); + property.key = ObjectExpressionTransformer.transformLiteralPropertyKey(property.key); } else if (Node.isIdentifierNode(property.key)) { - property.key = ObjectExpressionTransformer.obfuscateIdentifierPropertyKey(property.key); + property.key = ObjectExpressionTransformer.transformIdentifierPropertyKey(property.key); } }); diff --git a/src/node-transformers/obfuscation-transformers/VariableDeclarationTransformer.ts b/src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts similarity index 93% rename from src/node-transformers/obfuscation-transformers/VariableDeclarationTransformer.ts rename to src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts index fdd0ec03..17c174fc 100644 --- a/src/node-transformers/obfuscation-transformers/VariableDeclarationTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts @@ -83,9 +83,13 @@ export class VariableDeclarationTransformer extends AbstractNodeTransformer { private storeVariableNames (variableDeclarationNode: ESTree.VariableDeclaration, nodeIdentifier: number): void { variableDeclarationNode.declarations .forEach((declarationNode: ESTree.VariableDeclarator) => { - if (Node.isIdentifierNode(declarationNode.id)) { - this.identifierReplacer.storeNames(declarationNode.id.name, nodeIdentifier); + if (Node.isObjectPatternNode(declarationNode.id)) { + return estraverse.VisitorOption.Skip; } + + NodeUtils.typedTraverse(declarationNode.id, NodeType.Identifier, { + enter: (node: ESTree.Identifier) => this.identifierReplacer.storeNames(node.name, nodeIdentifier) + }); }); } diff --git a/src/node-transformers/obfuscation-transformers/replacers/AbstractReplacer.ts b/src/node-transformers/obfuscating-transformers/replacers/AbstractReplacer.ts similarity index 100% rename from src/node-transformers/obfuscation-transformers/replacers/AbstractReplacer.ts rename to src/node-transformers/obfuscating-transformers/replacers/AbstractReplacer.ts diff --git a/src/node-transformers/obfuscation-transformers/replacers/BooleanLiteralReplacer.ts b/src/node-transformers/obfuscating-transformers/replacers/BooleanLiteralReplacer.ts similarity index 100% rename from src/node-transformers/obfuscation-transformers/replacers/BooleanLiteralReplacer.ts rename to src/node-transformers/obfuscating-transformers/replacers/BooleanLiteralReplacer.ts diff --git a/src/node-transformers/obfuscation-transformers/replacers/IdentifierReplacer.ts b/src/node-transformers/obfuscating-transformers/replacers/IdentifierReplacer.ts similarity index 100% rename from src/node-transformers/obfuscation-transformers/replacers/IdentifierReplacer.ts rename to src/node-transformers/obfuscating-transformers/replacers/IdentifierReplacer.ts diff --git a/src/node-transformers/obfuscation-transformers/replacers/NumberLiteralReplacer.ts b/src/node-transformers/obfuscating-transformers/replacers/NumberLiteralReplacer.ts similarity index 100% rename from src/node-transformers/obfuscation-transformers/replacers/NumberLiteralReplacer.ts rename to src/node-transformers/obfuscating-transformers/replacers/NumberLiteralReplacer.ts diff --git a/src/node-transformers/obfuscation-transformers/replacers/StringLiteralReplacer.ts b/src/node-transformers/obfuscating-transformers/replacers/StringLiteralReplacer.ts similarity index 100% rename from src/node-transformers/obfuscation-transformers/replacers/StringLiteralReplacer.ts rename to src/node-transformers/obfuscating-transformers/replacers/StringLiteralReplacer.ts diff --git a/src/node/Node.ts b/src/node/Node.ts index 046f092d..c5e84bc0 100644 --- a/src/node/Node.ts +++ b/src/node/Node.ts @@ -13,6 +13,14 @@ export class Node { return node.type === NodeType.ArrowFunctionExpression; } + /** + * @param node + * @returns {boolean} + */ + public static isAssignmentPatternNode (node: ESTree.Node): node is ESTree.AssignmentPattern { + return node.type === NodeType.AssignmentPattern; + } + /** * @param node * @returns {boolean} @@ -122,6 +130,14 @@ export class Node { return node.type === NodeType.MemberExpression; } + /** + * @param node + * @returns {boolean} + */ + public static isObjectPatternNode (node: ESTree.Node): node is ESTree.ObjectPattern { + return node.type === NodeType.ObjectPattern; + } + /** * @param node * @returns {boolean} diff --git a/test/functional-tests/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.spec.ts b/test/functional-tests/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.spec.ts index 53cf160e..c456d844 100644 --- a/test/functional-tests/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.spec.ts +++ b/test/functional-tests/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.spec.ts @@ -9,7 +9,7 @@ import { readFileAsString } from '../../../helpers/readFileAsString'; import { JavaScriptObfuscator } from '../../../../src/JavaScriptObfuscator'; describe('ConsoleOutputDisableExpressionNode', () => { - const regExp = /(_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*)*'\]\['(\\x[a-f0-9]*)*'\] *= *_0x([a-f0-9]){4,6};){4}/; + const regExp = /(_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*)*'\]\['(\\x[a-f0-9]*)*'\] *= *_0x([a-f0-9]){4,6};){7}/u; it('should correctly append `ConsoleOutputDisableExpressionNode` custom node into the obfuscated code if `disableConsoleOutput` option is set', () => { let obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/MemberExpressionTransformer.spec.ts b/test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/MemberExpressionTransformer.spec.ts similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/MemberExpressionTransformer.spec.ts rename to test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/MemberExpressionTransformer.spec.ts diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/fixtures/dot-notation-call.js b/test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/fixtures/dot-notation-call.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/fixtures/dot-notation-call.js rename to test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/fixtures/dot-notation-call.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/fixtures/square-brackets-call.js b/test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/fixtures/square-brackets-call.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/fixtures/square-brackets-call.js rename to test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/fixtures/square-brackets-call.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/fixtures/square-brackets-with-identifier-call.js b/test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/fixtures/square-brackets-with-identifier-call.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/fixtures/square-brackets-with-identifier-call.js rename to test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/fixtures/square-brackets-with-identifier-call.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/method-definition-transformer/MethodDefinitionTransformer.spec.ts b/test/functional-tests/node-transformers/converting-transformers/method-definition-transformer/MethodDefinitionTransformer.spec.ts similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/method-definition-transformer/MethodDefinitionTransformer.spec.ts rename to test/functional-tests/node-transformers/converting-transformers/method-definition-transformer/MethodDefinitionTransformer.spec.ts diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/method-definition-transformer/fixtures/input.js b/test/functional-tests/node-transformers/converting-transformers/method-definition-transformer/fixtures/input.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/method-definition-transformer/fixtures/input.js rename to test/functional-tests/node-transformers/converting-transformers/method-definition-transformer/fixtures/input.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/TemplateLiteralTransformer.spec.ts b/test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/TemplateLiteralTransformer.spec.ts similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/TemplateLiteralTransformer.spec.ts rename to test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/TemplateLiteralTransformer.spec.ts diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/fixtures/expression-only.js b/test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/expression-only.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/fixtures/expression-only.js rename to test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/expression-only.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/fixtures/literal-inside-expression.js b/test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/literal-inside-expression.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/fixtures/literal-inside-expression.js rename to test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/literal-inside-expression.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/fixtures/multiple-expressions.js b/test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/multiple-expressions.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/fixtures/multiple-expressions.js rename to test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/multiple-expressions.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/fixtures/simple-input.js b/test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/simple-input.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/fixtures/simple-input.js rename to test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/simple-input.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscating-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts rename to test/functional-tests/node-transformers/obfuscating-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/fixtures/input.js b/test/functional-tests/node-transformers/obfuscating-transformers/catch-clause-transformer/fixtures/input.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/fixtures/input.js rename to test/functional-tests/node-transformers/obfuscating-transformers/catch-clause-transformer/fixtures/input.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/fixtures/object-pattern-as-parameter.js b/test/functional-tests/node-transformers/obfuscating-transformers/catch-clause-transformer/fixtures/object-pattern-as-parameter.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/fixtures/object-pattern-as-parameter.js rename to test/functional-tests/node-transformers/obfuscating-transformers/catch-clause-transformer/fixtures/object-pattern-as-parameter.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/function-declaration-transformer/FunctionDeclarationTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscating-transformers/function-declaration-transformer/FunctionDeclarationTransformer.spec.ts similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/function-declaration-transformer/FunctionDeclarationTransformer.spec.ts rename to test/functional-tests/node-transformers/obfuscating-transformers/function-declaration-transformer/FunctionDeclarationTransformer.spec.ts diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/function-declaration-transformer/fixtures/input.js b/test/functional-tests/node-transformers/obfuscating-transformers/function-declaration-transformer/fixtures/input.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/function-declaration-transformer/fixtures/input.js rename to test/functional-tests/node-transformers/obfuscating-transformers/function-declaration-transformer/fixtures/input.js diff --git a/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/FunctionTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/FunctionTransformer.spec.ts new file mode 100644 index 00000000..9b8903f8 --- /dev/null +++ b/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/FunctionTransformer.spec.ts @@ -0,0 +1,175 @@ +import { assert } from 'chai'; + +import { IObfuscationResult } from '../../../../../src/interfaces/IObfuscationResult'; + +import { NO_CUSTOM_NODES_PRESET } from '../../../../../src/options/presets/NoCustomNodes'; + +import { readFileAsString } from '../../../../helpers/readFileAsString'; + +import { JavaScriptObfuscator } from '../../../../../src/JavaScriptObfuscator'; + +describe('FunctionTransformer', () => { + describe('identifiers transformation inside `FunctionDeclaration` and `FunctionExpression` node body', () => { + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + readFileAsString(__dirname + '/fixtures/input.js'), + { + ...NO_CUSTOM_NODES_PRESET + } + ); + const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); + + it('should correct transform both function parameter identifier and function body identifier with same name', () => { + const functionParamIdentifierMatch: RegExpMatchArray|null = obfuscatedCode + .match(/var _0x[a-f0-9]{4,6} *= *function *\((_0x[a-f0-9]{4,6})\) *\{/); + const functionBodyIdentifierMatch: RegExpMatchArray|null = obfuscatedCode + .match(/console\['\\x6c\\x6f\\x67'\]\((_0x[a-f0-9]{4,6})\)/); + + const functionParamIdentifierName: string = (functionParamIdentifierMatch)[1]; + const functionBodyIdentifierName: string = (functionBodyIdentifierMatch)[1]; + + assert.equal(functionParamIdentifierName, functionBodyIdentifierName); + }); + + it('shouldn\'t transform other variables in function body', () => { + assert.equal(/variable *= *0x6;/.test(obfuscatedCode), true); + }); + }); + + describe('object pattern as parameter', () => { + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + readFileAsString(__dirname + '/fixtures/object-pattern-as-parameter.js'), + { + ...NO_CUSTOM_NODES_PRESET + } + ); + const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); + + it('shouldn\'t transform function parameter object pattern identifier', () => { + const functionParameterMatch: RegExp = /function *\(\{ *bar *\}\) *\{/; + const functionBodyMatch: RegExp = /return *bar;/; + + assert.match(obfuscatedCode, functionParameterMatch); + assert.match(obfuscatedCode, functionBodyMatch); + }); + }); + + describe('assignment pattern as parameter', () => { + describe('literal as right value', () => { + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + readFileAsString(__dirname + '/fixtures/assignment-pattern-as-parameter-1.js'), + { + ...NO_CUSTOM_NODES_PRESET + } + ); + const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); + + it('should transform function parameter assignment pattern identifier', () => { + const functionParameterMatch: RegExp = /function *\(_0x[a-f0-9]{4,6} *= *0x1\) *\{/; + const functionBodyMatch: RegExp = /return *_0x[a-f0-9]{4,6};/; + + assert.match(obfuscatedCode, functionParameterMatch); + assert.match(obfuscatedCode, functionBodyMatch); + }); + }); + + describe('identifier as right value', () => { + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + readFileAsString(__dirname + '/fixtures/assignment-pattern-as-parameter-2.js'), + { + ...NO_CUSTOM_NODES_PRESET + } + ); + const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); + + const variableDeclarationMatch: RegExp = /var *(_0x[a-f0-9]{4,6}) *= *0x1;/; + const functionParameterMatch: RegExp = /function *\((_0x[a-f0-9]{4,6}) *= *(_0x[a-f0-9]{4,6})\) *\{/; + const functionBodyMatch: RegExp = /return *(_0x[a-f0-9]{4,6});/; + + const variableDeclarationIdentifierName: string = obfuscatedCode.match(variableDeclarationMatch)![1]; + const functionParameterIdentifierName: string = obfuscatedCode.match(functionParameterMatch)![1]; + const functionDefaultParameterIdentifierName: string = obfuscatedCode.match(functionParameterMatch)![2]; + + const functionBodyIdentifierName: string = obfuscatedCode.match(functionBodyMatch)![1]; + + it('should transform function parameter assignment pattern identifier', () => { + assert.match(obfuscatedCode, variableDeclarationMatch); + assert.match(obfuscatedCode, functionParameterMatch); + assert.match(obfuscatedCode, functionBodyMatch); + }); + + it('should keep same names for identifier in variable declaration and default value identifier of function parameter', () => { + assert.equal(variableDeclarationIdentifierName, functionDefaultParameterIdentifierName); + }); + + it('should keep same names for identifiers in function params and function body', () => { + assert.equal(functionParameterIdentifierName, functionBodyIdentifierName); + }); + }); + + describe('identifier as right value', () => { + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + readFileAsString(__dirname + '/fixtures/assignment-pattern-as-parameter-3.js'), + { + ...NO_CUSTOM_NODES_PRESET + } + ); + const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); + + const variableDeclarationMatch: RegExp = /var *(_0x[a-f0-9]{4,6}) *= *0x1;/; + const functionParameterMatch: RegExp = /function *\((_0x[a-f0-9]{4,6}), *(_0x[a-f0-9]{4,6}) *= *(_0x[a-f0-9]{4,6})\) *\{/; + const functionBodyMatch: RegExp = /return *(_0x[a-f0-9]{4,6}) *\+ *(_0x[a-f0-9]{4,6});/; + + const variableDeclarationIdentifierName: string = obfuscatedCode.match(variableDeclarationMatch)![1]; + const functionParameterIdentifierName: string = obfuscatedCode.match(functionParameterMatch)![1]; + const functionDefaultParameterIdentifierName1: string = obfuscatedCode.match(functionParameterMatch)![2]; + const functionDefaultParameterIdentifierName2: string = obfuscatedCode.match(functionParameterMatch)![3]; + + const functionBodyIdentifierName1: string = obfuscatedCode.match(functionBodyMatch)![1]; + const functionBodyIdentifierName2: string = obfuscatedCode.match(functionBodyMatch)![2]; + + it('should transform function parameter assignment pattern identifier', () => { + assert.match(obfuscatedCode, variableDeclarationMatch); + assert.match(obfuscatedCode, functionParameterMatch); + assert.match(obfuscatedCode, functionBodyMatch); + }); + + it('shouldn\'t keep same names variable declaration identifier and function parameters identifiers', () => { + assert.notEqual(variableDeclarationIdentifierName, functionParameterIdentifierName); + assert.notEqual(variableDeclarationIdentifierName, functionDefaultParameterIdentifierName1); + assert.notEqual(variableDeclarationIdentifierName, functionDefaultParameterIdentifierName2); + }); + + it('should keep same names for identifier in first function parameter and default value identifier of second function parameter', () => { + assert.equal(functionParameterIdentifierName, functionDefaultParameterIdentifierName2); + }); + + it('should keep same names for identifiers in function params and function body', () => { + assert.equal(functionParameterIdentifierName, functionBodyIdentifierName1); + assert.equal(functionDefaultParameterIdentifierName1, functionBodyIdentifierName2); + }); + }); + }); + + describe('array pattern as parameter', () => { + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + readFileAsString(__dirname + '/fixtures/array-pattern-as-parameter.js'), + { + ...NO_CUSTOM_NODES_PRESET + } + ); + const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); + + const functionParameterMatch: RegExp = /function *\(\[(_0x[a-f0-9]{4,6}), *(_0x[a-f0-9]{4,6})\]\) *\{/; + const functionBodyMatch: RegExp = /return *(_0x[a-f0-9]{4,6}) *\+ *(_0x[a-f0-9]{4,6});/; + + const arrayPatternIdentifierName1: string = obfuscatedCode.match(functionParameterMatch)![1]; + const arrayPatternIdentifierName2: string = obfuscatedCode.match(functionParameterMatch)![2]; + const functionBodyIdentifierName1: string = obfuscatedCode.match(functionBodyMatch)![1]; + const functionBodyIdentifierName2: string = obfuscatedCode.match(functionBodyMatch)![2]; + + it('should keep same names for identifiers in function parameter array pattern and function body', () => { + assert.equal(arrayPatternIdentifierName1, functionBodyIdentifierName1); + assert.equal(arrayPatternIdentifierName2, functionBodyIdentifierName2); + }); + }); +}); diff --git a/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/array-pattern-as-parameter.js b/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/array-pattern-as-parameter.js new file mode 100644 index 00000000..1638b9a7 --- /dev/null +++ b/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/array-pattern-as-parameter.js @@ -0,0 +1,5 @@ +(function () { + var test = function ([foo, bar]) { + return foo + bar; + } +})(); diff --git a/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/assignment-pattern-as-parameter-1.js b/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/assignment-pattern-as-parameter-1.js new file mode 100644 index 00000000..f21992a4 --- /dev/null +++ b/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/assignment-pattern-as-parameter-1.js @@ -0,0 +1,5 @@ +(function () { + var test = function (bar = 1) { + return bar; + } +})(); diff --git a/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/assignment-pattern-as-parameter-2.js b/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/assignment-pattern-as-parameter-2.js new file mode 100644 index 00000000..d48277d0 --- /dev/null +++ b/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/assignment-pattern-as-parameter-2.js @@ -0,0 +1,6 @@ +(function () { + var foo = 1; + var test = function (bar = foo) { + return bar; + } +})(); diff --git a/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/assignment-pattern-as-parameter-3.js b/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/assignment-pattern-as-parameter-3.js new file mode 100644 index 00000000..9782200f --- /dev/null +++ b/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/assignment-pattern-as-parameter-3.js @@ -0,0 +1,6 @@ +(function () { + var foo = 1; + var test = function (foo, bar = foo) { + return foo + bar; + } +})(); diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/input.js b/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/input.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/input.js rename to test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/input.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/object-pattern-as-parameter.js b/test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/object-pattern-as-parameter.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/object-pattern-as-parameter.js rename to test/functional-tests/node-transformers/obfuscating-transformers/function-transformer/fixtures/object-pattern-as-parameter.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/labeled-statement-transformer/LabeledStatementTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscating-transformers/labeled-statement-transformer/LabeledStatementTransformer.spec.ts similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/labeled-statement-transformer/LabeledStatementTransformer.spec.ts rename to test/functional-tests/node-transformers/obfuscating-transformers/labeled-statement-transformer/LabeledStatementTransformer.spec.ts diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/labeled-statement-transformer/fixtures/input.js b/test/functional-tests/node-transformers/obfuscating-transformers/labeled-statement-transformer/fixtures/input.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/labeled-statement-transformer/fixtures/input.js rename to test/functional-tests/node-transformers/obfuscating-transformers/labeled-statement-transformer/fixtures/input.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/LiteralTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/LiteralTransformer.spec.ts similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/LiteralTransformer.spec.ts rename to test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/LiteralTransformer.spec.ts diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/fixtures/boolean-value.js b/test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/fixtures/boolean-value.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/fixtures/boolean-value.js rename to test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/fixtures/boolean-value.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/fixtures/error-when-non-latin.js b/test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/fixtures/error-when-non-latin.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/fixtures/error-when-non-latin.js rename to test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/fixtures/error-when-non-latin.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/fixtures/number-value.js b/test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/fixtures/number-value.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/fixtures/number-value.js rename to test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/fixtures/number-value.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/fixtures/same-literal-values.js b/test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/fixtures/same-literal-values.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/fixtures/same-literal-values.js rename to test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/fixtures/same-literal-values.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/fixtures/short-literal-value.js b/test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/fixtures/short-literal-value.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/fixtures/short-literal-value.js rename to test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/fixtures/short-literal-value.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/fixtures/simple-input.js b/test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/fixtures/simple-input.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/fixtures/simple-input.js rename to test/functional-tests/node-transformers/obfuscating-transformers/literal-transformer/fixtures/simple-input.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/ObjectExpressionTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscating-transformers/object-expression-transformer/ObjectExpressionTransformer.spec.ts similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/ObjectExpressionTransformer.spec.ts rename to test/functional-tests/node-transformers/obfuscating-transformers/object-expression-transformer/ObjectExpressionTransformer.spec.ts diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/fixtures/property-with-identifier-value.js b/test/functional-tests/node-transformers/obfuscating-transformers/object-expression-transformer/fixtures/property-with-identifier-value.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/fixtures/property-with-identifier-value.js rename to test/functional-tests/node-transformers/obfuscating-transformers/object-expression-transformer/fixtures/property-with-identifier-value.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/fixtures/property-with-literal-value.js b/test/functional-tests/node-transformers/obfuscating-transformers/object-expression-transformer/fixtures/property-with-literal-value.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/fixtures/property-with-literal-value.js rename to test/functional-tests/node-transformers/obfuscating-transformers/object-expression-transformer/fixtures/property-with-literal-value.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/fixtures/shorthand-object-expression.js b/test/functional-tests/node-transformers/obfuscating-transformers/object-expression-transformer/fixtures/shorthand-object-expression.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/fixtures/shorthand-object-expression.js rename to test/functional-tests/node-transformers/obfuscating-transformers/object-expression-transformer/fixtures/shorthand-object-expression.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts similarity index 86% rename from test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts rename to test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts index df211160..35cdaa66 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts @@ -200,11 +200,39 @@ describe('VariableDeclarationTransformer', () => { const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); it('shouldn\'t transform object pattern variable declarator', () => { - const objectPatternVariableDeclarator: RegExp = /var *\{ *bar *\} *= *\{ *'\\x62\\x61\\x72' *: *'\\x66\\x6f\\x6f' *\};/; + const objectPatternVariableDeclaratorMatch: RegExp = /var *\{ *bar *\} *= *\{ *'\\x62\\x61\\x72' *: *'\\x66\\x6f\\x6f' *\};/; const variableUsageMatch: RegExp = /console\['\\x6c\\x6f\\x67'\]\(bar\);/; - assert.match(obfuscatedCode, objectPatternVariableDeclarator); + assert.match(obfuscatedCode, objectPatternVariableDeclaratorMatch); assert.match(obfuscatedCode, variableUsageMatch); }); }); + + describe('array pattern as variable declarator', () => { + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + readFileAsString(__dirname + '/fixtures/array-pattern.js'), + { + ...NO_CUSTOM_NODES_PRESET + } + ); + const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); + + const objectPatternVariableDeclaratorMatch: RegExp = /var *\[ *(_0x([a-f0-9]){4,6}), *(_0x([a-f0-9]){4,6}) *\] *= *\[0x1, *0x2\];/; + const variableUsageMatch: RegExp = /console\['\\x6c\\x6f\\x67'\]\((_0x([a-f0-9]){4,6}), *(_0x([a-f0-9]){4,6})\);/; + + const objectPatternIdentifierName1: string = obfuscatedCode.match(objectPatternVariableDeclaratorMatch)![1]; + const objectPatternIdentifierName2: string = obfuscatedCode.match(objectPatternVariableDeclaratorMatch)![2]; + const identifierName1: string = obfuscatedCode.match(variableUsageMatch)![1]; + const identifierName2: string = obfuscatedCode.match(variableUsageMatch)![2]; + + it('should transform array pattern variable declarator', () => { + assert.match(obfuscatedCode, objectPatternVariableDeclaratorMatch); + assert.match(obfuscatedCode, variableUsageMatch); + }); + + it('should keep same identifier names same for identifiers in variable declaration and after variable declaration', () => { + assert.equal(objectPatternIdentifierName1, identifierName1); + assert.equal(objectPatternIdentifierName2, identifierName2); + }); + }); }); diff --git a/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/array-pattern.js b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/array-pattern.js new file mode 100644 index 00000000..067b9ae1 --- /dev/null +++ b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/array-pattern.js @@ -0,0 +1,5 @@ +function foo () { + var [bar, baz] = [1, 2]; + + console.log(bar, baz); +} \ No newline at end of file diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/let-kind.js b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/let-kind.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/let-kind.js rename to test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/let-kind.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/member-expression-identifier.js b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/member-expression-identifier.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/member-expression-identifier.js rename to test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/member-expression-identifier.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/object-pattern.js b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/object-pattern.js similarity index 98% rename from test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/object-pattern.js rename to test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/object-pattern.js index c921f760..9af1be22 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/object-pattern.js +++ b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/object-pattern.js @@ -1,4 +1,5 @@ (function () { var { bar } = { bar: 'foo' }; + console.log(bar); })(); diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/parent-block-scope-is-program-node.js b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/parent-block-scope-is-program-node.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/parent-block-scope-is-program-node.js rename to test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/parent-block-scope-is-program-node.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/property-identifier.js b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/property-identifier.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/property-identifier.js rename to test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/property-identifier.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/simple-declaration.js b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/simple-declaration.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/simple-declaration.js rename to test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/simple-declaration.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/var-kind.js b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/var-kind.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/var-kind.js rename to test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/var-kind.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-1.js b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-1.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-1.js rename to test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-1.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-2.js b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-2.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-2.js rename to test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-2.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-3.js b/test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-3.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-3.js rename to test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-3.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts deleted file mode 100644 index 95040aeb..00000000 --- a/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { assert } from 'chai'; - -import { IObfuscationResult } from '../../../../../src/interfaces/IObfuscationResult'; - -import { NO_CUSTOM_NODES_PRESET } from '../../../../../src/options/presets/NoCustomNodes'; - -import { readFileAsString } from '../../../../helpers/readFileAsString'; - -import { JavaScriptObfuscator } from '../../../../../src/JavaScriptObfuscator'; - -describe('FunctionTransformer', () => { - describe('identifiers transformation inside `FunctionDeclaration` and `FunctionExpression` node body', () => { - const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( - readFileAsString(__dirname + '/fixtures/input.js'), - { - ...NO_CUSTOM_NODES_PRESET - } - ); - const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - - it('should correct transform both function parameter identifier and function body identifier with same name', () => { - const functionParamIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/var _0x[a-f0-9]{4,6} *= *function *\((_0x[a-f0-9]{4,6})\) *\{/); - const functionBodyIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/console\['\\x6c\\x6f\\x67'\]\((_0x[a-f0-9]{4,6})\)/); - - const functionParamIdentifierName: string = (functionParamIdentifierMatch)[1]; - const functionBodyIdentifierName: string = (functionBodyIdentifierMatch)[1]; - - assert.equal(functionParamIdentifierName, functionBodyIdentifierName); - }); - - it('shouldn\'t transform other variables in function body', () => { - assert.equal(/variable *= *0x6;/.test(obfuscatedCode), true); - }); - }); - - describe('object pattern as parameter', () => { - const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( - readFileAsString(__dirname + '/fixtures/object-pattern-as-parameter.js'), - { - ...NO_CUSTOM_NODES_PRESET - } - ); - const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - - it('shouldn\'t transform function parameter object pattern identifier', () => { - const functionParameterMatch: RegExp = /function *\(\{ *bar *\}\) *\{/; - const functionBodyMatch: RegExp = /return *bar;/; - - assert.match(obfuscatedCode, functionParameterMatch); - assert.match(obfuscatedCode, functionBodyMatch); - }); - }); -}); diff --git a/test/index.spec.ts b/test/index.spec.ts index d857a69f..6213da4f 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -35,16 +35,16 @@ import './functional-tests/node-transformers/control-flow-transformers/function- import './functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/binary-expression-control-flow-replacer/BinaryExpressionControlFlowReplacer.spec'; import './functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/call-expression-control-flow-replacer/CallExpressionControlFlowReplacer.spec'; import './functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/logical-expression-control-flow-replacer/LogicalExpressionControlFlowReplacer.spec'; -import './functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/CatchClauseTransformer.spec'; -import './functional-tests/node-transformers/obfuscation-transformers/function-declaration-transformer/FunctionDeclarationTransformer.spec'; -import './functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec'; -import './functional-tests/node-transformers/obfuscation-transformers/labeled-statement-transformer/LabeledStatementTransformer.spec'; -import './functional-tests/node-transformers/obfuscation-transformers/literal-transformer/LiteralTransformer.spec'; -import './functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/MemberExpressionTransformer.spec'; -import './functional-tests/node-transformers/obfuscation-transformers/method-definition-transformer/MethodDefinitionTransformer.spec'; -import './functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/ObjectExpressionTransformer.spec'; -import './functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/TemplateLiteralTransformer.spec'; -import './functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec'; +import './functional-tests/node-transformers/converting-transformers/member-expression-transformer/MemberExpressionTransformer.spec'; +import './functional-tests/node-transformers/converting-transformers/method-definition-transformer/MethodDefinitionTransformer.spec'; +import './functional-tests/node-transformers/converting-transformers/template-literal-transformer/TemplateLiteralTransformer.spec'; +import './functional-tests/node-transformers/obfuscating-transformers/catch-clause-transformer/CatchClauseTransformer.spec'; +import './functional-tests/node-transformers/obfuscating-transformers/function-declaration-transformer/FunctionDeclarationTransformer.spec'; +import './functional-tests/node-transformers/obfuscating-transformers/function-transformer/FunctionTransformer.spec'; +import './functional-tests/node-transformers/obfuscating-transformers/labeled-statement-transformer/LabeledStatementTransformer.spec'; +import './functional-tests/node-transformers/obfuscating-transformers/literal-transformer/LiteralTransformer.spec'; +import './functional-tests/node-transformers/obfuscating-transformers/object-expression-transformer/ObjectExpressionTransformer.spec'; +import './functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec'; import './functional-tests/stack-trace-analyzer/stack-trace-analyzer/StackTraceAnalyzer.spec'; import './functional-tests/templates/custom-nodes/domain-lock-nodes/DomainLockNodeTemplate.spec'; import './functional-tests/templates/custom-nodes/string-array-nodes/StringArrayCallsWrapperNodeTemplate.spec';