@expo/build-tools 1.0.272 → 18.0.2

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 (315) hide show
  1. package/LICENSE +21 -100
  2. package/README.md +1 -1
  3. package/dist/android/credentials.js +2 -3
  4. package/dist/android/expoUpdates.js +5 -8
  5. package/dist/android/gradle.js +6 -8
  6. package/dist/android/gradleConfig.js +2 -3
  7. package/dist/buildErrors/buildErrorHandlers.js +4 -3
  8. package/dist/buildErrors/detectError.js +11 -11
  9. package/dist/buildErrors/errors.types.js +0 -1
  10. package/dist/buildErrors/userErrorHandlers.js +13 -10
  11. package/dist/builders/android.js +19 -24
  12. package/dist/builders/common.js +0 -1
  13. package/dist/builders/custom.js +9 -11
  14. package/dist/builders/index.js +0 -1
  15. package/dist/builders/ios.js +24 -29
  16. package/dist/common/eagerBundle.js +3 -4
  17. package/dist/common/easBuildInternal.js +5 -7
  18. package/dist/common/fastlane.js +0 -1
  19. package/dist/common/git.js +0 -1
  20. package/dist/common/installDependencies.d.ts +1 -1
  21. package/dist/common/installDependencies.js +1 -2
  22. package/dist/common/prebuild.js +3 -5
  23. package/dist/common/projectSources.js +12 -16
  24. package/dist/common/setup.js +28 -33
  25. package/dist/context.d.ts +1 -1
  26. package/dist/context.js +33 -25
  27. package/dist/customBuildContext.d.ts +1 -1
  28. package/dist/customBuildContext.js +32 -10
  29. package/dist/gcs/LoggerStream.d.ts +1 -1
  30. package/dist/gcs/LoggerStream.js +22 -14
  31. package/dist/gcs/__unit__/gcs.test.js +5 -8
  32. package/dist/gcs/client.d.ts +1 -1
  33. package/dist/gcs/client.js +28 -19
  34. package/dist/gcs/retry.js +4 -5
  35. package/dist/generic.d.ts +1 -1
  36. package/dist/generic.js +5 -7
  37. package/dist/index.d.ts +1 -1
  38. package/dist/index.js +19 -10
  39. package/dist/ios/configure.d.ts +1 -1
  40. package/dist/ios/configure.js +9 -11
  41. package/dist/ios/credentials/distributionCertificate.js +1 -3
  42. package/dist/ios/credentials/keychain.js +9 -8
  43. package/dist/ios/credentials/manager.d.ts +1 -1
  44. package/dist/ios/credentials/manager.js +24 -13
  45. package/dist/ios/credentials/provisioningProfile.js +12 -6
  46. package/dist/ios/expoUpdates.js +7 -11
  47. package/dist/ios/fastfile.d.ts +1 -1
  48. package/dist/ios/fastfile.js +0 -1
  49. package/dist/ios/fastlane.d.ts +1 -1
  50. package/dist/ios/fastlane.js +8 -9
  51. package/dist/ios/gymfile.d.ts +1 -1
  52. package/dist/ios/gymfile.js +1 -2
  53. package/dist/ios/pod.js +1 -2
  54. package/dist/ios/resign.js +3 -5
  55. package/dist/ios/resolve.js +1 -2
  56. package/dist/ios/tvos.js +1 -3
  57. package/dist/ios/xcodeBuildLogs.d.ts +1 -1
  58. package/dist/ios/xcodeBuildLogs.js +5 -7
  59. package/dist/ios/xcodeEnv.js +1 -2
  60. package/dist/ios/xcpretty.js +11 -7
  61. package/dist/steps/easFunctionGroups.js +0 -1
  62. package/dist/steps/easFunctions.js +28 -25
  63. package/dist/steps/functionGroups/build.d.ts +1 -1
  64. package/dist/steps/functionGroups/build.js +24 -26
  65. package/dist/steps/functionGroups/maestroTest.js +7 -9
  66. package/dist/steps/functions/calculateEASUpdateRuntimeVersion.js +6 -9
  67. package/dist/steps/functions/ccacheStats.js +4 -6
  68. package/dist/steps/functions/checkout.js +0 -1
  69. package/dist/steps/functions/configureAndroidVersion.js +3 -5
  70. package/dist/steps/functions/configureEASUpdateIfInstalled.js +4 -6
  71. package/dist/steps/functions/configureIosCredentials.js +3 -4
  72. package/dist/steps/functions/configureIosVersion.js +4 -6
  73. package/dist/steps/functions/createSubmissionEntity.js +2 -4
  74. package/dist/steps/functions/downloadArtifact.d.ts +1 -1
  75. package/dist/steps/functions/downloadArtifact.js +7 -9
  76. package/dist/steps/functions/downloadBuild.d.ts +1 -1
  77. package/dist/steps/functions/downloadBuild.js +10 -12
  78. package/dist/steps/functions/eagerBundle.js +2 -4
  79. package/dist/steps/functions/findAndUploadBuildArtifacts.js +5 -8
  80. package/dist/steps/functions/generateGymfileFromTemplate.js +6 -8
  81. package/dist/steps/functions/getCredentialsForBuildTriggeredByGitHubIntegration.js +0 -1
  82. package/dist/steps/functions/injectAndroidCredentials.js +3 -4
  83. package/dist/steps/functions/installMaestro.js +3 -4
  84. package/dist/steps/functions/installNodeModules.d.ts +1 -1
  85. package/dist/steps/functions/installNodeModules.js +12 -12
  86. package/dist/steps/functions/installPods.js +0 -1
  87. package/dist/steps/functions/internalMaestroTest.js +16 -16
  88. package/dist/steps/functions/prebuild.js +3 -5
  89. package/dist/steps/functions/readIpaInfo.d.ts +8 -0
  90. package/dist/steps/functions/readIpaInfo.js +111 -0
  91. package/dist/steps/functions/repack.d.ts +1 -1
  92. package/dist/steps/functions/repack.js +25 -19
  93. package/dist/steps/functions/resolveAppleTeamIdFromCredentials.js +1 -2
  94. package/dist/steps/functions/resolveBuildConfig.js +0 -1
  95. package/dist/steps/functions/restoreBuildCache.d.ts +1 -1
  96. package/dist/steps/functions/restoreBuildCache.js +8 -10
  97. package/dist/steps/functions/restoreCache.d.ts +1 -1
  98. package/dist/steps/functions/restoreCache.js +34 -26
  99. package/dist/steps/functions/runFastlane.js +0 -1
  100. package/dist/steps/functions/runGradle.js +2 -3
  101. package/dist/steps/functions/saveBuildCache.d.ts +1 -1
  102. package/dist/steps/functions/saveBuildCache.js +6 -7
  103. package/dist/steps/functions/saveCache.d.ts +1 -1
  104. package/dist/steps/functions/saveCache.js +26 -18
  105. package/dist/steps/functions/sendSlackMessage.js +1 -3
  106. package/dist/steps/functions/startAndroidEmulator.js +5 -7
  107. package/dist/steps/functions/startCuttlefishDevice.js +32 -10
  108. package/dist/steps/functions/startIosSimulator.js +8 -11
  109. package/dist/steps/functions/uploadArtifact.js +4 -6
  110. package/dist/steps/functions/uploadToAsc.d.ts +2 -0
  111. package/dist/steps/functions/uploadToAsc.js +287 -0
  112. package/dist/steps/functions/useNpmToken.js +3 -4
  113. package/dist/steps/utils/android/expoUpdates.js +3 -5
  114. package/dist/steps/utils/android/gradle.d.ts +1 -1
  115. package/dist/steps/utils/android/gradle.js +6 -7
  116. package/dist/steps/utils/android/gradleConfig.js +4 -5
  117. package/dist/steps/utils/cache.js +0 -1
  118. package/dist/steps/utils/expoUpdates.d.ts +1 -1
  119. package/dist/steps/utils/expoUpdates.js +15 -18
  120. package/dist/steps/utils/ios/AscApiClient.d.ts +250 -0
  121. package/dist/steps/utils/ios/AscApiClient.js +299 -0
  122. package/dist/steps/utils/ios/configure.js +4 -5
  123. package/dist/steps/utils/ios/credentials/credentials.js +0 -1
  124. package/dist/steps/utils/ios/credentials/distributionCertificate.js +1 -3
  125. package/dist/steps/utils/ios/credentials/keychain.js +8 -8
  126. package/dist/steps/utils/ios/credentials/manager.js +24 -13
  127. package/dist/steps/utils/ios/credentials/provisioningProfile.js +11 -6
  128. package/dist/steps/utils/ios/expoUpdates.js +4 -7
  129. package/dist/steps/utils/ios/fastlane.d.ts +1 -1
  130. package/dist/steps/utils/ios/fastlane.js +3 -4
  131. package/dist/steps/utils/ios/resolve.js +1 -2
  132. package/dist/steps/utils/ios/tvos.js +1 -3
  133. package/dist/steps/utils/ios/xcpretty.js +11 -7
  134. package/dist/steps/utils/slackMessageDynamicFields.js +0 -1
  135. package/dist/templates/EasBuildConfigureVersionGradle.js +0 -1
  136. package/dist/templates/EasBuildGradle.js +0 -1
  137. package/dist/templates/EasBuildInjectAndroidCredentialsGradle.js +0 -1
  138. package/dist/templates/FastfileResign.js +0 -1
  139. package/dist/templates/GymfileArchive.js +0 -1
  140. package/dist/templates/GymfileSimulator.js +0 -1
  141. package/dist/templates/npmrc.js +0 -1
  142. package/dist/utils/AndroidEmulatorUtils.js +20 -22
  143. package/dist/utils/IosSimulatorUtils.js +9 -11
  144. package/dist/utils/appConfig.js +1 -2
  145. package/dist/utils/artifacts.d.ts +1 -1
  146. package/dist/utils/artifacts.js +7 -8
  147. package/dist/utils/cacheKey.js +21 -12
  148. package/dist/utils/diffFingerprintsAsync.d.ts +1 -1
  149. package/dist/utils/diffFingerprintsAsync.js +0 -1
  150. package/dist/utils/environmentSecrets.js +3 -4
  151. package/dist/utils/expoFingerprintCli.js +5 -6
  152. package/dist/utils/expoUpdates.d.ts +1 -2
  153. package/dist/utils/expoUpdates.js +19 -33
  154. package/dist/utils/expoUpdatesCli.js +20 -11
  155. package/dist/utils/files.js +23 -15
  156. package/dist/utils/findMaestroPathsFlowsToExecuteAsync.js +27 -21
  157. package/dist/utils/fingerprint.js +0 -1
  158. package/dist/utils/getExpoUpdatesPackageVersionIfInstalledAsync.js +0 -1
  159. package/dist/utils/hooks.js +1 -3
  160. package/dist/utils/isModernExpoUpdatesCLIWithRuntimeVersionCommandSupported.d.ts +1 -0
  161. package/dist/utils/isModernExpoUpdatesCLIWithRuntimeVersionCommandSupported.js +14 -0
  162. package/dist/utils/npmrc.js +2 -3
  163. package/dist/utils/outputs.d.ts +1 -1
  164. package/dist/utils/outputs.js +2 -5
  165. package/dist/utils/packageManager.js +22 -14
  166. package/dist/utils/prepareBuildExecutable.js +1 -2
  167. package/dist/utils/processes.js +2 -3
  168. package/dist/utils/project.js +1 -2
  169. package/dist/utils/promiseRetryWithCondition.js +0 -1
  170. package/dist/utils/resolveRuntimeVersionAsync.d.ts +1 -1
  171. package/dist/utils/resolveRuntimeVersionAsync.js +4 -6
  172. package/dist/utils/retry.js +2 -3
  173. package/dist/utils/retryOnDNSFailure.js +0 -1
  174. package/dist/utils/stepMetrics.d.ts +1 -1
  175. package/dist/utils/stepMetrics.js +0 -1
  176. package/dist/utils/strings.js +1 -3
  177. package/dist/utils/turtleFetch.d.ts +1 -1
  178. package/dist/utils/turtleFetch.js +2 -2
  179. package/package.json +27 -22
  180. package/dist/android/credentials.js.map +0 -1
  181. package/dist/android/expoUpdates.js.map +0 -1
  182. package/dist/android/gradle.js.map +0 -1
  183. package/dist/android/gradleConfig.js.map +0 -1
  184. package/dist/buildErrors/buildErrorHandlers.js.map +0 -1
  185. package/dist/buildErrors/detectError.js.map +0 -1
  186. package/dist/buildErrors/errors.types.js.map +0 -1
  187. package/dist/buildErrors/userErrorHandlers.js.map +0 -1
  188. package/dist/builders/android.js.map +0 -1
  189. package/dist/builders/common.js.map +0 -1
  190. package/dist/builders/custom.js.map +0 -1
  191. package/dist/builders/index.js.map +0 -1
  192. package/dist/builders/ios.js.map +0 -1
  193. package/dist/common/eagerBundle.js.map +0 -1
  194. package/dist/common/easBuildInternal.js.map +0 -1
  195. package/dist/common/fastlane.js.map +0 -1
  196. package/dist/common/git.js.map +0 -1
  197. package/dist/common/installDependencies.js.map +0 -1
  198. package/dist/common/prebuild.js.map +0 -1
  199. package/dist/common/projectSources.js.map +0 -1
  200. package/dist/common/setup.js.map +0 -1
  201. package/dist/context.js.map +0 -1
  202. package/dist/customBuildContext.js.map +0 -1
  203. package/dist/gcs/LoggerStream.js.map +0 -1
  204. package/dist/gcs/__unit__/gcs.test.js.map +0 -1
  205. package/dist/gcs/client.js.map +0 -1
  206. package/dist/gcs/retry.js.map +0 -1
  207. package/dist/generic.js.map +0 -1
  208. package/dist/index.js.map +0 -1
  209. package/dist/ios/configure.js.map +0 -1
  210. package/dist/ios/credentials/distributionCertificate.js.map +0 -1
  211. package/dist/ios/credentials/keychain.js.map +0 -1
  212. package/dist/ios/credentials/manager.js.map +0 -1
  213. package/dist/ios/credentials/provisioningProfile.js.map +0 -1
  214. package/dist/ios/expoUpdates.js.map +0 -1
  215. package/dist/ios/fastfile.js.map +0 -1
  216. package/dist/ios/fastlane.js.map +0 -1
  217. package/dist/ios/gymfile.js.map +0 -1
  218. package/dist/ios/pod.js.map +0 -1
  219. package/dist/ios/resign.js.map +0 -1
  220. package/dist/ios/resolve.js.map +0 -1
  221. package/dist/ios/tvos.js.map +0 -1
  222. package/dist/ios/xcodeBuildLogs.js.map +0 -1
  223. package/dist/ios/xcodeEnv.js.map +0 -1
  224. package/dist/ios/xcpretty.js.map +0 -1
  225. package/dist/steps/easFunctionGroups.js.map +0 -1
  226. package/dist/steps/easFunctions.js.map +0 -1
  227. package/dist/steps/functionGroups/build.js.map +0 -1
  228. package/dist/steps/functionGroups/maestroTest.js.map +0 -1
  229. package/dist/steps/functions/calculateEASUpdateRuntimeVersion.js.map +0 -1
  230. package/dist/steps/functions/ccacheStats.js.map +0 -1
  231. package/dist/steps/functions/checkout.js.map +0 -1
  232. package/dist/steps/functions/configureAndroidVersion.js.map +0 -1
  233. package/dist/steps/functions/configureEASUpdateIfInstalled.js.map +0 -1
  234. package/dist/steps/functions/configureIosCredentials.js.map +0 -1
  235. package/dist/steps/functions/configureIosVersion.js.map +0 -1
  236. package/dist/steps/functions/createSubmissionEntity.js.map +0 -1
  237. package/dist/steps/functions/downloadArtifact.js.map +0 -1
  238. package/dist/steps/functions/downloadBuild.js.map +0 -1
  239. package/dist/steps/functions/eagerBundle.js.map +0 -1
  240. package/dist/steps/functions/findAndUploadBuildArtifacts.js.map +0 -1
  241. package/dist/steps/functions/generateGymfileFromTemplate.js.map +0 -1
  242. package/dist/steps/functions/getCredentialsForBuildTriggeredByGitHubIntegration.js.map +0 -1
  243. package/dist/steps/functions/injectAndroidCredentials.js.map +0 -1
  244. package/dist/steps/functions/installMaestro.js.map +0 -1
  245. package/dist/steps/functions/installNodeModules.js.map +0 -1
  246. package/dist/steps/functions/installPods.js.map +0 -1
  247. package/dist/steps/functions/internalMaestroTest.js.map +0 -1
  248. package/dist/steps/functions/prebuild.js.map +0 -1
  249. package/dist/steps/functions/repack.js.map +0 -1
  250. package/dist/steps/functions/resolveAppleTeamIdFromCredentials.js.map +0 -1
  251. package/dist/steps/functions/resolveBuildConfig.js.map +0 -1
  252. package/dist/steps/functions/restoreBuildCache.js.map +0 -1
  253. package/dist/steps/functions/restoreCache.js.map +0 -1
  254. package/dist/steps/functions/runFastlane.js.map +0 -1
  255. package/dist/steps/functions/runGradle.js.map +0 -1
  256. package/dist/steps/functions/saveBuildCache.js.map +0 -1
  257. package/dist/steps/functions/saveCache.js.map +0 -1
  258. package/dist/steps/functions/sendSlackMessage.js.map +0 -1
  259. package/dist/steps/functions/startAndroidEmulator.js.map +0 -1
  260. package/dist/steps/functions/startCuttlefishDevice.js.map +0 -1
  261. package/dist/steps/functions/startIosSimulator.js.map +0 -1
  262. package/dist/steps/functions/uploadArtifact.js.map +0 -1
  263. package/dist/steps/functions/useNpmToken.js.map +0 -1
  264. package/dist/steps/utils/android/expoUpdates.js.map +0 -1
  265. package/dist/steps/utils/android/gradle.js.map +0 -1
  266. package/dist/steps/utils/android/gradleConfig.js.map +0 -1
  267. package/dist/steps/utils/cache.js.map +0 -1
  268. package/dist/steps/utils/expoUpdates.js.map +0 -1
  269. package/dist/steps/utils/ios/configure.js.map +0 -1
  270. package/dist/steps/utils/ios/credentials/credentials.js.map +0 -1
  271. package/dist/steps/utils/ios/credentials/distributionCertificate.js.map +0 -1
  272. package/dist/steps/utils/ios/credentials/keychain.js.map +0 -1
  273. package/dist/steps/utils/ios/credentials/manager.js.map +0 -1
  274. package/dist/steps/utils/ios/credentials/provisioningProfile.js.map +0 -1
  275. package/dist/steps/utils/ios/expoUpdates.js.map +0 -1
  276. package/dist/steps/utils/ios/fastlane.js.map +0 -1
  277. package/dist/steps/utils/ios/resolve.js.map +0 -1
  278. package/dist/steps/utils/ios/tvos.js.map +0 -1
  279. package/dist/steps/utils/ios/xcpretty.js.map +0 -1
  280. package/dist/steps/utils/slackMessageDynamicFields.js.map +0 -1
  281. package/dist/templates/EasBuildConfigureVersionGradle.js.map +0 -1
  282. package/dist/templates/EasBuildGradle.js.map +0 -1
  283. package/dist/templates/EasBuildInjectAndroidCredentialsGradle.js.map +0 -1
  284. package/dist/templates/FastfileResign.js.map +0 -1
  285. package/dist/templates/GymfileArchive.js.map +0 -1
  286. package/dist/templates/GymfileSimulator.js.map +0 -1
  287. package/dist/templates/npmrc.js.map +0 -1
  288. package/dist/utils/AndroidEmulatorUtils.js.map +0 -1
  289. package/dist/utils/IosSimulatorUtils.js.map +0 -1
  290. package/dist/utils/appConfig.js.map +0 -1
  291. package/dist/utils/artifacts.js.map +0 -1
  292. package/dist/utils/cacheKey.js.map +0 -1
  293. package/dist/utils/diffFingerprintsAsync.js.map +0 -1
  294. package/dist/utils/environmentSecrets.js.map +0 -1
  295. package/dist/utils/expoFingerprintCli.js.map +0 -1
  296. package/dist/utils/expoUpdates.js.map +0 -1
  297. package/dist/utils/expoUpdatesCli.js.map +0 -1
  298. package/dist/utils/files.js.map +0 -1
  299. package/dist/utils/findMaestroPathsFlowsToExecuteAsync.js.map +0 -1
  300. package/dist/utils/fingerprint.js.map +0 -1
  301. package/dist/utils/getExpoUpdatesPackageVersionIfInstalledAsync.js.map +0 -1
  302. package/dist/utils/hooks.js.map +0 -1
  303. package/dist/utils/npmrc.js.map +0 -1
  304. package/dist/utils/outputs.js.map +0 -1
  305. package/dist/utils/packageManager.js.map +0 -1
  306. package/dist/utils/prepareBuildExecutable.js.map +0 -1
  307. package/dist/utils/processes.js.map +0 -1
  308. package/dist/utils/project.js.map +0 -1
  309. package/dist/utils/promiseRetryWithCondition.js.map +0 -1
  310. package/dist/utils/resolveRuntimeVersionAsync.js.map +0 -1
  311. package/dist/utils/retry.js.map +0 -1
  312. package/dist/utils/retryOnDNSFailure.js.map +0 -1
  313. package/dist/utils/stepMetrics.js.map +0 -1
  314. package/dist/utils/strings.js.map +0 -1
  315. package/dist/utils/turtleFetch.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/ios/credentials/manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAC5B,4CAAoB;AACpB,gDAAwB;AAGxB,wDAA0B;AAC1B,mCAAiC;AACjC,4DAAoC;AACpC,+BAAkC;AAIlC,wFAA0E;AAC1E,0DAAkC;AAClC,gFAG+B;AAY/B,MAAqB,qBAAqB;IAKxC,YAA6B,GAAuB;QAAvB,QAAG,GAAH,GAAG,CAAoB;QAHnC,yBAAoB,GAAgC,EAAE,CAAC;QAChE,cAAS,GAAG,KAAK,CAAC;IAE6B,CAAC;IAEjD,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAA,oBAAU,EACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EACpB,+CAA+C,CAChD,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAE9C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9C,MAAM,0BAA0B,GAA+B,EAAE,CAAC;QAClE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAC7D,MAAM,EACN,gBAAgB,CAAC,MAAM,CAAC,CACzB,CAAC;YACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACpD,0BAA0B,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC;QAChE,CAAC;QAED,MAAM,oCAAoC,GAAG,IAAI,CAAC,uCAAuC,EAAE,CAAC;QAE5F,0EAA0E;QAC1E,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,oCAAoC,CAAC,IAAI,CAAC;QAE/E,OAAO;YACL,oCAAoC;YACpC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;YACrC,0BAA0B;YAC1B,gBAAgB;YAChB,MAAM;SACP,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YACjF,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,KAAK,MAAM,mBAAmB,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5D,MAAM,mBAAmB,CAAC,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,wBAAwB,CACpC,MAAc,EACd,iBAAwC;QAExC,IAAI,CAAC;YACH,IAAA,gBAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC;YAExD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,MAAM,GAAG,CAAC,CAAC;YACrE,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,GAAG,IAAA,SAAI,GAAE,MAAM,CAAC,CAAC;YAE7D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YACrF,MAAM,sBAAsB,GAAG,4BAA4B,CAAC,cAAc,CACxE,iBAAiB,CAAC,uBAAuB,CAC1C,CAAC;YACF,MAAM,qBAAqB,GAAG,4BAA4B,CAAC,aAAa,CACtE,iBAAiB,CAAC,uBAAuB,CAC1C,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAClB,kBAAkB,sBAAsB,oBAAoB,qBAAqB,EAAE,CACpF,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,YAAY,EAAE,CAAC,CAAC;YAC5E,MAAM,kBAAE,CAAC,SAAS,CAChB,YAAY,EACZ,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAC5E,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YAC7E,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CACnC,YAAY,EACZ,iBAAiB,CAAC,uBAAuB,CAAC,QAAQ,CACnD,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAC1D,MAAM,mBAAmB,GAAG,IAAI,6BAAmB,CACjD,IAAI,CAAC,GAAG,EACR,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,QAAQ,CAAC,EAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EACvB,MAAM,EACN,qBAAqB,CACtB,CAAC;YACF,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAAC;YAEjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAClB,gFAAgF,CACjF,CAAC;YACF,MAAM,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAC3C,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAC/B,sBAAsB,CACvB,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAClB,+EAA+E,CAChF,CAAC;YACF,mBAAmB,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;YAE9D,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,uCAAuC;QAC7C,uDAAuD;QACvD,MAAM,MAAM,GAAG,IAAA,gBAAO,EAAC,IAAI,CAAC,oBAAoB,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;CACF;AAvID,wCAuIC","sourcesContent":["import assert from 'assert';\nimport os from 'os';\nimport path from 'path';\n\nimport { Ios } from '@expo/eas-build-job';\nimport fs from 'fs-extra';\nimport { orderBy } from 'lodash';\nimport nullthrows from 'nullthrows';\nimport { v4 as uuid } from 'uuid';\n\nimport { BuildContext } from '../../context';\n\nimport * as distributionCertificateUtils from './distributionCertificate';\nimport Keychain from './keychain';\nimport ProvisioningProfile, {\n DistributionType,\n ProvisioningProfileData,\n} from './provisioningProfile';\n\nexport interface Credentials {\n applicationTargetProvisioningProfile: ProvisioningProfile<Ios.Job>;\n keychainPath: string;\n targetProvisioningProfiles: TargetProvisioningProfiles;\n distributionType: DistributionType;\n teamId: string;\n}\n\nexport type TargetProvisioningProfiles = Record<string, ProvisioningProfileData>;\n\nexport default class IosCredentialsManager<TJob extends Ios.Job> {\n private keychain?: Keychain<TJob>;\n private readonly provisioningProfiles: ProvisioningProfile<TJob>[] = [];\n private cleanedUp = false;\n\n constructor(private readonly ctx: BuildContext<TJob>) {}\n\n public async prepare(): Promise<Credentials | null> {\n if (this.ctx.job.simulator) {\n return null;\n }\n\n const { buildCredentials } = nullthrows(\n this.ctx.job.secrets,\n 'Secrets must be defined for non-custom builds'\n );\n if (!buildCredentials) {\n throw new Error('credentials are required for an iOS build');\n }\n\n this.ctx.logger.info('Preparing credentials');\n\n this.ctx.logger.info('Creating keychain');\n this.keychain = new Keychain(this.ctx);\n await this.keychain.create();\n\n const targets = Object.keys(buildCredentials);\n const targetProvisioningProfiles: TargetProvisioningProfiles = {};\n for (const target of targets) {\n const provisioningProfile = await this.prepareTargetCredentials(\n target,\n buildCredentials[target]\n );\n this.provisioningProfiles.push(provisioningProfile);\n targetProvisioningProfiles[target] = provisioningProfile.data;\n }\n\n const applicationTargetProvisioningProfile = this.getApplicationTargetProvisioningProfile();\n\n // TODO: ensure that all dist types and team ids in the array are the same\n const { distributionType, teamId } = applicationTargetProvisioningProfile.data;\n\n return {\n applicationTargetProvisioningProfile,\n keychainPath: this.keychain.data.path,\n targetProvisioningProfiles,\n distributionType,\n teamId,\n };\n }\n\n public async cleanUp(): Promise<void> {\n if (this.cleanedUp || (!this.keychain && this.provisioningProfiles.length === 0)) {\n return;\n }\n\n if (this.keychain) {\n await this.keychain.destroy();\n }\n if (this.provisioningProfiles) {\n for (const provisioningProfile of this.provisioningProfiles) {\n await provisioningProfile.destroy();\n }\n }\n this.cleanedUp = true;\n }\n\n private async prepareTargetCredentials(\n target: string,\n targetCredentials: Ios.TargetCredentials\n ): Promise<ProvisioningProfile<TJob>> {\n try {\n assert(this.keychain, 'Keychain should be initialized');\n\n this.ctx.logger.info(`Preparing credentials for target '${target}'`);\n const distCertPath = path.join(os.tmpdir(), `${uuid()}.p12`);\n\n this.ctx.logger.info('Getting distribution certificate fingerprint and common name');\n const certificateFingerprint = distributionCertificateUtils.getFingerprint(\n targetCredentials.distributionCertificate\n );\n const certificateCommonName = distributionCertificateUtils.getCommonName(\n targetCredentials.distributionCertificate\n );\n this.ctx.logger.info(\n `Fingerprint = \"${certificateFingerprint}\", common name = ${certificateCommonName}`\n );\n\n this.ctx.logger.info(`Writing distribution certificate to ${distCertPath}`);\n await fs.writeFile(\n distCertPath,\n Buffer.from(targetCredentials.distributionCertificate.dataBase64, 'base64')\n );\n\n this.ctx.logger.info('Importing distribution certificate into the keychain');\n await this.keychain.importCertificate(\n distCertPath,\n targetCredentials.distributionCertificate.password\n );\n\n this.ctx.logger.info('Initializing provisioning profile');\n const provisioningProfile = new ProvisioningProfile(\n this.ctx,\n Buffer.from(targetCredentials.provisioningProfileBase64, 'base64'),\n this.keychain.data.path,\n target,\n certificateCommonName\n );\n await provisioningProfile.init();\n\n this.ctx.logger.info(\n 'Validating whether the distribution certificate has been imported successfully'\n );\n await this.keychain.ensureCertificateImported(\n provisioningProfile.data.teamId,\n certificateFingerprint\n );\n\n this.ctx.logger.info(\n 'Verifying whether the distribution certificate and provisioning profile match'\n );\n provisioningProfile.verifyCertificate(certificateFingerprint);\n\n return provisioningProfile;\n } catch (err) {\n await this.cleanUp();\n throw err;\n }\n }\n\n private getApplicationTargetProvisioningProfile(): ProvisioningProfile<TJob> {\n // sorting works because bundle ids share common prefix\n const sorted = orderBy(this.provisioningProfiles, 'data.bundleIdentifier', 'asc');\n return sorted[0];\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"provisioningProfile.js","sourceRoot":"","sources":["../../../src/ios/credentials/provisioningProfile.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from 'crypto';\nimport os from 'os';\nimport path from 'path';\n\nimport { errors, Ios } from '@expo/eas-build-job';\nimport spawn from '@expo/turtle-spawn';\nimport fs from 'fs-extra';\nimport plist from 'plist';\nimport { v4 as uuid } from 'uuid';\n\nimport { BuildContext } from '../../context';\n\nexport interface ProvisioningProfileData {\n path: string;\n target: string;\n bundleIdentifier: string;\n teamId: string;\n uuid: string;\n name: string;\n developerCertificate: Buffer;\n certificateCommonName: string;\n distributionType: DistributionType;\n}\n\nexport enum DistributionType {\n AD_HOC = 'ad-hoc',\n APP_STORE = 'app-store',\n ENTERPRISE = 'enterprise',\n}\n\nconst PROVISIONING_PROFILES_DIRECTORY = path.join(\n os.homedir(),\n 'Library/MobileDevice/Provisioning Profiles'\n);\n\nexport default class ProvisioningProfile<TJob extends Ios.Job> {\n get data(): ProvisioningProfileData {\n if (!this.profileData) {\n throw new Error('You must init the profile first!');\n } else {\n return this.profileData;\n }\n }\n\n private readonly profilePath: string;\n private profileData?: ProvisioningProfileData;\n\n constructor(\n private readonly ctx: BuildContext<TJob>,\n private readonly profile: Buffer,\n private readonly keychainPath: string,\n private readonly target: string,\n private readonly certificateCommonName: string\n ) {\n this.profilePath = path.join(PROVISIONING_PROFILES_DIRECTORY, `${uuid()}.mobileprovision`);\n }\n\n public async init(): Promise<void> {\n this.ctx.logger.debug(`Making sure ${PROVISIONING_PROFILES_DIRECTORY} exits`);\n await fs.ensureDir(PROVISIONING_PROFILES_DIRECTORY);\n\n this.ctx.logger.debug(`Writing provisioning profile to ${this.profilePath}`);\n await fs.writeFile(this.profilePath, this.profile);\n\n this.ctx.logger.debug('Loading provisioning profile');\n await this.load();\n }\n\n public async destroy(): Promise<void> {\n if (!this.profilePath) {\n this.ctx.logger.warn(\n \"There is nothing to destroy, a provisioning profile hasn't been created yet.\"\n );\n return;\n }\n this.ctx.logger.info('Removing provisioning profile');\n await fs.remove(this.profilePath);\n }\n\n public verifyCertificate(fingerprint: string): void {\n const devCertFingerprint = this.genDerCertFingerprint();\n if (devCertFingerprint !== fingerprint) {\n throw new errors.CredentialsDistCertMismatchError(\n `Provisioning profile and distribution certificate don't match.\nProfile's certificate fingerprint = ${devCertFingerprint}, distribution certificate fingerprint = ${fingerprint}`\n );\n }\n }\n\n private async load(): Promise<void> {\n let result;\n try {\n result = await spawn(\n 'security',\n ['cms', '-D', '-k', this.keychainPath, '-i', this.profilePath],\n {\n stdio: 'pipe',\n }\n );\n } catch (err: any) {\n throw new Error(err.stderr.trim());\n }\n const { output } = result;\n\n const plistRaw = output.join('');\n let plistData;\n try {\n plistData = plist.parse(plistRaw) as plist.PlistObject;\n } catch (error: any) {\n throw new Error(`Error when parsing plist: ${error.message}`);\n }\n\n const applicationIdentifier = (plistData.Entitlements as plist.PlistObject)[\n 'application-identifier'\n ] as string;\n const bundleIdentifier = applicationIdentifier.replace(/^.+?\\./, '');\n\n this.profileData = {\n path: this.profilePath,\n target: this.target,\n bundleIdentifier,\n teamId: (plistData.TeamIdentifier as string[])[0],\n uuid: plistData.UUID as string,\n name: plistData.Name as string,\n developerCertificate: Buffer.from((plistData.DeveloperCertificates as string[])[0], 'base64'),\n certificateCommonName: this.certificateCommonName,\n distributionType: this.resolveDistributionType(plistData),\n };\n }\n\n private resolveDistributionType(plistData: plist.PlistObject): DistributionType {\n if (plistData.ProvisionsAllDevices) {\n return DistributionType.ENTERPRISE;\n } else if (plistData.ProvisionedDevices) {\n return DistributionType.AD_HOC;\n } else {\n return DistributionType.APP_STORE;\n }\n }\n\n private genDerCertFingerprint(): string {\n return crypto\n .createHash('sha1')\n .update(this.data.developerCertificate)\n .digest('hex')\n .toUpperCase();\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"expoUpdates.js","sourceRoot":"","sources":["../../src/ios/expoUpdates.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport { IOSConfig } from '@expo/config-plugins';\nimport fs from 'fs-extra';\nimport plist from '@expo/plist';\nimport { BuildJob, Job } from '@expo/eas-build-job';\n\nimport { BuildContext } from '../context';\n\nexport enum IosMetadataName {\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'EXUpdatesRequestHeaders',\n RUNTIME_VERSION = 'EXUpdatesRuntimeVersion',\n}\n\nexport async function iosSetRuntimeVersionNativelyAsync(\n ctx: BuildContext<Job>,\n runtimeVersion: string\n): Promise<void> {\n const expoPlistPath = IOSConfig.Paths.getExpoPlistPath(ctx.getReactNativeProjectDirectory());\n\n if (!(await fs.pathExists(expoPlistPath))) {\n throw new Error(`${expoPlistPath} does not exist`);\n }\n\n const expoPlistContents = await fs.readFile(expoPlistPath, 'utf8');\n const items = plist.parse(expoPlistContents);\n items[IosMetadataName.RUNTIME_VERSION] = runtimeVersion;\n const updatedExpoPlistContents = plist.build(items);\n\n await fs.writeFile(expoPlistPath, updatedExpoPlistContents);\n}\n\nexport async function iosSetChannelNativelyAsync(ctx: BuildContext<BuildJob>): Promise<void> {\n assert(ctx.job.updates?.channel, 'updates.channel must be defined');\n\n const expoPlistPath = IOSConfig.Paths.getExpoPlistPath(ctx.getReactNativeProjectDirectory());\n\n if (!(await fs.pathExists(expoPlistPath))) {\n throw new Error(`${expoPlistPath} does not exist`);\n }\n\n const expoPlistContents = await fs.readFile(expoPlistPath, 'utf8');\n const items: Record<string, string | Record<string, string>> = plist.parse(expoPlistContents);\n items[IosMetadataName.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY] = {\n ...((items[IosMetadataName.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY] as Record<\n string,\n string\n >) ?? {}),\n 'expo-channel-name': ctx.job.updates.channel,\n };\n const updatedExpoPlistContents = plist.build(items);\n\n await fs.writeFile(expoPlistPath, updatedExpoPlistContents);\n}\n\nexport async function iosGetNativelyDefinedChannelAsync(\n ctx: BuildContext<Job>\n): Promise<string | null> {\n const expoPlistPath = IOSConfig.Paths.getExpoPlistPath(ctx.getReactNativeProjectDirectory());\n\n if (!(await fs.pathExists(expoPlistPath))) {\n return null;\n }\n\n const expoPlistContents = await fs.readFile(expoPlistPath, 'utf8');\n try {\n const items: Record<string, string | Record<string, string>> = plist.parse(expoPlistContents);\n const updatesRequestHeaders = (items[\n IosMetadataName.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY\n ] ?? {}) as Record<string, string>;\n return updatesRequestHeaders['expo-channel-name'] ?? null;\n } catch (err: any) {\n throw new Error(\n `Failed to parse ${IosMetadataName.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY} from Expo.plist: ${err.message}`\n );\n }\n}\n\nexport async function iosGetNativelyDefinedRuntimeVersionAsync(\n ctx: BuildContext<Job>\n): Promise<string | null> {\n const expoPlistPath = IOSConfig.Paths.getExpoPlistPath(ctx.getReactNativeProjectDirectory());\n if (!(await fs.pathExists(expoPlistPath))) {\n return null;\n }\n const expoPlistContents = await fs.readFile(expoPlistPath, 'utf8');\n const parsedPlist = plist.parse(expoPlistContents);\n if (!parsedPlist) {\n return null;\n }\n return parsedPlist[IosMetadataName.RUNTIME_VERSION] ?? null;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fastfile.js","sourceRoot":"","sources":["../../src/ios/fastfile.ts"],"names":[],"mappings":";;;;;AAOA,0EAmCC;AA1CD,uDAAqD;AACrD,wDAA0B;AAE1B,gEAAqE;AAI9D,KAAK,UAAU,+BAA+B,CAAC,EACpD,UAAU,EACV,OAAO,EACP,eAAe,EACf,YAAY,EACZ,0BAA0B,GAO3B;IACC,MAAM,QAAQ,GAA0C,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACxD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC;YACZ,SAAS,EAAE,OAAO,CAAC,gBAAgB;YACnC,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,8BAAc,EAAC;QAC5B,KAAK,EAAE,uCAAsB;QAC7B,IAAI,EAAE;YACJ,QAAQ,EAAE,OAAO;YACjB,gBAAgB,EAAE,eAAe;YACjC,QAAQ;YACR,aAAa,EAAE,YAAY;SAC5B;QACD,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC","sourcesContent":["import { templateString } from '@expo/template-file';\nimport fs from 'fs-extra';\n\nimport { FastfileResignTemplate } from '../templates/FastfileResign';\n\nimport { TargetProvisioningProfiles } from './credentials/manager';\n\nexport async function createFastfileForResigningBuild({\n outputFile,\n ipaPath,\n signingIdentity,\n keychainPath,\n targetProvisioningProfiles,\n}: {\n outputFile: string;\n ipaPath: string;\n signingIdentity: string;\n keychainPath: string;\n targetProvisioningProfiles: TargetProvisioningProfiles;\n}): Promise<void> {\n const PROFILES: { BUNDLE_ID: string; PATH: string }[] = [];\n const targets = Object.keys(targetProvisioningProfiles);\n for (const target of targets) {\n const profile = targetProvisioningProfiles[target];\n PROFILES.push({\n BUNDLE_ID: profile.bundleIdentifier,\n PATH: profile.path,\n });\n }\n\n const output = templateString({\n input: FastfileResignTemplate,\n vars: {\n IPA_PATH: ipaPath,\n SIGNING_IDENTITY: signingIdentity,\n PROFILES,\n KEYCHAIN_PATH: keychainPath,\n },\n mustache: false,\n });\n\n await fs.writeFile(outputFile, output);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fastlane.js","sourceRoot":"","sources":["../../src/ios/fastlane.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\n\nimport { Env, Ios } from '@expo/eas-build-job';\nimport { bunyan } from '@expo/logger';\nimport spawn, { SpawnResult } from '@expo/turtle-spawn';\nimport fs from 'fs-extra';\nimport nullthrows from 'nullthrows';\n\nimport { BuildContext, SkipNativeBuildError } from '../context';\nimport { COMMON_FASTLANE_ENV } from '../common/fastlane';\n\nimport { createGymfileForArchiveBuild, createGymfileForSimulatorBuild } from './gymfile';\nimport { Credentials } from './credentials/manager';\nimport { XcodeBuildLogger } from './xcpretty';\nimport { isTVOS } from './tvos';\nimport { createFastfileForResigningBuild } from './fastfile';\n\nexport async function runFastlaneGym<TJob extends Ios.Job>(\n ctx: BuildContext<TJob>,\n {\n scheme,\n buildConfiguration,\n credentials,\n entitlements,\n extraEnv,\n }: {\n scheme: string;\n buildConfiguration?: string;\n credentials: Credentials | null;\n entitlements: object | null;\n extraEnv?: Env;\n }\n): Promise<void> {\n await ensureGymfileExists(ctx, {\n scheme,\n buildConfiguration,\n credentials,\n logsDirectory: ctx.buildLogsDirectory,\n entitlements,\n });\n if (ctx.skipNativeBuild) {\n throw new SkipNativeBuildError('Skipping fastlane build');\n }\n const buildLogger = new XcodeBuildLogger(ctx.logger, ctx.getReactNativeProjectDirectory());\n void buildLogger.watchLogFiles(ctx.buildLogsDirectory);\n try {\n await runFastlane(['gym'], {\n cwd: path.join(ctx.getReactNativeProjectDirectory(), 'ios'),\n logger: ctx.logger,\n env: { ...ctx.env, ...extraEnv },\n });\n } finally {\n await buildLogger.flush();\n }\n}\n\nexport async function runFastlaneResign<TJob extends Ios.Job>(\n ctx: BuildContext<TJob>,\n { credentials, ipaPath }: { credentials: Credentials; ipaPath: string }\n): Promise<void> {\n const { certificateCommonName } = credentials.applicationTargetProvisioningProfile.data;\n\n const fastlaneDirPath = path.join(ctx.buildDirectory, 'fastlane');\n await fs.ensureDir(fastlaneDirPath);\n const fastfilePath = path.join(fastlaneDirPath, 'Fastfile');\n await createFastfileForResigningBuild({\n outputFile: fastfilePath,\n ipaPath,\n keychainPath: credentials.keychainPath,\n signingIdentity: certificateCommonName,\n targetProvisioningProfiles: credentials.targetProvisioningProfiles,\n });\n\n await runFastlane(['do_resign'], {\n cwd: ctx.buildDirectory,\n logger: ctx.logger,\n env: ctx.env,\n });\n}\n\nexport async function runFastlane(\n fastlaneArgs: string[],\n {\n logger,\n env,\n cwd,\n }: {\n logger?: bunyan;\n env?: Record<string, string>;\n cwd?: string;\n } = {}\n): Promise<SpawnResult> {\n return await spawn('fastlane', fastlaneArgs, {\n env: {\n ...COMMON_FASTLANE_ENV,\n ...(env ?? process.env),\n },\n logger,\n cwd,\n });\n}\n\nasync function ensureGymfileExists<TJob extends Ios.Job>(\n ctx: BuildContext<TJob>,\n {\n scheme,\n buildConfiguration,\n credentials,\n logsDirectory,\n entitlements,\n }: {\n scheme: string;\n buildConfiguration?: string;\n credentials: Credentials | null;\n logsDirectory: string;\n entitlements: object | null;\n }\n): Promise<void> {\n const gymfilePath = path.join(ctx.getReactNativeProjectDirectory(), 'ios/Gymfile');\n\n if (await fs.pathExists(gymfilePath)) {\n ctx.logger.info('Gymfile already exists');\n return;\n }\n\n ctx.logger.info('Creating Gymfile');\n if (ctx.job.simulator) {\n const isTV = await isTVOS(ctx);\n const simulatorDestination = `generic/platform=${isTV ? 'tvOS' : 'iOS'} Simulator`;\n\n await createGymfileForSimulatorBuild({\n outputFile: gymfilePath,\n scheme,\n buildConfiguration: buildConfiguration ?? 'release',\n derivedDataPath: './build',\n clean: false,\n logsDirectory,\n simulatorDestination,\n });\n } else {\n await createGymfileForArchiveBuild({\n outputFile: gymfilePath,\n credentials: nullthrows(credentials, 'credentials must exist for non-simulator builds'),\n scheme,\n buildConfiguration,\n outputDirectory: './build',\n clean: false,\n logsDirectory,\n entitlements: entitlements ?? undefined,\n });\n }\n\n ctx.logger.info('Gymfile created');\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"gymfile.js","sourceRoot":"","sources":["../../src/ios/gymfile.ts"],"names":[],"mappings":";;;;;AA6BA,oEAwCC;AAED,wEAsBC;AA7FD,uDAAqD;AACrD,wDAA0B;AAE1B,gEAAqE;AACrE,oEAAyE;AAyBlE,KAAK,UAAU,4BAA4B,CAAC,EACjD,UAAU,EACV,KAAK,EACL,WAAW,EACX,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,aAAa,GACO;IACpB,MAAM,QAAQ,GAA0C,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IACpE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,WAAW,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC/D,QAAQ,CAAC,IAAI,CAAC;YACZ,SAAS,EAAE,OAAO,CAAC,gBAAgB;YACnC,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,4BAA4B,GAChC,YACD,aADC,YAAY,uBAAZ,YAAY,CACV,kDAAkD,CAAuB,CAAC;IAE9E,MAAM,kBAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/B,MAAM,aAAa,CAAC;QAClB,QAAQ,EAAE,uCAAsB;QAChC,UAAU;QACV,IAAI,EAAE;YACJ,aAAa,EAAE,WAAW,CAAC,YAAY;YACvC,MAAM,EAAE,MAAM;YACd,0BAA0B,EAAE,kBAAkB;YAC9C,gBAAgB,EAAE,eAAe;YACjC,aAAa,EAAE,WAAW,CAAC,gBAAgB;YAC3C,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YACpB,cAAc,EAAE,aAAa;YAC7B,QAAQ;YACR,4BAA4B;SAC7B;KACF,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,8BAA8B,CAAC,EACnD,UAAU,EACV,KAAK,EACL,MAAM,EACN,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,oBAAoB,GACE;IACtB,MAAM,kBAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/B,MAAM,aAAa,CAAC;QAClB,QAAQ,EAAE,2CAAwB;QAClC,UAAU;QACV,IAAI,EAAE;YACJ,MAAM,EAAE,MAAM;YACd,0BAA0B,EAAE,kBAAkB;YAC9C,4BAA4B,EAAE,oBAAoB;YAClD,iBAAiB,EAAE,eAAe;YAClC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YACpB,cAAc,EAAE,aAAa;SAC9B;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,EAC3B,QAAQ,EACR,UAAU,EACV,IAAI,GAKL;IACC,MAAM,MAAM,GAAG,IAAA,8BAAc,EAAC;QAC5B,KAAK,EAAE,QAAQ;QACf,IAAI;QACJ,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC","sourcesContent":["import { templateString } from '@expo/template-file';\nimport fs from 'fs-extra';\n\nimport { GymfileArchiveTemplate } from '../templates/GymfileArchive';\nimport { GymfileSimulatorTemplate } from '../templates/GymfileSimulator';\n\nimport { Credentials } from './credentials/manager';\n\ninterface ArchiveBuildOptions {\n outputFile: string;\n credentials: Credentials;\n scheme: string;\n buildConfiguration?: string;\n outputDirectory: string;\n clean: boolean;\n logsDirectory: string;\n entitlements?: object;\n}\n\ninterface SimulatorBuildOptions {\n outputFile: string;\n scheme: string;\n buildConfiguration?: string;\n derivedDataPath: string;\n clean: boolean;\n logsDirectory: string;\n simulatorDestination: string;\n}\n\nexport async function createGymfileForArchiveBuild({\n outputFile,\n clean,\n credentials,\n scheme,\n buildConfiguration,\n entitlements,\n outputDirectory,\n logsDirectory,\n}: ArchiveBuildOptions): Promise<void> {\n const PROFILES: { BUNDLE_ID: string; UUID: string }[] = [];\n const targets = Object.keys(credentials.targetProvisioningProfiles);\n for (const target of targets) {\n const profile = credentials.targetProvisioningProfiles[target];\n PROFILES.push({\n BUNDLE_ID: profile.bundleIdentifier,\n UUID: profile.uuid,\n });\n }\n\n const ICLOUD_CONTAINER_ENVIRONMENT = (\n entitlements as Record<string, string | Record<string, string>>\n )?.['com.apple.developer.icloud-container-environment'] as string | undefined;\n\n await fs.mkdirp(logsDirectory);\n await createGymfile({\n template: GymfileArchiveTemplate,\n outputFile,\n vars: {\n KEYCHAIN_PATH: credentials.keychainPath,\n SCHEME: scheme,\n SCHEME_BUILD_CONFIGURATION: buildConfiguration,\n OUTPUT_DIRECTORY: outputDirectory,\n EXPORT_METHOD: credentials.distributionType,\n CLEAN: String(clean),\n LOGS_DIRECTORY: logsDirectory,\n PROFILES,\n ICLOUD_CONTAINER_ENVIRONMENT,\n },\n });\n}\n\nexport async function createGymfileForSimulatorBuild({\n outputFile,\n clean,\n scheme,\n buildConfiguration,\n derivedDataPath,\n logsDirectory,\n simulatorDestination,\n}: SimulatorBuildOptions): Promise<void> {\n await fs.mkdirp(logsDirectory);\n await createGymfile({\n template: GymfileSimulatorTemplate,\n outputFile,\n vars: {\n SCHEME: scheme,\n SCHEME_BUILD_CONFIGURATION: buildConfiguration,\n SCHEME_SIMULATOR_DESTINATION: simulatorDestination,\n DERIVED_DATA_PATH: derivedDataPath,\n CLEAN: String(clean),\n LOGS_DIRECTORY: logsDirectory,\n },\n });\n}\n\nasync function createGymfile({\n template,\n outputFile,\n vars,\n}: {\n template: string;\n outputFile: string;\n vars: Record<string, string | number | any>;\n}): Promise<void> {\n const output = templateString({\n input: template,\n vars,\n mustache: false,\n });\n await fs.writeFile(outputFile, output);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pod.js","sourceRoot":"","sources":["../../src/ios/pod.ts"],"names":[],"mappings":";;;;;AAOA,kCA8BC;AArCD,gDAAwB;AAGxB,sEAAoF;AAI7E,KAAK,UAAU,WAAW,CAC/B,GAAuB,EACvB,EAAE,cAAc,EAAgB;IAEhC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,KAAK,CAAC,CAAC;IAEtE,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,MAAM,uBAAuB,GAAG,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAElG,OAAO;QACL,YAAY,EAAE,IAAA,sBAAK,EAAC,KAAK,EAAE,CAAC,SAAS,EAAE,GAAG,WAAW,EAAE,GAAG,uBAAuB,CAAC,EAAE;YAClF,GAAG,EAAE,MAAM;YACX,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE;gBACH,GAAG,GAAG,CAAC,GAAG;gBACV,IAAI,EAAE,aAAa;aACpB;YACD,eAAe,EAAE,CAAC,IAAa,EAAE,EAAE;gBACjC,IACE,CAAC,IAAI;oBACL,2EAA2E,CAAC,IAAI,CAAC,IAAI,CAAC,EACtF,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,cAAc;SACf,CAAC;KACH,CAAC;AACJ,CAAC","sourcesContent":["import path from 'path';\n\nimport { Ios } from '@expo/eas-build-job';\nimport spawn, { SpawnOptions, SpawnPromise, SpawnResult } from '@expo/turtle-spawn';\n\nimport { BuildContext } from '../context';\n\nexport async function installPods<TJob extends Ios.Job>(\n ctx: BuildContext<TJob>,\n { infoCallbackFn }: SpawnOptions\n): Promise<{ spawnPromise: SpawnPromise<SpawnResult> }> {\n const iosDir = path.join(ctx.getReactNativeProjectDirectory(), 'ios');\n\n const verboseFlag = ctx.env['EAS_VERBOSE'] === '1' ? ['--verbose'] : [];\n const cocoapodsDeploymentFlag = ctx.env['POD_INSTALL_DEPLOYMENT'] === '1' ? ['--deployment'] : [];\n\n return {\n spawnPromise: spawn('pod', ['install', ...verboseFlag, ...cocoapodsDeploymentFlag], {\n cwd: iosDir,\n logger: ctx.logger,\n env: {\n ...ctx.env,\n LANG: 'en_US.UTF-8',\n },\n lineTransformer: (line?: string) => {\n if (\n !line ||\n /\\[!\\] '[\\w-]+' uses the unencrypted 'http' protocol to transfer the Pod\\./.exec(line)\n ) {\n return null;\n } else {\n return line;\n }\n },\n infoCallbackFn,\n }),\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resign.js","sourceRoot":"","sources":["../../src/ios/resign.ts"],"names":[],"mappings":";;;;;AAQA,0EAoBC;AA5BD,oDAA4B;AAC5B,gDAAwB;AAExB,kEAA4C;AAC5C,uDAA6D;AAItD,KAAK,UAAU,+BAA+B,CAAC,GAA0B;;IAC9E,IAAA,gBAAM,EAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvB,MAAM,sBAAsB,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAE5E,MAAM,EAAE,wBAAwB,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;IACpD,IAAI,wBAAwB,CAAC,IAAI,KAAK,iCAAiB,CAAC,GAAG,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,IAAA,oBAAY,EAAC,wBAAwB,CAAC,GAAG,EAAE,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAA,GAAG,CAAC,WAAW,oDAAG,4CAA4C,EAAE,GAAG,EAAE;gBACnE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE;aAC1C,CAAC,CAAC;YACH,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,sBAAsB,CAAC;AAChC,CAAC","sourcesContent":["import assert from 'assert';\nimport path from 'path';\n\nimport downloadFile from '@expo/downloader';\nimport { ArchiveSourceType, Ios } from '@expo/eas-build-job';\n\nimport { BuildContext } from '../context';\n\nexport async function downloadApplicationArchiveAsync(ctx: BuildContext<Ios.Job>): Promise<string> {\n assert(ctx.job.resign);\n\n const applicationArchivePath = path.join(ctx.workingdir, 'application.ipa');\n\n const { applicationArchiveSource } = ctx.job.resign;\n if (applicationArchiveSource.type === ArchiveSourceType.URL) {\n try {\n await downloadFile(applicationArchiveSource.url, applicationArchivePath, { retry: 3 });\n } catch (err: any) {\n ctx.reportError?.('Failed to download the application archive', err, {\n extras: { buildId: ctx.env.EAS_BUILD_ID },\n });\n throw err;\n }\n } else {\n throw new Error('Only application archive URLs are supported');\n }\n\n return applicationArchivePath;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/ios/resolve.ts"],"names":[],"mappings":";;;;;AAOA,sCASC;AAED,kDAQC;AAED,8DAQC;AApCD,oDAA4B;AAG5B,yDAAiD;AAIjD,SAAgB,aAAa,CAAC,GAA0B;IACtD,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;IACxB,CAAC;IACD,MAAM,OAAO,GAAG,0BAAS,CAAC,WAAW,CAAC,uBAAuB,CAC3D,GAAG,CAAC,8BAA8B,EAAE,CACrC,CAAC;IACF,IAAA,gBAAM,EAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,gDAAgD,CAAC,CAAC;IAC/E,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAA0B;IAC5D,IAAI,GAAG,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACnC,OAAO,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACxC,CAAC;SAAM,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC7B,OAAO,2CAA2C,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAgB,yBAAyB,CAAC,GAA0B;IAClE,IAAI,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACpC,CAAC;SAAM,IAAI,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC","sourcesContent":["import assert from 'assert';\n\nimport { Ios } from '@expo/eas-build-job';\nimport { IOSConfig } from '@expo/config-plugins';\n\nimport { BuildContext } from '../context';\n\nexport function resolveScheme(ctx: BuildContext<Ios.Job>): string {\n if (ctx.job.scheme) {\n return ctx.job.scheme;\n }\n const schemes = IOSConfig.BuildScheme.getSchemesFromXcodeproj(\n ctx.getReactNativeProjectDirectory()\n );\n assert(schemes.length === 1, 'Ejected project should have exactly one scheme');\n return schemes[0];\n}\n\nexport function resolveArtifactPath(ctx: BuildContext<Ios.Job>): string {\n if (ctx.job.applicationArchivePath) {\n return ctx.job.applicationArchivePath;\n } else if (ctx.job.simulator) {\n return 'ios/build/Build/Products/*simulator/*.app';\n } else {\n return 'ios/build/*.ipa';\n }\n}\n\nexport function resolveBuildConfiguration(ctx: BuildContext<Ios.Job>): string {\n if (ctx.job.buildConfiguration) {\n return ctx.job.buildConfiguration;\n } else if (ctx.job.developmentClient) {\n return 'Debug';\n } else {\n return 'Release';\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tvos.js","sourceRoot":"","sources":["../../src/ios/tvos.ts"],"names":[],"mappings":";;AAeA,wBAiBC;AA/BD,yDAAiD;AAIjD,uCAAqE;AAErE,8DAA8D;AAE9D;;;;;GAKG;AACI,KAAK,UAAU,MAAM,CAAC,GAA0B;;IACrD,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,0BAAS,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC,CAAC;IAEtF,MAAM,UAAU,GAAG,MAAM,0BAAS,CAAC,WAAW,CAAC,sCAAsC,CACnF,GAAG,CAAC,8BAA8B,EAAE,EACpC,MAAM,CACP,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,mCAAyB,EAAC,GAAG,CAAC,CAAC;IAE1D,MAAM,oBAAoB,GAAG,0BAAS,CAAC,MAAM,CAAC,kCAAkC,CAAC,OAAO,EAAE;QACxF,UAAU;QACV,kBAAkB;KACnB,CAAC,CAAC;IACH,OAAO,MAAA,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,aAAa,0CAAE,OAAO,0CAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC3E,CAAC","sourcesContent":["import { Ios } from '@expo/eas-build-job';\nimport { IOSConfig } from '@expo/config-plugins';\n\nimport { BuildContext } from '../context';\n\nimport { resolveBuildConfiguration, resolveScheme } from './resolve';\n\n// Functions specific to Apple TV support should be added here\n\n/**\n * Use XcodeUtils to check if a build configuration is for Apple TV and not iOS\n *\n * @param ctx The build context\n * @returns true if this is an Apple TV configuration, false otherwise\n */\nexport async function isTVOS(ctx: BuildContext<Ios.Job>): Promise<boolean> {\n const scheme = resolveScheme(ctx);\n\n const project = IOSConfig.XcodeUtils.getPbxproj(ctx.getReactNativeProjectDirectory());\n\n const targetName = await IOSConfig.BuildScheme.getApplicationTargetNameForSchemeAsync(\n ctx.getReactNativeProjectDirectory(),\n scheme\n );\n\n const buildConfiguration = resolveBuildConfiguration(ctx);\n\n const xcBuildConfiguration = IOSConfig.Target.getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n return xcBuildConfiguration?.buildSettings?.SDKROOT?.includes('appletv');\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"xcodeBuildLogs.js","sourceRoot":"","sources":["../../src/ios/xcodeBuildLogs.ts"],"names":[],"mappings":";;;;;AASA,4EAkBC;AAED,kEAcC;AA3CD,4CAAoB;AACpB,gDAAwB;AAExB,uDAA+D;AAC/D,0DAA2B;AAKpB,KAAK,UAAU,gCAAgC,CACpD,GAA0B,EAC1B,EAAE,MAAM,EAAsB;IAE9B,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACrF,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,GAAG,CAAC,cAAc,CAAC;gBACvB,QAAQ,EAAE;oBACR,IAAI,EAAE,mCAAmB,CAAC,gBAAgB;oBAC1C,KAAK,EAAE,CAAC,kBAAkB,CAAC;iBAC5B;gBACD,MAAM;aACP,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,mCAAmC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,2BAA2B,CAC/C,kBAA0B;;IAE1B,MAAM,cAAc,GAAG,CAAC,MAAM,IAAA,mBAAE,EAAC,OAAO,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACvF,cAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CACxC,CAAC;IACF,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,gBAAgB,GAAG,CAAC,MAAM,IAAA,mBAAE,EAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,YAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CACtF,CAAC,YAAY,EAAE,EAAE,CAAC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CACxD,CAAC;IAEF,OAAO,MAAA,MAAA,cAAc,CAAC,CAAC,CAAC,mCAAI,gBAAgB,CAAC,CAAC,CAAC,mCAAI,SAAS,CAAC;AAC/D,CAAC","sourcesContent":["import os from 'os';\nimport path from 'path';\n\nimport { ManagedArtifactType, Ios } from '@expo/eas-build-job';\nimport fg from 'fast-glob';\nimport { bunyan } from '@expo/logger';\n\nimport { BuildContext } from '../context';\n\nexport async function findAndUploadXcodeBuildLogsAsync(\n ctx: BuildContext<Ios.Job>,\n { logger }: { logger: bunyan }\n): Promise<void> {\n try {\n const xcodeBuildLogsPath = await findXcodeBuildLogsPathAsync(ctx.buildLogsDirectory);\n if (xcodeBuildLogsPath) {\n await ctx.uploadArtifact({\n artifact: {\n type: ManagedArtifactType.XCODE_BUILD_LOGS,\n paths: [xcodeBuildLogsPath],\n },\n logger,\n });\n }\n } catch (err: any) {\n logger.debug({ err }, 'Failed to upload Xcode build logs');\n }\n}\n\nexport async function findXcodeBuildLogsPathAsync(\n buildLogsDirectory: string\n): Promise<string | undefined> {\n const customLogPaths = (await fg('*.log', { cwd: buildLogsDirectory })).map((filename) =>\n path.join(buildLogsDirectory, filename)\n );\n if (customLogPaths[0]) {\n return customLogPaths[0];\n }\n const fallbackLogPaths = (await fg('Library/Logs/gym/*.log', { cwd: os.homedir() })).map(\n (relativePath) => path.join(os.homedir(), relativePath)\n );\n\n return customLogPaths[0] ?? fallbackLogPaths[0] ?? undefined;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"xcodeEnv.js","sourceRoot":"","sources":["../../src/ios/xcodeEnv.ts"],"names":[],"mappings":";;;;;AAOA,4EAaC;AApBD,gDAAwB;AAGxB,wDAA0B;AAInB,KAAK,UAAU,gCAAgC,CAAC,GAA0B;IAC/E,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CACjC,GAAG,CAAC,8BAA8B,EAAE,EACpC,KAAK,EACL,kBAAkB,CACnB,CAAC;IACF,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,yBAAyB,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,oJAAoJ,CACrJ,CAAC;QACF,MAAM,kBAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;AACH,CAAC","sourcesContent":["import path from 'path';\n\nimport { Ios } from '@expo/eas-build-job';\nimport fs from 'fs-extra';\n\nimport { BuildContext } from '../context';\n\nexport async function deleteXcodeEnvLocalIfExistsAsync(ctx: BuildContext<Ios.Job>): Promise<void> {\n const xcodeEnvLocalPath = path.join(\n ctx.getReactNativeProjectDirectory(),\n 'ios',\n '.xcode.env.local'\n );\n if (await fs.pathExists(xcodeEnvLocalPath)) {\n ctx.markBuildPhaseHasWarnings();\n ctx.logger.warn(\n `Detected and removed file: ios/.xcode.env.local. This file should not be committed to source control. Learn more: https://expo.fyi/xcode-env-local`\n );\n await fs.remove(xcodeEnvLocalPath);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"xcpretty.js","sourceRoot":"","sources":["../../src/ios/xcpretty.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\nimport path from 'path';\n\nimport fs from 'fs-extra';\nimport { bunyan } from '@expo/logger';\nimport { ExpoRunFormatter } from '@expo/xcpretty';\nimport spawnAsync, { SpawnPromise, SpawnResult } from '@expo/spawn-async';\nimport fg from 'fast-glob';\n\nconst CHECK_FILE_INTERVAL_MS = 1000;\n\nexport class XcodeBuildLogger {\n private loggerError?: Error;\n private flushing: boolean = false;\n private logReaderPromise?: SpawnPromise<SpawnResult>;\n private logsPath?: string;\n\n constructor(\n private readonly logger: bunyan,\n private readonly projectRoot: string\n ) {}\n\n public async watchLogFiles(logsDirectory: string): Promise<void> {\n while (!this.flushing) {\n const logsFilename = await this.getBuildLogFilename(logsDirectory);\n if (logsFilename) {\n this.logsPath = path.join(logsDirectory, logsFilename);\n void this.startBuildLogger(this.logsPath);\n return;\n }\n await new Promise((res) => setTimeout(res, CHECK_FILE_INTERVAL_MS));\n }\n }\n\n public async flush(): Promise<void> {\n this.flushing = true;\n if (this.loggerError) {\n throw this.loggerError;\n }\n if (this.logReaderPromise) {\n this.logReaderPromise.child.kill('SIGINT');\n try {\n await this.logReaderPromise;\n } catch {}\n }\n if (this.logsPath) {\n await this.findBundlerErrors(this.logsPath);\n }\n }\n private async getBuildLogFilename(logsDirectory: string): Promise<string | undefined> {\n const paths = await fg('*.log', { cwd: logsDirectory });\n return paths.length >= 1 ? paths[0] : undefined;\n }\n\n private async startBuildLogger(logsPath: string): Promise<void> {\n try {\n const formatter = ExpoRunFormatter.create(this.projectRoot, {\n // TODO: Can provide xcode project name for better parsing\n isDebug: false,\n });\n this.logReaderPromise = spawnAsync('tail', ['-n', '+0', '-f', logsPath], { stdio: 'pipe' });\n assert(this.logReaderPromise.child.stdout, 'stdout is not available');\n this.logReaderPromise.child.stdout.on('data', (data: string) => {\n const lines = formatter.pipe(data.toString());\n for (const line of lines) {\n this.logger.info(line);\n }\n });\n await this.logReaderPromise;\n\n this.logger.info(formatter.getBuildSummary());\n } catch (err: any) {\n if (!this.flushing) {\n this.loggerError = err;\n }\n }\n }\n\n private async findBundlerErrors(logsPath: string): Promise<void> {\n try {\n const logFile = await fs.readFile(logsPath, 'utf-8');\n const match = logFile.match(\n /Welcome to Metro!\\s* Fast - Scalable - Integrated\\s*([\\s\\S]*)Run CLI with --verbose flag for more details.\\nCommand PhaseScriptExecution failed with a nonzero exit code/\n );\n if (match) {\n this.logger.info(match[1]);\n }\n } catch (err) {\n this.logger.error({ err }, 'Failed to read Xcode logs');\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"easFunctionGroups.js","sourceRoot":"","sources":["../../src/steps/easFunctionGroups.ts"],"names":[],"mappings":";;AAOA,oDAQC;AAXD,kDAA0E;AAC1E,8DAAiF;AAEjF,SAAgB,oBAAoB,CAAC,GAAuB;IAC1D,MAAM,cAAc,GAAG,CAAC,IAAA,+CAAiC,EAAC,GAAG,CAAC,CAAC,CAAC;IAEhE,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QACtB,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAA,wCAAgC,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["import { BuildFunctionGroup } from '@expo/steps';\n\nimport { CustomBuildContext } from '../customBuildContext';\n\nimport { createEasBuildBuildFunctionGroup } from './functionGroups/build';\nimport { createEasMaestroTestFunctionGroup } from './functionGroups/maestroTest';\n\nexport function getEasFunctionGroups(ctx: CustomBuildContext): BuildFunctionGroup[] {\n const functionGroups = [createEasMaestroTestFunctionGroup(ctx)];\n\n if (ctx.hasBuildJob()) {\n functionGroups.push(...[createEasBuildBuildFunctionGroup(ctx)]);\n }\n\n return functionGroups;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"easFunctions.js","sourceRoot":"","sources":["../../src/steps/easFunctions.ts"],"names":[],"mappings":";;AA0CA,0CAmDC;AAzFD,+DAA+E;AAC/E,mDAAmE;AACnE,yDAAwE;AACxE,uEAAuF;AACvF,mDAAmE;AACnE,yFAAyG;AACzG,6FAAkG;AAClG,mFAAwF;AACxF,iFAAsF;AACtF,qDAA0D;AAC1D,qGAA0G;AAC1G,iFAAsF;AACtF,yEAA8E;AAC9E,yFAA8F;AAC9F,yDAA8D;AAC9D,2EAA2F;AAC3F,6EAA6F;AAC7F,qEAAqF;AACrF,+DAA+E;AAC/E,uIAA0I;AAC1I,yDAAyE;AACzE,mEAA8E;AAC9E,uEAAuF;AACvF,mGAAwG;AACxG,yDAAmE;AACnE,+EAAoF;AACpF,6DAAwE;AACxE,+CAA+D;AAC/D,mEAA8E;AAC9E,2DAAsE;AACtE,qDAAgE;AAChE,yEAAuF;AACvF,+DAA0E;AAC1E,qEAGuC;AAEvC,SAAgB,eAAe,CAAC,GAAuB;IACrD,MAAM,SAAS,GAAG;QAChB,IAAA,sCAA2B,GAAE;QAC7B,IAAA,iDAA8B,GAAE;QAChC,IAAA,kDAAiC,EAAC,GAAG,CAAC;QACtC,IAAA,2CAA6B,GAAE;QAC/B,IAAA,0DAAqC,GAAE;QACvC,IAAA,sCAA2B,GAAE;QAC7B,IAAA,2CAA2B,GAAE;QAC7B,IAAA,kCAAyB,GAAE;QAC3B,IAAA,yCAA0B,GAAE;QAC5B,IAAA,mDAA+B,GAAE;QACjC,IAAA,mCAAuB,GAAE;QACzB,IAAA,6CAA4B,EAAC,GAAG,CAAC,SAAS,CAAC;QAC3C,IAAA,iDAA6B,GAAE;QAC/B,IAAA,qEAAqC,GAAE;QACvC,IAAA,2DAAgC,GAAE;QAClC,IAAA,yDAA+B,GAAE;QACjC,IAAA,sCAAwB,GAAE;QAC1B,IAAA,6BAAiB,GAAE;QACnB,IAAA,6EAAyC,GAAE;QAC3C,IAAA,yDAA+B,GAAE;QACjC,IAAA,iDAA2B,GAAE;QAC7B,IAAA,iEAAmC,GAAE;QACrC,IAAA,iCAAmB,GAAE;QACrB,IAAA,8DAAuC,GAAE;QACzC,IAAA,gEAAwC,GAAE;QAC1C,IAAA,wDAAoC,GAAE;QACtC,IAAA,kDAAiC,GAAE;QAEnC,IAAA,4CAA8B,GAAE;QAChC,IAAA,iDAA8B,GAAE;QAEhC,IAAA,2EAAwC,GAAE;QAE1C,IAAA,uDAA8B,GAAE;QAEhC,IAAA,0DAAoC,EAAC,GAAG,CAAC;KAC1C,CAAC;IAEF,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QACtB,SAAS,CAAC,IAAI,CACZ,GAAG;YACD,IAAA,4EAA8C,EAAC,GAAG,CAAC;YACnD,IAAA,0DAAqC,EAAC,GAAG,CAAC;YAC1C,IAAA,6GAAwD,EAAC,GAAG,CAAC;SAC9D,CACF,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import { BuildFunction } from '@expo/steps';\n\nimport { CustomBuildContext } from '../customBuildContext';\n\nimport { createUploadArtifactBuildFunction } from './functions/uploadArtifact';\nimport { createCheckoutBuildFunction } from './functions/checkout';\nimport { createSetUpNpmrcBuildFunction } from './functions/useNpmToken';\nimport { createInstallNodeModulesBuildFunction } from './functions/installNodeModules';\nimport { createPrebuildBuildFunction } from './functions/prebuild';\nimport { createFindAndUploadBuildArtifactsBuildFunction } from './functions/findAndUploadBuildArtifacts';\nimport { configureEASUpdateIfInstalledFunction } from './functions/configureEASUpdateIfInstalled';\nimport { injectAndroidCredentialsFunction } from './functions/injectAndroidCredentials';\nimport { configureAndroidVersionFunction } from './functions/configureAndroidVersion';\nimport { runGradleFunction } from './functions/runGradle';\nimport { resolveAppleTeamIdFromCredentialsFunction } from './functions/resolveAppleTeamIdFromCredentials';\nimport { configureIosCredentialsFunction } from './functions/configureIosCredentials';\nimport { configureIosVersionFunction } from './functions/configureIosVersion';\nimport { generateGymfileFromTemplateFunction } from './functions/generateGymfileFromTemplate';\nimport { runFastlaneFunction } from './functions/runFastlane';\nimport { createStartAndroidEmulatorBuildFunction } from './functions/startAndroidEmulator';\nimport { createStartCuttlefishDeviceBuildFunction } from './functions/startCuttlefishDevice';\nimport { createStartIosSimulatorBuildFunction } from './functions/startIosSimulator';\nimport { createInstallMaestroBuildFunction } from './functions/installMaestro';\nimport { createGetCredentialsForBuildTriggeredByGithubIntegration } from './functions/getCredentialsForBuildTriggeredByGitHubIntegration';\nimport { createInstallPodsBuildFunction } from './functions/installPods';\nimport { createSendSlackMessageFunction } from './functions/sendSlackMessage';\nimport { createResolveBuildConfigBuildFunction } from './functions/resolveBuildConfig';\nimport { calculateEASUpdateRuntimeVersionFunction } from './functions/calculateEASUpdateRuntimeVersion';\nimport { eagerBundleBuildFunction } from './functions/eagerBundle';\nimport { createSubmissionEntityFunction } from './functions/createSubmissionEntity';\nimport { createDownloadBuildFunction } from './functions/downloadBuild';\nimport { createRepackBuildFunction } from './functions/repack';\nimport { createDownloadArtifactFunction } from './functions/downloadArtifact';\nimport { createRestoreCacheFunction } from './functions/restoreCache';\nimport { createSaveCacheFunction } from './functions/saveCache';\nimport { createInternalEasMaestroTestFunction } from './functions/internalMaestroTest';\nimport { createSaveBuildCacheFunction } from './functions/saveBuildCache';\nimport {\n createCacheStatsBuildFunction,\n createRestoreBuildCacheFunction,\n} from './functions/restoreBuildCache';\n\nexport function getEasFunctions(ctx: CustomBuildContext): BuildFunction[] {\n const functions = [\n createCheckoutBuildFunction(),\n createDownloadArtifactFunction(),\n createUploadArtifactBuildFunction(ctx),\n createSetUpNpmrcBuildFunction(),\n createInstallNodeModulesBuildFunction(),\n createPrebuildBuildFunction(),\n createDownloadBuildFunction(),\n createRepackBuildFunction(),\n createRestoreCacheFunction(),\n createRestoreBuildCacheFunction(),\n createSaveCacheFunction(),\n createSaveBuildCacheFunction(ctx.startTime),\n createCacheStatsBuildFunction(),\n configureEASUpdateIfInstalledFunction(),\n injectAndroidCredentialsFunction(),\n configureAndroidVersionFunction(),\n eagerBundleBuildFunction(),\n runGradleFunction(),\n resolveAppleTeamIdFromCredentialsFunction(),\n configureIosCredentialsFunction(),\n configureIosVersionFunction(),\n generateGymfileFromTemplateFunction(),\n runFastlaneFunction(),\n createStartAndroidEmulatorBuildFunction(),\n createStartCuttlefishDeviceBuildFunction(),\n createStartIosSimulatorBuildFunction(),\n createInstallMaestroBuildFunction(),\n\n createInstallPodsBuildFunction(),\n createSendSlackMessageFunction(),\n\n calculateEASUpdateRuntimeVersionFunction(),\n\n createSubmissionEntityFunction(),\n\n createInternalEasMaestroTestFunction(ctx),\n ];\n\n if (ctx.hasBuildJob()) {\n functions.push(\n ...[\n createFindAndUploadBuildArtifactsBuildFunction(ctx),\n createResolveBuildConfigBuildFunction(ctx),\n createGetCredentialsForBuildTriggeredByGithubIntegration(ctx),\n ]\n );\n }\n\n return functions;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/steps/functionGroups/build.ts"],"names":[],"mappings":"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","sourcesContent":["import { BuildFunctionGroup, BuildStep, BuildStepGlobalContext } from '@expo/steps';\nimport { BuildJob, Platform } from '@expo/eas-build-job';\n\nimport { createCheckoutBuildFunction } from '../functions/checkout';\nimport { createInstallNodeModulesBuildFunction } from '../functions/installNodeModules';\nimport { createPrebuildBuildFunction } from '../functions/prebuild';\nimport { createInstallPodsBuildFunction } from '../functions/installPods';\nimport { configureEASUpdateIfInstalledFunction } from '../functions/configureEASUpdateIfInstalled';\nimport { generateGymfileFromTemplateFunction } from '../functions/generateGymfileFromTemplate';\nimport { runFastlaneFunction } from '../functions/runFastlane';\nimport { createFindAndUploadBuildArtifactsBuildFunction } from '../functions/findAndUploadBuildArtifacts';\nimport { CustomBuildContext } from '../../customBuildContext';\nimport { resolveAppleTeamIdFromCredentialsFunction } from '../functions/resolveAppleTeamIdFromCredentials';\nimport { configureIosCredentialsFunction } from '../functions/configureIosCredentials';\nimport { runGradleFunction } from '../functions/runGradle';\nimport { configureIosVersionFunction } from '../functions/configureIosVersion';\nimport { injectAndroidCredentialsFunction } from '../functions/injectAndroidCredentials';\nimport { configureAndroidVersionFunction } from '../functions/configureAndroidVersion';\nimport { createSetUpNpmrcBuildFunction } from '../functions/useNpmToken';\nimport { createResolveBuildConfigBuildFunction } from '../functions/resolveBuildConfig';\nimport { calculateEASUpdateRuntimeVersionFunction } from '../functions/calculateEASUpdateRuntimeVersion';\nimport { eagerBundleBuildFunction } from '../functions/eagerBundle';\nimport { shouldUseEagerBundle } from '../../common/eagerBundle';\nimport {\n createRestoreBuildCacheFunction,\n createCacheStatsBuildFunction,\n} from '../functions/restoreBuildCache';\nimport { createSaveBuildCacheFunction } from '../functions/saveBuildCache';\n\ninterface HelperFunctionsInput {\n globalCtx: BuildStepGlobalContext;\n buildToolsContext: CustomBuildContext<BuildJob>;\n}\n\nexport function createEasBuildBuildFunctionGroup(\n buildToolsContext: CustomBuildContext<BuildJob>\n): BuildFunctionGroup {\n return new BuildFunctionGroup({\n namespace: 'eas',\n id: 'build',\n createBuildStepsFromFunctionGroupCall: (globalCtx) => {\n if (buildToolsContext.job.platform === Platform.IOS) {\n if (buildToolsContext.job.simulator) {\n return createStepsForIosSimulatorBuild({\n globalCtx,\n buildToolsContext,\n });\n } else {\n return createStepsForIosBuildWithCredentials({\n globalCtx,\n buildToolsContext,\n });\n }\n } else if (buildToolsContext.job.platform === Platform.ANDROID) {\n if (!buildToolsContext.job.secrets?.buildCredentials) {\n return createStepsForAndroidBuildWithoutCredentials({\n globalCtx,\n buildToolsContext,\n });\n } else {\n return createStepsForAndroidBuildWithCredentials({\n globalCtx,\n buildToolsContext,\n });\n }\n }\n\n throw new Error('Build function group is not supported in generic jobs.');\n },\n });\n}\n\nfunction createStepsForIosSimulatorBuild({\n globalCtx,\n buildToolsContext,\n}: HelperFunctionsInput): BuildStep[] {\n const calculateEASUpdateRuntimeVersion =\n calculateEASUpdateRuntimeVersionFunction().createBuildStepFromFunctionCall(globalCtx, {\n id: 'calculate_eas_update_runtime_version',\n });\n const installPods = createInstallPodsBuildFunction().createBuildStepFromFunctionCall(globalCtx, {\n workingDirectory: './ios',\n });\n const configureEASUpdate =\n configureEASUpdateIfInstalledFunction().createBuildStepFromFunctionCall(globalCtx, {\n callInputs: {\n throw_if_not_configured: false,\n resolved_eas_update_runtime_version:\n '${ steps.calculate_eas_update_runtime_version.resolved_eas_update_runtime_version }',\n },\n });\n const runFastlane = runFastlaneFunction().createBuildStepFromFunctionCall(globalCtx, {\n id: 'run_fastlane',\n callInputs: {\n resolved_eas_update_runtime_version:\n '${ steps.calculate_eas_update_runtime_version.resolved_eas_update_runtime_version }',\n },\n });\n return [\n createCheckoutBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n createSetUpNpmrcBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n createInstallNodeModulesBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n createResolveBuildConfigBuildFunction(buildToolsContext).createBuildStepFromFunctionCall(\n globalCtx\n ),\n createPrebuildBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n calculateEASUpdateRuntimeVersion,\n installPods,\n configureEASUpdate,\n ...(shouldUseEagerBundle(globalCtx.staticContext.metadata)\n ? [\n eagerBundleBuildFunction().createBuildStepFromFunctionCall(globalCtx, {\n callInputs: {\n resolved_eas_update_runtime_version:\n '${ steps.calculate_eas_update_runtime_version.resolved_eas_update_runtime_version }',\n },\n }),\n ]\n : []),\n generateGymfileFromTemplateFunction().createBuildStepFromFunctionCall(globalCtx),\n runFastlane,\n createFindAndUploadBuildArtifactsBuildFunction(\n buildToolsContext\n ).createBuildStepFromFunctionCall(globalCtx),\n ];\n}\n\nfunction createStepsForIosBuildWithCredentials({\n globalCtx,\n buildToolsContext,\n}: HelperFunctionsInput): BuildStep[] {\n const evictUsedBefore = new Date();\n\n const resolveAppleTeamIdFromCredentials =\n resolveAppleTeamIdFromCredentialsFunction().createBuildStepFromFunctionCall(globalCtx, {\n id: 'resolve_apple_team_id_from_credentials',\n });\n const calculateEASUpdateRuntimeVersion =\n calculateEASUpdateRuntimeVersionFunction().createBuildStepFromFunctionCall(globalCtx, {\n id: 'calculate_eas_update_runtime_version',\n });\n const prebuildStep = createPrebuildBuildFunction().createBuildStepFromFunctionCall(globalCtx, {\n callInputs: {\n apple_team_id: '${ steps.resolve_apple_team_id_from_credentials.apple_team_id }',\n },\n });\n const restoreCache = createRestoreBuildCacheFunction().createBuildStepFromFunctionCall(\n globalCtx,\n {\n callInputs: {\n platform: Platform.IOS,\n },\n }\n );\n const installPods = createInstallPodsBuildFunction().createBuildStepFromFunctionCall(globalCtx, {\n workingDirectory: './ios',\n });\n const configureEASUpdate =\n configureEASUpdateIfInstalledFunction().createBuildStepFromFunctionCall(globalCtx, {\n callInputs: {\n throw_if_not_configured: false,\n resolved_eas_update_runtime_version:\n '${ steps.calculate_eas_update_runtime_version.resolved_eas_update_runtime_version }',\n },\n });\n const generateGymfile = generateGymfileFromTemplateFunction().createBuildStepFromFunctionCall(\n globalCtx,\n {\n callInputs: {\n credentials: '${ eas.job.secrets.buildCredentials }',\n },\n }\n );\n const runFastlane = runFastlaneFunction().createBuildStepFromFunctionCall(globalCtx, {\n id: 'run_fastlane',\n callInputs: {\n resolved_eas_update_runtime_version:\n '${ steps.calculate_eas_update_runtime_version.resolved_eas_update_runtime_version }',\n },\n });\n const saveCache = createSaveBuildCacheFunction(evictUsedBefore).createBuildStepFromFunctionCall(\n globalCtx,\n {\n callInputs: {\n platform: Platform.IOS,\n },\n }\n );\n return [\n createCheckoutBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n createSetUpNpmrcBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n createInstallNodeModulesBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n createResolveBuildConfigBuildFunction(buildToolsContext).createBuildStepFromFunctionCall(\n globalCtx\n ),\n resolveAppleTeamIdFromCredentials,\n prebuildStep,\n restoreCache,\n calculateEASUpdateRuntimeVersion,\n installPods,\n configureEASUpdate,\n configureIosCredentialsFunction().createBuildStepFromFunctionCall(globalCtx),\n configureIosVersionFunction().createBuildStepFromFunctionCall(globalCtx),\n ...(shouldUseEagerBundle(globalCtx.staticContext.metadata)\n ? [\n eagerBundleBuildFunction().createBuildStepFromFunctionCall(globalCtx, {\n callInputs: {\n resolved_eas_update_runtime_version:\n '${ steps.calculate_eas_update_runtime_version.resolved_eas_update_runtime_version }',\n },\n }),\n ]\n : []),\n generateGymfile,\n runFastlane,\n createFindAndUploadBuildArtifactsBuildFunction(\n buildToolsContext\n ).createBuildStepFromFunctionCall(globalCtx),\n saveCache,\n createCacheStatsBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n ];\n}\n\nfunction createStepsForAndroidBuildWithoutCredentials({\n globalCtx,\n buildToolsContext,\n}: HelperFunctionsInput): BuildStep[] {\n const evictUsedBefore = new Date();\n\n const calculateEASUpdateRuntimeVersion =\n calculateEASUpdateRuntimeVersionFunction().createBuildStepFromFunctionCall(globalCtx, {\n id: 'calculate_eas_update_runtime_version',\n });\n const configureEASUpdate =\n configureEASUpdateIfInstalledFunction().createBuildStepFromFunctionCall(globalCtx, {\n callInputs: {\n throw_if_not_configured: false,\n resolved_eas_update_runtime_version:\n '${ steps.calculate_eas_update_runtime_version.resolved_eas_update_runtime_version }',\n },\n });\n const restoreCache = createRestoreBuildCacheFunction().createBuildStepFromFunctionCall(\n globalCtx,\n {\n callInputs: {\n platform: Platform.ANDROID,\n },\n }\n );\n const runGradle = runGradleFunction().createBuildStepFromFunctionCall(globalCtx, {\n id: 'run_gradle',\n callInputs: {\n resolved_eas_update_runtime_version:\n '${ steps.calculate_eas_update_runtime_version.resolved_eas_update_runtime_version }',\n },\n });\n const saveCache = createSaveBuildCacheFunction(evictUsedBefore).createBuildStepFromFunctionCall(\n globalCtx,\n {\n callInputs: {\n platform: Platform.ANDROID,\n },\n }\n );\n return [\n createCheckoutBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n createSetUpNpmrcBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n createInstallNodeModulesBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n createResolveBuildConfigBuildFunction(buildToolsContext).createBuildStepFromFunctionCall(\n globalCtx\n ),\n createPrebuildBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n restoreCache,\n calculateEASUpdateRuntimeVersion,\n configureEASUpdate,\n ...(shouldUseEagerBundle(globalCtx.staticContext.metadata)\n ? [\n eagerBundleBuildFunction().createBuildStepFromFunctionCall(globalCtx, {\n callInputs: {\n resolved_eas_update_runtime_version:\n '${ steps.calculate_eas_update_runtime_version.resolved_eas_update_runtime_version }',\n },\n }),\n ]\n : []),\n runGradle,\n createFindAndUploadBuildArtifactsBuildFunction(\n buildToolsContext\n ).createBuildStepFromFunctionCall(globalCtx),\n saveCache,\n createCacheStatsBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n ];\n}\n\nfunction createStepsForAndroidBuildWithCredentials({\n globalCtx,\n buildToolsContext,\n}: HelperFunctionsInput): BuildStep[] {\n const evictUsedBefore = new Date();\n\n const calculateEASUpdateRuntimeVersion =\n calculateEASUpdateRuntimeVersionFunction().createBuildStepFromFunctionCall(globalCtx, {\n id: 'calculate_eas_update_runtime_version',\n });\n const configureEASUpdate =\n configureEASUpdateIfInstalledFunction().createBuildStepFromFunctionCall(globalCtx, {\n callInputs: {\n throw_if_not_configured: false,\n resolved_eas_update_runtime_version:\n '${ steps.calculate_eas_update_runtime_version.resolved_eas_update_runtime_version }',\n },\n });\n const restoreCache = createRestoreBuildCacheFunction().createBuildStepFromFunctionCall(\n globalCtx,\n {\n callInputs: {\n platform: Platform.ANDROID,\n },\n }\n );\n const runGradle = runGradleFunction().createBuildStepFromFunctionCall(globalCtx, {\n id: 'run_gradle',\n callInputs: {\n resolved_eas_update_runtime_version:\n '${ steps.calculate_eas_update_runtime_version.resolved_eas_update_runtime_version }',\n },\n });\n const saveCache = createSaveBuildCacheFunction(evictUsedBefore).createBuildStepFromFunctionCall(\n globalCtx,\n {\n callInputs: {\n platform: Platform.ANDROID,\n },\n }\n );\n return [\n createCheckoutBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n createSetUpNpmrcBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n createInstallNodeModulesBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n createResolveBuildConfigBuildFunction(buildToolsContext).createBuildStepFromFunctionCall(\n globalCtx\n ),\n createPrebuildBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n restoreCache,\n calculateEASUpdateRuntimeVersion,\n configureEASUpdate,\n injectAndroidCredentialsFunction().createBuildStepFromFunctionCall(globalCtx),\n configureAndroidVersionFunction().createBuildStepFromFunctionCall(globalCtx),\n runGradle,\n ...(shouldUseEagerBundle(globalCtx.staticContext.metadata)\n ? [\n eagerBundleBuildFunction().createBuildStepFromFunctionCall(globalCtx, {\n callInputs: {\n resolved_eas_update_runtime_version:\n '${ steps.calculate_eas_update_runtime_version.resolved_eas_update_runtime_version }',\n },\n }),\n ]\n : []),\n createFindAndUploadBuildArtifactsBuildFunction(\n buildToolsContext\n ).createBuildStepFromFunctionCall(globalCtx),\n saveCache,\n createCacheStatsBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n ];\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"maestroTest.js","sourceRoot":"","sources":["../../../src/steps/functionGroups/maestroTest.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BuildFunctionGroup,\n BuildStep,\n BuildStepInput,\n BuildStepInputValueTypeName,\n} from '@expo/steps';\nimport { Platform } from '@expo/eas-build-job';\n\nimport { CustomBuildContext } from '../../customBuildContext';\nimport { createInstallMaestroBuildFunction } from '../functions/installMaestro';\nimport { createStartIosSimulatorBuildFunction } from '../functions/startIosSimulator';\nimport { createStartAndroidEmulatorBuildFunction } from '../functions/startAndroidEmulator';\nimport { createUploadArtifactBuildFunction } from '../functions/uploadArtifact';\n\nexport function createEasMaestroTestFunctionGroup(\n buildToolsContext: CustomBuildContext\n): BuildFunctionGroup {\n return new BuildFunctionGroup({\n namespace: 'eas',\n id: 'maestro_test',\n inputProviders: [\n BuildStepInput.createProvider({\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n id: 'flow_path',\n required: true,\n }),\n BuildStepInput.createProvider({\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n id: 'app_path',\n required: false,\n }),\n BuildStepInput.createProvider({\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n id: 'android_emulator_system_image_package',\n required: false,\n }),\n ],\n createBuildStepsFromFunctionGroupCall: (globalCtx, { inputs }) => {\n const steps: BuildStep[] = [\n createInstallMaestroBuildFunction().createBuildStepFromFunctionCall(globalCtx),\n ];\n\n if (buildToolsContext.job.platform === Platform.IOS) {\n steps.push(\n createStartIosSimulatorBuildFunction().createBuildStepFromFunctionCall(globalCtx)\n );\n const searchPath =\n inputs.app_path.getValue({\n interpolationContext: globalCtx.getInterpolationContext(),\n }) ?? 'ios/build/Build/Products/*simulator/*.app';\n steps.push(\n new BuildStep(globalCtx, {\n id: BuildStep.getNewId(),\n name: 'install_app',\n displayName: `Install app to Simulator`,\n command: `\n # shopt -s nullglob is necessary not to try to install\n # SEARCH_PATH literally if there are no matching files.\n shopt -s nullglob\n\n SEARCH_PATH=\"${searchPath}\"\n FILES_FOUND=false\n\n for APP_PATH in $SEARCH_PATH; do\n FILES_FOUND=true\n echo \"Installing \\\\\"$APP_PATH\\\\\"\"\n xcrun simctl install booted \"$APP_PATH\"\n done\n\n if ! $FILES_FOUND; then\n echo \"No files found matching \\\\\"$SEARCH_PATH\\\\\". Are you sure you've built a Simulator app?\"\n exit 1\n fi\n `,\n })\n );\n } else if (buildToolsContext.job.platform === Platform.ANDROID) {\n const system_image_package = inputs.android_emulator_system_image_package.getValue({\n interpolationContext: globalCtx.getInterpolationContext(),\n });\n steps.push(\n createStartAndroidEmulatorBuildFunction().createBuildStepFromFunctionCall(\n globalCtx,\n system_image_package\n ? {\n callInputs: {\n system_image_package,\n },\n }\n : undefined\n )\n );\n const searchPath =\n inputs.app_path.getValue({\n interpolationContext: globalCtx.getInterpolationContext(),\n }) ?? 'android/app/build/outputs/**/*.apk';\n steps.push(\n new BuildStep(globalCtx, {\n id: BuildStep.getNewId(),\n name: 'install_app',\n displayName: `Install app to Emulator`,\n command: `\n # shopt -s globstar is necessary to add /**/ support\n shopt -s globstar\n # shopt -s nullglob is necessary not to try to install\n # SEARCH_PATH literally if there are no matching files.\n shopt -s nullglob\n\n SEARCH_PATH=\"${searchPath}\"\n FILES_FOUND=false\n\n for APP_PATH in $SEARCH_PATH; do\n FILES_FOUND=true\n echo \"Installing \\\\\"$APP_PATH\\\\\"\"\n adb install \"$APP_PATH\"\n done\n\n if ! $FILES_FOUND; then\n echo \"No files found matching \\\\\"$SEARCH_PATH\\\\\". Are you sure you've built an Emulator app?\"\n exit 1\n fi\n `,\n })\n );\n }\n\n const flowPaths = `${inputs.flow_path.getValue({\n interpolationContext: globalCtx.getInterpolationContext(),\n })}`\n .split('\\n') // It's easy to get an empty line with YAML\n .filter((entry) => entry);\n\n for (const flowPath of flowPaths) {\n steps.push(\n new BuildStep(globalCtx, {\n id: BuildStep.getNewId(),\n name: 'maestro_test',\n ifCondition: '${ always() }',\n displayName: `maestro test ${flowPath}`,\n command: `maestro test ${flowPath}`,\n })\n );\n }\n\n steps.push(\n createUploadArtifactBuildFunction(buildToolsContext).createBuildStepFromFunctionCall(\n globalCtx,\n {\n ifCondition: '${ always() }',\n name: 'Upload Maestro test results',\n callInputs: {\n path: '${ eas.env.HOME }/.maestro/tests',\n ignore_error: true,\n type: 'build-artifact',\n },\n }\n )\n );\n\n return steps;\n },\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"calculateEASUpdateRuntimeVersion.js","sourceRoot":"","sources":["../../../src/steps/functions/calculateEASUpdateRuntimeVersion.ts"],"names":[],"mappings":"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","sourcesContent":["import { Platform, Workflow } from '@expo/eas-build-job';\nimport {\n BuildFunction,\n BuildStepInput,\n BuildStepInputValueTypeName,\n BuildStepOutput,\n} from '@expo/steps';\n\nimport { resolveRuntimeVersionForExpoUpdatesIfConfiguredAsync } from '../../utils/expoUpdates';\nimport { readAppConfig } from '../../utils/appConfig';\n\nexport function calculateEASUpdateRuntimeVersionFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'calculate_eas_update_runtime_version',\n name: 'Calculate EAS Update Runtime Version',\n __metricsId: 'eas/calculate_eas_update_runtime_version',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'platform',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'workflow',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n outputProviders: [\n BuildStepOutput.createProvider({\n id: 'resolved_eas_update_runtime_version',\n required: false,\n }),\n ],\n fn: async (stepCtx, { env, inputs, outputs }) => {\n const appConfig = readAppConfig({\n projectDir: stepCtx.workingDirectory,\n env: Object.keys(env).reduce(\n (acc, key) => {\n acc[key] = env[key] ?? '';\n return acc;\n },\n {} as Record<string, string>\n ),\n logger: stepCtx.logger,\n sdkVersion: stepCtx.global.staticContext.metadata?.sdkVersion,\n }).exp;\n\n const platform =\n (inputs.platform.value as Platform) ?? stepCtx.global.staticContext.job.platform;\n const workflow = (inputs.workflow.value as Workflow) ?? stepCtx.global.staticContext.job.type;\n\n if (![Platform.ANDROID, Platform.IOS].includes(platform)) {\n throw new Error(\n `Unsupported platform: ${platform}. Platform must be \"${Platform.ANDROID}\" or \"${Platform.IOS}\"`\n );\n }\n\n if (![Workflow.GENERIC, Workflow.MANAGED].includes(workflow)) {\n if (workflow === Workflow.UNKNOWN) {\n throw new Error(\n `Detected ${Workflow.UNKNOWN} workflow. Please make sure to run the eas/resolve_build_config step before running this step.`\n );\n }\n throw new Error(\n `Unsupported workflow: ${workflow}. Workflow must be \"${Workflow.GENERIC}\" or \"${Workflow.MANAGED}\"`\n );\n }\n\n const resolvedRuntimeVersion = await resolveRuntimeVersionForExpoUpdatesIfConfiguredAsync({\n cwd: stepCtx.workingDirectory,\n logger: stepCtx.logger,\n appConfig,\n platform,\n workflow,\n env,\n });\n if (resolvedRuntimeVersion) {\n outputs.resolved_eas_update_runtime_version.set(\n resolvedRuntimeVersion.runtimeVersion ?? undefined\n );\n } else {\n stepCtx.logger.info('Skipped because EAS Update is not configured');\n }\n },\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ccacheStats.js","sourceRoot":"","sources":["../../../src/steps/functions/ccacheStats.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawnAsync } from '@expo/steps';\nimport { asyncResult } from '@expo/results';\n\nimport { turtleFetch } from '../../utils/turtleFetch';\n\nexport interface CcacheStats {\n cacheableCalls: number;\n cacheableCallsPercent: number;\n hitRatePercent: number;\n directHits: number;\n preprocessedHits: number;\n misses: number;\n cacheSizeGiB: number;\n cacheMaxSizeGiB: number;\n cacheSizePercent: number;\n}\n\nconst REQUIRED_CCACHE_KEYS = [\n 'direct_cache_hit',\n 'preprocessed_cache_hit',\n 'cache_miss',\n 'cache_size_kibibyte',\n 'max_cache_size_kibibyte',\n] as const;\n\nfunction parseCcacheStats(output: string): CcacheStats | null {\n // Parse key-value pairs from `ccache --print-stats` output\n const values: Record<string, number> = {};\n for (const line of output.split('\\n')) {\n const [key, value] = line.split('\\t');\n if (key && value) {\n values[key] = parseInt(value, 10);\n }\n }\n\n // Validate that required keys are present\n for (const key of REQUIRED_CCACHE_KEYS) {\n if (!(key in values)) {\n return null;\n }\n }\n\n const directHits = values['direct_cache_hit'];\n const preprocessedHits = values['preprocessed_cache_hit'];\n const misses = values['cache_miss'];\n const cacheSizeKiB = values['cache_size_kibibyte'];\n const maxCacheSizeKiB = values['max_cache_size_kibibyte'];\n\n // Uncacheable calls\n const calledForLink = values['called_for_link'] ?? 0;\n const couldNotUseModules = values['could_not_use_modules'] ?? 0;\n const calledForPreprocessing = values['called_for_preprocessing'] ?? 0;\n const uncacheableCalls = calledForLink + couldNotUseModules + calledForPreprocessing;\n\n // Calculate derived stats\n const cacheableCalls = directHits + preprocessedHits + misses;\n const totalCalls = cacheableCalls + uncacheableCalls;\n const cacheableCallsPercent = totalCalls > 0 ? (cacheableCalls / totalCalls) * 100 : 0;\n const hitRatePercent =\n cacheableCalls > 0 ? ((directHits + preprocessedHits) / cacheableCalls) * 100 : 0;\n\n // Convert KiB to GiB (1 GiB = 1024 * 1024 KiB)\n const KIB_PER_GIB = 1024 * 1024;\n const cacheSizeGiB = cacheSizeKiB / KIB_PER_GIB;\n const cacheMaxSizeGiB = maxCacheSizeKiB / KIB_PER_GIB;\n const cacheSizePercent = cacheMaxSizeGiB > 0 ? (cacheSizeGiB / cacheMaxSizeGiB) * 100 : 0;\n\n return {\n cacheableCalls,\n cacheableCallsPercent: Number(cacheableCallsPercent.toFixed(2)),\n hitRatePercent: Number(hitRatePercent.toFixed(2)),\n directHits,\n preprocessedHits,\n misses,\n cacheSizeGiB: Number(cacheSizeGiB.toFixed(2)),\n cacheMaxSizeGiB: Number(cacheMaxSizeGiB.toFixed(2)),\n cacheSizePercent: Number(cacheSizePercent.toFixed(2)),\n };\n}\n\nexport async function sendCcacheStatsAsync({\n env,\n expoApiServerURL,\n robotAccessToken,\n buildId,\n}: {\n env: Record<string, string | undefined>;\n expoApiServerURL: string;\n robotAccessToken: string;\n buildId: string;\n}): Promise<void> {\n try {\n const result = await asyncResult(\n spawnAsync('ccache', ['--print-stats'], {\n env,\n stdio: 'pipe',\n })\n );\n if (!result.ok) {\n return;\n }\n const stats = parseCcacheStats(result.value.stdout);\n\n if (!stats) {\n return;\n }\n\n const payload = {\n buildId,\n ...stats,\n };\n await turtleFetch(new URL('v2/turtle-caches/stats', expoApiServerURL).toString(), 'POST', {\n json: payload,\n headers: {\n Authorization: `Bearer ${robotAccessToken}`,\n 'Content-Type': 'application/json',\n },\n retries: 2,\n shouldThrowOnNotOk: true,\n });\n } catch {}\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../../src/steps/functions/checkout.ts"],"names":[],"mappings":";;;;;AAGA,kEAsBC;AAzBD,uCAA4C;AAC5C,wDAA0B;AAE1B,SAAgB,2BAA2B;IACzC,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,cAAc;QAC3B,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACrB,IAAI,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;gBACpC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;gBACjE,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YACvD,MAAM,kBAAE,CAAC,IAAI,CACX,QAAQ,CAAC,MAAM,CAAC,sBAAsB,EACtC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,EACtC;gBACE,SAAS,EAAE,IAAI;aAChB,CACF,CAAC;YACF,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { BuildFunction } from '@expo/steps';\nimport fs from 'fs-extra';\n\nexport function createCheckoutBuildFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'checkout',\n name: 'Checkout',\n __metricsId: 'eas/checkout',\n fn: async (stepsCtx) => {\n if (stepsCtx.global.wasCheckedOut()) {\n stepsCtx.logger.info('Project directory is already checked out');\n return;\n }\n stepsCtx.logger.info('Checking out project directory');\n await fs.move(\n stepsCtx.global.projectSourceDirectory,\n stepsCtx.global.projectTargetDirectory,\n {\n overwrite: true,\n }\n );\n stepsCtx.global.markAsCheckedOut(stepsCtx.logger);\n },\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"configureAndroidVersion.js","sourceRoot":"","sources":["../../../src/steps/functions/configureAndroidVersion.ts"],"names":[],"mappings":";;;;;AAQA,0EAqCC;AA7CD,oDAA4B;AAE5B,uCAAyF;AACzF,oDAA4B;AAG5B,gEAAmF;AAEnF,SAAgB,+BAA+B;IAC7C,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,+BAA+B;QAC5C,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,cAAc;gBAClB,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,cAAc;gBAClB,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;;YAChC,IAAA,gBAAM,EAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;YAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAkB,CAAC;YAE5D,MAAM,WAAW,GACf,MAAC,MAAM,CAAC,YAAY,CAAC,KAA4B,mCAAI,MAAA,GAAG,CAAC,OAAO,0CAAE,WAAW,CAAC;YAChF,MAAM,WAAW,GACf,MAAC,MAAM,CAAC,YAAY,CAAC,KAA4B,mCAAI,MAAA,GAAG,CAAC,OAAO,0CAAE,WAAW,CAAC;YAChF,IAAI,WAAW,IAAI,CAAC,gBAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CACb,oFAAoF,WAAW,EAAE,CAClG,CAAC;YACJ,CAAC;YACD,MAAM,IAAA,iDAAkC,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE;gBACjF,WAAW;gBACX,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import assert from 'assert';\n\nimport { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport semver from 'semver';\nimport { Android } from '@expo/eas-build-job';\n\nimport { injectConfigureVersionGradleConfig } from '../utils/android/gradleConfig';\n\nexport function configureAndroidVersionFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'configure_android_version',\n name: 'Configure Android version',\n __metricsId: 'eas/configure_android_version',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'version_name',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'version_code',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n fn: async (stepCtx, { inputs }) => {\n assert(stepCtx.global.staticContext.job, 'Job is not defined');\n const job = stepCtx.global.staticContext.job as Android.Job;\n\n const versionCode =\n (inputs.version_code.value as string | undefined) ?? job.version?.versionCode;\n const versionName =\n (inputs.version_name.value as string | undefined) ?? job.version?.versionName;\n if (versionName && !semver.valid(versionName)) {\n throw new Error(\n `Version name provided by the \"version_name\" input is not a valid semver version: ${versionName}`\n );\n }\n await injectConfigureVersionGradleConfig(stepCtx.logger, stepCtx.workingDirectory, {\n versionCode,\n versionName,\n });\n },\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"configureEASUpdateIfInstalled.js","sourceRoot":"","sources":["../../../src/steps/functions/configureEASUpdateIfInstalled.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport { Metadata } from '@expo/eas-build-job';\nimport semver from 'semver';\n\nimport { configureEASUpdateAsync } from '../utils/expoUpdates';\nimport { readAppConfig } from '../../utils/appConfig';\nimport getExpoUpdatesPackageVersionIfInstalledAsync from '../../utils/getExpoUpdatesPackageVersionIfInstalledAsync';\n\nexport function configureEASUpdateIfInstalledFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'configure_eas_update',\n name: 'Configure EAS Update',\n __metricsId: 'eas/configure_eas_update',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'runtime_version',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'channel',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'throw_if_not_configured',\n required: false,\n defaultValue: true,\n allowedValueTypeName: BuildStepInputValueTypeName.BOOLEAN,\n }),\n BuildStepInput.createProvider({\n id: 'resolved_eas_update_runtime_version',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n fn: async (stepCtx, { env, inputs }) => {\n assert(stepCtx.global.staticContext.job, 'Job is not defined');\n const job = stepCtx.global.staticContext.job;\n assert(job.platform, 'Configuring EAS Update in generic jobs is not supported.');\n const metadata = stepCtx.global.staticContext.metadata as Metadata | undefined;\n\n const appConfig = readAppConfig({\n projectDir: stepCtx.workingDirectory,\n env: Object.keys(env).reduce(\n (acc, key) => {\n acc[key] = env[key] ?? '';\n return acc;\n },\n {} as Record<string, string>\n ),\n logger: stepCtx.logger,\n sdkVersion: metadata?.sdkVersion,\n }).exp;\n\n const channelInput = inputs.channel.value as string | undefined;\n const runtimeVersionInput = inputs.runtime_version.value as string | undefined;\n const resolvedRuntimeVersionInput = inputs.resolved_eas_update_runtime_version.value as\n | string\n | undefined;\n const throwIfNotConfigured = inputs.throw_if_not_configured.value as boolean;\n if (runtimeVersionInput && !semver.valid(runtimeVersionInput)) {\n throw new Error(\n `Runtime version provided by the \"runtime_version\" input is not a valid semver version: ${runtimeVersionInput}`\n );\n }\n\n const expoUpdatesPackageVersion = await getExpoUpdatesPackageVersionIfInstalledAsync(\n stepCtx.workingDirectory,\n stepCtx.logger\n );\n if (expoUpdatesPackageVersion === null) {\n if (throwIfNotConfigured) {\n throw new Error(\n 'Cannot configure EAS Update because the expo-updates package is not installed.'\n );\n }\n stepCtx.logger.warn(\n 'Cannot configure EAS Update because the expo-updates package is not installed.'\n );\n return;\n }\n\n await configureEASUpdateAsync({\n job,\n workingDirectory: stepCtx.workingDirectory,\n logger: stepCtx.logger,\n appConfig,\n inputs: {\n runtimeVersion: runtimeVersionInput,\n channel: channelInput,\n resolvedRuntimeVersion: resolvedRuntimeVersionInput,\n },\n metadata: stepCtx.global.staticContext.metadata,\n });\n },\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"configureIosCredentials.js","sourceRoot":"","sources":["../../../src/steps/functions/configureIosCredentials.ts"],"names":[],"mappings":";;;;;AAUA,0EA+CC;AAzDD,oDAA4B;AAE5B,uCAAyF;AAGzF,+EAAqE;AACrE,sEAAiF;AACjF,sDAAmE;AACnE,kDAAiE;AAEjE,SAAgB,+BAA+B;IAC7C,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,+BAA+B;QAC5C,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,aAAa;gBACjB,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,mCAA2B,CAAC,IAAI;gBACtD,YAAY,EAAE,uCAAuC;aACtD,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,qBAAqB;gBACzB,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAChC,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,KAA4B,CAAC;YAC5E,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,uCAAyB,CAAC,QAAQ,CAAC,mBAAmB,EAAE;gBAC/E,YAAY,EAAE,IAAI;gBAClB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;YACH,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,kBAAkB,GAAG,IAAI,iBAAqB,CAAC,KAAK,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAErE,IAAA,gBAAM,EAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;YAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAc,CAAC;YAExD,MAAM,IAAA,qCAAyB,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE;gBACxE,WAAW;gBACX,kBAAkB,EAAE,IAAA,mCAAyB,EAC3C,GAAG,EACH,MAAM,CAAC,mBAAmB,CAAC,KAA2B,CACvD;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACjE,CAAC;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import assert from 'assert';\n\nimport { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport { Ios } from '@expo/eas-build-job';\n\nimport IosCredentialsManager from '../utils/ios/credentials/manager';\nimport { IosBuildCredentialsSchema } from '../utils/ios/credentials/credentials';\nimport { configureCredentialsAsync } from '../utils/ios/configure';\nimport { resolveBuildConfiguration } from '../utils/ios/resolve';\n\nexport function configureIosCredentialsFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'configure_ios_credentials',\n name: 'Configure iOS credentials',\n __metricsId: 'eas/configure_ios_credentials',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'credentials',\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n defaultValue: '${ eas.job.secrets.buildCredentials }',\n }),\n BuildStepInput.createProvider({\n id: 'build_configuration',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n fn: async (stepCtx, { inputs }) => {\n const rawCredentialsInput = inputs.credentials.value as Record<string, any>;\n const { value, error } = IosBuildCredentialsSchema.validate(rawCredentialsInput, {\n stripUnknown: true,\n convert: true,\n abortEarly: false,\n });\n if (error) {\n throw error;\n }\n\n const credentialsManager = new IosCredentialsManager(value);\n const credentials = await credentialsManager.prepare(stepCtx.logger);\n\n assert(stepCtx.global.staticContext.job, 'Job is not defined');\n const job = stepCtx.global.staticContext.job as Ios.Job;\n\n await configureCredentialsAsync(stepCtx.logger, stepCtx.workingDirectory, {\n credentials,\n buildConfiguration: resolveBuildConfiguration(\n job,\n inputs.build_configuration.value as string | undefined\n ),\n });\n\n stepCtx.logger.info('Successfully configured iOS credentials');\n },\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"configureIosVersion.js","sourceRoot":"","sources":["../../../src/steps/functions/configureIosVersion.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport { Ios } from '@expo/eas-build-job';\nimport semver from 'semver';\n\nimport { IosBuildCredentialsSchema } from '../utils/ios/credentials/credentials';\nimport IosCredentialsManager from '../utils/ios/credentials/manager';\nimport { updateVersionsAsync } from '../utils/ios/configure';\nimport { resolveBuildConfiguration } from '../utils/ios/resolve';\n\nexport function configureIosVersionFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'configure_ios_version',\n name: 'Configure iOS version',\n __metricsId: 'eas/configure_ios_version',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'credentials',\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n defaultValue: '${ eas.job.secrets.buildCredentials }',\n }),\n BuildStepInput.createProvider({\n id: 'build_configuration',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'build_number',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'app_version',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n fn: async (stepCtx, { inputs }) => {\n const rawCredentialsInput = inputs.credentials.value as Record<string, any>;\n const { value, error } = IosBuildCredentialsSchema.validate(rawCredentialsInput, {\n stripUnknown: true,\n convert: true,\n abortEarly: false,\n });\n if (error) {\n throw error;\n }\n\n const credentialsManager = new IosCredentialsManager(value);\n const credentials = await credentialsManager.prepare(stepCtx.logger);\n\n assert(stepCtx.global.staticContext.job, 'Job is not defined');\n const job = stepCtx.global.staticContext.job as Ios.Job;\n\n const buildNumber =\n (inputs.build_number.value as string | undefined) ?? job.version?.buildNumber;\n const appVersion =\n (inputs.app_version.value as string | undefined) ?? job.version?.appVersion;\n if (appVersion && !semver.valid(appVersion)) {\n throw new Error(\n `App verrsion provided by the \"app_version\" input is not a valid semver version: ${appVersion}`\n );\n }\n\n if (!buildNumber && !appVersion) {\n stepCtx.logger.info(\n 'No build number or app version provided. Skipping the step to configure iOS version.'\n );\n return;\n }\n\n stepCtx.logger.info('Setting iOS version...');\n if (buildNumber) {\n stepCtx.logger.info(`Build number: ${buildNumber}`);\n }\n if (appVersion) {\n stepCtx.logger.info(`App version: ${appVersion}`);\n }\n\n await updateVersionsAsync(\n stepCtx.logger,\n stepCtx.workingDirectory,\n {\n buildNumber,\n appVersion,\n },\n {\n targetNames: Object.keys(credentials.targetProvisioningProfiles),\n buildConfiguration: resolveBuildConfiguration(\n job,\n inputs.build_configuration.value as string | undefined\n ),\n }\n );\n },\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createSubmissionEntity.js","sourceRoot":"","sources":["../../../src/steps/functions/createSubmissionEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport { asyncResult } from '@expo/results';\n\nimport { retryOnDNSFailure } from '../../utils/retryOnDNSFailure';\n\nexport function createSubmissionEntityFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'create_submission_entity',\n name: 'Create Submission Entity',\n __metricsId: 'eas/create_submission_entity',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'build_id',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: true,\n }),\n\n // AndroidSubmissionConfig\n BuildStepInput.createProvider({\n id: 'track',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: false,\n }),\n BuildStepInput.createProvider({\n id: 'release_status',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: false,\n }),\n BuildStepInput.createProvider({\n id: 'rollout',\n allowedValueTypeName: BuildStepInputValueTypeName.NUMBER,\n required: false,\n }),\n BuildStepInput.createProvider({\n id: 'changes_not_sent_for_review',\n allowedValueTypeName: BuildStepInputValueTypeName.BOOLEAN,\n required: false,\n }),\n\n // IosSubmissionConfig\n BuildStepInput.createProvider({\n id: 'apple_id_username',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: false,\n }),\n BuildStepInput.createProvider({\n id: 'asc_app_identifier',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: false,\n }),\n ],\n fn: async (stepsCtx, { inputs }) => {\n const robotAccessToken = stepsCtx.global.staticContext.job.secrets?.robotAccessToken;\n if (!robotAccessToken) {\n stepsCtx.logger.error('Failed to create submission entity: no robot access token found');\n return;\n }\n\n const buildId = inputs.build_id.value;\n if (!buildId) {\n stepsCtx.logger.error('Failed to create submission entity: no build ID provided');\n return;\n }\n\n const workflowJobId = stepsCtx.global.env.__WORKFLOW_JOB_ID;\n if (!workflowJobId) {\n stepsCtx.logger.error('Failed to create submission entity: no workflow job ID found');\n return;\n }\n\n // This is supposed to provide fallback for `''` -> `undefined`.\n // We _not_ want to use nullish coalescing.\n /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n const track = inputs.track.value || undefined;\n const releaseStatus = inputs.release_status.value || undefined;\n const rollout = inputs.rollout.value || undefined;\n const changesNotSentForReview = inputs.changes_not_sent_for_review.value || undefined;\n\n const appleIdUsername = inputs.apple_id_username.value || undefined;\n const ascAppIdentifier = inputs.asc_app_identifier.value || undefined;\n /* eslint-enable @typescript-eslint/prefer-nullish-coalescing */\n\n try {\n const response = await retryOnDNSFailure(fetch)(\n new URL('/v2/app-store-submissions/', stepsCtx.global.staticContext.expoApiServerURL),\n {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${robotAccessToken}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n workflowJobId,\n turtleBuildId: buildId,\n // We can pass mixed object here because the configs are disjoint.\n config: {\n // AndroidSubmissionConfig\n track,\n releaseStatus,\n rollout,\n changesNotSentForReview,\n\n // IosSubmissionConfig\n appleIdUsername,\n ascAppIdentifier,\n },\n }),\n }\n );\n\n if (!response.ok) {\n const textResult = await asyncResult(response.text());\n throw new Error(\n `Unexpected response from server (${response.status}): ${textResult.value}`\n );\n }\n\n const jsonResult = await asyncResult(response.json());\n if (!jsonResult.ok) {\n stepsCtx.logger.warn(\n `Submission created. Failed to parse response. ${jsonResult.reason}`\n );\n return;\n }\n\n const data = jsonResult.value.data;\n stepsCtx.logger.info(`Submission created:\\n ID: ${data.id}\\n URL: ${data.url}`);\n } catch (e) {\n stepsCtx.logger.error(`Failed to create submission entity. ${e}`);\n }\n },\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"downloadArtifact.js","sourceRoot":"","sources":["../../../src/steps/functions/downloadArtifact.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'node:path';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport stream from 'stream';\nimport { promisify } from 'util';\n\nimport {\n BuildFunction,\n BuildStepInput,\n BuildStepInputValueTypeName,\n BuildStepOutput,\n} from '@expo/steps';\nimport { asyncResult } from '@expo/results';\nimport fetch from 'node-fetch';\nimport { z } from 'zod';\nimport { bunyan } from '@expo/logger';\nimport { UserFacingError } from '@expo/eas-build-job/dist/errors';\n\nimport { retryOnDNSFailure } from '../../utils/retryOnDNSFailure';\nimport { formatBytes } from '../../utils/artifacts';\nimport { decompressTarAsync, isFileTarGzAsync } from '../../utils/files';\n\nconst streamPipeline = promisify(stream.pipeline);\n\nexport function createDownloadArtifactFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'download_artifact',\n name: 'Download artifact',\n __metricsId: 'eas/download_artifact',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'name',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'artifact_id',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n outputProviders: [\n BuildStepOutput.createProvider({\n id: 'artifact_path',\n required: true,\n }),\n ],\n fn: async (stepsCtx, { inputs, outputs }) => {\n const params = z\n .union([z.object({ artifactId: z.string() }), z.object({ name: z.string() })])\n .parse({\n artifactId: inputs.artifact_id.value,\n name: inputs.name.value,\n });\n\n const interpolationContext = stepsCtx.global.getInterpolationContext();\n\n if (!('workflow' in interpolationContext)) {\n throw new UserFacingError(\n 'EAS_DOWNLOAD_ARTIFACT_NO_WORKFLOW',\n 'No workflow found in the interpolation context.'\n );\n }\n\n const robotAccessToken = stepsCtx.global.staticContext.job.secrets?.robotAccessToken;\n if (!robotAccessToken) {\n throw new UserFacingError(\n 'EAS_DOWNLOAD_ARTIFACT_NO_ROBOT_ACCESS_TOKEN',\n 'No robot access token found in the job secrets.'\n );\n }\n\n const workflowRunId = interpolationContext.workflow.id;\n const { logger } = stepsCtx;\n\n if ('artifactId' in params) {\n logger.info(`Downloading artifact with ID \"${params.artifactId}\"...`);\n } else {\n logger.info(`Downloading artifact with name \"${params.name}\"...`);\n }\n\n const { artifactPath } = await downloadArtifactAsync({\n logger,\n workflowRunId,\n expoApiServerURL: stepsCtx.global.staticContext.expoApiServerURL,\n robotAccessToken,\n params,\n });\n\n outputs.artifact_path.set(artifactPath);\n },\n });\n}\n\nexport async function downloadArtifactAsync({\n logger,\n workflowRunId,\n expoApiServerURL,\n robotAccessToken,\n params,\n}: {\n logger: bunyan;\n workflowRunId: string;\n expoApiServerURL: string;\n robotAccessToken: string;\n params: { artifactId: string } | { name: string };\n}): Promise<{ artifactPath: string }> {\n const downloadDestinationDirectory = await fs.promises.mkdtemp(\n path.join(os.tmpdir(), 'download_artifact-')\n );\n\n const url = new URL(`/v2/workflows/${workflowRunId}/download-artifact`, expoApiServerURL);\n\n if ('artifactId' in params) {\n url.searchParams.set('artifactId', params.artifactId);\n } else {\n url.searchParams.set('name', params.name);\n }\n\n const response = await retryOnDNSFailure(fetch)(url, {\n headers: robotAccessToken ? { Authorization: `Bearer ${robotAccessToken}` } : undefined,\n });\n\n if (!response.ok) {\n const textResult = await asyncResult(response.text());\n throw new Error(`Unexpected response from server (${response.status}): ${textResult.value}`);\n }\n\n // URL may contain percent-encoded characters, e.g. my%20file.apk\n // this replaces all non-alphanumeric characters (excluding dot) with underscore\n const archiveFilename = path\n .basename(new URL(response.url).pathname)\n .replace(/([^a-z0-9.-]+)/gi, '_');\n const archivePath = path.join(downloadDestinationDirectory, archiveFilename);\n\n await streamPipeline(response.body, fs.createWriteStream(archivePath));\n\n const { size } = await fs.promises.stat(archivePath);\n\n logger.info(`Downloaded ${archivePath} (${formatBytes(size)} bytes).`);\n\n const isFileATarGzArchive = await isFileTarGzAsync(archivePath);\n\n if (!isFileATarGzArchive) {\n logger.info(`Artifact is not a .tar.gz archive, skipping decompression and validation.`);\n return { artifactPath: archivePath };\n }\n\n const extractionDirectory = await fs.promises.mkdtemp(\n path.join(os.tmpdir(), 'download_artifact-extracted-')\n );\n await decompressTarAsync({\n archivePath,\n destinationDirectory: extractionDirectory,\n });\n\n return { artifactPath: extractionDirectory };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"downloadBuild.js","sourceRoot":"","sources":["../../../src/steps/functions/downloadBuild.ts"],"names":[],"mappings":";;;;;AA0BA,kEA4CC;AAED,gDA4EC;AApJD,0DAA6B;AAC7B,sDAAyB;AACzB,sDAAyB;AACzB,oDAA4B;AAC5B,+BAAiC;AAEjC,uCAKqB;AACrB,2CAA4C;AAC5C,4DAA+B;AAC/B,yCAAiC;AACjC,6BAAwB;AAExB,4DAAkE;AAElE,qEAAkE;AAClE,qDAAoD;AACpD,6CAAyE;AACzE,iDAAgD;AAEhD,MAAM,cAAc,GAAG,IAAA,gBAAS,EAAC,gBAAM,CAAC,QAAQ,CAAC,CAAC;AAElD,SAAgB,2BAA2B;IACzC,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,oBAAoB;QACjC,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,UAAU;gBACd,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,YAAY;gBAChB,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,IAAI;gBACtD,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;aAC3C,CAAC;SACH;QACD,eAAe,EAAE;YACf,uBAAe,CAAC,cAAc,CAAC;gBAC7B,EAAE,EAAE,eAAe;gBACnB,QAAQ,EAAE,IAAI;aACf,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;;YAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;YAE5B,MAAM,UAAU,GAAG,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,yBAAyB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,qBAAqB,OAAO,KAAK,CAAC,CAAC;YAE/C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,kBAAkB,CAAC;gBAChD,MAAM;gBACN,OAAO;gBACP,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB;gBAChE,gBAAgB,EAAE,MAAA,MAAA,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,0CAAE,gBAAgB,mCAAI,IAAI;gBACrF,UAAU;aACX,CAAC,CAAC;YAEH,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,EACvC,MAAM,EACN,OAAO,EACP,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,GAOX;IACC,MAAM,4BAA4B,GAAG,MAAM,iBAAE,CAAC,QAAQ,CAAC,OAAO,CAC5D,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC,CACrD,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,qCAAiB,EAAC,oBAAK,CAAC,CAC7C,IAAI,GAAG,CAAC,qBAAqB,OAAO,EAAE,EAAE,gBAAgB,CAAC,EACzD;QACE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;KACxF,CACF,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAW,EAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,MAAM,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,iEAAiE;IACjE,gFAAgF;IAChF,MAAM,eAAe,GAAG,mBAAI;SACzB,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;SACxC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,mBAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,eAAe,CAAC,CAAC;IAE7E,MAAM,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;IAEvE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,iBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAErD,MAAM,CAAC,IAAI,CAAC,cAAc,WAAW,KAAK,IAAA,uBAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEvE,MAAM,mBAAmB,GAAG,MAAM,IAAA,wBAAgB,EAAC,WAAW,CAAC,CAAC;IAEhE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QACzF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,iBAAE,CAAC,QAAQ,CAAC,OAAO,CACnD,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CACpD,CAAC;IACF,MAAM,IAAA,0BAAkB,EAAC;QACvB,WAAW;QACX,oBAAoB,EAAE,mBAAmB;KAC1C,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,IAAA,gBAAI,EAAC,SAAS,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;QACjE,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,mBAAmB;QACxB,SAAS,EAAE,KAAK;QAChB,eAAe,EAAE,KAAK;KACvB,CAAC,CAAC;IAEH,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,wBAAe,CACvB,sCAAsC,EACtC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC,CACpF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CACT,SAAS,aAAa,CAAC,MAAM,aAAa,IAAA,mBAAS,EAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,mBAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5K,CAAC;IAEF,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5C,CAAC","sourcesContent":["import path from 'node:path';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport stream from 'stream';\nimport { promisify } from 'util';\n\nimport {\n BuildFunction,\n BuildStepInput,\n BuildStepInputValueTypeName,\n BuildStepOutput,\n} from '@expo/steps';\nimport { asyncResult } from '@expo/results';\nimport fetch from 'node-fetch';\nimport { glob } from 'fast-glob';\nimport { z } from 'zod';\nimport { bunyan } from '@expo/logger';\nimport { UserFacingError } from '@expo/eas-build-job/dist/errors';\n\nimport { retryOnDNSFailure } from '../../utils/retryOnDNSFailure';\nimport { formatBytes } from '../../utils/artifacts';\nimport { decompressTarAsync, isFileTarGzAsync } from '../../utils/files';\nimport { pluralize } from '../../utils/strings';\n\nconst streamPipeline = promisify(stream.pipeline);\n\nexport function createDownloadBuildFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'download_build',\n name: 'Download build',\n __metricsId: 'eas/download_build',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'build_id',\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'extensions',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n defaultValue: ['apk', 'aab', 'ipa', 'app'],\n }),\n ],\n outputProviders: [\n BuildStepOutput.createProvider({\n id: 'artifact_path',\n required: true,\n }),\n ],\n fn: async (stepsCtx, { inputs, outputs }) => {\n const { logger } = stepsCtx;\n\n const extensions = z.array(z.string()).parse(inputs.extensions.value);\n logger.info(`Expected extensions: [${extensions.join(', ')}]`);\n const buildId = z.string().uuid().parse(inputs.build_id.value);\n logger.info(`Downloading build ${buildId}...`);\n\n const { artifactPath } = await downloadBuildAsync({\n logger,\n buildId,\n expoApiServerURL: stepsCtx.global.staticContext.expoApiServerURL,\n robotAccessToken: stepsCtx.global.staticContext.job.secrets?.robotAccessToken ?? null,\n extensions,\n });\n\n outputs.artifact_path.set(artifactPath);\n },\n });\n}\n\nexport async function downloadBuildAsync({\n logger,\n buildId,\n expoApiServerURL,\n robotAccessToken,\n extensions,\n}: {\n logger: bunyan;\n buildId: string;\n expoApiServerURL: string;\n robotAccessToken: string | null;\n extensions: string[];\n}): Promise<{ artifactPath: string }> {\n const downloadDestinationDirectory = await fs.promises.mkdtemp(\n path.join(os.tmpdir(), 'download_build-downloaded-')\n );\n\n const response = await retryOnDNSFailure(fetch)(\n new URL(`/v2/artifacts/eas/${buildId}`, expoApiServerURL),\n {\n headers: robotAccessToken ? { Authorization: `Bearer ${robotAccessToken}` } : undefined,\n }\n );\n\n if (!response.ok) {\n const textResult = await asyncResult(response.text());\n throw new Error(`Unexpected response from server (${response.status}): ${textResult.value}`);\n }\n\n // URL may contain percent-encoded characters, e.g. my%20file.apk\n // this replaces all non-alphanumeric characters (excluding dot) with underscore\n const archiveFilename = path\n .basename(new URL(response.url).pathname)\n .replace(/([^a-z0-9.-]+)/gi, '_');\n const archivePath = path.join(downloadDestinationDirectory, archiveFilename);\n\n await streamPipeline(response.body, fs.createWriteStream(archivePath));\n\n const { size } = await fs.promises.stat(archivePath);\n\n logger.info(`Downloaded ${archivePath} (${formatBytes(size)} bytes).`);\n\n const isFileATarGzArchive = await isFileTarGzAsync(archivePath);\n\n if (!isFileATarGzArchive) {\n logger.info(`Artifact is not a .tar.gz archive, skipping decompression and validation.`);\n return { artifactPath: archivePath };\n }\n\n const extractionDirectory = await fs.promises.mkdtemp(\n path.join(os.tmpdir(), 'download_build-extracted-')\n );\n await decompressTarAsync({\n archivePath,\n destinationDirectory: extractionDirectory,\n });\n\n const matchingFiles = await glob(`**/*.(${extensions.join('|')})`, {\n absolute: true,\n cwd: extractionDirectory,\n onlyFiles: false,\n onlyDirectories: false,\n });\n\n if (matchingFiles.length === 0) {\n throw new UserFacingError(\n 'EAS_DOWNLOAD_BUILD_NO_MATCHING_FILES',\n `No ${extensions.map((ext) => `.${ext}`).join(', ')} entries found in the archive.`\n );\n }\n\n logger.info(\n `Found ${matchingFiles.length} matching ${pluralize(matchingFiles.length, 'entry')}:\\n${matchingFiles.map((f) => `- ${path.relative(extractionDirectory, f)}`).join('\\n')}`\n );\n\n return { artifactPath: matchingFiles[0] };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"eagerBundle.js","sourceRoot":"","sources":["../../../src/steps/functions/eagerBundle.ts"],"names":[],"mappings":";;;;;AAMA,4DA+CC;AArDD,uCAAyF;AACzF,oDAA4B;AAE5B,0DAA4D;AAC5D,+DAAmE;AAEnE,SAAgB,wBAAwB;IACtC,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,kBAAkB;QAC/B,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,qCAAqC;gBACzC,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;;YACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YACD,IACE,CAAA,MAAA,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,0CAAE,UAAU;gBAClD,CAAC,gBAAM,CAAC,SAAS,CAAC,MAAA,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,0CAAE,UAAU,EAAE,MAAM,CAAC,EAC7E,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,cAAc,GAAG,IAAA,sCAAqB,EAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACxE,MAAM,+BAA+B,GAAG,MAAM,CAAC,mCAAmC,CAAC,KAEtE,CAAC;YAEd,MAAM,IAAA,8BAAgB,EAAC;gBACrB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,UAAU,EAAE,QAAQ,CAAC,gBAAgB;gBACrC,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,GAAG,EAAE;oBACH,GAAG,GAAG;oBACN,GAAG,CAAC,+BAA+B;wBACjC,CAAC,CAAC;4BACE,iCAAiC,EAAE,+BAA+B;4BAClE,8BAA8B,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI;yBACvE;wBACH,CAAC,CAAC,IAAI,CAAC;iBACV;gBACD,cAAc;aACf,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport semver from 'semver';\n\nimport { eagerBundleAsync } from '../../common/eagerBundle';\nimport { resolvePackageManager } from '../../utils/packageManager';\n\nexport function eagerBundleBuildFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'eager_bundle',\n name: 'Bundle JavaScript',\n __metricsId: 'eas/eager_bundle',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'resolved_eas_update_runtime_version',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n fn: async (stepsCtx, { env, inputs }) => {\n const job = stepsCtx.global.staticContext.job;\n if (!job.platform) {\n throw new Error('Custom build job must have platform set');\n }\n if (\n stepsCtx.global.staticContext.metadata?.sdkVersion &&\n !semver.satisfies(stepsCtx.global.staticContext.metadata?.sdkVersion, '>=52')\n ) {\n throw new Error('Eager bundle is not supported for SDK version < 52');\n }\n\n const packageManager = resolvePackageManager(stepsCtx.workingDirectory);\n const resolvedEASUpdateRuntimeVersion = inputs.resolved_eas_update_runtime_version.value as\n | string\n | undefined;\n\n await eagerBundleAsync({\n platform: job.platform,\n workingDir: stepsCtx.workingDirectory,\n logger: stepsCtx.logger,\n env: {\n ...env,\n ...(resolvedEASUpdateRuntimeVersion\n ? {\n EXPO_UPDATES_FINGERPRINT_OVERRIDE: resolvedEASUpdateRuntimeVersion,\n EXPO_UPDATES_WORKFLOW_OVERRIDE: stepsCtx.global.staticContext.job.type,\n }\n : null),\n },\n packageManager,\n });\n },\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"findAndUploadBuildArtifacts.js","sourceRoot":"","sources":["../../../src/steps/functions/findAndUploadBuildArtifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import { ManagedArtifactType, Ios, Platform, BuildJob } from '@expo/eas-build-job';\nimport { BuildFunction, BuildStepContext } from '@expo/steps';\n\nimport { findArtifacts } from '../../utils/artifacts';\nimport { findXcodeBuildLogsPathAsync } from '../../ios/xcodeBuildLogs';\nimport { CustomBuildContext } from '../../customBuildContext';\n\nexport function createFindAndUploadBuildArtifactsBuildFunction(\n ctx: CustomBuildContext<BuildJob>\n): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'find_and_upload_build_artifacts',\n name: 'Find and upload build artifacts',\n __metricsId: 'eas/find_and_upload_build_artifacts',\n fn: async (stepCtx) => {\n // We want each upload to print logs on its own\n // and we don't want to interleave logs from different uploads\n // so we execute uploads consecutively.\n // Both application archive and build artifact uploads errors\n // are throwing. We count the former as more important,\n // so we save its for final throw.\n\n let firstError: any = null;\n\n try {\n await uploadApplicationArchivesAsync({ ctx, stepCtx });\n } catch (err: unknown) {\n stepCtx.logger.error(`Failed to upload application archives.`, err);\n firstError ||= err;\n }\n\n try {\n await uploadBuildArtifacts({ ctx, stepCtx });\n } catch (err: unknown) {\n stepCtx.logger.error(`Failed to upload build artifacts.`, err);\n firstError ||= err;\n }\n\n if (ctx.job.platform === Platform.IOS) {\n try {\n await uploadXcodeBuildLogs({ ctx, stepCtx });\n } catch (err: unknown) {\n stepCtx.logger.error(`Failed to upload Xcode build logs.`, err);\n }\n }\n\n if (firstError) {\n throw firstError;\n }\n },\n });\n}\n\nfunction resolveIosArtifactPath(job: Ios.Job): string {\n if (job.applicationArchivePath) {\n return job.applicationArchivePath;\n } else if (job.simulator) {\n return 'ios/build/Build/Products/*simulator/*.app';\n } else {\n return 'ios/build/*.ipa';\n }\n}\n\nasync function uploadApplicationArchivesAsync({\n ctx,\n stepCtx: { workingDirectory, logger },\n}: {\n ctx: CustomBuildContext<BuildJob>;\n stepCtx: BuildStepContext;\n}): Promise<void> {\n const applicationArchivePatternOrPath =\n ctx.job.platform === Platform.ANDROID\n ? ctx.job.applicationArchivePath ?? 'android/app/build/outputs/**/*.{apk,aab}'\n : resolveIosArtifactPath(ctx.job);\n const applicationArchives = await findArtifacts({\n rootDir: workingDirectory,\n patternOrPath: applicationArchivePatternOrPath,\n logger,\n });\n\n if (applicationArchives.length === 0) {\n throw new Error(`Found no application archives for \"${applicationArchivePatternOrPath}\".`);\n }\n\n const count = applicationArchives.length;\n logger.info(\n `Found ${count} application archive${count > 1 ? 's' : ''}:\\n- ${applicationArchives.join(\n '\\n- '\n )}`\n );\n\n logger.info('Uploading...');\n await ctx.runtimeApi.uploadArtifact({\n artifact: {\n type: ManagedArtifactType.APPLICATION_ARCHIVE,\n paths: applicationArchives,\n },\n logger,\n });\n logger.info('Done.');\n}\n\nasync function uploadBuildArtifacts({\n ctx,\n stepCtx: { workingDirectory, logger },\n}: {\n ctx: CustomBuildContext<BuildJob>;\n stepCtx: BuildStepContext;\n}): Promise<void> {\n const buildArtifacts = (\n await Promise.all(\n (ctx.job.buildArtifactPaths ?? []).map((path) =>\n findArtifacts({ rootDir: workingDirectory, patternOrPath: path, logger })\n )\n )\n ).flat();\n if (buildArtifacts.length === 0) {\n return;\n }\n\n logger.info(`Found additional build artifacts:\\n- ${buildArtifacts.join('\\n- ')}`);\n logger.info('Uploading...');\n await ctx.runtimeApi.uploadArtifact({\n artifact: {\n type: ManagedArtifactType.BUILD_ARTIFACTS,\n paths: buildArtifacts,\n },\n logger,\n });\n logger.info('Done.');\n}\n\nasync function uploadXcodeBuildLogs({\n ctx,\n stepCtx: { logger, global },\n}: {\n ctx: CustomBuildContext;\n stepCtx: BuildStepContext;\n}): Promise<void> {\n const xcodeBuildLogsPath = await findXcodeBuildLogsPathAsync(global.buildLogsDirectory);\n if (!xcodeBuildLogsPath) {\n return;\n }\n\n logger.info(`Found Xcode build logs.`);\n logger.info('Uploading...');\n await ctx.runtimeApi.uploadArtifact({\n artifact: {\n type: ManagedArtifactType.XCODE_BUILD_LOGS,\n paths: [xcodeBuildLogsPath],\n },\n logger,\n });\n logger.info('Done.');\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateGymfileFromTemplate.js","sourceRoot":"","sources":["../../../src/steps/functions/generateGymfileFromTemplate.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\nimport path from 'path';\n\nimport fs from 'fs-extra';\nimport { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport { Ios } from '@expo/eas-build-job';\nimport { IOSConfig } from '@expo/config-plugins';\nimport plist from '@expo/plist';\nimport { bunyan } from '@expo/logger';\nimport { templateString } from '@expo/template-file';\n\nimport { IosBuildCredentialsSchema } from '../utils/ios/credentials/credentials';\nimport IosCredentialsManager, { Credentials } from '../utils/ios/credentials/manager';\nimport { resolveBuildConfiguration, resolveScheme } from '../utils/ios/resolve';\nimport { isTVOS } from '../utils/ios/tvos';\n\nconst DEFAULT_CREDENTIALS_TEMPLATE = `\n suppress_xcode_output(true)\n clean(<%- CLEAN %>)\n\n scheme(\"<%- SCHEME %>\")\n <% if (BUILD_CONFIGURATION) { %>\n configuration(\"<%- BUILD_CONFIGURATION %>\")\n <% } %>\n\n export_options({\n method: \"<%- EXPORT_METHOD %>\",\n provisioningProfiles: {<% _.forEach(PROFILES, function(profile) { %>\n \"<%- profile.BUNDLE_ID %>\" => \"<%- profile.UUID %>\",<% }); %>\n }<% if (ICLOUD_CONTAINER_ENVIRONMENT) { %>,\n iCloudContainerEnvironment: \"<%- ICLOUD_CONTAINER_ENVIRONMENT %>\"\n <% } %>\n })\n\n export_xcargs \"OTHER_CODE_SIGN_FLAGS=\\\\\"--keychain <%- KEYCHAIN_PATH %>\\\\\"\"\n\n disable_xcpretty(true)\n buildlog_path(\"<%- LOGS_DIRECTORY %>\")\n\n output_directory(\"<%- OUTPUT_DIRECTORY %>\")\n`;\n\nconst DEFAULT_SIMULATOR_TEMPLATE = `\n suppress_xcode_output(true)\n clean(<%- CLEAN %>)\n\n scheme(\"<%- SCHEME %>\")\n <% if (BUILD_CONFIGURATION) { %>\n configuration(\"<%- BUILD_CONFIGURATION %>\")\n <% } %>\n\n derived_data_path(\"<%- DERIVED_DATA_PATH %>\")\n skip_package_ipa(true)\n skip_archive(true)\n destination(\"<%- SCHEME_SIMULATOR_DESTINATION %>\")\n\n disable_xcpretty(true)\n buildlog_path(\"<%- LOGS_DIRECTORY %>\")\n`;\n\nexport function generateGymfileFromTemplateFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'generate_gymfile_from_template',\n name: 'Generate Gymfile from template',\n __metricsId: 'eas/generate_gymfile_from_template',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'template',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'credentials',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n }),\n BuildStepInput.createProvider({\n id: 'build_configuration',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'scheme',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'clean',\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.BOOLEAN,\n defaultValue: false,\n }),\n BuildStepInput.createProvider({\n id: 'extra',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n }),\n ],\n fn: async (stepCtx, { inputs }) => {\n let credentials: Credentials | undefined = undefined;\n const rawCredentialsInput = inputs.credentials.value as Record<string, any> | undefined;\n if (rawCredentialsInput) {\n const { value, error } = IosBuildCredentialsSchema.validate(rawCredentialsInput, {\n stripUnknown: true,\n convert: true,\n abortEarly: false,\n });\n if (error) {\n throw error;\n }\n\n const credentialsManager = new IosCredentialsManager(value);\n credentials = await credentialsManager.prepare(stepCtx.logger);\n }\n\n const extra: Record<string, any> =\n (inputs.extra.value as Record<string, any> | undefined) ?? {};\n\n const templateInput = inputs.template.value as string | undefined;\n\n let template: string;\n if (templateInput) {\n template = templateInput;\n } else if (credentials) {\n template = DEFAULT_CREDENTIALS_TEMPLATE;\n } else {\n template = DEFAULT_SIMULATOR_TEMPLATE;\n }\n\n assert(stepCtx.global.staticContext.job, 'Job is not defined');\n const job = stepCtx.global.staticContext.job as Ios.Job;\n const buildConfiguration = resolveBuildConfiguration(\n job,\n inputs.build_configuration.value as string | undefined\n );\n const scheme = resolveScheme(\n stepCtx.workingDirectory,\n job,\n inputs.scheme.value as string | undefined\n );\n const entitlements = await maybeReadEntitlementsAsync(\n stepCtx.logger,\n stepCtx.workingDirectory,\n scheme,\n buildConfiguration\n );\n\n const gymfilePath = path.join(stepCtx.workingDirectory, 'ios/Gymfile');\n\n const PROFILES: { BUNDLE_ID: string; UUID: string }[] = [];\n if (credentials) {\n const targets = Object.keys(credentials.targetProvisioningProfiles);\n for (const target of targets) {\n const profile = credentials.targetProvisioningProfiles[target];\n PROFILES.push({\n BUNDLE_ID: profile.bundleIdentifier,\n UUID: profile.uuid,\n });\n }\n }\n\n const ICLOUD_CONTAINER_ENVIRONMENT = (\n entitlements as Record<string, string | Record<string, string>>\n )?.['com.apple.developer.icloud-container-environment'] as string | undefined;\n\n const isTV = await isTVOS({\n scheme,\n buildConfiguration,\n workingDir: stepCtx.workingDirectory,\n });\n const simulatorDestination = `generic/platform=${isTV ? 'tvOS' : 'iOS'} Simulator`;\n\n const output = templateString({\n input: template,\n vars: {\n SCHEME: scheme,\n BUILD_CONFIGURATION: buildConfiguration,\n OUTPUT_DIRECTORY: './build',\n CLEAN: String(inputs.clean.value),\n LOGS_DIRECTORY: stepCtx.global.buildLogsDirectory,\n ICLOUD_CONTAINER_ENVIRONMENT,\n SCHEME_SIMULATOR_DESTINATION: simulatorDestination,\n DERIVED_DATA_PATH: './build',\n ...(PROFILES ? { PROFILES } : {}),\n ...(credentials\n ? {\n KEYCHAIN_PATH: credentials.keychainPath,\n EXPORT_METHOD: credentials.distributionType,\n }\n : {}),\n ...extra,\n },\n mustache: false,\n });\n await fs.writeFile(gymfilePath, output);\n\n const gymfileContents = await fs.readFile(gymfilePath, 'utf8');\n stepCtx.logger.info(`Successfully generated Gymfile: ${gymfileContents}`);\n },\n });\n}\n\nasync function maybeReadEntitlementsAsync(\n logger: bunyan,\n workingDir: string,\n scheme: string,\n buildConfiguration: string\n): Promise<object | null> {\n try {\n const applicationTargetName =\n await IOSConfig.BuildScheme.getApplicationTargetNameForSchemeAsync(workingDir, scheme);\n const entitlementsPath = IOSConfig.Entitlements.getEntitlementsPath(workingDir, {\n buildConfiguration,\n targetName: applicationTargetName,\n });\n if (!entitlementsPath) {\n return null;\n }\n const entitlementsRaw = await fs.readFile(entitlementsPath, 'utf8');\n return plist.parse(entitlementsRaw);\n } catch (err) {\n logger.warn({ err }, 'Failed to read entitlements');\n return null;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getCredentialsForBuildTriggeredByGitHubIntegration.js","sourceRoot":"","sources":["../../../src/steps/functions/getCredentialsForBuildTriggeredByGitHubIntegration.ts"],"names":[],"mappings":";;AAOA,4HAiBC;AAvBD,uCAA4C;AAI5C,6DAA+D;AAE/D,SAAgB,wDAAwD,CACtE,GAAiC;IAEjC,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,2DAA2D;QAC/D,IAAI,EAAE,2DAA2D;QACjE,WAAW,EAAE,+DAA+D;QAC5E,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YAC7B,MAAM,IAAA,4CAAuB,EAAC;gBAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG;gBACH,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { BuildJob } from '@expo/eas-build-job';\nimport { BuildFunction } from '@expo/steps';\n\nimport { CustomBuildContext } from '../../customBuildContext';\n\nimport { resolveBuildConfigAsync } from './resolveBuildConfig';\n\nexport function createGetCredentialsForBuildTriggeredByGithubIntegration(\n ctx: CustomBuildContext<BuildJob>\n): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'get_credentials_for_build_triggered_by_github_integration',\n name: 'Get credentials for build triggered by GitHub integration',\n __metricsId: 'eas/get_credentials_for_build_triggered_by_github_integration',\n fn: async (stepCtx, { env }) => {\n await resolveBuildConfigAsync({\n logger: stepCtx.logger,\n env,\n workingDirectory: stepCtx.workingDirectory,\n ctx,\n });\n },\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"injectAndroidCredentials.js","sourceRoot":"","sources":["../../../src/steps/functions/injectAndroidCredentials.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\n\nimport { v4 as uuidv4 } from 'uuid';\nimport {\n BuildFunction,\n BuildStepContext,\n BuildStepInput,\n BuildStepInputValueTypeName,\n} from '@expo/steps';\nimport fs from 'fs-extra';\nimport Joi from 'joi';\nimport { Android } from '@expo/eas-build-job';\n\nimport { injectCredentialsGradleConfig } from '../utils/android/gradleConfig';\n\nconst KeystoreSchema = Joi.object({\n dataBase64: Joi.string().required(),\n keystorePassword: Joi.string().allow('').required(),\n keyAlias: Joi.string().required(),\n keyPassword: Joi.string().allow(''),\n});\n\nconst AndroidBuildCredentialsSchema = Joi.object<{ keystore: Android.Keystore }>({\n keystore: KeystoreSchema.required(),\n}).required();\n\nexport function injectAndroidCredentialsFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'inject_android_credentials',\n name: 'Inject Android credentials',\n __metricsId: 'eas/inject_android_credentials',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'credentials',\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n defaultValue: '${ eas.job.secrets.buildCredentials }',\n }),\n ],\n fn: async (stepCtx, { inputs }) => {\n const rawCredentialsInput = inputs.credentials.value as Record<string, any>;\n const { value, error } = AndroidBuildCredentialsSchema.validate(rawCredentialsInput, {\n stripUnknown: true,\n convert: true,\n abortEarly: false,\n });\n if (error) {\n throw error;\n }\n const credentials = value;\n\n await restoreCredentials(stepCtx, credentials);\n await injectCredentialsGradleConfig(stepCtx.logger, stepCtx.workingDirectory);\n },\n });\n}\n\nasync function restoreCredentials(\n stepsCtx: BuildStepContext,\n buildCredentials: {\n keystore: Android.Keystore;\n }\n): Promise<void> {\n stepsCtx.logger.info(\"Writing secrets to the project's directory\");\n const keystorePath = path.join(stepsCtx.global.projectTargetDirectory, `keystore-${uuidv4()}`);\n await fs.writeFile(keystorePath, Buffer.from(buildCredentials.keystore.dataBase64, 'base64'));\n const credentialsJson = {\n android: {\n keystore: {\n keystorePath,\n keystorePassword: buildCredentials.keystore.keystorePassword,\n keyAlias: buildCredentials.keystore.keyAlias,\n keyPassword: buildCredentials.keystore.keyPassword,\n },\n },\n };\n await fs.writeFile(\n path.join(stepsCtx.global.projectTargetDirectory, 'credentials.json'),\n JSON.stringify(credentialsJson)\n );\n}\n"]}