UNPKG

react-native-decompiler

Version:

react native decompile apk and ipa(soon)

68 lines 7.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("@babel/types"); const plugin_1 = require("../../plugin"); class JSXConverter extends plugin_1.Plugin { constructor() { super(...arguments); this.pass = 3; this.name = 'JSXConverter'; } getVisitor() { return { CallExpression: (path) => { if (!types_1.isMemberExpression(path.node.callee) || !types_1.isIdentifier(path.node.callee.object) || !types_1.isIdentifier(path.node.callee.property)) return; if (path.node.callee.object.name !== 'React' || path.node.callee.property.name !== 'createElement') return; path.replaceWith(this.parseJsx(path.node)); this.module.tags.push('jsx'); }, }; } parseJsx(node) { if (types_1.isStringLiteral(node)) { return types_1.jsxText(node.value); } if (types_1.isCallExpression(node)) { const args = node.arguments; let name; if (types_1.isIdentifier(args[0]) || types_1.isStringLiteral(args[0])) { name = types_1.jsxIdentifier(types_1.isIdentifier(args[0]) ? args[0].name : args[0].value); } else if (types_1.isMemberExpression(args[0]) && types_1.isIdentifier(args[0].object) && types_1.isIdentifier(args[0].property)) { name = types_1.jsxMemberExpression(types_1.jsxIdentifier(args[0].object.name), types_1.jsxIdentifier(args[0].property.name)); } else { this.debugLog(`fail to parse component ${args[0].type} inside callExpression`); return types_1.jsxExpressionContainer(node); } let props = []; if (types_1.isObjectExpression(args[1])) { props = args[1].properties.map((prop) => { if (!types_1.isObjectProperty(prop) || !types_1.isIdentifier(prop.key)) return null; if (types_1.isStringLiteral(prop.value)) { return types_1.jsxAttribute(types_1.jsxIdentifier(prop.key.name), prop.value); } if (types_1.isBooleanLiteral(prop.value) && prop.value.value) { return types_1.jsxAttribute(types_1.jsxIdentifier(prop.key.name), null); } if (types_1.isExpression(prop.value)) { return types_1.jsxAttribute(types_1.jsxIdentifier(prop.key.name), types_1.jsxExpressionContainer(prop.value)); } return null; }).filter((e) => e != null); } const children = args.slice(2).map((e) => (types_1.isExpression(e) ? this.parseJsx(e) : null)).filter((e) => e != null); if (children.length) { return types_1.jsxElement(types_1.jsxOpeningElement(name, props), types_1.jsxClosingElement(name), children); } return types_1.jsxElement(types_1.jsxOpeningElement(name, props, true), null, []); } this.debugLog(`fail to parse component ${node.type}`); return types_1.jsxExpressionContainer(node); } } exports.default = JSXConverter; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianN4Q29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RlY29tcGlsZXJzL3JlYWN0L2pzeENvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdCQSx3Q0EwQnNCO0FBQ3RCLHlDQUFzQztBQUt0QyxNQUFxQixZQUFhLFNBQVEsZUFBTTtJQUFoRDs7UUFDVyxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLFNBQUksR0FBRyxjQUFjLENBQUM7SUE0RHhCLENBQUM7SUExREMsVUFBVTtRQUNSLE9BQU87WUFDTCxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLDBCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7b0JBQUUsT0FBTztnQkFDeEksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLGVBQWU7b0JBQUUsT0FBTztnQkFFM0csSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sUUFBUSxDQUFDLElBQWdCO1FBQy9CLElBQUksdUJBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QixPQUFPLGVBQU8sQ0FBQyxJ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