react-native-decompiler
Version:
react native decompile apk and ipa(soon)
91 lines • 9.93 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const moduleFinder_1 = __importDefault(require("./moduleFinder"));
class SimpleModuleFinder extends moduleFinder_1.default {
constructor() {
super(...arguments);
this.name = 'SimpleModuleFinder';
this.commentMappings = {
react: ['react.production.min.js'],
'react-dom': ['react-dom.production.min.js'],
classnames: ['http://jedwatson.github.io/classnames'],
'safe-buffer': ['safe-buffer. MIT License. Feross Aboukhadijeh'],
buffer: ['The buffer module from node.js, for the browser.'],
};
this.stringMappings = {
'react-dom': ['suspended while rendering, but no fallback UI was specified'],
react: ['https://reactjs.org/docs/error-decoder.html?invariant='],
'react-native-web': ['Text strings must be rendered within a <Text> component.'],
'base64-js': ['Invalid string. Length must be a multiple of 4'],
'redux-react-hook': ['redux-react-hook requires your Redux store to be passed through context via the <StoreContext.Provider>'],
'pusher-js': ['You must pass your app key when you instantiate Pusher.'],
'regenerator-runtime': ['try statement without catch or finally'],
'@sentry/browser': ['addGlobalEventProcessor', 'getHubFromCarrier'],
'react-native': ['progress-bar-android-moved'],
'url-parse': ['^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+'],
'crypto-browserify': ['https://github.com/crypto-browserify/crypto-browserify'],
'style-loader': ['https://github.com/webpack-contrib/style-loader#insertat'],
'prop-types': ['Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types'],
'crypto-js': ['Native crypto module could not be used to get secure random number.'],
'react-i18next': ['pass in an i18next instance by using initReactI18next'],
i18next: ['accessing an object - but returnObjects options is not enabled!'],
};
this.codeRegexMappings = {
jsonwebtoken: [/verify:.\(/, /sign:.\(/, /JsonWebTokenError:.\(/, /NotBeforeError:.\(/, /TokenExpiredError:.\(/],
'asn1.js': [/.\.bignum=.\(/, /.\.define=.\(/, /.\.base=.\(/, /.\.constants=.\(/, /.\.decoders=.\(/, /.\.encoders=.\(/],
elliptic: [/.\.base=.\(/, /.\.mont=.\(/, /.\.short=.\(/, /.\.edwards=.\(/],
'crypto-js/aes': [/encryptBlock:function\(.,.\){this\._doCryptBlock\(.,.,this\._keySchedule,.,.,.,.,.\);?}/],
'lz-string': [/compressToEncodedURIComponent:function\(.\){return null==.\?"":.\._compress\(.,6,function\(.\){return .\.charAt\(.\);?}\);?}/],
};
this.moduleVarNames = {
react: 'React',
'react-dom': 'ReactDOM',
'base64-js': 'base64js',
'pusher-js': 'Pusher',
'regenerator-runtime': 'regeneratorRuntime',
'@sentry/browser': 'Sentry',
'react-native': 'ReactNative',
'url-parse': 'Url',
classnames: 'classnames',
'safe-buffer': 'Buffer',
buffer: 'Buffer',
'crypto-browserify': 'crypto',
'prop-types': 'PropTypes',
'crypto-js': 'CryptoJS',
'crypto-js/aes': 'AES',
jsonwebtoken: 'jwt',
i18next: 'i18next',
asn: 'asn',
'lz-string': 'LZString',
};
}
evaluate() {
const commentMappingMatch = Object.keys(this.commentMappings).find((key) => this.test(this.module.moduleComments, this.commentMappings[key]));
if (commentMappingMatch) {
this.debugLog(`${this.module.moduleId} matched module ${commentMappingMatch} via comment`);
this.tagAsNpmModule(commentMappingMatch, this.moduleVarNames[commentMappingMatch]);
return;
}
const stringMappingMatch = Object.keys(this.stringMappings).find((key) => this.test(this.module.moduleStrings, this.stringMappings[key]));
if (stringMappingMatch) {
this.debugLog(`${this.module.moduleId} matched module ${stringMappingMatch} via string`);
this.tagAsNpmModule(stringMappingMatch, this.moduleVarNames[stringMappingMatch]);
}
const codeRegexMatch = Object.keys(this.codeRegexMappings).find((key) => this.regexTest(this.module.originalCode, this.codeRegexMappings[key]));
if (codeRegexMatch) {
this.debugLog(`${this.module.moduleId} matched module ${codeRegexMatch} via code regex`);
this.tagAsNpmModule(codeRegexMatch, this.moduleVarNames[codeRegexMatch]);
}
}
test(moduleStrings, stringsToFind) {
return stringsToFind.every((stringToFind) => moduleStrings.some((moduleString) => moduleString.includes(stringToFind)));
}
regexTest(originalCode, regexes) {
return regexes.every((regex) => regex.test(originalCode));
}
}
exports.default = SimpleModuleFinder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlTW9kdWxlRmluZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RhZ2dlcnMvbnBtTW9kdWxlRmluZGVycy9zaW1wbGVNb2R1bGVGaW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFnQkEsa0VBQTBDO0FBSzFDLE1BQXFCLGtCQUFtQixTQUFRLHNCQUFZO0lBQTVEOztRQUNFLFNBQUksR0FBRyxvQkFBb0IsQ0FBQztRQUVYLG9CQUFlLEdBQTZCO1lBQzNELEtBQUssRUFBRSxDQUFDLHlCQUF5QixDQUFDO1lBQ2xDLFdBQVcsRUFBRSxDQUFDLDZCQUE2QixDQUFDO1lBQzVDLFVBQVUsRUFBRSxDQUFDLHVDQUF1QyxDQUFDO1lBQ3JELGFBQWEsRUFBRSxDQUFDLCtDQUErQyxDQUFDO1lBQ2hFLE1BQU0sRUFBRSxDQUFDLGtEQUFrRCxDQUFDO1NBQzdELENBQUM7UUFFZSxtQkFBYyxHQUE2QjtZQUMxRCxXQUFXLEVBQUUsQ0FBQyw2REFBNkQsQ0FBQztZQUM1RSxLQUFLLEVBQUUsQ0FBQyx3REFBd0QsQ0FBQztZQUNqRSxrQkFBa0IsRUFBRSxDQUFDLDBEQUEwRCxDQUFDO1lBQ2hGLFdBQVcsRUFBRSxDQUFDLGdEQUFnRCxDQUFDO1lBQy9ELGtCQUFrQixFQUFFLENBQUMseUdBQXlHLENBQUM7WUFDL0gsV0FBVyxFQUFFLENBQUMseURBQXlELENBQUM7WUFDeEUscUJBQXFCLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQztZQUNqRSxpQkFBaUIsRUFBRSxDQUFDLHlCQUF5QixFQUFFLG1CQUFtQixDQUFDO1lBQ25FLGNBQWMsRUFBRSxDQUFDLDRCQUE0QixDQUFDO1lBQzlDLFdBQVcsRUFBRSxDQUFDLDhLQUE4SyxDQUFDO1lBQzdMLG1CQUFtQixFQUFFLENBQUMsd0RBQXdELENBQUM7WUFDL0UsY0FBYyxFQUFFLENBQUMsMERBQTBELENBQUM7WUFDNUUsWUFBWSxFQUFFLENBQUMsaUxBQWlMLENBQUM7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