@expo/config-plugins 6.0.2 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +2 -2
  2. package/build/Plugin.types.js.map +1 -1
  3. package/build/android/AllowBackup.js.map +1 -1
  4. package/build/android/BuildProperties.js.map +1 -1
  5. package/build/android/Colors.js.map +1 -1
  6. package/build/android/EasBuild.js.map +1 -1
  7. package/build/android/EasBuildGradleScript.js.map +1 -1
  8. package/build/android/GoogleMapsApiKey.js.map +1 -1
  9. package/build/android/GoogleServices.js.map +1 -1
  10. package/build/android/IntentFilters.js.map +1 -1
  11. package/build/android/Manifest.js.map +1 -1
  12. package/build/android/Name.js.map +1 -1
  13. package/build/android/Orientation.js.map +1 -1
  14. package/build/android/Package.js +1 -0
  15. package/build/android/Package.js.map +1 -1
  16. package/build/android/Paths.js.map +1 -1
  17. package/build/android/Permissions.js.map +1 -1
  18. package/build/android/PrimaryColor.js.map +1 -1
  19. package/build/android/Properties.js.map +1 -1
  20. package/build/android/Resources.js.map +1 -1
  21. package/build/android/Scheme.js +1 -1
  22. package/build/android/Scheme.js.map +1 -1
  23. package/build/android/StatusBar.js.map +1 -1
  24. package/build/android/Strings.js.map +1 -1
  25. package/build/android/Styles.js.map +1 -1
  26. package/build/android/Updates.js +4 -3
  27. package/build/android/Updates.js.map +1 -1
  28. package/build/android/Version.js.map +1 -1
  29. package/build/android/WindowSoftInputMode.js.map +1 -1
  30. package/build/android/codeMod.js.map +1 -1
  31. package/build/android/index.js.map +1 -1
  32. package/build/index.js.map +1 -1
  33. package/build/ios/Bitcode.js.map +1 -1
  34. package/build/ios/BuildProperties.js.map +1 -1
  35. package/build/ios/BuildScheme.js.map +1 -1
  36. package/build/ios/BundleIdentifier.js.map +1 -1
  37. package/build/ios/DeviceFamily.js.map +1 -1
  38. package/build/ios/Entitlements.js.map +1 -1
  39. package/build/ios/Google.js.map +1 -1
  40. package/build/ios/Locales.js.map +1 -1
  41. package/build/ios/Maps.js.map +1 -1
  42. package/build/ios/Name.js.map +1 -1
  43. package/build/ios/Orientation.js.map +1 -1
  44. package/build/ios/Paths.js.map +1 -1
  45. package/build/ios/Permissions.js.map +1 -1
  46. package/build/ios/ProvisioningProfile.js.map +1 -1
  47. package/build/ios/RequiresFullScreen.js +1 -1
  48. package/build/ios/RequiresFullScreen.js.map +1 -1
  49. package/build/ios/Scheme.js.map +1 -1
  50. package/build/ios/Swift.js +1 -1
  51. package/build/ios/Swift.js.map +1 -1
  52. package/build/ios/Target.js.map +1 -1
  53. package/build/ios/Updates.js +4 -3
  54. package/build/ios/Updates.js.map +1 -1
  55. package/build/ios/UsesNonExemptEncryption.js.map +1 -1
  56. package/build/ios/Version.js.map +1 -1
  57. package/build/ios/XcodeProjectFile.js.map +1 -1
  58. package/build/ios/codeMod.js.map +1 -1
  59. package/build/ios/index.js.map +1 -1
  60. package/build/ios/utils/Xcodeproj.js.map +1 -1
  61. package/build/ios/utils/getInfoPlistPath.js.map +1 -1
  62. package/build/ios/utils/string.js.map +1 -1
  63. package/build/plugins/android-plugins.js.map +1 -1
  64. package/build/plugins/createBaseMod.d.ts +2 -1
  65. package/build/plugins/createBaseMod.js.map +1 -1
  66. package/build/plugins/ios-plugins.js.map +1 -1
  67. package/build/plugins/mod-compiler.js +3 -3
  68. package/build/plugins/mod-compiler.js.map +1 -1
  69. package/build/plugins/withAndroidBaseMods.js.map +1 -1
  70. package/build/plugins/withDangerousMod.js.map +1 -1
  71. package/build/plugins/withIosBaseMods.js +2 -1
  72. package/build/plugins/withIosBaseMods.js.map +1 -1
  73. package/build/plugins/withMod.d.ts +2 -1
  74. package/build/plugins/withMod.js.map +1 -1
  75. package/build/plugins/withPlugins.js.map +1 -1
  76. package/build/plugins/withRunOnce.js.map +1 -1
  77. package/build/plugins/withStaticPlugin.js.map +1 -1
  78. package/build/utils/Updates.d.ts +2 -2
  79. package/build/utils/Updates.js +35 -18
  80. package/build/utils/Updates.js.map +1 -1
  81. package/build/utils/XML.d.ts +1 -0
  82. package/build/utils/XML.js +5 -2
  83. package/build/utils/XML.js.map +1 -1
  84. package/build/utils/commonCodeMod.js.map +1 -1
  85. package/build/utils/errors.js.map +1 -1
  86. package/build/utils/fs.js.map +1 -1
  87. package/build/utils/generateCode.js.map +1 -1
  88. package/build/utils/history.js.map +1 -1
  89. package/build/utils/matchBrackets.js.map +1 -1
  90. package/build/utils/modules.js.map +1 -1
  91. package/build/utils/obj.js.map +1 -1
  92. package/build/utils/plugin-resolver.js.map +1 -1
  93. package/build/utils/sortObject.js.map +1 -1
  94. package/build/utils/versions.js.map +1 -1
  95. package/build/utils/warnings.d.ts +1 -1
  96. package/build/utils/warnings.js.map +1 -1
  97. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Version.js","names":["withVersion","config","withAppBuildGradle","modResults","language","contents","setVersionCode","setVersionName","addWarningAndroid","withBuildScriptExtMinimumVersion","props","withProjectBuildGradle","setMinBuildScriptExtVersion","buildGradle","name","minVersion","regex","RegExp","currentVersion","match","currentVersionNum","Number","replace","Math","max","getVersionName","version","versionName","pattern","getVersionCode","android","versionCode"],"sources":["../../src/android/Version.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAppBuildGradle, withProjectBuildGradle } from '../plugins/android-plugins';\nimport { addWarningAndroid } from '../utils/warnings';\n\nexport const withVersion: ConfigPlugin = (config) => {\n return withAppBuildGradle(config, (config) => {\n if (config.modResults.language === 'groovy') {\n config.modResults.contents = setVersionCode(config, config.modResults.contents);\n config.modResults.contents = setVersionName(config, config.modResults.contents);\n } else {\n addWarningAndroid(\n 'android.versionCode',\n `Cannot automatically configure app build.gradle if it's not groovy`\n );\n }\n return config;\n });\n};\n\n/** Sets a numeric version for a value in the project.gradle buildscript.ext object to be at least the provided props.minVersion, if the existing value is greater then no change will be made. */\nexport const withBuildScriptExtMinimumVersion: ConfigPlugin<{\n name: string;\n minVersion: number;\n}> = (config, props) => {\n return withProjectBuildGradle(config, (config) => {\n if (config.modResults.language === 'groovy') {\n config.modResults.contents = setMinBuildScriptExtVersion(config.modResults.contents, props);\n } else {\n addWarningAndroid(\n 'withBuildScriptExtVersion',\n `Cannot automatically configure project build.gradle if it's not groovy`\n );\n }\n return config;\n });\n};\n\nexport function setMinBuildScriptExtVersion(\n buildGradle: string,\n { name, minVersion }: { name: string; minVersion: number }\n) {\n const regex = new RegExp(`(${name}\\\\s?=\\\\s?)(\\\\d+(?:\\\\.\\\\d+)?)`);\n const currentVersion = buildGradle.match(regex)?.[2];\n if (!currentVersion) {\n addWarningAndroid(\n 'withBuildScriptExtVersion',\n `Cannot set minimum buildscript.ext.${name} version because the property \"${name}\" cannot be found or does not have a numeric value.`\n );\n // TODO: Maybe just add the property...\n return buildGradle;\n }\n\n const currentVersionNum = Number(currentVersion);\n return buildGradle.replace(regex, `$1${Math.max(minVersion, currentVersionNum)}`);\n}\n\nexport function getVersionName(config: Pick<ExpoConfig, 'version'>) {\n return config.version ?? null;\n}\n\nexport function setVersionName(config: Pick<ExpoConfig, 'version'>, buildGradle: string) {\n const versionName = getVersionName(config);\n if (versionName === null) {\n return buildGradle;\n }\n\n const pattern = new RegExp(`versionName \".*\"`);\n return buildGradle.replace(pattern, `versionName \"${versionName}\"`);\n}\n\nexport function getVersionCode(config: Pick<ExpoConfig, 'android'>) {\n return config.android?.versionCode ?? 1;\n}\n\nexport function setVersionCode(config: Pick<ExpoConfig, 'android'>, buildGradle: string) {\n const versionCode = getVersionCode(config);\n if (versionCode === null) {\n return buildGradle;\n }\n\n const pattern = new RegExp(`versionCode.*`);\n return buildGradle.replace(pattern, `versionCode ${versionCode}`);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Version.js","names":["_androidPlugins","data","require","_warnings","withVersion","config","withAppBuildGradle","modResults","language","contents","setVersionCode","setVersionName","addWarningAndroid","exports","withBuildScriptExtMinimumVersion","props","withProjectBuildGradle","setMinBuildScriptExtVersion","buildGradle","name","minVersion","_buildGradle$match","regex","RegExp","currentVersion","match","currentVersionNum","Number","replace","Math","max","getVersionName","_config$version","version","versionName","pattern","getVersionCode","_config$android$versi","_config$android","android","versionCode"],"sources":["../../src/android/Version.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAppBuildGradle, withProjectBuildGradle } from '../plugins/android-plugins';\nimport { addWarningAndroid } from '../utils/warnings';\n\nexport const withVersion: ConfigPlugin = (config) => {\n return withAppBuildGradle(config, (config) => {\n if (config.modResults.language === 'groovy') {\n config.modResults.contents = setVersionCode(config, config.modResults.contents);\n config.modResults.contents = setVersionName(config, config.modResults.contents);\n } else {\n addWarningAndroid(\n 'android.versionCode',\n `Cannot automatically configure app build.gradle if it's not groovy`\n );\n }\n return config;\n });\n};\n\n/** Sets a numeric version for a value in the project.gradle buildscript.ext object to be at least the provided props.minVersion, if the existing value is greater then no change will be made. */\nexport const withBuildScriptExtMinimumVersion: ConfigPlugin<{\n name: string;\n minVersion: number;\n}> = (config, props) => {\n return withProjectBuildGradle(config, (config) => {\n if (config.modResults.language === 'groovy') {\n config.modResults.contents = setMinBuildScriptExtVersion(config.modResults.contents, props);\n } else {\n addWarningAndroid(\n 'withBuildScriptExtVersion',\n `Cannot automatically configure project build.gradle if it's not groovy`\n );\n }\n return config;\n });\n};\n\nexport function setMinBuildScriptExtVersion(\n buildGradle: string,\n { name, minVersion }: { name: string; minVersion: number }\n) {\n const regex = new RegExp(`(${name}\\\\s?=\\\\s?)(\\\\d+(?:\\\\.\\\\d+)?)`);\n const currentVersion = buildGradle.match(regex)?.[2];\n if (!currentVersion) {\n addWarningAndroid(\n 'withBuildScriptExtVersion',\n `Cannot set minimum buildscript.ext.${name} version because the property \"${name}\" cannot be found or does not have a numeric value.`\n );\n // TODO: Maybe just add the property...\n return buildGradle;\n }\n\n const currentVersionNum = Number(currentVersion);\n return buildGradle.replace(regex, `$1${Math.max(minVersion, currentVersionNum)}`);\n}\n\nexport function getVersionName(config: Pick<ExpoConfig, 'version'>) {\n return config.version ?? null;\n}\n\nexport function setVersionName(config: Pick<ExpoConfig, 'version'>, buildGradle: string) {\n const versionName = getVersionName(config);\n if (versionName === null) {\n return buildGradle;\n }\n\n const pattern = new RegExp(`versionName \".*\"`);\n return buildGradle.replace(pattern, `versionName \"${versionName}\"`);\n}\n\nexport function getVersionCode(config: Pick<ExpoConfig, 'android'>) {\n return config.android?.versionCode ?? 1;\n}\n\nexport function setVersionCode(config: Pick<ExpoConfig, 'android'>, buildGradle: string) {\n const versionCode = getVersionCode(config);\n if (versionCode === null) {\n return buildGradle;\n }\n\n const pattern = new RegExp(`versionCode.*`);\n return buildGradle.replace(pattern, `versionCode ${versionCode}`);\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"WindowSoftInputMode.js","names":["ANDROID_WINDOW_SOFT_INPUT_MODE","MAPPING","pan","resize","withWindowSoftInputMode","config","withAndroidManifest","modResults","setWindowSoftInputModeMode","androidManifest","app","getMainActivityOrThrow","$","getWindowSoftInputModeMode","value","android","softwareKeyboardLayoutMode"],"sources":["../../src/android/WindowSoftInputMode.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAndroidManifest } from '../plugins/android-plugins';\nimport { AndroidManifest, getMainActivityOrThrow } from './Manifest';\n\nconst ANDROID_WINDOW_SOFT_INPUT_MODE = 'android:windowSoftInputMode';\n\nconst MAPPING: Record<string, string> = {\n pan: 'adjustPan',\n resize: 'adjustResize',\n};\n\nexport const withWindowSoftInputMode: ConfigPlugin = (config) => {\n return withAndroidManifest(config, async (config) => {\n config.modResults = setWindowSoftInputModeMode(config, config.modResults);\n return config;\n });\n};\n\nexport function setWindowSoftInputModeMode(\n config: Pick<ExpoConfig, 'android' | 'userInterfaceStyle'>,\n androidManifest: AndroidManifest\n) {\n const app = getMainActivityOrThrow(androidManifest);\n app.$[ANDROID_WINDOW_SOFT_INPUT_MODE] = getWindowSoftInputModeMode(config);\n return androidManifest;\n}\n\nexport function getWindowSoftInputModeMode(config: Pick<ExpoConfig, 'android'>) {\n const value = config.android?.softwareKeyboardLayoutMode;\n\n if (!value) {\n // Default to `adjustResize` or `resize`.\n return 'adjustResize';\n }\n return MAPPING[value] ?? value;\n}\n"],"mappings":";;;;;;;;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA,MAAMA,8BAA8B,GAAG,6BAA6B;AAEpE,MAAMC,OAA+B,GAAG;EACtCC,GAAG,EAAE,WAAW;EAChBC,MAAM,EAAE;AACV,CAAC;AAEM,MAAMC,uBAAqC,GAAIC,MAAM,IAAK;EAC/D,OAAO,IAAAC,qCAAmB,EAACD,MAAM,EAAE,MAAOA,MAAM,IAAK;IACnDA,MAAM,CAACE,UAAU,GAAGC,0BAA0B,CAACH,MAAM,EAAEA,MAAM,CAACE,UAAU,CAAC;IACzE,OAAOF,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAAC;AAEK,SAASG,0BAA0B,CACxCH,MAA0D,EAC1DI,eAAgC,EAChC;EACA,MAAMC,GAAG,GAAG,IAAAC,kCAAsB,EAACF,eAAe,CAAC;EACnDC,GAAG,CAACE,CAAC,CAACZ,8BAA8B,CAAC,GAAGa,0BAA0B,CAACR,MAAM,CAAC;EAC1E,OAAOI,eAAe;AACxB;AAEO,SAASI,0BAA0B,CAACR,MAAmC,EAAE;EAAA;EAC9E,MAAMS,KAAK,sBAAGT,MAAM,CAACU,OAAO,oDAAd,gBAAgBC,0BAA0B;EAExD,IAAI,CAACF,KAAK,EAAE;IACV;IACA,OAAO,cAAc;EACvB;EACA,yBAAOb,OAAO,CAACa,KAAK,CAAC,2DAAIA,KAAK;AAChC"}
1
+ {"version":3,"file":"WindowSoftInputMode.js","names":["_androidPlugins","data","require","_Manifest","ANDROID_WINDOW_SOFT_INPUT_MODE","MAPPING","pan","resize","withWindowSoftInputMode","config","withAndroidManifest","modResults","setWindowSoftInputModeMode","exports","androidManifest","app","getMainActivityOrThrow","$","getWindowSoftInputModeMode","_config$android","_MAPPING$value","value","android","softwareKeyboardLayoutMode"],"sources":["../../src/android/WindowSoftInputMode.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAndroidManifest } from '../plugins/android-plugins';\nimport { AndroidManifest, getMainActivityOrThrow } from './Manifest';\n\nconst ANDROID_WINDOW_SOFT_INPUT_MODE = 'android:windowSoftInputMode';\n\nconst MAPPING: Record<string, string> = {\n pan: 'adjustPan',\n resize: 'adjustResize',\n};\n\nexport const withWindowSoftInputMode: ConfigPlugin = (config) => {\n return withAndroidManifest(config, async (config) => {\n config.modResults = setWindowSoftInputModeMode(config, config.modResults);\n return config;\n });\n};\n\nexport function setWindowSoftInputModeMode(\n config: Pick<ExpoConfig, 'android' | 'userInterfaceStyle'>,\n androidManifest: AndroidManifest\n) {\n const app = getMainActivityOrThrow(androidManifest);\n app.$[ANDROID_WINDOW_SOFT_INPUT_MODE] = getWindowSoftInputModeMode(config);\n return androidManifest;\n}\n\nexport function getWindowSoftInputModeMode(config: Pick<ExpoConfig, 'android'>) {\n const value = config.android?.softwareKeyboardLayoutMode;\n\n if (!value) {\n // Default to `adjustResize` or `resize`.\n return 'adjustResize';\n }\n return MAPPING[value] ?? value;\n}\n"],"mappings":";;;;;;;;AAGA,SAAAA,gBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,eAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,UAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,MAAMG,8BAA8B,GAAG,6BAA6B;AAEpE,MAAMC,OAA+B,GAAG;EACtCC,GAAG,EAAE,WAAW;EAChBC,MAAM,EAAE;AACV,CAAC;AAEM,MAAMC,uBAAqC,GAAIC,MAAM,IAAK;EAC/D,OAAO,IAAAC,qCAAmB,EAACD,MAAM,EAAE,MAAOA,MAAM,IAAK;IACnDA,MAAM,CAACE,UAAU,GAAGC,0BAA0B,CAACH,MAAM,EAAEA,MAAM,CAACE,UAAU,CAAC;IACzE,OAAOF,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACI,OAAA,CAAAL,uBAAA,GAAAA,uBAAA;AAEK,SAASI,0BAA0BA,CACxCH,MAA0D,EAC1DK,eAAgC,EAChC;EACA,MAAMC,GAAG,GAAG,IAAAC,kCAAsB,EAACF,eAAe,CAAC;EACnDC,GAAG,CAACE,CAAC,CAACb,8BAA8B,CAAC,GAAGc,0BAA0B,CAACT,MAAM,CAAC;EAC1E,OAAOK,eAAe;AACxB;AAEO,SAASI,0BAA0BA,CAACT,MAAmC,EAAE;EAAA,IAAAU,eAAA,EAAAC,cAAA;EAC9E,MAAMC,KAAK,IAAAF,eAAA,GAAGV,MAAM,CAACa,OAAO,cAAAH,eAAA,uBAAdA,eAAA,CAAgBI,0BAA0B;EAExD,IAAI,CAACF,KAAK,EAAE;IACV;IACA,OAAO,cAAc;EACvB;EACA,QAAAD,cAAA,GAAOf,OAAO,CAACgB,KAAK,CAAC,cAAAD,cAAA,cAAAA,cAAA,GAAIC,KAAK;AAChC"}
@@ -1 +1 @@
1
- {"version":3,"file":"codeMod.js","names":["findNewInstanceCodeBlock","contents","classDeclaration","language","isJava","start","indexOf","search","RegExp","end","findMatchingBracketPosition","nextBrace","isAnonymousClass","substring","match","code","appendContentsInsideDeclarationBlock","srcContents","declaration","insertion","Error","insertContentsAtOffset","addImports","source","imports","lines","split","lineIndexWithPackageDeclaration","findIndex","line","javaImport","includes","importStatement","splice","join"],"sources":["../../src/android/codeMod.ts"],"sourcesContent":["import { CodeBlock, insertContentsAtOffset } from '../utils/commonCodeMod';\nimport { findMatchingBracketPosition } from '../utils/matchBrackets';\n\n/**\n * Find java or kotlin new class instance code block\n *\n * @param contents source contents\n * @param classDeclaration class declaration or just a class name\n * @param language 'java' | 'kt'\n * @returns `CodeBlock` for start/end offset and code block contents\n */\nexport function findNewInstanceCodeBlock(\n contents: string,\n classDeclaration: string,\n language: 'java' | 'kt'\n): CodeBlock | null {\n const isJava = language === 'java';\n let start = isJava\n ? contents.indexOf(` new ${classDeclaration}(`)\n : contents.search(new RegExp(` (object\\\\s*:\\\\s*)?${classDeclaration}\\\\(`));\n if (start < 0) {\n return null;\n }\n // `+ 1` for the prefix space\n start += 1;\n let end = findMatchingBracketPosition(contents, '(', start);\n\n // For anonymous class, should search further to the {} block.\n // ```java\n // new Foo() {\n // @Override\n // protected void interfaceMethod {}\n // };\n // ```\n //\n // ```kotlin\n // object : Foo() {\n // override fun interfaceMethod {}\n // }\n // ```\n const nextBrace = contents.indexOf('{', end + 1);\n const isAnonymousClass =\n nextBrace >= end && !!contents.substring(end + 1, nextBrace).match(/^\\s*$/);\n if (isAnonymousClass) {\n end = findMatchingBracketPosition(contents, '{', end);\n }\n\n return {\n start,\n end,\n code: contents.substring(start, end + 1),\n };\n}\n\n/**\n * Append contents to the end of code declaration block, support class or method declarations.\n *\n * @param srcContents source contents\n * @param declaration class declaration or method declaration\n * @param insertion code to append\n * @returns updated contents\n */\nexport function appendContentsInsideDeclarationBlock(\n srcContents: string,\n declaration: string,\n insertion: string\n): string {\n const start = srcContents.search(new RegExp(`\\\\s*${declaration}.*?[\\\\(\\\\{]`));\n if (start < 0) {\n throw new Error(`Unable to find code block - declaration[${declaration}]`);\n }\n const end = findMatchingBracketPosition(srcContents, '{', start);\n return insertContentsAtOffset(srcContents, insertion, end);\n}\n\nexport function addImports(source: string, imports: string[], isJava: boolean): string {\n const lines = source.split('\\n');\n const lineIndexWithPackageDeclaration = lines.findIndex((line) => line.match(/^package .*;?$/));\n for (const javaImport of imports) {\n if (!source.includes(javaImport)) {\n const importStatement = `import ${javaImport}${isJava ? ';' : ''}`;\n lines.splice(lineIndexWithPackageDeclaration + 1, 0, importStatement);\n }\n }\n return lines.join('\\n');\n}\n"],"mappings":";;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,wBAAwB,CACtCC,QAAgB,EAChBC,gBAAwB,EACxBC,QAAuB,EACL;EAClB,MAAMC,MAAM,GAAGD,QAAQ,KAAK,MAAM;EAClC,IAAIE,KAAK,GAAGD,MAAM,GACdH,QAAQ,CAACK,OAAO,CAAE,QAAOJ,gBAAiB,GAAE,CAAC,GAC7CD,QAAQ,CAACM,MAAM,CAAC,IAAIC,MAAM,CAAE,sBAAqBN,gBAAiB,KAAI,CAAC,CAAC;EAC5E,IAAIG,KAAK,GAAG,CAAC,EAAE;IACb,OAAO,IAAI;EACb;EACA;EACAA,KAAK,IAAI,CAAC;EACV,IAAII,GAAG,GAAG,IAAAC,4CAA2B,EAACT,QAAQ,EAAE,GAAG,EAAEI,KAAK,CAAC;;EAE3D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMM,SAAS,GAAGV,QAAQ,CAACK,OAAO,CAAC,GAAG,EAAEG,GAAG,GAAG,CAAC,CAAC;EAChD,MAAMG,gBAAgB,GACpBD,SAAS,IAAIF,GAAG,IAAI,CAAC,CAACR,QAAQ,CAACY,SAAS,CAACJ,GAAG,GAAG,CAAC,EAAEE,SAAS,CAAC,CAACG,KAAK,CAAC,OAAO,CAAC;EAC7E,IAAIF,gBAAgB,EAAE;IACpBH,GAAG,GAAG,IAAAC,4CAA2B,EAACT,QAAQ,EAAE,GAAG,EAAEQ,GAAG,CAAC;EACvD;EAEA,OAAO;IACLJ,KAAK;IACLI,GAAG;IACHM,IAAI,EAAEd,QAAQ,CAACY,SAAS,CAACR,KAAK,EAAEI,GAAG,GAAG,CAAC;EACzC,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,oCAAoC,CAClDC,WAAmB,EACnBC,WAAmB,EACnBC,SAAiB,EACT;EACR,MAAMd,KAAK,GAAGY,WAAW,CAACV,MAAM,CAAC,IAAIC,MAAM,CAAE,OAAMU,WAAY,aAAY,CAAC,CAAC;EAC7E,IAAIb,KAAK,GAAG,CAAC,EAAE;IACb,MAAM,IAAIe,KAAK,CAAE,2CAA0CF,WAAY,GAAE,CAAC;EAC5E;EACA,MAAMT,GAAG,GAAG,IAAAC,4CAA2B,EAACO,WAAW,EAAE,GAAG,EAAEZ,KAAK,CAAC;EAChE,OAAO,IAAAgB,uCAAsB,EAACJ,WAAW,EAAEE,SAAS,EAAEV,GAAG,CAAC;AAC5D;AAEO,SAASa,UAAU,CAACC,MAAc,EAAEC,OAAiB,EAAEpB,MAAe,EAAU;EACrF,MAAMqB,KAAK,GAAGF,MAAM,CAACG,KAAK,CAAC,IAAI,CAAC;EAChC,MAAMC,+BAA+B,GAAGF,KAAK,CAACG,SAAS,CAAEC,IAAI,IAAKA,IAAI,CAACf,KAAK,CAAC,gBAAgB,CAAC,CAAC;EAC/F,KAAK,MAAMgB,UAAU,IAAIN,OAAO,EAAE;IAChC,IAAI,CAACD,MAAM,CAACQ,QAAQ,CAACD,UAAU,CAAC,EAAE;MAChC,MAAME,eAAe,GAAI,UAASF,UAAW,GAAE1B,MAAM,GAAG,GAAG,GAAG,EAAG,EAAC;MAClEqB,KAAK,CAACQ,MAAM,CAACN,+BAA+B,GAAG,CAAC,EAAE,CAAC,EAAEK,eAAe,CAAC;IACvE;EACF;EACA,OAAOP,KAAK,CAACS,IAAI,CAAC,IAAI,CAAC;AACzB"}
1
+ {"version":3,"file":"codeMod.js","names":["_commonCodeMod","data","require","_matchBrackets","findNewInstanceCodeBlock","contents","classDeclaration","language","isJava","start","indexOf","search","RegExp","end","findMatchingBracketPosition","nextBrace","isAnonymousClass","substring","match","code","appendContentsInsideDeclarationBlock","srcContents","declaration","insertion","Error","insertContentsAtOffset","addImports","source","imports","lines","split","lineIndexWithPackageDeclaration","findIndex","line","javaImport","includes","importStatement","splice","join"],"sources":["../../src/android/codeMod.ts"],"sourcesContent":["import { CodeBlock, insertContentsAtOffset } from '../utils/commonCodeMod';\nimport { findMatchingBracketPosition } from '../utils/matchBrackets';\n\n/**\n * Find java or kotlin new class instance code block\n *\n * @param contents source contents\n * @param classDeclaration class declaration or just a class name\n * @param language 'java' | 'kt'\n * @returns `CodeBlock` for start/end offset and code block contents\n */\nexport function findNewInstanceCodeBlock(\n contents: string,\n classDeclaration: string,\n language: 'java' | 'kt'\n): CodeBlock | null {\n const isJava = language === 'java';\n let start = isJava\n ? contents.indexOf(` new ${classDeclaration}(`)\n : contents.search(new RegExp(` (object\\\\s*:\\\\s*)?${classDeclaration}\\\\(`));\n if (start < 0) {\n return null;\n }\n // `+ 1` for the prefix space\n start += 1;\n let end = findMatchingBracketPosition(contents, '(', start);\n\n // For anonymous class, should search further to the {} block.\n // ```java\n // new Foo() {\n // @Override\n // protected void interfaceMethod {}\n // };\n // ```\n //\n // ```kotlin\n // object : Foo() {\n // override fun interfaceMethod {}\n // }\n // ```\n const nextBrace = contents.indexOf('{', end + 1);\n const isAnonymousClass =\n nextBrace >= end && !!contents.substring(end + 1, nextBrace).match(/^\\s*$/);\n if (isAnonymousClass) {\n end = findMatchingBracketPosition(contents, '{', end);\n }\n\n return {\n start,\n end,\n code: contents.substring(start, end + 1),\n };\n}\n\n/**\n * Append contents to the end of code declaration block, support class or method declarations.\n *\n * @param srcContents source contents\n * @param declaration class declaration or method declaration\n * @param insertion code to append\n * @returns updated contents\n */\nexport function appendContentsInsideDeclarationBlock(\n srcContents: string,\n declaration: string,\n insertion: string\n): string {\n const start = srcContents.search(new RegExp(`\\\\s*${declaration}.*?[\\\\(\\\\{]`));\n if (start < 0) {\n throw new Error(`Unable to find code block - declaration[${declaration}]`);\n }\n const end = findMatchingBracketPosition(srcContents, '{', start);\n return insertContentsAtOffset(srcContents, insertion, end);\n}\n\nexport function addImports(source: string, imports: string[], isJava: boolean): string {\n const lines = source.split('\\n');\n const lineIndexWithPackageDeclaration = lines.findIndex((line) => line.match(/^package .*;?$/));\n for (const javaImport of imports) {\n if (!source.includes(javaImport)) {\n const importStatement = `import ${javaImport}${isJava ? ';' : ''}`;\n lines.splice(lineIndexWithPackageDeclaration + 1, 0, importStatement);\n }\n }\n return lines.join('\\n');\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/android/index.ts"],"sourcesContent":["import * as AllowBackup from './AllowBackup';\nimport * as BuildProperties from './BuildProperties';\nimport * as Colors from './Colors';\nimport * as EasBuild from './EasBuild';\nimport * as GoogleMapsApiKey from './GoogleMapsApiKey';\nimport * as GoogleServices from './GoogleServices';\nimport * as IntentFilters from './IntentFilters';\nimport * as Manifest from './Manifest';\nimport * as Name from './Name';\nimport * as Orientation from './Orientation';\nimport * as Package from './Package';\nimport * as Paths from './Paths';\nimport * as Permissions from './Permissions';\nimport * as PrimaryColor from './PrimaryColor';\nimport * as Properties from './Properties';\nimport * as Resources from './Resources';\nimport * as Scheme from './Scheme';\nimport * as StatusBar from './StatusBar';\nimport * as Strings from './Strings';\nimport * as Styles from './Styles';\nimport * as Updates from './Updates';\nimport * as Version from './Version';\nimport * as WindowSoftInputMode from './WindowSoftInputMode';\n\nexport { Manifest, Colors, Paths, Permissions, Properties, Resources, Scheme, Strings, Styles };\n\nexport {\n AllowBackup,\n BuildProperties,\n EasBuild,\n GoogleMapsApiKey,\n GoogleServices,\n IntentFilters,\n Name,\n Orientation,\n Package,\n PrimaryColor,\n StatusBar,\n Updates,\n Version,\n WindowSoftInputMode,\n};\n"],"mappings":";;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA6C;EAAA;EAAA;IAAA;EAAA;AAAA;AAC7C;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAqD;EAAA;EAAA;IAAA;EAAA;AAAA;AACrD;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAmC;EAAA;EAAA;IAAA;EAAA;AAAA;AACnC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAuC;EAAA;EAAA;IAAA;EAAA;AAAA;AACvC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAuD;EAAA;EAAA;IAAA;EAAA;AAAA;AACvD;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAmD;EAAA;EAAA;IAAA;EAAA;AAAA;AACnD;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAiD;EAAA;EAAA;IAAA;EAAA;AAAA;AACjD;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAuC;EAAA;EAAA;IAAA;EAAA;AAAA;AACvC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA+B;EAAA;EAAA;IAAA;EAAA;AAAA;AAC/B;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA6C;EAAA;EAAA;IAAA;EAAA;AAAA;AAC7C;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAqC;EAAA;EAAA;IAAA;EAAA;AAAA;AACrC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAiC;EAAA;EAAA;IAAA;EAAA;AAAA;AACjC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA6C;EAAA;EAAA;IAAA;EAAA;AAAA;AAC7C;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA+C;EAAA;EAAA;IAAA;EAAA;AAAA;AAC/C;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA2C;EAAA;EAAA;IAAA;EAAA;AAAA;AAC3C;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAyC;EAAA;EAAA;IAAA;EAAA;AAAA;AACzC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAmC;EAAA;EAAA;IAAA;EAAA;AAAA;AACnC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAyC;EAAA;EAAA;IAAA;EAAA;AAAA;AACzC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAqC;EAAA;EAAA;IAAA;EAAA;AAAA;AACrC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAmC;EAAA;EAAA;IAAA;EAAA;AAAA;AACnC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAqC;EAAA;EAAA;IAAA;EAAA;AAAA;AACrC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAqC;EAAA;EAAA;IAAA;EAAA;AAAA;AACrC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA6D;EAAA;EAAA;IAAA;EAAA;AAAA;AAAA;AAAA"}
1
+ {"version":3,"file":"index.js","names":["AllowBackup","data","_interopRequireWildcard","require","Object","defineProperty","exports","enumerable","get","BuildProperties","Colors","EasBuild","GoogleMapsApiKey","GoogleServices","IntentFilters","Manifest","Name","Orientation","Package","Paths","Permissions","PrimaryColor","Properties","Resources","Scheme","StatusBar","Strings","Styles","Updates","Version","WindowSoftInputMode","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set"],"sources":["../../src/android/index.ts"],"sourcesContent":["import * as AllowBackup from './AllowBackup';\nimport * as BuildProperties from './BuildProperties';\nimport * as Colors from './Colors';\nimport * as EasBuild from './EasBuild';\nimport * as GoogleMapsApiKey from './GoogleMapsApiKey';\nimport * as GoogleServices from './GoogleServices';\nimport * as IntentFilters from './IntentFilters';\nimport * as Manifest from './Manifest';\nimport * as Name from './Name';\nimport * as Orientation from './Orientation';\nimport * as Package from './Package';\nimport * as Paths from './Paths';\nimport * as Permissions from './Permissions';\nimport * as PrimaryColor from './PrimaryColor';\nimport * as Properties from './Properties';\nimport * as Resources from './Resources';\nimport * as Scheme from './Scheme';\nimport * as StatusBar from './StatusBar';\nimport * as Strings from './Strings';\nimport * as Styles from './Styles';\nimport * as Updates from './Updates';\nimport * as Version from './Version';\nimport * as WindowSoftInputMode from './WindowSoftInputMode';\n\nexport { Manifest, Colors, Paths, Permissions, Properties, Resources, Scheme, Strings, Styles };\n\nexport {\n AllowBackup,\n BuildProperties,\n EasBuild,\n GoogleMapsApiKey,\n GoogleServices,\n IntentFilters,\n Name,\n Orientation,\n Package,\n PrimaryColor,\n StatusBar,\n Updates,\n Version,\n WindowSoftInputMode,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["BaseMods","withGeneratedBaseMods","provider","withAndroidBaseMods","getAndroidModFileProviders","withIosBaseMods","getIosModFileProviders"],"sources":["../src/index.ts"],"sourcesContent":["/**\n * For internal use in Expo CLI\n */\nimport * as AndroidConfig from './android';\nimport * as IOSConfig from './ios';\nimport { provider, withGeneratedBaseMods } from './plugins/createBaseMod';\nimport { getAndroidModFileProviders, withAndroidBaseMods } from './plugins/withAndroidBaseMods';\nimport { getIosModFileProviders, withIosBaseMods } from './plugins/withIosBaseMods';\nimport * as XML from './utils/XML';\nimport * as History from './utils/history';\nimport * as WarningAggregator from './utils/warnings';\n\n// TODO: Remove\nexport * as Updates from './utils/Updates';\n\nexport { IOSConfig, AndroidConfig };\n\nexport { WarningAggregator, History, XML };\n\n/**\n * These are the \"config-plugins\"\n */\n\nexport * from './Plugin.types';\n\nexport { withPlugins } from './plugins/withPlugins';\n\nexport { withRunOnce, createRunOncePlugin } from './plugins/withRunOnce';\n\nexport { withDangerousMod } from './plugins/withDangerousMod';\nexport { withMod, withBaseMod } from './plugins/withMod';\n\nexport {\n withAppDelegate,\n withInfoPlist,\n withEntitlementsPlist,\n withExpoPlist,\n withXcodeProject,\n withPodfileProperties,\n} from './plugins/ios-plugins';\n\nexport {\n withAndroidManifest,\n withStringsXml,\n withAndroidColors,\n withAndroidColorsNight,\n withAndroidStyles,\n withMainActivity,\n withMainApplication,\n withProjectBuildGradle,\n withAppBuildGradle,\n withSettingsGradle,\n withGradleProperties,\n} from './plugins/android-plugins';\n\nexport { withStaticPlugin } from './plugins/withStaticPlugin';\n\nexport { compileModsAsync, withDefaultBaseMods, evalModsAsync } from './plugins/mod-compiler';\n\nexport { PluginError } from './utils/errors';\n\nexport const BaseMods = {\n withGeneratedBaseMods,\n provider,\n withAndroidBaseMods,\n getAndroidModFileProviders,\n withIosBaseMods,\n getIosModFileProviders,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA2C;EAAA;EAAA;IAAA;EAAA;AAAA;AAC3C;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAmC;EAAA;EAAA;IAAA;EAAA;AAAA;AACnC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAmC;EAAA;EAAA;IAAA;EAAA;AAAA;AACnC;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA2C;EAAA;EAAA;IAAA;EAAA;AAAA;AAC3C;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAsD;EAAA;EAAA;IAAA;EAAA;AAAA;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAA;EAAA;EAAA;IAAA;EAAA;AAAA;AAatD;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AASA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAcA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA6C;AAAA;AA3D7C;AACA;AACA;;AAUA;;AAOA;AACA;AACA;;AAwCO,MAAMA,QAAQ,GAAG;EACtBC,qBAAqB,EAArBA,sCAAqB;EACrBC,QAAQ,EAARA,yBAAQ;EACRC,mBAAmB,EAAnBA,0CAAmB;EACnBC,0BAA0B,EAA1BA,iDAA0B;EAC1BC,eAAe,EAAfA,kCAAe;EACfC,sBAAsB,EAAtBA;AACF,CAAC;AAAC"}
1
+ {"version":3,"file":"index.js","names":["AndroidConfig","data","_interopRequireWildcard","require","Object","defineProperty","exports","enumerable","get","IOSConfig","_createBaseMod","_withAndroidBaseMods","_withIosBaseMods","XML","History","WarningAggregator","_Updates","_Plugin","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","_withPlugins","_withRunOnce","_withDangerousMod","_withMod","_iosPlugins","_androidPlugins","_withStaticPlugin","_modCompiler","_errors","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","BaseMods","withGeneratedBaseMods","provider","withAndroidBaseMods","getAndroidModFileProviders","withIosBaseMods","getIosModFileProviders"],"sources":["../src/index.ts"],"sourcesContent":["/**\n * For internal use in Expo CLI\n */\nimport * as AndroidConfig from './android';\nimport * as IOSConfig from './ios';\nimport { provider, withGeneratedBaseMods } from './plugins/createBaseMod';\nimport { getAndroidModFileProviders, withAndroidBaseMods } from './plugins/withAndroidBaseMods';\nimport { getIosModFileProviders, withIosBaseMods } from './plugins/withIosBaseMods';\nimport * as XML from './utils/XML';\nimport * as History from './utils/history';\nimport * as WarningAggregator from './utils/warnings';\n\n// TODO: Remove\nexport * as Updates from './utils/Updates';\n\nexport { IOSConfig, AndroidConfig };\n\nexport { WarningAggregator, History, XML };\n\n/**\n * These are the \"config-plugins\"\n */\n\nexport * from './Plugin.types';\n\nexport { withPlugins } from './plugins/withPlugins';\n\nexport { withRunOnce, createRunOncePlugin } from './plugins/withRunOnce';\n\nexport { withDangerousMod } from './plugins/withDangerousMod';\nexport { withMod, withBaseMod } from './plugins/withMod';\n\nexport {\n withAppDelegate,\n withInfoPlist,\n withEntitlementsPlist,\n withExpoPlist,\n withXcodeProject,\n withPodfileProperties,\n} from './plugins/ios-plugins';\n\nexport {\n withAndroidManifest,\n withStringsXml,\n withAndroidColors,\n withAndroidColorsNight,\n withAndroidStyles,\n withMainActivity,\n withMainApplication,\n withProjectBuildGradle,\n withAppBuildGradle,\n withSettingsGradle,\n withGradleProperties,\n} from './plugins/android-plugins';\n\nexport { withStaticPlugin } from './plugins/withStaticPlugin';\n\nexport { compileModsAsync, withDefaultBaseMods, evalModsAsync } from './plugins/mod-compiler';\n\nexport { PluginError } from './utils/errors';\n\nexport const BaseMods = {\n withGeneratedBaseMods,\n provider,\n withAndroidBaseMods,\n getAndroidModFileProviders,\n withIosBaseMods,\n getIosModFileProviders,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Bitcode.js","names":["withBitcode","config","withXcodeProject","modResults","setBitcodeWithConfig","project","withCustomBitcode","bitcode","setBitcode","getBitcode","ios","isDefaultBehavior","targetName","undefined","isBitcodeEnabled","configs","Object","entries","pbxXCBuildConfigurationSection","filter","isNotComment","hasConfiguration","find","configuration","name","addBuildProperty","names","Set","map","sort","addWarningIOS","join"],"sources":["../../src/ios/Bitcode.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport { addWarningIOS } from '../utils/warnings';\nimport { isNotComment } from './utils/Xcodeproj';\n\ntype Bitcode = NonNullable<ExpoConfig['ios']>['bitcode'];\n\n/**\n * Plugin to set a bitcode preference for the Xcode project\n * based on the project's Expo config `ios.bitcode` value.\n */\nexport const withBitcode: ConfigPlugin = (config) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setBitcodeWithConfig(config, {\n project: config.modResults,\n });\n return config;\n });\n};\n\n/**\n * Plugin to set a custom bitcode preference for the Xcode project.\n * Does not read from the Expo config `ios.bitcode`.\n *\n * @param bitcode custom bitcode setting.\n */\nexport const withCustomBitcode: ConfigPlugin<Bitcode> = (config, bitcode) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setBitcode(bitcode, {\n project: config.modResults,\n });\n return config;\n });\n};\n\n/**\n * Get the bitcode preference from the Expo config.\n */\nexport function getBitcode(config: Pick<ExpoConfig, 'ios'>): Bitcode {\n return config.ios?.bitcode;\n}\n\n/**\n * Enable or disable the `ENABLE_BITCODE` property of the project configurations.\n */\nexport function setBitcodeWithConfig(\n config: Pick<ExpoConfig, 'ios'>,\n { project }: { project: XcodeProject }\n): XcodeProject {\n const bitcode = getBitcode(config);\n return setBitcode(bitcode, { project });\n}\n\n/**\n * Enable or disable the `ENABLE_BITCODE` property.\n */\nexport function setBitcode(bitcode: Bitcode, { project }: { project: XcodeProject }): XcodeProject {\n const isDefaultBehavior = bitcode == null;\n // If the value is undefined, then do nothing.\n if (isDefaultBehavior) {\n return project;\n }\n\n const targetName = typeof bitcode === 'string' ? bitcode : undefined;\n const isBitcodeEnabled = !!bitcode;\n if (targetName) {\n // Assert if missing\n const configs = Object.entries(project.pbxXCBuildConfigurationSection()).filter(isNotComment);\n const hasConfiguration = configs.find(([, configuration]) => configuration.name === targetName);\n if (hasConfiguration) {\n // If targetName is defined then disable bitcode everywhere.\n project.addBuildProperty('ENABLE_BITCODE', 'NO');\n } else {\n const names = [\n // Remove duplicates, wrap in double quotes, and sort alphabetically.\n ...new Set(configs.map(([, configuration]) => `\"${configuration.name}\"`)),\n ].sort();\n addWarningIOS(\n 'ios.bitcode',\n `No configuration named \"${targetName}\". Expected one of: ${names.join(', ')}.`\n );\n }\n }\n\n project.addBuildProperty('ENABLE_BITCODE', isBitcodeEnabled ? 'YES' : 'NO', targetName);\n\n return project;\n}\n"],"mappings":";;;;;;;;;AAIA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAIA;AACA;AACA;AACA;AACO,MAAMA,WAAyB,GAAIC,MAAM,IAAK;EACnD,OAAO,IAAAC,8BAAgB,EAACD,MAAM,EAAE,MAAOA,MAAM,IAAK;IAChDA,MAAM,CAACE,UAAU,GAAG,MAAMC,oBAAoB,CAACH,MAAM,EAAE;MACrDI,OAAO,EAAEJ,MAAM,CAACE;IAClB,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALA;AAMO,MAAMK,iBAAwC,GAAG,CAACL,MAAM,EAAEM,OAAO,KAAK;EAC3E,OAAO,IAAAL,8BAAgB,EAACD,MAAM,EAAE,MAAOA,MAAM,IAAK;IAChDA,MAAM,CAACE,UAAU,GAAG,MAAMK,UAAU,CAACD,OAAO,EAAE;MAC5CF,OAAO,EAAEJ,MAAM,CAACE;IAClB,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AAFA;AAGO,SAASQ,UAAU,CAACR,MAA+B,EAAW;EAAA;EACnE,sBAAOA,MAAM,CAACS,GAAG,gDAAV,YAAYH,OAAO;AAC5B;;AAEA;AACA;AACA;AACO,SAASH,oBAAoB,CAClCH,MAA+B,EAC/B;EAAEI;AAAmC,CAAC,EACxB;EACd,MAAME,OAAO,GAAGE,UAAU,CAACR,MAAM,CAAC;EAClC,OAAOO,UAAU,CAACD,OAAO,EAAE;IAAEF;EAAQ,CAAC,CAAC;AACzC;;AAEA;AACA;AACA;AACO,SAASG,UAAU,CAACD,OAAgB,EAAE;EAAEF;AAAmC,CAAC,EAAgB;EACjG,MAAMM,iBAAiB,GAAGJ,OAAO,IAAI,IAAI;EACzC;EACA,IAAII,iBAAiB,EAAE;IACrB,OAAON,OAAO;EAChB;EAEA,MAAMO,UAAU,GAAG,OAAOL,OAAO,KAAK,QAAQ,GAAGA,OAAO,GAAGM,SAAS;EACpE,MAAMC,gBAAgB,GAAG,CAAC,CAACP,OAAO;EAClC,IAAIK,UAAU,EAAE;IACd;IACA,MAAMG,OAAO,GAAGC,MAAM,CAACC,OAAO,CAACZ,OAAO,CAACa,8BAA8B,EAAE,CAAC,CAACC,MAAM,CAACC,yBAAY,CAAC;IAC7F,MAAMC,gBAAgB,GAAGN,OAAO,CAACO,IAAI,CAAC,CAAC,GAAGC,aAAa,CAAC,KAAKA,aAAa,CAACC,IAAI,KAAKZ,UAAU,CAAC;IAC/F,IAAIS,gBAAgB,EAAE;MACpB;MACAhB,OAAO,CAACoB,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAClD,CAAC,MAAM;MACL,MAAMC,KAAK,GAAG;MACZ;MACA,GAAG,IAAIC,GAAG,CAACZ,OAAO,CAACa,GAAG,CAAC,CAAC,GAAGL,aAAa,CAAC,KAAM,IAAGA,aAAa,CAACC,IAAK,GAAE,CAAC,CAAC,CAC1E,CAACK,IAAI,EAAE;MACR,IAAAC,yBAAa,EACX,aAAa,EACZ,2BAA0BlB,UAAW,uBAAsBc,KAAK,CAACK,IAAI,CAAC,IAAI,CAAE,GAAE,CAChF;IACH;EACF;EAEA1B,OAAO,CAACoB,gBAAgB,CAAC,gBAAgB,EAAEX,gBAAgB,GAAG,KAAK,GAAG,IAAI,EAAEF,UAAU,CAAC;EAEvF,OAAOP,OAAO;AAChB"}
1
+ {"version":3,"file":"Bitcode.js","names":["_iosPlugins","data","require","_warnings","_Xcodeproj","withBitcode","config","withXcodeProject","modResults","setBitcodeWithConfig","project","exports","withCustomBitcode","bitcode","setBitcode","getBitcode","_config$ios","ios","isDefaultBehavior","targetName","undefined","isBitcodeEnabled","configs","Object","entries","pbxXCBuildConfigurationSection","filter","isNotComment","hasConfiguration","find","configuration","name","addBuildProperty","names","Set","map","sort","addWarningIOS","join"],"sources":["../../src/ios/Bitcode.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport { addWarningIOS } from '../utils/warnings';\nimport { isNotComment } from './utils/Xcodeproj';\n\ntype Bitcode = NonNullable<ExpoConfig['ios']>['bitcode'];\n\n/**\n * Plugin to set a bitcode preference for the Xcode project\n * based on the project's Expo config `ios.bitcode` value.\n */\nexport const withBitcode: ConfigPlugin = (config) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setBitcodeWithConfig(config, {\n project: config.modResults,\n });\n return config;\n });\n};\n\n/**\n * Plugin to set a custom bitcode preference for the Xcode project.\n * Does not read from the Expo config `ios.bitcode`.\n *\n * @param bitcode custom bitcode setting.\n */\nexport const withCustomBitcode: ConfigPlugin<Bitcode> = (config, bitcode) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setBitcode(bitcode, {\n project: config.modResults,\n });\n return config;\n });\n};\n\n/**\n * Get the bitcode preference from the Expo config.\n */\nexport function getBitcode(config: Pick<ExpoConfig, 'ios'>): Bitcode {\n return config.ios?.bitcode;\n}\n\n/**\n * Enable or disable the `ENABLE_BITCODE` property of the project configurations.\n */\nexport function setBitcodeWithConfig(\n config: Pick<ExpoConfig, 'ios'>,\n { project }: { project: XcodeProject }\n): XcodeProject {\n const bitcode = getBitcode(config);\n return setBitcode(bitcode, { project });\n}\n\n/**\n * Enable or disable the `ENABLE_BITCODE` property.\n */\nexport function setBitcode(bitcode: Bitcode, { project }: { project: XcodeProject }): XcodeProject {\n const isDefaultBehavior = bitcode == null;\n // If the value is undefined, then do nothing.\n if (isDefaultBehavior) {\n return project;\n }\n\n const targetName = typeof bitcode === 'string' ? bitcode : undefined;\n const isBitcodeEnabled = !!bitcode;\n if (targetName) {\n // Assert if missing\n const configs = Object.entries(project.pbxXCBuildConfigurationSection()).filter(isNotComment);\n const hasConfiguration = configs.find(([, configuration]) => configuration.name === targetName);\n if (hasConfiguration) {\n // If targetName is defined then disable bitcode everywhere.\n project.addBuildProperty('ENABLE_BITCODE', 'NO');\n } else {\n const names = [\n // Remove duplicates, wrap in double quotes, and sort alphabetically.\n ...new Set(configs.map(([, configuration]) => `\"${configuration.name}\"`)),\n ].sort();\n addWarningIOS(\n 'ios.bitcode',\n `No configuration named \"${targetName}\". Expected one of: ${names.join(', ')}.`\n );\n }\n }\n\n project.addBuildProperty('ENABLE_BITCODE', isBitcodeEnabled ? 'YES' : 'NO', targetName);\n\n return project;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BuildProperties.js","names":["createBuildPodfilePropsConfigPlugin","configToPropertyRules","name","withUnknown","config","sourceConfig","withPodfileProperties","modResults","updateIosBuildPropertiesFromConfig","Object","defineProperty","value","withJsEnginePodfileProps","propName","propValueGetter","ios","jsEngine","podfileProperties","configToProperty","updateIosBuildProperty","options","removePropWhenValueIsNull"],"sources":["../../src/ios/BuildProperties.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\n\nimport type { ConfigPlugin } from '../Plugin.types';\nimport { withPodfileProperties } from '../plugins/ios-plugins';\nimport { BuildPropertiesConfig, ConfigToPropertyRuleType } from '../utils/BuildProperties.types';\n\n/**\n * Creates a `withPodfileProperties` config-plugin based on given config to property mapping rules.\n *\n * The factory supports two modes from generic type inference\n * ```ts\n * // config-plugin without `props`, it will implicitly use the expo config as source config.\n * createBuildPodfilePropsConfigPlugin<ExpoConfig>(): ConfigPlugin<void>;\n *\n * // config-plugin with a parameter `props: CustomType`, it will use the `props` as source config.\n * createBuildPodfilePropsConfigPlugin<CustomType>(): ConfigPlugin<CustomType>;\n * ```\n *\n * @param configToPropertyRules config to property mapping rules\n * @param name the config plugin name\n */\nexport function createBuildPodfilePropsConfigPlugin<SourceConfigType extends BuildPropertiesConfig>(\n configToPropertyRules: ConfigToPropertyRuleType<SourceConfigType>[],\n name?: string\n) {\n const withUnknown: ConfigPlugin<SourceConfigType extends ExpoConfig ? void : SourceConfigType> = (\n config,\n sourceConfig\n ) =>\n withPodfileProperties(config, (config) => {\n config.modResults = updateIosBuildPropertiesFromConfig(\n (sourceConfig ?? config) as SourceConfigType,\n config.modResults,\n configToPropertyRules\n );\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * A config-plugin to update `ios/Podfile.properties.json` from the `jsEngine` in expo config\n */\nexport const withJsEnginePodfileProps = createBuildPodfilePropsConfigPlugin<ExpoConfig>(\n [\n {\n propName: 'expo.jsEngine',\n propValueGetter: (config) => config.ios?.jsEngine ?? config.jsEngine ?? 'hermes',\n },\n ],\n 'withJsEnginePodfileProps'\n);\n\nexport function updateIosBuildPropertiesFromConfig<SourceConfigType extends BuildPropertiesConfig>(\n config: SourceConfigType,\n podfileProperties: Record<string, string>,\n configToPropertyRules: ConfigToPropertyRuleType<SourceConfigType>[]\n) {\n for (const configToProperty of configToPropertyRules) {\n const value = configToProperty.propValueGetter(config);\n updateIosBuildProperty(podfileProperties, configToProperty.propName, value);\n }\n return podfileProperties;\n}\n\nexport function updateIosBuildProperty(\n podfileProperties: Record<string, string>,\n name: string,\n value: string | null | undefined,\n options?: { removePropWhenValueIsNull?: boolean }\n) {\n if (value) {\n podfileProperties[name] = value;\n } else if (options?.removePropWhenValueIsNull) {\n delete podfileProperties[name];\n }\n return podfileProperties;\n}\n"],"mappings":";;;;;;;;;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,mCAAmC,CACjDC,qBAAmE,EACnEC,IAAa,EACb;EACA,MAAMC,WAAwF,GAAG,CAC/FC,MAAM,EACNC,YAAY,KAEZ,IAAAC,mCAAqB,EAACF,MAAM,EAAGA,MAAM,IAAK;IACxCA,MAAM,CAACG,UAAU,GAAGC,kCAAkC,CACnDH,YAAY,aAAZA,YAAY,cAAZA,YAAY,GAAID,MAAM,EACvBA,MAAM,CAACG,UAAU,EACjBN,qBAAqB,CACtB;IACD,OAAOG,MAAM;EACf,CAAC,CAAC;EACJ,IAAIF,IAAI,EAAE;IACRO,MAAM,CAACC,cAAc,CAACP,WAAW,EAAE,MAAM,EAAE;MACzCQ,KAAK,EAAET;IACT,CAAC,CAAC;EACJ;EACA,OAAOC,WAAW;AACpB;;AAEA;AACA;AACA;AACO,MAAMS,wBAAwB,GAAGZ,mCAAmC,CACzE,CACE;EACEa,QAAQ,EAAE,eAAe;EACzBC,eAAe,EAAGV,MAAM;IAAA;IAAA,sDAAKA,MAAM,CAACW,GAAG,gDAAV,YAAYC,QAAQ,uEAAIZ,MAAM,CAACY,QAAQ,uCAAI,QAAQ;EAAA;AAClF,CAAC,CACF,EACD,0BAA0B,CAC3B;AAAC;AAEK,SAASR,kCAAkC,CAChDJ,MAAwB,EACxBa,iBAAyC,EACzChB,qBAAmE,EACnE;EACA,KAAK,MAAMiB,gBAAgB,IAAIjB,qBAAqB,EAAE;IACpD,MAAMU,KAAK,GAAGO,gBAAgB,CAACJ,eAAe,CAACV,MAAM,CAAC;IACtDe,sBAAsB,CAACF,iBAAiB,EAAEC,gBAAgB,CAACL,QAAQ,EAAEF,KAAK,CAAC;EAC7E;EACA,OAAOM,iBAAiB;AAC1B;AAEO,SAASE,sBAAsB,CACpCF,iBAAyC,EACzCf,IAAY,EACZS,KAAgC,EAChCS,OAAiD,EACjD;EACA,IAAIT,KAAK,EAAE;IACTM,iBAAiB,CAACf,IAAI,CAAC,GAAGS,KAAK;EACjC,CAAC,MAAM,IAAIS,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEC,yBAAyB,EAAE;IAC7C,OAAOJ,iBAAiB,CAACf,IAAI,CAAC;EAChC;EACA,OAAOe,iBAAiB;AAC1B"}
1
+ {"version":3,"file":"BuildProperties.js","names":["_iosPlugins","data","require","createBuildPodfilePropsConfigPlugin","configToPropertyRules","name","withUnknown","config","sourceConfig","withPodfileProperties","modResults","updateIosBuildPropertiesFromConfig","Object","defineProperty","value","withJsEnginePodfileProps","propName","propValueGetter","_ref","_config$ios$jsEngine","_config$ios","ios","jsEngine","exports","podfileProperties","configToProperty","updateIosBuildProperty","options","removePropWhenValueIsNull"],"sources":["../../src/ios/BuildProperties.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\n\nimport type { ConfigPlugin } from '../Plugin.types';\nimport { withPodfileProperties } from '../plugins/ios-plugins';\nimport { BuildPropertiesConfig, ConfigToPropertyRuleType } from '../utils/BuildProperties.types';\n\n/**\n * Creates a `withPodfileProperties` config-plugin based on given config to property mapping rules.\n *\n * The factory supports two modes from generic type inference\n * ```ts\n * // config-plugin without `props`, it will implicitly use the expo config as source config.\n * createBuildPodfilePropsConfigPlugin<ExpoConfig>(): ConfigPlugin<void>;\n *\n * // config-plugin with a parameter `props: CustomType`, it will use the `props` as source config.\n * createBuildPodfilePropsConfigPlugin<CustomType>(): ConfigPlugin<CustomType>;\n * ```\n *\n * @param configToPropertyRules config to property mapping rules\n * @param name the config plugin name\n */\nexport function createBuildPodfilePropsConfigPlugin<SourceConfigType extends BuildPropertiesConfig>(\n configToPropertyRules: ConfigToPropertyRuleType<SourceConfigType>[],\n name?: string\n) {\n const withUnknown: ConfigPlugin<SourceConfigType extends ExpoConfig ? void : SourceConfigType> = (\n config,\n sourceConfig\n ) =>\n withPodfileProperties(config, (config) => {\n config.modResults = updateIosBuildPropertiesFromConfig(\n (sourceConfig ?? config) as SourceConfigType,\n config.modResults,\n configToPropertyRules\n );\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * A config-plugin to update `ios/Podfile.properties.json` from the `jsEngine` in expo config\n */\nexport const withJsEnginePodfileProps = createBuildPodfilePropsConfigPlugin<ExpoConfig>(\n [\n {\n propName: 'expo.jsEngine',\n propValueGetter: (config) => config.ios?.jsEngine ?? config.jsEngine ?? 'hermes',\n },\n ],\n 'withJsEnginePodfileProps'\n);\n\nexport function updateIosBuildPropertiesFromConfig<SourceConfigType extends BuildPropertiesConfig>(\n config: SourceConfigType,\n podfileProperties: Record<string, string>,\n configToPropertyRules: ConfigToPropertyRuleType<SourceConfigType>[]\n) {\n for (const configToProperty of configToPropertyRules) {\n const value = configToProperty.propValueGetter(config);\n updateIosBuildProperty(podfileProperties, configToProperty.propName, value);\n }\n return podfileProperties;\n}\n\nexport function updateIosBuildProperty(\n podfileProperties: Record<string, string>,\n name: string,\n value: string | null | undefined,\n options?: { removePropWhenValueIsNull?: boolean }\n) {\n if (value) {\n podfileProperties[name] = value;\n } else if (options?.removePropWhenValueIsNull) {\n delete podfileProperties[name];\n }\n return podfileProperties;\n}\n"],"mappings":";;;;;;;;;AAGA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,mCAAmCA,CACjDC,qBAAmE,EACnEC,IAAa,EACb;EACA,MAAMC,WAAwF,GAAGA,CAC/FC,MAAM,EACNC,YAAY,KAEZ,IAAAC,mCAAqB,EAACF,MAAM,EAAGA,MAAM,IAAK;IACxCA,MAAM,CAACG,UAAU,GAAGC,kCAAkC,CACnDH,YAAY,aAAZA,YAAY,cAAZA,YAAY,GAAID,MAAM,EACvBA,MAAM,CAACG,UAAU,EACjBN,qBAAqB,CACtB;IACD,OAAOG,MAAM;EACf,CAAC,CAAC;EACJ,IAAIF,IAAI,EAAE;IACRO,MAAM,CAACC,cAAc,CAACP,WAAW,EAAE,MAAM,EAAE;MACzCQ,KAAK,EAAET;IACT,CAAC,CAAC;EACJ;EACA,OAAOC,WAAW;AACpB;;AAEA;AACA;AACA;AACO,MAAMS,wBAAwB,GAAGZ,mCAAmC,CACzE,CACE;EACEa,QAAQ,EAAE,eAAe;EACzBC,eAAe,EAAGV,MAAM;IAAA,IAAAW,IAAA,EAAAC,oBAAA,EAAAC,WAAA;IAAA,QAAAF,IAAA,IAAAC,oBAAA,IAAAC,WAAA,GAAKb,MAAM,CAACc,GAAG,cAAAD,WAAA,uBAAVA,WAAA,CAAYE,QAAQ,cAAAH,oBAAA,cAAAA,oBAAA,GAAIZ,MAAM,CAACe,QAAQ,cAAAJ,IAAA,cAAAA,IAAA,GAAI,QAAQ;EAAA;AAClF,CAAC,CACF,EACD,0BAA0B,CAC3B;AAACK,OAAA,CAAAR,wBAAA,GAAAA,wBAAA;AAEK,SAASJ,kCAAkCA,CAChDJ,MAAwB,EACxBiB,iBAAyC,EACzCpB,qBAAmE,EACnE;EACA,KAAK,MAAMqB,gBAAgB,IAAIrB,qBAAqB,EAAE;IACpD,MAAMU,KAAK,GAAGW,gBAAgB,CAACR,eAAe,CAACV,MAAM,CAAC;IACtDmB,sBAAsB,CAACF,iBAAiB,EAAEC,gBAAgB,CAACT,QAAQ,EAAEF,KAAK,CAAC;EAC7E;EACA,OAAOU,iBAAiB;AAC1B;AAEO,SAASE,sBAAsBA,CACpCF,iBAAyC,EACzCnB,IAAY,EACZS,KAAgC,EAChCa,OAAiD,EACjD;EACA,IAAIb,KAAK,EAAE;IACTU,iBAAiB,CAACnB,IAAI,CAAC,GAAGS,KAAK;EACjC,CAAC,MAAM,IAAIa,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEC,yBAAyB,EAAE;IAC7C,OAAOJ,iBAAiB,CAACnB,IAAI,CAAC;EAChC;EACA,OAAOmB,iBAAiB;AAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"BuildScheme.js","names":["getSchemesFromXcodeproj","projectRoot","findSchemeNames","getRunnableSchemesFromXcodeproj","configuration","project","getPbxproj","findSignableTargets","map","target","osType","type","unquote","productType","TargetType","WATCH","startsWith","APPLICATION","xcConfigurationList","hash","objects","XCConfigurationList","buildConfigurationList","buildConfiguration","buildConfigurations","find","value","comment","xcBuildConfiguration","XCBuildConfiguration","buildSdkRoot","buildSettings","SDKROOT","name","readSchemeAsync","scheme","allSchemePaths","findSchemePaths","re","RegExp","schemePath","i","exec","readXMLAsync","path","Error","getApplicationTargetNameForSchemeAsync","schemeXML","buildActionEntry","Scheme","BuildAction","BuildActionEntries","BuildActionEntry","targetName","length","getBlueprintName","entry","BuildableReference","BuildableName","endsWith","getArchiveBuildConfigurationForSchemeAsync","ArchiveAction","BlueprintName"],"sources":["../../src/ios/BuildScheme.ts"],"sourcesContent":["import { readXMLAsync } from '../utils/XML';\nimport { findSchemeNames, findSchemePaths } from './Paths';\nimport { findSignableTargets, TargetType } from './Target';\nimport { getPbxproj, unquote } from './utils/Xcodeproj';\n\ninterface SchemeXML {\n Scheme?: {\n BuildAction?: {\n BuildActionEntries?: {\n BuildActionEntry?: BuildActionEntryType[];\n }[];\n }[];\n ArchiveAction?: {\n $?: {\n buildConfiguration?: string;\n };\n }[];\n };\n}\n\ninterface BuildActionEntryType {\n BuildableReference?: {\n $?: {\n BlueprintName?: string;\n BuildableName?: string;\n };\n }[];\n}\n\nexport function getSchemesFromXcodeproj(projectRoot: string): string[] {\n return findSchemeNames(projectRoot);\n}\n\nexport function getRunnableSchemesFromXcodeproj(\n projectRoot: string,\n { configuration = 'Debug' }: { configuration?: 'Debug' | 'Release' } = {}\n): { name: string; osType: string; type: string }[] {\n const project = getPbxproj(projectRoot);\n\n return findSignableTargets(project).map(([, target]) => {\n let osType = 'iOS';\n const type = unquote(target.productType);\n\n if (type === TargetType.WATCH) {\n osType = 'watchOS';\n } else if (\n // (apps) com.apple.product-type.application\n // (app clips) com.apple.product-type.application.on-demand-install-capable\n // NOTE(EvanBacon): This matches against `watchOS` as well so we check for watch first.\n type.startsWith(TargetType.APPLICATION)\n ) {\n // Attempt to resolve the platform SDK for each target so we can filter devices.\n const xcConfigurationList =\n project.hash.project.objects.XCConfigurationList[target.buildConfigurationList];\n\n if (xcConfigurationList) {\n const buildConfiguration =\n xcConfigurationList.buildConfigurations.find(\n (value: { comment: string; value: string }) => value.comment === configuration\n ) || xcConfigurationList.buildConfigurations[0];\n if (buildConfiguration?.value) {\n const xcBuildConfiguration =\n project.hash.project.objects.XCBuildConfiguration?.[buildConfiguration.value];\n\n const buildSdkRoot = xcBuildConfiguration.buildSettings.SDKROOT;\n if (\n buildSdkRoot === 'appletvos' ||\n 'TVOS_DEPLOYMENT_TARGET' in xcBuildConfiguration.buildSettings\n ) {\n // Is a TV app...\n osType = 'tvOS';\n } else if (buildSdkRoot === 'iphoneos') {\n osType = 'iOS';\n }\n }\n }\n }\n\n return {\n name: unquote(target.name),\n osType,\n type: unquote(target.productType),\n };\n });\n}\n\nasync function readSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<SchemeXML | undefined> {\n const allSchemePaths = findSchemePaths(projectRoot);\n const re = new RegExp(`/${scheme}.xcscheme`, 'i');\n const schemePath = allSchemePaths.find((i) => re.exec(i));\n if (schemePath) {\n return (await readXMLAsync({ path: schemePath })) as unknown as SchemeXML | undefined;\n } else {\n throw new Error(`scheme '${scheme}' does not exist, make sure it's marked as shared`);\n }\n}\n\nexport async function getApplicationTargetNameForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildActionEntry =\n schemeXML?.Scheme?.BuildAction?.[0]?.BuildActionEntries?.[0]?.BuildActionEntry;\n const targetName =\n buildActionEntry?.length === 1\n ? getBlueprintName(buildActionEntry[0])\n : getBlueprintName(\n buildActionEntry?.find((entry) => {\n return entry.BuildableReference?.[0]?.['$']?.BuildableName?.endsWith('.app');\n })\n );\n if (!targetName) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return targetName;\n}\n\nexport async function getArchiveBuildConfigurationForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildConfiguration = schemeXML?.Scheme?.ArchiveAction?.[0]?.['$']?.buildConfiguration;\n if (!buildConfiguration) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return buildConfiguration;\n}\n\nfunction getBlueprintName(entry?: BuildActionEntryType): string | undefined {\n return entry?.BuildableReference?.[0]?.['$']?.BlueprintName;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BuildScheme.js","names":["_XML","data","require","_Paths","_Target","_Xcodeproj","getSchemesFromXcodeproj","projectRoot","findSchemeNames","getRunnableSchemesFromXcodeproj","configuration","project","getPbxproj","findSignableTargets","map","target","osType","type","unquote","productType","TargetType","WATCH","startsWith","APPLICATION","xcConfigurationList","hash","objects","XCConfigurationList","buildConfigurationList","buildConfiguration","buildConfigurations","find","value","comment","_project$hash$project","xcBuildConfiguration","XCBuildConfiguration","buildSdkRoot","buildSettings","SDKROOT","name","readSchemeAsync","scheme","allSchemePaths","findSchemePaths","re","RegExp","schemePath","i","exec","readXMLAsync","path","Error","getApplicationTargetNameForSchemeAsync","_schemeXML$Scheme","_schemeXML$Scheme$Bui","_schemeXML$Scheme$Bui2","_schemeXML$Scheme$Bui3","_schemeXML$Scheme$Bui4","schemeXML","buildActionEntry","Scheme","BuildAction","BuildActionEntries","BuildActionEntry","targetName","length","getBlueprintName","entry","_entry$BuildableRefer","_entry$BuildableRefer2","_entry$BuildableRefer3","_entry$BuildableRefer4","BuildableReference","BuildableName","endsWith","getArchiveBuildConfigurationForSchemeAsync","_schemeXML$Scheme2","_schemeXML$Scheme2$Ar","_schemeXML$Scheme2$Ar2","_schemeXML$Scheme2$Ar3","ArchiveAction","_entry$BuildableRefer5","_entry$BuildableRefer6","_entry$BuildableRefer7","BlueprintName"],"sources":["../../src/ios/BuildScheme.ts"],"sourcesContent":["import { readXMLAsync } from '../utils/XML';\nimport { findSchemeNames, findSchemePaths } from './Paths';\nimport { findSignableTargets, TargetType } from './Target';\nimport { getPbxproj, unquote } from './utils/Xcodeproj';\n\ninterface SchemeXML {\n Scheme?: {\n BuildAction?: {\n BuildActionEntries?: {\n BuildActionEntry?: BuildActionEntryType[];\n }[];\n }[];\n ArchiveAction?: {\n $?: {\n buildConfiguration?: string;\n };\n }[];\n };\n}\n\ninterface BuildActionEntryType {\n BuildableReference?: {\n $?: {\n BlueprintName?: string;\n BuildableName?: string;\n };\n }[];\n}\n\nexport function getSchemesFromXcodeproj(projectRoot: string): string[] {\n return findSchemeNames(projectRoot);\n}\n\nexport function getRunnableSchemesFromXcodeproj(\n projectRoot: string,\n { configuration = 'Debug' }: { configuration?: 'Debug' | 'Release' } = {}\n): { name: string; osType: string; type: string }[] {\n const project = getPbxproj(projectRoot);\n\n return findSignableTargets(project).map(([, target]) => {\n let osType = 'iOS';\n const type = unquote(target.productType);\n\n if (type === TargetType.WATCH) {\n osType = 'watchOS';\n } else if (\n // (apps) com.apple.product-type.application\n // (app clips) com.apple.product-type.application.on-demand-install-capable\n // NOTE(EvanBacon): This matches against `watchOS` as well so we check for watch first.\n type.startsWith(TargetType.APPLICATION)\n ) {\n // Attempt to resolve the platform SDK for each target so we can filter devices.\n const xcConfigurationList =\n project.hash.project.objects.XCConfigurationList[target.buildConfigurationList];\n\n if (xcConfigurationList) {\n const buildConfiguration =\n xcConfigurationList.buildConfigurations.find(\n (value: { comment: string; value: string }) => value.comment === configuration\n ) || xcConfigurationList.buildConfigurations[0];\n if (buildConfiguration?.value) {\n const xcBuildConfiguration =\n project.hash.project.objects.XCBuildConfiguration?.[buildConfiguration.value];\n\n const buildSdkRoot = xcBuildConfiguration.buildSettings.SDKROOT;\n if (\n buildSdkRoot === 'appletvos' ||\n 'TVOS_DEPLOYMENT_TARGET' in xcBuildConfiguration.buildSettings\n ) {\n // Is a TV app...\n osType = 'tvOS';\n } else if (buildSdkRoot === 'iphoneos') {\n osType = 'iOS';\n }\n }\n }\n }\n\n return {\n name: unquote(target.name),\n osType,\n type: unquote(target.productType),\n };\n });\n}\n\nasync function readSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<SchemeXML | undefined> {\n const allSchemePaths = findSchemePaths(projectRoot);\n const re = new RegExp(`/${scheme}.xcscheme`, 'i');\n const schemePath = allSchemePaths.find((i) => re.exec(i));\n if (schemePath) {\n return (await readXMLAsync({ path: schemePath })) as unknown as SchemeXML | undefined;\n } else {\n throw new Error(`scheme '${scheme}' does not exist, make sure it's marked as shared`);\n }\n}\n\nexport async function getApplicationTargetNameForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildActionEntry =\n schemeXML?.Scheme?.BuildAction?.[0]?.BuildActionEntries?.[0]?.BuildActionEntry;\n const targetName =\n buildActionEntry?.length === 1\n ? getBlueprintName(buildActionEntry[0])\n : getBlueprintName(\n buildActionEntry?.find((entry) => {\n return entry.BuildableReference?.[0]?.['$']?.BuildableName?.endsWith('.app');\n })\n );\n if (!targetName) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return targetName;\n}\n\nexport async function getArchiveBuildConfigurationForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildConfiguration = schemeXML?.Scheme?.ArchiveAction?.[0]?.['$']?.buildConfiguration;\n if (!buildConfiguration) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return buildConfiguration;\n}\n\nfunction getBlueprintName(entry?: BuildActionEntryType): string | undefined {\n return entry?.BuildableReference?.[0]?.['$']?.BlueprintName;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BundleIdentifier.js","names":["withBundleIdentifier","config","bundleIdentifier","withDangerousMod","bundleId","ios","assert","setBundleIdentifierForPbxproj","modRequest","projectRoot","getBundleIdentifier","setBundleIdentifier","infoPlist","CFBundleIdentifier","getBundleIdentifierFromPbxproj","targetName","buildConfiguration","pbxprojPath","getPBXProjectPath","project","xcode","parseSync","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","getProductBundleIdentifierFromBuildConfiguration","bundleIdentifierRaw","buildSettings","PRODUCT_BUNDLE_IDENTIFIER","trimQuotes","bundleIdentifierParts","split","length","PRODUCT_NAME","replace","join","updateBundleIdentifierForPbxproj","updateProductName","nativeTarget","findFirstNativeTarget","getBuildConfigurationsForListId","buildConfigurationList","forEach","item","productName","pop","includes","fs","writeFileSync","writeSync","pbxprojPaths","getAllPBXProjectPaths","defaultBundleId","resetAllPlistBundleIdentifiers","infoPlistPaths","getAllInfoPlistPaths","plistPath","resetPlistBundleIdentifier","rawPlist","readFileSync","plistObject","plist","parse","format","pretty","indent","xml","build"],"sources":["../../src/ios/BundleIdentifier.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport plist, { PlistObject } from '@expo/plist';\nimport assert from 'assert';\nimport fs from 'fs';\nimport xcode, { XCBuildConfiguration } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withDangerousMod } from '../plugins/withDangerousMod';\nimport { InfoPlist } from './IosConfig.types';\nimport { getAllInfoPlistPaths, getAllPBXProjectPaths, getPBXProjectPath } from './Paths';\nimport { findFirstNativeTarget, getXCBuildConfigurationFromPbxproj } from './Target';\nimport { ConfigurationSectionEntry, getBuildConfigurationsForListId } from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport const withBundleIdentifier: ConfigPlugin<{ bundleIdentifier?: string }> = (\n config,\n { bundleIdentifier }\n) => {\n return withDangerousMod(config, [\n 'ios',\n async (config) => {\n const bundleId = bundleIdentifier ?? config.ios?.bundleIdentifier;\n assert(\n bundleId,\n '`bundleIdentifier` must be defined in the app config (`expo.ios.bundleIdentifier`) or passed to the plugin `withBundleIdentifier`.'\n );\n await setBundleIdentifierForPbxproj(config.modRequest.projectRoot, bundleId!);\n return config;\n },\n ]);\n};\n\nfunction getBundleIdentifier(config: Pick<ExpoConfig, 'ios'>): string | null {\n return config.ios?.bundleIdentifier ?? null;\n}\n\n/**\n * In Turtle v1 we set the bundleIdentifier directly on Info.plist rather\n * than in pbxproj\n */\nfunction setBundleIdentifier(config: ExpoConfig, infoPlist: InfoPlist): InfoPlist {\n const bundleIdentifier = getBundleIdentifier(config);\n\n if (!bundleIdentifier) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n CFBundleIdentifier: bundleIdentifier,\n };\n}\n\n/**\n * Gets the bundle identifier defined in the Xcode project found in the project directory.\n *\n * A bundle identifier is stored as a value in XCBuildConfiguration entry.\n * Those entries exist for every pair (build target, build configuration).\n * Unless target name is passed, the first target defined in the pbxproj is used\n * (to keep compatibility with the inaccurate legacy implementation of this function).\n * The build configuration is usually 'Release' or 'Debug'. However, it could be any arbitrary string.\n * Defaults to 'Release'.\n *\n * @param {string} projectRoot Path to project root containing the ios directory\n * @param {string} targetName Target name\n * @param {string} buildConfiguration Build configuration. Defaults to 'Release'.\n * @returns {string | null} bundle identifier of the Xcode project or null if the project is not configured\n */\nfunction getBundleIdentifierFromPbxproj(\n projectRoot: string,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): string | null {\n let pbxprojPath: string;\n try {\n pbxprojPath = getPBXProjectPath(projectRoot);\n } catch {\n return null;\n }\n const project = xcode.project(pbxprojPath);\n project.parseSync();\n\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n return getProductBundleIdentifierFromBuildConfiguration(xcBuildConfiguration);\n}\n\nfunction getProductBundleIdentifierFromBuildConfiguration(\n xcBuildConfiguration: XCBuildConfiguration\n): string | null {\n const bundleIdentifierRaw = xcBuildConfiguration.buildSettings.PRODUCT_BUNDLE_IDENTIFIER;\n if (bundleIdentifierRaw) {\n const bundleIdentifier = trimQuotes(bundleIdentifierRaw);\n // it's possible to use interpolation for the bundle identifier\n // the most common case is when the last part of the id is set to `$(PRODUCT_NAME:rfc1034identifier)`\n // in this case, PRODUCT_NAME should be replaced with its value\n // the `rfc1034identifier` modifier replaces all non-alphanumeric characters with dashes\n const bundleIdentifierParts = bundleIdentifier.split('.');\n if (\n bundleIdentifierParts[bundleIdentifierParts.length - 1] ===\n '$(PRODUCT_NAME:rfc1034identifier)' &&\n xcBuildConfiguration.buildSettings.PRODUCT_NAME\n ) {\n bundleIdentifierParts[bundleIdentifierParts.length - 1] =\n xcBuildConfiguration.buildSettings.PRODUCT_NAME.replace(/[^a-zA-Z0-9]/g, '-');\n }\n return bundleIdentifierParts.join('.');\n } else {\n return null;\n }\n}\n\n/**\n * Updates the bundle identifier for a given pbxproj\n *\n * @param {string} pbxprojPath Path to pbxproj file\n * @param {string} bundleIdentifier Bundle identifier to set in the pbxproj\n * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME\n */\nfunction updateBundleIdentifierForPbxproj(\n pbxprojPath: string,\n bundleIdentifier: string,\n updateProductName: boolean = true\n): void {\n const project = xcode.project(pbxprojPath);\n project.parseSync();\n\n const [, nativeTarget] = findFirstNativeTarget(project);\n\n getBuildConfigurationsForListId(project, nativeTarget.buildConfigurationList).forEach(\n ([, item]: ConfigurationSectionEntry) => {\n if (item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER === bundleIdentifier) {\n return;\n }\n\n item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER = `\"${bundleIdentifier}\"`;\n\n if (updateProductName) {\n const productName = bundleIdentifier.split('.').pop();\n if (!productName?.includes('$')) {\n item.buildSettings.PRODUCT_NAME = productName;\n }\n }\n }\n );\n fs.writeFileSync(pbxprojPath, project.writeSync());\n}\n\n/**\n * Updates the bundle identifier for pbx projects inside the ios directory of the given project root\n *\n * @param {string} projectRoot Path to project root containing the ios directory\n * @param {string} bundleIdentifier Desired bundle identifier\n * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME\n */\nfunction setBundleIdentifierForPbxproj(\n projectRoot: string,\n bundleIdentifier: string,\n updateProductName: boolean = true\n): void {\n // Get all pbx projects in the ${projectRoot}/ios directory\n let pbxprojPaths: string[] = [];\n try {\n pbxprojPaths = getAllPBXProjectPaths(projectRoot);\n } catch {}\n\n for (const pbxprojPath of pbxprojPaths) {\n updateBundleIdentifierForPbxproj(pbxprojPath, bundleIdentifier, updateProductName);\n }\n}\n\n/**\n * Reset bundle identifier field in Info.plist to use PRODUCT_BUNDLE_IDENTIFIER, as recommended by Apple.\n */\n\nconst defaultBundleId = '$(PRODUCT_BUNDLE_IDENTIFIER)';\n\nfunction resetAllPlistBundleIdentifiers(projectRoot: string): void {\n const infoPlistPaths = getAllInfoPlistPaths(projectRoot);\n\n for (const plistPath of infoPlistPaths) {\n resetPlistBundleIdentifier(plistPath);\n }\n}\n\nfunction resetPlistBundleIdentifier(plistPath: string): void {\n const rawPlist = fs.readFileSync(plistPath, 'utf8');\n const plistObject = plist.parse(rawPlist) as PlistObject;\n\n if (plistObject.CFBundleIdentifier) {\n if (plistObject.CFBundleIdentifier === defaultBundleId) return;\n\n // attempt to match default Info.plist format\n const format = { pretty: true, indent: `\\t` };\n\n const xml = plist.build(\n {\n ...plistObject,\n CFBundleIdentifier: defaultBundleId,\n },\n format\n );\n\n if (xml !== rawPlist) {\n fs.writeFileSync(plistPath, xml);\n }\n }\n}\n\nexport {\n getBundleIdentifier,\n setBundleIdentifier,\n getBundleIdentifierFromPbxproj,\n updateBundleIdentifierForPbxproj,\n setBundleIdentifierForPbxproj,\n resetAllPlistBundleIdentifiers,\n resetPlistBundleIdentifier,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"BundleIdentifier.js","names":["_plist","data","_interopRequireDefault","require","_assert","_fs","_xcode","_withDangerousMod","_Paths","_Target","_Xcodeproj","_string","obj","__esModule","default","withBundleIdentifier","config","bundleIdentifier","withDangerousMod","_config$ios","bundleId","ios","assert","setBundleIdentifierForPbxproj","modRequest","projectRoot","exports","getBundleIdentifier","_config$ios$bundleIde","_config$ios2","setBundleIdentifier","infoPlist","CFBundleIdentifier","getBundleIdentifierFromPbxproj","targetName","buildConfiguration","pbxprojPath","getPBXProjectPath","project","xcode","parseSync","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","getProductBundleIdentifierFromBuildConfiguration","bundleIdentifierRaw","buildSettings","PRODUCT_BUNDLE_IDENTIFIER","trimQuotes","bundleIdentifierParts","split","length","PRODUCT_NAME","replace","join","updateBundleIdentifierForPbxproj","updateProductName","nativeTarget","findFirstNativeTarget","getBuildConfigurationsForListId","buildConfigurationList","forEach","item","productName","pop","includes","fs","writeFileSync","writeSync","pbxprojPaths","getAllPBXProjectPaths","defaultBundleId","resetAllPlistBundleIdentifiers","infoPlistPaths","getAllInfoPlistPaths","plistPath","resetPlistBundleIdentifier","rawPlist","readFileSync","plistObject","plist","parse","format","pretty","indent","xml","build"],"sources":["../../src/ios/BundleIdentifier.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport plist, { PlistObject } from '@expo/plist';\nimport assert from 'assert';\nimport fs from 'fs';\nimport xcode, { XCBuildConfiguration } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withDangerousMod } from '../plugins/withDangerousMod';\nimport { InfoPlist } from './IosConfig.types';\nimport { getAllInfoPlistPaths, getAllPBXProjectPaths, getPBXProjectPath } from './Paths';\nimport { findFirstNativeTarget, getXCBuildConfigurationFromPbxproj } from './Target';\nimport { ConfigurationSectionEntry, getBuildConfigurationsForListId } from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport const withBundleIdentifier: ConfigPlugin<{ bundleIdentifier?: string }> = (\n config,\n { bundleIdentifier }\n) => {\n return withDangerousMod(config, [\n 'ios',\n async (config) => {\n const bundleId = bundleIdentifier ?? config.ios?.bundleIdentifier;\n assert(\n bundleId,\n '`bundleIdentifier` must be defined in the app config (`expo.ios.bundleIdentifier`) or passed to the plugin `withBundleIdentifier`.'\n );\n await setBundleIdentifierForPbxproj(config.modRequest.projectRoot, bundleId!);\n return config;\n },\n ]);\n};\n\nfunction getBundleIdentifier(config: Pick<ExpoConfig, 'ios'>): string | null {\n return config.ios?.bundleIdentifier ?? null;\n}\n\n/**\n * In Turtle v1 we set the bundleIdentifier directly on Info.plist rather\n * than in pbxproj\n */\nfunction setBundleIdentifier(config: ExpoConfig, infoPlist: InfoPlist): InfoPlist {\n const bundleIdentifier = getBundleIdentifier(config);\n\n if (!bundleIdentifier) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n CFBundleIdentifier: bundleIdentifier,\n };\n}\n\n/**\n * Gets the bundle identifier defined in the Xcode project found in the project directory.\n *\n * A bundle identifier is stored as a value in XCBuildConfiguration entry.\n * Those entries exist for every pair (build target, build configuration).\n * Unless target name is passed, the first target defined in the pbxproj is used\n * (to keep compatibility with the inaccurate legacy implementation of this function).\n * The build configuration is usually 'Release' or 'Debug'. However, it could be any arbitrary string.\n * Defaults to 'Release'.\n *\n * @param {string} projectRoot Path to project root containing the ios directory\n * @param {string} targetName Target name\n * @param {string} buildConfiguration Build configuration. Defaults to 'Release'.\n * @returns {string | null} bundle identifier of the Xcode project or null if the project is not configured\n */\nfunction getBundleIdentifierFromPbxproj(\n projectRoot: string,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): string | null {\n let pbxprojPath: string;\n try {\n pbxprojPath = getPBXProjectPath(projectRoot);\n } catch {\n return null;\n }\n const project = xcode.project(pbxprojPath);\n project.parseSync();\n\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n return getProductBundleIdentifierFromBuildConfiguration(xcBuildConfiguration);\n}\n\nfunction getProductBundleIdentifierFromBuildConfiguration(\n xcBuildConfiguration: XCBuildConfiguration\n): string | null {\n const bundleIdentifierRaw = xcBuildConfiguration.buildSettings.PRODUCT_BUNDLE_IDENTIFIER;\n if (bundleIdentifierRaw) {\n const bundleIdentifier = trimQuotes(bundleIdentifierRaw);\n // it's possible to use interpolation for the bundle identifier\n // the most common case is when the last part of the id is set to `$(PRODUCT_NAME:rfc1034identifier)`\n // in this case, PRODUCT_NAME should be replaced with its value\n // the `rfc1034identifier` modifier replaces all non-alphanumeric characters with dashes\n const bundleIdentifierParts = bundleIdentifier.split('.');\n if (\n bundleIdentifierParts[bundleIdentifierParts.length - 1] ===\n '$(PRODUCT_NAME:rfc1034identifier)' &&\n xcBuildConfiguration.buildSettings.PRODUCT_NAME\n ) {\n bundleIdentifierParts[bundleIdentifierParts.length - 1] =\n xcBuildConfiguration.buildSettings.PRODUCT_NAME.replace(/[^a-zA-Z0-9]/g, '-');\n }\n return bundleIdentifierParts.join('.');\n } else {\n return null;\n }\n}\n\n/**\n * Updates the bundle identifier for a given pbxproj\n *\n * @param {string} pbxprojPath Path to pbxproj file\n * @param {string} bundleIdentifier Bundle identifier to set in the pbxproj\n * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME\n */\nfunction updateBundleIdentifierForPbxproj(\n pbxprojPath: string,\n bundleIdentifier: string,\n updateProductName: boolean = true\n): void {\n const project = xcode.project(pbxprojPath);\n project.parseSync();\n\n const [, nativeTarget] = findFirstNativeTarget(project);\n\n getBuildConfigurationsForListId(project, nativeTarget.buildConfigurationList).forEach(\n ([, item]: ConfigurationSectionEntry) => {\n if (item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER === bundleIdentifier) {\n return;\n }\n\n item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER = `\"${bundleIdentifier}\"`;\n\n if (updateProductName) {\n const productName = bundleIdentifier.split('.').pop();\n if (!productName?.includes('$')) {\n item.buildSettings.PRODUCT_NAME = productName;\n }\n }\n }\n );\n fs.writeFileSync(pbxprojPath, project.writeSync());\n}\n\n/**\n * Updates the bundle identifier for pbx projects inside the ios directory of the given project root\n *\n * @param {string} projectRoot Path to project root containing the ios directory\n * @param {string} bundleIdentifier Desired bundle identifier\n * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME\n */\nfunction setBundleIdentifierForPbxproj(\n projectRoot: string,\n bundleIdentifier: string,\n updateProductName: boolean = true\n): void {\n // Get all pbx projects in the ${projectRoot}/ios directory\n let pbxprojPaths: string[] = [];\n try {\n pbxprojPaths = getAllPBXProjectPaths(projectRoot);\n } catch {}\n\n for (const pbxprojPath of pbxprojPaths) {\n updateBundleIdentifierForPbxproj(pbxprojPath, bundleIdentifier, updateProductName);\n }\n}\n\n/**\n * Reset bundle identifier field in Info.plist to use PRODUCT_BUNDLE_IDENTIFIER, as recommended by Apple.\n */\n\nconst defaultBundleId = '$(PRODUCT_BUNDLE_IDENTIFIER)';\n\nfunction resetAllPlistBundleIdentifiers(projectRoot: string): void {\n const infoPlistPaths = getAllInfoPlistPaths(projectRoot);\n\n for (const plistPath of infoPlistPaths) {\n resetPlistBundleIdentifier(plistPath);\n }\n}\n\nfunction resetPlistBundleIdentifier(plistPath: string): void {\n const rawPlist = fs.readFileSync(plistPath, 'utf8');\n const plistObject = plist.parse(rawPlist) as PlistObject;\n\n if (plistObject.CFBundleIdentifier) {\n if (plistObject.CFBundleIdentifier === defaultBundleId) return;\n\n // attempt to match default Info.plist format\n const format = { pretty: true, indent: `\\t` };\n\n const xml = plist.build(\n {\n ...plistObject,\n CFBundleIdentifier: defaultBundleId,\n },\n format\n );\n\n if (xml !== rawPlist) {\n fs.writeFileSync(plistPath, xml);\n }\n }\n}\n\nexport {\n getBundleIdentifier,\n setBundleIdentifier,\n getBundleIdentifierFromPbxproj,\n updateBundleIdentifierForPbxproj,\n setBundleIdentifierForPbxproj,\n resetAllPlistBundleIdentifiers,\n resetPlistBundleIdentifier,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceFamily.js","names":["withDeviceFamily","config","withXcodeProject","modResults","setDeviceFamily","project","getSupportsTablet","ios","supportsTablet","getIsTabletOnly","isTabletOnly","getDeviceFamilies","addWarningIOS","formatDeviceFamilies","deviceFamilies","join","configurations","pbxXCBuildConfigurationSection","buildSettings","Object","values","PRODUCT_NAME","TARGETED_DEVICE_FAMILY"],"sources":["../../src/ios/DeviceFamily.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport { addWarningIOS } from '../utils/warnings';\n\nexport const withDeviceFamily: ConfigPlugin = (config) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setDeviceFamily(config, {\n project: config.modResults,\n });\n return config;\n });\n};\n\nexport function getSupportsTablet(config: Pick<ExpoConfig, 'ios'>): boolean {\n return !!config.ios?.supportsTablet;\n}\n\nexport function getIsTabletOnly(config: Pick<ExpoConfig, 'ios'>): boolean {\n return !!config?.ios?.isTabletOnly;\n}\n\nexport function getDeviceFamilies(config: Pick<ExpoConfig, 'ios'>): number[] {\n const supportsTablet = getSupportsTablet(config);\n const isTabletOnly = getIsTabletOnly(config);\n\n if (isTabletOnly && config.ios?.supportsTablet === false) {\n addWarningIOS(\n 'ios.supportsTablet',\n `Found contradictory values: \\`{ ios: { isTabletOnly: true, supportsTablet: false } }\\`. Using \\`{ isTabletOnly: true }\\`.`\n );\n }\n\n // 1 is iPhone, 2 is iPad\n if (isTabletOnly) {\n return [2];\n } else if (supportsTablet) {\n return [1, 2];\n } else {\n // is iPhone only\n return [1];\n }\n}\n\n/**\n * Wrapping the families in double quotes is the only way to set a value with a comma in it.\n *\n * @param deviceFamilies\n */\nexport function formatDeviceFamilies(deviceFamilies: number[]): string {\n return `\"${deviceFamilies.join(',')}\"`;\n}\n\n/**\n * Add to pbxproj under TARGETED_DEVICE_FAMILY\n */\nexport function setDeviceFamily(\n config: Pick<ExpoConfig, 'ios'>,\n { project }: { project: XcodeProject }\n): XcodeProject {\n const deviceFamilies = formatDeviceFamilies(getDeviceFamilies(config));\n\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n buildSettings.TARGETED_DEVICE_FAMILY = deviceFamilies;\n }\n }\n\n return project;\n}\n"],"mappings":";;;;;;;;;;;AAIA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEO,MAAMA,gBAA8B,GAAIC,MAAM,IAAK;EACxD,OAAO,IAAAC,8BAAgB,EAACD,MAAM,EAAE,MAAOA,MAAM,IAAK;IAChDA,MAAM,CAACE,UAAU,GAAG,MAAMC,eAAe,CAACH,MAAM,EAAE;MAChDI,OAAO,EAAEJ,MAAM,CAACE;IAClB,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAAC;AAEK,SAASK,iBAAiB,CAACL,MAA+B,EAAW;EAAA;EAC1E,OAAO,CAAC,iBAACA,MAAM,CAACM,GAAG,wCAAV,YAAYC,cAAc;AACrC;AAEO,SAASC,eAAe,CAACR,MAA+B,EAAW;EAAA;EACxE,OAAO,CAAC,EAACA,MAAM,aAANA,MAAM,+BAANA,MAAM,CAAEM,GAAG,yCAAX,aAAaG,YAAY;AACpC;AAEO,SAASC,iBAAiB,CAACV,MAA+B,EAAY;EAAA;EAC3E,MAAMO,cAAc,GAAGF,iBAAiB,CAACL,MAAM,CAAC;EAChD,MAAMS,YAAY,GAAGD,eAAe,CAACR,MAAM,CAAC;EAE5C,IAAIS,YAAY,IAAI,iBAAAT,MAAM,CAACM,GAAG,iDAAV,aAAYC,cAAc,MAAK,KAAK,EAAE;IACxD,IAAAI,yBAAa,EACX,oBAAoB,EACnB,2HAA0H,CAC5H;EACH;;EAEA;EACA,IAAIF,YAAY,EAAE;IAChB,OAAO,CAAC,CAAC,CAAC;EACZ,CAAC,MAAM,IAAIF,cAAc,EAAE;IACzB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;EACf,CAAC,MAAM;IACL;IACA,OAAO,CAAC,CAAC,CAAC;EACZ;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASK,oBAAoB,CAACC,cAAwB,EAAU;EACrE,OAAQ,IAAGA,cAAc,CAACC,IAAI,CAAC,GAAG,CAAE,GAAE;AACxC;;AAEA;AACA;AACA;AACO,SAASX,eAAe,CAC7BH,MAA+B,EAC/B;EAAEI;AAAmC,CAAC,EACxB;EACd,MAAMS,cAAc,GAAGD,oBAAoB,CAACF,iBAAiB,CAACV,MAAM,CAAC,CAAC;EAEtE,MAAMe,cAAc,GAAGX,OAAO,CAACY,8BAA8B,EAAE;EAC/D;EACA,KAAK,MAAM;IAAEC;EAAc,CAAC,IAAIC,MAAM,CAACC,MAAM,CAACJ,cAAc,IAAI,CAAC,CAAC,CAAC,EAAE;IACnE;IACA;IACA,IAAI,QAAOE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEG,YAAY,MAAK,WAAW,EAAE;MACtDH,aAAa,CAACI,sBAAsB,GAAGR,cAAc;IACvD;EACF;EAEA,OAAOT,OAAO;AAChB"}
1
+ {"version":3,"file":"DeviceFamily.js","names":["_iosPlugins","data","require","_warnings","withDeviceFamily","config","withXcodeProject","modResults","setDeviceFamily","project","exports","getSupportsTablet","_config$ios","ios","supportsTablet","getIsTabletOnly","_config$ios2","isTabletOnly","getDeviceFamilies","_config$ios3","addWarningIOS","formatDeviceFamilies","deviceFamilies","join","configurations","pbxXCBuildConfigurationSection","buildSettings","Object","values","PRODUCT_NAME","TARGETED_DEVICE_FAMILY"],"sources":["../../src/ios/DeviceFamily.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport { addWarningIOS } from '../utils/warnings';\n\nexport const withDeviceFamily: ConfigPlugin = (config) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setDeviceFamily(config, {\n project: config.modResults,\n });\n return config;\n });\n};\n\nexport function getSupportsTablet(config: Pick<ExpoConfig, 'ios'>): boolean {\n return !!config.ios?.supportsTablet;\n}\n\nexport function getIsTabletOnly(config: Pick<ExpoConfig, 'ios'>): boolean {\n return !!config?.ios?.isTabletOnly;\n}\n\nexport function getDeviceFamilies(config: Pick<ExpoConfig, 'ios'>): number[] {\n const supportsTablet = getSupportsTablet(config);\n const isTabletOnly = getIsTabletOnly(config);\n\n if (isTabletOnly && config.ios?.supportsTablet === false) {\n addWarningIOS(\n 'ios.supportsTablet',\n `Found contradictory values: \\`{ ios: { isTabletOnly: true, supportsTablet: false } }\\`. Using \\`{ isTabletOnly: true }\\`.`\n );\n }\n\n // 1 is iPhone, 2 is iPad\n if (isTabletOnly) {\n return [2];\n } else if (supportsTablet) {\n return [1, 2];\n } else {\n // is iPhone only\n return [1];\n }\n}\n\n/**\n * Wrapping the families in double quotes is the only way to set a value with a comma in it.\n *\n * @param deviceFamilies\n */\nexport function formatDeviceFamilies(deviceFamilies: number[]): string {\n return `\"${deviceFamilies.join(',')}\"`;\n}\n\n/**\n * Add to pbxproj under TARGETED_DEVICE_FAMILY\n */\nexport function setDeviceFamily(\n config: Pick<ExpoConfig, 'ios'>,\n { project }: { project: XcodeProject }\n): XcodeProject {\n const deviceFamilies = formatDeviceFamilies(getDeviceFamilies(config));\n\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n buildSettings.TARGETED_DEVICE_FAMILY = deviceFamilies;\n }\n }\n\n return project;\n}\n"],"mappings":";;;;;;;;;;;AAIA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,UAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAMG,gBAA8B,GAAIC,MAAM,IAAK;EACxD,OAAO,IAAAC,8BAAgB,EAACD,MAAM,EAAE,MAAOA,MAAM,IAAK;IAChDA,MAAM,CAACE,UAAU,GAAG,MAAMC,eAAe,CAACH,MAAM,EAAE;MAChDI,OAAO,EAAEJ,MAAM,CAACE;IAClB,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACK,OAAA,CAAAN,gBAAA,GAAAA,gBAAA;AAEK,SAASO,iBAAiBA,CAACN,MAA+B,EAAW;EAAA,IAAAO,WAAA;EAC1E,OAAO,CAAC,GAAAA,WAAA,GAACP,MAAM,CAACQ,GAAG,cAAAD,WAAA,eAAVA,WAAA,CAAYE,cAAc;AACrC;AAEO,SAASC,eAAeA,CAACV,MAA+B,EAAW;EAAA,IAAAW,YAAA;EACxE,OAAO,CAAC,EAACX,MAAM,aAANA,MAAM,gBAAAW,YAAA,GAANX,MAAM,CAAEQ,GAAG,cAAAG,YAAA,eAAXA,YAAA,CAAaC,YAAY;AACpC;AAEO,SAASC,iBAAiBA,CAACb,MAA+B,EAAY;EAAA,IAAAc,YAAA;EAC3E,MAAML,cAAc,GAAGH,iBAAiB,CAACN,MAAM,CAAC;EAChD,MAAMY,YAAY,GAAGF,eAAe,CAACV,MAAM,CAAC;EAE5C,IAAIY,YAAY,IAAI,EAAAE,YAAA,GAAAd,MAAM,CAACQ,GAAG,cAAAM,YAAA,uBAAVA,YAAA,CAAYL,cAAc,MAAK,KAAK,EAAE;IACxD,IAAAM,yBAAa,EACX,oBAAoB,EACnB,2HAA0H,CAC5H;EACH;;EAEA;EACA,IAAIH,YAAY,EAAE;IAChB,OAAO,CAAC,CAAC,CAAC;EACZ,CAAC,MAAM,IAAIH,cAAc,EAAE;IACzB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;EACf,CAAC,MAAM;IACL;IACA,OAAO,CAAC,CAAC,CAAC;EACZ;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASO,oBAAoBA,CAACC,cAAwB,EAAU;EACrE,OAAQ,IAAGA,cAAc,CAACC,IAAI,CAAC,GAAG,CAAE,GAAE;AACxC;;AAEA;AACA;AACA;AACO,SAASf,eAAeA,CAC7BH,MAA+B,EAC/B;EAAEI;AAAmC,CAAC,EACxB;EACd,MAAMa,cAAc,GAAGD,oBAAoB,CAACH,iBAAiB,CAACb,MAAM,CAAC,CAAC;EAEtE,MAAMmB,cAAc,GAAGf,OAAO,CAACgB,8BAA8B,EAAE;EAC/D;EACA,KAAK,MAAM;IAAEC;EAAc,CAAC,IAAIC,MAAM,CAACC,MAAM,CAACJ,cAAc,IAAI,CAAC,CAAC,CAAC,EAAE;IACnE;IACA;IACA,IAAI,QAAOE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEG,YAAY,MAAK,WAAW,EAAE;MACtDH,aAAa,CAACI,sBAAsB,GAAGR,cAAc;IACvD;EACF;EAEA,OAAOb,OAAO;AAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Entitlements.js","names":["withAssociatedDomains","createEntitlementsPlugin","setAssociatedDomains","config","_","entitlementsPlist","ios","associatedDomains","getEntitlementsPath","projectRoot","targetName","buildConfiguration","project","getPbxproj","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","entitlementsPath","getEntitlementsPathFromBuildConfiguration","fs","existsSync","entitlementsPathRaw","buildSettings","CODE_SIGN_ENTITLEMENTS","path","normalize","join","trimQuotes","ensureApplicationTargetEntitlementsFileConfigured","projectName","getProjectName","productName","getProductName","applicationTarget","findFirstNativeTarget","buildConfigurations","getBuildConfigurationsForListId","buildConfigurationList","hasChangesToWrite","oldEntitlementPath","entitlementsRelativePath","slash","mkdirSync","dirname","recursive","writeFileSync","ENTITLEMENTS_TEMPLATE","filepath","writeSync"],"sources":["../../src/ios/Entitlements.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { JSONObject } from '@expo/json-file';\nimport fs from 'fs';\nimport path from 'path';\nimport slash from 'slash';\nimport { XCBuildConfiguration } from 'xcode';\n\nimport { createEntitlementsPlugin } from '../plugins/ios-plugins';\nimport { findFirstNativeTarget, getXCBuildConfigurationFromPbxproj } from './Target';\nimport {\n getBuildConfigurationsForListId,\n getPbxproj,\n getProductName,\n getProjectName,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport const withAssociatedDomains = createEntitlementsPlugin(\n setAssociatedDomains,\n 'withAssociatedDomains'\n);\n\nexport function setAssociatedDomains(\n config: ExpoConfig,\n { 'com.apple.developer.associated-domains': _, ...entitlementsPlist }: JSONObject\n): JSONObject {\n if (config.ios?.associatedDomains) {\n return {\n ...entitlementsPlist,\n 'com.apple.developer.associated-domains': config.ios.associatedDomains,\n };\n }\n\n return entitlementsPlist;\n}\n\nexport function getEntitlementsPath(\n projectRoot: string,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): string | null {\n const project = getPbxproj(projectRoot);\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n const entitlementsPath = getEntitlementsPathFromBuildConfiguration(\n projectRoot,\n xcBuildConfiguration\n );\n return entitlementsPath && fs.existsSync(entitlementsPath) ? entitlementsPath : null;\n}\n\nfunction getEntitlementsPathFromBuildConfiguration(\n projectRoot: string,\n xcBuildConfiguration: XCBuildConfiguration\n): string | null {\n const entitlementsPathRaw = xcBuildConfiguration?.buildSettings?.CODE_SIGN_ENTITLEMENTS as\n | string\n | undefined;\n if (entitlementsPathRaw) {\n return path.normalize(path.join(projectRoot, 'ios', trimQuotes(entitlementsPathRaw)));\n } else {\n return null;\n }\n}\n\nexport function ensureApplicationTargetEntitlementsFileConfigured(projectRoot: string): void {\n const project = getPbxproj(projectRoot);\n const projectName = getProjectName(projectRoot);\n const productName = getProductName(project);\n\n const [, applicationTarget] = findFirstNativeTarget(project);\n const buildConfigurations = getBuildConfigurationsForListId(\n project,\n applicationTarget.buildConfigurationList\n );\n let hasChangesToWrite = false;\n for (const [, xcBuildConfiguration] of buildConfigurations) {\n const oldEntitlementPath = getEntitlementsPathFromBuildConfiguration(\n projectRoot,\n xcBuildConfiguration\n );\n if (oldEntitlementPath && fs.existsSync(oldEntitlementPath)) {\n return;\n }\n hasChangesToWrite = true;\n // Use posix formatted path, even on Windows\n const entitlementsRelativePath = slash(path.join(projectName, `${productName}.entitlements`));\n const entitlementsPath = path.normalize(\n path.join(projectRoot, 'ios', entitlementsRelativePath)\n );\n fs.mkdirSync(path.dirname(entitlementsPath), { recursive: true });\n if (!fs.existsSync(entitlementsPath)) {\n fs.writeFileSync(entitlementsPath, ENTITLEMENTS_TEMPLATE);\n }\n xcBuildConfiguration.buildSettings.CODE_SIGN_ENTITLEMENTS = entitlementsRelativePath;\n }\n if (hasChangesToWrite) {\n fs.writeFileSync(project.filepath, project.writeSync());\n }\n}\n\nconst ENTITLEMENTS_TEMPLATE = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n</dict>\n</plist>\n`;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Entitlements.js","names":["_fs","data","_interopRequireDefault","require","_path","_slash","_iosPlugins","_Target","_Xcodeproj","_string","obj","__esModule","default","withAssociatedDomains","createEntitlementsPlugin","setAssociatedDomains","exports","config","_","entitlementsPlist","_config$ios","ios","associatedDomains","getEntitlementsPath","projectRoot","targetName","buildConfiguration","project","getPbxproj","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","entitlementsPath","getEntitlementsPathFromBuildConfiguration","fs","existsSync","_xcBuildConfiguration","entitlementsPathRaw","buildSettings","CODE_SIGN_ENTITLEMENTS","path","normalize","join","trimQuotes","ensureApplicationTargetEntitlementsFileConfigured","projectName","getProjectName","productName","getProductName","applicationTarget","findFirstNativeTarget","buildConfigurations","getBuildConfigurationsForListId","buildConfigurationList","hasChangesToWrite","oldEntitlementPath","entitlementsRelativePath","slash","mkdirSync","dirname","recursive","writeFileSync","ENTITLEMENTS_TEMPLATE","filepath","writeSync"],"sources":["../../src/ios/Entitlements.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { JSONObject } from '@expo/json-file';\nimport fs from 'fs';\nimport path from 'path';\nimport slash from 'slash';\nimport { XCBuildConfiguration } from 'xcode';\n\nimport { createEntitlementsPlugin } from '../plugins/ios-plugins';\nimport { findFirstNativeTarget, getXCBuildConfigurationFromPbxproj } from './Target';\nimport {\n getBuildConfigurationsForListId,\n getPbxproj,\n getProductName,\n getProjectName,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport const withAssociatedDomains = createEntitlementsPlugin(\n setAssociatedDomains,\n 'withAssociatedDomains'\n);\n\nexport function setAssociatedDomains(\n config: ExpoConfig,\n { 'com.apple.developer.associated-domains': _, ...entitlementsPlist }: JSONObject\n): JSONObject {\n if (config.ios?.associatedDomains) {\n return {\n ...entitlementsPlist,\n 'com.apple.developer.associated-domains': config.ios.associatedDomains,\n };\n }\n\n return entitlementsPlist;\n}\n\nexport function getEntitlementsPath(\n projectRoot: string,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): string | null {\n const project = getPbxproj(projectRoot);\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n const entitlementsPath = getEntitlementsPathFromBuildConfiguration(\n projectRoot,\n xcBuildConfiguration\n );\n return entitlementsPath && fs.existsSync(entitlementsPath) ? entitlementsPath : null;\n}\n\nfunction getEntitlementsPathFromBuildConfiguration(\n projectRoot: string,\n xcBuildConfiguration: XCBuildConfiguration\n): string | null {\n const entitlementsPathRaw = xcBuildConfiguration?.buildSettings?.CODE_SIGN_ENTITLEMENTS as\n | string\n | undefined;\n if (entitlementsPathRaw) {\n return path.normalize(path.join(projectRoot, 'ios', trimQuotes(entitlementsPathRaw)));\n } else {\n return null;\n }\n}\n\nexport function ensureApplicationTargetEntitlementsFileConfigured(projectRoot: string): void {\n const project = getPbxproj(projectRoot);\n const projectName = getProjectName(projectRoot);\n const productName = getProductName(project);\n\n const [, applicationTarget] = findFirstNativeTarget(project);\n const buildConfigurations = getBuildConfigurationsForListId(\n project,\n applicationTarget.buildConfigurationList\n );\n let hasChangesToWrite = false;\n for (const [, xcBuildConfiguration] of buildConfigurations) {\n const oldEntitlementPath = getEntitlementsPathFromBuildConfiguration(\n projectRoot,\n xcBuildConfiguration\n );\n if (oldEntitlementPath && fs.existsSync(oldEntitlementPath)) {\n return;\n }\n hasChangesToWrite = true;\n // Use posix formatted path, even on Windows\n const entitlementsRelativePath = slash(path.join(projectName, `${productName}.entitlements`));\n const entitlementsPath = path.normalize(\n path.join(projectRoot, 'ios', entitlementsRelativePath)\n );\n fs.mkdirSync(path.dirname(entitlementsPath), { recursive: true });\n if (!fs.existsSync(entitlementsPath)) {\n fs.writeFileSync(entitlementsPath, ENTITLEMENTS_TEMPLATE);\n }\n xcBuildConfiguration.buildSettings.CODE_SIGN_ENTITLEMENTS = entitlementsRelativePath;\n }\n if (hasChangesToWrite) {\n fs.writeFileSync(project.filepath, project.writeSync());\n }\n}\n\nconst ENTITLEMENTS_TEMPLATE = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n</dict>\n</plist>\n`;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Google.js","names":["withGoogle","config","withInfoPlist","modResults","setGoogleConfig","modRequest","withGoogleServicesFile","withXcodeProject","setGoogleServicesFile","projectRoot","project","readGoogleServicesInfoPlist","relativePath","googleServiceFilePath","path","resolve","contents","fs","readFileSync","assert","plist","parse","getGoogleSignInReversedClientId","googleServicesFileRelativePath","getGoogleServicesFile","infoPlist","REVERSED_CLIENT_ID","ios","googleServicesFile","setGoogleSignInReversedClientId","reversedClientId","appendScheme","copyFileSync","join","getSourceRoot","projectName","getProjectName","plistFilePath","hasFile","addResourceFileToGroup","filepath","groupName","isBuildFile","verbose"],"sources":["../../src/ios/Google.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport fs from 'fs';\nimport path from 'path';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin, ModProps } from '../Plugin.types';\nimport { withInfoPlist, withXcodeProject } from '../plugins/ios-plugins';\nimport { InfoPlist } from './IosConfig.types';\nimport { getSourceRoot } from './Paths';\nimport { appendScheme } from './Scheme';\nimport { addResourceFileToGroup, getProjectName } from './utils/Xcodeproj';\n\nexport const withGoogle: ConfigPlugin = (config) => {\n return withInfoPlist(config, (config) => {\n config.modResults = setGoogleConfig(config, config.modResults, config.modRequest);\n return config;\n });\n};\n\nexport const withGoogleServicesFile: ConfigPlugin = (config) => {\n return withXcodeProject(config, (config) => {\n config.modResults = setGoogleServicesFile(config, {\n projectRoot: config.modRequest.projectRoot,\n project: config.modResults,\n });\n return config;\n });\n};\n\nfunction readGoogleServicesInfoPlist(\n relativePath: string,\n { projectRoot }: { projectRoot: string }\n) {\n const googleServiceFilePath = path.resolve(projectRoot, relativePath);\n const contents = fs.readFileSync(googleServiceFilePath, 'utf8');\n assert(contents, 'GoogleService-Info.plist is empty');\n return plist.parse(contents);\n}\n\nexport function getGoogleSignInReversedClientId(\n config: Pick<ExpoConfig, 'ios'>,\n modRequest: Pick<ModProps<InfoPlist>, 'projectRoot'>\n): string | null {\n const googleServicesFileRelativePath = getGoogleServicesFile(config);\n if (googleServicesFileRelativePath === null) {\n return null;\n }\n\n const infoPlist = readGoogleServicesInfoPlist(googleServicesFileRelativePath, modRequest);\n\n return infoPlist.REVERSED_CLIENT_ID ?? null;\n}\n\nexport function getGoogleServicesFile(config: Pick<ExpoConfig, 'ios'>) {\n return config.ios?.googleServicesFile ?? null;\n}\n\nexport function setGoogleSignInReversedClientId(\n config: Pick<ExpoConfig, 'ios'>,\n infoPlist: InfoPlist,\n modRequest: Pick<ModProps<InfoPlist>, 'projectRoot'>\n): InfoPlist {\n const reversedClientId = getGoogleSignInReversedClientId(config, modRequest);\n\n if (reversedClientId === null) {\n return infoPlist;\n }\n\n return appendScheme(reversedClientId, infoPlist);\n}\n\nexport function setGoogleConfig(\n config: Pick<ExpoConfig, 'ios'>,\n infoPlist: InfoPlist,\n modRequest: ModProps<InfoPlist>\n): InfoPlist {\n infoPlist = setGoogleSignInReversedClientId(config, infoPlist, modRequest);\n return infoPlist;\n}\n\nexport function setGoogleServicesFile(\n config: Pick<ExpoConfig, 'ios'>,\n { projectRoot, project }: { project: XcodeProject; projectRoot: string }\n): XcodeProject {\n const googleServicesFileRelativePath = getGoogleServicesFile(config);\n if (googleServicesFileRelativePath === null) {\n return project;\n }\n\n const googleServiceFilePath = path.resolve(projectRoot, googleServicesFileRelativePath);\n fs.copyFileSync(\n googleServiceFilePath,\n path.join(getSourceRoot(projectRoot), 'GoogleService-Info.plist')\n );\n\n const projectName = getProjectName(projectRoot);\n const plistFilePath = `${projectName}/GoogleService-Info.plist`;\n if (!project.hasFile(plistFilePath)) {\n project = addResourceFileToGroup({\n filepath: plistFilePath,\n groupName: projectName,\n project,\n isBuildFile: true,\n verbose: true,\n });\n }\n return project;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Google.js","names":["_plist","data","_interopRequireDefault","require","_assert","_fs","_path","_iosPlugins","_Paths","_Scheme","_Xcodeproj","obj","__esModule","default","withGoogle","config","withInfoPlist","modResults","setGoogleConfig","modRequest","exports","withGoogleServicesFile","withXcodeProject","setGoogleServicesFile","projectRoot","project","readGoogleServicesInfoPlist","relativePath","googleServiceFilePath","path","resolve","contents","fs","readFileSync","assert","plist","parse","getGoogleSignInReversedClientId","_infoPlist$REVERSED_C","googleServicesFileRelativePath","getGoogleServicesFile","infoPlist","REVERSED_CLIENT_ID","_config$ios$googleSer","_config$ios","ios","googleServicesFile","setGoogleSignInReversedClientId","reversedClientId","appendScheme","copyFileSync","join","getSourceRoot","projectName","getProjectName","plistFilePath","hasFile","addResourceFileToGroup","filepath","groupName","isBuildFile","verbose"],"sources":["../../src/ios/Google.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport fs from 'fs';\nimport path from 'path';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin, ModProps } from '../Plugin.types';\nimport { withInfoPlist, withXcodeProject } from '../plugins/ios-plugins';\nimport { InfoPlist } from './IosConfig.types';\nimport { getSourceRoot } from './Paths';\nimport { appendScheme } from './Scheme';\nimport { addResourceFileToGroup, getProjectName } from './utils/Xcodeproj';\n\nexport const withGoogle: ConfigPlugin = (config) => {\n return withInfoPlist(config, (config) => {\n config.modResults = setGoogleConfig(config, config.modResults, config.modRequest);\n return config;\n });\n};\n\nexport const withGoogleServicesFile: ConfigPlugin = (config) => {\n return withXcodeProject(config, (config) => {\n config.modResults = setGoogleServicesFile(config, {\n projectRoot: config.modRequest.projectRoot,\n project: config.modResults,\n });\n return config;\n });\n};\n\nfunction readGoogleServicesInfoPlist(\n relativePath: string,\n { projectRoot }: { projectRoot: string }\n) {\n const googleServiceFilePath = path.resolve(projectRoot, relativePath);\n const contents = fs.readFileSync(googleServiceFilePath, 'utf8');\n assert(contents, 'GoogleService-Info.plist is empty');\n return plist.parse(contents);\n}\n\nexport function getGoogleSignInReversedClientId(\n config: Pick<ExpoConfig, 'ios'>,\n modRequest: Pick<ModProps<InfoPlist>, 'projectRoot'>\n): string | null {\n const googleServicesFileRelativePath = getGoogleServicesFile(config);\n if (googleServicesFileRelativePath === null) {\n return null;\n }\n\n const infoPlist = readGoogleServicesInfoPlist(googleServicesFileRelativePath, modRequest);\n\n return infoPlist.REVERSED_CLIENT_ID ?? null;\n}\n\nexport function getGoogleServicesFile(config: Pick<ExpoConfig, 'ios'>) {\n return config.ios?.googleServicesFile ?? null;\n}\n\nexport function setGoogleSignInReversedClientId(\n config: Pick<ExpoConfig, 'ios'>,\n infoPlist: InfoPlist,\n modRequest: Pick<ModProps<InfoPlist>, 'projectRoot'>\n): InfoPlist {\n const reversedClientId = getGoogleSignInReversedClientId(config, modRequest);\n\n if (reversedClientId === null) {\n return infoPlist;\n }\n\n return appendScheme(reversedClientId, infoPlist);\n}\n\nexport function setGoogleConfig(\n config: Pick<ExpoConfig, 'ios'>,\n infoPlist: InfoPlist,\n modRequest: ModProps<InfoPlist>\n): InfoPlist {\n infoPlist = setGoogleSignInReversedClientId(config, infoPlist, modRequest);\n return infoPlist;\n}\n\nexport function setGoogleServicesFile(\n config: Pick<ExpoConfig, 'ios'>,\n { projectRoot, project }: { project: XcodeProject; projectRoot: string }\n): XcodeProject {\n const googleServicesFileRelativePath = getGoogleServicesFile(config);\n if (googleServicesFileRelativePath === null) {\n return project;\n }\n\n const googleServiceFilePath = path.resolve(projectRoot, googleServicesFileRelativePath);\n fs.copyFileSync(\n googleServiceFilePath,\n path.join(getSourceRoot(projectRoot), 'GoogleService-Info.plist')\n );\n\n const projectName = getProjectName(projectRoot);\n const plistFilePath = `${projectName}/GoogleService-Info.plist`;\n if (!project.hasFile(plistFilePath)) {\n project = addResourceFileToGroup({\n filepath: plistFilePath,\n groupName: projectName,\n project,\n isBuildFile: true,\n verbose: true,\n });\n }\n return project;\n}\n"],"mappings":";;;;;;;;;;;AACA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,IAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,GAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,MAAA;EAAA,MAAAL,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAG,KAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAM,YAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,WAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAO,OAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,MAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,QAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,OAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,WAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,UAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA2E,SAAAC,uBAAAS,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEpE,MAAMG,UAAwB,GAAIC,MAAM,IAAK;EAClD,OAAO,IAAAC,2BAAa,EAACD,MAAM,EAAGA,MAAM,IAAK;IACvCA,MAAM,CAACE,UAAU,GAAGC,eAAe,CAACH,MAAM,EAAEA,MAAM,CAACE,UAAU,EAAEF,MAAM,CAACI,UAAU,CAAC;IACjF,OAAOJ,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACK,OAAA,CAAAN,UAAA,GAAAA,UAAA;AAEK,MAAMO,sBAAoC,GAAIN,MAAM,IAAK;EAC9D,OAAO,IAAAO,8BAAgB,EAACP,MAAM,EAAGA,MAAM,IAAK;IAC1CA,MAAM,CAACE,UAAU,GAAGM,qBAAqB,CAACR,MAAM,EAAE;MAChDS,WAAW,EAAET,MAAM,CAACI,UAAU,CAACK,WAAW;MAC1CC,OAAO,EAAEV,MAAM,CAACE;IAClB,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACK,OAAA,CAAAC,sBAAA,GAAAA,sBAAA;AAEF,SAASK,2BAA2BA,CAClCC,YAAoB,EACpB;EAAEH;AAAqC,CAAC,EACxC;EACA,MAAMI,qBAAqB,GAAGC,eAAI,CAACC,OAAO,CAACN,WAAW,EAAEG,YAAY,CAAC;EACrE,MAAMI,QAAQ,GAAGC,aAAE,CAACC,YAAY,CAACL,qBAAqB,EAAE,MAAM,CAAC;EAC/D,IAAAM,iBAAM,EAACH,QAAQ,EAAE,mCAAmC,CAAC;EACrD,OAAOI,gBAAK,CAACC,KAAK,CAACL,QAAQ,CAAC;AAC9B;AAEO,SAASM,+BAA+BA,CAC7CtB,MAA+B,EAC/BI,UAAoD,EACrC;EAAA,IAAAmB,qBAAA;EACf,MAAMC,8BAA8B,GAAGC,qBAAqB,CAACzB,MAAM,CAAC;EACpE,IAAIwB,8BAA8B,KAAK,IAAI,EAAE;IAC3C,OAAO,IAAI;EACb;EAEA,MAAME,SAAS,GAAGf,2BAA2B,CAACa,8BAA8B,EAAEpB,UAAU,CAAC;EAEzF,QAAAmB,qBAAA,GAAOG,SAAS,CAACC,kBAAkB,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,IAAI;AAC7C;AAEO,SAASE,qBAAqBA,CAACzB,MAA+B,EAAE;EAAA,IAAA4B,qBAAA,EAAAC,WAAA;EACrE,QAAAD,qBAAA,IAAAC,WAAA,GAAO7B,MAAM,CAAC8B,GAAG,cAAAD,WAAA,uBAAVA,WAAA,CAAYE,kBAAkB,cAAAH,qBAAA,cAAAA,qBAAA,GAAI,IAAI;AAC/C;AAEO,SAASI,+BAA+BA,CAC7ChC,MAA+B,EAC/B0B,SAAoB,EACpBtB,UAAoD,EACzC;EACX,MAAM6B,gBAAgB,GAAGX,+BAA+B,CAACtB,MAAM,EAAEI,UAAU,CAAC;EAE5E,IAAI6B,gBAAgB,KAAK,IAAI,EAAE;IAC7B,OAAOP,SAAS;EAClB;EAEA,OAAO,IAAAQ,sBAAY,EAACD,gBAAgB,EAAEP,SAAS,CAAC;AAClD;AAEO,SAASvB,eAAeA,CAC7BH,MAA+B,EAC/B0B,SAAoB,EACpBtB,UAA+B,EACpB;EACXsB,SAAS,GAAGM,+BAA+B,CAAChC,MAAM,EAAE0B,SAAS,EAAEtB,UAAU,CAAC;EAC1E,OAAOsB,SAAS;AAClB;AAEO,SAASlB,qBAAqBA,CACnCR,MAA+B,EAC/B;EAAES,WAAW;EAAEC;AAAwD,CAAC,EAC1D;EACd,MAAMc,8BAA8B,GAAGC,qBAAqB,CAACzB,MAAM,CAAC;EACpE,IAAIwB,8BAA8B,KAAK,IAAI,EAAE;IAC3C,OAAOd,OAAO;EAChB;EAEA,MAAMG,qBAAqB,GAAGC,eAAI,CAACC,OAAO,CAACN,WAAW,EAAEe,8BAA8B,CAAC;EACvFP,aAAE,CAACkB,YAAY,CACbtB,qBAAqB,EACrBC,eAAI,CAACsB,IAAI,CAAC,IAAAC,sBAAa,EAAC5B,WAAW,CAAC,EAAE,0BAA0B,CAAC,CAClE;EAED,MAAM6B,WAAW,GAAG,IAAAC,2BAAc,EAAC9B,WAAW,CAAC;EAC/C,MAAM+B,aAAa,GAAI,GAAEF,WAAY,2BAA0B;EAC/D,IAAI,CAAC5B,OAAO,CAAC+B,OAAO,CAACD,aAAa,CAAC,EAAE;IACnC9B,OAAO,GAAG,IAAAgC,mCAAsB,EAAC;MAC/BC,QAAQ,EAAEH,aAAa;MACvBI,SAAS,EAAEN,WAAW;MACtB5B,OAAO;MACPmC,WAAW,EAAE,IAAI;MACjBC,OAAO,EAAE;IACX,CAAC,CAAC;EACJ;EACA,OAAOpC,OAAO;AAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Locales.js","names":["withLocales","config","withXcodeProject","modResults","setLocalesAsync","projectRoot","modRequest","project","getLocales","locales","localesMap","getResolvedLocalesAsync","projectName","getProjectName","supportingDirectory","join","stringName","lang","localizationObj","Object","entries","dir","fs","promises","mkdir","recursive","strings","buffer","plistKey","localVersion","push","writeFile","groupName","group","ensureGroupRecursively","children","some","comment","addResourceFileToGroup","filepath","relative","isBuildFile","verbose","input","localeJsonPath","JsonFile","readAsync","addWarningIOS"],"sources":["../../src/ios/Locales.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport JsonFile from '@expo/json-file';\nimport fs from 'fs';\nimport { join, relative } from 'path';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport { addWarningIOS } from '../utils/warnings';\nimport { addResourceFileToGroup, ensureGroupRecursively, getProjectName } from './utils/Xcodeproj';\n\ntype LocaleJson = Record<string, string>;\ntype ResolvedLocalesJson = Record<string, LocaleJson>;\ntype ExpoConfigLocales = NonNullable<ExpoConfig['locales']>;\n\nexport const withLocales: ConfigPlugin = (config) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setLocalesAsync(config, {\n projectRoot: config.modRequest.projectRoot,\n project: config.modResults,\n });\n return config;\n });\n};\n\nexport function getLocales(\n config: Pick<ExpoConfig, 'locales'>\n): Record<string, string | LocaleJson> | null {\n return config.locales ?? null;\n}\n\nexport async function setLocalesAsync(\n config: Pick<ExpoConfig, 'locales'>,\n { projectRoot, project }: { projectRoot: string; project: XcodeProject }\n): Promise<XcodeProject> {\n const locales = getLocales(config);\n if (!locales) {\n return project;\n }\n // possibly validate CFBundleAllowMixedLocalizations is enabled\n const localesMap = await getResolvedLocalesAsync(projectRoot, locales);\n\n const projectName = getProjectName(projectRoot);\n const supportingDirectory = join(projectRoot, 'ios', projectName, 'Supporting');\n\n // TODO: Should we delete all before running? Revisit after we land on a lock file.\n const stringName = 'InfoPlist.strings';\n\n for (const [lang, localizationObj] of Object.entries(localesMap)) {\n const dir = join(supportingDirectory, `${lang}.lproj`);\n // await fs.ensureDir(dir);\n await fs.promises.mkdir(dir, { recursive: true });\n\n const strings = join(dir, stringName);\n const buffer = [];\n for (const [plistKey, localVersion] of Object.entries(localizationObj)) {\n buffer.push(`${plistKey} = \"${localVersion}\";`);\n }\n // Write the file to the file system.\n await fs.promises.writeFile(strings, buffer.join('\\n'));\n\n const groupName = `${projectName}/Supporting/${lang}.lproj`;\n // deep find the correct folder\n const group = ensureGroupRecursively(project, groupName);\n\n // Ensure the file doesn't already exist\n if (!group?.children.some(({ comment }) => comment === stringName)) {\n // Only write the file if it doesn't already exist.\n project = addResourceFileToGroup({\n filepath: relative(supportingDirectory, strings),\n groupName,\n project,\n isBuildFile: true,\n verbose: true,\n });\n }\n }\n\n return project;\n}\n\nexport async function getResolvedLocalesAsync(\n projectRoot: string,\n input: ExpoConfigLocales\n): Promise<ResolvedLocalesJson> {\n const locales: ResolvedLocalesJson = {};\n for (const [lang, localeJsonPath] of Object.entries(input)) {\n if (typeof localeJsonPath === 'string') {\n try {\n locales[lang] = await JsonFile.readAsync(join(projectRoot, localeJsonPath));\n } catch {\n // Add a warning when a json file cannot be parsed.\n addWarningIOS(\n `locales.${lang}`,\n `Failed to parse JSON of locale file for language: ${lang}`,\n 'https://docs.expo.dev/distribution/app-stores/#localizing-your-ios-app'\n );\n }\n } else {\n // In the off chance that someone defined the locales json in the config, pass it directly to the object.\n // We do this to make the types more elegant.\n locales[lang] = localeJsonPath;\n }\n }\n\n return locales;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Locales.js","names":["_jsonFile","data","_interopRequireDefault","require","_fs","_path","_iosPlugins","_warnings","_Xcodeproj","obj","__esModule","default","withLocales","config","withXcodeProject","modResults","setLocalesAsync","projectRoot","modRequest","project","exports","getLocales","_config$locales","locales","localesMap","getResolvedLocalesAsync","projectName","getProjectName","supportingDirectory","join","stringName","lang","localizationObj","Object","entries","dir","fs","promises","mkdir","recursive","strings","buffer","plistKey","localVersion","push","writeFile","groupName","group","ensureGroupRecursively","children","some","comment","addResourceFileToGroup","filepath","relative","isBuildFile","verbose","input","localeJsonPath","JsonFile","readAsync","addWarningIOS"],"sources":["../../src/ios/Locales.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport JsonFile from '@expo/json-file';\nimport fs from 'fs';\nimport { join, relative } from 'path';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport { addWarningIOS } from '../utils/warnings';\nimport { addResourceFileToGroup, ensureGroupRecursively, getProjectName } from './utils/Xcodeproj';\n\ntype LocaleJson = Record<string, string>;\ntype ResolvedLocalesJson = Record<string, LocaleJson>;\ntype ExpoConfigLocales = NonNullable<ExpoConfig['locales']>;\n\nexport const withLocales: ConfigPlugin = (config) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setLocalesAsync(config, {\n projectRoot: config.modRequest.projectRoot,\n project: config.modResults,\n });\n return config;\n });\n};\n\nexport function getLocales(\n config: Pick<ExpoConfig, 'locales'>\n): Record<string, string | LocaleJson> | null {\n return config.locales ?? null;\n}\n\nexport async function setLocalesAsync(\n config: Pick<ExpoConfig, 'locales'>,\n { projectRoot, project }: { projectRoot: string; project: XcodeProject }\n): Promise<XcodeProject> {\n const locales = getLocales(config);\n if (!locales) {\n return project;\n }\n // possibly validate CFBundleAllowMixedLocalizations is enabled\n const localesMap = await getResolvedLocalesAsync(projectRoot, locales);\n\n const projectName = getProjectName(projectRoot);\n const supportingDirectory = join(projectRoot, 'ios', projectName, 'Supporting');\n\n // TODO: Should we delete all before running? Revisit after we land on a lock file.\n const stringName = 'InfoPlist.strings';\n\n for (const [lang, localizationObj] of Object.entries(localesMap)) {\n const dir = join(supportingDirectory, `${lang}.lproj`);\n // await fs.ensureDir(dir);\n await fs.promises.mkdir(dir, { recursive: true });\n\n const strings = join(dir, stringName);\n const buffer = [];\n for (const [plistKey, localVersion] of Object.entries(localizationObj)) {\n buffer.push(`${plistKey} = \"${localVersion}\";`);\n }\n // Write the file to the file system.\n await fs.promises.writeFile(strings, buffer.join('\\n'));\n\n const groupName = `${projectName}/Supporting/${lang}.lproj`;\n // deep find the correct folder\n const group = ensureGroupRecursively(project, groupName);\n\n // Ensure the file doesn't already exist\n if (!group?.children.some(({ comment }) => comment === stringName)) {\n // Only write the file if it doesn't already exist.\n project = addResourceFileToGroup({\n filepath: relative(supportingDirectory, strings),\n groupName,\n project,\n isBuildFile: true,\n verbose: true,\n });\n }\n }\n\n return project;\n}\n\nexport async function getResolvedLocalesAsync(\n projectRoot: string,\n input: ExpoConfigLocales\n): Promise<ResolvedLocalesJson> {\n const locales: ResolvedLocalesJson = {};\n for (const [lang, localeJsonPath] of Object.entries(input)) {\n if (typeof localeJsonPath === 'string') {\n try {\n locales[lang] = await JsonFile.readAsync(join(projectRoot, localeJsonPath));\n } catch {\n // Add a warning when a json file cannot be parsed.\n addWarningIOS(\n `locales.${lang}`,\n `Failed to parse JSON of locale file for language: ${lang}`,\n 'https://docs.expo.dev/distribution/app-stores/#localizing-your-ios-app'\n );\n }\n } else {\n // In the off chance that someone defined the locales json in the config, pass it directly to the object.\n // We do this to make the types more elegant.\n locales[lang] = localeJsonPath;\n }\n }\n\n return locales;\n}\n"],"mappings":"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"}