@expo/config-plugins 5.0.3 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/Plugin.types.d.ts +7 -7
- package/build/Plugin.types.js +0 -9
- package/build/Plugin.types.js.map +1 -1
- package/build/android/AllowBackup.js +0 -15
- package/build/android/AllowBackup.js.map +1 -1
- package/build/android/BuildProperties.js +2 -16
- package/build/android/BuildProperties.js.map +1 -1
- package/build/android/Colors.js +3 -25
- package/build/android/Colors.js.map +1 -1
- package/build/android/EasBuild.js +2 -22
- package/build/android/EasBuild.js.map +1 -1
- package/build/android/EasBuildGradleScript.js.map +1 -1
- package/build/android/GoogleMapsApiKey.js +0 -12
- package/build/android/GoogleMapsApiKey.js.map +1 -1
- package/build/android/GoogleServices.js +10 -48
- package/build/android/GoogleServices.js.map +1 -1
- package/build/android/IntentFilters.d.ts +1 -1
- package/build/android/IntentFilters.js +8 -24
- package/build/android/IntentFilters.js.map +1 -1
- package/build/android/Manifest.d.ts +19 -19
- package/build/android/Manifest.js +7 -66
- package/build/android/Manifest.js.map +1 -1
- package/build/android/Name.js +6 -27
- package/build/android/Name.js.map +1 -1
- package/build/android/Orientation.js +2 -12
- package/build/android/Orientation.js.map +1 -1
- package/build/android/Package.js +26 -111
- package/build/android/Package.js.map +1 -1
- package/build/android/Paths.d.ts +2 -2
- package/build/android/Paths.js +0 -47
- package/build/android/Paths.js.map +1 -1
- package/build/android/Permissions.js +8 -52
- package/build/android/Permissions.js.map +1 -1
- package/build/android/PrimaryColor.js +0 -18
- package/build/android/PrimaryColor.js.map +1 -1
- package/build/android/Properties.d.ts +1 -1
- package/build/android/Properties.js +0 -9
- package/build/android/Properties.js.map +1 -1
- package/build/android/Resources.d.ts +4 -4
- package/build/android/Resources.js +9 -29
- package/build/android/Resources.js.map +1 -1
- package/build/android/Scheme.d.ts +1 -1
- package/build/android/Scheme.js +13 -66
- package/build/android/Scheme.js.map +1 -1
- package/build/android/StatusBar.js +5 -33
- package/build/android/StatusBar.js.map +1 -1
- package/build/android/Strings.js +0 -14
- package/build/android/Strings.js.map +1 -1
- package/build/android/Styles.js +7 -34
- package/build/android/Styles.js.map +1 -1
- package/build/android/Updates.d.ts +2 -0
- package/build/android/Updates.js +50 -47
- package/build/android/Updates.js.map +1 -1
- package/build/android/Version.js +3 -29
- package/build/android/Version.js.map +1 -1
- package/build/android/WindowSoftInputMode.js +0 -14
- package/build/android/WindowSoftInputMode.js.map +1 -1
- package/build/android/codeMod.js +6 -22
- package/build/android/codeMod.js.map +1 -1
- package/build/android/index.js +0 -94
- package/build/android/index.js.map +1 -1
- package/build/index.js +2 -65
- package/build/index.js.map +1 -1
- package/build/ios/Bitcode.d.ts +1 -1
- package/build/ios/Bitcode.js +8 -28
- package/build/ios/Bitcode.js.map +1 -1
- package/build/ios/BuildProperties.js +2 -14
- package/build/ios/BuildProperties.js.map +1 -1
- package/build/ios/BuildScheme.js +2 -34
- package/build/ios/BuildScheme.js.map +1 -1
- package/build/ios/BundleIdentifier.js +13 -72
- package/build/ios/BundleIdentifier.js.map +1 -1
- package/build/ios/DeviceFamily.js +6 -24
- package/build/ios/DeviceFamily.js.map +1 -1
- package/build/ios/Entitlements.js +4 -45
- package/build/ios/Entitlements.js.map +1 -1
- package/build/ios/Google.d.ts +2 -2
- package/build/ios/Google.js +11 -66
- package/build/ios/Google.js.map +1 -1
- package/build/ios/IosConfig.types.d.ts +6 -11
- package/build/ios/IosConfig.types.js.map +1 -1
- package/build/ios/Locales.d.ts +3 -3
- package/build/ios/Locales.js +12 -43
- package/build/ios/Locales.js.map +1 -1
- package/build/ios/Maps.js +15 -53
- package/build/ios/Maps.js.map +1 -1
- package/build/ios/Name.js +7 -31
- package/build/ios/Name.js.map +1 -1
- package/build/ios/Orientation.js +2 -10
- package/build/ios/Orientation.js.map +1 -1
- package/build/ios/Paths.d.ts +2 -2
- package/build/ios/Paths.js +8 -73
- package/build/ios/Paths.js.map +1 -1
- package/build/ios/Permissions.js +1 -16
- package/build/ios/Permissions.js.map +1 -1
- package/build/ios/ProvisioningProfile.d.ts +1 -1
- package/build/ios/ProvisioningProfile.js +0 -18
- package/build/ios/ProvisioningProfile.js.map +1 -1
- package/build/ios/RequiresFullScreen.js +19 -31
- package/build/ios/RequiresFullScreen.js.map +1 -1
- package/build/ios/Scheme.js +12 -34
- package/build/ios/Scheme.js.map +1 -1
- package/build/ios/Swift.js +16 -50
- package/build/ios/Swift.js.map +1 -1
- package/build/ios/Target.js +0 -30
- package/build/ios/Target.js.map +1 -1
- package/build/ios/Updates.js +10 -49
- package/build/ios/Updates.js.map +1 -1
- package/build/ios/UsesNonExemptEncryption.js +4 -10
- package/build/ios/UsesNonExemptEncryption.js.map +1 -1
- package/build/ios/Version.js +4 -11
- package/build/ios/Version.js.map +1 -1
- package/build/ios/XcodeProjectFile.js +5 -23
- package/build/ios/XcodeProjectFile.js.map +1 -1
- package/build/ios/codeMod.js +19 -60
- package/build/ios/codeMod.js.map +1 -1
- package/build/ios/index.js +0 -97
- package/build/ios/index.js.map +1 -1
- package/build/ios/utils/Xcodeproj.d.ts +6 -6
- package/build/ios/utils/Xcodeproj.js +15 -101
- package/build/ios/utils/Xcodeproj.js.map +1 -1
- package/build/ios/utils/getInfoPlistPath.js +2 -15
- package/build/ios/utils/getInfoPlistPath.js.map +1 -1
- package/build/ios/utils/string.js +0 -1
- package/build/ios/utils/string.js.map +1 -1
- package/build/plugins/android-plugins.d.ts +2 -2
- package/build/plugins/android-plugins.js +11 -42
- package/build/plugins/android-plugins.js.map +1 -1
- package/build/plugins/createBaseMod.d.ts +3 -3
- package/build/plugins/createBaseMod.js +8 -25
- package/build/plugins/createBaseMod.js.map +1 -1
- package/build/plugins/ios-plugins.d.ts +2 -2
- package/build/plugins/ios-plugins.js +8 -48
- package/build/plugins/ios-plugins.js.map +1 -1
- package/build/plugins/mod-compiler.js +21 -72
- package/build/plugins/mod-compiler.js.map +1 -1
- package/build/plugins/withAndroidBaseMods.d.ts +1 -1
- package/build/plugins/withAndroidBaseMods.js +4 -89
- package/build/plugins/withAndroidBaseMods.js.map +1 -1
- package/build/plugins/withDangerousMod.js +0 -5
- package/build/plugins/withDangerousMod.js.map +1 -1
- package/build/plugins/withIosBaseMods.d.ts +1 -1
- package/build/plugins/withIosBaseMods.js +26 -118
- package/build/plugins/withIosBaseMods.js.map +1 -1
- package/build/plugins/withMod.d.ts +1 -1
- package/build/plugins/withMod.js +24 -59
- package/build/plugins/withMod.js.map +1 -1
- package/build/plugins/withPlugins.js +0 -9
- package/build/plugins/withPlugins.js.map +1 -1
- package/build/plugins/withRunOnce.js +3 -9
- package/build/plugins/withRunOnce.js.map +1 -1
- package/build/plugins/withStaticPlugin.js +21 -43
- package/build/plugins/withStaticPlugin.js.map +1 -1
- package/build/utils/BuildProperties.types.d.ts +2 -2
- package/build/utils/BuildProperties.types.js.map +1 -1
- package/build/utils/Updates.d.ts +3 -1
- package/build/utils/Updates.js +18 -77
- package/build/utils/Updates.js.map +1 -1
- package/build/utils/XML.d.ts +1 -1
- package/build/utils/XML.js +7 -44
- package/build/utils/XML.js.map +1 -1
- package/build/utils/commonCodeMod.js +2 -10
- package/build/utils/commonCodeMod.js.map +1 -1
- package/build/utils/errors.d.ts +1 -1
- package/build/utils/errors.js +3 -11
- package/build/utils/errors.js.map +1 -1
- package/build/utils/fs.js +1 -12
- package/build/utils/fs.js.map +1 -1
- package/build/utils/generateCode.d.ts +1 -1
- package/build/utils/generateCode.js +8 -25
- package/build/utils/generateCode.js.map +1 -1
- package/build/utils/history.d.ts +1 -1
- package/build/utils/history.js +0 -6
- package/build/utils/history.js.map +1 -1
- package/build/utils/matchBrackets.d.ts +3 -3
- package/build/utils/matchBrackets.js +2 -17
- package/build/utils/matchBrackets.js.map +1 -1
- package/build/utils/modules.js +0 -10
- package/build/utils/modules.js.map +1 -1
- package/build/utils/obj.js +0 -4
- package/build/utils/obj.js.map +1 -1
- package/build/utils/plugin-resolver.js +25 -69
- package/build/utils/plugin-resolver.js.map +1 -1
- package/build/utils/sortObject.js +4 -10
- package/build/utils/sortObject.js.map +1 -1
- package/build/utils/versions.js +0 -10
- package/build/utils/versions.js.map +1 -1
- package/build/utils/warnings.js +1 -9
- package/build/utils/warnings.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildProperties.types.js","names":[],"sources":["../../src/utils/BuildProperties.types.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\n\n/**\n * Rule to transform from config to build properties\n *\n * @example\n * ```ts\n * {\n * propName: 'expo.jsEngine',\n * propValueGetter: (config) => config.android?.jsEngine ?? config.jsEngine ?? '
|
|
1
|
+
{"version":3,"file":"BuildProperties.types.js","names":[],"sources":["../../src/utils/BuildProperties.types.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\n\n/**\n * Rule to transform from config to build properties\n *\n * @example\n * ```ts\n * {\n * propName: 'expo.jsEngine',\n * propValueGetter: (config) => config.android?.jsEngine ?? config.jsEngine ?? 'hermes',\n * }\n * ```\n * Will lookup a value through the `propValueGetter` and update to `android/gradle.properties` / `ios/Podfile.properties.json`\n * with the `expo.jsEngine` property name and the lookuped value.\n *\n */\n\n/**\n * Source config can be either expo config or generic config\n */\nexport type BuildPropertiesConfig = ExpoConfig | Record<string, any>;\n\nexport interface ConfigToPropertyRuleType<SourceConfigType extends BuildPropertiesConfig> {\n /** Property name in `android/gradle.properties` or `ios/Podfile.properties.json` */\n propName: string;\n\n /** Passing config and get the property value */\n propValueGetter: (config: SourceConfigType) => string | null | undefined;\n}\n"],"mappings":""}
|
package/build/utils/Updates.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Android, ExpoConfig, IOS } from '@expo/config-types';
|
|
2
|
-
export
|
|
2
|
+
export type ExpoConfigUpdates = Pick<ExpoConfig, 'sdkVersion' | 'owner' | 'runtimeVersion' | 'updates' | 'slug'>;
|
|
3
3
|
export declare function getExpoUpdatesPackageVersion(projectRoot: string): string | null;
|
|
4
4
|
export declare function getUpdateUrl(config: Pick<ExpoConfigUpdates, 'owner' | 'slug' | 'updates'>, username: string | null): string | null;
|
|
5
5
|
export declare function getAppVersion(config: Pick<ExpoConfig, 'version'>): string;
|
|
@@ -24,3 +24,5 @@ export declare function getUpdatesCheckOnLaunch(config: Pick<ExpoConfigUpdates,
|
|
|
24
24
|
export declare function getUpdatesCodeSigningCertificate(projectRoot: string, config: Pick<ExpoConfigUpdates, 'updates'>): string | undefined;
|
|
25
25
|
export declare function getUpdatesCodeSigningMetadata(config: Pick<ExpoConfigUpdates, 'updates'>): NonNullable<ExpoConfigUpdates['updates']>['codeSigningMetadata'];
|
|
26
26
|
export declare function getUpdatesCodeSigningMetadataStringified(config: Pick<ExpoConfigUpdates, 'updates'>): string | undefined;
|
|
27
|
+
export declare function getUpdatesRequestHeaders(config: Pick<ExpoConfigUpdates, 'updates'>): NonNullable<ExpoConfigUpdates['updates']>['requestHeaders'];
|
|
28
|
+
export declare function getUpdatesRequestHeadersStringified(config: Pick<ExpoConfigUpdates, 'updates'>): string | undefined;
|
package/build/utils/Updates.js
CHANGED
|
@@ -15,175 +15,132 @@ exports.getUpdatesCodeSigningCertificate = getUpdatesCodeSigningCertificate;
|
|
|
15
15
|
exports.getUpdatesCodeSigningMetadata = getUpdatesCodeSigningMetadata;
|
|
16
16
|
exports.getUpdatesCodeSigningMetadataStringified = getUpdatesCodeSigningMetadataStringified;
|
|
17
17
|
exports.getUpdatesEnabled = getUpdatesEnabled;
|
|
18
|
+
exports.getUpdatesRequestHeaders = getUpdatesRequestHeaders;
|
|
19
|
+
exports.getUpdatesRequestHeadersStringified = getUpdatesRequestHeadersStringified;
|
|
18
20
|
exports.getUpdatesTimeout = getUpdatesTimeout;
|
|
19
21
|
exports.withRuntimeVersion = void 0;
|
|
20
|
-
|
|
21
22
|
function _sdkRuntimeVersions() {
|
|
22
23
|
const data = require("@expo/sdk-runtime-versions");
|
|
23
|
-
|
|
24
24
|
_sdkRuntimeVersions = function () {
|
|
25
25
|
return data;
|
|
26
26
|
};
|
|
27
|
-
|
|
28
27
|
return data;
|
|
29
28
|
}
|
|
30
|
-
|
|
31
29
|
function _fs() {
|
|
32
30
|
const data = _interopRequireDefault(require("fs"));
|
|
33
|
-
|
|
34
31
|
_fs = function () {
|
|
35
32
|
return data;
|
|
36
33
|
};
|
|
37
|
-
|
|
38
34
|
return data;
|
|
39
35
|
}
|
|
40
|
-
|
|
41
36
|
function _getenv() {
|
|
42
37
|
const data = require("getenv");
|
|
43
|
-
|
|
44
38
|
_getenv = function () {
|
|
45
39
|
return data;
|
|
46
40
|
};
|
|
47
|
-
|
|
48
41
|
return data;
|
|
49
42
|
}
|
|
50
|
-
|
|
51
43
|
function _path() {
|
|
52
44
|
const data = _interopRequireDefault(require("path"));
|
|
53
|
-
|
|
54
45
|
_path = function () {
|
|
55
46
|
return data;
|
|
56
47
|
};
|
|
57
|
-
|
|
58
48
|
return data;
|
|
59
49
|
}
|
|
60
|
-
|
|
61
50
|
function _resolveFrom() {
|
|
62
51
|
const data = _interopRequireDefault(require("resolve-from"));
|
|
63
|
-
|
|
64
52
|
_resolveFrom = function () {
|
|
65
53
|
return data;
|
|
66
54
|
};
|
|
67
|
-
|
|
68
55
|
return data;
|
|
69
56
|
}
|
|
70
|
-
|
|
71
57
|
function _semver() {
|
|
72
58
|
const data = _interopRequireDefault(require("semver"));
|
|
73
|
-
|
|
74
59
|
_semver = function () {
|
|
75
60
|
return data;
|
|
76
61
|
};
|
|
77
|
-
|
|
78
62
|
return data;
|
|
79
63
|
}
|
|
80
|
-
|
|
81
64
|
function _() {
|
|
82
65
|
const data = require("..");
|
|
83
|
-
|
|
84
66
|
_ = function () {
|
|
85
67
|
return data;
|
|
86
68
|
};
|
|
87
|
-
|
|
88
69
|
return data;
|
|
89
70
|
}
|
|
90
|
-
|
|
91
71
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
92
|
-
|
|
93
72
|
function getExpoUpdatesPackageVersion(projectRoot) {
|
|
94
73
|
const expoUpdatesPackageJsonPath = _resolveFrom().default.silent(projectRoot, 'expo-updates/package.json');
|
|
95
|
-
|
|
96
74
|
if (!expoUpdatesPackageJsonPath || !_fs().default.existsSync(expoUpdatesPackageJsonPath)) {
|
|
97
75
|
return null;
|
|
98
76
|
}
|
|
99
|
-
|
|
100
77
|
const packageJson = JSON.parse(_fs().default.readFileSync(expoUpdatesPackageJsonPath, 'utf8'));
|
|
101
78
|
return packageJson.version;
|
|
102
79
|
}
|
|
103
|
-
|
|
104
80
|
function getUpdateUrl(config, username) {
|
|
105
81
|
var _config$updates;
|
|
106
|
-
|
|
107
82
|
if ((_config$updates = config.updates) !== null && _config$updates !== void 0 && _config$updates.url) {
|
|
108
83
|
var _config$updates2;
|
|
109
|
-
|
|
110
84
|
return (_config$updates2 = config.updates) === null || _config$updates2 === void 0 ? void 0 : _config$updates2.url;
|
|
111
85
|
}
|
|
112
|
-
|
|
113
86
|
const user = typeof config.owner === 'string' ? config.owner : username;
|
|
114
|
-
|
|
115
87
|
if (!user) {
|
|
116
88
|
return null;
|
|
117
89
|
}
|
|
118
|
-
|
|
119
90
|
return `https://exp.host/@${user}/${config.slug}`;
|
|
120
91
|
}
|
|
121
|
-
|
|
122
92
|
function getAppVersion(config) {
|
|
123
93
|
var _config$version;
|
|
124
|
-
|
|
125
94
|
return (_config$version = config.version) !== null && _config$version !== void 0 ? _config$version : '1.0.0';
|
|
126
95
|
}
|
|
127
|
-
|
|
128
96
|
function getNativeVersion(config, platform) {
|
|
129
97
|
const version = _().IOSConfig.Version.getVersion(config);
|
|
130
|
-
|
|
131
98
|
switch (platform) {
|
|
132
99
|
case 'ios':
|
|
133
100
|
{
|
|
134
101
|
const buildNumber = _().IOSConfig.Version.getBuildNumber(config);
|
|
135
|
-
|
|
136
102
|
return `${version}(${buildNumber})`;
|
|
137
103
|
}
|
|
138
|
-
|
|
139
104
|
case 'android':
|
|
140
105
|
{
|
|
141
106
|
const versionCode = _().AndroidConfig.Version.getVersionCode(config);
|
|
142
|
-
|
|
143
107
|
return `${version}(${versionCode})`;
|
|
144
108
|
}
|
|
145
|
-
|
|
146
109
|
default:
|
|
147
110
|
{
|
|
148
111
|
throw new Error(`"${platform}" is not a supported platform. Choose either "ios" or "android".`);
|
|
149
112
|
}
|
|
150
113
|
}
|
|
151
114
|
}
|
|
115
|
+
|
|
152
116
|
/**
|
|
153
117
|
* Compute runtime version policies.
|
|
154
118
|
* @return an expoConfig with only string valued platform specific runtime versions.
|
|
155
119
|
*/
|
|
156
|
-
|
|
157
|
-
|
|
158
120
|
const withRuntimeVersion = config => {
|
|
159
121
|
var _config$ios, _config$android;
|
|
160
|
-
|
|
161
122
|
if ((_config$ios = config.ios) !== null && _config$ios !== void 0 && _config$ios.runtimeVersion || config.runtimeVersion) {
|
|
162
123
|
const runtimeVersion = getRuntimeVersion(config, 'ios');
|
|
163
|
-
|
|
164
124
|
if (runtimeVersion) {
|
|
165
|
-
config.ios = {
|
|
125
|
+
config.ios = {
|
|
126
|
+
...config.ios,
|
|
166
127
|
runtimeVersion
|
|
167
128
|
};
|
|
168
129
|
}
|
|
169
130
|
}
|
|
170
|
-
|
|
171
131
|
if ((_config$android = config.android) !== null && _config$android !== void 0 && _config$android.runtimeVersion || config.runtimeVersion) {
|
|
172
132
|
const runtimeVersion = getRuntimeVersion(config, 'android');
|
|
173
|
-
|
|
174
133
|
if (runtimeVersion) {
|
|
175
|
-
config.android = {
|
|
134
|
+
config.android = {
|
|
135
|
+
...config.android,
|
|
176
136
|
runtimeVersion
|
|
177
137
|
};
|
|
178
138
|
}
|
|
179
139
|
}
|
|
180
|
-
|
|
181
140
|
delete config.runtimeVersion;
|
|
182
141
|
return config;
|
|
183
142
|
};
|
|
184
|
-
|
|
185
143
|
exports.withRuntimeVersion = withRuntimeVersion;
|
|
186
|
-
|
|
187
144
|
function getRuntimeVersionNullable(...[config, platform]) {
|
|
188
145
|
try {
|
|
189
146
|
return getRuntimeVersion(config, platform);
|
|
@@ -191,20 +148,15 @@ function getRuntimeVersionNullable(...[config, platform]) {
|
|
|
191
148
|
if ((0, _getenv().boolish)('EXPO_DEBUG', false)) {
|
|
192
149
|
console.log(e);
|
|
193
150
|
}
|
|
194
|
-
|
|
195
151
|
return null;
|
|
196
152
|
}
|
|
197
153
|
}
|
|
198
|
-
|
|
199
154
|
function getRuntimeVersion(config, platform) {
|
|
200
155
|
var _config$platform$runt, _config$platform;
|
|
201
|
-
|
|
202
156
|
const runtimeVersion = (_config$platform$runt = (_config$platform = config[platform]) === null || _config$platform === void 0 ? void 0 : _config$platform.runtimeVersion) !== null && _config$platform$runt !== void 0 ? _config$platform$runt : config.runtimeVersion;
|
|
203
|
-
|
|
204
157
|
if (!runtimeVersion) {
|
|
205
158
|
return null;
|
|
206
159
|
}
|
|
207
|
-
|
|
208
160
|
if (typeof runtimeVersion === 'string') {
|
|
209
161
|
return runtimeVersion;
|
|
210
162
|
} else if (runtimeVersion.policy === 'appVersion') {
|
|
@@ -215,77 +167,66 @@ function getRuntimeVersion(config, platform) {
|
|
|
215
167
|
if (!config.sdkVersion) {
|
|
216
168
|
throw new Error("An SDK version must be defined when using the 'sdkVersion' runtime policy.");
|
|
217
169
|
}
|
|
218
|
-
|
|
219
170
|
return (0, _sdkRuntimeVersions().getRuntimeVersionForSDKVersion)(config.sdkVersion);
|
|
220
171
|
}
|
|
221
|
-
|
|
222
172
|
throw new Error(`"${typeof runtimeVersion === 'object' ? JSON.stringify(runtimeVersion) : runtimeVersion}" is not a valid runtime version. getRuntimeVersion only supports a string, "sdkVersion", "appVersion", or "nativeVersion" policy.`);
|
|
223
173
|
}
|
|
224
|
-
|
|
225
174
|
function getSDKVersion(config) {
|
|
226
175
|
return typeof config.sdkVersion === 'string' ? config.sdkVersion : null;
|
|
227
176
|
}
|
|
228
|
-
|
|
229
177
|
function getUpdatesEnabled(config) {
|
|
230
178
|
var _config$updates3;
|
|
231
|
-
|
|
232
179
|
return ((_config$updates3 = config.updates) === null || _config$updates3 === void 0 ? void 0 : _config$updates3.enabled) !== false;
|
|
233
180
|
}
|
|
234
|
-
|
|
235
181
|
function getUpdatesTimeout(config) {
|
|
236
182
|
var _config$updates$fallb, _config$updates4;
|
|
237
|
-
|
|
238
183
|
return (_config$updates$fallb = (_config$updates4 = config.updates) === null || _config$updates4 === void 0 ? void 0 : _config$updates4.fallbackToCacheTimeout) !== null && _config$updates$fallb !== void 0 ? _config$updates$fallb : 0;
|
|
239
184
|
}
|
|
240
|
-
|
|
241
185
|
function getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion) {
|
|
242
186
|
var _config$updates5, _config$updates6;
|
|
243
|
-
|
|
244
187
|
if (((_config$updates5 = config.updates) === null || _config$updates5 === void 0 ? void 0 : _config$updates5.checkAutomatically) === 'ON_ERROR_RECOVERY') {
|
|
245
188
|
// native 'ERROR_RECOVERY_ONLY' option was only introduced in 0.11.x
|
|
246
189
|
if (expoUpdatesPackageVersion && _semver().default.gte(expoUpdatesPackageVersion, '0.11.0')) {
|
|
247
190
|
return 'ERROR_RECOVERY_ONLY';
|
|
248
191
|
}
|
|
249
|
-
|
|
250
192
|
return 'NEVER';
|
|
251
193
|
} else if (((_config$updates6 = config.updates) === null || _config$updates6 === void 0 ? void 0 : _config$updates6.checkAutomatically) === 'ON_LOAD') {
|
|
252
194
|
return 'ALWAYS';
|
|
253
195
|
}
|
|
254
|
-
|
|
255
196
|
return 'ALWAYS';
|
|
256
197
|
}
|
|
257
|
-
|
|
258
198
|
function getUpdatesCodeSigningCertificate(projectRoot, config) {
|
|
259
199
|
var _config$updates7;
|
|
260
|
-
|
|
261
200
|
const codeSigningCertificatePath = (_config$updates7 = config.updates) === null || _config$updates7 === void 0 ? void 0 : _config$updates7.codeSigningCertificate;
|
|
262
|
-
|
|
263
201
|
if (!codeSigningCertificatePath) {
|
|
264
202
|
return undefined;
|
|
265
203
|
}
|
|
266
|
-
|
|
267
204
|
const finalPath = _path().default.join(projectRoot, codeSigningCertificatePath);
|
|
268
|
-
|
|
269
205
|
if (!_fs().default.existsSync(finalPath)) {
|
|
270
206
|
throw new Error(`File not found at \`updates.codeSigningCertificate\` path: ${finalPath}`);
|
|
271
207
|
}
|
|
272
|
-
|
|
273
208
|
return _fs().default.readFileSync(finalPath, 'utf8');
|
|
274
209
|
}
|
|
275
|
-
|
|
276
210
|
function getUpdatesCodeSigningMetadata(config) {
|
|
277
211
|
var _config$updates8;
|
|
278
|
-
|
|
279
212
|
return (_config$updates8 = config.updates) === null || _config$updates8 === void 0 ? void 0 : _config$updates8.codeSigningMetadata;
|
|
280
213
|
}
|
|
281
|
-
|
|
282
214
|
function getUpdatesCodeSigningMetadataStringified(config) {
|
|
283
215
|
const metadata = getUpdatesCodeSigningMetadata(config);
|
|
284
|
-
|
|
285
216
|
if (!metadata) {
|
|
286
217
|
return undefined;
|
|
287
218
|
}
|
|
288
|
-
|
|
219
|
+
return JSON.stringify(metadata);
|
|
220
|
+
}
|
|
221
|
+
function getUpdatesRequestHeaders(config) {
|
|
222
|
+
var _config$updates9;
|
|
223
|
+
return (_config$updates9 = config.updates) === null || _config$updates9 === void 0 ? void 0 : _config$updates9.requestHeaders;
|
|
224
|
+
}
|
|
225
|
+
function getUpdatesRequestHeadersStringified(config) {
|
|
226
|
+
const metadata = getUpdatesRequestHeaders(config);
|
|
227
|
+
if (!metadata) {
|
|
228
|
+
return undefined;
|
|
229
|
+
}
|
|
289
230
|
return JSON.stringify(metadata);
|
|
290
231
|
}
|
|
291
232
|
//# sourceMappingURL=Updates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Updates.js","names":["getExpoUpdatesPackageVersion","projectRoot","expoUpdatesPackageJsonPath","resolveFrom","silent","fs","existsSync","packageJson","JSON","parse","readFileSync","version","getUpdateUrl","config","username","updates","url","user","owner","slug","getAppVersion","getNativeVersion","platform","IOSConfig","Version","getVersion","buildNumber","getBuildNumber","versionCode","AndroidConfig","getVersionCode","Error","withRuntimeVersion","ios","runtimeVersion","getRuntimeVersion","android","getRuntimeVersionNullable","e","boolish","console","log","policy","sdkVersion","getRuntimeVersionForSDKVersion","stringify","getSDKVersion","getUpdatesEnabled","enabled","getUpdatesTimeout","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","expoUpdatesPackageVersion","checkAutomatically","semver","gte","getUpdatesCodeSigningCertificate","codeSigningCertificatePath","codeSigningCertificate","undefined","finalPath","path","join","getUpdatesCodeSigningMetadata","codeSigningMetadata","getUpdatesCodeSigningMetadataStringified","metadata"],"sources":["../../src/utils/Updates.ts"],"sourcesContent":["import { Android, ExpoConfig, IOS } from '@expo/config-types';\nimport { getRuntimeVersionForSDKVersion } from '@expo/sdk-runtime-versions';\nimport fs from 'fs';\nimport { boolish } from 'getenv';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport { AndroidConfig, IOSConfig } from '..';\n\nexport type ExpoConfigUpdates = Pick<\n ExpoConfig,\n 'sdkVersion' | 'owner' | 'runtimeVersion' | 'updates' | 'slug'\n>;\n\nexport function getExpoUpdatesPackageVersion(projectRoot: string): string | null {\n const expoUpdatesPackageJsonPath = resolveFrom.silent(projectRoot, 'expo-updates/package.json');\n if (!expoUpdatesPackageJsonPath || !fs.existsSync(expoUpdatesPackageJsonPath)) {\n return null;\n }\n const packageJson = JSON.parse(fs.readFileSync(expoUpdatesPackageJsonPath, 'utf8'));\n return packageJson.version;\n}\n\nexport function getUpdateUrl(\n config: Pick<ExpoConfigUpdates, 'owner' | 'slug' | 'updates'>,\n username: string | null\n): string | null {\n if (config.updates?.url) {\n return config.updates?.url;\n }\n\n const user = typeof config.owner === 'string' ? config.owner : username;\n if (!user) {\n return null;\n }\n return `https://exp.host/@${user}/${config.slug}`;\n}\n\nexport function getAppVersion(config: Pick<ExpoConfig, 'version'>): string {\n return config.version ?? '1.0.0';\n}\n\nexport function getNativeVersion(\n config: Pick<ExpoConfig, 'version'> & {\n android?: Pick<Android, 'versionCode'>;\n ios?: Pick<IOS, 'buildNumber'>;\n },\n platform: 'android' | 'ios'\n): string {\n const version = IOSConfig.Version.getVersion(config);\n switch (platform) {\n case 'ios': {\n const buildNumber = IOSConfig.Version.getBuildNumber(config);\n return `${version}(${buildNumber})`;\n }\n case 'android': {\n const versionCode = AndroidConfig.Version.getVersionCode(config);\n return `${version}(${versionCode})`;\n }\n default: {\n throw new Error(\n `\"${platform}\" is not a supported platform. Choose either \"ios\" or \"android\".`\n );\n }\n }\n}\n\n/**\n * Compute runtime version policies.\n * @return an expoConfig with only string valued platform specific runtime versions.\n */\nexport const withRuntimeVersion: (config: ExpoConfig) => ExpoConfig = (config) => {\n if (config.ios?.runtimeVersion || config.runtimeVersion) {\n const runtimeVersion = getRuntimeVersion(config, 'ios');\n if (runtimeVersion) {\n config.ios = {\n ...config.ios,\n runtimeVersion,\n };\n }\n }\n if (config.android?.runtimeVersion || config.runtimeVersion) {\n const runtimeVersion = getRuntimeVersion(config, 'android');\n if (runtimeVersion) {\n config.android = {\n ...config.android,\n runtimeVersion,\n };\n }\n }\n delete config.runtimeVersion;\n return config;\n};\n\nexport function getRuntimeVersionNullable(\n ...[config, platform]: Parameters<typeof getRuntimeVersion>\n): string | null {\n try {\n return getRuntimeVersion(config, platform);\n } catch (e) {\n if (boolish('EXPO_DEBUG', false)) {\n console.log(e);\n }\n return null;\n }\n}\n\nexport function getRuntimeVersion(\n config: Pick<ExpoConfig, 'version' | 'runtimeVersion' | 'sdkVersion'> & {\n android?: Pick<Android, 'versionCode' | 'runtimeVersion'>;\n ios?: Pick<IOS, 'buildNumber' | 'runtimeVersion'>;\n },\n platform: 'android' | 'ios'\n): string | null {\n const runtimeVersion = config[platform]?.runtimeVersion ?? config.runtimeVersion;\n if (!runtimeVersion) {\n return null;\n }\n\n if (typeof runtimeVersion === 'string') {\n return runtimeVersion;\n } else if (runtimeVersion.policy === 'appVersion') {\n return getAppVersion(config);\n } else if (runtimeVersion.policy === 'nativeVersion') {\n return getNativeVersion(config, platform);\n } else if (runtimeVersion.policy === 'sdkVersion') {\n if (!config.sdkVersion) {\n throw new Error(\"An SDK version must be defined when using the 'sdkVersion' runtime policy.\");\n }\n return getRuntimeVersionForSDKVersion(config.sdkVersion);\n }\n\n throw new Error(\n `\"${\n typeof runtimeVersion === 'object' ? JSON.stringify(runtimeVersion) : runtimeVersion\n }\" is not a valid runtime version. getRuntimeVersion only supports a string, \"sdkVersion\", \"appVersion\", or \"nativeVersion\" policy.`\n );\n}\n\nexport function getSDKVersion(config: Pick<ExpoConfigUpdates, 'sdkVersion'>): string | null {\n return typeof config.sdkVersion === 'string' ? config.sdkVersion : null;\n}\n\nexport function getUpdatesEnabled(config: Pick<ExpoConfigUpdates, 'updates'>): boolean {\n return config.updates?.enabled !== false;\n}\n\nexport function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>): number {\n return config.updates?.fallbackToCacheTimeout ?? 0;\n}\n\nexport function getUpdatesCheckOnLaunch(\n config: Pick<ExpoConfigUpdates, 'updates'>,\n expoUpdatesPackageVersion?: string | null\n): 'NEVER' | 'ERROR_RECOVERY_ONLY' | 'ALWAYS' {\n if (config.updates?.checkAutomatically === 'ON_ERROR_RECOVERY') {\n // native 'ERROR_RECOVERY_ONLY' option was only introduced in 0.11.x\n if (expoUpdatesPackageVersion && semver.gte(expoUpdatesPackageVersion, '0.11.0')) {\n return 'ERROR_RECOVERY_ONLY';\n }\n return 'NEVER';\n } else if (config.updates?.checkAutomatically === 'ON_LOAD') {\n return 'ALWAYS';\n }\n return 'ALWAYS';\n}\n\nexport function getUpdatesCodeSigningCertificate(\n projectRoot: string,\n config: Pick<ExpoConfigUpdates, 'updates'>\n): string | undefined {\n const codeSigningCertificatePath = config.updates?.codeSigningCertificate;\n if (!codeSigningCertificatePath) {\n return undefined;\n }\n\n const finalPath = path.join(projectRoot, codeSigningCertificatePath);\n if (!fs.existsSync(finalPath)) {\n throw new Error(`File not found at \\`updates.codeSigningCertificate\\` path: ${finalPath}`);\n }\n\n return fs.readFileSync(finalPath, 'utf8');\n}\n\nexport function getUpdatesCodeSigningMetadata(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): NonNullable<ExpoConfigUpdates['updates']>['codeSigningMetadata'] {\n return config.updates?.codeSigningMetadata;\n}\n\nexport function getUpdatesCodeSigningMetadataStringified(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): string | undefined {\n const metadata = getUpdatesCodeSigningMetadata(config);\n if (!metadata) {\n return undefined;\n }\n\n return JSON.stringify(metadata);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Updates.js","names":["getExpoUpdatesPackageVersion","projectRoot","expoUpdatesPackageJsonPath","resolveFrom","silent","fs","existsSync","packageJson","JSON","parse","readFileSync","version","getUpdateUrl","config","username","updates","url","user","owner","slug","getAppVersion","getNativeVersion","platform","IOSConfig","Version","getVersion","buildNumber","getBuildNumber","versionCode","AndroidConfig","getVersionCode","Error","withRuntimeVersion","ios","runtimeVersion","getRuntimeVersion","android","getRuntimeVersionNullable","e","boolish","console","log","policy","sdkVersion","getRuntimeVersionForSDKVersion","stringify","getSDKVersion","getUpdatesEnabled","enabled","getUpdatesTimeout","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","expoUpdatesPackageVersion","checkAutomatically","semver","gte","getUpdatesCodeSigningCertificate","codeSigningCertificatePath","codeSigningCertificate","undefined","finalPath","path","join","getUpdatesCodeSigningMetadata","codeSigningMetadata","getUpdatesCodeSigningMetadataStringified","metadata","getUpdatesRequestHeaders","requestHeaders","getUpdatesRequestHeadersStringified"],"sources":["../../src/utils/Updates.ts"],"sourcesContent":["import { Android, ExpoConfig, IOS } from '@expo/config-types';\nimport { getRuntimeVersionForSDKVersion } from '@expo/sdk-runtime-versions';\nimport fs from 'fs';\nimport { boolish } from 'getenv';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport { AndroidConfig, IOSConfig } from '..';\n\nexport type ExpoConfigUpdates = Pick<\n ExpoConfig,\n 'sdkVersion' | 'owner' | 'runtimeVersion' | 'updates' | 'slug'\n>;\n\nexport function getExpoUpdatesPackageVersion(projectRoot: string): string | null {\n const expoUpdatesPackageJsonPath = resolveFrom.silent(projectRoot, 'expo-updates/package.json');\n if (!expoUpdatesPackageJsonPath || !fs.existsSync(expoUpdatesPackageJsonPath)) {\n return null;\n }\n const packageJson = JSON.parse(fs.readFileSync(expoUpdatesPackageJsonPath, 'utf8'));\n return packageJson.version;\n}\n\nexport function getUpdateUrl(\n config: Pick<ExpoConfigUpdates, 'owner' | 'slug' | 'updates'>,\n username: string | null\n): string | null {\n if (config.updates?.url) {\n return config.updates?.url;\n }\n\n const user = typeof config.owner === 'string' ? config.owner : username;\n if (!user) {\n return null;\n }\n return `https://exp.host/@${user}/${config.slug}`;\n}\n\nexport function getAppVersion(config: Pick<ExpoConfig, 'version'>): string {\n return config.version ?? '1.0.0';\n}\n\nexport function getNativeVersion(\n config: Pick<ExpoConfig, 'version'> & {\n android?: Pick<Android, 'versionCode'>;\n ios?: Pick<IOS, 'buildNumber'>;\n },\n platform: 'android' | 'ios'\n): string {\n const version = IOSConfig.Version.getVersion(config);\n switch (platform) {\n case 'ios': {\n const buildNumber = IOSConfig.Version.getBuildNumber(config);\n return `${version}(${buildNumber})`;\n }\n case 'android': {\n const versionCode = AndroidConfig.Version.getVersionCode(config);\n return `${version}(${versionCode})`;\n }\n default: {\n throw new Error(\n `\"${platform}\" is not a supported platform. Choose either \"ios\" or \"android\".`\n );\n }\n }\n}\n\n/**\n * Compute runtime version policies.\n * @return an expoConfig with only string valued platform specific runtime versions.\n */\nexport const withRuntimeVersion: (config: ExpoConfig) => ExpoConfig = (config) => {\n if (config.ios?.runtimeVersion || config.runtimeVersion) {\n const runtimeVersion = getRuntimeVersion(config, 'ios');\n if (runtimeVersion) {\n config.ios = {\n ...config.ios,\n runtimeVersion,\n };\n }\n }\n if (config.android?.runtimeVersion || config.runtimeVersion) {\n const runtimeVersion = getRuntimeVersion(config, 'android');\n if (runtimeVersion) {\n config.android = {\n ...config.android,\n runtimeVersion,\n };\n }\n }\n delete config.runtimeVersion;\n return config;\n};\n\nexport function getRuntimeVersionNullable(\n ...[config, platform]: Parameters<typeof getRuntimeVersion>\n): string | null {\n try {\n return getRuntimeVersion(config, platform);\n } catch (e) {\n if (boolish('EXPO_DEBUG', false)) {\n console.log(e);\n }\n return null;\n }\n}\n\nexport function getRuntimeVersion(\n config: Pick<ExpoConfig, 'version' | 'runtimeVersion' | 'sdkVersion'> & {\n android?: Pick<Android, 'versionCode' | 'runtimeVersion'>;\n ios?: Pick<IOS, 'buildNumber' | 'runtimeVersion'>;\n },\n platform: 'android' | 'ios'\n): string | null {\n const runtimeVersion = config[platform]?.runtimeVersion ?? config.runtimeVersion;\n if (!runtimeVersion) {\n return null;\n }\n\n if (typeof runtimeVersion === 'string') {\n return runtimeVersion;\n } else if (runtimeVersion.policy === 'appVersion') {\n return getAppVersion(config);\n } else if (runtimeVersion.policy === 'nativeVersion') {\n return getNativeVersion(config, platform);\n } else if (runtimeVersion.policy === 'sdkVersion') {\n if (!config.sdkVersion) {\n throw new Error(\"An SDK version must be defined when using the 'sdkVersion' runtime policy.\");\n }\n return getRuntimeVersionForSDKVersion(config.sdkVersion);\n }\n\n throw new Error(\n `\"${\n typeof runtimeVersion === 'object' ? JSON.stringify(runtimeVersion) : runtimeVersion\n }\" is not a valid runtime version. getRuntimeVersion only supports a string, \"sdkVersion\", \"appVersion\", or \"nativeVersion\" policy.`\n );\n}\n\nexport function getSDKVersion(config: Pick<ExpoConfigUpdates, 'sdkVersion'>): string | null {\n return typeof config.sdkVersion === 'string' ? config.sdkVersion : null;\n}\n\nexport function getUpdatesEnabled(config: Pick<ExpoConfigUpdates, 'updates'>): boolean {\n return config.updates?.enabled !== false;\n}\n\nexport function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>): number {\n return config.updates?.fallbackToCacheTimeout ?? 0;\n}\n\nexport function getUpdatesCheckOnLaunch(\n config: Pick<ExpoConfigUpdates, 'updates'>,\n expoUpdatesPackageVersion?: string | null\n): 'NEVER' | 'ERROR_RECOVERY_ONLY' | 'ALWAYS' {\n if (config.updates?.checkAutomatically === 'ON_ERROR_RECOVERY') {\n // native 'ERROR_RECOVERY_ONLY' option was only introduced in 0.11.x\n if (expoUpdatesPackageVersion && semver.gte(expoUpdatesPackageVersion, '0.11.0')) {\n return 'ERROR_RECOVERY_ONLY';\n }\n return 'NEVER';\n } else if (config.updates?.checkAutomatically === 'ON_LOAD') {\n return 'ALWAYS';\n }\n return 'ALWAYS';\n}\n\nexport function getUpdatesCodeSigningCertificate(\n projectRoot: string,\n config: Pick<ExpoConfigUpdates, 'updates'>\n): string | undefined {\n const codeSigningCertificatePath = config.updates?.codeSigningCertificate;\n if (!codeSigningCertificatePath) {\n return undefined;\n }\n\n const finalPath = path.join(projectRoot, codeSigningCertificatePath);\n if (!fs.existsSync(finalPath)) {\n throw new Error(`File not found at \\`updates.codeSigningCertificate\\` path: ${finalPath}`);\n }\n\n return fs.readFileSync(finalPath, 'utf8');\n}\n\nexport function getUpdatesCodeSigningMetadata(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): NonNullable<ExpoConfigUpdates['updates']>['codeSigningMetadata'] {\n return config.updates?.codeSigningMetadata;\n}\n\nexport function getUpdatesCodeSigningMetadataStringified(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): string | undefined {\n const metadata = getUpdatesCodeSigningMetadata(config);\n if (!metadata) {\n return undefined;\n }\n\n return JSON.stringify(metadata);\n}\n\nexport function getUpdatesRequestHeaders(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): NonNullable<ExpoConfigUpdates['updates']>['requestHeaders'] {\n return config.updates?.requestHeaders;\n}\n\nexport function getUpdatesRequestHeadersStringified(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): string | undefined {\n const metadata = getUpdatesRequestHeaders(config);\n if (!metadata) {\n return undefined;\n }\n\n return JSON.stringify(metadata);\n}\n"],"mappings":"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"}
|
package/build/utils/XML.d.ts
CHANGED
package/build/utils/XML.js
CHANGED
|
@@ -9,49 +9,35 @@ exports.parseXMLAsync = parseXMLAsync;
|
|
|
9
9
|
exports.readXMLAsync = readXMLAsync;
|
|
10
10
|
exports.unescapeAndroidString = unescapeAndroidString;
|
|
11
11
|
exports.writeXMLAsync = writeXMLAsync;
|
|
12
|
-
|
|
13
12
|
function _fs() {
|
|
14
13
|
const data = _interopRequireDefault(require("fs"));
|
|
15
|
-
|
|
16
14
|
_fs = function () {
|
|
17
15
|
return data;
|
|
18
16
|
};
|
|
19
|
-
|
|
20
17
|
return data;
|
|
21
18
|
}
|
|
22
|
-
|
|
23
19
|
function _os() {
|
|
24
20
|
const data = require("os");
|
|
25
|
-
|
|
26
21
|
_os = function () {
|
|
27
22
|
return data;
|
|
28
23
|
};
|
|
29
|
-
|
|
30
24
|
return data;
|
|
31
25
|
}
|
|
32
|
-
|
|
33
26
|
function _path() {
|
|
34
27
|
const data = _interopRequireDefault(require("path"));
|
|
35
|
-
|
|
36
28
|
_path = function () {
|
|
37
29
|
return data;
|
|
38
30
|
};
|
|
39
|
-
|
|
40
31
|
return data;
|
|
41
32
|
}
|
|
42
|
-
|
|
43
33
|
function _xml2js() {
|
|
44
34
|
const data = require("xml2js");
|
|
45
|
-
|
|
46
35
|
_xml2js = function () {
|
|
47
36
|
return data;
|
|
48
37
|
};
|
|
49
|
-
|
|
50
38
|
return data;
|
|
51
39
|
}
|
|
52
|
-
|
|
53
40
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
54
|
-
|
|
55
41
|
async function writeXMLAsync(options) {
|
|
56
42
|
const xml = format(options.xml);
|
|
57
43
|
await _fs().default.promises.mkdir(_path().default.dirname(options.path), {
|
|
@@ -59,78 +45,65 @@ async function writeXMLAsync(options) {
|
|
|
59
45
|
});
|
|
60
46
|
await _fs().default.promises.writeFile(options.path, xml);
|
|
61
47
|
}
|
|
62
|
-
|
|
63
48
|
async function readXMLAsync(options) {
|
|
64
49
|
var _manifest$resources;
|
|
65
|
-
|
|
66
50
|
let contents = '';
|
|
67
|
-
|
|
68
51
|
try {
|
|
69
52
|
contents = await _fs().default.promises.readFile(options.path, {
|
|
70
53
|
encoding: 'utf8',
|
|
71
54
|
flag: 'r'
|
|
72
55
|
});
|
|
73
|
-
} catch {
|
|
56
|
+
} catch {
|
|
57
|
+
// catch and use fallback
|
|
74
58
|
}
|
|
75
|
-
|
|
76
59
|
const parser = new (_xml2js().Parser)();
|
|
77
|
-
const manifest = await parser.parseStringPromise(contents || options.fallback || '');
|
|
60
|
+
const manifest = await parser.parseStringPromise(contents || options.fallback || '');
|
|
78
61
|
|
|
62
|
+
// For strings.xml
|
|
79
63
|
if (Array.isArray(manifest === null || manifest === void 0 ? void 0 : (_manifest$resources = manifest.resources) === null || _manifest$resources === void 0 ? void 0 : _manifest$resources.string)) {
|
|
80
64
|
for (const string of manifest === null || manifest === void 0 ? void 0 : (_manifest$resources2 = manifest.resources) === null || _manifest$resources2 === void 0 ? void 0 : _manifest$resources2.string) {
|
|
81
65
|
var _manifest$resources2;
|
|
82
|
-
|
|
83
66
|
if (string.$.translatable === 'false' || string.$.translatable === false) {
|
|
84
67
|
continue;
|
|
85
68
|
}
|
|
86
|
-
|
|
87
69
|
string._ = unescapeAndroidString(string._);
|
|
88
70
|
}
|
|
89
71
|
}
|
|
90
|
-
|
|
91
72
|
return manifest;
|
|
92
73
|
}
|
|
93
|
-
|
|
94
74
|
async function parseXMLAsync(contents) {
|
|
95
75
|
const xml = await new (_xml2js().Parser)().parseStringPromise(contents);
|
|
96
76
|
return xml;
|
|
97
77
|
}
|
|
98
|
-
|
|
99
78
|
const stringTimesN = (n, char) => Array(n + 1).join(char);
|
|
100
|
-
|
|
101
79
|
function format(manifest, {
|
|
102
80
|
indentLevel = 2,
|
|
103
81
|
newline = _os().EOL
|
|
104
82
|
} = {}) {
|
|
105
83
|
let xmlInput;
|
|
106
|
-
|
|
107
84
|
if (typeof manifest === 'string') {
|
|
108
85
|
xmlInput = manifest;
|
|
109
86
|
} else if (manifest.toString) {
|
|
110
87
|
var _manifest$resources3;
|
|
111
|
-
|
|
112
88
|
const builder = new (_xml2js().Builder)({
|
|
113
89
|
headless: true
|
|
114
|
-
});
|
|
90
|
+
});
|
|
115
91
|
|
|
92
|
+
// For strings.xml
|
|
116
93
|
if (Array.isArray(manifest === null || manifest === void 0 ? void 0 : (_manifest$resources3 = manifest.resources) === null || _manifest$resources3 === void 0 ? void 0 : _manifest$resources3.string)) {
|
|
117
94
|
for (const string of manifest === null || manifest === void 0 ? void 0 : (_manifest$resources4 = manifest.resources) === null || _manifest$resources4 === void 0 ? void 0 : _manifest$resources4.string) {
|
|
118
95
|
var _manifest$resources4;
|
|
119
|
-
|
|
120
96
|
if (string.$.translatable === 'false' || string.$.translatable === false) {
|
|
121
97
|
continue;
|
|
122
98
|
}
|
|
123
|
-
|
|
124
99
|
string._ = escapeAndroidString(string._);
|
|
125
100
|
}
|
|
126
101
|
}
|
|
127
|
-
|
|
128
102
|
xmlInput = builder.buildObject(manifest);
|
|
129
103
|
return xmlInput;
|
|
130
104
|
} else {
|
|
131
105
|
throw new Error(`Invalid XML value passed in: ${manifest}`);
|
|
132
106
|
}
|
|
133
|
-
|
|
134
107
|
const indentString = stringTimesN(indentLevel, ' ');
|
|
135
108
|
let formatted = '';
|
|
136
109
|
const regex = /(>)(<)(\/*)/g;
|
|
@@ -138,7 +111,6 @@ function format(manifest, {
|
|
|
138
111
|
let pad = 0;
|
|
139
112
|
xml.split(/\r?\n/).map(line => line.trim()).forEach(line => {
|
|
140
113
|
let indent = 0;
|
|
141
|
-
|
|
142
114
|
if (line.match(/.+<\/\w[^>]*>$/)) {
|
|
143
115
|
indent = 0;
|
|
144
116
|
} else if (line.match(/^<\/\w/)) {
|
|
@@ -150,20 +122,18 @@ function format(manifest, {
|
|
|
150
122
|
} else {
|
|
151
123
|
indent = 0;
|
|
152
124
|
}
|
|
153
|
-
|
|
154
125
|
const padding = stringTimesN(pad, indentString);
|
|
155
126
|
formatted += padding + line + newline;
|
|
156
127
|
pad += indent;
|
|
157
128
|
});
|
|
158
129
|
return formatted.trim();
|
|
159
130
|
}
|
|
131
|
+
|
|
160
132
|
/**
|
|
161
133
|
* Escapes Android string literals, specifically characters `"`, `'`, `\`, `\n`, `\r`, `\t`
|
|
162
134
|
*
|
|
163
135
|
* @param value unescaped Android XML string literal.
|
|
164
136
|
*/
|
|
165
|
-
|
|
166
|
-
|
|
167
137
|
function escapeAndroidString(value) {
|
|
168
138
|
value = value.replace(/[\n\r\t'"@]/g, m => {
|
|
169
139
|
switch (m) {
|
|
@@ -171,28 +141,21 @@ function escapeAndroidString(value) {
|
|
|
171
141
|
case "'":
|
|
172
142
|
case '@':
|
|
173
143
|
return '\\' + m;
|
|
174
|
-
|
|
175
144
|
case '\n':
|
|
176
145
|
return '\\n';
|
|
177
|
-
|
|
178
146
|
case '\r':
|
|
179
147
|
return '\\r';
|
|
180
|
-
|
|
181
148
|
case '\t':
|
|
182
149
|
return '\\t';
|
|
183
|
-
|
|
184
150
|
default:
|
|
185
151
|
throw new Error(`Cannot escape unhandled XML character: ${m}`);
|
|
186
152
|
}
|
|
187
153
|
});
|
|
188
|
-
|
|
189
154
|
if (value.match(/(^\s|\s$)/)) {
|
|
190
155
|
value = '"' + value + '"';
|
|
191
156
|
}
|
|
192
|
-
|
|
193
157
|
return value;
|
|
194
158
|
}
|
|
195
|
-
|
|
196
159
|
function unescapeAndroidString(value) {
|
|
197
160
|
return value.replace(/\\(.)/g, '$1');
|
|
198
161
|
}
|
package/build/utils/XML.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XML.js","names":["writeXMLAsync","options","xml","format","fs","promises","mkdir","path","dirname","recursive","writeFile","readXMLAsync","contents","readFile","encoding","flag","parser","Parser","manifest","parseStringPromise","fallback","Array","isArray","resources","string","$","translatable","_","unescapeAndroidString","parseXMLAsync","stringTimesN","n","char","join","indentLevel","newline","EOL","xmlInput","toString","builder","Builder","headless","escapeAndroidString","buildObject","Error","indentString","formatted","regex","replace","pad","split","map","line","trim","forEach","indent","match","padding","value","m"],"sources":["../../src/utils/XML.ts"],"sourcesContent":["import fs from 'fs';\nimport { EOL } from 'os';\nimport path from 'path';\nimport { Builder, Parser } from 'xml2js';\n\nexport type XMLValue = boolean | number | string | null | XMLArray | XMLObject;\n\nexport interface XMLArray extends Array<XMLValue> {}\n\nexport interface XMLObject {\n [key: string]: XMLValue | undefined;\n}\n\nexport async function writeXMLAsync(options: { path: string; xml: any }): Promise<void> {\n const xml = format(options.xml);\n await fs.promises.mkdir(path.dirname(options.path), { recursive: true });\n await fs.promises.writeFile(options.path, xml);\n}\n\nexport async function readXMLAsync(options: {\n path: string;\n fallback?: string | null;\n}): Promise<XMLObject> {\n let contents: string = '';\n try {\n contents = await fs.promises.readFile(options.path, { encoding: 'utf8', flag: 'r' });\n } catch {\n // catch and use fallback\n }\n const parser = new Parser();\n const manifest = await parser.parseStringPromise(contents || options.fallback || '');\n\n // For strings.xml\n if (Array.isArray(manifest?.resources?.string)) {\n for (const string of manifest?.resources?.string) {\n if (string.$.translatable === 'false' || string.$.translatable === false) {\n continue;\n }\n string._ = unescapeAndroidString(string._);\n }\n }\n\n return manifest;\n}\n\nexport async function parseXMLAsync(contents: string): Promise<XMLObject> {\n const xml = await new Parser().parseStringPromise(contents);\n return xml;\n}\n\nconst stringTimesN = (n: number, char: string) => Array(n + 1).join(char);\n\nexport function format(manifest: any, { indentLevel = 2, newline = EOL } = {}): string {\n let xmlInput: string;\n if (typeof manifest === 'string') {\n xmlInput = manifest;\n } else if (manifest.toString) {\n const builder = new Builder({\n headless: true,\n });\n\n // For strings.xml\n if (Array.isArray(manifest?.resources?.string)) {\n for (const string of manifest?.resources?.string) {\n if (string.$.translatable === 'false' || string.$.translatable === false) {\n continue;\n }\n string._ = escapeAndroidString(string._);\n }\n }\n\n xmlInput = builder.buildObject(manifest);\n\n return xmlInput;\n } else {\n throw new Error(`Invalid XML value passed in: ${manifest}`);\n }\n const indentString = stringTimesN(indentLevel, ' ');\n\n let formatted = '';\n const regex = /(>)(<)(\\/*)/g;\n const xml = xmlInput.replace(regex, `$1${newline}$2$3`);\n let pad = 0;\n xml\n .split(/\\r?\\n/)\n .map((line: string) => line.trim())\n .forEach((line: string) => {\n let indent = 0;\n if (line.match(/.+<\\/\\w[^>]*>$/)) {\n indent = 0;\n } else if (line.match(/^<\\/\\w/)) {\n if (pad !== 0) {\n pad -= 1;\n }\n } else if (line.match(/^<\\w([^>]*[^/])?>.*$/)) {\n indent = 1;\n } else {\n indent = 0;\n }\n\n const padding = stringTimesN(pad, indentString);\n formatted += padding + line + newline;\n pad += indent;\n });\n\n return formatted.trim();\n}\n\n/**\n * Escapes Android string literals, specifically characters `\"`, `'`, `\\`, `\\n`, `\\r`, `\\t`\n *\n * @param value unescaped Android XML string literal.\n */\nexport function escapeAndroidString(value: string): string {\n value = value.replace(/[\\n\\r\\t'\"@]/g, (m) => {\n switch (m) {\n case '\"':\n case \"'\":\n case '@':\n return '\\\\' + m;\n case '\\n':\n return '\\\\n';\n case '\\r':\n return '\\\\r';\n case '\\t':\n return '\\\\t';\n default:\n throw new Error(`Cannot escape unhandled XML character: ${m}`);\n }\n });\n if (value.match(/(^\\s|\\s$)/)) {\n value = '\"' + value + '\"';\n }\n return value;\n}\n\nexport function unescapeAndroidString(value: string): string {\n return value.replace(/\\\\(.)/g, '$1');\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"XML.js","names":["writeXMLAsync","options","xml","format","fs","promises","mkdir","path","dirname","recursive","writeFile","readXMLAsync","contents","readFile","encoding","flag","parser","Parser","manifest","parseStringPromise","fallback","Array","isArray","resources","string","$","translatable","_","unescapeAndroidString","parseXMLAsync","stringTimesN","n","char","join","indentLevel","newline","EOL","xmlInput","toString","builder","Builder","headless","escapeAndroidString","buildObject","Error","indentString","formatted","regex","replace","pad","split","map","line","trim","forEach","indent","match","padding","value","m"],"sources":["../../src/utils/XML.ts"],"sourcesContent":["import fs from 'fs';\nimport { EOL } from 'os';\nimport path from 'path';\nimport { Builder, Parser } from 'xml2js';\n\nexport type XMLValue = boolean | number | string | null | XMLArray | XMLObject;\n\nexport interface XMLArray extends Array<XMLValue> {}\n\nexport interface XMLObject {\n [key: string]: XMLValue | undefined;\n}\n\nexport async function writeXMLAsync(options: { path: string; xml: any }): Promise<void> {\n const xml = format(options.xml);\n await fs.promises.mkdir(path.dirname(options.path), { recursive: true });\n await fs.promises.writeFile(options.path, xml);\n}\n\nexport async function readXMLAsync(options: {\n path: string;\n fallback?: string | null;\n}): Promise<XMLObject> {\n let contents: string = '';\n try {\n contents = await fs.promises.readFile(options.path, { encoding: 'utf8', flag: 'r' });\n } catch {\n // catch and use fallback\n }\n const parser = new Parser();\n const manifest = await parser.parseStringPromise(contents || options.fallback || '');\n\n // For strings.xml\n if (Array.isArray(manifest?.resources?.string)) {\n for (const string of manifest?.resources?.string) {\n if (string.$.translatable === 'false' || string.$.translatable === false) {\n continue;\n }\n string._ = unescapeAndroidString(string._);\n }\n }\n\n return manifest;\n}\n\nexport async function parseXMLAsync(contents: string): Promise<XMLObject> {\n const xml = await new Parser().parseStringPromise(contents);\n return xml;\n}\n\nconst stringTimesN = (n: number, char: string) => Array(n + 1).join(char);\n\nexport function format(manifest: any, { indentLevel = 2, newline = EOL } = {}): string {\n let xmlInput: string;\n if (typeof manifest === 'string') {\n xmlInput = manifest;\n } else if (manifest.toString) {\n const builder = new Builder({\n headless: true,\n });\n\n // For strings.xml\n if (Array.isArray(manifest?.resources?.string)) {\n for (const string of manifest?.resources?.string) {\n if (string.$.translatable === 'false' || string.$.translatable === false) {\n continue;\n }\n string._ = escapeAndroidString(string._);\n }\n }\n\n xmlInput = builder.buildObject(manifest);\n\n return xmlInput;\n } else {\n throw new Error(`Invalid XML value passed in: ${manifest}`);\n }\n const indentString = stringTimesN(indentLevel, ' ');\n\n let formatted = '';\n const regex = /(>)(<)(\\/*)/g;\n const xml = xmlInput.replace(regex, `$1${newline}$2$3`);\n let pad = 0;\n xml\n .split(/\\r?\\n/)\n .map((line: string) => line.trim())\n .forEach((line: string) => {\n let indent = 0;\n if (line.match(/.+<\\/\\w[^>]*>$/)) {\n indent = 0;\n } else if (line.match(/^<\\/\\w/)) {\n if (pad !== 0) {\n pad -= 1;\n }\n } else if (line.match(/^<\\w([^>]*[^/])?>.*$/)) {\n indent = 1;\n } else {\n indent = 0;\n }\n\n const padding = stringTimesN(pad, indentString);\n formatted += padding + line + newline;\n pad += indent;\n });\n\n return formatted.trim();\n}\n\n/**\n * Escapes Android string literals, specifically characters `\"`, `'`, `\\`, `\\n`, `\\r`, `\\t`\n *\n * @param value unescaped Android XML string literal.\n */\nexport function escapeAndroidString(value: string): string {\n value = value.replace(/[\\n\\r\\t'\"@]/g, (m) => {\n switch (m) {\n case '\"':\n case \"'\":\n case '@':\n return '\\\\' + m;\n case '\\n':\n return '\\\\n';\n case '\\r':\n return '\\\\r';\n case '\\t':\n return '\\\\t';\n default:\n throw new Error(`Cannot escape unhandled XML character: ${m}`);\n }\n });\n if (value.match(/(^\\s|\\s$)/)) {\n value = '\"' + value + '\"';\n }\n return value;\n}\n\nexport function unescapeAndroidString(value: string): string {\n return value.replace(/\\\\(.)/g, '$1');\n}\n"],"mappings":"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"}
|