@expo/config-plugins 5.0.3 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/build/Plugin.types.d.ts +7 -7
  2. package/build/Plugin.types.js +0 -9
  3. package/build/Plugin.types.js.map +1 -1
  4. package/build/android/AllowBackup.js +0 -15
  5. package/build/android/AllowBackup.js.map +1 -1
  6. package/build/android/BuildProperties.js +2 -16
  7. package/build/android/BuildProperties.js.map +1 -1
  8. package/build/android/Colors.js +3 -25
  9. package/build/android/Colors.js.map +1 -1
  10. package/build/android/EasBuild.js +2 -22
  11. package/build/android/EasBuild.js.map +1 -1
  12. package/build/android/EasBuildGradleScript.js.map +1 -1
  13. package/build/android/GoogleMapsApiKey.js +0 -12
  14. package/build/android/GoogleMapsApiKey.js.map +1 -1
  15. package/build/android/GoogleServices.js +10 -48
  16. package/build/android/GoogleServices.js.map +1 -1
  17. package/build/android/IntentFilters.d.ts +1 -1
  18. package/build/android/IntentFilters.js +8 -24
  19. package/build/android/IntentFilters.js.map +1 -1
  20. package/build/android/Manifest.d.ts +19 -19
  21. package/build/android/Manifest.js +7 -66
  22. package/build/android/Manifest.js.map +1 -1
  23. package/build/android/Name.js +6 -27
  24. package/build/android/Name.js.map +1 -1
  25. package/build/android/Orientation.js +2 -12
  26. package/build/android/Orientation.js.map +1 -1
  27. package/build/android/Package.js +26 -111
  28. package/build/android/Package.js.map +1 -1
  29. package/build/android/Paths.d.ts +2 -2
  30. package/build/android/Paths.js +0 -47
  31. package/build/android/Paths.js.map +1 -1
  32. package/build/android/Permissions.js +8 -52
  33. package/build/android/Permissions.js.map +1 -1
  34. package/build/android/PrimaryColor.js +0 -18
  35. package/build/android/PrimaryColor.js.map +1 -1
  36. package/build/android/Properties.d.ts +1 -1
  37. package/build/android/Properties.js +0 -9
  38. package/build/android/Properties.js.map +1 -1
  39. package/build/android/Resources.d.ts +4 -4
  40. package/build/android/Resources.js +9 -29
  41. package/build/android/Resources.js.map +1 -1
  42. package/build/android/Scheme.d.ts +1 -1
  43. package/build/android/Scheme.js +13 -66
  44. package/build/android/Scheme.js.map +1 -1
  45. package/build/android/StatusBar.js +5 -33
  46. package/build/android/StatusBar.js.map +1 -1
  47. package/build/android/Strings.js +0 -14
  48. package/build/android/Strings.js.map +1 -1
  49. package/build/android/Styles.js +7 -34
  50. package/build/android/Styles.js.map +1 -1
  51. package/build/android/Updates.d.ts +2 -0
  52. package/build/android/Updates.js +50 -47
  53. package/build/android/Updates.js.map +1 -1
  54. package/build/android/Version.js +3 -29
  55. package/build/android/Version.js.map +1 -1
  56. package/build/android/WindowSoftInputMode.js +0 -14
  57. package/build/android/WindowSoftInputMode.js.map +1 -1
  58. package/build/android/codeMod.js +6 -22
  59. package/build/android/codeMod.js.map +1 -1
  60. package/build/android/index.js +0 -94
  61. package/build/android/index.js.map +1 -1
  62. package/build/index.js +2 -65
  63. package/build/index.js.map +1 -1
  64. package/build/ios/Bitcode.d.ts +1 -1
  65. package/build/ios/Bitcode.js +8 -28
  66. package/build/ios/Bitcode.js.map +1 -1
  67. package/build/ios/BuildProperties.js +2 -14
  68. package/build/ios/BuildProperties.js.map +1 -1
  69. package/build/ios/BuildScheme.js +2 -34
  70. package/build/ios/BuildScheme.js.map +1 -1
  71. package/build/ios/BundleIdentifier.js +13 -72
  72. package/build/ios/BundleIdentifier.js.map +1 -1
  73. package/build/ios/DeviceFamily.js +6 -24
  74. package/build/ios/DeviceFamily.js.map +1 -1
  75. package/build/ios/Entitlements.js +4 -45
  76. package/build/ios/Entitlements.js.map +1 -1
  77. package/build/ios/Google.d.ts +2 -2
  78. package/build/ios/Google.js +11 -66
  79. package/build/ios/Google.js.map +1 -1
  80. package/build/ios/IosConfig.types.d.ts +6 -11
  81. package/build/ios/IosConfig.types.js.map +1 -1
  82. package/build/ios/Locales.d.ts +3 -3
  83. package/build/ios/Locales.js +12 -43
  84. package/build/ios/Locales.js.map +1 -1
  85. package/build/ios/Maps.js +15 -53
  86. package/build/ios/Maps.js.map +1 -1
  87. package/build/ios/Name.js +7 -31
  88. package/build/ios/Name.js.map +1 -1
  89. package/build/ios/Orientation.js +2 -10
  90. package/build/ios/Orientation.js.map +1 -1
  91. package/build/ios/Paths.d.ts +2 -2
  92. package/build/ios/Paths.js +8 -73
  93. package/build/ios/Paths.js.map +1 -1
  94. package/build/ios/Permissions.js +1 -16
  95. package/build/ios/Permissions.js.map +1 -1
  96. package/build/ios/ProvisioningProfile.d.ts +1 -1
  97. package/build/ios/ProvisioningProfile.js +0 -18
  98. package/build/ios/ProvisioningProfile.js.map +1 -1
  99. package/build/ios/RequiresFullScreen.js +19 -31
  100. package/build/ios/RequiresFullScreen.js.map +1 -1
  101. package/build/ios/Scheme.js +12 -34
  102. package/build/ios/Scheme.js.map +1 -1
  103. package/build/ios/Swift.js +16 -50
  104. package/build/ios/Swift.js.map +1 -1
  105. package/build/ios/Target.js +0 -30
  106. package/build/ios/Target.js.map +1 -1
  107. package/build/ios/Updates.js +10 -49
  108. package/build/ios/Updates.js.map +1 -1
  109. package/build/ios/UsesNonExemptEncryption.js +4 -10
  110. package/build/ios/UsesNonExemptEncryption.js.map +1 -1
  111. package/build/ios/Version.js +4 -11
  112. package/build/ios/Version.js.map +1 -1
  113. package/build/ios/XcodeProjectFile.js +5 -23
  114. package/build/ios/XcodeProjectFile.js.map +1 -1
  115. package/build/ios/codeMod.js +19 -60
  116. package/build/ios/codeMod.js.map +1 -1
  117. package/build/ios/index.js +0 -97
  118. package/build/ios/index.js.map +1 -1
  119. package/build/ios/utils/Xcodeproj.d.ts +6 -6
  120. package/build/ios/utils/Xcodeproj.js +15 -101
  121. package/build/ios/utils/Xcodeproj.js.map +1 -1
  122. package/build/ios/utils/getInfoPlistPath.js +2 -15
  123. package/build/ios/utils/getInfoPlistPath.js.map +1 -1
  124. package/build/ios/utils/string.js +0 -1
  125. package/build/ios/utils/string.js.map +1 -1
  126. package/build/plugins/android-plugins.d.ts +2 -2
  127. package/build/plugins/android-plugins.js +11 -42
  128. package/build/plugins/android-plugins.js.map +1 -1
  129. package/build/plugins/createBaseMod.d.ts +3 -3
  130. package/build/plugins/createBaseMod.js +8 -25
  131. package/build/plugins/createBaseMod.js.map +1 -1
  132. package/build/plugins/ios-plugins.d.ts +2 -2
  133. package/build/plugins/ios-plugins.js +8 -48
  134. package/build/plugins/ios-plugins.js.map +1 -1
  135. package/build/plugins/mod-compiler.js +21 -72
  136. package/build/plugins/mod-compiler.js.map +1 -1
  137. package/build/plugins/withAndroidBaseMods.d.ts +1 -1
  138. package/build/plugins/withAndroidBaseMods.js +4 -89
  139. package/build/plugins/withAndroidBaseMods.js.map +1 -1
  140. package/build/plugins/withDangerousMod.js +0 -5
  141. package/build/plugins/withDangerousMod.js.map +1 -1
  142. package/build/plugins/withIosBaseMods.d.ts +1 -1
  143. package/build/plugins/withIosBaseMods.js +26 -118
  144. package/build/plugins/withIosBaseMods.js.map +1 -1
  145. package/build/plugins/withMod.d.ts +1 -1
  146. package/build/plugins/withMod.js +24 -59
  147. package/build/plugins/withMod.js.map +1 -1
  148. package/build/plugins/withPlugins.js +0 -9
  149. package/build/plugins/withPlugins.js.map +1 -1
  150. package/build/plugins/withRunOnce.js +3 -9
  151. package/build/plugins/withRunOnce.js.map +1 -1
  152. package/build/plugins/withStaticPlugin.js +21 -43
  153. package/build/plugins/withStaticPlugin.js.map +1 -1
  154. package/build/utils/BuildProperties.types.d.ts +2 -2
  155. package/build/utils/BuildProperties.types.js.map +1 -1
  156. package/build/utils/Updates.d.ts +3 -1
  157. package/build/utils/Updates.js +18 -77
  158. package/build/utils/Updates.js.map +1 -1
  159. package/build/utils/XML.d.ts +1 -1
  160. package/build/utils/XML.js +7 -44
  161. package/build/utils/XML.js.map +1 -1
  162. package/build/utils/commonCodeMod.js +2 -10
  163. package/build/utils/commonCodeMod.js.map +1 -1
  164. package/build/utils/errors.d.ts +1 -1
  165. package/build/utils/errors.js +3 -11
  166. package/build/utils/errors.js.map +1 -1
  167. package/build/utils/fs.js +1 -12
  168. package/build/utils/fs.js.map +1 -1
  169. package/build/utils/generateCode.d.ts +1 -1
  170. package/build/utils/generateCode.js +8 -25
  171. package/build/utils/generateCode.js.map +1 -1
  172. package/build/utils/history.d.ts +1 -1
  173. package/build/utils/history.js +0 -6
  174. package/build/utils/history.js.map +1 -1
  175. package/build/utils/matchBrackets.d.ts +3 -3
  176. package/build/utils/matchBrackets.js +2 -17
  177. package/build/utils/matchBrackets.js.map +1 -1
  178. package/build/utils/modules.js +0 -10
  179. package/build/utils/modules.js.map +1 -1
  180. package/build/utils/obj.js +0 -4
  181. package/build/utils/obj.js.map +1 -1
  182. package/build/utils/plugin-resolver.js +25 -69
  183. package/build/utils/plugin-resolver.js.map +1 -1
  184. package/build/utils/sortObject.js +4 -10
  185. package/build/utils/sortObject.js.map +1 -1
  186. package/build/utils/versions.js +0 -10
  187. package/build/utils/versions.js.map +1 -1
  188. package/build/utils/warnings.js +1 -9
  189. package/build/utils/warnings.js.map +1 -1
  190. package/package.json +5 -5
@@ -7,51 +7,37 @@ exports.getApplicationTargetNameForSchemeAsync = getApplicationTargetNameForSche
7
7
  exports.getArchiveBuildConfigurationForSchemeAsync = getArchiveBuildConfigurationForSchemeAsync;
8
8
  exports.getRunnableSchemesFromXcodeproj = getRunnableSchemesFromXcodeproj;
9
9
  exports.getSchemesFromXcodeproj = getSchemesFromXcodeproj;
10
-
11
10
  function _XML() {
12
11
  const data = require("../utils/XML");
13
-
14
12
  _XML = function () {
15
13
  return data;
16
14
  };
17
-
18
15
  return data;
19
16
  }
20
-
21
17
  function _Paths() {
22
18
  const data = require("./Paths");
23
-
24
19
  _Paths = function () {
25
20
  return data;
26
21
  };
27
-
28
22
  return data;
29
23
  }
30
-
31
24
  function _Target() {
32
25
  const data = require("./Target");
33
-
34
26
  _Target = function () {
35
27
  return data;
36
28
  };
37
-
38
29
  return data;
39
30
  }
40
-
41
31
  function _Xcodeproj() {
42
32
  const data = require("./utils/Xcodeproj");
43
-
44
33
  _Xcodeproj = function () {
45
34
  return data;
46
35
  };
47
-
48
36
  return data;
49
37
  }
50
-
51
38
  function getSchemesFromXcodeproj(projectRoot) {
52
39
  return (0, _Paths().findSchemeNames)(projectRoot);
53
40
  }
54
-
55
41
  function getRunnableSchemesFromXcodeproj(projectRoot, {
56
42
  configuration = 'Debug'
57
43
  } = {}) {
@@ -59,25 +45,21 @@ function getRunnableSchemesFromXcodeproj(projectRoot, {
59
45
  return (0, _Target().findSignableTargets)(project).map(([, target]) => {
60
46
  let osType = 'iOS';
61
47
  const type = (0, _Xcodeproj().unquote)(target.productType);
62
-
63
48
  if (type === _Target().TargetType.WATCH) {
64
49
  osType = 'watchOS';
65
- } else if ( // (apps) com.apple.product-type.application
50
+ } else if (
51
+ // (apps) com.apple.product-type.application
66
52
  // (app clips) com.apple.product-type.application.on-demand-install-capable
67
53
  // NOTE(EvanBacon): This matches against `watchOS` as well so we check for watch first.
68
54
  type.startsWith(_Target().TargetType.APPLICATION)) {
69
55
  // Attempt to resolve the platform SDK for each target so we can filter devices.
70
56
  const xcConfigurationList = project.hash.project.objects.XCConfigurationList[target.buildConfigurationList];
71
-
72
57
  if (xcConfigurationList) {
73
58
  const buildConfiguration = xcConfigurationList.buildConfigurations.find(value => value.comment === configuration) || xcConfigurationList.buildConfigurations[0];
74
-
75
59
  if (buildConfiguration !== null && buildConfiguration !== void 0 && buildConfiguration.value) {
76
60
  var _project$hash$project;
77
-
78
61
  const xcBuildConfiguration = (_project$hash$project = project.hash.project.objects.XCBuildConfiguration) === null || _project$hash$project === void 0 ? void 0 : _project$hash$project[buildConfiguration.value];
79
62
  const buildSdkRoot = xcBuildConfiguration.buildSettings.SDKROOT;
80
-
81
63
  if (buildSdkRoot === 'appletvos' || 'TVOS_DEPLOYMENT_TARGET' in xcBuildConfiguration.buildSettings) {
82
64
  // Is a TV app...
83
65
  osType = 'tvOS';
@@ -87,7 +69,6 @@ function getRunnableSchemesFromXcodeproj(projectRoot, {
87
69
  }
88
70
  }
89
71
  }
90
-
91
72
  return {
92
73
  name: (0, _Xcodeproj().unquote)(target.name),
93
74
  osType,
@@ -95,12 +76,10 @@ function getRunnableSchemesFromXcodeproj(projectRoot, {
95
76
  };
96
77
  });
97
78
  }
98
-
99
79
  async function readSchemeAsync(projectRoot, scheme) {
100
80
  const allSchemePaths = (0, _Paths().findSchemePaths)(projectRoot);
101
81
  const re = new RegExp(`/${scheme}.xcscheme`, 'i');
102
82
  const schemePath = allSchemePaths.find(i => re.exec(i));
103
-
104
83
  if (schemePath) {
105
84
  return await (0, _XML().readXMLAsync)({
106
85
  path: schemePath
@@ -109,41 +88,30 @@ async function readSchemeAsync(projectRoot, scheme) {
109
88
  throw new Error(`scheme '${scheme}' does not exist, make sure it's marked as shared`);
110
89
  }
111
90
  }
112
-
113
91
  async function getApplicationTargetNameForSchemeAsync(projectRoot, scheme) {
114
92
  var _schemeXML$Scheme, _schemeXML$Scheme$Bui, _schemeXML$Scheme$Bui2, _schemeXML$Scheme$Bui3, _schemeXML$Scheme$Bui4;
115
-
116
93
  const schemeXML = await readSchemeAsync(projectRoot, scheme);
117
94
  const buildActionEntry = schemeXML === null || schemeXML === void 0 ? void 0 : (_schemeXML$Scheme = schemeXML.Scheme) === null || _schemeXML$Scheme === void 0 ? void 0 : (_schemeXML$Scheme$Bui = _schemeXML$Scheme.BuildAction) === null || _schemeXML$Scheme$Bui === void 0 ? void 0 : (_schemeXML$Scheme$Bui2 = _schemeXML$Scheme$Bui[0]) === null || _schemeXML$Scheme$Bui2 === void 0 ? void 0 : (_schemeXML$Scheme$Bui3 = _schemeXML$Scheme$Bui2.BuildActionEntries) === null || _schemeXML$Scheme$Bui3 === void 0 ? void 0 : (_schemeXML$Scheme$Bui4 = _schemeXML$Scheme$Bui3[0]) === null || _schemeXML$Scheme$Bui4 === void 0 ? void 0 : _schemeXML$Scheme$Bui4.BuildActionEntry;
118
95
  const targetName = (buildActionEntry === null || buildActionEntry === void 0 ? void 0 : buildActionEntry.length) === 1 ? getBlueprintName(buildActionEntry[0]) : getBlueprintName(buildActionEntry === null || buildActionEntry === void 0 ? void 0 : buildActionEntry.find(entry => {
119
96
  var _entry$BuildableRefer, _entry$BuildableRefer2, _entry$BuildableRefer3, _entry$BuildableRefer4;
120
-
121
97
  return (_entry$BuildableRefer = entry.BuildableReference) === null || _entry$BuildableRefer === void 0 ? void 0 : (_entry$BuildableRefer2 = _entry$BuildableRefer[0]) === null || _entry$BuildableRefer2 === void 0 ? void 0 : (_entry$BuildableRefer3 = _entry$BuildableRefer2['$']) === null || _entry$BuildableRefer3 === void 0 ? void 0 : (_entry$BuildableRefer4 = _entry$BuildableRefer3.BuildableName) === null || _entry$BuildableRefer4 === void 0 ? void 0 : _entry$BuildableRefer4.endsWith('.app');
122
98
  }));
123
-
124
99
  if (!targetName) {
125
100
  throw new Error(`${scheme}.xcscheme seems to be corrupted`);
126
101
  }
127
-
128
102
  return targetName;
129
103
  }
130
-
131
104
  async function getArchiveBuildConfigurationForSchemeAsync(projectRoot, scheme) {
132
105
  var _schemeXML$Scheme2, _schemeXML$Scheme2$Ar, _schemeXML$Scheme2$Ar2, _schemeXML$Scheme2$Ar3;
133
-
134
106
  const schemeXML = await readSchemeAsync(projectRoot, scheme);
135
107
  const buildConfiguration = schemeXML === null || schemeXML === void 0 ? void 0 : (_schemeXML$Scheme2 = schemeXML.Scheme) === null || _schemeXML$Scheme2 === void 0 ? void 0 : (_schemeXML$Scheme2$Ar = _schemeXML$Scheme2.ArchiveAction) === null || _schemeXML$Scheme2$Ar === void 0 ? void 0 : (_schemeXML$Scheme2$Ar2 = _schemeXML$Scheme2$Ar[0]) === null || _schemeXML$Scheme2$Ar2 === void 0 ? void 0 : (_schemeXML$Scheme2$Ar3 = _schemeXML$Scheme2$Ar2['$']) === null || _schemeXML$Scheme2$Ar3 === void 0 ? void 0 : _schemeXML$Scheme2$Ar3.buildConfiguration;
136
-
137
108
  if (!buildConfiguration) {
138
109
  throw new Error(`${scheme}.xcscheme seems to be corrupted`);
139
110
  }
140
-
141
111
  return buildConfiguration;
142
112
  }
143
-
144
113
  function getBlueprintName(entry) {
145
114
  var _entry$BuildableRefer5, _entry$BuildableRefer6, _entry$BuildableRefer7;
146
-
147
115
  return entry === null || entry === void 0 ? void 0 : (_entry$BuildableRefer5 = entry.BuildableReference) === null || _entry$BuildableRefer5 === void 0 ? void 0 : (_entry$BuildableRefer6 = _entry$BuildableRefer5[0]) === null || _entry$BuildableRefer6 === void 0 ? void 0 : (_entry$BuildableRefer7 = _entry$BuildableRefer6['$']) === null || _entry$BuildableRefer7 === void 0 ? void 0 : _entry$BuildableRefer7.BlueprintName;
148
116
  }
149
117
  //# sourceMappingURL=BuildScheme.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BuildScheme.js","names":["getSchemesFromXcodeproj","projectRoot","findSchemeNames","getRunnableSchemesFromXcodeproj","configuration","project","getPbxproj","findSignableTargets","map","target","osType","type","unquote","productType","TargetType","WATCH","startsWith","APPLICATION","xcConfigurationList","hash","objects","XCConfigurationList","buildConfigurationList","buildConfiguration","buildConfigurations","find","value","comment","xcBuildConfiguration","XCBuildConfiguration","buildSdkRoot","buildSettings","SDKROOT","name","readSchemeAsync","scheme","allSchemePaths","findSchemePaths","re","RegExp","schemePath","i","exec","readXMLAsync","path","Error","getApplicationTargetNameForSchemeAsync","schemeXML","buildActionEntry","Scheme","BuildAction","BuildActionEntries","BuildActionEntry","targetName","length","getBlueprintName","entry","BuildableReference","BuildableName","endsWith","getArchiveBuildConfigurationForSchemeAsync","ArchiveAction","BlueprintName"],"sources":["../../src/ios/BuildScheme.ts"],"sourcesContent":["import { readXMLAsync } from '../utils/XML';\nimport { findSchemeNames, findSchemePaths } from './Paths';\nimport { findSignableTargets, TargetType } from './Target';\nimport { getPbxproj, unquote } from './utils/Xcodeproj';\n\ninterface SchemeXML {\n Scheme?: {\n BuildAction?: {\n BuildActionEntries?: {\n BuildActionEntry?: BuildActionEntryType[];\n }[];\n }[];\n ArchiveAction?: {\n $?: {\n buildConfiguration?: string;\n };\n }[];\n };\n}\n\ninterface BuildActionEntryType {\n BuildableReference?: {\n $?: {\n BlueprintName?: string;\n BuildableName?: string;\n };\n }[];\n}\n\nexport function getSchemesFromXcodeproj(projectRoot: string): string[] {\n return findSchemeNames(projectRoot);\n}\n\nexport function getRunnableSchemesFromXcodeproj(\n projectRoot: string,\n { configuration = 'Debug' }: { configuration?: 'Debug' | 'Release' } = {}\n): { name: string; osType: string; type: string }[] {\n const project = getPbxproj(projectRoot);\n\n return findSignableTargets(project).map(([, target]) => {\n let osType = 'iOS';\n const type = unquote(target.productType);\n\n if (type === TargetType.WATCH) {\n osType = 'watchOS';\n } else if (\n // (apps) com.apple.product-type.application\n // (app clips) com.apple.product-type.application.on-demand-install-capable\n // NOTE(EvanBacon): This matches against `watchOS` as well so we check for watch first.\n type.startsWith(TargetType.APPLICATION)\n ) {\n // Attempt to resolve the platform SDK for each target so we can filter devices.\n const xcConfigurationList =\n project.hash.project.objects.XCConfigurationList[target.buildConfigurationList];\n\n if (xcConfigurationList) {\n const buildConfiguration =\n xcConfigurationList.buildConfigurations.find(\n (value: { comment: string; value: string }) => value.comment === configuration\n ) || xcConfigurationList.buildConfigurations[0];\n if (buildConfiguration?.value) {\n const xcBuildConfiguration =\n project.hash.project.objects.XCBuildConfiguration?.[buildConfiguration.value];\n\n const buildSdkRoot = xcBuildConfiguration.buildSettings.SDKROOT;\n if (\n buildSdkRoot === 'appletvos' ||\n 'TVOS_DEPLOYMENT_TARGET' in xcBuildConfiguration.buildSettings\n ) {\n // Is a TV app...\n osType = 'tvOS';\n } else if (buildSdkRoot === 'iphoneos') {\n osType = 'iOS';\n }\n }\n }\n }\n\n return {\n name: unquote(target.name),\n osType,\n type: unquote(target.productType),\n };\n });\n}\n\nasync function readSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<SchemeXML | undefined> {\n const allSchemePaths = findSchemePaths(projectRoot);\n const re = new RegExp(`/${scheme}.xcscheme`, 'i');\n const schemePath = allSchemePaths.find((i) => re.exec(i));\n if (schemePath) {\n return (await readXMLAsync({ path: schemePath })) as unknown as SchemeXML | undefined;\n } else {\n throw new Error(`scheme '${scheme}' does not exist, make sure it's marked as shared`);\n }\n}\n\nexport async function getApplicationTargetNameForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildActionEntry =\n schemeXML?.Scheme?.BuildAction?.[0]?.BuildActionEntries?.[0]?.BuildActionEntry;\n const targetName =\n buildActionEntry?.length === 1\n ? getBlueprintName(buildActionEntry[0])\n : getBlueprintName(\n buildActionEntry?.find((entry) => {\n return entry.BuildableReference?.[0]?.['$']?.BuildableName?.endsWith('.app');\n })\n );\n if (!targetName) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return targetName;\n}\n\nexport async function getArchiveBuildConfigurationForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildConfiguration = schemeXML?.Scheme?.ArchiveAction?.[0]?.['$']?.buildConfiguration;\n if (!buildConfiguration) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return buildConfiguration;\n}\n\nfunction getBlueprintName(entry?: BuildActionEntryType): string | undefined {\n return entry?.BuildableReference?.[0]?.['$']?.BlueprintName;\n}\n"],"mappings":";;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AA0BO,SAASA,uBAAT,CAAiCC,WAAjC,EAAgE;EACrE,OAAO,IAAAC,wBAAA,EAAgBD,WAAhB,CAAP;AACD;;AAEM,SAASE,+BAAT,CACLF,WADK,EAEL;EAAEG,aAAa,GAAG;AAAlB,IAAuE,EAFlE,EAG6C;EAClD,MAAMC,OAAO,GAAG,IAAAC,uBAAA,EAAWL,WAAX,CAAhB;EAEA,OAAO,IAAAM,6BAAA,EAAoBF,OAApB,EAA6BG,GAA7B,CAAiC,CAAC,GAAGC,MAAH,CAAD,KAAgB;IACtD,IAAIC,MAAM,GAAG,KAAb;IACA,MAAMC,IAAI,GAAG,IAAAC,oBAAA,EAAQH,MAAM,CAACI,WAAf,CAAb;;IAEA,IAAIF,IAAI,KAAKG,oBAAA,CAAWC,KAAxB,EAA+B;MAC7BL,MAAM,GAAG,SAAT;IACD,CAFD,MAEO,KACL;IACA;IACA;IACAC,IAAI,CAACK,UAAL,CAAgBF,oBAAA,CAAWG,WAA3B,CAJK,EAKL;MACA;MACA,MAAMC,mBAAmB,GACvBb,OAAO,CAACc,IAAR,CAAad,OAAb,CAAqBe,OAArB,CAA6BC,mBAA7B,CAAiDZ,MAAM,CAACa,sBAAxD,CADF;;MAGA,IAAIJ,mBAAJ,EAAyB;QACvB,MAAMK,kBAAkB,GACtBL,mBAAmB,CAACM,mBAApB,CAAwCC,IAAxC,CACGC,KAAD,IAA+CA,KAAK,CAACC,OAAN,KAAkBvB,aADnE,KAEKc,mBAAmB,CAACM,mBAApB,CAAwC,CAAxC,CAHP;;QAIA,IAAID,kBAAJ,aAAIA,kBAAJ,eAAIA,kBAAkB,CAAEG,KAAxB,EAA+B;UAAA;;UAC7B,MAAME,oBAAoB,4BACxBvB,OAAO,CAACc,IAAR,CAAad,OAAb,CAAqBe,OAArB,CAA6BS,oBADL,0DACxB,sBAAoDN,kBAAkB,CAACG,KAAvE,CADF;UAGA,MAAMI,YAAY,GAAGF,oBAAoB,CAACG,aAArB,CAAmCC,OAAxD;;UACA,IACEF,YAAY,KAAK,WAAjB,IACA,4BAA4BF,oBAAoB,CAACG,aAFnD,EAGE;YACA;YACArB,MAAM,GAAG,MAAT;UACD,CAND,MAMO,IAAIoB,YAAY,KAAK,UAArB,EAAiC;YACtCpB,MAAM,GAAG,KAAT;UACD;QACF;MACF;IACF;;IAED,OAAO;MACLuB,IAAI,EAAE,IAAArB,oBAAA,EAAQH,MAAM,CAACwB,IAAf,CADD;MAELvB,MAFK;MAGLC,IAAI,EAAE,IAAAC,oBAAA,EAAQH,MAAM,CAACI,WAAf;IAHD,CAAP;EAKD,CA5CM,CAAP;AA6CD;;AAED,eAAeqB,eAAf,CACEjC,WADF,EAEEkC,MAFF,EAGkC;EAChC,MAAMC,cAAc,GAAG,IAAAC,wBAAA,EAAgBpC,WAAhB,CAAvB;EACA,MAAMqC,EAAE,GAAG,IAAIC,MAAJ,CAAY,IAAGJ,MAAO,WAAtB,EAAkC,GAAlC,CAAX;EACA,MAAMK,UAAU,GAAGJ,cAAc,CAACX,IAAf,CAAqBgB,CAAD,IAAOH,EAAE,CAACI,IAAH,CAAQD,CAAR,CAA3B,CAAnB;;EACA,IAAID,UAAJ,EAAgB;IACd,OAAQ,MAAM,IAAAG,mBAAA,EAAa;MAAEC,IAAI,EAAEJ;IAAR,CAAb,CAAd;EACD,CAFD,MAEO;IACL,MAAM,IAAIK,KAAJ,CAAW,WAAUV,MAAO,mDAA5B,CAAN;EACD;AACF;;AAEM,eAAeW,sCAAf,CACL7C,WADK,EAELkC,MAFK,EAGY;EAAA;;EACjB,MAAMY,SAAS,GAAG,MAAMb,eAAe,CAACjC,WAAD,EAAckC,MAAd,CAAvC;EACA,MAAMa,gBAAgB,GACpBD,SADoB,aACpBA,SADoB,4CACpBA,SAAS,CAAEE,MADS,+EACpB,kBAAmBC,WADC,oFACpB,sBAAiC,CAAjC,CADoB,qFACpB,uBAAqCC,kBADjB,qFACpB,uBAA0D,CAA1D,CADoB,2DACpB,uBAA8DC,gBADhE;EAEA,MAAMC,UAAU,GACd,CAAAL,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,CAAEM,MAAlB,MAA6B,CAA7B,GACIC,gBAAgB,CAACP,gBAAgB,CAAC,CAAD,CAAjB,CADpB,GAEIO,gBAAgB,CACdP,gBADc,aACdA,gBADc,uBACdA,gBAAgB,CAAEvB,IAAlB,CAAwB+B,KAAD,IAAW;IAAA;;IAChC,gCAAOA,KAAK,CAACC,kBAAb,oFAAO,sBAA2B,CAA3B,CAAP,qFAAO,uBAAgC,GAAhC,CAAP,qFAAO,uBAAsCC,aAA7C,2DAAO,uBAAqDC,QAArD,CAA8D,MAA9D,CAAP;EACD,CAFD,CADc,CAHtB;;EAQA,IAAI,CAACN,UAAL,EAAiB;IACf,MAAM,IAAIR,KAAJ,CAAW,GAAEV,MAAO,iCAApB,CAAN;EACD;;EACD,OAAOkB,UAAP;AACD;;AAEM,eAAeO,0CAAf,CACL3D,WADK,EAELkC,MAFK,EAGY;EAAA;;EACjB,MAAMY,SAAS,GAAG,MAAMb,eAAe,CAACjC,WAAD,EAAckC,MAAd,CAAvC;EACA,MAAMZ,kBAAkB,GAAGwB,SAAH,aAAGA,SAAH,6CAAGA,SAAS,CAAEE,MAAd,gFAAG,mBAAmBY,aAAtB,oFAAG,sBAAmC,CAAnC,CAAH,qFAAG,uBAAwC,GAAxC,CAAH,2DAAG,uBAA8CtC,kBAAzE;;EACA,IAAI,CAACA,kBAAL,EAAyB;IACvB,MAAM,IAAIsB,KAAJ,CAAW,GAAEV,MAAO,iCAApB,CAAN;EACD;;EACD,OAAOZ,kBAAP;AACD;;AAED,SAASgC,gBAAT,CAA0BC,KAA1B,EAA4E;EAAA;;EAC1E,OAAOA,KAAP,aAAOA,KAAP,iDAAOA,KAAK,CAAEC,kBAAd,qFAAO,uBAA4B,CAA5B,CAAP,qFAAO,uBAAiC,GAAjC,CAAP,2DAAO,uBAAuCK,aAA9C;AACD"}
1
+ {"version":3,"file":"BuildScheme.js","names":["getSchemesFromXcodeproj","projectRoot","findSchemeNames","getRunnableSchemesFromXcodeproj","configuration","project","getPbxproj","findSignableTargets","map","target","osType","type","unquote","productType","TargetType","WATCH","startsWith","APPLICATION","xcConfigurationList","hash","objects","XCConfigurationList","buildConfigurationList","buildConfiguration","buildConfigurations","find","value","comment","xcBuildConfiguration","XCBuildConfiguration","buildSdkRoot","buildSettings","SDKROOT","name","readSchemeAsync","scheme","allSchemePaths","findSchemePaths","re","RegExp","schemePath","i","exec","readXMLAsync","path","Error","getApplicationTargetNameForSchemeAsync","schemeXML","buildActionEntry","Scheme","BuildAction","BuildActionEntries","BuildActionEntry","targetName","length","getBlueprintName","entry","BuildableReference","BuildableName","endsWith","getArchiveBuildConfigurationForSchemeAsync","ArchiveAction","BlueprintName"],"sources":["../../src/ios/BuildScheme.ts"],"sourcesContent":["import { readXMLAsync } from '../utils/XML';\nimport { findSchemeNames, findSchemePaths } from './Paths';\nimport { findSignableTargets, TargetType } from './Target';\nimport { getPbxproj, unquote } from './utils/Xcodeproj';\n\ninterface SchemeXML {\n Scheme?: {\n BuildAction?: {\n BuildActionEntries?: {\n BuildActionEntry?: BuildActionEntryType[];\n }[];\n }[];\n ArchiveAction?: {\n $?: {\n buildConfiguration?: string;\n };\n }[];\n };\n}\n\ninterface BuildActionEntryType {\n BuildableReference?: {\n $?: {\n BlueprintName?: string;\n BuildableName?: string;\n };\n }[];\n}\n\nexport function getSchemesFromXcodeproj(projectRoot: string): string[] {\n return findSchemeNames(projectRoot);\n}\n\nexport function getRunnableSchemesFromXcodeproj(\n projectRoot: string,\n { configuration = 'Debug' }: { configuration?: 'Debug' | 'Release' } = {}\n): { name: string; osType: string; type: string }[] {\n const project = getPbxproj(projectRoot);\n\n return findSignableTargets(project).map(([, target]) => {\n let osType = 'iOS';\n const type = unquote(target.productType);\n\n if (type === TargetType.WATCH) {\n osType = 'watchOS';\n } else if (\n // (apps) com.apple.product-type.application\n // (app clips) com.apple.product-type.application.on-demand-install-capable\n // NOTE(EvanBacon): This matches against `watchOS` as well so we check for watch first.\n type.startsWith(TargetType.APPLICATION)\n ) {\n // Attempt to resolve the platform SDK for each target so we can filter devices.\n const xcConfigurationList =\n project.hash.project.objects.XCConfigurationList[target.buildConfigurationList];\n\n if (xcConfigurationList) {\n const buildConfiguration =\n xcConfigurationList.buildConfigurations.find(\n (value: { comment: string; value: string }) => value.comment === configuration\n ) || xcConfigurationList.buildConfigurations[0];\n if (buildConfiguration?.value) {\n const xcBuildConfiguration =\n project.hash.project.objects.XCBuildConfiguration?.[buildConfiguration.value];\n\n const buildSdkRoot = xcBuildConfiguration.buildSettings.SDKROOT;\n if (\n buildSdkRoot === 'appletvos' ||\n 'TVOS_DEPLOYMENT_TARGET' in xcBuildConfiguration.buildSettings\n ) {\n // Is a TV app...\n osType = 'tvOS';\n } else if (buildSdkRoot === 'iphoneos') {\n osType = 'iOS';\n }\n }\n }\n }\n\n return {\n name: unquote(target.name),\n osType,\n type: unquote(target.productType),\n };\n });\n}\n\nasync function readSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<SchemeXML | undefined> {\n const allSchemePaths = findSchemePaths(projectRoot);\n const re = new RegExp(`/${scheme}.xcscheme`, 'i');\n const schemePath = allSchemePaths.find((i) => re.exec(i));\n if (schemePath) {\n return (await readXMLAsync({ path: schemePath })) as unknown as SchemeXML | undefined;\n } else {\n throw new Error(`scheme '${scheme}' does not exist, make sure it's marked as shared`);\n }\n}\n\nexport async function getApplicationTargetNameForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildActionEntry =\n schemeXML?.Scheme?.BuildAction?.[0]?.BuildActionEntries?.[0]?.BuildActionEntry;\n const targetName =\n buildActionEntry?.length === 1\n ? getBlueprintName(buildActionEntry[0])\n : getBlueprintName(\n buildActionEntry?.find((entry) => {\n return entry.BuildableReference?.[0]?.['$']?.BuildableName?.endsWith('.app');\n })\n );\n if (!targetName) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return targetName;\n}\n\nexport async function getArchiveBuildConfigurationForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildConfiguration = schemeXML?.Scheme?.ArchiveAction?.[0]?.['$']?.buildConfiguration;\n if (!buildConfiguration) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return buildConfiguration;\n}\n\nfunction getBlueprintName(entry?: BuildActionEntryType): string | undefined {\n return entry?.BuildableReference?.[0]?.['$']?.BlueprintName;\n}\n"],"mappings":"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"}
@@ -11,136 +11,102 @@ exports.setBundleIdentifier = setBundleIdentifier;
11
11
  exports.setBundleIdentifierForPbxproj = setBundleIdentifierForPbxproj;
12
12
  exports.updateBundleIdentifierForPbxproj = updateBundleIdentifierForPbxproj;
13
13
  exports.withBundleIdentifier = void 0;
14
-
15
14
  function _plist() {
16
15
  const data = _interopRequireDefault(require("@expo/plist"));
17
-
18
16
  _plist = function () {
19
17
  return data;
20
18
  };
21
-
22
19
  return data;
23
20
  }
24
-
25
21
  function _assert() {
26
22
  const data = _interopRequireDefault(require("assert"));
27
-
28
23
  _assert = function () {
29
24
  return data;
30
25
  };
31
-
32
26
  return data;
33
27
  }
34
-
35
28
  function _fs() {
36
29
  const data = _interopRequireDefault(require("fs"));
37
-
38
30
  _fs = function () {
39
31
  return data;
40
32
  };
41
-
42
33
  return data;
43
34
  }
44
-
45
35
  function _xcode() {
46
36
  const data = _interopRequireDefault(require("xcode"));
47
-
48
37
  _xcode = function () {
49
38
  return data;
50
39
  };
51
-
52
40
  return data;
53
41
  }
54
-
55
42
  function _withDangerousMod() {
56
43
  const data = require("../plugins/withDangerousMod");
57
-
58
44
  _withDangerousMod = function () {
59
45
  return data;
60
46
  };
61
-
62
47
  return data;
63
48
  }
64
-
65
49
  function _Paths() {
66
50
  const data = require("./Paths");
67
-
68
51
  _Paths = function () {
69
52
  return data;
70
53
  };
71
-
72
54
  return data;
73
55
  }
74
-
75
56
  function _Target() {
76
57
  const data = require("./Target");
77
-
78
58
  _Target = function () {
79
59
  return data;
80
60
  };
81
-
82
61
  return data;
83
62
  }
84
-
85
63
  function _Xcodeproj() {
86
64
  const data = require("./utils/Xcodeproj");
87
-
88
65
  _Xcodeproj = function () {
89
66
  return data;
90
67
  };
91
-
92
68
  return data;
93
69
  }
94
-
95
70
  function _string() {
96
71
  const data = require("./utils/string");
97
-
98
72
  _string = function () {
99
73
  return data;
100
74
  };
101
-
102
75
  return data;
103
76
  }
104
-
105
77
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
106
-
107
78
  const withBundleIdentifier = (config, {
108
79
  bundleIdentifier
109
80
  }) => {
110
81
  return (0, _withDangerousMod().withDangerousMod)(config, ['ios', async config => {
111
82
  var _config$ios;
112
-
113
83
  const bundleId = bundleIdentifier !== null && bundleIdentifier !== void 0 ? bundleIdentifier : (_config$ios = config.ios) === null || _config$ios === void 0 ? void 0 : _config$ios.bundleIdentifier;
114
84
  (0, _assert().default)(bundleId, '`bundleIdentifier` must be defined in the app config (`expo.ios.bundleIdentifier`) or passed to the plugin `withBundleIdentifier`.');
115
85
  await setBundleIdentifierForPbxproj(config.modRequest.projectRoot, bundleId);
116
86
  return config;
117
87
  }]);
118
88
  };
119
-
120
89
  exports.withBundleIdentifier = withBundleIdentifier;
121
-
122
90
  function getBundleIdentifier(config) {
123
91
  var _config$ios$bundleIde, _config$ios2;
124
-
125
92
  return (_config$ios$bundleIde = (_config$ios2 = config.ios) === null || _config$ios2 === void 0 ? void 0 : _config$ios2.bundleIdentifier) !== null && _config$ios$bundleIde !== void 0 ? _config$ios$bundleIde : null;
126
93
  }
94
+
127
95
  /**
128
96
  * In Turtle v1 we set the bundleIdentifier directly on Info.plist rather
129
97
  * than in pbxproj
130
98
  */
131
-
132
-
133
99
  function setBundleIdentifier(config, infoPlist) {
134
100
  const bundleIdentifier = getBundleIdentifier(config);
135
-
136
101
  if (!bundleIdentifier) {
137
102
  return infoPlist;
138
103
  }
139
-
140
- return { ...infoPlist,
104
+ return {
105
+ ...infoPlist,
141
106
  CFBundleIdentifier: bundleIdentifier
142
107
  };
143
108
  }
109
+
144
110
  /**
145
111
  * Gets the bundle identifier defined in the Xcode project found in the project directory.
146
112
  *
@@ -156,55 +122,45 @@ function setBundleIdentifier(config, infoPlist) {
156
122
  * @param {string} buildConfiguration Build configuration. Defaults to 'Release'.
157
123
  * @returns {string | null} bundle identifier of the Xcode project or null if the project is not configured
158
124
  */
159
-
160
-
161
125
  function getBundleIdentifierFromPbxproj(projectRoot, {
162
126
  targetName,
163
127
  buildConfiguration = 'Release'
164
128
  } = {}) {
165
129
  let pbxprojPath;
166
-
167
130
  try {
168
131
  pbxprojPath = (0, _Paths().getPBXProjectPath)(projectRoot);
169
132
  } catch {
170
133
  return null;
171
134
  }
172
-
173
135
  const project = _xcode().default.project(pbxprojPath);
174
-
175
136
  project.parseSync();
176
137
  const xcBuildConfiguration = (0, _Target().getXCBuildConfigurationFromPbxproj)(project, {
177
138
  targetName,
178
139
  buildConfiguration
179
140
  });
180
-
181
141
  if (!xcBuildConfiguration) {
182
142
  return null;
183
143
  }
184
-
185
144
  return getProductBundleIdentifierFromBuildConfiguration(xcBuildConfiguration);
186
145
  }
187
-
188
146
  function getProductBundleIdentifierFromBuildConfiguration(xcBuildConfiguration) {
189
147
  const bundleIdentifierRaw = xcBuildConfiguration.buildSettings.PRODUCT_BUNDLE_IDENTIFIER;
190
-
191
148
  if (bundleIdentifierRaw) {
192
- const bundleIdentifier = (0, _string().trimQuotes)(bundleIdentifierRaw); // it's possible to use interpolation for the bundle identifier
149
+ const bundleIdentifier = (0, _string().trimQuotes)(bundleIdentifierRaw);
150
+ // it's possible to use interpolation for the bundle identifier
193
151
  // the most common case is when the last part of the id is set to `$(PRODUCT_NAME:rfc1034identifier)`
194
152
  // in this case, PRODUCT_NAME should be replaced with its value
195
153
  // the `rfc1034identifier` modifier replaces all non-alphanumeric characters with dashes
196
-
197
154
  const bundleIdentifierParts = bundleIdentifier.split('.');
198
-
199
155
  if (bundleIdentifierParts[bundleIdentifierParts.length - 1] === '$(PRODUCT_NAME:rfc1034identifier)' && xcBuildConfiguration.buildSettings.PRODUCT_NAME) {
200
156
  bundleIdentifierParts[bundleIdentifierParts.length - 1] = xcBuildConfiguration.buildSettings.PRODUCT_NAME.replace(/[^a-zA-Z0-9]/g, '-');
201
157
  }
202
-
203
158
  return bundleIdentifierParts.join('.');
204
159
  } else {
205
160
  return null;
206
161
  }
207
162
  }
163
+
208
164
  /**
209
165
  * Updates the bundle identifier for a given pbxproj
210
166
  *
@@ -212,31 +168,25 @@ function getProductBundleIdentifierFromBuildConfiguration(xcBuildConfiguration)
212
168
  * @param {string} bundleIdentifier Bundle identifier to set in the pbxproj
213
169
  * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME
214
170
  */
215
-
216
-
217
171
  function updateBundleIdentifierForPbxproj(pbxprojPath, bundleIdentifier, updateProductName = true) {
218
172
  const project = _xcode().default.project(pbxprojPath);
219
-
220
173
  project.parseSync();
221
174
  const [, nativeTarget] = (0, _Target().findFirstNativeTarget)(project);
222
175
  (0, _Xcodeproj().getBuildConfigurationsForListId)(project, nativeTarget.buildConfigurationList).forEach(([, item]) => {
223
176
  if (item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER === bundleIdentifier) {
224
177
  return;
225
178
  }
226
-
227
179
  item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER = `"${bundleIdentifier}"`;
228
-
229
180
  if (updateProductName) {
230
181
  const productName = bundleIdentifier.split('.').pop();
231
-
232
182
  if (!(productName !== null && productName !== void 0 && productName.includes('$'))) {
233
183
  item.buildSettings.PRODUCT_NAME = productName;
234
184
  }
235
185
  }
236
186
  });
237
-
238
187
  _fs().default.writeFileSync(pbxprojPath, project.writeSync());
239
188
  }
189
+
240
190
  /**
241
191
  * Updates the bundle identifier for pbx projects inside the ios directory of the given project root
242
192
  *
@@ -244,52 +194,43 @@ function updateBundleIdentifierForPbxproj(pbxprojPath, bundleIdentifier, updateP
244
194
  * @param {string} bundleIdentifier Desired bundle identifier
245
195
  * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME
246
196
  */
247
-
248
-
249
197
  function setBundleIdentifierForPbxproj(projectRoot, bundleIdentifier, updateProductName = true) {
250
198
  // Get all pbx projects in the ${projectRoot}/ios directory
251
199
  let pbxprojPaths = [];
252
-
253
200
  try {
254
201
  pbxprojPaths = (0, _Paths().getAllPBXProjectPaths)(projectRoot);
255
202
  } catch {}
256
-
257
203
  for (const pbxprojPath of pbxprojPaths) {
258
204
  updateBundleIdentifierForPbxproj(pbxprojPath, bundleIdentifier, updateProductName);
259
205
  }
260
206
  }
207
+
261
208
  /**
262
209
  * Reset bundle identifier field in Info.plist to use PRODUCT_BUNDLE_IDENTIFIER, as recommended by Apple.
263
210
  */
264
211
 
265
-
266
212
  const defaultBundleId = '$(PRODUCT_BUNDLE_IDENTIFIER)';
267
-
268
213
  function resetAllPlistBundleIdentifiers(projectRoot) {
269
214
  const infoPlistPaths = (0, _Paths().getAllInfoPlistPaths)(projectRoot);
270
-
271
215
  for (const plistPath of infoPlistPaths) {
272
216
  resetPlistBundleIdentifier(plistPath);
273
217
  }
274
218
  }
275
-
276
219
  function resetPlistBundleIdentifier(plistPath) {
277
220
  const rawPlist = _fs().default.readFileSync(plistPath, 'utf8');
278
-
279
221
  const plistObject = _plist().default.parse(rawPlist);
280
-
281
222
  if (plistObject.CFBundleIdentifier) {
282
- if (plistObject.CFBundleIdentifier === defaultBundleId) return; // attempt to match default Info.plist format
223
+ if (plistObject.CFBundleIdentifier === defaultBundleId) return;
283
224
 
225
+ // attempt to match default Info.plist format
284
226
  const format = {
285
227
  pretty: true,
286
228
  indent: `\t`
287
229
  };
288
-
289
- const xml = _plist().default.build({ ...plistObject,
230
+ const xml = _plist().default.build({
231
+ ...plistObject,
290
232
  CFBundleIdentifier: defaultBundleId
291
233
  }, format);
292
-
293
234
  if (xml !== rawPlist) {
294
235
  _fs().default.writeFileSync(plistPath, xml);
295
236
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BundleIdentifier.js","names":["withBundleIdentifier","config","bundleIdentifier","withDangerousMod","bundleId","ios","assert","setBundleIdentifierForPbxproj","modRequest","projectRoot","getBundleIdentifier","setBundleIdentifier","infoPlist","CFBundleIdentifier","getBundleIdentifierFromPbxproj","targetName","buildConfiguration","pbxprojPath","getPBXProjectPath","project","xcode","parseSync","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","getProductBundleIdentifierFromBuildConfiguration","bundleIdentifierRaw","buildSettings","PRODUCT_BUNDLE_IDENTIFIER","trimQuotes","bundleIdentifierParts","split","length","PRODUCT_NAME","replace","join","updateBundleIdentifierForPbxproj","updateProductName","nativeTarget","findFirstNativeTarget","getBuildConfigurationsForListId","buildConfigurationList","forEach","item","productName","pop","includes","fs","writeFileSync","writeSync","pbxprojPaths","getAllPBXProjectPaths","defaultBundleId","resetAllPlistBundleIdentifiers","infoPlistPaths","getAllInfoPlistPaths","plistPath","resetPlistBundleIdentifier","rawPlist","readFileSync","plistObject","plist","parse","format","pretty","indent","xml","build"],"sources":["../../src/ios/BundleIdentifier.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport plist, { PlistObject } from '@expo/plist';\nimport assert from 'assert';\nimport fs from 'fs';\nimport xcode, { XCBuildConfiguration } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withDangerousMod } from '../plugins/withDangerousMod';\nimport { InfoPlist } from './IosConfig.types';\nimport { getAllInfoPlistPaths, getAllPBXProjectPaths, getPBXProjectPath } from './Paths';\nimport { findFirstNativeTarget, getXCBuildConfigurationFromPbxproj } from './Target';\nimport { ConfigurationSectionEntry, getBuildConfigurationsForListId } from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport const withBundleIdentifier: ConfigPlugin<{ bundleIdentifier?: string }> = (\n config,\n { bundleIdentifier }\n) => {\n return withDangerousMod(config, [\n 'ios',\n async (config) => {\n const bundleId = bundleIdentifier ?? config.ios?.bundleIdentifier;\n assert(\n bundleId,\n '`bundleIdentifier` must be defined in the app config (`expo.ios.bundleIdentifier`) or passed to the plugin `withBundleIdentifier`.'\n );\n await setBundleIdentifierForPbxproj(config.modRequest.projectRoot, bundleId!);\n return config;\n },\n ]);\n};\n\nfunction getBundleIdentifier(config: Pick<ExpoConfig, 'ios'>): string | null {\n return config.ios?.bundleIdentifier ?? null;\n}\n\n/**\n * In Turtle v1 we set the bundleIdentifier directly on Info.plist rather\n * than in pbxproj\n */\nfunction setBundleIdentifier(config: ExpoConfig, infoPlist: InfoPlist): InfoPlist {\n const bundleIdentifier = getBundleIdentifier(config);\n\n if (!bundleIdentifier) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n CFBundleIdentifier: bundleIdentifier,\n };\n}\n\n/**\n * Gets the bundle identifier defined in the Xcode project found in the project directory.\n *\n * A bundle identifier is stored as a value in XCBuildConfiguration entry.\n * Those entries exist for every pair (build target, build configuration).\n * Unless target name is passed, the first target defined in the pbxproj is used\n * (to keep compatibility with the inaccurate legacy implementation of this function).\n * The build configuration is usually 'Release' or 'Debug'. However, it could be any arbitrary string.\n * Defaults to 'Release'.\n *\n * @param {string} projectRoot Path to project root containing the ios directory\n * @param {string} targetName Target name\n * @param {string} buildConfiguration Build configuration. Defaults to 'Release'.\n * @returns {string | null} bundle identifier of the Xcode project or null if the project is not configured\n */\nfunction getBundleIdentifierFromPbxproj(\n projectRoot: string,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): string | null {\n let pbxprojPath: string;\n try {\n pbxprojPath = getPBXProjectPath(projectRoot);\n } catch {\n return null;\n }\n const project = xcode.project(pbxprojPath);\n project.parseSync();\n\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n return getProductBundleIdentifierFromBuildConfiguration(xcBuildConfiguration);\n}\n\nfunction getProductBundleIdentifierFromBuildConfiguration(\n xcBuildConfiguration: XCBuildConfiguration\n): string | null {\n const bundleIdentifierRaw = xcBuildConfiguration.buildSettings.PRODUCT_BUNDLE_IDENTIFIER;\n if (bundleIdentifierRaw) {\n const bundleIdentifier = trimQuotes(bundleIdentifierRaw);\n // it's possible to use interpolation for the bundle identifier\n // the most common case is when the last part of the id is set to `$(PRODUCT_NAME:rfc1034identifier)`\n // in this case, PRODUCT_NAME should be replaced with its value\n // the `rfc1034identifier` modifier replaces all non-alphanumeric characters with dashes\n const bundleIdentifierParts = bundleIdentifier.split('.');\n if (\n bundleIdentifierParts[bundleIdentifierParts.length - 1] ===\n '$(PRODUCT_NAME:rfc1034identifier)' &&\n xcBuildConfiguration.buildSettings.PRODUCT_NAME\n ) {\n bundleIdentifierParts[bundleIdentifierParts.length - 1] =\n xcBuildConfiguration.buildSettings.PRODUCT_NAME.replace(/[^a-zA-Z0-9]/g, '-');\n }\n return bundleIdentifierParts.join('.');\n } else {\n return null;\n }\n}\n\n/**\n * Updates the bundle identifier for a given pbxproj\n *\n * @param {string} pbxprojPath Path to pbxproj file\n * @param {string} bundleIdentifier Bundle identifier to set in the pbxproj\n * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME\n */\nfunction updateBundleIdentifierForPbxproj(\n pbxprojPath: string,\n bundleIdentifier: string,\n updateProductName: boolean = true\n): void {\n const project = xcode.project(pbxprojPath);\n project.parseSync();\n\n const [, nativeTarget] = findFirstNativeTarget(project);\n\n getBuildConfigurationsForListId(project, nativeTarget.buildConfigurationList).forEach(\n ([, item]: ConfigurationSectionEntry) => {\n if (item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER === bundleIdentifier) {\n return;\n }\n\n item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER = `\"${bundleIdentifier}\"`;\n\n if (updateProductName) {\n const productName = bundleIdentifier.split('.').pop();\n if (!productName?.includes('$')) {\n item.buildSettings.PRODUCT_NAME = productName;\n }\n }\n }\n );\n fs.writeFileSync(pbxprojPath, project.writeSync());\n}\n\n/**\n * Updates the bundle identifier for pbx projects inside the ios directory of the given project root\n *\n * @param {string} projectRoot Path to project root containing the ios directory\n * @param {string} bundleIdentifier Desired bundle identifier\n * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME\n */\nfunction setBundleIdentifierForPbxproj(\n projectRoot: string,\n bundleIdentifier: string,\n updateProductName: boolean = true\n): void {\n // Get all pbx projects in the ${projectRoot}/ios directory\n let pbxprojPaths: string[] = [];\n try {\n pbxprojPaths = getAllPBXProjectPaths(projectRoot);\n } catch {}\n\n for (const pbxprojPath of pbxprojPaths) {\n updateBundleIdentifierForPbxproj(pbxprojPath, bundleIdentifier, updateProductName);\n }\n}\n\n/**\n * Reset bundle identifier field in Info.plist to use PRODUCT_BUNDLE_IDENTIFIER, as recommended by Apple.\n */\n\nconst defaultBundleId = '$(PRODUCT_BUNDLE_IDENTIFIER)';\n\nfunction resetAllPlistBundleIdentifiers(projectRoot: string): void {\n const infoPlistPaths = getAllInfoPlistPaths(projectRoot);\n\n for (const plistPath of infoPlistPaths) {\n resetPlistBundleIdentifier(plistPath);\n }\n}\n\nfunction resetPlistBundleIdentifier(plistPath: string): void {\n const rawPlist = fs.readFileSync(plistPath, 'utf8');\n const plistObject = plist.parse(rawPlist) as PlistObject;\n\n if (plistObject.CFBundleIdentifier) {\n if (plistObject.CFBundleIdentifier === defaultBundleId) return;\n\n // attempt to match default Info.plist format\n const format = { pretty: true, indent: `\\t` };\n\n const xml = plist.build(\n {\n ...plistObject,\n CFBundleIdentifier: defaultBundleId,\n },\n format\n );\n\n if (xml !== rawPlist) {\n fs.writeFileSync(plistPath, xml);\n }\n }\n}\n\nexport {\n getBundleIdentifier,\n setBundleIdentifier,\n getBundleIdentifierFromPbxproj,\n updateBundleIdentifierForPbxproj,\n setBundleIdentifierForPbxproj,\n resetAllPlistBundleIdentifiers,\n resetPlistBundleIdentifier,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"BundleIdentifier.js","names":["withBundleIdentifier","config","bundleIdentifier","withDangerousMod","bundleId","ios","assert","setBundleIdentifierForPbxproj","modRequest","projectRoot","getBundleIdentifier","setBundleIdentifier","infoPlist","CFBundleIdentifier","getBundleIdentifierFromPbxproj","targetName","buildConfiguration","pbxprojPath","getPBXProjectPath","project","xcode","parseSync","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","getProductBundleIdentifierFromBuildConfiguration","bundleIdentifierRaw","buildSettings","PRODUCT_BUNDLE_IDENTIFIER","trimQuotes","bundleIdentifierParts","split","length","PRODUCT_NAME","replace","join","updateBundleIdentifierForPbxproj","updateProductName","nativeTarget","findFirstNativeTarget","getBuildConfigurationsForListId","buildConfigurationList","forEach","item","productName","pop","includes","fs","writeFileSync","writeSync","pbxprojPaths","getAllPBXProjectPaths","defaultBundleId","resetAllPlistBundleIdentifiers","infoPlistPaths","getAllInfoPlistPaths","plistPath","resetPlistBundleIdentifier","rawPlist","readFileSync","plistObject","plist","parse","format","pretty","indent","xml","build"],"sources":["../../src/ios/BundleIdentifier.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport plist, { PlistObject } from '@expo/plist';\nimport assert from 'assert';\nimport fs from 'fs';\nimport xcode, { XCBuildConfiguration } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withDangerousMod } from '../plugins/withDangerousMod';\nimport { InfoPlist } from './IosConfig.types';\nimport { getAllInfoPlistPaths, getAllPBXProjectPaths, getPBXProjectPath } from './Paths';\nimport { findFirstNativeTarget, getXCBuildConfigurationFromPbxproj } from './Target';\nimport { ConfigurationSectionEntry, getBuildConfigurationsForListId } from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport const withBundleIdentifier: ConfigPlugin<{ bundleIdentifier?: string }> = (\n config,\n { bundleIdentifier }\n) => {\n return withDangerousMod(config, [\n 'ios',\n async (config) => {\n const bundleId = bundleIdentifier ?? config.ios?.bundleIdentifier;\n assert(\n bundleId,\n '`bundleIdentifier` must be defined in the app config (`expo.ios.bundleIdentifier`) or passed to the plugin `withBundleIdentifier`.'\n );\n await setBundleIdentifierForPbxproj(config.modRequest.projectRoot, bundleId!);\n return config;\n },\n ]);\n};\n\nfunction getBundleIdentifier(config: Pick<ExpoConfig, 'ios'>): string | null {\n return config.ios?.bundleIdentifier ?? null;\n}\n\n/**\n * In Turtle v1 we set the bundleIdentifier directly on Info.plist rather\n * than in pbxproj\n */\nfunction setBundleIdentifier(config: ExpoConfig, infoPlist: InfoPlist): InfoPlist {\n const bundleIdentifier = getBundleIdentifier(config);\n\n if (!bundleIdentifier) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n CFBundleIdentifier: bundleIdentifier,\n };\n}\n\n/**\n * Gets the bundle identifier defined in the Xcode project found in the project directory.\n *\n * A bundle identifier is stored as a value in XCBuildConfiguration entry.\n * Those entries exist for every pair (build target, build configuration).\n * Unless target name is passed, the first target defined in the pbxproj is used\n * (to keep compatibility with the inaccurate legacy implementation of this function).\n * The build configuration is usually 'Release' or 'Debug'. However, it could be any arbitrary string.\n * Defaults to 'Release'.\n *\n * @param {string} projectRoot Path to project root containing the ios directory\n * @param {string} targetName Target name\n * @param {string} buildConfiguration Build configuration. Defaults to 'Release'.\n * @returns {string | null} bundle identifier of the Xcode project or null if the project is not configured\n */\nfunction getBundleIdentifierFromPbxproj(\n projectRoot: string,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): string | null {\n let pbxprojPath: string;\n try {\n pbxprojPath = getPBXProjectPath(projectRoot);\n } catch {\n return null;\n }\n const project = xcode.project(pbxprojPath);\n project.parseSync();\n\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n return getProductBundleIdentifierFromBuildConfiguration(xcBuildConfiguration);\n}\n\nfunction getProductBundleIdentifierFromBuildConfiguration(\n xcBuildConfiguration: XCBuildConfiguration\n): string | null {\n const bundleIdentifierRaw = xcBuildConfiguration.buildSettings.PRODUCT_BUNDLE_IDENTIFIER;\n if (bundleIdentifierRaw) {\n const bundleIdentifier = trimQuotes(bundleIdentifierRaw);\n // it's possible to use interpolation for the bundle identifier\n // the most common case is when the last part of the id is set to `$(PRODUCT_NAME:rfc1034identifier)`\n // in this case, PRODUCT_NAME should be replaced with its value\n // the `rfc1034identifier` modifier replaces all non-alphanumeric characters with dashes\n const bundleIdentifierParts = bundleIdentifier.split('.');\n if (\n bundleIdentifierParts[bundleIdentifierParts.length - 1] ===\n '$(PRODUCT_NAME:rfc1034identifier)' &&\n xcBuildConfiguration.buildSettings.PRODUCT_NAME\n ) {\n bundleIdentifierParts[bundleIdentifierParts.length - 1] =\n xcBuildConfiguration.buildSettings.PRODUCT_NAME.replace(/[^a-zA-Z0-9]/g, '-');\n }\n return bundleIdentifierParts.join('.');\n } else {\n return null;\n }\n}\n\n/**\n * Updates the bundle identifier for a given pbxproj\n *\n * @param {string} pbxprojPath Path to pbxproj file\n * @param {string} bundleIdentifier Bundle identifier to set in the pbxproj\n * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME\n */\nfunction updateBundleIdentifierForPbxproj(\n pbxprojPath: string,\n bundleIdentifier: string,\n updateProductName: boolean = true\n): void {\n const project = xcode.project(pbxprojPath);\n project.parseSync();\n\n const [, nativeTarget] = findFirstNativeTarget(project);\n\n getBuildConfigurationsForListId(project, nativeTarget.buildConfigurationList).forEach(\n ([, item]: ConfigurationSectionEntry) => {\n if (item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER === bundleIdentifier) {\n return;\n }\n\n item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER = `\"${bundleIdentifier}\"`;\n\n if (updateProductName) {\n const productName = bundleIdentifier.split('.').pop();\n if (!productName?.includes('$')) {\n item.buildSettings.PRODUCT_NAME = productName;\n }\n }\n }\n );\n fs.writeFileSync(pbxprojPath, project.writeSync());\n}\n\n/**\n * Updates the bundle identifier for pbx projects inside the ios directory of the given project root\n *\n * @param {string} projectRoot Path to project root containing the ios directory\n * @param {string} bundleIdentifier Desired bundle identifier\n * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME\n */\nfunction setBundleIdentifierForPbxproj(\n projectRoot: string,\n bundleIdentifier: string,\n updateProductName: boolean = true\n): void {\n // Get all pbx projects in the ${projectRoot}/ios directory\n let pbxprojPaths: string[] = [];\n try {\n pbxprojPaths = getAllPBXProjectPaths(projectRoot);\n } catch {}\n\n for (const pbxprojPath of pbxprojPaths) {\n updateBundleIdentifierForPbxproj(pbxprojPath, bundleIdentifier, updateProductName);\n }\n}\n\n/**\n * Reset bundle identifier field in Info.plist to use PRODUCT_BUNDLE_IDENTIFIER, as recommended by Apple.\n */\n\nconst defaultBundleId = '$(PRODUCT_BUNDLE_IDENTIFIER)';\n\nfunction resetAllPlistBundleIdentifiers(projectRoot: string): void {\n const infoPlistPaths = getAllInfoPlistPaths(projectRoot);\n\n for (const plistPath of infoPlistPaths) {\n resetPlistBundleIdentifier(plistPath);\n }\n}\n\nfunction resetPlistBundleIdentifier(plistPath: string): void {\n const rawPlist = fs.readFileSync(plistPath, 'utf8');\n const plistObject = plist.parse(rawPlist) as PlistObject;\n\n if (plistObject.CFBundleIdentifier) {\n if (plistObject.CFBundleIdentifier === defaultBundleId) return;\n\n // attempt to match default Info.plist format\n const format = { pretty: true, indent: `\\t` };\n\n const xml = plist.build(\n {\n ...plistObject,\n CFBundleIdentifier: defaultBundleId,\n },\n format\n );\n\n if (xml !== rawPlist) {\n fs.writeFileSync(plistPath, xml);\n }\n }\n}\n\nexport {\n getBundleIdentifier,\n setBundleIdentifier,\n getBundleIdentifierFromPbxproj,\n updateBundleIdentifierForPbxproj,\n setBundleIdentifierForPbxproj,\n resetAllPlistBundleIdentifiers,\n resetPlistBundleIdentifier,\n};\n"],"mappings":";;;;;;;;;;;;;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA4C;AAErC,MAAMA,oBAAiE,GAAG,CAC/EC,MAAM,EACN;EAAEC;AAAiB,CAAC,KACjB;EACH,OAAO,IAAAC,oCAAgB,EAACF,MAAM,EAAE,CAC9B,KAAK,EACL,MAAOA,MAAM,IAAK;IAAA;IAChB,MAAMG,QAAQ,GAAGF,gBAAgB,aAAhBA,gBAAgB,cAAhBA,gBAAgB,kBAAID,MAAM,CAACI,GAAG,gDAAV,YAAYH,gBAAgB;IACjE,IAAAI,iBAAM,EACJF,QAAQ,EACR,oIAAoI,CACrI;IACD,MAAMG,6BAA6B,CAACN,MAAM,CAACO,UAAU,CAACC,WAAW,EAAEL,QAAQ,CAAE;IAC7E,OAAOH,MAAM;EACf,CAAC,CACF,CAAC;AACJ,CAAC;AAAC;AAEF,SAASS,mBAAmB,CAACT,MAA+B,EAAiB;EAAA;EAC3E,gDAAOA,MAAM,CAACI,GAAG,iDAAV,aAAYH,gBAAgB,yEAAI,IAAI;AAC7C;;AAEA;AACA;AACA;AACA;AACA,SAASS,mBAAmB,CAACV,MAAkB,EAAEW,SAAoB,EAAa;EAChF,MAAMV,gBAAgB,GAAGQ,mBAAmB,CAACT,MAAM,CAAC;EAEpD,IAAI,CAACC,gBAAgB,EAAE;IACrB,OAAOU,SAAS;EAClB;EAEA,OAAO;IACL,GAAGA,SAAS;IACZC,kBAAkB,EAAEX;EACtB,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASY,8BAA8B,CACrCL,WAAmB,EACnB;EACEM,UAAU;EACVC,kBAAkB,GAAG;AAC+B,CAAC,GAAG,CAAC,CAAC,EAC7C;EACf,IAAIC,WAAmB;EACvB,IAAI;IACFA,WAAW,GAAG,IAAAC,0BAAiB,EAACT,WAAW,CAAC;EAC9C,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;EACA,MAAMU,OAAO,GAAGC,gBAAK,CAACD,OAAO,CAACF,WAAW,CAAC;EAC1CE,OAAO,CAACE,SAAS,EAAE;EAEnB,MAAMC,oBAAoB,GAAG,IAAAC,4CAAkC,EAACJ,OAAO,EAAE;IACvEJ,UAAU;IACVC;EACF,CAAC,CAAC;EACF,IAAI,CAACM,oBAAoB,EAAE;IACzB,OAAO,IAAI;EACb;EACA,OAAOE,gDAAgD,CAACF,oBAAoB,CAAC;AAC/E;AAEA,SAASE,gDAAgD,CACvDF,oBAA0C,EAC3B;EACf,MAAMG,mBAAmB,GAAGH,oBAAoB,CAACI,aAAa,CAACC,yBAAyB;EACxF,IAAIF,mBAAmB,EAAE;IACvB,MAAMvB,gBAAgB,GAAG,IAAA0B,oBAAU,EAACH,mBAAmB,CAAC;IACxD;IACA;IACA;IACA;IACA,MAAMI,qBAAqB,GAAG3B,gBAAgB,CAAC4B,KAAK,CAAC,GAAG,CAAC;IACzD,IACED,qBAAqB,CAACA,qBAAqB,CAACE,MAAM,GAAG,CAAC,CAAC,KACrD,mCAAmC,IACrCT,oBAAoB,CAACI,aAAa,CAACM,YAAY,EAC/C;MACAH,qBAAqB,CAACA,qBAAqB,CAACE,MAAM,GAAG,CAAC,CAAC,GACrDT,oBAAoB,CAACI,aAAa,CAACM,YAAY,CAACC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;IACjF;IACA,OAAOJ,qBAAqB,CAACK,IAAI,CAAC,GAAG,CAAC;EACxC,CAAC,MAAM;IACL,OAAO,IAAI;EACb;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,gCAAgC,CACvClB,WAAmB,EACnBf,gBAAwB,EACxBkC,iBAA0B,GAAG,IAAI,EAC3B;EACN,MAAMjB,OAAO,GAAGC,gBAAK,CAACD,OAAO,CAACF,WAAW,CAAC;EAC1CE,OAAO,CAACE,SAAS,EAAE;EAEnB,MAAM,GAAGgB,YAAY,CAAC,GAAG,IAAAC,+BAAqB,EAACnB,OAAO,CAAC;EAEvD,IAAAoB,4CAA+B,EAACpB,OAAO,EAAEkB,YAAY,CAACG,sBAAsB,CAAC,CAACC,OAAO,CACnF,CAAC,GAAGC,IAAI,CAA4B,KAAK;IACvC,IAAIA,IAAI,CAAChB,aAAa,CAACC,yBAAyB,KAAKzB,gBAAgB,EAAE;MACrE;IACF;IAEAwC,IAAI,CAAChB,aAAa,CAACC,yBAAyB,GAAI,IAAGzB,gBAAiB,GAAE;IAEtE,IAAIkC,iBAAiB,EAAE;MACrB,MAAMO,WAAW,GAAGzC,gBAAgB,CAAC4B,KAAK,CAAC,GAAG,CAAC,CAACc,GAAG,EAAE;MACrD,IAAI,EAACD,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEE,QAAQ,CAAC,GAAG,CAAC,GAAE;QAC/BH,IAAI,CAAChB,aAAa,CAACM,YAAY,GAAGW,WAAW;MAC/C;IACF;EACF,CAAC,CACF;EACDG,aAAE,CAACC,aAAa,CAAC9B,WAAW,EAAEE,OAAO,CAAC6B,SAAS,EAAE,CAAC;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASzC,6BAA6B,CACpCE,WAAmB,EACnBP,gBAAwB,EACxBkC,iBAA0B,GAAG,IAAI,EAC3B;EACN;EACA,IAAIa,YAAsB,GAAG,EAAE;EAC/B,IAAI;IACFA,YAAY,GAAG,IAAAC,8BAAqB,EAACzC,WAAW,CAAC;EACnD,CAAC,CAAC,MAAM,CAAC;EAET,KAAK,MAAMQ,WAAW,IAAIgC,YAAY,EAAE;IACtCd,gCAAgC,CAAClB,WAAW,EAAEf,gBAAgB,EAAEkC,iBAAiB,CAAC;EACpF;AACF;;AAEA;AACA;AACA;;AAEA,MAAMe,eAAe,GAAG,8BAA8B;AAEtD,SAASC,8BAA8B,CAAC3C,WAAmB,EAAQ;EACjE,MAAM4C,cAAc,GAAG,IAAAC,6BAAoB,EAAC7C,WAAW,CAAC;EAExD,KAAK,MAAM8C,SAAS,IAAIF,cAAc,EAAE;IACtCG,0BAA0B,CAACD,SAAS,CAAC;EACvC;AACF;AAEA,SAASC,0BAA0B,CAACD,SAAiB,EAAQ;EAC3D,MAAME,QAAQ,GAAGX,aAAE,CAACY,YAAY,CAACH,SAAS,EAAE,MAAM,CAAC;EACnD,MAAMI,WAAW,GAAGC,gBAAK,CAACC,KAAK,CAACJ,QAAQ,CAAgB;EAExD,IAAIE,WAAW,CAAC9C,kBAAkB,EAAE;IAClC,IAAI8C,WAAW,CAAC9C,kBAAkB,KAAKsC,eAAe,EAAE;;IAExD;IACA,MAAMW,MAAM,GAAG;MAAEC,MAAM,EAAE,IAAI;MAAEC,MAAM,EAAG;IAAI,CAAC;IAE7C,MAAMC,GAAG,GAAGL,gBAAK,CAACM,KAAK,CACrB;MACE,GAAGP,WAAW;MACd9C,kBAAkB,EAAEsC;IACtB,CAAC,EACDW,MAAM,CACP;IAED,IAAIG,GAAG,KAAKR,QAAQ,EAAE;MACpBX,aAAE,CAACC,aAAa,CAACQ,SAAS,EAAEU,GAAG,CAAC;IAClC;EACF;AACF"}
@@ -9,27 +9,20 @@ exports.getIsTabletOnly = getIsTabletOnly;
9
9
  exports.getSupportsTablet = getSupportsTablet;
10
10
  exports.setDeviceFamily = setDeviceFamily;
11
11
  exports.withDeviceFamily = void 0;
12
-
13
12
  function _iosPlugins() {
14
13
  const data = require("../plugins/ios-plugins");
15
-
16
14
  _iosPlugins = function () {
17
15
  return data;
18
16
  };
19
-
20
17
  return data;
21
18
  }
22
-
23
19
  function _warnings() {
24
20
  const data = require("../utils/warnings");
25
-
26
21
  _warnings = function () {
27
22
  return data;
28
23
  };
29
-
30
24
  return data;
31
25
  }
32
-
33
26
  const withDeviceFamily = config => {
34
27
  return (0, _iosPlugins().withXcodeProject)(config, async config => {
35
28
  config.modResults = await setDeviceFamily(config, {
@@ -38,32 +31,24 @@ const withDeviceFamily = config => {
38
31
  return config;
39
32
  });
40
33
  };
41
-
42
34
  exports.withDeviceFamily = withDeviceFamily;
43
-
44
35
  function getSupportsTablet(config) {
45
36
  var _config$ios;
46
-
47
37
  return !!((_config$ios = config.ios) !== null && _config$ios !== void 0 && _config$ios.supportsTablet);
48
38
  }
49
-
50
39
  function getIsTabletOnly(config) {
51
40
  var _config$ios2;
52
-
53
41
  return !!(config !== null && config !== void 0 && (_config$ios2 = config.ios) !== null && _config$ios2 !== void 0 && _config$ios2.isTabletOnly);
54
42
  }
55
-
56
43
  function getDeviceFamilies(config) {
57
44
  var _config$ios3;
58
-
59
45
  const supportsTablet = getSupportsTablet(config);
60
46
  const isTabletOnly = getIsTabletOnly(config);
61
-
62
47
  if (isTabletOnly && ((_config$ios3 = config.ios) === null || _config$ios3 === void 0 ? void 0 : _config$ios3.supportsTablet) === false) {
63
48
  (0, _warnings().addWarningIOS)('ios.supportsTablet', `Found contradictory values: \`{ ios: { isTabletOnly: true, supportsTablet: false } }\`. Using \`{ isTabletOnly: true }\`.`);
64
- } // 1 is iPhone, 2 is iPad
65
-
49
+ }
66
50
 
51
+ // 1 is iPhone, 2 is iPad
67
52
  if (isTabletOnly) {
68
53
  return [2];
69
54
  } else if (supportsTablet) {
@@ -73,27 +58,25 @@ function getDeviceFamilies(config) {
73
58
  return [1];
74
59
  }
75
60
  }
61
+
76
62
  /**
77
63
  * Wrapping the families in double quotes is the only way to set a value with a comma in it.
78
64
  *
79
65
  * @param deviceFamilies
80
66
  */
81
-
82
-
83
67
  function formatDeviceFamilies(deviceFamilies) {
84
68
  return `"${deviceFamilies.join(',')}"`;
85
69
  }
70
+
86
71
  /**
87
72
  * Add to pbxproj under TARGETED_DEVICE_FAMILY
88
73
  */
89
-
90
-
91
74
  function setDeviceFamily(config, {
92
75
  project
93
76
  }) {
94
77
  const deviceFamilies = formatDeviceFamilies(getDeviceFamilies(config));
95
- const configurations = project.pbxXCBuildConfigurationSection(); // @ts-ignore
96
-
78
+ const configurations = project.pbxXCBuildConfigurationSection();
79
+ // @ts-ignore
97
80
  for (const {
98
81
  buildSettings
99
82
  } of Object.values(configurations || {})) {
@@ -103,7 +86,6 @@ function setDeviceFamily(config, {
103
86
  buildSettings.TARGETED_DEVICE_FAMILY = deviceFamilies;
104
87
  }
105
88
  }
106
-
107
89
  return project;
108
90
  }
109
91
  //# sourceMappingURL=DeviceFamily.js.map