1{"version":3,"file":"Package.js","names":["debug","Debug","withPackageManifest","createAndroidManifestPlugin","setPackageInAndroidManifest","withPackageGradle","config","withAppBuildGradle","modResults","language","contents","setPackageInBuildGradle","addWarningAndroid","withPackageRefactor","withDangerousMod","renamePackageOnDisk","modRequest","projectRoot","getPackage","android","package","getPackageRoot","type","path","join","getCurrentPackageName","packageRoot","mainApplication","getProjectFilePath","packagePath","dirname","packagePathParts","relative","split","sep","filter","Boolean","getCurrentPackageForProjectFile","fileName","filePath","globSync","getCurrentPackageNameForType","newPackageName","renameJniOnDiskForType","packageName","renamePackageOnDiskForType","currentPackageName","jniRoot","filesToUpdate","cwd","absolute","forEach","filepath","fs","lstatSync","isFile","includes","extname","readFileSync","toString","replace","RegExp","transformJavaClassDescriptor","writeFileSync","directoryExistsAsync","currentPackagePath","newPackagePath","mkdirSync","recursive","relativePath","moveFileSync","oldPathParts","length","pathToCheck","files","readdirSync","rmdirSync","pop","push","src","dest","renameSync","buildGradle","pattern","androidManifest","manifest","$","getApplicationIdAsync","buildGradlePath","getAppBuildGradleFilePath","existsSync","promises","readFile","matchResult","match"],"sources":["../../src/android/Package.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport Debug from 'debug';\nimport fs from 'fs';\nimport { sync as globSync } from 'glob';\nimport path from 'path';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { createAndroidManifestPlugin, withAppBuildGradle } from '../plugins/android-plugins';\nimport { withDangerousMod } from '../plugins/withDangerousMod';\nimport { directoryExistsAsync } from '../utils/modules';\nimport { addWarningAndroid } from '../utils/warnings';\nimport { AndroidManifest } from './Manifest';\nimport { getAppBuildGradleFilePath, getProjectFilePath } from './Paths';\n\nconst debug = Debug('expo:config-plugins:android:package');\n\nexport const withPackageManifest = createAndroidManifestPlugin(\n  setPackageInAndroidManifest,\n  'withPackageManifest'\n);\n\nexport const withPackageGradle: ConfigPlugin = (config) => {\n  return withAppBuildGradle(config, (config) => {\n    if (config.modResults.language === 'groovy') {\n      config.modResults.contents = setPackageInBuildGradle(config, config.modResults.contents);\n    } else {\n      addWarningAndroid(\n        'android.package',\n        `Cannot automatically configure app build.gradle if it's not groovy`\n      );\n    }\n    return config;\n  });\n};\n\nexport const withPackageRefactor: ConfigPlugin = (config) => {\n  return withDangerousMod(config, [\n    'android',\n    async (config) => {\n      await renamePackageOnDisk(config, config.modRequest.projectRoot);\n      return config;\n    },\n  ]);\n};\n\nexport function getPackage(config: Pick<ExpoConfig, 'android'>) {\n  return config.android?.package ?? null;\n}\n\nfunction getPackageRoot(projectRoot: string, type: 'main' | 'debug') {\n  return path.join(projectRoot, 'android', 'app', 'src', type, 'java');\n}\n\nfunction getCurrentPackageName(projectRoot: string, packageRoot: string) {\n  const mainApplication = getProjectFilePath(projectRoot, 'MainApplication');\n  const packagePath = path.dirname(mainApplication);\n  const packagePathParts = path.relative(packageRoot, packagePath).split(path.sep).filter(Boolean);\n\n  return packagePathParts.join('.');\n}\n\nfunction getCurrentPackageForProjectFile(\n  projectRoot: string,\n  packageRoot: string,\n  fileName: string,\n  type: string\n) {\n  const filePath = globSync(\n    path.join(projectRoot, `android/app/src/${type}/java/**/${fileName}.@(java|kt)`)\n  )[0];\n\n  if (!filePath) {\n    return null;\n  }\n\n  const packagePath = path.dirname(filePath);\n  const packagePathParts = path.relative(packageRoot, packagePath).split(path.sep).filter(Boolean);\n\n  return packagePathParts.join('.');\n}\n\nfunction getCurrentPackageNameForType(projectRoot: string, type: string): string | null {\n  const packageRoot = getPackageRoot(projectRoot, type as any);\n\n  if (type === 'main') {\n    return getCurrentPackageName(projectRoot, packageRoot);\n  }\n  // debug, etc..\n  return getCurrentPackageForProjectFile(projectRoot, packageRoot, '*', type);\n}\n\n// NOTE(brentvatne): this assumes that our MainApplication.java file is in the root of the package\n// this makes sense for standard react-native projects but may not apply in customized projects, so if\n// we want this to be runnable in any app we need to handle other possibilities\nexport async function renamePackageOnDisk(\n  config: Pick<ExpoConfig, 'android'>,\n  projectRoot: string\n) {\n  const newPackageName = getPackage(config);\n  if (newPackageName === null) {\n    return;\n  }\n\n  for (const type of ['main', 'debug']) {\n    await renameJniOnDiskForType({ projectRoot, type, packageName: newPackageName });\n    await renamePackageOnDiskForType({ projectRoot, type, packageName: newPackageName });\n  }\n}\n\nexport async function renameJniOnDiskForType({\n  projectRoot,\n  type,\n  packageName,\n}: {\n  projectRoot: string;\n  type: string;\n  packageName: string;\n}) {\n  if (!packageName) {\n    return;\n  }\n\n  const currentPackageName = getCurrentPackageNameForType(projectRoot, type);\n  if (!currentPackageName || !packageName || currentPackageName === packageName) {\n    return;\n  }\n\n  const jniRoot = path.join(projectRoot, 'android', 'app', 'src', type, 'jni');\n  const filesToUpdate = [...globSync('**/*', { cwd: jniRoot, absolute: true })];\n  // Replace all occurrences of the path in the project\n  filesToUpdate.forEach((filepath: string) => {\n    try {\n      if (fs.lstatSync(filepath).isFile() && ['.h', '.cpp'].includes(path.extname(filepath))) {\n        let contents = fs.readFileSync(filepath).toString();\n        contents = contents.replace(\n          new RegExp(transformJavaClassDescriptor(currentPackageName).replace(/\\//g, '\\\\/'), 'g'),\n          transformJavaClassDescriptor(packageName)\n        );\n        fs.writeFileSync(filepath, contents);\n      }\n    } catch {\n      debug(`Error updating \"${filepath}\" for type \"${type}\"`);\n    }\n  });\n}\n\nexport async function renamePackageOnDiskForType({\n  projectRoot,\n  type,\n  packageName,\n}: {\n  projectRoot: string;\n  type: string;\n  packageName: string;\n}) {\n  if (!packageName) {\n    return;\n  }\n\n  const currentPackageName = getCurrentPackageNameForType(projectRoot, type);\n  debug(`Found package \"${currentPackageName}\" for type \"${type}\"`);\n  if (!currentPackageName || currentPackageName === packageName) {\n    return;\n  }\n  debug(`Refactor \"${currentPackageName}\" to \"${packageName}\" for type \"${type}\"`);\n  const packageRoot = getPackageRoot(projectRoot, type as any);\n  // Set up our paths\n  if (!(await directoryExistsAsync(packageRoot))) {\n    debug(`- skipping refactor of missing directory: ${packageRoot}`);\n    return;\n  }\n\n  const currentPackagePath = path.join(packageRoot, ...currentPackageName.split('.'));\n  const newPackagePath = path.join(packageRoot, ...packageName.split('.'));\n\n  // Create the new directory\n  fs.mkdirSync(newPackagePath, { recursive: true });\n\n  // Move everything from the old directory over\n  globSync('**/*', { cwd: currentPackagePath }).forEach((relativePath) => {\n    const filepath = path.join(currentPackagePath, relativePath);\n    if (fs.lstatSync(filepath).isFile()) {\n      moveFileSync(filepath, path.join(newPackagePath, relativePath));\n    } else {\n      fs.mkdirSync(filepath, { recursive: true });\n    }\n  });\n\n  // Remove the old directory recursively from com/old/package to com/old and com,\n  // as long as the directories are empty\n  const oldPathParts = currentPackageName.split('.');\n  while (oldPathParts.length) {\n    const pathToCheck = path.join(packageRoot, ...oldPathParts);\n    try {\n      const files = fs.readdirSync(pathToCheck);\n      if (files.length === 0) {\n        fs.rmdirSync(pathToCheck);\n      }\n    } finally {\n      oldPathParts.pop();\n    }\n  }\n\n  const filesToUpdate = [...globSync('**/*', { cwd: newPackagePath, absolute: true })];\n  // Only update the BUCK file to match the main package name\n  if (type === 'main') {\n    filesToUpdate.push(path.join(projectRoot, 'android', 'app', 'BUCK'));\n  }\n  // Replace all occurrences of the path in the project\n  filesToUpdate.forEach((filepath: string) => {\n    try {\n      if (fs.lstatSync(filepath).isFile()) {\n        let contents = fs.readFileSync(filepath).toString();\n        contents = contents.replace(new RegExp(currentPackageName!, 'g'), packageName);\n        if (['.h', '.cpp'].includes(path.extname(filepath))) {\n          contents = contents.replace(\n            new RegExp(transformJavaClassDescriptor(currentPackageName).replace(/\\//g, '\\\\'), 'g'),\n            transformJavaClassDescriptor(packageName)\n          );\n        }\n        fs.writeFileSync(filepath, contents);\n      }\n    } catch {\n      debug(`Error updating \"${filepath}\" for type \"${type}\"`);\n    }\n  });\n}\n\nfunction moveFileSync(src: string, dest: string) {\n  fs.mkdirSync(path.dirname(dest), { recursive: true });\n  fs.renameSync(src, dest);\n}\n\nexport function setPackageInBuildGradle(config: Pick<ExpoConfig, 'android'>, buildGradle: string) {\n  const packageName = getPackage(config);\n  if (packageName === null) {\n    return buildGradle;\n  }\n\n  const pattern = new RegExp(`applicationId ['\"].*['\"]`);\n  return buildGradle.replace(pattern, `applicationId '${packageName}'`);\n}\n\nexport function setPackageInAndroidManifest(\n  config: Pick<ExpoConfig, 'android'>,\n  androidManifest: AndroidManifest\n) {\n  const packageName = getPackage(config);\n\n  if (packageName) {\n    androidManifest.manifest.$.package = packageName;\n  } else {\n    delete androidManifest.manifest.$.package;\n  }\n\n  return androidManifest;\n}\n\nexport async function getApplicationIdAsync(projectRoot: string): Promise<string | null> {\n  const buildGradlePath = getAppBuildGradleFilePath(projectRoot);\n  if (!fs.existsSync(buildGradlePath)) {\n    return null;\n  }\n  const buildGradle = await fs.promises.readFile(buildGradlePath, 'utf8');\n  const matchResult = buildGradle.match(/applicationId ['\"](.*)['\"]/);\n  // TODO add fallback for legacy cases to read from AndroidManifest.xml\n  return matchResult?.[1] ?? null;\n}\n\n/**\n * Transform a java package name to java class descriptor,\n * e.g. `com.helloworld` -> `Lcom/helloworld`.\n */\nfunction transformJavaClassDescriptor(packageName: string) {\n  return `L${packageName.replace(/\\./g, '/')}`;\n}\n"],"mappings":"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"}