react-native-decompiler
Version:
react native decompile apk and ipa(soon)
95 lines • 8.34 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 });
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const babylon = __importStar(require("@babel/parser"));
const traverse_1 = __importDefault(require("@babel/traverse"));
const types_1 = require("@babel/types");
const module_1 = __importDefault(require("../module"));
const performanceTracker_1 = __importDefault(require("../util/performanceTracker"));
const progressBar_1 = __importDefault(require("../util/progressBar"));
class ReactNativeFolderParser extends performanceTracker_1.default {
constructor() {
super(...arguments);
this.SEVEN_PARAM_MAPPING = {
globals: 0,
require: 1,
module: 4,
exports: 5,
};
this.progressBar = progressBar_1.default.getInstance();
}
async canParse(args) {
try {
const fileNames = await fs_extra_1.default.readdir(args.in);
return fileNames.some((fileName) => {
const file = fs_extra_1.default.readFileSync(path_1.default.join(args.in, fileName), 'utf8');
return /__d\(function\([a-z],[a-z],[a-z],[a-z],[a-z],[a-z],[a-z]\)/.test(file)
|| /__d\(function\([a-z],[a-z],[a-z],[a-z],[a-z],[a-z]\)/.test(file)
|| /__d\(function\([a-z],[a-z],[a-z],[a-z],[a-z]\)/.test(file);
});
}
catch (e) {
return false;
}
}
async parse(args) {
const fileNames = (await fs_extra_1.default.readdir(args.in)).filter((fileName) => fileName.endsWith('.js'));
console.log('Parsing folder...');
this.startTimer('parse');
this.progressBar.start(0, fileNames.length);
const modules = [];
await Promise.all(fileNames.map(async (fileName) => {
const file = await fs_extra_1.default.readFile(path_1.default.join(args.in, fileName), 'utf8');
const ast = babylon.parse(file);
traverse_1.default(ast, {
CallExpression: (nodePath) => {
if (types_1.isIdentifier(nodePath.node.callee) && nodePath.node.callee.name === '__d') {
const functionArg = nodePath.get('arguments')[0];
const moduleId = nodePath.get('arguments')[1];
const dependencies = nodePath.get('arguments')[2];
if (functionArg.isFunctionExpression() && moduleId.isNumericLiteral() && dependencies.isArrayExpression() && functionArg.node.body.body.length) {
const dependencyValues = dependencies.node.elements.map((e) => {
if (!types_1.isNumericLiteral(e))
throw new Error('Not numeric literal');
return e.value;
});
const newModule = new module_1.default(ast, functionArg, moduleId.node.value, dependencyValues, this.SEVEN_PARAM_MAPPING);
newModule.calculateFields();
modules[newModule.moduleId] = newModule;
}
}
nodePath.skip();
},
});
this.progressBar.increment();
}));
this.progressBar.stop();
this.stopAndPrintTime('parse');
return modules;
}
}
exports.default = ReactNativeFolderParser;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3ROYXRpdmVGb2xkZXJQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmlsZVBhcnNlcnMvcmVhY3ROYXRpdmVGb2xkZXJQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsd0RBQTBCO0FBQzFCLGdEQUF3QjtBQUN4Qix1REFBeUM7QUFDekMsK0RBQXVDO0FBQ3ZDLHdDQUE4RDtBQUU5RCx1REFBK0I7QUFFL0Isb0ZBQTREO0FBRTVELHNFQUE4QztBQUU5QyxNQUFxQix1QkFBd0IsU0FBUSw0QkFBa0I7SUFBdkU7O1FBQ21CLHdCQUFtQixHQUFrQjtZQUNwRCxPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sRUFBRSxDQUFDO1lBQ1YsTUFBTSxFQUFFLENBQUM7WUFDVCxPQUFPLEVBQUUsQ0FBQztTQUNYLENBQUM7UUFDZSxnQkFBVyxHQUFHLHFCQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7SUEwRDNELENBQUM7SUF4REMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFhO1FBQzFCLElBQUk7WUFDRixNQUFNLFNBQVMsR0FBRyxNQUFNLGtCQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUU1QyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakMsTUFBTSxJQUFJLEdBQUcsa0JBQUUsQ0FBQyxZQUFZLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNuRSxPQUFPLDREQUE0RCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7dUJBQ3pFLHNEQUFzRCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7dUJBQ2pFLGdEQUFnRCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRSxDQUFDLENBQUMs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