react-native-decompiler
Version:
react native decompile apk and ipa(soon)
111 lines • 10.5 kB
JavaScript
;
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 crypto_1 = __importDefault(require("crypto"));
const path_1 = __importDefault(require("path"));
const babylon = __importStar(require("@babel/parser"));
const traverse_1 = __importDefault(require("@babel/traverse"));
const module_1 = __importDefault(require("../module"));
const progressBar_1 = __importDefault(require("../util/progressBar"));
class CacheParser {
constructor() {
this.progressBar = progressBar_1.default.getInstance();
}
async canParse(args) {
var _a;
try {
const cacheFilename = `${args.out}/${(_a = args.entry) !== null && _a !== void 0 ? _a : 'null'}.cache`;
const file = await fs_extra_1.default.readJSON(cacheFilename);
console.log('Cache detected, validating it...');
const currentChecksums = await this.generateInputChecksums(args.in);
if (file.inputChecksum.some((checksum, i) => checksum !== currentChecksums[i])) {
console.log('Cache invalidated due to checksum mismatch');
await fs_extra_1.default.remove(cacheFilename);
throw new Error('Cache was invalidated');
}
console.log('Cache validated');
return true;
}
catch (e) {
if (args.agressiveCache)
throw new Error('A cache file must be generated before using --agressiveCache');
return false;
}
}
async generateInputChecksums(input) {
if ((await fs_extra_1.default.lstat(input)).isDirectory()) {
return fs_extra_1.default.readdir(input)
.then((fileNames) => Promise.all(fileNames.map((file) => fs_extra_1.default.readFile(path_1.default.join(input, file)))))
.then((files) => files.map((file) => crypto_1.default.createHash('md5').update(file).digest('hex')));
}
return [crypto_1.default.createHash('md5').update(await fs_extra_1.default.readFile(input)).digest('hex')];
}
async parse(args) {
var _a;
console.log('Loading cache...');
const cacheFilename = `${args.out}/${(_a = args.entry) !== null && _a !== void 0 ? _a : 'null'}.cache`;
const cacheFile = await fs_extra_1.default.readJSON(cacheFilename);
const validCachedModules = cacheFile.modules.map((cachedModule) => {
if (!args.agressiveCache || !cachedModule.ignored || cachedModule.isNpmModule) {
return cachedModule;
}
return null;
});
const modules = [];
this.progressBar.start(0, validCachedModules.length);
validCachedModules.forEach((cached) => {
if (cached == null)
return;
const canIgnoreModuleBody = args.agressiveCache && cached.isNpmModule && cached.code.length > 128;
const originalFile = babylon.parse(canIgnoreModuleBody ? '(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){})' : cached.code);
traverse_1.default(originalFile, {
FunctionExpression(nodePath) {
const module = new module_1.default(originalFile, nodePath, cached.moduleId, args.agressiveCache ? cached.dependencies : cached.originalDependencies, cached.paramMappings);
if (args.agressiveCache) {
module.ignored = cached.ignored;
module.isNpmModule = cached.isNpmModule;
module.isPolyfill = cached.isPolyfill;
module.isStatic = cached.isStatic;
module.staticContent = cached.staticContent;
module.moduleName = cached.moduleName;
module.npmModuleVarName = cached.npmModuleVarName;
}
module.moduleStrings = cached.moduleStrings;
module.moduleComments = cached.moduleComments;
module.variableNames = new Set(cached.variableNames);
module.originalCode = cached.code;
module.previousRunChecksum = cached.previousRunChecksum;
modules[cached.moduleId] = module;
nodePath.skip();
},
});
this.progressBar.increment();
});
this.progressBar.stop();
return modules;
}
}
exports.default = CacheParser;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmlsZVBhcnNlcnMvY2FjaGVQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsd0RBQTBCO0FBQzFCLG9EQUE0QjtBQUM1QixnREFBd0I7QUFDeEIsdURBQXlDO0FBQ3pDLCtEQUF1QztBQUd2Qyx1REFBK0I7QUFFL0Isc0VBQThDO0FBRTlDLE1BQXFCLFdBQVc7SUFBaEM7UUFDbUIsZ0JBQVcsR0FBRyxxQkFBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBbUYzRCxDQUFDO0lBakZDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBYTs7UUFDMUIsSUFBSTtZQUNGLE1BQU0sYUFBYSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxNQUFBLElBQUksQ0FBQyxLQUFLLG1DQUFJLE1BQU0sUUFBUSxDQUFDO1lBQ2xFLE1BQU0sSUFBSSxHQUFlLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFMUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO2dCQUMxRCxNQUFNLGtCQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7YUFDMUM7WUFDRCxPQUFPLENB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