@expo/config-plugins 9.0.8 → 9.0.10

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.
@@ -84,7 +84,6 @@ function getAndroidManifestTemplate(config) {
84
84
  <category android:name="android.intent.category.LAUNCHER"/>
85
85
  </intent-filter>
86
86
  </activity>
87
- <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false"/>
88
87
  </application>
89
88
  </manifest>
90
89
  `);
@@ -1 +1 @@
1
- {"version":3,"file":"withAndroidBaseMods.js","names":["_fs","data","require","_path","_interopRequireDefault","_createBaseMod","_android","_XML","_sortObject","e","__esModule","default","readFile","writeFile","promises","getAndroidManifestTemplate","config","parseXMLAsync","android","package","sortAndroidManifest","obj","manifest","sortObject","reverseSortString","Array","isArray","sort","a","b","$","application","map","sortObjWithOrder","defaultProviders","dangerous","provider","getFilePath","read","filePath","modResults","write","finalized","isIntrospective","modRequest","platformProjectRoot","path","join","Manifest","readAndroidManifestAsync","error","introspect","writeAndroidManifestAsync","gradleProperties","Properties","parsePropertiesFile","propertiesListToString","strings","projectRoot","Strings","getProjectStringsXMLPathAsync","Resources","readResourcesXMLAsync","resources","writeXMLAsync","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","withGeneratedBaseMods","platform","getAndroidModFileProviders"],"sources":["../../src/plugins/withAndroidBaseMods.ts"],"sourcesContent":["import { promises } from 'fs';\nimport path from 'path';\n\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\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';\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/main/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.VIBRATE\"/>\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 android:name=\".MainApplication\" android:label=\"@string/app_name\" android:icon=\"@mipmap/ic_launcher\" android:roundIcon=\"@mipmap/ic_launcher_round\" android:allowBackup=\"false\" android:theme=\"@style/AppTheme\" android:supportsRtl=\"true\">\n <activity android:name=\".MainActivity\" android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize|screenLayout|uiMode\" android:launchMode=\"singleTask\" android:windowSoftInputMode=\"adjustResize\" android:theme=\"@style/Theme.App.SplashScreen\" android:exported=\"true\">\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\" android:exported=\"false\"/>\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 finalized: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return { filePath: '', modResults: {} };\n },\n async write() {},\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"withAndroidBaseMods.js","names":["_fs","data","require","_path","_interopRequireDefault","_createBaseMod","_android","_XML","_sortObject","e","__esModule","default","readFile","writeFile","promises","getAndroidManifestTemplate","config","parseXMLAsync","android","package","sortAndroidManifest","obj","manifest","sortObject","reverseSortString","Array","isArray","sort","a","b","$","application","map","sortObjWithOrder","defaultProviders","dangerous","provider","getFilePath","read","filePath","modResults","write","finalized","isIntrospective","modRequest","platformProjectRoot","path","join","Manifest","readAndroidManifestAsync","error","introspect","writeAndroidManifestAsync","gradleProperties","Properties","parsePropertiesFile","propertiesListToString","strings","projectRoot","Strings","getProjectStringsXMLPathAsync","Resources","readResourcesXMLAsync","resources","writeXMLAsync","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","withGeneratedBaseMods","platform","getAndroidModFileProviders"],"sources":["../../src/plugins/withAndroidBaseMods.ts"],"sourcesContent":["import { promises } from 'fs';\nimport path from 'path';\n\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\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';\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/main/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.VIBRATE\"/>\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 android:name=\".MainApplication\" android:label=\"@string/app_name\" android:icon=\"@mipmap/ic_launcher\" android:roundIcon=\"@mipmap/ic_launcher_round\" android:allowBackup=\"false\" android:theme=\"@style/AppTheme\" android:supportsRtl=\"true\">\n <activity android:name=\".MainActivity\" android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize|screenLayout|uiMode\" android:launchMode=\"singleTask\" android:windowSoftInputMode=\"adjustResize\" android:theme=\"@style/Theme.App.SplashScreen\" android:exported=\"true\">\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 </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 finalized: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return { filePath: '', modResults: {} };\n },\n async write() {},\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"],"mappings":"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","ignoreList":[]}
@@ -70,6 +70,7 @@ function resolvePluginForModule(projectRoot, pluginReference) {
70
70
  const pluginScriptFile = _resolveFrom().default.silent(projectRoot, pluginReference);
71
71
  if (pluginScriptFile) {
72
72
  return {
73
+ // NOTE(cedric): `path.sep` is required here, we are resolving the absolute path, not the plugin reference
73
74
  isPluginFile: pluginScriptFile.endsWith(path().sep + pluginFileName),
74
75
  filePath: pluginScriptFile
75
76
  };
@@ -104,7 +105,7 @@ function moduleNameIsDirectFileReference(name) {
104
105
  if (pathIsFilePath(name)) {
105
106
  return true;
106
107
  }
107
- const slashCount = name.split(path().sep)?.length;
108
+ const slashCount = name.split('/')?.length;
108
109
  // Orgs (like @expo/config ) should have more than one slash to be a direct file.
109
110
  if (name.startsWith('@')) {
110
111
  return slashCount > 2;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-resolver.js","names":["_assert","data","_interopRequireDefault","require","path","_interopRequireWildcard","_resolveFrom","_errors","_modules","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","pluginFileName","exports","resolvePluginForModule","projectRoot","pluginReference","moduleNameIsDirectFileReference","pluginScriptFile","resolveFrom","silent","isPluginFile","endsWith","sep","filePath","moduleNameIsPackageReference","pluginPackageFile","fileExists","packageMainEntry","PluginError","pathIsFilePath","name","match","slashCount","split","length","startsWith","normalizeStaticPlugin","plugin","Array","isArray","assert","undefined","assertInternalProjectRoot","resolveConfigPluginFunction","resolveConfigPluginFunctionWithInfo","pluginFile","result","requirePluginFile","error","SyntaxError","learnMoreLink","pluginError","message","stack","resolveConfigPluginExport"],"sources":["../../src/utils/plugin-resolver.ts"],"sourcesContent":["import assert from 'assert';\nimport * as path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { PluginError } from './errors';\nimport { ConfigPlugin, StaticPlugin } from '../Plugin.types';\nimport { fileExists } from './modules';\n// Default plugin entry file name.\nexport const pluginFileName = 'app.plugin.js';\n\n/**\n * Resolve the config plugin from a node module or package.\n * If the module or package does not include a config plugin, this function throws a `PluginError`.\n * The resolution is done in following order:\n * 1. Is the reference a relative file path or an import specifier with file path? e.g. `./file.js`, `pkg/file.js` or `@org/pkg/file.js`?\n * - Resolve the config plugin as-is\n * 2. If the reference a module? e.g. `expo-font`\n * - Resolve the root `app.plugin.js` file within the module, e.g. `expo-font/app.plugin.js`\n * 3. Does the module have a valid config plugin in the `main` field?\n * - Resolve the `main` entry point as config plugin\n */\nexport function resolvePluginForModule(\n projectRoot: string,\n pluginReference: string\n): { filePath: string; isPluginFile: boolean } {\n if (moduleNameIsDirectFileReference(pluginReference)) {\n // Only resolve `./file.js`, `package/file.js`, `@org/package/file.js`\n const pluginScriptFile = resolveFrom.silent(projectRoot, pluginReference);\n if (pluginScriptFile) {\n return {\n isPluginFile: pluginScriptFile.endsWith(path.sep + pluginFileName),\n filePath: pluginScriptFile,\n };\n }\n } else if (moduleNameIsPackageReference(pluginReference)) {\n // Only resolve `package -> package/app.plugin.js`, `@org/package -> @org/package/app.plugin.js`\n const pluginPackageFile = resolveFrom.silent(\n projectRoot,\n `${pluginReference}/${pluginFileName}`\n );\n if (pluginPackageFile && fileExists(pluginPackageFile)) {\n return { isPluginFile: true, filePath: pluginPackageFile };\n }\n // Try to resole the `main` entry as config plugin\n const packageMainEntry = resolveFrom.silent(projectRoot, pluginReference);\n if (packageMainEntry) {\n return { isPluginFile: false, filePath: packageMainEntry };\n }\n }\n\n throw new PluginError(\n `Failed to resolve plugin for module \"${pluginReference}\" relative to \"${projectRoot}\"`,\n 'PLUGIN_NOT_FOUND'\n );\n}\n\n// TODO: Test windows\nfunction pathIsFilePath(name: string): boolean {\n // Matches lines starting with: . / ~/\n return !!name.match(/^(\\.|~\\/|\\/)/g);\n}\n\nexport function moduleNameIsDirectFileReference(name: string): boolean {\n if (pathIsFilePath(name)) {\n return true;\n }\n\n const slashCount = name.split(path.sep)?.length;\n // Orgs (like @expo/config ) should have more than one slash to be a direct file.\n if (name.startsWith('@')) {\n return slashCount > 2;\n }\n\n // Regular packages should be considered direct reference if they have more than one slash.\n return slashCount > 1;\n}\n\nexport function moduleNameIsPackageReference(name: string): boolean {\n const slashCount = name.split('/')?.length;\n return name.startsWith('@') ? slashCount === 2 : slashCount === 1;\n}\n\nexport function normalizeStaticPlugin(plugin: StaticPlugin | ConfigPlugin | string): StaticPlugin {\n if (Array.isArray(plugin)) {\n assert(\n plugin.length > 0 && plugin.length < 3,\n `Wrong number of arguments provided for static config plugin, expected either 1 or 2, got ${plugin.length}`\n );\n return plugin;\n }\n return [plugin, undefined];\n}\n\nexport function assertInternalProjectRoot(projectRoot?: string): asserts projectRoot {\n assert(\n projectRoot,\n `Unexpected: Config \\`_internal.projectRoot\\` isn't defined by expo-cli, this is a bug.`\n );\n}\n\n// Resolve the module function and assert type\nexport function resolveConfigPluginFunction(projectRoot: string, pluginReference: string) {\n const { plugin } = resolveConfigPluginFunctionWithInfo(projectRoot, pluginReference);\n return plugin;\n}\n\n// Resolve the module function and assert type\nexport function resolveConfigPluginFunctionWithInfo(projectRoot: string, pluginReference: string) {\n const { filePath: pluginFile, isPluginFile } = resolvePluginForModule(\n projectRoot,\n pluginReference\n );\n let result: any;\n try {\n result = requirePluginFile(pluginFile);\n } catch (error) {\n if (error instanceof SyntaxError) {\n const learnMoreLink = `Learn more: https://docs.expo.dev/guides/config-plugins/#creating-a-plugin`;\n // If the plugin reference is a node module, and that node module has a syntax error, then it probably doesn't have an official config plugin.\n if (!isPluginFile && !moduleNameIsDirectFileReference(pluginReference)) {\n const pluginError = new PluginError(\n `Package \"${pluginReference}\" does not contain a valid config plugin.\\n${learnMoreLink}\\n\\n${error.message}`,\n 'INVALID_PLUGIN_IMPORT'\n );\n pluginError.stack = error.stack;\n throw pluginError;\n }\n }\n throw error;\n }\n\n const plugin = resolveConfigPluginExport({\n plugin: result,\n pluginFile,\n pluginReference,\n isPluginFile,\n });\n return { plugin, pluginFile, pluginReference, isPluginFile };\n}\n\n/**\n * - Resolve the exported contents of an Expo config (be it default or module.exports)\n * - Assert no promise exports\n * - Return config type\n * - Serialize config\n *\n * @param props.plugin plugin results\n * @param props.pluginFile plugin file path\n * @param props.pluginReference the string used to reference the plugin\n * @param props.isPluginFile is file path from the app.plugin.js module root\n */\nexport function resolveConfigPluginExport({\n plugin,\n pluginFile,\n pluginReference,\n isPluginFile,\n}: {\n plugin: any;\n pluginFile: string;\n pluginReference: string;\n isPluginFile: boolean;\n}): ConfigPlugin<unknown> {\n if (plugin.default != null) {\n plugin = plugin.default;\n }\n if (typeof plugin !== 'function') {\n const learnMoreLink = `Learn more: https://docs.expo.dev/guides/config-plugins/#creating-a-plugin`;\n // If the plugin reference is a node module, and that node module does not export a function then it probably doesn't have a config plugin.\n if (!isPluginFile && !moduleNameIsDirectFileReference(pluginReference)) {\n throw new PluginError(\n `Package \"${pluginReference}\" does not contain a valid config plugin. Module must export a function from file: ${pluginFile}\\n${learnMoreLink}`,\n 'INVALID_PLUGIN_TYPE'\n );\n }\n throw new PluginError(\n `Plugin \"${pluginReference}\" must export a function from file: ${pluginFile}. ${learnMoreLink}`,\n 'INVALID_PLUGIN_TYPE'\n );\n }\n\n return plugin;\n}\n\nfunction requirePluginFile(filePath: string): any {\n try {\n return require(filePath);\n } catch (error) {\n // TODO: Improve error messages\n throw error;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"plugin-resolver.js","names":["_assert","data","_interopRequireDefault","require","path","_interopRequireWildcard","_resolveFrom","_errors","_modules","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","pluginFileName","exports","resolvePluginForModule","projectRoot","pluginReference","moduleNameIsDirectFileReference","pluginScriptFile","resolveFrom","silent","isPluginFile","endsWith","sep","filePath","moduleNameIsPackageReference","pluginPackageFile","fileExists","packageMainEntry","PluginError","pathIsFilePath","name","match","slashCount","split","length","startsWith","normalizeStaticPlugin","plugin","Array","isArray","assert","undefined","assertInternalProjectRoot","resolveConfigPluginFunction","resolveConfigPluginFunctionWithInfo","pluginFile","result","requirePluginFile","error","SyntaxError","learnMoreLink","pluginError","message","stack","resolveConfigPluginExport"],"sources":["../../src/utils/plugin-resolver.ts"],"sourcesContent":["import assert from 'assert';\nimport * as path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { PluginError } from './errors';\nimport { ConfigPlugin, StaticPlugin } from '../Plugin.types';\nimport { fileExists } from './modules';\n// Default plugin entry file name.\nexport const pluginFileName = 'app.plugin.js';\n\n/**\n * Resolve the config plugin from a node module or package.\n * If the module or package does not include a config plugin, this function throws a `PluginError`.\n * The resolution is done in following order:\n * 1. Is the reference a relative file path or an import specifier with file path? e.g. `./file.js`, `pkg/file.js` or `@org/pkg/file.js`?\n * - Resolve the config plugin as-is\n * 2. If the reference a module? e.g. `expo-font`\n * - Resolve the root `app.plugin.js` file within the module, e.g. `expo-font/app.plugin.js`\n * 3. Does the module have a valid config plugin in the `main` field?\n * - Resolve the `main` entry point as config plugin\n */\nexport function resolvePluginForModule(\n projectRoot: string,\n pluginReference: string\n): { filePath: string; isPluginFile: boolean } {\n if (moduleNameIsDirectFileReference(pluginReference)) {\n // Only resolve `./file.js`, `package/file.js`, `@org/package/file.js`\n const pluginScriptFile = resolveFrom.silent(projectRoot, pluginReference);\n if (pluginScriptFile) {\n return {\n // NOTE(cedric): `path.sep` is required here, we are resolving the absolute path, not the plugin reference\n isPluginFile: pluginScriptFile.endsWith(path.sep + pluginFileName),\n filePath: pluginScriptFile,\n };\n }\n } else if (moduleNameIsPackageReference(pluginReference)) {\n // Only resolve `package -> package/app.plugin.js`, `@org/package -> @org/package/app.plugin.js`\n const pluginPackageFile = resolveFrom.silent(\n projectRoot,\n `${pluginReference}/${pluginFileName}`\n );\n if (pluginPackageFile && fileExists(pluginPackageFile)) {\n return { isPluginFile: true, filePath: pluginPackageFile };\n }\n // Try to resole the `main` entry as config plugin\n const packageMainEntry = resolveFrom.silent(projectRoot, pluginReference);\n if (packageMainEntry) {\n return { isPluginFile: false, filePath: packageMainEntry };\n }\n }\n\n throw new PluginError(\n `Failed to resolve plugin for module \"${pluginReference}\" relative to \"${projectRoot}\"`,\n 'PLUGIN_NOT_FOUND'\n );\n}\n\n// TODO: Test windows\nfunction pathIsFilePath(name: string): boolean {\n // Matches lines starting with: . / ~/\n return !!name.match(/^(\\.|~\\/|\\/)/g);\n}\n\nexport function moduleNameIsDirectFileReference(name: string): boolean {\n if (pathIsFilePath(name)) {\n return true;\n }\n\n const slashCount = name.split('/')?.length;\n // Orgs (like @expo/config ) should have more than one slash to be a direct file.\n if (name.startsWith('@')) {\n return slashCount > 2;\n }\n\n // Regular packages should be considered direct reference if they have more than one slash.\n return slashCount > 1;\n}\n\nexport function moduleNameIsPackageReference(name: string): boolean {\n const slashCount = name.split('/')?.length;\n return name.startsWith('@') ? slashCount === 2 : slashCount === 1;\n}\n\nexport function normalizeStaticPlugin(plugin: StaticPlugin | ConfigPlugin | string): StaticPlugin {\n if (Array.isArray(plugin)) {\n assert(\n plugin.length > 0 && plugin.length < 3,\n `Wrong number of arguments provided for static config plugin, expected either 1 or 2, got ${plugin.length}`\n );\n return plugin;\n }\n return [plugin, undefined];\n}\n\nexport function assertInternalProjectRoot(projectRoot?: string): asserts projectRoot {\n assert(\n projectRoot,\n `Unexpected: Config \\`_internal.projectRoot\\` isn't defined by expo-cli, this is a bug.`\n );\n}\n\n// Resolve the module function and assert type\nexport function resolveConfigPluginFunction(projectRoot: string, pluginReference: string) {\n const { plugin } = resolveConfigPluginFunctionWithInfo(projectRoot, pluginReference);\n return plugin;\n}\n\n// Resolve the module function and assert type\nexport function resolveConfigPluginFunctionWithInfo(projectRoot: string, pluginReference: string) {\n const { filePath: pluginFile, isPluginFile } = resolvePluginForModule(\n projectRoot,\n pluginReference\n );\n let result: any;\n try {\n result = requirePluginFile(pluginFile);\n } catch (error) {\n if (error instanceof SyntaxError) {\n const learnMoreLink = `Learn more: https://docs.expo.dev/guides/config-plugins/#creating-a-plugin`;\n // If the plugin reference is a node module, and that node module has a syntax error, then it probably doesn't have an official config plugin.\n if (!isPluginFile && !moduleNameIsDirectFileReference(pluginReference)) {\n const pluginError = new PluginError(\n `Package \"${pluginReference}\" does not contain a valid config plugin.\\n${learnMoreLink}\\n\\n${error.message}`,\n 'INVALID_PLUGIN_IMPORT'\n );\n pluginError.stack = error.stack;\n throw pluginError;\n }\n }\n throw error;\n }\n\n const plugin = resolveConfigPluginExport({\n plugin: result,\n pluginFile,\n pluginReference,\n isPluginFile,\n });\n return { plugin, pluginFile, pluginReference, isPluginFile };\n}\n\n/**\n * - Resolve the exported contents of an Expo config (be it default or module.exports)\n * - Assert no promise exports\n * - Return config type\n * - Serialize config\n *\n * @param props.plugin plugin results\n * @param props.pluginFile plugin file path\n * @param props.pluginReference the string used to reference the plugin\n * @param props.isPluginFile is file path from the app.plugin.js module root\n */\nexport function resolveConfigPluginExport({\n plugin,\n pluginFile,\n pluginReference,\n isPluginFile,\n}: {\n plugin: any;\n pluginFile: string;\n pluginReference: string;\n isPluginFile: boolean;\n}): ConfigPlugin<unknown> {\n if (plugin.default != null) {\n plugin = plugin.default;\n }\n if (typeof plugin !== 'function') {\n const learnMoreLink = `Learn more: https://docs.expo.dev/guides/config-plugins/#creating-a-plugin`;\n // If the plugin reference is a node module, and that node module does not export a function then it probably doesn't have a config plugin.\n if (!isPluginFile && !moduleNameIsDirectFileReference(pluginReference)) {\n throw new PluginError(\n `Package \"${pluginReference}\" does not contain a valid config plugin. Module must export a function from file: ${pluginFile}\\n${learnMoreLink}`,\n 'INVALID_PLUGIN_TYPE'\n );\n }\n throw new PluginError(\n `Plugin \"${pluginReference}\" must export a function from file: ${pluginFile}. ${learnMoreLink}`,\n 'INVALID_PLUGIN_TYPE'\n );\n }\n\n return plugin;\n}\n\nfunction requirePluginFile(filePath: string): any {\n try {\n return require(filePath);\n } catch (error) {\n // TODO: Improve error messages\n throw error;\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/config-plugins",
3
- "version": "9.0.8",
3
+ "version": "9.0.10",
4
4
  "description": "A library for Expo config plugins",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -57,5 +57,5 @@
57
57
  "publishConfig": {
58
58
  "access": "public"
59
59
  },
60
- "gitHead": "8f2567ad26ca782cd2d7ab7fa77a34979e2b4e01"
60
+ "gitHead": "8b7a5da5dc407c5242f4c512e892c2ca3506a096"
61
61
  }