react-native-decompiler
Version:
react native decompile apk and ipa(soon)
119 lines • 11.2 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Plugin = void 0;
const t = __importStar(require("@babel/types"));
const generator_1 = __importDefault(require("@babel/generator"));
const debug_1 = __importDefault(require("debug"));
class Plugin {
constructor(cmdArgs, module, moduleList) {
this.cmdArgs = cmdArgs;
this.module = module;
this.moduleList = moduleList;
}
getDebugName() {
var _a;
return `react-native-decompiler:${(_a = this.name) !== null && _a !== void 0 ? _a : 'plugin'}-${this.module.moduleId}`;
}
debugLog(formatter, ...args) {
debug_1.default(this.getDebugName())(formatter, ...args);
}
debugPathToCode(path) {
if (!debug_1.default(this.getDebugName()).enabled)
return '';
return generator_1.default({
...this.module.originalFile.program,
type: 'Program',
body: [t.isStatement(path.node) ? path.node : t.expressionStatement(path.node)],
}).code;
}
navigateToModuleBody(path) {
return path.get('body');
}
hasTag(tag) {
return this.module.tags.includes(tag);
}
addTag(tag) {
this.module.tags.push(tag);
}
variableIsForDependency(path, dep) {
var _a, _b, _c;
const depArray = dep instanceof Array ? dep : [dep];
if (path.isVariableDeclarator()) {
const callExpression = path.get('init');
if (!callExpression.isCallExpression())
return false;
const requireValue = t.isStringLiteral(callExpression.node.arguments[0]) ? callExpression.node.arguments[0].value : null;
const dependencyName = (_c = (_b = (_a = this.getModuleDependency(callExpression)) === null || _a === void 0 ? void 0 : _a.moduleName) !== null && _b !== void 0 ? _b : requireValue) !== null && _c !== void 0 ? _c : '';
return depArray.includes(dependencyName);
}
if (path.isImportDeclaration()) {
if (!t.isStringLiteral(path.node.source))
return false;
return depArray.includes(path.node.source.value);
}
return false;
}
getModuleDependency(path) {
var _a, _b, _c, _d, _e;
if (!t.isIdentifier(path.node.callee))
return null;
if (!t.isNumericLiteral(path.node.arguments[0]) && !t.isMemberExpression(path.node.arguments[0]) && !t.isStringLiteral(path.node.arguments[0]))
return null;
if (((_a = path.scope.getBindingIdentifier(path.node.callee.name)) === null || _a === void 0 ? void 0 : _a.start) !== ((_b = this.module.requireParam) === null || _b === void 0 ? void 0 : _b.start))
return null;
if (t.isMemberExpression(path.node.arguments[0]) && t.isNumericLiteral(path.node.arguments[0].property)) {
return (_c = this.moduleList[this.module.dependencies[path.node.arguments[0].property.value]]) !== null && _c !== void 0 ? _c : null;
}
if (t.isStringLiteral(path.node.arguments[0])) {
const nonNpmRegexTest = /\.\/([0-9]+)/.exec(path.node.arguments[0].value);
if (nonNpmRegexTest != null) {
return this.moduleList[this.module.dependencies[+nonNpmRegexTest[1]]];
}
return (_d = this.moduleList.find((mod) => t.isStringLiteral(path.node.arguments[0]) && (mod === null || mod === void 0 ? void 0 : mod.moduleName) === path.node.arguments[0].value)) !== null && _d !== void 0 ? _d : null;
}
if (t.isNumericLiteral(path.node.arguments[0])) {
return (_e = this.moduleList[this.module.dependencies[path.node.arguments[0].value]]) !== null && _e !== void 0 ? _e : null;
}
return null;
}
bindingTraverse(binding, varName, visitor) {
binding.scope.traverse(binding.scope.block, {
...visitor,
Scope: (path) => {
if (!path.scope.bindingIdentifierEquals(varName, binding.identifier)) {
path.skip();
}
},
});
}
mergeBindings(path, from, to) {
const oldBinding = path.scope.bindings[to];
path.scope.rename(from, to);
path.remove();
path.scope.bindings[to] = oldBinding;
}
}
exports.Plugin = Plugin;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsZ0RBQWtDO0FBQ2xDLGlFQUF5QztBQUV6QyxrREFBMEI7QUFRMUIsTUFBc0IsTUFBTTtJQVMxQixZQUFZLE9BQWdCLEVBQUUsTUFBYyxFQUFFLFVBQW9CO1FBQ2hFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFjTyxZQUFZOztRQUNsQixPQUFPLDJCQUEyQixNQUFBLElBQUksQ0FBQyxJQUFJLG1DQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BGLENBQUM7SUFFUyxRQUFRLENBQUMsU0FBa0IsRUFBRSxHQUFHLElBQWU7UUFDdkQsZUFBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFPUyxlQUFlLENBQUMsSUFBbUI7UUFDM0MsSUFBSSxDQUFDLGVBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxPQUFPO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDbkQsT0FBTyxtQkFBUyxDQUFDO1lBQ2YsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPO1lBQ25DLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMs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