UNPKG

react-native-decompiler

Version:

react native decompile apk and ipa(soon)

87 lines 10.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("@babel/types"); const plugin_1 = require("../../plugin"); class ArrayDestructureEvaluator extends plugin_1.Plugin { constructor(args, module, moduleList) { super(args, module, moduleList); this.pass = 2; this.variableDeclarators = []; const destructureDependency = moduleList.find((mod) => (mod === null || mod === void 0 ? void 0 : mod.moduleName) === '@babel/runtime/helpers/slicedToArray'); this.destructureUsed = (destructureDependency === null || destructureDependency === void 0 ? void 0 : destructureDependency.moduleId) != null && module.dependencies.includes(destructureDependency === null || destructureDependency === void 0 ? void 0 : destructureDependency.moduleId); } getVisitor() { if (!this.destructureUsed) return {}; return { VariableDeclarator: (path) => { var _a, _b, _c, _d, _e, _f; if (!types_1.isIdentifier(path.node.id) || path.node.id.start == null) return; const variableDeclaratorData = { path, couldBeDestructure: false, couldBeArrayAccess: false, varName: path.node.id.name, varStart: path.node.id.start, }; if (types_1.isCallExpression(path.node.init) && types_1.isIdentifier(path.node.init.callee) && path.node.init.arguments.length === 2 && types_1.isIdentifier(path.node.init.arguments[0]) && types_1.isNumericLiteral(path.node.init.arguments[1])) { variableDeclaratorData.couldBeDestructure = true; variableDeclaratorData.destructureBindingStart = (_b = (_a = path.scope.getBindingIdentifier(path.node.init.callee.name)) === null || _a === void 0 ? void 0 : _a.start) !== null && _b !== void 0 ? _b : undefined; variableDeclaratorData.destructureArrayBindingStart = (_d = (_c = path.scope.getBindingIdentifier(path.node.init.arguments[0].name)) === null || _c === void 0 ? void 0 : _c.start) !== null && _d !== void 0 ? _d : undefined; } if (types_1.isMemberExpression(path.node.init) && types_1.isIdentifier(path.node.init.object) && types_1.isNumericLiteral(path.node.init.property)) { variableDeclaratorData.couldBeArrayAccess = true; variableDeclaratorData.arrayAccessBindingStart = (_f = (_e = path.scope.getBindingIdentifier(path.node.init.object.name)) === null || _e === void 0 ? void 0 : _e.start) !== null && _f !== void 0 ? _f : undefined; variableDeclaratorData.arrayAccessVal = path.node.init.property.value; } this.variableDeclarators.push(variableDeclaratorData); const callExpression = path.get('init'); if (!callExpression.isCallExpression()) return; const moduleDependency = this.getModuleDependency(callExpression); if ((moduleDependency === null || moduleDependency === void 0 ? void 0 : moduleDependency.moduleName) === '@babel/runtime/helpers/slicedToArray') { this.destructureFunction = path; this.destructureFunctionStart = path.node.id.start; } }, }; } afterPass() { if (this.destructureFunctionStart == null) return; this.variableDeclarators.forEach((data) => { var _a, _b; if (!data.couldBeDestructure) return; if (data.destructureBindingStart !== this.destructureFunctionStart) return; const sourceArray = this.variableDeclarators.find((srcData) => srcData.varStart === data.destructureArrayBindingStart); const arrayUsages = this.variableDeclarators.filter((arrData) => arrData.arrayAccessBindingStart === data.varStart); if (!sourceArray || !arrayUsages.length) return; const arrayPatternElements = []; arrayUsages.forEach((usage) => { if (usage.arrayAccessVal == null) throw new Error(); arrayPatternElements[usage.arrayAccessVal] = types_1.identifier(usage.varName); }); for (let i = 0; i < arrayPatternElements.length; i += 1) { if (arrayPatternElements[i] === undefined) { arrayPatternElements[i] = null; } } sourceArray.path.node.id = types_1.arrayPattern(arrayPatternElements); if (!((_a = this.destructureFunction) === null || _a === void 0 ? void 0 : _a.removed)) { (_b = this.destructureFunction) === null || _b === void 0 ? void 0 : _b.remove(); } if (!data.path.removed) { data.path.remove(); } arrayUsages.forEach((usageData) => (usageData.path.removed ? null : usageData.path.remove())); }); } } exports.default = ArrayDestructureEvaluator; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlEZXN0cnVjdHVyZUV2YWx1YXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNvbXBpbGVycy9ldmFsdWF0b3JzL2FycmF5RGVzdHJ1Y3R1cmVFdmFsdWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsd0NBU3NCO0FBQ3RCLHlDQUFzQztBQW1CdEMsTUFBcUIseUJBQTBCLFNBQVEsZUFBTTtJQVEzRCxZQUFZLElBQWEsRUFBRSxNQUFjLEVBQUUsVUFBb0I7UUFDN0QsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFSekIsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUdELHdCQUFtQixHQUE2QixFQUFFLENBQUM7UUFPbEUsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxVQUFVLE1BQUssc0NBQXNDLENBQUMsQ0FBQztRQUNuSCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUEscUJBQXFCLGFBQXJCLHFCQUFxQix1QkFBckIscUJBQXFCLENBQUUsUUFBUSxLQUFJLElBQUksSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsYUFBckIscUJBQXFCLHVCQUFyQixxQkFBcUIsQ0FBRSxRQUFRLENBQUMsQ0FBQztJQUNsSSxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXJDLE9BQU87WUFDTCxrQkFBa0IsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFOztnQkFDM0IsSUFBSSxDQUFDLG9CQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFB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