@expo/config-plugins 4.0.9 → 4.0.13

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 (44) 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 +7 -1
  5. package/build/android/Manifest.js.map +1 -1
  6. package/build/android/Permissions.d.ts +2 -0
  7. package/build/android/Permissions.js +88 -3
  8. package/build/android/Permissions.js.map +1 -1
  9. package/build/android/Updates.d.ts +2 -2
  10. package/build/android/Updates.js +20 -4
  11. package/build/android/Updates.js.map +1 -1
  12. package/build/android/Version.d.ts +9 -0
  13. package/build/android/Version.js +37 -1
  14. package/build/android/Version.js.map +1 -1
  15. package/build/index.d.ts +1 -1
  16. package/build/index.js +7 -0
  17. package/build/index.js.map +1 -1
  18. package/build/ios/BundleIdentifier.js +11 -1
  19. package/build/ios/BundleIdentifier.js.map +1 -1
  20. package/build/ios/JsEngine.d.ts +2 -1
  21. package/build/ios/JsEngine.js.map +1 -1
  22. package/build/ios/Maps.js +22 -24
  23. package/build/ios/Maps.js.map +1 -1
  24. package/build/ios/ProvisioningProfile.js +11 -2
  25. package/build/ios/ProvisioningProfile.js.map +1 -1
  26. package/build/ios/Target.js +29 -10
  27. package/build/ios/Target.js.map +1 -1
  28. package/build/ios/Updates.d.ts +2 -2
  29. package/build/ios/Updates.js +20 -4
  30. package/build/ios/Updates.js.map +1 -1
  31. package/build/ios/utils/string.d.ts +1 -0
  32. package/build/ios/utils/string.js +11 -0
  33. package/build/ios/utils/string.js.map +1 -0
  34. package/build/plugins/ios-plugins.d.ts +2 -2
  35. package/build/plugins/ios-plugins.js.map +1 -1
  36. package/build/plugins/withIosBaseMods.d.ts +3 -3
  37. package/build/plugins/withIosBaseMods.js.map +1 -1
  38. package/build/utils/Updates.d.ts +1 -0
  39. package/build/utils/Updates.js +34 -0
  40. package/build/utils/Updates.js.map +1 -1
  41. package/package.json +2 -1
  42. package/build/utils/resolvePackageRootFolder.d.ts +0 -1
  43. package/build/utils/resolvePackageRootFolder.js +0 -57
  44. package/build/utils/resolvePackageRootFolder.js.map +0 -1
@@ -32,6 +32,16 @@ function _Xcodeproj() {
32
32
  return data;
33
33
  }
34
34
 
35
+ function _string() {
36
+ const data = require("./utils/string");
37
+
38
+ _string = function () {
39
+ return data;
40
+ };
41
+
42
+ return data;
43
+ }
44
+
35
45
  let TargetType;
36
46
  exports.TargetType = TargetType;
37
47
 
@@ -59,7 +69,20 @@ async function findApplicationTargetWithDependenciesAsync(projectRoot, scheme) {
59
69
  const applicationTargetName = await (0, _BuildScheme().getApplicationTargetNameForSchemeAsync)(projectRoot, scheme);
60
70
  const project = (0, _Xcodeproj().getPbxproj)(projectRoot);
61
71
  const [, applicationTarget] = findNativeTargetByName(project, applicationTargetName);
62
- const dependencies = applicationTarget.dependencies.map(({
72
+ const dependencies = getTargetDependencies(project, applicationTarget);
73
+ return {
74
+ name: (0, _string().trimQuotes)(applicationTarget.name),
75
+ type: TargetType.APPLICATION,
76
+ dependencies
77
+ };
78
+ }
79
+
80
+ function getTargetDependencies(project, parentTarget) {
81
+ if (!parentTarget.dependencies || parentTarget.dependencies.length === 0) {
82
+ return undefined;
83
+ }
84
+
85
+ return parentTarget.dependencies.map(({
63
86
  value
64
87
  }) => {
65
88
  const {
@@ -68,19 +91,15 @@ async function findApplicationTargetWithDependenciesAsync(projectRoot, scheme) {
68
91
  const [, target] = findNativeTargetById(project, targetId);
69
92
  const type = isTargetOfType(target, TargetType.EXTENSION) ? TargetType.EXTENSION : TargetType.OTHER;
70
93
  return {
71
- name: target.name,
72
- type
94
+ name: (0, _string().trimQuotes)(target.name),
95
+ type,
96
+ dependencies: getTargetDependencies(project, target)
73
97
  };
74
98
  });
75
- return {
76
- name: applicationTarget.name,
77
- type: TargetType.APPLICATION,
78
- dependencies
79
- };
80
99
  }
81
100
 
82
101
  function isTargetOfType(target, targetType) {
83
- return target.productType === targetType || target.productType === `"${targetType}"`;
102
+ return (0, _string().trimQuotes)(target.productType) === targetType;
84
103
  }
85
104
 
86
105
  function getNativeTargets(project) {
@@ -112,7 +131,7 @@ function findFirstNativeTarget(project) {
112
131
 
113
132
  function findNativeTargetByName(project, targetName) {
114
133
  const nativeTargets = getNativeTargets(project);
115
- const nativeTargetEntry = nativeTargets.find(([, i]) => i.name === targetName || i.name === `"${targetName}"`);
134
+ const nativeTargetEntry = nativeTargets.find(([, i]) => (0, _string().trimQuotes)(i.name) === targetName);
116
135
 
117
136
  if (!nativeTargetEntry) {
118
137
  throw new Error(`Could not find target '${targetName}' in project.pbxproj`);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ios/Target.ts"],"names":["TargetType","getXCBuildConfigurationFromPbxproj","project","targetName","buildConfiguration","nativeTarget","findNativeTargetByName","findFirstNativeTarget","xcBuildConfiguration","configurationListId","buildConfigurationList","findApplicationTargetWithDependenciesAsync","projectRoot","scheme","applicationTargetName","applicationTarget","dependencies","map","value","target","targetId","getPBXGroupByKeyAndType","findNativeTargetById","type","isTargetOfType","EXTENSION","OTHER","name","APPLICATION","targetType","productType","getNativeTargets","section","pbxNativeTargetSection","Object","entries","filter","isNotComment","findSignableTargets","targets","applicationTargets","WATCH","STICKER_PACK_EXTENSION","length","Error","nativeTargets","nativeTargetEntry","find","i","key"],"mappings":"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","sourcesContent":["import { PBXNativeTarget, PBXTargetDependency, XCBuildConfiguration, XcodeProject } from 'xcode';\n\nimport { getApplicationTargetNameForSchemeAsync } from './BuildScheme';\nimport {\n getBuildConfigurationForListIdAndName,\n getPbxproj,\n isNotComment,\n NativeTargetSectionEntry,\n} from './utils/Xcodeproj';\n\nexport enum TargetType {\n APPLICATION = 'com.apple.product-type.application',\n EXTENSION = 'com.apple.product-type.app-extension',\n WATCH = 'com.apple.product-type.application.watchapp',\n STICKER_PACK_EXTENSION = 'com.apple.product-type.app-extension.messages-sticker-pack',\n OTHER = 'other',\n}\n\nexport interface Target {\n name: string;\n type: TargetType;\n dependencies?: Target[];\n}\n\nexport function getXCBuildConfigurationFromPbxproj(\n project: XcodeProject,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): XCBuildConfiguration | null {\n const [, nativeTarget] = targetName\n ? findNativeTargetByName(project, targetName)\n : findFirstNativeTarget(project);\n const [, xcBuildConfiguration] = getBuildConfigurationForListIdAndName(project, {\n configurationListId: nativeTarget.buildConfigurationList,\n buildConfiguration,\n });\n return xcBuildConfiguration ?? null;\n}\n\nexport async function findApplicationTargetWithDependenciesAsync(\n projectRoot: string,\n scheme: string\n): Promise<Target> {\n const applicationTargetName = await getApplicationTargetNameForSchemeAsync(projectRoot, scheme);\n const project = getPbxproj(projectRoot);\n const [, applicationTarget] = findNativeTargetByName(project, applicationTargetName);\n\n const dependencies: Target[] = applicationTarget.dependencies.map(({ value }) => {\n const { target: targetId } = project.getPBXGroupByKeyAndType(\n value,\n 'PBXTargetDependency'\n ) as PBXTargetDependency;\n\n const [, target] = findNativeTargetById(project, targetId);\n\n const type = isTargetOfType(target, TargetType.EXTENSION)\n ? TargetType.EXTENSION\n : TargetType.OTHER;\n return {\n name: target.name,\n type,\n };\n });\n\n return {\n name: applicationTarget.name,\n type: TargetType.APPLICATION,\n dependencies,\n };\n}\n\nexport function isTargetOfType(target: PBXNativeTarget, targetType: TargetType): boolean {\n return target.productType === targetType || target.productType === `\"${targetType}\"`;\n}\n\nexport function getNativeTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const section = project.pbxNativeTargetSection();\n return Object.entries(section).filter(isNotComment);\n}\n\nexport function findSignableTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const targets = getNativeTargets(project);\n const applicationTargets = targets.filter(\n ([, target]) =>\n isTargetOfType(target, TargetType.APPLICATION) ||\n isTargetOfType(target, TargetType.EXTENSION) ||\n isTargetOfType(target, TargetType.WATCH) ||\n isTargetOfType(target, TargetType.STICKER_PACK_EXTENSION)\n );\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any signable targets in project.pbxproj`);\n }\n return applicationTargets;\n}\n\nexport function findFirstNativeTarget(project: XcodeProject): NativeTargetSectionEntry {\n const targets = getNativeTargets(project);\n const applicationTargets = targets.filter(([, target]) =>\n isTargetOfType(target, TargetType.APPLICATION)\n );\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any application target in project.pbxproj`);\n }\n return applicationTargets[0];\n}\n\nexport function findNativeTargetByName(\n project: XcodeProject,\n targetName: string\n): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(\n ([, i]) => i.name === targetName || i.name === `\"${targetName}\"`\n );\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target '${targetName}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n\nfunction findNativeTargetById(project: XcodeProject, targetId: string): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([key]) => key === targetId);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target with id '${targetId}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n"],"file":"Target.js"}
1
+ {"version":3,"sources":["../../src/ios/Target.ts"],"names":["TargetType","getXCBuildConfigurationFromPbxproj","project","targetName","buildConfiguration","nativeTarget","findNativeTargetByName","findFirstNativeTarget","xcBuildConfiguration","configurationListId","buildConfigurationList","findApplicationTargetWithDependenciesAsync","projectRoot","scheme","applicationTargetName","applicationTarget","dependencies","getTargetDependencies","name","type","APPLICATION","parentTarget","length","undefined","map","value","target","targetId","getPBXGroupByKeyAndType","findNativeTargetById","isTargetOfType","EXTENSION","OTHER","targetType","productType","getNativeTargets","section","pbxNativeTargetSection","Object","entries","filter","isNotComment","findSignableTargets","targets","applicationTargets","WATCH","STICKER_PACK_EXTENSION","Error","nativeTargets","nativeTargetEntry","find","i","key"],"mappings":"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","sourcesContent":["import { PBXNativeTarget, PBXTargetDependency, XCBuildConfiguration, XcodeProject } from 'xcode';\n\nimport { getApplicationTargetNameForSchemeAsync } from './BuildScheme';\nimport {\n getBuildConfigurationForListIdAndName,\n getPbxproj,\n isNotComment,\n NativeTargetSectionEntry,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport enum TargetType {\n APPLICATION = 'com.apple.product-type.application',\n EXTENSION = 'com.apple.product-type.app-extension',\n WATCH = 'com.apple.product-type.application.watchapp',\n STICKER_PACK_EXTENSION = 'com.apple.product-type.app-extension.messages-sticker-pack',\n OTHER = 'other',\n}\n\nexport interface Target {\n name: string;\n type: TargetType;\n dependencies?: Target[];\n}\n\nexport function getXCBuildConfigurationFromPbxproj(\n project: XcodeProject,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): XCBuildConfiguration | null {\n const [, nativeTarget] = targetName\n ? findNativeTargetByName(project, targetName)\n : findFirstNativeTarget(project);\n const [, xcBuildConfiguration] = getBuildConfigurationForListIdAndName(project, {\n configurationListId: nativeTarget.buildConfigurationList,\n buildConfiguration,\n });\n return xcBuildConfiguration ?? null;\n}\n\nexport async function findApplicationTargetWithDependenciesAsync(\n projectRoot: string,\n scheme: string\n): Promise<Target> {\n const applicationTargetName = await getApplicationTargetNameForSchemeAsync(projectRoot, scheme);\n const project = getPbxproj(projectRoot);\n const [, applicationTarget] = findNativeTargetByName(project, applicationTargetName);\n const dependencies = getTargetDependencies(project, applicationTarget);\n return {\n name: trimQuotes(applicationTarget.name),\n type: TargetType.APPLICATION,\n dependencies,\n };\n}\n\nfunction getTargetDependencies(\n project: XcodeProject,\n parentTarget: PBXNativeTarget\n): Target[] | undefined {\n if (!parentTarget.dependencies || parentTarget.dependencies.length === 0) {\n return undefined;\n }\n return parentTarget.dependencies.map(({ value }) => {\n const { target: targetId } = project.getPBXGroupByKeyAndType(\n value,\n 'PBXTargetDependency'\n ) as PBXTargetDependency;\n\n const [, target] = findNativeTargetById(project, targetId);\n\n const type = isTargetOfType(target, TargetType.EXTENSION)\n ? TargetType.EXTENSION\n : TargetType.OTHER;\n return {\n name: trimQuotes(target.name),\n type,\n dependencies: getTargetDependencies(project, target),\n };\n });\n}\n\nexport function isTargetOfType(target: PBXNativeTarget, targetType: TargetType): boolean {\n return trimQuotes(target.productType) === targetType;\n}\n\nexport function getNativeTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const section = project.pbxNativeTargetSection();\n return Object.entries(section).filter(isNotComment);\n}\n\nexport function findSignableTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const targets = getNativeTargets(project);\n const applicationTargets = targets.filter(\n ([, target]) =>\n isTargetOfType(target, TargetType.APPLICATION) ||\n isTargetOfType(target, TargetType.EXTENSION) ||\n isTargetOfType(target, TargetType.WATCH) ||\n isTargetOfType(target, TargetType.STICKER_PACK_EXTENSION)\n );\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any signable targets in project.pbxproj`);\n }\n return applicationTargets;\n}\n\nexport function findFirstNativeTarget(project: XcodeProject): NativeTargetSectionEntry {\n const targets = getNativeTargets(project);\n const applicationTargets = targets.filter(([, target]) =>\n isTargetOfType(target, TargetType.APPLICATION)\n );\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any application target in project.pbxproj`);\n }\n return applicationTargets[0];\n}\n\nexport function findNativeTargetByName(\n project: XcodeProject,\n targetName: string\n): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([, i]) => trimQuotes(i.name) === targetName);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target '${targetName}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n\nfunction findNativeTargetById(project: XcodeProject, targetId: string): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([key]) => key === targetId);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target with id '${targetId}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n"],"file":"Target.js"}
@@ -15,11 +15,11 @@ export declare enum Config {
15
15
  export declare function getSDKVersion(config: Pick<ExpoConfigUpdates, 'sdkVersion'>): string | null;
16
16
  export declare function getUpdatesEnabled(config: Pick<ExpoConfigUpdates, 'updates'>): boolean;
17
17
  export declare function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>): number;
18
- export declare function getUpdatesCheckOnLaunch(config: Pick<ExpoConfigUpdates, 'updates'>): 'NEVER' | 'ALWAYS';
18
+ export declare function getUpdatesCheckOnLaunch(config: Pick<ExpoConfigUpdates, 'updates'>, expoUpdatesPackageVersion?: string | null): 'NEVER' | 'ERROR_RECOVERY_ONLY' | 'ALWAYS';
19
19
  export declare const withUpdates: ConfigPlugin<{
20
20
  expoUsername: string | null;
21
21
  }>;
22
- export declare function setUpdatesConfig(config: ExpoConfigUpdates, expoPlist: ExpoPlist, username: string | null): ExpoPlist;
22
+ export declare function setUpdatesConfig(config: ExpoConfigUpdates, expoPlist: ExpoPlist, username: string | null, expoUpdatesPackageVersion?: string | null): ExpoPlist;
23
23
  export declare function setVersionsConfig(config: ExpoConfigUpdates, expoPlist: ExpoPlist): ExpoPlist;
24
24
  interface ShellScriptBuildPhase {
25
25
  isa: 'PBXShellScriptBuildPhase';
@@ -38,6 +38,16 @@ function _resolveFrom() {
38
38
  return data;
39
39
  }
40
40
 
41
+ function _semver() {
42
+ const data = _interopRequireDefault(require("semver"));
43
+
44
+ _semver = function () {
45
+ return data;
46
+ };
47
+
48
+ return data;
49
+ }
50
+
41
51
  function _iosPlugins() {
42
52
  const data = require("../plugins/ios-plugins");
43
53
 
@@ -95,10 +105,15 @@ function getUpdatesTimeout(config) {
95
105
  return (_config$updates$fallb = (_config$updates2 = config.updates) === null || _config$updates2 === void 0 ? void 0 : _config$updates2.fallbackToCacheTimeout) !== null && _config$updates$fallb !== void 0 ? _config$updates$fallb : 0;
96
106
  }
97
107
 
98
- function getUpdatesCheckOnLaunch(config) {
108
+ function getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion) {
99
109
  var _config$updates3, _config$updates4;
100
110
 
101
111
  if (((_config$updates3 = config.updates) === null || _config$updates3 === void 0 ? void 0 : _config$updates3.checkAutomatically) === 'ON_ERROR_RECOVERY') {
112
+ // native 'ERROR_RECOVERY_ONLY' option was only introduced in 0.11.x
113
+ if (expoUpdatesPackageVersion && _semver().default.gte(expoUpdatesPackageVersion, '0.11.0')) {
114
+ return 'ERROR_RECOVERY_ONLY';
115
+ }
116
+
102
117
  return 'NEVER';
103
118
  } else if (((_config$updates4 = config.updates) === null || _config$updates4 === void 0 ? void 0 : _config$updates4.checkAutomatically) === 'ON_LOAD') {
104
119
  return 'ALWAYS';
@@ -111,17 +126,18 @@ const withUpdates = (config, {
111
126
  expoUsername
112
127
  }) => {
113
128
  return (0, _iosPlugins().withExpoPlist)(config, config => {
114
- config.modResults = setUpdatesConfig(config, config.modResults, expoUsername);
129
+ const expoUpdatesPackageVersion = (0, _Updates().getExpoUpdatesPackageVersion)(config.modRequest.projectRoot);
130
+ config.modResults = setUpdatesConfig(config, config.modResults, expoUsername, expoUpdatesPackageVersion);
115
131
  return config;
116
132
  });
117
133
  };
118
134
 
119
135
  exports.withUpdates = withUpdates;
120
136
 
121
- function setUpdatesConfig(config, expoPlist, username) {
137
+ function setUpdatesConfig(config, expoPlist, username, expoUpdatesPackageVersion) {
122
138
  const newExpoPlist = { ...expoPlist,
123
139
  [Config.ENABLED]: getUpdatesEnabled(config),
124
- [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config),
140
+ [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion),
125
141
  [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config)
126
142
  };
127
143
  const updateUrl = (0, _Updates().getUpdateUrl)(config, username);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ios/Updates.ts"],"names":["CREATE_MANIFEST_IOS_PATH","Config","getSDKVersion","config","sdkVersion","getUpdatesEnabled","updates","enabled","getUpdatesTimeout","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","checkAutomatically","withUpdates","expoUsername","modResults","setUpdatesConfig","expoPlist","username","newExpoPlist","ENABLED","CHECK_ON_LAUNCH","LAUNCH_WAIT_MS","updateUrl","UPDATE_URL","setVersionsConfig","runtimeVersion","SDK_VERSION","RUNTIME_VERSION","formatConfigurationScriptPath","projectRoot","buildScriptPath","resolveFrom","silent","Error","relativePath","path","relative","join","process","platform","replace","getBundleReactNativePhase","project","shellScriptBuildPhase","hash","objects","PBXShellScriptBuildPhase","bundleReactNative","Object","values","find","buildPhase","name","ensureBundleReactNativePhaseContainsConfigurationScript","buildPhaseShellScriptPath","isShellScriptBuildPhaseConfigured","shellScript","includes","RegExp","isPlistConfigurationSet","Boolean","EXUpdatesURL","EXUpdatesSDKVersion","EXUpdatesRuntimeVersion","isPlistConfigurationSynced","EXUpdatesEnabled","EXUpdatesLaunchWaitMs","EXUpdatesCheckOnLaunch","isPlistVersionConfigurationSynced","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport resolveFrom from 'resolve-from';\nimport xcode from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withExpoPlist } from '../plugins/ios-plugins';\nimport { ExpoConfigUpdates, getRuntimeVersionNullable, getUpdateUrl } from '../utils/Updates';\nimport { ExpoPlist } from './IosConfig.types';\n\nconst CREATE_MANIFEST_IOS_PATH = 'expo-updates/scripts/create-manifest-ios.sh';\n\nexport enum Config {\n ENABLED = 'EXUpdatesEnabled',\n CHECK_ON_LAUNCH = 'EXUpdatesCheckOnLaunch',\n LAUNCH_WAIT_MS = 'EXUpdatesLaunchWaitMs',\n RUNTIME_VERSION = 'EXUpdatesRuntimeVersion',\n SDK_VERSION = 'EXUpdatesSDKVersion',\n UPDATE_URL = 'EXUpdatesURL',\n RELEASE_CHANNEL = 'EXUpdatesReleaseChannel',\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'EXUpdatesRequestHeaders',\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'>) {\n return config.updates?.fallbackToCacheTimeout ?? 0;\n}\n\nexport function getUpdatesCheckOnLaunch(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): 'NEVER' | 'ALWAYS' {\n if (config.updates?.checkAutomatically === 'ON_ERROR_RECOVERY') {\n return 'NEVER';\n } else if (config.updates?.checkAutomatically === 'ON_LOAD') {\n return 'ALWAYS';\n }\n return 'ALWAYS';\n}\n\nexport const withUpdates: ConfigPlugin<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withExpoPlist(config, config => {\n config.modResults = setUpdatesConfig(config, config.modResults, expoUsername);\n return config;\n });\n};\n\nexport function setUpdatesConfig(\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n username: string | null\n): ExpoPlist {\n const newExpoPlist = {\n ...expoPlist,\n [Config.ENABLED]: getUpdatesEnabled(config),\n [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config),\n [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n };\n\n const updateUrl = getUpdateUrl(config, username);\n if (updateUrl) {\n newExpoPlist[Config.UPDATE_URL] = updateUrl;\n } else {\n delete newExpoPlist[Config.UPDATE_URL];\n }\n\n return setVersionsConfig(config, newExpoPlist);\n}\n\nexport function setVersionsConfig(config: ExpoConfigUpdates, expoPlist: ExpoPlist): ExpoPlist {\n const newExpoPlist = { ...expoPlist };\n\n const runtimeVersion = getRuntimeVersionNullable(config, 'ios');\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n delete newExpoPlist[Config.SDK_VERSION];\n newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;\n } else if (sdkVersion) {\n /**\n * runtime version maybe null in projects using classic updates. In that\n * case we use SDK version\n */\n delete newExpoPlist[Config.RUNTIME_VERSION];\n newExpoPlist[Config.SDK_VERSION] = sdkVersion;\n } else {\n delete newExpoPlist[Config.SDK_VERSION];\n delete newExpoPlist[Config.RUNTIME_VERSION];\n }\n\n return newExpoPlist;\n}\n\nfunction formatConfigurationScriptPath(projectRoot: string): string {\n const buildScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_IOS_PATH);\n\n if (!buildScriptPath) {\n throw new Error(\n \"Could not find the build script for iOS. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.\"\n );\n }\n\n const relativePath = path.relative(path.join(projectRoot, 'ios'), buildScriptPath);\n return process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n}\n\ninterface ShellScriptBuildPhase {\n isa: 'PBXShellScriptBuildPhase';\n name: string;\n shellScript: string;\n [key: string]: any;\n}\n\nexport function getBundleReactNativePhase(project: xcode.XcodeProject): ShellScriptBuildPhase {\n const shellScriptBuildPhase = project.hash.project.objects.PBXShellScriptBuildPhase as Record<\n string,\n ShellScriptBuildPhase\n >;\n const bundleReactNative = Object.values(shellScriptBuildPhase).find(\n buildPhase => buildPhase.name === '\"Bundle React Native code and images\"'\n );\n\n if (!bundleReactNative) {\n throw new Error(`Couldn't find a build phase \"Bundle React Native code and images\"`);\n }\n\n return bundleReactNative;\n}\n\nexport function ensureBundleReactNativePhaseContainsConfigurationScript(\n projectRoot: string,\n project: xcode.XcodeProject\n): xcode.XcodeProject {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n\n if (!isShellScriptBuildPhaseConfigured(projectRoot, project)) {\n // check if there's already another path to create-manifest-ios.sh\n // this might be the case for monorepos\n if (bundleReactNative.shellScript.includes(CREATE_MANIFEST_IOS_PATH)) {\n bundleReactNative.shellScript = bundleReactNative.shellScript.replace(\n new RegExp(`(\\\\\\\\n)(\\\\.\\\\.)+/node_modules/${CREATE_MANIFEST_IOS_PATH}`),\n ''\n );\n }\n bundleReactNative.shellScript = `${bundleReactNative.shellScript.replace(\n /\"$/,\n ''\n )}${buildPhaseShellScriptPath}\\\\n\"`;\n }\n return project;\n}\n\nexport function isShellScriptBuildPhaseConfigured(\n projectRoot: string,\n project: xcode.XcodeProject\n): boolean {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n return bundleReactNative.shellScript.includes(buildPhaseShellScriptPath);\n}\n\nexport function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean {\n return Boolean(\n expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion)\n );\n}\n\nexport function isPlistConfigurationSynced(\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n username: string | null\n): boolean {\n return (\n getUpdateUrl(config, username) === expoPlist.EXUpdatesURL &&\n getUpdatesEnabled(config) === expoPlist.EXUpdatesEnabled &&\n getUpdatesTimeout(config) === expoPlist.EXUpdatesLaunchWaitMs &&\n getUpdatesCheckOnLaunch(config) === expoPlist.EXUpdatesCheckOnLaunch &&\n isPlistVersionConfigurationSynced(config, expoPlist)\n );\n}\n\nexport function isPlistVersionConfigurationSynced(\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n expoPlist: ExpoPlist\n): boolean {\n const expectedRuntimeVersion = getRuntimeVersionNullable(config, 'ios');\n const expectedSdkVersion = getSDKVersion(config);\n\n const currentRuntimeVersion = expoPlist.EXUpdatesRuntimeVersion ?? null;\n const currentSdkVersion = expoPlist.EXUpdatesSDKVersion ?? null;\n\n if (expectedRuntimeVersion !== null) {\n return currentRuntimeVersion === expectedRuntimeVersion && currentSdkVersion === null;\n } else if (expectedSdkVersion !== null) {\n return currentSdkVersion === expectedSdkVersion && currentRuntimeVersion === null;\n } else {\n return true;\n }\n}\n"],"file":"Updates.js"}
1
+ {"version":3,"sources":["../../src/ios/Updates.ts"],"names":["CREATE_MANIFEST_IOS_PATH","Config","getSDKVersion","config","sdkVersion","getUpdatesEnabled","updates","enabled","getUpdatesTimeout","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","expoUpdatesPackageVersion","checkAutomatically","semver","gte","withUpdates","expoUsername","modRequest","projectRoot","modResults","setUpdatesConfig","expoPlist","username","newExpoPlist","ENABLED","CHECK_ON_LAUNCH","LAUNCH_WAIT_MS","updateUrl","UPDATE_URL","setVersionsConfig","runtimeVersion","SDK_VERSION","RUNTIME_VERSION","formatConfigurationScriptPath","buildScriptPath","resolveFrom","silent","Error","relativePath","path","relative","join","process","platform","replace","getBundleReactNativePhase","project","shellScriptBuildPhase","hash","objects","PBXShellScriptBuildPhase","bundleReactNative","Object","values","find","buildPhase","name","ensureBundleReactNativePhaseContainsConfigurationScript","buildPhaseShellScriptPath","isShellScriptBuildPhaseConfigured","shellScript","includes","RegExp","isPlistConfigurationSet","Boolean","EXUpdatesURL","EXUpdatesSDKVersion","EXUpdatesRuntimeVersion","isPlistConfigurationSynced","EXUpdatesEnabled","EXUpdatesLaunchWaitMs","EXUpdatesCheckOnLaunch","isPlistVersionConfigurationSynced","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\nimport xcode from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withExpoPlist } from '../plugins/ios-plugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullable,\n getUpdateUrl,\n} from '../utils/Updates';\nimport { ExpoPlist } from './IosConfig.types';\n\nconst CREATE_MANIFEST_IOS_PATH = 'expo-updates/scripts/create-manifest-ios.sh';\n\nexport enum Config {\n ENABLED = 'EXUpdatesEnabled',\n CHECK_ON_LAUNCH = 'EXUpdatesCheckOnLaunch',\n LAUNCH_WAIT_MS = 'EXUpdatesLaunchWaitMs',\n RUNTIME_VERSION = 'EXUpdatesRuntimeVersion',\n SDK_VERSION = 'EXUpdatesSDKVersion',\n UPDATE_URL = 'EXUpdatesURL',\n RELEASE_CHANNEL = 'EXUpdatesReleaseChannel',\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'EXUpdatesRequestHeaders',\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'>) {\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 const withUpdates: ConfigPlugin<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withExpoPlist(config, config => {\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(config.modRequest.projectRoot);\n config.modResults = setUpdatesConfig(\n config,\n config.modResults,\n expoUsername,\n expoUpdatesPackageVersion\n );\n return config;\n });\n};\n\nexport function setUpdatesConfig(\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n username: string | null,\n expoUpdatesPackageVersion?: string | null\n): ExpoPlist {\n const newExpoPlist = {\n ...expoPlist,\n [Config.ENABLED]: getUpdatesEnabled(config),\n [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion),\n [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n };\n\n const updateUrl = getUpdateUrl(config, username);\n if (updateUrl) {\n newExpoPlist[Config.UPDATE_URL] = updateUrl;\n } else {\n delete newExpoPlist[Config.UPDATE_URL];\n }\n\n return setVersionsConfig(config, newExpoPlist);\n}\n\nexport function setVersionsConfig(config: ExpoConfigUpdates, expoPlist: ExpoPlist): ExpoPlist {\n const newExpoPlist = { ...expoPlist };\n\n const runtimeVersion = getRuntimeVersionNullable(config, 'ios');\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n delete newExpoPlist[Config.SDK_VERSION];\n newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;\n } else if (sdkVersion) {\n /**\n * runtime version maybe null in projects using classic updates. In that\n * case we use SDK version\n */\n delete newExpoPlist[Config.RUNTIME_VERSION];\n newExpoPlist[Config.SDK_VERSION] = sdkVersion;\n } else {\n delete newExpoPlist[Config.SDK_VERSION];\n delete newExpoPlist[Config.RUNTIME_VERSION];\n }\n\n return newExpoPlist;\n}\n\nfunction formatConfigurationScriptPath(projectRoot: string): string {\n const buildScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_IOS_PATH);\n\n if (!buildScriptPath) {\n throw new Error(\n \"Could not find the build script for iOS. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.\"\n );\n }\n\n const relativePath = path.relative(path.join(projectRoot, 'ios'), buildScriptPath);\n return process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n}\n\ninterface ShellScriptBuildPhase {\n isa: 'PBXShellScriptBuildPhase';\n name: string;\n shellScript: string;\n [key: string]: any;\n}\n\nexport function getBundleReactNativePhase(project: xcode.XcodeProject): ShellScriptBuildPhase {\n const shellScriptBuildPhase = project.hash.project.objects.PBXShellScriptBuildPhase as Record<\n string,\n ShellScriptBuildPhase\n >;\n const bundleReactNative = Object.values(shellScriptBuildPhase).find(\n buildPhase => buildPhase.name === '\"Bundle React Native code and images\"'\n );\n\n if (!bundleReactNative) {\n throw new Error(`Couldn't find a build phase \"Bundle React Native code and images\"`);\n }\n\n return bundleReactNative;\n}\n\nexport function ensureBundleReactNativePhaseContainsConfigurationScript(\n projectRoot: string,\n project: xcode.XcodeProject\n): xcode.XcodeProject {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n\n if (!isShellScriptBuildPhaseConfigured(projectRoot, project)) {\n // check if there's already another path to create-manifest-ios.sh\n // this might be the case for monorepos\n if (bundleReactNative.shellScript.includes(CREATE_MANIFEST_IOS_PATH)) {\n bundleReactNative.shellScript = bundleReactNative.shellScript.replace(\n new RegExp(`(\\\\\\\\n)(\\\\.\\\\.)+/node_modules/${CREATE_MANIFEST_IOS_PATH}`),\n ''\n );\n }\n bundleReactNative.shellScript = `${bundleReactNative.shellScript.replace(\n /\"$/,\n ''\n )}${buildPhaseShellScriptPath}\\\\n\"`;\n }\n return project;\n}\n\nexport function isShellScriptBuildPhaseConfigured(\n projectRoot: string,\n project: xcode.XcodeProject\n): boolean {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n return bundleReactNative.shellScript.includes(buildPhaseShellScriptPath);\n}\n\nexport function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean {\n return Boolean(\n expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion)\n );\n}\n\nexport function isPlistConfigurationSynced(\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n username: string | null\n): boolean {\n return (\n getUpdateUrl(config, username) === expoPlist.EXUpdatesURL &&\n getUpdatesEnabled(config) === expoPlist.EXUpdatesEnabled &&\n getUpdatesTimeout(config) === expoPlist.EXUpdatesLaunchWaitMs &&\n getUpdatesCheckOnLaunch(config) === expoPlist.EXUpdatesCheckOnLaunch &&\n isPlistVersionConfigurationSynced(config, expoPlist)\n );\n}\n\nexport function isPlistVersionConfigurationSynced(\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n expoPlist: ExpoPlist\n): boolean {\n const expectedRuntimeVersion = getRuntimeVersionNullable(config, 'ios');\n const expectedSdkVersion = getSDKVersion(config);\n\n const currentRuntimeVersion = expoPlist.EXUpdatesRuntimeVersion ?? null;\n const currentSdkVersion = expoPlist.EXUpdatesSDKVersion ?? null;\n\n if (expectedRuntimeVersion !== null) {\n return currentRuntimeVersion === expectedRuntimeVersion && currentSdkVersion === null;\n } else if (expectedSdkVersion !== null) {\n return currentSdkVersion === expectedSdkVersion && currentRuntimeVersion === null;\n } else {\n return true;\n }\n}\n"],"file":"Updates.js"}
@@ -0,0 +1 @@
1
+ export declare function trimQuotes(s: string): string;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.trimQuotes = trimQuotes;
7
+
8
+ function trimQuotes(s) {
9
+ return s && s[0] === '"' && s[s.length - 1] === '"' ? s.slice(1, -1) : s;
10
+ }
11
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ios/utils/string.ts"],"names":["trimQuotes","s","length","slice"],"mappings":";;;;;;;AAAO,SAASA,UAAT,CAAoBC,CAApB,EAAuC;AAC5C,SAAOA,CAAC,IAAIA,CAAC,CAAC,CAAD,CAAD,KAAS,GAAd,IAAqBA,CAAC,CAACA,CAAC,CAACC,MAAF,GAAW,CAAZ,CAAD,KAAoB,GAAzC,GAA+CD,CAAC,CAACE,KAAF,CAAQ,CAAR,EAAW,CAAC,CAAZ,CAA/C,GAAgEF,CAAvE;AACD","sourcesContent":["export function trimQuotes(s: string): string {\n return s && s[0] === '\"' && s[s.length - 1] === '\"' ? s.slice(1, -1) : s;\n}\n"],"file":"string.js"}
@@ -1,5 +1,5 @@
1
1
  import type { ExpoConfig } from '@expo/config-types';
2
- import type { JSONObject } from '@expo/json-file';
2
+ import type { JSONObject, JSONValue } from '@expo/json-file';
3
3
  import type { XcodeProject } from 'xcode';
4
4
  import type { ConfigPlugin, Mod } from '../Plugin.types';
5
5
  import type { ExpoPlist, InfoPlist } from '../ios/IosConfig.types';
@@ -61,5 +61,5 @@ export declare const withXcodeProject: ConfigPlugin<Mod<XcodeProject>>;
61
61
  * @param config
62
62
  * @param action
63
63
  */
64
- export declare const withPodfileProperties: ConfigPlugin<Mod<Record<string, string>>>;
64
+ export declare const withPodfileProperties: ConfigPlugin<Mod<Record<string, JSONValue>>>;
65
65
  export {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/ios-plugins.ts"],"names":["createInfoPlistPlugin","action","name","withUnknown","config","withInfoPlist","modResults","Object","defineProperty","value","createEntitlementsPlugin","withEntitlementsPlist","withAppDelegate","platform","mod","ios","infoPlist","entitlements","withExpoPlist","withXcodeProject","withPodfileProperties"],"mappings":"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","sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\nimport type { JSONObject } from '@expo/json-file';\nimport type { XcodeProject } from 'xcode';\n\nimport type { ConfigPlugin, Mod } from '../Plugin.types';\nimport type { ExpoPlist, InfoPlist } from '../ios/IosConfig.types';\nimport type { AppDelegateProjectFile } from '../ios/Paths';\nimport { withMod } from './withMod';\n\ntype MutateInfoPlistAction = (expo: ExpoConfig, infoPlist: InfoPlist) => InfoPlist;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createInfoPlistPlugin(action: MutateInfoPlistAction, name?: string): ConfigPlugin {\n const withUnknown: ConfigPlugin = config =>\n withInfoPlist(config, async config => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\ntype MutateEntitlementsPlistAction = (expo: ExpoConfig, entitlements: JSONObject) => JSONObject;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createEntitlementsPlugin(\n action: MutateEntitlementsPlistAction,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = config =>\n withEntitlementsPlist(config, async config => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * Provides the AppDelegate file for modification.\n *\n * @param config\n * @param action\n */\nexport const withAppDelegate: ConfigPlugin<Mod<AppDelegateProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'appDelegate',\n action,\n });\n};\n\n/**\n * Provides the Info.plist file for modification.\n * Keeps the config's expo.ios.infoPlist object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withInfoPlist: ConfigPlugin<Mod<InfoPlist>> = (config, action) => {\n return withMod<InfoPlist>(config, {\n platform: 'ios',\n mod: 'infoPlist',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the main .entitlements file for modification.\n * Keeps the config's expo.ios.entitlements object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withEntitlementsPlist: ConfigPlugin<Mod<JSONObject>> = (config, action) => {\n return withMod<JSONObject>(config, {\n platform: 'ios',\n mod: 'entitlements',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the Expo.plist for modification.\n *\n * @param config\n * @param action\n */\nexport const withExpoPlist: ConfigPlugin<Mod<ExpoPlist>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'expoPlist',\n action,\n });\n};\n\n/**\n * Provides the main .xcodeproj for modification.\n *\n * @param config\n * @param action\n */\nexport const withXcodeProject: ConfigPlugin<Mod<XcodeProject>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'xcodeproj',\n action,\n });\n};\n\n/**\n * Provides the Podfile.properties.json for modification.\n *\n * @param config\n * @param action\n */\nexport const withPodfileProperties: ConfigPlugin<Mod<Record<string, string>>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'podfileProperties',\n action,\n });\n};\n"],"file":"ios-plugins.js"}
1
+ {"version":3,"sources":["../../src/plugins/ios-plugins.ts"],"names":["createInfoPlistPlugin","action","name","withUnknown","config","withInfoPlist","modResults","Object","defineProperty","value","createEntitlementsPlugin","withEntitlementsPlist","withAppDelegate","platform","mod","ios","infoPlist","entitlements","withExpoPlist","withXcodeProject","withPodfileProperties"],"mappings":";;;;;;;;;AAOA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AACA;AACA;AACA;AACA;AACO,SAASA,qBAAT,CAA+BC,MAA/B,EAA8DC,IAA9D,EAA2F;AAChG,QAAMC,WAAyB,GAAGC,MAAM,IACtCC,aAAa,CAACD,MAAD,EAAS,MAAMA,MAAN,IAAgB;AACpCA,IAAAA,MAAM,CAACE,UAAP,GAAoB,MAAML,MAAM,CAACG,MAAD,EAASA,MAAM,CAACE,UAAhB,CAAhC;AACA,WAAOF,MAAP;AACD,GAHY,CADf;;AAKA,MAAIF,IAAJ,EAAU;AACRK,IAAAA,MAAM,CAACC,cAAP,CAAsBL,WAAtB,EAAmC,MAAnC,EAA2C;AACzCM,MAAAA,KAAK,EAAEP;AADkC,KAA3C;AAGD;;AACD,SAAOC,WAAP;AACD;;AAID;AACA;AACA;AACA;AACA;AACO,SAASO,wBAAT,CACLT,MADK,EAELC,IAFK,EAGS;AACd,QAAMC,WAAyB,GAAGC,MAAM,IACtCO,qBAAqB,CAACP,MAAD,EAAS,MAAMA,MAAN,IAAgB;AAC5CA,IAAAA,MAAM,CAACE,UAAP,GAAoB,MAAML,MAAM,CAACG,MAAD,EAASA,MAAM,CAACE,UAAhB,CAAhC;AACA,WAAOF,MAAP;AACD,GAHoB,CADvB;;AAKA,MAAIF,IAAJ,EAAU;AACRK,IAAAA,MAAM,CAACC,cAAP,CAAsBL,WAAtB,EAAmC,MAAnC,EAA2C;AACzCM,MAAAA,KAAK,EAAEP;AADkC,KAA3C;AAGD;;AACD,SAAOC,WAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMS,eAA0D,GAAG,CAACR,MAAD,EAASH,MAAT,KAAoB;AAC5F,SAAO,wBAAQG,MAAR,EAAgB;AACrBS,IAAAA,QAAQ,EAAE,KADW;AAErBC,IAAAA,GAAG,EAAE,aAFgB;AAGrBb,IAAAA;AAHqB,GAAhB,CAAP;AAKD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAMI,aAA2C,GAAG,CAACD,MAAD,EAASH,MAAT,KAAoB;AAC7E,SAAO,wBAAmBG,MAAnB,EAA2B;AAChCS,IAAAA,QAAQ,EAAE,KADsB;AAEhCC,IAAAA,GAAG,EAAE,WAF2B;;AAGhC,UAAMb,MAAN,CAAaG,MAAb,EAAqB;AACnBA,MAAAA,MAAM,GAAG,MAAMH,MAAM,CAACG,MAAD,CAArB;;AACA,UAAI,CAACA,MAAM,CAACW,GAAZ,EAAiB;AACfX,QAAAA,MAAM,CAACW,GAAP,GAAa,EAAb;AACD;;AACDX,MAAAA,MAAM,CAACW,GAAP,CAAWC,SAAX,GAAuBZ,MAAM,CAACE,UAA9B;AACA,aAAOF,MAAP;AACD;;AAV+B,GAA3B,CAAP;AAYD,CAbM;AAeP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAMO,qBAAoD,GAAG,CAACP,MAAD,EAASH,MAAT,KAAoB;AACtF,SAAO,wBAAoBG,MAApB,EAA4B;AACjCS,IAAAA,QAAQ,EAAE,KADuB;AAEjCC,IAAAA,GAAG,EAAE,cAF4B;;AAGjC,UAAMb,MAAN,CAAaG,MAAb,EAAqB;AACnBA,MAAAA,MAAM,GAAG,MAAMH,MAAM,CAACG,MAAD,CAArB;;AACA,UAAI,CAACA,MAAM,CAACW,GAAZ,EAAiB;AACfX,QAAAA,MAAM,CAACW,GAAP,GAAa,EAAb;AACD;;AACDX,MAAAA,MAAM,CAACW,GAAP,CAAWE,YAAX,GAA0Bb,MAAM,CAACE,UAAjC;AACA,aAAOF,MAAP;AACD;;AAVgC,GAA5B,CAAP;AAYD,CAbM;AAeP;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAMc,aAA2C,GAAG,CAACd,MAAD,EAASH,MAAT,KAAoB;AAC7E,SAAO,wBAAQG,MAAR,EAAgB;AACrBS,IAAAA,QAAQ,EAAE,KADW;AAErBC,IAAAA,GAAG,EAAE,WAFgB;AAGrBb,IAAAA;AAHqB,GAAhB,CAAP;AAKD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAMkB,gBAAiD,GAAG,CAACf,MAAD,EAASH,MAAT,KAAoB;AACnF,SAAO,wBAAQG,MAAR,EAAgB;AACrBS,IAAAA,QAAQ,EAAE,KADW;AAErBC,IAAAA,GAAG,EAAE,WAFgB;AAGrBb,IAAAA;AAHqB,GAAhB,CAAP;AAKD,CANM;AAQP;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAMmB,qBAAmE,GAAG,CACjFhB,MADiF,EAEjFH,MAFiF,KAG9E;AACH,SAAO,wBAAQG,MAAR,EAAgB;AACrBS,IAAAA,QAAQ,EAAE,KADW;AAErBC,IAAAA,GAAG,EAAE,mBAFgB;AAGrBb,IAAAA;AAHqB,GAAhB,CAAP;AAKD,CATM","sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\nimport type { JSONObject, JSONValue } from '@expo/json-file';\nimport type { XcodeProject } from 'xcode';\n\nimport type { ConfigPlugin, Mod } from '../Plugin.types';\nimport type { ExpoPlist, InfoPlist } from '../ios/IosConfig.types';\nimport type { AppDelegateProjectFile } from '../ios/Paths';\nimport { withMod } from './withMod';\n\ntype MutateInfoPlistAction = (expo: ExpoConfig, infoPlist: InfoPlist) => InfoPlist;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createInfoPlistPlugin(action: MutateInfoPlistAction, name?: string): ConfigPlugin {\n const withUnknown: ConfigPlugin = config =>\n withInfoPlist(config, async config => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\ntype MutateEntitlementsPlistAction = (expo: ExpoConfig, entitlements: JSONObject) => JSONObject;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createEntitlementsPlugin(\n action: MutateEntitlementsPlistAction,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = config =>\n withEntitlementsPlist(config, async config => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * Provides the AppDelegate file for modification.\n *\n * @param config\n * @param action\n */\nexport const withAppDelegate: ConfigPlugin<Mod<AppDelegateProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'appDelegate',\n action,\n });\n};\n\n/**\n * Provides the Info.plist file for modification.\n * Keeps the config's expo.ios.infoPlist object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withInfoPlist: ConfigPlugin<Mod<InfoPlist>> = (config, action) => {\n return withMod<InfoPlist>(config, {\n platform: 'ios',\n mod: 'infoPlist',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the main .entitlements file for modification.\n * Keeps the config's expo.ios.entitlements object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withEntitlementsPlist: ConfigPlugin<Mod<JSONObject>> = (config, action) => {\n return withMod<JSONObject>(config, {\n platform: 'ios',\n mod: 'entitlements',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the Expo.plist for modification.\n *\n * @param config\n * @param action\n */\nexport const withExpoPlist: ConfigPlugin<Mod<ExpoPlist>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'expoPlist',\n action,\n });\n};\n\n/**\n * Provides the main .xcodeproj for modification.\n *\n * @param config\n * @param action\n */\nexport const withXcodeProject: ConfigPlugin<Mod<XcodeProject>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'xcodeproj',\n action,\n });\n};\n\n/**\n * Provides the Podfile.properties.json for modification.\n *\n * @param config\n * @param action\n */\nexport const withPodfileProperties: ConfigPlugin<Mod<Record<string, JSONValue>>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'podfileProperties',\n action,\n });\n};\n"],"file":"ios-plugins.js"}
@@ -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":";;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AAEA,MAAM;AAAEA,EAAAA,QAAF;AAAYC,EAAAA;AAAZ,IAA0BC,cAAhC;;AAIA,SAASC,4BAAT,GAAwC;AACtC;AACA,SAAO,EAAP;AACD;;AAED,SAASC,oBAAT,GAAgC;AAC9B;AACA,SAAO;AACLC,IAAAA,yBAAyB,EAAE,yBADtB;AAELC,IAAAA,kBAAkB,EAAE,oBAFf;AAGLC,IAAAA,kBAAkB,EAAE,8BAHf;AAILC,IAAAA,YAAY,EAAE,iBAJT;AAKLC,IAAAA,mBAAmB,EAAE,gCALhB;AAMLC,IAAAA,6BAA6B,EAAE,KAN1B;AAOLC,IAAAA,iBAAiB,EAAE,MAPd;AAQLC,IAAAA,kBAAkB,EAAE,IARf;AASLC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,sBAAsB,EAAE,IADF;AAEtBC,MAAAA,kBAAkB,EAAE;AAClBC,QAAAA,SAAS,EAAE;AACTC,UAAAA,kCAAkC,EAAE;AAD3B;AADO;AAFE,KATnB;AAiBLC,IAAAA,sBAAsB,EAAE,cAjBnB;AAkBLC,IAAAA,4BAA4B,EAAE,CAAC,OAAD,CAlBzB;AAmBLC,IAAAA,wCAAwC,EAAE,KAnBrC;AAoBLC,IAAAA,gBAAgB,EAAE;AApBb,GAAP;AAsBD;;AAED,MAAMC,gBAAgB,GAAG;AACvBC,EAAAA,SAAS,EAAE,+BAAkB;AAC3BC,IAAAA,WAAW,GAAG;AACZ,aAAO,EAAP;AACD,KAH0B;;AAI3B,UAAMC,IAAN,GAAa;AACX,aAAO,EAAP;AACD,KAN0B;;AAO3B,UAAMC,KAAN,GAAc,CAAE;;AAPW,GAAlB,CADY;AAUvB;AACAC,EAAAA,WAAW,EAAE,+BAAuC;AAClDH,IAAAA,WAAW,CAAC;AAAEI,MAAAA,UAAU,EAAE;AAAEC,QAAAA;AAAF;AAAd,KAAD,EAAkC;AAC3C,aAAOC,aAAMC,sBAAN,CAA6BF,WAA7B,CAAP;AACD,KAHiD;;AAIlD,UAAMJ,IAAN,CAAWO,QAAX,EAAqB;AACnB,aAAOF,aAAMG,WAAN,CAAkBD,QAAlB,CAAP;AACD,KANiD;;AAOlD,UAAMN,KAAN,CAAYM,QAAZ,EAA8B;AAAEE,MAAAA,UAAU,EAAE;AAAEC,QAAAA;AAAF;AAAd,KAA9B,EAA4D;AAC1D,YAAMlC,SAAS,CAAC+B,QAAD,EAAWG,QAAX,CAAf;AACD;;AATiD,GAAvC,CAXU;AAsBvB;AACAC,EAAAA,SAAS,EAAE,+BAAqB;AAC9BC,IAAAA,eAAe,EAAE,IADa;;AAE9Bb,IAAAA,WAAW,CAAC;AAAEI,MAAAA,UAAU,EAAE;AAAEU,QAAAA,mBAAF;AAAuBC,QAAAA;AAAvB;AAAd,KAAD,EAAuD;AAChE,YAAMC,mBAAmB,GAAGC,gBAAKC,IAAL,CAAUJ,mBAAV,EAA+BC,WAA/B,EAA6C,YAA7C,CAA5B;;AACA,aAAOE,gBAAKE,OAAL,CAAaH,mBAAb,EAAkC,YAAlC,CAAP;AACD,KAL6B;;AAM9B,UAAMf,IAAN,CAAWO,QAAX,EAAqB;AAAEJ,MAAAA,UAAU,EAAE;AAAEgB,QAAAA;AAAF;AAAd,KAArB,EAAqD;AACnD,UAAI;AACF,eAAOC,iBAAMC,KAAN,CAAY,MAAM9C,QAAQ,CAACgC,QAAD,EAAW,MAAX,CAA1B,CAAP;AACD,OAFD,CAEE,OAAOe,KAAP,EAAc;AACd,YAAIH,UAAJ,EAAgB;AACd,iBAAO,EAAP;AACD;;AACD,cAAMG,KAAN;AACD;AACF,KAf6B;;AAgB9B,UAAMrB,KAAN,CAAYM,QAAZ,EAAsB;AAAEE,MAAAA,UAAF;AAAcN,MAAAA,UAAU,EAAE;AAAEgB,QAAAA;AAAF;AAA1B,KAAtB,EAAkE;AAChE,UAAIA,UAAJ,EAAgB;AACd;AACD;;AACD,YAAM3C,SAAS,CAAC+B,QAAD,EAAWa,iBAAMG,KAAN,CAAY,8BAAWd,UAAX,CAAZ,CAAX,CAAf;AACD;;AArB6B,GAArB,CAvBY;AA8CvB;AACAe,EAAAA,SAAS,EAAE,+BAAuB;AAChCzB,IAAAA,WAAW,CAAC;AAAEI,MAAAA,UAAU,EAAE;AAAEC,QAAAA;AAAF;AAAd,KAAD,EAAkC;AAC3C,aAAOC,aAAMoB,iBAAN,CAAwBrB,WAAxB,CAAP;AACD,KAH+B;;AAIhC,UAAMJ,IAAN,CAAWO,QAAX,EAAqB;AACnB,YAAMmB,OAAO,GAAGC,iBAAMD,OAAN,CAAcnB,QAAd,CAAhB;;AACAmB,MAAAA,OAAO,CAACE,SAAR;AACA,aAAOF,OAAP;AACD,KAR+B;;AAShC,UAAMzB,KAAN,CAAYM,QAAZ,EAAsB;AAAEE,MAAAA;AAAF,KAAtB,EAAsC;AACpC,YAAMjC,SAAS,CAAC+B,QAAD,EAAWE,UAAU,CAACoB,SAAX,EAAX,CAAf;AACD;;AAX+B,GAAvB,CA/CY;AA4DvB;AACAC,EAAAA,SAAS,EAAE,+BAA6C;AACtDlB,IAAAA,eAAe,EAAE,IADqC;;AAEtD,UAAMb,WAAN,CAAkBgC,MAAlB,EAA0B;AACxB,UAAIL,OAAkC,GAAG,IAAzC;;AACA,UAAI;AACFA,QAAAA,OAAO,GAAG,6BAAWK,MAAM,CAAC5B,UAAP,CAAkBC,WAA7B,CAAV;AACD,OAFD,CAEE,MAAM,CACN;AACD,OANuB,CAQxB;AACA;;;AACA,UAAIsB,OAAJ,EAAa;AACX,cAAMM,sBAAsB,GAAG,qDAA4BN,OAA5B,CAA/B;;AAEA,YAAIM,sBAAJ,EAA4B;AAC1B;AACA,gBAAMC,aAAa,GAAGjB,gBAAKC,IAAL,EACpB;AACAc,UAAAA,MAAM,CAAC5B,UAAP,CAAkBU,mBAFE,EAGpB;AACAmB,UAAAA,sBAJoB,CAAtB;;AAMA,cAAI,2BAAWC,aAAX,CAAJ,EAA+B;AAC7B,mBAAOA,aAAP;AACD;;AACD,yCACE,oBADF,EAEG,2DAA0DA,aAAc,EAF3E;AAID,SAfD,MAeO;AACL,yCAAc,oBAAd,EAAoC,oDAApC;AACD;AACF;;AACD,UAAI;AACF;AACA,eAAO,MAAM5B,aAAM6B,gBAAN,CAAuBH,MAAM,CAAC5B,UAAP,CAAkBC,WAAzC,CAAb;AACD,OAHD,CAGE,OAAOkB,KAAP,EAAmB;AACnB,YAAIS,MAAM,CAAC5B,UAAP,CAAkBgB,UAAtB,EAAkC;AAChC;AACA,iBAAO,EAAP;AACD;;AACD,cAAMG,KAAN;AACD;AACF,KA5CqD;;AA6CtD,UAAMtB,IAAN,CAAWO,QAAX,EAAqBwB,MAArB,EAA6B;AAC3B;AACA;AACA,UAAI,CAACA,MAAM,CAACI,GAAZ,EAAiBJ,MAAM,CAACI,GAAP,GAAa,EAAb;AACjB,UAAI,CAACJ,MAAM,CAACI,GAAP,CAAWL,SAAhB,EAA2BC,MAAM,CAACI,GAAP,CAAWL,SAAX,GAAuB,EAAvB;AAE3B,UAAIrB,UAAJ;;AACA,UAAI;AACF,cAAMC,QAAQ,GAAG,MAAMnC,QAAQ,CAACgC,QAAD,EAAW,MAAX,CAA/B;AACA,+BAAOG,QAAP,EAAiB,qBAAjB;AACAD,QAAAA,UAAU,GAAGW,iBAAMC,KAAN,CAAYX,QAAZ,CAAb;AACD,OAJD,CAIE,OAAOY,KAAP,EAAmB;AACnB;AACA,YAAI,CAACS,MAAM,CAAC5B,UAAP,CAAkBgB,UAAvB,EAAmC;AACjC,gBAAMG,KAAN;AACD,SAJkB,CAKnB;;;AACAb,QAAAA,UAAU,GAAG9B,oBAAoB,EAAjC;AACD;;AAEDoD,MAAAA,MAAM,CAACI,GAAP,CAAWL,SAAX,GAAuB,EACrB,IAAIrB,UAAU,IAAI,EAAlB,CADqB;AAErB,WAAGsB,MAAM,CAACI,GAAP,CAAWL;AAFO,OAAvB;AAKA,aAAOC,MAAM,CAACI,GAAP,CAAWL,SAAlB;AACD,KAvEqD;;AAwEtD,UAAM7B,KAAN,CAAYM,QAAZ,EAAsBwB,MAAtB,EAA8B;AAC5B;AACA,UAAI,CAACA,MAAM,CAACI,GAAZ,EAAiB;AACfJ,QAAAA,MAAM,CAACI,GAAP,GAAa,EAAb;AACD;;AACDJ,MAAAA,MAAM,CAACI,GAAP,CAAWL,SAAX,GAAuBC,MAAM,CAACtB,UAA9B,CAL4B,CAO5B;;AACA,UAAIsB,MAAM,CAAC5B,UAAP,CAAkBgB,UAAtB,EAAkC;AAChC;AACD;;AAED,YAAM3C,SAAS,CAAC+B,QAAD,EAAWa,iBAAMG,KAAN,CAAY,8BAAWQ,MAAM,CAACtB,UAAlB,CAAZ,CAAX,CAAf;AACD;;AArFqD,GAA7C,CA7DY;AAoJvB;AACA2B,EAAAA,YAAY,EAAE,+BAA8C;AAC1DxB,IAAAA,eAAe,EAAE,IADyC;;AAG1D,UAAMb,WAAN,CAAkBgC,MAAlB,EAA0B;AACxB,UAAI;AACF;AACA,eAAO,MAAMM,oBAAaC,mBAAb,CAAiCP,MAAM,CAAC5B,UAAP,CAAkBC,WAAnD,CAAb;AACD,OAHD,CAGE,OAAOkB,KAAP,EAAmB;AACnB,YAAIS,MAAM,CAAC5B,UAAP,CAAkBgB,UAAtB,EAAkC;AAChC;AACA,iBAAO,EAAP;AACD;;AACD,cAAMG,KAAN;AACD;AACF,KAdyD;;AAgB1D,UAAMtB,IAAN,CAAWO,QAAX,EAAqBwB,MAArB,EAA6B;AAC3B,UAAItB,UAAJ;;AACA,UAAI;AACF,cAAMC,QAAQ,GAAG,MAAMnC,QAAQ,CAACgC,QAAD,EAAW,MAAX,CAA/B;AACA,+BAAOG,QAAP,EAAiB,6BAAjB;AACAD,QAAAA,UAAU,GAAGW,iBAAMC,KAAN,CAAYX,QAAZ,CAAb;AACD,OAJD,CAIE,OAAOY,KAAP,EAAmB;AACnB;AACA,YAAI,CAACS,MAAM,CAAC5B,UAAP,CAAkBgB,UAAvB,EAAmC;AACjC,gBAAMG,KAAN;AACD,SAJkB,CAKnB;;;AACAb,QAAAA,UAAU,GAAG/B,4BAA4B,EAAzC;AACD,OAb0B,CAe3B;AACA;;;AACA,UAAI,CAACqD,MAAM,CAACI,GAAZ,EAAiBJ,MAAM,CAACI,GAAP,GAAa,EAAb;AACjB,UAAI,CAACJ,MAAM,CAACI,GAAP,CAAWC,YAAhB,EAA8BL,MAAM,CAACI,GAAP,CAAWC,YAAX,GAA0B,EAA1B;AAE9BL,MAAAA,MAAM,CAACI,GAAP,CAAWC,YAAX,GAA0B,EACxB,IAAI3B,UAAU,IAAI,EAAlB,CADwB;AAExB,WAAGsB,MAAM,CAACI,GAAP,CAAWC;AAFU,OAA1B;AAKA,aAAOL,MAAM,CAACI,GAAP,CAAWC,YAAlB;AACD,KA1CyD;;AA4C1D,UAAMnC,KAAN,CAAYM,QAAZ,EAAsBwB,MAAtB,EAA8B;AAC5B;AACA,UAAI,CAACA,MAAM,CAACI,GAAZ,EAAiB;AACfJ,QAAAA,MAAM,CAACI,GAAP,GAAa,EAAb;AACD;;AACDJ,MAAAA,MAAM,CAACI,GAAP,CAAWC,YAAX,GAA0BL,MAAM,CAACtB,UAAjC,CAL4B,CAO5B;;AACA,UAAIsB,MAAM,CAAC5B,UAAP,CAAkBgB,UAAtB,EAAkC;AAChC;AACD;;AAED,YAAM3C,SAAS,CAAC+B,QAAD,EAAWa,iBAAMG,KAAN,CAAY,8BAAWQ,MAAM,CAACtB,UAAlB,CAAZ,CAAX,CAAf;AACD;;AAzDyD,GAA9C,CArJS;AAiNvB;AACA8B,EAAAA,iBAAiB,EAAE,+BAAiC;AAClD3B,IAAAA,eAAe,EAAE,IADiC;;AAGlDb,IAAAA,WAAW,CAAC;AAAEI,MAAAA,UAAU,EAAE;AAAEU,QAAAA;AAAF;AAAd,KAAD,EAA0C;AACnD,aAAOG,gBAAKE,OAAL,CAAaL,mBAAb,EAAkC,yBAAlC,CAAP;AACD,KALiD;;AAMlD,UAAMb,IAAN,CAAWO,QAAX,EAAqB;AACnB,UAAIiC,OAA+B,GAAG,EAAtC;;AACA,UAAI;AACFA,QAAAA,OAAO,GAAG,MAAMC,oBAASC,SAAT,CAAmBnC,QAAnB,CAAhB;AACD,OAFD,CAEE,OAAOoC,CAAP,EAAU,CAAE;;AACd,aAAOH,OAAP;AACD,KAZiD;;AAalD,UAAMvC,KAAN,CAAYM,QAAZ,EAAsB;AAAEE,MAAAA,UAAF;AAAcN,MAAAA,UAAU,EAAE;AAAEgB,QAAAA;AAAF;AAA1B,KAAtB,EAAkE;AAChE,UAAIA,UAAJ,EAAgB;AACd;AACD;;AACD,YAAMsB,oBAASG,UAAT,CAAoBrC,QAApB,EAA8BE,UAA9B,CAAN;AACD;;AAlBiD,GAAjC;AAlNI,CAAzB;;AA0OO,SAASoC,eAAT,CACLd,MADK,EAEL;AACEe,EAAAA,SADF;AAEE,KAAGC;AAFL,IAG4E,EALvE,EAMW;AAChB,SAAO,4CAAkChB,MAAlC,EAA0C,EAC/C,GAAGgB,KAD4C;AAE/CC,IAAAA,QAAQ,EAAE,KAFqC;AAG/CF,IAAAA,SAAS,EAAEA,SAAF,aAAEA,SAAF,cAAEA,SAAF,GAAeG,sBAAsB;AAHC,GAA1C,CAAP;AAKD;;AAEM,SAASA,sBAAT,GAAkC;AACvC,SAAOpD,gBAAP;AACD","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.9",
3
+ "version": "4.0.13",
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",
@@ -1 +0,0 @@
1
- export declare function resolvePackageRootFolder(fromDirectory: string, moduleId: string): string | null;