1{"version":3,"file":"withIosBaseMods.js","names":["readFile","writeFile","promises","getEntitlementsPlistTemplate","getInfoPlistTemplate","CFBundleDevelopmentRegion","CFBundleExecutable","CFBundleIdentifier","CFBundleName","CFBundlePackageType","CFBundleInfoDictionaryVersion","CFBundleSignature","LSRequiresIPhoneOS","NSAppTransportSecurity","NSAllowsArbitraryLoads","NSExceptionDomains","localhost","NSExceptionAllowsInsecureHTTPLoads","UILaunchStoryboardName","UIRequiredDeviceCapabilities","UIViewControllerBasedStatusBarAppearance","UIStatusBarStyle","defaultProviders","dangerous","provider","getFilePath","read","write","appDelegate","modRequest","projectRoot","Paths","getAppDelegateFilePath","filePath","getFileInfo","modResults","contents","expoPlist","isIntrospective","platformProjectRoot","projectName","supportingDirectory","path","join","resolve","introspect","plist","parse","error","build","sortObject","xcodeproj","getPBXProjectPath","project","xcode","parseSync","writeSync","infoPlist","config","getPbxproj","infoPlistBuildProperty","getInfoPlistPathFromPbxproj","infoPlistPath","fileExists","addWarningIOS","getInfoPlistPath","ios","assert","entitlements","ensureApplicationTargetEntitlementsFileConfigured","Entitlements","getEntitlementsPath","fs","existsSync","podfileProperties","results","JsonFile","readAsync","writeAsync","withIosBaseMods","providers","props","withGeneratedBaseMods","platform","getIosModFileProviders"],"sources":["../../src/plugins/withIosBaseMods.ts"],"sourcesContent":["import JsonFile, { JSONObject, JSONValue } from '@expo/json-file';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport fs, { promises } from 'fs';\nimport path from 'path';\nimport xcode, { XcodeProject } from 'xcode';\n\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Entitlements, Paths } from '../ios';\nimport { ensureApplicationTargetEntitlementsFileConfigured } from '../ios/Entitlements';\nimport { InfoPlist } from '../ios/IosConfig.types';\nimport { getPbxproj } from '../ios/utils/Xcodeproj';\nimport { getInfoPlistPathFromPbxproj } from '../ios/utils/getInfoPlistPath';\nimport { fileExists } from '../utils/modules';\nimport { sortObject } from '../utils/sortObject';\nimport { addWarningIOS } from '../utils/warnings';\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\n\nconst { readFile, writeFile } = promises;\n\ntype IosModName = keyof Required<ModConfig>['ios'];\n\nfunction getEntitlementsPlistTemplate() {\n  // TODO: Fetch the versioned template file if possible\n  return {};\n}\n\nfunction getInfoPlistTemplate() {\n  // TODO: Fetch the versioned template file if possible\n  return {\n    CFBundleDevelopmentRegion: '$(DEVELOPMENT_LANGUAGE)',\n    CFBundleExecutable: '$(EXECUTABLE_NAME)',\n    CFBundleIdentifier: '$(PRODUCT_BUNDLE_IDENTIFIER)',\n    CFBundleName: '$(PRODUCT_NAME)',\n    CFBundlePackageType: '$(PRODUCT_BUNDLE_PACKAGE_TYPE)',\n    CFBundleInfoDictionaryVersion: '6.0',\n    CFBundleSignature: '????',\n    LSRequiresIPhoneOS: true,\n    NSAppTransportSecurity: {\n      NSAllowsArbitraryLoads: true,\n      NSExceptionDomains: {\n        localhost: {\n          NSExceptionAllowsInsecureHTTPLoads: true,\n        },\n      },\n    },\n    UILaunchStoryboardName: 'SplashScreen',\n    UIRequiredDeviceCapabilities: ['armv7'],\n    UIViewControllerBasedStatusBarAppearance: false,\n    UIStatusBarStyle: 'UIStatusBarStyleDefault',\n  };\n}\n\nconst defaultProviders = {\n  dangerous: provider<unknown>({\n    getFilePath() {\n      return '';\n    },\n    async read() {\n      return {};\n    },\n    async write() {},\n  }),\n  // Append a rule to supply AppDelegate data to mods on `mods.ios.appDelegate`\n  appDelegate: provider<Paths.AppDelegateProjectFile>({\n    getFilePath({ modRequest: { projectRoot } }) {\n      // TODO: Get application AppDelegate file from pbxproj.\n      return Paths.getAppDelegateFilePath(projectRoot);\n    },\n    async read(filePath) {\n      return Paths.getFileInfo(filePath);\n    },\n    async write(filePath: string, { modResults: { contents } }) {\n      await writeFile(filePath, contents);\n    },\n  }),\n  // Append a rule to supply Expo.plist data to mods on `mods.ios.expoPlist`\n  expoPlist: provider<JSONObject>({\n    isIntrospective: true,\n    getFilePath({ modRequest: { platformProjectRoot, projectName } }) {\n      const supportingDirectory = path.join(platformProjectRoot, projectName!, 'Supporting');\n      return path.resolve(supportingDirectory, 'Expo.plist');\n    },\n    async read(filePath, { modRequest: { introspect } }) {\n      try {\n        return plist.parse(await readFile(filePath, 'utf8'));\n      } catch (error) {\n        if (introspect) {\n          return {};\n        }\n        throw error;\n      }\n    },\n    async write(filePath, { modResults, modRequest: { introspect } }) {\n      if (introspect) {\n        return;\n      }\n      await writeFile(filePath, plist.build(sortObject(modResults)));\n    },\n  }),\n  // Append a rule to supply .xcodeproj data to mods on `mods.ios.xcodeproj`\n  xcodeproj: provider<XcodeProject>({\n    getFilePath({ modRequest: { projectRoot } }) {\n      return Paths.getPBXProjectPath(projectRoot);\n    },\n    async read(filePath) {\n      const project = xcode.project(filePath);\n      project.parseSync();\n      return project;\n    },\n    async write(filePath, { modResults }) {\n      await writeFile(filePath, modResults.writeSync());\n    },\n  }),\n  // Append a rule to supply Info.plist data to mods on `mods.ios.infoPlist`\n  infoPlist: provider<InfoPlist, ForwardedBaseModOptions>({\n    isIntrospective: true,\n    async getFilePath(config) {\n      let project: xcode.XcodeProject | null = null;\n      try {\n        project = getPbxproj(config.modRequest.projectRoot);\n      } catch {\n        // noop\n      }\n\n      // Only check / warn if a project actually exists, this'll provide\n      // more accurate warning messages for users in managed projects.\n      if (project) {\n        const infoPlistBuildProperty = getInfoPlistPathFromPbxproj(project);\n\n        if (infoPlistBuildProperty) {\n          //: [root]/myapp/ios/MyApp/Info.plist\n          const infoPlistPath = path.join(\n            //: myapp/ios\n            config.modRequest.platformProjectRoot,\n            //: MyApp/Info.plist\n            infoPlistBuildProperty\n          );\n          if (fileExists(infoPlistPath)) {\n            return infoPlistPath;\n          }\n          addWarningIOS(\n            'mods.ios.infoPlist',\n            `Info.plist file linked to Xcode project does not exist: ${infoPlistPath}`\n          );\n        } else {\n          addWarningIOS('mods.ios.infoPlist', 'Failed to find Info.plist linked to Xcode project.');\n        }\n      }\n      try {\n        // Fallback on glob...\n        return await Paths.getInfoPlistPath(config.modRequest.projectRoot);\n      } catch (error: any) {\n        if (config.modRequest.introspect) {\n          // fallback to an empty string in introspection mode.\n          return '';\n        }\n        throw error;\n      }\n    },\n    async read(filePath, config) {\n      // Apply all of the Info.plist values to the expo.ios.infoPlist object\n      // TODO: Remove this in favor of just overwriting the Info.plist with the Expo object. This will enable people to actually remove values.\n      if (!config.ios) config.ios = {};\n      if (!config.ios.infoPlist) config.ios.infoPlist = {};\n\n      let modResults: InfoPlist;\n      try {\n        const contents = await readFile(filePath, 'utf8');\n        assert(contents, 'Info.plist is empty');\n        modResults = plist.parse(contents) as InfoPlist;\n      } catch (error: any) {\n        // Throw errors in introspection mode.\n        if (!config.modRequest.introspect) {\n          throw error;\n        }\n        // Fallback to using the infoPlist object from the Expo config.\n        modResults = getInfoPlistTemplate();\n      }\n\n      config.ios.infoPlist = {\n        ...(modResults || {}),\n        ...config.ios.infoPlist,\n      };\n\n      return config.ios.infoPlist!;\n    },\n    async write(filePath, config) {\n      // Update the contents of the static infoPlist object\n      if (!config.ios) {\n        config.ios = {};\n      }\n      config.ios.infoPlist = config.modResults;\n\n      // Return early without writing, in introspection mode.\n      if (config.modRequest.introspect) {\n        return;\n      }\n\n      await writeFile(filePath, plist.build(sortObject(config.modResults)));\n    },\n  }),\n  // Append a rule to supply .entitlements data to mods on `mods.ios.entitlements`\n  entitlements: provider<JSONObject, ForwardedBaseModOptions>({\n    isIntrospective: true,\n\n    async getFilePath(config) {\n      try {\n        ensureApplicationTargetEntitlementsFileConfigured(config.modRequest.projectRoot);\n        return Entitlements.getEntitlementsPath(config.modRequest.projectRoot) ?? '';\n      } catch (error: any) {\n        if (config.modRequest.introspect) {\n          // fallback to an empty string in introspection mode.\n          return '';\n        }\n        throw error;\n      }\n    },\n\n    async read(filePath, config) {\n      let modResults: JSONObject;\n      try {\n        if (fs.existsSync(filePath)) {\n          const contents = await readFile(filePath, 'utf8');\n          assert(contents, 'Entitlements plist is empty');\n          modResults = plist.parse(contents);\n        } else {\n          modResults = getEntitlementsPlistTemplate();\n        }\n      } catch (error: any) {\n        // Throw errors in introspection mode.\n        if (!config.modRequest.introspect) {\n          throw error;\n        }\n        // Fallback to using the template file.\n        modResults = getEntitlementsPlistTemplate();\n      }\n\n      // Apply all of the .entitlements values to the expo.ios.entitlements object\n      // TODO: Remove this in favor of just overwriting the .entitlements with the Expo object. This will enable people to actually remove values.\n      if (!config.ios) config.ios = {};\n      if (!config.ios.entitlements) config.ios.entitlements = {};\n\n      config.ios.entitlements = {\n        ...(modResults || {}),\n        ...config.ios.entitlements,\n      };\n\n      return config.ios.entitlements!;\n    },\n\n    async write(filePath, config) {\n      // Update the contents of the static entitlements object\n      if (!config.ios) {\n        config.ios = {};\n      }\n      config.ios.entitlements = config.modResults;\n\n      // Return early without writing, in introspection mode.\n      if (config.modRequest.introspect) {\n        return;\n      }\n\n      await writeFile(filePath, plist.build(sortObject(config.modResults)));\n    },\n  }),\n\n  // Append a rule to supply Podfile.properties.json data to mods on `mods.ios.podfileProperties`\n  podfileProperties: provider<Record<string, JSONValue>>({\n    isIntrospective: true,\n\n    getFilePath({ modRequest: { platformProjectRoot } }) {\n      return path.resolve(platformProjectRoot, 'Podfile.properties.json');\n    },\n    async read(filePath) {\n      let results: Record<string, JSONValue> = {};\n      try {\n        results = await JsonFile.readAsync(filePath);\n      } catch {}\n      return results;\n    },\n    async write(filePath, { modResults, modRequest: { introspect } }) {\n      if (introspect) {\n        return;\n      }\n      await JsonFile.writeAsync(filePath, modResults);\n    },\n  }),\n};\n\ntype IosDefaultProviders = typeof defaultProviders;\n\nexport function withIosBaseMods(\n  config: ExportedConfig,\n  {\n    providers,\n    ...props\n  }: ForwardedBaseModOptions & { providers?: Partial<IosDefaultProviders> } = {}\n): ExportedConfig {\n  return withGeneratedBaseMods<IosModName>(config, {\n    ...props,\n    platform: 'ios',\n    providers: providers ?? getIosModFileProviders(),\n  });\n}\n\nexport function getIosModFileProviders() {\n  return defaultProviders;\n}\n"],"mappings":"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"}