From a32b8cd66845bda5b3df3e0342693ea55f825e83 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Fri, 10 Jun 2016 21:50:42 +0300 Subject: [PATCH] test --- dist/index.js | 61 ++++++++++---- package.json | 3 + src/JavaScriptObfuscator.ts | 5 +- src/Kernel.ts | 11 +++ src/Obfuscator.ts | 10 ++- src/interfaces/IObfuscator.d.ts | 5 ++ tslint.json | 141 -------------------------------- typings.json | 3 +- typings/browser.d.ts | 1 + typings/main.d.ts | 1 + 10 files changed, 81 insertions(+), 160 deletions(-) create mode 100644 src/Kernel.ts create mode 100644 src/interfaces/IObfuscator.d.ts delete mode 100644 tslint.json diff --git a/dist/index.js b/dist/index.js index 4742d8cc..84b320b5 100644 --- a/dist/index.js +++ b/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; + /***/ } /******/ ]); \ No newline at end of file diff --git a/package.json b/package.json index a2a686e0..74abc012 100644 --- a/package.json +++ b/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", diff --git a/src/JavaScriptObfuscator.ts b/src/JavaScriptObfuscator.ts index b881d616..5a316473 100644 --- a/src/JavaScriptObfuscator.ts +++ b/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'); astTree = obfuscator.obfuscateNode(astTree); diff --git a/src/Kernel.ts b/src/Kernel.ts new file mode 100644 index 00000000..e7ab7871 --- /dev/null +++ b/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').to(Obfuscator); + +export default kernel; diff --git a/src/Obfuscator.ts b/src/Obfuscator.ts index 14065087..319e5923 100644 --- a/src/Obfuscator.ts +++ b/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} */ @@ -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 = nodesGroup.getNodes(); nodes.forEach((node: ICustomNode, key: string) => { diff --git a/src/interfaces/IObfuscator.d.ts b/src/interfaces/IObfuscator.d.ts new file mode 100644 index 00000000..bf29b0a8 --- /dev/null +++ b/src/interfaces/IObfuscator.d.ts @@ -0,0 +1,5 @@ +import { INode } from "./nodes/INode"; + +export interface IObfuscator { + obfuscateNode (node: INode): INode; +} \ No newline at end of file diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 73469d94..00000000 --- a/tslint.json +++ /dev/null @@ -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" - ] - } -} \ No newline at end of file diff --git a/typings.json b/typings.json index 2e55983e..d95e5ad3 100644 --- a/typings.json +++ b/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" } } diff --git a/typings/browser.d.ts b/typings/browser.d.ts index a6530880..b098e6fb 100644 --- a/typings/browser.d.ts +++ b/typings/browser.d.ts @@ -2,4 +2,5 @@ /// /// /// +/// /// diff --git a/typings/main.d.ts b/typings/main.d.ts index 037c3ccc..a43f0d58 100644 --- a/typings/main.d.ts +++ b/typings/main.d.ts @@ -2,4 +2,5 @@ /// /// /// +/// ///