mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
remove js files
This commit is contained in:
@@ -1,89 +0,0 @@
|
||||
"use strict";
|
||||
const AppendState_1 = require('./enums/AppendState');
|
||||
const FunctionDeclarationObfuscator_1 = require('./node-obfuscators/FunctionDeclarationObfuscator');
|
||||
const FunctionObfuscator_1 = require('./node-obfuscators/FunctionObfuscator');
|
||||
const LiteralObfuscator_1 = require('./node-obfuscators/LiteralObfuscator');
|
||||
const MemberExpressionObfuscator_1 = require('./node-obfuscators/MemberExpressionObfuscator');
|
||||
const MethodDefinitionObfuscator_1 = require('./node-obfuscators/MethodDefinitionObfuscator');
|
||||
const ObjectExpressionObfuscator_1 = require('./node-obfuscators/ObjectExpressionObfuscator');
|
||||
const UnicodeArrayNode_1 = require('./nodes/UnicodeArrayNode');
|
||||
const UnicodeArrayNodesGroup_1 = require('./node-groups/UnicodeArrayNodesGroup');
|
||||
const Utils_1 = require('./Utils');
|
||||
const VariableDeclarationObfuscator_1 = require('./node-obfuscators/VariableDeclarationObfuscator');
|
||||
let estraverse = require('estraverse');
|
||||
class Obfuscator {
|
||||
constructor(options) {
|
||||
this.nodes = new Map();
|
||||
this.nodeObfuscators = new Map([
|
||||
['ClassDeclaration', [FunctionDeclarationObfuscator_1.FunctionDeclarationObfuscator]],
|
||||
['FunctionDeclaration', [
|
||||
FunctionDeclarationObfuscator_1.FunctionDeclarationObfuscator,
|
||||
FunctionObfuscator_1.FunctionObfuscator
|
||||
]],
|
||||
['ArrowFunctionExpression', [FunctionObfuscator_1.FunctionObfuscator]],
|
||||
['FunctionExpression', [FunctionObfuscator_1.FunctionObfuscator]],
|
||||
['MethodDefinition', [MethodDefinitionObfuscator_1.MethodDefinitionObfuscator]],
|
||||
['VariableDeclaration', [VariableDeclarationObfuscator_1.VariableDeclarationObfuscator]],
|
||||
['ObjectExpression', [ObjectExpressionObfuscator_1.ObjectExpressionObfuscator]],
|
||||
['MemberExpression', [MemberExpressionObfuscator_1.MemberExpressionObfuscator]],
|
||||
['Literal', [LiteralObfuscator_1.LiteralObfuscator]]
|
||||
]);
|
||||
this.options = {
|
||||
rotateUnicodeArray: true
|
||||
};
|
||||
Object.assign(this.options, options);
|
||||
}
|
||||
obfuscateNode(node) {
|
||||
if (this.options['rotateUnicodeArray']) {
|
||||
this.setNodesGroup('unicodeArrayNodesGroup', new UnicodeArrayNodesGroup_1.UnicodeArrayNodesGroup(node));
|
||||
}
|
||||
else {
|
||||
this.setNode('unicodeArrayNode', new UnicodeArrayNode_1.UnicodeArrayNode(node, Utils_1.Utils.getRandomVariableName(UnicodeArrayNode_1.UnicodeArrayNode.UNICODE_ARRAY_RANDOM_LENGTH)));
|
||||
}
|
||||
this.beforeObfuscation(node);
|
||||
estraverse.replace(node, {
|
||||
leave: (node, parent) => this.nodeController(node, parent)
|
||||
});
|
||||
this.afterObfuscation(node);
|
||||
}
|
||||
setNode(nodeName, node) {
|
||||
this.nodes.set(nodeName, node);
|
||||
}
|
||||
setNodesGroup(groupName, nodesGroup) {
|
||||
let nodes = nodesGroup.getNodes();
|
||||
nodes.forEach((node, key) => {
|
||||
this.nodes.set(key, node);
|
||||
});
|
||||
}
|
||||
afterObfuscation(node) {
|
||||
this.nodes.forEach((node) => {
|
||||
if (node.getAppendState() === AppendState_1.AppendState.AfterObfuscation) {
|
||||
node.appendNode();
|
||||
}
|
||||
});
|
||||
}
|
||||
beforeObfuscation(node) {
|
||||
this.nodes.forEach((node) => {
|
||||
if (node.getAppendState() === AppendState_1.AppendState.BeforeObfuscation) {
|
||||
node.appendNode();
|
||||
}
|
||||
});
|
||||
}
|
||||
;
|
||||
nodeController(node, parent) {
|
||||
switch (node.type) {
|
||||
default:
|
||||
this.initializeNodeObfuscators(node, parent);
|
||||
}
|
||||
}
|
||||
initializeNodeObfuscators(node, parent) {
|
||||
if (!this.nodeObfuscators.has(node.type)) {
|
||||
return;
|
||||
}
|
||||
this.nodeObfuscators.get(node.type).forEach((obfuscator) => {
|
||||
new obfuscator(this.nodes).obfuscateNode(node, parent);
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.Obfuscator = Obfuscator;
|
||||
//# sourceMappingURL=Obfuscator.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"Obfuscator.js","sourceRoot":"","sources":["Obfuscator.ts"],"names":[],"mappings":"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"}
|
||||
@@ -1,37 +0,0 @@
|
||||
"use strict";
|
||||
class Utils {
|
||||
static arrayRotate(array, times, reverse = false) {
|
||||
if (times < 0) {
|
||||
return;
|
||||
}
|
||||
let newArray = array, temp;
|
||||
while (times--) {
|
||||
if (!reverse) {
|
||||
temp = newArray.pop();
|
||||
newArray.unshift(temp);
|
||||
}
|
||||
else {
|
||||
temp = newArray.shift();
|
||||
newArray.push(temp);
|
||||
}
|
||||
}
|
||||
return newArray;
|
||||
}
|
||||
static decToHex(dec) {
|
||||
return (dec + Math.pow(16, 6)).toString(16).substr(-6);
|
||||
}
|
||||
static getRandomInteger(min, max) {
|
||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||
}
|
||||
static getRandomVariableName(length = 6) {
|
||||
const prefix = '_0x';
|
||||
return `${prefix}${(Utils.decToHex(Utils.getRandomInteger(10000, 9999999))).substr(0, length)}`;
|
||||
}
|
||||
static stringToUnicode(string) {
|
||||
return `'${string.replace(/[\s\S]/g, (escape) => {
|
||||
return `\\u${('0000' + escape.charCodeAt(0).toString(16)).slice(-4)}`;
|
||||
})}'`;
|
||||
}
|
||||
}
|
||||
exports.Utils = Utils;
|
||||
//# sourceMappingURL=Utils.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["Utils.ts"],"names":[],"mappings":";AAAA;IAOI,OAAc,WAAW,CAAE,KAAY,EAAE,KAAa,EAAE,OAAO,GAAY,KAAK;QAC5E,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC;QACX,CAAC;QAED,IAAI,QAAQ,GAAU,KAAK,EACvB,IAAS,CAAC;QAEd,OAAO,KAAK,EAAE,EAAE,CAAC;YACb,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACX,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACtB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YAAC,IAAI,CAAC,CAAC;gBACJ,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACL,CAAC;QAED,MAAM,CAAC,QAAQ,CAAC;IACpB,CAAC;IAMD,OAAc,QAAQ,CAAC,GAAW;QAC9B,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAOD,OAAc,gBAAgB,CAAC,GAAW,EAAE,GAAW;QACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC7D,CAAC;IAMD,OAAc,qBAAqB,CAAE,MAAM,GAAW,CAAC;QACnD,MAAM,MAAM,GAAG,KAAK,CAAC;QAErB,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACpG,CAAC;IAMD,OAAc,eAAe,CAAE,MAAc;QACzC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM;YACxC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,CAAC,CAAC,GAAG,CAAC;IACV,CAAC;AACL,CAAC;AAhEY,aAAK,QAgEjB,CAAA"}
|
||||
@@ -1,7 +0,0 @@
|
||||
"use strict";
|
||||
(function (AppendState) {
|
||||
AppendState[AppendState["BeforeObfuscation"] = 0] = "BeforeObfuscation";
|
||||
AppendState[AppendState["AfterObfuscation"] = 1] = "AfterObfuscation";
|
||||
})(exports.AppendState || (exports.AppendState = {}));
|
||||
var AppendState = exports.AppendState;
|
||||
//# sourceMappingURL=AppendState.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"AppendState.js","sourceRoot":"","sources":["AppendState.ts"],"names":[],"mappings":";AAAA,WAAY,WAAW;IAAE,uEAAiB,CAAA;IAAE,qEAAgB,CAAA;AAAA,CAAC,EAAjD,mBAAW,KAAX,mBAAW,QAAsC;AAA7D,IAAY,WAAW,GAAX,mBAAiD,CAAA"}
|
||||
@@ -1,2 +0,0 @@
|
||||
"use strict";
|
||||
//# sourceMappingURL=INode.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"INode.js","sourceRoot":"","sources":["INode.ts"],"names":[],"mappings":""}
|
||||
@@ -1,2 +0,0 @@
|
||||
"use strict";
|
||||
//# sourceMappingURL=INodeObfuscator.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"INodeObfuscator.js","sourceRoot":"","sources":["INodeObfuscator.ts"],"names":[],"mappings":""}
|
||||
@@ -1,2 +0,0 @@
|
||||
"use strict";
|
||||
//# sourceMappingURL=INodesGroup.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"INodesGroup.js","sourceRoot":"","sources":["INodesGroup.ts"],"names":[],"mappings":""}
|
||||
@@ -1,8 +0,0 @@
|
||||
"use strict";
|
||||
class NodesGroup {
|
||||
getNodes() {
|
||||
return this.nodes;
|
||||
}
|
||||
}
|
||||
exports.NodesGroup = NodesGroup;
|
||||
//# sourceMappingURL=NodesGroup.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"NodesGroup.js","sourceRoot":"","sources":["NodesGroup.ts"],"names":[],"mappings":";AAIA;IASW,QAAQ;QACX,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;AACL,CAAC;AAZqB,kBAAU,aAY/B,CAAA"}
|
||||
@@ -1,29 +0,0 @@
|
||||
"use strict";
|
||||
const NodesGroup_1 = require('./NodesGroup');
|
||||
const UnicodeArrayNode_1 = require('../nodes/UnicodeArrayNode');
|
||||
const UnicodeArrayRotateFunctionCallNode_1 = require('../nodes/UnicodeArrayRotateFunctionCallNode');
|
||||
const UnicodeArrayRotateFunctionNode_1 = require('../nodes/UnicodeArrayRotateFunctionNode');
|
||||
const Utils_1 = require('../Utils');
|
||||
class UnicodeArrayNodesGroup extends NodesGroup_1.NodesGroup {
|
||||
constructor(astTree) {
|
||||
super();
|
||||
this.unicodeArrayRotateFunctionIdentifier = Utils_1.Utils.getRandomVariableName();
|
||||
let unicodeArrayName = Utils_1.Utils.getRandomVariableName(UnicodeArrayNode_1.UnicodeArrayNode.UNICODE_ARRAY_RANDOM_LENGTH), unicodeArrayRotateValue = Utils_1.Utils.getRandomInteger(100, 500);
|
||||
this.nodes = new Map([
|
||||
[
|
||||
'unicodeArrayNode',
|
||||
new UnicodeArrayNode_1.UnicodeArrayNode(astTree, unicodeArrayName, unicodeArrayRotateValue)
|
||||
],
|
||||
[
|
||||
'unicodeArrayRotateFunctionNode',
|
||||
new UnicodeArrayRotateFunctionNode_1.UnicodeArrayRotateFunctionNode(astTree, this.unicodeArrayRotateFunctionIdentifier, unicodeArrayName)
|
||||
],
|
||||
[
|
||||
'unicodeArrayRotateFunctionCallNode',
|
||||
new UnicodeArrayRotateFunctionCallNode_1.UnicodeArrayRotateFunctionCallNode(astTree, this.unicodeArrayRotateFunctionIdentifier, unicodeArrayName, unicodeArrayRotateValue)
|
||||
]
|
||||
]);
|
||||
}
|
||||
}
|
||||
exports.UnicodeArrayNodesGroup = UnicodeArrayNodesGroup;
|
||||
//# sourceMappingURL=UnicodeArrayNodesGroup.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"UnicodeArrayNodesGroup.js","sourceRoot":"","sources":["UnicodeArrayNodesGroup.ts"],"names":[],"mappings":";AAEA,6BAA2B,cAAc,CAAC,CAAA;AAC1C,mCAAiC,2BAA2B,CAAC,CAAA;AAC7D,qDAAmD,6CAA6C,CAAC,CAAA;AACjG,iDAA+C,yCAAyC,CAAC,CAAA;AACzF,wBAAsB,UAAU,CAAC,CAAA;AAEjC,qCAA4C,uBAAU;IASlD,YAAa,OAAY;QACrB,OAAO,CAAC;QANJ,yCAAoC,GAAW,aAAK,CAAC,qBAAqB,EAAE,CAAC;QAQjF,IAAI,gBAAgB,GAAW,aAAK,CAAC,qBAAqB,CAAC,mCAAgB,CAAC,2BAA2B,CAAC,EACpG,uBAAuB,GAAW,aAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEvE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAkB;YAClC;gBACI,kBAAkB;gBAClB,IAAI,mCAAgB,CAChB,OAAO,EACP,gBAAgB,EAChB,uBAAuB,CAC1B;aACJ;YACD;gBACI,gCAAgC;gBAChC,IAAI,+DAA8B,CAC9B,OAAO,EACP,IAAI,CAAC,oCAAoC,EACzC,gBAAgB,CACnB;aACJ;YACD;gBACI,oCAAoC;gBACpC,IAAI,uEAAkC,CAClC,OAAO,EACP,IAAI,CAAC,oCAAoC,EACzC,gBAAgB,EAChB,uBAAuB,CAC1B;aACJ;SACJ,CAAC,CAAA;IACN,CAAC;AACL,CAAC;AA3CY,8BAAsB,yBA2ClC,CAAA"}
|
||||
@@ -1,37 +0,0 @@
|
||||
"use strict";
|
||||
const NodeObfuscator_1 = require('./NodeObfuscator');
|
||||
const Utils_1 = require('../Utils');
|
||||
let estraverse = require('estraverse');
|
||||
class FunctionDeclarationObfuscator extends NodeObfuscator_1.NodeObfuscator {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
this.functionName = new Map();
|
||||
}
|
||||
obfuscateNode(functionDeclarationNode, parentNode) {
|
||||
if (parentNode.type === 'Program') {
|
||||
return;
|
||||
}
|
||||
this.replaceFunctionName(functionDeclarationNode);
|
||||
this.replaceFunctionCalls(parentNode);
|
||||
}
|
||||
replaceFunctionName(functionDeclarationNode) {
|
||||
estraverse.replace(functionDeclarationNode.id, {
|
||||
leave: (node) => {
|
||||
if (node.type !== 'Identifier') {
|
||||
return;
|
||||
}
|
||||
this.functionName.set(node.name, Utils_1.Utils.getRandomVariableName());
|
||||
node.name = this.functionName.get(node.name);
|
||||
}
|
||||
});
|
||||
}
|
||||
replaceFunctionCalls(functionParentNode) {
|
||||
estraverse.replace(functionParentNode, {
|
||||
leave: (node, parentNode) => {
|
||||
this.replaceNodeIdentifierByNewValue(node, parentNode, this.functionName);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.FunctionDeclarationObfuscator = FunctionDeclarationObfuscator;
|
||||
//# sourceMappingURL=FunctionDeclarationObfuscator.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"FunctionDeclarationObfuscator.js","sourceRoot":"","sources":["FunctionDeclarationObfuscator.ts"],"names":[],"mappings":";AAAA,iCAA+B,kBAAkB,CAAC,CAAA;AAClD,wBAAsB,UAAU,CAAC,CAAA;AAEjC,IAAI,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAWvC,4CAAmD,+BAAc;IAAjE;QAAmD,eAAc;QAIrD,iBAAY,GAAyB,IAAI,GAAG,EAAoB,CAAC;IAyC7E,CAAC;IAnCU,aAAa,CAAE,uBAA4B,EAAE,UAAe;QAC/D,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC;QACX,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;QAClD,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAKO,mBAAmB,CAAE,uBAA4B;QACrD,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,EAAE;YAC3C,KAAK,EAAE,CAAC,IAAI;gBACR,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC;oBAC7B,MAAM,CAAC;gBACX,CAAC;gBAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,aAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAKO,oBAAoB,CAAE,kBAAuB;QACjD,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE;YACnC,KAAK,EAAE,CAAC,IAAI,EAAE,UAAU;gBACpB,IAAI,CAAC,+BAA+B,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9E,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AA7CY,qCAA6B,gCA6CzC,CAAA"}
|
||||
@@ -1,36 +0,0 @@
|
||||
"use strict";
|
||||
const NodeObfuscator_1 = require('./NodeObfuscator');
|
||||
const Utils_1 = require('../Utils');
|
||||
let estraverse = require('estraverse');
|
||||
class FunctionObfuscator extends NodeObfuscator_1.NodeObfuscator {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
this.functionParams = new Map();
|
||||
}
|
||||
obfuscateNode(functionNode) {
|
||||
this.replaceFunctionParams(functionNode);
|
||||
this.replaceFunctionParamsInBody(functionNode);
|
||||
}
|
||||
replaceFunctionParams(functionNode) {
|
||||
functionNode.params.forEach((paramsNode) => {
|
||||
estraverse.replace(paramsNode, {
|
||||
leave: (node, parentNode) => {
|
||||
if (node.type !== 'Identifier') {
|
||||
return;
|
||||
}
|
||||
this.functionParams.set(node.name, Utils_1.Utils.getRandomVariableName());
|
||||
node.name = this.functionParams.get(node.name);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
replaceFunctionParamsInBody(functionNode) {
|
||||
estraverse.replace(functionNode.body, {
|
||||
leave: (node, parentNode) => {
|
||||
this.replaceNodeIdentifierByNewValue(node, parentNode, this.functionParams);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.FunctionObfuscator = FunctionObfuscator;
|
||||
//# sourceMappingURL=FunctionObfuscator.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"FunctionObfuscator.js","sourceRoot":"","sources":["FunctionObfuscator.ts"],"names":[],"mappings":";AAAA,iCAA+B,kBAAkB,CAAC,CAAA;AAClD,wBAAsB,UAAU,CAAC,CAAA;AAEjC,IAAI,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAUvC,iCAAwC,+BAAc;IAAtD;QAAwC,eAAc;QAI1C,mBAAc,GAAyB,IAAI,GAAG,EAAoB,CAAC;IAsC/E,CAAC;IAjCU,aAAa,CAAE,YAAiB;QACnC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAKO,qBAAqB,CAAE,YAAiB;QAC5C,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU;YACnC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC3B,KAAK,EAAE,CAAC,IAAI,EAAE,UAAU;oBACpB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC;wBAC9B,MAAM,CAAC;oBACV,CAAC;oBAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,aAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC;oBAClE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnD,CAAC;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAKO,2BAA2B,CAAE,YAAiB;QAClD,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;YAClC,KAAK,EAAE,CAAC,IAAI,EAAE,UAAU;gBACpB,IAAI,CAAC,+BAA+B,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAChF,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AA1CY,0BAAkB,qBA0C9B,CAAA"}
|
||||
@@ -1,23 +0,0 @@
|
||||
"use strict";
|
||||
const NodeObfuscator_1 = require('./NodeObfuscator');
|
||||
let escodegen = require('escodegen'), estraverse = require('estraverse');
|
||||
class LiteralObfuscator extends NodeObfuscator_1.NodeObfuscator {
|
||||
obfuscateNode(literalNode, parentNode) {
|
||||
if (parentNode.type === 'Property' && parentNode.key === literalNode) {
|
||||
return;
|
||||
}
|
||||
switch (typeof literalNode.value) {
|
||||
case 'string':
|
||||
if (literalNode['x-verbatim-property']) {
|
||||
break;
|
||||
}
|
||||
literalNode['x-verbatim-property'] = {
|
||||
content: this.replaceLiteralStringByArrayElement(literalNode.value),
|
||||
precedence: escodegen.Precedence.Primary
|
||||
};
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.LiteralObfuscator = LiteralObfuscator;
|
||||
//# sourceMappingURL=LiteralObfuscator.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"LiteralObfuscator.js","sourceRoot":"","sources":["LiteralObfuscator.ts"],"names":[],"mappings":";AAAA,iCAA+B,kBAE/B,CAAC,CAFgD;AAEjD,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,EAChC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAEvC,gCAAuC,+BAAc;IAK1C,aAAa,CAAE,WAAgB,EAAE,UAAe;QACnD,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,UAAU,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC;YACnE,MAAM,CAAC;QACX,CAAC;QAED,MAAM,CAAC,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,KAAK,QAAQ;gBACT,EAAE,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;oBACrC,KAAK,CAAC;gBACV,CAAC;gBAED,WAAW,CAAC,qBAAqB,CAAC,GAAG;oBACjC,OAAO,EAAG,IAAI,CAAC,kCAAkC,CAAC,WAAW,CAAC,KAAK,CAAC;oBACpE,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,OAAO;iBAC3C,CAAC;gBAEF,KAAK,CAAC;QACd,CAAC;IACL,CAAC;AACL,CAAC;AAxBY,yBAAiB,oBAwB7B,CAAA"}
|
||||
@@ -1,49 +0,0 @@
|
||||
"use strict";
|
||||
const NodeObfuscator_1 = require('./NodeObfuscator');
|
||||
let escodegen = require('escodegen'), estraverse = require('estraverse');
|
||||
class MemberExpressionObfuscator extends NodeObfuscator_1.NodeObfuscator {
|
||||
obfuscateNode(memberExpressionNode) {
|
||||
estraverse.replace(memberExpressionNode.property, {
|
||||
leave: (node, parentNode) => {
|
||||
switch (node.type) {
|
||||
case 'Literal':
|
||||
this.literalNodeController(node);
|
||||
break;
|
||||
case 'Identifier':
|
||||
if (memberExpressionNode.computed) {
|
||||
break;
|
||||
}
|
||||
memberExpressionNode.computed = true;
|
||||
this.identifierNodeController(node);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
identifierNodeController(node) {
|
||||
let nodeValue = node['name'];
|
||||
node['type'] = 'Literal';
|
||||
node['value'] = nodeValue;
|
||||
node['raw'] = `'${nodeValue}'`;
|
||||
node['x-verbatim-property'] = {
|
||||
content: this.replaceLiteralStringByArrayElement(nodeValue),
|
||||
precedence: escodegen['Precedence']['Primary']
|
||||
};
|
||||
delete node['name'];
|
||||
}
|
||||
literalNodeController(node) {
|
||||
switch (typeof node.value) {
|
||||
case 'string':
|
||||
if (node['x-verbatim-property']) {
|
||||
break;
|
||||
}
|
||||
node['x-verbatim-property'] = {
|
||||
content: this.replaceLiteralStringByArrayElement(node.value),
|
||||
precedence: escodegen['Precedence']['Primary']
|
||||
};
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.MemberExpressionObfuscator = MemberExpressionObfuscator;
|
||||
//# sourceMappingURL=MemberExpressionObfuscator.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"MemberExpressionObfuscator.js","sourceRoot":"","sources":["MemberExpressionObfuscator.ts"],"names":[],"mappings":";AAAA,iCAA+B,kBAE/B,CAAC,CAFgD;AAEjD,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,EAChC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAEvC,yCAAgD,+BAAc;IAInD,aAAa,CAAE,oBAAyB;QAC3C,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,EAAE;YAC9C,KAAK,EAAE,CAAC,IAAI,EAAE,UAAU;gBACpB,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChB,KAAK,SAAS;wBACV,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;wBAEjC,KAAK,CAAC;oBAEV,KAAK,YAAY;wBACb,EAAE,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;4BAChC,KAAK,CAAC;wBACV,CAAC;wBAED,oBAAoB,CAAC,QAAQ,GAAG,IAAI,CAAC;wBACrC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;wBAEpC,KAAK,CAAC;gBACd,CAAC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAcO,wBAAwB,CAAE,IAAS;QACvC,IAAI,SAAS,GAAW,IAAI,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS,GAAG,CAAC;QAC/B,IAAI,CAAC,qBAAqB,CAAC,GAAG;YAC1B,OAAO,EAAG,IAAI,CAAC,kCAAkC,CAAC,SAAS,CAAC;YAC5D,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;SACjD,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAWO,qBAAqB,CAAE,IAAS;QACpC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,KAAK,QAAQ;gBACT,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;oBAC9B,KAAK,CAAC;gBACV,CAAC;gBAED,IAAI,CAAC,qBAAqB,CAAC,GAAG;oBAC1B,OAAO,EAAG,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC7D,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;iBACjD,CAAC;gBAEF,KAAK,CAAC;QACd,CAAC;IACL,CAAC;AACL,CAAC;AA7EY,kCAA0B,6BA6EtC,CAAA"}
|
||||
@@ -1,28 +0,0 @@
|
||||
"use strict";
|
||||
const NodeObfuscator_1 = require('./NodeObfuscator');
|
||||
let estraverse = require('estraverse');
|
||||
class MethodDefinitionObfuscator extends NodeObfuscator_1.NodeObfuscator {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
this.methodName = new Map();
|
||||
this.ignoredNames = ['constructor'];
|
||||
}
|
||||
obfuscateNode(methodDefinitionNode, parentNode) {
|
||||
this.replaceMethodName(methodDefinitionNode);
|
||||
}
|
||||
replaceMethodName(methodDefinitionNode) {
|
||||
estraverse.replace(methodDefinitionNode.key, {
|
||||
leave: (node) => {
|
||||
if (node.type !== 'Identifier' ||
|
||||
this.ignoredNames.indexOf(node.name) >= 0 ||
|
||||
methodDefinitionNode.computed === true) {
|
||||
return;
|
||||
}
|
||||
methodDefinitionNode.computed = true;
|
||||
node.name = this.replaceLiteralStringByArrayElement(node.name);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.MethodDefinitionObfuscator = MethodDefinitionObfuscator;
|
||||
//# sourceMappingURL=MethodDefinitionObfuscator.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"MethodDefinitionObfuscator.js","sourceRoot":"","sources":["MethodDefinitionObfuscator.ts"],"names":[],"mappings":";AAAA,iCAA+B,kBAAkB,CAAC,CAAA;AAGlD,IAAI,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAWvC,yCAAgD,+BAAc;IAA9D;QAAgD,eAAc;QAIlD,eAAU,GAAyB,IAAI,GAAG,EAAoB,CAAC;QAK/D,iBAAY,GAAa,CAAC,aAAa,CAAC,CAAC;IA6BrD,CAAC;IAvBU,aAAa,CAAE,oBAAyB,EAAE,UAAe;QAC5D,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;IACjD,CAAC;IAKO,iBAAiB,CAAE,oBAAyB;QAChD,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAE;YACzC,KAAK,EAAE,CAAC,IAAI;gBACR,EAAE,CAAC,CACC,IAAI,CAAC,IAAI,KAAK,YAAY;oBAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACzC,oBAAoB,CAAC,QAAQ,KAAK,IACtC,CAAC,CAAC,CAAC;oBACC,MAAM,CAAC;gBACX,CAAC;gBAED,oBAAoB,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAtCY,kCAA0B,6BAsCtC,CAAA"}
|
||||
@@ -1,29 +0,0 @@
|
||||
"use strict";
|
||||
const Utils_1 = require('../Utils');
|
||||
class NodeObfuscator {
|
||||
constructor(nodes) {
|
||||
this.nodes = nodes;
|
||||
}
|
||||
replaceNodeIdentifierByNewValue(node, parentNode, namesMap) {
|
||||
if (node.type === 'Identifier' && namesMap.has(node.name)) {
|
||||
if ((parentNode.type === 'Property' && parentNode.key === node) ||
|
||||
(parentNode.type === 'MemberExpression' && parentNode.computed === false && parentNode.property === node)) {
|
||||
return;
|
||||
}
|
||||
node.name = namesMap.get(node.name);
|
||||
}
|
||||
}
|
||||
replaceLiteralStringByArrayElement(nodeValue) {
|
||||
let value = Utils_1.Utils.stringToUnicode(nodeValue), unicodeArray = this.nodes.get('unicodeArrayNode').getNodeData(), sameIndex = unicodeArray.indexOf(value), index;
|
||||
if (sameIndex < 0) {
|
||||
index = unicodeArray.length;
|
||||
unicodeArray.push(Utils_1.Utils.stringToUnicode(nodeValue));
|
||||
}
|
||||
else {
|
||||
index = sameIndex;
|
||||
}
|
||||
return `${this.nodes.get('unicodeArrayNode').getNodeIdentifier()}[${index}]`;
|
||||
}
|
||||
}
|
||||
exports.NodeObfuscator = NodeObfuscator;
|
||||
//# sourceMappingURL=NodeObfuscator.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"NodeObfuscator.js","sourceRoot":"","sources":["NodeObfuscator.ts"],"names":[],"mappings":";AAIA,wBAAsB,UAAU,CAAC,CAAA;AAEjC;IASI,YAAY,KAA0B;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAaS,+BAA+B,CAAE,IAAS,EAAE,UAAe,EAAE,QAA8B;QACjG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxD,EAAE,CAAC,CACC,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,UAAU,CAAC,GAAG,KAAK,IAAI,CAAC;gBAC3D,CAAC,UAAU,CAAC,IAAI,KAAK,kBAAkB,IAAI,UAAU,CAAC,QAAQ,KAAK,KAAK,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAC5G,CAAC,CAAC,CAAC;gBACC,MAAM,CAAC;YACX,CAAC;YAED,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IAMS,kCAAkC,CAAE,SAAiB;QAC3D,IAAI,KAAK,GAAW,aAAK,CAAC,eAAe,CAAC,SAAS,CAAC,EAChD,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,EAC/D,SAAS,GAAW,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAC/C,KAAa,CAAC;QAElB,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,aAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QACxD,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,KAAK,GAAG,SAAS,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,iBAAiB,EAAE,IAAI,KAAK,GAAG,CAAC;IACjF,CAAC;AACL,CAAC;AAxDqB,sBAAc,iBAwDnC,CAAA"}
|
||||
@@ -1,48 +0,0 @@
|
||||
"use strict";
|
||||
const NodeObfuscator_1 = require('./NodeObfuscator');
|
||||
const Utils_1 = require('../Utils');
|
||||
let escodegen = require('escodegen'), estraverse = require('estraverse');
|
||||
class ObjectExpressionObfuscator extends NodeObfuscator_1.NodeObfuscator {
|
||||
obfuscateNode(objectExpressionNode) {
|
||||
objectExpressionNode.properties.forEach((property) => {
|
||||
estraverse.replace(property.key, {
|
||||
leave: (node, parentNode) => {
|
||||
switch (node.type) {
|
||||
case 'Literal':
|
||||
this.literalNodeController(node);
|
||||
break;
|
||||
case 'Identifier':
|
||||
this.identifierNodeController(node);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
literalNodeController(node) {
|
||||
switch (typeof node.value) {
|
||||
case 'string':
|
||||
if (node['x-verbatim-property']) {
|
||||
break;
|
||||
}
|
||||
node['x-verbatim-property'] = {
|
||||
content: Utils_1.Utils.stringToUnicode(node.value),
|
||||
precedence: escodegen['Precedence']['Primary']
|
||||
};
|
||||
break;
|
||||
}
|
||||
}
|
||||
identifierNodeController(node) {
|
||||
let nodeValue = node['name'];
|
||||
node['type'] = 'Literal';
|
||||
node['value'] = nodeValue;
|
||||
node['raw'] = `'${nodeValue}'`;
|
||||
node['x-verbatim-property'] = {
|
||||
content: Utils_1.Utils.stringToUnicode(nodeValue),
|
||||
precedence: escodegen['Precedence']['Primary']
|
||||
};
|
||||
delete node['name'];
|
||||
}
|
||||
}
|
||||
exports.ObjectExpressionObfuscator = ObjectExpressionObfuscator;
|
||||
//# sourceMappingURL=ObjectExpressionObfuscator.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"ObjectExpressionObfuscator.js","sourceRoot":"","sources":["ObjectExpressionObfuscator.ts"],"names":[],"mappings":";AAAA,iCAA+B,kBAC/B,CAAC,CADgD;AACjD,wBAAsB,UAAU,CAAC,CAAA;AAEjC,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,EAChC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAYvC,yCAAgD,+BAAc;IAInD,aAAa,CAAE,oBAAyB;QAC3C,oBAAoB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ;YAC7C,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAC7B,KAAK,EAAE,CAAC,IAAI,EAAE,UAAU;oBACpB,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBAChB,KAAK,SAAS;4BACV,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;4BAEjC,KAAK,CAAC;wBAEV,KAAK,YAAY;4BACb,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;4BAEpC,KAAK,CAAC;oBACd,CAAC;gBACL,CAAC;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAKO,qBAAqB,CAAE,IAAS;QACpC,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,KAAK,QAAQ;gBACT,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;oBAC9B,KAAK,CAAC;gBACV,CAAC;gBAED,IAAI,CAAC,qBAAqB,CAAC,GAAG;oBAC1B,OAAO,EAAG,aAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC3C,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;iBACjD,CAAC;gBAEF,KAAK,CAAC;QACd,CAAC;IACL,CAAC;IAKO,wBAAwB,CAAE,IAAS;QACvC,IAAI,SAAS,GAAW,IAAI,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS,GAAG,CAAC;QAC/B,IAAI,CAAC,qBAAqB,CAAC,GAAG;YAC1B,OAAO,EAAG,aAAK,CAAC,eAAe,CAAC,SAAS,CAAC;YAC1C,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;SACjD,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;AACL,CAAC;AA3DY,kCAA0B,6BA2DtC,CAAA"}
|
||||
@@ -1,43 +0,0 @@
|
||||
"use strict";
|
||||
const NodeObfuscator_1 = require('./NodeObfuscator');
|
||||
const Utils_1 = require('../Utils');
|
||||
let estraverse = require('estraverse');
|
||||
class VariableDeclarationObfuscator extends NodeObfuscator_1.NodeObfuscator {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
this.variableName = new Map();
|
||||
}
|
||||
obfuscateNode(variableDeclarationNode, parentNode) {
|
||||
if (parentNode.type === 'Program') {
|
||||
return;
|
||||
}
|
||||
this.replaceVariableName(variableDeclarationNode);
|
||||
this.replaceVariableCalls(parentNode);
|
||||
}
|
||||
replaceVariableName(variableDeclarationNode) {
|
||||
variableDeclarationNode.declarations.forEach((declarationNode) => {
|
||||
estraverse.replace(declarationNode, {
|
||||
leave: (node) => {
|
||||
if (node.type !== 'VariableDeclarator') {
|
||||
return;
|
||||
}
|
||||
estraverse.replace(node.id, {
|
||||
leave: (node) => {
|
||||
this.variableName.set(node.name, Utils_1.Utils.getRandomVariableName());
|
||||
node.name = this.variableName.get(node.name);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
replaceVariableCalls(variableParentNode) {
|
||||
estraverse.replace(variableParentNode, {
|
||||
leave: (node, parentNode) => {
|
||||
this.replaceNodeIdentifierByNewValue(node, parentNode, this.variableName);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.VariableDeclarationObfuscator = VariableDeclarationObfuscator;
|
||||
//# sourceMappingURL=VariableDeclarationObfuscator.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"VariableDeclarationObfuscator.js","sourceRoot":"","sources":["VariableDeclarationObfuscator.ts"],"names":[],"mappings":";AAAA,iCAA+B,kBAAkB,CAAC,CAAA;AAClD,wBAAsB,UAAU,CAAC,CAAA;AAEjC,IAAI,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAYvC,4CAAmD,+BAAc;IAAjE;QAAmD,eAAc;QAIrD,iBAAY,GAAyB,IAAI,GAAG,EAAoB,CAAC;IA+C7E,CAAC;IAzCU,aAAa,CAAE,uBAA4B,EAAE,UAAe;QAC/D,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC;QACX,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;QAClD,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAKO,mBAAmB,CAAE,uBAA4B;QACrD,uBAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,eAAe;YACzD,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE;gBAChC,KAAK,EAAE,CAAC,IAAI;oBACR,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBACrC,MAAM,CAAC;oBACX,CAAC;oBAED,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE;wBACxB,KAAK,EAAE,CAAC,IAAI;4BACR,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,aAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC;4BAChE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACjD,CAAC;qBACJ,CAAC,CAAC;gBACP,CAAC;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAKO,oBAAoB,CAAE,kBAAuB;QACjD,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE;YACnC,KAAK,EAAE,CAAC,IAAI,EAAE,UAAU;gBACpB,IAAI,CAAC,+BAA+B,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9E,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAnDY,qCAA6B,gCAmDzC,CAAA"}
|
||||
@@ -1,21 +0,0 @@
|
||||
"use strict";
|
||||
const AppendState_1 = require('../enums/AppendState');
|
||||
class Node {
|
||||
constructor() {
|
||||
this.appendState = AppendState_1.AppendState.BeforeObfuscation;
|
||||
}
|
||||
getAppendState() {
|
||||
return this.appendState;
|
||||
}
|
||||
getNode() {
|
||||
return this.node;
|
||||
}
|
||||
setNode(node) {
|
||||
this.node = node;
|
||||
}
|
||||
updateNode() {
|
||||
this.node = this.getNodeStructure();
|
||||
}
|
||||
}
|
||||
exports.Node = Node;
|
||||
//# sourceMappingURL=Node.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"Node.js","sourceRoot":"","sources":["Node.ts"],"names":[],"mappings":";AAEA,8BAA4B,sBAAsB,CAAC,CAAA;AAEnD;IAWI;QAPU,gBAAW,GAAgB,yBAAW,CAAC,iBAAiB,CAAC;IAOnD,CAAC;IAOV,cAAc;QACjB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAKM,OAAO;QACV,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAKM,OAAO,CAAE,IAAS;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAEM,UAAU;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC;AAML,CAAC;AA5CqB,YAAI,OA4CzB,CAAA"}
|
||||
@@ -1,70 +0,0 @@
|
||||
"use strict";
|
||||
const Node_1 = require('./Node');
|
||||
const Utils_1 = require('../Utils');
|
||||
const AppendState_1 = require('../enums/AppendState');
|
||||
let escodegen = require('escodegen'), estraverse = require('estraverse');
|
||||
class UnicodeArrayNode extends Node_1.Node {
|
||||
constructor(astTree, unicodeArrayName, unicodeArrayRotateValue = 0) {
|
||||
super();
|
||||
this.appendState = AppendState_1.AppendState.AfterObfuscation;
|
||||
this.unicodeArray = [];
|
||||
this.astTree = astTree;
|
||||
this.unicodeArrayName = unicodeArrayName;
|
||||
this.unicodeArrayRotateValue = unicodeArrayRotateValue;
|
||||
this.node = this.getNodeStructure();
|
||||
}
|
||||
appendNode() {
|
||||
estraverse.replace(this.astTree, {
|
||||
leave: (node, parent) => {
|
||||
switch (node.type) {
|
||||
case 'Program':
|
||||
node.body.unshift(this.getNode());
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
getNodeIdentifier() {
|
||||
return this.unicodeArrayName;
|
||||
}
|
||||
getNodeData() {
|
||||
return this.unicodeArray;
|
||||
}
|
||||
getNode() {
|
||||
Utils_1.Utils.arrayRotate(this.unicodeArray, this.unicodeArrayRotateValue);
|
||||
this.updateNode();
|
||||
return this.node;
|
||||
}
|
||||
getNodeStructure() {
|
||||
return {
|
||||
'type': 'VariableDeclaration',
|
||||
'declarations': [
|
||||
{
|
||||
'type': 'VariableDeclarator',
|
||||
'id': {
|
||||
'type': 'Identifier',
|
||||
'name': this.unicodeArrayName
|
||||
},
|
||||
'init': {
|
||||
'type': 'ArrayExpression',
|
||||
'elements': this.unicodeArray.map((value) => {
|
||||
return {
|
||||
'type': 'Literal',
|
||||
'value': value,
|
||||
'raw': `'${value}'`,
|
||||
'x-verbatim-property': {
|
||||
'content': value,
|
||||
precedence: escodegen.Precedence.Primary
|
||||
}
|
||||
};
|
||||
})
|
||||
}
|
||||
}
|
||||
],
|
||||
'kind': 'var'
|
||||
};
|
||||
}
|
||||
}
|
||||
UnicodeArrayNode.UNICODE_ARRAY_RANDOM_LENGTH = 4;
|
||||
exports.UnicodeArrayNode = UnicodeArrayNode;
|
||||
//# sourceMappingURL=UnicodeArrayNode.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"UnicodeArrayNode.js","sourceRoot":"","sources":["UnicodeArrayNode.ts"],"names":[],"mappings":";AAAA,uBAAqB,QAAQ,CAAC,CAAA;AAC9B,wBAAsB,UAAU,CAAC,CAAA;AAEjC,8BAA4B,sBAAsB,CAAC,CAAA;AAEnD,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,EAChC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAEvC,+BAAsC,WAAI;IAyCtC,YAAa,OAAY,EAAE,gBAAwB,EAAE,uBAAuB,GAAW,CAAC;QACpF,OAAO,CAAC;QAjCF,gBAAW,GAAgB,yBAAW,CAAC,gBAAgB,CAAC;QAU1D,iBAAY,GAAa,EAAE,CAAC;QAyBhC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC;IAEM,UAAU;QACb,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM;gBAChB,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChB,KAAK,SAAS;wBACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;wBAElC,KAAK,CAAC;gBACd,CAAC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAKM,iBAAiB;QACpB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAKM,WAAW;QACd,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAKM,OAAO;QACV,aAAK,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEnE,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAKS,gBAAgB;QACtB,MAAM,CAAC;YACH,MAAM,EAAE,qBAAqB;YAC7B,cAAc,EAAE;gBACZ;oBACI,MAAM,EAAE,oBAAoB;oBAC5B,IAAI,EAAE;wBACF,MAAM,EAAE,YAAY;wBACpB,MAAM,EAAE,IAAI,CAAC,gBAAgB;qBAChC;oBACD,MAAM,EAAE;wBACJ,MAAM,EAAE,iBAAiB;wBACzB,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK;4BACpC,MAAM,CAAC;gCACH,MAAM,EAAE,SAAS;gCACjB,OAAO,EAAE,KAAK;gCACd,KAAK,EAAE,IAAI,KAAK,GAAG;gCACnB,qBAAqB,EAAE;oCACnB,SAAS,EAAG,KAAK;oCACjB,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,OAAO;iCAC3C;6BACJ,CAAC;wBACN,CAAC,CAAC;qBACL;iBACJ;aACJ;YACD,MAAM,EAAE,KAAK;SAChB,CAAC;IACN,CAAC;AACL,CAAC;AApHiB,4CAA2B,GAAW,CAAC,CAAC;AAJ7C,wBAAgB,mBAwH5B,CAAA"}
|
||||
@@ -1,54 +0,0 @@
|
||||
"use strict";
|
||||
const Node_1 = require('./Node');
|
||||
let estraverse = require('estraverse');
|
||||
class UnicodeArrayRotateFunctionCallNode extends Node_1.Node {
|
||||
constructor(astTree, unicodeArrayRotateFunctionName, unicodeArrayName, unicodeArrayRotateValue) {
|
||||
super();
|
||||
this.astTree = astTree;
|
||||
this.unicodeArrayRotateFunctionName = unicodeArrayRotateFunctionName;
|
||||
this.unicodeArrayName = unicodeArrayName;
|
||||
this.unicodeArrayRotateValue = unicodeArrayRotateValue;
|
||||
this.node = this.getNodeStructure();
|
||||
}
|
||||
appendNode() {
|
||||
estraverse.replace(this.astTree, {
|
||||
leave: (node, parent) => {
|
||||
switch (node.type) {
|
||||
case 'Program':
|
||||
node.body.unshift(this.getNode());
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
getNodeStructure() {
|
||||
return {
|
||||
'type': 'ExpressionStatement',
|
||||
'expression': {
|
||||
'type': 'CallExpression',
|
||||
'callee': {
|
||||
'type': 'Identifier',
|
||||
'name': this.unicodeArrayRotateFunctionName
|
||||
},
|
||||
'arguments': [
|
||||
{
|
||||
'type': 'Identifier',
|
||||
'name': this.unicodeArrayName
|
||||
},
|
||||
{
|
||||
'type': 'Literal',
|
||||
'value': this.unicodeArrayRotateValue,
|
||||
'raw': `'${this.unicodeArrayRotateValue}'`
|
||||
},
|
||||
{
|
||||
'type': 'Literal',
|
||||
'value': true,
|
||||
'raw': 'true'
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
exports.UnicodeArrayRotateFunctionCallNode = UnicodeArrayRotateFunctionCallNode;
|
||||
//# sourceMappingURL=UnicodeArrayRotateFunctionCallNode.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"UnicodeArrayRotateFunctionCallNode.js","sourceRoot":"","sources":["UnicodeArrayRotateFunctionCallNode.ts"],"names":[],"mappings":";AAAA,uBAAqB,QAAQ,CAAC,CAAA;AAE9B,IAAI,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAEvC,iDAAwD,WAAI;IAgCxD,YACI,OAAY,EACZ,8BAAsC,EACtC,gBAAwB,EACxB,uBAA+B;QAE/B,OAAO,CAAC;QAER,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,8BAA8B,GAAG,8BAA8B,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC;IAEM,UAAU;QACb,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM;gBAChB,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChB,KAAK,SAAS;wBACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;wBAElC,KAAK,CAAC;gBACd,CAAC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAKS,gBAAgB;QACtB,MAAM,CAAC;YACH,MAAM,EAAE,qBAAqB;YAC7B,YAAY,EAAE;gBACV,MAAM,EAAE,gBAAgB;gBACxB,QAAQ,EAAE;oBACN,MAAM,EAAE,YAAY;oBACpB,MAAM,EAAE,IAAI,CAAC,8BAA8B;iBAC9C;gBACD,WAAW,EAAE;oBACT;wBACI,MAAM,EAAE,YAAY;wBACpB,MAAM,EAAE,IAAI,CAAC,gBAAgB;qBAChC;oBACD;wBACI,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,IAAI,CAAC,uBAAuB;wBACrC,KAAK,EAAE,IAAI,IAAI,CAAC,uBAAuB,GAAG;qBAC7C;oBACD;wBACI,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,IAAI;wBACb,KAAK,EAAE,MAAM;qBAChB;iBACJ;aACJ;SACJ,CAAC;IACN,CAAC;AACL,CAAC;AA3FY,0CAAkC,qCA2F9C,CAAA"}
|
||||
@@ -1,269 +0,0 @@
|
||||
"use strict";
|
||||
const Node_1 = require('./Node');
|
||||
const Utils_1 = require('../Utils');
|
||||
let estraverse = require('estraverse');
|
||||
class UnicodeArrayRotateFunctionNode extends Node_1.Node {
|
||||
constructor(astTree, unicodeArrayRotateFunctionName, unicodeArrayName) {
|
||||
super();
|
||||
this.astTree = astTree;
|
||||
this.unicodeArrayRotateFunctionName = unicodeArrayRotateFunctionName;
|
||||
this.unicodeArrayName = unicodeArrayName;
|
||||
this.node = this.getNodeStructure();
|
||||
}
|
||||
appendNode() {
|
||||
estraverse.replace(this.astTree, {
|
||||
leave: (node, parent) => {
|
||||
switch (node.type) {
|
||||
case 'Program':
|
||||
node.body.push(this.getNode());
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
getNodeIdentifier() {
|
||||
return this.unicodeArrayRotateFunctionName;
|
||||
}
|
||||
getNodeStructure() {
|
||||
return {
|
||||
'type': 'FunctionExpression',
|
||||
'id': {
|
||||
'type': 'Identifier',
|
||||
'name': this.unicodeArrayRotateFunctionName
|
||||
},
|
||||
'params': [
|
||||
{
|
||||
'type': 'Identifier',
|
||||
'name': 'array'
|
||||
},
|
||||
{
|
||||
'type': 'Identifier',
|
||||
'name': 'times'
|
||||
},
|
||||
{
|
||||
'type': 'Identifier',
|
||||
'name': 'reverse'
|
||||
}
|
||||
],
|
||||
'defaults': [],
|
||||
'body': {
|
||||
'type': 'BlockStatement',
|
||||
'body': [
|
||||
{
|
||||
'type': 'IfStatement',
|
||||
'test': {
|
||||
'type': 'BinaryExpression',
|
||||
'operator': '<',
|
||||
'left': {
|
||||
'type': 'Identifier',
|
||||
'name': 'times'
|
||||
},
|
||||
'right': {
|
||||
'type': 'Literal',
|
||||
'value': 0,
|
||||
'raw': '0'
|
||||
}
|
||||
},
|
||||
'consequent': {
|
||||
'type': 'BlockStatement',
|
||||
'body': [
|
||||
{
|
||||
'type': 'ReturnStatement',
|
||||
'argument': null
|
||||
}
|
||||
]
|
||||
},
|
||||
'alternate': null
|
||||
},
|
||||
{
|
||||
'type': 'ExpressionStatement',
|
||||
'expression': {
|
||||
'type': 'AssignmentExpression',
|
||||
'operator': '=',
|
||||
'left': {
|
||||
'type': 'Identifier',
|
||||
'name': 'reverse'
|
||||
},
|
||||
'right': {
|
||||
'type': 'LogicalExpression',
|
||||
'operator': '||',
|
||||
'left': {
|
||||
'type': 'Identifier',
|
||||
'name': 'reverse'
|
||||
},
|
||||
'right': {
|
||||
'type': 'Literal',
|
||||
'value': false,
|
||||
'raw': 'false'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
'type': 'VariableDeclaration',
|
||||
'declarations': [
|
||||
{
|
||||
'type': 'VariableDeclarator',
|
||||
'id': {
|
||||
'type': 'Identifier',
|
||||
'name': 'temp'
|
||||
},
|
||||
'init': null
|
||||
}
|
||||
],
|
||||
'kind': 'var'
|
||||
},
|
||||
{
|
||||
'type': 'WhileStatement',
|
||||
'test': {
|
||||
'type': 'UpdateExpression',
|
||||
'operator': '--',
|
||||
'argument': {
|
||||
'type': 'Identifier',
|
||||
'name': 'times'
|
||||
},
|
||||
'prefix': false
|
||||
},
|
||||
'body': {
|
||||
'type': 'BlockStatement',
|
||||
'body': [
|
||||
{
|
||||
'type': 'IfStatement',
|
||||
'test': {
|
||||
'type': 'UnaryExpression',
|
||||
'operator': '!',
|
||||
'argument': {
|
||||
'type': 'Identifier',
|
||||
'name': 'reverse'
|
||||
},
|
||||
'prefix': true
|
||||
},
|
||||
'consequent': {
|
||||
'type': 'BlockStatement',
|
||||
'body': [
|
||||
{
|
||||
'type': 'ExpressionStatement',
|
||||
'expression': {
|
||||
'type': 'AssignmentExpression',
|
||||
'operator': '=',
|
||||
'left': {
|
||||
'type': 'Identifier',
|
||||
'name': 'temp'
|
||||
},
|
||||
'right': {
|
||||
'type': 'CallExpression',
|
||||
'callee': {
|
||||
'type': 'MemberExpression',
|
||||
'computed': true,
|
||||
'object': {
|
||||
'type': 'Identifier',
|
||||
'name': 'array'
|
||||
},
|
||||
'property': {
|
||||
'type': 'Literal',
|
||||
'name': 'pop',
|
||||
'x-verbatim-property': Utils_1.Utils.stringToUnicode('pop')
|
||||
}
|
||||
},
|
||||
'arguments': []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
'type': 'ExpressionStatement',
|
||||
'expression': {
|
||||
'type': 'CallExpression',
|
||||
'callee': {
|
||||
'type': 'MemberExpression',
|
||||
'computed': true,
|
||||
'object': {
|
||||
'type': 'Identifier',
|
||||
'name': 'array'
|
||||
},
|
||||
'property': {
|
||||
'type': 'Literal',
|
||||
'name': 'unshift',
|
||||
'x-verbatim-property': Utils_1.Utils.stringToUnicode('unshift')
|
||||
}
|
||||
},
|
||||
'arguments': [
|
||||
{
|
||||
'type': 'Identifier',
|
||||
'name': 'temp'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
'alternate': {
|
||||
'type': 'BlockStatement',
|
||||
'body': [
|
||||
{
|
||||
'type': 'ExpressionStatement',
|
||||
'expression': {
|
||||
'type': 'AssignmentExpression',
|
||||
'operator': '=',
|
||||
'left': {
|
||||
'type': 'Identifier',
|
||||
'name': 'temp'
|
||||
},
|
||||
'right': {
|
||||
'type': 'CallExpression',
|
||||
'callee': {
|
||||
'type': 'MemberExpression',
|
||||
'computed': true,
|
||||
'object': {
|
||||
'type': 'Identifier',
|
||||
'name': 'array'
|
||||
},
|
||||
'property': {
|
||||
'type': 'Literal',
|
||||
'name': 'shift',
|
||||
'x-verbatim-property': Utils_1.Utils.stringToUnicode('shift')
|
||||
}
|
||||
},
|
||||
'arguments': []
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
'type': 'ExpressionStatement',
|
||||
'expression': {
|
||||
'type': 'CallExpression',
|
||||
'callee': {
|
||||
'type': 'MemberExpression',
|
||||
'computed': true,
|
||||
'object': {
|
||||
'type': 'Identifier',
|
||||
'name': 'array'
|
||||
},
|
||||
'property': {
|
||||
'type': 'Literal',
|
||||
'name': 'push',
|
||||
'x-verbatim-property': Utils_1.Utils.stringToUnicode('push')
|
||||
}
|
||||
},
|
||||
'arguments': [
|
||||
{
|
||||
'type': 'Identifier',
|
||||
'name': 'temp'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
'generator': false,
|
||||
'expression': false
|
||||
};
|
||||
}
|
||||
}
|
||||
exports.UnicodeArrayRotateFunctionNode = UnicodeArrayRotateFunctionNode;
|
||||
//# sourceMappingURL=UnicodeArrayRotateFunctionNode.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"UnicodeArrayRotateFunctionNode.js","sourceRoot":"","sources":["UnicodeArrayRotateFunctionNode.ts"],"names":[],"mappings":";AAAA,uBAAqB,QAAQ,CAAC,CAAA;AAC9B,wBAAsB,UAAU,CAAC,CAAA;AAEjC,IAAI,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAEvC,6CAAoD,WAAI;IAyBpD,YACI,OAAY,EACZ,8BAAsC,EACtC,gBAAwB;QAExB,OAAO,CAAC;QAER,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,8BAA8B,GAAG,8BAA8B,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC;IAEM,UAAU;QACb,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM;gBAChB,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChB,KAAK,SAAS;wBACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;wBAE/B,KAAK,CAAC;gBACd,CAAC;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAKM,iBAAiB;QACpB,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC;IAC/C,CAAC;IAKS,gBAAgB;QACtB,MAAM,CAAC;YACH,MAAM,EAAE,oBAAoB;YAC5B,IAAI,EAAE;gBACF,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,IAAI,CAAC,8BAA8B;aAC9C;YACD,QAAQ,EAAE;gBACN;oBACI,MAAM,EAAE,YAAY;oBACpB,MAAM,EAAE,OAAO;iBAClB;gBACD;oBACI,MAAM,EAAE,YAAY;oBACpB,MAAM,EAAE,OAAO;iBAClB;gBACD;oBACI,MAAM,EAAE,YAAY;oBACpB,MAAM,EAAE,SAAS;iBACpB;aACJ;YACD,UAAU,EAAE,EAAE;YACd,MAAM,EAAE;gBACJ,MAAM,EAAE,gBAAgB;gBACxB,MAAM,EAAE;oBACJ;wBACI,MAAM,EAAE,aAAa;wBACrB,MAAM,EAAE;4BACJ,MAAM,EAAE,kBAAkB;4BAC1B,UAAU,EAAE,GAAG;4BACf,MAAM,EAAE;gCACJ,MAAM,EAAE,YAAY;gCACpB,MAAM,EAAE,OAAO;6BAClB;4BACD,OAAO,EAAE;gCACL,MAAM,EAAE,SAAS;gCACjB,OAAO,EAAE,CAAC;gCACV,KAAK,EAAE,GAAG;6BACb;yBACJ;wBACD,YAAY,EAAE;4BACV,MAAM,EAAE,gBAAgB;4BACxB,MAAM,EAAE;gCACJ;oCACI,MAAM,EAAE,iBAAiB;oCACzB,UAAU,EAAE,IAAI;iCACnB;6BACJ;yBACJ;wBACD,WAAW,EAAE,IAAI;qBACpB;oBACD;wBACI,MAAM,EAAE,qBAAqB;wBAC7B,YAAY,EAAE;4BACV,MAAM,EAAE,sBAAsB;4BAC9B,UAAU,EAAE,GAAG;4BACf,MAAM,EAAE;gCACJ,MAAM,EAAE,YAAY;gCACpB,MAAM,EAAE,SAAS;6BACpB;4BACD,OAAO,EAAE;gCACL,MAAM,EAAE,mBAAmB;gCAC3B,UAAU,EAAE,IAAI;gCAChB,MAAM,EAAE;oCACJ,MAAM,EAAE,YAAY;oCACpB,MAAM,EAAE,SAAS;iCACpB;gCACD,OAAO,EAAE;oCACL,MAAM,EAAE,SAAS;oCACjB,OAAO,EAAE,KAAK;oCACd,KAAK,EAAE,OAAO;iCACjB;6BACJ;yBACJ;qBACJ;oBACD;wBACI,MAAM,EAAE,qBAAqB;wBAC7B,cAAc,EAAE;4BACZ;gCACI,MAAM,EAAE,oBAAoB;gCAC5B,IAAI,EAAE;oCACF,MAAM,EAAE,YAAY;oCACpB,MAAM,EAAE,MAAM;iCACjB;gCACD,MAAM,EAAE,IAAI;6BACf;yBACJ;wBACD,MAAM,EAAE,KAAK;qBAChB;oBACD;wBACI,MAAM,EAAE,gBAAgB;wBACxB,MAAM,EAAE;4BACJ,MAAM,EAAE,kBAAkB;4BAC1B,UAAU,EAAE,IAAI;4BAChB,UAAU,EAAE;gCACR,MAAM,EAAE,YAAY;gCACpB,MAAM,EAAE,OAAO;6BAClB;4BACD,QAAQ,EAAE,KAAK;yBAClB;wBACD,MAAM,EAAE;4BACJ,MAAM,EAAE,gBAAgB;4BACxB,MAAM,EAAE;gCACJ;oCACI,MAAM,EAAE,aAAa;oCACrB,MAAM,EAAE;wCACJ,MAAM,EAAE,iBAAiB;wCACzB,UAAU,EAAE,GAAG;wCACf,UAAU,EAAE;4CACR,MAAM,EAAE,YAAY;4CACpB,MAAM,EAAE,SAAS;yCACpB;wCACD,QAAQ,EAAE,IAAI;qCACjB;oCACD,YAAY,EAAE;wCACV,MAAM,EAAE,gBAAgB;wCACxB,MAAM,EAAE;4CACJ;gDACI,MAAM,EAAE,qBAAqB;gDAC7B,YAAY,EAAE;oDACV,MAAM,EAAE,sBAAsB;oDAC9B,UAAU,EAAE,GAAG;oDACf,MAAM,EAAE;wDACJ,MAAM,EAAE,YAAY;wDACpB,MAAM,EAAE,MAAM;qDACjB;oDACD,OAAO,EAAE;wDACL,MAAM,EAAE,gBAAgB;wDACxB,QAAQ,EAAE;4DACN,MAAM,EAAE,kBAAkB;4DAC1B,UAAU,EAAE,IAAI;4DAChB,QAAQ,EAAE;gEACN,MAAM,EAAE,YAAY;gEACpB,MAAM,EAAE,OAAO;6DAClB;4DACD,UAAU,EAAE;gEACR,MAAM,EAAE,SAAS;gEACjB,MAAM,EAAE,KAAK;gEACb,qBAAqB,EAAE,aAAK,CAAC,eAAe,CAAC,KAAK,CAAC;6DACtD;yDACJ;wDACD,WAAW,EAAE,EAAE;qDAClB;iDACJ;6CACJ;4CACD;gDACI,MAAM,EAAE,qBAAqB;gDAC7B,YAAY,EAAE;oDACV,MAAM,EAAE,gBAAgB;oDACxB,QAAQ,EAAE;wDACN,MAAM,EAAE,kBAAkB;wDAC1B,UAAU,EAAE,IAAI;wDAChB,QAAQ,EAAE;4DACN,MAAM,EAAE,YAAY;4DACpB,MAAM,EAAE,OAAO;yDAClB;wDACD,UAAU,EAAE;4DACR,MAAM,EAAE,SAAS;4DACjB,MAAM,EAAE,SAAS;4DACjB,qBAAqB,EAAE,aAAK,CAAC,eAAe,CAAC,SAAS,CAAC;yDAC1D;qDACJ;oDACD,WAAW,EAAE;wDACT;4DACI,MAAM,EAAE,YAAY;4DACpB,MAAM,EAAE,MAAM;yDACjB;qDACJ;iDACJ;6CACJ;yCACJ;qCACJ;oCACD,WAAW,EAAE;wCACT,MAAM,EAAE,gBAAgB;wCACxB,MAAM,EAAE;4CACJ;gDACI,MAAM,EAAE,qBAAqB;gDAC7B,YAAY,EAAE;oDACV,MAAM,EAAE,sBAAsB;oDAC9B,UAAU,EAAE,GAAG;oDACf,MAAM,EAAE;wDACJ,MAAM,EAAE,YAAY;wDACpB,MAAM,EAAE,MAAM;qDACjB;oDACD,OAAO,EAAE;wDACL,MAAM,EAAE,gBAAgB;wDACxB,QAAQ,EAAE;4DACN,MAAM,EAAE,kBAAkB;4DAC1B,UAAU,EAAE,IAAI;4DAChB,QAAQ,EAAE;gEACN,MAAM,EAAE,YAAY;gEACpB,MAAM,EAAE,OAAO;6DAClB;4DACD,UAAU,EAAE;gEACR,MAAM,EAAE,SAAS;gEACjB,MAAM,EAAE,OAAO;gEACf,qBAAqB,EAAE,aAAK,CAAC,eAAe,CAAC,OAAO,CAAC;6DACxD;yDACJ;wDACD,WAAW,EAAE,EAAE;qDAClB;iDACJ;6CACJ;4CACD;gDACI,MAAM,EAAE,qBAAqB;gDAC7B,YAAY,EAAE;oDACV,MAAM,EAAE,gBAAgB;oDACxB,QAAQ,EAAE;wDACN,MAAM,EAAE,kBAAkB;wDAC1B,UAAU,EAAE,IAAI;wDAChB,QAAQ,EAAE;4DACN,MAAM,EAAE,YAAY;4DACpB,MAAM,EAAE,OAAO;yDAClB;wDACD,UAAU,EAAE;4DACR,MAAM,EAAE,SAAS;4DACjB,MAAM,EAAE,MAAM;4DACd,qBAAqB,EAAE,aAAK,CAAC,eAAe,CAAC,MAAM,CAAC;yDACvD;qDACJ;oDACD,WAAW,EAAE;wDACT;4DACI,MAAM,EAAE,YAAY;4DACpB,MAAM,EAAE,MAAM;yDACjB;qDACJ;iDACJ;6CACJ;yCACJ;qCACJ;iCACJ;6BACJ;yBACJ;qBACJ;iBACJ;aACJ;YACD,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;SACtB,CAAC;IACN,CAAC;AACL,CAAC;AA7SY,sCAA8B,iCA6S1C,CAAA"}
|
||||
Reference in New Issue
Block a user