@expo/config-plugins 4.0.8 → 4.0.12

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 (38) hide show
  1. package/build/android/IntentFilters.d.ts +3 -3
  2. package/build/android/IntentFilters.js +44 -48
  3. package/build/android/IntentFilters.js.map +1 -1
  4. package/build/android/Manifest.d.ts +5 -1
  5. package/build/android/Manifest.js.map +1 -1
  6. package/build/android/Updates.d.ts +2 -2
  7. package/build/android/Updates.js +20 -4
  8. package/build/android/Updates.js.map +1 -1
  9. package/build/android/Version.d.ts +9 -0
  10. package/build/android/Version.js +37 -1
  11. package/build/android/Version.js.map +1 -1
  12. package/build/index.d.ts +1 -1
  13. package/build/index.js +7 -0
  14. package/build/index.js.map +1 -1
  15. package/build/ios/BundleIdentifier.js +11 -1
  16. package/build/ios/BundleIdentifier.js.map +1 -1
  17. package/build/ios/JsEngine.d.ts +2 -1
  18. package/build/ios/JsEngine.js.map +1 -1
  19. package/build/ios/Maps.js +7 -2
  20. package/build/ios/Maps.js.map +1 -1
  21. package/build/ios/ProvisioningProfile.js +11 -2
  22. package/build/ios/ProvisioningProfile.js.map +1 -1
  23. package/build/ios/Target.js +29 -10
  24. package/build/ios/Target.js.map +1 -1
  25. package/build/ios/Updates.d.ts +2 -2
  26. package/build/ios/Updates.js +20 -4
  27. package/build/ios/Updates.js.map +1 -1
  28. package/build/ios/utils/string.d.ts +1 -0
  29. package/build/ios/utils/string.js +11 -0
  30. package/build/ios/utils/string.js.map +1 -0
  31. package/build/plugins/ios-plugins.d.ts +2 -2
  32. package/build/plugins/ios-plugins.js.map +1 -1
  33. package/build/plugins/withIosBaseMods.d.ts +3 -3
  34. package/build/plugins/withIosBaseMods.js.map +1 -1
  35. package/build/utils/Updates.d.ts +1 -0
  36. package/build/utils/Updates.js +34 -0
  37. package/build/utils/Updates.js.map +1 -1
  38. package/package.json +2 -1
@@ -1,4 +1,4 @@
1
- import { JSONObject } from '@expo/json-file';
1
+ import { JSONObject, JSONValue } from '@expo/json-file';
2
2
  import xcode from 'xcode';
3
3
  import { ExportedConfig } from '../Plugin.types';
4
4
  import { Paths } from '../ios';
@@ -11,7 +11,7 @@ declare const defaultProviders: {
11
11
  xcodeproj: import("./createBaseMod").BaseModProviderMethods<xcode.XcodeProject, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
12
12
  infoPlist: import("./createBaseMod").BaseModProviderMethods<InfoPlist, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
13
13
  entitlements: import("./createBaseMod").BaseModProviderMethods<JSONObject, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
14
- podfileProperties: import("./createBaseMod").BaseModProviderMethods<Record<string, string>, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
14
+ podfileProperties: import("./createBaseMod").BaseModProviderMethods<Record<string, JSONValue>, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
15
15
  };
16
16
  declare type IosDefaultProviders = typeof defaultProviders;
17
17
  export declare function withIosBaseMods(config: ExportedConfig, { providers, ...props }?: ForwardedBaseModOptions & {
@@ -24,6 +24,6 @@ export declare function getIosModFileProviders(): {
24
24
  xcodeproj: import("./createBaseMod").BaseModProviderMethods<xcode.XcodeProject, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
25
25
  infoPlist: import("./createBaseMod").BaseModProviderMethods<InfoPlist, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
26
26
  entitlements: import("./createBaseMod").BaseModProviderMethods<JSONObject, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
27
- podfileProperties: import("./createBaseMod").BaseModProviderMethods<Record<string, string>, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
27
+ podfileProperties: import("./createBaseMod").BaseModProviderMethods<Record<string, JSONValue>, Partial<Pick<import("./withMod").BaseModOptions, "skipEmptyMod" | "saveToInternal">>>;
28
28
  };
29
29
  export {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/withIosBaseMods.ts"],"names":["readFile","writeFile","promises","getEntitlementsPlistTemplate","getInfoPlistTemplate","CFBundleDevelopmentRegion","CFBundleExecutable","CFBundleIdentifier","CFBundleName","CFBundlePackageType","CFBundleInfoDictionaryVersion","CFBundleSignature","LSRequiresIPhoneOS","NSAppTransportSecurity","NSAllowsArbitraryLoads","NSExceptionDomains","localhost","NSExceptionAllowsInsecureHTTPLoads","UILaunchStoryboardName","UIRequiredDeviceCapabilities","UIViewControllerBasedStatusBarAppearance","UIStatusBarStyle","defaultProviders","dangerous","getFilePath","read","write","appDelegate","modRequest","projectRoot","Paths","getAppDelegateFilePath","filePath","getFileInfo","modResults","contents","expoPlist","isIntrospective","platformProjectRoot","projectName","supportingDirectory","path","join","resolve","introspect","plist","parse","error","build","xcodeproj","getPBXProjectPath","project","xcode","parseSync","writeSync","infoPlist","config","infoPlistBuildProperty","infoPlistPath","getInfoPlistPath","ios","entitlements","Entitlements","getEntitlementsPath","podfileProperties","results","JsonFile","readAsync","e","writeAsync","withIosBaseMods","providers","props","platform","getIosModFileProviders"],"mappings":"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","sourcesContent":["import JsonFile, { JSONObject } from '@expo/json-file';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport { promises } from 'fs';\nimport path from 'path';\nimport xcode, { XcodeProject } from 'xcode';\n\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Entitlements, Paths } from '../ios';\nimport { InfoPlist } from '../ios/IosConfig.types';\nimport { getPbxproj } from '../ios/utils/Xcodeproj';\nimport { getInfoPlistPathFromPbxproj } from '../ios/utils/getInfoPlistPath';\nimport { fileExists } from '../utils/modules';\nimport { sortObject } from '../utils/sortObject';\nimport { addWarningIOS } from '../utils/warnings';\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\n\nconst { readFile, writeFile } = promises;\n\ntype IosModName = keyof Required<ModConfig>['ios'];\n\nfunction getEntitlementsPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {};\n}\n\nfunction getInfoPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {\n CFBundleDevelopmentRegion: '$(DEVELOPMENT_LANGUAGE)',\n CFBundleExecutable: '$(EXECUTABLE_NAME)',\n CFBundleIdentifier: '$(PRODUCT_BUNDLE_IDENTIFIER)',\n CFBundleName: '$(PRODUCT_NAME)',\n CFBundlePackageType: '$(PRODUCT_BUNDLE_PACKAGE_TYPE)',\n CFBundleInfoDictionaryVersion: '6.0',\n CFBundleSignature: '????',\n LSRequiresIPhoneOS: true,\n NSAppTransportSecurity: {\n NSAllowsArbitraryLoads: true,\n NSExceptionDomains: {\n localhost: {\n NSExceptionAllowsInsecureHTTPLoads: true,\n },\n },\n },\n UILaunchStoryboardName: 'SplashScreen',\n UIRequiredDeviceCapabilities: ['armv7'],\n UIViewControllerBasedStatusBarAppearance: false,\n UIStatusBarStyle: 'UIStatusBarStyleDefault',\n };\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return {};\n },\n async write() {},\n }),\n // Append a rule to supply AppDelegate data to mods on `mods.ios.appDelegate`\n appDelegate: provider<Paths.AppDelegateProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getAppDelegateFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath: string, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n // Append a rule to supply Expo.plist data to mods on `mods.ios.expoPlist`\n expoPlist: provider<JSONObject>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot, projectName } }) {\n const supportingDirectory = path.join(platformProjectRoot, projectName!, 'Supporting');\n return path.resolve(supportingDirectory, 'Expo.plist');\n },\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return plist.parse(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (introspect) {\n return {};\n }\n throw error;\n }\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await writeFile(filePath, plist.build(sortObject(modResults)));\n },\n }),\n // Append a rule to supply .xcodeproj data to mods on `mods.ios.xcodeproj`\n xcodeproj: provider<XcodeProject>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getPBXProjectPath(projectRoot);\n },\n async read(filePath) {\n const project = xcode.project(filePath);\n project.parseSync();\n return project;\n },\n async write(filePath, { modResults }) {\n await writeFile(filePath, modResults.writeSync());\n },\n }),\n // Append a rule to supply Info.plist data to mods on `mods.ios.infoPlist`\n infoPlist: provider<InfoPlist, ForwardedBaseModOptions>({\n isIntrospective: true,\n async getFilePath(config) {\n let project: xcode.XcodeProject | null = null;\n try {\n project = getPbxproj(config.modRequest.projectRoot);\n } catch {\n // noop\n }\n\n // Only check / warn if a project actually exists, this'll provide\n // more accurate warning messages for users in managed projects.\n if (project) {\n const infoPlistBuildProperty = getInfoPlistPathFromPbxproj(project);\n\n if (infoPlistBuildProperty) {\n //: [root]/myapp/ios/MyApp/Info.plist\n const infoPlistPath = path.join(\n //: myapp/ios\n config.modRequest.platformProjectRoot,\n //: MyApp/Info.plist\n infoPlistBuildProperty\n );\n if (fileExists(infoPlistPath)) {\n return infoPlistPath;\n }\n addWarningIOS(\n 'mods.ios.infoPlist',\n `Info.plist file linked to Xcode project does not exist: ${infoPlistPath}`\n );\n } else {\n addWarningIOS('mods.ios.infoPlist', 'Failed to find Info.plist linked to Xcode project.');\n }\n }\n try {\n // Fallback on glob...\n return await Paths.getInfoPlistPath(config.modRequest.projectRoot);\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n async read(filePath, config) {\n // Apply all of the Info.plist values to the expo.ios.infoPlist object\n // TODO: Remove this in favor of just overwriting the Info.plist with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.infoPlist) config.ios.infoPlist = {};\n\n let modResults: InfoPlist;\n try {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Info.plist is empty');\n modResults = plist.parse(contents) as InfoPlist;\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the infoPlist object from the Expo config.\n modResults = getInfoPlistTemplate();\n }\n\n config.ios.infoPlist = {\n ...(modResults || {}),\n ...config.ios.infoPlist,\n };\n\n return config.ios.infoPlist!;\n },\n async write(filePath, config) {\n // Update the contents of the static infoPlist object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n // Append a rule to supply .entitlements data to mods on `mods.ios.entitlements`\n entitlements: provider<JSONObject, ForwardedBaseModOptions>({\n isIntrospective: true,\n\n async getFilePath(config) {\n try {\n // Fallback on glob...\n return await Entitlements.getEntitlementsPath(config.modRequest.projectRoot);\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n\n async read(filePath, config) {\n let modResults: JSONObject;\n try {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Entitlements plist is empty');\n modResults = plist.parse(contents);\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the template file.\n modResults = getEntitlementsPlistTemplate();\n }\n\n // Apply all of the .entitlements values to the expo.ios.entitlements object\n // TODO: Remove this in favor of just overwriting the .entitlements with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.entitlements) config.ios.entitlements = {};\n\n config.ios.entitlements = {\n ...(modResults || {}),\n ...config.ios.entitlements,\n };\n\n return config.ios.entitlements!;\n },\n\n async write(filePath, config) {\n // Update the contents of the static entitlements object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n\n // Append a rule to supply Podfile.properties.json data to mods on `mods.ios.podfileProperties`\n podfileProperties: provider<Record<string, string>>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.resolve(platformProjectRoot, 'Podfile.properties.json');\n },\n async read(filePath) {\n let results: Record<string, string> = {};\n try {\n results = await JsonFile.readAsync(filePath);\n } catch (e) {}\n return results;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await JsonFile.writeAsync(filePath, modResults);\n },\n }),\n};\n\ntype IosDefaultProviders = typeof defaultProviders;\n\nexport function withIosBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<IosDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<IosModName>(config, {\n ...props,\n platform: 'ios',\n providers: providers ?? getIosModFileProviders(),\n });\n}\n\nexport function getIosModFileProviders() {\n return defaultProviders;\n}\n"],"file":"withIosBaseMods.js"}
1
+ {"version":3,"sources":["../../src/plugins/withIosBaseMods.ts"],"names":["readFile","writeFile","promises","getEntitlementsPlistTemplate","getInfoPlistTemplate","CFBundleDevelopmentRegion","CFBundleExecutable","CFBundleIdentifier","CFBundleName","CFBundlePackageType","CFBundleInfoDictionaryVersion","CFBundleSignature","LSRequiresIPhoneOS","NSAppTransportSecurity","NSAllowsArbitraryLoads","NSExceptionDomains","localhost","NSExceptionAllowsInsecureHTTPLoads","UILaunchStoryboardName","UIRequiredDeviceCapabilities","UIViewControllerBasedStatusBarAppearance","UIStatusBarStyle","defaultProviders","dangerous","getFilePath","read","write","appDelegate","modRequest","projectRoot","Paths","getAppDelegateFilePath","filePath","getFileInfo","modResults","contents","expoPlist","isIntrospective","platformProjectRoot","projectName","supportingDirectory","path","join","resolve","introspect","plist","parse","error","build","xcodeproj","getPBXProjectPath","project","xcode","parseSync","writeSync","infoPlist","config","infoPlistBuildProperty","infoPlistPath","getInfoPlistPath","ios","entitlements","Entitlements","getEntitlementsPath","podfileProperties","results","JsonFile","readAsync","e","writeAsync","withIosBaseMods","providers","props","platform","getIosModFileProviders"],"mappings":"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","sourcesContent":["import JsonFile, { JSONObject, JSONValue } from '@expo/json-file';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport { promises } from 'fs';\nimport path from 'path';\nimport xcode, { XcodeProject } from 'xcode';\n\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Entitlements, Paths } from '../ios';\nimport { InfoPlist } from '../ios/IosConfig.types';\nimport { getPbxproj } from '../ios/utils/Xcodeproj';\nimport { getInfoPlistPathFromPbxproj } from '../ios/utils/getInfoPlistPath';\nimport { fileExists } from '../utils/modules';\nimport { sortObject } from '../utils/sortObject';\nimport { addWarningIOS } from '../utils/warnings';\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\n\nconst { readFile, writeFile } = promises;\n\ntype IosModName = keyof Required<ModConfig>['ios'];\n\nfunction getEntitlementsPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {};\n}\n\nfunction getInfoPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {\n CFBundleDevelopmentRegion: '$(DEVELOPMENT_LANGUAGE)',\n CFBundleExecutable: '$(EXECUTABLE_NAME)',\n CFBundleIdentifier: '$(PRODUCT_BUNDLE_IDENTIFIER)',\n CFBundleName: '$(PRODUCT_NAME)',\n CFBundlePackageType: '$(PRODUCT_BUNDLE_PACKAGE_TYPE)',\n CFBundleInfoDictionaryVersion: '6.0',\n CFBundleSignature: '????',\n LSRequiresIPhoneOS: true,\n NSAppTransportSecurity: {\n NSAllowsArbitraryLoads: true,\n NSExceptionDomains: {\n localhost: {\n NSExceptionAllowsInsecureHTTPLoads: true,\n },\n },\n },\n UILaunchStoryboardName: 'SplashScreen',\n UIRequiredDeviceCapabilities: ['armv7'],\n UIViewControllerBasedStatusBarAppearance: false,\n UIStatusBarStyle: 'UIStatusBarStyleDefault',\n };\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return {};\n },\n async write() {},\n }),\n // Append a rule to supply AppDelegate data to mods on `mods.ios.appDelegate`\n appDelegate: provider<Paths.AppDelegateProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getAppDelegateFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath: string, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n // Append a rule to supply Expo.plist data to mods on `mods.ios.expoPlist`\n expoPlist: provider<JSONObject>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot, projectName } }) {\n const supportingDirectory = path.join(platformProjectRoot, projectName!, 'Supporting');\n return path.resolve(supportingDirectory, 'Expo.plist');\n },\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return plist.parse(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (introspect) {\n return {};\n }\n throw error;\n }\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await writeFile(filePath, plist.build(sortObject(modResults)));\n },\n }),\n // Append a rule to supply .xcodeproj data to mods on `mods.ios.xcodeproj`\n xcodeproj: provider<XcodeProject>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getPBXProjectPath(projectRoot);\n },\n async read(filePath) {\n const project = xcode.project(filePath);\n project.parseSync();\n return project;\n },\n async write(filePath, { modResults }) {\n await writeFile(filePath, modResults.writeSync());\n },\n }),\n // Append a rule to supply Info.plist data to mods on `mods.ios.infoPlist`\n infoPlist: provider<InfoPlist, ForwardedBaseModOptions>({\n isIntrospective: true,\n async getFilePath(config) {\n let project: xcode.XcodeProject | null = null;\n try {\n project = getPbxproj(config.modRequest.projectRoot);\n } catch {\n // noop\n }\n\n // Only check / warn if a project actually exists, this'll provide\n // more accurate warning messages for users in managed projects.\n if (project) {\n const infoPlistBuildProperty = getInfoPlistPathFromPbxproj(project);\n\n if (infoPlistBuildProperty) {\n //: [root]/myapp/ios/MyApp/Info.plist\n const infoPlistPath = path.join(\n //: myapp/ios\n config.modRequest.platformProjectRoot,\n //: MyApp/Info.plist\n infoPlistBuildProperty\n );\n if (fileExists(infoPlistPath)) {\n return infoPlistPath;\n }\n addWarningIOS(\n 'mods.ios.infoPlist',\n `Info.plist file linked to Xcode project does not exist: ${infoPlistPath}`\n );\n } else {\n addWarningIOS('mods.ios.infoPlist', 'Failed to find Info.plist linked to Xcode project.');\n }\n }\n try {\n // Fallback on glob...\n return await Paths.getInfoPlistPath(config.modRequest.projectRoot);\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n async read(filePath, config) {\n // Apply all of the Info.plist values to the expo.ios.infoPlist object\n // TODO: Remove this in favor of just overwriting the Info.plist with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.infoPlist) config.ios.infoPlist = {};\n\n let modResults: InfoPlist;\n try {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Info.plist is empty');\n modResults = plist.parse(contents) as InfoPlist;\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the infoPlist object from the Expo config.\n modResults = getInfoPlistTemplate();\n }\n\n config.ios.infoPlist = {\n ...(modResults || {}),\n ...config.ios.infoPlist,\n };\n\n return config.ios.infoPlist!;\n },\n async write(filePath, config) {\n // Update the contents of the static infoPlist object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n // Append a rule to supply .entitlements data to mods on `mods.ios.entitlements`\n entitlements: provider<JSONObject, ForwardedBaseModOptions>({\n isIntrospective: true,\n\n async getFilePath(config) {\n try {\n // Fallback on glob...\n return await Entitlements.getEntitlementsPath(config.modRequest.projectRoot);\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n\n async read(filePath, config) {\n let modResults: JSONObject;\n try {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Entitlements plist is empty');\n modResults = plist.parse(contents);\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the template file.\n modResults = getEntitlementsPlistTemplate();\n }\n\n // Apply all of the .entitlements values to the expo.ios.entitlements object\n // TODO: Remove this in favor of just overwriting the .entitlements with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.entitlements) config.ios.entitlements = {};\n\n config.ios.entitlements = {\n ...(modResults || {}),\n ...config.ios.entitlements,\n };\n\n return config.ios.entitlements!;\n },\n\n async write(filePath, config) {\n // Update the contents of the static entitlements object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n\n // Append a rule to supply Podfile.properties.json data to mods on `mods.ios.podfileProperties`\n podfileProperties: provider<Record<string, JSONValue>>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.resolve(platformProjectRoot, 'Podfile.properties.json');\n },\n async read(filePath) {\n let results: Record<string, JSONValue> = {};\n try {\n results = await JsonFile.readAsync(filePath);\n } catch (e) {}\n return results;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await JsonFile.writeAsync(filePath, modResults);\n },\n }),\n};\n\ntype IosDefaultProviders = typeof defaultProviders;\n\nexport function withIosBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<IosDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<IosModName>(config, {\n ...props,\n platform: 'ios',\n providers: providers ?? getIosModFileProviders(),\n });\n}\n\nexport function getIosModFileProviders() {\n return defaultProviders;\n}\n"],"file":"withIosBaseMods.js"}
@@ -1,5 +1,6 @@
1
1
  import { Android, ExpoConfig, IOS } from '@expo/config-types';
2
2
  export declare type ExpoConfigUpdates = Pick<ExpoConfig, 'sdkVersion' | 'owner' | 'runtimeVersion' | 'updates' | 'slug'>;
3
+ export declare function getExpoUpdatesPackageVersion(projectRoot: string): string | null;
3
4
  export declare function getUpdateUrl(config: Pick<ExpoConfigUpdates, 'owner' | 'slug' | 'updates'>, username: string | null): string | null;
4
5
  export declare function getNativeVersion(config: Pick<ExpoConfig, 'version'> & {
5
6
  android?: Pick<Android, 'versionCode'>;
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.getExpoUpdatesPackageVersion = getExpoUpdatesPackageVersion;
6
7
  exports.getNativeVersion = getNativeVersion;
7
8
  exports.getRuntimeVersion = getRuntimeVersion;
8
9
  exports.getRuntimeVersionNullable = getRuntimeVersionNullable;
@@ -19,6 +20,16 @@ function _sdkRuntimeVersions() {
19
20
  return data;
20
21
  }
21
22
 
23
+ function _fs() {
24
+ const data = _interopRequireDefault(require("fs"));
25
+
26
+ _fs = function () {
27
+ return data;
28
+ };
29
+
30
+ return data;
31
+ }
32
+
22
33
  function _getenv() {
23
34
  const data = require("getenv");
24
35
 
@@ -29,6 +40,16 @@ function _getenv() {
29
40
  return data;
30
41
  }
31
42
 
43
+ function _resolveFrom() {
44
+ const data = _interopRequireDefault(require("resolve-from"));
45
+
46
+ _resolveFrom = function () {
47
+ return data;
48
+ };
49
+
50
+ return data;
51
+ }
52
+
32
53
  function _() {
33
54
  const data = require("..");
34
55
 
@@ -39,6 +60,19 @@ function _() {
39
60
  return data;
40
61
  }
41
62
 
63
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
64
+
65
+ function getExpoUpdatesPackageVersion(projectRoot) {
66
+ const expoUpdatesPackageJsonPath = _resolveFrom().default.silent(projectRoot, 'expo-updates/package.json');
67
+
68
+ if (!expoUpdatesPackageJsonPath || !_fs().default.existsSync(expoUpdatesPackageJsonPath)) {
69
+ return null;
70
+ }
71
+
72
+ const packageJson = JSON.parse(_fs().default.readFileSync(expoUpdatesPackageJsonPath, 'utf8'));
73
+ return packageJson.version;
74
+ }
75
+
42
76
  function getUpdateUrl(config, username) {
43
77
  var _config$updates;
44
78
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/Updates.ts"],"names":["getUpdateUrl","config","username","updates","url","user","owner","slug","getNativeVersion","platform","version","IOSConfig","Version","getVersion","buildNumber","getBuildNumber","versionCode","AndroidConfig","getVersionCode","Error","withRuntimeVersion","ios","runtimeVersion","getRuntimeVersion","android","getRuntimeVersionNullable","e","console","log","policy","sdkVersion","JSON","stringify"],"mappings":"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","sourcesContent":["import { Android, ExpoConfig, IOS } from '@expo/config-types';\nimport { getRuntimeVersionForSDKVersion } from '@expo/sdk-runtime-versions';\nimport { boolish } from 'getenv';\n\nimport { AndroidConfig, IOSConfig } from '..';\n\nexport type ExpoConfigUpdates = Pick<\n ExpoConfig,\n 'sdkVersion' | 'owner' | 'runtimeVersion' | 'updates' | 'slug'\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"],"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"],"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 resolveFrom from 'resolve-from';\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"],"file":"Updates.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/config-plugins",
3
- "version": "4.0.8",
3
+ "version": "4.0.12",
4
4
  "description": "A library for Expo config plugins",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -35,6 +35,7 @@
35
35
  "@expo/config-types": "^43.0.1",
36
36
  "@expo/json-file": "8.2.34",
37
37
  "@expo/plist": "0.0.16",
38
+ "@expo/sdk-runtime-versions": "^1.0.0",
38
39
  "@react-native/normalize-color": "^2.0.0",
39
40
  "chalk": "^4.1.2",
40
41
  "debug": "^4.3.1",