1import escapeRegExp from 'lodash/escapeRegExp'; 2 3import { FileTransforms } from '../../Transforms.types'; 4import { packagesToKeep, packagesToRename } from './packagesConfig'; 5import { deleteLinesBetweenTags } from './utils'; 6 7function expoModulesBaseTransforms(abiVersion: string): FileTransforms { 8 return { 9 path: [ 10 { 11 find: 'src/main/java', 12 replaceWith: `src/main/java/${abiVersion}`, 13 }, 14 { 15 find: 'src/main/kotlin', 16 replaceWith: `src/main/java/${abiVersion}`, 17 }, 18 { 19 find: 'src/main/AndroidManifest.xml', 20 replaceWith: 'src/main/TemporaryExpoModuleAndroidManifest.xml', 21 }, 22 ], 23 content: [ 24 ...packagesToKeep.map((pkg: string) => ({ 25 paths: ['./src/main/{java,kotlin}/**/*.{java,kt}', './src/main/AndroidManifest.xml'], 26 find: new RegExp(`([, ^(<])${escapeRegExp(pkg)}`, 'g'), 27 replaceWith: `$1temporarydonotversion.${pkg}`, 28 })), 29 ...packagesToRename.map((pkg: string) => ({ 30 paths: ['./src/main/{java,kotlin}/**/*.{java,kt}', './src/main/AndroidManifest.xml'], 31 find: new RegExp(`([, ^(<])${escapeRegExp(pkg)}`, 'g'), 32 replaceWith: `$1${abiVersion}.${pkg}`, 33 })), 34 { 35 paths: ['./src/main/{java,kotlin}/**/*.{java,kt}', './src/main/AndroidManifest.xml'], 36 find: /temporarydonotversion\./g, 37 replaceWith: '', 38 }, 39 { 40 paths: './src/main/{java,kotlin}/**/*.java', 41 find: /\/\/ *EXPO_VERSIONING_NEEDS_EXPOVIEW_R/g, 42 replaceWith: `import ${abiVersion}.host.exp.expoview.R;`, 43 }, 44 { 45 paths: './src/main/{java,kotlin}/**/*.kt', 46 find: /\/\/ *EXPO_VERSIONING_NEEDS_EXPOVIEW_R/g, 47 replaceWith: `import ${abiVersion}.host.exp.expoview.R`, 48 }, 49 ], 50 }; 51} 52 53export function expoModulesTransforms(module: string, abiVersion: string): FileTransforms { 54 const base = expoModulesBaseTransforms(abiVersion); 55 const moduleTransforms: Record<string, FileTransforms> = { 56 'expo-updates': { 57 content: [ 58 { 59 paths: './src/main/{java,kotlin}/expo/modules/updates/UpdatesPackage.kt', 60 transform: (text: string) => 61 deleteLinesBetweenTags( 62 /WHEN_VERSIONING_REMOVE_FROM_HERE/, 63 /WHEN_VERSIONING_REMOVE_TO_HERE/, 64 text 65 ), 66 }, 67 ], 68 }, 69 }; 70 const transforms: FileTransforms = moduleTransforms[module] ?? {}; 71 72 return { 73 path: [...(base.path ?? []), ...(transforms.path ?? [])], 74 content: [...(base.content ?? []), ...(transforms.content ?? [])], 75 }; 76} 77