@expo/config-plugins 4.0.7 → 4.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/Plugin.types.js +6 -6
- package/build/android/AllowBackup.js +1 -1
- package/build/android/Colors.js +3 -3
- package/build/android/EasBuild.js +1 -1
- package/build/android/GoogleServices.js +3 -3
- package/build/android/IntentFilters.d.ts +3 -3
- package/build/android/IntentFilters.js +45 -49
- package/build/android/IntentFilters.js.map +1 -1
- package/build/android/JsEngine.js +2 -1
- package/build/android/JsEngine.js.map +1 -1
- package/build/android/Manifest.d.ts +5 -1
- package/build/android/Manifest.js +10 -10
- package/build/android/Manifest.js.map +1 -1
- package/build/android/Name.d.ts +2 -1
- package/build/android/Name.js +7 -4
- package/build/android/Name.js.map +1 -1
- package/build/android/Orientation.js +2 -1
- package/build/android/Orientation.js.map +1 -1
- package/build/android/Package.js +4 -4
- package/build/android/Package.js.map +1 -1
- package/build/android/Paths.js +9 -9
- package/build/android/Permissions.js +6 -6
- package/build/android/Resources.js +5 -5
- package/build/android/Scheme.js +3 -3
- package/build/android/StatusBar.js +3 -3
- package/build/android/Strings.js +1 -1
- package/build/android/Styles.js +5 -5
- package/build/android/Updates.d.ts +2 -7
- package/build/android/Updates.js +34 -27
- package/build/android/Updates.js.map +1 -1
- package/build/android/Version.d.ts +9 -0
- package/build/android/Version.js +39 -3
- package/build/android/Version.js.map +1 -1
- package/build/android/WindowSoftInputMode.js +1 -1
- package/build/android/codeMod.js +2 -2
- package/build/index.d.ts +1 -1
- package/build/index.js +57 -49
- package/build/index.js.map +1 -1
- package/build/ios/Bitcode.js +1 -1
- package/build/ios/BuildScheme.js +2 -2
- package/build/ios/BundleIdentifier.js +14 -4
- package/build/ios/BundleIdentifier.js.map +1 -1
- package/build/ios/DeviceFamily.js +3 -3
- package/build/ios/Entitlements.js +2 -2
- package/build/ios/Entitlements.js.map +1 -1
- package/build/ios/Google.js +2 -2
- package/build/ios/JsEngine.d.ts +2 -1
- package/build/ios/JsEngine.js +2 -1
- package/build/ios/JsEngine.js.map +1 -1
- package/build/ios/Locales.js +1 -1
- package/build/ios/Maps.js +32 -18
- package/build/ios/Maps.js.map +1 -1
- package/build/ios/Orientation.js +2 -1
- package/build/ios/Orientation.js.map +1 -1
- package/build/ios/Paths.js +14 -14
- package/build/ios/Paths.js.map +1 -1
- package/build/ios/Permissions.js +1 -1
- package/build/ios/Permissions.js.map +1 -1
- package/build/ios/ProvisioningProfile.js +11 -2
- package/build/ios/ProvisioningProfile.js.map +1 -1
- package/build/ios/Scheme.js +4 -4
- package/build/ios/Swift.js +2 -2
- package/build/ios/Target.js +34 -15
- package/build/ios/Target.js.map +1 -1
- package/build/ios/Updates.d.ts +2 -7
- package/build/ios/Updates.js +34 -27
- package/build/ios/Updates.js.map +1 -1
- package/build/ios/Version.js +3 -3
- package/build/ios/codeMod.js +2 -2
- package/build/ios/index.js +3 -1
- package/build/ios/index.js.map +1 -1
- package/build/ios/utils/Xcodeproj.js +9 -9
- package/build/ios/utils/string.d.ts +1 -0
- package/build/ios/utils/string.js +11 -0
- package/build/ios/utils/string.js.map +1 -0
- package/build/plugins/android-plugins.js +1 -1
- package/build/plugins/createBaseMod.js +2 -2
- package/build/plugins/createBaseMod.js.map +1 -1
- package/build/plugins/ios-plugins.d.ts +2 -2
- package/build/plugins/ios-plugins.js +2 -2
- package/build/plugins/ios-plugins.js.map +1 -1
- package/build/plugins/mod-compiler.js +3 -3
- package/build/plugins/mod-compiler.js.map +1 -1
- package/build/plugins/withAndroidBaseMods.js +1 -1
- package/build/plugins/withIosBaseMods.d.ts +3 -3
- package/build/plugins/withIosBaseMods.js +1 -1
- package/build/plugins/withIosBaseMods.js.map +1 -1
- package/build/utils/Updates.d.ts +2 -0
- package/build/utils/Updates.js +58 -1
- package/build/utils/Updates.js.map +1 -1
- package/build/utils/XML.d.ts +6 -0
- package/build/utils/XML.js +57 -10
- package/build/utils/XML.js.map +1 -1
- package/build/utils/errors.js +1 -1
- package/build/utils/generateCode.js +2 -2
- package/build/utils/history.js +1 -1
- package/build/utils/modules.js +1 -1
- package/build/utils/plugin-resolver.js +4 -4
- package/build/utils/sortObject.js +2 -2
- package/build/utils/warnings.js +1 -1
- package/package.json +4 -3
- package/build/utils/resolvePackageRootFolder.d.ts +0 -1
- package/build/utils/resolvePackageRootFolder.js +0 -57
- package/build/utils/resolvePackageRootFolder.js.map +0 -1
package/build/Plugin.types.js
CHANGED
|
@@ -3,12 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "XcodeProject", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _xcode().XcodeProject;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
6
|
Object.defineProperty(exports, "AndroidManifest", {
|
|
13
7
|
enumerable: true,
|
|
14
8
|
get: function () {
|
|
@@ -27,6 +21,12 @@ Object.defineProperty(exports, "InfoPlist", {
|
|
|
27
21
|
return _IosConfig().InfoPlist;
|
|
28
22
|
}
|
|
29
23
|
});
|
|
24
|
+
Object.defineProperty(exports, "XcodeProject", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _xcode().XcodeProject;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
30
|
|
|
31
31
|
function _xcode() {
|
|
32
32
|
const data = require("xcode");
|
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.getAllowBackup = getAllowBackup;
|
|
7
|
-
exports.setAllowBackup = setAllowBackup;
|
|
8
7
|
exports.getAllowBackupFromManifest = getAllowBackupFromManifest;
|
|
8
|
+
exports.setAllowBackup = setAllowBackup;
|
|
9
9
|
exports.withAllowBackup = void 0;
|
|
10
10
|
|
|
11
11
|
function _androidPlugins() {
|
package/build/android/Colors.js
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getProjectColorsXMLPathAsync = getProjectColorsXMLPathAsync;
|
|
7
|
-
exports.setColorItem = setColorItem;
|
|
8
|
-
exports.removeColorItem = removeColorItem;
|
|
9
6
|
exports.assignColorValue = assignColorValue;
|
|
10
7
|
exports.getColorsAsObject = getColorsAsObject;
|
|
11
8
|
exports.getObjectAsColorsXml = getObjectAsColorsXml;
|
|
9
|
+
exports.getProjectColorsXMLPathAsync = getProjectColorsXMLPathAsync;
|
|
10
|
+
exports.removeColorItem = removeColorItem;
|
|
11
|
+
exports.setColorItem = setColorItem;
|
|
12
12
|
|
|
13
13
|
function _Paths() {
|
|
14
14
|
const data = require("./Paths");
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getEasBuildGradlePath = getEasBuildGradlePath;
|
|
7
6
|
exports.configureEasBuildAsync = configureEasBuildAsync;
|
|
7
|
+
exports.getEasBuildGradlePath = getEasBuildGradlePath;
|
|
8
8
|
exports.isEasBuildGradleConfiguredAsync = isEasBuildGradleConfiguredAsync;
|
|
9
9
|
|
|
10
10
|
function _fsExtra() {
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.applyPlugin = applyPlugin;
|
|
6
7
|
exports.getGoogleServicesFilePath = getGoogleServicesFilePath;
|
|
7
|
-
exports.setGoogleServicesFile = setGoogleServicesFile;
|
|
8
8
|
exports.setClassPath = setClassPath;
|
|
9
|
-
exports.
|
|
10
|
-
exports.withGoogleServicesFile = exports.
|
|
9
|
+
exports.setGoogleServicesFile = setGoogleServicesFile;
|
|
10
|
+
exports.withGoogleServicesFile = exports.withClassPath = exports.withApplyPlugin = void 0;
|
|
11
11
|
|
|
12
12
|
function _fsExtra() {
|
|
13
13
|
const data = _interopRequireDefault(require("fs-extra"));
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Android, ExpoConfig } from '@expo/config-types';
|
|
2
|
-
import { AndroidManifest } from './Manifest';
|
|
2
|
+
import { AndroidManifest, ManifestIntentFilter } from './Manifest';
|
|
3
3
|
declare type AndroidIntentFilters = NonNullable<Android['intentFilters']>;
|
|
4
4
|
export declare const withAndroidIntentFilters: import("..").ConfigPlugin<void>;
|
|
5
5
|
export declare function getIntentFilters(config: Pick<ExpoConfig, 'android'>): AndroidIntentFilters;
|
|
6
|
-
export declare function setAndroidIntentFilters(config: Pick<ExpoConfig, 'android'>, androidManifest: AndroidManifest):
|
|
7
|
-
export default function renderIntentFilters(intentFilters: AndroidIntentFilters):
|
|
6
|
+
export declare function setAndroidIntentFilters(config: Pick<ExpoConfig, 'android'>, androidManifest: AndroidManifest): AndroidManifest;
|
|
7
|
+
export default function renderIntentFilters(intentFilters: AndroidIntentFilters): ManifestIntentFilter[];
|
|
8
8
|
export {};
|
|
@@ -3,21 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.default = renderIntentFilters;
|
|
6
7
|
exports.getIntentFilters = getIntentFilters;
|
|
7
8
|
exports.setAndroidIntentFilters = setAndroidIntentFilters;
|
|
8
|
-
exports.default = renderIntentFilters;
|
|
9
9
|
exports.withAndroidIntentFilters = void 0;
|
|
10
10
|
|
|
11
|
-
function _xml2js() {
|
|
12
|
-
const data = require("xml2js");
|
|
13
|
-
|
|
14
|
-
_xml2js = function () {
|
|
15
|
-
return data;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
return data;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
11
|
function _androidPlugins() {
|
|
22
12
|
const data = require("../plugins/android-plugins");
|
|
23
13
|
|
|
@@ -38,7 +28,7 @@ function _Manifest() {
|
|
|
38
28
|
return data;
|
|
39
29
|
}
|
|
40
30
|
|
|
41
|
-
|
|
31
|
+
const GENERATED_TAG = 'data-generated';
|
|
42
32
|
const withAndroidIntentFilters = (0, _androidPlugins().createAndroidManifestPlugin)(setAndroidIntentFilters, 'withAndroidIntentFilters');
|
|
43
33
|
exports.withAndroidIntentFilters = withAndroidIntentFilters;
|
|
44
34
|
|
|
@@ -48,8 +38,19 @@ function getIntentFilters(config) {
|
|
|
48
38
|
return (_config$android$inten = (_config$android = config.android) === null || _config$android === void 0 ? void 0 : _config$android.intentFilters) !== null && _config$android$inten !== void 0 ? _config$android$inten : [];
|
|
49
39
|
}
|
|
50
40
|
|
|
51
|
-
|
|
52
|
-
var _mainActivity$intent;
|
|
41
|
+
function setAndroidIntentFilters(config, androidManifest) {
|
|
42
|
+
var _mainActivity$intent, _mainActivity$intent2;
|
|
43
|
+
|
|
44
|
+
// Always ensure old tags are removed.
|
|
45
|
+
const mainActivity = (0, _Manifest().getMainActivityOrThrow)(androidManifest); // Remove all generated tags from previous runs...
|
|
46
|
+
|
|
47
|
+
if ((_mainActivity$intent = mainActivity['intent-filter']) !== null && _mainActivity$intent !== void 0 && _mainActivity$intent.length) {
|
|
48
|
+
mainActivity['intent-filter'] = mainActivity['intent-filter'].filter(value => {
|
|
49
|
+
var _value$$;
|
|
50
|
+
|
|
51
|
+
return ((_value$$ = value.$) === null || _value$$ === void 0 ? void 0 : _value$$[GENERATED_TAG]) !== 'true';
|
|
52
|
+
});
|
|
53
|
+
}
|
|
53
54
|
|
|
54
55
|
const intentFilters = getIntentFilters(config);
|
|
55
56
|
|
|
@@ -57,53 +58,48 @@ async function setAndroidIntentFilters(config, androidManifest) {
|
|
|
57
58
|
return androidManifest;
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
const parser = new (_xml2js().Parser)();
|
|
62
|
-
const intentFiltersJSON = await parser.parseStringPromise(intentFiltersXML);
|
|
63
|
-
const mainActivity = (0, _Manifest().getMainActivityOrThrow)(androidManifest);
|
|
64
|
-
mainActivity['intent-filter'] = (_mainActivity$intent = mainActivity['intent-filter']) === null || _mainActivity$intent === void 0 ? void 0 : _mainActivity$intent.concat(intentFiltersJSON['intent-filter']);
|
|
61
|
+
mainActivity['intent-filter'] = (_mainActivity$intent2 = mainActivity['intent-filter']) === null || _mainActivity$intent2 === void 0 ? void 0 : _mainActivity$intent2.concat(renderIntentFilters(intentFilters));
|
|
65
62
|
return androidManifest;
|
|
66
63
|
}
|
|
67
64
|
|
|
68
65
|
function renderIntentFilters(intentFilters) {
|
|
69
|
-
// returns an array of <intent-filter> tags:
|
|
70
|
-
// [
|
|
71
|
-
// `<intent-filter>
|
|
72
|
-
// <data android:scheme="exp"/>
|
|
73
|
-
// <data android:scheme="exps"/>
|
|
74
|
-
//
|
|
75
|
-
// <action android:name="android.intent.action.VIEW"/>
|
|
76
|
-
//
|
|
77
|
-
// <category android:name="android.intent.category.DEFAULT"/>
|
|
78
|
-
// <category android:name="android.intent.category.BROWSABLE"/>
|
|
79
|
-
// </intent-filter>`,
|
|
80
|
-
// ...
|
|
81
|
-
// ]
|
|
82
66
|
return intentFilters.map(intentFilter => {
|
|
83
|
-
|
|
84
|
-
return
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
67
|
+
// <intent-filter>
|
|
68
|
+
return {
|
|
69
|
+
$: {
|
|
70
|
+
'android:autoVerify': intentFilter.autoVerify ? 'true' : undefined,
|
|
71
|
+
// Add a custom "generated" tag that we can query later to remove.
|
|
72
|
+
[GENERATED_TAG]: 'true'
|
|
73
|
+
},
|
|
74
|
+
action: [// <action android:name="android.intent.action.VIEW"/>
|
|
75
|
+
{
|
|
76
|
+
$: {
|
|
77
|
+
'android:name': `android.intent.action.${intentFilter.action}`
|
|
78
|
+
}
|
|
79
|
+
}],
|
|
80
|
+
data: renderIntentFilterData(intentFilter.data),
|
|
81
|
+
category: renderIntentFilterCategory(intentFilter.category)
|
|
82
|
+
};
|
|
89
83
|
});
|
|
90
84
|
}
|
|
85
|
+
/** Like `<data android:scheme="exp"/>` */
|
|
91
86
|
|
|
92
|
-
function renderIntentFilterDatumEntries(datum = {}) {
|
|
93
|
-
const entries = [];
|
|
94
|
-
|
|
95
|
-
for (const [key, value] of Object.entries(datum)) {
|
|
96
|
-
entries.push(`android:${key}="${value}"`);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
return entries.join(' ');
|
|
100
|
-
}
|
|
101
87
|
|
|
102
88
|
function renderIntentFilterData(data) {
|
|
103
|
-
return (Array.isArray(data) ? data : [data]).filter(Boolean).map(datum =>
|
|
89
|
+
return (Array.isArray(data) ? data : [data]).filter(Boolean).map(datum => ({
|
|
90
|
+
$: Object.entries(datum !== null && datum !== void 0 ? datum : {}).reduce((prev, [key, value]) => ({ ...prev,
|
|
91
|
+
[`android:${key}`]: value
|
|
92
|
+
}), {})
|
|
93
|
+
}));
|
|
104
94
|
}
|
|
95
|
+
/** Like `<category android:name="android.intent.category.DEFAULT"/>` */
|
|
96
|
+
|
|
105
97
|
|
|
106
98
|
function renderIntentFilterCategory(category) {
|
|
107
|
-
return (Array.isArray(category) ? category : [category]).filter(Boolean).map(cat =>
|
|
99
|
+
return (Array.isArray(category) ? category : [category]).filter(Boolean).map(cat => ({
|
|
100
|
+
$: {
|
|
101
|
+
'android:name': `android.intent.category.${cat}`
|
|
102
|
+
}
|
|
103
|
+
}));
|
|
108
104
|
}
|
|
109
105
|
//# sourceMappingURL=IntentFilters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/android/IntentFilters.ts"],"names":["withAndroidIntentFilters","setAndroidIntentFilters","getIntentFilters","config","android","intentFilters","androidManifest","
|
|
1
|
+
{"version":3,"sources":["../../src/android/IntentFilters.ts"],"names":["GENERATED_TAG","withAndroidIntentFilters","setAndroidIntentFilters","getIntentFilters","config","android","intentFilters","androidManifest","mainActivity","length","filter","value","$","concat","renderIntentFilters","map","intentFilter","autoVerify","undefined","action","data","renderIntentFilterData","category","renderIntentFilterCategory","Array","isArray","Boolean","datum","Object","entries","reduce","prev","key","cat"],"mappings":";;;;;;;;;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA,MAAMA,aAAa,GAAG,gBAAtB;AAEO,MAAMC,wBAAwB,GAAG,mDACtCC,uBADsC,EAEtC,0BAFsC,CAAjC;;;AAKA,SAASC,gBAAT,CAA0BC,MAA1B,EAAqF;AAAA;;AAC1F,qDAAOA,MAAM,CAACC,OAAd,oDAAO,gBAAgBC,aAAvB,yEAAwC,EAAxC;AACD;;AAEM,SAASJ,uBAAT,CACLE,MADK,EAELG,eAFK,EAGY;AAAA;;AACjB;AACA,QAAMC,YAAY,GAAG,wCAAuBD,eAAvB,CAArB,CAFiB,CAGjB;;AACA,8BAAIC,YAAY,CAAC,eAAD,CAAhB,iDAAI,qBAA+BC,MAAnC,EAA2C;AACzCD,IAAAA,YAAY,CAAC,eAAD,CAAZ,GAAgCA,YAAY,CAAC,eAAD,CAAZ,CAA8BE,MAA9B,CAC9BC,KAAK;AAAA;;AAAA,aAAI,aAAAA,KAAK,CAACC,CAAN,sDAAUZ,aAAV,OAA6B,MAAjC;AAAA,KADyB,CAAhC;AAGD;;AAED,QAAMM,aAAa,GAAGH,gBAAgB,CAACC,MAAD,CAAtC;;AACA,MAAI,CAACE,aAAa,CAACG,MAAnB,EAA2B;AACzB,WAAOF,eAAP;AACD;;AAEDC,EAAAA,YAAY,CAAC,eAAD,CAAZ,4BAAgCA,YAAY,CAAC,eAAD,CAA5C,0DAAgC,sBAA+BK,MAA/B,CAC9BC,mBAAmB,CAACR,aAAD,CADW,CAAhC;AAIA,SAAOC,eAAP;AACD;;AAEc,SAASO,mBAAT,CACbR,aADa,EAEW;AACxB,SAAOA,aAAa,CAACS,GAAd,CAAkBC,YAAY,IAAI;AACvC;AACA,WAAO;AACLJ,MAAAA,CAAC,EAAE;AACD,8BAAsBI,YAAY,CAACC,UAAb,GAA0B,MAA1B,GAAmCC,SADxD;AAED;AACA,SAAClB,aAAD,GAAiB;AAHhB,OADE;AAMLmB,MAAAA,MAAM,EAAE,CACN;AACA;AACEP,QAAAA,CAAC,EAAE;AACD,0BAAiB,yBAAwBI,YAAY,CAACG,MAAO;AAD5D;AADL,OAFM,CANH;AAcLC,MAAAA,IAAI,EAAEC,sBAAsB,CAACL,YAAY,CAACI,IAAd,CAdvB;AAeLE,MAAAA,QAAQ,EAAEC,0BAA0B,CAACP,YAAY,CAACM,QAAd;AAf/B,KAAP;AAiBD,GAnBM,CAAP;AAoBD;AAED;;;AACA,SAASD,sBAAT,CAAgCD,IAAhC,EAA8F;AAC5F,SAAO,CAACI,KAAK,CAACC,OAAN,CAAcL,IAAd,IAAsBA,IAAtB,GAA6B,CAACA,IAAD,CAA9B,EAAsCV,MAAtC,CAA6CgB,OAA7C,EAAsDX,GAAtD,CAA0DY,KAAK,KAAK;AACzEf,IAAAA,CAAC,EAAEgB,MAAM,CAACC,OAAP,CAAeF,KAAf,aAAeA,KAAf,cAAeA,KAAf,GAAwB,EAAxB,EAA4BG,MAA5B,CACD,CAACC,IAAD,EAAO,CAACC,GAAD,EAAMrB,KAAN,CAAP,MAAyB,EAAE,GAAGoB,IAAL;AAAW,OAAE,WAAUC,GAAI,EAAhB,GAAoBrB;AAA/B,KAAzB,CADC,EAED,EAFC;AADsE,GAAL,CAA/D,CAAP;AAMD;AAED;;;AACA,SAASY,0BAAT,CAAoCD,QAApC,EAAkE;AAChE,SAAO,CAACE,KAAK,CAACC,OAAN,CAAcH,QAAd,IAA0BA,QAA1B,GAAqC,CAACA,QAAD,CAAtC,EAAkDZ,MAAlD,CAAyDgB,OAAzD,EAAkEX,GAAlE,CAAsEkB,GAAG,KAAK;AACnFrB,IAAAA,CAAC,EAAE;AACD,sBAAiB,2BAA0BqB,GAAI;AAD9C;AADgF,GAAL,CAAzE,CAAP;AAKD","sourcesContent":["import { Android, AndroidIntentFiltersData, ExpoConfig } from '@expo/config-types';\n\nimport { createAndroidManifestPlugin } from '../plugins/android-plugins';\nimport { AndroidManifest, getMainActivityOrThrow, ManifestIntentFilter } from './Manifest';\n\ntype AndroidIntentFilters = NonNullable<Android['intentFilters']>;\n\nconst GENERATED_TAG = 'data-generated';\n\nexport const withAndroidIntentFilters = createAndroidManifestPlugin(\n setAndroidIntentFilters,\n 'withAndroidIntentFilters'\n);\n\nexport function getIntentFilters(config: Pick<ExpoConfig, 'android'>): AndroidIntentFilters {\n return config.android?.intentFilters ?? [];\n}\n\nexport function setAndroidIntentFilters(\n config: Pick<ExpoConfig, 'android'>,\n androidManifest: AndroidManifest\n): AndroidManifest {\n // Always ensure old tags are removed.\n const mainActivity = getMainActivityOrThrow(androidManifest);\n // Remove all generated tags from previous runs...\n if (mainActivity['intent-filter']?.length) {\n mainActivity['intent-filter'] = mainActivity['intent-filter'].filter(\n value => value.$?.[GENERATED_TAG] !== 'true'\n );\n }\n\n const intentFilters = getIntentFilters(config);\n if (!intentFilters.length) {\n return androidManifest;\n }\n\n mainActivity['intent-filter'] = mainActivity['intent-filter']?.concat(\n renderIntentFilters(intentFilters)\n );\n\n return androidManifest;\n}\n\nexport default function renderIntentFilters(\n intentFilters: AndroidIntentFilters\n): ManifestIntentFilter[] {\n return intentFilters.map(intentFilter => {\n // <intent-filter>\n return {\n $: {\n 'android:autoVerify': intentFilter.autoVerify ? 'true' : undefined,\n // Add a custom \"generated\" tag that we can query later to remove.\n [GENERATED_TAG]: 'true',\n },\n action: [\n // <action android:name=\"android.intent.action.VIEW\"/>\n {\n $: {\n 'android:name': `android.intent.action.${intentFilter.action}`,\n },\n },\n ],\n data: renderIntentFilterData(intentFilter.data),\n category: renderIntentFilterCategory(intentFilter.category),\n };\n });\n}\n\n/** Like `<data android:scheme=\"exp\"/>` */\nfunction renderIntentFilterData(data?: AndroidIntentFiltersData | AndroidIntentFiltersData[]) {\n return (Array.isArray(data) ? data : [data]).filter(Boolean).map(datum => ({\n $: Object.entries(datum ?? {}).reduce(\n (prev, [key, value]) => ({ ...prev, [`android:${key}`]: value }),\n {}\n ),\n }));\n}\n\n/** Like `<category android:name=\"android.intent.category.DEFAULT\"/>` */\nfunction renderIntentFilterCategory(category?: string | string[]) {\n return (Array.isArray(category) ? category : [category]).filter(Boolean).map(cat => ({\n $: {\n 'android:name': `android.intent.category.${cat}`,\n },\n }));\n}\n"],"file":"IntentFilters.js"}
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.JS_ENGINE_PROP_KEY = exports.DEFAULT_JS_ENGINE = void 0;
|
|
6
7
|
exports.getJsEngine = getJsEngine;
|
|
7
8
|
exports.setJsEngine = setJsEngine;
|
|
8
|
-
exports.withJsEngineGradleProps =
|
|
9
|
+
exports.withJsEngineGradleProps = void 0;
|
|
9
10
|
|
|
10
11
|
function _androidPlugins() {
|
|
11
12
|
const data = require("../plugins/android-plugins");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/android/JsEngine.ts"],"names":["JS_ENGINE_PROP_KEY","DEFAULT_JS_ENGINE","withJsEngineGradleProps","config","modResults","setJsEngine","getJsEngine","android","jsEngine","gradleProperties","oldPropIndex","findIndex","prop","type","key","newProp","value","push"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/android/JsEngine.ts"],"names":["JS_ENGINE_PROP_KEY","DEFAULT_JS_ENGINE","withJsEngineGradleProps","config","modResults","setJsEngine","getJsEngine","android","jsEngine","gradleProperties","oldPropIndex","findIndex","prop","type","key","newProp","value","push"],"mappings":";;;;;;;;;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,kBAAkB,GAAG,eAA3B;;AACA,MAAMC,iBAAiB,GAAG,KAA1B;;;AAEA,MAAMC,uBAAqC,GAAGC,MAAM,IAAI;AAC7D,SAAO,4CAAqBA,MAArB,EAA6BA,MAAM,IAAI;AAC5CA,IAAAA,MAAM,CAACC,UAAP,GAAoBC,WAAW,CAACF,MAAD,EAASA,MAAM,CAACC,UAAhB,CAA/B;AACA,WAAOD,MAAP;AACD,GAHM,CAAP;AAID,CALM;;;;AAOA,SAASG,WAAT,CAAqBH,MAArB,EAAuE;AAAA;;AAC5E,6DAAOA,MAAM,CAACI,OAAd,oDAAO,gBAAgBC,QAAvB,yEAAmCL,MAAM,CAACK,QAA1C,uCAAsDP,iBAAtD;AACD;;AAEM,SAASI,WAAT,CACLF,MADK,EAELM,gBAFK,EAGa;AAAA;;AAClB,QAAMC,YAAY,GAAGD,gBAAgB,CAACE,SAAjB,CACnBC,IAAI,IAAIA,IAAI,CAACC,IAAL,KAAc,UAAd,IAA4BD,IAAI,CAACE,GAAL,KAAad,kBAD9B,CAArB;AAGA,QAAMe,OAAuB,GAAG;AAC9BF,IAAAA,IAAI,EAAE,UADwB;AAE9BC,IAAAA,GAAG,EAAEd,kBAFyB;AAG9BgB,IAAAA,KAAK,yDAAEb,MAAM,CAACI,OAAT,qDAAE,iBAAgBC,QAAlB,2EAA8BL,MAAM,CAACK,QAArC,yCAAiDP;AAHxB,GAAhC;;AAMA,MAAIS,YAAY,IAAI,CAApB,EAAuB;AACrBD,IAAAA,gBAAgB,CAACC,YAAD,CAAhB,GAAiCK,OAAjC;AACD,GAFD,MAEO;AACLN,IAAAA,gBAAgB,CAACQ,IAAjB,CAAsBF,OAAtB;AACD;;AAED,SAAON,gBAAP;AACD","sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\n\nimport type { ConfigPlugin } from '../Plugin.types';\nimport { withGradleProperties } from '../plugins/android-plugins';\nimport type { PropertiesItem } from './Properties';\n\nexport const JS_ENGINE_PROP_KEY = 'expo.jsEngine';\nexport const DEFAULT_JS_ENGINE = 'jsc';\n\nexport const withJsEngineGradleProps: ConfigPlugin = config => {\n return withGradleProperties(config, config => {\n config.modResults = setJsEngine(config, config.modResults);\n return config;\n });\n};\n\nexport function getJsEngine(config: Pick<ExpoConfig, 'android' | 'jsEngine'>) {\n return config.android?.jsEngine ?? config.jsEngine ?? DEFAULT_JS_ENGINE;\n}\n\nexport function setJsEngine(\n config: Pick<ExpoConfig, 'android' | 'jsEngine'>,\n gradleProperties: PropertiesItem[]\n): PropertiesItem[] {\n const oldPropIndex = gradleProperties.findIndex(\n prop => prop.type === 'property' && prop.key === JS_ENGINE_PROP_KEY\n );\n const newProp: PropertiesItem = {\n type: 'property',\n key: JS_ENGINE_PROP_KEY,\n value: config.android?.jsEngine ?? config.jsEngine ?? DEFAULT_JS_ENGINE,\n };\n\n if (oldPropIndex >= 0) {\n gradleProperties[oldPropIndex] = newProp;\n } else {\n gradleProperties.push(newProp);\n }\n\n return gradleProperties;\n}\n"],"file":"JsEngine.js"}
|
|
@@ -27,7 +27,11 @@ declare type ManifestReceiver = {
|
|
|
27
27
|
};
|
|
28
28
|
'intent-filter'?: ManifestIntentFilter[];
|
|
29
29
|
};
|
|
30
|
-
declare type ManifestIntentFilter = {
|
|
30
|
+
export declare type ManifestIntentFilter = {
|
|
31
|
+
$?: {
|
|
32
|
+
'android:autoVerify'?: StringBoolean;
|
|
33
|
+
'data-generated'?: StringBoolean;
|
|
34
|
+
};
|
|
31
35
|
action?: ManifestAction[];
|
|
32
36
|
data?: ManifestData[];
|
|
33
37
|
category?: ManifestCategory[];
|
|
@@ -3,21 +3,21 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.writeAndroidManifestAsync = writeAndroidManifestAsync;
|
|
7
|
-
exports.readAndroidManifestAsync = readAndroidManifestAsync;
|
|
8
|
-
exports.getMainApplication = getMainApplication;
|
|
9
|
-
exports.getMainApplicationOrThrow = getMainApplicationOrThrow;
|
|
10
|
-
exports.getMainActivityOrThrow = getMainActivityOrThrow;
|
|
11
|
-
exports.getRunnableActivity = getRunnableActivity;
|
|
12
|
-
exports.getMainActivity = getMainActivity;
|
|
13
6
|
exports.addMetaDataItemToMainApplication = addMetaDataItemToMainApplication;
|
|
14
|
-
exports.
|
|
7
|
+
exports.addUsesLibraryItemToMainApplication = addUsesLibraryItemToMainApplication;
|
|
15
8
|
exports.findMetaDataItem = findMetaDataItem;
|
|
16
9
|
exports.findUsesLibraryItem = findUsesLibraryItem;
|
|
10
|
+
exports.getMainActivity = getMainActivity;
|
|
11
|
+
exports.getMainActivityOrThrow = getMainActivityOrThrow;
|
|
12
|
+
exports.getMainApplication = getMainApplication;
|
|
17
13
|
exports.getMainApplicationMetaDataValue = getMainApplicationMetaDataValue;
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
14
|
+
exports.getMainApplicationOrThrow = getMainApplicationOrThrow;
|
|
15
|
+
exports.getRunnableActivity = getRunnableActivity;
|
|
20
16
|
exports.prefixAndroidKeys = prefixAndroidKeys;
|
|
17
|
+
exports.readAndroidManifestAsync = readAndroidManifestAsync;
|
|
18
|
+
exports.removeMetaDataItemFromMainApplication = removeMetaDataItemFromMainApplication;
|
|
19
|
+
exports.removeUsesLibraryItemFromMainApplication = removeUsesLibraryItemFromMainApplication;
|
|
20
|
+
exports.writeAndroidManifestAsync = writeAndroidManifestAsync;
|
|
21
21
|
|
|
22
22
|
function _assert() {
|
|
23
23
|
const data = _interopRequireDefault(require("assert"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/android/Manifest.ts"],"names":["writeAndroidManifestAsync","manifestPath","androidManifest","manifestXml","XML","format","fs","ensureDir","path","dirname","writeFile","readAndroidManifestAsync","xml","readXMLAsync","isManifest","Error","manifest","getMainApplication","application","filter","e","$","getMainApplicationOrThrow","mainApplication","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"],"mappings":"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","sourcesContent":["import assert from 'assert';\nimport fs from 'fs-extra';\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};\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\ntype ManifestIntentFilter = {\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: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 $: { 'xmlns:android': string; package?: string; [key: string]: string | undefined };\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.ensureDir(path.dirname(manifestPath));\n await fs.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\nexport function getMainApplication(androidManifest: AndroidManifest): ManifestApplication | null {\n return (\n androidManifest?.manifest?.application?.filter(\n e => e?.$?.['android:name'] === '.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].$[\n `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"],"file":"Manifest.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/android/Manifest.ts"],"names":["writeAndroidManifestAsync","manifestPath","androidManifest","manifestXml","XML","format","fs","ensureDir","path","dirname","writeFile","readAndroidManifestAsync","xml","readXMLAsync","isManifest","Error","manifest","getMainApplication","application","filter","e","$","getMainApplicationOrThrow","mainApplication","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"],"mappings":"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","sourcesContent":["import assert from 'assert';\nimport fs from 'fs-extra';\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};\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: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 $: { 'xmlns:android': string; package?: string; [key: string]: string | undefined };\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.ensureDir(path.dirname(manifestPath));\n await fs.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\nexport function getMainApplication(androidManifest: AndroidManifest): ManifestApplication | null {\n return (\n androidManifest?.manifest?.application?.filter(\n e => e?.$?.['android:name'] === '.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].$[\n `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"],"file":"Manifest.js"}
|
package/build/android/Name.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ import { ExpoConfig } from '@expo/config-types';
|
|
|
2
2
|
import { ConfigPlugin } from '../Plugin.types';
|
|
3
3
|
/**
|
|
4
4
|
* Sanitize a name, this should be used for files and gradle names.
|
|
5
|
-
* - `[/, \, :, <, >, ", ?, *, |]` are not allowed
|
|
5
|
+
* - `[/, \, :, <, >, ", ?, *, |]` are not allowed
|
|
6
|
+
* https://docs.gradle.org/4.2/release-notes.html#path-separator-characters-in-names-are-deprecated
|
|
6
7
|
*
|
|
7
8
|
* @param name
|
|
8
9
|
*/
|
package/build/android/Name.js
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.sanitizeNameForGradle = sanitizeNameForGradle;
|
|
7
|
-
exports.getName = getName;
|
|
8
6
|
exports.applyNameSettingsGradle = applyNameSettingsGradle;
|
|
7
|
+
exports.getName = getName;
|
|
8
|
+
exports.sanitizeNameForGradle = sanitizeNameForGradle;
|
|
9
9
|
exports.withNameSettingsGradle = exports.withName = void 0;
|
|
10
10
|
|
|
11
11
|
function _androidPlugins() {
|
|
@@ -50,13 +50,16 @@ function _Strings() {
|
|
|
50
50
|
|
|
51
51
|
/**
|
|
52
52
|
* Sanitize a name, this should be used for files and gradle names.
|
|
53
|
-
* - `[/, \, :, <, >, ", ?, *, |]` are not allowed
|
|
53
|
+
* - `[/, \, :, <, >, ", ?, *, |]` are not allowed
|
|
54
|
+
* https://docs.gradle.org/4.2/release-notes.html#path-separator-characters-in-names-are-deprecated
|
|
54
55
|
*
|
|
55
56
|
* @param name
|
|
56
57
|
*/
|
|
57
58
|
function sanitizeNameForGradle(name) {
|
|
58
|
-
//
|
|
59
|
+
// Remove escape characters which are valid in XML names but not in gradle.
|
|
60
|
+
name = name.replace(/[\n\r\t]/g, ''); // Gradle disallows these:
|
|
59
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).
|
|
62
|
+
|
|
60
63
|
return name.replace(/(\/|\\|:|<|>|"|\?|\*|\|)/g, '');
|
|
61
64
|
}
|
|
62
65
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/android/Name.ts"],"names":["sanitizeNameForGradle","name","replace","withName","applyNameFromConfig","withNameSettingsGradle","config","modResults","language","contents","applyNameSettingsGradle","getName","stringsJSON","value","settingsGradle"],"mappings":";;;;;;;;;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,qBAAT,CAA+BC,IAA/B,EAAqD;AAC1D;
|
|
1
|
+
{"version":3,"sources":["../../src/android/Name.ts"],"names":["sanitizeNameForGradle","name","replace","withName","applyNameFromConfig","withNameSettingsGradle","config","modResults","language","contents","applyNameSettingsGradle","getName","stringsJSON","value","settingsGradle"],"mappings":";;;;;;;;;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,qBAAT,CAA+BC,IAA/B,EAAqD;AAC1D;AACAA,EAAAA,IAAI,GAAGA,IAAI,CAACC,OAAL,CAAa,WAAb,EAA0B,EAA1B,CAAP,CAF0D,CAI1D;AACA;;AACA,SAAOD,IAAI,CAACC,OAAL,CAAa,2BAAb,EAA0C,EAA1C,CAAP;AACD;;AAEM,MAAMC,QAAQ,GAAG,8CAAuBC,mBAAvB,EAA4C,UAA5C,CAAjB;;;AAEA,MAAMC,sBAAoC,GAAGC,MAAM,IAAI;AAC5D,SAAO,0CAAmBA,MAAnB,EAA2BA,MAAM,IAAI;AAC1C,QAAIA,MAAM,CAACC,UAAP,CAAkBC,QAAlB,KAA+B,QAAnC,EAA6C;AAC3CF,MAAAA,MAAM,CAACC,UAAP,CAAkBE,QAAlB,GAA6BC,uBAAuB,CAACJ,MAAD,EAASA,MAAM,CAACC,UAAP,CAAkBE,QAA3B,CAApD;AACD,KAFD,MAEO;AACL,yCACE,MADF,EAEG,mEAFH;AAID;;AACD,WAAOH,MAAP;AACD,GAVM,CAAP;AAWD,CAZM;;;;AAcA,SAASK,OAAT,CAAiBL,MAAjB,EAAmD;AACxD,SAAO,OAAOA,MAAM,CAACL,IAAd,KAAuB,QAAvB,GAAkCK,MAAM,CAACL,IAAzC,GAAgD,IAAvD;AACD;;AAED,SAASG,mBAAT,CACEE,MADF,EAEEM,WAFF,EAGe;AACb,QAAMX,IAAI,GAAGU,OAAO,CAACL,MAAD,CAApB;;AACA,MAAIL,IAAJ,EAAU;AACR,WAAO,8BAAc,CAAC,oCAAkB;AAAEA,MAAAA,IAAI,EAAE,UAAR;AAAoBY,MAAAA,KAAK,EAAEZ;AAA3B,KAAlB,CAAD,CAAd,EAAsEW,WAAtE,CAAP;AACD;;AACD,SAAO,iCAAiB,UAAjB,EAA6BA,WAA7B,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASF,uBAAT,CAAiCJ,MAAjC,EAAmEQ,cAAnE,EAA2F;AAAA;;AAChG,QAAMb,IAAI,GAAGD,qBAAqB,aAACW,OAAO,CAACL,MAAD,CAAR,+CAAoB,EAApB,CAAlC,CADgG,CAGhG;;AACA,SAAOQ,cAAc,CAACZ,OAAf,CACL,oDADK,EAEJ,uBAAsBD,IAAI,CAACC,OAAL,CAAa,IAAb,EAAmB,KAAnB,CAA0B,GAF5C,CAAP;AAID","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"],"file":"Name.js"}
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.SCREEN_ORIENTATION_ATTRIBUTE = void 0;
|
|
6
7
|
exports.getOrientation = getOrientation;
|
|
7
8
|
exports.setAndroidOrientation = setAndroidOrientation;
|
|
8
|
-
exports.withOrientation =
|
|
9
|
+
exports.withOrientation = void 0;
|
|
9
10
|
|
|
10
11
|
function _androidPlugins() {
|
|
11
12
|
const data = require("../plugins/android-plugins");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/android/Orientation.ts"],"names":["SCREEN_ORIENTATION_ATTRIBUTE","withOrientation","setAndroidOrientation","getOrientation","config","orientation","androidManifest","mainActivity","$"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/android/Orientation.ts"],"names":["SCREEN_ORIENTATION_ATTRIBUTE","withOrientation","setAndroidOrientation","getOrientation","config","orientation","androidManifest","mainActivity","$"],"mappings":";;;;;;;;;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,4BAA4B,GAAG,2BAArC;;AAEA,MAAMC,eAAe,GAAG,mDAC7BC,qBAD6B,EAE7B,iBAF6B,CAAxB;;;AAKA,SAASC,cAAT,CAAwBC,MAAxB,EAAiE;AACtE,SAAO,OAAOA,MAAM,CAACC,WAAd,KAA8B,QAA9B,GAAyCD,MAAM,CAACC,WAAhD,GAA8D,IAArE;AACD;;AAEM,SAASH,qBAAT,CACLE,MADK,EAELE,eAFK,EAGL;AACA,QAAMD,WAAW,GAAGF,cAAc,CAACC,MAAD,CAAlC,CADA,CAEA;;AACA,MAAI,CAACC,WAAL,EAAkB;AAChB,WAAOC,eAAP;AACD;;AAED,QAAMC,YAAY,GAAG,wCAAuBD,eAAvB,CAArB;AAEAC,EAAAA,YAAY,CAACC,CAAb,CAAeR,4BAAf,IACEK,WAAW,KAAK,SAAhB,GAA4BA,WAA5B,GAA0C,aAD5C;AAGA,SAAOC,eAAP;AACD","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"],"file":"Orientation.js"}
|
package/build/android/Package.js
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.getApplicationIdAsync = getApplicationIdAsync;
|
|
6
7
|
exports.getPackage = getPackage;
|
|
7
8
|
exports.renamePackageOnDisk = renamePackageOnDisk;
|
|
8
9
|
exports.renamePackageOnDiskForType = renamePackageOnDiskForType;
|
|
9
|
-
exports.setPackageInBuildGradle = setPackageInBuildGradle;
|
|
10
10
|
exports.setPackageInAndroidManifest = setPackageInAndroidManifest;
|
|
11
|
-
exports.
|
|
12
|
-
exports.withPackageRefactor = exports.
|
|
11
|
+
exports.setPackageInBuildGradle = setPackageInBuildGradle;
|
|
12
|
+
exports.withPackageRefactor = exports.withPackageManifest = exports.withPackageGradle = void 0;
|
|
13
13
|
|
|
14
14
|
function _debug() {
|
|
15
15
|
const data = _interopRequireDefault(require("debug"));
|
|
@@ -103,7 +103,7 @@ function _Paths() {
|
|
|
103
103
|
|
|
104
104
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
105
105
|
|
|
106
|
-
const debug = (0, _debug().default)('config-plugins:android:package');
|
|
106
|
+
const debug = (0, _debug().default)('expo:config-plugins:android:package');
|
|
107
107
|
const withPackageManifest = (0, _androidPlugins().createAndroidManifestPlugin)(setPackageInAndroidManifest, 'withPackageManifest');
|
|
108
108
|
exports.withPackageManifest = withPackageManifest;
|
|
109
109
|
|