@expo/config-plugins 4.0.17 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +17 -2
  2. package/build/android/EasBuild.js +8 -8
  3. package/build/android/EasBuild.js.map +1 -1
  4. package/build/android/GoogleServices.js +16 -14
  5. package/build/android/GoogleServices.js.map +1 -1
  6. package/build/android/Manifest.js +7 -5
  7. package/build/android/Manifest.js.map +1 -1
  8. package/build/android/Package.js +26 -14
  9. package/build/android/Package.js.map +1 -1
  10. package/build/android/Paths.js +6 -6
  11. package/build/android/Paths.js.map +1 -1
  12. package/build/android/Scheme.d.ts +5 -2
  13. package/build/android/Scheme.js +26 -15
  14. package/build/android/Scheme.js.map +1 -1
  15. package/build/ios/BundleIdentifier.js +6 -6
  16. package/build/ios/BundleIdentifier.js.map +1 -1
  17. package/build/ios/Entitlements.js +20 -8
  18. package/build/ios/Entitlements.js.map +1 -1
  19. package/build/ios/Google.d.ts +5 -5
  20. package/build/ios/Google.js +62 -12
  21. package/build/ios/Google.js.map +1 -1
  22. package/build/ios/Locales.js +13 -13
  23. package/build/ios/Locales.js.map +1 -1
  24. package/build/ios/Maps.js +7 -7
  25. package/build/ios/Maps.js.map +1 -1
  26. package/build/ios/Paths.d.ts +3 -2
  27. package/build/ios/Paths.js +21 -9
  28. package/build/ios/Paths.js.map +1 -1
  29. package/build/ios/ProvisioningProfile.js +4 -4
  30. package/build/ios/ProvisioningProfile.js.map +1 -1
  31. package/build/ios/Swift.js +5 -5
  32. package/build/ios/Swift.js.map +1 -1
  33. package/build/ios/XcodeProjectFile.js +5 -5
  34. package/build/ios/XcodeProjectFile.js.map +1 -1
  35. package/build/plugins/ios-plugins.d.ts +1 -1
  36. package/build/plugins/ios-plugins.js.map +1 -1
  37. package/build/plugins/withAndroidBaseMods.js +0 -3
  38. package/build/plugins/withAndroidBaseMods.js.map +1 -1
  39. package/build/utils/Updates.d.ts +1 -1
  40. package/build/utils/Updates.js +15 -7
  41. package/build/utils/Updates.js.map +1 -1
  42. package/build/utils/XML.d.ts +1 -0
  43. package/build/utils/XML.js +33 -11
  44. package/build/utils/XML.js.map +1 -1
  45. package/build/utils/fs.d.ts +4 -0
  46. package/build/utils/fs.js +56 -0
  47. package/build/utils/fs.js.map +1 -0
  48. package/package.json +4 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/withAndroidBaseMods.ts"],"names":["readFile","writeFile","promises","getAndroidManifestTemplate","config","android","package","sortAndroidManifest","obj","manifest","reverseSortString","Array","isArray","sort","a","b","$","application","map","defaultProviders","dangerous","getFilePath","read","filePath","modResults","write","isIntrospective","modRequest","platformProjectRoot","path","join","Manifest","readAndroidManifestAsync","error","introspect","writeAndroidManifestAsync","gradleProperties","Properties","parsePropertiesFile","propertiesListToString","strings","projectRoot","Strings","getProjectStringsXMLPathAsync","Resources","readResourcesXMLAsync","resources","xml","colors","Colors","getProjectColorsXMLPathAsync","colorsNight","kind","styles","Styles","getProjectStylesXMLPathAsync","fallback","projectBuildGradle","Paths","getProjectBuildGradleFilePath","getFileInfo","contents","settingsGradle","getSettingsGradleFilePath","appBuildGradle","getAppBuildGradleFilePath","mainActivity","getProjectFilePath","mainApplication","withAndroidBaseMods","providers","props","platform","getAndroidModFileProviders"],"mappings":"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","sourcesContent":["import { promises } from 'fs';\nimport path from 'path';\n\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Colors, Manifest, Paths, Properties, Resources, Strings, Styles } from '../android';\nimport { AndroidManifest } from '../android/Manifest';\nimport { parseXMLAsync, writeXMLAsync } from '../utils/XML';\nimport { reverseSortString, sortObject, sortObjWithOrder } from '../utils/sortObject';\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\n\nconst { readFile, writeFile } = promises;\n\ntype AndroidModName = keyof Required<ModConfig>['android'];\n\nfunction getAndroidManifestTemplate(config: ExportedConfig) {\n // Keep in sync with https://github.com/expo/expo/blob/master/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n // TODO: Read from remote template when possible\n return parseXMLAsync(`\n <manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"${\n config.android?.package ?? 'com.placeholder.appid'\n }\">\n\n <uses-permission android:name=\"android.permission.INTERNET\"/>\n <!-- OPTIONAL PERMISSIONS, REMOVE WHATEVER YOU DO NOT NEED -->\n <uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>\n <uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>\n <uses-permission android:name=\"android.permission.VIBRATE\"/>\n <uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>\n <!-- These require runtime permissions on M -->\n <uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>\n <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>\n <!-- END OPTIONAL PERMISSIONS -->\n\n <queries>\n <!-- Support checking for http(s) links via the Linking API -->\n <intent>\n <action android:name=\"android.intent.action.VIEW\" />\n <category android:name=\"android.intent.category.BROWSABLE\" />\n <data android:scheme=\"https\" />\n </intent>\n </queries>\n\n <application\n android:name=\".MainApplication\"\n android:label=\"@string/app_name\"\n android:icon=\"@mipmap/ic_launcher\"\n android:roundIcon=\"@mipmap/ic_launcher_round\"\n android:allowBackup=\"false\"\n android:theme=\"@style/AppTheme\"\n android:usesCleartextTraffic=\"true\"\n >\n <meta-data android:name=\"expo.modules.updates.EXPO_UPDATE_URL\" android:value=\"YOUR-APP-URL-HERE\"/>\n <meta-data android:name=\"expo.modules.updates.EXPO_SDK_VERSION\" android:value=\"YOUR-APP-SDK-VERSION-HERE\"/>\n <activity\n android:name=\".MainActivity\"\n android:label=\"@string/app_name\"\n android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize|uiMode\"\n android:launchMode=\"singleTask\"\n android:windowSoftInputMode=\"adjustResize\"\n android:theme=\"@style/Theme.App.SplashScreen\"\n >\n <intent-filter>\n <action android:name=\"android.intent.action.MAIN\"/>\n <category android:name=\"android.intent.category.LAUNCHER\"/>\n </intent-filter>\n </activity>\n <activity android:name=\"com.facebook.react.devsupport.DevSettingsActivity\"/>\n </application>\n </manifest>\n `) as Promise<AndroidManifest>;\n}\n\nexport function sortAndroidManifest(obj: AndroidManifest) {\n if (obj.manifest) {\n // Reverse sort so application is last and permissions are first\n obj.manifest = sortObject(obj.manifest, reverseSortString);\n\n if (Array.isArray(obj.manifest['uses-permission'])) {\n // Sort permissions alphabetically\n obj.manifest['uses-permission'].sort((a, b) => {\n if (a.$['android:name'] < b.$['android:name']) return -1;\n if (a.$['android:name'] > b.$['android:name']) return 1;\n return 0;\n });\n }\n\n if (Array.isArray(obj.manifest.application)) {\n // reverse sort applications so activity is towards the end and meta-data is towards the front.\n obj.manifest.application = obj.manifest.application.map(application => {\n application = sortObjWithOrder(application, ['meta-data', 'service', 'activity']);\n\n if (Array.isArray(application['meta-data'])) {\n // Sort metadata alphabetically\n application['meta-data'].sort((a, b) => {\n if (a.$['android:name'] < b.$['android:name']) return -1;\n if (a.$['android:name'] > b.$['android:name']) return 1;\n return 0;\n });\n }\n return application;\n });\n }\n }\n return obj;\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return { filePath: '', modResults: {} };\n },\n async write() {},\n }),\n\n // Append a rule to supply gradle.properties data to mods on `mods.android.gradleProperties`\n manifest: provider<Manifest.AndroidManifest>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.join(platformProjectRoot, 'app/src/main/AndroidManifest.xml');\n },\n async read(filePath, config) {\n try {\n return await Manifest.readAndroidManifestAsync(filePath);\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return await getAndroidManifestTemplate(config);\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await Manifest.writeAndroidManifestAsync(filePath, sortAndroidManifest(modResults));\n },\n }),\n\n // Append a rule to supply gradle.properties data to mods on `mods.android.gradleProperties`\n gradleProperties: provider<Properties.PropertiesItem[]>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.join(platformProjectRoot, 'gradle.properties');\n },\n async read(filePath, config) {\n try {\n return await Properties.parsePropertiesFile(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return [];\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeFile(filePath, Properties.propertiesListToString(modResults));\n },\n }),\n\n // Append a rule to supply strings.xml data to mods on `mods.android.strings`\n strings: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Strings.getProjectStringsXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n\n async read(filePath, config) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n colors: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Colors.getProjectColorsXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n colorsNight: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Colors.getProjectColorsXMLPathAsync(projectRoot, { kind: 'values-night' });\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n async read(filePath, config) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n styles: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Styles.getProjectStylesXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n async read(filePath, config) {\n let styles: Resources.ResourceXML = { resources: {} };\n\n try {\n // Adds support for `tools:x`\n styles = await Resources.readResourcesXMLAsync({\n path: filePath,\n fallback: `<?xml version=\"1.0\" encoding=\"utf-8\"?><resources xmlns:tools=\"http://schemas.android.com/tools\"></resources>`,\n });\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n\n // Ensure support for tools is added...\n if (!styles.resources.$) {\n styles.resources.$ = {};\n }\n if (!styles.resources.$?.['xmlns:tools']) {\n styles.resources.$['xmlns:tools'] = 'http://schemas.android.com/tools';\n }\n return styles;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n projectBuildGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectBuildGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n settingsGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getSettingsGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n appBuildGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getAppBuildGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n mainActivity: provider<Paths.ApplicationProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectFilePath(projectRoot, 'MainActivity');\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n mainApplication: provider<Paths.ApplicationProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectFilePath(projectRoot, 'MainApplication');\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n};\n\ntype AndroidDefaultProviders = typeof defaultProviders;\n\nexport function withAndroidBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<AndroidDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<AndroidModName>(config, {\n ...props,\n platform: 'android',\n providers: providers ?? getAndroidModFileProviders(),\n });\n}\n\nexport function getAndroidModFileProviders() {\n return defaultProviders;\n}\n"],"file":"withAndroidBaseMods.js"}
1
+ {"version":3,"sources":["../../src/plugins/withAndroidBaseMods.ts"],"names":["readFile","writeFile","promises","getAndroidManifestTemplate","config","android","package","sortAndroidManifest","obj","manifest","reverseSortString","Array","isArray","sort","a","b","$","application","map","defaultProviders","dangerous","getFilePath","read","filePath","modResults","write","isIntrospective","modRequest","platformProjectRoot","path","join","Manifest","readAndroidManifestAsync","error","introspect","writeAndroidManifestAsync","gradleProperties","Properties","parsePropertiesFile","propertiesListToString","strings","projectRoot","Strings","getProjectStringsXMLPathAsync","Resources","readResourcesXMLAsync","resources","xml","colors","Colors","getProjectColorsXMLPathAsync","colorsNight","kind","styles","Styles","getProjectStylesXMLPathAsync","fallback","projectBuildGradle","Paths","getProjectBuildGradleFilePath","getFileInfo","contents","settingsGradle","getSettingsGradleFilePath","appBuildGradle","getAppBuildGradleFilePath","mainActivity","getProjectFilePath","mainApplication","withAndroidBaseMods","providers","props","platform","getAndroidModFileProviders"],"mappings":"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","sourcesContent":["import { promises } from 'fs';\nimport path from 'path';\n\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Colors, Manifest, Paths, Properties, Resources, Strings, Styles } from '../android';\nimport { AndroidManifest } from '../android/Manifest';\nimport { parseXMLAsync, writeXMLAsync } from '../utils/XML';\nimport { reverseSortString, sortObject, sortObjWithOrder } from '../utils/sortObject';\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\n\nconst { readFile, writeFile } = promises;\n\ntype AndroidModName = keyof Required<ModConfig>['android'];\n\nfunction getAndroidManifestTemplate(config: ExportedConfig) {\n // Keep in sync with https://github.com/expo/expo/blob/master/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n // TODO: Read from remote template when possible\n return parseXMLAsync(`\n <manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"${\n config.android?.package ?? 'com.placeholder.appid'\n }\">\n\n <uses-permission android:name=\"android.permission.INTERNET\"/>\n <!-- OPTIONAL PERMISSIONS, REMOVE WHATEVER YOU DO NOT NEED -->\n <uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>\n <!-- These require runtime permissions on M -->\n <uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>\n <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>\n <!-- END OPTIONAL PERMISSIONS -->\n\n <queries>\n <!-- Support checking for http(s) links via the Linking API -->\n <intent>\n <action android:name=\"android.intent.action.VIEW\" />\n <category android:name=\"android.intent.category.BROWSABLE\" />\n <data android:scheme=\"https\" />\n </intent>\n </queries>\n\n <application\n android:name=\".MainApplication\"\n android:label=\"@string/app_name\"\n android:icon=\"@mipmap/ic_launcher\"\n android:roundIcon=\"@mipmap/ic_launcher_round\"\n android:allowBackup=\"false\"\n android:theme=\"@style/AppTheme\"\n android:usesCleartextTraffic=\"true\"\n >\n <meta-data android:name=\"expo.modules.updates.EXPO_UPDATE_URL\" android:value=\"YOUR-APP-URL-HERE\"/>\n <meta-data android:name=\"expo.modules.updates.EXPO_SDK_VERSION\" android:value=\"YOUR-APP-SDK-VERSION-HERE\"/>\n <activity\n android:name=\".MainActivity\"\n android:label=\"@string/app_name\"\n android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize|uiMode\"\n android:launchMode=\"singleTask\"\n android:windowSoftInputMode=\"adjustResize\"\n android:theme=\"@style/Theme.App.SplashScreen\"\n >\n <intent-filter>\n <action android:name=\"android.intent.action.MAIN\"/>\n <category android:name=\"android.intent.category.LAUNCHER\"/>\n </intent-filter>\n </activity>\n <activity android:name=\"com.facebook.react.devsupport.DevSettingsActivity\"/>\n </application>\n </manifest>\n `) as Promise<AndroidManifest>;\n}\n\nexport function sortAndroidManifest(obj: AndroidManifest) {\n if (obj.manifest) {\n // Reverse sort so application is last and permissions are first\n obj.manifest = sortObject(obj.manifest, reverseSortString);\n\n if (Array.isArray(obj.manifest['uses-permission'])) {\n // Sort permissions alphabetically\n obj.manifest['uses-permission'].sort((a, b) => {\n if (a.$['android:name'] < b.$['android:name']) return -1;\n if (a.$['android:name'] > b.$['android:name']) return 1;\n return 0;\n });\n }\n\n if (Array.isArray(obj.manifest.application)) {\n // reverse sort applications so activity is towards the end and meta-data is towards the front.\n obj.manifest.application = obj.manifest.application.map(application => {\n application = sortObjWithOrder(application, ['meta-data', 'service', 'activity']);\n\n if (Array.isArray(application['meta-data'])) {\n // Sort metadata alphabetically\n application['meta-data'].sort((a, b) => {\n if (a.$['android:name'] < b.$['android:name']) return -1;\n if (a.$['android:name'] > b.$['android:name']) return 1;\n return 0;\n });\n }\n return application;\n });\n }\n }\n return obj;\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return { filePath: '', modResults: {} };\n },\n async write() {},\n }),\n\n // Append a rule to supply gradle.properties data to mods on `mods.android.gradleProperties`\n manifest: provider<Manifest.AndroidManifest>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.join(platformProjectRoot, 'app/src/main/AndroidManifest.xml');\n },\n async read(filePath, config) {\n try {\n return await Manifest.readAndroidManifestAsync(filePath);\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return await getAndroidManifestTemplate(config);\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await Manifest.writeAndroidManifestAsync(filePath, sortAndroidManifest(modResults));\n },\n }),\n\n // Append a rule to supply gradle.properties data to mods on `mods.android.gradleProperties`\n gradleProperties: provider<Properties.PropertiesItem[]>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.join(platformProjectRoot, 'gradle.properties');\n },\n async read(filePath, config) {\n try {\n return await Properties.parsePropertiesFile(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return [];\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeFile(filePath, Properties.propertiesListToString(modResults));\n },\n }),\n\n // Append a rule to supply strings.xml data to mods on `mods.android.strings`\n strings: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Strings.getProjectStringsXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n\n async read(filePath, config) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n colors: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Colors.getProjectColorsXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n colorsNight: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Colors.getProjectColorsXMLPathAsync(projectRoot, { kind: 'values-night' });\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n async read(filePath, config) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n styles: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Styles.getProjectStylesXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n async read(filePath, config) {\n let styles: Resources.ResourceXML = { resources: {} };\n\n try {\n // Adds support for `tools:x`\n styles = await Resources.readResourcesXMLAsync({\n path: filePath,\n fallback: `<?xml version=\"1.0\" encoding=\"utf-8\"?><resources xmlns:tools=\"http://schemas.android.com/tools\"></resources>`,\n });\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n\n // Ensure support for tools is added...\n if (!styles.resources.$) {\n styles.resources.$ = {};\n }\n if (!styles.resources.$?.['xmlns:tools']) {\n styles.resources.$['xmlns:tools'] = 'http://schemas.android.com/tools';\n }\n return styles;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n projectBuildGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectBuildGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n settingsGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getSettingsGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n appBuildGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getAppBuildGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n mainActivity: provider<Paths.ApplicationProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectFilePath(projectRoot, 'MainActivity');\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n mainApplication: provider<Paths.ApplicationProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectFilePath(projectRoot, 'MainApplication');\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n};\n\ntype AndroidDefaultProviders = typeof defaultProviders;\n\nexport function withAndroidBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<AndroidDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<AndroidModName>(config, {\n ...props,\n platform: 'android',\n providers: providers ?? getAndroidModFileProviders(),\n });\n}\n\nexport function getAndroidModFileProviders() {\n return defaultProviders;\n}\n"],"file":"withAndroidBaseMods.js"}
@@ -15,7 +15,7 @@ export declare function getRuntimeVersionNullable(...[config, platform]: Paramet
15
15
  export declare function getRuntimeVersion(config: Pick<ExpoConfig, 'version' | 'runtimeVersion' | 'sdkVersion'> & {
16
16
  android?: Pick<Android, 'versionCode' | 'runtimeVersion'>;
17
17
  ios?: Pick<IOS, 'buildNumber' | 'runtimeVersion'>;
18
- }, platform: 'android' | 'ios'): string;
18
+ }, platform: 'android' | 'ios'): string | null;
19
19
  export declare function getSDKVersion(config: Pick<ExpoConfigUpdates, 'sdkVersion'>): string | null;
20
20
  export declare function getUpdatesEnabled(config: Pick<ExpoConfigUpdates, 'updates'>): boolean;
21
21
  export declare function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>): number;
@@ -152,15 +152,23 @@ const withRuntimeVersion = config => {
152
152
  var _config$ios, _config$android;
153
153
 
154
154
  if ((_config$ios = config.ios) !== null && _config$ios !== void 0 && _config$ios.runtimeVersion || config.runtimeVersion) {
155
- config.ios = { ...config.ios,
156
- runtimeVersion: getRuntimeVersion(config, 'ios')
157
- };
155
+ const runtimeVersion = getRuntimeVersion(config, 'ios');
156
+
157
+ if (runtimeVersion) {
158
+ config.ios = { ...config.ios,
159
+ runtimeVersion
160
+ };
161
+ }
158
162
  }
159
163
 
160
164
  if ((_config$android = config.android) !== null && _config$android !== void 0 && _config$android.runtimeVersion || config.runtimeVersion) {
161
- config.android = { ...config.android,
162
- runtimeVersion: getRuntimeVersion(config, 'android')
163
- };
165
+ const runtimeVersion = getRuntimeVersion(config, 'android');
166
+
167
+ if (runtimeVersion) {
168
+ config.android = { ...config.android,
169
+ runtimeVersion
170
+ };
171
+ }
164
172
  }
165
173
 
166
174
  delete config.runtimeVersion;
@@ -187,7 +195,7 @@ function getRuntimeVersion(config, platform) {
187
195
  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;
188
196
 
189
197
  if (!runtimeVersion) {
190
- throw new Error(`There is neither a value or a policy set for the runtime version on "${platform}"`);
198
+ return null;
191
199
  }
192
200
 
193
201
  if (typeof runtimeVersion === 'string') {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/Updates.ts"],"names":["getExpoUpdatesPackageVersion","projectRoot","expoUpdatesPackageJsonPath","resolveFrom","silent","fs","existsSync","packageJson","JSON","parse","readFileSync","version","getUpdateUrl","config","username","updates","url","user","owner","slug","getNativeVersion","platform","IOSConfig","Version","getVersion","buildNumber","getBuildNumber","versionCode","AndroidConfig","getVersionCode","Error","withRuntimeVersion","ios","runtimeVersion","getRuntimeVersion","android","getRuntimeVersionNullable","e","console","log","policy","sdkVersion","stringify","getSDKVersion","getUpdatesEnabled","enabled","getUpdatesTimeout","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","expoUpdatesPackageVersion","checkAutomatically","semver","gte","getUpdatesCodeSigningCertificate","codeSigningCertificatePath","codeSigningCertificate","undefined","finalPath","path","join","getUpdatesCodeSigningMetadata","codeSigningMetadata","getUpdatesCodeSigningMetadataStringified","metadata"],"mappings":"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","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 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 config.ios = {\n ...config.ios,\n runtimeVersion: getRuntimeVersion(config, 'ios'),\n };\n }\n if (config.android?.runtimeVersion || config.runtimeVersion) {\n config.android = {\n ...config.android,\n runtimeVersion: getRuntimeVersion(config, 'android'),\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 {\n const runtimeVersion = config[platform]?.runtimeVersion ?? config.runtimeVersion;\n if (!runtimeVersion) {\n throw new Error(\n `There is neither a value or a policy set for the runtime version on \"${platform}\"`\n );\n }\n\n if (typeof runtimeVersion === 'string') {\n return runtimeVersion;\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\", 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"],"file":"Updates.js"}
1
+ {"version":3,"sources":["../../src/utils/Updates.ts"],"names":["getExpoUpdatesPackageVersion","projectRoot","expoUpdatesPackageJsonPath","resolveFrom","silent","fs","existsSync","packageJson","JSON","parse","readFileSync","version","getUpdateUrl","config","username","updates","url","user","owner","slug","getNativeVersion","platform","IOSConfig","Version","getVersion","buildNumber","getBuildNumber","versionCode","AndroidConfig","getVersionCode","Error","withRuntimeVersion","ios","runtimeVersion","getRuntimeVersion","android","getRuntimeVersionNullable","e","console","log","policy","sdkVersion","stringify","getSDKVersion","getUpdatesEnabled","enabled","getUpdatesTimeout","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","expoUpdatesPackageVersion","checkAutomatically","semver","gte","getUpdatesCodeSigningCertificate","codeSigningCertificatePath","codeSigningCertificate","undefined","finalPath","path","join","getUpdatesCodeSigningMetadata","codeSigningMetadata","getUpdatesCodeSigningMetadataStringified","metadata"],"mappings":"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","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 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 === '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\", 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"],"file":"Updates.js"}
@@ -23,3 +23,4 @@ export declare function format(manifest: any, { indentLevel, newline }?: {
23
23
  * @param value unescaped Android XML string literal.
24
24
  */
25
25
  export declare function escapeAndroidString(value: string): string;
26
+ export declare function unescapeAndroidString(value: string): string;
@@ -7,12 +7,13 @@ exports.escapeAndroidString = escapeAndroidString;
7
7
  exports.format = format;
8
8
  exports.parseXMLAsync = parseXMLAsync;
9
9
  exports.readXMLAsync = readXMLAsync;
10
+ exports.unescapeAndroidString = unescapeAndroidString;
10
11
  exports.writeXMLAsync = writeXMLAsync;
11
12
 
12
- function _fsExtra() {
13
- const data = _interopRequireDefault(require("fs-extra"));
13
+ function _fs() {
14
+ const data = _interopRequireDefault(require("fs"));
14
15
 
15
- _fsExtra = function () {
16
+ _fs = function () {
16
17
  return data;
17
18
  };
18
19
 
@@ -53,15 +54,19 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
53
54
 
54
55
  async function writeXMLAsync(options) {
55
56
  const xml = format(options.xml);
56
- await _fsExtra().default.ensureDir(_path().default.dirname(options.path));
57
- await _fsExtra().default.writeFile(options.path, xml);
57
+ await _fs().default.promises.mkdir(_path().default.dirname(options.path), {
58
+ recursive: true
59
+ });
60
+ await _fs().default.promises.writeFile(options.path, xml);
58
61
  }
59
62
 
60
63
  async function readXMLAsync(options) {
64
+ var _manifest$resources;
65
+
61
66
  let contents = '';
62
67
 
63
68
  try {
64
- contents = await _fsExtra().default.readFile(options.path, {
69
+ contents = await _fs().default.promises.readFile(options.path, {
65
70
  encoding: 'utf8',
66
71
  flag: 'r'
67
72
  });
@@ -69,7 +74,20 @@ async function readXMLAsync(options) {
69
74
  }
70
75
 
71
76
  const parser = new (_xml2js().Parser)();
72
- const manifest = await parser.parseStringPromise(contents || options.fallback || '');
77
+ const manifest = await parser.parseStringPromise(contents || options.fallback || ''); // For strings.xml
78
+
79
+ 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
+ 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
+ var _manifest$resources2;
82
+
83
+ if (string.$.translatable === 'false' || string.$.translatable === false) {
84
+ continue;
85
+ }
86
+
87
+ string._ = unescapeAndroidString(string._);
88
+ }
89
+ }
90
+
73
91
  return manifest;
74
92
  }
75
93
 
@@ -89,15 +107,15 @@ function format(manifest, {
89
107
  if (typeof manifest === 'string') {
90
108
  xmlInput = manifest;
91
109
  } else if (manifest.toString) {
92
- var _manifest$resources;
110
+ var _manifest$resources3;
93
111
 
94
112
  const builder = new (_xml2js().Builder)({
95
113
  headless: true
96
114
  }); // For strings.xml
97
115
 
98
- if (Array.isArray(manifest === null || manifest === void 0 ? void 0 : (_manifest$resources = manifest.resources) === null || _manifest$resources === void 0 ? void 0 : _manifest$resources.string)) {
99
- 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) {
100
- var _manifest$resources2;
116
+ 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
+ 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
+ var _manifest$resources4;
101
119
 
102
120
  if (string.$.translatable === 'false' || string.$.translatable === false) {
103
121
  continue;
@@ -174,4 +192,8 @@ function escapeAndroidString(value) {
174
192
 
175
193
  return value;
176
194
  }
195
+
196
+ function unescapeAndroidString(value) {
197
+ return value.replace(/\\(.)/g, '$1');
198
+ }
177
199
  //# sourceMappingURL=XML.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/XML.ts"],"names":["writeXMLAsync","options","xml","format","fs","ensureDir","path","dirname","writeFile","readXMLAsync","contents","readFile","encoding","flag","parser","Parser","manifest","parseStringPromise","fallback","parseXMLAsync","stringTimesN","n","char","Array","join","indentLevel","newline","EOL","xmlInput","toString","builder","Builder","headless","isArray","resources","string","$","translatable","_","escapeAndroidString","buildObject","Error","indentString","formatted","regex","replace","pad","split","map","line","trim","forEach","indent","match","padding","value","m"],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\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.ensureDir(path.dirname(options.path));\n await fs.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.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 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"],"file":"XML.js"}
1
+ {"version":3,"sources":["../../src/utils/XML.ts"],"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"],"mappings":"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","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"],"file":"XML.js"}
@@ -0,0 +1,4 @@
1
+ /** A basic function that copies a single file to another file location. */
2
+ export declare function copyFilePathToPathAsync(src: string, dest: string): Promise<void>;
3
+ /** Remove a single file (not directory). Returns `true` if a file was actually deleted. */
4
+ export declare function removeFile(filePath: string): boolean;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.copyFilePathToPathAsync = copyFilePathToPathAsync;
7
+ exports.removeFile = removeFile;
8
+
9
+ function _fs() {
10
+ const data = _interopRequireDefault(require("fs"));
11
+
12
+ _fs = function () {
13
+ return data;
14
+ };
15
+
16
+ return data;
17
+ }
18
+
19
+ function _path() {
20
+ const data = _interopRequireDefault(require("path"));
21
+
22
+ _path = function () {
23
+ return data;
24
+ };
25
+
26
+ return data;
27
+ }
28
+
29
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+
31
+ /** A basic function that copies a single file to another file location. */
32
+ async function copyFilePathToPathAsync(src, dest) {
33
+ const srcFile = await _fs().default.promises.readFile(src);
34
+ await _fs().default.promises.mkdir(_path().default.dirname(dest), {
35
+ recursive: true
36
+ });
37
+ await _fs().default.promises.writeFile(dest, srcFile);
38
+ }
39
+ /** Remove a single file (not directory). Returns `true` if a file was actually deleted. */
40
+
41
+
42
+ function removeFile(filePath) {
43
+ try {
44
+ _fs().default.unlinkSync(filePath);
45
+
46
+ return true;
47
+ } catch (error) {
48
+ // Skip if the remove did nothing.
49
+ if (error.code === 'ENOENT') {
50
+ return false;
51
+ }
52
+
53
+ throw error;
54
+ }
55
+ }
56
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/fs.ts"],"names":["copyFilePathToPathAsync","src","dest","srcFile","fs","promises","readFile","mkdir","path","dirname","recursive","writeFile","removeFile","filePath","unlinkSync","error","code"],"mappings":";;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AAEA;AACO,eAAeA,uBAAf,CAAuCC,GAAvC,EAAoDC,IAApD,EAAiF;AACtF,QAAMC,OAAO,GAAG,MAAMC,cAAGC,QAAH,CAAYC,QAAZ,CAAqBL,GAArB,CAAtB;AACA,QAAMG,cAAGC,QAAH,CAAYE,KAAZ,CAAkBC,gBAAKC,OAAL,CAAaP,IAAb,CAAlB,EAAsC;AAAEQ,IAAAA,SAAS,EAAE;AAAb,GAAtC,CAAN;AACA,QAAMN,cAAGC,QAAH,CAAYM,SAAZ,CAAsBT,IAAtB,EAA4BC,OAA5B,CAAN;AACD;AAED;;;AACO,SAASS,UAAT,CAAoBC,QAApB,EAA+C;AACpD,MAAI;AACFT,kBAAGU,UAAH,CAAcD,QAAd;;AACA,WAAO,IAAP;AACD,GAHD,CAGE,OAAOE,KAAP,EAAmB;AACnB;AACA,QAAIA,KAAK,CAACC,IAAN,KAAe,QAAnB,EAA6B;AAC3B,aAAO,KAAP;AACD;;AACD,UAAMD,KAAN;AACD;AACF","sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\n/** A basic function that copies a single file to another file location. */\nexport async function copyFilePathToPathAsync(src: string, dest: string): Promise<void> {\n const srcFile = await fs.promises.readFile(src);\n await fs.promises.mkdir(path.dirname(dest), { recursive: true });\n await fs.promises.writeFile(dest, srcFile);\n}\n\n/** Remove a single file (not directory). Returns `true` if a file was actually deleted. */\nexport function removeFile(filePath: string): boolean {\n try {\n fs.unlinkSync(filePath);\n return true;\n } catch (error: any) {\n // Skip if the remove did nothing.\n if (error.code === 'ENOENT') {\n return false;\n }\n throw error;\n }\n}\n"],"file":"fs.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/config-plugins",
3
- "version": "4.0.17",
3
+ "version": "4.1.1",
4
4
  "description": "A library for Expo config plugins",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -32,15 +32,14 @@
32
32
  "paths"
33
33
  ],
34
34
  "dependencies": {
35
- "@expo/config-types": "^43.0.1",
36
- "@expo/json-file": "8.2.34",
37
- "@expo/plist": "0.0.17",
35
+ "@expo/config-types": "^44.0.0",
36
+ "@expo/json-file": "8.2.35",
37
+ "@expo/plist": "0.0.18",
38
38
  "@expo/sdk-runtime-versions": "^1.0.0",
39
39
  "@react-native/normalize-color": "^2.0.0",
40
40
  "chalk": "^4.1.2",
41
41
  "debug": "^4.3.1",
42
42
  "find-up": "~5.0.0",
43
- "fs-extra": "9.0.0",
44
43
  "getenv": "^1.0.0",
45
44
  "glob": "7.1.6",
46
45
  "resolve-from": "^5.0.0",
@@ -52,7 +51,6 @@
52
51
  "devDependencies": {
53
52
  "@types/debug": "^4.1.5",
54
53
  "@types/find-up": "^4.0.0",
55
- "@types/fs-extra": "^9.0.1",
56
54
  "@types/xml2js": "^0.4.5"
57
55
  },
58
56
  "publishConfig": {