@expo/config-plugins 5.0.4 → 6.0.1

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 +16 -56
  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 +10 -32
  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
@@ -19,53 +19,37 @@ exports.readAndroidManifestAsync = readAndroidManifestAsync;
19
19
  exports.removeMetaDataItemFromMainApplication = removeMetaDataItemFromMainApplication;
20
20
  exports.removeUsesLibraryItemFromMainApplication = removeUsesLibraryItemFromMainApplication;
21
21
  exports.writeAndroidManifestAsync = writeAndroidManifestAsync;
22
-
23
22
  function _assert() {
24
23
  const data = _interopRequireDefault(require("assert"));
25
-
26
24
  _assert = function () {
27
25
  return data;
28
26
  };
29
-
30
27
  return data;
31
28
  }
32
-
33
29
  function _fs() {
34
30
  const data = _interopRequireDefault(require("fs"));
35
-
36
31
  _fs = function () {
37
32
  return data;
38
33
  };
39
-
40
34
  return data;
41
35
  }
42
-
43
36
  function _path() {
44
37
  const data = _interopRequireDefault(require("path"));
45
-
46
38
  _path = function () {
47
39
  return data;
48
40
  };
49
-
50
41
  return data;
51
42
  }
52
-
53
43
  function XML() {
54
44
  const data = _interopRequireWildcard(require("../utils/XML"));
55
-
56
45
  XML = function () {
57
46
  return data;
58
47
  };
59
-
60
48
  return data;
61
49
  }
62
-
63
50
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
64
-
65
51
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
66
-
67
52
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
68
-
69
53
  async function writeAndroidManifestAsync(manifestPath, androidManifest) {
70
54
  const manifestXml = XML().format(androidManifest);
71
55
  await _fs().default.promises.mkdir(_path().default.dirname(manifestPath), {
@@ -73,81 +57,64 @@ async function writeAndroidManifestAsync(manifestPath, androidManifest) {
73
57
  });
74
58
  await _fs().default.promises.writeFile(manifestPath, manifestXml);
75
59
  }
76
-
77
60
  async function readAndroidManifestAsync(manifestPath) {
78
61
  const xml = await XML().readXMLAsync({
79
62
  path: manifestPath
80
63
  });
81
-
82
64
  if (!isManifest(xml)) {
83
65
  throw new Error('Invalid manifest found at: ' + manifestPath);
84
66
  }
85
-
86
67
  return xml;
87
68
  }
88
-
89
69
  function isManifest(xml) {
90
70
  // TODO: Maybe more validation
91
71
  return !!xml.manifest;
92
72
  }
93
- /** Returns the `manifest.application` tag ending in `.MainApplication` */
94
-
95
73
 
74
+ /** Returns the `manifest.application` tag ending in `.MainApplication` */
96
75
  function getMainApplication(androidManifest) {
97
76
  var _androidManifest$mani, _androidManifest$mani2, _androidManifest$mani3;
98
-
99
77
  return (_androidManifest$mani = androidManifest === null || androidManifest === void 0 ? void 0 : (_androidManifest$mani2 = androidManifest.manifest) === null || _androidManifest$mani2 === void 0 ? void 0 : (_androidManifest$mani3 = _androidManifest$mani2.application) === null || _androidManifest$mani3 === void 0 ? void 0 : _androidManifest$mani3.filter(e => {
100
78
  var _e$$;
101
-
102
79
  return e === null || e === void 0 ? void 0 : (_e$$ = e.$) === null || _e$$ === void 0 ? void 0 : _e$$['android:name'].endsWith('.MainApplication');
103
80
  })[0]) !== null && _androidManifest$mani !== void 0 ? _androidManifest$mani : null;
104
81
  }
105
-
106
82
  function getMainApplicationOrThrow(androidManifest) {
107
83
  const mainApplication = getMainApplication(androidManifest);
108
84
  (0, _assert().default)(mainApplication, 'AndroidManifest.xml is missing the required MainApplication element');
109
85
  return mainApplication;
110
86
  }
111
-
112
87
  function getMainActivityOrThrow(androidManifest) {
113
88
  const mainActivity = getMainActivity(androidManifest);
114
89
  (0, _assert().default)(mainActivity, 'AndroidManifest.xml is missing the required MainActivity element');
115
90
  return mainActivity;
116
91
  }
117
-
118
92
  function getRunnableActivity(androidManifest) {
119
93
  var _androidManifest$mani4, _androidManifest$mani5, _androidManifest$mani6, _androidManifest$mani7, _androidManifest$mani8;
120
-
121
94
  // Get enabled activities
122
95
  const enabledActivities = androidManifest === null || androidManifest === void 0 ? void 0 : (_androidManifest$mani4 = androidManifest.manifest) === null || _androidManifest$mani4 === void 0 ? void 0 : (_androidManifest$mani5 = _androidManifest$mani4.application) === null || _androidManifest$mani5 === void 0 ? void 0 : (_androidManifest$mani6 = _androidManifest$mani5[0]) === null || _androidManifest$mani6 === void 0 ? void 0 : (_androidManifest$mani7 = _androidManifest$mani6.activity) === null || _androidManifest$mani7 === void 0 ? void 0 : (_androidManifest$mani8 = _androidManifest$mani7.filter) === null || _androidManifest$mani8 === void 0 ? void 0 : _androidManifest$mani8.call(_androidManifest$mani7, e => e.$['android:enabled'] !== 'false' && e.$['android:enabled'] !== false);
123
-
124
96
  if (!enabledActivities) {
125
97
  return null;
126
- } // Get the activity that has a runnable intent-filter
127
-
98
+ }
128
99
 
100
+ // Get the activity that has a runnable intent-filter
129
101
  for (const activity of enabledActivities) {
130
102
  if (Array.isArray(activity['intent-filter'])) {
131
103
  for (const intentFilter of activity['intent-filter']) {
132
104
  var _intentFilter$action, _intentFilter$categor;
133
-
134
105
  if ((_intentFilter$action = intentFilter.action) !== null && _intentFilter$action !== void 0 && _intentFilter$action.find(action => action.$['android:name'] === 'android.intent.action.MAIN') && (_intentFilter$categor = intentFilter.category) !== null && _intentFilter$categor !== void 0 && _intentFilter$categor.find(category => category.$['android:name'] === 'android.intent.category.LAUNCHER')) {
135
106
  return activity;
136
107
  }
137
108
  }
138
109
  }
139
110
  }
140
-
141
111
  return null;
142
112
  }
143
-
144
113
  function getMainActivity(androidManifest) {
145
114
  var _androidManifest$mani9, _androidManifest$mani10, _androidManifest$mani11, _androidManifest$mani12, _androidManifest$mani13, _mainActivity$;
146
-
147
115
  const mainActivity = androidManifest === null || androidManifest === void 0 ? void 0 : (_androidManifest$mani9 = androidManifest.manifest) === null || _androidManifest$mani9 === void 0 ? void 0 : (_androidManifest$mani10 = _androidManifest$mani9.application) === null || _androidManifest$mani10 === void 0 ? void 0 : (_androidManifest$mani11 = _androidManifest$mani10[0]) === null || _androidManifest$mani11 === void 0 ? void 0 : (_androidManifest$mani12 = _androidManifest$mani11.activity) === null || _androidManifest$mani12 === void 0 ? void 0 : (_androidManifest$mani13 = _androidManifest$mani12.filter) === null || _androidManifest$mani13 === void 0 ? void 0 : _androidManifest$mani13.call(_androidManifest$mani12, e => e.$['android:name'] === '.MainActivity');
148
116
  return (_mainActivity$ = mainActivity === null || mainActivity === void 0 ? void 0 : mainActivity[0]) !== null && _mainActivity$ !== void 0 ? _mainActivity$ : null;
149
117
  }
150
-
151
118
  function addMetaDataItemToMainApplication(mainApplication, itemName, itemValue, itemType = 'value') {
152
119
  let existingMetaDataItem;
153
120
  const newItem = {
@@ -156,10 +123,8 @@ function addMetaDataItemToMainApplication(mainApplication, itemName, itemValue,
156
123
  [itemType]: itemValue
157
124
  })
158
125
  };
159
-
160
126
  if (mainApplication['meta-data']) {
161
127
  existingMetaDataItem = mainApplication['meta-data'].filter(e => e.$['android:name'] === itemName);
162
-
163
128
  if (existingMetaDataItem.length) {
164
129
  existingMetaDataItem[0].$[`android:${itemType}`] = itemValue;
165
130
  } else {
@@ -168,61 +133,45 @@ function addMetaDataItemToMainApplication(mainApplication, itemName, itemValue,
168
133
  } else {
169
134
  mainApplication['meta-data'] = [newItem];
170
135
  }
171
-
172
136
  return mainApplication;
173
137
  }
174
-
175
138
  function removeMetaDataItemFromMainApplication(mainApplication, itemName) {
176
139
  const index = findMetaDataItem(mainApplication, itemName);
177
-
178
140
  if (mainApplication !== null && mainApplication !== void 0 && mainApplication['meta-data'] && index > -1) {
179
141
  mainApplication['meta-data'].splice(index, 1);
180
142
  }
181
-
182
143
  return mainApplication;
183
144
  }
184
-
185
145
  function findApplicationSubItem(mainApplication, category, itemName) {
186
146
  const parent = mainApplication[category];
187
-
188
147
  if (Array.isArray(parent)) {
189
148
  const index = parent.findIndex(e => e.$['android:name'] === itemName);
190
149
  return index;
191
150
  }
192
-
193
151
  return -1;
194
152
  }
195
-
196
153
  function findMetaDataItem(mainApplication, itemName) {
197
154
  return findApplicationSubItem(mainApplication, 'meta-data', itemName);
198
155
  }
199
-
200
156
  function findUsesLibraryItem(mainApplication, itemName) {
201
157
  return findApplicationSubItem(mainApplication, 'uses-library', itemName);
202
158
  }
203
-
204
159
  function getMainApplicationMetaDataValue(androidManifest, name) {
205
160
  const mainApplication = getMainApplication(androidManifest);
206
-
207
161
  if (mainApplication !== null && mainApplication !== void 0 && mainApplication.hasOwnProperty('meta-data')) {
208
162
  var _mainApplication$meta, _item$$$androidValue;
209
-
210
163
  const item = mainApplication === null || mainApplication === void 0 ? void 0 : (_mainApplication$meta = mainApplication['meta-data']) === null || _mainApplication$meta === void 0 ? void 0 : _mainApplication$meta.find(e => e.$['android:name'] === name);
211
164
  return (_item$$$androidValue = item === null || item === void 0 ? void 0 : item.$['android:value']) !== null && _item$$$androidValue !== void 0 ? _item$$$androidValue : null;
212
165
  }
213
-
214
166
  return null;
215
167
  }
216
-
217
168
  function addUsesLibraryItemToMainApplication(mainApplication, item) {
218
169
  let existingMetaDataItem;
219
170
  const newItem = {
220
171
  $: prefixAndroidKeys(item)
221
172
  };
222
-
223
173
  if (mainApplication['uses-library']) {
224
174
  existingMetaDataItem = mainApplication['uses-library'].filter(e => e.$['android:name'] === item.name);
225
-
226
175
  if (existingMetaDataItem.length) {
227
176
  existingMetaDataItem[0].$ = newItem.$;
228
177
  } else {
@@ -231,58 +180,50 @@ function addUsesLibraryItemToMainApplication(mainApplication, item) {
231
180
  } else {
232
181
  mainApplication['uses-library'] = [newItem];
233
182
  }
234
-
235
183
  return mainApplication;
236
184
  }
237
-
238
185
  function removeUsesLibraryItemFromMainApplication(mainApplication, itemName) {
239
186
  const index = findUsesLibraryItem(mainApplication, itemName);
240
-
241
187
  if (mainApplication !== null && mainApplication !== void 0 && mainApplication['uses-library'] && index > -1) {
242
188
  mainApplication['uses-library'].splice(index, 1);
243
189
  }
244
-
245
190
  return mainApplication;
246
191
  }
247
-
248
192
  function prefixAndroidKeys(head) {
249
193
  // prefix all keys with `android:`
250
- return Object.entries(head).reduce((prev, [key, curr]) => ({ ...prev,
194
+ return Object.entries(head).reduce((prev, [key, curr]) => ({
195
+ ...prev,
251
196
  [`android:${key}`]: curr
252
197
  }), {});
253
198
  }
199
+
254
200
  /**
255
201
  * Ensure the `tools:*` namespace is available in the manifest.
256
202
  *
257
203
  * @param manifest AndroidManifest.xml
258
204
  * @returns manifest with the `tools:*` namespace available
259
205
  */
260
-
261
-
262
206
  function ensureToolsAvailable(manifest) {
263
207
  return ensureManifestHasNamespace(manifest, {
264
208
  namespace: 'xmlns:tools',
265
209
  url: 'http://schemas.android.com/tools'
266
210
  });
267
211
  }
212
+
268
213
  /**
269
214
  * Ensure a particular namespace is available in the manifest.
270
215
  *
271
216
  * @param manifest `AndroidManifest.xml`
272
217
  * @returns manifest with the provided namespace available
273
218
  */
274
-
275
-
276
219
  function ensureManifestHasNamespace(manifest, {
277
220
  namespace,
278
221
  url
279
222
  }) {
280
223
  var _manifest$manifest, _manifest$manifest$$;
281
-
282
224
  if (manifest !== null && manifest !== void 0 && (_manifest$manifest = manifest.manifest) !== null && _manifest$manifest !== void 0 && (_manifest$manifest$$ = _manifest$manifest.$) !== null && _manifest$manifest$$ !== void 0 && _manifest$manifest$$[namespace]) {
283
225
  return manifest;
284
226
  }
285
-
286
227
  manifest.manifest.$[namespace] = url;
287
228
  return manifest;
288
229
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Manifest.js","names":["writeAndroidManifestAsync","manifestPath","androidManifest","manifestXml","XML","format","fs","promises","mkdir","path","dirname","recursive","writeFile","readAndroidManifestAsync","xml","readXMLAsync","isManifest","Error","manifest","getMainApplication","application","filter","e","$","endsWith","getMainApplicationOrThrow","mainApplication","assert","getMainActivityOrThrow","mainActivity","getMainActivity","getRunnableActivity","enabledActivities","activity","Array","isArray","intentFilter","action","find","category","addMetaDataItemToMainApplication","itemName","itemValue","itemType","existingMetaDataItem","newItem","prefixAndroidKeys","name","length","push","removeMetaDataItemFromMainApplication","index","findMetaDataItem","splice","findApplicationSubItem","parent","findIndex","findUsesLibraryItem","getMainApplicationMetaDataValue","hasOwnProperty","item","addUsesLibraryItemToMainApplication","removeUsesLibraryItemFromMainApplication","head","Object","entries","reduce","prev","key","curr","ensureToolsAvailable","ensureManifestHasNamespace","namespace","url"],"sources":["../../src/android/Manifest.ts"],"sourcesContent":["import assert from 'assert';\nimport fs from 'fs';\nimport path from 'path';\n\nimport * as XML from '../utils/XML';\n\nexport type StringBoolean = 'true' | 'false';\n\ntype ManifestMetaDataAttributes = AndroidManifestAttributes & {\n 'android:value'?: string;\n 'android:resource'?: string;\n};\n\ntype AndroidManifestAttributes = {\n 'android:name': string | 'android.intent.action.VIEW';\n 'tools:node'?: string | 'remove';\n};\n\ntype ManifestAction = {\n $: AndroidManifestAttributes;\n};\n\ntype ManifestCategory = {\n $: AndroidManifestAttributes;\n};\n\ntype ManifestData = {\n $: {\n [key: string]: string | undefined;\n 'android:host'?: string;\n 'android:pathPrefix'?: string;\n 'android:scheme'?: string;\n };\n};\n\ntype ManifestReceiver = {\n $: AndroidManifestAttributes & {\n 'android:exported'?: StringBoolean;\n 'android:enabled'?: StringBoolean;\n };\n 'intent-filter'?: ManifestIntentFilter[];\n};\n\nexport type ManifestIntentFilter = {\n $?: {\n 'android:autoVerify'?: StringBoolean;\n 'data-generated'?: StringBoolean;\n };\n action?: ManifestAction[];\n data?: ManifestData[];\n category?: ManifestCategory[];\n};\n\nexport type ManifestMetaData = {\n $: ManifestMetaDataAttributes;\n};\n\ntype ManifestServiceAttributes = AndroidManifestAttributes & {\n 'android:enabled'?: StringBoolean;\n 'android:exported'?: StringBoolean;\n 'android:permission'?: string;\n // ...\n};\n\ntype ManifestService = {\n $: ManifestServiceAttributes;\n 'intent-filter'?: ManifestIntentFilter[];\n};\n\ntype ManifestApplicationAttributes = {\n 'android:name': string | '.MainApplication';\n 'android:icon'?: string;\n 'android:roundIcon'?: string;\n 'android:label'?: string;\n 'android:allowBackup'?: StringBoolean;\n 'android:largeHeap'?: StringBoolean;\n 'android:requestLegacyExternalStorage'?: StringBoolean;\n 'android:usesCleartextTraffic'?: StringBoolean;\n [key: string]: string | undefined;\n};\n\nexport type ManifestActivity = {\n $: ManifestApplicationAttributes & {\n 'android:exported'?: StringBoolean;\n 'android:launchMode'?: string;\n 'android:theme'?: string;\n 'android:windowSoftInputMode'?:\n | string\n | 'stateUnspecified'\n | 'stateUnchanged'\n | 'stateHidden'\n | 'stateAlwaysHidden'\n | 'stateVisible'\n | 'stateAlwaysVisible'\n | 'adjustUnspecified'\n | 'adjustResize'\n | 'adjustPan';\n [key: string]: string | undefined;\n };\n 'intent-filter'?: ManifestIntentFilter[];\n // ...\n};\n\nexport type ManifestUsesLibrary = {\n $: AndroidManifestAttributes & {\n 'android:required'?: StringBoolean;\n };\n};\n\nexport type ManifestApplication = {\n $: ManifestApplicationAttributes;\n activity?: ManifestActivity[];\n service?: ManifestService[];\n receiver?: ManifestReceiver[];\n 'meta-data'?: ManifestMetaData[];\n 'uses-library'?: ManifestUsesLibrary[];\n // ...\n};\n\ntype ManifestPermission = {\n $: AndroidManifestAttributes & {\n 'android:protectionLevel'?: string | 'signature';\n };\n};\n\nexport type ManifestUsesPermission = {\n $: AndroidManifestAttributes;\n};\n\ntype ManifestUsesFeature = {\n $: AndroidManifestAttributes & {\n 'android:glEsVersion'?: string;\n 'android:required': StringBoolean;\n };\n};\n\nexport type AndroidManifest = {\n manifest: {\n // Probably more, but this is currently all we'd need for most cases in Expo.\n $: {\n 'xmlns:android': string;\n 'xmlns:tools'?: string;\n package?: string;\n [key: string]: string | undefined;\n };\n permission?: ManifestPermission[];\n 'uses-permission'?: ManifestUsesPermission[];\n 'uses-permission-sdk-23'?: ManifestUsesPermission[];\n 'uses-feature'?: ManifestUsesFeature[];\n application?: ManifestApplication[];\n };\n};\n\nexport async function writeAndroidManifestAsync(\n manifestPath: string,\n androidManifest: AndroidManifest\n): Promise<void> {\n const manifestXml = XML.format(androidManifest);\n await fs.promises.mkdir(path.dirname(manifestPath), { recursive: true });\n await fs.promises.writeFile(manifestPath, manifestXml);\n}\n\nexport async function readAndroidManifestAsync(manifestPath: string): Promise<AndroidManifest> {\n const xml = await XML.readXMLAsync({ path: manifestPath });\n if (!isManifest(xml)) {\n throw new Error('Invalid manifest found at: ' + manifestPath);\n }\n return xml;\n}\n\nfunction isManifest(xml: XML.XMLObject): xml is AndroidManifest {\n // TODO: Maybe more validation\n return !!xml.manifest;\n}\n\n/** Returns the `manifest.application` tag ending in `.MainApplication` */\nexport function getMainApplication(androidManifest: AndroidManifest): ManifestApplication | null {\n return (\n androidManifest?.manifest?.application?.filter((e) =>\n e?.$?.['android:name'].endsWith('.MainApplication')\n )[0] ?? null\n );\n}\n\nexport function getMainApplicationOrThrow(androidManifest: AndroidManifest): ManifestApplication {\n const mainApplication = getMainApplication(androidManifest);\n assert(mainApplication, 'AndroidManifest.xml is missing the required MainApplication element');\n return mainApplication;\n}\n\nexport function getMainActivityOrThrow(androidManifest: AndroidManifest): ManifestActivity {\n const mainActivity = getMainActivity(androidManifest);\n assert(mainActivity, 'AndroidManifest.xml is missing the required MainActivity element');\n return mainActivity;\n}\n\nexport function getRunnableActivity(androidManifest: AndroidManifest): ManifestActivity | null {\n // Get enabled activities\n const enabledActivities = androidManifest?.manifest?.application?.[0]?.activity?.filter?.(\n (e: any) => e.$['android:enabled'] !== 'false' && e.$['android:enabled'] !== false\n );\n\n if (!enabledActivities) {\n return null;\n }\n\n // Get the activity that has a runnable intent-filter\n for (const activity of enabledActivities) {\n if (Array.isArray(activity['intent-filter'])) {\n for (const intentFilter of activity['intent-filter']) {\n if (\n intentFilter.action?.find(\n (action) => action.$['android:name'] === 'android.intent.action.MAIN'\n ) &&\n intentFilter.category?.find(\n (category) => category.$['android:name'] === 'android.intent.category.LAUNCHER'\n )\n ) {\n return activity;\n }\n }\n }\n }\n\n return null;\n}\n\nexport function getMainActivity(androidManifest: AndroidManifest): ManifestActivity | null {\n const mainActivity = androidManifest?.manifest?.application?.[0]?.activity?.filter?.(\n (e: any) => e.$['android:name'] === '.MainActivity'\n );\n return mainActivity?.[0] ?? null;\n}\n\nexport function addMetaDataItemToMainApplication(\n mainApplication: ManifestApplication,\n itemName: string,\n itemValue: string,\n itemType: 'resource' | 'value' = 'value'\n): ManifestApplication {\n let existingMetaDataItem;\n const newItem = {\n $: prefixAndroidKeys({ name: itemName, [itemType]: itemValue }),\n } as ManifestMetaData;\n if (mainApplication['meta-data']) {\n existingMetaDataItem = mainApplication['meta-data'].filter(\n (e: any) => e.$['android:name'] === itemName\n );\n if (existingMetaDataItem.length) {\n existingMetaDataItem[0].$[`android:${itemType}` as keyof ManifestMetaDataAttributes] =\n itemValue;\n } else {\n mainApplication['meta-data'].push(newItem);\n }\n } else {\n mainApplication['meta-data'] = [newItem];\n }\n return mainApplication;\n}\n\nexport function removeMetaDataItemFromMainApplication(mainApplication: any, itemName: string) {\n const index = findMetaDataItem(mainApplication, itemName);\n if (mainApplication?.['meta-data'] && index > -1) {\n mainApplication['meta-data'].splice(index, 1);\n }\n return mainApplication;\n}\n\nfunction findApplicationSubItem(\n mainApplication: ManifestApplication,\n category: keyof ManifestApplication,\n itemName: string\n): number {\n const parent = mainApplication[category];\n if (Array.isArray(parent)) {\n const index = parent.findIndex((e: any) => e.$['android:name'] === itemName);\n\n return index;\n }\n return -1;\n}\n\nexport function findMetaDataItem(mainApplication: any, itemName: string): number {\n return findApplicationSubItem(mainApplication, 'meta-data', itemName);\n}\n\nexport function findUsesLibraryItem(mainApplication: any, itemName: string): number {\n return findApplicationSubItem(mainApplication, 'uses-library', itemName);\n}\n\nexport function getMainApplicationMetaDataValue(\n androidManifest: AndroidManifest,\n name: string\n): string | null {\n const mainApplication = getMainApplication(androidManifest);\n\n if (mainApplication?.hasOwnProperty('meta-data')) {\n const item = mainApplication?.['meta-data']?.find((e: any) => e.$['android:name'] === name);\n return item?.$['android:value'] ?? null;\n }\n\n return null;\n}\n\nexport function addUsesLibraryItemToMainApplication(\n mainApplication: ManifestApplication,\n item: { name: string; required?: boolean }\n): ManifestApplication {\n let existingMetaDataItem;\n const newItem = {\n $: prefixAndroidKeys(item),\n } as ManifestUsesLibrary;\n\n if (mainApplication['uses-library']) {\n existingMetaDataItem = mainApplication['uses-library'].filter(\n (e) => e.$['android:name'] === item.name\n );\n if (existingMetaDataItem.length) {\n existingMetaDataItem[0].$ = newItem.$;\n } else {\n mainApplication['uses-library'].push(newItem);\n }\n } else {\n mainApplication['uses-library'] = [newItem];\n }\n return mainApplication;\n}\n\nexport function removeUsesLibraryItemFromMainApplication(\n mainApplication: ManifestApplication,\n itemName: string\n) {\n const index = findUsesLibraryItem(mainApplication, itemName);\n if (mainApplication?.['uses-library'] && index > -1) {\n mainApplication['uses-library'].splice(index, 1);\n }\n return mainApplication;\n}\n\nexport function prefixAndroidKeys<T extends Record<string, any> = Record<string, string>>(\n head: T\n): Record<string, any> {\n // prefix all keys with `android:`\n return Object.entries(head).reduce(\n (prev, [key, curr]) => ({ ...prev, [`android:${key}`]: curr }),\n {} as T\n );\n}\n\n/**\n * Ensure the `tools:*` namespace is available in the manifest.\n *\n * @param manifest AndroidManifest.xml\n * @returns manifest with the `tools:*` namespace available\n */\nexport function ensureToolsAvailable(manifest: AndroidManifest) {\n return ensureManifestHasNamespace(manifest, {\n namespace: 'xmlns:tools',\n url: 'http://schemas.android.com/tools',\n });\n}\n\n/**\n * Ensure a particular namespace is available in the manifest.\n *\n * @param manifest `AndroidManifest.xml`\n * @returns manifest with the provided namespace available\n */\nfunction ensureManifestHasNamespace(\n manifest: AndroidManifest,\n { namespace, url }: { namespace: string; url: string }\n) {\n if (manifest?.manifest?.$?.[namespace]) {\n return manifest;\n }\n manifest.manifest.$[namespace] = url;\n return manifest;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Manifest.js","names":["writeAndroidManifestAsync","manifestPath","androidManifest","manifestXml","XML","format","fs","promises","mkdir","path","dirname","recursive","writeFile","readAndroidManifestAsync","xml","readXMLAsync","isManifest","Error","manifest","getMainApplication","application","filter","e","$","endsWith","getMainApplicationOrThrow","mainApplication","assert","getMainActivityOrThrow","mainActivity","getMainActivity","getRunnableActivity","enabledActivities","activity","Array","isArray","intentFilter","action","find","category","addMetaDataItemToMainApplication","itemName","itemValue","itemType","existingMetaDataItem","newItem","prefixAndroidKeys","name","length","push","removeMetaDataItemFromMainApplication","index","findMetaDataItem","splice","findApplicationSubItem","parent","findIndex","findUsesLibraryItem","getMainApplicationMetaDataValue","hasOwnProperty","item","addUsesLibraryItemToMainApplication","removeUsesLibraryItemFromMainApplication","head","Object","entries","reduce","prev","key","curr","ensureToolsAvailable","ensureManifestHasNamespace","namespace","url"],"sources":["../../src/android/Manifest.ts"],"sourcesContent":["import assert from 'assert';\nimport fs from 'fs';\nimport path from 'path';\n\nimport * as XML from '../utils/XML';\n\nexport type StringBoolean = 'true' | 'false';\n\ntype ManifestMetaDataAttributes = AndroidManifestAttributes & {\n 'android:value'?: string;\n 'android:resource'?: string;\n};\n\ntype AndroidManifestAttributes = {\n 'android:name': string | 'android.intent.action.VIEW';\n 'tools:node'?: string | 'remove';\n};\n\ntype ManifestAction = {\n $: AndroidManifestAttributes;\n};\n\ntype ManifestCategory = {\n $: AndroidManifestAttributes;\n};\n\ntype ManifestData = {\n $: {\n [key: string]: string | undefined;\n 'android:host'?: string;\n 'android:pathPrefix'?: string;\n 'android:scheme'?: string;\n };\n};\n\ntype ManifestReceiver = {\n $: AndroidManifestAttributes & {\n 'android:exported'?: StringBoolean;\n 'android:enabled'?: StringBoolean;\n };\n 'intent-filter'?: ManifestIntentFilter[];\n};\n\nexport type ManifestIntentFilter = {\n $?: {\n 'android:autoVerify'?: StringBoolean;\n 'data-generated'?: StringBoolean;\n };\n action?: ManifestAction[];\n data?: ManifestData[];\n category?: ManifestCategory[];\n};\n\nexport type ManifestMetaData = {\n $: ManifestMetaDataAttributes;\n};\n\ntype ManifestServiceAttributes = AndroidManifestAttributes & {\n 'android:enabled'?: StringBoolean;\n 'android:exported'?: StringBoolean;\n 'android:permission'?: string;\n // ...\n};\n\ntype ManifestService = {\n $: ManifestServiceAttributes;\n 'intent-filter'?: ManifestIntentFilter[];\n};\n\ntype ManifestApplicationAttributes = {\n 'android:name': string | '.MainApplication';\n 'android:icon'?: string;\n 'android:roundIcon'?: string;\n 'android:label'?: string;\n 'android:allowBackup'?: StringBoolean;\n 'android:largeHeap'?: StringBoolean;\n 'android:requestLegacyExternalStorage'?: StringBoolean;\n 'android:usesCleartextTraffic'?: StringBoolean;\n [key: string]: string | undefined;\n};\n\nexport type ManifestActivity = {\n $: ManifestApplicationAttributes & {\n 'android:exported'?: StringBoolean;\n 'android:launchMode'?: string;\n 'android:theme'?: string;\n 'android:windowSoftInputMode'?:\n | string\n | 'stateUnspecified'\n | 'stateUnchanged'\n | 'stateHidden'\n | 'stateAlwaysHidden'\n | 'stateVisible'\n | 'stateAlwaysVisible'\n | 'adjustUnspecified'\n | 'adjustResize'\n | 'adjustPan';\n [key: string]: string | undefined;\n };\n 'intent-filter'?: ManifestIntentFilter[];\n // ...\n};\n\nexport type ManifestUsesLibrary = {\n $: AndroidManifestAttributes & {\n 'android:required'?: StringBoolean;\n };\n};\n\nexport type ManifestApplication = {\n $: ManifestApplicationAttributes;\n activity?: ManifestActivity[];\n service?: ManifestService[];\n receiver?: ManifestReceiver[];\n 'meta-data'?: ManifestMetaData[];\n 'uses-library'?: ManifestUsesLibrary[];\n // ...\n};\n\ntype ManifestPermission = {\n $: AndroidManifestAttributes & {\n 'android:protectionLevel'?: string | 'signature';\n };\n};\n\nexport type ManifestUsesPermission = {\n $: AndroidManifestAttributes;\n};\n\ntype ManifestUsesFeature = {\n $: AndroidManifestAttributes & {\n 'android:glEsVersion'?: string;\n 'android:required': StringBoolean;\n };\n};\n\nexport type AndroidManifest = {\n manifest: {\n // Probably more, but this is currently all we'd need for most cases in Expo.\n $: {\n 'xmlns:android': string;\n 'xmlns:tools'?: string;\n package?: string;\n [key: string]: string | undefined;\n };\n permission?: ManifestPermission[];\n 'uses-permission'?: ManifestUsesPermission[];\n 'uses-permission-sdk-23'?: ManifestUsesPermission[];\n 'uses-feature'?: ManifestUsesFeature[];\n application?: ManifestApplication[];\n };\n};\n\nexport async function writeAndroidManifestAsync(\n manifestPath: string,\n androidManifest: AndroidManifest\n): Promise<void> {\n const manifestXml = XML.format(androidManifest);\n await fs.promises.mkdir(path.dirname(manifestPath), { recursive: true });\n await fs.promises.writeFile(manifestPath, manifestXml);\n}\n\nexport async function readAndroidManifestAsync(manifestPath: string): Promise<AndroidManifest> {\n const xml = await XML.readXMLAsync({ path: manifestPath });\n if (!isManifest(xml)) {\n throw new Error('Invalid manifest found at: ' + manifestPath);\n }\n return xml;\n}\n\nfunction isManifest(xml: XML.XMLObject): xml is AndroidManifest {\n // TODO: Maybe more validation\n return !!xml.manifest;\n}\n\n/** Returns the `manifest.application` tag ending in `.MainApplication` */\nexport function getMainApplication(androidManifest: AndroidManifest): ManifestApplication | null {\n return (\n androidManifest?.manifest?.application?.filter((e) =>\n e?.$?.['android:name'].endsWith('.MainApplication')\n )[0] ?? null\n );\n}\n\nexport function getMainApplicationOrThrow(androidManifest: AndroidManifest): ManifestApplication {\n const mainApplication = getMainApplication(androidManifest);\n assert(mainApplication, 'AndroidManifest.xml is missing the required MainApplication element');\n return mainApplication;\n}\n\nexport function getMainActivityOrThrow(androidManifest: AndroidManifest): ManifestActivity {\n const mainActivity = getMainActivity(androidManifest);\n assert(mainActivity, 'AndroidManifest.xml is missing the required MainActivity element');\n return mainActivity;\n}\n\nexport function getRunnableActivity(androidManifest: AndroidManifest): ManifestActivity | null {\n // Get enabled activities\n const enabledActivities = androidManifest?.manifest?.application?.[0]?.activity?.filter?.(\n (e: any) => e.$['android:enabled'] !== 'false' && e.$['android:enabled'] !== false\n );\n\n if (!enabledActivities) {\n return null;\n }\n\n // Get the activity that has a runnable intent-filter\n for (const activity of enabledActivities) {\n if (Array.isArray(activity['intent-filter'])) {\n for (const intentFilter of activity['intent-filter']) {\n if (\n intentFilter.action?.find(\n (action) => action.$['android:name'] === 'android.intent.action.MAIN'\n ) &&\n intentFilter.category?.find(\n (category) => category.$['android:name'] === 'android.intent.category.LAUNCHER'\n )\n ) {\n return activity;\n }\n }\n }\n }\n\n return null;\n}\n\nexport function getMainActivity(androidManifest: AndroidManifest): ManifestActivity | null {\n const mainActivity = androidManifest?.manifest?.application?.[0]?.activity?.filter?.(\n (e: any) => e.$['android:name'] === '.MainActivity'\n );\n return mainActivity?.[0] ?? null;\n}\n\nexport function addMetaDataItemToMainApplication(\n mainApplication: ManifestApplication,\n itemName: string,\n itemValue: string,\n itemType: 'resource' | 'value' = 'value'\n): ManifestApplication {\n let existingMetaDataItem;\n const newItem = {\n $: prefixAndroidKeys({ name: itemName, [itemType]: itemValue }),\n } as ManifestMetaData;\n if (mainApplication['meta-data']) {\n existingMetaDataItem = mainApplication['meta-data'].filter(\n (e: any) => e.$['android:name'] === itemName\n );\n if (existingMetaDataItem.length) {\n existingMetaDataItem[0].$[`android:${itemType}` as keyof ManifestMetaDataAttributes] =\n itemValue;\n } else {\n mainApplication['meta-data'].push(newItem);\n }\n } else {\n mainApplication['meta-data'] = [newItem];\n }\n return mainApplication;\n}\n\nexport function removeMetaDataItemFromMainApplication(mainApplication: any, itemName: string) {\n const index = findMetaDataItem(mainApplication, itemName);\n if (mainApplication?.['meta-data'] && index > -1) {\n mainApplication['meta-data'].splice(index, 1);\n }\n return mainApplication;\n}\n\nfunction findApplicationSubItem(\n mainApplication: ManifestApplication,\n category: keyof ManifestApplication,\n itemName: string\n): number {\n const parent = mainApplication[category];\n if (Array.isArray(parent)) {\n const index = parent.findIndex((e: any) => e.$['android:name'] === itemName);\n\n return index;\n }\n return -1;\n}\n\nexport function findMetaDataItem(mainApplication: any, itemName: string): number {\n return findApplicationSubItem(mainApplication, 'meta-data', itemName);\n}\n\nexport function findUsesLibraryItem(mainApplication: any, itemName: string): number {\n return findApplicationSubItem(mainApplication, 'uses-library', itemName);\n}\n\nexport function getMainApplicationMetaDataValue(\n androidManifest: AndroidManifest,\n name: string\n): string | null {\n const mainApplication = getMainApplication(androidManifest);\n\n if (mainApplication?.hasOwnProperty('meta-data')) {\n const item = mainApplication?.['meta-data']?.find((e: any) => e.$['android:name'] === name);\n return item?.$['android:value'] ?? null;\n }\n\n return null;\n}\n\nexport function addUsesLibraryItemToMainApplication(\n mainApplication: ManifestApplication,\n item: { name: string; required?: boolean }\n): ManifestApplication {\n let existingMetaDataItem;\n const newItem = {\n $: prefixAndroidKeys(item),\n } as ManifestUsesLibrary;\n\n if (mainApplication['uses-library']) {\n existingMetaDataItem = mainApplication['uses-library'].filter(\n (e) => e.$['android:name'] === item.name\n );\n if (existingMetaDataItem.length) {\n existingMetaDataItem[0].$ = newItem.$;\n } else {\n mainApplication['uses-library'].push(newItem);\n }\n } else {\n mainApplication['uses-library'] = [newItem];\n }\n return mainApplication;\n}\n\nexport function removeUsesLibraryItemFromMainApplication(\n mainApplication: ManifestApplication,\n itemName: string\n) {\n const index = findUsesLibraryItem(mainApplication, itemName);\n if (mainApplication?.['uses-library'] && index > -1) {\n mainApplication['uses-library'].splice(index, 1);\n }\n return mainApplication;\n}\n\nexport function prefixAndroidKeys<T extends Record<string, any> = Record<string, string>>(\n head: T\n): Record<string, any> {\n // prefix all keys with `android:`\n return Object.entries(head).reduce(\n (prev, [key, curr]) => ({ ...prev, [`android:${key}`]: curr }),\n {} as T\n );\n}\n\n/**\n * Ensure the `tools:*` namespace is available in the manifest.\n *\n * @param manifest AndroidManifest.xml\n * @returns manifest with the `tools:*` namespace available\n */\nexport function ensureToolsAvailable(manifest: AndroidManifest) {\n return ensureManifestHasNamespace(manifest, {\n namespace: 'xmlns:tools',\n url: 'http://schemas.android.com/tools',\n });\n}\n\n/**\n * Ensure a particular namespace is available in the manifest.\n *\n * @param manifest `AndroidManifest.xml`\n * @returns manifest with the provided namespace available\n */\nfunction ensureManifestHasNamespace(\n manifest: AndroidManifest,\n { namespace, url }: { namespace: string; url: string }\n) {\n if (manifest?.manifest?.$?.[namespace]) {\n return manifest;\n }\n manifest.manifest.$[namespace] = url;\n return manifest;\n}\n"],"mappings":"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"}
@@ -7,47 +7,34 @@ exports.applyNameSettingsGradle = applyNameSettingsGradle;
7
7
  exports.getName = getName;
8
8
  exports.sanitizeNameForGradle = sanitizeNameForGradle;
9
9
  exports.withNameSettingsGradle = exports.withName = void 0;
10
-
11
10
  function _androidPlugins() {
12
11
  const data = require("../plugins/android-plugins");
13
-
14
12
  _androidPlugins = function () {
15
13
  return data;
16
14
  };
17
-
18
15
  return data;
19
16
  }
20
-
21
17
  function _warnings() {
22
18
  const data = require("../utils/warnings");
23
-
24
19
  _warnings = function () {
25
20
  return data;
26
21
  };
27
-
28
22
  return data;
29
23
  }
30
-
31
24
  function _Resources() {
32
25
  const data = require("./Resources");
33
-
34
26
  _Resources = function () {
35
27
  return data;
36
28
  };
37
-
38
29
  return data;
39
30
  }
40
-
41
31
  function _Strings() {
42
32
  const data = require("./Strings");
43
-
44
33
  _Strings = function () {
45
34
  return data;
46
35
  };
47
-
48
36
  return data;
49
37
  }
50
-
51
38
  /**
52
39
  * Sanitize a name, this should be used for files and gradle names.
53
40
  * - `[/, \, :, <, >, ", ?, *, |]` are not allowed
@@ -57,15 +44,14 @@ function _Strings() {
57
44
  */
58
45
  function sanitizeNameForGradle(name) {
59
46
  // Remove escape characters which are valid in XML names but not in gradle.
60
- name = name.replace(/[\n\r\t]/g, ''); // Gradle disallows these:
61
- // The project name 'My-Special 😃 Co/ol_Project' must not contain any of the following characters: [/, \, :, <, >, ", ?, *, |]. Set the 'rootProject.name' or adjust the 'include' statement (see https://docs.gradle.org/6.2/dsl/org.gradle.api.initialization.Settings.html#org.gradle.api.initialization.Settings:include(java.lang.String[]) for more details).
47
+ name = name.replace(/[\n\r\t]/g, '');
62
48
 
49
+ // Gradle disallows these:
50
+ // The project name 'My-Special 😃 Co/ol_Project' must not contain any of the following characters: [/, \, :, <, >, ", ?, *, |]. Set the 'rootProject.name' or adjust the 'include' statement (see https://docs.gradle.org/6.2/dsl/org.gradle.api.initialization.Settings.html#org.gradle.api.initialization.Settings:include(java.lang.String[]) for more details).
63
51
  return name.replace(/(\/|\\|:|<|>|"|\?|\*|\|)/g, '');
64
52
  }
65
-
66
53
  const withName = (0, _androidPlugins().createStringsXmlPlugin)(applyNameFromConfig, 'withName');
67
54
  exports.withName = withName;
68
-
69
55
  const withNameSettingsGradle = config => {
70
56
  return (0, _androidPlugins().withSettingsGradle)(config, config => {
71
57
  if (config.modResults.language === 'groovy') {
@@ -73,42 +59,35 @@ const withNameSettingsGradle = config => {
73
59
  } else {
74
60
  (0, _warnings().addWarningAndroid)('name', `Cannot automatically configure settings.gradle if it's not groovy`);
75
61
  }
76
-
77
62
  return config;
78
63
  });
79
64
  };
80
-
81
65
  exports.withNameSettingsGradle = withNameSettingsGradle;
82
-
83
66
  function getName(config) {
84
67
  return typeof config.name === 'string' ? config.name : null;
85
68
  }
86
-
87
69
  function applyNameFromConfig(config, stringsJSON) {
88
70
  const name = getName(config);
89
-
90
71
  if (name) {
91
72
  return (0, _Strings().setStringItem)([(0, _Resources().buildResourceItem)({
92
73
  name: 'app_name',
93
74
  value: name
94
75
  })], stringsJSON);
95
76
  }
96
-
97
77
  return (0, _Strings().removeStringItem)('app_name', stringsJSON);
98
78
  }
79
+
99
80
  /**
100
81
  * Regex a name change -- fragile.
101
82
  *
102
83
  * @param config
103
84
  * @param settingsGradle
104
85
  */
105
-
106
-
107
86
  function applyNameSettingsGradle(config, settingsGradle) {
108
87
  var _getName;
88
+ const name = sanitizeNameForGradle((_getName = getName(config)) !== null && _getName !== void 0 ? _getName : '');
109
89
 
110
- const name = sanitizeNameForGradle((_getName = getName(config)) !== null && _getName !== void 0 ? _getName : ''); // Select rootProject.name = '***' and replace the contents between the quotes.
111
-
90
+ // Select rootProject.name = '***' and replace the contents between the quotes.
112
91
  return settingsGradle.replace(/rootProject.name\s?=\s?(["'])(?:(?=(\\?))\2.)*?\1/g, `rootProject.name = '${name.replace(/'/g, "\\'")}'`);
113
92
  }
114
93
  //# sourceMappingURL=Name.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Name.js","names":["sanitizeNameForGradle","name","replace","withName","createStringsXmlPlugin","applyNameFromConfig","withNameSettingsGradle","config","withSettingsGradle","modResults","language","contents","applyNameSettingsGradle","addWarningAndroid","getName","stringsJSON","setStringItem","buildResourceItem","value","removeStringItem","settingsGradle"],"sources":["../../src/android/Name.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { createStringsXmlPlugin, withSettingsGradle } from '../plugins/android-plugins';\nimport { addWarningAndroid } from '../utils/warnings';\nimport { buildResourceItem, ResourceXML } from './Resources';\nimport { removeStringItem, setStringItem } from './Strings';\n\n/**\n * Sanitize a name, this should be used for files and gradle names.\n * - `[/, \\, :, <, >, \", ?, *, |]` are not allowed\n * https://docs.gradle.org/4.2/release-notes.html#path-separator-characters-in-names-are-deprecated\n *\n * @param name\n */\nexport function sanitizeNameForGradle(name: string): string {\n // Remove escape characters which are valid in XML names but not in gradle.\n name = name.replace(/[\\n\\r\\t]/g, '');\n\n // Gradle disallows these:\n // The project name 'My-Special 😃 Co/ol_Project' must not contain any of the following characters: [/, \\, :, <, >, \", ?, *, |]. Set the 'rootProject.name' or adjust the 'include' statement (see https://docs.gradle.org/6.2/dsl/org.gradle.api.initialization.Settings.html#org.gradle.api.initialization.Settings:include(java.lang.String[]) for more details).\n return name.replace(/(\\/|\\\\|:|<|>|\"|\\?|\\*|\\|)/g, '');\n}\n\nexport const withName = createStringsXmlPlugin(applyNameFromConfig, 'withName');\n\nexport const withNameSettingsGradle: ConfigPlugin = (config) => {\n return withSettingsGradle(config, (config) => {\n if (config.modResults.language === 'groovy') {\n config.modResults.contents = applyNameSettingsGradle(config, config.modResults.contents);\n } else {\n addWarningAndroid(\n 'name',\n `Cannot automatically configure settings.gradle if it's not groovy`\n );\n }\n return config;\n });\n};\n\nexport function getName(config: Pick<ExpoConfig, 'name'>) {\n return typeof config.name === 'string' ? config.name : null;\n}\n\nfunction applyNameFromConfig(\n config: Pick<ExpoConfig, 'name'>,\n stringsJSON: ResourceXML\n): ResourceXML {\n const name = getName(config);\n if (name) {\n return setStringItem([buildResourceItem({ name: 'app_name', value: name })], stringsJSON);\n }\n return removeStringItem('app_name', stringsJSON);\n}\n\n/**\n * Regex a name change -- fragile.\n *\n * @param config\n * @param settingsGradle\n */\nexport function applyNameSettingsGradle(config: Pick<ExpoConfig, 'name'>, settingsGradle: string) {\n const name = sanitizeNameForGradle(getName(config) ?? '');\n\n // Select rootProject.name = '***' and replace the contents between the quotes.\n return settingsGradle.replace(\n /rootProject.name\\s?=\\s?([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g,\n `rootProject.name = '${name.replace(/'/g, \"\\\\'\")}'`\n );\n}\n"],"mappings":";;;;;;;;;;AAGA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,qBAAT,CAA+BC,IAA/B,EAAqD;EAC1D;EACAA,IAAI,GAAGA,IAAI,CAACC,OAAL,CAAa,WAAb,EAA0B,EAA1B,CAAP,CAF0D,CAI1D;EACA;;EACA,OAAOD,IAAI,CAACC,OAAL,CAAa,2BAAb,EAA0C,EAA1C,CAAP;AACD;;AAEM,MAAMC,QAAQ,GAAG,IAAAC,wCAAA,EAAuBC,mBAAvB,EAA4C,UAA5C,CAAjB;;;AAEA,MAAMC,sBAAoC,GAAIC,MAAD,IAAY;EAC9D,OAAO,IAAAC,oCAAA,EAAmBD,MAAnB,EAA4BA,MAAD,IAAY;IAC5C,IAAIA,MAAM,CAACE,UAAP,CAAkBC,QAAlB,KAA+B,QAAnC,EAA6C;MAC3CH,MAAM,CAACE,UAAP,CAAkBE,QAAlB,GAA6BC,uBAAuB,CAACL,MAAD,EAASA,MAAM,CAACE,UAAP,CAAkBE,QAA3B,CAApD;IACD,CAFD,MAEO;MACL,IAAAE,6BAAA,EACE,MADF,EAEG,mEAFH;IAID;;IACD,OAAON,MAAP;EACD,CAVM,CAAP;AAWD,CAZM;;;;AAcA,SAASO,OAAT,CAAiBP,MAAjB,EAAmD;EACxD,OAAO,OAAOA,MAAM,CAACN,IAAd,KAAuB,QAAvB,GAAkCM,MAAM,CAACN,IAAzC,GAAgD,IAAvD;AACD;;AAED,SAASI,mBAAT,CACEE,MADF,EAEEQ,WAFF,EAGe;EACb,MAAMd,IAAI,GAAGa,OAAO,CAACP,MAAD,CAApB;;EACA,IAAIN,IAAJ,EAAU;IACR,OAAO,IAAAe,wBAAA,EAAc,CAAC,IAAAC,8BAAA,EAAkB;MAAEhB,IAAI,EAAE,UAAR;MAAoBiB,KAAK,EAAEjB;IAA3B,CAAlB,CAAD,CAAd,EAAsEc,WAAtE,CAAP;EACD;;EACD,OAAO,IAAAI,2BAAA,EAAiB,UAAjB,EAA6BJ,WAA7B,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASH,uBAAT,CAAiCL,MAAjC,EAAmEa,cAAnE,EAA2F;EAAA;;EAChG,MAAMnB,IAAI,GAAGD,qBAAqB,aAACc,OAAO,CAACP,MAAD,CAAR,+CAAoB,EAApB,CAAlC,CADgG,CAGhG;;EACA,OAAOa,cAAc,CAAClB,OAAf,CACL,oDADK,EAEJ,uBAAsBD,IAAI,CAACC,OAAL,CAAa,IAAb,EAAmB,KAAnB,CAA0B,GAF5C,CAAP;AAID"}
1
+ {"version":3,"file":"Name.js","names":["sanitizeNameForGradle","name","replace","withName","createStringsXmlPlugin","applyNameFromConfig","withNameSettingsGradle","config","withSettingsGradle","modResults","language","contents","applyNameSettingsGradle","addWarningAndroid","getName","stringsJSON","setStringItem","buildResourceItem","value","removeStringItem","settingsGradle"],"sources":["../../src/android/Name.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { createStringsXmlPlugin, withSettingsGradle } from '../plugins/android-plugins';\nimport { addWarningAndroid } from '../utils/warnings';\nimport { buildResourceItem, ResourceXML } from './Resources';\nimport { removeStringItem, setStringItem } from './Strings';\n\n/**\n * Sanitize a name, this should be used for files and gradle names.\n * - `[/, \\, :, <, >, \", ?, *, |]` are not allowed\n * https://docs.gradle.org/4.2/release-notes.html#path-separator-characters-in-names-are-deprecated\n *\n * @param name\n */\nexport function sanitizeNameForGradle(name: string): string {\n // Remove escape characters which are valid in XML names but not in gradle.\n name = name.replace(/[\\n\\r\\t]/g, '');\n\n // Gradle disallows these:\n // The project name 'My-Special 😃 Co/ol_Project' must not contain any of the following characters: [/, \\, :, <, >, \", ?, *, |]. Set the 'rootProject.name' or adjust the 'include' statement (see https://docs.gradle.org/6.2/dsl/org.gradle.api.initialization.Settings.html#org.gradle.api.initialization.Settings:include(java.lang.String[]) for more details).\n return name.replace(/(\\/|\\\\|:|<|>|\"|\\?|\\*|\\|)/g, '');\n}\n\nexport const withName = createStringsXmlPlugin(applyNameFromConfig, 'withName');\n\nexport const withNameSettingsGradle: ConfigPlugin = (config) => {\n return withSettingsGradle(config, (config) => {\n if (config.modResults.language === 'groovy') {\n config.modResults.contents = applyNameSettingsGradle(config, config.modResults.contents);\n } else {\n addWarningAndroid(\n 'name',\n `Cannot automatically configure settings.gradle if it's not groovy`\n );\n }\n return config;\n });\n};\n\nexport function getName(config: Pick<ExpoConfig, 'name'>) {\n return typeof config.name === 'string' ? config.name : null;\n}\n\nfunction applyNameFromConfig(\n config: Pick<ExpoConfig, 'name'>,\n stringsJSON: ResourceXML\n): ResourceXML {\n const name = getName(config);\n if (name) {\n return setStringItem([buildResourceItem({ name: 'app_name', value: name })], stringsJSON);\n }\n return removeStringItem('app_name', stringsJSON);\n}\n\n/**\n * Regex a name change -- fragile.\n *\n * @param config\n * @param settingsGradle\n */\nexport function applyNameSettingsGradle(config: Pick<ExpoConfig, 'name'>, settingsGradle: string) {\n const name = sanitizeNameForGradle(getName(config) ?? '');\n\n // Select rootProject.name = '***' and replace the contents between the quotes.\n return settingsGradle.replace(\n /rootProject.name\\s?=\\s?([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g,\n `rootProject.name = '${name.replace(/'/g, \"\\\\'\")}'`\n );\n}\n"],"mappings":";;;;;;;;;AAGA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,qBAAqB,CAACC,IAAY,EAAU;EAC1D;EACAA,IAAI,GAAGA,IAAI,CAACC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;;EAEpC;EACA;EACA,OAAOD,IAAI,CAACC,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;AACtD;AAEO,MAAMC,QAAQ,GAAG,IAAAC,wCAAsB,EAACC,mBAAmB,EAAE,UAAU,CAAC;AAAC;AAEzE,MAAMC,sBAAoC,GAAIC,MAAM,IAAK;EAC9D,OAAO,IAAAC,oCAAkB,EAACD,MAAM,EAAGA,MAAM,IAAK;IAC5C,IAAIA,MAAM,CAACE,UAAU,CAACC,QAAQ,KAAK,QAAQ,EAAE;MAC3CH,MAAM,CAACE,UAAU,CAACE,QAAQ,GAAGC,uBAAuB,CAACL,MAAM,EAAEA,MAAM,CAACE,UAAU,CAACE,QAAQ,CAAC;IAC1F,CAAC,MAAM;MACL,IAAAE,6BAAiB,EACf,MAAM,EACL,mEAAkE,CACpE;IACH;IACA,OAAON,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAAC;AAEK,SAASO,OAAO,CAACP,MAAgC,EAAE;EACxD,OAAO,OAAOA,MAAM,CAACN,IAAI,KAAK,QAAQ,GAAGM,MAAM,CAACN,IAAI,GAAG,IAAI;AAC7D;AAEA,SAASI,mBAAmB,CAC1BE,MAAgC,EAChCQ,WAAwB,EACX;EACb,MAAMd,IAAI,GAAGa,OAAO,CAACP,MAAM,CAAC;EAC5B,IAAIN,IAAI,EAAE;IACR,OAAO,IAAAe,wBAAa,EAAC,CAAC,IAAAC,8BAAiB,EAAC;MAAEhB,IAAI,EAAE,UAAU;MAAEiB,KAAK,EAAEjB;IAAK,CAAC,CAAC,CAAC,EAAEc,WAAW,CAAC;EAC3F;EACA,OAAO,IAAAI,2BAAgB,EAAC,UAAU,EAAEJ,WAAW,CAAC;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASH,uBAAuB,CAACL,MAAgC,EAAEa,cAAsB,EAAE;EAAA;EAChG,MAAMnB,IAAI,GAAGD,qBAAqB,aAACc,OAAO,CAACP,MAAM,CAAC,+CAAI,EAAE,CAAC;;EAEzD;EACA,OAAOa,cAAc,CAAClB,OAAO,CAC3B,oDAAoD,EACnD,uBAAsBD,IAAI,CAACC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAE,GAAE,CACpD;AACH"}
@@ -7,43 +7,33 @@ exports.SCREEN_ORIENTATION_ATTRIBUTE = void 0;
7
7
  exports.getOrientation = getOrientation;
8
8
  exports.setAndroidOrientation = setAndroidOrientation;
9
9
  exports.withOrientation = void 0;
10
-
11
10
  function _androidPlugins() {
12
11
  const data = require("../plugins/android-plugins");
13
-
14
12
  _androidPlugins = function () {
15
13
  return data;
16
14
  };
17
-
18
15
  return data;
19
16
  }
20
-
21
17
  function _Manifest() {
22
18
  const data = require("./Manifest");
23
-
24
19
  _Manifest = function () {
25
20
  return data;
26
21
  };
27
-
28
22
  return data;
29
23
  }
30
-
31
24
  const SCREEN_ORIENTATION_ATTRIBUTE = 'android:screenOrientation';
32
25
  exports.SCREEN_ORIENTATION_ATTRIBUTE = SCREEN_ORIENTATION_ATTRIBUTE;
33
26
  const withOrientation = (0, _androidPlugins().createAndroidManifestPlugin)(setAndroidOrientation, 'withOrientation');
34
27
  exports.withOrientation = withOrientation;
35
-
36
28
  function getOrientation(config) {
37
29
  return typeof config.orientation === 'string' ? config.orientation : null;
38
30
  }
39
-
40
31
  function setAndroidOrientation(config, androidManifest) {
41
- const orientation = getOrientation(config); // TODO: Remove this if we decide to remove any orientation configuration when not specified
42
-
32
+ const orientation = getOrientation(config);
33
+ // TODO: Remove this if we decide to remove any orientation configuration when not specified
43
34
  if (!orientation) {
44
35
  return androidManifest;
45
36
  }
46
-
47
37
  const mainActivity = (0, _Manifest().getMainActivityOrThrow)(androidManifest);
48
38
  mainActivity.$[SCREEN_ORIENTATION_ATTRIBUTE] = orientation !== 'default' ? orientation : 'unspecified';
49
39
  return androidManifest;
@@ -1 +1 @@
1
- {"version":3,"file":"Orientation.js","names":["SCREEN_ORIENTATION_ATTRIBUTE","withOrientation","createAndroidManifestPlugin","setAndroidOrientation","getOrientation","config","orientation","androidManifest","mainActivity","getMainActivityOrThrow","$"],"sources":["../../src/android/Orientation.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { createAndroidManifestPlugin } from '../plugins/android-plugins';\nimport { AndroidManifest, getMainActivityOrThrow } from './Manifest';\n\nexport const SCREEN_ORIENTATION_ATTRIBUTE = 'android:screenOrientation';\n\nexport const withOrientation = createAndroidManifestPlugin(\n setAndroidOrientation,\n 'withOrientation'\n);\n\nexport function getOrientation(config: Pick<ExpoConfig, 'orientation'>) {\n return typeof config.orientation === 'string' ? config.orientation : null;\n}\n\nexport function setAndroidOrientation(\n config: Pick<ExpoConfig, 'orientation'>,\n androidManifest: AndroidManifest\n) {\n const orientation = getOrientation(config);\n // TODO: Remove this if we decide to remove any orientation configuration when not specified\n if (!orientation) {\n return androidManifest;\n }\n\n const mainActivity = getMainActivityOrThrow(androidManifest);\n\n mainActivity.$[SCREEN_ORIENTATION_ATTRIBUTE] =\n orientation !== 'default' ? orientation : 'unspecified';\n\n return androidManifest;\n}\n"],"mappings":";;;;;;;;;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,4BAA4B,GAAG,2BAArC;;AAEA,MAAMC,eAAe,GAAG,IAAAC,6CAAA,EAC7BC,qBAD6B,EAE7B,iBAF6B,CAAxB;;;AAKA,SAASC,cAAT,CAAwBC,MAAxB,EAAiE;EACtE,OAAO,OAAOA,MAAM,CAACC,WAAd,KAA8B,QAA9B,GAAyCD,MAAM,CAACC,WAAhD,GAA8D,IAArE;AACD;;AAEM,SAASH,qBAAT,CACLE,MADK,EAELE,eAFK,EAGL;EACA,MAAMD,WAAW,GAAGF,cAAc,CAACC,MAAD,CAAlC,CADA,CAEA;;EACA,IAAI,CAACC,WAAL,EAAkB;IAChB,OAAOC,eAAP;EACD;;EAED,MAAMC,YAAY,GAAG,IAAAC,kCAAA,EAAuBF,eAAvB,CAArB;EAEAC,YAAY,CAACE,CAAb,CAAeV,4BAAf,IACEM,WAAW,KAAK,SAAhB,GAA4BA,WAA5B,GAA0C,aAD5C;EAGA,OAAOC,eAAP;AACD"}
1
+ {"version":3,"file":"Orientation.js","names":["SCREEN_ORIENTATION_ATTRIBUTE","withOrientation","createAndroidManifestPlugin","setAndroidOrientation","getOrientation","config","orientation","androidManifest","mainActivity","getMainActivityOrThrow","$"],"sources":["../../src/android/Orientation.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { createAndroidManifestPlugin } from '../plugins/android-plugins';\nimport { AndroidManifest, getMainActivityOrThrow } from './Manifest';\n\nexport const SCREEN_ORIENTATION_ATTRIBUTE = 'android:screenOrientation';\n\nexport const withOrientation = createAndroidManifestPlugin(\n setAndroidOrientation,\n 'withOrientation'\n);\n\nexport function getOrientation(config: Pick<ExpoConfig, 'orientation'>) {\n return typeof config.orientation === 'string' ? config.orientation : null;\n}\n\nexport function setAndroidOrientation(\n config: Pick<ExpoConfig, 'orientation'>,\n androidManifest: AndroidManifest\n) {\n const orientation = getOrientation(config);\n // TODO: Remove this if we decide to remove any orientation configuration when not specified\n if (!orientation) {\n return androidManifest;\n }\n\n const mainActivity = getMainActivityOrThrow(androidManifest);\n\n mainActivity.$[SCREEN_ORIENTATION_ATTRIBUTE] =\n orientation !== 'default' ? orientation : 'unspecified';\n\n return androidManifest;\n}\n"],"mappings":";;;;;;;;;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEO,MAAMA,4BAA4B,GAAG,2BAA2B;AAAC;AAEjE,MAAMC,eAAe,GAAG,IAAAC,6CAA2B,EACxDC,qBAAqB,EACrB,iBAAiB,CAClB;AAAC;AAEK,SAASC,cAAc,CAACC,MAAuC,EAAE;EACtE,OAAO,OAAOA,MAAM,CAACC,WAAW,KAAK,QAAQ,GAAGD,MAAM,CAACC,WAAW,GAAG,IAAI;AAC3E;AAEO,SAASH,qBAAqB,CACnCE,MAAuC,EACvCE,eAAgC,EAChC;EACA,MAAMD,WAAW,GAAGF,cAAc,CAACC,MAAM,CAAC;EAC1C;EACA,IAAI,CAACC,WAAW,EAAE;IAChB,OAAOC,eAAe;EACxB;EAEA,MAAMC,YAAY,GAAG,IAAAC,kCAAsB,EAACF,eAAe,CAAC;EAE5DC,YAAY,CAACE,CAAC,CAACV,4BAA4B,CAAC,GAC1CM,WAAW,KAAK,SAAS,GAAGA,WAAW,GAAG,aAAa;EAEzD,OAAOC,eAAe;AACxB"}