@expo/config-plugins 8.0.1 → 8.0.3

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.
package/build/index.d.ts CHANGED
@@ -21,7 +21,7 @@ export { withRunOnce, createRunOncePlugin } from './plugins/withRunOnce';
21
21
  export { withDangerousMod } from './plugins/withDangerousMod';
22
22
  export { withFinalizedMod } from './plugins/withFinalizedMod';
23
23
  export { withMod, withBaseMod } from './plugins/withMod';
24
- export { withAppDelegate, withInfoPlist, withEntitlementsPlist, withExpoPlist, withXcodeProject, withPodfileProperties, } from './plugins/ios-plugins';
24
+ export { withAppDelegate, withInfoPlist, withEntitlementsPlist, withExpoPlist, withXcodeProject, withPodfile, withPodfileProperties, } from './plugins/ios-plugins';
25
25
  export { withAndroidManifest, withStringsXml, withAndroidColors, withAndroidColorsNight, withAndroidStyles, withMainActivity, withMainApplication, withProjectBuildGradle, withAppBuildGradle, withSettingsGradle, withGradleProperties, } from './plugins/android-plugins';
26
26
  export { withStaticPlugin } from './plugins/withStaticPlugin';
27
27
  export { compileModsAsync, withDefaultBaseMods, evalModsAsync } from './plugins/mod-compiler';
package/build/index.js CHANGED
@@ -23,6 +23,7 @@ var _exportNames = {
23
23
  withEntitlementsPlist: true,
24
24
  withExpoPlist: true,
25
25
  withXcodeProject: true,
26
+ withPodfile: true,
26
27
  withPodfileProperties: true,
27
28
  withAndroidManifest: true,
28
29
  withStringsXml: true,
@@ -175,6 +176,12 @@ Object.defineProperty(exports, "withPlugins", {
175
176
  return _withPlugins().withPlugins;
176
177
  }
177
178
  });
179
+ Object.defineProperty(exports, "withPodfile", {
180
+ enumerable: true,
181
+ get: function () {
182
+ return _iosPlugins().withPodfile;
183
+ }
184
+ });
178
185
  Object.defineProperty(exports, "withPodfileProperties", {
179
186
  enumerable: true,
180
187
  get: function () {
@@ -1 +1 @@
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","_withFinalizedMod","_withMod","_iosPlugins","_androidPlugins","_withStaticPlugin","_modCompiler","_errors","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","n","__proto__","a","getOwnPropertyDescriptor","u","i","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 { withFinalizedMod } from './plugins/withFinalizedMod';\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
+ {"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","_withFinalizedMod","_withMod","_iosPlugins","_androidPlugins","_withStaticPlugin","_modCompiler","_errors","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","n","__proto__","a","getOwnPropertyDescriptor","u","i","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 { withFinalizedMod } from './plugins/withFinalizedMod';\nexport { withMod, withBaseMod } from './plugins/withMod';\n\nexport {\n withAppDelegate,\n withInfoPlist,\n withEntitlementsPlist,\n withExpoPlist,\n withXcodeProject,\n withPodfile,\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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"}
package/build/ios/Maps.js CHANGED
@@ -13,13 +13,6 @@ exports.removeGoogleMapsAppDelegateInit = removeGoogleMapsAppDelegateInit;
13
13
  exports.removeMapsCocoaPods = removeMapsCocoaPods;
14
14
  exports.setGoogleMapsApiKey = setGoogleMapsApiKey;
15
15
  exports.withMaps = void 0;
16
- function _fs() {
17
- const data = _interopRequireDefault(require("fs"));
18
- _fs = function () {
19
- return data;
20
- };
21
- return data;
22
- }
23
16
  function _path() {
24
17
  const data = _interopRequireDefault(require("path"));
25
18
  _path = function () {
@@ -41,13 +34,6 @@ function _iosPlugins() {
41
34
  };
42
35
  return data;
43
36
  }
44
- function _withDangerousMod() {
45
- const data = require("../plugins/withDangerousMod");
46
- _withDangerousMod = function () {
47
- return data;
48
- };
49
- return data;
50
- }
51
37
  function _generateCode() {
52
38
  const data = require("../utils/generateCode");
53
39
  _generateCode = function () {
@@ -170,19 +156,17 @@ function isReactNativeMapsAutolinked(config) {
170
156
  const withMapsCocoaPods = (config, {
171
157
  useGoogleMaps
172
158
  }) => {
173
- return (0, _withDangerousMod().withDangerousMod)(config, ['ios', async config => {
174
- const filePath = _path().default.join(config.modRequest.platformProjectRoot, 'Podfile');
175
- const contents = await _fs().default.promises.readFile(filePath, 'utf-8');
176
- let results;
159
+ return (0, _iosPlugins().withPodfile)(config, async config => {
177
160
  // Only add the block if react-native-maps is installed in the project (best effort).
178
161
  // Generally prebuild runs after a yarn install so this should always work as expected.
179
162
  const googleMapsPath = isReactNativeMapsInstalled(config.modRequest.projectRoot);
180
163
  const isLinked = isReactNativeMapsAutolinked(config);
181
164
  debug('Is Expo Autolinked:', isLinked);
182
165
  debug('react-native-maps path:', googleMapsPath);
166
+ let results;
183
167
  if (isLinked && googleMapsPath && useGoogleMaps) {
184
168
  try {
185
- results = addMapsCocoaPods(contents);
169
+ results = addMapsCocoaPods(config.modResults.contents);
186
170
  } catch (error) {
187
171
  if (error.code === 'ERR_NO_MATCH') {
188
172
  throw new Error(`Cannot add react-native-maps to the project's ios/Podfile because it's malformed. Please report this with a copy of your project Podfile.`);
@@ -191,13 +175,13 @@ const withMapsCocoaPods = (config, {
191
175
  }
192
176
  } else {
193
177
  // If the package is no longer installed, then remove the block.
194
- results = removeMapsCocoaPods(contents);
178
+ results = removeMapsCocoaPods(config.modResults.contents);
195
179
  }
196
180
  if (results.didMerge || results.didClear) {
197
- await _fs().default.promises.writeFile(filePath, results.contents);
181
+ config.modResults.contents = results.contents;
198
182
  }
199
183
  return config;
200
- }]);
184
+ });
201
185
  };
202
186
  const withGoogleMapsAppDelegate = (config, {
203
187
  apiKey
@@ -1 +1 @@
1
- {"version":3,"file":"Maps.js","names":["_fs","data","_interopRequireDefault","require","_path","_resolveFrom","_iosPlugins","_withDangerousMod","_generateCode","obj","__esModule","default","debug","MATCH_INIT","exports","withGoogleMapsKey","createInfoPlistPlugin","setGoogleMapsApiKey","withMaps","config","apiKey","getGoogleMapsApiKey","withMapsCocoaPods","useGoogleMaps","withGoogleMapsAppDelegate","ios","googleMapsApiKey","GMSApiKey","infoPlist","addGoogleMapsAppDelegateImport","src","newSrc","push","mergeContents","tag","join","anchor","offset","comment","removeGoogleMapsAppDelegateImport","removeContents","addGoogleMapsAppDelegateInit","removeGoogleMapsAppDelegateInit","addMapsCocoaPods","removeMapsCocoaPods","isReactNativeMapsInstalled","projectRoot","resolved","resolveFrom","silent","path","dirname","isReactNativeMapsAutolinked","withDangerousMod","filePath","modRequest","platformProjectRoot","contents","fs","promises","readFile","results","googleMapsPath","isLinked","error","code","Error","didMerge","didClear","writeFile","withAppDelegate","includes","modResults","language"],"sources":["../../src/ios/Maps.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport fs from 'fs';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { ConfigPlugin, InfoPlist } from '../Plugin.types';\nimport { createInfoPlistPlugin, withAppDelegate } from '../plugins/ios-plugins';\nimport { withDangerousMod } from '../plugins/withDangerousMod';\nimport { mergeContents, MergeResults, removeContents } from '../utils/generateCode';\n\nconst debug = require('debug')('expo:config-plugins:ios:maps') as typeof console.log;\n\nexport const MATCH_INIT =\n /-\\s*\\(BOOL\\)\\s*application:\\s*\\(UIApplication\\s*\\*\\s*\\)\\s*\\w+\\s+didFinishLaunchingWithOptions:/g;\n\nconst withGoogleMapsKey = createInfoPlistPlugin(setGoogleMapsApiKey, 'withGoogleMapsKey');\n\nexport const withMaps: ConfigPlugin = (config) => {\n config = withGoogleMapsKey(config);\n\n const apiKey = getGoogleMapsApiKey(config);\n // Technically adds react-native-maps (Apple maps) and google maps.\n\n debug('Google Maps API Key:', apiKey);\n config = withMapsCocoaPods(config, { useGoogleMaps: !!apiKey });\n\n // Adds/Removes AppDelegate setup for Google Maps API on iOS\n config = withGoogleMapsAppDelegate(config, { apiKey });\n\n return config;\n};\n\nexport function getGoogleMapsApiKey(config: Pick<ExpoConfig, 'ios'>) {\n return config.ios?.config?.googleMapsApiKey ?? null;\n}\n\nexport function setGoogleMapsApiKey(\n config: Pick<ExpoConfig, 'ios'>,\n { GMSApiKey, ...infoPlist }: InfoPlist\n): InfoPlist {\n const apiKey = getGoogleMapsApiKey(config);\n\n if (apiKey === null) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n GMSApiKey: apiKey,\n };\n}\n\nexport function addGoogleMapsAppDelegateImport(src: string): MergeResults {\n const newSrc = [];\n newSrc.push(\n '#if __has_include(<GoogleMaps/GoogleMaps.h>)',\n '#import <GoogleMaps/GoogleMaps.h>',\n '#endif'\n );\n\n return mergeContents({\n tag: 'react-native-maps-import',\n src,\n newSrc: newSrc.join('\\n'),\n anchor: /#import \"AppDelegate\\.h\"/,\n offset: 1,\n comment: '//',\n });\n}\n\nexport function removeGoogleMapsAppDelegateImport(src: string): MergeResults {\n return removeContents({\n tag: 'react-native-maps-import',\n src,\n });\n}\n\nexport function addGoogleMapsAppDelegateInit(src: string, apiKey: string): MergeResults {\n const newSrc = [];\n newSrc.push(\n '#if __has_include(<GoogleMaps/GoogleMaps.h>)',\n ` [GMSServices provideAPIKey:@\"${apiKey}\"];`,\n '#endif'\n );\n\n return mergeContents({\n tag: 'react-native-maps-init',\n src,\n newSrc: newSrc.join('\\n'),\n anchor: MATCH_INIT,\n offset: 2,\n comment: '//',\n });\n}\n\nexport function removeGoogleMapsAppDelegateInit(src: string): MergeResults {\n return removeContents({\n tag: 'react-native-maps-init',\n src,\n });\n}\n\n/**\n * @param src The contents of the Podfile.\n * @returns Podfile with Google Maps added.\n */\nexport function addMapsCocoaPods(src: string): MergeResults {\n return mergeContents({\n tag: 'react-native-maps',\n src,\n newSrc: ` pod 'react-native-google-maps', path: File.dirname(\\`node --print \"require.resolve('react-native-maps/package.json')\"\\`)`,\n anchor: /use_native_modules/,\n offset: 0,\n comment: '#',\n });\n}\n\nexport function removeMapsCocoaPods(src: string): MergeResults {\n return removeContents({\n tag: 'react-native-maps',\n src,\n });\n}\n\nfunction isReactNativeMapsInstalled(projectRoot: string): string | null {\n const resolved = resolveFrom.silent(projectRoot, 'react-native-maps/package.json');\n return resolved ? path.dirname(resolved) : null;\n}\n\nfunction isReactNativeMapsAutolinked(config: Pick<ExpoConfig, '_internal'>): boolean {\n // Only add the native code changes if we know that the package is going to be linked natively.\n // This is specifically for monorepo support where one app might have react-native-maps (adding it to the node_modules)\n // but another app will not have it installed in the package.json, causing it to not be linked natively.\n // This workaround only exists because react-native-maps doesn't have a config plugin vendored in the package.\n\n // TODO: `react-native-maps` doesn't use Expo autolinking so we cannot safely disable the module.\n return true;\n\n // return (\n // !config._internal?.autolinkedModules ||\n // config._internal.autolinkedModules.includes('react-native-maps')\n // );\n}\n\nconst withMapsCocoaPods: ConfigPlugin<{ useGoogleMaps: boolean }> = (config, { useGoogleMaps }) => {\n return withDangerousMod(config, [\n 'ios',\n async (config) => {\n const filePath = path.join(config.modRequest.platformProjectRoot, 'Podfile');\n const contents = await fs.promises.readFile(filePath, 'utf-8');\n let results: MergeResults;\n // Only add the block if react-native-maps is installed in the project (best effort).\n // Generally prebuild runs after a yarn install so this should always work as expected.\n const googleMapsPath = isReactNativeMapsInstalled(config.modRequest.projectRoot);\n const isLinked = isReactNativeMapsAutolinked(config);\n debug('Is Expo Autolinked:', isLinked);\n debug('react-native-maps path:', googleMapsPath);\n if (isLinked && googleMapsPath && useGoogleMaps) {\n try {\n results = addMapsCocoaPods(contents);\n } catch (error: any) {\n if (error.code === 'ERR_NO_MATCH') {\n throw new Error(\n `Cannot add react-native-maps to the project's ios/Podfile because it's malformed. Please report this with a copy of your project Podfile.`\n );\n }\n throw error;\n }\n } else {\n // If the package is no longer installed, then remove the block.\n results = removeMapsCocoaPods(contents);\n }\n if (results.didMerge || results.didClear) {\n await fs.promises.writeFile(filePath, results.contents);\n }\n return config;\n },\n ]);\n};\n\nconst withGoogleMapsAppDelegate: ConfigPlugin<{ apiKey: string | null }> = (config, { apiKey }) => {\n return withAppDelegate(config, (config) => {\n if (['objc', 'objcpp'].includes(config.modResults.language)) {\n if (\n apiKey &&\n isReactNativeMapsAutolinked(config) &&\n isReactNativeMapsInstalled(config.modRequest.projectRoot)\n ) {\n try {\n config.modResults.contents = addGoogleMapsAppDelegateImport(\n config.modResults.contents\n ).contents;\n config.modResults.contents = addGoogleMapsAppDelegateInit(\n config.modResults.contents,\n apiKey\n ).contents;\n } catch (error: any) {\n if (error.code === 'ERR_NO_MATCH') {\n throw new Error(\n `Cannot add Google Maps to the project's AppDelegate because it's malformed. Please report this with a copy of your project AppDelegate.`\n );\n }\n throw error;\n }\n } else {\n config.modResults.contents = removeGoogleMapsAppDelegateImport(\n config.modResults.contents\n ).contents;\n config.modResults.contents = removeGoogleMapsAppDelegateInit(\n config.modResults.contents\n ).contents;\n }\n } else {\n throw new Error(\n `Cannot setup Google Maps because the project AppDelegate is not a supported language: ${config.modResults.language}`\n );\n }\n return config;\n });\n};\n"],"mappings":";;;;;;;;;;;;;;;AACA,SAAAA,IAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,GAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,MAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,KAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,aAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,YAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAK,YAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,WAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,kBAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,iBAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,cAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,aAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAoF,SAAAC,uBAAAO,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEpF,MAAMG,KAAK,GAAGT,OAAO,CAAC,OAAO,CAAC,CAAC,8BAA8B,CAAuB;AAE7E,MAAMU,UAAU,GAAAC,OAAA,CAAAD,UAAA,GACrB,iGAAiG;AAEnG,MAAME,iBAAiB,GAAG,IAAAC,mCAAqB,EAACC,mBAAmB,EAAE,mBAAmB,CAAC;AAElF,MAAMC,QAAsB,GAAIC,MAAM,IAAK;EAChDA,MAAM,GAAGJ,iBAAiB,CAACI,MAAM,CAAC;EAElC,MAAMC,MAAM,GAAGC,mBAAmB,CAACF,MAAM,CAAC;EAC1C;;EAEAP,KAAK,CAAC,sBAAsB,EAAEQ,MAAM,CAAC;EACrCD,MAAM,GAAGG,iBAAiB,CAACH,MAAM,EAAE;IAAEI,aAAa,EAAE,CAAC,CAACH;EAAO,CAAC,CAAC;;EAE/D;EACAD,MAAM,GAAGK,yBAAyB,CAACL,MAAM,EAAE;IAAEC;EAAO,CAAC,CAAC;EAEtD,OAAOD,MAAM;AACf,CAAC;AAACL,OAAA,CAAAI,QAAA,GAAAA,QAAA;AAEK,SAASG,mBAAmBA,CAACF,MAA+B,EAAE;EACnE,OAAOA,MAAM,CAACM,GAAG,EAAEN,MAAM,EAAEO,gBAAgB,IAAI,IAAI;AACrD;AAEO,SAAST,mBAAmBA,CACjCE,MAA+B,EAC/B;EAAEQ,SAAS;EAAE,GAAGC;AAAqB,CAAC,EAC3B;EACX,MAAMR,MAAM,GAAGC,mBAAmB,CAACF,MAAM,CAAC;EAE1C,IAAIC,MAAM,KAAK,IAAI,EAAE;IACnB,OAAOQ,SAAS;EAClB;EAEA,OAAO;IACL,GAAGA,SAAS;IACZD,SAAS,EAAEP;EACb,CAAC;AACH;AAEO,SAASS,8BAA8BA,CAACC,GAAW,EAAgB;EACxE,MAAMC,MAAM,GAAG,EAAE;EACjBA,MAAM,CAACC,IAAI,CACT,8CAA8C,EAC9C,mCAAmC,EACnC,QACF,CAAC;EAED,OAAO,IAAAC,6BAAa,EAAC;IACnBC,GAAG,EAAE,0BAA0B;IAC/BJ,GAAG;IACHC,MAAM,EAAEA,MAAM,CAACI,IAAI,CAAC,IAAI,CAAC;IACzBC,MAAM,EAAE,0BAA0B;IAClCC,MAAM,EAAE,CAAC;IACTC,OAAO,EAAE;EACX,CAAC,CAAC;AACJ;AAEO,SAASC,iCAAiCA,CAACT,GAAW,EAAgB;EAC3E,OAAO,IAAAU,8BAAc,EAAC;IACpBN,GAAG,EAAE,0BAA0B;IAC/BJ;EACF,CAAC,CAAC;AACJ;AAEO,SAASW,4BAA4BA,CAACX,GAAW,EAAEV,MAAc,EAAgB;EACtF,MAAMW,MAAM,GAAG,EAAE;EACjBA,MAAM,CAACC,IAAI,CACT,8CAA8C,EAC7C,kCAAiCZ,MAAO,KAAI,EAC7C,QACF,CAAC;EAED,OAAO,IAAAa,6BAAa,EAAC;IACnBC,GAAG,EAAE,wBAAwB;IAC7BJ,GAAG;IACHC,MAAM,EAAEA,MAAM,CAACI,IAAI,CAAC,IAAI,CAAC;IACzBC,MAAM,EAAEvB,UAAU;IAClBwB,MAAM,EAAE,CAAC;IACTC,OAAO,EAAE;EACX,CAAC,CAAC;AACJ;AAEO,SAASI,+BAA+BA,CAACZ,GAAW,EAAgB;EACzE,OAAO,IAAAU,8BAAc,EAAC;IACpBN,GAAG,EAAE,wBAAwB;IAC7BJ;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACO,SAASa,gBAAgBA,CAACb,GAAW,EAAgB;EAC1D,OAAO,IAAAG,6BAAa,EAAC;IACnBC,GAAG,EAAE,mBAAmB;IACxBJ,GAAG;IACHC,MAAM,EAAG,4HAA2H;IACpIK,MAAM,EAAE,oBAAoB;IAC5BC,MAAM,EAAE,CAAC;IACTC,OAAO,EAAE;EACX,CAAC,CAAC;AACJ;AAEO,SAASM,mBAAmBA,CAACd,GAAW,EAAgB;EAC7D,OAAO,IAAAU,8BAAc,EAAC;IACpBN,GAAG,EAAE,mBAAmB;IACxBJ;EACF,CAAC,CAAC;AACJ;AAEA,SAASe,0BAA0BA,CAACC,WAAmB,EAAiB;EACtE,MAAMC,QAAQ,GAAGC,sBAAW,CAACC,MAAM,CAACH,WAAW,EAAE,gCAAgC,CAAC;EAClF,OAAOC,QAAQ,GAAGG,eAAI,CAACC,OAAO,CAACJ,QAAQ,CAAC,GAAG,IAAI;AACjD;AAEA,SAASK,2BAA2BA,CAACjC,MAAqC,EAAW;EACnF;EACA;EACA;EACA;;EAEA;EACA,OAAO,IAAI;;EAEX;EACA;EACA;EACA;AACF;AAEA,MAAMG,iBAA2D,GAAGA,CAACH,MAAM,EAAE;EAAEI;AAAc,CAAC,KAAK;EACjG,OAAO,IAAA8B,oCAAgB,EAAClC,MAAM,EAAE,CAC9B,KAAK,EACL,MAAOA,MAAM,IAAK;IAChB,MAAMmC,QAAQ,GAAGJ,eAAI,CAACf,IAAI,CAAChB,MAAM,CAACoC,UAAU,CAACC,mBAAmB,EAAE,SAAS,CAAC;IAC5E,MAAMC,QAAQ,GAAG,MAAMC,aAAE,CAACC,QAAQ,CAACC,QAAQ,CAACN,QAAQ,EAAE,OAAO,CAAC;IAC9D,IAAIO,OAAqB;IACzB;IACA;IACA,MAAMC,cAAc,GAAGjB,0BAA0B,CAAC1B,MAAM,CAACoC,UAAU,CAACT,WAAW,CAAC;IAChF,MAAMiB,QAAQ,GAAGX,2BAA2B,CAACjC,MAAM,CAAC;IACpDP,KAAK,CAAC,qBAAqB,EAAEmD,QAAQ,CAAC;IACtCnD,KAAK,CAAC,yBAAyB,EAAEkD,cAAc,CAAC;IAChD,IAAIC,QAAQ,IAAID,cAAc,IAAIvC,aAAa,EAAE;MAC/C,IAAI;QACFsC,OAAO,GAAGlB,gBAAgB,CAACc,QAAQ,CAAC;MACtC,CAAC,CAAC,OAAOO,KAAU,EAAE;QACnB,IAAIA,KAAK,CAACC,IAAI,KAAK,cAAc,EAAE;UACjC,MAAM,IAAIC,KAAK,CACZ,2IACH,CAAC;QACH;QACA,MAAMF,KAAK;MACb;IACF,CAAC,MAAM;MACL;MACAH,OAAO,GAAGjB,mBAAmB,CAACa,QAAQ,CAAC;IACzC;IACA,IAAII,OAAO,CAACM,QAAQ,IAAIN,OAAO,CAACO,QAAQ,EAAE;MACxC,MAAMV,aAAE,CAACC,QAAQ,CAACU,SAAS,CAACf,QAAQ,EAAEO,OAAO,CAACJ,QAAQ,CAAC;IACzD;IACA,OAAOtC,MAAM;EACf,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAMK,yBAAkE,GAAGA,CAACL,MAAM,EAAE;EAAEC;AAAO,CAAC,KAAK;EACjG,OAAO,IAAAkD,6BAAe,EAACnD,MAAM,EAAGA,MAAM,IAAK;IACzC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAACoD,QAAQ,CAACpD,MAAM,CAACqD,UAAU,CAACC,QAAQ,CAAC,EAAE;MAC3D,IACErD,MAAM,IACNgC,2BAA2B,CAACjC,MAAM,CAAC,IACnC0B,0BAA0B,CAAC1B,MAAM,CAACoC,UAAU,CAACT,WAAW,CAAC,EACzD;QACA,IAAI;UACF3B,MAAM,CAACqD,UAAU,CAACf,QAAQ,GAAG5B,8BAA8B,CACzDV,MAAM,CAACqD,UAAU,CAACf,QACpB,CAAC,CAACA,QAAQ;UACVtC,MAAM,CAACqD,UAAU,CAACf,QAAQ,GAAGhB,4BAA4B,CACvDtB,MAAM,CAACqD,UAAU,CAACf,QAAQ,EAC1BrC,MACF,CAAC,CAACqC,QAAQ;QACZ,CAAC,CAAC,OAAOO,KAAU,EAAE;UACnB,IAAIA,KAAK,CAACC,IAAI,KAAK,cAAc,EAAE;YACjC,MAAM,IAAIC,KAAK,CACZ,yIACH,CAAC;UACH;UACA,MAAMF,KAAK;QACb;MACF,CAAC,MAAM;QACL7C,MAAM,CAACqD,UAAU,CAACf,QAAQ,GAAGlB,iCAAiC,CAC5DpB,MAAM,CAACqD,UAAU,CAACf,QACpB,CAAC,CAACA,QAAQ;QACVtC,MAAM,CAACqD,UAAU,CAACf,QAAQ,GAAGf,+BAA+B,CAC1DvB,MAAM,CAACqD,UAAU,CAACf,QACpB,CAAC,CAACA,QAAQ;MACZ;IACF,CAAC,MAAM;MACL,MAAM,IAAIS,KAAK,CACZ,yFAAwF/C,MAAM,CAACqD,UAAU,CAACC,QAAS,EACtH,CAAC;IACH;IACA,OAAOtD,MAAM;EACf,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Maps.js","names":["_path","data","_interopRequireDefault","require","_resolveFrom","_iosPlugins","_generateCode","obj","__esModule","default","debug","MATCH_INIT","exports","withGoogleMapsKey","createInfoPlistPlugin","setGoogleMapsApiKey","withMaps","config","apiKey","getGoogleMapsApiKey","withMapsCocoaPods","useGoogleMaps","withGoogleMapsAppDelegate","ios","googleMapsApiKey","GMSApiKey","infoPlist","addGoogleMapsAppDelegateImport","src","newSrc","push","mergeContents","tag","join","anchor","offset","comment","removeGoogleMapsAppDelegateImport","removeContents","addGoogleMapsAppDelegateInit","removeGoogleMapsAppDelegateInit","addMapsCocoaPods","removeMapsCocoaPods","isReactNativeMapsInstalled","projectRoot","resolved","resolveFrom","silent","path","dirname","isReactNativeMapsAutolinked","withPodfile","googleMapsPath","modRequest","isLinked","results","modResults","contents","error","code","Error","didMerge","didClear","withAppDelegate","includes","language"],"sources":["../../src/ios/Maps.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { ConfigPlugin, InfoPlist } from '../Plugin.types';\nimport { createInfoPlistPlugin, withAppDelegate, withPodfile } from '../plugins/ios-plugins';\nimport { mergeContents, MergeResults, removeContents } from '../utils/generateCode';\n\nconst debug = require('debug')('expo:config-plugins:ios:maps') as typeof console.log;\n\nexport const MATCH_INIT =\n /-\\s*\\(BOOL\\)\\s*application:\\s*\\(UIApplication\\s*\\*\\s*\\)\\s*\\w+\\s+didFinishLaunchingWithOptions:/g;\n\nconst withGoogleMapsKey = createInfoPlistPlugin(setGoogleMapsApiKey, 'withGoogleMapsKey');\n\nexport const withMaps: ConfigPlugin = (config) => {\n config = withGoogleMapsKey(config);\n\n const apiKey = getGoogleMapsApiKey(config);\n // Technically adds react-native-maps (Apple maps) and google maps.\n\n debug('Google Maps API Key:', apiKey);\n config = withMapsCocoaPods(config, { useGoogleMaps: !!apiKey });\n\n // Adds/Removes AppDelegate setup for Google Maps API on iOS\n config = withGoogleMapsAppDelegate(config, { apiKey });\n\n return config;\n};\n\nexport function getGoogleMapsApiKey(config: Pick<ExpoConfig, 'ios'>) {\n return config.ios?.config?.googleMapsApiKey ?? null;\n}\n\nexport function setGoogleMapsApiKey(\n config: Pick<ExpoConfig, 'ios'>,\n { GMSApiKey, ...infoPlist }: InfoPlist\n): InfoPlist {\n const apiKey = getGoogleMapsApiKey(config);\n\n if (apiKey === null) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n GMSApiKey: apiKey,\n };\n}\n\nexport function addGoogleMapsAppDelegateImport(src: string): MergeResults {\n const newSrc = [];\n newSrc.push(\n '#if __has_include(<GoogleMaps/GoogleMaps.h>)',\n '#import <GoogleMaps/GoogleMaps.h>',\n '#endif'\n );\n\n return mergeContents({\n tag: 'react-native-maps-import',\n src,\n newSrc: newSrc.join('\\n'),\n anchor: /#import \"AppDelegate\\.h\"/,\n offset: 1,\n comment: '//',\n });\n}\n\nexport function removeGoogleMapsAppDelegateImport(src: string): MergeResults {\n return removeContents({\n tag: 'react-native-maps-import',\n src,\n });\n}\n\nexport function addGoogleMapsAppDelegateInit(src: string, apiKey: string): MergeResults {\n const newSrc = [];\n newSrc.push(\n '#if __has_include(<GoogleMaps/GoogleMaps.h>)',\n ` [GMSServices provideAPIKey:@\"${apiKey}\"];`,\n '#endif'\n );\n\n return mergeContents({\n tag: 'react-native-maps-init',\n src,\n newSrc: newSrc.join('\\n'),\n anchor: MATCH_INIT,\n offset: 2,\n comment: '//',\n });\n}\n\nexport function removeGoogleMapsAppDelegateInit(src: string): MergeResults {\n return removeContents({\n tag: 'react-native-maps-init',\n src,\n });\n}\n\n/**\n * @param src The contents of the Podfile.\n * @returns Podfile with Google Maps added.\n */\nexport function addMapsCocoaPods(src: string): MergeResults {\n return mergeContents({\n tag: 'react-native-maps',\n src,\n newSrc: ` pod 'react-native-google-maps', path: File.dirname(\\`node --print \"require.resolve('react-native-maps/package.json')\"\\`)`,\n anchor: /use_native_modules/,\n offset: 0,\n comment: '#',\n });\n}\n\nexport function removeMapsCocoaPods(src: string): MergeResults {\n return removeContents({\n tag: 'react-native-maps',\n src,\n });\n}\n\nfunction isReactNativeMapsInstalled(projectRoot: string): string | null {\n const resolved = resolveFrom.silent(projectRoot, 'react-native-maps/package.json');\n return resolved ? path.dirname(resolved) : null;\n}\n\nfunction isReactNativeMapsAutolinked(config: Pick<ExpoConfig, '_internal'>): boolean {\n // Only add the native code changes if we know that the package is going to be linked natively.\n // This is specifically for monorepo support where one app might have react-native-maps (adding it to the node_modules)\n // but another app will not have it installed in the package.json, causing it to not be linked natively.\n // This workaround only exists because react-native-maps doesn't have a config plugin vendored in the package.\n\n // TODO: `react-native-maps` doesn't use Expo autolinking so we cannot safely disable the module.\n return true;\n\n // return (\n // !config._internal?.autolinkedModules ||\n // config._internal.autolinkedModules.includes('react-native-maps')\n // );\n}\n\nconst withMapsCocoaPods: ConfigPlugin<{ useGoogleMaps: boolean }> = (config, { useGoogleMaps }) => {\n return withPodfile(config, async (config) => {\n // Only add the block if react-native-maps is installed in the project (best effort).\n // Generally prebuild runs after a yarn install so this should always work as expected.\n const googleMapsPath = isReactNativeMapsInstalled(config.modRequest.projectRoot);\n const isLinked = isReactNativeMapsAutolinked(config);\n debug('Is Expo Autolinked:', isLinked);\n debug('react-native-maps path:', googleMapsPath);\n\n let results: MergeResults;\n\n if (isLinked && googleMapsPath && useGoogleMaps) {\n try {\n results = addMapsCocoaPods(config.modResults.contents);\n } catch (error: any) {\n if (error.code === 'ERR_NO_MATCH') {\n throw new Error(\n `Cannot add react-native-maps to the project's ios/Podfile because it's malformed. Please report this with a copy of your project Podfile.`\n );\n }\n throw error;\n }\n } else {\n // If the package is no longer installed, then remove the block.\n results = removeMapsCocoaPods(config.modResults.contents);\n }\n\n if (results.didMerge || results.didClear) {\n config.modResults.contents = results.contents;\n }\n\n return config;\n });\n};\n\nconst withGoogleMapsAppDelegate: ConfigPlugin<{ apiKey: string | null }> = (config, { apiKey }) => {\n return withAppDelegate(config, (config) => {\n if (['objc', 'objcpp'].includes(config.modResults.language)) {\n if (\n apiKey &&\n isReactNativeMapsAutolinked(config) &&\n isReactNativeMapsInstalled(config.modRequest.projectRoot)\n ) {\n try {\n config.modResults.contents = addGoogleMapsAppDelegateImport(\n config.modResults.contents\n ).contents;\n config.modResults.contents = addGoogleMapsAppDelegateInit(\n config.modResults.contents,\n apiKey\n ).contents;\n } catch (error: any) {\n if (error.code === 'ERR_NO_MATCH') {\n throw new Error(\n `Cannot add Google Maps to the project's AppDelegate because it's malformed. Please report this with a copy of your project AppDelegate.`\n );\n }\n throw error;\n }\n } else {\n config.modResults.contents = removeGoogleMapsAppDelegateImport(\n config.modResults.contents\n ).contents;\n config.modResults.contents = removeGoogleMapsAppDelegateInit(\n config.modResults.contents\n ).contents;\n }\n } else {\n throw new Error(\n `Cannot setup Google Maps because the project AppDelegate is not a supported language: ${config.modResults.language}`\n );\n }\n return config;\n });\n};\n"],"mappings":"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"}
@@ -3,11 +3,13 @@ interface ProjectFile<L extends string = string> {
3
3
  language: L;
4
4
  contents: string;
5
5
  }
6
- type AppleLanguage = 'objc' | 'objcpp' | 'swift';
6
+ type AppleLanguage = 'objc' | 'objcpp' | 'swift' | 'rb';
7
+ export type PodfileProjectFile = ProjectFile<'rb'>;
7
8
  export type AppDelegateProjectFile = ProjectFile<AppleLanguage>;
8
9
  export declare function getAppDelegateHeaderFilePath(projectRoot: string): string;
9
10
  export declare function getAppDelegateFilePath(projectRoot: string): string;
10
11
  export declare function getAppDelegateObjcHeaderFilePath(projectRoot: string): string;
12
+ export declare function getPodfilePath(projectRoot: string): string;
11
13
  export declare function getFileInfo(filePath: string): {
12
14
  path: string;
13
15
  contents: string;
@@ -18,6 +18,7 @@ exports.getExpoPlistPath = getExpoPlistPath;
18
18
  exports.getFileInfo = getFileInfo;
19
19
  exports.getInfoPlistPath = getInfoPlistPath;
20
20
  exports.getPBXProjectPath = getPBXProjectPath;
21
+ exports.getPodfilePath = getPodfilePath;
21
22
  exports.getSourceRoot = getSourceRoot;
22
23
  exports.getSupportingPath = getSupportingPath;
23
24
  exports.getXcodeProjectPath = getXcodeProjectPath;
@@ -126,8 +127,31 @@ function getAppDelegateObjcHeaderFilePath(projectRoot) {
126
127
  }
127
128
  return using;
128
129
  }
130
+ function getPodfilePath(projectRoot) {
131
+ const [using, ...extra] = (0, _glob().sync)('ios/Podfile', {
132
+ absolute: true,
133
+ cwd: projectRoot,
134
+ ignore: ignoredPaths
135
+ });
136
+ if (!using) {
137
+ throw new (_errors().UnexpectedError)(`Could not locate a valid Podfile at root: "${projectRoot}"`);
138
+ }
139
+ if (extra.length) {
140
+ warnMultipleFiles({
141
+ tag: 'podfile',
142
+ fileName: 'Podfile',
143
+ projectRoot,
144
+ using,
145
+ extra
146
+ });
147
+ }
148
+ return using;
149
+ }
129
150
  function getLanguage(filePath) {
130
151
  const extension = path().extname(filePath);
152
+ if (!extension && path().basename(filePath) === 'Podfile') {
153
+ return 'rb';
154
+ }
131
155
  switch (extension) {
132
156
  case '.mm':
133
157
  return 'objcpp';
@@ -1 +1 @@
1
- {"version":3,"file":"Paths.js","names":["_fs","data","require","_glob","path","_interopRequireWildcard","Entitlements","_errors","_warnings","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ignoredPaths","getAppDelegateHeaderFilePath","projectRoot","using","extra","globSync","absolute","cwd","ignore","UnexpectedError","length","warnMultipleFiles","tag","fileName","getAppDelegateFilePath","getAppDelegateObjcHeaderFilePath","getLanguage","filePath","extension","extname","getFileInfo","normalize","contents","readFileSync","language","getAppDelegate","getSourceRoot","appDelegate","dirname","findSchemePaths","findSchemeNames","schemePaths","map","schemePath","parse","name","getAllXcodeProjectPaths","iosFolder","pbxprojPaths","filter","project","test","sort","b","isAInIos","isBInIos","value","join","getXcodeProjectPath","getAllPBXProjectPaths","projectPaths","paths","existsSync","getPBXProjectPath","getAllInfoPlistPaths","getInfoPlistPath","getAllEntitlementsPaths","getEntitlementsPath","getSupportingPath","resolve","basename","getExpoPlistPath","supportingPath","usingPath","relative","extraPaths","v","addWarningIOS","JSON","stringify"],"sources":["../../src/ios/Paths.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'fs';\nimport { sync as globSync } from 'glob';\nimport * as path from 'path';\n\nimport * as Entitlements from './Entitlements';\nimport { UnexpectedError } from '../utils/errors';\nimport { addWarningIOS } from '../utils/warnings';\n\nconst ignoredPaths = ['**/@(Carthage|Pods|vendor|node_modules)/**'];\n\ninterface ProjectFile<L extends string = string> {\n path: string;\n language: L;\n contents: string;\n}\n\ntype AppleLanguage = 'objc' | 'objcpp' | 'swift';\n\nexport type AppDelegateProjectFile = ProjectFile<AppleLanguage>;\n\nexport function getAppDelegateHeaderFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.h', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(\n `Could not locate a valid AppDelegate header at root: \"${projectRoot}\"`\n );\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate-header',\n fileName: 'AppDelegate',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAppDelegateFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.@(m|mm|swift)', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(`Could not locate a valid AppDelegate at root: \"${projectRoot}\"`);\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate',\n fileName: 'AppDelegate',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAppDelegateObjcHeaderFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.h', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(`Could not locate a valid AppDelegate.h at root: \"${projectRoot}\"`);\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate-objc-header',\n fileName: 'AppDelegate.h',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nfunction getLanguage(filePath: string): AppleLanguage {\n const extension = path.extname(filePath);\n switch (extension) {\n case '.mm':\n return 'objcpp';\n case '.m':\n case '.h':\n return 'objc';\n case '.swift':\n return 'swift';\n default:\n throw new UnexpectedError(`Unexpected iOS file extension: ${extension}`);\n }\n}\n\nexport function getFileInfo(filePath: string) {\n return {\n path: path.normalize(filePath),\n contents: readFileSync(filePath, 'utf8'),\n language: getLanguage(filePath),\n };\n}\n\nexport function getAppDelegate(projectRoot: string): AppDelegateProjectFile {\n const filePath = getAppDelegateFilePath(projectRoot);\n return getFileInfo(filePath);\n}\n\nexport function getSourceRoot(projectRoot: string): string {\n const appDelegate = getAppDelegate(projectRoot);\n return path.dirname(appDelegate.path);\n}\n\nexport function findSchemePaths(projectRoot: string): string[] {\n return globSync('ios/*.xcodeproj/xcshareddata/xcschemes/*.xcscheme', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n}\n\nexport function findSchemeNames(projectRoot: string): string[] {\n const schemePaths = findSchemePaths(projectRoot);\n return schemePaths.map((schemePath) => path.parse(schemePath).name);\n}\n\nexport function getAllXcodeProjectPaths(projectRoot: string): string[] {\n const iosFolder = 'ios';\n const pbxprojPaths = globSync('ios/**/*.xcodeproj', { cwd: projectRoot, ignore: ignoredPaths })\n .filter(\n (project) => !/test|example|sample/i.test(project) || path.dirname(project) === iosFolder\n )\n // sort alphabetically to ensure this works the same across different devices (Fail in CI (linux) without this)\n .sort()\n .sort((a, b) => {\n const isAInIos = path.dirname(a) === iosFolder;\n const isBInIos = path.dirname(b) === iosFolder;\n // preserve previous sort order\n if ((isAInIos && isBInIos) || (!isAInIos && !isBInIos)) {\n return 0;\n }\n return isAInIos ? -1 : 1;\n });\n\n if (!pbxprojPaths.length) {\n throw new UnexpectedError(\n `Failed to locate the ios/*.xcodeproj files relative to path \"${projectRoot}\".`\n );\n }\n return pbxprojPaths.map((value) => path.join(projectRoot, value));\n}\n\n/**\n * Get the pbxproj for the given path\n */\nexport function getXcodeProjectPath(projectRoot: string): string {\n const [using, ...extra] = getAllXcodeProjectPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'xcodeproj',\n fileName: '*.xcodeproj',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllPBXProjectPaths(projectRoot: string): string[] {\n const projectPaths = getAllXcodeProjectPaths(projectRoot);\n const paths = projectPaths\n .map((value) => path.join(value, 'project.pbxproj'))\n .filter((value) => existsSync(value));\n\n if (!paths.length) {\n throw new UnexpectedError(\n `Failed to locate the ios/*.xcodeproj/project.pbxproj files relative to path \"${projectRoot}\".`\n );\n }\n return paths;\n}\n\nexport function getPBXProjectPath(projectRoot: string): string {\n const [using, ...extra] = getAllPBXProjectPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'project-pbxproj',\n fileName: 'project.pbxproj',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllInfoPlistPaths(projectRoot: string): string[] {\n const paths = globSync('ios/*/Info.plist', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n }).sort(\n // longer name means more suffixes, we want the shortest possible one to be first.\n (a, b) => a.length - b.length\n );\n\n if (!paths.length) {\n throw new UnexpectedError(\n `Failed to locate Info.plist files relative to path \"${projectRoot}\".`\n );\n }\n return paths;\n}\n\nexport function getInfoPlistPath(projectRoot: string): string {\n const [using, ...extra] = getAllInfoPlistPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'info-plist',\n fileName: 'Info.plist',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllEntitlementsPaths(projectRoot: string): string[] {\n const paths = globSync('ios/*/*.entitlements', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n return paths;\n}\n\n/**\n * @deprecated: use Entitlements.getEntitlementsPath instead\n */\nexport function getEntitlementsPath(projectRoot: string): string | null {\n return Entitlements.getEntitlementsPath(projectRoot);\n}\n\nexport function getSupportingPath(projectRoot: string): string {\n return path.resolve(projectRoot, 'ios', path.basename(getSourceRoot(projectRoot)), 'Supporting');\n}\n\nexport function getExpoPlistPath(projectRoot: string): string {\n const supportingPath = getSupportingPath(projectRoot);\n return path.join(supportingPath, 'Expo.plist');\n}\n\nfunction warnMultipleFiles({\n tag,\n fileName,\n projectRoot,\n using,\n extra,\n}: {\n tag: string;\n fileName: string;\n projectRoot?: string;\n using: string;\n extra: string[];\n}) {\n const usingPath = projectRoot ? path.relative(projectRoot, using) : using;\n const extraPaths = projectRoot ? extra.map((v) => path.relative(projectRoot, v)) : extra;\n addWarningIOS(\n `paths-${tag}`,\n `Found multiple ${fileName} file paths, using \"${usingPath}\". Ignored paths: ${JSON.stringify(\n extraPaths\n )}`\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Paths.js","names":["_fs","data","require","_glob","path","_interopRequireWildcard","Entitlements","_errors","_warnings","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ignoredPaths","getAppDelegateHeaderFilePath","projectRoot","using","extra","globSync","absolute","cwd","ignore","UnexpectedError","length","warnMultipleFiles","tag","fileName","getAppDelegateFilePath","getAppDelegateObjcHeaderFilePath","getPodfilePath","getLanguage","filePath","extension","extname","basename","getFileInfo","normalize","contents","readFileSync","language","getAppDelegate","getSourceRoot","appDelegate","dirname","findSchemePaths","findSchemeNames","schemePaths","map","schemePath","parse","name","getAllXcodeProjectPaths","iosFolder","pbxprojPaths","filter","project","test","sort","b","isAInIos","isBInIos","value","join","getXcodeProjectPath","getAllPBXProjectPaths","projectPaths","paths","existsSync","getPBXProjectPath","getAllInfoPlistPaths","getInfoPlistPath","getAllEntitlementsPaths","getEntitlementsPath","getSupportingPath","resolve","getExpoPlistPath","supportingPath","usingPath","relative","extraPaths","v","addWarningIOS","JSON","stringify"],"sources":["../../src/ios/Paths.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'fs';\nimport { sync as globSync } from 'glob';\nimport * as path from 'path';\n\nimport * as Entitlements from './Entitlements';\nimport { UnexpectedError } from '../utils/errors';\nimport { addWarningIOS } from '../utils/warnings';\n\nconst ignoredPaths = ['**/@(Carthage|Pods|vendor|node_modules)/**'];\n\ninterface ProjectFile<L extends string = string> {\n path: string;\n language: L;\n contents: string;\n}\n\ntype AppleLanguage = 'objc' | 'objcpp' | 'swift' | 'rb';\n\nexport type PodfileProjectFile = ProjectFile<'rb'>;\nexport type AppDelegateProjectFile = ProjectFile<AppleLanguage>;\n\nexport function getAppDelegateHeaderFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.h', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(\n `Could not locate a valid AppDelegate header at root: \"${projectRoot}\"`\n );\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate-header',\n fileName: 'AppDelegate',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAppDelegateFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.@(m|mm|swift)', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(`Could not locate a valid AppDelegate at root: \"${projectRoot}\"`);\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate',\n fileName: 'AppDelegate',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAppDelegateObjcHeaderFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.h', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(`Could not locate a valid AppDelegate.h at root: \"${projectRoot}\"`);\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate-objc-header',\n fileName: 'AppDelegate.h',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getPodfilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/Podfile', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(`Could not locate a valid Podfile at root: \"${projectRoot}\"`);\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'podfile',\n fileName: 'Podfile',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nfunction getLanguage(filePath: string): AppleLanguage {\n const extension = path.extname(filePath);\n if (!extension && path.basename(filePath) === 'Podfile') {\n return 'rb';\n }\n switch (extension) {\n case '.mm':\n return 'objcpp';\n case '.m':\n case '.h':\n return 'objc';\n case '.swift':\n return 'swift';\n default:\n throw new UnexpectedError(`Unexpected iOS file extension: ${extension}`);\n }\n}\n\nexport function getFileInfo(filePath: string) {\n return {\n path: path.normalize(filePath),\n contents: readFileSync(filePath, 'utf8'),\n language: getLanguage(filePath),\n };\n}\n\nexport function getAppDelegate(projectRoot: string): AppDelegateProjectFile {\n const filePath = getAppDelegateFilePath(projectRoot);\n return getFileInfo(filePath);\n}\n\nexport function getSourceRoot(projectRoot: string): string {\n const appDelegate = getAppDelegate(projectRoot);\n return path.dirname(appDelegate.path);\n}\n\nexport function findSchemePaths(projectRoot: string): string[] {\n return globSync('ios/*.xcodeproj/xcshareddata/xcschemes/*.xcscheme', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n}\n\nexport function findSchemeNames(projectRoot: string): string[] {\n const schemePaths = findSchemePaths(projectRoot);\n return schemePaths.map((schemePath) => path.parse(schemePath).name);\n}\n\nexport function getAllXcodeProjectPaths(projectRoot: string): string[] {\n const iosFolder = 'ios';\n const pbxprojPaths = globSync('ios/**/*.xcodeproj', { cwd: projectRoot, ignore: ignoredPaths })\n .filter(\n (project) => !/test|example|sample/i.test(project) || path.dirname(project) === iosFolder\n )\n // sort alphabetically to ensure this works the same across different devices (Fail in CI (linux) without this)\n .sort()\n .sort((a, b) => {\n const isAInIos = path.dirname(a) === iosFolder;\n const isBInIos = path.dirname(b) === iosFolder;\n // preserve previous sort order\n if ((isAInIos && isBInIos) || (!isAInIos && !isBInIos)) {\n return 0;\n }\n return isAInIos ? -1 : 1;\n });\n\n if (!pbxprojPaths.length) {\n throw new UnexpectedError(\n `Failed to locate the ios/*.xcodeproj files relative to path \"${projectRoot}\".`\n );\n }\n return pbxprojPaths.map((value) => path.join(projectRoot, value));\n}\n\n/**\n * Get the pbxproj for the given path\n */\nexport function getXcodeProjectPath(projectRoot: string): string {\n const [using, ...extra] = getAllXcodeProjectPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'xcodeproj',\n fileName: '*.xcodeproj',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllPBXProjectPaths(projectRoot: string): string[] {\n const projectPaths = getAllXcodeProjectPaths(projectRoot);\n const paths = projectPaths\n .map((value) => path.join(value, 'project.pbxproj'))\n .filter((value) => existsSync(value));\n\n if (!paths.length) {\n throw new UnexpectedError(\n `Failed to locate the ios/*.xcodeproj/project.pbxproj files relative to path \"${projectRoot}\".`\n );\n }\n return paths;\n}\n\nexport function getPBXProjectPath(projectRoot: string): string {\n const [using, ...extra] = getAllPBXProjectPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'project-pbxproj',\n fileName: 'project.pbxproj',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllInfoPlistPaths(projectRoot: string): string[] {\n const paths = globSync('ios/*/Info.plist', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n }).sort(\n // longer name means more suffixes, we want the shortest possible one to be first.\n (a, b) => a.length - b.length\n );\n\n if (!paths.length) {\n throw new UnexpectedError(\n `Failed to locate Info.plist files relative to path \"${projectRoot}\".`\n );\n }\n return paths;\n}\n\nexport function getInfoPlistPath(projectRoot: string): string {\n const [using, ...extra] = getAllInfoPlistPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'info-plist',\n fileName: 'Info.plist',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllEntitlementsPaths(projectRoot: string): string[] {\n const paths = globSync('ios/*/*.entitlements', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n return paths;\n}\n\n/**\n * @deprecated: use Entitlements.getEntitlementsPath instead\n */\nexport function getEntitlementsPath(projectRoot: string): string | null {\n return Entitlements.getEntitlementsPath(projectRoot);\n}\n\nexport function getSupportingPath(projectRoot: string): string {\n return path.resolve(projectRoot, 'ios', path.basename(getSourceRoot(projectRoot)), 'Supporting');\n}\n\nexport function getExpoPlistPath(projectRoot: string): string {\n const supportingPath = getSupportingPath(projectRoot);\n return path.join(supportingPath, 'Expo.plist');\n}\n\nfunction warnMultipleFiles({\n tag,\n fileName,\n projectRoot,\n using,\n extra,\n}: {\n tag: string;\n fileName: string;\n projectRoot?: string;\n using: string;\n extra: string[];\n}) {\n const usingPath = projectRoot ? path.relative(projectRoot, using) : using;\n const extraPaths = projectRoot ? extra.map((v) => path.relative(projectRoot, v)) : extra;\n addWarningIOS(\n `paths-${tag}`,\n `Found multiple ${fileName} file paths, using \"${usingPath}\". Ignored paths: ${JSON.stringify(\n extraPaths\n )}`\n );\n}\n"],"mappings":"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"}
@@ -65,7 +65,7 @@ function setPrivacyInfo(projectConfig, privacyManifests) {
65
65
  ensureFileExists(privacyFilePath, contents);
66
66
  if (!projectConfig.modResults.hasFile(privacyFilePath)) {
67
67
  projectConfig.modResults = (0, _Xcodeproj().addResourceFileToGroup)({
68
- filepath: privacyFilePath,
68
+ filepath: _path().default.join(projectName, 'PrivacyInfo.xcprivacy'),
69
69
  groupName: projectName,
70
70
  project: projectConfig.modResults,
71
71
  isBuildFile: true,
@@ -1 +1 @@
1
- {"version":3,"file":"PrivacyInfo.js","names":["_plist","data","_interopRequireDefault","require","_fs","_path","_Xcodeproj","_","obj","__esModule","default","withPrivacyInfo","config","privacyManifests","ios","withXcodeProject","projectConfig","setPrivacyInfo","projectRoot","platformProjectRoot","modRequest","projectName","getProjectName","privacyFilePath","path","join","existingFileContent","getFileContents","parsedContent","plist","parse","mergedContent","mergePrivacyInfo","contents","build","ensureFileExists","modResults","hasFile","addResourceFileToGroup","filepath","groupName","project","isBuildFile","verbose","filePath","fs","existsSync","readFileSync","encoding","dirname","mkdirSync","recursive","writeFileSync","existing","NSPrivacyAccessedAPITypes","NSPrivacyCollectedDataTypes","NSPrivacyTracking","NSPrivacyTrackingDomains","structuredClone","forEach","newType","existingType","find","t","NSPrivacyAccessedAPIType","push","NSPrivacyAccessedAPITypeReasons","Set","concat","NSPrivacyCollectedDataType","NSPrivacyCollectedDataTypePurposes"],"sources":["../../src/ios/PrivacyInfo.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport plist from '@expo/plist';\nimport fs from 'fs';\nimport path from 'path';\nimport type { XcodeProject } from 'xcode';\n\nimport { addResourceFileToGroup, getProjectName } from './utils/Xcodeproj';\nimport { ExportedConfigWithProps, withXcodeProject } from '..';\n\nexport type PrivacyInfo = {\n NSPrivacyAccessedAPITypes: {\n NSPrivacyAccessedAPIType: string;\n NSPrivacyAccessedAPITypeReasons: string[];\n }[];\n NSPrivacyCollectedDataTypes: {\n NSPrivacyCollectedDataType: string;\n NSPrivacyCollectedDataTypeLinked: boolean;\n NSPrivacyCollectedDataTypeTracking: boolean;\n NSPrivacyCollectedDataTypePurposes: string[];\n }[];\n NSPrivacyTracking: boolean;\n NSPrivacyTrackingDomains: string[];\n};\n\nexport function withPrivacyInfo(config: ExpoConfig): ExpoConfig {\n const privacyManifests = config.ios?.privacyManifests;\n if (!privacyManifests) {\n return config;\n }\n\n return withXcodeProject(config, (projectConfig: ExportedConfigWithProps<XcodeProject>) => {\n return setPrivacyInfo(projectConfig, privacyManifests);\n });\n}\n\nexport function setPrivacyInfo(\n projectConfig: ExportedConfigWithProps<XcodeProject>,\n privacyManifests: Partial<PrivacyInfo>\n) {\n const { projectRoot, platformProjectRoot } = projectConfig.modRequest;\n\n const projectName = getProjectName(projectRoot);\n\n const privacyFilePath = path.join(platformProjectRoot, projectName, 'PrivacyInfo.xcprivacy');\n\n const existingFileContent = getFileContents(privacyFilePath);\n\n const parsedContent = existingFileContent ? plist.parse(existingFileContent) : {};\n const mergedContent = mergePrivacyInfo(parsedContent, privacyManifests);\n const contents = plist.build(mergedContent);\n\n ensureFileExists(privacyFilePath, contents);\n\n if (!projectConfig.modResults.hasFile(privacyFilePath)) {\n projectConfig.modResults = addResourceFileToGroup({\n filepath: privacyFilePath,\n groupName: projectName,\n project: projectConfig.modResults,\n isBuildFile: true,\n verbose: true,\n });\n }\n\n return projectConfig;\n}\n\nfunction getFileContents(filePath: string): string | null {\n if (!fs.existsSync(filePath)) {\n return null;\n }\n return fs.readFileSync(filePath, { encoding: 'utf8' });\n}\n\nfunction ensureFileExists(filePath: string, contents: string) {\n if (!fs.existsSync(path.dirname(filePath))) {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n }\n fs.writeFileSync(filePath, contents);\n}\n\nexport function mergePrivacyInfo(\n existing: Partial<PrivacyInfo>,\n privacyManifests: Partial<PrivacyInfo>\n): PrivacyInfo {\n let {\n NSPrivacyAccessedAPITypes = [],\n NSPrivacyCollectedDataTypes = [],\n NSPrivacyTracking = false,\n NSPrivacyTrackingDomains = [],\n } = structuredClone(existing);\n // tracking is a boolean, so we can just overwrite it\n NSPrivacyTracking = privacyManifests.NSPrivacyTracking ?? existing.NSPrivacyTracking ?? false;\n // merge the api types – for each type ensure the key is in the array, and if it is add the reason if it's not there\n privacyManifests.NSPrivacyAccessedAPITypes?.forEach((newType) => {\n const existingType = NSPrivacyAccessedAPITypes.find(\n (t) => t.NSPrivacyAccessedAPIType === newType.NSPrivacyAccessedAPIType\n );\n if (!existingType) {\n NSPrivacyAccessedAPITypes.push(newType);\n } else {\n existingType.NSPrivacyAccessedAPITypeReasons = [\n ...new Set(\n existingType?.NSPrivacyAccessedAPITypeReasons?.concat(\n ...newType.NSPrivacyAccessedAPITypeReasons\n )\n ),\n ];\n }\n });\n // merge the collected data types – for each type ensure the key is in the array, and if it is add the purposes if it's not there\n privacyManifests.NSPrivacyCollectedDataTypes?.forEach((newType) => {\n const existingType = NSPrivacyCollectedDataTypes.find(\n (t) => t.NSPrivacyCollectedDataType === newType.NSPrivacyCollectedDataType\n );\n if (!existingType) {\n NSPrivacyCollectedDataTypes.push(newType);\n } else {\n existingType.NSPrivacyCollectedDataTypePurposes = [\n ...new Set(\n existingType?.NSPrivacyCollectedDataTypePurposes?.concat(\n ...newType.NSPrivacyCollectedDataTypePurposes\n )\n ),\n ];\n }\n });\n // merge the tracking domains\n NSPrivacyTrackingDomains = [\n ...new Set(NSPrivacyTrackingDomains.concat(privacyManifests.NSPrivacyTrackingDomains ?? [])),\n ];\n\n return {\n NSPrivacyAccessedAPITypes,\n NSPrivacyCollectedDataTypes,\n NSPrivacyTracking,\n NSPrivacyTrackingDomains,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PrivacyInfo.js","names":["_plist","data","_interopRequireDefault","require","_fs","_path","_Xcodeproj","_","obj","__esModule","default","withPrivacyInfo","config","privacyManifests","ios","withXcodeProject","projectConfig","setPrivacyInfo","projectRoot","platformProjectRoot","modRequest","projectName","getProjectName","privacyFilePath","path","join","existingFileContent","getFileContents","parsedContent","plist","parse","mergedContent","mergePrivacyInfo","contents","build","ensureFileExists","modResults","hasFile","addResourceFileToGroup","filepath","groupName","project","isBuildFile","verbose","filePath","fs","existsSync","readFileSync","encoding","dirname","mkdirSync","recursive","writeFileSync","existing","NSPrivacyAccessedAPITypes","NSPrivacyCollectedDataTypes","NSPrivacyTracking","NSPrivacyTrackingDomains","structuredClone","forEach","newType","existingType","find","t","NSPrivacyAccessedAPIType","push","NSPrivacyAccessedAPITypeReasons","Set","concat","NSPrivacyCollectedDataType","NSPrivacyCollectedDataTypePurposes"],"sources":["../../src/ios/PrivacyInfo.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport plist from '@expo/plist';\nimport fs from 'fs';\nimport path from 'path';\nimport type { XcodeProject } from 'xcode';\n\nimport { addResourceFileToGroup, getProjectName } from './utils/Xcodeproj';\nimport { ExportedConfigWithProps, withXcodeProject } from '..';\n\nexport type PrivacyInfo = {\n NSPrivacyAccessedAPITypes: {\n NSPrivacyAccessedAPIType: string;\n NSPrivacyAccessedAPITypeReasons: string[];\n }[];\n NSPrivacyCollectedDataTypes: {\n NSPrivacyCollectedDataType: string;\n NSPrivacyCollectedDataTypeLinked: boolean;\n NSPrivacyCollectedDataTypeTracking: boolean;\n NSPrivacyCollectedDataTypePurposes: string[];\n }[];\n NSPrivacyTracking: boolean;\n NSPrivacyTrackingDomains: string[];\n};\n\nexport function withPrivacyInfo(config: ExpoConfig): ExpoConfig {\n const privacyManifests = config.ios?.privacyManifests;\n if (!privacyManifests) {\n return config;\n }\n\n return withXcodeProject(config, (projectConfig: ExportedConfigWithProps<XcodeProject>) => {\n return setPrivacyInfo(projectConfig, privacyManifests);\n });\n}\n\nexport function setPrivacyInfo(\n projectConfig: ExportedConfigWithProps<XcodeProject>,\n privacyManifests: Partial<PrivacyInfo>\n) {\n const { projectRoot, platformProjectRoot } = projectConfig.modRequest;\n\n const projectName = getProjectName(projectRoot);\n\n const privacyFilePath = path.join(platformProjectRoot, projectName, 'PrivacyInfo.xcprivacy');\n\n const existingFileContent = getFileContents(privacyFilePath);\n\n const parsedContent = existingFileContent ? plist.parse(existingFileContent) : {};\n const mergedContent = mergePrivacyInfo(parsedContent, privacyManifests);\n const contents = plist.build(mergedContent);\n\n ensureFileExists(privacyFilePath, contents);\n\n if (!projectConfig.modResults.hasFile(privacyFilePath)) {\n projectConfig.modResults = addResourceFileToGroup({\n filepath: path.join(projectName, 'PrivacyInfo.xcprivacy'),\n groupName: projectName,\n project: projectConfig.modResults,\n isBuildFile: true,\n verbose: true,\n });\n }\n\n return projectConfig;\n}\n\nfunction getFileContents(filePath: string): string | null {\n if (!fs.existsSync(filePath)) {\n return null;\n }\n return fs.readFileSync(filePath, { encoding: 'utf8' });\n}\n\nfunction ensureFileExists(filePath: string, contents: string) {\n if (!fs.existsSync(path.dirname(filePath))) {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n }\n fs.writeFileSync(filePath, contents);\n}\n\nexport function mergePrivacyInfo(\n existing: Partial<PrivacyInfo>,\n privacyManifests: Partial<PrivacyInfo>\n): PrivacyInfo {\n let {\n NSPrivacyAccessedAPITypes = [],\n NSPrivacyCollectedDataTypes = [],\n NSPrivacyTracking = false,\n NSPrivacyTrackingDomains = [],\n } = structuredClone(existing);\n // tracking is a boolean, so we can just overwrite it\n NSPrivacyTracking = privacyManifests.NSPrivacyTracking ?? existing.NSPrivacyTracking ?? false;\n // merge the api types – for each type ensure the key is in the array, and if it is add the reason if it's not there\n privacyManifests.NSPrivacyAccessedAPITypes?.forEach((newType) => {\n const existingType = NSPrivacyAccessedAPITypes.find(\n (t) => t.NSPrivacyAccessedAPIType === newType.NSPrivacyAccessedAPIType\n );\n if (!existingType) {\n NSPrivacyAccessedAPITypes.push(newType);\n } else {\n existingType.NSPrivacyAccessedAPITypeReasons = [\n ...new Set(\n existingType?.NSPrivacyAccessedAPITypeReasons?.concat(\n ...newType.NSPrivacyAccessedAPITypeReasons\n )\n ),\n ];\n }\n });\n // merge the collected data types – for each type ensure the key is in the array, and if it is add the purposes if it's not there\n privacyManifests.NSPrivacyCollectedDataTypes?.forEach((newType) => {\n const existingType = NSPrivacyCollectedDataTypes.find(\n (t) => t.NSPrivacyCollectedDataType === newType.NSPrivacyCollectedDataType\n );\n if (!existingType) {\n NSPrivacyCollectedDataTypes.push(newType);\n } else {\n existingType.NSPrivacyCollectedDataTypePurposes = [\n ...new Set(\n existingType?.NSPrivacyCollectedDataTypePurposes?.concat(\n ...newType.NSPrivacyCollectedDataTypePurposes\n )\n ),\n ];\n }\n });\n // merge the tracking domains\n NSPrivacyTrackingDomains = [\n ...new Set(NSPrivacyTrackingDomains.concat(privacyManifests.NSPrivacyTrackingDomains ?? [])),\n ];\n\n return {\n NSPrivacyAccessedAPITypes,\n NSPrivacyCollectedDataTypes,\n NSPrivacyTracking,\n NSPrivacyTrackingDomains,\n };\n}\n"],"mappings":"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"}
@@ -3,7 +3,7 @@ import type { JSONObject } from '@expo/json-file';
3
3
  import type { XcodeProject } from 'xcode';
4
4
  import type { ConfigPlugin, Mod } from '../Plugin.types';
5
5
  import type { ExpoPlist, InfoPlist } from '../ios/IosConfig.types';
6
- import type { AppDelegateProjectFile } from '../ios/Paths';
6
+ import type { AppDelegateProjectFile, PodfileProjectFile } from '../ios/Paths';
7
7
  type MutateInfoPlistAction = (expo: ExpoConfig, infoPlist: InfoPlist) => Promise<InfoPlist> | InfoPlist;
8
8
  /**
9
9
  * Helper method for creating mods from existing config functions.
@@ -60,6 +60,13 @@ export declare const withExpoPlist: ConfigPlugin<Mod<ExpoPlist>>;
60
60
  * @param action
61
61
  */
62
62
  export declare const withXcodeProject: ConfigPlugin<Mod<XcodeProject>>;
63
+ /**
64
+ * Provides the Podfile for modification.
65
+ *
66
+ * @param config
67
+ * @param action
68
+ */
69
+ export declare const withPodfile: ConfigPlugin<Mod<PodfileProjectFile>>;
63
70
  /**
64
71
  * Provides the Podfile.properties.json for modification.
65
72
  *
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.createEntitlementsPlugin = createEntitlementsPlugin;
7
7
  exports.createInfoPlistPlugin = createInfoPlistPlugin;
8
8
  exports.createInfoPlistPluginWithPropertyGuard = createInfoPlistPluginWithPropertyGuard;
9
- exports.withXcodeProject = exports.withPodfileProperties = exports.withInfoPlist = exports.withExpoPlist = exports.withEntitlementsPlist = exports.withAppDelegate = void 0;
9
+ exports.withXcodeProject = exports.withPodfileProperties = exports.withPodfile = exports.withInfoPlist = exports.withExpoPlist = exports.withEntitlementsPlist = exports.withAppDelegate = void 0;
10
10
  function _withMod() {
11
11
  const data = require("./withMod");
12
12
  _withMod = function () {
@@ -173,12 +173,27 @@ const withXcodeProject = (config, action) => {
173
173
  };
174
174
 
175
175
  /**
176
- * Provides the Podfile.properties.json for modification.
176
+ * Provides the Podfile for modification.
177
177
  *
178
178
  * @param config
179
179
  * @param action
180
180
  */
181
181
  exports.withXcodeProject = withXcodeProject;
182
+ const withPodfile = (config, action) => {
183
+ return (0, _withMod().withMod)(config, {
184
+ platform: 'ios',
185
+ mod: 'podfile',
186
+ action
187
+ });
188
+ };
189
+
190
+ /**
191
+ * Provides the Podfile.properties.json for modification.
192
+ *
193
+ * @param config
194
+ * @param action
195
+ */
196
+ exports.withPodfile = withPodfile;
182
197
  const withPodfileProperties = (config, action) => {
183
198
  return (0, _withMod().withMod)(config, {
184
199
  platform: 'ios',
@@ -1 +1 @@
1
- {"version":3,"file":"ios-plugins.js","names":["_withMod","data","require","_obj","_warnings","createInfoPlistPlugin","action","name","withUnknown","config","withInfoPlist","modResults","Object","defineProperty","value","createInfoPlistPluginWithPropertyGuard","settings","existingProperty","expoPropertyGetter","get","expoConfigProperty","modRawConfig","ios","infoPlist","infoPlistProperty","undefined","addWarningIOS","createEntitlementsPlugin","withEntitlementsPlist","withAppDelegate","withMod","platform","mod","exports","entitlements","withExpoPlist","withXcodeProject","withPodfileProperties"],"sources":["../../src/plugins/ios-plugins.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\nimport type { JSONObject } from '@expo/json-file';\nimport type { XcodeProject } from 'xcode';\n\nimport { withMod } from './withMod';\nimport type { ConfigPlugin, Mod } from '../Plugin.types';\nimport type { ExpoPlist, InfoPlist } from '../ios/IosConfig.types';\nimport type { AppDelegateProjectFile } from '../ios/Paths';\nimport { get } from '../utils/obj';\nimport { addWarningIOS } from '../utils/warnings';\n\ntype MutateInfoPlistAction = (\n expo: ExpoConfig,\n infoPlist: InfoPlist\n) => Promise<InfoPlist> | InfoPlist;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createInfoPlistPlugin(action: MutateInfoPlistAction, name?: string): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\nexport function createInfoPlistPluginWithPropertyGuard(\n action: MutateInfoPlistAction,\n settings: {\n infoPlistProperty: string;\n expoConfigProperty: string;\n expoPropertyGetter?: (config: ExpoConfig) => string;\n },\n name?: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n const existingProperty = settings.expoPropertyGetter\n ? settings.expoPropertyGetter(config)\n : get(config, settings.expoConfigProperty);\n // If the user explicitly sets a value in the infoPlist, we should respect that.\n if (config.modRawConfig.ios?.infoPlist?.[settings.infoPlistProperty] === undefined) {\n config.modResults = await action(config, config.modResults);\n } else if (existingProperty !== undefined) {\n // Only warn if there is a conflict.\n addWarningIOS(\n settings.expoConfigProperty,\n `\"ios.infoPlist.${settings.infoPlistProperty}\" is set in the config. Ignoring abstract property \"${settings.expoConfigProperty}\": ${existingProperty}`\n );\n }\n\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\ntype MutateEntitlementsPlistAction = (expo: ExpoConfig, entitlements: JSONObject) => JSONObject;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createEntitlementsPlugin(\n action: MutateEntitlementsPlistAction,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withEntitlementsPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * Provides the AppDelegate file for modification.\n *\n * @param config\n * @param action\n */\nexport const withAppDelegate: ConfigPlugin<Mod<AppDelegateProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'appDelegate',\n action,\n });\n};\n\n/**\n * Provides the Info.plist file for modification.\n * Keeps the config's expo.ios.infoPlist object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withInfoPlist: ConfigPlugin<Mod<InfoPlist>> = (config, action) => {\n return withMod<InfoPlist>(config, {\n platform: 'ios',\n mod: 'infoPlist',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the main .entitlements file for modification.\n * Keeps the config's expo.ios.entitlements object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withEntitlementsPlist: ConfigPlugin<Mod<JSONObject>> = (config, action) => {\n return withMod<JSONObject>(config, {\n platform: 'ios',\n mod: 'entitlements',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the Expo.plist for modification.\n *\n * @param config\n * @param action\n */\nexport const withExpoPlist: ConfigPlugin<Mod<ExpoPlist>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'expoPlist',\n action,\n });\n};\n\n/**\n * Provides the main .xcodeproj for modification.\n *\n * @param config\n * @param action\n */\nexport const withXcodeProject: ConfigPlugin<Mod<XcodeProject>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'xcodeproj',\n action,\n });\n};\n\n/**\n * Provides the Podfile.properties.json for modification.\n *\n * @param config\n * @param action\n */\nexport const withPodfileProperties: ConfigPlugin<Mod<Record<string, string>>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'podfileProperties',\n action,\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ios-plugins.js","names":["_withMod","data","require","_obj","_warnings","createInfoPlistPlugin","action","name","withUnknown","config","withInfoPlist","modResults","Object","defineProperty","value","createInfoPlistPluginWithPropertyGuard","settings","existingProperty","expoPropertyGetter","get","expoConfigProperty","modRawConfig","ios","infoPlist","infoPlistProperty","undefined","addWarningIOS","createEntitlementsPlugin","withEntitlementsPlist","withAppDelegate","withMod","platform","mod","exports","entitlements","withExpoPlist","withXcodeProject","withPodfile","withPodfileProperties"],"sources":["../../src/plugins/ios-plugins.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\nimport type { JSONObject } from '@expo/json-file';\nimport type { XcodeProject } from 'xcode';\n\nimport { withMod } from './withMod';\nimport type { ConfigPlugin, Mod } from '../Plugin.types';\nimport type { ExpoPlist, InfoPlist } from '../ios/IosConfig.types';\nimport type { AppDelegateProjectFile, PodfileProjectFile } from '../ios/Paths';\nimport { get } from '../utils/obj';\nimport { addWarningIOS } from '../utils/warnings';\n\ntype MutateInfoPlistAction = (\n expo: ExpoConfig,\n infoPlist: InfoPlist\n) => Promise<InfoPlist> | InfoPlist;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createInfoPlistPlugin(action: MutateInfoPlistAction, name?: string): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\nexport function createInfoPlistPluginWithPropertyGuard(\n action: MutateInfoPlistAction,\n settings: {\n infoPlistProperty: string;\n expoConfigProperty: string;\n expoPropertyGetter?: (config: ExpoConfig) => string;\n },\n name?: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n const existingProperty = settings.expoPropertyGetter\n ? settings.expoPropertyGetter(config)\n : get(config, settings.expoConfigProperty);\n // If the user explicitly sets a value in the infoPlist, we should respect that.\n if (config.modRawConfig.ios?.infoPlist?.[settings.infoPlistProperty] === undefined) {\n config.modResults = await action(config, config.modResults);\n } else if (existingProperty !== undefined) {\n // Only warn if there is a conflict.\n addWarningIOS(\n settings.expoConfigProperty,\n `\"ios.infoPlist.${settings.infoPlistProperty}\" is set in the config. Ignoring abstract property \"${settings.expoConfigProperty}\": ${existingProperty}`\n );\n }\n\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\ntype MutateEntitlementsPlistAction = (expo: ExpoConfig, entitlements: JSONObject) => JSONObject;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createEntitlementsPlugin(\n action: MutateEntitlementsPlistAction,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withEntitlementsPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * Provides the AppDelegate file for modification.\n *\n * @param config\n * @param action\n */\nexport const withAppDelegate: ConfigPlugin<Mod<AppDelegateProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'appDelegate',\n action,\n });\n};\n\n/**\n * Provides the Info.plist file for modification.\n * Keeps the config's expo.ios.infoPlist object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withInfoPlist: ConfigPlugin<Mod<InfoPlist>> = (config, action) => {\n return withMod<InfoPlist>(config, {\n platform: 'ios',\n mod: 'infoPlist',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the main .entitlements file for modification.\n * Keeps the config's expo.ios.entitlements object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withEntitlementsPlist: ConfigPlugin<Mod<JSONObject>> = (config, action) => {\n return withMod<JSONObject>(config, {\n platform: 'ios',\n mod: 'entitlements',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the Expo.plist for modification.\n *\n * @param config\n * @param action\n */\nexport const withExpoPlist: ConfigPlugin<Mod<ExpoPlist>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'expoPlist',\n action,\n });\n};\n\n/**\n * Provides the main .xcodeproj for modification.\n *\n * @param config\n * @param action\n */\nexport const withXcodeProject: ConfigPlugin<Mod<XcodeProject>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'xcodeproj',\n action,\n });\n};\n\n/**\n * Provides the Podfile for modification.\n *\n * @param config\n * @param action\n */\nexport const withPodfile: ConfigPlugin<Mod<PodfileProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'podfile',\n action,\n });\n};\n\n/**\n * Provides the Podfile.properties.json for modification.\n *\n * @param config\n * @param action\n */\nexport const withPodfileProperties: ConfigPlugin<Mod<Record<string, string>>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'podfileProperties',\n action,\n });\n};\n"],"mappings":"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"}
@@ -12,6 +12,7 @@ declare const defaultProviders: {
12
12
  xcodeproj: import("./createBaseMod").BaseModProviderMethods<xcode.XcodeProject, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
13
13
  infoPlist: import("./createBaseMod").BaseModProviderMethods<InfoPlist, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
14
14
  entitlements: import("./createBaseMod").BaseModProviderMethods<JSONObject, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
15
+ podfile: import("./createBaseMod").BaseModProviderMethods<Paths.PodfileProjectFile, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
15
16
  podfileProperties: import("./createBaseMod").BaseModProviderMethods<Record<string, JSONValue>, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
16
17
  };
17
18
  type IosDefaultProviders = typeof defaultProviders;
@@ -26,6 +27,7 @@ export declare function getIosModFileProviders(): {
26
27
  xcodeproj: import("./createBaseMod").BaseModProviderMethods<xcode.XcodeProject, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
27
28
  infoPlist: import("./createBaseMod").BaseModProviderMethods<InfoPlist, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
28
29
  entitlements: import("./createBaseMod").BaseModProviderMethods<JSONObject, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
30
+ podfile: import("./createBaseMod").BaseModProviderMethods<Paths.PodfileProjectFile, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
29
31
  podfileProperties: import("./createBaseMod").BaseModProviderMethods<Record<string, JSONValue>, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
30
32
  };
31
33
  export {};
@@ -375,6 +375,27 @@ const defaultProviders = {
375
375
  await writeFile(filePath, _plist().default.build((0, _sortObject().sortObject)(config.modResults)));
376
376
  }
377
377
  }),
378
+ podfile: (0, _createBaseMod().provider)({
379
+ getFilePath({
380
+ modRequest: {
381
+ projectRoot
382
+ }
383
+ }) {
384
+ return _ios().Paths.getPodfilePath(projectRoot);
385
+ },
386
+ // @ts-expect-error
387
+ async read(filePath) {
388
+ // Note(cedric): this file is ruby, which is a 1-value subset of AppleLanguage and fails the type check
389
+ return _ios().Paths.getFileInfo(filePath);
390
+ },
391
+ async write(filePath, {
392
+ modResults: {
393
+ contents
394
+ }
395
+ }) {
396
+ await writeFile(filePath, contents);
397
+ }
398
+ }),
378
399
  // Append a rule to supply Podfile.properties.json data to mods on `mods.ios.podfileProperties`
379
400
  podfileProperties: (0, _createBaseMod().provider)({
380
401
  isIntrospective: true,
@@ -1 +1 @@
1
- {"version":3,"file":"withIosBaseMods.js","names":["_jsonFile","data","_interopRequireDefault","require","_plist","_assert","_fs","_interopRequireWildcard","_path","_xcode","_createBaseMod","_ios","_Entitlements","_Xcodeproj","_getInfoPlistPath","_modules","_sortObject","_warnings","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","readFile","writeFile","promises","getEntitlementsPlistTemplate","getInfoPlistTemplate","CFBundleDevelopmentRegion","CFBundleExecutable","CFBundleIdentifier","CFBundleName","CFBundlePackageType","CFBundleInfoDictionaryVersion","CFBundleSignature","LSRequiresIPhoneOS","NSAppTransportSecurity","NSAllowsArbitraryLoads","NSExceptionDomains","localhost","NSExceptionAllowsInsecureHTTPLoads","UILaunchStoryboardName","UIRequiredDeviceCapabilities","UIViewControllerBasedStatusBarAppearance","UIStatusBarStyle","CADisableMinimumFrameDurationOnPhone","defaultProviders","dangerous","provider","getFilePath","read","write","finalized","appDelegate","modRequest","projectRoot","Paths","getAppDelegateFilePath","filePath","getFileInfo","modResults","contents","expoPlist","isIntrospective","platformProjectRoot","projectName","supportingDirectory","path","join","resolve","introspect","plist","parse","error","build","sortObject","xcodeproj","getPBXProjectPath","project","xcode","parseSync","writeSync","infoPlist","config","getPbxproj","infoPlistBuildProperty","getInfoPlistPathFromPbxproj","infoPlistPath","fileExists","addWarningIOS","getInfoPlistPath","ios","assert","entitlements","ensureApplicationTargetEntitlementsFileConfigured","Entitlements","getEntitlementsPath","ignoreExistingNativeFiles","fs","existsSync","podfileProperties","results","JsonFile","readAsync","writeAsync","withIosBaseMods","providers","props","withGeneratedBaseMods","platform","getIosModFileProviders"],"sources":["../../src/plugins/withIosBaseMods.ts"],"sourcesContent":["import JsonFile, { JSONObject, JSONValue } from '@expo/json-file';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport fs, { promises } from 'fs';\nimport path from 'path';\nimport xcode, { XcodeProject } from 'xcode';\n\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Entitlements, Paths } from '../ios';\nimport { ensureApplicationTargetEntitlementsFileConfigured } from '../ios/Entitlements';\nimport { InfoPlist } from '../ios/IosConfig.types';\nimport { getPbxproj } from '../ios/utils/Xcodeproj';\nimport { getInfoPlistPathFromPbxproj } from '../ios/utils/getInfoPlistPath';\nimport { fileExists } from '../utils/modules';\nimport { sortObject } from '../utils/sortObject';\nimport { addWarningIOS } from '../utils/warnings';\n\nconst { readFile, writeFile } = promises;\n\ntype IosModName = keyof Required<ModConfig>['ios'];\n\nfunction getEntitlementsPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {};\n}\n\nfunction getInfoPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {\n CFBundleDevelopmentRegion: '$(DEVELOPMENT_LANGUAGE)',\n CFBundleExecutable: '$(EXECUTABLE_NAME)',\n CFBundleIdentifier: '$(PRODUCT_BUNDLE_IDENTIFIER)',\n CFBundleName: '$(PRODUCT_NAME)',\n CFBundlePackageType: '$(PRODUCT_BUNDLE_PACKAGE_TYPE)',\n CFBundleInfoDictionaryVersion: '6.0',\n CFBundleSignature: '????',\n LSRequiresIPhoneOS: true,\n NSAppTransportSecurity: {\n NSAllowsArbitraryLoads: true,\n NSExceptionDomains: {\n localhost: {\n NSExceptionAllowsInsecureHTTPLoads: true,\n },\n },\n },\n UILaunchStoryboardName: 'SplashScreen',\n UIRequiredDeviceCapabilities: ['armv7'],\n UIViewControllerBasedStatusBarAppearance: false,\n UIStatusBarStyle: 'UIStatusBarStyleDefault',\n CADisableMinimumFrameDurationOnPhone: true,\n };\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return {};\n },\n async write() {},\n }),\n finalized: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return {};\n },\n async write() {},\n }),\n // Append a rule to supply AppDelegate data to mods on `mods.ios.appDelegate`\n appDelegate: provider<Paths.AppDelegateProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n // TODO: Get application AppDelegate file from pbxproj.\n return Paths.getAppDelegateFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath: string, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n // Append a rule to supply Expo.plist data to mods on `mods.ios.expoPlist`\n expoPlist: provider<JSONObject>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot, projectName } }) {\n const supportingDirectory = path.join(platformProjectRoot, projectName!, 'Supporting');\n return path.resolve(supportingDirectory, 'Expo.plist');\n },\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return plist.parse(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (introspect) {\n return {};\n }\n throw error;\n }\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await writeFile(filePath, plist.build(sortObject(modResults)));\n },\n }),\n // Append a rule to supply .xcodeproj data to mods on `mods.ios.xcodeproj`\n xcodeproj: provider<XcodeProject>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getPBXProjectPath(projectRoot);\n },\n async read(filePath) {\n const project = xcode.project(filePath);\n project.parseSync();\n return project;\n },\n async write(filePath, { modResults }) {\n await writeFile(filePath, modResults.writeSync());\n },\n }),\n // Append a rule to supply Info.plist data to mods on `mods.ios.infoPlist`\n infoPlist: provider<InfoPlist, ForwardedBaseModOptions>({\n isIntrospective: true,\n async getFilePath(config) {\n let project: xcode.XcodeProject | null = null;\n try {\n project = getPbxproj(config.modRequest.projectRoot);\n } catch {\n // noop\n }\n\n // Only check / warn if a project actually exists, this'll provide\n // more accurate warning messages for users in managed projects.\n if (project) {\n const infoPlistBuildProperty = getInfoPlistPathFromPbxproj(project);\n\n if (infoPlistBuildProperty) {\n //: [root]/myapp/ios/MyApp/Info.plist\n const infoPlistPath = path.join(\n //: myapp/ios\n config.modRequest.platformProjectRoot,\n //: MyApp/Info.plist\n infoPlistBuildProperty\n );\n if (fileExists(infoPlistPath)) {\n return infoPlistPath;\n }\n addWarningIOS(\n 'mods.ios.infoPlist',\n `Info.plist file linked to Xcode project does not exist: ${infoPlistPath}`\n );\n } else {\n addWarningIOS('mods.ios.infoPlist', 'Failed to find Info.plist linked to Xcode project.');\n }\n }\n try {\n // Fallback on glob...\n return await Paths.getInfoPlistPath(config.modRequest.projectRoot);\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n async read(filePath, config) {\n // Apply all of the Info.plist values to the expo.ios.infoPlist object\n // TODO: Remove this in favor of just overwriting the Info.plist with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.infoPlist) config.ios.infoPlist = {};\n\n let modResults: InfoPlist;\n try {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Info.plist is empty');\n modResults = plist.parse(contents) as InfoPlist;\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the infoPlist object from the Expo config.\n modResults = getInfoPlistTemplate();\n }\n\n config.ios.infoPlist = {\n ...(modResults || {}),\n ...config.ios.infoPlist,\n };\n\n return config.ios.infoPlist!;\n },\n async write(filePath, config) {\n // Update the contents of the static infoPlist object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n // Append a rule to supply .entitlements data to mods on `mods.ios.entitlements`\n entitlements: provider<JSONObject, ForwardedBaseModOptions>({\n isIntrospective: true,\n\n async getFilePath(config) {\n try {\n ensureApplicationTargetEntitlementsFileConfigured(config.modRequest.projectRoot);\n return Entitlements.getEntitlementsPath(config.modRequest.projectRoot) ?? '';\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n\n async read(filePath, config) {\n let modResults: JSONObject;\n try {\n if (!config.modRequest.ignoreExistingNativeFiles && fs.existsSync(filePath)) {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Entitlements plist is empty');\n modResults = plist.parse(contents);\n } else {\n modResults = getEntitlementsPlistTemplate();\n }\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the template file.\n modResults = getEntitlementsPlistTemplate();\n }\n\n // Apply all of the .entitlements values to the expo.ios.entitlements object\n // TODO: Remove this in favor of just overwriting the .entitlements with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.entitlements) config.ios.entitlements = {};\n\n config.ios.entitlements = {\n ...(modResults || {}),\n ...config.ios.entitlements,\n };\n\n return config.ios.entitlements!;\n },\n\n async write(filePath, config) {\n // Update the contents of the static entitlements object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n\n // Append a rule to supply Podfile.properties.json data to mods on `mods.ios.podfileProperties`\n podfileProperties: provider<Record<string, JSONValue>>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.resolve(platformProjectRoot, 'Podfile.properties.json');\n },\n async read(filePath) {\n let results: Record<string, JSONValue> = {};\n try {\n results = await JsonFile.readAsync(filePath);\n } catch {}\n return results;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await JsonFile.writeAsync(filePath, modResults);\n },\n }),\n};\n\ntype IosDefaultProviders = typeof defaultProviders;\n\nexport function withIosBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<IosDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<IosModName>(config, {\n ...props,\n platform: 'ios',\n providers: providers ?? getIosModFileProviders(),\n });\n}\n\nexport function getIosModFileProviders() {\n return defaultProviders;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"withIosBaseMods.js","names":["_jsonFile","data","_interopRequireDefault","require","_plist","_assert","_fs","_interopRequireWildcard","_path","_xcode","_createBaseMod","_ios","_Entitlements","_Xcodeproj","_getInfoPlistPath","_modules","_sortObject","_warnings","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","readFile","writeFile","promises","getEntitlementsPlistTemplate","getInfoPlistTemplate","CFBundleDevelopmentRegion","CFBundleExecutable","CFBundleIdentifier","CFBundleName","CFBundlePackageType","CFBundleInfoDictionaryVersion","CFBundleSignature","LSRequiresIPhoneOS","NSAppTransportSecurity","NSAllowsArbitraryLoads","NSExceptionDomains","localhost","NSExceptionAllowsInsecureHTTPLoads","UILaunchStoryboardName","UIRequiredDeviceCapabilities","UIViewControllerBasedStatusBarAppearance","UIStatusBarStyle","CADisableMinimumFrameDurationOnPhone","defaultProviders","dangerous","provider","getFilePath","read","write","finalized","appDelegate","modRequest","projectRoot","Paths","getAppDelegateFilePath","filePath","getFileInfo","modResults","contents","expoPlist","isIntrospective","platformProjectRoot","projectName","supportingDirectory","path","join","resolve","introspect","plist","parse","error","build","sortObject","xcodeproj","getPBXProjectPath","project","xcode","parseSync","writeSync","infoPlist","config","getPbxproj","infoPlistBuildProperty","getInfoPlistPathFromPbxproj","infoPlistPath","fileExists","addWarningIOS","getInfoPlistPath","ios","assert","entitlements","ensureApplicationTargetEntitlementsFileConfigured","Entitlements","getEntitlementsPath","ignoreExistingNativeFiles","fs","existsSync","podfile","getPodfilePath","podfileProperties","results","JsonFile","readAsync","writeAsync","withIosBaseMods","providers","props","withGeneratedBaseMods","platform","getIosModFileProviders"],"sources":["../../src/plugins/withIosBaseMods.ts"],"sourcesContent":["import JsonFile, { JSONObject, JSONValue } from '@expo/json-file';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport fs, { promises } from 'fs';\nimport path from 'path';\nimport xcode, { XcodeProject } from 'xcode';\n\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Entitlements, Paths } from '../ios';\nimport { ensureApplicationTargetEntitlementsFileConfigured } from '../ios/Entitlements';\nimport { InfoPlist } from '../ios/IosConfig.types';\nimport { getPbxproj } from '../ios/utils/Xcodeproj';\nimport { getInfoPlistPathFromPbxproj } from '../ios/utils/getInfoPlistPath';\nimport { fileExists } from '../utils/modules';\nimport { sortObject } from '../utils/sortObject';\nimport { addWarningIOS } from '../utils/warnings';\n\nconst { readFile, writeFile } = promises;\n\ntype IosModName = keyof Required<ModConfig>['ios'];\n\nfunction getEntitlementsPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {};\n}\n\nfunction getInfoPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {\n CFBundleDevelopmentRegion: '$(DEVELOPMENT_LANGUAGE)',\n CFBundleExecutable: '$(EXECUTABLE_NAME)',\n CFBundleIdentifier: '$(PRODUCT_BUNDLE_IDENTIFIER)',\n CFBundleName: '$(PRODUCT_NAME)',\n CFBundlePackageType: '$(PRODUCT_BUNDLE_PACKAGE_TYPE)',\n CFBundleInfoDictionaryVersion: '6.0',\n CFBundleSignature: '????',\n LSRequiresIPhoneOS: true,\n NSAppTransportSecurity: {\n NSAllowsArbitraryLoads: true,\n NSExceptionDomains: {\n localhost: {\n NSExceptionAllowsInsecureHTTPLoads: true,\n },\n },\n },\n UILaunchStoryboardName: 'SplashScreen',\n UIRequiredDeviceCapabilities: ['armv7'],\n UIViewControllerBasedStatusBarAppearance: false,\n UIStatusBarStyle: 'UIStatusBarStyleDefault',\n CADisableMinimumFrameDurationOnPhone: true,\n };\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return {};\n },\n async write() {},\n }),\n finalized: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return {};\n },\n async write() {},\n }),\n // Append a rule to supply AppDelegate data to mods on `mods.ios.appDelegate`\n appDelegate: provider<Paths.AppDelegateProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n // TODO: Get application AppDelegate file from pbxproj.\n return Paths.getAppDelegateFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath: string, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n // Append a rule to supply Expo.plist data to mods on `mods.ios.expoPlist`\n expoPlist: provider<JSONObject>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot, projectName } }) {\n const supportingDirectory = path.join(platformProjectRoot, projectName!, 'Supporting');\n return path.resolve(supportingDirectory, 'Expo.plist');\n },\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return plist.parse(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (introspect) {\n return {};\n }\n throw error;\n }\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await writeFile(filePath, plist.build(sortObject(modResults)));\n },\n }),\n // Append a rule to supply .xcodeproj data to mods on `mods.ios.xcodeproj`\n xcodeproj: provider<XcodeProject>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getPBXProjectPath(projectRoot);\n },\n async read(filePath) {\n const project = xcode.project(filePath);\n project.parseSync();\n return project;\n },\n async write(filePath, { modResults }) {\n await writeFile(filePath, modResults.writeSync());\n },\n }),\n // Append a rule to supply Info.plist data to mods on `mods.ios.infoPlist`\n infoPlist: provider<InfoPlist, ForwardedBaseModOptions>({\n isIntrospective: true,\n async getFilePath(config) {\n let project: xcode.XcodeProject | null = null;\n try {\n project = getPbxproj(config.modRequest.projectRoot);\n } catch {\n // noop\n }\n\n // Only check / warn if a project actually exists, this'll provide\n // more accurate warning messages for users in managed projects.\n if (project) {\n const infoPlistBuildProperty = getInfoPlistPathFromPbxproj(project);\n\n if (infoPlistBuildProperty) {\n //: [root]/myapp/ios/MyApp/Info.plist\n const infoPlistPath = path.join(\n //: myapp/ios\n config.modRequest.platformProjectRoot,\n //: MyApp/Info.plist\n infoPlistBuildProperty\n );\n if (fileExists(infoPlistPath)) {\n return infoPlistPath;\n }\n addWarningIOS(\n 'mods.ios.infoPlist',\n `Info.plist file linked to Xcode project does not exist: ${infoPlistPath}`\n );\n } else {\n addWarningIOS('mods.ios.infoPlist', 'Failed to find Info.plist linked to Xcode project.');\n }\n }\n try {\n // Fallback on glob...\n return await Paths.getInfoPlistPath(config.modRequest.projectRoot);\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n async read(filePath, config) {\n // Apply all of the Info.plist values to the expo.ios.infoPlist object\n // TODO: Remove this in favor of just overwriting the Info.plist with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.infoPlist) config.ios.infoPlist = {};\n\n let modResults: InfoPlist;\n try {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Info.plist is empty');\n modResults = plist.parse(contents) as InfoPlist;\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the infoPlist object from the Expo config.\n modResults = getInfoPlistTemplate();\n }\n\n config.ios.infoPlist = {\n ...(modResults || {}),\n ...config.ios.infoPlist,\n };\n\n return config.ios.infoPlist!;\n },\n async write(filePath, config) {\n // Update the contents of the static infoPlist object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n // Append a rule to supply .entitlements data to mods on `mods.ios.entitlements`\n entitlements: provider<JSONObject, ForwardedBaseModOptions>({\n isIntrospective: true,\n\n async getFilePath(config) {\n try {\n ensureApplicationTargetEntitlementsFileConfigured(config.modRequest.projectRoot);\n return Entitlements.getEntitlementsPath(config.modRequest.projectRoot) ?? '';\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n\n async read(filePath, config) {\n let modResults: JSONObject;\n try {\n if (!config.modRequest.ignoreExistingNativeFiles && fs.existsSync(filePath)) {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Entitlements plist is empty');\n modResults = plist.parse(contents);\n } else {\n modResults = getEntitlementsPlistTemplate();\n }\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the template file.\n modResults = getEntitlementsPlistTemplate();\n }\n\n // Apply all of the .entitlements values to the expo.ios.entitlements object\n // TODO: Remove this in favor of just overwriting the .entitlements with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.entitlements) config.ios.entitlements = {};\n\n config.ios.entitlements = {\n ...(modResults || {}),\n ...config.ios.entitlements,\n };\n\n return config.ios.entitlements!;\n },\n\n async write(filePath, config) {\n // Update the contents of the static entitlements object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n\n podfile: provider<Paths.PodfileProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getPodfilePath(projectRoot);\n },\n // @ts-expect-error\n async read(filePath) {\n // Note(cedric): this file is ruby, which is a 1-value subset of AppleLanguage and fails the type check\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n // Append a rule to supply Podfile.properties.json data to mods on `mods.ios.podfileProperties`\n podfileProperties: provider<Record<string, JSONValue>>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.resolve(platformProjectRoot, 'Podfile.properties.json');\n },\n async read(filePath) {\n let results: Record<string, JSONValue> = {};\n try {\n results = await JsonFile.readAsync(filePath);\n } catch {}\n return results;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await JsonFile.writeAsync(filePath, modResults);\n },\n }),\n};\n\ntype IosDefaultProviders = typeof defaultProviders;\n\nexport function withIosBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<IosDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<IosModName>(config, {\n ...props,\n platform: 'ios',\n providers: providers ?? getIosModFileProviders(),\n });\n}\n\nexport function getIosModFileProviders() {\n return defaultProviders;\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/config-plugins",
3
- "version": "8.0.1",
3
+ "version": "8.0.3",
4
4
  "description": "A library for Expo config plugins",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -58,5 +58,5 @@
58
58
  "publishConfig": {
59
59
  "access": "public"
60
60
  },
61
- "gitHead": "216e96034fb009ff126fdc57d3de01df86d2f2d6"
61
+ "gitHead": "f47e3af17a790a34b95fe10dda8383389e7d74e2"
62
62
  }