sanex3339 vor 9 Jahren
Ursprung
Commit
a32b8cd668
10 geänderte Dateien mit 81 neuen und 160 gelöschten Zeilen
  1. 47 14
      dist/index.js
  2. 3 0
      package.json
  3. 4 1
      src/JavaScriptObfuscator.ts
  4. 11 0
      src/Kernel.ts
  5. 7 3
      src/Obfuscator.ts
  6. 5 0
      src/interfaces/IObfuscator.d.ts
  7. 0 141
      tslint.json
  8. 2 1
      typings.json
  9. 1 0
      typings/browser.d.ts
  10. 1 0
      typings/main.d.ts

+ 47 - 14
dist/index.js

@@ -631,10 +631,10 @@ module.exports =
 
 	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
+	var Kernel_1 = __webpack_require__(39);
 	var esprima = __webpack_require__(7);
 	var escodegen = __webpack_require__(9);
 	var DefaultPreset_1 = __webpack_require__(37);
-	var Obfuscator_1 = __webpack_require__(15);
 	var OptionsNormalizer_1 = __webpack_require__(16);
 
 	var JavaScriptObfuscator = function () {
@@ -643,16 +643,16 @@ module.exports =
 	    }
 
 	    _createClass(JavaScriptObfuscator, null, [{
-	        key: 'obfuscate',
+	        key: "obfuscate",
 	        value: function obfuscate(sourceCode, customOptions) {
 	            var astTree = esprima.parse(sourceCode),
 	                options = OptionsNormalizer_1.OptionsNormalizer.normalize(Object.assign({}, DefaultPreset_1.DEFAULT_PRESET, customOptions)),
-	                obfuscator = new Obfuscator_1.Obfuscator(options);
+	                obfuscator = Kernel_1.default.get('IObfuscator');
 	            astTree = obfuscator.obfuscateNode(astTree);
 	            return JavaScriptObfuscator.generateCode(astTree, options);
 	        }
 	    }, {
-	        key: 'generateCode',
+	        key: "generateCode",
 	        value: function generateCode(astTree, options) {
 	            var escodegenParams = Object.assign({}, JavaScriptObfuscator.escodegenParams);
 	            if (options.hasOwnProperty('compact')) {
@@ -752,8 +752,22 @@ module.exports =
 
 	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
 
+	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
+
 	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
+	var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) {
+	    var c = arguments.length,
+	        r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
+	        d;
+	    if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
+	        if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+	    }return c > 3 && r && Object.defineProperty(target, key, r), r;
+	};
+	var __metadata = undefined && undefined.__metadata || function (k, v) {
+	    if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+	};
+	var inversify_1 = __webpack_require__(38);
 	var estraverse = __webpack_require__(4);
 	var AppendState_1 = __webpack_require__(6);
 	var NodeType_1 = __webpack_require__(3);
@@ -770,7 +784,6 @@ module.exports =
 	var SelfDefendingNodesGroup_1 = __webpack_require__(27);
 	var UnicodeArrayNodesGroup_1 = __webpack_require__(28);
 	var VariableDeclarationObfuscator_1 = __webpack_require__(36);
-
 	var Obfuscator = function () {
 	    function Obfuscator() {
 	        var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
@@ -783,7 +796,7 @@ module.exports =
 	    }
 
 	    _createClass(Obfuscator, [{
-	        key: 'obfuscateNode',
+	        key: "obfuscateNode",
 	        value: function obfuscateNode(node) {
 	            this.setNewNodes();
 	            NodeUtils_1.NodeUtils.parentize(node);
@@ -793,12 +806,12 @@ module.exports =
 	            return node;
 	        }
 	    }, {
-	        key: 'setNode',
+	        key: "setNode",
 	        value: function setNode(nodeName, node) {
 	            this.nodes.set(nodeName, node);
 	        }
 	    }, {
-	        key: 'setNodesGroup',
+	        key: "setNodesGroup",
 	        value: function setNodesGroup(nodesGroup) {
 	            var _this = this;
 
@@ -808,7 +821,7 @@ module.exports =
 	            });
 	        }
 	    }, {
-	        key: 'afterObfuscation',
+	        key: "afterObfuscation",
 	        value: function afterObfuscation(astTree) {
 	            this.nodes.forEach(function (node) {
 	                if (node.getAppendState() === AppendState_1.AppendState.AfterObfuscation) {
@@ -817,7 +830,7 @@ module.exports =
 	            });
 	        }
 	    }, {
-	        key: 'beforeObfuscation',
+	        key: "beforeObfuscation",
 	        value: function beforeObfuscation(astTree) {
 	            this.nodes.forEach(function (node) {
 	                if (node.getAppendState() === AppendState_1.AppendState.BeforeObfuscation) {
@@ -826,7 +839,7 @@ module.exports =
 	            });
 	        }
 	    }, {
-	        key: 'initializeNodeObfuscators',
+	        key: "initializeNodeObfuscators",
 	        value: function initializeNodeObfuscators(node, parentNode) {
 	            var _this2 = this;
 
@@ -838,7 +851,7 @@ module.exports =
 	            });
 	        }
 	    }, {
-	        key: 'obfuscate',
+	        key: "obfuscate",
 	        value: function obfuscate(node) {
 	            var _this3 = this;
 
@@ -849,7 +862,7 @@ module.exports =
 	            });
 	        }
 	    }, {
-	        key: 'setNewNodes',
+	        key: "setNewNodes",
 	        value: function setNewNodes() {
 	            if (this.options['selfDefending']) {
 	                this.setNodesGroup(new SelfDefendingNodesGroup_1.SelfDefendingNodesGroup(this.options));
@@ -868,7 +881,7 @@ module.exports =
 
 	    return Obfuscator;
 	}();
-
+	Obfuscator = __decorate([inversify_1.injectable(), __metadata('design:paramtypes', [Object])], Obfuscator);
 	exports.Obfuscator = Obfuscator;
 
 /***/ },
@@ -2415,5 +2428,25 @@ module.exports =
 	    wrapUnicodeArrayCalls: true
 	});
 
+/***/ },
+/* 38 */
+/***/ function(module, exports) {
+
+	module.exports = require("inversify");
+
+/***/ },
+/* 39 */
+/***/ function(module, exports, __webpack_require__) {
+
+	"use strict";
+	"use strict";
+
+	var inversify_1 = __webpack_require__(38);
+	var Obfuscator_1 = __webpack_require__(15);
+	var kernel = new inversify_1.Kernel();
+	kernel.bind('IObfuscator').to(Obfuscator_1.Obfuscator);
+	Object.defineProperty(exports, "__esModule", { value: true });
+	exports.default = kernel;
+
 /***/ }
 /******/ ]);

+ 3 - 0
package.json

@@ -23,7 +23,10 @@
     "babel-loader": "^6.2.4",
     "babel-polyfill": "^6.9.1",
     "babel-preset-es2015": "^6.9.0",
+    "inversify": "^2.0.0-beta.8",
+    "inversify-dts": "^1.0.5",
     "lite-server": "^1.3.1",
+    "reflect-metadata": "^0.1.3",
     "ts-loader": "^0.8.2",
     "typings": "^0.8.1",
     "webpack": "^2.1.0-beta.12",

+ 4 - 1
src/JavaScriptObfuscator.ts

@@ -1,9 +1,12 @@
 "use strict";
 
+import kernel from "./Kernel";
+
 import * as esprima from 'esprima';
 import * as escodegen from 'escodegen';
 
 import { INode } from './interfaces/nodes/INode';
+import { IObfuscator } from "./interfaces/IObfuscator";
 import { IOptions } from './interfaces/IOptions';
 
 import { DEFAULT_PRESET } from './preset-options/DefaultPreset';
@@ -26,7 +29,7 @@ export class JavaScriptObfuscator {
     public static obfuscate (sourceCode: string, customOptions?: IOptions): string {
         let astTree: INode = esprima.parse(sourceCode),
             options: IOptions = OptionsNormalizer.normalize(Object.assign({}, DEFAULT_PRESET, customOptions)),
-            obfuscator: Obfuscator = new Obfuscator(options);
+            obfuscator: Obfuscator = kernel.get<IObfuscator>('IObfuscator');
 
         astTree = obfuscator.obfuscateNode(astTree);
 

+ 11 - 0
src/Kernel.ts

@@ -0,0 +1,11 @@
+import { IKernel } from "inversify";
+import { IObfuscator } from "./interfaces/IObfuscator";
+
+import { Kernel } from "inversify";
+import { Obfuscator } from "./Obfuscator";
+
+let kernel: IKernel = new Kernel();
+
+kernel.bind<IObfuscator>('IObfuscator').to(Obfuscator);
+
+export default kernel;

+ 7 - 3
src/Obfuscator.ts

@@ -1,8 +1,11 @@
+import { injectable } from "inversify";
+
 import * as estraverse from 'estraverse';
 
 import { ICustomNode } from './interfaces/ICustomNode';
 import { INodesGroup } from './interfaces/INodesGroup';
 import { INode } from './interfaces/nodes/INode';
+import { IObfuscator } from "./interfaces/IObfuscator";
 import { IOptions } from "./interfaces/IOptions";
 
 import { TNodeObfuscator } from "./types/TNodeObfuscator";
@@ -24,7 +27,8 @@ import { SelfDefendingNodesGroup } from "./node-groups/SelfDefendingNodesGroup";
 import { UnicodeArrayNodesGroup } from './node-groups/UnicodeArrayNodesGroup';
 import { VariableDeclarationObfuscator } from './node-obfuscators/VariableDeclarationObfuscator';
 
-export class Obfuscator {
+@injectable()
+export class Obfuscator implements IObfuscator {
     /**
      * @type {Map<string, Node>}
      */
@@ -81,14 +85,14 @@ export class Obfuscator {
      * @param nodeName
      * @param node
      */
-    public setNode (nodeName: string, node: ICustomNode): void {
+    private setNode (nodeName: string, node: ICustomNode): void {
         this.nodes.set(nodeName, node);
     }
 
     /**
      * @param nodesGroup
      */
-    public setNodesGroup (nodesGroup: INodesGroup): void {
+    private setNodesGroup (nodesGroup: INodesGroup): void {
         let nodes: Map <string, ICustomNode> = nodesGroup.getNodes();
 
         nodes.forEach((node: ICustomNode, key: string) => {

+ 5 - 0
src/interfaces/IObfuscator.d.ts

@@ -0,0 +1,5 @@
+import { INode } from "./nodes/INode";
+
+export interface IObfuscator {
+    obfuscateNode (node: INode): INode;
+}

+ 0 - 141
tslint.json

@@ -1,141 +0,0 @@
-{
-  "rules": {
-    "align": [
-      true,
-      "parameters",
-      "statements"
-    ],
-    "ban": [
-      true,
-      [ "_", "forEach" ],
-      [ "_", "each" ],
-      [ "$", "each" ],
-      [ "angular", "forEach" ]
-    ],
-    "class-name": true,
-    "comment-format": [
-      true,
-      "check-space",
-      "check-lowercase"
-    ],
-    "curly": true,
-    "eofline": true,
-    "forin": true,
-    "indent": [
-      true,
-      "spaces"
-    ],
-    "interface-name": [
-      true,
-      "always-prefix"
-    ],
-    "jsdoc-format": true,
-    "label-position": true,
-    "label-undefined": true,
-    "max-line-length": false,
-    "member-access": true,
-    "member-ordering": [
-      true,
-      { "order": "fields-first" }
-    ],
-    "new-parens": true,
-    "no-angle-bracket-type-assertion": false,
-    "no-any": false,
-    "no-arg": true,
-    "no-bitwise": true,
-    "no-conditional-assignment": true,
-    "no-consecutive-blank-lines": false,
-    "no-console": [
-      true,
-      "debug",
-      "info",
-      "time",
-      "timeEnd",
-      "trace"
-    ],
-    "no-construct": true,
-    "no-constructor-vars": true,
-    "no-debugger": true,
-    "no-default-export": true,
-    "no-duplicate-key": true,
-    "no-duplicate-variable": true,
-    "no-empty": false,
-    "no-eval": false,
-    "no-inferrable-types": false,
-    "no-internal-module": true,
-    "no-invalid-this": [
-      true,
-      "check-function-in-method"
-    ],
-    "no-null-keyword": false,
-    "no-reference": true,
-    "no-require-imports": false,
-    "no-shadowed-variable": false,
-    "no-string-literal": false,
-    "no-switch-case-fall-through": true,
-    "no-trailing-whitespace": false,
-    "no-unreachable": true,
-    "no-unused-expression": true,
-    "no-unused-variable": true,
-    "no-use-before-declare": true,
-    "no-var-keyword": true,
-    "no-var-requires": false,
-    "object-literal-sort-keys": true,
-    "one-line": [
-      true,
-      "check-open-brace",
-      "check-catch",
-      "check-else",
-      "check-finally",
-      "check-whitespace"
-    ],
-    "one-variable-per-declaration": false,
-    "quotemark": false,
-    "radix": true,
-    "semicolon": [true, "always"],
-    "switch-default": true,
-    "trailing-comma": false,
-    "triple-equals": [
-      true,
-      "allow-null-check",
-      "allow-undefined-check"
-    ],
-    "typedef": [
-      true,
-      "call-signature",
-      "parameter",
-      "arrow-parameter",
-      "property-declaration",
-      "variable-declaration",
-      "member-variable-declaration"
-    ],
-    "typedef-whitespace": [
-      true,
-      {
-        "call-signature": "nospace",
-        "index-signature": "nospace",
-        "parameter": "nospace",
-        "property-declaration": "nospace",
-        "variable-declaration": "nospace"
-      },
-      {
-        "call-signature": "space",
-        "index-signature": "space",
-        "parameter": "space",
-        "property-declaration": "space",
-        "variable-declaration": "space"
-      }
-    ],
-    "use-isnan": true,
-    "use-strict": false,
-    "variable-name": false,
-    "whitespace": [
-      true,
-      "check-branch",
-      "check-decl",
-      "check-operator",
-      "check-separator",
-      "check-type"
-    ]
-  }
-}

+ 2 - 1
typings.json

@@ -6,6 +6,7 @@
     "estree": "github:DefinitelyTyped/DefinitelyTyped/estree/estree.d.ts",
     "esprima": "github:DefinitelyTyped/DefinitelyTyped/esprima/esprima.d.ts",
     "escodegen": "github:DefinitelyTyped/DefinitelyTyped/escodegen/escodegen.d.ts",
-    "estraverse": "github:DefinitelyTyped/DefinitelyTyped/estraverse/estraverse.d.ts"
+    "estraverse": "github:DefinitelyTyped/DefinitelyTyped/estraverse/estraverse.d.ts",
+    "inversify": "npm:inversify-dts/inversify/inversify.d.ts"
   }
 }

+ 1 - 0
typings/browser.d.ts

@@ -2,4 +2,5 @@
 /// <reference path="browser/ambient/esprima/index.d.ts" />
 /// <reference path="browser/ambient/estraverse/index.d.ts" />
 /// <reference path="browser/ambient/estree/index.d.ts" />
+/// <reference path="browser/ambient/inversify/index.d.ts" />
 /// <reference path="browser/ambient/node/index.d.ts" />

+ 1 - 0
typings/main.d.ts

@@ -2,4 +2,5 @@
 /// <reference path="main/ambient/esprima/index.d.ts" />
 /// <reference path="main/ambient/estraverse/index.d.ts" />
 /// <reference path="main/ambient/estree/index.d.ts" />
+/// <reference path="main/ambient/inversify/index.d.ts" />
 /// <reference path="main/ambient/node/index.d.ts" />