166057438SWojciech Kozyraimport escapeRegExp from 'lodash/escapeRegExp'; 266057438SWojciech Kozyra 3*71ea6032SKudo Chienimport type { Package } from '../../Packages'; 466057438SWojciech Kozyraimport { FileTransforms } from '../../Transforms.types'; 566057438SWojciech Kozyraimport { packagesToKeep, packagesToRename } from './packagesConfig'; 666057438SWojciech Kozyraimport { deleteLinesBetweenTags } from './utils'; 766057438SWojciech Kozyra 8*71ea6032SKudo Chienfunction expoModulesBaseTransforms(pkg: Package, abiVersion: string): FileTransforms { 966057438SWojciech Kozyra return { 1066057438SWojciech Kozyra path: [ 1166057438SWojciech Kozyra { 1266057438SWojciech Kozyra find: 'src/main/java', 1366057438SWojciech Kozyra replaceWith: `src/main/java/${abiVersion}`, 1466057438SWojciech Kozyra }, 1566057438SWojciech Kozyra { 1666057438SWojciech Kozyra find: 'src/main/kotlin', 1766057438SWojciech Kozyra replaceWith: `src/main/java/${abiVersion}`, 1866057438SWojciech Kozyra }, 1966057438SWojciech Kozyra { 2066057438SWojciech Kozyra find: 'src/main/AndroidManifest.xml', 2166057438SWojciech Kozyra replaceWith: 'src/main/TemporaryExpoModuleAndroidManifest.xml', 2266057438SWojciech Kozyra }, 2366057438SWojciech Kozyra ], 2466057438SWojciech Kozyra content: [ 25*71ea6032SKudo Chien { 26*71ea6032SKudo Chien // manifest-merger requires the legacy package name to be present in the manifest, 27*71ea6032SKudo Chien // filling the package name from `pkg.androidPackageNamespace`. 28*71ea6032SKudo Chien paths: './src/main/AndroidManifest.xml', 29*71ea6032SKudo Chien find: /^(<manifest)([\w\s>])/, 30*71ea6032SKudo Chien replaceWith: `$1 package="${pkg.androidPackageNamespace}"$2`, 31*71ea6032SKudo Chien }, 3266057438SWojciech Kozyra ...packagesToKeep.map((pkg: string) => ({ 3366057438SWojciech Kozyra paths: ['./src/main/{java,kotlin}/**/*.{java,kt}', './src/main/AndroidManifest.xml'], 3466057438SWojciech Kozyra find: new RegExp(`([, ^(<])${escapeRegExp(pkg)}`, 'g'), 3566057438SWojciech Kozyra replaceWith: `$1temporarydonotversion.${pkg}`, 3666057438SWojciech Kozyra })), 3766057438SWojciech Kozyra ...packagesToRename.map((pkg: string) => ({ 3866057438SWojciech Kozyra paths: ['./src/main/{java,kotlin}/**/*.{java,kt}', './src/main/AndroidManifest.xml'], 3966057438SWojciech Kozyra find: new RegExp(`([, ^(<])${escapeRegExp(pkg)}`, 'g'), 4066057438SWojciech Kozyra replaceWith: `$1${abiVersion}.${pkg}`, 4166057438SWojciech Kozyra })), 4266057438SWojciech Kozyra { 4366057438SWojciech Kozyra paths: ['./src/main/{java,kotlin}/**/*.{java,kt}', './src/main/AndroidManifest.xml'], 4466057438SWojciech Kozyra find: /temporarydonotversion\./g, 4566057438SWojciech Kozyra replaceWith: '', 4666057438SWojciech Kozyra }, 4766057438SWojciech Kozyra { 4866057438SWojciech Kozyra paths: './src/main/{java,kotlin}/**/*.java', 4966057438SWojciech Kozyra find: /\/\/ *EXPO_VERSIONING_NEEDS_EXPOVIEW_R/g, 5066057438SWojciech Kozyra replaceWith: `import ${abiVersion}.host.exp.expoview.R;`, 5166057438SWojciech Kozyra }, 5266057438SWojciech Kozyra { 5366057438SWojciech Kozyra paths: './src/main/{java,kotlin}/**/*.kt', 5466057438SWojciech Kozyra find: /\/\/ *EXPO_VERSIONING_NEEDS_EXPOVIEW_R/g, 5566057438SWojciech Kozyra replaceWith: `import ${abiVersion}.host.exp.expoview.R`, 5666057438SWojciech Kozyra }, 5766057438SWojciech Kozyra ], 5866057438SWojciech Kozyra }; 5966057438SWojciech Kozyra} 6066057438SWojciech Kozyra 61*71ea6032SKudo Chienexport function expoModulesTransforms(pkg: Package, abiVersion: string): FileTransforms { 62*71ea6032SKudo Chien const module = pkg.packageName; 63*71ea6032SKudo Chien const base = expoModulesBaseTransforms(pkg, abiVersion); 6466057438SWojciech Kozyra const moduleTransforms: Record<string, FileTransforms> = { 656239b2d0SKudo Chien 'expo-modules-core': { 666239b2d0SKudo Chien content: [ 676239b2d0SKudo Chien { 686239b2d0SKudo Chien // We don't have dedicated gradle files for versioned expo-modules. 696239b2d0SKudo Chien // For the BuildConfig, replace with unversioned expoview BuildConfig. 706239b2d0SKudo Chien paths: './**/*.{java,kt}', 716239b2d0SKudo Chien find: new RegExp(`\\bimport ${abiVersion}\\.expo\\.modules\\.BuildConfig`, 'g'), 726239b2d0SKudo Chien replaceWith: 'import host.exp.expoview.BuildConfig', 736239b2d0SKudo Chien }, 746239b2d0SKudo Chien ], 756239b2d0SKudo Chien }, 7666057438SWojciech Kozyra 'expo-updates': { 7766057438SWojciech Kozyra content: [ 7866057438SWojciech Kozyra { 7966057438SWojciech Kozyra paths: './src/main/{java,kotlin}/expo/modules/updates/UpdatesPackage.kt', 8066057438SWojciech Kozyra transform: (text: string) => 8166057438SWojciech Kozyra deleteLinesBetweenTags( 8266057438SWojciech Kozyra /WHEN_VERSIONING_REMOVE_FROM_HERE/, 8366057438SWojciech Kozyra /WHEN_VERSIONING_REMOVE_TO_HERE/, 8466057438SWojciech Kozyra text 8566057438SWojciech Kozyra ), 8666057438SWojciech Kozyra }, 876239b2d0SKudo Chien { 88*71ea6032SKudo Chien paths: './**/*.kt', 89*71ea6032SKudo Chien find: /BuildConfig\.(EX_UPDATES_NATIVE_DEBUG|EX_UPDATES_ANDROID_DELAY_LOAD_APP)/g, 906239b2d0SKudo Chien replaceWith: 'false', 916239b2d0SKudo Chien }, 9266057438SWojciech Kozyra ], 9366057438SWojciech Kozyra }, 9466057438SWojciech Kozyra }; 9566057438SWojciech Kozyra const transforms: FileTransforms = moduleTransforms[module] ?? {}; 9666057438SWojciech Kozyra 9766057438SWojciech Kozyra return { 9866057438SWojciech Kozyra path: [...(base.path ?? []), ...(transforms.path ?? [])], 9966057438SWojciech Kozyra content: [...(base.content ?? []), ...(transforms.content ?? [])], 10066057438SWojciech Kozyra }; 10166057438SWojciech Kozyra} 102