@expo/build-tools 1.0.204 → 1.0.206

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 (236) hide show
  1. package/dist/android/credentials.js +1 -2
  2. package/dist/android/credentials.js.map +1 -1
  3. package/dist/android/expoUpdates.js +5 -5
  4. package/dist/android/expoUpdates.js.map +1 -1
  5. package/dist/android/gradle.d.ts +0 -1
  6. package/dist/android/gradle.js +3 -4
  7. package/dist/android/gradle.js.map +1 -1
  8. package/dist/android/gradleConfig.js +1 -2
  9. package/dist/android/gradleConfig.js.map +1 -1
  10. package/dist/buildErrors/detectError.js +1 -2
  11. package/dist/buildErrors/detectError.js.map +1 -1
  12. package/dist/builders/android.js +1 -1
  13. package/dist/builders/android.js.map +1 -1
  14. package/dist/builders/common.js +1 -2
  15. package/dist/builders/common.js.map +1 -1
  16. package/dist/builders/custom.js +1 -2
  17. package/dist/builders/custom.js.map +1 -1
  18. package/dist/builders/ios.js +1 -1
  19. package/dist/builders/ios.js.map +1 -1
  20. package/dist/common/eagerBundle.d.ts +0 -1
  21. package/dist/common/eagerBundle.js +2 -3
  22. package/dist/common/eagerBundle.js.map +1 -1
  23. package/dist/common/easBuildInternal.d.ts +0 -1
  24. package/dist/common/easBuildInternal.js +2 -3
  25. package/dist/common/easBuildInternal.js.map +1 -1
  26. package/dist/common/git.d.ts +0 -1
  27. package/dist/common/git.js +1 -2
  28. package/dist/common/git.js.map +1 -1
  29. package/dist/common/installDependencies.js +2 -3
  30. package/dist/common/installDependencies.js.map +1 -1
  31. package/dist/common/prebuild.d.ts +0 -1
  32. package/dist/common/prebuild.js +1 -2
  33. package/dist/common/prebuild.js.map +1 -1
  34. package/dist/common/projectSources.js +2 -3
  35. package/dist/common/projectSources.js.map +1 -1
  36. package/dist/common/setup.js +1 -2
  37. package/dist/common/setup.js.map +1 -1
  38. package/dist/context.d.ts +0 -1
  39. package/dist/customBuildContext.d.ts +0 -1
  40. package/dist/gcs/LoggerStream.d.ts +0 -2
  41. package/dist/gcs/client.d.ts +0 -1
  42. package/dist/gcs/retry.js +1 -2
  43. package/dist/gcs/retry.js.map +1 -1
  44. package/dist/generic.js +1 -2
  45. package/dist/generic.js.map +1 -1
  46. package/dist/ios/configure.js +2 -3
  47. package/dist/ios/configure.js.map +1 -1
  48. package/dist/ios/credentials/distributionCertificate.js +2 -3
  49. package/dist/ios/credentials/distributionCertificate.js.map +1 -1
  50. package/dist/ios/credentials/provisioningProfile.d.ts +0 -1
  51. package/dist/ios/expoUpdates.js +5 -5
  52. package/dist/ios/expoUpdates.js.map +1 -1
  53. package/dist/ios/fastfile.js +1 -2
  54. package/dist/ios/fastfile.js.map +1 -1
  55. package/dist/ios/fastlane.d.ts +0 -1
  56. package/dist/ios/fastlane.js +3 -4
  57. package/dist/ios/fastlane.js.map +1 -1
  58. package/dist/ios/gymfile.js +2 -3
  59. package/dist/ios/gymfile.js.map +1 -1
  60. package/dist/ios/pod.js +1 -2
  61. package/dist/ios/pod.js.map +1 -1
  62. package/dist/ios/resign.js +1 -2
  63. package/dist/ios/resign.js.map +1 -1
  64. package/dist/ios/resolve.js +3 -4
  65. package/dist/ios/resolve.js.map +1 -1
  66. package/dist/ios/tvos.js +1 -2
  67. package/dist/ios/tvos.js.map +1 -1
  68. package/dist/ios/xcodeBuildLogs.d.ts +0 -1
  69. package/dist/ios/xcodeBuildLogs.js +2 -3
  70. package/dist/ios/xcodeBuildLogs.js.map +1 -1
  71. package/dist/ios/xcodeEnv.js +1 -2
  72. package/dist/ios/xcodeEnv.js.map +1 -1
  73. package/dist/ios/xcpretty.d.ts +0 -1
  74. package/dist/steps/easFunctionGroups.js +1 -2
  75. package/dist/steps/easFunctionGroups.js.map +1 -1
  76. package/dist/steps/easFunctions.js +1 -2
  77. package/dist/steps/easFunctions.js.map +1 -1
  78. package/dist/steps/functionGroups/build.js +1 -2
  79. package/dist/steps/functionGroups/build.js.map +1 -1
  80. package/dist/steps/functionGroups/maestroTest.js +1 -2
  81. package/dist/steps/functionGroups/maestroTest.js.map +1 -1
  82. package/dist/steps/functions/calculateEASUpdateRuntimeVersion.js +1 -2
  83. package/dist/steps/functions/calculateEASUpdateRuntimeVersion.js.map +1 -1
  84. package/dist/steps/functions/checkout.js +1 -2
  85. package/dist/steps/functions/checkout.js.map +1 -1
  86. package/dist/steps/functions/configureAndroidVersion.js +1 -2
  87. package/dist/steps/functions/configureAndroidVersion.js.map +1 -1
  88. package/dist/steps/functions/configureEASUpdateIfInstalled.js +1 -2
  89. package/dist/steps/functions/configureEASUpdateIfInstalled.js.map +1 -1
  90. package/dist/steps/functions/configureIosCredentials.js +1 -2
  91. package/dist/steps/functions/configureIosCredentials.js.map +1 -1
  92. package/dist/steps/functions/configureIosVersion.js +1 -2
  93. package/dist/steps/functions/configureIosVersion.js.map +1 -1
  94. package/dist/steps/functions/createSubmissionEntity.js +1 -2
  95. package/dist/steps/functions/createSubmissionEntity.js.map +1 -1
  96. package/dist/steps/functions/downloadArtifact.d.ts +0 -1
  97. package/dist/steps/functions/downloadArtifact.js +2 -3
  98. package/dist/steps/functions/downloadArtifact.js.map +1 -1
  99. package/dist/steps/functions/downloadBuild.d.ts +0 -1
  100. package/dist/steps/functions/downloadBuild.js +2 -3
  101. package/dist/steps/functions/downloadBuild.js.map +1 -1
  102. package/dist/steps/functions/eagerBundle.js +1 -2
  103. package/dist/steps/functions/eagerBundle.js.map +1 -1
  104. package/dist/steps/functions/findAndUploadBuildArtifacts.js +1 -2
  105. package/dist/steps/functions/findAndUploadBuildArtifacts.js.map +1 -1
  106. package/dist/steps/functions/generateGymfileFromTemplate.js +1 -2
  107. package/dist/steps/functions/generateGymfileFromTemplate.js.map +1 -1
  108. package/dist/steps/functions/getCredentialsForBuildTriggeredByGitHubIntegration.js +1 -2
  109. package/dist/steps/functions/getCredentialsForBuildTriggeredByGitHubIntegration.js.map +1 -1
  110. package/dist/steps/functions/injectAndroidCredentials.js +1 -2
  111. package/dist/steps/functions/injectAndroidCredentials.js.map +1 -1
  112. package/dist/steps/functions/installMaestro.js +14 -16
  113. package/dist/steps/functions/installMaestro.js.map +1 -1
  114. package/dist/steps/functions/installNodeModules.js +2 -3
  115. package/dist/steps/functions/installNodeModules.js.map +1 -1
  116. package/dist/steps/functions/installPods.js +1 -2
  117. package/dist/steps/functions/installPods.js.map +1 -1
  118. package/dist/steps/functions/internalMaestroTest.js +2 -3
  119. package/dist/steps/functions/internalMaestroTest.js.map +1 -1
  120. package/dist/steps/functions/prebuild.js +1 -2
  121. package/dist/steps/functions/prebuild.js.map +1 -1
  122. package/dist/steps/functions/repack.d.ts +0 -1
  123. package/dist/steps/functions/repack.js +3 -4
  124. package/dist/steps/functions/repack.js.map +1 -1
  125. package/dist/steps/functions/resolveAppleTeamIdFromCredentials.js +1 -2
  126. package/dist/steps/functions/resolveAppleTeamIdFromCredentials.js.map +1 -1
  127. package/dist/steps/functions/resolveBuildConfig.d.ts +0 -1
  128. package/dist/steps/functions/resolveBuildConfig.js +2 -3
  129. package/dist/steps/functions/resolveBuildConfig.js.map +1 -1
  130. package/dist/steps/functions/runFastlane.js +1 -2
  131. package/dist/steps/functions/runFastlane.js.map +1 -1
  132. package/dist/steps/functions/runGradle.js +1 -2
  133. package/dist/steps/functions/runGradle.js.map +1 -1
  134. package/dist/steps/functions/sendSlackMessage.js +1 -2
  135. package/dist/steps/functions/sendSlackMessage.js.map +1 -1
  136. package/dist/steps/functions/startAndroidEmulator.js +1 -2
  137. package/dist/steps/functions/startAndroidEmulator.js.map +1 -1
  138. package/dist/steps/functions/startIosSimulator.js +1 -2
  139. package/dist/steps/functions/startIosSimulator.js.map +1 -1
  140. package/dist/steps/functions/uploadArtifact.js +1 -2
  141. package/dist/steps/functions/uploadArtifact.js.map +1 -1
  142. package/dist/steps/functions/useNpmToken.js +1 -2
  143. package/dist/steps/functions/useNpmToken.js.map +1 -1
  144. package/dist/steps/utils/android/expoUpdates.js +4 -4
  145. package/dist/steps/utils/android/expoUpdates.js.map +1 -1
  146. package/dist/steps/utils/android/gradle.d.ts +0 -1
  147. package/dist/steps/utils/android/gradle.js +2 -3
  148. package/dist/steps/utils/android/gradle.js.map +1 -1
  149. package/dist/steps/utils/android/gradleConfig.d.ts +0 -1
  150. package/dist/steps/utils/android/gradleConfig.js +2 -3
  151. package/dist/steps/utils/android/gradleConfig.js.map +1 -1
  152. package/dist/steps/utils/expoUpdates.d.ts +0 -1
  153. package/dist/steps/utils/expoUpdates.js +2 -3
  154. package/dist/steps/utils/expoUpdates.js.map +1 -1
  155. package/dist/steps/utils/ios/configure.d.ts +0 -1
  156. package/dist/steps/utils/ios/configure.js +3 -4
  157. package/dist/steps/utils/ios/configure.js.map +1 -1
  158. package/dist/steps/utils/ios/credentials/distributionCertificate.js +2 -3
  159. package/dist/steps/utils/ios/credentials/distributionCertificate.js.map +1 -1
  160. package/dist/steps/utils/ios/credentials/keychain.d.ts +0 -1
  161. package/dist/steps/utils/ios/credentials/manager.d.ts +0 -1
  162. package/dist/steps/utils/ios/credentials/provisioningProfile.d.ts +0 -2
  163. package/dist/steps/utils/ios/expoUpdates.js +4 -4
  164. package/dist/steps/utils/ios/expoUpdates.js.map +1 -1
  165. package/dist/steps/utils/ios/fastlane.d.ts +0 -1
  166. package/dist/steps/utils/ios/fastlane.js +2 -3
  167. package/dist/steps/utils/ios/fastlane.js.map +1 -1
  168. package/dist/steps/utils/ios/resolve.js +2 -3
  169. package/dist/steps/utils/ios/resolve.js.map +1 -1
  170. package/dist/steps/utils/ios/tvos.js +1 -2
  171. package/dist/steps/utils/ios/tvos.js.map +1 -1
  172. package/dist/steps/utils/ios/xcpretty.d.ts +0 -1
  173. package/dist/utils/AndroidEmulatorUtils.d.ts +0 -2
  174. package/dist/utils/AndroidEmulatorUtils.js +32 -17
  175. package/dist/utils/AndroidEmulatorUtils.js.map +1 -1
  176. package/dist/utils/IosSimulatorUtils.d.ts +8 -1
  177. package/dist/utils/IosSimulatorUtils.js +29 -0
  178. package/dist/utils/IosSimulatorUtils.js.map +1 -1
  179. package/dist/utils/appConfig.d.ts +0 -1
  180. package/dist/utils/appConfig.js +1 -2
  181. package/dist/utils/appConfig.js.map +1 -1
  182. package/dist/utils/artifacts.d.ts +0 -1
  183. package/dist/utils/artifacts.js +5 -5
  184. package/dist/utils/artifacts.js.map +1 -1
  185. package/dist/utils/diffFingerprintsAsync.d.ts +0 -1
  186. package/dist/utils/diffFingerprintsAsync.js +1 -2
  187. package/dist/utils/diffFingerprintsAsync.js.map +1 -1
  188. package/dist/utils/environmentSecrets.js +1 -2
  189. package/dist/utils/environmentSecrets.js.map +1 -1
  190. package/dist/utils/expoFingerprintCli.js +3 -3
  191. package/dist/utils/expoFingerprintCli.js.map +1 -1
  192. package/dist/utils/expoUpdates.d.ts +0 -1
  193. package/dist/utils/expoUpdates.js +9 -10
  194. package/dist/utils/expoUpdates.js.map +1 -1
  195. package/dist/utils/expoUpdatesCli.js +2 -2
  196. package/dist/utils/expoUpdatesCli.js.map +1 -1
  197. package/dist/utils/files.js +2 -3
  198. package/dist/utils/files.js.map +1 -1
  199. package/dist/utils/findMaestroPathsFlowsToExecuteAsync.d.ts +0 -1
  200. package/dist/utils/findMaestroPathsFlowsToExecuteAsync.js +1 -2
  201. package/dist/utils/findMaestroPathsFlowsToExecuteAsync.js.map +1 -1
  202. package/dist/utils/fingerprint.js +1 -2
  203. package/dist/utils/fingerprint.js.map +1 -1
  204. package/dist/utils/getExpoUpdatesPackageVersionIfInstalledAsync.d.ts +0 -1
  205. package/dist/utils/getExpoUpdatesPackageVersionIfInstalledAsync.js +1 -1
  206. package/dist/utils/getExpoUpdatesPackageVersionIfInstalledAsync.js.map +1 -1
  207. package/dist/utils/hooks.js +2 -2
  208. package/dist/utils/hooks.js.map +1 -1
  209. package/dist/utils/npmrc.d.ts +0 -1
  210. package/dist/utils/npmrc.js +1 -2
  211. package/dist/utils/npmrc.js.map +1 -1
  212. package/dist/utils/outputs.d.ts +0 -1
  213. package/dist/utils/outputs.js +2 -3
  214. package/dist/utils/outputs.js.map +1 -1
  215. package/dist/utils/packageManager.js +6 -6
  216. package/dist/utils/packageManager.js.map +1 -1
  217. package/dist/utils/prepareBuildExecutable.js +1 -2
  218. package/dist/utils/prepareBuildExecutable.js.map +1 -1
  219. package/dist/utils/processes.js +1 -2
  220. package/dist/utils/processes.js.map +1 -1
  221. package/dist/utils/project.js +3 -4
  222. package/dist/utils/project.js.map +1 -1
  223. package/dist/utils/promiseRetryWithCondition.js +1 -2
  224. package/dist/utils/promiseRetryWithCondition.js.map +1 -1
  225. package/dist/utils/resolveRuntimeVersionAsync.d.ts +0 -1
  226. package/dist/utils/resolveRuntimeVersionAsync.js +1 -2
  227. package/dist/utils/resolveRuntimeVersionAsync.js.map +1 -1
  228. package/dist/utils/retry.d.ts +0 -1
  229. package/dist/utils/retry.js +2 -3
  230. package/dist/utils/retry.js.map +1 -1
  231. package/dist/utils/retryOnDNSFailure.js +2 -3
  232. package/dist/utils/retryOnDNSFailure.js.map +1 -1
  233. package/dist/utils/turtleFetch.d.ts +0 -1
  234. package/dist/utils/turtleFetch.js +2 -2
  235. package/dist/utils/turtleFetch.js.map +1 -1
  236. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"getExpoUpdatesPackageVersionIfInstalledAsync.js","sourceRoot":"","sources":["../../src/utils/getExpoUpdatesPackageVersionIfInstalledAsync.ts"],"names":[],"mappings":";;;;;AACA,wDAA0B;AAC1B,gEAAuC;AAExB,KAAK,UAAU,4CAA4C,CACxE,2BAAmC,EACnC,MAAc;IAEd,MAAM,gBAAgB,GAAG,sBAAW,CAAC,MAAM,CACzC,2BAA2B,EAC3B,2BAA2B,CAC5B,CAAC;IAEF,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACxD,YAAY,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,0CAA0C,YAAY,EAAE,CAAC,CAAC;IACvE,OAAO,YAAY,CAAC;AACtB,CAAC;AAjBD,+DAiBC","sourcesContent":["import { bunyan } from '@expo/logger';\nimport fs from 'fs-extra';\nimport resolveFrom from 'resolve-from';\n\nexport default async function getExpoUpdatesPackageVersionIfInstalledAsync(\n reactNativeProjectDirectory: string,\n logger: bunyan\n): Promise<string | null> {\n const maybePackageJson = resolveFrom.silent(\n reactNativeProjectDirectory,\n 'expo-updates/package.json'\n );\n\n let versionOuter: string | null = null;\n if (maybePackageJson) {\n const { version } = await fs.readJson(maybePackageJson);\n versionOuter = version;\n }\n\n logger.debug(`Resolved expo-updates package version: ${versionOuter}`);\n return versionOuter;\n}\n"]}
1
+ {"version":3,"file":"getExpoUpdatesPackageVersionIfInstalledAsync.js","sourceRoot":"","sources":["../../src/utils/getExpoUpdatesPackageVersionIfInstalledAsync.ts"],"names":[],"mappings":";;;;;AAIA,+DAiBC;AApBD,wDAA0B;AAC1B,gEAAuC;AAExB,KAAK,UAAU,4CAA4C,CACxE,2BAAmC,EACnC,MAAc;IAEd,MAAM,gBAAgB,GAAG,sBAAW,CAAC,MAAM,CACzC,2BAA2B,EAC3B,2BAA2B,CAC5B,CAAC;IAEF,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACxD,YAAY,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,0CAA0C,YAAY,EAAE,CAAC,CAAC;IACvE,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["import { bunyan } from '@expo/logger';\nimport fs from 'fs-extra';\nimport resolveFrom from 'resolve-from';\n\nexport default async function getExpoUpdatesPackageVersionIfInstalledAsync(\n reactNativeProjectDirectory: string,\n logger: bunyan\n): Promise<string | null> {\n const maybePackageJson = resolveFrom.silent(\n reactNativeProjectDirectory,\n 'expo-updates/package.json'\n );\n\n let versionOuter: string | null = null;\n if (maybePackageJson) {\n const { version } = await fs.readJson(maybePackageJson);\n versionOuter = version;\n }\n\n logger.debug(`Resolved expo-updates package version: ${versionOuter}`);\n return versionOuter;\n}\n"]}
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.runHookIfPresent = exports.Hook = void 0;
6
+ exports.Hook = void 0;
7
+ exports.runHookIfPresent = runHookIfPresent;
7
8
  const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
8
9
  const packageManager_1 = require("./packageManager");
9
10
  const project_1 = require("./project");
@@ -42,5 +43,4 @@ async function runHookIfPresent(ctx, hook, { extraEnvs } = {}) {
42
43
  });
43
44
  }
44
45
  }
45
- exports.runHookIfPresent = runHookIfPresent;
46
46
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/utils/hooks.ts"],"names":[],"mappings":";;;;;;AACA,sEAAuC;AAIvC,qDAAkD;AAClD,uCAA4C;AAE5C,IAAY,IAWX;AAXD,WAAY,IAAI;IACd,6CAAqC,CAAA;IACrC,+CAAuC,CAAA;IACvC;;OAEG;IACH,+DAAuD,CAAA;IACvD,iDAAyC,CAAA;IACzC,6CAAqC,CAAA;IACrC,mDAA2C,CAAA;IAC3C,+CAAuC,CAAA;AACzC,CAAC,EAXW,IAAI,oBAAJ,IAAI,QAWf;AAEM,KAAK,UAAU,gBAAgB,CACpC,GAAuB,EACvB,IAAU,EACV,EAAE,SAAS,KAA6C,EAAE;;IAE1D,MAAM,UAAU,GAAG,GAAG,CAAC,8BAA8B,EAAE,CAAC;IACxD,MAAM,WAAW,GAAG,IAAA,yBAAe,EAAC,UAAU,CAAC,CAAC;IAChD,IAAI,MAAA,WAAW,CAAC,OAAO,0CAAG,IAAI,CAAC,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,6CAA6C,CAAC,CAAC;QAC9E,6FAA6F;QAC7F,6BAA6B;QAC7B,2EAA2E;QAC3E,MAAM,cAAc,GAClB,GAAG,CAAC,cAAc,KAAK,+BAAc,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW;YACrE,CAAC,CAAC,+BAAc,CAAC,GAAG;YACpB,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;QACzB,MAAM,IAAA,sBAAK,EAAC,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;YACzC,GAAG,EAAE,UAAU;YACf,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE;gBACH,GAAG,GAAG,CAAC,GAAG;gBACV,GAAG,SAAS;aACb;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAzBD,4CAyBC","sourcesContent":["import { BuildJob } from '@expo/eas-build-job';\nimport spawn from '@expo/turtle-spawn';\n\nimport { BuildContext } from '../context';\n\nimport { PackageManager } from './packageManager';\nimport { readPackageJson } from './project';\n\nexport enum Hook {\n PRE_INSTALL = 'eas-build-pre-install',\n POST_INSTALL = 'eas-build-post-install',\n /**\n * @deprecated\n */\n PRE_UPLOAD_ARTIFACTS = 'eas-build-pre-upload-artifacts',\n ON_BUILD_SUCCESS = 'eas-build-on-success',\n ON_BUILD_ERROR = 'eas-build-on-error',\n ON_BUILD_COMPLETE = 'eas-build-on-complete',\n ON_BUILD_CANCEL = 'eas-build-on-cancel',\n}\n\nexport async function runHookIfPresent<TJob extends BuildJob>(\n ctx: BuildContext<TJob>,\n hook: Hook,\n { extraEnvs }: { extraEnvs?: Record<string, string> } = {}\n): Promise<void> {\n const projectDir = ctx.getReactNativeProjectDirectory();\n const packageJson = readPackageJson(projectDir);\n if (packageJson.scripts?.[hook]) {\n ctx.logger.info(`Script '${hook}' is present in package.json, running it...`);\n // both yarn v2+ and yarn v1 seem to have issues with running preinstall script in some cases\n // like doing corepack enable\n // https://exponent-internal.slack.com/archives/C9PRD479V/p1736426668589209\n const packageManager =\n ctx.packageManager === PackageManager.YARN && hook === Hook.PRE_INSTALL\n ? PackageManager.NPM\n : ctx.packageManager;\n await spawn(packageManager, ['run', hook], {\n cwd: projectDir,\n logger: ctx.logger,\n env: {\n ...ctx.env,\n ...extraEnvs,\n },\n });\n }\n}\n"]}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/utils/hooks.ts"],"names":[],"mappings":";;;;;;AAqBA,4CAyBC;AA7CD,sEAAuC;AAIvC,qDAAkD;AAClD,uCAA4C;AAE5C,IAAY,IAWX;AAXD,WAAY,IAAI;IACd,6CAAqC,CAAA;IACrC,+CAAuC,CAAA;IACvC;;OAEG;IACH,+DAAuD,CAAA;IACvD,iDAAyC,CAAA;IACzC,6CAAqC,CAAA;IACrC,mDAA2C,CAAA;IAC3C,+CAAuC,CAAA;AACzC,CAAC,EAXW,IAAI,oBAAJ,IAAI,QAWf;AAEM,KAAK,UAAU,gBAAgB,CACpC,GAAuB,EACvB,IAAU,EACV,EAAE,SAAS,KAA6C,EAAE;;IAE1D,MAAM,UAAU,GAAG,GAAG,CAAC,8BAA8B,EAAE,CAAC;IACxD,MAAM,WAAW,GAAG,IAAA,yBAAe,EAAC,UAAU,CAAC,CAAC;IAChD,IAAI,MAAA,WAAW,CAAC,OAAO,0CAAG,IAAI,CAAC,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,6CAA6C,CAAC,CAAC;QAC9E,6FAA6F;QAC7F,6BAA6B;QAC7B,2EAA2E;QAC3E,MAAM,cAAc,GAClB,GAAG,CAAC,cAAc,KAAK,+BAAc,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW;YACrE,CAAC,CAAC,+BAAc,CAAC,GAAG;YACpB,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;QACzB,MAAM,IAAA,sBAAK,EAAC,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;YACzC,GAAG,EAAE,UAAU;YACf,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE;gBACH,GAAG,GAAG,CAAC,GAAG;gBACV,GAAG,SAAS;aACb;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC","sourcesContent":["import { BuildJob } from '@expo/eas-build-job';\nimport spawn from '@expo/turtle-spawn';\n\nimport { BuildContext } from '../context';\n\nimport { PackageManager } from './packageManager';\nimport { readPackageJson } from './project';\n\nexport enum Hook {\n PRE_INSTALL = 'eas-build-pre-install',\n POST_INSTALL = 'eas-build-post-install',\n /**\n * @deprecated\n */\n PRE_UPLOAD_ARTIFACTS = 'eas-build-pre-upload-artifacts',\n ON_BUILD_SUCCESS = 'eas-build-on-success',\n ON_BUILD_ERROR = 'eas-build-on-error',\n ON_BUILD_COMPLETE = 'eas-build-on-complete',\n ON_BUILD_CANCEL = 'eas-build-on-cancel',\n}\n\nexport async function runHookIfPresent<TJob extends BuildJob>(\n ctx: BuildContext<TJob>,\n hook: Hook,\n { extraEnvs }: { extraEnvs?: Record<string, string> } = {}\n): Promise<void> {\n const projectDir = ctx.getReactNativeProjectDirectory();\n const packageJson = readPackageJson(projectDir);\n if (packageJson.scripts?.[hook]) {\n ctx.logger.info(`Script '${hook}' is present in package.json, running it...`);\n // both yarn v2+ and yarn v1 seem to have issues with running preinstall script in some cases\n // like doing corepack enable\n // https://exponent-internal.slack.com/archives/C9PRD479V/p1736426668589209\n const packageManager =\n ctx.packageManager === PackageManager.YARN && hook === Hook.PRE_INSTALL\n ? PackageManager.NPM\n : ctx.packageManager;\n await spawn(packageManager, ['run', hook], {\n cwd: projectDir,\n logger: ctx.logger,\n env: {\n ...ctx.env,\n ...extraEnvs,\n },\n });\n }\n}\n"]}
@@ -1,4 +1,3 @@
1
- /// <reference types="bunyan" />
2
1
  import { Job } from '@expo/eas-build-job';
3
2
  import { bunyan } from '@expo/logger';
4
3
  import { BuildContext } from '../context';
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.setUpNpmrcAsync = void 0;
6
+ exports.setUpNpmrcAsync = setUpNpmrcAsync;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const fs_extra_1 = __importDefault(require("fs-extra"));
9
9
  const packageManager_1 = require("./packageManager");
@@ -16,7 +16,6 @@ async function setUpNpmrcAsync(ctx, logger) {
16
16
  await logIfNpmrcExistsAsync(ctx, logger);
17
17
  }
18
18
  }
19
- exports.setUpNpmrcAsync = setUpNpmrcAsync;
20
19
  async function createNpmrcIfNotExistsAsync(ctx, logger) {
21
20
  logger.info('We detected that you set the NPM_TOKEN environment variable');
22
21
  const projectNpmrcPath = path_1.default.join(ctx.buildDirectory, '.npmrc');
@@ -1 +1 @@
1
- {"version":3,"file":"npmrc.js","sourceRoot":"","sources":["../../src/utils/npmrc.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAIxB,wDAA0B;AAI1B,qDAAuD;AAEvD,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;AAEnE,KAAK,UAAU,eAAe,CAAC,GAAsB,EAAE,MAAc;IAC1E,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,2BAA2B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,MAAM,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAND,0CAMC;AAED,KAAK,UAAU,2BAA2B,CAAC,GAAsB,EAAE,MAAc;IAC/E,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACjE,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACtF,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QACtF,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3B,MAAM,kBAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,GAAsB,EAAE,MAAc;IACzE,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAChC,IAAA,oCAAmB,EAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC,EACzD,QAAQ,CACT,CAAC;IACF,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,mBAAmB,cAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC","sourcesContent":["import path from 'path';\n\nimport { Job } from '@expo/eas-build-job';\nimport { bunyan } from '@expo/logger';\nimport fs from 'fs-extra';\n\nimport { BuildContext } from '../context';\n\nimport { findPackagerRootDir } from './packageManager';\n\nconst NPMRC_TEMPLATE_PATH = path.join(__dirname, '../../templates/npmrc');\n\nexport async function setUpNpmrcAsync(ctx: BuildContext<Job>, logger: bunyan): Promise<void> {\n if (ctx.env.NPM_TOKEN) {\n await createNpmrcIfNotExistsAsync(ctx, logger);\n } else {\n await logIfNpmrcExistsAsync(ctx, logger);\n }\n}\n\nasync function createNpmrcIfNotExistsAsync(ctx: BuildContext<Job>, logger: bunyan): Promise<void> {\n logger.info('We detected that you set the NPM_TOKEN environment variable');\n const projectNpmrcPath = path.join(ctx.buildDirectory, '.npmrc');\n if (await fs.pathExists(projectNpmrcPath)) {\n logger.info('.npmrc already exists in your project directory, skipping generation');\n } else {\n const npmrcContents = await fs.readFile(NPMRC_TEMPLATE_PATH, 'utf8');\n logger.info('Creating .npmrc in your project directory with the following contents:');\n logger.info(npmrcContents);\n await fs.copy(NPMRC_TEMPLATE_PATH, projectNpmrcPath);\n }\n}\n\nasync function logIfNpmrcExistsAsync(ctx: BuildContext<Job>, logger: bunyan): Promise<void> {\n const projectNpmrcPath = path.join(\n findPackagerRootDir(ctx.getReactNativeProjectDirectory()),\n '.npmrc'\n );\n if (await fs.pathExists(projectNpmrcPath)) {\n logger.info(`.npmrc found at ${path.relative(ctx.buildDirectory, projectNpmrcPath)}`);\n }\n}\n"]}
1
+ {"version":3,"file":"npmrc.js","sourceRoot":"","sources":["../../src/utils/npmrc.ts"],"names":[],"mappings":";;;;;AAYA,0CAMC;AAlBD,gDAAwB;AAIxB,wDAA0B;AAI1B,qDAAuD;AAEvD,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;AAEnE,KAAK,UAAU,eAAe,CAAC,GAAsB,EAAE,MAAc;IAC1E,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,2BAA2B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,MAAM,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,GAAsB,EAAE,MAAc;IAC/E,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACjE,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACtF,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QACtF,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3B,MAAM,kBAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,GAAsB,EAAE,MAAc;IACzE,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAChC,IAAA,oCAAmB,EAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC,EACzD,QAAQ,CACT,CAAC;IACF,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,mBAAmB,cAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC","sourcesContent":["import path from 'path';\n\nimport { Job } from '@expo/eas-build-job';\nimport { bunyan } from '@expo/logger';\nimport fs from 'fs-extra';\n\nimport { BuildContext } from '../context';\n\nimport { findPackagerRootDir } from './packageManager';\n\nconst NPMRC_TEMPLATE_PATH = path.join(__dirname, '../../templates/npmrc');\n\nexport async function setUpNpmrcAsync(ctx: BuildContext<Job>, logger: bunyan): Promise<void> {\n if (ctx.env.NPM_TOKEN) {\n await createNpmrcIfNotExistsAsync(ctx, logger);\n } else {\n await logIfNpmrcExistsAsync(ctx, logger);\n }\n}\n\nasync function createNpmrcIfNotExistsAsync(ctx: BuildContext<Job>, logger: bunyan): Promise<void> {\n logger.info('We detected that you set the NPM_TOKEN environment variable');\n const projectNpmrcPath = path.join(ctx.buildDirectory, '.npmrc');\n if (await fs.pathExists(projectNpmrcPath)) {\n logger.info('.npmrc already exists in your project directory, skipping generation');\n } else {\n const npmrcContents = await fs.readFile(NPMRC_TEMPLATE_PATH, 'utf8');\n logger.info('Creating .npmrc in your project directory with the following contents:');\n logger.info(npmrcContents);\n await fs.copy(NPMRC_TEMPLATE_PATH, projectNpmrcPath);\n }\n}\n\nasync function logIfNpmrcExistsAsync(ctx: BuildContext<Job>, logger: bunyan): Promise<void> {\n const projectNpmrcPath = path.join(\n findPackagerRootDir(ctx.getReactNativeProjectDirectory()),\n '.npmrc'\n );\n if (await fs.pathExists(projectNpmrcPath)) {\n logger.info(`.npmrc found at ${path.relative(ctx.buildDirectory, projectNpmrcPath)}`);\n }\n}\n"]}
@@ -1,4 +1,3 @@
1
- /// <reference types="bunyan" />
2
1
  import { JobInterpolationContext } from '@expo/eas-build-job';
3
2
  import { BuildStepGlobalContext } from '@expo/steps';
4
3
  import { bunyan } from '@expo/logger';
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.collectJobOutputs = exports.uploadJobOutputsToWwwAsync = void 0;
6
+ exports.uploadJobOutputsToWwwAsync = uploadJobOutputsToWwwAsync;
7
+ exports.collectJobOutputs = collectJobOutputs;
7
8
  const steps_1 = require("@expo/steps");
8
9
  const nullthrows_1 = __importDefault(require("nullthrows"));
9
10
  const turtleFetch_1 = require("./turtleFetch");
@@ -49,7 +50,6 @@ async function uploadJobOutputsToWwwAsync(ctx, { logger, expoApiV2BaseUrl }) {
49
50
  throw err;
50
51
  }
51
52
  }
52
- exports.uploadJobOutputsToWwwAsync = uploadJobOutputsToWwwAsync;
53
53
  /** Function we use to get outputs of the whole job from steps. */
54
54
  function collectJobOutputs({ jobOutputDefinitions, interpolationContext, }) {
55
55
  const jobOutputs = {};
@@ -62,5 +62,4 @@ function collectJobOutputs({ jobOutputDefinitions, interpolationContext, }) {
62
62
  }
63
63
  return jobOutputs;
64
64
  }
65
- exports.collectJobOutputs = collectJobOutputs;
66
65
  //# sourceMappingURL=outputs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"outputs.js","sourceRoot":"","sources":["../../src/utils/outputs.ts"],"names":[],"mappings":"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","sourcesContent":["import { JobInterpolationContext } from '@expo/eas-build-job';\nimport { BuildStepGlobalContext, jsepEval } from '@expo/steps';\nimport { bunyan } from '@expo/logger';\nimport nullthrows from 'nullthrows';\n\nimport { turtleFetch } from './turtleFetch';\n\nexport async function uploadJobOutputsToWwwAsync(\n ctx: BuildStepGlobalContext,\n { logger, expoApiV2BaseUrl }: { logger: bunyan; expoApiV2BaseUrl: string }\n): Promise<void> {\n if (!ctx.staticContext.job.outputs) {\n logger.info('Job defines no outputs, skipping upload');\n return;\n }\n\n try {\n const workflowJobId = nullthrows(ctx.env.__WORKFLOW_JOB_ID);\n const robotAccessToken = nullthrows(ctx.staticContext.job.secrets?.robotAccessToken);\n\n const interpolationContext: JobInterpolationContext = {\n ...ctx.staticContext,\n env: ctx.env,\n always: () => true,\n never: () => false,\n success: () => !ctx.hasAnyPreviousStepFailed,\n failure: () => ctx.hasAnyPreviousStepFailed,\n fromJSON: (json: string) => JSON.parse(json),\n toJSON: (value: unknown) => JSON.stringify(value),\n contains: (value, substring) => value.includes(substring),\n startsWith: (value, prefix) => value.startsWith(prefix),\n endsWith: (value, suffix) => value.endsWith(suffix),\n };\n logger.debug({ dynamicValues: interpolationContext }, 'Using dynamic values');\n\n const outputs = collectJobOutputs({\n jobOutputDefinitions: ctx.staticContext.job.outputs,\n interpolationContext,\n });\n logger.info('Uploading outputs');\n\n await turtleFetch(new URL(`workflows/${workflowJobId}`, expoApiV2BaseUrl).toString(), 'PATCH', {\n json: { outputs },\n headers: {\n Authorization: `Bearer ${robotAccessToken}`,\n },\n timeout: 20000,\n logger,\n });\n } catch (err) {\n logger.error({ err }, 'Failed to upload outputs');\n throw err;\n }\n}\n\n/** Function we use to get outputs of the whole job from steps. */\nexport function collectJobOutputs({\n jobOutputDefinitions,\n interpolationContext,\n}: {\n jobOutputDefinitions: Record<string, string>;\n interpolationContext: JobInterpolationContext;\n}): Record<string, string | undefined> {\n const jobOutputs: Record<string, string | undefined> = {};\n for (const [outputKey, outputDefinition] of Object.entries(jobOutputDefinitions)) {\n const outputValue = outputDefinition.replace(/\\$\\{\\{(.+?)\\}\\}/g, (_match, expression) => {\n return `${jsepEval(expression, interpolationContext) ?? ''}`;\n });\n\n jobOutputs[outputKey] = outputValue;\n }\n\n return jobOutputs;\n}\n"]}
1
+ {"version":3,"file":"outputs.js","sourceRoot":"","sources":["../../src/utils/outputs.ts"],"names":[],"mappings":";;;;;AAOA,gEA8CC;AAGD,8CAiBC;AAxED,uCAA+D;AAE/D,4DAAoC;AAEpC,+CAA4C;AAErC,KAAK,UAAU,0BAA0B,CAC9C,GAA2B,EAC3B,EAAE,MAAM,EAAE,gBAAgB,EAAgD;;IAE1E,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAA,oBAAU,EAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,IAAA,oBAAU,EAAC,MAAA,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,0CAAE,gBAAgB,CAAC,CAAC;QAErF,MAAM,oBAAoB,GAA4B;YACpD,GAAG,GAAG,CAAC,aAAa;YACpB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;YAClB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;YAClB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,wBAAwB;YAC5C,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB;YAC3C,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5C,MAAM,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACjD,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;YACzD,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;YACvD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;SACpD,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,oBAAoB,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAE9E,MAAM,OAAO,GAAG,iBAAiB,CAAC;YAChC,oBAAoB,EAAE,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO;YACnD,oBAAoB;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAEjC,MAAM,IAAA,yBAAW,EAAC,IAAI,GAAG,CAAC,aAAa,aAAa,EAAE,EAAE,gBAAgB,CAAC,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE;YAC7F,IAAI,EAAE,EAAE,OAAO,EAAE;YACjB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,gBAAgB,EAAE;aAC5C;YACD,OAAO,EAAE,KAAK;YACd,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;QAClD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,kEAAkE;AAClE,SAAgB,iBAAiB,CAAC,EAChC,oBAAoB,EACpB,oBAAoB,GAIrB;IACC,MAAM,UAAU,GAAuC,EAAE,CAAC;IAC1D,KAAK,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACjF,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;;YACtF,OAAO,GAAG,MAAA,IAAA,gBAAQ,EAAC,UAAU,EAAE,oBAAoB,CAAC,mCAAI,EAAE,EAAE,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;IACtC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["import { JobInterpolationContext } from '@expo/eas-build-job';\nimport { BuildStepGlobalContext, jsepEval } from '@expo/steps';\nimport { bunyan } from '@expo/logger';\nimport nullthrows from 'nullthrows';\n\nimport { turtleFetch } from './turtleFetch';\n\nexport async function uploadJobOutputsToWwwAsync(\n ctx: BuildStepGlobalContext,\n { logger, expoApiV2BaseUrl }: { logger: bunyan; expoApiV2BaseUrl: string }\n): Promise<void> {\n if (!ctx.staticContext.job.outputs) {\n logger.info('Job defines no outputs, skipping upload');\n return;\n }\n\n try {\n const workflowJobId = nullthrows(ctx.env.__WORKFLOW_JOB_ID);\n const robotAccessToken = nullthrows(ctx.staticContext.job.secrets?.robotAccessToken);\n\n const interpolationContext: JobInterpolationContext = {\n ...ctx.staticContext,\n env: ctx.env,\n always: () => true,\n never: () => false,\n success: () => !ctx.hasAnyPreviousStepFailed,\n failure: () => ctx.hasAnyPreviousStepFailed,\n fromJSON: (json: string) => JSON.parse(json),\n toJSON: (value: unknown) => JSON.stringify(value),\n contains: (value, substring) => value.includes(substring),\n startsWith: (value, prefix) => value.startsWith(prefix),\n endsWith: (value, suffix) => value.endsWith(suffix),\n };\n logger.debug({ dynamicValues: interpolationContext }, 'Using dynamic values');\n\n const outputs = collectJobOutputs({\n jobOutputDefinitions: ctx.staticContext.job.outputs,\n interpolationContext,\n });\n logger.info('Uploading outputs');\n\n await turtleFetch(new URL(`workflows/${workflowJobId}`, expoApiV2BaseUrl).toString(), 'PATCH', {\n json: { outputs },\n headers: {\n Authorization: `Bearer ${robotAccessToken}`,\n },\n timeout: 20000,\n logger,\n });\n } catch (err) {\n logger.error({ err }, 'Failed to upload outputs');\n throw err;\n }\n}\n\n/** Function we use to get outputs of the whole job from steps. */\nexport function collectJobOutputs({\n jobOutputDefinitions,\n interpolationContext,\n}: {\n jobOutputDefinitions: Record<string, string>;\n interpolationContext: JobInterpolationContext;\n}): Record<string, string | undefined> {\n const jobOutputs: Record<string, string | undefined> = {};\n for (const [outputKey, outputDefinition] of Object.entries(jobOutputDefinitions)) {\n const outputValue = outputDefinition.replace(/\\$\\{\\{(.+?)\\}\\}/g, (_match, expression) => {\n return `${jsepEval(expression, interpolationContext) ?? ''}`;\n });\n\n jobOutputs[outputKey] = outputValue;\n }\n\n return jobOutputs;\n}\n"]}
@@ -26,7 +26,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.getPackageVersionFromPackageJson = exports.shouldUseFrozenLockfile = exports.isAtLeastNpm7Async = exports.findPackagerRootDir = exports.resolvePackageManager = exports.PackageManager = void 0;
29
+ exports.PackageManager = void 0;
30
+ exports.resolvePackageManager = resolvePackageManager;
31
+ exports.findPackagerRootDir = findPackagerRootDir;
32
+ exports.isAtLeastNpm7Async = isAtLeastNpm7Async;
33
+ exports.shouldUseFrozenLockfile = shouldUseFrozenLockfile;
34
+ exports.getPackageVersionFromPackageJson = getPackageVersionFromPackageJson;
30
35
  const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
31
36
  const PackageManagerUtils = __importStar(require("@expo/package-manager"));
32
37
  const semver_1 = __importDefault(require("semver"));
@@ -58,17 +63,14 @@ function resolvePackageManager(directory) {
58
63
  return PackageManager.YARN;
59
64
  }
60
65
  }
61
- exports.resolvePackageManager = resolvePackageManager;
62
66
  function findPackagerRootDir(currentDir) {
63
67
  var _a;
64
68
  return (_a = PackageManagerUtils.resolveWorkspaceRoot(currentDir)) !== null && _a !== void 0 ? _a : currentDir;
65
69
  }
66
- exports.findPackagerRootDir = findPackagerRootDir;
67
70
  async function isAtLeastNpm7Async() {
68
71
  const version = (await (0, turtle_spawn_1.default)('npm', ['--version'], { stdio: 'pipe' })).stdout.trim();
69
72
  return semver_1.default.gte(version, '7.0.0');
70
73
  }
71
- exports.isAtLeastNpm7Async = isAtLeastNpm7Async;
72
74
  function shouldUseFrozenLockfile({ env, sdkVersion, reactNativeVersion, }) {
73
75
  if (env.EAS_NO_FROZEN_LOCKFILE) {
74
76
  return false;
@@ -86,7 +88,6 @@ function shouldUseFrozenLockfile({ env, sdkVersion, reactNativeVersion, }) {
86
88
  // new enough that we do want to use it.
87
89
  return true;
88
90
  }
89
- exports.shouldUseFrozenLockfile = shouldUseFrozenLockfile;
90
91
  const PackageJsonZ = zod_1.z.object({
91
92
  dependencies: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
92
93
  devDependencies: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
@@ -103,5 +104,4 @@ function getPackageVersionFromPackageJson({ packageJson, packageName, }) {
103
104
  }
104
105
  return (_d = semver_1.default.coerce(version)) === null || _d === void 0 ? void 0 : _d.version;
105
106
  }
106
- exports.getPackageVersionFromPackageJson = getPackageVersionFromPackageJson;
107
107
  //# sourceMappingURL=packageManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../../src/utils/packageManager.ts"],"names":[],"mappings":"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","sourcesContent":["import spawnAsync from '@expo/turtle-spawn';\nimport * as PackageManagerUtils from '@expo/package-manager';\nimport semver from 'semver';\nimport { z } from 'zod';\n\nexport enum PackageManager {\n YARN = 'yarn',\n NPM = 'npm',\n PNPM = 'pnpm',\n BUN = 'bun',\n}\n\nexport function resolvePackageManager(directory: string): PackageManager {\n try {\n const manager = PackageManagerUtils.resolvePackageManager(directory);\n if (manager === 'npm') {\n return PackageManager.NPM;\n } else if (manager === 'pnpm') {\n return PackageManager.PNPM;\n } else if (manager === 'bun') {\n return PackageManager.BUN;\n } else {\n return PackageManager.YARN;\n }\n } catch {\n return PackageManager.YARN;\n }\n}\n\nexport function findPackagerRootDir(currentDir: string): string {\n return PackageManagerUtils.resolveWorkspaceRoot(currentDir) ?? currentDir;\n}\n\nexport async function isAtLeastNpm7Async(): Promise<boolean> {\n const version = (await spawnAsync('npm', ['--version'], { stdio: 'pipe' })).stdout.trim();\n return semver.gte(version, '7.0.0');\n}\n\nexport function shouldUseFrozenLockfile({\n env,\n sdkVersion,\n reactNativeVersion,\n}: {\n env: Record<string, string | undefined>;\n sdkVersion: string | undefined;\n reactNativeVersion: string | undefined;\n}): boolean {\n if (env.EAS_NO_FROZEN_LOCKFILE) {\n return false;\n }\n\n if (sdkVersion && semver.lt(sdkVersion, '53.0.0')) {\n // Before SDK 53 we could not have used frozen lockfile.\n return false;\n }\n\n if (reactNativeVersion && semver.lt(reactNativeVersion, '0.79.0')) {\n // Before react-native 0.79 we could not have used frozen lockfile.\n return false;\n }\n\n // We either don't know expo and react-native versions,\n // so we can try to use frozen lockfile, or the versions are\n // new enough that we do want to use it.\n return true;\n}\n\nconst PackageJsonZ = z.object({\n dependencies: z.record(z.string(), z.string()).optional(),\n devDependencies: z.record(z.string(), z.string()).optional(),\n});\n\nexport function getPackageVersionFromPackageJson({\n packageJson,\n packageName,\n}: {\n packageJson: unknown;\n packageName: string;\n}): string | undefined {\n const parsedPackageJson = PackageJsonZ.safeParse(packageJson);\n if (!parsedPackageJson.success) {\n return undefined;\n }\n\n const version =\n parsedPackageJson.data.dependencies?.[packageName] ??\n parsedPackageJson.data.devDependencies?.[packageName];\n if (!version) {\n return undefined;\n }\n\n return semver.coerce(version)?.version;\n}\n"]}
1
+ {"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../../src/utils/packageManager.ts"],"names":[],"mappings":"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","sourcesContent":["import spawnAsync from '@expo/turtle-spawn';\nimport * as PackageManagerUtils from '@expo/package-manager';\nimport semver from 'semver';\nimport { z } from 'zod';\n\nexport enum PackageManager {\n YARN = 'yarn',\n NPM = 'npm',\n PNPM = 'pnpm',\n BUN = 'bun',\n}\n\nexport function resolvePackageManager(directory: string): PackageManager {\n try {\n const manager = PackageManagerUtils.resolvePackageManager(directory);\n if (manager === 'npm') {\n return PackageManager.NPM;\n } else if (manager === 'pnpm') {\n return PackageManager.PNPM;\n } else if (manager === 'bun') {\n return PackageManager.BUN;\n } else {\n return PackageManager.YARN;\n }\n } catch {\n return PackageManager.YARN;\n }\n}\n\nexport function findPackagerRootDir(currentDir: string): string {\n return PackageManagerUtils.resolveWorkspaceRoot(currentDir) ?? currentDir;\n}\n\nexport async function isAtLeastNpm7Async(): Promise<boolean> {\n const version = (await spawnAsync('npm', ['--version'], { stdio: 'pipe' })).stdout.trim();\n return semver.gte(version, '7.0.0');\n}\n\nexport function shouldUseFrozenLockfile({\n env,\n sdkVersion,\n reactNativeVersion,\n}: {\n env: Record<string, string | undefined>;\n sdkVersion: string | undefined;\n reactNativeVersion: string | undefined;\n}): boolean {\n if (env.EAS_NO_FROZEN_LOCKFILE) {\n return false;\n }\n\n if (sdkVersion && semver.lt(sdkVersion, '53.0.0')) {\n // Before SDK 53 we could not have used frozen lockfile.\n return false;\n }\n\n if (reactNativeVersion && semver.lt(reactNativeVersion, '0.79.0')) {\n // Before react-native 0.79 we could not have used frozen lockfile.\n return false;\n }\n\n // We either don't know expo and react-native versions,\n // so we can try to use frozen lockfile, or the versions are\n // new enough that we do want to use it.\n return true;\n}\n\nconst PackageJsonZ = z.object({\n dependencies: z.record(z.string(), z.string()).optional(),\n devDependencies: z.record(z.string(), z.string()).optional(),\n});\n\nexport function getPackageVersionFromPackageJson({\n packageJson,\n packageName,\n}: {\n packageJson: unknown;\n packageName: string;\n}): string | undefined {\n const parsedPackageJson = PackageJsonZ.safeParse(packageJson);\n if (!parsedPackageJson.success) {\n return undefined;\n }\n\n const version =\n parsedPackageJson.data.dependencies?.[packageName] ??\n parsedPackageJson.data.devDependencies?.[packageName];\n if (!version) {\n return undefined;\n }\n\n return semver.coerce(version)?.version;\n}\n"]}
@@ -3,11 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.prepareExecutableAsync = void 0;
6
+ exports.prepareExecutableAsync = prepareExecutableAsync;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const fs_extra_1 = __importDefault(require("fs-extra"));
9
9
  async function prepareExecutableAsync(ctx) {
10
10
  await fs_extra_1.default.copy(path_1.default.join(__dirname, '../../bin/set-env'), path_1.default.join(ctx.buildExecutablesDirectory, 'set-env'));
11
11
  }
12
- exports.prepareExecutableAsync = prepareExecutableAsync;
13
12
  //# sourceMappingURL=prepareBuildExecutable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepareBuildExecutable.js","sourceRoot":"","sources":["../../src/utils/prepareBuildExecutable.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAGxB,wDAA0B;AAInB,KAAK,UAAU,sBAAsB,CAAC,GAAsB;IACjE,MAAM,kBAAE,CAAC,IAAI,CACX,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EACzC,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,SAAS,CAAC,CACpD,CAAC;AACJ,CAAC;AALD,wDAKC","sourcesContent":["import path from 'path';\n\nimport { Job } from '@expo/eas-build-job';\nimport fs from 'fs-extra';\n\nimport { BuildContext } from '../context';\n\nexport async function prepareExecutableAsync(ctx: BuildContext<Job>): Promise<void> {\n await fs.copy(\n path.join(__dirname, '../../bin/set-env'),\n path.join(ctx.buildExecutablesDirectory, 'set-env')\n );\n}\n"]}
1
+ {"version":3,"file":"prepareBuildExecutable.js","sourceRoot":"","sources":["../../src/utils/prepareBuildExecutable.ts"],"names":[],"mappings":";;;;;AAOA,wDAKC;AAZD,gDAAwB;AAGxB,wDAA0B;AAInB,KAAK,UAAU,sBAAsB,CAAC,GAAsB;IACjE,MAAM,kBAAE,CAAC,IAAI,CACX,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EACzC,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,SAAS,CAAC,CACpD,CAAC;AACJ,CAAC","sourcesContent":["import path from 'path';\n\nimport { Job } from '@expo/eas-build-job';\nimport fs from 'fs-extra';\n\nimport { BuildContext } from '../context';\n\nexport async function prepareExecutableAsync(ctx: BuildContext<Job>): Promise<void> {\n await fs.copy(\n path.join(__dirname, '../../bin/set-env'),\n path.join(ctx.buildExecutablesDirectory, 'set-env')\n );\n}\n"]}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getParentAndDescendantProcessPidsAsync = void 0;
6
+ exports.getParentAndDescendantProcessPidsAsync = getParentAndDescendantProcessPidsAsync;
7
7
  const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
8
8
  async function getChildrenPidsAsync(parentPids) {
9
9
  try {
@@ -35,5 +35,4 @@ async function getParentAndDescendantProcessPidsAsync(ppid) {
35
35
  }
36
36
  return [...children];
37
37
  }
38
- exports.getParentAndDescendantProcessPidsAsync = getParentAndDescendantProcessPidsAsync;
39
38
  //# sourceMappingURL=processes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processes.js","sourceRoot":"","sources":["../../src/utils/processes.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAuC;AAEvC,KAAK,UAAU,oBAAoB,CAAC,UAAoB;IACtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAK,EAAC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;YAChE,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM;aACjB,QAAQ,EAAE;aACV,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;aAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,sCAAsC,CAAC,IAAY;IACvE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,IAAI,gBAAgB,GAAG,IAAI,CAAC;IAC5B,OAAO,gBAAgB,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QACvD,gBAAgB,GAAG,KAAK,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,gBAAgB,GAAG,IAAI,CAAC;gBACxB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvB,CAAC;AAdD,wFAcC","sourcesContent":["import spawn from '@expo/turtle-spawn';\n\nasync function getChildrenPidsAsync(parentPids: number[]): Promise<number[]> {\n try {\n const result = await spawn('pgrep', ['-P', parentPids.join(',')], {\n stdio: 'pipe',\n });\n return result.stdout\n .toString()\n .split('\\n')\n .map((i) => Number(i.trim()))\n .filter((i) => i);\n } catch {\n return [];\n }\n}\n\nexport async function getParentAndDescendantProcessPidsAsync(ppid: number): Promise<number[]> {\n const children = new Set<number>([ppid]);\n let shouldCheckAgain = true;\n while (shouldCheckAgain) {\n const pids = await getChildrenPidsAsync([...children]);\n shouldCheckAgain = false;\n for (const pid of pids) {\n if (!children.has(pid)) {\n shouldCheckAgain = true;\n children.add(pid);\n }\n }\n }\n return [...children];\n}\n"]}
1
+ {"version":3,"file":"processes.js","sourceRoot":"","sources":["../../src/utils/processes.ts"],"names":[],"mappings":";;;;;AAiBA,wFAcC;AA/BD,sEAAuC;AAEvC,KAAK,UAAU,oBAAoB,CAAC,UAAoB;IACtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAK,EAAC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;YAChE,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM;aACjB,QAAQ,EAAE;aACV,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;aAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,sCAAsC,CAAC,IAAY;IACvE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,IAAI,gBAAgB,GAAG,IAAI,CAAC;IAC5B,OAAO,gBAAgB,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QACvD,gBAAgB,GAAG,KAAK,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,gBAAgB,GAAG,IAAI,CAAC;gBACxB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvB,CAAC","sourcesContent":["import spawn from '@expo/turtle-spawn';\n\nasync function getChildrenPidsAsync(parentPids: number[]): Promise<number[]> {\n try {\n const result = await spawn('pgrep', ['-P', parentPids.join(',')], {\n stdio: 'pipe',\n });\n return result.stdout\n .toString()\n .split('\\n')\n .map((i) => Number(i.trim()))\n .filter((i) => i);\n } catch {\n return [];\n }\n}\n\nexport async function getParentAndDescendantProcessPidsAsync(ppid: number): Promise<number[]> {\n const children = new Set<number>([ppid]);\n let shouldCheckAgain = true;\n while (shouldCheckAgain) {\n const pids = await getChildrenPidsAsync([...children]);\n shouldCheckAgain = false;\n for (const pid of pids) {\n if (!children.has(pid)) {\n shouldCheckAgain = true;\n children.add(pid);\n }\n }\n }\n return [...children];\n}\n"]}
@@ -3,7 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.readPackageJson = exports.runExpoCliCommand = exports.isUsingModernYarnVersion = void 0;
6
+ exports.isUsingModernYarnVersion = isUsingModernYarnVersion;
7
+ exports.runExpoCliCommand = runExpoCliCommand;
8
+ exports.readPackageJson = readPackageJson;
7
9
  const path_1 = __importDefault(require("path"));
8
10
  const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
9
11
  const fs_extra_1 = __importDefault(require("fs-extra"));
@@ -16,7 +18,6 @@ async function isUsingModernYarnVersion(projectDir) {
16
18
  const yarnrcRootPath = path_1.default.join((0, packageManager_1.findPackagerRootDir)(projectDir), '.yarnrc.yml');
17
19
  return (await fs_extra_1.default.pathExists(yarnrcPath)) || (await fs_extra_1.default.pathExists(yarnrcRootPath));
18
20
  }
19
- exports.isUsingModernYarnVersion = isUsingModernYarnVersion;
20
21
  function runExpoCliCommand({ packageManager, args, options, }) {
21
22
  const argsWithExpo = ['expo', ...args];
22
23
  if (packageManager === packageManager_1.PackageManager.NPM) {
@@ -35,7 +36,6 @@ function runExpoCliCommand({ packageManager, args, options, }) {
35
36
  throw new Error(`Unsupported package manager: ${packageManager}`);
36
37
  }
37
38
  }
38
- exports.runExpoCliCommand = runExpoCliCommand;
39
39
  function readPackageJson(projectDir) {
40
40
  const packageJsonPath = path_1.default.join(projectDir, 'package.json');
41
41
  if (!fs_extra_1.default.pathExistsSync(packageJsonPath)) {
@@ -48,5 +48,4 @@ function readPackageJson(projectDir) {
48
48
  throw new Error(`Failed to parse or read package.json: ${err.message}`);
49
49
  }
50
50
  }
51
- exports.readPackageJson = readPackageJson;
52
51
  //# sourceMappingURL=project.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,sEAAoF;AACpF,wDAA0B;AAE1B,4DAA8E;AAE9E;;GAEG;AACI,KAAK,UAAU,wBAAwB,CAAC,UAAkB;IAC/D,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,IAAA,oCAAmB,EAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;IACjF,OAAO,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;AACpF,CAAC;AAJD,4DAIC;AAED,SAAgB,iBAAiB,CAAC,EAChC,cAAc,EACd,IAAI,EACJ,OAAO,GAKR;IACC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACvC,IAAI,cAAc,KAAK,+BAAc,CAAC,GAAG,EAAE,CAAC;QAC1C,OAAO,IAAA,sBAAK,EAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,IAAA,sBAAK,EAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,IAAA,sBAAK,EAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,GAAG,EAAE,CAAC;QACjD,OAAO,IAAA,sBAAK,EAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,gCAAgC,cAAc,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AArBD,8CAqBC;AAED,SAAgB,eAAe,CAAC,UAAkB;IAChD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC9D,IAAI,CAAC,kBAAE,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC;QACH,OAAO,kBAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAVD,0CAUC","sourcesContent":["import path from 'path';\n\nimport spawn, { SpawnOptions, SpawnPromise, SpawnResult } from '@expo/turtle-spawn';\nimport fs from 'fs-extra';\n\nimport { findPackagerRootDir, PackageManager } from '../utils/packageManager';\n\n/**\n * check if .yarnrc.yml exists in the project dir or in the workspace root dir\n */\nexport async function isUsingModernYarnVersion(projectDir: string): Promise<boolean> {\n const yarnrcPath = path.join(projectDir, '.yarnrc.yml');\n const yarnrcRootPath = path.join(findPackagerRootDir(projectDir), '.yarnrc.yml');\n return (await fs.pathExists(yarnrcPath)) || (await fs.pathExists(yarnrcRootPath));\n}\n\nexport function runExpoCliCommand({\n packageManager,\n args,\n options,\n}: {\n packageManager: PackageManager;\n args: string[];\n options: SpawnOptions;\n}): SpawnPromise<SpawnResult> {\n const argsWithExpo = ['expo', ...args];\n if (packageManager === PackageManager.NPM) {\n return spawn('npx', argsWithExpo, options);\n } else if (packageManager === PackageManager.YARN) {\n return spawn('yarn', argsWithExpo, options);\n } else if (packageManager === PackageManager.PNPM) {\n return spawn('pnpm', argsWithExpo, options);\n } else if (packageManager === PackageManager.BUN) {\n return spawn('bun', argsWithExpo, options);\n } else {\n throw new Error(`Unsupported package manager: ${packageManager}`);\n }\n}\n\nexport function readPackageJson(projectDir: string): any {\n const packageJsonPath = path.join(projectDir, 'package.json');\n if (!fs.pathExistsSync(packageJsonPath)) {\n throw new Error(`package.json does not exist in ${projectDir}`);\n }\n try {\n return fs.readJSONSync(packageJsonPath);\n } catch (err: any) {\n throw new Error(`Failed to parse or read package.json: ${err.message}`);\n }\n}\n"]}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":";;;;;AAUA,4DAIC;AAED,8CAqBC;AAED,0CAUC;AAjDD,gDAAwB;AAExB,sEAAoF;AACpF,wDAA0B;AAE1B,4DAA8E;AAE9E;;GAEG;AACI,KAAK,UAAU,wBAAwB,CAAC,UAAkB;IAC/D,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,IAAA,oCAAmB,EAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;IACjF,OAAO,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAgB,iBAAiB,CAAC,EAChC,cAAc,EACd,IAAI,EACJ,OAAO,GAKR;IACC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACvC,IAAI,cAAc,KAAK,+BAAc,CAAC,GAAG,EAAE,CAAC;QAC1C,OAAO,IAAA,sBAAK,EAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,IAAA,sBAAK,EAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,IAAA,sBAAK,EAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,cAAc,KAAK,+BAAc,CAAC,GAAG,EAAE,CAAC;QACjD,OAAO,IAAA,sBAAK,EAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,gCAAgC,cAAc,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,UAAkB;IAChD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC9D,IAAI,CAAC,kBAAE,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC;QACH,OAAO,kBAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC","sourcesContent":["import path from 'path';\n\nimport spawn, { SpawnOptions, SpawnPromise, SpawnResult } from '@expo/turtle-spawn';\nimport fs from 'fs-extra';\n\nimport { findPackagerRootDir, PackageManager } from '../utils/packageManager';\n\n/**\n * check if .yarnrc.yml exists in the project dir or in the workspace root dir\n */\nexport async function isUsingModernYarnVersion(projectDir: string): Promise<boolean> {\n const yarnrcPath = path.join(projectDir, '.yarnrc.yml');\n const yarnrcRootPath = path.join(findPackagerRootDir(projectDir), '.yarnrc.yml');\n return (await fs.pathExists(yarnrcPath)) || (await fs.pathExists(yarnrcRootPath));\n}\n\nexport function runExpoCliCommand({\n packageManager,\n args,\n options,\n}: {\n packageManager: PackageManager;\n args: string[];\n options: SpawnOptions;\n}): SpawnPromise<SpawnResult> {\n const argsWithExpo = ['expo', ...args];\n if (packageManager === PackageManager.NPM) {\n return spawn('npx', argsWithExpo, options);\n } else if (packageManager === PackageManager.YARN) {\n return spawn('yarn', argsWithExpo, options);\n } else if (packageManager === PackageManager.PNPM) {\n return spawn('pnpm', argsWithExpo, options);\n } else if (packageManager === PackageManager.BUN) {\n return spawn('bun', argsWithExpo, options);\n } else {\n throw new Error(`Unsupported package manager: ${packageManager}`);\n }\n}\n\nexport function readPackageJson(projectDir: string): any {\n const packageJsonPath = path.join(projectDir, 'package.json');\n if (!fs.pathExistsSync(packageJsonPath)) {\n throw new Error(`package.json does not exist in ${projectDir}`);\n }\n try {\n return fs.readJSONSync(packageJsonPath);\n } catch (err: any) {\n throw new Error(`Failed to parse or read package.json: ${err.message}`);\n }\n}\n"]}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.promiseRetryWithCondition = void 0;
6
+ exports.promiseRetryWithCondition = promiseRetryWithCondition;
7
7
  const promise_retry_1 = __importDefault(require("promise-retry"));
8
8
  function promiseRetryWithCondition(fn, retryConditionFn, options = { retries: 3, factor: 2 }) {
9
9
  return (...funcArgs) => (0, promise_retry_1.default)(async (retry) => {
@@ -18,5 +18,4 @@ function promiseRetryWithCondition(fn, retryConditionFn, options = { retries: 3,
18
18
  }
19
19
  }, options);
20
20
  }
21
- exports.promiseRetryWithCondition = promiseRetryWithCondition;
22
21
  //# sourceMappingURL=promiseRetryWithCondition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"promiseRetryWithCondition.js","sourceRoot":"","sources":["../../src/utils/promiseRetryWithCondition.ts"],"names":[],"mappings":";;;;;;AAAA,kEAAyC;AAGzC,SAAgB,yBAAyB,CACvC,EAAO,EACP,gBAAyC,EACzC,UAA4B,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAErD,OAAO,CAAC,GAAG,QAAQ,EAAE,EAAE,CACrB,IAAA,uBAAY,EAAkB,KAAK,EAAE,KAAK,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,CAAC,CAAC,CAAC;YACX,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,EAAE,OAAO,CAAC,CAAC;AAChB,CAAC;AAhBD,8DAgBC","sourcesContent":["import promiseRetry from 'promise-retry';\nimport { OperationOptions } from 'retry';\n\nexport function promiseRetryWithCondition<TFn extends (...args: any[]) => Promise<any>>(\n fn: TFn,\n retryConditionFn: (error: any) => boolean,\n options: OperationOptions = { retries: 3, factor: 2 }\n): (...funcArgs: Parameters<TFn>) => Promise<ReturnType<TFn>> {\n return (...funcArgs) =>\n promiseRetry<ReturnType<TFn>>(async (retry) => {\n try {\n return await fn(...funcArgs);\n } catch (e) {\n if (retryConditionFn(e)) {\n retry(e);\n }\n throw e;\n }\n }, options);\n}\n"]}
1
+ {"version":3,"file":"promiseRetryWithCondition.js","sourceRoot":"","sources":["../../src/utils/promiseRetryWithCondition.ts"],"names":[],"mappings":";;;;;AAGA,8DAgBC;AAnBD,kEAAyC;AAGzC,SAAgB,yBAAyB,CACvC,EAAO,EACP,gBAAyC,EACzC,UAA4B,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAErD,OAAO,CAAC,GAAG,QAAQ,EAAE,EAAE,CACrB,IAAA,uBAAY,EAAkB,KAAK,EAAE,KAAK,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,CAAC,CAAC,CAAC;YACX,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,EAAE,OAAO,CAAC,CAAC;AAChB,CAAC","sourcesContent":["import promiseRetry from 'promise-retry';\nimport { OperationOptions } from 'retry';\n\nexport function promiseRetryWithCondition<TFn extends (...args: any[]) => Promise<any>>(\n fn: TFn,\n retryConditionFn: (error: any) => boolean,\n options: OperationOptions = { retries: 3, factor: 2 }\n): (...funcArgs: Parameters<TFn>) => Promise<ReturnType<TFn>> {\n return (...funcArgs) =>\n promiseRetry<ReturnType<TFn>>(async (retry) => {\n try {\n return await fn(...funcArgs);\n } catch (e) {\n if (retryConditionFn(e)) {\n retry(e);\n }\n throw e;\n }\n }, options);\n}\n"]}
@@ -1,4 +1,3 @@
1
- /// <reference types="bunyan" />
2
1
  import { ExpoConfig } from '@expo/config';
3
2
  import { bunyan } from '@expo/logger';
4
3
  import { Workflow } from '@expo/eas-build-job';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveRuntimeVersionAsync = void 0;
3
+ exports.resolveRuntimeVersionAsync = resolveRuntimeVersionAsync;
4
4
  const config_plugins_1 = require("@expo/config-plugins");
5
5
  const expoUpdatesCli_1 = require("./expoUpdatesCli");
6
6
  const expoUpdates_1 = require("./expoUpdates");
@@ -38,5 +38,4 @@ async function resolveRuntimeVersionAsync({ exp, platform, workflow, projectDir,
38
38
  throw e;
39
39
  }
40
40
  }
41
- exports.resolveRuntimeVersionAsync = resolveRuntimeVersionAsync;
42
41
  //# sourceMappingURL=resolveRuntimeVersionAsync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveRuntimeVersionAsync.js","sourceRoot":"","sources":["../../src/utils/resolveRuntimeVersionAsync.ts"],"names":[],"mappings":";;;AACA,yDAA+C;AAK/C,qDAA8F;AAC9F,+CAAyF;AAElF,KAAK,UAAU,0BAA0B,CAAC,EAC/C,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,MAAM,EACN,yBAAyB,EACzB,GAAG,GASJ;;IAIC,IAAI,CAAC,IAAA,sEAAwD,EAAC,yBAAyB,CAAC,EAAE,CAAC;QACzF,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QAChF,+FAA+F;QAC/F,qEAAqE;QACrE,OAAO;YACL,cAAc,EAAE,MAAM,wBAAO,CAAC,8BAA8B,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC;YACvF,kBAAkB,EAAE,IAAI;SACzB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;QAE7F,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpD,MAAM,gCAAgC,GAAG,MAAM,IAAA,wCAAuB,EACpE,UAAU,EACV,CAAC,wBAAwB,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,EACxF;YACE,GAAG;SACJ,CACF,CAAC;QACF,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAE1E,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAE/C,OAAO;YACL,cAAc,EAAE,MAAA,oBAAoB,CAAC,cAAc,mCAAI,IAAI;YAC3D,kBAAkB,EAAE,MAAA,oBAAoB,CAAC,kBAAkB,mCAAI,IAAI;SACpE,CAAC;IACJ,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,uFAAuF;QACvF,IAAI,CAAC,YAAY,kDAAiC,EAAE,CAAC;YACnD,MAAM,CAAC,KAAK,CACV,uFAAuF,CAAC,CAAC,OAAO,EAAE,CACnG,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AA7DD,gEA6DC","sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport { Updates } from '@expo/config-plugins';\nimport { bunyan } from '@expo/logger';\nimport { Workflow } from '@expo/eas-build-job';\nimport { BuildStepEnv } from '@expo/steps';\n\nimport { ExpoUpdatesCLIModuleNotFoundError, expoUpdatesCommandAsync } from './expoUpdatesCli';\nimport { isModernExpoUpdatesCLIWithRuntimeVersionCommandSupported } from './expoUpdates';\n\nexport async function resolveRuntimeVersionAsync({\n exp,\n platform,\n workflow,\n projectDir,\n logger,\n expoUpdatesPackageVersion,\n env,\n}: {\n exp: ExpoConfig;\n platform: 'ios' | 'android';\n workflow: Workflow;\n projectDir: string;\n logger: bunyan;\n expoUpdatesPackageVersion: string;\n env: BuildStepEnv;\n}): Promise<{\n runtimeVersion: string | null;\n fingerprintSources: object[] | null;\n} | null> {\n if (!isModernExpoUpdatesCLIWithRuntimeVersionCommandSupported(expoUpdatesPackageVersion)) {\n logger.debug('Using expo-updates config plugin for runtime version resolution');\n // fall back to the previous behavior (using the @expo/config-plugins eas-cli dependency rather\n // than the versioned @expo/config-plugins dependency in the project)\n return {\n runtimeVersion: await Updates.getRuntimeVersionNullableAsync(projectDir, exp, platform),\n fingerprintSources: null,\n };\n }\n\n try {\n logger.debug('Using expo-updates runtimeversion:resolve CLI for runtime version resolution');\n\n const extraArgs = logger.debug() ? ['--debug'] : [];\n\n const resolvedRuntimeVersionJSONResult = await expoUpdatesCommandAsync(\n projectDir,\n ['runtimeversion:resolve', '--platform', platform, '--workflow', workflow, ...extraArgs],\n {\n env,\n }\n );\n const runtimeVersionResult = JSON.parse(resolvedRuntimeVersionJSONResult);\n\n logger.debug('runtimeversion:resolve output:');\n logger.debug(resolvedRuntimeVersionJSONResult);\n\n return {\n runtimeVersion: runtimeVersionResult.runtimeVersion ?? null,\n fingerprintSources: runtimeVersionResult.fingerprintSources ?? null,\n };\n } catch (e: any) {\n // if expo-updates is not installed, there's no need for a runtime version in the build\n if (e instanceof ExpoUpdatesCLIModuleNotFoundError) {\n logger.error(\n `Error when resolving runtime version using expo-updates runtimeversion:resolve CLI: ${e.message}`\n );\n return null;\n }\n throw e;\n }\n}\n"]}
1
+ {"version":3,"file":"resolveRuntimeVersionAsync.js","sourceRoot":"","sources":["../../src/utils/resolveRuntimeVersionAsync.ts"],"names":[],"mappings":";;AASA,gEA6DC;AArED,yDAA+C;AAK/C,qDAA8F;AAC9F,+CAAyF;AAElF,KAAK,UAAU,0BAA0B,CAAC,EAC/C,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,MAAM,EACN,yBAAyB,EACzB,GAAG,GASJ;;IAIC,IAAI,CAAC,IAAA,sEAAwD,EAAC,yBAAyB,CAAC,EAAE,CAAC;QACzF,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QAChF,+FAA+F;QAC/F,qEAAqE;QACrE,OAAO;YACL,cAAc,EAAE,MAAM,wBAAO,CAAC,8BAA8B,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC;YACvF,kBAAkB,EAAE,IAAI;SACzB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;QAE7F,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpD,MAAM,gCAAgC,GAAG,MAAM,IAAA,wCAAuB,EACpE,UAAU,EACV,CAAC,wBAAwB,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,EACxF;YACE,GAAG;SACJ,CACF,CAAC;QACF,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAE1E,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAE/C,OAAO;YACL,cAAc,EAAE,MAAA,oBAAoB,CAAC,cAAc,mCAAI,IAAI;YAC3D,kBAAkB,EAAE,MAAA,oBAAoB,CAAC,kBAAkB,mCAAI,IAAI;SACpE,CAAC;IACJ,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,uFAAuF;QACvF,IAAI,CAAC,YAAY,kDAAiC,EAAE,CAAC;YACnD,MAAM,CAAC,KAAK,CACV,uFAAuF,CAAC,CAAC,OAAO,EAAE,CACnG,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC","sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport { Updates } from '@expo/config-plugins';\nimport { bunyan } from '@expo/logger';\nimport { Workflow } from '@expo/eas-build-job';\nimport { BuildStepEnv } from '@expo/steps';\n\nimport { ExpoUpdatesCLIModuleNotFoundError, expoUpdatesCommandAsync } from './expoUpdatesCli';\nimport { isModernExpoUpdatesCLIWithRuntimeVersionCommandSupported } from './expoUpdates';\n\nexport async function resolveRuntimeVersionAsync({\n exp,\n platform,\n workflow,\n projectDir,\n logger,\n expoUpdatesPackageVersion,\n env,\n}: {\n exp: ExpoConfig;\n platform: 'ios' | 'android';\n workflow: Workflow;\n projectDir: string;\n logger: bunyan;\n expoUpdatesPackageVersion: string;\n env: BuildStepEnv;\n}): Promise<{\n runtimeVersion: string | null;\n fingerprintSources: object[] | null;\n} | null> {\n if (!isModernExpoUpdatesCLIWithRuntimeVersionCommandSupported(expoUpdatesPackageVersion)) {\n logger.debug('Using expo-updates config plugin for runtime version resolution');\n // fall back to the previous behavior (using the @expo/config-plugins eas-cli dependency rather\n // than the versioned @expo/config-plugins dependency in the project)\n return {\n runtimeVersion: await Updates.getRuntimeVersionNullableAsync(projectDir, exp, platform),\n fingerprintSources: null,\n };\n }\n\n try {\n logger.debug('Using expo-updates runtimeversion:resolve CLI for runtime version resolution');\n\n const extraArgs = logger.debug() ? ['--debug'] : [];\n\n const resolvedRuntimeVersionJSONResult = await expoUpdatesCommandAsync(\n projectDir,\n ['runtimeversion:resolve', '--platform', platform, '--workflow', workflow, ...extraArgs],\n {\n env,\n }\n );\n const runtimeVersionResult = JSON.parse(resolvedRuntimeVersionJSONResult);\n\n logger.debug('runtimeversion:resolve output:');\n logger.debug(resolvedRuntimeVersionJSONResult);\n\n return {\n runtimeVersion: runtimeVersionResult.runtimeVersion ?? null,\n fingerprintSources: runtimeVersionResult.fingerprintSources ?? null,\n };\n } catch (e: any) {\n // if expo-updates is not installed, there's no need for a runtime version in the build\n if (e instanceof ExpoUpdatesCLIModuleNotFoundError) {\n logger.error(\n `Error when resolving runtime version using expo-updates runtimeversion:resolve CLI: ${e.message}`\n );\n return null;\n }\n throw e;\n }\n}\n"]}
@@ -1,4 +1,3 @@
1
- /// <reference types="bunyan" />
2
1
  import { bunyan } from '@expo/logger';
3
2
  export declare function sleepAsync(ms: number): Promise<void>;
4
3
  export interface RetryOptions {
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.retryAsync = exports.sleepAsync = void 0;
3
+ exports.sleepAsync = sleepAsync;
4
+ exports.retryAsync = retryAsync;
4
5
  async function sleepAsync(ms) {
5
6
  await new Promise((res) => setTimeout(res, ms));
6
7
  }
7
- exports.sleepAsync = sleepAsync;
8
8
  async function retryAsync(fn, { retryOptions: { retries, retryIntervalMs }, logger, }) {
9
9
  let attemptCount = -1;
10
10
  for (;;) {
@@ -21,5 +21,4 @@ async function retryAsync(fn, { retryOptions: { retries, retryIntervalMs }, logg
21
21
  }
22
22
  }
23
23
  }
24
- exports.retryAsync = retryAsync;
25
24
  //# sourceMappingURL=retry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":";;;AAEO,KAAK,UAAU,UAAU,CAAC,EAAU;IACzC,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC;AAFD,gCAEC;AAOM,KAAK,UAAU,UAAU,CAC9B,EAAwC,EACxC,EACE,YAAY,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAC1C,MAAM,GAIP;IAED,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,SAAS,CAAC;QACR,IAAI,CAAC;YACH,YAAY,IAAI,CAAC,CAAC;YAClB,OAAO,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CACX,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAC/C,iBAAiB,YAAY,EAAE,CAChC,CAAC;YACF,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC;YAClC,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;gBAC7B,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AA1BD,gCA0BC","sourcesContent":["import { bunyan } from '@expo/logger';\n\nexport async function sleepAsync(ms: number): Promise<void> {\n await new Promise((res) => setTimeout(res, ms));\n}\n\nexport interface RetryOptions {\n retries: number;\n retryIntervalMs: number;\n}\n\nexport async function retryAsync<T = void>(\n fn: (attemptCount: number) => Promise<T>,\n {\n retryOptions: { retries, retryIntervalMs },\n logger,\n }: {\n retryOptions: RetryOptions;\n logger?: bunyan;\n }\n): Promise<T> {\n let attemptCount = -1;\n for (;;) {\n try {\n attemptCount += 1;\n return await fn(attemptCount);\n } catch (err: any) {\n logger?.debug(\n { err, stdout: err.stdout, stderr: err.stderr },\n `Retry attempt ${attemptCount}`\n );\n await sleepAsync(retryIntervalMs);\n if (attemptCount === retries) {\n throw err;\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":";;AAEA,gCAEC;AAOD,gCA0BC;AAnCM,KAAK,UAAU,UAAU,CAAC,EAAU;IACzC,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC;AAOM,KAAK,UAAU,UAAU,CAC9B,EAAwC,EACxC,EACE,YAAY,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAC1C,MAAM,GAIP;IAED,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,SAAS,CAAC;QACR,IAAI,CAAC;YACH,YAAY,IAAI,CAAC,CAAC;YAClB,OAAO,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CACX,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAC/C,iBAAiB,YAAY,EAAE,CAChC,CAAC;YACF,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC;YAClC,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;gBAC7B,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import { bunyan } from '@expo/logger';\n\nexport async function sleepAsync(ms: number): Promise<void> {\n await new Promise((res) => setTimeout(res, ms));\n}\n\nexport interface RetryOptions {\n retries: number;\n retryIntervalMs: number;\n}\n\nexport async function retryAsync<T = void>(\n fn: (attemptCount: number) => Promise<T>,\n {\n retryOptions: { retries, retryIntervalMs },\n logger,\n }: {\n retryOptions: RetryOptions;\n logger?: bunyan;\n }\n): Promise<T> {\n let attemptCount = -1;\n for (;;) {\n try {\n attemptCount += 1;\n return await fn(attemptCount);\n } catch (err: any) {\n logger?.debug(\n { err, stdout: err.stdout, stderr: err.stderr },\n `Retry attempt ${attemptCount}`\n );\n await sleepAsync(retryIntervalMs);\n if (attemptCount === retries) {\n throw err;\n }\n }\n }\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.retryOnDNSFailure = exports.isDNSError = void 0;
3
+ exports.isDNSError = isDNSError;
4
+ exports.retryOnDNSFailure = retryOnDNSFailure;
4
5
  const promiseRetryWithCondition_1 = require("./promiseRetryWithCondition");
5
6
  function isDNSError(e) {
6
7
  return e.code === 'ENOTFOUND' || e.code === 'EAI_AGAIN';
7
8
  }
8
- exports.isDNSError = isDNSError;
9
9
  function retryOnDNSFailure(fn, options) {
10
10
  return (0, promiseRetryWithCondition_1.promiseRetryWithCondition)(fn, isDNSError, {
11
11
  retries: 3,
@@ -14,5 +14,4 @@ function retryOnDNSFailure(fn, options) {
14
14
  ...options,
15
15
  });
16
16
  }
17
- exports.retryOnDNSFailure = retryOnDNSFailure;
18
17
  //# sourceMappingURL=retryOnDNSFailure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retryOnDNSFailure.js","sourceRoot":"","sources":["../../src/utils/retryOnDNSFailure.ts"],"names":[],"mappings":";;;AAEA,2EAAwE;AAExE,SAAgB,UAAU,CAAC,CAAwB;IACjD,OAAO,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;AAC1D,CAAC;AAFD,gCAEC;AAED,SAAgB,iBAAiB,CAC/B,EAAO,EACP,OAA0B;IAE1B,OAAO,IAAA,qDAAyB,EAAC,EAAE,EAAE,UAAU,EAAE;QAC/C,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,GAAG;QACf,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAVD,8CAUC","sourcesContent":["import { OperationOptions } from 'retry';\n\nimport { promiseRetryWithCondition } from './promiseRetryWithCondition';\n\nexport function isDNSError(e: Error & { code: any }): boolean {\n return e.code === 'ENOTFOUND' || e.code === 'EAI_AGAIN';\n}\n\nexport function retryOnDNSFailure<TFn extends (...args: any[]) => Promise<any>>(\n fn: TFn,\n options?: OperationOptions\n): (...funcArgs: Parameters<TFn>) => Promise<ReturnType<TFn>> {\n return promiseRetryWithCondition(fn, isDNSError, {\n retries: 3,\n factor: 2,\n minTimeout: 100,\n ...options,\n });\n}\n"]}
1
+ {"version":3,"file":"retryOnDNSFailure.js","sourceRoot":"","sources":["../../src/utils/retryOnDNSFailure.ts"],"names":[],"mappings":";;AAIA,gCAEC;AAED,8CAUC;AAhBD,2EAAwE;AAExE,SAAgB,UAAU,CAAC,CAAwB;IACjD,OAAO,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;AAC1D,CAAC;AAED,SAAgB,iBAAiB,CAC/B,EAAO,EACP,OAA0B;IAE1B,OAAO,IAAA,qDAAyB,EAAC,EAAE,EAAE,UAAU,EAAE;QAC/C,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,GAAG;QACf,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { OperationOptions } from 'retry';\n\nimport { promiseRetryWithCondition } from './promiseRetryWithCondition';\n\nexport function isDNSError(e: Error & { code: any }): boolean {\n return e.code === 'ENOTFOUND' || e.code === 'EAI_AGAIN';\n}\n\nexport function retryOnDNSFailure<TFn extends (...args: any[]) => Promise<any>>(\n fn: TFn,\n options?: OperationOptions\n): (...funcArgs: Parameters<TFn>) => Promise<ReturnType<TFn>> {\n return promiseRetryWithCondition(fn, isDNSError, {\n retries: 3,\n factor: 2,\n minTimeout: 100,\n ...options,\n });\n}\n"]}
@@ -1,4 +1,3 @@
1
- /// <reference types="bunyan" />
2
1
  import { Response, RequestInit, HeaderInit } from 'node-fetch';
3
2
  import { bunyan } from '@expo/logger';
4
3
  type TurtleFetchMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD' | 'OPTIONS' | 'TRACE' | 'PATCH';
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.turtleFetch = exports.TurtleFetchError = void 0;
6
+ exports.TurtleFetchError = void 0;
7
+ exports.turtleFetch = turtleFetch;
7
8
  const node_fetch_1 = __importDefault(require("node-fetch"));
8
9
  const retry_1 = require("./retry");
9
10
  class TurtleFetchError extends Error {
@@ -47,5 +48,4 @@ async function turtleFetch(url, method, options) {
47
48
  return response;
48
49
  }, { retryOptions: { retries, retryIntervalMs }, logger });
49
50
  }
50
- exports.turtleFetch = turtleFetch;
51
51
  //# sourceMappingURL=turtleFetch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"turtleFetch.js","sourceRoot":"","sources":["../../src/utils/turtleFetch.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAsE;AAGtE,mCAAqC;AAIrC,MAAa,gBAAiB,SAAQ,KAAK;IAEzC,YAAY,OAAe,EAAE,QAAkB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAND,4CAMC;AAED;;;;;;;;;;;;;;GAcG;AACI,KAAK,UAAU,WAAW,CAC/B,GAAW,EACX,MAAyB,EACzB,OAOC;IAED,MAAM,EACJ,IAAI,EACJ,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,MAAM,EACN,eAAe,GAAG,IAAI,EACtB,kBAAkB,GAAG,IAAI,EACzB,GAAG,YAAY,EAChB,GAAG,OAAO,CAAC;IAEZ,MAAM,OAAO,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IAE1F,OAAO,MAAM,IAAA,kBAAU,EACrB,KAAK,EAAE,YAAY,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAK,EAAC,GAAG,EAAE;YAChC,MAAM;YACN,IAAI;YACJ,OAAO;YACP,GAAG,YAAY;SAChB,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,kBAAkB,IAAI,YAAY,GAAG,OAAO,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,WAAW,EAAE,CAAC;YAChC,MAAM,IAAI,gBAAgB,CAAC,8BAA8B,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,CACvD,CAAC;AACJ,CAAC;AA3CD,kCA2CC","sourcesContent":["import fetch, { Response, RequestInit, HeaderInit } from 'node-fetch';\nimport { bunyan } from '@expo/logger';\n\nimport { retryAsync } from './retry';\n\ntype TurtleFetchMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD' | 'OPTIONS' | 'TRACE' | 'PATCH';\n\nexport class TurtleFetchError extends Error {\n readonly response: Response;\n constructor(message: string, response: Response) {\n super(message);\n this.response = response;\n }\n}\n\n/**\n * Wrapper around node-fetch adding some useful features:\n * - retries\n * - json body - if you specify json in options, it will be stringified and content-type will be set to application/json\n * - automatic error throwing - if response is not ok, it will throw an error\n *\n * @param url URL to fetch\n * @param method HTTP method\n * @param options.retries number of retries\n * @param options.json json body\n * @param options.headers headers\n * @param options.shouldThrowOnNotOk if false, it will not throw an error if response is not ok (default: true)\n * @param options other options passed to node-fetch\n * @returns {Promise<Response>}\n */\nexport async function turtleFetch(\n url: string,\n method: TurtleFetchMethod,\n options: Omit<RequestInit, 'body' | 'method'> & {\n retries?: number;\n json?: Record<string, any>;\n headers?: Exclude<HeaderInit, string[][]>;\n shouldThrowOnNotOk?: boolean;\n retryIntervalMs?: number;\n logger?: bunyan;\n }\n): Promise<Response> {\n const {\n json,\n headers: rawHeaders,\n retries: rawRetries,\n logger,\n retryIntervalMs = 1000,\n shouldThrowOnNotOk = true,\n ...otherOptions\n } = options;\n\n const retries = rawRetries ?? (method === 'POST' ? 0 : 2);\n\n const body = JSON.stringify(json);\n const headers = json ? { ...rawHeaders, 'Content-Type': 'application/json' } : rawHeaders;\n\n return await retryAsync(\n async (attemptCount) => {\n const response = await fetch(url, {\n method,\n body,\n headers,\n ...otherOptions,\n });\n const shouldThrow = shouldThrowOnNotOk || attemptCount < retries;\n if (!response.ok && shouldThrow) {\n throw new TurtleFetchError(`Request failed with status ${response.status}`, response);\n }\n return response;\n },\n { retryOptions: { retries, retryIntervalMs }, logger }\n );\n}\n"]}
1
+ {"version":3,"file":"turtleFetch.js","sourceRoot":"","sources":["../../src/utils/turtleFetch.ts"],"names":[],"mappings":";;;;;;AA8BA,kCA2CC;AAzED,4DAAsE;AAGtE,mCAAqC;AAIrC,MAAa,gBAAiB,SAAQ,KAAK;IAEzC,YAAY,OAAe,EAAE,QAAkB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAND,4CAMC;AAED;;;;;;;;;;;;;;GAcG;AACI,KAAK,UAAU,WAAW,CAC/B,GAAW,EACX,MAAyB,EACzB,OAOC;IAED,MAAM,EACJ,IAAI,EACJ,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,MAAM,EACN,eAAe,GAAG,IAAI,EACtB,kBAAkB,GAAG,IAAI,EACzB,GAAG,YAAY,EAChB,GAAG,OAAO,CAAC;IAEZ,MAAM,OAAO,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IAE1F,OAAO,MAAM,IAAA,kBAAU,EACrB,KAAK,EAAE,YAAY,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAK,EAAC,GAAG,EAAE;YAChC,MAAM;YACN,IAAI;YACJ,OAAO;YACP,GAAG,YAAY;SAChB,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,kBAAkB,IAAI,YAAY,GAAG,OAAO,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,WAAW,EAAE,CAAC;YAChC,MAAM,IAAI,gBAAgB,CAAC,8BAA8B,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,CACvD,CAAC;AACJ,CAAC","sourcesContent":["import fetch, { Response, RequestInit, HeaderInit } from 'node-fetch';\nimport { bunyan } from '@expo/logger';\n\nimport { retryAsync } from './retry';\n\ntype TurtleFetchMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD' | 'OPTIONS' | 'TRACE' | 'PATCH';\n\nexport class TurtleFetchError extends Error {\n readonly response: Response;\n constructor(message: string, response: Response) {\n super(message);\n this.response = response;\n }\n}\n\n/**\n * Wrapper around node-fetch adding some useful features:\n * - retries\n * - json body - if you specify json in options, it will be stringified and content-type will be set to application/json\n * - automatic error throwing - if response is not ok, it will throw an error\n *\n * @param url URL to fetch\n * @param method HTTP method\n * @param options.retries number of retries\n * @param options.json json body\n * @param options.headers headers\n * @param options.shouldThrowOnNotOk if false, it will not throw an error if response is not ok (default: true)\n * @param options other options passed to node-fetch\n * @returns {Promise<Response>}\n */\nexport async function turtleFetch(\n url: string,\n method: TurtleFetchMethod,\n options: Omit<RequestInit, 'body' | 'method'> & {\n retries?: number;\n json?: Record<string, any>;\n headers?: Exclude<HeaderInit, string[][]>;\n shouldThrowOnNotOk?: boolean;\n retryIntervalMs?: number;\n logger?: bunyan;\n }\n): Promise<Response> {\n const {\n json,\n headers: rawHeaders,\n retries: rawRetries,\n logger,\n retryIntervalMs = 1000,\n shouldThrowOnNotOk = true,\n ...otherOptions\n } = options;\n\n const retries = rawRetries ?? (method === 'POST' ? 0 : 2);\n\n const body = JSON.stringify(json);\n const headers = json ? { ...rawHeaders, 'Content-Type': 'application/json' } : rawHeaders;\n\n return await retryAsync(\n async (attemptCount) => {\n const response = await fetch(url, {\n method,\n body,\n headers,\n ...otherOptions,\n });\n const shouldThrow = shouldThrowOnNotOk || attemptCount < retries;\n if (!response.ok && shouldThrow) {\n throw new TurtleFetchError(`Request failed with status ${response.status}`, response);\n }\n return response;\n },\n { retryOptions: { retries, retryIntervalMs }, logger }\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/build-tools",
3
- "version": "1.0.204",
3
+ "version": "1.0.206",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [
@@ -26,16 +26,16 @@
26
26
  "dependencies": {
27
27
  "@expo/config": "10.0.6",
28
28
  "@expo/config-plugins": "9.0.12",
29
- "@expo/downloader": "1.0.118",
30
- "@expo/eas-build-job": "1.0.204",
29
+ "@expo/downloader": "1.0.206",
30
+ "@expo/eas-build-job": "1.0.206",
31
31
  "@expo/env": "^0.4.0",
32
- "@expo/logger": "1.0.117",
32
+ "@expo/logger": "1.0.206",
33
33
  "@expo/package-manager": "1.7.0",
34
34
  "@expo/plist": "^0.2.0",
35
35
  "@expo/results": "^1.0.0",
36
- "@expo/steps": "1.0.204",
37
- "@expo/template-file": "1.0.117",
38
- "@expo/turtle-spawn": "1.0.117",
36
+ "@expo/steps": "1.0.206",
37
+ "@expo/template-file": "1.0.206",
38
+ "@expo/turtle-spawn": "1.0.206",
39
39
  "@expo/xcpretty": "^4.3.1",
40
40
  "@google-cloud/storage": "^7.11.2",
41
41
  "fast-glob": "^3.3.2",
@@ -72,12 +72,12 @@
72
72
  "ts-jest": "^29.1.4",
73
73
  "ts-mockito": "^2.6.1",
74
74
  "tslib": "^2.6.3",
75
- "typescript": "^5.4.5",
75
+ "typescript": "^5.5.4",
76
76
  "uuid": "^9.0.1"
77
77
  },
78
78
  "volta": {
79
79
  "node": "20.14.0",
80
80
  "yarn": "1.22.21"
81
81
  },
82
- "gitHead": "a058b16a0e415607dd21180e81e2d8299a688af0"
82
+ "gitHead": "4dd2cddde4f35396bc645cae821d11b8111d0b13"
83
83
  }