From 78cdba9ef6fdd6290053798423373d1dec80dbbd Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Thu, 15 Mar 2018 23:19:15 +0300 Subject: [PATCH] Added NodeMetadata class --- .babelrc | 2 +- CHANGELOG.md | 1 + README.md | 6 +- dist/index.js | 120 +- package.json | 22 +- src/JavaScriptObfuscator.ts | 1 + .../IdentifierNamesGeneratorSanitizer.ts | 4 +- .../sanitizers/ObfuscatingTargetSanitizer.ts | 4 +- src/cli/sanitizers/SourceMapModeSanitizer.ts | 4 +- .../PreparingTransformersModule.ts | 5 + .../ConsoleOutputDisableExpressionNode.ts | 2 +- .../BinaryExpressionFunctionNode.ts | 20 +- ...BlockStatementControlFlowFlatteningNode.ts | 50 +- .../CallExpressionFunctionNode.ts | 16 +- .../LogicalExpressionFunctionNode.ts | 20 +- .../StringLiteralNode.ts | 6 +- ...allExpressionControlFlowStorageCallNode.ts | 12 +- .../ControlFlowStorageNode.ts | 14 +- ...nWithOperatorControlFlowStorageCallNode.ts | 12 +- ...StringLiteralControlFlowStorageCallNode.ts | 10 +- .../BlockStatementDeadCodeInjectionNode.ts | 12 +- .../DebugProtectionFunctionNode.ts | 2 +- .../domain-lock-nodes/DomainLockNode.ts | 2 +- .../StringArrayCallsWrapper.ts | 2 +- src/declarations/ESTree.d.ts | 20 +- src/enums/ObfuscationTarget.ts | 2 +- .../node-transformers/NodeTransformer.ts | 1 + src/node-transformers/TransformersRunner.ts | 3 +- .../FunctionControlFlowTransformer.ts | 5 +- .../MemberExpressionTransformer.ts | 8 +- .../MethodDefinitionTransformer.ts | 8 +- .../ObjectExpressionKeysTransformer.ts | 14 +- .../TemplateLiteralTransformer.ts | 10 +- .../DeadCodeInjectionTransformer.ts | 8 +- .../CatchClauseTransformer.ts | 4 +- .../ClassDeclarationTransformer.ts | 9 +- .../FunctionDeclarationTransformer.ts | 9 +- .../FunctionTransformer.ts | 3 +- .../LiteralTransformer.ts | 3 +- .../ObjectExpressionTransformer.ts | 16 +- .../VariableDeclarationTransformer.ts | 9 +- .../BaseIdentifierObfuscatingReplacer.ts | 4 +- .../BooleanLiteralObfuscatingReplacer.ts | 8 +- .../NumberLiteralObfuscatingReplacer.ts | 4 +- .../StringLiteralObfuscatingReplacer.ts | 19 +- .../EvaCallExpressionTransformer.ts | 12 +- .../MetadataTransformer.ts | 62 + .../ObfuscatingGuardsTransformer.ts | 5 +- src/node/{Nodes.ts => NodeFactory.ts} | 270 ++-- src/node/NodeMetadata.ts | 49 + src/node/NodeUtils.ts | 13 +- src/options/Options.ts | 2 +- src/utils/Utils.ts | 2 +- .../StackTraceAnalyzer.spec.ts | 22 +- ...ebugProtectionFunctionCallTemplate.spec.ts | 2 +- .../ObfuscatingGuardsTransformer.spec.ts | 13 +- .../node/node-appender/NodeAppender.spec.ts | 4 +- .../node/node-guards/NodeGuards.spec.ts | 118 +- .../node/node-utils/NodeUtils.spec.ts | 224 +-- yarn.lock | 1255 ++++++++--------- 60 files changed, 1397 insertions(+), 1172 deletions(-) create mode 100644 src/node-transformers/preparing-transformers/MetadataTransformer.ts rename src/node/{Nodes.ts => NodeFactory.ts} (65%) create mode 100644 src/node/NodeMetadata.ts diff --git a/.babelrc b/.babelrc index 0cc98397..7d58274c 100644 --- a/.babelrc +++ b/.babelrc @@ -11,6 +11,6 @@ }] ], "plugins": [ - "@babel/transform-runtime" + "@babel/plugin-transform-runtime" ] } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index cf1bbc30..dff75ad0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ Change Log v0.15.0 --- * **Breaking change:** dropped `node@4` and `node@5` support. +* **Breaking change:** renamed `extension` value of `target` option on `browser-no-eval`. * **New CLI option:** `exclude` allows to exclude specific files or directories from obfuscation. * Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/217 * Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/210 diff --git a/README.md b/README.md index 2421c39d..b269d4cd 100644 --- a/README.md +++ b/README.md @@ -333,7 +333,7 @@ Following options are available for the JS Obfuscator: --string-array --string-array-encoding [true, false, base64, rc4] --string-array-threshold - --target [browser, extension, node] + --target [browser, browser-no-eval, node] --transform-object-keys --unicode-escape-sequence ``` @@ -721,11 +721,11 @@ Allows to set target environment for obfuscated code. Available values: * `browser`; -* `extension`; +* `browser-no-eval`; * `node`. Currently output code for `browser` and `node` targets is identical. -Output code for `extension` target is not using `eval`. +Output code for `browser-no-eval` target is not using `eval`. ### `transformObjectKeys` Type: `boolean` Default: `false` diff --git a/dist/index.js b/dist/index.js index 9060766c..cd247730 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,120 @@ -require("source-map-support").install(),module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r.w={},r(r.s=215)}([function(e,t){e.exports=require("inversify")},function(e,t){e.exports=require("@babel/runtime/helpers/classCallCheck")},function(e,t){e.exports=require("@babel/runtime/helpers/createClass")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.Factory__ICalleeDataExtractor="Factory",e.Factory__IControlFlowCustomNode="Factory",e.Factory__IControlFlowReplacer="Factory",e.Factory__ICustomNode="Factory",e.Factory__ICustomNodeGroup="Factory",e.Factory__IDeadCodeInjectionCustomNode="Factory",e.Factory__IIdentifierNamesGenerator="Factory",e.Factory__IIdentifierObfuscatingReplacer="Factory",e.Factory__INodeGuard="Factory",e.Factory__INodeTransformer="Factory",e.Factory__IObfuscationResult="Factory",e.Factory__IObfuscatingReplacer="Factory",e.Factory__TControlFlowStorage="Factory",e.IArrayUtils="IArrayUtils",e.ICalleeDataExtractor="ICalleeDataExtractor",e.ICryptUtils="ICryptUtils",e.ICustomNode="ICustomNode",e.ICustomNodeGroup="ICustomNodeGroup",e.IControlFlowReplacer="IControlFlowReplacer",e.IEscapeSequenceEncoder="IEscapeSequenceEncoder",e.IIdentifierNamesGenerator="IIdentifierNamesGenerator",e.IIdentifierObfuscatingReplacer="IIdentifierObfuscatingReplacer",e.IJavaScriptObfuscator="IJavaScriptObfuscator",e.ILogger="ILogger",e.INodeGuard="INodeGuard",e.INodeTransformer="INodeTransformer",e.IObfuscationEventEmitter="IObfuscationEventEmitter",e.IObfuscationResult="IObfuscationResult",e.IOptions="IOptions",e.IOptionsNormalizer="IOptionsNormalizer",e.IObfuscatingReplacer="IObfuscatingReplacer",e.IRandomGenerator="IRandomGenerator",e.ISourceCode="ISourceCode",e.ISourceMapCorrector="ISourceMapCorrector",e.IStackTraceAnalyzer="IStackTraceAnalyzer",e.ITransformersRunner="ITransformersRunner",e.Newable__ICustomNode="Newable",e.Newable__TControlFlowStorage="Newable",e.TCustomNodeGroupStorage="TCustomNodeGroupStorage",e.TInputOptions="TInputOptions",e.TStringArrayStorage="TStringArrayStorage"}(t.ServiceIdentifiers||(t.ServiceIdentifiers={}))},function(e,t){e.exports=require("tslib")},function(e,t){e.exports=require("@babel/runtime/helpers/inherits")},function(e,t){e.exports=require("@babel/runtime/helpers/possibleConstructorReturn")},function(e,t){e.exports=require("@babel/runtime/core-js/object/get-prototype-of")},function(e,t,r){"use strict";var n=r(66),o=r(1),a=r(2);Object.defineProperty(t,"__esModule",{value:!0});var i=__importStar(r(47)),s=__importStar(r(65)),c=__importStar(r(17)),u=r(9),d=function(){function e(){o(this,e)}return a(e,null,[{key:"addXVerbatimPropertyToLiterals",value:function(e){return c.replace(e,{leave:function(e){u.NodeGuards.isLiteralNode(e)&&(e["x-verbatim-property"]={content:e.raw,precedence:i.Precedence.Primary})}}),e}},{key:"clone",value:function(t){return e.parentize(e.cloneRecursive(t))}},{key:"convertCodeToStructure",value:function(t){var r=s.parseScript(t);return r=e.addXVerbatimPropertyToLiterals(r),(r=e.parentize(r)).body}},{key:"convertStructureToCode",value:function(e){return e.reduce(function(e,t){return e+i.generate(t,{sourceMapWithCode:!0}).code},"")}},{key:"getBlockScopesOfNode",value:function(t){return e.getBlockScopesOfNodeRecursive(t)}},{key:"getNextSiblingStatementNode",value:function(t){return e.getSiblingStatementNodeByOffset(t,1)}},{key:"getPreviousSiblingStatementNode",value:function(t){return e.getSiblingStatementNodeByOffset(t,-1)}},{key:"getScopeOfNode",value:function(t){var r=t.parentNode;if(!r)throw new ReferenceError("`parentNode` property of given node is `undefined`");return u.NodeGuards.isNodeHasScope(r)?r:e.getScopeOfNode(r)}},{key:"getUnaryExpressionArgumentNode",value:function(t){return u.NodeGuards.isUnaryExpressionNode(t.argument)?e.getUnaryExpressionArgumentNode(t.argument):t.argument}},{key:"parentize",value:function(t){return c.replace(t,{enter:e.parentizeNode}),t}},{key:"parentizeNode",value:function(e,t){return e.parentNode=t||e,e.obfuscatedNode=!1,e}},{key:"cloneRecursive",value:function(t){if(null===t)return t;var r={};for(var o in t)if(t.hasOwnProperty(o)&&"parentNode"!==o){var a=t[o],i=void 0;i=null===a||a instanceof RegExp?a:Array.isArray(a)?a.map(e.cloneRecursive):"object"===n(a)?e.cloneRecursive(a):a,r[o]=i}return r}},{key:"getBlockScopesOfNodeRecursive",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=t.parentNode;if(!o)throw new ReferenceError("`parentNode` property of given node is `undefined`");return u.NodeGuards.isBlockStatementNode(t)&&o===t&&r.push(t),(u.NodeGuards.isProgramNode(t)||n&&u.NodeGuards.isNodeHasBlockScope(t,o))&&r.push(t),t!==o?e.getBlockScopesOfNodeRecursive(o,r,++n):r}},{key:"getSiblingStatementNodeByOffset",value:function(t,r){var n=e.getScopeOfNode(t),o=u.NodeGuards.isSwitchCaseNode(n)?n.consequent:n.body;return o[o.indexOf(t)+r]||null}}]),e}();t.NodeUtils=d},function(e,t,r){"use strict";var n=r(1),o=r(2);Object.defineProperty(t,"__esModule",{value:!0});var a=r(19),i=function(){function e(){n(this,e)}return o(e,null,[{key:"isArrayPatternNode",value:function(e){return e.type===a.NodeType.ArrayPattern}},{key:"isArrowFunctionExpressionNode",value:function(e){return e.type===a.NodeType.ArrowFunctionExpression}},{key:"isAssignmentPatternNode",value:function(e){return e.type===a.NodeType.AssignmentPattern}},{key:"isAwaitExpressionNode",value:function(e){return e.type===a.NodeType.AwaitExpression}},{key:"isBlockStatementNode",value:function(e){return e.type===a.NodeType.BlockStatement}},{key:"isBreakStatementNode",value:function(e){return e.type===a.NodeType.BreakStatement}},{key:"isCallExpressionNode",value:function(e){return e.type===a.NodeType.CallExpression}},{key:"isCatchClauseNode",value:function(e){return e.type===a.NodeType.CatchClause}},{key:"isClassDeclarationNode",value:function(e){return e.type===a.NodeType.ClassDeclaration}},{key:"isContinueStatementNode",value:function(e){return e.type===a.NodeType.ContinueStatement}},{key:"isExpressionStatementNode",value:function(e){return e.type===a.NodeType.ExpressionStatement}},{key:"isFunctionDeclarationNode",value:function(e){return e.type===a.NodeType.FunctionDeclaration}},{key:"isFunctionExpressionNode",value:function(e){return e.type===a.NodeType.FunctionExpression}},{key:"isIdentifierNode",value:function(e){return e.type===a.NodeType.Identifier}},{key:"isIfStatementNode",value:function(e){return e.type===a.NodeType.IfStatement}},{key:"isLabelIdentifierNode",value:function(t,r){var n=e.isLabeledStatementNode(r)&&r.label===t,o=e.isContinueStatementNode(r)&&r.label===t,a=e.isBreakStatementNode(r)&&r.label===t;return n||o||a}},{key:"isLabeledStatementNode",value:function(e){return e.type===a.NodeType.LabeledStatement}},{key:"isLiteralNode",value:function(e){return e.type===a.NodeType.Literal}},{key:"isMemberExpressionNode",value:function(e){return e.type===a.NodeType.MemberExpression}},{key:"isMethodDefinitionNode",value:function(e){return e.type===a.NodeType.MethodDefinition}},{key:"isNode",value:function(e){return e&&void 0!==!e.type}},{key:"isNodeHasBlockScope",value:function(t,r){return e.isProgramNode(t)||e.isBlockStatementNode(t)&&e.nodesWithBlockScope.includes(r.type)}},{key:"isNodeHasScope",value:function(t){return e.isProgramNode(t)||e.isBlockStatementNode(t)||e.isSwitchCaseNode(t)}},{key:"isNodeWithComments",value:function(e){return Boolean(e.leadingComments)||Boolean(e.trailingComments)}},{key:"isObjectPatternNode",value:function(e){return e.type===a.NodeType.ObjectPattern}},{key:"isObjectExpressionNode",value:function(e){return e.type===a.NodeType.ObjectExpression}},{key:"isProgramNode",value:function(e){return e.type===a.NodeType.Program}},{key:"isPropertyNode",value:function(e){return e.type===a.NodeType.Property}},{key:"isReplaceableIdentifierNode",value:function(t,r){if(!e.isIdentifierNode(t))return!1;var n=e.isPropertyNode(r)&&!r.computed&&r.key===t,o=e.isMemberExpressionNode(r)&&!r.computed&&r.property===t,a=e.isMethodDefinitionNode(r)&&!r.computed,i=e.isLabelIdentifierNode(t,r);return!(n||o||a||i)}},{key:"isRestElementNode",value:function(e){return e.type===a.NodeType.RestElement}},{key:"isReturnStatementNode",value:function(e){return e.type===a.NodeType.ReturnStatement}},{key:"isSuperNode",value:function(e){return e.type===a.NodeType.Super}},{key:"isSwitchCaseNode",value:function(e){return e.type===a.NodeType.SwitchCase}},{key:"isTemplateLiteralNode",value:function(e){return e.type===a.NodeType.TemplateLiteral}},{key:"isUnaryExpressionNode",value:function(e){return e.type===a.NodeType.UnaryExpression}},{key:"isUseStrictOperator",value:function(e){return e.type===a.NodeType.ExpressionStatement&&"use strict"===e.directive}},{key:"isVariableDeclarationNode",value:function(e){return e.type===a.NodeType.VariableDeclaration}},{key:"isVariableDeclaratorNode",value:function(e){return e.type===a.NodeType.VariableDeclarator}},{key:"isWhileStatementNode",value:function(e){return e.type===a.NodeType.WhileStatement}}]),e}();i.nodesWithBlockScope=[a.NodeType.ArrowFunctionExpression,a.NodeType.FunctionDeclaration,a.NodeType.FunctionExpression,a.NodeType.MethodDefinition],t.NodeGuards=i},function(e,t,r){"use strict";var n=r(11),o=r(205),a=r(204),i=r(203),s=r(202),c=r(201),u=r(200),d=r(30),l=r(40);Object.defineProperty(t,"__esModule",{value:!0});var f={configurable:!0,enumerable:!0},p="_initialized",m="_initializablePropertiesSet",g="_wrappedMethodsSet",_="constructor";function N(e,t,r){u(e,r)||c(e,t,r)}t.initializable=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"initialize",t=l(this)[0];return function(r,u){var l=r[e];if(!l||"function"!=typeof l)throw new Error("`".concat(e,"` method with initialization logic not ")+"found. `@".concat(t,"` decorator requires `").concat(e,"` method"));return N(p,!1,r),N(m,new d,r),N(g,new d,r),function(e,t){var r=s(e),c=[t,_];r.forEach(function(r){var s=i(m,e),u=i(g,e),d=c.includes(r)||s.has(r)||u.has(r);if(!d){var l=e[r];if("function"==typeof l){var _=a(e,r)||f,N=_.value;o(e,r,n({},_,{value:function(){if(!i(p,this))throw new Error("Class should be initialized with `".concat(t,"()` method"));return N.apply(this,arguments)}})),u.add(r)}}})}(r,e),function(e,t,r){var i=a(e,t)||f,s=i.value;o(e,t,n({},i,{value:function(){c(p,!0,this);var e=s.apply(this,arguments);return this[r],e}}))}(r,e,u),function(e,t){i(m,e).add(t);var r="_".concat(t),s=a(e,r)||f;return o(e,t,n({},s,{get:function(){if(void 0===this[r])throw new Error("Property `".concat(t,"` is not initialized! Initialize it first!"));return this[r]},set:function(e){this[r]=e}})),s}(r,u)}}},function(e,t){e.exports=require("@babel/runtime/core-js/object/assign")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.Preparing="Preparing",e.DeadCodeInjection="DeadCodeInjection",e.ControlFlowFlattening="ControlFlowFlattening",e.Converting="Converting",e.Obfuscating="Obfuscating",e.Finalizing="Finalizing"}(t.TransformationStage||(t.TransformationStage={}))},function(e,t,r){"use strict";var n=r(1),o=r(2);Object.defineProperty(t,"__esModule",{value:!0});var a,i=r(4),s=r(0),c=r(3),u=r(182),d=r(181),l=a=function(){function e(t,r,o){n(this,e),this.cachedNode=null,this.identifierNamesGenerator=t(o),this.randomGenerator=r,this.options=o}return o(e,[{key:"getNode",value:function(){return this.cachedNode||(this.cachedNode=this.getNodeStructure()),this.cachedNode}},{key:"getGlobalVariableTemplate",value:function(){return this.randomGenerator.getRandomGenerator().pickone(a.globalVariableTemplateFunctions)}}]),e}();l.globalVariableTemplateFunctions=[u.GlobalVariableTemplate1(),d.GlobalVariableTemplate2()],l=a=i.__decorate([s.injectable(),i.__param(0,s.inject(c.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),i.__param(1,s.inject(c.ServiceIdentifiers.IRandomGenerator)),i.__param(2,s.inject(c.ServiceIdentifiers.IOptions)),i.__metadata("design:paramtypes",[Function,Object,Object])],l),t.AbstractCustomNode=l},function(e,t,r){"use strict";var n=r(1),o=r(2);Object.defineProperty(t,"__esModule",{value:!0});var a=r(4),i=r(0),s=r(3),c=r(10),u=function(){function e(t,r){n(this,e),this.randomGenerator=t,this.options=r}return o(e,[{key:"initialize",value:function(){this.nodeIdentifier=this.randomGenerator.getRandomInteger(0,1e4)}}]),e}();a.__decorate([c.initializable(),a.__metadata("design:type",Number)],u.prototype,"nodeIdentifier",void 0),a.__decorate([i.postConstruct(),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[]),a.__metadata("design:returntype",void 0)],u.prototype,"initialize",null),u=a.__decorate([i.injectable(),a.__param(0,i.inject(s.ServiceIdentifiers.IRandomGenerator)),a.__param(1,i.inject(s.ServiceIdentifiers.IOptions)),a.__metadata("design:paramtypes",[Object,Object])],u),t.AbstractNodeTransformer=u},function(e,t,r){"use strict";var n=r(11),o=r(1),a=r(2);Object.defineProperty(t,"__esModule",{value:!0});var i=__importStar(r(47)),s=r(19),c=function(){function e(){o(this,e)}return a(e,null,[{key:"getProgramNode",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{type:s.NodeType.Program,body:e,sourceType:"script",obfuscatedNode:!1}}},{key:"getArrayExpressionNode",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{type:s.NodeType.ArrayExpression,elements:e}}},{key:"getAssignmentExpressionNode",value:function(e,t,r){return{type:s.NodeType.AssignmentExpression,operator:e,left:t,right:r,obfuscatedNode:!1}}},{key:"getBinaryExpressionNode",value:function(e,t,r){return{type:s.NodeType.BinaryExpression,operator:e,left:t,right:r,obfuscatedNode:!1}}},{key:"getBlockStatementNode",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{type:s.NodeType.BlockStatement,body:e,obfuscatedNode:!1}}},{key:"getBreakStatement",value:function(e){var t={type:s.NodeType.BreakStatement,obfuscatedNode:!1};return e&&(t.label=e),t}},{key:"getCallExpressionNode",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return{type:s.NodeType.CallExpression,callee:e,arguments:t,obfuscatedNode:!1}}},{key:"getContinueStatement",value:function(e){var t={type:s.NodeType.ContinueStatement,obfuscatedNode:!1};return e&&(t.label=e),t}},{key:"getExpressionStatementNode",value:function(e){return{type:s.NodeType.ExpressionStatement,expression:e,obfuscatedNode:!1}}},{key:"getFunctionDeclarationNode",value:function(t,r,n){return{type:s.NodeType.FunctionDeclaration,id:e.getIdentifierNode(t),params:r,body:n,generator:!1,obfuscatedNode:!1}}},{key:"getFunctionExpressionNode",value:function(e,t){return{type:s.NodeType.FunctionExpression,params:e,body:t,generator:!1,obfuscatedNode:!1}}},{key:"getIfStatementNode",value:function(e,t,r){return n({type:s.NodeType.IfStatement,test:e,consequent:t},r&&{alternate:r},{obfuscatedNode:!1})}},{key:"getIdentifierNode",value:function(e){return{type:s.NodeType.Identifier,name:e,obfuscatedNode:!1}}},{key:"getLiteralNode",value:function(e,t){return t=void 0!==t?t:"'".concat(e,"'"),{type:s.NodeType.Literal,value:e,raw:t,"x-verbatim-property":{content:t,precedence:i.Precedence.Primary},obfuscatedNode:!1}}},{key:"getLogicalExpressionNode",value:function(e,t,r){return{type:s.NodeType.LogicalExpression,operator:e,left:t,right:r,obfuscatedNode:!1}}},{key:"getMemberExpressionNode",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return{type:s.NodeType.MemberExpression,computed:r,object:e,property:t,obfuscatedNode:!1}}},{key:"getMethodDefinitionNode",value:function(e,t,r,n){return{type:s.NodeType.MethodDefinition,key:e,value:t,kind:r,computed:n,static:!1,obfuscatedNode:!1}}},{key:"getObjectExpressionNode",value:function(e){return{type:s.NodeType.ObjectExpression,properties:e,obfuscatedNode:!1}}},{key:"getPropertyNode",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return{type:s.NodeType.Property,key:e,value:t,kind:"init",method:!1,shorthand:!1,computed:r,obfuscatedNode:!1}}},{key:"getUnaryExpressionNode",value:function(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return{type:s.NodeType.UnaryExpression,operator:e,argument:t,prefix:r,obfuscatedNode:!1}}},{key:"getReturnStatementNode",value:function(e){return{type:s.NodeType.ReturnStatement,argument:e,obfuscatedNode:!1}}},{key:"getSwitchStatementNode",value:function(e,t){return{type:s.NodeType.SwitchStatement,discriminant:e,cases:t,obfuscatedNode:!1}}},{key:"getSwitchCaseNode",value:function(e,t){return{type:s.NodeType.SwitchCase,test:e,consequent:t,obfuscatedNode:!1}}},{key:"getUpdateExpressionNode",value:function(e,t){return{type:s.NodeType.UpdateExpression,operator:e,argument:t,prefix:!1,obfuscatedNode:!1}}},{key:"getVariableDeclarationNode",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"var";return{type:s.NodeType.VariableDeclaration,declarations:e,kind:t,obfuscatedNode:!1}}},{key:"getVariableDeclaratorNode",value:function(e,t){return{type:s.NodeType.VariableDeclarator,id:e,init:t,obfuscatedNode:!1}}},{key:"getWhileStatementNode",value:function(e,t){return{type:s.NodeType.WhileStatement,test:e,body:t,obfuscatedNode:!1}}}]),e}();t.Nodes=c},function(e,t){e.exports=require("@babel/runtime/core-js/map")},function(e,t){e.exports=require("estraverse")},function(e,t){e.exports=require("string-template")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.ArrayExpression="ArrayExpression",e.ArrayPattern="ArrayPattern",e.ArrowFunctionExpression="ArrowFunctionExpression",e.AssignmentExpression="AssignmentExpression",e.AssignmentPattern="AssignmentPattern",e.AwaitExpression="AwaitExpression",e.BinaryExpression="BinaryExpression",e.BlockStatement="BlockStatement",e.BreakStatement="BreakStatement",e.CallExpression="CallExpression",e.CatchClause="CatchClause",e.ClassDeclaration="ClassDeclaration",e.ContinueStatement="ContinueStatement",e.ExpressionStatement="ExpressionStatement",e.FunctionDeclaration="FunctionDeclaration",e.FunctionExpression="FunctionExpression",e.Identifier="Identifier",e.IfStatement="IfStatement",e.LabeledStatement="LabeledStatement",e.Literal="Literal",e.LogicalExpression="LogicalExpression",e.MemberExpression="MemberExpression",e.MethodDefinition="MethodDefinition",e.ObjectExpression="ObjectExpression",e.ObjectPattern="ObjectPattern",e.Program="Program",e.Property="Property",e.RestElement="RestElement",e.ReturnStatement="ReturnStatement",e.Super="Super",e.SwitchCase="SwitchCase",e.SwitchStatement="SwitchStatement",e.TemplateLiteral="TemplateLiteral",e.TryStatement="TryStatement",e.UnaryExpression="UnaryExpression",e.UpdateExpression="UpdateExpression",e.VariableDeclaration="VariableDeclaration",e.VariableDeclarator="VariableDeclarator",e.WhileStatement="WhileStatement"}(t.NodeType||(t.NodeType={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.Browser="browser",e.Extension="extension",e.Node="node"}(t.ObfuscationTarget||(t.ObfuscationTarget={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.BinaryExpressionFunctionNode="BinaryExpressionFunctionNode",e.BlockStatementControlFlowFlatteningNode="BlockStatementControlFlowFlatteningNode",e.CallExpressionControlFlowStorageCallNode="CallExpressionControlFlowStorageCallNode",e.CallExpressionFunctionNode="CallExpressionFunctionNode",e.ControlFlowStorageNode="ControlFlowStorageNode",e.ExpressionWithOperatorControlFlowStorageCallNode="ExpressionWithOperatorControlFlowStorageCallNode",e.LogicalExpressionFunctionNode="LogicalExpressionFunctionNode",e.StringLiteralControlFlowStorageCallNode="StringLiteralControlFlowStorageCallNode",e.StringLiteralNode="StringLiteralNode"}(t.ControlFlowCustomNode||(t.ControlFlowCustomNode={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.BaseIdentifierObfuscatingReplacer="BaseIdentifierObfuscatingReplacer"}(t.IdentifierObfuscatingReplacer||(t.IdentifierObfuscatingReplacer={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.AfterObfuscation="afterObfuscation",e.BeforeObfuscation="beforeObfuscation"}(t.ObfuscationEvent||(t.ObfuscationEvent={}))},function(e,t){e.exports=require("@babel/runtime/helpers/toConsumableArray")},function(e,t,r){"use strict";var n=r(24),o=r(1),a=r(2);Object.defineProperty(t,"__esModule",{value:!0});var i=r(9),s=function(){function e(){o(this,e)}return a(e,null,[{key:"appendNode",value:function(t,r){r=e.parentizeScopeStatementsBeforeAppend(t,r),e.setScopeNodeStatements(t,n(e.getScopeNodeStatements(t)).concat(n(r)))}},{key:"appendNodeToOptimalBlockScope",value:function(t,r,n){var o,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;o=t.length?e.getOptimalBlockScope(t,a):r,e.prependNode(o,n)}},{key:"getOptimalBlockScope",value:function(t,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1/0,o=t[r];if(n<=0)throw new Error("Invalid `deep` argument value. Value should be bigger then 0.");return n>1&&o.stackTrace.length?e.getOptimalBlockScope(o.stackTrace,0,--n):o.callee}},{key:"insertNodeAfter",value:function(t,r,n){var o=e.getScopeNodeStatements(t).indexOf(n);e.insertNodeAtIndex(t,r,o+1)}},{key:"insertNodeAtIndex",value:function(t,r,o){r=e.parentizeScopeStatementsBeforeAppend(t,r),e.setScopeNodeStatements(t,n(e.getScopeNodeStatements(t).slice(0,o)).concat(n(r),n(e.getScopeNodeStatements(t).slice(o))))}},{key:"prependNode",value:function(t,r){r=e.parentizeScopeStatementsBeforeAppend(t,r),e.setScopeNodeStatements(t,n(r).concat(n(e.getScopeNodeStatements(t))))}},{key:"getScopeNodeStatements",value:function(e){return i.NodeGuards.isSwitchCaseNode(e)?e.consequent:e.body}},{key:"parentizeScopeStatementsBeforeAppend",value:function(e,t){return t.forEach(function(t){t.parentNode=e}),t}},{key:"setScopeNodeStatements",value:function(e,t){i.NodeGuards.isSwitchCaseNode(e)?e.consequent=t:e.body=t}}]),e}();t.NodeAppender=s},function(e,t,r){"use strict";var n=r(16),o=r(1),a=r(2);Object.defineProperty(t,"__esModule",{value:!0});var i=r(0),s=r(3),c=r(213),u=r(208),d=r(194),l=r(189),f=r(142),p=r(141),m=r(138),g=r(137),_=r(124),N=r(109),v=r(100),y=r(95),h=r(89),b=r(51),S=r(86),I=r(84),C=r(83),O=r(82),j=r(81),F=function(){function e(){o(this,e),this.container=new i.Container}return a(e,[{key:"get",value:function(e){return this.container.get(e)}},{key:"getNamed",value:function(e,t){return this.container.getNamed(e,t)}},{key:"load",value:function(e,t){this.container.bind(s.ServiceIdentifiers.ISourceCode).toDynamicValue(function(){return new C.SourceCode(e)}).inSingletonScope(),this.container.bind(s.ServiceIdentifiers.TInputOptions).toDynamicValue(function(){return t}).inSingletonScope(),this.container.bind(s.ServiceIdentifiers.ILogger).to(b.Logger).inSingletonScope(),this.container.bind(s.ServiceIdentifiers.IJavaScriptObfuscator).to(h.JavaScriptObfuscator).inSingletonScope(),this.container.bind(s.ServiceIdentifiers.ITransformersRunner).to(j.TransformersRunner).inSingletonScope(),this.container.bind(s.ServiceIdentifiers.IObfuscationResult).to(I.ObfuscationResult).inSingletonScope(),this.container.bind(s.ServiceIdentifiers.Factory__IObfuscationResult).toFactory(function(e){return function(t,r){var n=e.container.get(s.ServiceIdentifiers.IObfuscationResult);return n.initialize(t,r),n}}),this.container.bind(s.ServiceIdentifiers.ISourceMapCorrector).to(O.SourceMapCorrector).inSingletonScope(),this.container.bind(s.ServiceIdentifiers.IObfuscationEventEmitter).to(S.ObfuscationEventEmitter).inSingletonScope(),this.container.load(c.analyzersModule),this.container.load(u.controlFlowTransformersModule),this.container.load(d.convertingTransformersModule),this.container.load(l.customNodesModule),this.container.load(f.finalizingTransformersModule),this.container.load(p.generatorsModule),this.container.load(m.nodeTransformersModule),this.container.load(g.obfuscatingTransformersModule),this.container.load(_.optionsModule),this.container.load(N.preparingTransformersModule),this.container.load(v.storagesModule),this.container.load(y.utilsModule)}},{key:"unload",value:function(){this.container.unbindAll()}}],[{key:"getFactory",value:function(e){return function(t){return function(r){return t.container.getNamed(e,r)}}}},{key:"getCacheFactory",value:function(e){return function(t){var r=new n;return function(n){if(r.has(n))return r.get(n);var o=t.container.getNamed(e,n);return r.set(n,o),o}}}},{key:"getConstructorFactory",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o-1||0===e.indexOf("//")?e.split("/")[2]:e.split("/")[0]).split(":")[0]}},{key:"isCeilNumber",value:function(e){return e%1==0}},{key:"stringRotate",value:function(e,t){if(!e)throw new ReferenceError("Cannot rotate empty string.");for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{},r=new i.InversifyContainerFacade;r.load(e,t);var n=r.get(a.ServiceIdentifiers.IJavaScriptObfuscator).obfuscate(e);return r.unload(),n}},{key:"runCLI",value:function(e){var t=new s.JavaScriptObfuscatorCLI(e);t.initialize(),t.run()}}]),e}();t.JavaScriptObfuscator=c},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.Base64="base64",e.Rc4="rc4"}(t.StringArrayEncoding||(t.StringArrayEncoding={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.Inline="inline",e.Separate="separate"}(t.SourceMapMode||(t.SourceMapMode={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.HexadecimalIdentifierNamesGenerator="hexadecimal",e.MangledIdentifierNamesGenerator="mangled"}(t.IdentifierNamesGenerator||(t.IdentifierNamesGenerator={}))},function(e,t,r){"use strict";var n=r(1),o=r(2);Object.defineProperty(t,"__esModule",{value:!0});var a=r(4),i=r(0),s=r(3),c=function(){function e(t,r,o){n(this,e),this.identifierNamesGenerator=t(o),this.randomGenerator=r,this.options=o}return o(e,[{key:"getAppendEvent",value:function(){return this.appendEvent}},{key:"getCustomNodes",value:function(){return this.customNodes}},{key:"appendCustomNodeIfExist",value:function(e,t){var r=this.customNodes.get(e);r&&t(r)}},{key:"getRandomStackTraceIndex",value:function(e){return this.randomGenerator.getRandomInteger(0,Math.max(0,Math.round(e-1)))}}]),e}();c=a.__decorate([i.injectable(),a.__param(0,i.inject(s.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),a.__param(1,i.inject(s.ServiceIdentifiers.IRandomGenerator)),a.__param(2,i.inject(s.ServiceIdentifiers.IOptions)),a.__metadata("design:paramtypes",[Function,Object,Object])],c),t.AbstractCustomNodeGroup=c},function(e,t){e.exports=require("@babel/runtime/core-js/get-iterator")},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0});var o=r(4),a=r(0),i=r(3),s=function e(t){n(this,e),this.options=t};s=o.__decorate([a.injectable(),o.__param(0,a.inject(i.ServiceIdentifiers.IOptions)),o.__metadata("design:paramtypes",[Object])],s),t.AbstractObfuscatingReplacer=s},function(e,t,r){"use strict";var n=r(59);Object.defineProperty(t,"__esModule",{value:!0});var o=r(35),a=r(20),i=r(34);t.NO_ADDITIONAL_NODES_PRESET=n({compact:!0,controlFlowFlattening:!1,controlFlowFlatteningThreshold:0,deadCodeInjection:!1,deadCodeInjectionThreshold:0,debugProtection:!1,debugProtectionInterval:!1,disableConsoleOutput:!1,domainLock:[],exclude:[],identifierNamesGenerator:o.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator,identifiersPrefix:"",log:!1,renameGlobals:!1,reservedNames:[],rotateStringArray:!1,seed:0,selfDefending:!1,sourceMap:!1,sourceMapBaseUrl:"",sourceMapFileName:"",sourceMapMode:i.SourceMapMode.Separate,stringArray:!1,stringArrayEncoding:!1,stringArrayThreshold:0,target:a.ObfuscationTarget.Browser,transformObjectKeys:!1,unicodeEscapeSequence:!1})},function(e,t){e.exports=require("@babel/runtime/core-js/object/keys")},function(e,t){e.exports=require("path")},function(e,t,r){"use strict";var n=r(11),o=r(1),a=r(2);Object.defineProperty(t,"__esModule",{value:!0});var i=r(4),s=i.__importStar(r(79)),c=i.__importStar(r(53)),u=i.__importStar(r(41)),d=r(10),l=r(43),f=r(78),p=r(77),m=r(76),g=r(75),_=r(74),N=r(73),v=r(72),y=r(32),h=r(69),b=function(){function e(t){o(this,e),this.rawArguments=t,this.arguments=t.slice(2)}return a(e,[{key:"initialize",value:function(){this.inputPath=u.normalize(this.arguments[0]||""),this.commands=new s.Command,this.configureCommands(),this.configureHelp(),this.inputCLIOptions=this.commands.opts()}},{key:"run",value:function(){if(!this.arguments.length||this.arguments.includes("--help"))return this.commands.outputHelp();var e=new h.SourceCodeReader(this.inputCLIOptions).readSourceCode(this.inputPath);this.processSourceCodeData(e)}},{key:"buildOptions",value:function(){var t=e.filterOptions(this.inputCLIOptions),r=this.inputCLIOptions.config,o=r?u.resolve(r,"."):"",a=o?v.CLIUtils.getUserConfig(o):{};return n({},l.DEFAULT_PRESET,a,t)}},{key:"configureCommands",value:function(){this.commands.usage(" [options]").version(c.version,"-v, --version").option("-o, --output ","Output path for obfuscated code").option("--compact ","Disable one line output code compacting",p.BooleanSanitizer).option("--config ","Name of js / json config file").option("--control-flow-flattening ","Enables control flow flattening",p.BooleanSanitizer).option("--control-flow-flattening-threshold ","The probability that the control flow flattening transformation will be applied to the node",parseFloat).option("--dead-code-injection ","Enables dead code injection",p.BooleanSanitizer).option("--dead-code-injection-threshold ","The probability that the dead code injection transformation will be applied to the node",parseFloat).option("--debug-protection ","Disable browser Debug panel (can cause DevTools enabled browser freeze)",p.BooleanSanitizer).option("--debug-protection-interval ","Disable browser Debug panel even after page was loaded (can cause DevTools enabled browser freeze)",p.BooleanSanitizer).option("--disable-console-output ","Allow console.log, console.info, console.error and console.warn messages output into browser console",p.BooleanSanitizer).option("--domain-lock (comma separated, without whitespaces)","Blocks the execution of the code in domains that do not match the passed RegExp patterns (comma separated)",f.ArraySanitizer).option("--exclude (comma separated, without whitespaces)","A filename or glob which indicates files to exclude from obfuscation",f.ArraySanitizer).option("--identifier-names-generator [hexadecimal, mangled]","Sets identifier names generator (Default: hexadecimal)",m.IdentifierNamesGeneratorSanitizer).option("--identifiers-prefix ","Sets prefix for all global identifiers.").option("--log ","Enables logging of the information to the console",p.BooleanSanitizer).option("--reserved-names (comma separated, without whitespaces)","Disable obfuscation of variable names, function names and names of function parameters that match the passed RegExp patterns (comma separated)",f.ArraySanitizer).option("--rename-globals ","Allows to enable obfuscation of global variable and function names with declaration.",p.BooleanSanitizer).option("--rotate-string-array ","Disable rotation of unicode array values during obfuscation",p.BooleanSanitizer).option("--seed ","Sets seed for random generator. This is useful for creating repeatable results.",parseFloat).option("--self-defending ","Disables self-defending for obfuscated code",p.BooleanSanitizer).option("--source-map ","Enables source map generation",p.BooleanSanitizer).option("--source-map-base-url ","Sets base url to the source map import url when `--source-map-mode=separate`").option("--source-map-file-name ","Sets file name for output source map when `--source-map-mode=separate`").option("--source-map-mode [inline, separate]","Specify source map output mode",_.SourceMapModeSanitizer).option("--string-array ","Disables gathering of all literal strings into an array and replacing every literal string with an array call",p.BooleanSanitizer).option("--string-array-encoding [true, false, base64, rc4]","Encodes all strings in strings array using base64 or rc4 (this option can slow down your code speed",N.StringArrayEncodingSanitizer).option("--string-array-threshold ","The probability that the literal string will be inserted into stringArray (Default: 0.8, Min: 0, Max: 1)",parseFloat).option("--target ","Allows to set target environment for obfuscated code.",g.ObfuscationTargetSanitizer).option("--transform-object-keys ","Enables transformation of object keys",p.BooleanSanitizer).option("--unicode-escape-sequence ","Allows to enable/disable string conversion to unicode escape sequence",p.BooleanSanitizer).parse(this.rawArguments)}},{key:"configureHelp",value:function(){this.commands.on("--help",function(){console.log(" Examples:\n"),console.log(" %> javascript-obfuscator input_file_name.js --compact true --self-defending false"),console.log(" %> javascript-obfuscator input_file_name.js --output output_file_name.js --compact true --self-defending false"),console.log(" %> javascript-obfuscator input_directory_name --compact true --self-defending false"),console.log("")})}},{key:"processSourceCodeData",value:function(e){var t=this,r=this.inputCLIOptions.output?u.normalize(this.inputCLIOptions.output):"";if(Array.isArray(e))e.forEach(function(e,n){var o=e.filePath,a=e.content,i=r?u.join(r,o):v.CLIUtils.getOutputCodePath(o);t.processSourceCode(a,i,n)});else{var n=r||v.CLIUtils.getOutputCodePath(this.inputPath);this.processSourceCode(e,n,null)}}},{key:"processSourceCode",value:function(t,r,o){var a=this.buildOptions();if(null!==o){var i=this.inputCLIOptions.identifiersPrefix||e.baseIdentifiersPrefix,s="".concat(i).concat(o);a=n({},a,{identifiersPrefix:s})}a.sourceMap?e.processSourceCodeWithSourceMap(t,r,a):e.processSourceCodeWithoutSourceMap(t,r,a)}}],[{key:"filterOptions",value:function(e){var t={};for(var r in e)e.hasOwnProperty(r)&&void 0!==e[r]&&(t[r]=e[r]);return t}},{key:"processSourceCodeWithoutSourceMap",value:function(e,t,r){var n=y.JavaScriptObfuscator.obfuscate(e,r).getObfuscatedCode();v.CLIUtils.writeFile(t,n)}},{key:"processSourceCodeWithSourceMap",value:function(e,t,r){var o=v.CLIUtils.getOutputSourceMapPath(t,r.sourceMapFileName||"");r=n({},r,{sourceMapFileName:u.basename(o)});var a=y.JavaScriptObfuscator.obfuscate(e,r);v.CLIUtils.writeFile(t,a.getObfuscatedCode()),"separate"===r.sourceMapMode&&a.getSourceMap()&&v.CLIUtils.writeFile(o,a.getSourceMap())}}]),e}();b.encoding="utf8",b.obfuscatedFilePrefix="-obfuscated",b.baseIdentifiersPrefix="a",i.__decorate([d.initializable(),i.__metadata("design:type",Object)],b.prototype,"commands",void 0),i.__decorate([d.initializable(),i.__metadata("design:type",Object)],b.prototype,"inputCLIOptions",void 0),i.__decorate([d.initializable(),i.__metadata("design:type",String)],b.prototype,"inputPath",void 0),t.JavaScriptObfuscatorCLI=b},function(e,t,r){"use strict";var n=r(59);Object.defineProperty(t,"__esModule",{value:!0});var o=r(35),a=r(20),i=r(34);t.DEFAULT_PRESET=n({compact:!0,config:"",controlFlowFlattening:!1,controlFlowFlatteningThreshold:.75,deadCodeInjection:!1,deadCodeInjectionThreshold:.4,debugProtection:!1,debugProtectionInterval:!1,disableConsoleOutput:!1,domainLock:[],exclude:[],identifierNamesGenerator:o.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator,identifiersPrefix:"",log:!1,renameGlobals:!1,reservedNames:[],rotateStringArray:!0,seed:0,selfDefending:!1,sourceMap:!1,sourceMapBaseUrl:"",sourceMapFileName:"",sourceMapMode:i.SourceMapMode.Separate,stringArray:!0,stringArrayEncoding:!1,stringArrayThreshold:.75,target:a.ObfuscationTarget.Browser,transformObjectKeys:!1,unicodeEscapeSequence:!1})},function(e,t){e.exports=require("@babel/runtime/helpers/get")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalVariableNoEvalTemplate=function(){return"\n var that = (typeof window !== 'undefined'\n ? window\n : (typeof process === 'object' &&\n typeof require === 'function' &&\n typeof global === 'object')\n ? global\n : this);\n "}},function(e,t,r){"use strict";var n=r(16),o=r(1),a=r(2);Object.defineProperty(t,"__esModule",{value:!0});var i,s=r(4),c=r(0),u=r(3),d=i=function(){function e(t,r,a){o(this,e),this.replacerDataByControlFlowStorageId=new n,this.controlFlowCustomNodeFactory=t,this.randomGenerator=r,this.options=a}return a(e,[{key:"insertCustomNodeToControlFlowStorage",value:function(e,t,r,n){var o=this,a=t.getStorageId(),s=i.getStorageKeysByIdForCurrentStorage(this.replacerDataByControlFlowStorageId,a),c=s.get(r);if(this.randomGenerator.getMathRandom()1&&void 0!==arguments[1]?arguments[1]:a.randomGeneratorPool;return this.getRandomGenerator().string({length:e,pool:t})}},{key:"getSeed",value:function(){return this.seed}}]),e}();f.randomGeneratorPool="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",i.__decorate([l.initializable(),i.__metadata("design:type",Object)],f.prototype,"randomGenerator",void 0),i.__decorate([l.initializable(),i.__metadata("design:type",Number)],f.prototype,"seed",void 0),i.__decorate([s.postConstruct(),i.__metadata("design:type",Function),i.__metadata("design:paramtypes",[]),i.__metadata("design:returntype",void 0)],f.prototype,"initialize",null),f=a=i.__decorate([s.injectable(),i.__param(0,s.inject(c.ServiceIdentifiers.ISourceCode)),i.__param(1,s.inject(c.ServiceIdentifiers.IOptions)),i.__metadata("design:paramtypes",[Object,Object])],f),t.RandomGenerator=f},function(e,t,r){"use strict";var n=r(24),o=r(37),a=r(29),i=r(16),s=r(1),c=r(2);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=r(10),p=function(){function e(t,r){s(this,e),this.randomGenerator=t,this.options=r}return c(e,[{key:"initialize",value:function(){this.storage=new i,this.storageId=this.randomGenerator.getRandomString(6)}},{key:"get",value:function(e){var t=this.storage.get(e);if(!t)throw new Error("No value found in map storage with key `".concat(e,"`"));return t}},{key:"getKeyOf",value:function(e){var t=!0,r=!1,n=void 0;try{for(var i,s=o(this.storage);!(t=(i=s.next()).done);t=!0){var c=i.value,u=a(c,2),d=u[0];if(e===u[1])return d}}catch(e){r=!0,n=e}finally{try{t||null==s.return||s.return()}finally{if(r)throw n}}return null}},{key:"getLength",value:function(){return this.storage.size}},{key:"getStorage",value:function(){return this.storage}},{key:"getStorageId",value:function(){return this.storageId}},{key:"mergeWith",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.storage=new i(n(this.storage).concat(n(e.getStorage()))),t&&(this.storageId=e.getStorageId())}},{key:"set",value:function(e,t){this.storage.set(e,t)}}]),e}();u.__decorate([f.initializable(),u.__metadata("design:type",String)],p.prototype,"storageId",void 0),u.__decorate([f.initializable(),u.__metadata("design:type",i)],p.prototype,"storage",void 0),u.__decorate([d.postConstruct(),u.__metadata("design:type",Function),u.__metadata("design:paramtypes",[]),u.__metadata("design:returntype",void 0)],p.prototype,"initialize",null),p=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(1,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Object,Object])],p),t.MapStorage=p},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.BlackListNodeGuard="BlackListNodeGuard",e.ConditionalCommentNodeGuard="ConditionalCommentNodeGuard"}(t.ObfuscatingGuard||(t.ObfuscatingGuard={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.BooleanLiteralObfuscatingReplacer="BooleanLiteralObfuscatingReplacer",e.NumberLiteralObfuscatingReplacer="NumberLiteralObfuscatingReplacer",e.StringLiteralObfuscatingReplacer="StringLiteralObfuscatingReplacer"}(t.LiteralObfuscatingReplacer||(t.LiteralObfuscatingReplacer={}))},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0});var o=r(4),a=r(0),i=r(3),s=function e(t,r){n(this,e),this.randomGenerator=t,this.options=r};s=o.__decorate([a.injectable(),o.__param(0,a.inject(i.ServiceIdentifiers.IRandomGenerator)),o.__param(1,a.inject(i.ServiceIdentifiers.IOptions)),o.__metadata("design:paramtypes",[Object,Object])],s),t.AbstractIdentifierNamesGenerator=s},function(e,t){e.exports=require("@babel/runtime/core-js/object/freeze")},function(e,t){e.exports=require("@babel/runtime/core-js/array/from")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.ConsoleOutputCustomNodeGroup="ConsoleOutputCustomNodeGroup",e.DebugProtectionCustomNodeGroup="DebugProtectionCustomNodeGroup",e.DomainLockCustomNodeGroup="DomainLockCustomNodeGroup",e.SelfDefendingCustomNodeGroup="SelfDefendingCustomNodeGroup",e.StringArrayCustomNodeGroup="StringArrayCustomNodeGroup"}(t.CustomNodeGroup||(t.CustomNodeGroup={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.BlockStatementDeadCodeInjectionNode="BlockStatementDeadCodeInjectionNode"}(t.DeadCodeInjectionCustomNode||(t.DeadCodeInjectionCustomNode={}))},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=r(21),f=r(46),p=r(9),m=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"getControlFlowStorageCallNode",value:function(e,t,r,n){var o=this.controlFlowCustomNodeFactory(l.ControlFlowCustomNode.ExpressionWithOperatorControlFlowStorageCallNode);o.initialize(e,t,r,n);var a=o.getNode()[0];if(!a||!p.NodeGuards.isExpressionStatementNode(a))throw new Error("`controlFlowStorageCallCustomNode.getNode()[0]` should returns array with `ExpressionStatement` node");return a.expression}}]),t}(f.AbstractControlFlowReplacer);m=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.Factory__IControlFlowCustomNode)),c.__param(1,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(2,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Function,Object,Object])],m),t.ExpressionWithOperatorControlFlowReplacer=m},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.BinaryExpressionControlFlowReplacer="BinaryExpressionControlFlowReplacer",e.CallExpressionControlFlowReplacer="CallExpressionControlFlowReplacer",e.LogicalExpressionControlFlowReplacer="LogicalExpressionControlFlowReplacer",e.StringLiteralControlFlowReplacer="StringLiteralControlFlowReplacer"}(t.ControlFlowReplacer||(t.ControlFlowReplacer={}))},function(e,t){e.exports=require("esprima")},function(e,t){e.exports=require("@babel/runtime/helpers/typeof")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.FunctionDeclarationCalleeDataExtractor="FunctionDeclarationCalleeDataExtractor",e.FunctionExpressionCalleeDataExtractor="FunctionExpressionCalleeDataExtractor",e.ObjectExpressionCalleeDataExtractor="ObjectExpressionCalleeDataExtractor"}(t.CalleeDataExtractor||(t.CalleeDataExtractor={}))},function(e,t){e.exports=require("multimatch")},function(e,t,r){"use strict";var n=r(24),o=r(1),a=r(2);Object.defineProperty(t,"__esModule",{value:!0});var i=__importStar(r(49)),s=__importStar(r(41)),c=__importDefault(r(68)),u=r(50),d=r(42),l=r(51),f=function(){function e(t){o(this,e),this.options=t}return a(e,[{key:"readSourceCode",value:function(t){if(e.isFilePath(t)&&this.isValidFile(t))return this.readFile(t);if(e.isDirectoryPath(t)&&this.isValidDirectory(t))return this.readDirectoryRecursive(t);var r=e.availableInputExtensions.map(function(e){return"`".concat(e,"`")}).join(", ");throw new ReferenceError("Given input path must be a valid ".concat(r," file or directory path"))}},{key:"readDirectoryRecursive",value:function(t){var r=this,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return i.readdirSync(t,d.JavaScriptObfuscatorCLI.encoding).forEach(function(a){var i="".concat(t,"/").concat(a);if(e.isDirectoryPath(i)&&r.isValidDirectory(i))o.push.apply(o,n(r.readDirectoryRecursive(i)));else if(e.isFilePath(i)&&r.isValidFile(i)){var s=r.readFile(i);o.push({filePath:i,content:s})}}),o}},{key:"readFile",value:function(t){return e.logFilePath(t),i.readFileSync(t,d.JavaScriptObfuscatorCLI.encoding)}},{key:"isValidDirectory",value:function(t){return!e.isExcludedPath(t,this.options.exclude)}},{key:"isValidFile",value:function(t){return e.availableInputExtensions.includes(s.extname(t))&&!t.includes(d.JavaScriptObfuscatorCLI.obfuscatedFilePrefix)&&!e.isExcludedPath(t,this.options.exclude)}}],[{key:"isExcludedPath",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!t.length)return!1;var r=s.basename(e),n=!!c.default([e],t).length;return t.some(function(t){return e.includes(t)||r.includes(t)})||n}},{key:"isDirectoryPath",value:function(e){try{return i.statSync(e).isDirectory()}catch(e){return!1}}},{key:"isFilePath",value:function(e){try{return i.statSync(e).isFile()}catch(e){return!1}}},{key:"logFilePath",value:function(e){var t=s.normalize(e);l.Logger.log(l.Logger.colorInfo,u.LoggingPrefix.CLI,"Obfuscating file: ".concat(t,"..."))}}]),e}();f.availableInputExtensions=[".js"],t.SourceCodeReader=f},function(e,t){function r(e){var t=new Error('Cannot find module "'+e+'".');throw t.code="MODULE_NOT_FOUND",t}r.keys=function(){return[]},r.resolve=r,e.exports=r,r.id=70},function(e,t){e.exports=require("mkdirp")},function(e,t,r){"use strict";var n=r(1),o=r(2);Object.defineProperty(t,"__esModule",{value:!0});var a=__importStar(r(49)),i=__importStar(r(71)),s=__importStar(r(41)),c=r(42),u=function(){function e(){n(this,e)}return o(e,null,[{key:"getOutputCodePath",value:function(e){return s.normalize(e).split(".").map(function(e,t){return 0===t?"".concat(e).concat(c.JavaScriptObfuscatorCLI.obfuscatedFilePrefix):e}).join(".")}},{key:"getOutputSourceMapPath",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return t&&(e="".concat(e.substring(0,e.lastIndexOf("/")),"/").concat(t)),/\.js\.map$/.test(e)?/\.js$/.test(e)&&(e+=".map"):e="".concat(e.split(".")[0],".js.map"),e}},{key:"getUserConfig",value:function(e){var t;try{t=r(70)(e)}catch(r){try{t=require(e)}catch(e){throw new ReferenceError("Given config path must be a valid `.js` or `.json` file path")}}return t}},{key:"writeFile",value:function(e,t){i.sync(s.dirname(e)),a.writeFileSync(e,t,{encoding:c.JavaScriptObfuscatorCLI.encoding})}}]),e}();t.CLIUtils=u},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(33);t.StringArrayEncodingSanitizer=function(e){switch(e){case"true":case"1":case n.StringArrayEncoding.Base64:return!0;case n.StringArrayEncoding.Rc4:return n.StringArrayEncoding.Rc4;default:return!1}}},function(e,t,r){"use strict";var n=r(40);Object.defineProperty(t,"__esModule",{value:!0});var o=r(34);t.SourceMapModeSanitizer=function(e){if(!n(o.SourceMapMode).some(function(t){return o.SourceMapMode[t]===e}))throw new ReferenceError("Invalid value of `--source-map-mode` option");return e}},function(e,t,r){"use strict";var n=r(40);Object.defineProperty(t,"__esModule",{value:!0});var o=r(20);t.ObfuscationTargetSanitizer=function(e){if(!n(o.ObfuscationTarget).some(function(t){return o.ObfuscationTarget[t]===e}))throw new ReferenceError("Invalid value of `--target` option");return e}},function(e,t,r){"use strict";var n=r(40);Object.defineProperty(t,"__esModule",{value:!0});var o=r(35);t.IdentifierNamesGeneratorSanitizer=function(e){if(!n(o.IdentifierNamesGenerator).some(function(t){return o.IdentifierNamesGenerator[t]===e}))throw new ReferenceError("Invalid value of `--identifier-names-generator` option");return e}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BooleanSanitizer=function(e){return"true"===e||"1"===e}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ArraySanitizer=function(e){if(/,$/.test(e))throw new SyntaxError("Multiple values should be wrapped inside quotes: --option-name 'value1, value2'");return e.split(",").map(function(e){return e.trim()})}},function(e,t){e.exports=require("commander")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.Enter="enter",e.Leave="leave"}(t.VisitorDirection||(t.VisitorDirection={}))},function(e,t,r){"use strict";var n=r(1),o=r(2);Object.defineProperty(t,"__esModule",{value:!0});var a=r(4),i=r(0),s=r(3),c=a.__importStar(r(17)),u=r(80),d=r(9),l=function(){function e(t){n(this,e),this.nodeTransformerFactory=t}return o(e,[{key:"transform",value:function(e,t,r){if(!t.length)return e;for(var n,o=[],a=[],i=t.length,s=0;s"),d="...".concat(i.substring(s,c).replace(/^\s+/,""),"...");throw new Error("".concat(r,"\n").concat(u," ").concat(d))}}]),e}();c.colorError=s.default.red,c.nearestSymbolsCount=10,t.EsprimaFacade=c},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.EmptySourceCode="Empty source code. Obfuscation canceled...",e.ObfuscationCompleted="Obfuscation completed. Total time: %s sec.",e.ObfuscationStarted="Obfuscation started...",e.RandomGeneratorSeed="Random generator seed: %s...",e.TransformationStage="Transformation stage: %s...",e.Version="Version: %s"}(t.LoggingMessage||(t.LoggingMessage={}))},function(e,t,r){"use strict";var n=r(11),o=r(1),a=r(2);Object.defineProperty(t,"__esModule",{value:!0});var i,s=r(4),c=r(0),u=r(3),d=s.__importStar(r(47)),l=s.__importStar(r(53)),f=r(88),p=r(31),m=r(12),g=r(87),_=r(9),N=i=function(){function e(t,r,n,a,i){o(this,e),this.transformersRunner=t,this.sourceMapCorrector=r,this.randomGenerator=n,this.logger=a,this.options=i}return a(e,[{key:"obfuscate",value:function(e){var t=Date.now();this.logger.info(f.LoggingMessage.Version,l.version),this.logger.info(f.LoggingMessage.ObfuscationStarted),this.logger.info(f.LoggingMessage.RandomGeneratorSeed,this.randomGenerator.getSeed());var r=this.parseCode(e),n=this.transformAstTree(r),o=this.generateCode(e,n),a=(Date.now()-t)/1e3;return this.logger.success(f.LoggingMessage.ObfuscationCompleted,a),this.getObfuscationResult(o)}},{key:"parseCode",value:function(e){return g.EsprimaFacade.parse(e,{attachComment:!0,loc:this.options.sourceMap})}},{key:"transformAstTree",value:function(e){return!_.NodeGuards.isProgramNode(e)||e.body.length||e.leadingComments?(e=this.runTransformationStage(e,m.TransformationStage.Preparing),this.options.deadCodeInjection&&(e=this.runTransformationStage(e,m.TransformationStage.DeadCodeInjection)),this.options.controlFlowFlattening&&(e=this.runTransformationStage(e,m.TransformationStage.ControlFlowFlattening)),e=this.runTransformationStage(e,m.TransformationStage.Converting),e=this.runTransformationStage(e,m.TransformationStage.Obfuscating),e=this.runTransformationStage(e,m.TransformationStage.Finalizing)):(this.logger.warn(f.LoggingMessage.EmptySourceCode),e)}},{key:"generateCode",value:function(e,t){var r=n({},i.escodegenParams);this.options.sourceMap&&(r.sourceMap="sourceMap",r.sourceContent=e);var o=d.generate(t,n({},r,{format:{compact:this.options.compact}}));return o.map=o.map?o.map.toString():"",o}},{key:"getObfuscationResult",value:function(e){return this.sourceMapCorrector.correct(e.code,e.map)}},{key:"runTransformationStage",value:function(e,t){return this.logger.info(f.LoggingMessage.TransformationStage,t),this.transformersRunner.transform(e,i.transformersList,t)}}]),e}();N.escodegenParams={comment:!0,verbatim:"x-verbatim-property",sourceMapWithCode:!0},N.transformersList=[p.NodeTransformer.BlockStatementControlFlowTransformer,p.NodeTransformer.ClassDeclarationTransformer,p.NodeTransformer.CommentsTransformer,p.NodeTransformer.CustomNodesTransformer,p.NodeTransformer.DeadCodeInjectionTransformer,p.NodeTransformer.EvalCallExpressionTransformer,p.NodeTransformer.FunctionControlFlowTransformer,p.NodeTransformer.CatchClauseTransformer,p.NodeTransformer.FunctionDeclarationTransformer,p.NodeTransformer.FunctionTransformer,p.NodeTransformer.LabeledStatementTransformer,p.NodeTransformer.LiteralTransformer,p.NodeTransformer.MemberExpressionTransformer,p.NodeTransformer.MethodDefinitionTransformer,p.NodeTransformer.ObfuscatingGuardsTransformer,p.NodeTransformer.ObjectExpressionKeysTransformer,p.NodeTransformer.ObjectExpressionTransformer,p.NodeTransformer.ParentificationTransformer,p.NodeTransformer.TemplateLiteralTransformer,p.NodeTransformer.VariableDeclarationTransformer],N=i=s.__decorate([c.injectable(),s.__param(0,c.inject(u.ServiceIdentifiers.ITransformersRunner)),s.__param(1,c.inject(u.ServiceIdentifiers.ISourceMapCorrector)),s.__param(2,c.inject(u.ServiceIdentifiers.IRandomGenerator)),s.__param(3,c.inject(u.ServiceIdentifiers.ILogger)),s.__param(4,c.inject(u.ServiceIdentifiers.IOptions)),s.__metadata("design:paramtypes",[Object,Object,Object,Object,Object])],N),t.JavaScriptObfuscator=N},function(e,t,r){"use strict";var n=r(16),o=r(1),a=r(2);Object.defineProperty(t,"__esModule",{value:!0});var i=r(4),s=r(0),c=function(){function e(){o(this,e),this.stringsCache=new n}return a(e,[{key:"encode",value:function(e,t){var r="".concat(e,"-").concat(String(t));if(this.stringsCache.has(r))return this.stringsCache.get(r);var n,o,a=new RegExp("[\\s\\S]","g"),i=new RegExp("['\"\\\\\\s]"),s=new RegExp("[\\x00-\\x7F]"),c=e.replace(a,function(e){return t||i.exec(e)?(s.exec(e)?(n="\\x",o="00"):(n="\\u",o="0000"),"".concat(n).concat((o+e.charCodeAt(0).toString(16)).slice(-o.length))):e});return this.stringsCache.set(r,c),c}}]),e}();c=i.__decorate([s.injectable()],c),t.EscapeSequenceEncoder=c},function(e,t){e.exports=require("chance")},function(e,t){e.exports=require("md5")},function(e,t,r){"use strict";var n=r(1),o=r(2);Object.defineProperty(t,"__esModule",{value:!0});var a=r(4),i=r(0),s=r(3),c=r(54),u=r(27),d=function(){function e(t){n(this,e),this.randomGenerator=t}return o(e,[{key:"btoa",value:function(e){var t="";e=encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,function(e,t){return String.fromCharCode(parseInt("".concat(u.Utils.hexadecimalPrefix).concat(t)))});for(var r,n,o=0,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e.charAt(0|o)||(a="=",o%1);t+=a.charAt(63&r>>8-o%1*8)){if((n=e.charCodeAt(o+=.75))>255)throw new Error("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");r=r<<8|n}return t}},{key:"hideString",value:function(e,t){var r=this,n=this.randomGenerator.getRandomGenerator().string({length:t,pool:c.RandomGenerator.randomGeneratorPool}).replace(new RegExp("[".concat(e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"]"),"g"),""),o=n.split("");return this.randomGenerator.getRandomGenerator().shuffle(o),[function(e,t){for(var n=-1,o=-1,a="";n=0?t:null}},{key:"getLength",value:function(){return this.storageLength}},{key:"getStorage",value:function(){return this.storage}},{key:"getStorageId",value:function(){return this.storageId}},{key:"mergeWith",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.storage=n(this.storage).concat(n(e.getStorage())),t&&(this.storageId=e.getStorageId())}},{key:"set",value:function(e,t){e===this.storageLength?this.storage.push(t):this.storage.splice(e,0,t),this.storageLength++}}]),e}();i.__decorate([u.initializable(),i.__metadata("design:type",Array)],d.prototype,"storage",void 0),i.__decorate([u.initializable(),i.__metadata("design:type",String)],d.prototype,"storageId",void 0),i.__decorate([s.postConstruct(),i.__metadata("design:type",Function),i.__metadata("design:paramtypes",[]),i.__metadata("design:returntype",void 0)],d.prototype,"initialize",null),d=i.__decorate([s.injectable(),i.__param(0,s.inject(c.ServiceIdentifiers.IRandomGenerator)),i.__param(1,s.inject(c.ServiceIdentifiers.IOptions)),i.__metadata("design:paramtypes",[Object,Object])],d),t.ArrayStorage=d},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(44),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u,d=r(4),l=r(0),f=r(3),p=r(96),m=u=function(e){function t(e,r,a,s){var c;return o(this,t),(c=i(this,(t.__proto__||n(t)).call(this,a,s))).identifierNamesGenerator=e(s),c.arrayUtils=r,c}return c(t,e),a(t,[{key:"initialize",value:function(){s(t.prototype.__proto__||n(t.prototype),"initialize",this).call(this);var e=this.identifierNamesGenerator.generate().slice(0,u.stringArrayNameLength),r=this.identifierNamesGenerator.generate().slice(0,u.stringArrayNameLength),o="".concat(this.options.identifiersPrefix).concat(e),a="".concat(this.options.identifiersPrefix).concat(r);this.storageId="".concat(o,"|").concat(a)}},{key:"rotateArray",value:function(e){this.storage=this.arrayUtils.arrayRotate(this.storage,e)}},{key:"toString",value:function(){return this.storage.map(function(e){return"'".concat(e,"'")}).toString()}}]),t}(p.ArrayStorage);m.stringArrayNameLength=7,d.__decorate([l.postConstruct(),d.__metadata("design:type",Function),d.__metadata("design:paramtypes",[]),d.__metadata("design:returntype",void 0)],m.prototype,"initialize",null),m=u=d.__decorate([l.injectable(),d.__param(0,l.inject(f.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),d.__param(1,l.inject(f.ServiceIdentifiers.IArrayUtils)),d.__param(2,l.inject(f.ServiceIdentifiers.IRandomGenerator)),d.__param(3,l.inject(f.ServiceIdentifiers.IOptions)),d.__metadata("design:paramtypes",[Function,Object,Object,Object])],m),t.StringArrayStorage=m},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(44),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u,d=r(4),l=r(0),f=r(3),p=r(61),m=r(55),g=u=function(e){function t(e,r,a){var s;return o(this,t),(s=i(this,(t.__proto__||n(t)).call(this,r,a))).customNodeGroupFactory=e,s}return c(t,e),a(t,[{key:"initialize",value:function(){var e=this;s(t.prototype.__proto__||n(t.prototype),"initialize",this).call(this),u.customNodeGroupsList.forEach(function(t){var r=e.customNodeGroupFactory(t);r&&e.storage.set(t,r)})}}]),t}(m.MapStorage);g.customNodeGroupsList=[p.CustomNodeGroup.ConsoleOutputCustomNodeGroup,p.CustomNodeGroup.DebugProtectionCustomNodeGroup,p.CustomNodeGroup.DomainLockCustomNodeGroup,p.CustomNodeGroup.SelfDefendingCustomNodeGroup,p.CustomNodeGroup.StringArrayCustomNodeGroup],d.__decorate([l.postConstruct(),d.__metadata("design:type",Function),d.__metadata("design:paramtypes",[]),d.__metadata("design:returntype",void 0)],g.prototype,"initialize",null),g=u=d.__decorate([l.injectable(),d.__param(0,l.inject(f.ServiceIdentifiers.Factory__ICustomNodeGroup)),d.__param(1,l.inject(f.ServiceIdentifiers.IRandomGenerator)),d.__param(2,l.inject(f.ServiceIdentifiers.IOptions)),d.__metadata("design:paramtypes",[Function,Object,Object])],g),t.CustomNodeGroupStorage=g},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(6),i=r(5);Object.defineProperty(t,"__esModule",{value:!0});var s=r(4),c=r(0),u=r(3),d=function(e){function t(e,r){return o(this,t),a(this,(t.__proto__||n(t)).call(this,e,r))}return i(t,e),t}(r(55).MapStorage);d=s.__decorate([c.injectable(),s.__param(0,c.inject(u.ServiceIdentifiers.IRandomGenerator)),s.__param(1,c.inject(u.ServiceIdentifiers.IOptions)),s.__metadata("design:paramtypes",[Object,Object])],d),t.ControlFlowStorage=d},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(3),a=r(99),i=r(98),s=r(97);t.storagesModule=new n.ContainerModule(function(e){e(o.ServiceIdentifiers.TCustomNodeGroupStorage).to(i.CustomNodeGroupStorage).inSingletonScope(),e(o.ServiceIdentifiers.TStringArrayStorage).to(s.StringArrayStorage).inSingletonScope(),e(o.ServiceIdentifiers.Newable__TControlFlowStorage).toConstructor(a.ControlFlowStorage),e(o.ServiceIdentifiers.Factory__TControlFlowStorage).toFactory(function(e){return function(){var t=new(e.container.get(o.ServiceIdentifiers.Newable__TControlFlowStorage))(e.container.get(o.ServiceIdentifiers.IRandomGenerator),e.container.get(o.ServiceIdentifiers.IOptions));return t.initialize(),t}})})},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=r(12),f=r(14),p=r(8),m=function(e){function t(e,r){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r))}return s(t,e),a(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case l.TransformationStage.Preparing:return{enter:function(e,r){return t.transformNode(e,r)}};default:return null}}},{key:"transformNode",value:function(e,t){return p.NodeUtils.parentizeNode(e,t)}}]),t}(f.AbstractNodeTransformer);m=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(1,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Object,Object])],m),t.ParentificationTransformer=m},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c,u=r(4),d=r(0),l=r(3),f=r(56),p=r(12),m=r(14),g=c=function(e){function t(e,r,a){var s;return o(this,t),(s=i(this,(t.__proto__||n(t)).call(this,r,a))).obfuscatingGuards=c.obfuscatingGuardsList.map(e),s}return s(t,e),a(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case p.TransformationStage.Preparing:return{enter:function(e,r){return t.transformNode(e,r)}};default:return null}}},{key:"transformNode",value:function(e,t){var r=this.obfuscatingGuards.every(function(t){return t.check(e)});return e.ignoredNode=!r,e}}]),t}(m.AbstractNodeTransformer);g.obfuscatingGuardsList=[f.ObfuscatingGuard.BlackListNodeGuard,f.ObfuscatingGuard.ConditionalCommentNodeGuard],g=c=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__INodeGuard)),u.__param(1,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object])],g),t.ObfuscatingGuardsTransformer=g},function(e,t){e.exports=require("js-string-escape")},function(e,t,r){"use strict";var n=r(30),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u,d=r(4),l=r(0),f=r(3),p=d.__importDefault(r(103)),m=r(12),g=r(14),_=r(9),N=r(15),v=r(8),y=u=function(e){function t(e,r){var i;return a(this,t),(i=s(this,(t.__proto__||o(t)).call(this,e,r))).evalRootAstHostNodeSet=new n,i}return c(t,e),i(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case m.TransformationStage.Preparing:return{enter:function(e,r){if(r&&_.NodeGuards.isCallExpressionNode(e)&&_.NodeGuards.isIdentifierNode(e.callee)&&"eval"===e.callee.name)return t.transformNode(e,r)}};case m.TransformationStage.Finalizing:return this.evalRootAstHostNodeSet.size?{leave:function(e,r){if(r&&t.isEvalRootAstHostNode(e))return t.restoreNode(e,r)}}:null;default:return null}}},{key:"transformNode",value:function(e,t){var r=e.arguments[0];if(!r)return e;var n,o=u.extractEvalStringFromCallExpressionArgument(r);if(!o)return e;try{n=v.NodeUtils.convertCodeToStructure(o)}catch(t){return e}var a=N.Nodes.getFunctionExpressionNode([],N.Nodes.getBlockStatementNode(n));return this.evalRootAstHostNodeSet.add(a),a}},{key:"restoreNode",value:function(e,t){var r=e.body.body,n=v.NodeUtils.convertStructureToCode(r);return N.Nodes.getCallExpressionNode(N.Nodes.getIdentifierNode("eval"),[N.Nodes.getLiteralNode(p.default(n))])}},{key:"isEvalRootAstHostNode",value:function(e){return _.NodeGuards.isFunctionExpressionNode(e)&&this.evalRootAstHostNodeSet.has(e)}}],[{key:"extractEvalStringFromCallExpressionArgument",value:function(e){return _.NodeGuards.isLiteralNode(e)?u.extractEvalStringFromLiteralNode(e):_.NodeGuards.isTemplateLiteralNode(e)?u.extractEvalStringFromTemplateLiteralNode(e):null}},{key:"extractEvalStringFromLiteralNode",value:function(e){return"string"==typeof e.value?e.value:null}},{key:"extractEvalStringFromTemplateLiteralNode",value:function(e){var t=e.quasis;return 1!==t.length||e.expressions.length?null:t[0].value.cooked}}]),t}(g.AbstractNodeTransformer);y=u=d.__decorate([l.injectable(),d.__param(0,l.inject(f.ServiceIdentifiers.IRandomGenerator)),d.__param(1,l.inject(f.ServiceIdentifiers.IOptions)),d.__metadata("design:paramtypes",[Object,Object])],y),t.EvalCallExpressionTransformer=y},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=r(23),f=r(12),p=r(14),m=r(9),g=function(e){function t(e,r,a,s,c){var u;return o(this,t),(u=i(this,(t.__proto__||n(t)).call(this,s,c))).stackTraceData=[],u.stackTraceAnalyzer=e,u.obfuscationEventEmitter=r,u.customNodeGroupStorage=a,u}return s(t,e),a(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case f.TransformationStage.Preparing:return{leave:function(e,r){if(m.NodeGuards.isProgramNode(e))return t.analyzeNode(e,r),t.appendCustomNodesBeforeObfuscation(e,r),t.transformNode(e,r)}};case f.TransformationStage.Finalizing:return{leave:function(e,r){m.NodeGuards.isProgramNode(e)&&t.appendCustomNodesAfterObfuscation(e,r)}};default:return null}}},{key:"analyzeNode",value:function(e,t){this.stackTraceData=this.stackTraceAnalyzer.analyze(e)}},{key:"transformNode",value:function(e,t){return e}},{key:"appendCustomNodesBeforeObfuscation",value:function(e,t){var r=this;this.customNodeGroupStorage.getStorage().forEach(function(e){e.initialize(),r.obfuscationEventEmitter.once(e.getAppendEvent(),e.appendCustomNodes.bind(e))}),this.obfuscationEventEmitter.emit(l.ObfuscationEvent.BeforeObfuscation,e,this.stackTraceData)}},{key:"appendCustomNodesAfterObfuscation",value:function(e,t){this.obfuscationEventEmitter.emit(l.ObfuscationEvent.AfterObfuscation,e,this.stackTraceData)}}]),t}(p.AbstractNodeTransformer);g=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.IStackTraceAnalyzer)),c.__param(1,u.inject(d.ServiceIdentifiers.IObfuscationEventEmitter)),c.__param(2,u.inject(d.ServiceIdentifiers.TCustomNodeGroupStorage)),c.__param(3,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(4,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Object,Object,Object,Object,Object])],g),t.CustomNodesTransformer=g},function(e,t,r){"use strict";var n=r(1),o=r(2);Object.defineProperty(t,"__esModule",{value:!0});var a,i=r(4),s=r(0),c=r(9),u=a=function(){function e(){n(this,e),this.obfuscationAllowedForCurrentNode=!0,this.obfuscationAllowedForNextNode=null}return o(e,[{key:"check",value:function(e){if(this.obfuscationAllowedForNextNode&&(this.obfuscationAllowedForCurrentNode=this.obfuscationAllowedForNextNode,this.obfuscationAllowedForNextNode=null),!c.NodeGuards.isNodeWithComments(e))return this.obfuscationAllowedForCurrentNode;var t=e.leadingComments,r=e.trailingComments;return t&&(this.obfuscationAllowedForCurrentNode=this.checkComments(t)),r&&(this.obfuscationAllowedForNextNode=this.checkComments(r)),this.obfuscationAllowedForCurrentNode}},{key:"checkComments",value:function(e){for(var t=e.length,r=this.obfuscationAllowedForCurrentNode,n=0;n=u.minimumLengthForStringArray&&this.randomGenerator.getMathRandom()<=this.options.stringArrayThreshold}},{key:"getStringArrayHexadecimalIndex",value:function(e,t){if(this.stringLiteralHexadecimalIndexCache.has(e))return{fromCache:!0,index:this.stringLiteralHexadecimalIndexCache.get(e)};var r=_.Utils.decToHex(t),n="".concat(_.Utils.hexadecimalPrefix).concat(r);return this.stringLiteralHexadecimalIndexCache.set(e,n),{fromCache:!1,index:n}}},{key:"getEncodedValue",value:function(e){var t,r=null;switch(this.options.stringArrayEncoding){case p.StringArrayEncoding.Rc4:r=this.randomGenerator.getRandomGenerator().pickone(this.rc4Keys),t=this.cryptUtils.btoa(this.cryptUtils.rc4(e,r));break;case p.StringArrayEncoding.Base64:t=this.cryptUtils.btoa(e);break;default:t=e}return{encodedValue:t,key:r}}},{key:"replaceWithLiteralNode",value:function(e){return g.Nodes.getLiteralNode(this.escapeSequenceEncoder.encode(e,this.options.unicodeEscapeSequence))}},{key:"replaceWithStringArrayCallNode",value:function(e){var t=this.getEncodedValue(e),r=t.encodedValue,n=t.key,o=this.escapeSequenceEncoder.encode(r,this.options.unicodeEscapeSequence),a=this.stringArrayStorage.getLength(),i=this.stringArrayStorage.getStorageId().split("|")[1],s=this.getStringArrayHexadecimalIndex(o,a),c=s.fromCache,d=s.index;c||this.stringArrayStorage.set(a,o);var l=[u.getHexadecimalLiteralNode(d)];n&&l.push(u.getRc4KeyLiteralNode(this.escapeSequenceEncoder.encode(n,this.options.unicodeEscapeSequence)));var f=g.Nodes.getIdentifierNode(i);return f.obfuscatedNode=!0,g.Nodes.getCallExpressionNode(f,l)}}],[{key:"getHexadecimalLiteralNode",value:function(e){var t=g.Nodes.getLiteralNode(e);return t.obfuscatedNode=!0,t}},{key:"getRc4KeyLiteralNode",value:function(e){var t=g.Nodes.getLiteralNode(e);return t.obfuscatedNode=!0,t}}]),t}(m.AbstractObfuscatingReplacer);N.minimumLengthForStringArray=3,N.rc4KeyLength=4,N.rc4KeysCount=50,N=u=d.__decorate([l.injectable(),d.__param(0,l.inject(f.ServiceIdentifiers.TStringArrayStorage)),d.__param(1,l.inject(f.ServiceIdentifiers.IEscapeSequenceEncoder)),d.__param(2,l.inject(f.ServiceIdentifiers.IRandomGenerator)),d.__param(3,l.inject(f.ServiceIdentifiers.ICryptUtils)),d.__param(4,l.inject(f.ServiceIdentifiers.IOptions)),d.__metadata("design:paramtypes",[Object,Object,Object,Object,Object])],N),t.StringLiteralObfuscatingReplacer=N},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c,u=r(4),d=r(0),l=r(3),f=r(19),p=r(12),m=r(14),g=r(9),_=c=function(e){function t(e,r){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r))}return s(t,e),a(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case p.TransformationStage.Obfuscating:return{enter:function(e,r){if(r&&g.NodeGuards.isObjectExpressionNode(e))return t.transformNode(e,r)}};default:return null}}},{key:"transformNode",value:function(e,t){return e.properties.forEach(function(e){e.computed||(e.shorthand&&(e.shorthand=!1),g.NodeGuards.isIdentifierNode(e.key)&&(e.key=c.transformIdentifierPropertyKey(e.key)))}),e}}],[{key:"transformIdentifierPropertyKey",value:function(e){return{type:f.NodeType.Literal,value:e.name,raw:"'".concat(e.name,"'")}}}]),t}(m.AbstractNodeTransformer);_=c=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(1,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Object,Object])],_),t.ObjectExpressionTransformer=_},function(e,t,r){"use strict";var n=r(16),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=r(38),p=r(15),m=r(27),g=function(e){function t(e){var r;return a(this,t),(r=s(this,(t.__proto__||o(t)).call(this,e))).numberLiteralCache=new n,r}return c(t,e),i(t,[{key:"replace",value:function(e){var t;return this.numberLiteralCache.has(e)?t=this.numberLiteralCache.get(e):(t=m.Utils.isCeilNumber(e)?"".concat(m.Utils.hexadecimalPrefix).concat(m.Utils.decToHex(e)):String(e),this.numberLiteralCache.set(e,t)),p.Nodes.getLiteralNode(e,t)}}]),t}(f.AbstractObfuscatingReplacer);g=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Object])],g),t.NumberLiteralObfuscatingReplacer=g},function(e,t,r){"use strict";var n=r(66),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=r(57),p=r(12),m=r(14),g=r(9),_=function(e){function t(e,r,n){var i;return a(this,t),(i=s(this,(t.__proto__||o(t)).call(this,r,n))).literalObfuscatingReplacerFactory=e,i}return c(t,e),i(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case p.TransformationStage.Obfuscating:return{enter:function(e,r){if(r&&g.NodeGuards.isLiteralNode(e)&&!e.obfuscatedNode)return t.transformNode(e,r)}};default:return null}}},{key:"transformNode",value:function(e,t){if(t&&g.NodeGuards.isPropertyNode(t)&&t.key===e)return e;switch(n(e.value)){case"boolean":return this.literalObfuscatingReplacerFactory(f.LiteralObfuscatingReplacer.BooleanLiteralObfuscatingReplacer).replace(e.value);case"number":return this.literalObfuscatingReplacerFactory(f.LiteralObfuscatingReplacer.NumberLiteralObfuscatingReplacer).replace(e.value);case"string":return this.literalObfuscatingReplacerFactory(f.LiteralObfuscatingReplacer.StringLiteralObfuscatingReplacer).replace(e.value);default:return e}}}]),t}(m.AbstractNodeTransformer);_=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__IObfuscatingReplacer)),u.__param(1,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object])],_),t.LiteralTransformer=_},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=c.__importStar(r(17)),f=r(22),p=r(12),m=r(14),g=r(9),_=function(e){function t(e,r,a){var s;return o(this,t),(s=i(this,(t.__proto__||n(t)).call(this,r,a))).identifierObfuscatingReplacer=e(f.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer),s}return s(t,e),a(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case p.TransformationStage.Obfuscating:return{enter:function(e,r){if(r&&g.NodeGuards.isLabeledStatementNode(e))return t.transformNode(e,r)}};default:return null}}},{key:"transformNode",value:function(e,t){var r=this.nodeIdentifier++;return this.storeLabeledStatementName(e,r),this.replaceLabeledStatementName(e,r),e}},{key:"storeLabeledStatementName",value:function(e,t){this.identifierObfuscatingReplacer.storeLocalName(e.label.name,t)}},{key:"replaceLabeledStatementName",value:function(e,t){var r=this;l.replace(e,{enter:function(e,n){if(n&&g.NodeGuards.isLabelIdentifierNode(e,n)){var o=r.identifierObfuscatingReplacer.replace(e.name,t);e.name=o.name}}})}}]),t}(m.AbstractNodeTransformer);_=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)),c.__param(1,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(2,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Function,Object,Object])],_),t.LabeledStatementTransformer=_},function(e,t,r){"use strict";var n=r(30),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=u.__importStar(r(17)),p=r(22),m=r(12),g=r(14),_=r(9),N=function(e){function t(e,r,n){var i;return a(this,t),(i=s(this,(t.__proto__||o(t)).call(this,r,n))).identifierObfuscatingReplacer=e(p.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer),i}return c(t,e),i(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case m.TransformationStage.Obfuscating:return{enter:function(e,r){if(r&&(_.NodeGuards.isFunctionDeclarationNode(e)||_.NodeGuards.isFunctionExpressionNode(e)||_.NodeGuards.isArrowFunctionExpressionNode(e)))return t.transformNode(e,r)}};default:return null}}},{key:"transformNode",value:function(e,t){var r=this.nodeIdentifier++;return this.storeFunctionParams(e,r),this.replaceFunctionParams(e,r),e}},{key:"storeFunctionParams",value:function(e,t){var r=this;e.params.forEach(function(e){if(_.NodeGuards.isObjectPatternNode(e))return f.VisitorOption.Skip;f.traverse(e,{enter:function(e){if(_.NodeGuards.isAssignmentPatternNode(e)&&_.NodeGuards.isIdentifierNode(e.left))return r.identifierObfuscatingReplacer.storeLocalName(e.left.name,t),f.VisitorOption.Skip;_.NodeGuards.isIdentifierNode(e)&&r.identifierObfuscatingReplacer.storeLocalName(e.name,t)}})})}},{key:"addIdentifiersToIgnoredIdentifierNamesSet",value:function(e,t){e.forEach(function(e){_.NodeGuards.isIdentifierNode(e.key)&&t.add(e.key.name)})}},{key:"replaceFunctionParams",value:function(e,t){var r=this,o=new n,a={enter:function(e,n){if(_.NodeGuards.isObjectPatternNode(e)&&r.addIdentifiersToIgnoredIdentifierNamesSet(e.properties,o),n&&_.NodeGuards.isReplaceableIdentifierNode(e,n)&&!o.has(e.name)){var a=r.identifierObfuscatingReplacer.replace(e.name,t).name;e.name!==a&&(e.name=a,e.obfuscatedNode=!0)}}};e.params.forEach(function(e){return f.replace(e,a)}),f.replace(e.body,a)}}]),t}(g.AbstractNodeTransformer);N=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)),u.__param(1,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object])],N),t.FunctionTransformer=N},function(e,t,r){"use strict";var n=r(16),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=u.__importStar(r(17)),p=r(22),m=r(19),g=r(12),_=r(14),N=r(9),v=r(8),y=function(e){function t(e,r,i){var c;return a(this,t),(c=s(this,(t.__proto__||o(t)).call(this,r,i))).replaceableIdentifiers=new n,c.identifierObfuscatingReplacer=e(p.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer),c}return c(t,e),i(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case g.TransformationStage.Obfuscating:return{enter:function(e,r){if(r&&N.NodeGuards.isFunctionDeclarationNode(e))return t.transformNode(e,r)}};default:return null}}},{key:"transformNode",value:function(e,t){var r=this.nodeIdentifier++,n=v.NodeUtils.getBlockScopesOfNode(e)[0],o=n.type===m.NodeType.Program;return!this.options.renameGlobals&&o?e:(this.storeFunctionName(e,o,r),this.replaceableIdentifiers.has(n)?this.replaceScopeCachedIdentifiers(e,n,r):this.replaceScopeIdentifiers(n,r),e)}},{key:"storeFunctionName",value:function(e,t,r){t?this.identifierObfuscatingReplacer.storeGlobalName(e.id.name,r):this.identifierObfuscatingReplacer.storeLocalName(e.id.name,r)}},{key:"replaceScopeCachedIdentifiers",value:function(e,t,r){var n=this.replaceableIdentifiers.get(t);if(n){var o=n.get(e.id.name);if(o)for(var a=o.length,i=0;i=0);return"a".concat(n(r))},r=t(e);return c.validateMangledName(r)||(r=c.generateNewMangledName(r)),r}},{key:"validateMangledName",value:function(e){return!c.reservedNames.includes(e)}}]),t}(f.AbstractIdentifierNamesGenerator);p.initMangledNameCharacter="9",p.nameSequence="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),p.reservedNames=["byte","case","char","do","else","enum","eval","for","goto","if","in","int","let","long","new","null","this","true","try","var","void","with"],p=c=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(1,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Object,Object])],p),t.MangledIdentifierNamesGenerator=p},function(e,t,r){"use strict";var n=r(30),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u,d=r(4),l=r(0),f=r(3),p=r(58),m=r(27),g=u=function(e){function t(e,r){var i;return a(this,t),(i=s(this,(t.__proto__||o(t)).call(this,e,r))).randomVariableNameSet=new n,i}return c(t,e),i(t,[{key:"generate",value:function(){var e=this.randomGenerator.getRandomInteger(1e4,99999999),t=m.Utils.decToHex(e).substr(0,u.baseIdentifierNameLength),r="_".concat(m.Utils.hexadecimalPrefix).concat(t);return this.randomVariableNameSet.has(r)?this.generate():(this.randomVariableNameSet.add(r),r)}},{key:"generateWithPrefix",value:function(){var e=this.generate();return"".concat(this.options.identifiersPrefix).concat(e).replace("__","_")}}]),t}(p.AbstractIdentifierNamesGenerator);g.baseIdentifierNameLength=6,g=u=d.__decorate([l.injectable(),d.__param(0,l.inject(f.ServiceIdentifiers.IRandomGenerator)),d.__param(1,l.inject(f.ServiceIdentifiers.IOptions)),d.__metadata("design:paramtypes",[Object,Object])],g),t.HexadecimalIdentifierNamesGenerator=g},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0),o=r(3),a=r(35),i=r(140),s=r(139);t.generatorsModule=new n.ContainerModule(function(e){e(o.ServiceIdentifiers.IIdentifierNamesGenerator).to(i.HexadecimalIdentifierNamesGenerator).inSingletonScope().whenTargetNamed(a.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator),e(o.ServiceIdentifiers.IIdentifierNamesGenerator).to(s.MangledIdentifierNamesGenerator).inSingletonScope().whenTargetNamed(a.IdentifierNamesGenerator.MangledIdentifierNamesGenerator),e(o.ServiceIdentifiers.Factory__IIdentifierNamesGenerator).toFactory(function(e){var t=null;return function(r){if(t)return t;var n;switch(r.identifierNamesGenerator){case a.IdentifierNamesGenerator.MangledIdentifierNamesGenerator:n=e.container.getNamed(o.ServiceIdentifiers.IIdentifierNamesGenerator,a.IdentifierNamesGenerator.MangledIdentifierNamesGenerator);break;case a.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator:default:n=e.container.getNamed(o.ServiceIdentifiers.IIdentifierNamesGenerator,a.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator)}return t=n,n}})})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(0);t.finalizingTransformersModule=new n.ContainerModule(function(e){})},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=r(10),f=r(13),p=r(15),m=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"initialize",value:function(e){this.literalValue=e}},{key:"getNodeStructure",value:function(){return[p.Nodes.getExpressionStatementNode(p.Nodes.getLiteralNode(this.literalValue))]}}]),t}(f.AbstractCustomNode);c.__decorate([l.initializable(),c.__metadata("design:type",String)],m.prototype,"literalValue",void 0),m=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),c.__param(1,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(2,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Function,Object,Object])],m),t.StringLiteralNode=m},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=r(10),f=r(13),p=r(15),m=r(8),g=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"initialize",value:function(e,t){this.controlFlowStorageName=e,this.controlFlowStorageKey=t}},{key:"getNodeStructure",value:function(){var e=p.Nodes.getExpressionStatementNode(p.Nodes.getMemberExpressionNode(p.Nodes.getIdentifierNode(this.controlFlowStorageName),p.Nodes.getIdentifierNode(this.controlFlowStorageKey)));return m.NodeUtils.parentize(e),[e]}}]),t}(f.AbstractCustomNode);c.__decorate([l.initializable(),c.__metadata("design:type",String)],g.prototype,"controlFlowStorageKey",void 0),c.__decorate([l.initializable(),c.__metadata("design:type",String)],g.prototype,"controlFlowStorageName",void 0),g=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),c.__param(1,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(2,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Function,Object,Object])],g),t.StringLiteralControlFlowStorageCallNode=g},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.False="![]",e.True="!![]",e.a='(false+"")[1]',e.b='([]["entries"]()+"")[2]',e.c='([]["fill"]+"")[3]',e.d='(undefined+"")[2]',e.e='(true+"")[3]',e.f='(false+"")[0]',e.g="(false+[0]+String)[20]",e.h='(+(101))["toString"](21)[1]',e.i="([false]+undefined)[10]",e.j='([]["entries"]()+"")[3]',e.k='(+(20))["toString"](21)',e.l='(false+"")[2]',e.m='(Number+"")[11]',e.n='(undefined+"")[1]',e.o='(true+[]["fill"])[10]',e.p='(+(211))["toString"](31)[1]',e.q='(+(212))["toString"](31)[1]',e.r='(true+"")[1]',e.s='(false+"")[3]',e.t='(true+"")[0]',e.u='(undefined+"")[0]',e.v='(+(31))["toString"](32)',e.w='(+(32))["toString"](33)',e.x='(+(101))["toString"](34)[1]',e.y="(NaN+[Infinity])[10]",e.z='(+(35))["toString"](36)',e.A="(+[]+Array)[10]",e.B="(+[]+Boolean)[10]",e.C='Function("return escape")()(("")["italics"]())[2]',e.D='Function("return escape")()([]["fill"])["slice"]("-1")',e.E='(RegExp+"")[12]',e.F="(+[]+Function)[10]",e.G='(false+Function("return Date")()())[30]',e.H="'H'",e.I='(Infinity+"")[0]',e.J="'J'",e.K="'K'",e.L="'L'",e.M='(true+Function("return Date")()())[30]',e.N='(NaN+"")[0]',e.O='(NaN+Function("return{}")())[11]',e.P="'P'",e.Q="'Q'",e.R="(+[]+RegExp)[10]",e.S="(+[]+String)[10]",e.T='(NaN+Function("return Date")()())[30]',e.U='(NaN+Function("return{}")()["toString"]["call"]())[11]',e.V="'V'",e.W="'W'",e.X="'X'",e.Y="'Y'",e.Z="'Z'"}(t.JSFuck||(t.JSFuck={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StringArrayRotateFunctionTemplate=function(){return"\n (function (array, {timesName}) {\n var {whileFunctionName} = function (times) {\n while (--times) {\n array['push'](array['shift']());\n }\n };\n \n {code}\n })({stringArrayName}, 0x{stringArrayRotateValue});\n "}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelfDefendingTemplate=function(e){return"\n var selfDefendingFunc = function () {\n var object = {\n data: {\n key: 'cookie',\n value: 'timeout'\n },\n setCookie: function (options, name, value, document) {\n document = document || {};\n \n var updatedCookie = name + \"=\" + value;\n\n var i = 0;\n \n for (var i = 0, len = options.length; i < len; i++) {\n var propName = options[i];\n \n updatedCookie += \"; \" + propName;\n \n var propValue = options[propName];\n \n options.push(propValue);\n len = options.length;\n \n if (propValue !== true) {\n updatedCookie += \"=\" + propValue;\n }\n }\n\n document['cookie'] = updatedCookie;\n },\n removeCookie: function(){return 'dev';},\n getCookie: function (document, name) {\n document = document || function (value) { return value };\n var matches = document(new RegExp(\n \"(?:^|; )\" + name.replace(/([.$?*|{}()[]\\/+^])/g, '\\$1') + \"=([^;]*)\"\n ));\n \n var func = function (param1, param2) {\n param1(++param2);\n };\n \n func({whileFunctionName}, {timesName});\n \n return matches ? decodeURIComponent(matches[1]) : undefined;\n }\n };\n \n var test1 = function () {\n var regExp = new RegExp('".concat(e.encode("\\w+ *\\(\\) *{\\w+ *['|\"].+['|\"];? *}",!0),"');\n \n return regExp.test(object.removeCookie.toString());\n };\n \n object['updateCookie'] = test1;\n \n var cookie = '';\n var result = object['updateCookie']();\n \n if (!result) {\n object['setCookie'](['*'], 'counter', 1);\n } else if (result) {\n cookie = object['getCookie'](null, 'counter');\n } else {\n object['removeCookie']();\n }\n };\n \n selfDefendingFunc();\n ")}},function(e,t,r){"use strict";var n=r(11),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=u.__importDefault(r(18)),p=r(10),m=r(39),g=r(147),_=r(146),N=r(13),v=r(32),y=r(8),h=r(27),b=function(e){function t(e,r,n,i){var c;return a(this,t),(c=s(this,(t.__proto__||o(t)).call(this,e,r,i))).escapeSequenceEncoder=n,c}return c(t,e),i(t,[{key:"initialize",value:function(e,t){this.stringArrayName=e,this.stringArrayRotateValue=t}},{key:"getNodeStructure",value:function(){return y.NodeUtils.convertCodeToStructure(this.getTemplate())}},{key:"getTemplate",value:function(){var e=this.identifierNamesGenerator.generate(),t=this.identifierNamesGenerator.generate(),r="";return r=this.options.selfDefending?f.default(g.SelfDefendingTemplate(this.escapeSequenceEncoder),{timesName:e,whileFunctionName:t}):"".concat(t,"(++").concat(e,")"),v.JavaScriptObfuscator.obfuscate(f.default(_.StringArrayRotateFunctionTemplate(),{code:r,timesName:e,stringArrayName:this.stringArrayName,stringArrayRotateValue:h.Utils.decToHex(this.stringArrayRotateValue),whileFunctionName:t}),n({},m.NO_ADDITIONAL_NODES_PRESET,{identifierNamesGenerator:this.options.identifierNamesGenerator,seed:this.options.seed})).getObfuscatedCode()}}]),t}(N.AbstractCustomNode);u.__decorate([p.initializable(),u.__metadata("design:type",String)],b.prototype,"stringArrayName",void 0),u.__decorate([p.initializable(),u.__metadata("design:type",Number)],b.prototype,"stringArrayRotateValue",void 0),b=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),u.__param(1,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IEscapeSequenceEncoder)),u.__param(3,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object,Object])],b),t.StringArrayRotateFunctionNode=b},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StringArrayTemplate=function(){return"\n var {stringArrayName} = [{stringArray}];\n "}},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(44),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=u.__importDefault(r(18)),p=r(10),m=r(149),g=r(13),_=r(8),N=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return c(t,e),a(t,[{key:"initialize",value:function(e,t,r){this.stringArrayStorage=e,this.stringArrayName=t,this.stringArrayRotateValue=r}},{key:"getNode",value:function(){return this.stringArrayStorage.rotateArray(this.stringArrayRotateValue),s(t.prototype.__proto__||n(t.prototype),"getNode",this).call(this)}},{key:"getNodeStructure",value:function(){return _.NodeUtils.convertCodeToStructure(this.getTemplate())}},{key:"getTemplate",value:function(){return f.default(m.StringArrayTemplate(),{stringArrayName:this.stringArrayName,stringArray:this.stringArrayStorage.toString()})}}]),t}(g.AbstractCustomNode);u.__decorate([p.initializable(),u.__metadata("design:type",Object)],N.prototype,"stringArrayStorage",void 0),u.__decorate([p.initializable(),u.__metadata("design:type",String)],N.prototype,"stringArrayName",void 0),u.__decorate([p.initializable(),u.__metadata("design:type",Number)],N.prototype,"stringArrayRotateValue",void 0),N=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),u.__param(1,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object])],N),t.StringArrayNode=N},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StringArrayRc4DecodeNodeTemplate=function(e){var t=e.getRandomString(6),r=e.getRandomString(6),n=e.getRandomString(6),o=e.getRandomString(6);return"\n if ({stringArrayCallsWrapperName}.".concat(t," === undefined) {\n {atobPolyfill}\n \n {rc4Polyfill}\n {stringArrayCallsWrapperName}.").concat(r," = rc4;\n \n {stringArrayCallsWrapperName}.").concat(n," = {};\n \n {stringArrayCallsWrapperName}.").concat(t," = true;\n }\n \n var cachedValue = {stringArrayCallsWrapperName}.").concat(n,"[index];\n\n if (cachedValue === undefined) {\n if ({stringArrayCallsWrapperName}.").concat(o," === undefined) {\n {selfDefendingCode}\n \n {stringArrayCallsWrapperName}.").concat(o," = true;\n }\n \n value = {stringArrayCallsWrapperName}.").concat(r,"(value, key);\n {stringArrayCallsWrapperName}.").concat(n,"[index] = value;\n } else {\n value = cachedValue;\n }\n ")}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StringArrayCallsWrapperTemplate=function(){return"\n var {stringArrayCallsWrapperName} = function (index, key) {\n index = index - 0;\n \n var value = {stringArrayName}[index];\n \n {decodeNodeTemplate}\n \n return value;\n };\n "}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StringArrayBase64DecodeNodeTemplate=function(e){var t=e.getRandomString(6),r=e.getRandomString(6),n=e.getRandomString(6);return"\n if ({stringArrayCallsWrapperName}.".concat(t," === undefined) {\n {atobPolyfill}\n \n {stringArrayCallsWrapperName}.").concat(r," = function (str) {\n var string = atob(str);\n var newStringChars = [];\n \n for (var i = 0, length = string.length; i < length; i++) {\n newStringChars += '%' + ('00' + string.charCodeAt(i).toString(16)).slice(-2);\n }\n \n return decodeURIComponent(newStringChars);\n };\n \n {stringArrayCallsWrapperName}.").concat(n," = {};\n \n {stringArrayCallsWrapperName}.").concat(t," = true;\n }\n \n var cachedValue = {stringArrayCallsWrapperName}.").concat(n,"[index];\n \n if (cachedValue === undefined) {\n {selfDefendingCode}\n \n value = {stringArrayCallsWrapperName}.").concat(r,"(value);\n {stringArrayCallsWrapperName}.").concat(n,"[index] = value;\n } else {\n value = cachedValue;\n }\n ")}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelfDefendingTemplate=function(e,t){var r=e.getRandomString(6),n=e.getRandomString(6),o=e.getRandomString(6),a=e.getRandomString(6),i=e.getRandomString(6),s=e.getRandomString(6),c=e.getRandomString(6),u=e.getRandomString(6),d=e.getRandomString(6);return"\n var StatesClass = function (".concat(r,") {\n this.").concat(r," = ").concat(r,";\n this.").concat(n," = [1, 0, 0];\n this.").concat(o," = function(){return 'newState';};\n this.").concat(a," = '").concat(t.encode("\\w+ *\\(\\) *{\\w+ *",!0),"';\n this.").concat(i," = '").concat(t.encode("['|\"].+['|\"];? *}",!0),"';\n };\n \n StatesClass.prototype.").concat(s," = function () {\n var regExp = new RegExp(this.").concat(a," + this.").concat(i,");\n var expression = regExp.test(this.").concat(o,".toString())\n ? --this.").concat(n,"[1]\n : --this.").concat(n,"[0];\n \n return this.").concat(c,"(expression);\n };\n \n StatesClass.prototype.").concat(c," = function (").concat(d,") {\n if (!Boolean(~").concat(d,")) {\n return ").concat(d,";\n }\n \n return this.").concat(u,"(this.").concat(r,");\n };\n\n StatesClass.prototype.").concat(u," = function (").concat(r,") {\n for (var i = 0, len = this.").concat(n,".length; i < len; i++) {\n this.").concat(n,".push(Math.round(Math.random()));\n len = this.").concat(n,".length;\n }\n \n return ").concat(r,"(this.").concat(n,"[0]);\n };\n\n new StatesClass({stringArrayCallsWrapperName}).").concat(s,"();\n ")}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Rc4Template=function(){return"\n var rc4 = function (str, key) {\n var s = [], j = 0, x, res = '', newStr = '';\n \n str = atob(str);\n \n for (var k = 0, length = str.length; k < length; k++) {\n newStr += '%' + ('00' + str.charCodeAt(k).toString(16)).slice(-2);\n }\n \n str = decodeURIComponent(newStr);\n \t \n\t for (var i = 0; i < 256; i++) {\n s[i] = i;\n }\n \n for (i = 0; i < 256; i++) {\n j = (j + s[i] + key.charCodeAt(i % key.length)) % 256;\n x = s[i];\n s[i] = s[j];\n s[j] = x;\n }\n \n i = 0;\n j = 0;\n \n for (var y = 0; y < str.length; y++) {\n i = (i + 1) % 256;\n j = (j + s[i]) % 256;\n x = s[i];\n s[i] = s[j];\n s[j] = x;\n res += String.fromCharCode(str.charCodeAt(y) ^ s[(s[i] + s[j]) % 256]);\n }\n \n return res;\n }\n "}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AtobTemplate=function(){return"\n (function () {\n {globalVariableTemplate}\n \n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n that.atob || (\n that.atob = function(input) {\n var str = String(input).replace(/=+$/, '');\n for (\n var bc = 0, bs, buffer, idx = 0, output = '';\n buffer = str.charAt(idx++);\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n buffer = chars.indexOf(buffer);\n }\n return output;\n });\n })();\n "}},function(e,t,r){"use strict";var n=r(11),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=u.__importDefault(r(18)),p=r(20),m=r(33),g=r(10),_=r(39),N=r(156),v=r(45),y=r(155),h=r(154),b=r(153),S=r(152),I=r(151),C=r(13),O=r(32),j=r(8),F=function(e){function t(e,r,n,i){var c;return a(this,t),(c=s(this,(t.__proto__||o(t)).call(this,e,r,i))).escapeSequenceEncoder=n,c}return c(t,e),i(t,[{key:"initialize",value:function(e,t){this.stringArrayName=e,this.stringArrayCallsWrapperName=t}},{key:"getNodeStructure",value:function(){return j.NodeUtils.convertCodeToStructure(this.getTemplate())}},{key:"getTemplate",value:function(){var e=this.getDecodeStringArrayTemplate();return O.JavaScriptObfuscator.obfuscate(f.default(S.StringArrayCallsWrapperTemplate(),{decodeNodeTemplate:e,stringArrayCallsWrapperName:this.stringArrayCallsWrapperName,stringArrayName:this.stringArrayName}),n({},_.NO_ADDITIONAL_NODES_PRESET,{identifierNamesGenerator:this.options.identifierNamesGenerator,seed:this.options.seed})).getObfuscatedCode()}},{key:"getDecodeStringArrayTemplate",value:function(){var e=this.options.target!==p.ObfuscationTarget.Extension?this.getGlobalVariableTemplate():v.GlobalVariableNoEvalTemplate(),t=f.default(N.AtobTemplate(),{globalVariableTemplate:e}),r="",n="";switch(this.options.selfDefending&&(n=f.default(h.SelfDefendingTemplate(this.randomGenerator,this.escapeSequenceEncoder),{stringArrayCallsWrapperName:this.stringArrayCallsWrapperName,stringArrayName:this.stringArrayName})),this.options.stringArrayEncoding){case m.StringArrayEncoding.Rc4:r=f.default(I.StringArrayRc4DecodeNodeTemplate(this.randomGenerator),{atobPolyfill:t,rc4Polyfill:y.Rc4Template(),selfDefendingCode:n,stringArrayCallsWrapperName:this.stringArrayCallsWrapperName});break;case m.StringArrayEncoding.Base64:r=f.default(b.StringArrayBase64DecodeNodeTemplate(this.randomGenerator),{atobPolyfill:t,selfDefendingCode:n,stringArrayCallsWrapperName:this.stringArrayCallsWrapperName})}return r}}]),t}(C.AbstractCustomNode);u.__decorate([g.initializable(),u.__metadata("design:type",String)],F.prototype,"stringArrayName",void 0),u.__decorate([g.initializable(),u.__metadata("design:type",String)],F.prototype,"stringArrayCallsWrapperName",void 0),F=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),u.__param(1,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IEscapeSequenceEncoder)),u.__param(3,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object,Object])],F),t.StringArrayCallsWrapper=F},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelfDefendingTemplate=function(e){return"\n var {selfDefendingFunctionName} = {singleNodeCallControllerFunctionName}(this, function () {\n var func1 = function(){return 'dev';},\n func2 = function () {\n return 'window';\n };\n \n var test1 = function () {\n var regExp = new RegExp('".concat(e.encode("\\w+ *\\(\\) *{\\w+ *['|\"].+['|\"];? *}",!0),"');\n \n return !regExp.test(func1.toString());\n };\n \n var test2 = function () {\n var regExp = new RegExp('").concat(e.encode("(\\\\[x|u](\\w){2,4})+",!0),"');\n \n return regExp.test(func2.toString());\n };\n \n var recursiveFunc1 = function (string) {\n var i = ~-1 >> 1 + 255 % 0;\n \n if (string.indexOf('i' === i)) {\n recursiveFunc2(string)\n }\n };\n \n var recursiveFunc2 = function (string) {\n var i = ~-4 >> 1 + 255 % 0;\n \n if (string.indexOf((true+\"\")[3]) !== i) {\n recursiveFunc1(string)\n }\n };\n \n if (!test1()) {\n if (!test2()) {\n recursiveFunc1('indеxOf');\n } else {\n recursiveFunc1('indexOf');\n }\n } else {\n recursiveFunc1('indеxOf');\n }\n })\n \n {selfDefendingFunctionName}();\n ")}},function(e,t,r){"use strict";var n=r(11),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=u.__importDefault(r(18)),p=r(10),m=r(39),g=r(158),_=r(13),N=r(32),v=r(8),y=function(e){function t(e,r,n,i){var c;return a(this,t),(c=s(this,(t.__proto__||o(t)).call(this,e,r,i))).escapeSequenceEncoder=n,c}return c(t,e),i(t,[{key:"initialize",value:function(e){this.callsControllerFunctionName=e}},{key:"getNodeStructure",value:function(){return v.NodeUtils.convertCodeToStructure(this.getTemplate())}},{key:"getTemplate",value:function(){return N.JavaScriptObfuscator.obfuscate(f.default(g.SelfDefendingTemplate(this.escapeSequenceEncoder),{selfDefendingFunctionName:this.identifierNamesGenerator.generate(),singleNodeCallControllerFunctionName:this.callsControllerFunctionName}),n({},m.NO_ADDITIONAL_NODES_PRESET,{identifierNamesGenerator:this.options.identifierNamesGenerator,seed:this.options.seed,unicodeEscapeSequence:!0})).getObfuscatedCode()}}]),t}(_.AbstractCustomNode);u.__decorate([p.initializable(),u.__metadata("design:type",String)],y.prototype,"callsControllerFunctionName",void 0),y=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),u.__param(1,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IEscapeSequenceEncoder)),u.__param(3,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object,Object])],y),t.SelfDefendingUnicodeNode=y},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SingleNodeCallControllerTemplate=function(){return"\n var {singleNodeCallControllerFunctionName} = (function(){\n var firstCall = true;\n \n return function (context, fn){\n var rfn = firstCall ? function(){\n if(fn){\n var res = fn.apply(context, arguments);\n fn = null;\n return res;\n }\n } : function(){}\n \n firstCall = false;\n \n return rfn;\n }\n })();\n "}},function(e,t,r){"use strict";var n=r(11),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=u.__importDefault(r(18)),p=r(23),m=r(10),g=r(160),_=r(39),N=r(13),v=r(32),y=r(8),h=function(e){function t(e,r,n){return a(this,t),s(this,(t.__proto__||o(t)).call(this,e,r,n))}return c(t,e),i(t,[{key:"initialize",value:function(e,t){this.appendEvent=e,this.callsControllerFunctionName=t}},{key:"getNodeStructure",value:function(){return y.NodeUtils.convertCodeToStructure(this.getTemplate())}},{key:"getTemplate",value:function(){return this.appendEvent===p.ObfuscationEvent.AfterObfuscation?v.JavaScriptObfuscator.obfuscate(f.default(g.SingleNodeCallControllerTemplate(),{singleNodeCallControllerFunctionName:this.callsControllerFunctionName}),n({},_.NO_ADDITIONAL_NODES_PRESET,{identifierNamesGenerator:this.options.identifierNamesGenerator,seed:this.options.seed})).getObfuscatedCode():f.default(g.SingleNodeCallControllerTemplate(),{singleNodeCallControllerFunctionName:this.callsControllerFunctionName})}}]),t}(N.AbstractCustomNode);u.__decorate([m.initializable(),u.__metadata("design:type",String)],h.prototype,"callsControllerFunctionName",void 0),u.__decorate([m.initializable(),u.__metadata("design:type",String)],h.prototype,"appendEvent",void 0),h=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),u.__param(1,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object])],h),t.NodeCallsControllerFunctionNode=h},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=r(10),f=r(13),p=r(15),m=r(8),g=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"initialize",value:function(e){this.operator=e}},{key:"getNodeStructure",value:function(){var e=p.Nodes.getExpressionStatementNode(p.Nodes.getFunctionExpressionNode([p.Nodes.getIdentifierNode("x"),p.Nodes.getIdentifierNode("y")],p.Nodes.getBlockStatementNode([p.Nodes.getReturnStatementNode(p.Nodes.getLogicalExpressionNode(this.operator,p.Nodes.getIdentifierNode("x"),p.Nodes.getIdentifierNode("y")))])));return m.NodeUtils.parentize(e),[e]}}]),t}(f.AbstractCustomNode);c.__decorate([l.initializable(),c.__metadata("design:type",String)],g.prototype,"operator",void 0),g=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),c.__param(1,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(2,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Function,Object,Object])],g),t.LogicalExpressionFunctionNode=g},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=r(10),f=r(13),p=r(15),m=r(8),g=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"initialize",value:function(e,t,r,n){this.controlFlowStorageName=e,this.controlFlowStorageKey=t,this.leftValue=r,this.rightValue=n}},{key:"getNodeStructure",value:function(){var e=p.Nodes.getExpressionStatementNode(p.Nodes.getCallExpressionNode(p.Nodes.getMemberExpressionNode(p.Nodes.getIdentifierNode(this.controlFlowStorageName),p.Nodes.getIdentifierNode(this.controlFlowStorageKey)),[this.leftValue,this.rightValue]));return m.NodeUtils.parentize(e),[e]}}]),t}(f.AbstractCustomNode);c.__decorate([l.initializable(),c.__metadata("design:type",String)],g.prototype,"controlFlowStorageKey",void 0),c.__decorate([l.initializable(),c.__metadata("design:type",String)],g.prototype,"controlFlowStorageName",void 0),c.__decorate([l.initializable(),c.__metadata("design:type",Object)],g.prototype,"leftValue",void 0),c.__decorate([l.initializable(),c.__metadata("design:type",Object)],g.prototype,"rightValue",void 0),g=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),c.__param(1,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(2,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Function,Object,Object])],g),t.ExpressionWithOperatorControlFlowStorageCallNode=g},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DomainLockNodeTemplate=function(){return'\n var {domainLockFunctionName} = {singleNodeCallControllerFunctionName}(this, function () {\n \n {globalVariableTemplate}\n \n var func = function () {\n return {\n key: \'item\',\n value: \'attribute\',\n getAttribute: function () {\n for (var i = 0; i < 1000; i--) {\n var isPositive = i > 0;\n \n switch (isPositive) {\n case true:\n return this.item + \'_\' + this.value + \'_\' + i;\n default:\n this.item + \'_\' + this.value;\n }\n }\n }()\n };\n };\n \n var regExp = new RegExp("[{diff}]", "g");\n var domains = "{domains}".replace(regExp, "").split(";");\n var document;\n var domain;\n \n for (var d in that) {\n if (d.length == 8 && d.charCodeAt(7) == 116 && d.charCodeAt(5) == 101 && d.charCodeAt(3) == 117 && d.charCodeAt(0) == 100) {\n document = d;\n \n break;\n }\n }\n\n for (var d1 in that[document]) {\n if (d1.length == 6 && d1.charCodeAt(5) == 110 && d1.charCodeAt(0) == 100) {\n domain = d1;\n \n break;\n }\n }\n \n if ((!document && !domain) || (!that[document] && !that[document][domain])) {\n return;\n }\n \n var currentDomain = that[document][domain];\n\n var ok = false;\n \n for (var i = 0; i < domains.length; i++) {\n var domain = domains[i];\n var position = currentDomain.length - domain.length;\n var lastIndex = currentDomain.indexOf(domain, position);\n var endsWith = lastIndex !== -1 && lastIndex === position;\n \n if (endsWith) {\n if (currentDomain.length == domain.length || domain.indexOf(".") === 0) {\n ok = true;\n }\n \n break;\n }\n }\n \n if (!ok) {\n data;\n } else {\n return;\n }\n \n func();\n });\n\n {domainLockFunctionName}();\n '}},function(e,t,r){"use strict";var n=r(29),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=u.__importDefault(r(18)),p=r(20),m=r(10),g=r(164),_=r(45),N=r(13),v=r(8),y=function(e){function t(e,r,n,i){var c;return a(this,t),(c=s(this,(t.__proto__||o(t)).call(this,e,r,i))).cryptUtils=n,c}return c(t,e),i(t,[{key:"initialize",value:function(e){this.callsControllerFunctionName=e}},{key:"getNodeStructure",value:function(){return v.NodeUtils.convertCodeToStructure(this.getTemplate())}},{key:"getTemplate",value:function(){var e=this.options.domainLock.join(";"),t=this.cryptUtils.hideString(e,3*e.length),r=n(t,2),o=r[0],a=r[1],i=this.options.target!==p.ObfuscationTarget.Extension?this.getGlobalVariableTemplate():_.GlobalVariableNoEvalTemplate();return f.default(g.DomainLockNodeTemplate(),{domainLockFunctionName:this.identifierNamesGenerator.generate(),diff:a,domains:o,globalVariableTemplate:i,singleNodeCallControllerFunctionName:this.callsControllerFunctionName})}}]),t}(N.AbstractCustomNode);u.__decorate([m.initializable(),u.__metadata("design:type",String)],y.prototype,"callsControllerFunctionName",void 0),y=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),u.__param(1,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.ICryptUtils)),u.__param(3,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object,Object])],y),t.DomainLockNode=y},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DebugProtectionFunctionTemplate=function(){return"\n function {debugProtectionFunctionName} (ret) {\n function debuggerProtection (counter) {\n \n {debuggerTemplate}\n \n debuggerProtection(++counter);\n }\n \n try {\n if (ret) {\n return debuggerProtection;\n } else {\n debuggerProtection(0);\n }\n } catch (y) {}\n }\n "}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DebuggerTemplateNoEval=function(){return"\n if (typeof counter === 'string') {\n var func = function () {\n while (true) {}\n };\n \n return func();\n } else {\n if (('' + counter / counter)['length'] !== 1 || counter % 20 === 0) {\n debugger;\n } else {\n debugger;\n }\n \n }\n "}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DebuggerTemplate=function(){return"\n if (typeof counter === 'string') {\n return (function (arg) {}.constructor('while (true) {}').apply('counter'));\n } else {\n if (('' + counter / counter)['length'] !== 1 || counter % 20 === 0) {\n (function () {return true;}.constructor('debu' + 'gger').call('action'));\n } else {\n (function () {return false;}.constructor('debu' + 'gger').apply('stateObject'));\n }\n \n }\n "}},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=c.__importDefault(r(18)),f=r(20),p=r(10),m=r(168),g=r(167),_=r(166),N=r(13),v=r(8),y=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"initialize",value:function(e){this.debugProtectionFunctionName=e}},{key:"getNodeStructure",value:function(){return v.NodeUtils.convertCodeToStructure(this.getTemplate())}},{key:"getTemplate",value:function(){var e=this.options.target!==f.ObfuscationTarget.Extension?m.DebuggerTemplate():g.DebuggerTemplateNoEval();return l.default(_.DebugProtectionFunctionTemplate(),{debuggerTemplate:e,debugProtectionFunctionName:this.debugProtectionFunctionName})}}]),t}(N.AbstractCustomNode);c.__decorate([p.initializable(),c.__metadata("design:type",String)],y.prototype,"debugProtectionFunctionName",void 0),y=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),c.__param(1,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(2,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Function,Object,Object])],y),t.DebugProtectionFunctionNode=y},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DebugProtectionFunctionIntervalTemplate=function(){return"\n setInterval(function () {\n {debugProtectionFunctionName}();\n }, 4000);\n "}},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=c.__importDefault(r(18)),f=r(10),p=r(170),m=r(13),g=r(8),_=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"initialize",value:function(e){this.debugProtectionFunctionName=e}},{key:"getNodeStructure",value:function(){return g.NodeUtils.convertCodeToStructure(this.getTemplate())}},{key:"getTemplate",value:function(){return l.default(p.DebugProtectionFunctionIntervalTemplate(),{debugProtectionFunctionName:this.debugProtectionFunctionName})}}]),t}(m.AbstractCustomNode);c.__decorate([f.initializable(),c.__metadata("design:type",String)],_.prototype,"debugProtectionFunctionName",void 0),_=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),c.__param(1,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(2,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Function,Object,Object])],_),t.DebugProtectionFunctionIntervalNode=_},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DebugProtectionFunctionCallTemplate=function(){return"\n (function () {\n {singleNodeCallControllerFunctionName}(this, function () {\n var regExp1 = new RegExp('function *\\\\( *\\\\)');\n var regExp2 = new RegExp('\\\\+\\\\+ *\\(?:_0x(?:[a-f0-9]){4,6}|(?:\\\\b|\\\\d)[a-z0-9]{1,4}(?:\\\\b|\\\\d)\\)', 'i');\n \n var result = {debugProtectionFunctionName}('init');\n \n if (!regExp1.test(result + 'chain') || !regExp2.test(result + 'input')) {\n result('0');\n } else {\n {debugProtectionFunctionName}();\n }\n })();\n })();\n "}},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=c.__importDefault(r(18)),f=r(10),p=r(172),m=r(13),g=r(8),_=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"initialize",value:function(e,t){this.debugProtectionFunctionName=e,this.callsControllerFunctionName=t}},{key:"getNodeStructure",value:function(){return g.NodeUtils.convertCodeToStructure(this.getTemplate())}},{key:"getTemplate",value:function(){return l.default(p.DebugProtectionFunctionCallTemplate(),{debugProtectionFunctionName:this.debugProtectionFunctionName,singleNodeCallControllerFunctionName:this.callsControllerFunctionName})}}]),t}(m.AbstractCustomNode);c.__decorate([f.initializable(),c.__metadata("design:type",String)],_.prototype,"callsControllerFunctionName",void 0),c.__decorate([f.initializable(),c.__metadata("design:type",String)],_.prototype,"debugProtectionFunctionName",void 0),_=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),c.__param(1,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(2,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Function,Object,Object])],_),t.DebugProtectionFunctionCallNode=_},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ConsoleOutputDisableExpressionTemplate=function(){return"\n var {consoleLogDisableFunctionName} = {singleNodeCallControllerFunctionName}(this, function () {\n var func = function () {};\n \n {globalVariableTemplate}\n \n if (!that.console) {\n that.console = (function (func){\n var c = {};\n \n c.log = func;\n c.warn = func;\n c.debug = func;\n c.info = func;\n c.error = func;\n c.exception = func;\n c.trace = func;\n \n return c;\n })(func);\n } else {\n that.console.log = func;\n that.console.warn = func;\n that.console.debug = func;\n that.console.info = func;\n that.console.error = func;\n that.console.exception = func;\n that.console.trace = func;\n }\n });\n \n {consoleLogDisableFunctionName}();\n "}},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=c.__importDefault(r(18)),f=r(20),p=r(174),m=r(45),g=r(10),_=r(13),N=r(8),v=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"initialize",value:function(e){this.callsControllerFunctionName=e}},{key:"getNodeStructure",value:function(){return N.NodeUtils.convertCodeToStructure(this.getTemplate())}},{key:"getTemplate",value:function(){var e=this.options.target!==f.ObfuscationTarget.Extension?this.getGlobalVariableTemplate():m.GlobalVariableNoEvalTemplate();return l.default(p.ConsoleOutputDisableExpressionTemplate(),{consoleLogDisableFunctionName:this.identifierNamesGenerator.generate(),globalVariableTemplate:e,singleNodeCallControllerFunctionName:this.callsControllerFunctionName})}}]),t}(_.AbstractCustomNode);c.__decorate([g.initializable(),c.__metadata("design:type",String)],v.prototype,"callsControllerFunctionName",void 0),v=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),c.__param(1,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(2,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Function,Object,Object])],v),t.ConsoleOutputDisableExpressionNode=v},function(e,t,r){"use strict";var n=r(29),o=r(60),a=r(7),i=r(1),s=r(2),c=r(6),u=r(5);Object.defineProperty(t,"__esModule",{value:!0});var d=r(4),l=r(0),f=r(3),p=r(10),m=r(13),g=r(9),_=r(15),N=r(8),v=function(e){function t(e,r,n){return i(this,t),c(this,(t.__proto__||a(t)).call(this,e,r,n))}return u(t,e),s(t,[{key:"initialize",value:function(e){this.controlFlowStorage=e}},{key:"getNodeStructure",value:function(){var e=o(this.controlFlowStorage.getStorage()).map(function(e){var t=n(e,2),r=t[0],o=t[1].getNode()[0];if(!g.NodeGuards.isExpressionStatementNode(o))throw new Error("Function node for control flow storage object should be passed inside the `ExpressionStatement` node!");return _.Nodes.getPropertyNode(_.Nodes.getIdentifierNode(r),o.expression)}),t=_.Nodes.getVariableDeclarationNode([_.Nodes.getVariableDeclaratorNode(_.Nodes.getIdentifierNode(this.controlFlowStorage.getStorageId()),_.Nodes.getObjectExpressionNode(e))]);return[t=N.NodeUtils.parentize(t)]}}]),t}(m.AbstractCustomNode);d.__decorate([p.initializable(),d.__metadata("design:type",Object)],v.prototype,"controlFlowStorage",void 0),v=d.__decorate([l.injectable(),d.__param(0,l.inject(f.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),d.__param(1,l.inject(f.ServiceIdentifiers.IRandomGenerator)),d.__param(2,l.inject(f.ServiceIdentifiers.IOptions)),d.__metadata("design:paramtypes",[Function,Object,Object])],v),t.ControlFlowStorageNode=v},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=r(10),f=r(13),p=r(15),m=r(8),g=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"initialize",value:function(e){this.expressionArguments=e}},{key:"getNodeStructure",value:function(){for(var e=p.Nodes.getIdentifierNode("callee"),t=[],r=this.expressionArguments.length,n=0;n.5,t=this.randomGenerator.getMathRandom()>.5,r=e?"===":"!==",o=this.randomGenerator.getRandomString(5),a=t?o:this.randomGenerator.getRandomString(5),i=e===t?[this.blockStatementNode,this.deadCodeInjectionRootAstHostNode]:[this.deadCodeInjectionRootAstHostNode,this.blockStatementNode],s=n(i,2),c=s[0],u=s[1],d=m.Nodes.getBlockStatementNode([m.Nodes.getIfStatementNode(m.Nodes.getBinaryExpressionNode(r,m.Nodes.getLiteralNode(o),m.Nodes.getLiteralNode(a)),c,u)]);return g.NodeUtils.parentize(d),[d]}}]),t}(p.AbstractCustomNode);u.__decorate([f.initializable(),u.__metadata("design:type",Object)],_.prototype,"blockStatementNode",void 0),u.__decorate([f.initializable(),u.__metadata("design:type",Object)],_.prototype,"deadCodeInjectionRootAstHostNode",void 0),_=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),u.__param(1,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object])],_),t.BlockStatementDeadCodeInjectionNode=_},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=r(10),f=r(13),p=r(9),m=r(15),g=r(8),_=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"initialize",value:function(e,t,r){this.blockStatementBody=e,this.shuffledKeys=t,this.originalKeysIndexesInShuffledArray=r}},{key:"getNodeStructure",value:function(){var e=this,t=this.randomGenerator.getRandomString(6),r=this.randomGenerator.getRandomString(6),n=m.Nodes.getBlockStatementNode([m.Nodes.getVariableDeclarationNode([m.Nodes.getVariableDeclaratorNode(m.Nodes.getIdentifierNode(t),m.Nodes.getCallExpressionNode(m.Nodes.getMemberExpressionNode(m.Nodes.getLiteralNode(this.originalKeysIndexesInShuffledArray.join("|")),m.Nodes.getIdentifierNode("split")),[m.Nodes.getLiteralNode("|")])),m.Nodes.getVariableDeclaratorNode(m.Nodes.getIdentifierNode(r),m.Nodes.getLiteralNode(0))]),m.Nodes.getWhileStatementNode(m.Nodes.getLiteralNode(!0),m.Nodes.getBlockStatementNode([m.Nodes.getSwitchStatementNode(m.Nodes.getMemberExpressionNode(m.Nodes.getIdentifierNode(t),m.Nodes.getUpdateExpressionNode("++",m.Nodes.getIdentifierNode(r)),!0),this.shuffledKeys.map(function(t,r){var n=e.blockStatementBody[t],o=[n];return p.NodeGuards.isReturnStatementNode(n)||o.push(m.Nodes.getContinueStatement()),m.Nodes.getSwitchCaseNode(m.Nodes.getLiteralNode(String(r)),o)})),m.Nodes.getBreakStatement()]))]);return g.NodeUtils.parentize(n),[n]}}]),t}(f.AbstractCustomNode);c.__decorate([l.initializable(),c.__metadata("design:type",Array)],_.prototype,"blockStatementBody",void 0),c.__decorate([l.initializable(),c.__metadata("design:type",Array)],_.prototype,"originalKeysIndexesInShuffledArray",void 0),c.__decorate([l.initializable(),c.__metadata("design:type",Array)],_.prototype,"shuffledKeys",void 0),_=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),c.__param(1,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(2,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Function,Object,Object])],_),t.BlockStatementControlFlowFlatteningNode=_},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalVariableTemplate2=function(){return"\n var getGlobal = function () {\n var globalObject;\n \n try {\n globalObject = Function('return (function() ' + '{}.constructor(\"return this\")( )' + ');')();\n } catch (e) {\n globalObject = window;\n }\n \n return globalObject;\n };\n var that = getGlobal();\n "}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalVariableTemplate1=function(){return"\n var that;\n \n try {\n var getGlobal = Function('return (function() ' + '{}.constructor(\"return this\")( )' + ');');\n \n that = getGlobal();\n } catch (e) {\n that = window;\n }\n "}},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=r(3),l=r(10),f=r(13),p=r(15),m=r(8),g=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"initialize",value:function(e){this.operator=e}},{key:"getNodeStructure",value:function(){var e=p.Nodes.getExpressionStatementNode(p.Nodes.getFunctionExpressionNode([p.Nodes.getIdentifierNode("x"),p.Nodes.getIdentifierNode("y")],p.Nodes.getBlockStatementNode([p.Nodes.getReturnStatementNode(p.Nodes.getBinaryExpressionNode(this.operator,p.Nodes.getIdentifierNode("x"),p.Nodes.getIdentifierNode("y")))])));return m.NodeUtils.parentize(e),[e]}}]),t}(f.AbstractCustomNode);c.__decorate([l.initializable(),c.__metadata("design:type",String)],g.prototype,"operator",void 0),g=c.__decorate([u.injectable(),c.__param(0,u.inject(d.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),c.__param(1,u.inject(d.ServiceIdentifiers.IRandomGenerator)),c.__param(2,u.inject(d.ServiceIdentifiers.IOptions)),c.__metadata("design:paramtypes",[Function,Object,Object])],g),t.BinaryExpressionFunctionNode=g},function(e,t,r){"use strict";var n=r(29),o=r(16),a=r(7),i=r(1),s=r(2),c=r(6),u=r(5);Object.defineProperty(t,"__esModule",{value:!0});var d=r(4),l=r(0),f=r(3),p=r(10),m=r(28),g=r(23),_=r(36),N=r(25),v=function(e){function t(e,r,n,o,s){var u;return i(this,t),(u=c(this,(t.__proto__||a(t)).call(this,n,o,s))).appendEvent=g.ObfuscationEvent.AfterObfuscation,u.customNodeFactory=e,u.stringArrayStorage=r,u}return u(t,e),s(t,[{key:"appendCustomNodes",value:function(e,t){this.stringArrayStorage.getLength()&&(this.appendCustomNodeIfExist(m.CustomNode.StringArrayNode,function(t){N.NodeAppender.prependNode(e,t.getNode())}),this.appendCustomNodeIfExist(m.CustomNode.StringArrayCallsWrapper,function(t){N.NodeAppender.insertNodeAtIndex(e,t.getNode(),1)}),this.appendCustomNodeIfExist(m.CustomNode.StringArrayRotateFunctionNode,function(t){N.NodeAppender.insertNodeAtIndex(e,t.getNode(),1)}))}},{key:"initialize",value:function(){if(this.customNodes=new o,this.options.stringArray){var e,t=this.customNodeFactory(m.CustomNode.StringArrayNode),r=this.customNodeFactory(m.CustomNode.StringArrayCallsWrapper),a=this.customNodeFactory(m.CustomNode.StringArrayRotateFunctionNode),i=this.stringArrayStorage.getStorageId().split("|"),s=n(i,2),c=s[0],u=s[1];e=this.options.rotateStringArray?this.randomGenerator.getRandomInteger(100,500):0,t.initialize(this.stringArrayStorage,c,e),r.initialize(c,u),a.initialize(c,e),this.customNodes.set(m.CustomNode.StringArrayNode,t),this.customNodes.set(m.CustomNode.StringArrayCallsWrapper,r),this.options.rotateStringArray&&this.customNodes.set(m.CustomNode.StringArrayRotateFunctionNode,a)}}}]),t}(_.AbstractCustomNodeGroup);d.__decorate([p.initializable(),d.__metadata("design:type",o)],v.prototype,"customNodes",void 0),v=d.__decorate([l.injectable(),d.__param(0,l.inject(f.ServiceIdentifiers.Factory__ICustomNode)),d.__param(1,l.inject(f.ServiceIdentifiers.TStringArrayStorage)),d.__param(2,l.inject(f.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),d.__param(3,l.inject(f.ServiceIdentifiers.IRandomGenerator)),d.__param(4,l.inject(f.ServiceIdentifiers.IOptions)),d.__metadata("design:paramtypes",[Function,Object,Function,Object,Object])],v),t.StringArrayCustomNodeGroup=v},function(e,t,r){"use strict";var n=r(16),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=r(10),p=r(28),m=r(23),g=r(36),_=r(25),N=function(e){function t(e,r,n,i){var c;return a(this,t),(c=s(this,(t.__proto__||o(t)).call(this,r,n,i))).appendEvent=m.ObfuscationEvent.AfterObfuscation,c.customNodeFactory=e,c}return c(t,e),i(t,[{key:"appendCustomNodes",value:function(e,t){var r=this.getRandomStackTraceIndex(t.length);this.appendCustomNodeIfExist(p.CustomNode.SelfDefendingUnicodeNode,function(n){_.NodeAppender.appendNodeToOptimalBlockScope(t,e,n.getNode(),r)}),this.appendCustomNodeIfExist(p.CustomNode.NodeCallsControllerFunctionNode,function(n){var o;o=t.length?_.NodeAppender.getOptimalBlockScope(t,r,1):e,_.NodeAppender.prependNode(o,n.getNode())})}},{key:"initialize",value:function(){if(this.customNodes=new n,this.options.selfDefending){var e=this.identifierNamesGenerator.generate(),t=this.customNodeFactory(p.CustomNode.SelfDefendingUnicodeNode),r=this.customNodeFactory(p.CustomNode.NodeCallsControllerFunctionNode);t.initialize(e),r.initialize(this.appendEvent,e),this.customNodes.set(p.CustomNode.SelfDefendingUnicodeNode,t),this.customNodes.set(p.CustomNode.NodeCallsControllerFunctionNode,r)}}}]),t}(g.AbstractCustomNodeGroup);u.__decorate([f.initializable(),u.__metadata("design:type",n)],N.prototype,"customNodes",void 0),N=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__ICustomNode)),u.__param(1,d.inject(l.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(3,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Function,Object,Object])],N),t.SelfDefendingCustomNodeGroup=N},function(e,t,r){"use strict";var n=r(16),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=r(10),p=r(28),m=r(23),g=r(36),_=r(25),N=function(e){function t(e,r,n,i){var c;return a(this,t),(c=s(this,(t.__proto__||o(t)).call(this,r,n,i))).appendEvent=m.ObfuscationEvent.BeforeObfuscation,c.customNodeFactory=e,c}return c(t,e),i(t,[{key:"appendCustomNodes",value:function(e,t){var r=this.getRandomStackTraceIndex(t.length);this.appendCustomNodeIfExist(p.CustomNode.DomainLockNode,function(n){_.NodeAppender.appendNodeToOptimalBlockScope(t,e,n.getNode(),r)}),this.appendCustomNodeIfExist(p.CustomNode.NodeCallsControllerFunctionNode,function(n){var o;o=t.length?_.NodeAppender.getOptimalBlockScope(t,r,1):e,_.NodeAppender.prependNode(o,n.getNode())})}},{key:"initialize",value:function(){if(this.customNodes=new n,this.options.domainLock.length){var e=this.identifierNamesGenerator.generate(),t=this.customNodeFactory(p.CustomNode.DomainLockNode),r=this.customNodeFactory(p.CustomNode.NodeCallsControllerFunctionNode);t.initialize(e),r.initialize(this.appendEvent,e),this.customNodes.set(p.CustomNode.DomainLockNode,t),this.customNodes.set(p.CustomNode.NodeCallsControllerFunctionNode,r)}}}]),t}(g.AbstractCustomNodeGroup);u.__decorate([f.initializable(),u.__metadata("design:type",n)],N.prototype,"customNodes",void 0),N=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__ICustomNode)),u.__param(1,d.inject(l.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(3,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Function,Object,Object])],N),t.DomainLockCustomNodeGroup=N},function(e,t,r){"use strict";var n=r(16),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=r(10),p=r(28),m=r(23),g=r(36),_=r(25),N=function(e){function t(e,r,n,i){var c;return a(this,t),(c=s(this,(t.__proto__||o(t)).call(this,r,n,i))).appendEvent=m.ObfuscationEvent.BeforeObfuscation,c.customNodeFactory=e,c}return c(t,e),i(t,[{key:"appendCustomNodes",value:function(e,t){var r=this,n=this.getRandomStackTraceIndex(t.length);this.appendCustomNodeIfExist(p.CustomNode.DebugProtectionFunctionCallNode,function(r){_.NodeAppender.appendNodeToOptimalBlockScope(t,e,r.getNode(),n)}),this.appendCustomNodeIfExist(p.CustomNode.DebugProtectionFunctionNode,function(t){_.NodeAppender.appendNode(e,t.getNode())}),this.appendCustomNodeIfExist(p.CustomNode.DebugProtectionFunctionIntervalNode,function(t){var n=e.body.length,o=r.randomGenerator.getRandomInteger(0,n);_.NodeAppender.insertNodeAtIndex(e,t.getNode(),o)}),this.appendCustomNodeIfExist(p.CustomNode.NodeCallsControllerFunctionNode,function(r){var o;o=t.length?_.NodeAppender.getOptimalBlockScope(t,n,1):e,_.NodeAppender.prependNode(o,r.getNode())})}},{key:"initialize",value:function(){if(this.customNodes=new n,this.options.debugProtection){var e=this.identifierNamesGenerator.generate(),t=this.identifierNamesGenerator.generate(),r=this.customNodeFactory(p.CustomNode.DebugProtectionFunctionNode),o=this.customNodeFactory(p.CustomNode.DebugProtectionFunctionCallNode),a=this.customNodeFactory(p.CustomNode.DebugProtectionFunctionIntervalNode),i=this.customNodeFactory(p.CustomNode.NodeCallsControllerFunctionNode);r.initialize(e),o.initialize(e,t),a.initialize(e),i.initialize(this.appendEvent,t),this.customNodes.set(p.CustomNode.DebugProtectionFunctionNode,r),this.customNodes.set(p.CustomNode.DebugProtectionFunctionCallNode,o),this.options.debugProtectionInterval&&this.customNodes.set(p.CustomNode.DebugProtectionFunctionIntervalNode,a),this.customNodes.set(p.CustomNode.NodeCallsControllerFunctionNode,i)}}}]),t}(g.AbstractCustomNodeGroup);u.__decorate([f.initializable(),u.__metadata("design:type",n)],N.prototype,"customNodes",void 0),N=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__ICustomNode)),u.__param(1,d.inject(l.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(3,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Function,Object,Object])],N),t.DebugProtectionCustomNodeGroup=N},function(e,t,r){"use strict";var n=r(16),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=r(3),f=r(10),p=r(28),m=r(23),g=r(36),_=r(25),N=function(e){function t(e,r,n,i){var c;return a(this,t),(c=s(this,(t.__proto__||o(t)).call(this,r,n,i))).appendEvent=m.ObfuscationEvent.BeforeObfuscation,c.customNodeFactory=e,c}return c(t,e),i(t,[{key:"appendCustomNodes",value:function(e,t){var r=this.getRandomStackTraceIndex(t.length);this.appendCustomNodeIfExist(p.CustomNode.ConsoleOutputDisableExpressionNode,function(n){_.NodeAppender.appendNodeToOptimalBlockScope(t,e,n.getNode(),r)}),this.appendCustomNodeIfExist(p.CustomNode.NodeCallsControllerFunctionNode,function(n){var o;o=t.length?_.NodeAppender.getOptimalBlockScope(t,r,1):e,_.NodeAppender.prependNode(o,n.getNode())})}},{key:"initialize",value:function(){if(this.customNodes=new n,this.options.disableConsoleOutput){var e=this.identifierNamesGenerator.generate(),t=this.customNodeFactory(p.CustomNode.ConsoleOutputDisableExpressionNode),r=this.customNodeFactory(p.CustomNode.NodeCallsControllerFunctionNode);t.initialize(e),r.initialize(this.appendEvent,e),this.customNodes.set(p.CustomNode.ConsoleOutputDisableExpressionNode,t),this.customNodes.set(p.CustomNode.NodeCallsControllerFunctionNode,r)}}}]),t}(g.AbstractCustomNodeGroup);u.__decorate([f.initializable(),u.__metadata("design:type",n)],N.prototype,"customNodes",void 0),N=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__ICustomNode)),u.__param(1,d.inject(l.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(3,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Function,Object,Object])],N),t.ConsoleOutputCustomNodeGroup=N},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(26),o=r(0),a=r(3),i=r(21),s=r(28),c=r(61),u=r(62),d=r(188),l=r(187),f=r(186),p=r(185),m=r(184),g=r(183),_=r(180),N=r(179),v=r(178),y=r(177),h=r(176),b=r(175),S=r(173),I=r(171),C=r(169),O=r(165),j=r(163),F=r(162),k=r(161),T=r(159),x=r(157),w=r(150),E=r(148),G=r(144),R=r(143);t.customNodesModule=new o.ContainerModule(function(e){e(a.ServiceIdentifiers.ICustomNode).to(b.ConsoleOutputDisableExpressionNode).whenTargetNamed(s.CustomNode.ConsoleOutputDisableExpressionNode),e(a.ServiceIdentifiers.ICustomNode).to(S.DebugProtectionFunctionCallNode).whenTargetNamed(s.CustomNode.DebugProtectionFunctionCallNode),e(a.ServiceIdentifiers.ICustomNode).to(I.DebugProtectionFunctionIntervalNode).whenTargetNamed(s.CustomNode.DebugProtectionFunctionIntervalNode),e(a.ServiceIdentifiers.ICustomNode).to(C.DebugProtectionFunctionNode).whenTargetNamed(s.CustomNode.DebugProtectionFunctionNode),e(a.ServiceIdentifiers.ICustomNode).to(O.DomainLockNode).whenTargetNamed(s.CustomNode.DomainLockNode),e(a.ServiceIdentifiers.ICustomNode).to(k.NodeCallsControllerFunctionNode).whenTargetNamed(s.CustomNode.NodeCallsControllerFunctionNode),e(a.ServiceIdentifiers.ICustomNode).to(T.SelfDefendingUnicodeNode).whenTargetNamed(s.CustomNode.SelfDefendingUnicodeNode),e(a.ServiceIdentifiers.ICustomNode).to(x.StringArrayCallsWrapper).whenTargetNamed(s.CustomNode.StringArrayCallsWrapper),e(a.ServiceIdentifiers.ICustomNode).to(w.StringArrayNode).whenTargetNamed(s.CustomNode.StringArrayNode),e(a.ServiceIdentifiers.ICustomNode).to(E.StringArrayRotateFunctionNode).whenTargetNamed(s.CustomNode.StringArrayRotateFunctionNode),e(a.ServiceIdentifiers.Newable__ICustomNode).toConstructor(g.BinaryExpressionFunctionNode).whenTargetNamed(i.ControlFlowCustomNode.BinaryExpressionFunctionNode),e(a.ServiceIdentifiers.Newable__ICustomNode).toConstructor(_.BlockStatementControlFlowFlatteningNode).whenTargetNamed(i.ControlFlowCustomNode.BlockStatementControlFlowFlatteningNode),e(a.ServiceIdentifiers.Newable__ICustomNode).toConstructor(v.CallExpressionControlFlowStorageCallNode).whenTargetNamed(i.ControlFlowCustomNode.CallExpressionControlFlowStorageCallNode),e(a.ServiceIdentifiers.Newable__ICustomNode).toConstructor(y.CallExpressionFunctionNode).whenTargetNamed(i.ControlFlowCustomNode.CallExpressionFunctionNode),e(a.ServiceIdentifiers.Newable__ICustomNode).toConstructor(h.ControlFlowStorageNode).whenTargetNamed(i.ControlFlowCustomNode.ControlFlowStorageNode),e(a.ServiceIdentifiers.Newable__ICustomNode).toConstructor(j.ExpressionWithOperatorControlFlowStorageCallNode).whenTargetNamed(i.ControlFlowCustomNode.ExpressionWithOperatorControlFlowStorageCallNode),e(a.ServiceIdentifiers.Newable__ICustomNode).toConstructor(F.LogicalExpressionFunctionNode).whenTargetNamed(i.ControlFlowCustomNode.LogicalExpressionFunctionNode),e(a.ServiceIdentifiers.Newable__ICustomNode).toConstructor(R.StringLiteralNode).whenTargetNamed(i.ControlFlowCustomNode.StringLiteralNode),e(a.ServiceIdentifiers.Newable__ICustomNode).toConstructor(G.StringLiteralControlFlowStorageCallNode).whenTargetNamed(i.ControlFlowCustomNode.StringLiteralControlFlowStorageCallNode),e(a.ServiceIdentifiers.Newable__ICustomNode).toConstructor(N.BlockStatementDeadCodeInjectionNode).whenTargetNamed(u.DeadCodeInjectionCustomNode.BlockStatementDeadCodeInjectionNode),e(a.ServiceIdentifiers.ICustomNodeGroup).to(d.ConsoleOutputCustomNodeGroup).whenTargetNamed(c.CustomNodeGroup.ConsoleOutputCustomNodeGroup),e(a.ServiceIdentifiers.ICustomNodeGroup).to(l.DebugProtectionCustomNodeGroup).whenTargetNamed(c.CustomNodeGroup.DebugProtectionCustomNodeGroup),e(a.ServiceIdentifiers.ICustomNodeGroup).to(f.DomainLockCustomNodeGroup).whenTargetNamed(c.CustomNodeGroup.DomainLockCustomNodeGroup),e(a.ServiceIdentifiers.ICustomNodeGroup).to(p.SelfDefendingCustomNodeGroup).whenTargetNamed(c.CustomNodeGroup.SelfDefendingCustomNodeGroup),e(a.ServiceIdentifiers.ICustomNodeGroup).to(m.StringArrayCustomNodeGroup).whenTargetNamed(c.CustomNodeGroup.StringArrayCustomNodeGroup),e(a.ServiceIdentifiers.Factory__ICustomNode).toFactory(n.InversifyContainerFacade.getFactory(a.ServiceIdentifiers.ICustomNode)),e(a.ServiceIdentifiers.Factory__IControlFlowCustomNode).toFactory(n.InversifyContainerFacade.getConstructorFactory(a.ServiceIdentifiers.Newable__ICustomNode,a.ServiceIdentifiers.Factory__IIdentifierNamesGenerator,a.ServiceIdentifiers.IRandomGenerator,a.ServiceIdentifiers.IOptions)),e(a.ServiceIdentifiers.Factory__IDeadCodeInjectionCustomNode).toFactory(n.InversifyContainerFacade.getConstructorFactory(a.ServiceIdentifiers.Newable__ICustomNode,a.ServiceIdentifiers.Factory__IIdentifierNamesGenerator,a.ServiceIdentifiers.IRandomGenerator,a.ServiceIdentifiers.IOptions)),e(a.ServiceIdentifiers.Factory__ICustomNodeGroup).toFactory(n.InversifyContainerFacade.getFactory(a.ServiceIdentifiers.ICustomNodeGroup))})},function(e,t,r){"use strict";var n=r(24),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u,d=r(4),l=r(0),f=r(3),p=d.__importStar(r(17)),m=r(12),g=r(14),_=r(9),N=r(15),v=r(8),y=u=function(e){function t(e,r){return a(this,t),s(this,(t.__proto__||o(t)).call(this,e,r))}return c(t,e),i(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case m.TransformationStage.Converting:return{enter:function(e,r){if(r&&_.NodeGuards.isReturnStatementNode(e)&&null===e.argument)return t.fixEsprimaReturnStatementTemplateLiteralNode(e)},leave:function(e,r){if(r&&_.NodeGuards.isTemplateLiteralNode(e))return t.transformNode(e,r)}};default:return null}}},{key:"transformNode",value:function(e,t){var r=e.expressions,n=[];if(e.quasis.forEach(function(e){n.push(N.Nodes.getLiteralNode(e.value.cooked));var t=r.shift();t&&n.push(t)}),n=n.filter(function(e){return!(_.NodeGuards.isLiteralNode(e)&&""===e.value)}),u.isLiteralNodeWithStringValue(n[0])||u.isLiteralNodeWithStringValue(n[1])||n.unshift(N.Nodes.getLiteralNode("")),n.length>1){var o=N.Nodes.getBinaryExpressionNode("+",n.shift(),n.shift());return n.forEach(function(e){o=N.Nodes.getBinaryExpressionNode("+",o,e)}),o}return n[0]}},{key:"fixEsprimaReturnStatementTemplateLiteralNode",value:function(e){var t=v.NodeUtils.getScopeOfNode(e),r=_.NodeGuards.isSwitchCaseNode(t)?t.consequent:t.body,o=r.indexOf(e);if(o===r.length-2){var a=r[o+1];if(a&&_.NodeGuards.isExpressionStatementNode(a)){var i=!1;if(p.traverse(a,{enter:function(e,t){if(_.NodeGuards.isTemplateLiteralNode(e))return i=!0,p.VisitorOption.Break}}),i)return e.argument=a.expression,r.pop(),_.NodeGuards.isSwitchCaseNode(t)?t.consequent=n(r):t.body=n(r),e}}}}],[{key:"isLiteralNodeWithStringValue",value:function(e){return e&&_.NodeGuards.isLiteralNode(e)&&"string"==typeof e.value}}]),t}(g.AbstractNodeTransformer);y=u=d.__decorate([l.injectable(),d.__param(0,l.inject(f.ServiceIdentifiers.IRandomGenerator)),d.__param(1,l.inject(f.ServiceIdentifiers.IOptions)),d.__metadata("design:paramtypes",[Object,Object])],y),t.TemplateLiteralTransformer=y},function(e,t,r){"use strict";var n=r(29),o=r(16),a=r(7),i=r(1),s=r(2),c=r(6),u=r(5);Object.defineProperty(t,"__esModule",{value:!0});var d,l=r(4),f=r(0),p=r(3),m=r(12),g=r(14),_=r(25),N=r(9),v=r(15),y=r(8),h=d=function(e){function t(e,r){var n;return i(this,t),(n=c(this,(t.__proto__||a(t)).call(this,e,r))).cachedScopeNodesMap=new o,n}return u(t,e),s(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case m.TransformationStage.Converting:return{enter:function(e,r){if(t.options.transformObjectKeys&&r&&N.NodeGuards.isObjectExpressionNode(e)&&N.NodeGuards.isVariableDeclaratorNode(r))return t.transformNode(e,r)}};default:return null}}},{key:"transformNode",value:function(e,t){if(!N.NodeGuards.isIdentifierNode(t.id))return e;var r=y.NodeUtils.getScopeOfNode(t);return r&&N.NodeGuards.isNodeHasScope(r)?(this.cachedScopeNodesMap.set(t,r),this.transformObjectExpressionNode(e,t.id,t)):e}},{key:"extractPropertiesToExpressionStatements",value:function(e,t,r){for(var n=e.length,o=[],a=[],i=0;il.hostNodeSearchMinDepth&&t.splice(0,l.hostNodeSearchMinDepth),t.length>l.hostNodeSearchMaxDepth&&(t.length=l.hostNodeSearchMaxDepth),this.randomGenerator.getRandomGenerator().pickone(t))}},{key:"isVisitedFunctionNode",value:function(e){return(b.NodeGuards.isFunctionDeclarationNode(e)||b.NodeGuards.isFunctionExpressionNode(e)||b.NodeGuards.isArrowFunctionExpressionNode(e))&&this.visitedFunctionNodes.has(e)}},{key:"transformFunctionBody",value:function(e,t){var r=this;g.replace(e,{enter:function(e,o){if(e.ignoredNode)return g.VisitorOption.Skip;if(r.isVisitedFunctionNode(e)||!o)return g.VisitorOption.Skip;if(!l.controlFlowReplacersMap.has(e.type))return e;if(r.randomGenerator.getMathRandom()>r.options.controlFlowFlatteningThreshold)return e;var a=l.controlFlowReplacersMap.get(e.type);return void 0===a?e:n({},r.controlFlowReplacerFactory(a).replace(e,o,t),{parentNode:o})}})}}]),t}(h.AbstractNodeTransformer);C.controlFlowReplacersMap=new a([[v.NodeType.BinaryExpression,N.ControlFlowReplacer.BinaryExpressionControlFlowReplacer],[v.NodeType.CallExpression,N.ControlFlowReplacer.CallExpressionControlFlowReplacer],[v.NodeType.LogicalExpression,N.ControlFlowReplacer.LogicalExpressionControlFlowReplacer],[v.NodeType.Literal,N.ControlFlowReplacer.StringLiteralControlFlowReplacer]]),C.hostNodeSearchMinDepth=0,C.hostNodeSearchMaxDepth=2,C=l=f.__decorate([p.injectable(),f.__param(0,p.inject(m.ServiceIdentifiers.Factory__TControlFlowStorage)),f.__param(1,p.inject(m.ServiceIdentifiers.Factory__IControlFlowReplacer)),f.__param(2,p.inject(m.ServiceIdentifiers.Factory__IControlFlowCustomNode)),f.__param(3,p.inject(m.ServiceIdentifiers.IRandomGenerator)),f.__param(4,p.inject(m.ServiceIdentifiers.IOptions)),f.__metadata("design:paramtypes",[Function,Function,Function,Object,Object])],C),t.FunctionControlFlowTransformer=C},function(e,t,r){"use strict";var n=r(30),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u,d=r(4),l=r(0),f=r(3),p=d.__importStar(r(17)),m=r(62),g=r(31),_=r(19),N=r(12),v=r(14),y=r(9),h=r(15),b=r(8),S=u=function(e){function t(e,r,i,c){var u;return a(this,t),(u=s(this,(t.__proto__||o(t)).call(this,i,c))).deadCodeInjectionRootAstHostNodeSet=new n,u.collectedBlockStatements=[],u.collectedBlockStatementsTotalLength=0,u.deadCodeInjectionCustomNodeFactory=e,u.transformersRunner=r,u}return c(t,e),i(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case N.TransformationStage.DeadCodeInjection:return{enter:function(e,r){if(r&&y.NodeGuards.isProgramNode(e))return t.analyzeNode(e,r),e},leave:function(e,r){if(r&&y.NodeGuards.isBlockStatementNode(e))return t.transformNode(e,r)}};case N.TransformationStage.Finalizing:return this.deadCodeInjectionRootAstHostNodeSet.size?{enter:function(e,r){if(r&&t.isDeadCodeInjectionRootAstHostNode(e))return t.restoreNode(e,r)}}:null;default:return null}}},{key:"analyzeNode",value:function(e,t){var r=this;p.traverse(e,{enter:function(e){if(y.NodeGuards.isBlockStatementNode(e)){var t=b.NodeUtils.clone(e);u.isValidCollectedBlockStatementNode(t)&&(b.NodeUtils.parentizeNode(t,t),t=r.transformersRunner.transform(t,u.transformersToRenameBlockScopeIdentifiers,N.TransformationStage.Obfuscating),r.collectedBlockStatements.push(t))}}}),this.collectedBlockStatementsTotalLength=this.collectedBlockStatements.length}},{key:"transformNode",value:function(e,t){if(!this.collectedBlockStatements.length||this.collectedBlockStatementsTotalLengththis.options.deadCodeInjectionThreshold||!u.isValidWrappedBlockStatementNode(e))return e;var r=this.collectedBlockStatements.length-1,n=this.randomGenerator.getRandomInteger(0,r),o=this.collectedBlockStatements.splice(n,1)[0];return o===e?e:this.replaceBlockStatementNode(e,o,t)}},{key:"restoreNode",value:function(e,t){var r=e.body[0];if(!y.NodeGuards.isFunctionDeclarationNode(r))throw new Error("Wrong dead code injection root AST host node. Host node should contain `FunctionDeclaration` node");return r.body}},{key:"isDeadCodeInjectionRootAstHostNode",value:function(e){return y.NodeGuards.isBlockStatementNode(e)&&this.deadCodeInjectionRootAstHostNodeSet.has(e)}},{key:"replaceBlockStatementNode",value:function(e,t,r){var n=h.Nodes.getBlockStatementNode([h.Nodes.getFunctionDeclarationNode(u.deadCodeInjectionRootAstHostNodeName,[],t)]);this.deadCodeInjectionRootAstHostNodeSet.add(n);var o=this.deadCodeInjectionCustomNodeFactory(m.DeadCodeInjectionCustomNode.BlockStatementDeadCodeInjectionNode);o.initialize(e,n);var a=o.getNode()[0];return b.NodeUtils.parentizeNode(a,r),a}}],[{key:"isProhibitedNodeInsideCollectedBlockStatement",value:function(e){return y.NodeGuards.isBreakStatementNode(e)||y.NodeGuards.isContinueStatementNode(e)||y.NodeGuards.isAwaitExpressionNode(e)||y.NodeGuards.isSuperNode(e)}},{key:"isScopeHoistingFunctionDeclaration",value:function(e){if(!y.NodeGuards.isFunctionDeclarationNode(e))return!1;var t=b.NodeUtils.getScopeOfNode(e),r=y.NodeGuards.isSwitchCaseNode(t)?t.consequent:t.body,n=r.indexOf(e);if(0===n)return!1;var o=r.slice(0,n),a=h.Nodes.getBlockStatementNode(o),i=e.id.name,s=!1;return p.traverse(a,{enter:function(e){if(y.NodeGuards.isIdentifierNode(e)&&e.name===i)return s=!0,p.VisitorOption.Break}}),s}},{key:"isValidCollectedBlockStatementNode",value:function(e){if(!e.body.length)return!1;var t=0,r=!0;return p.traverse(e,{enter:function(e){if(y.NodeGuards.isBlockStatementNode(e)&&t++,t>u.maxNestedBlockStatementsCount||u.isProhibitedNodeInsideCollectedBlockStatement(e)||u.isScopeHoistingFunctionDeclaration(e))return r=!1,p.VisitorOption.Break}}),r}},{key:"isValidWrappedBlockStatementNode",value:function(e){if(!e.body.length)return!1;var t=!0;return p.traverse(e,{enter:function(e){if(u.isScopeHoistingFunctionDeclaration(e))return t=!1,p.VisitorOption.Break}}),!!t&&b.NodeUtils.getBlockScopesOfNode(e)[0].type!==_.NodeType.Program}}]),t}(v.AbstractNodeTransformer);S.deadCodeInjectionRootAstHostNodeName="deadCodeInjectionRootAstHostNode",S.maxNestedBlockStatementsCount=4,S.minCollectedBlockStatementsCount=5,S.transformersToRenameBlockScopeIdentifiers=[g.NodeTransformer.CatchClauseTransformer,g.NodeTransformer.ClassDeclarationTransformer,g.NodeTransformer.FunctionDeclarationTransformer,g.NodeTransformer.FunctionTransformer,g.NodeTransformer.LabeledStatementTransformer,g.NodeTransformer.VariableDeclarationTransformer],S=u=d.__decorate([l.injectable(),d.__param(0,l.inject(f.ServiceIdentifiers.Factory__IDeadCodeInjectionCustomNode)),d.__param(1,l.inject(f.ServiceIdentifiers.ITransformersRunner)),d.__param(2,l.inject(f.ServiceIdentifiers.IRandomGenerator)),d.__param(3,l.inject(f.ServiceIdentifiers.IOptions)),d.__metadata("design:paramtypes",[Function,Object,Object,Object])],S),t.DeadCodeInjectionTransformer=S},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c,u=r(4),d=r(0),l=r(3),f=r(21),p=r(46),m=r(9),g=c=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"replace",value:function(e,t,r){var n=e.callee;if(!m.NodeGuards.isIdentifierNode(n))return e;var o=String(e.arguments.length),a=this.controlFlowCustomNodeFactory(f.ControlFlowCustomNode.CallExpressionFunctionNode),i=e.arguments;a.initialize(i);var s=this.insertCustomNodeToControlFlowStorage(a,r,o,c.usingExistingIdentifierChance);return this.getControlFlowStorageCallNode(r.getStorageId(),s,n,i)}},{key:"getControlFlowStorageCallNode",value:function(e,t,r,n){var o=this.controlFlowCustomNodeFactory(f.ControlFlowCustomNode.CallExpressionControlFlowStorageCallNode);o.initialize(e,t,r,n);var a=o.getNode()[0];if(!a||!m.NodeGuards.isExpressionStatementNode(a))throw new Error("`controlFlowStorageCallCustomNode.getNode()[0]` should returns array with `ExpressionStatement` node");return a.expression}}]),t}(p.AbstractControlFlowReplacer);g.usingExistingIdentifierChance=.5,g=c=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__IControlFlowCustomNode)),u.__param(1,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object])],g),t.CallExpressionControlFlowReplacer=g},function(e,t){e.exports=require("@babel/runtime/core-js/reflect/has-metadata")},function(e,t){e.exports=require("@babel/runtime/core-js/reflect/define-metadata")},function(e,t){e.exports=require("@babel/runtime/core-js/object/get-own-property-names")},function(e,t){e.exports=require("@babel/runtime/core-js/reflect/get-metadata")},function(e,t){e.exports=require("@babel/runtime/core-js/object/get-own-property-descriptor")},function(e,t){e.exports=require("@babel/runtime/core-js/object/define-property")},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c,u=r(4),d=r(0),l=r(3),f=u.__importStar(r(17)),p=r(21),m=r(12),g=r(14),_=r(9),N=r(8),v=c=function(e){function t(e,r,a,s){var c;return o(this,t),(c=i(this,(t.__proto__||n(t)).call(this,a,s))).controlFlowCustomNodeFactory=e,c.arrayUtils=r,c}return s(t,e),a(t,[{key:"getVisitor",value:function(e){var t=this;switch(e){case m.TransformationStage.ControlFlowFlattening:return{leave:function(e,r){if(r&&_.NodeGuards.isBlockStatementNode(e))return t.transformNode(e,r)}};default:return null}}},{key:"transformNode",value:function(e,t){if(this.randomGenerator.getMathRandom()>this.options.controlFlowFlatteningThreshold||!c.canTransformBlockStatementNode(e))return e;var r=e.body,n=this.arrayUtils.arrayRange(r.length),o=this.arrayUtils.arrayShuffle(n),a=n.map(function(e){return o.indexOf(e)}),i=this.controlFlowCustomNodeFactory(p.ControlFlowCustomNode.BlockStatementControlFlowFlatteningNode);i.initialize(r,o,a);var s=i.getNode()[0];return N.NodeUtils.parentizeNode(s,t),s}}],[{key:"blockStatementHasProhibitedStatements",value:function(e){return e.body.some(function(e){var t=_.NodeGuards.isBreakStatementNode(e)||_.NodeGuards.isContinueStatementNode(e),r=_.NodeGuards.isVariableDeclarationNode(e)&&("const"===e.kind||"let"===e.kind),n=_.NodeGuards.isClassDeclarationNode(e);return _.NodeGuards.isFunctionDeclarationNode(e)||t||r||n})}},{key:"canTransformBlockStatementNode",value:function(e){var t=!0;return f.traverse(e,{enter:function(e){if(_.NodeGuards.isWhileStatementNode(e))return f.VisitorOption.Skip;_.NodeGuards.isBlockStatementNode(e)&&c.blockStatementHasProhibitedStatements(e)&&(t=!1)}}),e.body.length<=4&&(t=!1),t}}]),t}(g.AbstractNodeTransformer);v=c=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__IControlFlowCustomNode)),u.__param(1,d.inject(l.ServiceIdentifiers.IArrayUtils)),u.__param(2,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(3,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object,Object])],v),t.BlockStatementControlFlowTransformer=v},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c,u=r(4),d=r(0),l=r(3),f=r(21),p=r(63),m=c=function(e){function t(e,r,a){return o(this,t),i(this,(t.__proto__||n(t)).call(this,e,r,a))}return s(t,e),a(t,[{key:"replace",value:function(e,t,r){var n=e.operator,o=this.controlFlowCustomNodeFactory(f.ControlFlowCustomNode.BinaryExpressionFunctionNode);o.initialize(n);var a=this.insertCustomNodeToControlFlowStorage(o,r,n,c.usingExistingIdentifierChance);return this.getControlFlowStorageCallNode(r.getStorageId(),a,e.left,e.right)}}]),t}(p.ExpressionWithOperatorControlFlowReplacer);m.usingExistingIdentifierChance=.5,m=c=u.__decorate([d.injectable(),u.__param(0,d.inject(l.ServiceIdentifiers.Factory__IControlFlowCustomNode)),u.__param(1,d.inject(l.ServiceIdentifiers.IRandomGenerator)),u.__param(2,d.inject(l.ServiceIdentifiers.IOptions)),u.__metadata("design:paramtypes",[Function,Object,Object])],m),t.BinaryExpressionControlFlowReplacer=m},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(26),o=r(0),a=r(3),i=r(64),s=r(31),c=r(207),u=r(206),d=r(199),l=r(198),f=r(197),p=r(196),m=r(195);t.controlFlowTransformersModule=new o.ContainerModule(function(e){e(a.ServiceIdentifiers.INodeTransformer).to(u.BlockStatementControlFlowTransformer).whenTargetNamed(s.NodeTransformer.BlockStatementControlFlowTransformer),e(a.ServiceIdentifiers.INodeTransformer).to(l.DeadCodeInjectionTransformer).whenTargetNamed(s.NodeTransformer.DeadCodeInjectionTransformer),e(a.ServiceIdentifiers.INodeTransformer).to(f.FunctionControlFlowTransformer).whenTargetNamed(s.NodeTransformer.FunctionControlFlowTransformer),e(a.ServiceIdentifiers.IControlFlowReplacer).to(c.BinaryExpressionControlFlowReplacer).whenTargetNamed(i.ControlFlowReplacer.BinaryExpressionControlFlowReplacer),e(a.ServiceIdentifiers.IControlFlowReplacer).to(d.CallExpressionControlFlowReplacer).whenTargetNamed(i.ControlFlowReplacer.CallExpressionControlFlowReplacer),e(a.ServiceIdentifiers.IControlFlowReplacer).to(p.LogicalExpressionControlFlowReplacer).whenTargetNamed(i.ControlFlowReplacer.LogicalExpressionControlFlowReplacer),e(a.ServiceIdentifiers.IControlFlowReplacer).to(m.StringLiteralControlFlowReplacer).whenTargetNamed(i.ControlFlowReplacer.StringLiteralControlFlowReplacer),e(a.ServiceIdentifiers.Factory__IControlFlowReplacer).toFactory(n.InversifyContainerFacade.getCacheFactory(a.ServiceIdentifiers.IControlFlowReplacer))})},function(e,t,r){"use strict";var n=r(11),o=r(1),a=r(2);Object.defineProperty(t,"__esModule",{value:!0});var i,s=r(4),c=r(0),u=r(3),d=s.__importStar(r(17)),l=r(67),f=r(9),p=r(8),m=i=function(){function e(t){o(this,e),this.calleeDataExtractorFactory=t}return a(e,[{key:"analyze",value:function(e){return this.analyzeRecursive(e.body)}},{key:"analyzeRecursive",value:function(e){for(var t=this,r=i.getLimitIndex(e.length),n=[],o=e.length,a=function(o){if(o>r)return"break";var a=e[o];d.traverse(a,{enter:function(r){if(f.NodeGuards.isCallExpressionNode(r))return a.parentNode!==p.NodeUtils.getBlockScopesOfNode(r)[0]?d.VisitorOption.Skip:void t.analyzeCallExpressionNode(n,e,r)}})},s=0;sr&&(n=Math.round(r+t*i.limitThreshold))>t&&(n=t),n}}]),e}();m.calleeDataExtractorsList=[l.CalleeDataExtractor.FunctionDeclarationCalleeDataExtractor,l.CalleeDataExtractor.FunctionExpressionCalleeDataExtractor,l.CalleeDataExtractor.ObjectExpressionCalleeDataExtractor],m.limitThresholdActivationLength=25,m.limitThreshold=.002,m=i=s.__decorate([c.injectable(),s.__param(0,c.inject(u.ServiceIdentifiers.Factory__ICalleeDataExtractor)),s.__metadata("design:paramtypes",[Function])],m),t.StackTraceAnalyzer=m},function(e,t,r){"use strict";var n=r(37),o=r(7),a=r(1),i=r(2),s=r(6),c=r(5);Object.defineProperty(t,"__esModule",{value:!0});var u=r(4),d=r(0),l=u.__importStar(r(17)),f=r(48),p=r(9),m=r(8),g=function(e){function t(){return a(this,t),s(this,(t.__proto__||o(t)).apply(this,arguments))}return c(t,e),i(t,[{key:"extract",value:function(e,t){if(!p.NodeGuards.isMemberExpressionNode(t))return null;var r=this.createObjectMembersCallsChain([],t);if(!r.length)return null;var n=r[r.length-1],o=this.getCalleeBlockStatement(m.NodeUtils.getBlockScopesOfNode(e[0])[0],r);return o?{callee:o,name:n}:null}},{key:"createObjectMembersCallsChain",value:function(e,t){if(p.NodeGuards.isIdentifierNode(t.property)&&!1===t.computed)e.unshift(t.property.name);else{if(!p.NodeGuards.isLiteralNode(t.property)||"string"!=typeof t.property.value&&"number"!=typeof t.property.value)return e;e.unshift(t.property.value)}return p.NodeGuards.isMemberExpressionNode(t.object)?this.createObjectMembersCallsChain(e,t.object):(p.NodeGuards.isIdentifierNode(t.object)&&e.unshift(t.object.name),e)}},{key:"getCalleeBlockStatement",value:function(e,t){var r=this,n=t.shift();if(!n)return null;var o=null;return l.traverse(e,{enter:function(e){if(p.NodeGuards.isVariableDeclaratorNode(e)&&p.NodeGuards.isIdentifierNode(e.id)&&e.init&&p.NodeGuards.isObjectExpressionNode(e.init)&&e.id.name===n)return o=r.findCalleeBlockStatement(e.init.properties,t),l.VisitorOption.Break}}),o}},{key:"findCalleeBlockStatement",value:function(e,t){var r=t.shift();if(!r)return null;var o=!0,a=!1,i=void 0;try{for(var s,c=n(e);!(o=(s=c.next()).done);o=!0){var u=s.value,d=p.NodeGuards.isIdentifierNode(u.key)&&u.key.name===r,l=p.NodeGuards.isLiteralNode(u.key)&&Boolean(u.key.value)&&u.key.value===r;if(d||l){if(p.NodeGuards.isObjectExpressionNode(u.value))return this.findCalleeBlockStatement(u.value.properties,t);if(p.NodeGuards.isFunctionExpressionNode(u.value))return u.value.body}}}catch(e){a=!0,i=e}finally{try{o||null==c.return||c.return()}finally{if(a)throw i}}return null}}]),t}(f.AbstractCalleeDataExtractor);g=u.__decorate([d.injectable()],g),t.ObjectExpressionCalleeDataExtractor=g},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=c.__importStar(r(17)),l=r(48),f=r(9),p=r(8),m=function(e){function t(){return o(this,t),i(this,(t.__proto__||n(t)).apply(this,arguments))}return s(t,e),a(t,[{key:"extract",value:function(e,t){var r=null;return f.NodeGuards.isIdentifierNode(t)&&(r=this.getCalleeBlockStatement(p.NodeUtils.getBlockScopesOfNode(e[0])[0],t.name)),f.NodeGuards.isFunctionExpressionNode(t)&&(r=t.body),r?{callee:r,name:t.name||null}:null}},{key:"getCalleeBlockStatement",value:function(e,t){var r=null;return d.traverse(e,{enter:function(e,n){if(f.NodeGuards.isFunctionExpressionNode(e)&&n&&f.NodeGuards.isVariableDeclaratorNode(n)&&f.NodeGuards.isIdentifierNode(n.id)&&n.id.name===t)return r=e.body,d.VisitorOption.Break}}),r}}]),t}(l.AbstractCalleeDataExtractor);m=c.__decorate([u.injectable()],m),t.FunctionExpressionCalleeDataExtractor=m},function(e,t,r){"use strict";var n=r(7),o=r(1),a=r(2),i=r(6),s=r(5);Object.defineProperty(t,"__esModule",{value:!0});var c=r(4),u=r(0),d=c.__importStar(r(17)),l=r(48),f=r(9),p=r(8),m=function(e){function t(){return o(this,t),i(this,(t.__proto__||n(t)).apply(this,arguments))}return s(t,e),a(t,[{key:"extract",value:function(e,t){if(!f.NodeGuards.isIdentifierNode(t))return null;var r=this.getCalleeBlockStatement(p.NodeUtils.getBlockScopesOfNode(e[0])[0],t.name);return r?{callee:r,name:t.name}:null}},{key:"getCalleeBlockStatement",value:function(e,t){var r=null;return d.traverse(e,{enter:function(e){if(f.NodeGuards.isFunctionDeclarationNode(e)&&e.id.name===t)return r=e.body,d.VisitorOption.Break}}),r}}]),t}(l.AbstractCalleeDataExtractor);m=c.__decorate([u.injectable()],m),t.FunctionDeclarationCalleeDataExtractor=m},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(26),o=r(0),a=r(3),i=r(67),s=r(212),c=r(211),u=r(210),d=r(209);t.analyzersModule=new o.ContainerModule(function(e){e(a.ServiceIdentifiers.IStackTraceAnalyzer).to(d.StackTraceAnalyzer).inSingletonScope(),e(a.ServiceIdentifiers.ICalleeDataExtractor).to(s.FunctionDeclarationCalleeDataExtractor).whenTargetNamed(i.CalleeDataExtractor.FunctionDeclarationCalleeDataExtractor),e(a.ServiceIdentifiers.ICalleeDataExtractor).to(c.FunctionExpressionCalleeDataExtractor).whenTargetNamed(i.CalleeDataExtractor.FunctionExpressionCalleeDataExtractor),e(a.ServiceIdentifiers.ICalleeDataExtractor).to(u.ObjectExpressionCalleeDataExtractor).whenTargetNamed(i.CalleeDataExtractor.ObjectExpressionCalleeDataExtractor),e(a.ServiceIdentifiers.Factory__ICalleeDataExtractor).toFactory(n.InversifyContainerFacade.getCacheFactory(a.ServiceIdentifiers.ICalleeDataExtractor))})},function(e,t){e.exports=require("reflect-metadata")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(32);e.exports=n.JavaScriptObfuscator}]); +/*! +Copyright (C) 2016-2018 Timofey Kachalov + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +require("source-map-support").install(); + + +module.exports = +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // object to store loaded and loading wasm modules +/******/ var installedWasmModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // object with all compiled WebAssembly.Modules +/******/ __webpack_require__.w = {}; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./index.ts"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./index.ts": +/*!******************!*\ + !*** ./index.ts ***! + \******************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +throw new Error("Module build failed: Error: Requires Babel \"^7.0.0-0\", but was loaded with \"6.26.0\". If you are sure you have a compatible version of @babel/core, it is likely that something in your build process is loading the wrong version. Inspect the stack trace of this error to look for the first entry that doesn't mention \"@babel/core\" or \"babel-core\" to see what is calling Babel.\n at throwVersionError (/Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/@babel/helper-plugin-utils/lib/index.js:44:11)\n at Object.assertVersion (/Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/@babel/helper-plugin-utils/lib/index.js:11:11)\n at /Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/@babel/plugin-transform-runtime/lib/index.js:19:7\n at /Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/@babel/helper-plugin-utils/lib/index.js:16:12\n at Function.memoisePluginContainer (/Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/babel-core/lib/transformation/file/options/option-manager.js:113:13)\n at Function.normalisePlugin (/Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/babel-core/lib/transformation/file/options/option-manager.js:146:32)\n at /Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/babel-core/lib/transformation/file/options/option-manager.js:184:30\n at Array.map ()\n at Function.normalisePlugins (/Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/babel-core/lib/transformation/file/options/option-manager.js:158:20)\n at OptionManager.mergeOptions (/Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/babel-core/lib/transformation/file/options/option-manager.js:234:36)\n at OptionManager.init (/Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)\n at File.initOptions (/Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/babel-core/lib/transformation/file/index.js:212:65)\n at new File (/Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/babel-core/lib/transformation/file/index.js:135:24)\n at Pipeline.transform (/Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/babel-core/lib/transformation/pipeline.js:46:16)\n at /Users/sanex/PhpstormProjects/javascript-obfuscator/node_modules/awesome-typescript-loader/src/index.ts:155:41\n at \n at process._tickCallback (internal/process/next_tick.js:188:7)"); + +/***/ }) + +/******/ }); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/package.json b/package.json index 7fb12afe..7ea5d533 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,11 @@ "javascript-obfuscator": "./bin/javascript-obfuscator" }, "dependencies": { - "@babel/runtime": "7.0.0-beta.40", + "@babel/runtime": "7.0.0-beta.41", "chalk": "2.3.2", "chance": "1.0.13", "class-validator": "0.8.1", - "commander": "2.14.1", + "commander": "2.15.0", "escodegen-wallaby": "1.6.18", "esprima": "4.0.0", "estraverse": "4.2.0", @@ -40,9 +40,10 @@ "tslib": "1.9.0" }, "devDependencies": { - "@babel/core": "7.0.0-beta.40", - "@babel/plugin-transform-runtime": "7.0.0-beta.40", - "@babel/preset-env": "7.0.0-beta.40", + "@babel/cli": "7.0.0-beta.41", + "@babel/core": "7.0.0-beta.41", + "@babel/plugin-transform-runtime": "7.0.0-beta.41", + "@babel/preset-env": "7.0.0-beta.41", "@types/chai": "4.1.2", "@types/chance": "1.0.0", "@types/escodegen": "0.0.6", @@ -53,13 +54,12 @@ "@types/mkdirp": "0.5.2", "@types/mocha": "2.2.48", "@types/multimatch": "2.1.2", - "@types/node": "9.4.6", + "@types/node": "9.4.7", "@types/rimraf": "2.0.2", "@types/sinon": "4.3.0", "@types/string-template": "1.0.2", "@types/webpack-env": "1.13.5", - "awesome-typescript-loader": "5.0.0-0", - "babel-cli": "7.0.0-beta.3", + "awesome-typescript-loader": "5.0.0-1", "babel-loader": "8.0.0-beta.2", "chai": "4.1.2", "coveralls": "3.0.0", @@ -67,16 +67,16 @@ "mocha": "5.0.4", "pre-commit": "1.2.2", "rimraf": "2.6.2", - "sinon": "4.4.2", + "sinon": "4.4.6", "threads": "0.10.1", "ts-node": "5.0.1", "tslint": "5.9.1", "tslint-eslint-rules": "5.1.0", "tslint-language-service": "0.9.8", "tslint-webpack-plugin": "1.2.0", - "typescript": "2.7.2", + "typescript": "2.8.0-dev.20180315 ", "webpack": "4.1.1", - "webpack-cli": "2.0.10", + "webpack-cli": "2.0.12", "webpack-node-externals": "1.6.0" }, "repository": { diff --git a/src/JavaScriptObfuscator.ts b/src/JavaScriptObfuscator.ts index c9059033..bcf78c72 100644 --- a/src/JavaScriptObfuscator.ts +++ b/src/JavaScriptObfuscator.ts @@ -49,6 +49,7 @@ export class JavaScriptObfuscator implements IJavaScriptObfuscator { NodeTransformer.LabeledStatementTransformer, NodeTransformer.LiteralTransformer, NodeTransformer.MemberExpressionTransformer, + NodeTransformer.MetadataTransformer, NodeTransformer.MethodDefinitionTransformer, NodeTransformer.ObfuscatingGuardsTransformer, NodeTransformer.ObjectExpressionKeysTransformer, diff --git a/src/cli/sanitizers/IdentifierNamesGeneratorSanitizer.ts b/src/cli/sanitizers/IdentifierNamesGeneratorSanitizer.ts index 88aed9f8..432bd2c9 100644 --- a/src/cli/sanitizers/IdentifierNamesGeneratorSanitizer.ts +++ b/src/cli/sanitizers/IdentifierNamesGeneratorSanitizer.ts @@ -9,8 +9,8 @@ import { IdentifierNamesGenerator } from '../../enums/generators/identifier-name export const IdentifierNamesGeneratorSanitizer: TCLISanitizer = (value: string): string => { const isCorrectIdentifierNamesGenerator: boolean = Object .keys(IdentifierNamesGenerator) - .some((key: any): boolean => { - return IdentifierNamesGenerator[key] === value; + .some((key: string): boolean => { + return IdentifierNamesGenerator[key] === value; }); if (!isCorrectIdentifierNamesGenerator) { diff --git a/src/cli/sanitizers/ObfuscatingTargetSanitizer.ts b/src/cli/sanitizers/ObfuscatingTargetSanitizer.ts index 3486b964..8b8ae8fb 100644 --- a/src/cli/sanitizers/ObfuscatingTargetSanitizer.ts +++ b/src/cli/sanitizers/ObfuscatingTargetSanitizer.ts @@ -9,8 +9,8 @@ import { ObfuscationTarget } from '../../enums/ObfuscationTarget'; export const ObfuscationTargetSanitizer: TCLISanitizer = (value: string): string => { const isCorrectTarget: boolean = Object .keys(ObfuscationTarget) - .some((key: any): boolean => { - return ObfuscationTarget[key] === value; + .some((key: string): boolean => { + return ObfuscationTarget[key] === value; }); if (!isCorrectTarget) { diff --git a/src/cli/sanitizers/SourceMapModeSanitizer.ts b/src/cli/sanitizers/SourceMapModeSanitizer.ts index 16387dca..3e519726 100644 --- a/src/cli/sanitizers/SourceMapModeSanitizer.ts +++ b/src/cli/sanitizers/SourceMapModeSanitizer.ts @@ -9,8 +9,8 @@ import { SourceMapMode } from '../../enums/source-map/SourceMapMode'; export const SourceMapModeSanitizer: TCLISanitizer = (value: string): string => { const isCorrectSourceMapMode: boolean = Object .keys(SourceMapMode) - .some((key: any): boolean => { - return SourceMapMode[key] === value; + .some((key: string): boolean => { + return SourceMapMode[key] === value; }); if (!isCorrectSourceMapMode) { diff --git a/src/container/modules/node-transformers/PreparingTransformersModule.ts b/src/container/modules/node-transformers/PreparingTransformersModule.ts index f70650b1..ec3d53e4 100644 --- a/src/container/modules/node-transformers/PreparingTransformersModule.ts +++ b/src/container/modules/node-transformers/PreparingTransformersModule.ts @@ -13,6 +13,7 @@ import { CommentsTransformer } from '../../../node-transformers/preparing-transf import { ConditionalCommentObfuscatingGuard } from '../../../node-transformers/preparing-transformers/obfuscating-guards/ConditionalCommentObfuscatingGuard'; import { CustomNodesTransformer } from '../../../node-transformers/preparing-transformers/CustomNodesTransformer'; import { EvalCallExpressionTransformer } from '../../../node-transformers/preparing-transformers/EvaCallExpressionTransformer'; +import { MetadataTransformer } from '../../../node-transformers/preparing-transformers/MetadataTransformer'; import { ObfuscatingGuardsTransformer } from '../../../node-transformers/preparing-transformers/ObfuscatingGuardsTransformer'; import { ParentificationTransformer } from '../../../node-transformers/preparing-transformers/ParentificationTransformer'; @@ -30,6 +31,10 @@ export const preparingTransformersModule: interfaces.ContainerModule = new Conta .to(EvalCallExpressionTransformer) .whenTargetNamed(NodeTransformer.EvalCallExpressionTransformer); + bind(ServiceIdentifiers.INodeTransformer) + .to(MetadataTransformer) + .whenTargetNamed(NodeTransformer.MetadataTransformer); + bind(ServiceIdentifiers.INodeTransformer) .to(ObfuscatingGuardsTransformer) .whenTargetNamed(NodeTransformer.ObfuscatingGuardsTransformer); diff --git a/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts b/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts index cd9c7dfd..0300d600 100644 --- a/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts +++ b/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts @@ -59,7 +59,7 @@ export class ConsoleOutputDisableExpressionNode extends AbstractCustomNode { * @returns {string} */ protected getTemplate (): string { - const globalVariableTemplate: string = this.options.target !== ObfuscationTarget.Extension + const globalVariableTemplate: string = this.options.target !== ObfuscationTarget.BrowserNoEval ? this.getGlobalVariableTemplate() : GlobalVariableNoEvalTemplate(); diff --git a/src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts b/src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts index a162ccb1..db9933f4 100644 --- a/src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts +++ b/src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts @@ -12,7 +12,7 @@ import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; import { initializable } from '../../decorators/Initializable'; import { AbstractCustomNode } from '../AbstractCustomNode'; -import { Nodes } from '../../node/Nodes'; +import { NodeFactory } from '../../node/NodeFactory'; import { NodeUtils } from '../../node/NodeUtils'; @injectable() @@ -48,18 +48,18 @@ export class BinaryExpressionFunctionNode extends AbstractCustomNode { * @returns {TStatement[]} */ protected getNodeStructure (): TStatement[] { - const structure: TStatement = Nodes.getExpressionStatementNode( - Nodes.getFunctionExpressionNode( + const structure: TStatement = NodeFactory.expressionStatementNode( + NodeFactory.functionExpressionNode( [ - Nodes.getIdentifierNode('x'), - Nodes.getIdentifierNode('y') + NodeFactory.identifierNode('x'), + NodeFactory.identifierNode('y') ], - Nodes.getBlockStatementNode([ - Nodes.getReturnStatementNode( - Nodes.getBinaryExpressionNode( + NodeFactory.blockStatementNode([ + NodeFactory.returnStatementNode( + NodeFactory.binaryExpressionNode( this.operator, - Nodes.getIdentifierNode('x'), - Nodes.getIdentifierNode('y') + NodeFactory.identifierNode('x'), + NodeFactory.identifierNode('y') ) ) ]) diff --git a/src/custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode.ts b/src/custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode.ts index f8baed96..73912fee 100644 --- a/src/custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode.ts +++ b/src/custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode.ts @@ -12,8 +12,8 @@ import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; import { initializable } from '../../decorators/Initializable'; import { AbstractCustomNode } from '../AbstractCustomNode'; +import { NodeFactory } from '../../node/NodeFactory'; import { NodeGuards } from '../../node/NodeGuards'; -import { Nodes } from '../../node/Nodes'; import { NodeUtils } from '../../node/NodeUtils'; @injectable() @@ -71,36 +71,36 @@ export class BlockStatementControlFlowFlatteningNode extends AbstractCustomNode protected getNodeStructure (): TStatement[] { const controllerIdentifierName: string = this.randomGenerator.getRandomString(6); const indexIdentifierName: string = this.randomGenerator.getRandomString(6); - const structure: ESTree.BlockStatement = Nodes.getBlockStatementNode([ - Nodes.getVariableDeclarationNode([ - Nodes.getVariableDeclaratorNode( - Nodes.getIdentifierNode(controllerIdentifierName), - Nodes.getCallExpressionNode( - Nodes.getMemberExpressionNode( - Nodes.getLiteralNode( + const structure: ESTree.BlockStatement = NodeFactory.blockStatementNode([ + NodeFactory.variableDeclarationNode([ + NodeFactory.variableDeclaratorNode( + NodeFactory.identifierNode(controllerIdentifierName), + NodeFactory.callExpressionNode( + NodeFactory.memberExpressionNode( + NodeFactory.literalNode( this.originalKeysIndexesInShuffledArray.join('|') ), - Nodes.getIdentifierNode('split') + NodeFactory.identifierNode('split') ), [ - Nodes.getLiteralNode('|') + NodeFactory.literalNode('|') ] ) ), - Nodes.getVariableDeclaratorNode( - Nodes.getIdentifierNode(indexIdentifierName), - Nodes.getLiteralNode(0) + NodeFactory.variableDeclaratorNode( + NodeFactory.identifierNode(indexIdentifierName), + NodeFactory.literalNode(0) ) ]), - Nodes.getWhileStatementNode( - Nodes.getLiteralNode(true), - Nodes.getBlockStatementNode([ - Nodes.getSwitchStatementNode( - Nodes.getMemberExpressionNode( - Nodes.getIdentifierNode(controllerIdentifierName), - Nodes.getUpdateExpressionNode( + NodeFactory.whileStatementNode( + NodeFactory.literalNode(true), + NodeFactory.blockStatementNode([ + NodeFactory.switchStatementNode( + NodeFactory.memberExpressionNode( + NodeFactory.identifierNode(controllerIdentifierName), + NodeFactory.updateExpressionNode( '++', - Nodes.getIdentifierNode(indexIdentifierName) + NodeFactory.identifierNode(indexIdentifierName) ), true ), @@ -113,16 +113,16 @@ export class BlockStatementControlFlowFlatteningNode extends AbstractCustomNode * to prevent `unreachable code after return statement` warnings */ if (!NodeGuards.isReturnStatementNode(statement)) { - consequent.push(Nodes.getContinueStatement()); + consequent.push(NodeFactory.continueStatement()); } - return Nodes.getSwitchCaseNode( - Nodes.getLiteralNode(String(index)), + return NodeFactory.switchCaseNode( + NodeFactory.literalNode(String(index)), consequent ); }) ), - Nodes.getBreakStatement() + NodeFactory.breakStatement() ]) ) ]); diff --git a/src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts b/src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts index 5af72113..46e02fc7 100644 --- a/src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts +++ b/src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts @@ -12,7 +12,7 @@ import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; import { initializable } from '../../decorators/Initializable'; import { AbstractCustomNode } from '../AbstractCustomNode'; -import { Nodes } from '../../node/Nodes'; +import { NodeFactory } from '../../node/NodeFactory'; import { NodeUtils } from '../../node/NodeUtils'; @injectable() @@ -48,23 +48,23 @@ export class CallExpressionFunctionNode extends AbstractCustomNode { * @returns {TStatement[]} */ protected getNodeStructure (): TStatement[] { - const calleeIdentifier: ESTree.Identifier = Nodes.getIdentifierNode('callee'); + const calleeIdentifier: ESTree.Identifier = NodeFactory.identifierNode('callee'); const params: ESTree.Identifier[] = []; const argumentsLength: number = this.expressionArguments.length; for (let i: number = 0; i < argumentsLength; i++) { - params.push(Nodes.getIdentifierNode(`param${i + 1}`)); + params.push(NodeFactory.identifierNode(`param${i + 1}`)); } - const structure: TStatement = Nodes.getExpressionStatementNode( - Nodes.getFunctionExpressionNode( + const structure: TStatement = NodeFactory.expressionStatementNode( + NodeFactory.functionExpressionNode( [ calleeIdentifier, ...params ], - Nodes.getBlockStatementNode([ - Nodes.getReturnStatementNode( - Nodes.getCallExpressionNode( + NodeFactory.blockStatementNode([ + NodeFactory.returnStatementNode( + NodeFactory.callExpressionNode( calleeIdentifier, params ) diff --git a/src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts b/src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts index b3c67dda..d45b6d95 100644 --- a/src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts +++ b/src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts @@ -12,7 +12,7 @@ import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; import { initializable } from '../../decorators/Initializable'; import { AbstractCustomNode } from '../AbstractCustomNode'; -import { Nodes } from '../../node/Nodes'; +import { NodeFactory } from '../../node/NodeFactory'; import { NodeUtils } from '../../node/NodeUtils'; @injectable() @@ -48,18 +48,18 @@ export class LogicalExpressionFunctionNode extends AbstractCustomNode { * @returns {TStatement[]} */ protected getNodeStructure (): TStatement[] { - const structure: TStatement = Nodes.getExpressionStatementNode( - Nodes.getFunctionExpressionNode( + const structure: TStatement = NodeFactory.expressionStatementNode( + NodeFactory.functionExpressionNode( [ - Nodes.getIdentifierNode('x'), - Nodes.getIdentifierNode('y') + NodeFactory.identifierNode('x'), + NodeFactory.identifierNode('y') ], - Nodes.getBlockStatementNode([ - Nodes.getReturnStatementNode( - Nodes.getLogicalExpressionNode( + NodeFactory.blockStatementNode([ + NodeFactory.returnStatementNode( + NodeFactory.logicalExpressionNode( this.operator, - Nodes.getIdentifierNode('x'), - Nodes.getIdentifierNode('y') + NodeFactory.identifierNode('x'), + NodeFactory.identifierNode('y') ) ) ]) diff --git a/src/custom-nodes/control-flow-flattening-nodes/StringLiteralNode.ts b/src/custom-nodes/control-flow-flattening-nodes/StringLiteralNode.ts index 944417e0..fb985fe6 100644 --- a/src/custom-nodes/control-flow-flattening-nodes/StringLiteralNode.ts +++ b/src/custom-nodes/control-flow-flattening-nodes/StringLiteralNode.ts @@ -10,7 +10,7 @@ import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; import { initializable } from '../../decorators/Initializable'; import { AbstractCustomNode } from '../AbstractCustomNode'; -import { Nodes } from '../../node/Nodes'; +import { NodeFactory } from '../../node/NodeFactory'; @injectable() export class StringLiteralNode extends AbstractCustomNode { @@ -45,8 +45,8 @@ export class StringLiteralNode extends AbstractCustomNode { * @returns {TStatement[]} */ protected getNodeStructure (): TStatement[] { - const structure: TStatement = Nodes.getExpressionStatementNode( - Nodes.getLiteralNode(this.literalValue) + const structure: TStatement = NodeFactory.expressionStatementNode( + NodeFactory.literalNode(this.literalValue) ); return [structure]; diff --git a/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/CallExpressionControlFlowStorageCallNode.ts b/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/CallExpressionControlFlowStorageCallNode.ts index 49103d38..bde93dd2 100644 --- a/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/CallExpressionControlFlowStorageCallNode.ts +++ b/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/CallExpressionControlFlowStorageCallNode.ts @@ -13,7 +13,7 @@ import { IRandomGenerator } from "../../../interfaces/utils/IRandomGenerator"; import { initializable } from '../../../decorators/Initializable'; import { AbstractCustomNode } from '../../AbstractCustomNode'; -import { Nodes } from '../../../node/Nodes'; +import { NodeFactory } from '../../../node/NodeFactory'; import { NodeUtils } from '../../../node/NodeUtils'; @injectable() @@ -75,11 +75,11 @@ export class CallExpressionControlFlowStorageCallNode extends AbstractCustomNode } protected getNodeStructure (): TStatement[] { - const structure: TStatement = Nodes.getExpressionStatementNode( - Nodes.getCallExpressionNode( - Nodes.getMemberExpressionNode( - Nodes.getIdentifierNode(this.controlFlowStorageName), - Nodes.getIdentifierNode(this.controlFlowStorageKey) + const structure: TStatement = NodeFactory.expressionStatementNode( + NodeFactory.callExpressionNode( + NodeFactory.memberExpressionNode( + NodeFactory.identifierNode(this.controlFlowStorageName), + NodeFactory.identifierNode(this.controlFlowStorageKey) ), [ this.callee, diff --git a/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts b/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts index f587708b..06389b18 100644 --- a/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts +++ b/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts @@ -14,8 +14,8 @@ import { IStorage } from '../../../interfaces/storages/IStorage'; import { initializable } from '../../../decorators/Initializable'; import { AbstractCustomNode } from '../../AbstractCustomNode'; +import { NodeFactory } from '../../../node/NodeFactory'; import { NodeGuards } from '../../../node/NodeGuards'; -import { Nodes } from '../../../node/Nodes'; import { NodeUtils } from '../../../node/NodeUtils'; @injectable() @@ -60,16 +60,16 @@ export class ControlFlowStorageNode extends AbstractCustomNode { throw new Error('Function node for control flow storage object should be passed inside the `ExpressionStatement` node!'); } - return Nodes.getPropertyNode( - Nodes.getIdentifierNode(key), + return NodeFactory.propertyNode( + NodeFactory.identifierNode(key), node.expression ); }); - let structure: ESTree.Node = Nodes.getVariableDeclarationNode([ - Nodes.getVariableDeclaratorNode( - Nodes.getIdentifierNode(this.controlFlowStorage.getStorageId()), - Nodes.getObjectExpressionNode(propertyNodes) + let structure: ESTree.Node = NodeFactory.variableDeclarationNode([ + NodeFactory.variableDeclaratorNode( + NodeFactory.identifierNode(this.controlFlowStorage.getStorageId()), + NodeFactory.objectExpressionNode(propertyNodes) ) ]); diff --git a/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ExpressionWithOperatorControlFlowStorageCallNode.ts b/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ExpressionWithOperatorControlFlowStorageCallNode.ts index 920fe691..5c43dd27 100644 --- a/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ExpressionWithOperatorControlFlowStorageCallNode.ts +++ b/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ExpressionWithOperatorControlFlowStorageCallNode.ts @@ -12,7 +12,7 @@ import { IRandomGenerator } from '../../../interfaces/utils/IRandomGenerator'; import { initializable } from '../../../decorators/Initializable'; import { AbstractCustomNode } from '../../AbstractCustomNode'; -import { Nodes } from '../../../node/Nodes'; +import { NodeFactory } from '../../../node/NodeFactory'; import { NodeUtils } from '../../../node/NodeUtils'; @injectable() @@ -74,11 +74,11 @@ export class ExpressionWithOperatorControlFlowStorageCallNode extends AbstractCu } protected getNodeStructure (): TStatement[] { - const structure: TStatement = Nodes.getExpressionStatementNode( - Nodes.getCallExpressionNode( - Nodes.getMemberExpressionNode( - Nodes.getIdentifierNode(this.controlFlowStorageName), - Nodes.getIdentifierNode(this.controlFlowStorageKey) + const structure: TStatement = NodeFactory.expressionStatementNode( + NodeFactory.callExpressionNode( + NodeFactory.memberExpressionNode( + NodeFactory.identifierNode(this.controlFlowStorageName), + NodeFactory.identifierNode(this.controlFlowStorageKey) ), [ this.leftValue, diff --git a/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/StringLiteralControlFlowStorageCallNode.ts b/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/StringLiteralControlFlowStorageCallNode.ts index 740604fd..73ef9446 100644 --- a/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/StringLiteralControlFlowStorageCallNode.ts +++ b/src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/StringLiteralControlFlowStorageCallNode.ts @@ -10,7 +10,7 @@ import { IRandomGenerator } from '../../../interfaces/utils/IRandomGenerator'; import { initializable } from '../../../decorators/Initializable'; import { AbstractCustomNode } from '../../AbstractCustomNode'; -import { Nodes } from '../../../node/Nodes'; +import { NodeFactory } from '../../../node/NodeFactory'; import { NodeUtils } from '../../../node/NodeUtils'; @injectable() @@ -54,10 +54,10 @@ export class StringLiteralControlFlowStorageCallNode extends AbstractCustomNode } protected getNodeStructure (): TStatement[] { - const structure: TStatement = Nodes.getExpressionStatementNode( - Nodes.getMemberExpressionNode( - Nodes.getIdentifierNode(this.controlFlowStorageName), - Nodes.getIdentifierNode(this.controlFlowStorageKey) + const structure: TStatement = NodeFactory.expressionStatementNode( + NodeFactory.memberExpressionNode( + NodeFactory.identifierNode(this.controlFlowStorageName), + NodeFactory.identifierNode(this.controlFlowStorageKey) ) ); diff --git a/src/custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode.ts b/src/custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode.ts index d5eb1bb7..5a685c26 100644 --- a/src/custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode.ts +++ b/src/custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode.ts @@ -12,7 +12,7 @@ import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; import { initializable } from '../../decorators/Initializable'; import { AbstractCustomNode } from '../AbstractCustomNode'; -import { Nodes } from '../../node/Nodes'; +import { NodeFactory } from '../../node/NodeFactory'; import { NodeUtils } from '../../node/NodeUtils'; @injectable() @@ -70,12 +70,12 @@ export class BlockStatementDeadCodeInjectionNode extends AbstractCustomNode { ? [this.blockStatementNode, this.deadCodeInjectionRootAstHostNode] : [this.deadCodeInjectionRootAstHostNode, this.blockStatementNode]; - const structure: BlockStatement = Nodes.getBlockStatementNode([ - Nodes.getIfStatementNode( - Nodes.getBinaryExpressionNode( + const structure: BlockStatement = NodeFactory.blockStatementNode([ + NodeFactory.ifStatementNode( + NodeFactory.binaryExpressionNode( operator, - Nodes.getLiteralNode(leftString), - Nodes.getLiteralNode(rightString) + NodeFactory.literalNode(leftString), + NodeFactory.literalNode(rightString) ), consequent, alternate diff --git a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts index 17674e02..fd3cdb1b 100644 --- a/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts +++ b/src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts @@ -60,7 +60,7 @@ export class DebugProtectionFunctionNode extends AbstractCustomNode { * @returns {string} */ protected getTemplate (): string { - const debuggerTemplate: string = this.options.target !== ObfuscationTarget.Extension + const debuggerTemplate: string = this.options.target !== ObfuscationTarget.BrowserNoEval ? DebuggerTemplate() : DebuggerTemplateNoEval(); diff --git a/src/custom-nodes/domain-lock-nodes/DomainLockNode.ts b/src/custom-nodes/domain-lock-nodes/DomainLockNode.ts index cafc2ddb..f350dc66 100644 --- a/src/custom-nodes/domain-lock-nodes/DomainLockNode.ts +++ b/src/custom-nodes/domain-lock-nodes/DomainLockNode.ts @@ -74,7 +74,7 @@ export class DomainLockNode extends AbstractCustomNode { domainsString, domainsString.length * 3 ); - const globalVariableTemplate: string = this.options.target !== ObfuscationTarget.Extension + const globalVariableTemplate: string = this.options.target !== ObfuscationTarget.BrowserNoEval ? this.getGlobalVariableTemplate() : GlobalVariableNoEvalTemplate(); diff --git a/src/custom-nodes/string-array-nodes/StringArrayCallsWrapper.ts b/src/custom-nodes/string-array-nodes/StringArrayCallsWrapper.ts index bc33c375..7e460253 100644 --- a/src/custom-nodes/string-array-nodes/StringArrayCallsWrapper.ts +++ b/src/custom-nodes/string-array-nodes/StringArrayCallsWrapper.ts @@ -109,7 +109,7 @@ export class StringArrayCallsWrapper extends AbstractCustomNode { * @returns {string} */ private getDecodeStringArrayTemplate (): string { - const globalVariableTemplate: string = this.options.target !== ObfuscationTarget.Extension + const globalVariableTemplate: string = this.options.target !== ObfuscationTarget.BrowserNoEval ? this.getGlobalVariableTemplate() : GlobalVariableNoEvalTemplate(); const atobPolyfill: string = format(AtobTemplate(), { globalVariableTemplate }); diff --git a/src/declarations/ESTree.d.ts b/src/declarations/ESTree.d.ts index 64b63282..350bb532 100644 --- a/src/declarations/ESTree.d.ts +++ b/src/declarations/ESTree.d.ts @@ -4,21 +4,33 @@ import * as escodegen from 'escodegen-wallaby'; import * as ESTree from 'estree'; declare module 'estree' { - interface BaseNode { + export interface BaseNodeMetadata { ignoredNode?: boolean; obfuscatedNode?: boolean; + } + + export interface IdentifierNodeMetadata extends BaseNodeMetadata { + renamedIdentifier?: boolean; + } + + interface BaseNode { + metadata?: BaseNodeMetadata; parentNode?: ESTree.Node; } - interface ExpressionStatement extends ESTree.BaseStatement { + interface Identifier extends BaseNode { + metadata?: IdentifierNodeMetadata; + } + + interface ExpressionStatement extends BaseNode { directive?: 'use strict'; } - interface SimpleLiteral extends ESTree.BaseNode, ESTree.BaseExpression { + interface SimpleLiteral extends BaseNode { 'x-verbatim-property'?: escodegen.XVerbatimProperty; } - interface RegExpLiteral extends ESTree.BaseNode, ESTree.BaseExpression { + interface RegExpLiteral extends BaseNode { 'x-verbatim-property'?: escodegen.XVerbatimProperty; } } diff --git a/src/enums/ObfuscationTarget.ts b/src/enums/ObfuscationTarget.ts index dbd456e5..2e116aa3 100644 --- a/src/enums/ObfuscationTarget.ts +++ b/src/enums/ObfuscationTarget.ts @@ -1,5 +1,5 @@ export enum ObfuscationTarget { Browser = 'browser', - Extension = 'extension', + BrowserNoEval = 'browser-no-eval', Node = 'node' } diff --git a/src/enums/node-transformers/NodeTransformer.ts b/src/enums/node-transformers/NodeTransformer.ts index 5253666e..67b76302 100644 --- a/src/enums/node-transformers/NodeTransformer.ts +++ b/src/enums/node-transformers/NodeTransformer.ts @@ -12,6 +12,7 @@ export enum NodeTransformer { LabeledStatementTransformer = 'LabeledStatementTransformer', LiteralTransformer = 'LiteralTransformer', MemberExpressionTransformer = 'MemberExpressionTransformer', + MetadataTransformer = 'MetadataTransformer', MethodDefinitionTransformer = 'MethodDefinitionTransformer', ObfuscatingGuardsTransformer = 'ObfuscatingGuardsTransformer', ObjectExpressionKeysTransformer = 'ObjectExpressionKeysTransformer', diff --git a/src/node-transformers/TransformersRunner.ts b/src/node-transformers/TransformersRunner.ts index 12adf870..9858e642 100644 --- a/src/node-transformers/TransformersRunner.ts +++ b/src/node-transformers/TransformersRunner.ts @@ -17,6 +17,7 @@ import { TransformationStage } from '../enums/node-transformers/TransformationSt import { VisitorDirection } from '../enums/node-transformers/VisitorDirection'; import { NodeGuards } from '../node/NodeGuards'; +import { NodeMetadata } from '../node/NodeMetadata'; @injectable() export class TransformersRunner implements ITransformersRunner { @@ -96,7 +97,7 @@ export class TransformersRunner implements ITransformersRunner { } return (node: ESTree.Node, parentNode: ESTree.Node | null) => { - if (node.ignoredNode) { + if (NodeMetadata.isIgnoredNode(node)) { return estraverse.VisitorOption.Skip; } diff --git a/src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts b/src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts index 24910a62..946f03fe 100644 --- a/src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts +++ b/src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts @@ -21,8 +21,9 @@ import { NodeType } from '../../enums/node/NodeType'; import { TransformationStage } from '../../enums/node-transformers/TransformationStage'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; -import { NodeGuards } from '../../node/NodeGuards'; import { NodeAppender } from '../../node/NodeAppender'; +import { NodeGuards } from '../../node/NodeGuards'; +import { NodeMetadata } from '../../node/NodeMetadata'; import { NodeUtils } from '../../node/NodeUtils'; @injectable() @@ -223,7 +224,7 @@ export class FunctionControlFlowTransformer extends AbstractNodeTransformer { private transformFunctionBody (functionNodeBody: ESTree.BlockStatement, controlFlowStorage: IStorage): void { estraverse.replace(functionNodeBody, { enter: (node: ESTree.Node, parentNode: ESTree.Node | null): estraverse.VisitorOption | ESTree.Node => { - if (node.ignoredNode) { + if (NodeMetadata.isIgnoredNode(node)) { return estraverse.VisitorOption.Skip; } diff --git a/src/node-transformers/converting-transformers/MemberExpressionTransformer.ts b/src/node-transformers/converting-transformers/MemberExpressionTransformer.ts index 868854fc..081e72fb 100644 --- a/src/node-transformers/converting-transformers/MemberExpressionTransformer.ts +++ b/src/node-transformers/converting-transformers/MemberExpressionTransformer.ts @@ -7,10 +7,10 @@ import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; -import { NodeType } from '../../enums/node/NodeType'; import { TransformationStage } from '../../enums/node-transformers/TransformationStage'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; +import { NodeFactory } from '../../node/NodeFactory'; import { NodeGuards } from '../../node/NodeGuards'; @injectable() @@ -69,11 +69,7 @@ export class MemberExpressionTransformer extends AbstractNodeTransformer { } memberExpressionNode.computed = true; - memberExpressionNode.property = { - type: NodeType.Literal, - value: memberExpressionNode.property.name, - raw: `'${memberExpressionNode.property.name}'` - }; + memberExpressionNode.property = NodeFactory.literalNode(memberExpressionNode.property.name); } return memberExpressionNode; diff --git a/src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts b/src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts index 85bbe924..fcbc538d 100644 --- a/src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts +++ b/src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts @@ -7,10 +7,10 @@ import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; -import { NodeType } from '../../enums/node/NodeType'; import { TransformationStage } from '../../enums/node-transformers/TransformationStage'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; +import { NodeFactory } from '../../node/NodeFactory'; import { NodeGuards } from '../../node/NodeGuards'; /** @@ -82,11 +82,7 @@ export class MethodDefinitionTransformer extends AbstractNodeTransformer { methodDefinitionNode.computed === false ) { methodDefinitionNode.computed = true; - methodDefinitionNode.key = { - type: NodeType.Literal, - value: methodDefinitionNode.key.name, - raw: `'${methodDefinitionNode.key.name}'` - }; + methodDefinitionNode.key = NodeFactory.literalNode(methodDefinitionNode.key.name); } return methodDefinitionNode; diff --git a/src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts b/src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts index fd12b817..319d5d0b 100644 --- a/src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts +++ b/src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts @@ -13,8 +13,8 @@ import { TransformationStage } from '../../enums/node-transformers/Transformatio import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { NodeAppender } from '../../node/NodeAppender'; +import { NodeFactory } from '../../node/NodeFactory'; import { NodeGuards } from '../../node/NodeGuards'; -import { Nodes } from '../../node/Nodes'; import { NodeUtils } from '../../node/NodeUtils'; @injectable() @@ -191,12 +191,12 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer { const shouldCreateLiteralNode: boolean = !property.computed || (property.computed && NodeGuards.isLiteralNode(property.key)); const memberExpressionProperty: ESTree.Expression = shouldCreateLiteralNode - ? Nodes.getLiteralNode(propertyKeyName) - : Nodes.getIdentifierNode(propertyKeyName); - const memberExpressionNode: ESTree.MemberExpression = Nodes - .getMemberExpressionNode(memberExpressionObject, memberExpressionProperty, true); - const expressionStatementNode: ESTree.ExpressionStatement = Nodes.getExpressionStatementNode( - Nodes.getAssignmentExpressionNode('=', memberExpressionNode, propertyValue) + ? NodeFactory.literalNode(propertyKeyName) + : NodeFactory.identifierNode(propertyKeyName); + const memberExpressionNode: ESTree.MemberExpression = NodeFactory + .memberExpressionNode(memberExpressionObject, memberExpressionProperty, true); + const expressionStatementNode: ESTree.ExpressionStatement = NodeFactory.expressionStatementNode( + NodeFactory.assignmentExpressionNode('=', memberExpressionNode, propertyValue) ); /** diff --git a/src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts b/src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts index 1783ff92..a30d9c26 100644 --- a/src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts +++ b/src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts @@ -14,8 +14,8 @@ import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { TransformationStage } from '../../enums/node-transformers/TransformationStage'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; +import { NodeFactory } from '../../node/NodeFactory'; import { NodeGuards } from '../../node/NodeGuards'; -import { Nodes } from '../../node/Nodes'; import { NodeUtils } from '../../node/NodeUtils'; /** @@ -79,7 +79,7 @@ export class TemplateLiteralTransformer extends AbstractNodeTransformer { let nodes: ESTree.Expression[] = []; templateLiteralNode.quasis.forEach((templateElement: ESTree.TemplateElement) => { - nodes.push(Nodes.getLiteralNode(templateElement.value.cooked)); + nodes.push(NodeFactory.literalNode(templateElement.value.cooked)); const expression: ESTree.Expression | undefined = templateLiteralExpressions.shift(); @@ -100,18 +100,18 @@ export class TemplateLiteralTransformer extends AbstractNodeTransformer { !TemplateLiteralTransformer.isLiteralNodeWithStringValue(nodes[0]) && !TemplateLiteralTransformer.isLiteralNodeWithStringValue(nodes[1]) ) { - nodes.unshift(Nodes.getLiteralNode('')); + nodes.unshift(NodeFactory.literalNode('')); } if (nodes.length > 1) { - let root: ESTree.BinaryExpression = Nodes.getBinaryExpressionNode( + let root: ESTree.BinaryExpression = NodeFactory.binaryExpressionNode( '+', nodes.shift(), nodes.shift() ); nodes.forEach((node: ESTree.Literal | ESTree.Expression) => { - root = Nodes.getBinaryExpressionNode('+', root, node); + root = NodeFactory.binaryExpressionNode('+', root, node); }); return root; diff --git a/src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts b/src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts index efa26e64..531ccc46 100644 --- a/src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts +++ b/src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts @@ -20,8 +20,8 @@ import { NodeType } from '../../enums/node/NodeType'; import { TransformationStage } from '../../enums/node-transformers/TransformationStage'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; +import { NodeFactory } from '../../node/NodeFactory'; import { NodeGuards } from '../../node/NodeGuards'; -import { Nodes } from '../../node/Nodes'; import { NodeUtils } from '../../node/NodeUtils'; @injectable() @@ -128,7 +128,7 @@ export class DeadCodeInjectionTransformer extends AbstractNodeTransformer { } const slicedBody: ESTree.Statement[] = scopeBody.slice(0, indexInScope); - const hostBlockStatementNode: ESTree.BlockStatement = Nodes.getBlockStatementNode(slicedBody); + const hostBlockStatementNode: ESTree.BlockStatement = NodeFactory.blockStatementNode(slicedBody); const functionDeclarationName: string = targetNode.id.name; let isScopeHoistedFunctionDeclaration: boolean = false; @@ -359,8 +359,8 @@ export class DeadCodeInjectionTransformer extends AbstractNodeTransformer { * with function declaration node. This function declaration node will create block scope for all identifiers * inside random block statement node and this identifiers won't affect identifiers of the rest AST tree. */ - const deadCodeInjectionRootAstHostNode: ESTree.BlockStatement = Nodes.getBlockStatementNode([ - Nodes.getFunctionDeclarationNode( + const deadCodeInjectionRootAstHostNode: ESTree.BlockStatement = NodeFactory.blockStatementNode([ + NodeFactory.functionDeclarationNode( DeadCodeInjectionTransformer.deadCodeInjectionRootAstHostNodeName, [], randomBlockStatementNode diff --git a/src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts b/src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts index c92ca7fa..b23097ce 100644 --- a/src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts @@ -16,6 +16,7 @@ import { TransformationStage } from '../../enums/node-transformers/Transformatio import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { NodeGuards } from '../../node/NodeGuards'; +import { NodeMetadata } from '../../node/NodeMetadata'; /** * replaces: @@ -108,7 +109,8 @@ export class CatchClauseTransformer extends AbstractNodeTransformer { if (node.name !== newIdentifierName) { node.name = newIdentifierName; - node.obfuscatedNode = true; + + NodeMetadata.set(node, { renamedIdentifier: true }); } } } diff --git a/src/node-transformers/obfuscating-transformers/ClassDeclarationTransformer.ts b/src/node-transformers/obfuscating-transformers/ClassDeclarationTransformer.ts index 9083de58..a6ad9820 100644 --- a/src/node-transformers/obfuscating-transformers/ClassDeclarationTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/ClassDeclarationTransformer.ts @@ -18,6 +18,7 @@ import { TransformationStage } from '../../enums/node-transformers/Transformatio import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { NodeGuards } from '../../node/NodeGuards'; +import { NodeMetadata } from '../../node/NodeMetadata'; import { NodeUtils } from '../../node/NodeUtils'; /** @@ -146,14 +147,18 @@ export class ClassDeclarationTransformer extends AbstractNodeTransformer { estraverse.replace(blockScopeNode, { enter: (node: ESTree.Node, parentNode: ESTree.Node | null): void => { - if (parentNode && !node.obfuscatedNode && NodeGuards.isReplaceableIdentifierNode(node, parentNode)) { + if ( + parentNode + && NodeGuards.isReplaceableIdentifierNode(node, parentNode) + && !NodeMetadata.isRenamedIdentifier(node) + ) { const newIdentifier: ESTree.Identifier = this.identifierObfuscatingReplacer .replace(node.name, nodeIdentifier); const newIdentifierName: string = newIdentifier.name; if (node.name !== newIdentifierName) { node.name = newIdentifierName; - node.obfuscatedNode = true; + NodeMetadata.set(node, { renamedIdentifier: true }); } else { storedReplaceableIdentifiers.push(node); } diff --git a/src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts b/src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts index e405c6fd..b8602518 100644 --- a/src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts @@ -20,6 +20,7 @@ import { TransformationStage } from '../../enums/node-transformers/Transformatio import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { NodeGuards } from '../../node/NodeGuards'; +import { NodeMetadata } from '../../node/NodeMetadata'; import { NodeUtils } from '../../node/NodeUtils'; /** @@ -167,14 +168,18 @@ export class FunctionDeclarationTransformer extends AbstractNodeTransformer { estraverse.replace(blockScopeNode, { enter: (node: ESTree.Node, parentNode: ESTree.Node | null): void => { - if (parentNode && !node.obfuscatedNode && NodeGuards.isReplaceableIdentifierNode(node, parentNode)) { + if ( + parentNode + && NodeGuards.isReplaceableIdentifierNode(node, parentNode) + && !NodeMetadata.isRenamedIdentifier(node) + ) { const newIdentifier: ESTree.Identifier = this.identifierObfuscatingReplacer .replace(node.name, nodeIdentifier); const newIdentifierName: string = newIdentifier.name; if (node.name !== newIdentifierName) { node.name = newIdentifierName; - node.obfuscatedNode = true; + NodeMetadata.set(node, { renamedIdentifier: true }); } else { const storedReplaceableIdentifiers: ESTree.Identifier[] = storedReplaceableIdentifiersNamesMap.get(node.name) || []; diff --git a/src/node-transformers/obfuscating-transformers/FunctionTransformer.ts b/src/node-transformers/obfuscating-transformers/FunctionTransformer.ts index c337700e..fb229c37 100644 --- a/src/node-transformers/obfuscating-transformers/FunctionTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/FunctionTransformer.ts @@ -16,6 +16,7 @@ import { TransformationStage } from '../../enums/node-transformers/Transformatio import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { NodeGuards } from '../../node/NodeGuards'; +import { NodeMetadata } from '../../node/NodeMetadata'; /** * replaces: @@ -157,7 +158,7 @@ export class FunctionTransformer extends AbstractNodeTransformer { if (node.name !== newIdentifierName) { node.name = newIdentifierName; - node.obfuscatedNode = true; + NodeMetadata.set(node, { renamedIdentifier: true }); } } } diff --git a/src/node-transformers/obfuscating-transformers/LiteralTransformer.ts b/src/node-transformers/obfuscating-transformers/LiteralTransformer.ts index 60f3f9b6..19e639ae 100644 --- a/src/node-transformers/obfuscating-transformers/LiteralTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/LiteralTransformer.ts @@ -14,6 +14,7 @@ import { TransformationStage } from '../../enums/node-transformers/Transformatio import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { NodeGuards } from '../../node/NodeGuards'; +import { NodeMetadata } from '../../node/NodeMetadata'; @injectable() export class LiteralTransformer extends AbstractNodeTransformer { @@ -47,7 +48,7 @@ export class LiteralTransformer extends AbstractNodeTransformer { case TransformationStage.Obfuscating: return { enter: (node: ESTree.Node, parentNode: ESTree.Node | null) => { - if (parentNode && NodeGuards.isLiteralNode(node) && !node.obfuscatedNode) { + if (parentNode && NodeGuards.isLiteralNode(node) && !NodeMetadata.isObfuscatedNode(node)) { return this.transformNode(node, parentNode); } } diff --git a/src/node-transformers/obfuscating-transformers/ObjectExpressionTransformer.ts b/src/node-transformers/obfuscating-transformers/ObjectExpressionTransformer.ts index dce379f6..d51fb17c 100644 --- a/src/node-transformers/obfuscating-transformers/ObjectExpressionTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/ObjectExpressionTransformer.ts @@ -7,10 +7,10 @@ import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; -import { NodeType } from '../../enums/node/NodeType'; import { TransformationStage } from '../../enums/node-transformers/TransformationStage'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; +import { NodeFactory } from '../../node/NodeFactory'; import { NodeGuards } from '../../node/NodeGuards'; /** @@ -33,18 +33,6 @@ export class ObjectExpressionTransformer extends AbstractNodeTransformer { super(randomGenerator, options); } - /** - * @param {Identifier} node - * @returns {Literal} - */ - private static transformIdentifierPropertyKey (node: ESTree.Identifier): ESTree.Literal { - return { - type: NodeType.Literal, - value: node.name, - raw: `'${node.name}'` - }; - } - /** * @param {TransformationStage} transformationStage * @returns {IVisitor | null} @@ -82,7 +70,7 @@ export class ObjectExpressionTransformer extends AbstractNodeTransformer { } if (NodeGuards.isIdentifierNode(property.key)) { - property.key = ObjectExpressionTransformer.transformIdentifierPropertyKey(property.key); + property.key = NodeFactory.literalNode(property.key.name); } }); diff --git a/src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts b/src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts index d068b078..440affd7 100644 --- a/src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts @@ -20,6 +20,7 @@ import { TransformationStage } from '../../enums/node-transformers/Transformatio import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { NodeGuards } from '../../node/NodeGuards'; +import { NodeMetadata } from '../../node/NodeMetadata'; import { NodeUtils } from '../../node/NodeUtils'; /** @@ -186,13 +187,17 @@ export class VariableDeclarationTransformer extends AbstractNodeTransformer { estraverse.replace(blockScopeNode, { enter: (node: ESTree.Node, parentNode: ESTree.Node | null): void => { - if (parentNode && !node.obfuscatedNode && NodeGuards.isReplaceableIdentifierNode(node, parentNode)) { + if ( + parentNode + && NodeGuards.isReplaceableIdentifierNode(node, parentNode) + && !NodeMetadata.isRenamedIdentifier(node) + ) { const newIdentifier: ESTree.Identifier = this.identifierObfuscatingReplacer.replace(node.name, nodeIdentifier); const newIdentifierName: string = newIdentifier.name; if (node.name !== newIdentifierName) { node.name = newIdentifierName; - node.obfuscatedNode = true; + NodeMetadata.set(node, { renamedIdentifier: true }); } else { const storedReplaceableIdentifiers: ESTree.Identifier[] = storedReplaceableIdentifiersNamesMap.get(node.name) || []; diff --git a/src/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.ts b/src/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.ts index eb28a79f..55a3cf84 100644 --- a/src/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.ts +++ b/src/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.ts @@ -10,7 +10,7 @@ import { IIdentifierObfuscatingReplacer } from '../../../../interfaces/node-tran import { IOptions } from '../../../../interfaces/options/IOptions'; import { AbstractObfuscatingReplacer } from '../AbstractObfuscatingReplacer'; -import { Nodes } from '../../../../node/Nodes'; +import { NodeFactory } from '../../../../node/NodeFactory'; @injectable() export class BaseIdentifierObfuscatingReplacer extends AbstractObfuscatingReplacer implements IIdentifierObfuscatingReplacer { @@ -50,7 +50,7 @@ export class BaseIdentifierObfuscatingReplacer extends AbstractObfuscatingReplac nodeValue = this.namesMap.get(mapKey); } - return Nodes.getIdentifierNode(nodeValue); + return NodeFactory.identifierNode(nodeValue); } /** diff --git a/src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/BooleanLiteralObfuscatingReplacer.ts b/src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/BooleanLiteralObfuscatingReplacer.ts index 7e48fcbb..31f3c54f 100644 --- a/src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/BooleanLiteralObfuscatingReplacer.ts +++ b/src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/BooleanLiteralObfuscatingReplacer.ts @@ -6,7 +6,7 @@ import * as ESTree from 'estree'; import { IOptions } from '../../../../interfaces/options/IOptions'; import { AbstractObfuscatingReplacer } from '../AbstractObfuscatingReplacer'; -import { Nodes } from '../../../../node/Nodes'; +import { NodeFactory } from '../../../../node/NodeFactory'; @injectable() export class BooleanLiteralObfuscatingReplacer extends AbstractObfuscatingReplacer { @@ -23,7 +23,7 @@ export class BooleanLiteralObfuscatingReplacer extends AbstractObfuscatingReplac * @return {ESTree.UnaryExpression} */ private static getTrueUnaryExpressionNode (): ESTree.UnaryExpression { - return Nodes.getUnaryExpressionNode( + return NodeFactory.unaryExpressionNode( '!', BooleanLiteralObfuscatingReplacer.getFalseUnaryExpressionNode() ); @@ -33,9 +33,9 @@ export class BooleanLiteralObfuscatingReplacer extends AbstractObfuscatingReplac * @return {ESTree.UnaryExpression} */ private static getFalseUnaryExpressionNode (): ESTree.UnaryExpression { - return Nodes.getUnaryExpressionNode( + return NodeFactory.unaryExpressionNode( '!', - Nodes.getArrayExpressionNode() + NodeFactory.arrayExpressionNode() ); } diff --git a/src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/NumberLiteralObfuscatingReplacer.ts b/src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/NumberLiteralObfuscatingReplacer.ts index 605394af..dda77309 100644 --- a/src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/NumberLiteralObfuscatingReplacer.ts +++ b/src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/NumberLiteralObfuscatingReplacer.ts @@ -6,7 +6,7 @@ import * as ESTree from 'estree'; import { IOptions } from '../../../../interfaces/options/IOptions'; import { AbstractObfuscatingReplacer } from '../AbstractObfuscatingReplacer'; -import { Nodes } from '../../../../node/Nodes'; +import { NodeFactory } from '../../../../node/NodeFactory'; import { Utils } from '../../../../utils/Utils'; @injectable() @@ -44,6 +44,6 @@ export class NumberLiteralObfuscatingReplacer extends AbstractObfuscatingReplace this.numberLiteralCache.set(nodeValue, rawValue); } - return Nodes.getLiteralNode(nodeValue, rawValue); + return NodeFactory.literalNode(nodeValue, rawValue); } } diff --git a/src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/StringLiteralObfuscatingReplacer.ts b/src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/StringLiteralObfuscatingReplacer.ts index 9c186634..cf7207d7 100644 --- a/src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/StringLiteralObfuscatingReplacer.ts +++ b/src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/StringLiteralObfuscatingReplacer.ts @@ -14,7 +14,8 @@ import { IStringArrayIndexData } from '../../../../interfaces/node-transformers/ import { StringArrayEncoding } from '../../../../enums/StringArrayEncoding'; import { AbstractObfuscatingReplacer } from '../AbstractObfuscatingReplacer'; -import { Nodes } from '../../../../node/Nodes'; +import { NodeMetadata } from '../../../../node/NodeMetadata'; +import { NodeFactory } from '../../../../node/NodeFactory'; import { Utils } from '../../../../utils/Utils'; @injectable() @@ -106,9 +107,9 @@ export class StringLiteralObfuscatingReplacer extends AbstractObfuscatingReplace * @returns {Literal} */ private static getHexadecimalLiteralNode (hexadecimalIndex: string): ESTree.Literal { - const hexadecimalLiteralNode: ESTree.Literal = Nodes.getLiteralNode(hexadecimalIndex); + const hexadecimalLiteralNode: ESTree.Literal = NodeFactory.literalNode(hexadecimalIndex); - hexadecimalLiteralNode.obfuscatedNode = true; + NodeMetadata.set(hexadecimalLiteralNode, { obfuscatedNode: true }); return hexadecimalLiteralNode; } @@ -118,9 +119,9 @@ export class StringLiteralObfuscatingReplacer extends AbstractObfuscatingReplace * @returns {Literal} */ private static getRc4KeyLiteralNode (literalValue: string): ESTree.Literal { - const rc4KeyLiteralNode: ESTree.Literal = Nodes.getLiteralNode(literalValue); + const rc4KeyLiteralNode: ESTree.Literal = NodeFactory.literalNode(literalValue); - rc4KeyLiteralNode.obfuscatedNode = true; + NodeMetadata.set(rc4KeyLiteralNode, { obfuscatedNode: true }); return rc4KeyLiteralNode; } @@ -215,7 +216,7 @@ export class StringLiteralObfuscatingReplacer extends AbstractObfuscatingReplace * @returns {Node} */ private replaceWithLiteralNode (value: string): ESTree.Node { - return Nodes.getLiteralNode( + return NodeFactory.literalNode( this.escapeSequenceEncoder.encode(value, this.options.unicodeEscapeSequence) ); } @@ -250,12 +251,12 @@ export class StringLiteralObfuscatingReplacer extends AbstractObfuscatingReplace )); } - const stringArrayIdentifierNode: ESTree.Identifier = Nodes.getIdentifierNode(stringArrayStorageCallsWrapperName); + const stringArrayIdentifierNode: ESTree.Identifier = NodeFactory.identifierNode(stringArrayStorageCallsWrapperName); // prevent obfuscation of this identifier - stringArrayIdentifierNode.obfuscatedNode = true; + NodeMetadata.set(stringArrayIdentifierNode, { obfuscatedNode: true }); - return Nodes.getCallExpressionNode( + return NodeFactory.callExpressionNode( stringArrayIdentifierNode, callExpressionArgs ); diff --git a/src/node-transformers/preparing-transformers/EvaCallExpressionTransformer.ts b/src/node-transformers/preparing-transformers/EvaCallExpressionTransformer.ts index 8108314c..1868cf8c 100644 --- a/src/node-transformers/preparing-transformers/EvaCallExpressionTransformer.ts +++ b/src/node-transformers/preparing-transformers/EvaCallExpressionTransformer.ts @@ -13,8 +13,8 @@ import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { TransformationStage } from '../../enums/node-transformers/TransformationStage'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; +import { NodeFactory } from '../../node/NodeFactory'; import { NodeGuards } from '../../node/NodeGuards'; -import { Nodes } from '../../node/Nodes'; import { NodeUtils } from '../../node/NodeUtils'; @injectable() @@ -146,8 +146,8 @@ export class EvalCallExpressionTransformer extends AbstractNodeTransformer { * we should wrap AST-tree into the parent function expression node (ast root host node). * This function expression node will help to correctly transform AST-tree. */ - const evalRootAstHostNode: ESTree.FunctionExpression = Nodes - .getFunctionExpressionNode([], Nodes.getBlockStatementNode(ast)); + const evalRootAstHostNode: ESTree.FunctionExpression = NodeFactory + .functionExpressionNode([], NodeFactory.blockStatementNode(ast)); /** * we should store that host node and then extract AST-tree on the `finalizing` stage @@ -166,10 +166,10 @@ export class EvalCallExpressionTransformer extends AbstractNodeTransformer { const targetAst: ESTree.Statement[] = evalRootAstHostNode.body.body; const obfuscatedCode: string = NodeUtils.convertStructureToCode(targetAst); - return Nodes.getCallExpressionNode( - Nodes.getIdentifierNode('eval'), + return NodeFactory.callExpressionNode( + NodeFactory.identifierNode('eval'), [ - Nodes.getLiteralNode(jsStringEscape(obfuscatedCode)) + NodeFactory.literalNode(jsStringEscape(obfuscatedCode)) ] ); } diff --git a/src/node-transformers/preparing-transformers/MetadataTransformer.ts b/src/node-transformers/preparing-transformers/MetadataTransformer.ts new file mode 100644 index 00000000..65ff311d --- /dev/null +++ b/src/node-transformers/preparing-transformers/MetadataTransformer.ts @@ -0,0 +1,62 @@ +import { inject, injectable, } from 'inversify'; +import { ServiceIdentifiers } from '../../container/ServiceIdentifiers'; + +import * as ESTree from 'estree'; + +import { IOptions } from '../../interfaces/options/IOptions'; +import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; + +import { TransformationStage } from '../../enums/node-transformers/TransformationStage'; + +import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; +import { NodeMetadata } from '../../node/NodeMetadata'; + +/** + * Adds metadata properties to each node + */ +@injectable() +export class MetadataTransformer extends AbstractNodeTransformer { + /** + * @param {IRandomGenerator} randomGenerator + * @param {IOptions} options + */ + constructor ( + @inject(ServiceIdentifiers.IRandomGenerator) randomGenerator: IRandomGenerator, + @inject(ServiceIdentifiers.IOptions) options: IOptions + ) { + super(randomGenerator, options); + } + + /** + * @param {TransformationStage} transformationStage + * @returns {IVisitor | null} + */ + public getVisitor (transformationStage: TransformationStage): IVisitor | null { + switch (transformationStage) { + case TransformationStage.Preparing: + return { + enter: (node: ESTree.Node, parentNode: ESTree.Node | null) => { + return this.transformNode(node, parentNode); + } + }; + + default: + return null; + } + } + + /** + * @param {Node} node + * @param {Node} parentNode + * @returns {Node} + */ + public transformNode (node: ESTree.Node, parentNode: ESTree.Node | null): ESTree.Node { + NodeMetadata.set(node, { + ignoredNode: false, + obfuscatedNode: false + }); + + return node; + } +} diff --git a/src/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.ts b/src/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.ts index f0765735..68fbf989 100644 --- a/src/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.ts +++ b/src/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.ts @@ -14,6 +14,7 @@ import { ObfuscatingGuard } from '../../enums/node-transformers/preparing-transf import { TransformationStage } from '../../enums/node-transformers/TransformationStage'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; +import { NodeMetadata } from '../../node/NodeMetadata'; /** * Adds `ignoredNode` properties to each node @@ -75,7 +76,9 @@ export class ObfuscatingGuardsTransformer extends AbstractNodeTransformer { const obfuscationAllowed: boolean = this.obfuscatingGuards .every((nodeGuard: IObfuscatingGuard) => nodeGuard.check(node)); - node.ignoredNode = !obfuscationAllowed; + NodeMetadata.set(node, { + ignoredNode: !obfuscationAllowed + }); return node; } diff --git a/src/node/Nodes.ts b/src/node/NodeFactory.ts similarity index 65% rename from src/node/Nodes.ts rename to src/node/NodeFactory.ts index 1323a536..845ab968 100644 --- a/src/node/Nodes.ts +++ b/src/node/NodeFactory.ts @@ -1,3 +1,5 @@ +/* tslint:disable:max-file-line-count */ + import * as escodegen from 'escodegen-wallaby'; import * as ESTree from 'estree'; @@ -5,17 +7,20 @@ import { TStatement } from '../types/node/TStatement'; import { NodeType } from '../enums/node/NodeType'; -export class Nodes { +export class NodeFactory { /** * @param {TStatement[]} body * @returns {Program} */ - public static getProgramNode (body: TStatement[] = []): ESTree.Program { + public static programNode (body: TStatement[] = []): ESTree.Program { return { type: NodeType.Program, body, sourceType: 'script', - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -23,12 +28,16 @@ export class Nodes { * @param {(Expression | SpreadElement)[]} elements * @returns {ArrayExpression} */ - public static getArrayExpressionNode ( + public static arrayExpressionNode ( elements: (ESTree.Expression | ESTree.SpreadElement)[] = [] ): ESTree.ArrayExpression { return { type: NodeType.ArrayExpression, - elements + elements, + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -38,7 +47,7 @@ export class Nodes { * @param {Expression} right * @returns {AssignmentExpression} */ - public static getAssignmentExpressionNode ( + public static assignmentExpressionNode ( operator: ESTree.AssignmentOperator, left: ESTree.Pattern | ESTree.MemberExpression, right: ESTree.Expression @@ -48,7 +57,10 @@ export class Nodes { operator, left, right, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -58,7 +70,7 @@ export class Nodes { * @param {Expression} right * @returns {BinaryExpression} */ - public static getBinaryExpressionNode ( + public static binaryExpressionNode ( operator: ESTree.BinaryOperator, left: ESTree.Expression, right: ESTree.Expression, @@ -68,7 +80,10 @@ export class Nodes { operator, left, right, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -76,11 +91,14 @@ export class Nodes { * @param {Statement[]} body * @returns {BlockStatement} */ - public static getBlockStatementNode (body: ESTree.Statement[] = []): ESTree.BlockStatement { + public static blockStatementNode (body: ESTree.Statement[] = []): ESTree.BlockStatement { return { type: NodeType.BlockStatement, body, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -88,10 +106,13 @@ export class Nodes { * @param {Identifier} label * @returns {BreakStatement} */ - public static getBreakStatement (label?: ESTree.Identifier): ESTree.BreakStatement { + public static breakStatement (label?: ESTree.Identifier): ESTree.BreakStatement { const breakStatementNode: ESTree.BreakStatement = { type: NodeType.BreakStatement, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; if (label) { @@ -106,7 +127,7 @@ export class Nodes { * @param {(Expression | SpreadElement)[]} args * @returns {CallExpression} */ - public static getCallExpressionNode ( + public static callExpressionNode ( callee: ESTree.Expression, args: (ESTree.Expression | ESTree.SpreadElement)[] = [] ): ESTree.CallExpression { @@ -114,7 +135,10 @@ export class Nodes { type: NodeType.CallExpression, callee, arguments: args, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -122,10 +146,13 @@ export class Nodes { * @param {Identifier} label * @returns {ContinueStatement} */ - public static getContinueStatement (label?: ESTree.Identifier): ESTree.ContinueStatement { + public static continueStatement (label?: ESTree.Identifier): ESTree.ContinueStatement { const continueStatementNode: ESTree.ContinueStatement = { type: NodeType.ContinueStatement, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; if (label) { @@ -139,11 +166,14 @@ export class Nodes { * @param {Expression} expression * @returns {ExpressionStatement} */ - public static getExpressionStatementNode (expression: ESTree.Expression): ESTree.ExpressionStatement { + public static expressionStatementNode (expression: ESTree.Expression): ESTree.ExpressionStatement { return { type: NodeType.ExpressionStatement, expression, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -153,18 +183,21 @@ export class Nodes { * @param {BlockStatement} body * @returns {FunctionDeclaration} */ - public static getFunctionDeclarationNode ( + public static functionDeclarationNode ( functionName: string, params: ESTree.Identifier[], body: ESTree.BlockStatement ): ESTree.FunctionDeclaration { return { type: NodeType.FunctionDeclaration, - id: Nodes.getIdentifierNode(functionName), + id: NodeFactory.identifierNode(functionName), params, body, generator: false, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -173,7 +206,7 @@ export class Nodes { * @param {BlockStatement} body * @returns {FunctionExpression} */ - public static getFunctionExpressionNode ( + public static functionExpressionNode ( params: ESTree.Identifier[], body: ESTree.BlockStatement ): ESTree.FunctionExpression { @@ -182,7 +215,10 @@ export class Nodes { params, body, generator: false, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -192,7 +228,7 @@ export class Nodes { * @param {BlockStatement} alternate * @returns {IfStatement} */ - public static getIfStatementNode ( + public static ifStatementNode ( test: ESTree.Expression, consequent: ESTree.BlockStatement, alternate?: ESTree.BlockStatement @@ -202,7 +238,10 @@ export class Nodes { test, consequent, ...alternate && { alternate }, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -210,11 +249,14 @@ export class Nodes { * @param {string} name * @returns {Identifier} */ - public static getIdentifierNode (name: string): ESTree.Identifier { + public static identifierNode (name: string): ESTree.Identifier { return { type: NodeType.Identifier, name, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -223,7 +265,7 @@ export class Nodes { * @param {string} raw * @returns {Literal} */ - public static getLiteralNode (value: boolean | number | string, raw?: string): ESTree.Literal { + public static literalNode (value: boolean | number | string, raw?: string): ESTree.Literal { raw = raw !== undefined ? raw : `'${value}'`; return { @@ -234,7 +276,10 @@ export class Nodes { content: raw, precedence: escodegen.Precedence.Primary }, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -244,7 +289,7 @@ export class Nodes { * @param {Expression} right * @returns {LogicalExpression} */ - public static getLogicalExpressionNode ( + public static logicalExpressionNode ( operator: ESTree.LogicalOperator, left: ESTree.Expression, right: ESTree.Expression, @@ -254,7 +299,10 @@ export class Nodes { operator, left, right, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -264,7 +312,7 @@ export class Nodes { * @param {boolean} computed * @returns {MemberExpression} */ - public static getMemberExpressionNode ( + public static memberExpressionNode ( object: ESTree.Expression | ESTree.Super, property: ESTree.Expression, computed: boolean = false @@ -274,7 +322,10 @@ export class Nodes { computed, object, property, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -285,7 +336,7 @@ export class Nodes { * @param {boolean} computed * @returns {MethodDefinition} */ - public static getMethodDefinitionNode ( + public static methodDefinitionNode ( key: ESTree.Expression, value: ESTree.FunctionExpression, kind: 'constructor' | 'method' | 'get' | 'set', @@ -298,7 +349,10 @@ export class Nodes { kind, computed, static: false, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -306,11 +360,14 @@ export class Nodes { * @param {Property[]} properties * @returns {ObjectExpression} */ - public static getObjectExpressionNode (properties: ESTree.Property[]): ESTree.ObjectExpression { + public static objectExpressionNode (properties: ESTree.Property[]): ESTree.ObjectExpression { return { type: NodeType.ObjectExpression, properties, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -320,7 +377,7 @@ export class Nodes { * @param {boolean} computed * @returns {Property} */ - public static getPropertyNode ( + public static propertyNode ( key: ESTree.Expression, value: ESTree.Expression | ESTree.Pattern, computed: boolean = false @@ -333,7 +390,62 @@ export class Nodes { method: false, shorthand: false, computed, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } + }; + } + + /** + * @param {Expression} argument + * @returns {ReturnStatement} + */ + public static returnStatementNode (argument: ESTree.Expression): ESTree.ReturnStatement { + return { + type: NodeType.ReturnStatement, + argument, + metadata: { + ignoredNode: false, + obfuscatedNode: false + } + }; + } + + /** + * @param {Expression} discriminant + * @param {SwitchCase[]} cases + * @returns {SwitchStatement} + */ + public static switchStatementNode ( + discriminant: ESTree.Expression, + cases: ESTree.SwitchCase[] + ): ESTree.SwitchStatement { + return { + type: NodeType.SwitchStatement, + discriminant, + cases, + metadata: { + ignoredNode: false, + obfuscatedNode: false + } + }; + } + + /** + * @param {Expression} test + * @param {Statement[]} consequent + * @returns {SwitchCase} + */ + public static switchCaseNode (test: ESTree.Expression, consequent: ESTree.Statement[]): ESTree.SwitchCase { + return { + type: NodeType.SwitchCase, + test, + consequent, + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -343,7 +455,7 @@ export class Nodes { * @param {true} prefix * @returns {UnaryExpression} */ - public static getUnaryExpressionNode ( + public static unaryExpressionNode ( operator: ESTree.UnaryOperator, argument: ESTree.Expression, prefix: true = true @@ -353,50 +465,10 @@ export class Nodes { operator, argument, prefix, - obfuscatedNode: false - }; - } - - /** - * @param {Expression} argument - * @returns {ReturnStatement} - */ - public static getReturnStatementNode (argument: ESTree.Expression): ESTree.ReturnStatement { - return { - type: NodeType.ReturnStatement, - argument, - obfuscatedNode: false - }; - } - - /** - * @param {Expression} discriminant - * @param {SwitchCase[]} cases - * @returns {SwitchStatement} - */ - public static getSwitchStatementNode ( - discriminant: ESTree.Expression, - cases: ESTree.SwitchCase[] - ): ESTree.SwitchStatement { - return { - type: NodeType.SwitchStatement, - discriminant, - cases, - obfuscatedNode: false - }; - } - - /** - * @param {Expression} test - * @param {Statement[]} consequent - * @returns {SwitchCase} - */ - public static getSwitchCaseNode (test: ESTree.Expression, consequent: ESTree.Statement[]): ESTree.SwitchCase { - return { - type: NodeType.SwitchCase, - test, - consequent, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -405,13 +477,16 @@ export class Nodes { * @param {Expression} argumentExpr * @returns {UpdateExpression} */ - public static getUpdateExpressionNode (operator: ESTree.UpdateOperator, argumentExpr: ESTree.Expression): ESTree.UpdateExpression { + public static updateExpressionNode (operator: ESTree.UpdateOperator, argumentExpr: ESTree.Expression): ESTree.UpdateExpression { return { type: NodeType.UpdateExpression, operator, argument: argumentExpr, prefix: false, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -420,7 +495,7 @@ export class Nodes { * @param {string} kind * @returns {VariableDeclaration} */ - public static getVariableDeclarationNode ( + public static variableDeclarationNode ( declarations: ESTree.VariableDeclarator[] = [], kind: 'var' | 'let' | 'const' = 'var' ): ESTree.VariableDeclaration { @@ -428,7 +503,10 @@ export class Nodes { type: NodeType.VariableDeclaration, declarations, kind, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -437,12 +515,15 @@ export class Nodes { * @param {Expression | null} init * @returns {VariableDeclarator} */ - public static getVariableDeclaratorNode (id: ESTree.Identifier, init: ESTree.Expression | null): ESTree.VariableDeclarator { + public static variableDeclaratorNode (id: ESTree.Identifier, init: ESTree.Expression | null): ESTree.VariableDeclarator { return { type: NodeType.VariableDeclarator, id, init, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } @@ -451,12 +532,15 @@ export class Nodes { * @param {Statement} body * @returns {WhileStatement} */ - public static getWhileStatementNode (test: ESTree.Expression, body: ESTree.Statement): ESTree.WhileStatement { + public static whileStatementNode (test: ESTree.Expression, body: ESTree.Statement): ESTree.WhileStatement { return { type: NodeType.WhileStatement, test, body, - obfuscatedNode: false + metadata: { + ignoredNode: false, + obfuscatedNode: false + } }; } } diff --git a/src/node/NodeMetadata.ts b/src/node/NodeMetadata.ts new file mode 100644 index 00000000..af5ae50c --- /dev/null +++ b/src/node/NodeMetadata.ts @@ -0,0 +1,49 @@ +import * as ESTree from 'estree'; + +export class NodeMetadata { + /** + * @param {Node} node + * @param {BaseNodeMetadata} metadata + */ + public static set (node: T, metadata: Partial): void { + node.metadata = Object.assign(node.metadata || {}, metadata); + } + + /** + * @param {Node} node + * @param {BaseNodeMetadata} metadataKey + * @returns {T | undefined} + */ + public static get ( + node: ESTree.Node, + metadataKey: keyof U + ): T | undefined { + return node.metadata !== undefined + ? (node.metadata)[metadataKey] + : undefined; + } + + /** + * @param {Node} node + * @returns {boolean} + */ + public static isIgnoredNode (node: ESTree.Node): boolean { + return NodeMetadata.get(node, 'ignoredNode') === true; + } + + /** + * @param {Node} node + * @returns {boolean} + */ + public static isObfuscatedNode (node: ESTree.Node): boolean { + return NodeMetadata.get(node, 'obfuscatedNode') === true; + } + + /** + * @param {Node} identifierNode + * @returns {boolean} + */ + public static isRenamedIdentifier (identifierNode: ESTree.Identifier): boolean { + return NodeMetadata.get(identifierNode, 'renamedIdentifier') === true; + } +} diff --git a/src/node/NodeUtils.ts b/src/node/NodeUtils.ts index 1053a692..2fe677af 100644 --- a/src/node/NodeUtils.ts +++ b/src/node/NodeUtils.ts @@ -9,6 +9,7 @@ import { TObject } from '../types/TObject'; import { TStatement } from '../types/node/TStatement'; import { NodeGuards } from './NodeGuards'; +import { NodeMetadata } from './NodeMetadata'; export class NodeUtils { /** @@ -48,6 +49,17 @@ export class NodeUtils { structure = NodeUtils.addXVerbatimPropertyToLiterals(structure); structure = NodeUtils.parentize(structure); + estraverse.replace(structure, { + enter: (node: ESTree.Node): ESTree.Node => { + NodeMetadata.set(node, { + ignoredNode: false, + obfuscatedNode: false + }); + + return node; + } + }); + return structure.body; } @@ -136,7 +148,6 @@ export class NodeUtils { */ public static parentizeNode (node: T, parentNode: ESTree.Node | null): T { node.parentNode = parentNode || node; - node.obfuscatedNode = false; return node; } diff --git a/src/options/Options.ts b/src/options/Options.ts index 3caf4dea..d7882843 100644 --- a/src/options/Options.ts +++ b/src/options/Options.ts @@ -211,7 +211,7 @@ export class Options implements IOptions { /** * @type {ObfuscationTarget} */ - @IsIn([ObfuscationTarget.Browser, ObfuscationTarget.Extension, ObfuscationTarget.Node]) + @IsIn([ObfuscationTarget.Browser, ObfuscationTarget.BrowserNoEval, ObfuscationTarget.Node]) public readonly target!: ObfuscationTarget; /** diff --git a/src/utils/Utils.ts b/src/utils/Utils.ts index b3f16b92..76b42d0d 100644 --- a/src/utils/Utils.ts +++ b/src/utils/Utils.ts @@ -67,7 +67,7 @@ export class Utils { return Array .from(string) .map((character: string): string => { - return JSFuck[character] || character; + return JSFuck[character] || character; }) .join(' + '); } diff --git a/test/functional-tests/analyzers/stack-trace-analyzer/StackTraceAnalyzer.spec.ts b/test/functional-tests/analyzers/stack-trace-analyzer/StackTraceAnalyzer.spec.ts index d3352301..45873d62 100644 --- a/test/functional-tests/analyzers/stack-trace-analyzer/StackTraceAnalyzer.spec.ts +++ b/test/functional-tests/analyzers/stack-trace-analyzer/StackTraceAnalyzer.spec.ts @@ -16,8 +16,8 @@ import { IStackTraceData } from '../../../../src/interfaces/analyzers/stack-trac import { readFileAsString } from '../../../helpers/readFileAsString'; import { InversifyContainerFacade } from '../../../../src/container/InversifyContainerFacade'; +import { NodeFactory } from '../../../../src/node/NodeFactory'; import { NodeGuards } from '../../../../src/node/NodeGuards'; -import { Nodes } from '../../../../src/node/Nodes'; import { NodeUtils } from '../../../../src/node/NodeUtils'; /** @@ -165,7 +165,7 @@ describe('StackTraceAnalyzer', () => { describe('Variant #1: basic-1', () => { before(() => { const code: string = readFileAsString(__dirname + '/fixtures/basic-1.js'); - const astTree: TNodeWithBlockScope = Nodes.getProgramNode( + const astTree: TNodeWithBlockScope = NodeFactory.programNode( NodeUtils.convertCodeToStructure(code) ); @@ -215,7 +215,7 @@ describe('StackTraceAnalyzer', () => { describe('Variant #2: basic-2', () => { before(() => { const code: string = readFileAsString(__dirname + '/fixtures/basic-2.js'); - const astTree: TNodeWithBlockScope = Nodes.getProgramNode( + const astTree: TNodeWithBlockScope = NodeFactory.programNode( NodeUtils.convertCodeToStructure(code) ); @@ -254,7 +254,7 @@ describe('StackTraceAnalyzer', () => { describe('Variant #3: deep conditions nesting', () => { before(() => { const code: string = readFileAsString(__dirname + '/fixtures/deep-conditions-nesting.js'); - const astTree: TNodeWithBlockScope = Nodes.getProgramNode( + const astTree: TNodeWithBlockScope = NodeFactory.programNode( NodeUtils.convertCodeToStructure(code) ); @@ -293,7 +293,7 @@ describe('StackTraceAnalyzer', () => { describe('Variant #4: call before declaration', () => { before(() => { const code: string = readFileAsString(__dirname + '/fixtures/call-before-declaration.js'); - const astTree: TNodeWithBlockScope = Nodes.getProgramNode( + const astTree: TNodeWithBlockScope = NodeFactory.programNode( NodeUtils.convertCodeToStructure(code) ); @@ -316,7 +316,7 @@ describe('StackTraceAnalyzer', () => { describe('Variant #5: call expression of object member #1', () => { before(() => { const code: string = readFileAsString(__dirname + '/fixtures/call-expression-of-object-member-1.js'); - const astTree: TNodeWithBlockScope = Nodes.getProgramNode( + const astTree: TNodeWithBlockScope = NodeFactory.programNode( NodeUtils.convertCodeToStructure(code) ); @@ -375,7 +375,7 @@ describe('StackTraceAnalyzer', () => { describe('Variant #5: call expression of object member #2', () => { before(() => { const code: string = readFileAsString(__dirname + '/fixtures/call-expression-of-object-member-2.js'); - const astTree: TNodeWithBlockScope = Nodes.getProgramNode( + const astTree: TNodeWithBlockScope = NodeFactory.programNode( NodeUtils.convertCodeToStructure(code) ); @@ -403,7 +403,7 @@ describe('StackTraceAnalyzer', () => { describe('Variant #6: no call expressions', () => { before(() => { const code: string = readFileAsString(__dirname + '/fixtures/no-call-expressions.js'); - const astTree: TNodeWithBlockScope = Nodes.getProgramNode( + const astTree: TNodeWithBlockScope = NodeFactory.programNode( NodeUtils.convertCodeToStructure(code) ); @@ -420,7 +420,7 @@ describe('StackTraceAnalyzer', () => { describe('Variant #7: only call expression', () => { before(() => { const code: string = readFileAsString(__dirname + '/fixtures/only-call-expression.js'); - const astTree: TNodeWithBlockScope = Nodes.getProgramNode( + const astTree: TNodeWithBlockScope = NodeFactory.programNode( NodeUtils.convertCodeToStructure(code) ); @@ -437,7 +437,7 @@ describe('StackTraceAnalyzer', () => { describe('Variant #8: self-invoking functions', () => { before(() => { const code: string = readFileAsString(__dirname + '/fixtures/self-invoking-functions.js'); - const astTree: TNodeWithBlockScope = Nodes.getProgramNode( + const astTree: TNodeWithBlockScope = NodeFactory.programNode( NodeUtils.convertCodeToStructure(code) ); @@ -472,7 +472,7 @@ describe('StackTraceAnalyzer', () => { describe('Variant #9: no recursion', () => { before(() => { const code: string = readFileAsString(__dirname + '/fixtures/no-recursion.js'); - const astTree: TNodeWithBlockScope = Nodes.getProgramNode( + const astTree: TNodeWithBlockScope = NodeFactory.programNode( NodeUtils.convertCodeToStructure(code) ); diff --git a/test/functional-tests/templates/debug-protection-nodes/DebugProtectionFunctionCallTemplate.spec.ts b/test/functional-tests/templates/debug-protection-nodes/DebugProtectionFunctionCallTemplate.spec.ts index 37c9fd92..c46668c8 100644 --- a/test/functional-tests/templates/debug-protection-nodes/DebugProtectionFunctionCallTemplate.spec.ts +++ b/test/functional-tests/templates/debug-protection-nodes/DebugProtectionFunctionCallTemplate.spec.ts @@ -115,7 +115,7 @@ describe('DebugProtectionFunctionCallTemplate (): string', () => { { ...NO_ADDITIONAL_NODES_PRESET, debugProtection: true, - target: ObfuscationTarget.Extension + target: ObfuscationTarget.BrowserNoEval } ); diff --git a/test/unit-tests/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.spec.ts b/test/unit-tests/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.spec.ts index 80401db0..79032a4e 100644 --- a/test/unit-tests/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.spec.ts +++ b/test/unit-tests/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.spec.ts @@ -11,8 +11,9 @@ import { IInversifyContainerFacade } from '../../../../src/interfaces/container/ import { INodeTransformer } from '../../../../src/interfaces/node-transformers/INodeTransformer'; import { NodeTransformer } from '../../../../src/enums/node-transformers/NodeTransformer'; -import { Nodes } from '../../../../src/node/Nodes'; +import { NodeFactory } from '../../../../src/node/NodeFactory'; import { NodeUtils } from '../../../../src/node/NodeUtils'; +import { NodeMetadata } from '../../../../src/node/NodeMetadata'; describe('ObfuscatingGuardsTransformer', () => { describe('transformNode (node: ESTree.Node, parentNode: ESTree.Node): ESTree.Node', () => { @@ -28,7 +29,7 @@ describe('ObfuscatingGuardsTransformer', () => { }); describe('Variant #1: valid node', () => { - const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo'); + const identifier: ESTree.Identifier = NodeFactory.identifierNode('foo'); const expectedResult: ESTree.Identifier = NodeUtils.clone(identifier); @@ -37,7 +38,7 @@ describe('ObfuscatingGuardsTransformer', () => { before(() => { identifier.parentNode = identifier; - expectedResult.ignoredNode = false; + NodeMetadata.set(expectedResult, { ignoredNode: false }); result = obfuscatingGuardsTransformer.transformNode(identifier, identifier); }); @@ -48,8 +49,8 @@ describe('ObfuscatingGuardsTransformer', () => { }); describe('Variant #2: invalid node', () => { - const expressionStatement: ESTree.ExpressionStatement = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('foo') + const expressionStatement: ESTree.ExpressionStatement = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('foo') ); const expectedResult: ESTree.ExpressionStatement = NodeUtils.clone(expressionStatement); @@ -63,7 +64,7 @@ describe('ObfuscatingGuardsTransformer', () => { expectedResult.directive = 'use strict'; expectedResult.parentNode = expectedResult; - expectedResult.ignoredNode = true; + NodeMetadata.set(expectedResult, { ignoredNode: true }); result = obfuscatingGuardsTransformer .transformNode(expressionStatement, expressionStatement); diff --git a/test/unit-tests/node/node-appender/NodeAppender.spec.ts b/test/unit-tests/node/node-appender/NodeAppender.spec.ts index 278834fd..12d93dae 100644 --- a/test/unit-tests/node/node-appender/NodeAppender.spec.ts +++ b/test/unit-tests/node/node-appender/NodeAppender.spec.ts @@ -16,7 +16,7 @@ import { readFileAsString } from '../../../helpers/readFileAsString'; import { InversifyContainerFacade } from '../../../../src/container/InversifyContainerFacade'; import { NodeAppender } from '../../../../src/node/NodeAppender'; -import { Nodes } from '../../../../src/node/Nodes'; +import { NodeFactory } from '../../../../src/node/NodeFactory'; import { NodeUtils } from '../../../../src/node/NodeUtils'; /** @@ -34,7 +34,7 @@ const convertCodeToStructure: (fixturePath: string) => TStatement[] = (fixturePa * @return {ESTree.Program} */ const convertCodeToAst: (fixturePath: string) => ESTree.Program = (fixturePath) => { - return Nodes.getProgramNode(convertCodeToStructure(fixturePath)); + return NodeFactory.programNode(convertCodeToStructure(fixturePath)); }; describe('NodeAppender', () => { diff --git a/test/unit-tests/node/node-guards/NodeGuards.spec.ts b/test/unit-tests/node/node-guards/NodeGuards.spec.ts index 14b1762a..e0388db6 100644 --- a/test/unit-tests/node/node-guards/NodeGuards.spec.ts +++ b/test/unit-tests/node/node-guards/NodeGuards.spec.ts @@ -2,8 +2,8 @@ import * as ESTree from 'estree'; import { assert } from 'chai'; -import { Nodes } from '../../../../src/node/Nodes'; import { NodeGuards } from '../../../../src/node/NodeGuards'; +import { NodeFactory } from '../../../../src/node/NodeFactory'; import { NodeUtils } from '../../../../src/node/NodeUtils'; describe('NodeGuards', () => { @@ -11,8 +11,8 @@ describe('NodeGuards', () => { describe('truthful checks', () => { describe('Variant #1: block statement of function declaration', () => { const expectedResult: boolean = true; - const node: ESTree.Node = Nodes.getBlockStatementNode(); - const parentNode: ESTree.FunctionDeclaration = Nodes.getFunctionDeclarationNode( + const node: ESTree.Node = NodeFactory.blockStatementNode(); + const parentNode: ESTree.FunctionDeclaration = NodeFactory.functionDeclarationNode( 'foo', [], node @@ -32,8 +32,8 @@ describe('NodeGuards', () => { describe('Variant #2: block statement of function expression', () => { const expectedResult: boolean = true; - const node: ESTree.Node = Nodes.getBlockStatementNode(); - const parentNode: ESTree.FunctionExpression = Nodes.getFunctionExpressionNode( + const node: ESTree.Node = NodeFactory.blockStatementNode(); + const parentNode: ESTree.FunctionExpression = NodeFactory.functionExpressionNode( [], node ); @@ -54,20 +54,20 @@ describe('NodeGuards', () => { describe('false checks', () => { describe('Variant #1: switch-case node', () => { const expectedResult: boolean = false; - const node: ESTree.Node = Nodes.getSwitchCaseNode( - Nodes.getLiteralNode(1), + const node: ESTree.Node = NodeFactory.switchCaseNode( + NodeFactory.literalNode(1), [] ); - const parentNode: ESTree.FunctionDeclaration = Nodes.getFunctionDeclarationNode( + const parentNode: ESTree.FunctionDeclaration = NodeFactory.functionDeclarationNode( 'foo', [], - Nodes.getBlockStatementNode([ - Nodes.getSwitchStatementNode( - Nodes.getMemberExpressionNode( - Nodes.getIdentifierNode('bar'), - Nodes.getUpdateExpressionNode( + NodeFactory.blockStatementNode([ + NodeFactory.switchStatementNode( + NodeFactory.memberExpressionNode( + NodeFactory.identifierNode('bar'), + NodeFactory.updateExpressionNode( '++', - Nodes.getIdentifierNode('baz') + NodeFactory.identifierNode('baz') ), true ), @@ -90,14 +90,14 @@ describe('NodeGuards', () => { describe('Variant #2: literal node', () => { const expectedResult: boolean = false; - const node: ESTree.Node = Nodes.getLiteralNode(1); - const parentNode: ESTree.FunctionDeclaration = Nodes.getFunctionDeclarationNode( + const node: ESTree.Node = NodeFactory.literalNode(1); + const parentNode: ESTree.FunctionDeclaration = NodeFactory.functionDeclarationNode( 'foo', [], - Nodes.getBlockStatementNode([ - Nodes.getExpressionStatementNode( - Nodes.getCallExpressionNode( - Nodes.getIdentifierNode('bar'), + NodeFactory.blockStatementNode([ + NodeFactory.expressionStatementNode( + NodeFactory.callExpressionNode( + NodeFactory.identifierNode('bar'), [node] ) ) @@ -118,9 +118,9 @@ describe('NodeGuards', () => { describe('Variant #3: block statement of if statement', () => { const expectedResult: boolean = false; - const node: ESTree.Node = Nodes.getBlockStatementNode(); - const parentNode: ESTree.IfStatement = Nodes.getIfStatementNode( - Nodes.getIdentifierNode('foo'), + const node: ESTree.Node = NodeFactory.blockStatementNode(); + const parentNode: ESTree.IfStatement = NodeFactory.ifStatementNode( + NodeFactory.identifierNode('foo'), node ); @@ -142,7 +142,7 @@ describe('NodeGuards', () => { describe('truthful checks', () => { describe('Variant #1: program node', () => { const expectedResult: boolean = true; - const node: ESTree.Node = Nodes.getProgramNode(); + const node: ESTree.Node = NodeFactory.programNode(); let result: boolean; @@ -157,7 +157,7 @@ describe('NodeGuards', () => { describe('Variant #2: block statement node', () => { const expectedResult: boolean = true; - const node: ESTree.Node = Nodes.getBlockStatementNode(); + const node: ESTree.Node = NodeFactory.blockStatementNode(); let result: boolean; @@ -172,8 +172,8 @@ describe('NodeGuards', () => { describe('Variant #3: switch case node', () => { const expectedResult: boolean = true; - const node: ESTree.Node = Nodes.getSwitchCaseNode( - Nodes.getLiteralNode(1), + const node: ESTree.Node = NodeFactory.switchCaseNode( + NodeFactory.literalNode(1), [] ); @@ -192,7 +192,7 @@ describe('NodeGuards', () => { describe('false checks', () => { describe('Variant #1: literal node', () => { const expectedResult: boolean = false; - const node: ESTree.Node = Nodes.getLiteralNode(1); + const node: ESTree.Node = NodeFactory.literalNode(1); let result: boolean; @@ -207,7 +207,7 @@ describe('NodeGuards', () => { describe('Variant #2: identifier node', () => { const expectedResult: boolean = false; - const node: ESTree.Node = Nodes.getIdentifierNode('foo'); + const node: ESTree.Node = NodeFactory.identifierNode('foo'); let result: boolean; @@ -222,9 +222,9 @@ describe('NodeGuards', () => { describe('Variant #3: if-statement node', () => { const expectedResult: boolean = false; - const node: ESTree.Node = Nodes.getIfStatementNode( - Nodes.getIdentifierNode('foo'), - Nodes.getBlockStatementNode() + const node: ESTree.Node = NodeFactory.ifStatementNode( + NodeFactory.identifierNode('foo'), + NodeFactory.blockStatementNode() ); let result: boolean; @@ -240,8 +240,8 @@ describe('NodeGuards', () => { describe('Variant #4: switch-statement node', () => { const expectedResult: boolean = false; - const node: ESTree.Node = Nodes.getSwitchStatementNode( - Nodes.getIdentifierNode('foo'), + const node: ESTree.Node = NodeFactory.switchStatementNode( + NodeFactory.identifierNode('foo'), [] ); @@ -262,11 +262,11 @@ describe('NodeGuards', () => { describe('truthful checks', () => { describe('Variant #1: parent node is function declaration node', () => { const expectedResult: boolean = true; - const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo'); - const parentNode: ESTree.Node = Nodes.getFunctionDeclarationNode( + const identifier: ESTree.Identifier = NodeFactory.identifierNode('foo'); + const parentNode: ESTree.Node = NodeFactory.functionDeclarationNode( 'bar', [identifier], - Nodes.getBlockStatementNode() + NodeFactory.blockStatementNode() ); let result: boolean; @@ -283,10 +283,10 @@ describe('NodeGuards', () => { describe('Variant #2: parent node is computed property node', () => { const expectedResult: boolean = true; - const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo'); - const parentNode: ESTree.Node = Nodes.getPropertyNode( + const identifier: ESTree.Identifier = NodeFactory.identifierNode('foo'); + const parentNode: ESTree.Node = NodeFactory.propertyNode( identifier, - Nodes.getLiteralNode('bar'), + NodeFactory.literalNode('bar'), true ); @@ -304,9 +304,9 @@ describe('NodeGuards', () => { describe('Variant #4: parent node is computed member expression node', () => { const expectedResult: boolean = true; - const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo'); - const parentNode: ESTree.Node = Nodes.getMemberExpressionNode( - Nodes.getIdentifierNode('bar'), + const identifier: ESTree.Identifier = NodeFactory.identifierNode('foo'); + const parentNode: ESTree.Node = NodeFactory.memberExpressionNode( + NodeFactory.identifierNode('bar'), identifier, true ); @@ -325,10 +325,10 @@ describe('NodeGuards', () => { describe('Variant #4: parent node is computed method definition node', () => { const expectedResult: boolean = true; - const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo'); - const parentNode: ESTree.Node = Nodes.getMethodDefinitionNode( + const identifier: ESTree.Identifier = NodeFactory.identifierNode('foo'); + const parentNode: ESTree.Node = NodeFactory.methodDefinitionNode( identifier, - Nodes.getFunctionExpressionNode([], Nodes.getBlockStatementNode()), + NodeFactory.functionExpressionNode([], NodeFactory.blockStatementNode()), 'method', true ); @@ -349,10 +349,10 @@ describe('NodeGuards', () => { describe('false checks', () => { describe('Variant #1: node isn\'t an identifier', () => { const expectedResult: boolean = false; - const literal: ESTree.Literal = Nodes.getLiteralNode(1); - const parentNode: ESTree.Node = Nodes.getExpressionStatementNode( - Nodes.getCallExpressionNode( - Nodes.getIdentifierNode('foo'), + const literal: ESTree.Literal = NodeFactory.literalNode(1); + const parentNode: ESTree.Node = NodeFactory.expressionStatementNode( + NodeFactory.callExpressionNode( + NodeFactory.identifierNode('foo'), [literal] ) ); @@ -371,10 +371,10 @@ describe('NodeGuards', () => { describe('Variant #2: parent node isn\'t computed property node', () => { const expectedResult: boolean = false; - const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo'); - const parentNode: ESTree.Node = Nodes.getPropertyNode( + const identifier: ESTree.Identifier = NodeFactory.identifierNode('foo'); + const parentNode: ESTree.Node = NodeFactory.propertyNode( identifier, - Nodes.getLiteralNode('bar'), + NodeFactory.literalNode('bar'), false ); @@ -392,9 +392,9 @@ describe('NodeGuards', () => { describe('Variant #3: parent node isn\'t computed member expression node', () => { const expectedResult: boolean = false; - const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo'); - const parentNode: ESTree.Node = Nodes.getMemberExpressionNode( - Nodes.getIdentifierNode('bar'), + const identifier: ESTree.Identifier = NodeFactory.identifierNode('foo'); + const parentNode: ESTree.Node = NodeFactory.memberExpressionNode( + NodeFactory.identifierNode('bar'), identifier, false ); @@ -413,10 +413,10 @@ describe('NodeGuards', () => { describe('Variant #4: parent node isn\'t computed method definition node', () => { const expectedResult: boolean = false; - const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo'); - const parentNode: ESTree.Node = Nodes.getMethodDefinitionNode( + const identifier: ESTree.Identifier = NodeFactory.identifierNode('foo'); + const parentNode: ESTree.Node = NodeFactory.methodDefinitionNode( identifier, - Nodes.getFunctionExpressionNode([], Nodes.getBlockStatementNode()), + NodeFactory.functionExpressionNode([], NodeFactory.blockStatementNode()), 'method', false ); diff --git a/test/unit-tests/node/node-utils/NodeUtils.spec.ts b/test/unit-tests/node/node-utils/NodeUtils.spec.ts index 10b10656..db70d22c 100644 --- a/test/unit-tests/node/node-utils/NodeUtils.spec.ts +++ b/test/unit-tests/node/node-utils/NodeUtils.spec.ts @@ -4,7 +4,7 @@ import { assert } from 'chai'; import { TStatement } from '../../../../src/types/node/TStatement'; -import { Nodes } from '../../../../src/node/Nodes'; +import { NodeFactory } from '../../../../src/node/NodeFactory'; import { NodeUtils } from '../../../../src/node/NodeUtils'; describe('NodeUtils', () => { @@ -13,10 +13,10 @@ describe('NodeUtils', () => { expectedLiteralNode: ESTree.Literal; before(() => { - literalNode = Nodes.getLiteralNode('value'); + literalNode = NodeFactory.literalNode('value'); delete literalNode['x-verbatim-property']; - expectedLiteralNode = Nodes.getLiteralNode('value'); + expectedLiteralNode = NodeFactory.literalNode('value'); NodeUtils.addXVerbatimPropertyToLiterals(literalNode); }); @@ -33,40 +33,40 @@ describe('NodeUtils', () => { before(() => { // actual AST tree - const expressionStatementNode1: ESTree.ExpressionStatement = Nodes.getExpressionStatementNode(Nodes.getIdentifierNode('identifier')); - const expressionStatementNode2: ESTree.ExpressionStatement = Nodes.getExpressionStatementNode(Nodes.getIdentifierNode('identifier')); + const expressionStatementNode1: ESTree.ExpressionStatement = NodeFactory.expressionStatementNode(NodeFactory.identifierNode('identifier')); + const expressionStatementNode2: ESTree.ExpressionStatement = NodeFactory.expressionStatementNode(NodeFactory.identifierNode('identifier')); - const ifStatementBlockStatementNode1: ESTree.BlockStatement = Nodes.getBlockStatementNode([ + const ifStatementBlockStatementNode1: ESTree.BlockStatement = NodeFactory.blockStatementNode([ expressionStatementNode1, expressionStatementNode2 ]); - const ifStatementNode1: ESTree.IfStatement = Nodes.getIfStatementNode( - Nodes.getLiteralNode(true), + const ifStatementNode1: ESTree.IfStatement = NodeFactory.ifStatementNode( + NodeFactory.literalNode(true), ifStatementBlockStatementNode1 ); // expected AST tree - const expressionStatementNode3: ESTree.ExpressionStatement = Nodes.getExpressionStatementNode(Nodes.getIdentifierNode('identifier')); - const expressionStatementNode4: ESTree.ExpressionStatement = Nodes.getExpressionStatementNode(Nodes.getIdentifierNode('identifier')); + const expressionStatementNode3: ESTree.ExpressionStatement = NodeFactory.expressionStatementNode(NodeFactory.identifierNode('identifier')); + const expressionStatementNode4: ESTree.ExpressionStatement = NodeFactory.expressionStatementNode(NodeFactory.identifierNode('identifier')); - const ifStatementBlockStatementNode2: ESTree.BlockStatement = Nodes.getBlockStatementNode([ + const ifStatementBlockStatementNode2: ESTree.BlockStatement = NodeFactory.blockStatementNode([ expressionStatementNode3, expressionStatementNode4 ]); - const ifStatementNode2: ESTree.IfStatement = Nodes.getIfStatementNode( - Nodes.getLiteralNode(true), + const ifStatementNode2: ESTree.IfStatement = NodeFactory.ifStatementNode( + NodeFactory.literalNode(true), ifStatementBlockStatementNode2 ); programNode = NodeUtils.clone( - Nodes.getProgramNode([ + NodeFactory.programNode([ ifStatementNode1 ]) ); expectedProgramNode = NodeUtils.parentize( - Nodes.getProgramNode([ + NodeFactory.programNode([ ifStatementNode2 ]) ); @@ -83,34 +83,34 @@ describe('NodeUtils', () => { before(() => { // actual AST tree - const arrayExpressionNode: ESTree.ArrayExpression = Nodes.getArrayExpressionNode([ - Nodes.getLiteralNode(1), - Nodes.getLiteralNode(2), + const arrayExpressionNode: ESTree.ArrayExpression = NodeFactory.arrayExpressionNode([ + NodeFactory.literalNode(1), + NodeFactory.literalNode(2), null, - Nodes.getLiteralNode(4) + NodeFactory.literalNode(4) ]); - const expressionStatementNode: ESTree.ExpressionStatement = Nodes.getExpressionStatementNode( + const expressionStatementNode: ESTree.ExpressionStatement = NodeFactory.expressionStatementNode( arrayExpressionNode ); // expected AST tree - const expectedArrayExpressionNode: ESTree.ArrayExpression = Nodes.getArrayExpressionNode([ - Nodes.getLiteralNode(1), - Nodes.getLiteralNode(2), + const expectedArrayExpressionNode: ESTree.ArrayExpression = NodeFactory.arrayExpressionNode([ + NodeFactory.literalNode(1), + NodeFactory.literalNode(2), null, - Nodes.getLiteralNode(4) + NodeFactory.literalNode(4) ]); - const expectedExpressionStatementNode: ESTree.ExpressionStatement = Nodes.getExpressionStatementNode( + const expectedExpressionStatementNode: ESTree.ExpressionStatement = NodeFactory.expressionStatementNode( expectedArrayExpressionNode ); programNode = NodeUtils.clone( - Nodes.getProgramNode([ + NodeFactory.programNode([ expressionStatementNode ]) ); expectedProgramNode = NodeUtils.parentize( - Nodes.getProgramNode([ + NodeFactory.programNode([ expectedExpressionStatementNode ]) ); @@ -131,13 +131,13 @@ describe('NodeUtils', () => { var abc = 'cde'; `; - const identifierNode: ESTree.Identifier = Nodes.getIdentifierNode('abc'); - const literalNode: ESTree.Literal = Nodes.getLiteralNode('cde'); - const variableDeclaratorNode: ESTree.VariableDeclarator = Nodes.getVariableDeclaratorNode(identifierNode, literalNode); - const variableDeclarationNode: ESTree.VariableDeclaration = Nodes.getVariableDeclarationNode([ + const identifierNode: ESTree.Identifier = NodeFactory.identifierNode('abc'); + const literalNode: ESTree.Literal = NodeFactory.literalNode('cde'); + const variableDeclaratorNode: ESTree.VariableDeclarator = NodeFactory.variableDeclaratorNode(identifierNode, literalNode); + const variableDeclarationNode: ESTree.VariableDeclaration = NodeFactory.variableDeclarationNode([ variableDeclaratorNode ]); - const programNode: ESTree.Program = Nodes.getProgramNode([ + const programNode: ESTree.Program = NodeFactory.programNode([ variableDeclarationNode ]); @@ -162,11 +162,11 @@ describe('NodeUtils', () => { before(() => { structure = [ - Nodes.getProgramNode([ - Nodes.getVariableDeclarationNode([ - Nodes.getVariableDeclaratorNode( - Nodes.getIdentifierNode('abc'), - Nodes.getLiteralNode('cde') + NodeFactory.programNode([ + NodeFactory.variableDeclarationNode([ + NodeFactory.variableDeclaratorNode( + NodeFactory.identifierNode('abc'), + NodeFactory.literalNode('cde') ) ]) ]) @@ -192,37 +192,37 @@ describe('NodeUtils', () => { programNode: ESTree.Program; before(() => { - expressionStatementNode1 = Nodes.getExpressionStatementNode(Nodes.getIdentifierNode('identifier')); - expressionStatementNode2 = Nodes.getExpressionStatementNode(Nodes.getIdentifierNode('identifier')); - expressionStatementNode3 = Nodes.getExpressionStatementNode(Nodes.getIdentifierNode('identifier')); + expressionStatementNode1 = NodeFactory.expressionStatementNode(NodeFactory.identifierNode('identifier')); + expressionStatementNode2 = NodeFactory.expressionStatementNode(NodeFactory.identifierNode('identifier')); + expressionStatementNode3 = NodeFactory.expressionStatementNode(NodeFactory.identifierNode('identifier')); - ifStatementBlockStatementNode2 = Nodes.getBlockStatementNode([ + ifStatementBlockStatementNode2 = NodeFactory.blockStatementNode([ expressionStatementNode2, expressionStatementNode3 ]); - ifStatementNode2 = Nodes.getIfStatementNode( - Nodes.getLiteralNode(true), + ifStatementNode2 = NodeFactory.ifStatementNode( + NodeFactory.literalNode(true), ifStatementBlockStatementNode2 ); - ifStatementBlockStatementNode1 = Nodes.getBlockStatementNode([ + ifStatementBlockStatementNode1 = NodeFactory.blockStatementNode([ ifStatementNode2 ]); - ifStatementNode1 = Nodes.getIfStatementNode( - Nodes.getLiteralNode(true), + ifStatementNode1 = NodeFactory.ifStatementNode( + NodeFactory.literalNode(true), ifStatementBlockStatementNode1 ); - functionDeclarationBlockStatementNode = Nodes.getBlockStatementNode([ + functionDeclarationBlockStatementNode = NodeFactory.blockStatementNode([ expressionStatementNode1, ifStatementNode1 ]); - functionDeclarationNode = Nodes.getFunctionDeclarationNode('test', [], functionDeclarationBlockStatementNode); + functionDeclarationNode = NodeFactory.functionDeclarationNode('test', [], functionDeclarationBlockStatementNode); - programNode = Nodes.getProgramNode([ + programNode = NodeFactory.programNode([ functionDeclarationNode ]); @@ -301,17 +301,17 @@ describe('NodeUtils', () => { statementNode3: ESTree.Statement; before(() => { - statementNode1 = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('a') + statementNode1 = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('a') ); - statementNode2 = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('b') + statementNode2 = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('b') ); - statementNode3 = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('c') + statementNode3 = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('c') ); - const blockStatementNode: ESTree.BlockStatement = Nodes.getBlockStatementNode([ + const blockStatementNode: ESTree.BlockStatement = NodeFactory.blockStatementNode([ statementNode1, statementNode2, statementNode3 @@ -341,18 +341,18 @@ describe('NodeUtils', () => { statementNode3: ESTree.Statement; before(() => { - statementNode1 = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('a') + statementNode1 = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('a') ); - statementNode2 = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('b') + statementNode2 = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('b') ); - statementNode3 = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('c') + statementNode3 = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('c') ); - const switchCaseNode: ESTree.SwitchCase = Nodes.getSwitchCaseNode( - Nodes.getLiteralNode(true), + const switchCaseNode: ESTree.SwitchCase = NodeFactory.switchCaseNode( + NodeFactory.literalNode(true), [ statementNode1, statementNode2, @@ -386,17 +386,17 @@ describe('NodeUtils', () => { statementNode3: ESTree.Statement; before(() => { - statementNode1 = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('a') + statementNode1 = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('a') ); - statementNode2 = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('b') + statementNode2 = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('b') ); - statementNode3 = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('c') + statementNode3 = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('c') ); - const blockStatementNode: ESTree.BlockStatement = Nodes.getBlockStatementNode([ + const blockStatementNode: ESTree.BlockStatement = NodeFactory.blockStatementNode([ statementNode1, statementNode2, statementNode3 @@ -426,18 +426,18 @@ describe('NodeUtils', () => { statementNode3: ESTree.Statement; before(() => { - statementNode1 = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('a') + statementNode1 = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('a') ); - statementNode2 = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('b') + statementNode2 = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('b') ); - statementNode3 = Nodes.getExpressionStatementNode( - Nodes.getIdentifierNode('c') + statementNode3 = NodeFactory.expressionStatementNode( + NodeFactory.identifierNode('c') ); - const switchCaseNode: ESTree.SwitchCase = Nodes.getSwitchCaseNode( - Nodes.getLiteralNode(true), + const switchCaseNode: ESTree.SwitchCase = NodeFactory.switchCaseNode( + NodeFactory.literalNode(true), [ statementNode1, statementNode2, @@ -481,59 +481,59 @@ describe('NodeUtils', () => { programNode: ESTree.Program; before(() => { - expressionStatementNode1 = Nodes.getExpressionStatementNode(Nodes.getIdentifierNode('identifier')); - expressionStatementNode2 = Nodes.getExpressionStatementNode(Nodes.getIdentifierNode('identifier')); - expressionStatementNode3 = Nodes.getExpressionStatementNode(Nodes.getIdentifierNode('identifier')); + expressionStatementNode1 = NodeFactory.expressionStatementNode(NodeFactory.identifierNode('identifier')); + expressionStatementNode2 = NodeFactory.expressionStatementNode(NodeFactory.identifierNode('identifier')); + expressionStatementNode3 = NodeFactory.expressionStatementNode(NodeFactory.identifierNode('identifier')); - ifStatementBlockStatementNode3 = Nodes.getBlockStatementNode([ + ifStatementBlockStatementNode3 = NodeFactory.blockStatementNode([ expressionStatementNode2, expressionStatementNode3 ]); - ifStatementNode3 = Nodes.getIfStatementNode( - Nodes.getLiteralNode(true), + ifStatementNode3 = NodeFactory.ifStatementNode( + NodeFactory.literalNode(true), ifStatementBlockStatementNode3 ); - ifStatementBlockStatementNode2 = Nodes.getBlockStatementNode(); + ifStatementBlockStatementNode2 = NodeFactory.blockStatementNode(); - ifStatementBlockStatementNode1 = Nodes.getBlockStatementNode([ + ifStatementBlockStatementNode1 = NodeFactory.blockStatementNode([ ifStatementNode3 ]); - ifStatementNode2 = Nodes.getIfStatementNode( - Nodes.getLiteralNode(true), + ifStatementNode2 = NodeFactory.ifStatementNode( + NodeFactory.literalNode(true), ifStatementBlockStatementNode2 ); - ifStatementNode1 = Nodes.getIfStatementNode( - Nodes.getLiteralNode(true), + ifStatementNode1 = NodeFactory.ifStatementNode( + NodeFactory.literalNode(true), ifStatementBlockStatementNode1 ); - switchCaseNode = Nodes.getSwitchCaseNode( - Nodes.getLiteralNode(1), + switchCaseNode = NodeFactory.switchCaseNode( + NodeFactory.literalNode(1), [ ifStatementNode2 ] ); - switchStatementNode = Nodes.getSwitchStatementNode( - Nodes.getLiteralNode(1), + switchStatementNode = NodeFactory.switchStatementNode( + NodeFactory.literalNode(1), [ switchCaseNode ] ); - functionDeclarationBlockStatementNode = Nodes.getBlockStatementNode([ + functionDeclarationBlockStatementNode = NodeFactory.blockStatementNode([ expressionStatementNode1, ifStatementNode1, switchStatementNode ]); - functionDeclarationNode = Nodes.getFunctionDeclarationNode('test', [], functionDeclarationBlockStatementNode); + functionDeclarationNode = NodeFactory.functionDeclarationNode('test', [], functionDeclarationBlockStatementNode); - programNode = Nodes.getProgramNode([ + programNode = NodeFactory.programNode([ functionDeclarationNode ]); @@ -610,11 +610,11 @@ describe('NodeUtils', () => { unaryExpressionArgumentNode: ESTree.Node; before(() => { - const literalNode: ESTree.Literal = Nodes.getLiteralNode('test'); - const unaryExpressionNode2: ESTree.UnaryExpression = Nodes.getUnaryExpressionNode('!', literalNode); - const unaryExpressionNode1: ESTree.UnaryExpression = Nodes.getUnaryExpressionNode('!', unaryExpressionNode2); - const expressionStatementNode: ESTree.ExpressionStatement = Nodes.getExpressionStatementNode(unaryExpressionNode1); - const programNode: ESTree.Program = Nodes.getProgramNode([ + const literalNode: ESTree.Literal = NodeFactory.literalNode('test'); + const unaryExpressionNode2: ESTree.UnaryExpression = NodeFactory.unaryExpressionNode('!', literalNode); + const unaryExpressionNode1: ESTree.UnaryExpression = NodeFactory.unaryExpressionNode('!', unaryExpressionNode2); + const expressionStatementNode: ESTree.ExpressionStatement = NodeFactory.expressionStatementNode(unaryExpressionNode1); + const programNode: ESTree.Program = NodeFactory.programNode([ expressionStatementNode ]); @@ -641,23 +641,23 @@ describe('NodeUtils', () => { programNode: ESTree.Program; beforeEach(() => { - expressionStatementNode1 = Nodes.getExpressionStatementNode(Nodes.getIdentifierNode('identifier')); - expressionStatementNode2 = Nodes.getExpressionStatementNode(Nodes.getIdentifierNode('identifier')); + expressionStatementNode1 = NodeFactory.expressionStatementNode(NodeFactory.identifierNode('identifier')); + expressionStatementNode2 = NodeFactory.expressionStatementNode(NodeFactory.identifierNode('identifier')); - ifStatementBlockStatementNode = Nodes.getBlockStatementNode([ + ifStatementBlockStatementNode = NodeFactory.blockStatementNode([ expressionStatementNode1, expressionStatementNode2 ]); - ifStatementNode = Nodes.getIfStatementNode( - Nodes.getLiteralNode(true), + ifStatementNode = NodeFactory.ifStatementNode( + NodeFactory.literalNode(true), ifStatementBlockStatementNode ); }); describe('Variant #1: parentize AST-tree with `ProgramNode` as root node', () => { beforeEach(() => { - programNode = Nodes.getProgramNode([ + programNode = NodeFactory.programNode([ ifStatementNode ]); @@ -710,8 +710,8 @@ describe('NodeUtils', () => { describe('parentizeNode (node: T, parentNode: ESTree.Node): T', () => { describe('Variant #1: node with parent node', () => { - const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo'); - const breakStatement: ESTree.BreakStatement = Nodes.getBreakStatement(identifier); + const identifier: ESTree.Identifier = NodeFactory.identifierNode('foo'); + const breakStatement: ESTree.BreakStatement = NodeFactory.breakStatement(identifier); const expectedResult: ESTree.Identifier = NodeUtils.clone(identifier); @@ -729,7 +729,7 @@ describe('NodeUtils', () => { }); describe('Variant #2: node without parent node', () => { - const identifier: ESTree.Identifier = Nodes.getIdentifierNode('Foo'); + const identifier: ESTree.Identifier = NodeFactory.identifierNode('Foo'); const expectedResult: ESTree.Identifier = NodeUtils.clone(identifier); let result: ESTree.Identifier; diff --git a/yarn.lock b/yarn.lock index 839ca4e2..85194a7d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,447 +2,525 @@ # yarn lockfile v1 -"@babel/code-frame@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz#37e2b0cf7c56026b4b21d3927cadf81adec32ac6" +"@babel/cli@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.0.0-beta.41.tgz#d9fa9d5409a1e73a63d0e3ccc0889afc1f20d946" dependencies: - "@babel/highlight" "7.0.0-beta.40" - -"@babel/core@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-beta.40.tgz#455464dd81d499fd97d32b473f0331f74379a33f" - dependencies: - "@babel/code-frame" "7.0.0-beta.40" - "@babel/generator" "7.0.0-beta.40" - "@babel/helpers" "7.0.0-beta.40" - "@babel/template" "7.0.0-beta.40" - "@babel/traverse" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" - babylon "7.0.0-beta.40" + commander "^2.8.1" convert-source-map "^1.1.0" - debug "^3.0.1" + fs-readdir-recursive "^1.0.0" + glob "^7.0.0" + lodash "^4.2.0" + output-file-sync "^2.0.0" + slash "^1.0.0" + source-map "^0.5.0" + optionalDependencies: + chokidar "^1.6.1" + +"@babel/code-frame@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.41.tgz#68845c10a895050ab643e869100bbcf294b64e09" + dependencies: + "@babel/highlight" "7.0.0-beta.41" + +"@babel/core@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-beta.41.tgz#796a318ffd2c46e006f133a474b3be67f94e9ca5" + dependencies: + "@babel/code-frame" "7.0.0-beta.41" + "@babel/generator" "7.0.0-beta.41" + "@babel/helpers" "7.0.0-beta.41" + "@babel/template" "7.0.0-beta.41" + "@babel/traverse" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" + babylon "7.0.0-beta.41" + convert-source-map "^1.1.0" + debug "^3.1.0" json5 "^0.5.0" lodash "^4.2.0" micromatch "^2.3.11" resolve "^1.3.2" + semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.40.tgz#ab61f9556f4f71dbd1138949c795bb9a21e302ea" +"@babel/generator@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.41.tgz#5fce0676cea5acc1d493480d9fb7317ea2164d3f" dependencies: - "@babel/types" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.41" jsesc "^2.5.1" lodash "^4.2.0" source-map "^0.5.0" trim-right "^1.0.1" -"@babel/helper-annotate-as-pure@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.40.tgz#095dd4c70b231eba17ebf61c3434e6f9d71bd574" +"@babel/helper-annotate-as-pure@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.41.tgz#dcf9a282d013cc68dc8944966939b9db951948af" dependencies: - "@babel/types" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.41" -"@babel/helper-builder-binary-assignment-operator-visitor@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.40.tgz#bec4240c95d8b646812c5d4ac536a5579dbcdd53" +"@babel/helper-builder-binary-assignment-operator-visitor@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.41.tgz#7d30fa36fb7e2ac5d60d65990db41235718bc5df" dependencies: - "@babel/helper-explode-assignable-expression" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" + "@babel/helper-explode-assignable-expression" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" -"@babel/helper-call-delegate@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.40.tgz#5d5000d0bf76c68ee6866961e0b7eb6e9ed52438" +"@babel/helper-call-delegate@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.41.tgz#a95bfbe164ce3b2cb2579772639a60941f67c906" dependencies: - "@babel/helper-hoist-variables" "7.0.0-beta.40" - "@babel/traverse" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" + "@babel/helper-hoist-variables" "7.0.0-beta.41" + "@babel/traverse" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" -"@babel/helper-define-map@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.40.tgz#ad64c548dd98e7746305852f113ed04dc74329c0" +"@babel/helper-define-map@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.41.tgz#7f0114bf0242441d96c2158b274843984b2f0b62" dependencies: - "@babel/helper-function-name" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" + "@babel/helper-function-name" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" lodash "^4.2.0" -"@babel/helper-explode-assignable-expression@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.40.tgz#0ef579288d894a987c60bf0577c074ad18cfa9dd" +"@babel/helper-explode-assignable-expression@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.41.tgz#d390d4da67eaea6457ff202bc416fae3b9820c79" dependencies: - "@babel/traverse" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" + "@babel/traverse" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" -"@babel/helper-function-name@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.40.tgz#9d033341ab16517f40d43a73f2d81fc431ccd7b6" +"@babel/helper-function-name@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.41.tgz#5c50bc96c50b23383aad413b84a3ee806ceaa0e1" dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.40" - "@babel/template" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" + "@babel/helper-get-function-arity" "7.0.0-beta.41" + "@babel/template" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" -"@babel/helper-get-function-arity@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.40.tgz#ac0419cf067b0ec16453e1274f03878195791c6e" +"@babel/helper-get-function-arity@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.41.tgz#04b9e89d783f6c2223fbb81e11e59235a7781713" dependencies: - "@babel/types" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.41" -"@babel/helper-hoist-variables@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.40.tgz#59d47fd133782d60db89af0d18083ad3c9f4801c" +"@babel/helper-hoist-variables@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.41.tgz#c776a0c49cf359833b0cd8d4cacffb3fe78fe369" dependencies: - "@babel/types" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.41" -"@babel/helper-module-imports@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.40.tgz#251cbb6404599282e8f7356a5b32c9381bef5d2d" +"@babel/helper-module-imports@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.41.tgz#c639ad715483bb6ec585eb08793d3220a062bc70" dependencies: - "@babel/types" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.41" lodash "^4.2.0" -"@babel/helper-module-transforms@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.40.tgz#e5240afd47bd98f6ae65874b9ae508533abfee76" +"@babel/helper-module-transforms@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.41.tgz#ecb27cdf7b7ced08bc6d1aa2cf67056a2596650b" dependencies: - "@babel/helper-module-imports" "7.0.0-beta.40" - "@babel/helper-simple-access" "7.0.0-beta.40" - "@babel/template" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" + "@babel/helper-module-imports" "7.0.0-beta.41" + "@babel/helper-simple-access" "7.0.0-beta.41" + "@babel/helper-split-export-declaration" "7.0.0-beta.41" + "@babel/template" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" lodash "^4.2.0" -"@babel/helper-optimise-call-expression@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.40.tgz#f0e7f70d455bff8ab6a248a84f0221098fa468ac" +"@babel/helper-optimise-call-expression@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.41.tgz#4e2df61f5a0900ef113a3b861253136593d47f3d" dependencies: - "@babel/types" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.41" -"@babel/helper-regex@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0-beta.40.tgz#b47018ecca8ff66bb390c34a95ff71bc01495833" +"@babel/helper-plugin-utils@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.41.tgz#b515524853b2e509409ccbcd8b0bc3586da3e7f0" + +"@babel/helper-regex@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0-beta.41.tgz#5c02e6e31546d4f4a928a82e1c1a28f0d8937637" dependencies: lodash "^4.2.0" -"@babel/helper-remap-async-to-generator@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.40.tgz#33414d1cc160ebf0991ebc60afebe36b08feae05" +"@babel/helper-remap-async-to-generator@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.41.tgz#212e2f3fc24635d25cc6f1bd394da1dde1f91c36" dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-beta.40" - "@babel/helper-wrap-function" "7.0.0-beta.40" - "@babel/template" "7.0.0-beta.40" - "@babel/traverse" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" + "@babel/helper-annotate-as-pure" "7.0.0-beta.41" + "@babel/helper-wrap-function" "7.0.0-beta.41" + "@babel/template" "7.0.0-beta.41" + "@babel/traverse" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" -"@babel/helper-replace-supers@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.40.tgz#2ab0c9e7fa17d313745f1634ce6b7bccaa5dd5fe" +"@babel/helper-replace-supers@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.41.tgz#3c0c4a2e1f0cdd934ab0ef31bf41376f32f4ef74" dependencies: - "@babel/helper-optimise-call-expression" "7.0.0-beta.40" - "@babel/template" "7.0.0-beta.40" - "@babel/traverse" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" + "@babel/helper-optimise-call-expression" "7.0.0-beta.41" + "@babel/template" "7.0.0-beta.41" + "@babel/traverse" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" -"@babel/helper-simple-access@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.40.tgz#018f765090a3d25153778958969f235dc6ce5b57" +"@babel/helper-simple-access@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.41.tgz#fd6791214dac026d6cc3f2a3b15477137205fbad" dependencies: - "@babel/template" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" + "@babel/template" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" lodash "^4.2.0" -"@babel/helper-wrap-function@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.40.tgz#4db4630cdaf4fd47fa2c45b5b7a9ecc33ff3f2be" +"@babel/helper-split-export-declaration@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.41.tgz#8a0a67ded225ab7abeb4ad1fc138b4e0e882abee" dependencies: - "@babel/helper-function-name" "7.0.0-beta.40" - "@babel/template" "7.0.0-beta.40" - "@babel/traverse" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.41" -"@babel/helpers@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-beta.40.tgz#82f8e144f56b2896b1d624ca88ac4603023ececd" +"@babel/helper-wrap-function@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.41.tgz#3f10b9f23de4fa9619af2ce65f666a037ee0fd43" dependencies: - "@babel/template" "7.0.0-beta.40" - "@babel/traverse" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" + "@babel/helper-function-name" "7.0.0-beta.41" + "@babel/template" "7.0.0-beta.41" + "@babel/traverse" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" -"@babel/highlight@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.40.tgz#b43d67d76bf46e1d10d227f68cddcd263786b255" +"@babel/helpers@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-beta.41.tgz#66e1b9512a09677e0c4102d0569a8d2b8aceb119" + dependencies: + "@babel/template" "7.0.0-beta.41" + "@babel/traverse" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" + +"@babel/highlight@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.41.tgz#7e1d634de3821e664bc8ad9688f240530d239b95" dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/plugin-proposal-async-generator-functions@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.40.tgz#64f4aebc3fff33d2ae8f0a0870f0dfe2ff6815d6" +"@babel/plugin-proposal-async-generator-functions@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.41.tgz#6e39a214a01ccda277d0db1aa9d542374d4a0c05" dependencies: - "@babel/helper-remap-async-to-generator" "7.0.0-beta.40" - "@babel/plugin-syntax-async-generators" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + "@babel/helper-remap-async-to-generator" "7.0.0-beta.41" + "@babel/plugin-syntax-async-generators" "7.0.0-beta.41" -"@babel/plugin-proposal-object-rest-spread@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.40.tgz#ce35d2240908e52706a612eb26d67db667cd700f" +"@babel/plugin-proposal-object-rest-spread@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.41.tgz#4c779ce64867f5b51f6a5178128d732573f96b0a" dependencies: - "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.41" -"@babel/plugin-proposal-optional-catch-binding@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.40.tgz#e76ddcb21880eea0225f1dcde20a5e97ca85fd39" +"@babel/plugin-proposal-optional-catch-binding@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.41.tgz#bed5b2dc81e4927714c333a278df16ecb3449813" dependencies: - "@babel/plugin-syntax-optional-catch-binding" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + "@babel/plugin-syntax-optional-catch-binding" "7.0.0-beta.41" -"@babel/plugin-proposal-unicode-property-regex@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.40.tgz#1fb2c29c8bd88d5fff82ec080dbe24e7126ec460" +"@babel/plugin-proposal-unicode-property-regex@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.41.tgz#ff2451178d4e90da4366c821f900f4eb8c6c90d0" dependencies: - "@babel/helper-regex" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + "@babel/helper-regex" "7.0.0-beta.41" regexpu-core "^4.1.3" -"@babel/plugin-syntax-async-generators@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.40.tgz#6c45889569add3b3721cc9a481ae99906f240874" - -"@babel/plugin-syntax-object-rest-spread@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.40.tgz#d5e04536062e4df685c203ae48bb19bfe2cf235c" - -"@babel/plugin-syntax-optional-catch-binding@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.40.tgz#2e3de0919d05136bb658172ef9ba9ef7e84bce9e" - -"@babel/plugin-transform-arrow-functions@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.40.tgz#0842045b16835d6da0c334d0b09d575852f27962" - -"@babel/plugin-transform-async-to-generator@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.40.tgz#9195e2473a435b9a9aabc0b64572e9d1ec1c57cb" +"@babel/plugin-syntax-async-generators@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.41.tgz#a4ff2eff7491e9f93d92ca2b51a0ef6f966d98c0" dependencies: - "@babel/helper-module-imports" "7.0.0-beta.40" - "@babel/helper-remap-async-to-generator" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" -"@babel/plugin-transform-block-scoped-functions@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.40.tgz#491e61f860cabe69379233983fe7ca14f879e41f" - -"@babel/plugin-transform-block-scoping@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.40.tgz#23197ee6f696b7e5ace884f0dc5434df20d7dd97" +"@babel/plugin-syntax-object-rest-spread@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.41.tgz#e15b4ec0c9088f0ccd8f161c583545166a3df2c7" dependencies: + "@babel/helper-plugin-utils" "7.0.0-beta.41" + +"@babel/plugin-syntax-optional-catch-binding@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.41.tgz#115df4798d408731aed14cba981d369d40a7700e" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-beta.41" + +"@babel/plugin-transform-arrow-functions@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.41.tgz#0394aa76c3d0aa373d9085ce15a666ea3ff9d3b3" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-beta.41" + +"@babel/plugin-transform-async-to-generator@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.41.tgz#f400c3a67b05b475cccc3d5319c71e48525346cc" + dependencies: + "@babel/helper-module-imports" "7.0.0-beta.41" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + "@babel/helper-remap-async-to-generator" "7.0.0-beta.41" + +"@babel/plugin-transform-block-scoped-functions@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.41.tgz#cf149b92ed5cec02ed5874d290595a24d360ac07" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-beta.41" + +"@babel/plugin-transform-block-scoping@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.41.tgz#0adba984d5332d879879f98204ff89e9f316905f" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-beta.41" lodash "^4.2.0" -"@babel/plugin-transform-classes@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.40.tgz#c7a752009df4bb0f77179027daa0783f9a036b0b" +"@babel/plugin-transform-classes@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.41.tgz#bc5f1e1d7eb1c0a763cc912834f8cbaf4a12b31b" dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-beta.40" - "@babel/helper-define-map" "7.0.0-beta.40" - "@babel/helper-function-name" "7.0.0-beta.40" - "@babel/helper-optimise-call-expression" "7.0.0-beta.40" - "@babel/helper-replace-supers" "7.0.0-beta.40" + "@babel/helper-annotate-as-pure" "7.0.0-beta.41" + "@babel/helper-define-map" "7.0.0-beta.41" + "@babel/helper-function-name" "7.0.0-beta.41" + "@babel/helper-optimise-call-expression" "7.0.0-beta.41" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + "@babel/helper-replace-supers" "7.0.0-beta.41" + "@babel/helper-split-export-declaration" "7.0.0-beta.41" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.40.tgz#e4bd53455d9f96882cc8e9923895d71690f6969e" - -"@babel/plugin-transform-destructuring@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.40.tgz#503a4719eb9ed8c933b50d4ec3f106ed371852ee" - -"@babel/plugin-transform-dotall-regex@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.40.tgz#89b5ccff477624b97129f9a7e262a436437d7ae2" +"@babel/plugin-transform-computed-properties@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "http://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.41.tgz#16ec1978eba075aba847a9a5d9f469cba6dcc40a" dependencies: - "@babel/helper-regex" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + +"@babel/plugin-transform-destructuring@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.41.tgz#057111be37ff7927a85acba5ef9aba93028c4bb5" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-beta.41" + +"@babel/plugin-transform-dotall-regex@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.41.tgz#0dc2f0411a11b2821caf0d7a1ca82c079cb35db5" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-beta.41" + "@babel/helper-regex" "7.0.0-beta.41" regexpu-core "^4.1.3" -"@babel/plugin-transform-duplicate-keys@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.40.tgz#91599be229d4409cf3c9bbd094fb04d354bd8068" - -"@babel/plugin-transform-exponentiation-operator@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.40.tgz#bf0bafdd5aad7061c25dba25e29e12329838baeb" +"@babel/plugin-transform-duplicate-keys@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.41.tgz#8aa99958326aece8b2c6b9e6d75151445c732ce5" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" -"@babel/plugin-transform-for-of@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.40.tgz#67920d749bac4840ceeae9907d918dad33908244" - -"@babel/plugin-transform-function-name@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.40.tgz#37b5ca4f90fba207d359c0be3af5bfecdc737a3d" +"@babel/plugin-transform-exponentiation-operator@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.41.tgz#325fa6e2d53c9ee4e6757853c693a93a54ce0cdc" dependencies: - "@babel/helper-function-name" "7.0.0-beta.40" + "@babel/helper-builder-binary-assignment-operator-visitor" "7.0.0-beta.41" + "@babel/helper-plugin-utils" "7.0.0-beta.41" -"@babel/plugin-transform-literals@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.40.tgz#a6bf8808f97accf42a171b27a133802aa0650d3e" - -"@babel/plugin-transform-modules-amd@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.40.tgz#1882f1a02b16d261a332c87c035c9aeefd402683" +"@babel/plugin-transform-for-of@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.41.tgz#5f3519a5ffcca00eaa07f1c0faa83f35319fbff7" dependencies: - "@babel/helper-module-transforms" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" -"@babel/plugin-transform-modules-commonjs@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.40.tgz#a85f8c311f498a94a45531cc4ed5ff98b338a70a" +"@babel/plugin-transform-function-name@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.41.tgz#700bd4414fe43d789eaad7b608ad83f789deb90f" dependencies: - "@babel/helper-module-transforms" "7.0.0-beta.40" - "@babel/helper-simple-access" "7.0.0-beta.40" + "@babel/helper-function-name" "7.0.0-beta.41" + "@babel/helper-plugin-utils" "7.0.0-beta.41" -"@babel/plugin-transform-modules-systemjs@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.40.tgz#808b372bdbe06a28bf7a3870d8e810bd7298227a" +"@babel/plugin-transform-literals@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.41.tgz#64cd9505667e48acd17f89ccb04118e2e8f74315" dependencies: - "@babel/helper-hoist-variables" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" -"@babel/plugin-transform-modules-umd@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.40.tgz#5bd4e395a2673e687ed592608ad2fd4883a5a119" +"@babel/plugin-transform-modules-amd@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.41.tgz#e24c47638b95b7d60a5390f2a7eca0c6d68642fe" dependencies: - "@babel/helper-module-transforms" "7.0.0-beta.40" + "@babel/helper-module-transforms" "7.0.0-beta.41" + "@babel/helper-plugin-utils" "7.0.0-beta.41" -"@babel/plugin-transform-new-target@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.40.tgz#ee52bb87fbf325ac054811ec739b25fbce97809e" - -"@babel/plugin-transform-object-super@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.40.tgz#c64f9ba3587610d76c2edfdd8f507a59ea3ba63d" +"@babel/plugin-transform-modules-commonjs@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.41.tgz#df49c63a95021b15c810c8a3277f72273b047981" dependencies: - "@babel/helper-replace-supers" "7.0.0-beta.40" + "@babel/helper-module-transforms" "7.0.0-beta.41" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + "@babel/helper-simple-access" "7.0.0-beta.41" -"@babel/plugin-transform-parameters@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.40.tgz#efa366fab0dcbd0221b46aa2662c324b4b414d1d" +"@babel/plugin-transform-modules-systemjs@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.41.tgz#f4159e05c1f82994be1e82e351a4edfe83354ac7" dependencies: - "@babel/helper-call-delegate" "7.0.0-beta.40" - "@babel/helper-get-function-arity" "7.0.0-beta.40" + "@babel/helper-hoist-variables" "7.0.0-beta.41" + "@babel/helper-plugin-utils" "7.0.0-beta.41" -"@babel/plugin-transform-regenerator@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.40.tgz#f8a89ce89a0fae8e9cdfc2f2768104811517374a" +"@babel/plugin-transform-modules-umd@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.41.tgz#ba74d9d23e7c4c7f74959226ccacb4e57c57ba57" + dependencies: + "@babel/helper-module-transforms" "7.0.0-beta.41" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + +"@babel/plugin-transform-new-target@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.41.tgz#c0d4549ac4c740bbd4595ae5bee7ab7d959e3ef3" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-beta.41" + +"@babel/plugin-transform-object-super@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.41.tgz#0fe352a9136431803778797ef5093b0df43c8057" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-beta.41" + "@babel/helper-replace-supers" "7.0.0-beta.41" + +"@babel/plugin-transform-parameters@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.41.tgz#9a46ae4fe623b394a81dfddf465dc723730e2a46" + dependencies: + "@babel/helper-call-delegate" "7.0.0-beta.41" + "@babel/helper-get-function-arity" "7.0.0-beta.41" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + +"@babel/plugin-transform-regenerator@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.41.tgz#1b376823ea0b3b357b4ff605a256cfa001017608" dependencies: regenerator-transform "^0.12.3" -"@babel/plugin-transform-runtime@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.0.0-beta.40.tgz#6a4066affced4188b8eacb9e2fe13a5bca4c1542" +"@babel/plugin-transform-runtime@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.0.0-beta.41.tgz#43e69c05a4b8afa84aa7ff03435a32ccf650c768" dependencies: - "@babel/helper-module-imports" "7.0.0-beta.40" + "@babel/helper-module-imports" "7.0.0-beta.41" + "@babel/helper-plugin-utils" "7.0.0-beta.41" -"@babel/plugin-transform-shorthand-properties@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.40.tgz#421835237b0fcab0e67c941726d95dfc543514f4" - -"@babel/plugin-transform-spread@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.40.tgz#881578938e5750137301750bef7fdd0e01be76be" - -"@babel/plugin-transform-sticky-regex@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.40.tgz#5b44b31f8539fc66af18962e55752b82298032ee" +"@babel/plugin-transform-shorthand-properties@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.41.tgz#93431505f2ea38245a0e7f4e7055253b240e49ca" dependencies: - "@babel/helper-regex" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" -"@babel/plugin-transform-template-literals@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.40.tgz#5ef3377d1294aee39b913768a1f884806a45393b" +"@babel/plugin-transform-spread@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.41.tgz#88c11a4854c0e274d74a091c5605721b6b05fc45" dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" -"@babel/plugin-transform-typeof-symbol@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.40.tgz#67f0b8a5dd298b0aa5b347c3b6738c9c7baf1bcf" - -"@babel/plugin-transform-unicode-regex@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.40.tgz#a956187aad2965d7c095d64b1ae87eba10e0a2c6" +"@babel/plugin-transform-sticky-regex@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.41.tgz#00a204ee9719c33d8a8c96526de4ec908084aacb" dependencies: - "@babel/helper-regex" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + "@babel/helper-regex" "7.0.0-beta.41" + +"@babel/plugin-transform-template-literals@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.41.tgz#03bdb3fab54784dd754c32aa8a6d122d9d9caafa" + dependencies: + "@babel/helper-annotate-as-pure" "7.0.0-beta.41" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + +"@babel/plugin-transform-typeof-symbol@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.41.tgz#954ed7a16170d17c1928ab9cd52667011d69ab12" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-beta.41" + +"@babel/plugin-transform-unicode-regex@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.41.tgz#20011f4f7b45b539516566b792668b9faf706638" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-beta.41" + "@babel/helper-regex" "7.0.0-beta.41" regexpu-core "^4.1.3" -"@babel/preset-env@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0-beta.40.tgz#713292f9e410f76b3f4301330756c89343c4b2e4" +"@babel/preset-env@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0-beta.41.tgz#b9638878277eba78659ec75e00c30ac09079d8f0" dependencies: - "@babel/plugin-proposal-async-generator-functions" "7.0.0-beta.40" - "@babel/plugin-proposal-object-rest-spread" "7.0.0-beta.40" - "@babel/plugin-proposal-optional-catch-binding" "7.0.0-beta.40" - "@babel/plugin-proposal-unicode-property-regex" "7.0.0-beta.40" - "@babel/plugin-syntax-async-generators" "7.0.0-beta.40" - "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.40" - "@babel/plugin-syntax-optional-catch-binding" "7.0.0-beta.40" - "@babel/plugin-transform-arrow-functions" "7.0.0-beta.40" - "@babel/plugin-transform-async-to-generator" "7.0.0-beta.40" - "@babel/plugin-transform-block-scoped-functions" "7.0.0-beta.40" - "@babel/plugin-transform-block-scoping" "7.0.0-beta.40" - "@babel/plugin-transform-classes" "7.0.0-beta.40" - "@babel/plugin-transform-computed-properties" "7.0.0-beta.40" - "@babel/plugin-transform-destructuring" "7.0.0-beta.40" - "@babel/plugin-transform-dotall-regex" "7.0.0-beta.40" - "@babel/plugin-transform-duplicate-keys" "7.0.0-beta.40" - "@babel/plugin-transform-exponentiation-operator" "7.0.0-beta.40" - "@babel/plugin-transform-for-of" "7.0.0-beta.40" - "@babel/plugin-transform-function-name" "7.0.0-beta.40" - "@babel/plugin-transform-literals" "7.0.0-beta.40" - "@babel/plugin-transform-modules-amd" "7.0.0-beta.40" - "@babel/plugin-transform-modules-commonjs" "7.0.0-beta.40" - "@babel/plugin-transform-modules-systemjs" "7.0.0-beta.40" - "@babel/plugin-transform-modules-umd" "7.0.0-beta.40" - "@babel/plugin-transform-new-target" "7.0.0-beta.40" - "@babel/plugin-transform-object-super" "7.0.0-beta.40" - "@babel/plugin-transform-parameters" "7.0.0-beta.40" - "@babel/plugin-transform-regenerator" "7.0.0-beta.40" - "@babel/plugin-transform-shorthand-properties" "7.0.0-beta.40" - "@babel/plugin-transform-spread" "7.0.0-beta.40" - "@babel/plugin-transform-sticky-regex" "7.0.0-beta.40" - "@babel/plugin-transform-template-literals" "7.0.0-beta.40" - "@babel/plugin-transform-typeof-symbol" "7.0.0-beta.40" - "@babel/plugin-transform-unicode-regex" "7.0.0-beta.40" + "@babel/helper-plugin-utils" "7.0.0-beta.41" + "@babel/plugin-proposal-async-generator-functions" "7.0.0-beta.41" + "@babel/plugin-proposal-object-rest-spread" "7.0.0-beta.41" + "@babel/plugin-proposal-optional-catch-binding" "7.0.0-beta.41" + "@babel/plugin-proposal-unicode-property-regex" "7.0.0-beta.41" + "@babel/plugin-syntax-async-generators" "7.0.0-beta.41" + "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.41" + "@babel/plugin-syntax-optional-catch-binding" "7.0.0-beta.41" + "@babel/plugin-transform-arrow-functions" "7.0.0-beta.41" + "@babel/plugin-transform-async-to-generator" "7.0.0-beta.41" + "@babel/plugin-transform-block-scoped-functions" "7.0.0-beta.41" + "@babel/plugin-transform-block-scoping" "7.0.0-beta.41" + "@babel/plugin-transform-classes" "7.0.0-beta.41" + "@babel/plugin-transform-computed-properties" "7.0.0-beta.41" + "@babel/plugin-transform-destructuring" "7.0.0-beta.41" + "@babel/plugin-transform-dotall-regex" "7.0.0-beta.41" + "@babel/plugin-transform-duplicate-keys" "7.0.0-beta.41" + "@babel/plugin-transform-exponentiation-operator" "7.0.0-beta.41" + "@babel/plugin-transform-for-of" "7.0.0-beta.41" + "@babel/plugin-transform-function-name" "7.0.0-beta.41" + "@babel/plugin-transform-literals" "7.0.0-beta.41" + "@babel/plugin-transform-modules-amd" "7.0.0-beta.41" + "@babel/plugin-transform-modules-commonjs" "7.0.0-beta.41" + "@babel/plugin-transform-modules-systemjs" "7.0.0-beta.41" + "@babel/plugin-transform-modules-umd" "7.0.0-beta.41" + "@babel/plugin-transform-new-target" "7.0.0-beta.41" + "@babel/plugin-transform-object-super" "7.0.0-beta.41" + "@babel/plugin-transform-parameters" "7.0.0-beta.41" + "@babel/plugin-transform-regenerator" "7.0.0-beta.41" + "@babel/plugin-transform-shorthand-properties" "7.0.0-beta.41" + "@babel/plugin-transform-spread" "7.0.0-beta.41" + "@babel/plugin-transform-sticky-regex" "7.0.0-beta.41" + "@babel/plugin-transform-template-literals" "7.0.0-beta.41" + "@babel/plugin-transform-typeof-symbol" "7.0.0-beta.41" + "@babel/plugin-transform-unicode-regex" "7.0.0-beta.41" browserslist "^3.0.0" invariant "^2.2.2" semver "^5.3.0" -"@babel/runtime@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-beta.40.tgz#8e3b8f1d2d8639d010e991a7e99c1d9ef578f886" +"@babel/runtime@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-beta.41.tgz#776ce13391b8154ccfdea71018a47b63e4d97e74" dependencies: core-js "^2.5.3" regenerator-runtime "^0.11.1" -"@babel/template@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.40.tgz#034988c6424eb5c3268fe6a608626de1f4410fc8" +"@babel/template@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.41.tgz#628eeb93f9b5b423a252d3b6183f12e09505ab55" dependencies: - "@babel/code-frame" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" - babylon "7.0.0-beta.40" + "@babel/code-frame" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" + babylon "7.0.0-beta.41" lodash "^4.2.0" -"@babel/traverse@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.40.tgz#d140e449b2e093ef9fe1a2eecc28421ffb4e521e" +"@babel/traverse@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.41.tgz#1615f6fa87382c34511be8be1cd083eba9b1ae88" dependencies: - "@babel/code-frame" "7.0.0-beta.40" - "@babel/generator" "7.0.0-beta.40" - "@babel/helper-function-name" "7.0.0-beta.40" - "@babel/types" "7.0.0-beta.40" - babylon "7.0.0-beta.40" - debug "^3.0.1" + "@babel/code-frame" "7.0.0-beta.41" + "@babel/generator" "7.0.0-beta.41" + "@babel/helper-function-name" "7.0.0-beta.41" + "@babel/helper-split-export-declaration" "7.0.0-beta.41" + "@babel/types" "7.0.0-beta.41" + babylon "7.0.0-beta.41" + debug "^3.1.0" globals "^11.1.0" invariant "^2.2.0" lodash "^4.2.0" -"@babel/types@7.0.0-beta.40": - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.40.tgz#25c3d7aae14126abe05fcb098c65a66b6d6b8c14" +"@babel/types@7.0.0-beta.41": + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.41.tgz#776e6ec154fb8ec11da697be35b705c6eeb00e75" dependencies: esutils "^2.0.2" lodash "^4.2.0" @@ -526,9 +604,9 @@ version "8.0.53" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.53.tgz#396b35af826fa66aad472c8cb7b8d5e277f4e6d8" -"@types/node@9.4.6": - version "9.4.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.6.tgz#d8176d864ee48753d053783e4e463aec86b8d82e" +"@types/node@9.4.7": + version "9.4.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.7.tgz#57d81cd98719df2c9de118f2d5f3b1120dcd7275" "@types/rimraf@2.0.2": version "2.0.2" @@ -671,10 +749,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -argv@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" - arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -757,9 +831,9 @@ ast-types@0.10.1: version "0.10.1" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" -ast-types@0.11.2: - version "0.11.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.2.tgz#cc4e1d15a36b39979a1986fe1e91321cbfae7783" +ast-types@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8" async-each@^1.0.0: version "1.0.1" @@ -769,18 +843,18 @@ async@1.x, async@^1.4.0, async@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.0.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" - dependencies: - lodash "^4.14.0" - async@^2.1.4: version "2.5.0" resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" dependencies: lodash "^4.14.0" +async@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + dependencies: + lodash "^4.14.0" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -789,9 +863,9 @@ atob@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d" -awesome-typescript-loader@5.0.0-0: - version "5.0.0-0" - resolved "https://registry.yarnpkg.com/awesome-typescript-loader/-/awesome-typescript-loader-5.0.0-0.tgz#1330750fe603d54a5f0e25429185baed0e48f9f2" +awesome-typescript-loader@5.0.0-1: + version "5.0.0-1" + resolved "https://registry.yarnpkg.com/awesome-typescript-loader/-/awesome-typescript-loader-5.0.0-1.tgz#ab618ae4071f714825f0306871a0452fd1b347e8" dependencies: chalk "^2.3.1" enhanced-resolve "^4.0.0" @@ -809,30 +883,6 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-cli@7.0.0-beta.3: - version "7.0.0-beta.3" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-7.0.0-beta.3.tgz#c8e4923fc024154411c8e164b5e7249d1f2fead2" - dependencies: - babel-core "7.0.0-beta.3" - commander "^2.8.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.0.0" - glob "^7.0.0" - lodash "^4.2.0" - output-file-sync "^2.0.0" - slash "^1.0.0" - source-map "^0.5.0" - optionalDependencies: - chokidar "^1.6.1" - -babel-code-frame@7.0.0-beta.3: - version "7.0.0-beta.3" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-7.0.0-beta.3.tgz#1614a91b2ba0e3848559f410bbacd030726899c9" - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -841,25 +891,6 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@7.0.0-beta.3: - version "7.0.0-beta.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-beta.3.tgz#3777e45c802e7f6c13c5c3a01c618a388fb0e252" - dependencies: - babel-code-frame "7.0.0-beta.3" - babel-generator "7.0.0-beta.3" - babel-helpers "7.0.0-beta.3" - babel-template "7.0.0-beta.3" - babel-traverse "7.0.0-beta.3" - babel-types "7.0.0-beta.3" - babylon "7.0.0-beta.27" - convert-source-map "^1.1.0" - debug "^3.0.1" - json5 "^0.5.0" - lodash "^4.2.0" - micromatch "^2.3.11" - resolve "^1.3.2" - source-map "^0.5.0" - babel-core@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" @@ -884,16 +915,6 @@ babel-core@^6.26.0: slash "^1.0.0" source-map "^0.5.6" -babel-generator@7.0.0-beta.3: - version "7.0.0-beta.3" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-7.0.0-beta.3.tgz#afa85e34c50ef52ccd0ef37f4c4b5e1df65cac04" - dependencies: - babel-types "7.0.0-beta.3" - jsesc "^2.5.1" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - babel-generator@^6.18.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" @@ -971,15 +992,6 @@ babel-helper-explode-class@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-helper-function-name@7.0.0-beta.3: - version "7.0.0-beta.3" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-7.0.0-beta.3.tgz#e86dd2eb2c09e06e392e79e203fc02427b24c871" - dependencies: - babel-helper-get-function-arity "7.0.0-beta.3" - babel-template "7.0.0-beta.3" - babel-traverse "7.0.0-beta.3" - babel-types "7.0.0-beta.3" - babel-helper-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" @@ -990,12 +1002,6 @@ babel-helper-function-name@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-helper-get-function-arity@7.0.0-beta.3: - version "7.0.0-beta.3" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-7.0.0-beta.3.tgz#61a47709318a31bc2db872f4be9b4c8447198be8" - dependencies: - babel-types "7.0.0-beta.3" - babel-helper-get-function-arity@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" @@ -1046,14 +1052,6 @@ babel-helper-replace-supers@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-helpers@7.0.0-beta.3: - version "7.0.0-beta.3" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-7.0.0-beta.3.tgz#1758004cb44f6e4d9b7a3adfaeaa82acfddc0c4c" - dependencies: - babel-template "7.0.0-beta.3" - babel-traverse "7.0.0-beta.3" - babel-types "7.0.0-beta.3" - babel-helpers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" @@ -1461,16 +1459,6 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@7.0.0-beta.3: - version "7.0.0-beta.3" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-7.0.0-beta.3.tgz#ebb877b6070ce9912b0d0c22fcad3372165913a8" - dependencies: - babel-code-frame "7.0.0-beta.3" - babel-traverse "7.0.0-beta.3" - babel-types "7.0.0-beta.3" - babylon "7.0.0-beta.27" - lodash "^4.2.0" - babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" @@ -1481,19 +1469,6 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@7.0.0-beta.3: - version "7.0.0-beta.3" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-7.0.0-beta.3.tgz#3cf0a45d53d934d85275d8770775d7944fc7c199" - dependencies: - babel-code-frame "7.0.0-beta.3" - babel-helper-function-name "7.0.0-beta.3" - babel-types "7.0.0-beta.3" - babylon "7.0.0-beta.27" - debug "^3.0.1" - globals "^10.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" @@ -1508,14 +1483,6 @@ babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: invariant "^2.2.2" lodash "^4.17.4" -babel-types@7.0.0-beta.3: - version "7.0.0-beta.3" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-beta.3.tgz#cd927ca70e0ae8ab05f4aab83778cfb3e6eb20b4" - dependencies: - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^2.0.0" - babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" @@ -1525,18 +1492,18 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26 lodash "^4.17.4" to-fast-properties "^1.0.3" -babylon@7.0.0-beta.27: - version "7.0.0-beta.27" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.27.tgz#b6edd30ef30619e2f630eb52585fdda84e6542cd" - -babylon@7.0.0-beta.40: - version "7.0.0-beta.40" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.40.tgz#91fc8cd56d5eb98b28e6fde41045f2957779940a" +babylon@7.0.0-beta.41: + version "7.0.0-beta.41" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.41.tgz#e1b208d53a7a05ede2cf96cbecd86f5ed47f584f" babylon@^6.17.3, babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" +babylon@^7.0.0-beta.30: + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.40.tgz#91fc8cd56d5eb98b28e6fde41045f2957779940a" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -1818,7 +1785,7 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@2.3.2, chalk@^2.0.1: +chalk@2.3.2, chalk@^2.0.1, chalk@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" dependencies: @@ -1930,7 +1897,7 @@ class-validator@0.8.1: dependencies: validator "9.2.0" -cli-cursor@^1.0.1, cli-cursor@^1.0.2: +cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" dependencies: @@ -1971,12 +1938,12 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" +cliui@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" + string-width "^2.1.1" + strip-ansi "^4.0.0" wrap-ansi "^2.0.0" clone-buffer@^1.0.0: @@ -2021,14 +1988,6 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -codecov@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.0.0.tgz#c273b8c4f12945723e8dc9d25803d89343e5f28e" - dependencies: - argv "0.0.2" - request "2.81.0" - urlgrey "0.4.4" - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2064,14 +2023,18 @@ commander@2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" -commander@2.14.1, commander@^2.8.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" +commander@2.15.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322" commander@^2.12.1, commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" +commander@^2.8.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -2182,7 +2145,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^5.0.1: +cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" dependencies: @@ -2190,7 +2153,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.4: +cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" dependencies: @@ -2248,17 +2211,17 @@ date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" -dateformat@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" +dateformat@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" -debug@3.1.0, debug@^3.0.1, debug@^3.1.0: +debug@3.1.0, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" -debug@^2.0.0, debug@^2.1.0, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: +debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -2346,19 +2309,15 @@ detect-libc@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.2.tgz#71ad5d204bf17a6a6ca8f450c61454066ef461e1" -diff@3.5.0: +diff@3.5.0, diff@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" -diff@^2.1.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" - diff@^3.1.0, diff@^3.2.0: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" -diff@^3.3.0, diff@^3.3.1: +diff@^3.3.1: version "3.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" @@ -2377,10 +2336,6 @@ doctrine@0.7.2: esutils "^1.1.6" isarray "0.0.1" -dom-walk@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" - domain-browser@^1.1.1: version "1.1.7" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" @@ -2468,7 +2423,7 @@ errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.2.0: +error-ex@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: @@ -2608,18 +2563,10 @@ extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.0: +extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" -external-editor@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-1.1.1.tgz#12d7b0db850f7ff7e7081baf4005700060c4600b" - dependencies: - extend "^3.0.0" - spawn-sync "^1.0.15" - tmp "^0.0.29" - external-editor@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" @@ -2671,7 +2618,7 @@ fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" -figures@^1.3.5, figures@^1.7.0: +figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" dependencies: @@ -2913,16 +2860,6 @@ glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^6.0.1: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -2941,17 +2878,6 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" -global@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" - dependencies: - min-document "^2.19.0" - process "~0.5.1" - -globals@^10.0.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-10.4.0.tgz#5c477388b128a9e4c5c5d01c7a2aca68c68b2da7" - globals@^11.1.0: version "11.3.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.3.0.tgz#e04fdb7b9796d8adac9c8f64c14837b2313378b0" @@ -2960,17 +2886,6 @@ globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" -globby@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-4.1.0.tgz#080f54549ec1b82a6c60e631fc82e1211dbe95f8" - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^6.0.1" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -3026,7 +2941,7 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -grouped-queue@^0.3.0, grouped-queue@^0.3.3: +grouped-queue@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-0.3.3.tgz#c167d2a5319c5a0e0964ef6a25b7c2df8996c85c" dependencies: @@ -3269,25 +3184,6 @@ inquirer@3.0.6: strip-ansi "^3.0.0" through "^2.3.6" -inquirer@^1.0.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.2.3.tgz#4dec6f32f37ef7bb0b2ed3f1d1a5c3f545074918" - dependencies: - ansi-escapes "^1.1.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - external-editor "^1.1.0" - figures "^1.3.5" - lodash "^4.3.0" - mute-stream "0.0.6" - pinkie-promise "^2.0.0" - run-async "^2.2.0" - rx "^4.1.0" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - inquirer@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" @@ -3710,7 +3606,7 @@ jschardet@^1.4.2: version "1.6.0" resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.6.0.tgz#c7d1a71edcff2839db2f9ec30fc5d5ebd3c1a678" -jscodeshift@^0.4.0, jscodeshift@^0.4.1: +jscodeshift@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.4.1.tgz#da91a1c2eccfa03a3387a21d39948e251ced444a" dependencies: @@ -3730,6 +3626,26 @@ jscodeshift@^0.4.0, jscodeshift@^0.4.1: temp "^0.8.1" write-file-atomic "^1.2.0" +jscodeshift@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.0.tgz#bdb7b6cc20dd62c16aa728c3fa2d2fe66ca7c748" + dependencies: + babel-plugin-transform-flow-strip-types "^6.8.0" + babel-preset-es2015 "^6.9.0" + babel-preset-stage-1 "^6.5.0" + babel-register "^6.9.0" + babylon "^7.0.0-beta.30" + colors "^1.1.2" + flow-parser "^0.*" + lodash "^4.13.1" + micromatch "^2.3.7" + neo-async "^2.5.0" + node-dir "0.1.8" + nomnom "^1.8.1" + recast "^0.14.1" + temp "^0.8.1" + write-file-atomic "^1.2.0" + jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -3746,6 +3662,10 @@ json-buffer@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" +json-parse-better-errors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a" + json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -3890,13 +3810,13 @@ listr@^0.13.0: stream-to-observable "^0.2.0" strip-ansi "^3.0.1" -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" dependencies: graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" + parse-json "^4.0.0" + pify "^3.0.0" strip-bom "^3.0.0" loader-runner@^2.3.0: @@ -3922,7 +3842,7 @@ lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" -lodash@^4.11.1, lodash@^4.13.1, lodash@^4.17.2, lodash@^4.17.5, lodash@^4.2.0: +lodash@^4.13.1, lodash@^4.17.2, lodash@^4.17.5, lodash@^4.2.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" @@ -3934,18 +3854,18 @@ log-driver@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" -log-symbols@2.2.0, log-symbols@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - dependencies: - chalk "^2.0.1" - -log-symbols@^1.0.1, log-symbols@^1.0.2: +log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" dependencies: chalk "^1.0.0" +log-symbols@^2.1.0, log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + dependencies: + chalk "^2.0.1" + log-update@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" @@ -3988,6 +3908,12 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +make-dir@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" + dependencies: + pify "^3.0.0" + make-error@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" @@ -4017,7 +3943,7 @@ md5@2.2.1: crypt "~0.0.1" is-buffer "~1.1.1" -mem-fs-editor@^3.0.0: +mem-fs-editor@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz#dd0a6eaf2bb8a6b37740067aa549eb530105af9f" dependencies: @@ -4114,12 +4040,6 @@ mimic-response@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - dependencies: - dom-walk "^0.1.0" - minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" @@ -4128,7 +4048,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -4213,10 +4133,6 @@ multimatch@2.1.0, multimatch@^2.0.0: arrify "^1.0.0" minimatch "^3.0.0" -mute-stream@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" - mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -4497,7 +4413,7 @@ os-shim@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -4599,11 +4515,12 @@ parse-glob@^3.0.4: is-extglob "^1.0.0" is-glob "^2.0.0" -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" dependencies: - error-ex "^1.2.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" parse-passwd@^1.0.0: version "1.0.0" @@ -4643,11 +4560,11 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" dependencies: - pify "^2.0.0" + pify "^3.0.0" pathval@^1.0.0: version "1.1.0" @@ -4747,10 +4664,6 @@ process@^0.11.0: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" -process@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -4849,27 +4762,27 @@ rc@^1.1.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -read-chunk@^2.0.0: +read-chunk@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-2.1.0.tgz#6a04c0928005ed9d42e1a6ac5600e19cbc7ff655" dependencies: pify "^3.0.0" safe-buffer "^5.1.1" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" dependencies: find-up "^2.0.0" - read-pkg "^2.0.0" + read-pkg "^3.0.0" -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" dependencies: - load-json-file "^2.0.0" + load-json-file "^4.0.0" normalize-package-data "^2.3.2" - path-type "^2.0.0" + path-type "^3.0.0" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.4, readable-stream@^2.1.5: version "2.3.4" @@ -4914,11 +4827,11 @@ recast@^0.12.5: private "~0.1.5" source-map "~0.6.1" -recast@^0.14.4: - version "0.14.4" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.4.tgz#383dd606eac924c1157b0293b53191c34bd3c641" +recast@^0.14.1: + version "0.14.5" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.5.tgz#53f1f6edf7810bdfb39a25d0ff97d315bad7c314" dependencies: - ast-types "0.11.2" + ast-types "0.11.3" esprima "~4.0.0" private "~0.1.5" source-map "~0.6.1" @@ -5134,7 +5047,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@2.6.2, rimraf@^2.2.0, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: +rimraf@2, rimraf@2.6.2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -5206,7 +5119,7 @@ scoped-regex@^1.0.0: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" -semver@^5.5.0: +semver@^5.4.1, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" @@ -5267,9 +5180,9 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" -shelljs@^0.7.0: - version "0.7.8" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" +shelljs@^0.8.0: + version "0.8.1" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.1.tgz#729e038c413a2254c4078b95ed46e0397154a9f1" dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -5279,9 +5192,9 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -sinon@4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-4.4.2.tgz#c4c41d4bd346e1d33594daec2d5df0548334fc65" +sinon@4.4.6: + version "4.4.6" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-4.4.6.tgz#0b21ce56f1b11015749a82a3bbde2f46b78ec0e1" dependencies: "@sinonjs/formatio" "^2.0.0" diff "^3.1.0" @@ -5504,7 +5417,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.0: +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: @@ -5686,12 +5599,6 @@ timers-browserify@^2.0.2: dependencies: setimmediate "^1.0.4" -tmp@^0.0.29: - version "0.0.29" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" - dependencies: - os-tmpdir "~1.0.1" - tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -5841,9 +5748,9 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript@2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" +"typescript@2.8.0-dev.20180315 ": + version "2.8.0-dev.20180315" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.0-dev.20180315.tgz#8e2e49131bdd21b938b5c51e04f9cd068528907e" uglify-es@^3.3.4: version "3.3.9" @@ -5865,7 +5772,7 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" -uglifyjs-webpack-plugin@^1.1.1, uglifyjs-webpack-plugin@^1.2.2: +uglifyjs-webpack-plugin@^1.1.1: version "1.2.2" resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz#e7516d4367afdb715c3847841eb46f94c45ca2b9" dependencies: @@ -5933,12 +5840,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -untildify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-2.1.0.tgz#17eb2807987f76952e9c0485fc311d06a826a2e0" - dependencies: - os-homedir "^1.0.0" - untildify@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.2.tgz#7f1f302055b3fea0f3e81dc78eb36766cb65e3f1" @@ -5974,10 +5875,6 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -urlgrey@0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f" - use@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8" @@ -6073,39 +5970,35 @@ webpack-addons@^1.1.5: dependencies: jscodeshift "^0.4.0" -webpack-cli@2.0.10: - version "2.0.10" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.0.10.tgz#09b888fbaa0b4288ba4b94c4462b6f559dfcf51e" +webpack-cli@2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.0.12.tgz#64db876d044f03d8d6544281854b71a3a3c77dd3" dependencies: - chalk "^2.3.1" - codecov "^3.0.0" - cross-spawn "^6.0.4" - diff "^3.3.0" + chalk "^2.3.2" + cross-spawn "^6.0.5" + diff "^3.5.0" enhanced-resolve "^4.0.0" glob-all "^3.1.0" - global "^4.3.2" global-modules "^1.0.0" got "^8.2.0" inquirer "^5.1.0" interpret "^1.0.4" - jscodeshift "^0.4.1" + jscodeshift "^0.5.0" listr "^0.13.0" loader-utils "^1.1.0" lodash "^4.17.5" - log-symbols "2.2.0" + log-symbols "^2.2.0" mkdirp "^0.5.1" p-each-series "^1.0.0" p-lazy "^1.0.0" prettier "^1.5.3" - recast "^0.14.4" resolve-cwd "^2.0.0" - supports-color "^5.2.0" - uglifyjs-webpack-plugin "^1.2.2" + supports-color "^5.3.0" v8-compile-cache "^1.1.2" webpack-addons "^1.1.5" - yargs "9.0.1" + yargs "^11.0.0" yeoman-environment "^2.0.0" - yeoman-generator "github:ev1stensberg/generator#Feature-getArgument" + yeoman-generator "^2.0.3" webpack-node-externals@1.6.0: version "1.6.0" @@ -6229,29 +6122,28 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" dependencies: camelcase "^4.1.0" -yargs@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" +yargs@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" + cliui "^4.0.0" decamelize "^1.1.1" + find-up "^2.1.0" get-caller-file "^1.0.1" os-locale "^2.0.0" - read-pkg-up "^2.0.0" require-directory "^2.1.1" require-main-filename "^1.0.1" set-blocking "^2.0.0" string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1" - yargs-parser "^7.0.0" + yargs-parser "^9.0.2" yargs@~1.2.6: version "1.2.6" @@ -6268,24 +6160,7 @@ yargs@~3.10.0: decamelize "^1.0.0" window-size "0.1.0" -yeoman-environment@^1.1.0: - version "1.6.6" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-1.6.6.tgz#cd85fa67d156060e440d7807d7ef7cf0d2d1d671" - dependencies: - chalk "^1.0.0" - debug "^2.0.0" - diff "^2.1.2" - escape-string-regexp "^1.0.2" - globby "^4.0.0" - grouped-queue "^0.3.0" - inquirer "^1.0.2" - lodash "^4.11.1" - log-symbols "^1.0.1" - mem-fs "^1.1.0" - text-table "^0.2.0" - untildify "^2.0.0" - -yeoman-environment@^2.0.0: +yeoman-environment@^2.0.0, yeoman-environment@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.0.5.tgz#84f22bafa84088971fe99ea85f654a3a3dd2b693" dependencies: @@ -6303,35 +6178,35 @@ yeoman-environment@^2.0.0: text-table "^0.2.0" untildify "^3.0.2" -"yeoman-generator@github:ev1stensberg/generator#Feature-getArgument": - version "1.1.1" - resolved "https://codeload.github.com/ev1stensberg/generator/tar.gz/9e24fa31c85302ca1145ae34fc68b4f133251ca0" +yeoman-generator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-2.0.3.tgz#19426ed22687ffe05d31526c3f1c2cf67ba768f3" dependencies: - async "^2.0.0" - chalk "^1.0.0" + async "^2.6.0" + chalk "^2.3.0" cli-table "^0.3.1" - cross-spawn "^5.0.1" + cross-spawn "^5.1.0" dargs "^5.1.0" - dateformat "^2.0.0" - debug "^2.1.0" + dateformat "^3.0.2" + debug "^3.1.0" detect-conflict "^1.0.0" error "^7.0.2" find-up "^2.1.0" github-username "^4.0.0" istextorbinary "^2.1.0" - lodash "^4.11.1" - mem-fs-editor "^3.0.0" + lodash "^4.17.4" + make-dir "^1.1.0" + mem-fs-editor "^3.0.2" minimist "^1.2.0" - mkdirp "^0.5.0" pretty-bytes "^4.0.2" - read-chunk "^2.0.0" - read-pkg-up "^2.0.0" - rimraf "^2.2.0" + read-chunk "^2.1.0" + read-pkg-up "^3.0.0" + rimraf "^2.6.2" run-async "^2.0.0" - shelljs "^0.7.0" + shelljs "^0.8.0" text-table "^0.2.0" through2 "^2.0.0" - yeoman-environment "^1.1.0" + yeoman-environment "^2.0.5" yn@^2.0.0: version "2.0.0"