1*ed3bd27bSEvan Baconimport path from 'path'; 2082815dcSEvan Bacon 3*ed3bd27bSEvan Baconconst fs = jest.requireActual('fs') as typeof import('fs'); 4*ed3bd27bSEvan Baconconst template = path.join(__dirname, '../../../../../../../templates/expo-template-bare-minimum/'); 5082815dcSEvan Bacon 6*ed3bd27bSEvan Baconexport function readAllFiles(): { 7*ed3bd27bSEvan Bacon 'ios/HelloWorld/AppDelegate.mm': string; 8*ed3bd27bSEvan Bacon 'ios/Podfile': string; 9*ed3bd27bSEvan Bacon 'ios/HelloWorld.xcodeproj/project.pbxproj': string; 10*ed3bd27bSEvan Bacon 'ios/HelloWorld/Info.plist': string; 11*ed3bd27bSEvan Bacon 'ios/HelloWorld/Supporting/Expo.plist': string; 12*ed3bd27bSEvan Bacon 'android/app/src/main/AndroidManifest.xml': string; 13*ed3bd27bSEvan Bacon 'android/app/src/main/java/com/helloworld/MainActivity.java': string; 14*ed3bd27bSEvan Bacon 'android/app/src/main/java/com/helloworld/MainApplication.java': string; 15*ed3bd27bSEvan Bacon 'android/app/build.gradle': string; 16*ed3bd27bSEvan Bacon 'android/build.gradle': string; 17*ed3bd27bSEvan Bacon 'android/settings.gradle': string; 18*ed3bd27bSEvan Bacon} & Record<string, string> { 19*ed3bd27bSEvan Bacon const files: Record<string, string | Buffer> = { 20*ed3bd27bSEvan Bacon // This file is generated and therefore not available in the template. 21*ed3bd27bSEvan Bacon '/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h': `\ 22082815dcSEvan Bacon #include <memory> 23082815dcSEvan Bacon #include <string> 24082815dcSEvan Bacon 25082815dcSEvan Bacon #include <ReactCommon/TurboModuleManagerDelegate.h> 26082815dcSEvan Bacon #include <fbjni/fbjni.h> 27082815dcSEvan Bacon 28082815dcSEvan Bacon namespace facebook { 29082815dcSEvan Bacon namespace react { 30082815dcSEvan Bacon 31082815dcSEvan Bacon class MainApplicationTurboModuleManagerDelegate 32082815dcSEvan Bacon : public jni::HybridClass< 33082815dcSEvan Bacon MainApplicationTurboModuleManagerDelegate, 34082815dcSEvan Bacon TurboModuleManagerDelegate> { 35082815dcSEvan Bacon public: 36082815dcSEvan Bacon // Adapt it to the package you used for your Java class. 37082815dcSEvan Bacon static constexpr auto kJavaDescriptor = 38*ed3bd27bSEvan Bacon "Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;"; 39082815dcSEvan Bacon 40082815dcSEvan Bacon static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>); 41082815dcSEvan Bacon 42082815dcSEvan Bacon static void registerNatives(); 43082815dcSEvan Bacon 44082815dcSEvan Bacon std::shared_ptr<TurboModule> getTurboModule( 45082815dcSEvan Bacon const std::string name, 46082815dcSEvan Bacon const std::shared_ptr<CallInvoker> jsInvoker) override; 47082815dcSEvan Bacon std::shared_ptr<TurboModule> getTurboModule( 48082815dcSEvan Bacon const std::string name, 49082815dcSEvan Bacon const JavaTurboModule::InitParams ¶ms) override; 50082815dcSEvan Bacon 51082815dcSEvan Bacon /** 52082815dcSEvan Bacon * Test-only method. Allows user to verify whether a TurboModule can be 53082815dcSEvan Bacon * created by instances of this class. 54082815dcSEvan Bacon */ 55082815dcSEvan Bacon bool canCreateTurboModule(std::string name); 56082815dcSEvan Bacon }; 57082815dcSEvan Bacon 58082815dcSEvan Bacon } // namespace react 59082815dcSEvan Bacon } // namespace facebook 60082815dcSEvan Bacon `, 61082815dcSEvan Bacon }; 62*ed3bd27bSEvan Bacon 63*ed3bd27bSEvan Bacon function readFile(file: string) { 64*ed3bd27bSEvan Bacon const p = path.join(template, file); 65*ed3bd27bSEvan Bacon if (fs.statSync(p).isDirectory()) { 66*ed3bd27bSEvan Bacon fs.readdirSync(p).forEach((f) => { 67*ed3bd27bSEvan Bacon readFile(`${file}/${f}`); 68*ed3bd27bSEvan Bacon }); 69*ed3bd27bSEvan Bacon } else { 70*ed3bd27bSEvan Bacon if (file.match(/\.(png)$/)) { 71*ed3bd27bSEvan Bacon const contents = fs.readFileSync(p); 72*ed3bd27bSEvan Bacon files[file] = contents; 73*ed3bd27bSEvan Bacon } else { 74*ed3bd27bSEvan Bacon const contents = fs.readFileSync(p, 'utf-8'); 75*ed3bd27bSEvan Bacon files[file] = contents; 76*ed3bd27bSEvan Bacon } 77*ed3bd27bSEvan Bacon } 78*ed3bd27bSEvan Bacon } 79*ed3bd27bSEvan Bacon 80*ed3bd27bSEvan Bacon fs.readdirSync(path.join(template, 'ios')).forEach((file) => { 81*ed3bd27bSEvan Bacon readFile(`ios/${file}`); 82*ed3bd27bSEvan Bacon }); 83*ed3bd27bSEvan Bacon fs.readdirSync(path.join(template, 'android')).forEach((file) => { 84*ed3bd27bSEvan Bacon readFile(`android/${file}`); 85*ed3bd27bSEvan Bacon }); 86*ed3bd27bSEvan Bacon 87*ed3bd27bSEvan Bacon return files as any; 88*ed3bd27bSEvan Bacon} 89*ed3bd27bSEvan Bacon 90*ed3bd27bSEvan Baconexport default readAllFiles(); 91