UNPKG

react-native-decompiler

Version:

react native decompile apk and ipa(soon)

111 lines 10.5 kB
"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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmlsZVBhcnNlcnMvY2FjaGVQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsd0RBQTBCO0FBQzFCLG9EQUE0QjtBQUM1QixnREFBd0I7QUFDeEIsdURBQXlDO0FBQ3pDLCtEQUF1QztBQUd2Qyx1REFBK0I7QUFFL0Isc0VBQThDO0FBRTlDLE1BQXFCLFdBQVc7SUFBaEM7UUFDbUIsZ0JBQVcsR0FBRyxxQkFBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBbUYzRCxDQUFDO0lBakZDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBYTs7UUFDMUIsSUFBSTtZQUNGLE1BQU0sYUFBYSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxNQUFBLElBQUksQ0FBQyxLQUFLLG1DQUFJLE1BQU0sUUFBUSxDQUFDO1lBQ2xFLE1BQU0sSUFBSSxHQUFlLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFMUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO2dCQUMxRCxNQUFNLGtCQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7YUFDMUM7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFFL0IsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsY0FBYztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7WUFDekcsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsc0JBQXNCLENBQUMsS0FBYTtRQUNoRCxJQUFJLENBQUMsTUFBTSxrQkFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3pDLE9BQU8sa0JBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2lCQUNyQixJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsa0JBQUUsQ0FBQyxRQUFRLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzlGLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUY7UUFFRCxPQUFPLENBQUMsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFhOztRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFaEMsTUFBTSxhQUFhLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQUEsSUFBSSxDQUFDLEtBQUssbUNBQUksTUFBTSxRQUFRLENBQUM7UUFDbEUsTUFBTSxTQUFTLEdBQWUsTUFBTSxrQkFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUvRCxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUU7Z0JBQzdFLE9BQU8sWUFBWSxDQUFDO2FBQ3JCO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckQsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEMsSUFBSSxNQUFNLElBQUksSUFBSTtnQkFBRSxPQUFPO1lBQzNCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztZQUNsRyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hILGtCQUFRLENBQUMsWUFBWSxFQUFFO2dCQUNyQixrQkFBa0IsQ0FBQyxRQUFRO29CQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFNLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ2xLLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTt3QkFDdkIsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO3dCQUNoQyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7d0JBQ3hDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQzt3QkFDdEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO3dCQUNsQyxNQUFNLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7d0JBQzVDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQzt3QkFDdEMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztxQkFDbkQ7b0JBQ0QsTUFBTSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO29CQUM1QyxNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7b0JBQzlDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUNyRCxNQUFNLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ2xDLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUM7b0JBRXhELE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO29CQUVsQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xCLENBQUM7YUFDRixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV4QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFwRkQsOEJBb0ZDIn0=