@ankhorage/deploy 0.4.0 → 0.6.0

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 (414) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/dist/domain/AndroidDeploymentIntent.d.ts +10 -0
  4. package/dist/domain/AndroidDeploymentIntent.d.ts.map +1 -0
  5. package/dist/domain/AndroidDeploymentIntent.js +3 -0
  6. package/dist/domain/AndroidDeploymentIntent.js.map +1 -0
  7. package/dist/domain/AndroidDeploymentPublication.d.ts +12 -0
  8. package/dist/domain/AndroidDeploymentPublication.d.ts.map +1 -0
  9. package/dist/domain/AndroidDeploymentPublication.js +2 -0
  10. package/dist/domain/AndroidDeploymentPublication.js.map +1 -0
  11. package/dist/domain/IosDeploymentIntent.d.ts +5 -0
  12. package/dist/domain/IosDeploymentIntent.d.ts.map +1 -0
  13. package/dist/domain/IosDeploymentIntent.js +2 -0
  14. package/dist/domain/IosDeploymentIntent.js.map +1 -0
  15. package/dist/domain/IosDeploymentPublication.d.ts +10 -0
  16. package/dist/domain/IosDeploymentPublication.d.ts.map +1 -0
  17. package/dist/domain/IosDeploymentPublication.js +2 -0
  18. package/dist/domain/IosDeploymentPublication.js.map +1 -0
  19. package/dist/index.d.ts +4 -0
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/project/android/ProjectAndroidDeploymentAccess.d.ts +7 -0
  23. package/dist/project/android/ProjectAndroidDeploymentAccess.d.ts.map +1 -0
  24. package/dist/project/android/ProjectAndroidDeploymentAccess.js +2 -0
  25. package/dist/project/android/ProjectAndroidDeploymentAccess.js.map +1 -0
  26. package/dist/project/android/ProjectAndroidDeploymentExecution.d.ts +12 -0
  27. package/dist/project/android/ProjectAndroidDeploymentExecution.d.ts.map +1 -0
  28. package/dist/project/android/ProjectAndroidDeploymentExecution.js +2 -0
  29. package/dist/project/android/ProjectAndroidDeploymentExecution.js.map +1 -0
  30. package/dist/project/android/ProjectAndroidDeploymentInspection.d.ts +21 -0
  31. package/dist/project/android/ProjectAndroidDeploymentInspection.d.ts.map +1 -0
  32. package/dist/project/android/ProjectAndroidDeploymentInspection.js +2 -0
  33. package/dist/project/android/ProjectAndroidDeploymentInspection.js.map +1 -0
  34. package/dist/project/android/ProjectAndroidDeploymentRuntime.d.ts +13 -0
  35. package/dist/project/android/ProjectAndroidDeploymentRuntime.d.ts.map +1 -0
  36. package/dist/project/android/ProjectAndroidDeploymentRuntime.js +12 -0
  37. package/dist/project/android/ProjectAndroidDeploymentRuntime.js.map +1 -0
  38. package/dist/project/android/ProjectAndroidExecutionState.d.ts +10 -0
  39. package/dist/project/android/ProjectAndroidExecutionState.d.ts.map +1 -0
  40. package/dist/project/android/ProjectAndroidExecutionState.js +2 -0
  41. package/dist/project/android/ProjectAndroidExecutionState.js.map +1 -0
  42. package/dist/project/android/createProjectAndroidDeploymentPlan.d.ts +4 -0
  43. package/dist/project/android/createProjectAndroidDeploymentPlan.d.ts.map +1 -0
  44. package/dist/project/android/createProjectAndroidDeploymentPlan.js +13 -0
  45. package/dist/project/android/createProjectAndroidDeploymentPlan.js.map +1 -0
  46. package/dist/project/android/executeProjectAndroidDeployment.d.ts +12 -0
  47. package/dist/project/android/executeProjectAndroidDeployment.d.ts.map +1 -0
  48. package/dist/project/android/executeProjectAndroidDeployment.js +164 -0
  49. package/dist/project/android/executeProjectAndroidDeployment.js.map +1 -0
  50. package/dist/project/android/executeProjectAndroidStep.d.ts +15 -0
  51. package/dist/project/android/executeProjectAndroidStep.d.ts.map +1 -0
  52. package/dist/project/android/executeProjectAndroidStep.js +124 -0
  53. package/dist/project/android/executeProjectAndroidStep.js.map +1 -0
  54. package/dist/project/android/inspectProjectAndroidDeployment.d.ts +11 -0
  55. package/dist/project/android/inspectProjectAndroidDeployment.d.ts.map +1 -0
  56. package/dist/project/android/inspectProjectAndroidDeployment.js +90 -0
  57. package/dist/project/android/inspectProjectAndroidDeployment.js.map +1 -0
  58. package/dist/project/android/inspectProjectAndroidEasSetup.d.ts +5 -0
  59. package/dist/project/android/inspectProjectAndroidEasSetup.d.ts.map +1 -0
  60. package/dist/project/android/inspectProjectAndroidEasSetup.js +18 -0
  61. package/dist/project/android/inspectProjectAndroidEasSetup.js.map +1 -0
  62. package/dist/project/android/inspectProjectAndroidGooglePlay.d.ts +16 -0
  63. package/dist/project/android/inspectProjectAndroidGooglePlay.d.ts.map +1 -0
  64. package/dist/project/android/inspectProjectAndroidGooglePlay.js +52 -0
  65. package/dist/project/android/inspectProjectAndroidGooglePlay.js.map +1 -0
  66. package/dist/project/android/normalizeProjectAndroidDesired.d.ts +13 -0
  67. package/dist/project/android/normalizeProjectAndroidDesired.d.ts.map +1 -0
  68. package/dist/project/android/normalizeProjectAndroidDesired.js +25 -0
  69. package/dist/project/android/normalizeProjectAndroidDesired.js.map +1 -0
  70. package/dist/project/android/readCurrentProjectAndroidDeployment.d.ts +8 -0
  71. package/dist/project/android/readCurrentProjectAndroidDeployment.d.ts.map +1 -0
  72. package/dist/project/android/readCurrentProjectAndroidDeployment.js +44 -0
  73. package/dist/project/android/readCurrentProjectAndroidDeployment.js.map +1 -0
  74. package/dist/project/android/recordProjectAndroidDeployment.d.ts +21 -0
  75. package/dist/project/android/recordProjectAndroidDeployment.d.ts.map +1 -0
  76. package/dist/project/android/recordProjectAndroidDeployment.js +36 -0
  77. package/dist/project/android/recordProjectAndroidDeployment.js.map +1 -0
  78. package/dist/project/android/resolveProjectAndroidDeploymentAccess.d.ts +9 -0
  79. package/dist/project/android/resolveProjectAndroidDeploymentAccess.d.ts.map +1 -0
  80. package/dist/project/android/resolveProjectAndroidDeploymentAccess.js +7 -0
  81. package/dist/project/android/resolveProjectAndroidDeploymentAccess.js.map +1 -0
  82. package/dist/project/android/scopeProjectAndroidDeploymentAccess.d.ts +3 -0
  83. package/dist/project/android/scopeProjectAndroidDeploymentAccess.d.ts.map +1 -0
  84. package/dist/project/android/scopeProjectAndroidDeploymentAccess.js +7 -0
  85. package/dist/project/android/scopeProjectAndroidDeploymentAccess.js.map +1 -0
  86. package/dist/project/areDeploymentPlansEqual.d.ts +3 -0
  87. package/dist/project/areDeploymentPlansEqual.d.ts.map +1 -0
  88. package/dist/project/areDeploymentPlansEqual.js +4 -0
  89. package/dist/project/areDeploymentPlansEqual.js.map +1 -0
  90. package/dist/project/index.d.ts +12 -0
  91. package/dist/project/index.d.ts.map +1 -1
  92. package/dist/project/index.js +6 -0
  93. package/dist/project/index.js.map +1 -1
  94. package/dist/project/ios/ProjectIosDeploymentAccess.d.ts +7 -0
  95. package/dist/project/ios/ProjectIosDeploymentAccess.d.ts.map +1 -0
  96. package/dist/project/ios/ProjectIosDeploymentAccess.js +2 -0
  97. package/dist/project/ios/ProjectIosDeploymentAccess.js.map +1 -0
  98. package/dist/project/ios/ProjectIosDeploymentExecution.d.ts +12 -0
  99. package/dist/project/ios/ProjectIosDeploymentExecution.d.ts.map +1 -0
  100. package/dist/project/ios/ProjectIosDeploymentExecution.js +2 -0
  101. package/dist/project/ios/ProjectIosDeploymentExecution.js.map +1 -0
  102. package/dist/project/ios/ProjectIosDeploymentInspection.d.ts +21 -0
  103. package/dist/project/ios/ProjectIosDeploymentInspection.d.ts.map +1 -0
  104. package/dist/project/ios/ProjectIosDeploymentInspection.js +2 -0
  105. package/dist/project/ios/ProjectIosDeploymentInspection.js.map +1 -0
  106. package/dist/project/ios/ProjectIosDeploymentRuntime.d.ts +19 -0
  107. package/dist/project/ios/ProjectIosDeploymentRuntime.d.ts.map +1 -0
  108. package/dist/project/ios/ProjectIosDeploymentRuntime.js +22 -0
  109. package/dist/project/ios/ProjectIosDeploymentRuntime.js.map +1 -0
  110. package/dist/project/ios/ProjectIosExecutionState.d.ts +12 -0
  111. package/dist/project/ios/ProjectIosExecutionState.d.ts.map +1 -0
  112. package/dist/project/ios/ProjectIosExecutionState.js +2 -0
  113. package/dist/project/ios/ProjectIosExecutionState.js.map +1 -0
  114. package/dist/project/ios/createProjectIosDeploymentPlan.d.ts +4 -0
  115. package/dist/project/ios/createProjectIosDeploymentPlan.d.ts.map +1 -0
  116. package/dist/project/ios/createProjectIosDeploymentPlan.js +13 -0
  117. package/dist/project/ios/createProjectIosDeploymentPlan.js.map +1 -0
  118. package/dist/project/ios/executeProjectIosDeployment.d.ts +12 -0
  119. package/dist/project/ios/executeProjectIosDeployment.d.ts.map +1 -0
  120. package/dist/project/ios/executeProjectIosDeployment.js +160 -0
  121. package/dist/project/ios/executeProjectIosDeployment.js.map +1 -0
  122. package/dist/project/ios/executeProjectIosStep.d.ts +15 -0
  123. package/dist/project/ios/executeProjectIosStep.d.ts.map +1 -0
  124. package/dist/project/ios/executeProjectIosStep.js +171 -0
  125. package/dist/project/ios/executeProjectIosStep.js.map +1 -0
  126. package/dist/project/ios/inspectProjectIosAppStoreConnect.d.ts +15 -0
  127. package/dist/project/ios/inspectProjectIosAppStoreConnect.d.ts.map +1 -0
  128. package/dist/project/ios/inspectProjectIosAppStoreConnect.js +55 -0
  129. package/dist/project/ios/inspectProjectIosAppStoreConnect.js.map +1 -0
  130. package/dist/project/ios/inspectProjectIosDeployment.d.ts +11 -0
  131. package/dist/project/ios/inspectProjectIosDeployment.d.ts.map +1 -0
  132. package/dist/project/ios/inspectProjectIosDeployment.js +96 -0
  133. package/dist/project/ios/inspectProjectIosDeployment.js.map +1 -0
  134. package/dist/project/ios/inspectProjectIosEasSetup.d.ts +5 -0
  135. package/dist/project/ios/inspectProjectIosEasSetup.d.ts.map +1 -0
  136. package/dist/project/ios/inspectProjectIosEasSetup.js +18 -0
  137. package/dist/project/ios/inspectProjectIosEasSetup.js.map +1 -0
  138. package/dist/project/ios/normalizeProjectIosDesired.d.ts +13 -0
  139. package/dist/project/ios/normalizeProjectIosDesired.d.ts.map +1 -0
  140. package/dist/project/ios/normalizeProjectIosDesired.js +25 -0
  141. package/dist/project/ios/normalizeProjectIosDesired.js.map +1 -0
  142. package/dist/project/ios/readCurrentProjectIosDeployment.d.ts +8 -0
  143. package/dist/project/ios/readCurrentProjectIosDeployment.d.ts.map +1 -0
  144. package/dist/project/ios/readCurrentProjectIosDeployment.js +52 -0
  145. package/dist/project/ios/readCurrentProjectIosDeployment.js.map +1 -0
  146. package/dist/project/ios/recordProjectIosDeployment.d.ts +21 -0
  147. package/dist/project/ios/recordProjectIosDeployment.d.ts.map +1 -0
  148. package/dist/project/ios/recordProjectIosDeployment.js +36 -0
  149. package/dist/project/ios/recordProjectIosDeployment.js.map +1 -0
  150. package/dist/project/ios/resolveProjectIosDeploymentAccess.d.ts +9 -0
  151. package/dist/project/ios/resolveProjectIosDeploymentAccess.d.ts.map +1 -0
  152. package/dist/project/ios/resolveProjectIosDeploymentAccess.js +7 -0
  153. package/dist/project/ios/resolveProjectIosDeploymentAccess.js.map +1 -0
  154. package/dist/project/ios/scopeProjectIosDeploymentAccess.d.ts +3 -0
  155. package/dist/project/ios/scopeProjectIosDeploymentAccess.d.ts.map +1 -0
  156. package/dist/project/ios/scopeProjectIosDeploymentAccess.js +7 -0
  157. package/dist/project/ios/scopeProjectIosDeploymentAccess.js.map +1 -0
  158. package/dist/project/setupBlockingOutcome.d.ts +14 -0
  159. package/dist/project/setupBlockingOutcome.d.ts.map +1 -0
  160. package/dist/project/setupBlockingOutcome.js +38 -0
  161. package/dist/project/setupBlockingOutcome.js.map +1 -0
  162. package/dist/project/web/areDeploymentPlansEqual.d.ts +1 -2
  163. package/dist/project/web/areDeploymentPlansEqual.d.ts.map +1 -1
  164. package/dist/project/web/areDeploymentPlansEqual.js +1 -3
  165. package/dist/project/web/areDeploymentPlansEqual.js.map +1 -1
  166. package/dist/project/web/inspectProjectWebSetup.d.ts.map +1 -1
  167. package/dist/project/web/inspectProjectWebSetup.js +7 -2
  168. package/dist/project/web/inspectProjectWebSetup.js.map +1 -1
  169. package/dist/project/web/setupBlockingOutcome.d.ts.map +1 -1
  170. package/dist/project/web/setupBlockingOutcome.js +9 -31
  171. package/dist/project/web/setupBlockingOutcome.js.map +1 -1
  172. package/dist/providers/appStoreConnect/AppStoreConnectIosState.d.ts +17 -0
  173. package/dist/providers/appStoreConnect/AppStoreConnectIosState.d.ts.map +1 -0
  174. package/dist/providers/appStoreConnect/AppStoreConnectIosState.js +2 -0
  175. package/dist/providers/appStoreConnect/AppStoreConnectIosState.js.map +1 -0
  176. package/dist/providers/appStoreConnect/AppStoreConnectPublicationResult.d.ts +19 -0
  177. package/dist/providers/appStoreConnect/AppStoreConnectPublicationResult.d.ts.map +1 -0
  178. package/dist/providers/appStoreConnect/AppStoreConnectPublicationResult.js +2 -0
  179. package/dist/providers/appStoreConnect/AppStoreConnectPublicationResult.js.map +1 -0
  180. package/dist/providers/appStoreConnect/AppStoreConnectRequestTracker.d.ts +9 -0
  181. package/dist/providers/appStoreConnect/AppStoreConnectRequestTracker.d.ts.map +1 -0
  182. package/dist/providers/appStoreConnect/AppStoreConnectRequestTracker.js +13 -0
  183. package/dist/providers/appStoreConnect/AppStoreConnectRequestTracker.js.map +1 -0
  184. package/dist/providers/appStoreConnect/AppStoreConnectTokenFactory.d.ts +8 -0
  185. package/dist/providers/appStoreConnect/AppStoreConnectTokenFactory.d.ts.map +1 -0
  186. package/dist/providers/appStoreConnect/AppStoreConnectTokenFactory.js +21 -0
  187. package/dist/providers/appStoreConnect/AppStoreConnectTokenFactory.js.map +1 -0
  188. package/dist/providers/appStoreConnect/AppStoreConnectTransport.d.ts +13 -0
  189. package/dist/providers/appStoreConnect/AppStoreConnectTransport.d.ts.map +1 -0
  190. package/dist/providers/appStoreConnect/AppStoreConnectTransport.js +15 -0
  191. package/dist/providers/appStoreConnect/AppStoreConnectTransport.js.map +1 -0
  192. package/dist/providers/appStoreConnect/AppStoreUploadTransport.d.ts +17 -0
  193. package/dist/providers/appStoreConnect/AppStoreUploadTransport.d.ts.map +1 -0
  194. package/dist/providers/appStoreConnect/AppStoreUploadTransport.js +12 -0
  195. package/dist/providers/appStoreConnect/AppStoreUploadTransport.js.map +1 -0
  196. package/dist/providers/appStoreConnect/BuildUploadOperation.d.ts +13 -0
  197. package/dist/providers/appStoreConnect/BuildUploadOperation.d.ts.map +1 -0
  198. package/dist/providers/appStoreConnect/BuildUploadOperation.js +2 -0
  199. package/dist/providers/appStoreConnect/BuildUploadOperation.js.map +1 -0
  200. package/dist/providers/appStoreConnect/appStoreConnectUrls.d.ts +10 -0
  201. package/dist/providers/appStoreConnect/appStoreConnectUrls.d.ts.map +1 -0
  202. package/dist/providers/appStoreConnect/appStoreConnectUrls.js +42 -0
  203. package/dist/providers/appStoreConnect/appStoreConnectUrls.js.map +1 -0
  204. package/dist/providers/appStoreConnect/attachAppStoreVersionBuild.d.ts +8 -0
  205. package/dist/providers/appStoreConnect/attachAppStoreVersionBuild.d.ts.map +1 -0
  206. package/dist/providers/appStoreConnect/attachAppStoreVersionBuild.js +12 -0
  207. package/dist/providers/appStoreConnect/attachAppStoreVersionBuild.js.map +1 -0
  208. package/dist/providers/appStoreConnect/commitAppStoreBuildUploadFile.d.ts +7 -0
  209. package/dist/providers/appStoreConnect/commitAppStoreBuildUploadFile.d.ts.map +1 -0
  210. package/dist/providers/appStoreConnect/commitAppStoreBuildUploadFile.js +18 -0
  211. package/dist/providers/appStoreConnect/commitAppStoreBuildUploadFile.js.map +1 -0
  212. package/dist/providers/appStoreConnect/createAppStoreBuildUpload.d.ts +9 -0
  213. package/dist/providers/appStoreConnect/createAppStoreBuildUpload.d.ts.map +1 -0
  214. package/dist/providers/appStoreConnect/createAppStoreBuildUpload.js +41 -0
  215. package/dist/providers/appStoreConnect/createAppStoreBuildUpload.js.map +1 -0
  216. package/dist/providers/appStoreConnect/createAppStoreConnectSetupAdapter.d.ts +7 -0
  217. package/dist/providers/appStoreConnect/createAppStoreConnectSetupAdapter.d.ts.map +1 -0
  218. package/dist/providers/appStoreConnect/createAppStoreConnectSetupAdapter.js +33 -0
  219. package/dist/providers/appStoreConnect/createAppStoreConnectSetupAdapter.js.map +1 -0
  220. package/dist/providers/appStoreConnect/downloadIosArchive.d.ts +9 -0
  221. package/dist/providers/appStoreConnect/downloadIosArchive.d.ts.map +1 -0
  222. package/dist/providers/appStoreConnect/downloadIosArchive.js +28 -0
  223. package/dist/providers/appStoreConnect/downloadIosArchive.js.map +1 -0
  224. package/dist/providers/appStoreConnect/executeBuildUploadOperations.d.ts +8 -0
  225. package/dist/providers/appStoreConnect/executeBuildUploadOperations.d.ts.map +1 -0
  226. package/dist/providers/appStoreConnect/executeBuildUploadOperations.js +15 -0
  227. package/dist/providers/appStoreConnect/executeBuildUploadOperations.js.map +1 -0
  228. package/dist/providers/appStoreConnect/inspectAppStoreConnectIos.d.ts +27 -0
  229. package/dist/providers/appStoreConnect/inspectAppStoreConnectIos.d.ts.map +1 -0
  230. package/dist/providers/appStoreConnect/inspectAppStoreConnectIos.js +177 -0
  231. package/dist/providers/appStoreConnect/inspectAppStoreConnectIos.js.map +1 -0
  232. package/dist/providers/appStoreConnect/parseBuildUploadFileReservation.d.ts +3 -0
  233. package/dist/providers/appStoreConnect/parseBuildUploadFileReservation.d.ts.map +1 -0
  234. package/dist/providers/appStoreConnect/parseBuildUploadFileReservation.js +81 -0
  235. package/dist/providers/appStoreConnect/parseBuildUploadFileReservation.js.map +1 -0
  236. package/dist/providers/appStoreConnect/prepareAppStoreVersion.d.ts +8 -0
  237. package/dist/providers/appStoreConnect/prepareAppStoreVersion.d.ts.map +1 -0
  238. package/dist/providers/appStoreConnect/prepareAppStoreVersion.js +66 -0
  239. package/dist/providers/appStoreConnect/prepareAppStoreVersion.js.map +1 -0
  240. package/dist/providers/appStoreConnect/publishIosToAppStoreConnect.d.ts +21 -0
  241. package/dist/providers/appStoreConnect/publishIosToAppStoreConnect.d.ts.map +1 -0
  242. package/dist/providers/appStoreConnect/publishIosToAppStoreConnect.js +124 -0
  243. package/dist/providers/appStoreConnect/publishIosToAppStoreConnect.js.map +1 -0
  244. package/dist/providers/appStoreConnect/reserveAppStoreBuildUploadFile.d.ts +9 -0
  245. package/dist/providers/appStoreConnect/reserveAppStoreBuildUploadFile.d.ts.map +1 -0
  246. package/dist/providers/appStoreConnect/reserveAppStoreBuildUploadFile.js +32 -0
  247. package/dist/providers/appStoreConnect/reserveAppStoreBuildUploadFile.js.map +1 -0
  248. package/dist/providers/appStoreConnect/resolveAppStoreConnectToken.d.ts +18 -0
  249. package/dist/providers/appStoreConnect/resolveAppStoreConnectToken.d.ts.map +1 -0
  250. package/dist/providers/appStoreConnect/resolveAppStoreConnectToken.js +64 -0
  251. package/dist/providers/appStoreConnect/resolveAppStoreConnectToken.js.map +1 -0
  252. package/dist/providers/appStoreConnect/verifyAppStoreConnectPublication.d.ts +23 -0
  253. package/dist/providers/appStoreConnect/verifyAppStoreConnectPublication.d.ts.map +1 -0
  254. package/dist/providers/appStoreConnect/verifyAppStoreConnectPublication.js +60 -0
  255. package/dist/providers/appStoreConnect/verifyAppStoreConnectPublication.js.map +1 -0
  256. package/dist/providers/appStoreConnect/verifyAppStoreVersionBuild.d.ts +9 -0
  257. package/dist/providers/appStoreConnect/verifyAppStoreVersionBuild.d.ts.map +1 -0
  258. package/dist/providers/appStoreConnect/verifyAppStoreVersionBuild.js +26 -0
  259. package/dist/providers/appStoreConnect/verifyAppStoreVersionBuild.js.map +1 -0
  260. package/dist/providers/appStoreConnect/waitForAppStoreBuildUpload.d.ts +14 -0
  261. package/dist/providers/appStoreConnect/waitForAppStoreBuildUpload.d.ts.map +1 -0
  262. package/dist/providers/appStoreConnect/waitForAppStoreBuildUpload.js +69 -0
  263. package/dist/providers/appStoreConnect/waitForAppStoreBuildUpload.js.map +1 -0
  264. package/dist/providers/eas/android/EasAndroidBuildArtifact.d.ts +8 -0
  265. package/dist/providers/eas/android/EasAndroidBuildArtifact.d.ts.map +1 -0
  266. package/dist/providers/eas/android/EasAndroidBuildArtifact.js +2 -0
  267. package/dist/providers/eas/android/EasAndroidBuildArtifact.js.map +1 -0
  268. package/dist/providers/eas/android/buildAndroidWithEas.d.ts +25 -0
  269. package/dist/providers/eas/android/buildAndroidWithEas.d.ts.map +1 -0
  270. package/dist/providers/eas/android/buildAndroidWithEas.js +58 -0
  271. package/dist/providers/eas/android/buildAndroidWithEas.js.map +1 -0
  272. package/dist/providers/eas/android/generateLocalAndroidFingerprint.d.ts +15 -0
  273. package/dist/providers/eas/android/generateLocalAndroidFingerprint.d.ts.map +1 -0
  274. package/dist/providers/eas/android/generateLocalAndroidFingerprint.js +51 -0
  275. package/dist/providers/eas/android/generateLocalAndroidFingerprint.js.map +1 -0
  276. package/dist/providers/eas/android/inspectEasAndroidConfig.d.ts +28 -0
  277. package/dist/providers/eas/android/inspectEasAndroidConfig.d.ts.map +1 -0
  278. package/dist/providers/eas/android/inspectEasAndroidConfig.js +40 -0
  279. package/dist/providers/eas/android/inspectEasAndroidConfig.js.map +1 -0
  280. package/dist/providers/eas/android/parseEasAndroidBuild.d.ts +3 -0
  281. package/dist/providers/eas/android/parseEasAndroidBuild.d.ts.map +1 -0
  282. package/dist/providers/eas/android/parseEasAndroidBuild.js +45 -0
  283. package/dist/providers/eas/android/parseEasAndroidBuild.js.map +1 -0
  284. package/dist/providers/eas/android/parseEasAndroidConfig.d.ts +3 -0
  285. package/dist/providers/eas/android/parseEasAndroidConfig.d.ts.map +1 -0
  286. package/dist/providers/eas/android/parseEasAndroidConfig.js +59 -0
  287. package/dist/providers/eas/android/parseEasAndroidConfig.js.map +1 -0
  288. package/dist/providers/eas/createEasSetupAdapter.d.ts +13 -0
  289. package/dist/providers/eas/createEasSetupAdapter.d.ts.map +1 -0
  290. package/dist/providers/eas/createEasSetupAdapter.js +72 -0
  291. package/dist/providers/eas/createEasSetupAdapter.js.map +1 -0
  292. package/dist/providers/eas/ios/EasIosBuildArtifact.d.ts +9 -0
  293. package/dist/providers/eas/ios/EasIosBuildArtifact.d.ts.map +1 -0
  294. package/dist/providers/eas/ios/EasIosBuildArtifact.js +2 -0
  295. package/dist/providers/eas/ios/EasIosBuildArtifact.js.map +1 -0
  296. package/dist/providers/eas/ios/buildIosWithEas.d.ts +26 -0
  297. package/dist/providers/eas/ios/buildIosWithEas.d.ts.map +1 -0
  298. package/dist/providers/eas/ios/buildIosWithEas.js +60 -0
  299. package/dist/providers/eas/ios/buildIosWithEas.js.map +1 -0
  300. package/dist/providers/eas/ios/generateLocalIosFingerprint.d.ts +15 -0
  301. package/dist/providers/eas/ios/generateLocalIosFingerprint.d.ts.map +1 -0
  302. package/dist/providers/eas/ios/generateLocalIosFingerprint.js +48 -0
  303. package/dist/providers/eas/ios/generateLocalIosFingerprint.js.map +1 -0
  304. package/dist/providers/eas/ios/inspectEasIosConfig.d.ts +28 -0
  305. package/dist/providers/eas/ios/inspectEasIosConfig.d.ts.map +1 -0
  306. package/dist/providers/eas/ios/inspectEasIosConfig.js +40 -0
  307. package/dist/providers/eas/ios/inspectEasIosConfig.js.map +1 -0
  308. package/dist/providers/eas/ios/parseEasIosBuild.d.ts +3 -0
  309. package/dist/providers/eas/ios/parseEasIosBuild.d.ts.map +1 -0
  310. package/dist/providers/eas/ios/parseEasIosBuild.js +41 -0
  311. package/dist/providers/eas/ios/parseEasIosBuild.js.map +1 -0
  312. package/dist/providers/eas/ios/parseEasIosConfig.d.ts +3 -0
  313. package/dist/providers/eas/ios/parseEasIosConfig.d.ts.map +1 -0
  314. package/dist/providers/eas/ios/parseEasIosConfig.js +56 -0
  315. package/dist/providers/eas/ios/parseEasIosConfig.js.map +1 -0
  316. package/dist/providers/eas/publishWebToEas.js +1 -1
  317. package/dist/providers/eas/publishWebToEas.js.map +1 -1
  318. package/dist/providers/eas/resolveEasProcessEnvironment.d.ts +2 -0
  319. package/dist/providers/eas/resolveEasProcessEnvironment.d.ts.map +1 -1
  320. package/dist/providers/eas/resolveEasProcessEnvironment.js +15 -14
  321. package/dist/providers/eas/resolveEasProcessEnvironment.js.map +1 -1
  322. package/dist/providers/googlePlay/GooglePlayTokenFactory.d.ts +7 -0
  323. package/dist/providers/googlePlay/GooglePlayTokenFactory.d.ts.map +1 -0
  324. package/dist/providers/googlePlay/GooglePlayTokenFactory.js +14 -0
  325. package/dist/providers/googlePlay/GooglePlayTokenFactory.js.map +1 -0
  326. package/dist/providers/googlePlay/GooglePlayTrackState.d.ts +12 -0
  327. package/dist/providers/googlePlay/GooglePlayTrackState.d.ts.map +1 -0
  328. package/dist/providers/googlePlay/GooglePlayTrackState.js +35 -0
  329. package/dist/providers/googlePlay/GooglePlayTrackState.js.map +1 -0
  330. package/dist/providers/googlePlay/GooglePlayTransport.d.ts +15 -0
  331. package/dist/providers/googlePlay/GooglePlayTransport.d.ts.map +1 -0
  332. package/dist/providers/googlePlay/GooglePlayTransport.js +12 -0
  333. package/dist/providers/googlePlay/GooglePlayTransport.js.map +1 -0
  334. package/dist/providers/googlePlay/commitGooglePlayEdit.d.ts +8 -0
  335. package/dist/providers/googlePlay/commitGooglePlayEdit.d.ts.map +1 -0
  336. package/dist/providers/googlePlay/commitGooglePlayEdit.js +17 -0
  337. package/dist/providers/googlePlay/commitGooglePlayEdit.js.map +1 -0
  338. package/dist/providers/googlePlay/createGooglePlaySetupAdapter.d.ts +6 -0
  339. package/dist/providers/googlePlay/createGooglePlaySetupAdapter.d.ts.map +1 -0
  340. package/dist/providers/googlePlay/createGooglePlaySetupAdapter.js +32 -0
  341. package/dist/providers/googlePlay/createGooglePlaySetupAdapter.js.map +1 -0
  342. package/dist/providers/googlePlay/downloadAndroidArchive.d.ts +9 -0
  343. package/dist/providers/googlePlay/downloadAndroidArchive.d.ts.map +1 -0
  344. package/dist/providers/googlePlay/downloadAndroidArchive.js +28 -0
  345. package/dist/providers/googlePlay/downloadAndroidArchive.js.map +1 -0
  346. package/dist/providers/googlePlay/googlePlayUrls.d.ts +6 -0
  347. package/dist/providers/googlePlay/googlePlayUrls.d.ts.map +1 -0
  348. package/dist/providers/googlePlay/googlePlayUrls.js +18 -0
  349. package/dist/providers/googlePlay/googlePlayUrls.js.map +1 -0
  350. package/dist/providers/googlePlay/insertGooglePlayEdit.d.ts +7 -0
  351. package/dist/providers/googlePlay/insertGooglePlayEdit.d.ts.map +1 -0
  352. package/dist/providers/googlePlay/insertGooglePlayEdit.js +32 -0
  353. package/dist/providers/googlePlay/insertGooglePlayEdit.js.map +1 -0
  354. package/dist/providers/googlePlay/inspectGooglePlayTrack.d.ts +27 -0
  355. package/dist/providers/googlePlay/inspectGooglePlayTrack.d.ts.map +1 -0
  356. package/dist/providers/googlePlay/inspectGooglePlayTrack.js +80 -0
  357. package/dist/providers/googlePlay/inspectGooglePlayTrack.js.map +1 -0
  358. package/dist/providers/googlePlay/publishAndroidToGooglePlay.d.ts +32 -0
  359. package/dist/providers/googlePlay/publishAndroidToGooglePlay.d.ts.map +1 -0
  360. package/dist/providers/googlePlay/publishAndroidToGooglePlay.js +74 -0
  361. package/dist/providers/googlePlay/publishAndroidToGooglePlay.js.map +1 -0
  362. package/dist/providers/googlePlay/resolveGooglePlayAccessToken.d.ts +17 -0
  363. package/dist/providers/googlePlay/resolveGooglePlayAccessToken.d.ts.map +1 -0
  364. package/dist/providers/googlePlay/resolveGooglePlayAccessToken.js +62 -0
  365. package/dist/providers/googlePlay/resolveGooglePlayAccessToken.js.map +1 -0
  366. package/dist/providers/googlePlay/updateGooglePlayTrack.d.ts +12 -0
  367. package/dist/providers/googlePlay/updateGooglePlayTrack.d.ts.map +1 -0
  368. package/dist/providers/googlePlay/updateGooglePlayTrack.js +26 -0
  369. package/dist/providers/googlePlay/updateGooglePlayTrack.js.map +1 -0
  370. package/dist/providers/googlePlay/uploadGooglePlayBundle.d.ts +9 -0
  371. package/dist/providers/googlePlay/uploadGooglePlayBundle.d.ts.map +1 -0
  372. package/dist/providers/googlePlay/uploadGooglePlayBundle.js +34 -0
  373. package/dist/providers/googlePlay/uploadGooglePlayBundle.js.map +1 -0
  374. package/dist/providers/googlePlay/verifyGooglePlayPublication.d.ts +23 -0
  375. package/dist/providers/googlePlay/verifyGooglePlayPublication.d.ts.map +1 -0
  376. package/dist/providers/googlePlay/verifyGooglePlayPublication.js +31 -0
  377. package/dist/providers/googlePlay/verifyGooglePlayPublication.js.map +1 -0
  378. package/dist/targets/android/createAndroidDeploymentRevision.d.ts +3 -0
  379. package/dist/targets/android/createAndroidDeploymentRevision.d.ts.map +1 -0
  380. package/dist/targets/android/createAndroidDeploymentRevision.js +11 -0
  381. package/dist/targets/android/createAndroidDeploymentRevision.js.map +1 -0
  382. package/dist/targets/android/createAndroidTargetPlanContributor.d.ts +3 -0
  383. package/dist/targets/android/createAndroidTargetPlanContributor.d.ts.map +1 -0
  384. package/dist/targets/android/createAndroidTargetPlanContributor.js +26 -0
  385. package/dist/targets/android/createAndroidTargetPlanContributor.js.map +1 -0
  386. package/dist/targets/android/isAndroidDeploymentIntentValid.d.ts +3 -0
  387. package/dist/targets/android/isAndroidDeploymentIntentValid.d.ts.map +1 -0
  388. package/dist/targets/android/isAndroidDeploymentIntentValid.js +7 -0
  389. package/dist/targets/android/isAndroidDeploymentIntentValid.js.map +1 -0
  390. package/dist/targets/android/normalizeAndroidProviders.d.ts +16 -0
  391. package/dist/targets/android/normalizeAndroidProviders.d.ts.map +1 -0
  392. package/dist/targets/android/normalizeAndroidProviders.js +16 -0
  393. package/dist/targets/android/normalizeAndroidProviders.js.map +1 -0
  394. package/dist/targets/ios/createIosDeploymentRevision.d.ts +3 -0
  395. package/dist/targets/ios/createIosDeploymentRevision.d.ts.map +1 -0
  396. package/dist/targets/ios/createIosDeploymentRevision.js +10 -0
  397. package/dist/targets/ios/createIosDeploymentRevision.js.map +1 -0
  398. package/dist/targets/ios/createIosTargetPlanContributor.d.ts +3 -0
  399. package/dist/targets/ios/createIosTargetPlanContributor.d.ts.map +1 -0
  400. package/dist/targets/ios/createIosTargetPlanContributor.js +26 -0
  401. package/dist/targets/ios/createIosTargetPlanContributor.js.map +1 -0
  402. package/dist/targets/ios/isIosDeploymentIntentValid.d.ts +3 -0
  403. package/dist/targets/ios/isIosDeploymentIntentValid.d.ts.map +1 -0
  404. package/dist/targets/ios/isIosDeploymentIntentValid.js +4 -0
  405. package/dist/targets/ios/isIosDeploymentIntentValid.js.map +1 -0
  406. package/dist/targets/ios/normalizeIosProviders.d.ts +16 -0
  407. package/dist/targets/ios/normalizeIosProviders.d.ts.map +1 -0
  408. package/dist/targets/ios/normalizeIosProviders.js +16 -0
  409. package/dist/targets/ios/normalizeIosProviders.js.map +1 -0
  410. package/package.json +3 -2
  411. package/dist/providers/eas/createEasHostingSetupAdapter.d.ts +0 -7
  412. package/dist/providers/eas/createEasHostingSetupAdapter.d.ts.map +0 -1
  413. package/dist/providers/eas/createEasHostingSetupAdapter.js +0 -76
  414. package/dist/providers/eas/createEasHostingSetupAdapter.js.map +0 -1
@@ -0,0 +1,81 @@
1
+ export function parseBuildUploadFileReservation(value, fileSize) {
2
+ if (!isRecord(value) || !isRecord(value.data))
3
+ return null;
4
+ const { data } = value;
5
+ if (data.type !== 'buildUploadFiles' || !isNonEmptyString(data.id))
6
+ return null;
7
+ if (!isRecord(data.attributes) || data.attributes.uti !== 'com.apple.ipa')
8
+ return null;
9
+ if (!Array.isArray(data.attributes.uploadOperations))
10
+ return null;
11
+ const operations = data.attributes.uploadOperations.map(parseOperation);
12
+ if (operations.some((operation) => operation === null))
13
+ return null;
14
+ const valid = operations;
15
+ if (!rangesAreValid(valid, fileSize))
16
+ return null;
17
+ return { fileId: data.id, operations: valid };
18
+ }
19
+ function parseOperation(value) {
20
+ if (!isRecord(value))
21
+ return null;
22
+ if (!isSafeOffset(value.offset) || !isPositiveLength(value.length))
23
+ return null;
24
+ if (!isNonEmptyString(value.method) || !isHttpsUrl(value.url))
25
+ return null;
26
+ if (!Array.isArray(value.requestHeaders))
27
+ return null;
28
+ const headers = value.requestHeaders.map(parseHeader);
29
+ if (headers.some((header) => header === null))
30
+ return null;
31
+ return {
32
+ offset: value.offset,
33
+ length: value.length,
34
+ method: value.method,
35
+ url: value.url,
36
+ headers: headers,
37
+ };
38
+ }
39
+ function rangesAreValid(operations, fileSize) {
40
+ if (!Number.isSafeInteger(fileSize) || fileSize <= 0 || operations.length === 0)
41
+ return false;
42
+ const ranges = [...operations].sort((left, right) => left.offset - right.offset);
43
+ let expectedOffset = 0;
44
+ for (const operation of ranges) {
45
+ const end = operation.offset + operation.length;
46
+ if (!Number.isSafeInteger(end) || operation.offset !== expectedOffset || end > fileSize) {
47
+ return false;
48
+ }
49
+ expectedOffset = end;
50
+ }
51
+ return expectedOffset === fileSize;
52
+ }
53
+ function parseHeader(value) {
54
+ if (!isRecord(value) || !isNonEmptyString(value.name) || typeof value.value !== 'string') {
55
+ return null;
56
+ }
57
+ return { name: value.name, value: value.value };
58
+ }
59
+ function isSafeOffset(value) {
60
+ return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;
61
+ }
62
+ function isPositiveLength(value) {
63
+ return typeof value === 'number' && Number.isSafeInteger(value) && value > 0;
64
+ }
65
+ function isHttpsUrl(value) {
66
+ if (!isNonEmptyString(value))
67
+ return false;
68
+ try {
69
+ return new URL(value).protocol === 'https:';
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ }
75
+ function isRecord(value) {
76
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
77
+ }
78
+ function isNonEmptyString(value) {
79
+ return typeof value === 'string' && value.trim().length > 0;
80
+ }
81
+ //# sourceMappingURL=parseBuildUploadFileReservation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseBuildUploadFileReservation.js","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/parseBuildUploadFileReservation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BuildUploadFileReservation, BuildUploadOperation } from './BuildUploadOperation';\n\nexport function parseBuildUploadFileReservation(\n value: unknown,\n fileSize: number,\n): BuildUploadFileReservation | null {\n if (!isRecord(value) || !isRecord(value.data)) return null;\n const { data } = value;\n if (data.type !== 'buildUploadFiles' || !isNonEmptyString(data.id)) return null;\n if (!isRecord(data.attributes) || data.attributes.uti !== 'com.apple.ipa') return null;\n if (!Array.isArray(data.attributes.uploadOperations)) return null;\n const operations = data.attributes.uploadOperations.map(parseOperation);\n if (operations.some((operation) => operation === null)) return null;\n const valid = operations as BuildUploadOperation[];\n if (!rangesAreValid(valid, fileSize)) return null;\n return { fileId: data.id, operations: valid };\n}\n\nfunction parseOperation(value: unknown): BuildUploadOperation | null {\n if (!isRecord(value)) return null;\n if (!isSafeOffset(value.offset) || !isPositiveLength(value.length)) return null;\n if (!isNonEmptyString(value.method) || !isHttpsUrl(value.url)) return null;\n if (!Array.isArray(value.requestHeaders)) return null;\n const headers = value.requestHeaders.map(parseHeader);\n if (headers.some((header) => header === null)) return null;\n return {\n offset: value.offset,\n length: value.length,\n method: value.method,\n url: value.url,\n headers: headers as { readonly name: string; readonly value: string }[],\n };\n}\n\nfunction rangesAreValid(operations: readonly BuildUploadOperation[], fileSize: number): boolean {\n if (!Number.isSafeInteger(fileSize) || fileSize <= 0 || operations.length === 0) return false;\n const ranges = [...operations].sort((left, right) => left.offset - right.offset);\n let expectedOffset = 0;\n for (const operation of ranges) {\n const end = operation.offset + operation.length;\n if (!Number.isSafeInteger(end) || operation.offset !== expectedOffset || end > fileSize) {\n return false;\n }\n expectedOffset = end;\n }\n return expectedOffset === fileSize;\n}\n\nfunction parseHeader(value: unknown): { readonly name: string; readonly value: string } | null {\n if (!isRecord(value) || !isNonEmptyString(value.name) || typeof value.value !== 'string') {\n return null;\n }\n return { name: value.name, value: value.value };\n}\n\nfunction isSafeOffset(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;\n}\n\nfunction isPositiveLength(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value > 0;\n}\n\nfunction isHttpsUrl(value: unknown): value is string {\n if (!isNonEmptyString(value)) return false;\n try {\n return new URL(value).protocol === 'https:';\n } catch {\n return false;\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === 'string' && value.trim().length > 0;\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import type { AppStoreConnectTransport } from './AppStoreConnectTransport';
2
+ export declare function prepareAppStoreVersion(options: {
3
+ readonly appId: string;
4
+ readonly version: string;
5
+ readonly token: string;
6
+ readonly request: AppStoreConnectTransport;
7
+ }): Promise<string | null>;
8
+ //# sourceMappingURL=prepareAppStoreVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareAppStoreVersion.d.ts","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/prepareAppStoreVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAM3E,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;CAC5C,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBzB"}
@@ -0,0 +1,66 @@
1
+ import { appStoreConnectAppStoreVersionsUrl, appStoreConnectVersionsUrl, } from './appStoreConnectUrls';
2
+ export async function prepareAppStoreVersion(options) {
3
+ const existing = await findVersion(options);
4
+ if (existing !== undefined)
5
+ return existing;
6
+ const body = JSON.stringify({
7
+ data: {
8
+ type: 'appStoreVersions',
9
+ attributes: { platform: 'IOS', versionString: options.version, releaseType: 'MANUAL' },
10
+ relationships: { app: { data: { type: 'apps', id: options.appId } } },
11
+ },
12
+ });
13
+ const response = await options.request({
14
+ method: 'POST',
15
+ url: appStoreConnectAppStoreVersionsUrl(),
16
+ token: options.token,
17
+ body,
18
+ });
19
+ return response.status === 201 ? parseCreatedVersion(response.body, options.version) : null;
20
+ }
21
+ async function findVersion(options) {
22
+ const response = await options.request({
23
+ method: 'GET',
24
+ url: appStoreConnectVersionsUrl(options.appId),
25
+ token: options.token,
26
+ });
27
+ if (response.status < 200 || response.status >= 300)
28
+ return null;
29
+ try {
30
+ const value = JSON.parse(response.body);
31
+ if (!isRecord(value) || !Array.isArray(value.data))
32
+ return null;
33
+ const matches = value.data.filter((item) => isVersion(item, options.version));
34
+ if (matches.length === 0)
35
+ return undefined;
36
+ if (matches.length !== 1 || !isRecord(matches[0]) || !isNonEmptyString(matches[0].id))
37
+ return null;
38
+ return matches[0].id;
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ }
44
+ function parseCreatedVersion(body, expectedVersion) {
45
+ try {
46
+ const value = JSON.parse(body);
47
+ if (!isRecord(value) || !isRecord(value.data) || !isVersion(value.data, expectedVersion))
48
+ return null;
49
+ return isNonEmptyString(value.data.id) ? value.data.id : null;
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }
55
+ function isVersion(value, expectedVersion) {
56
+ if (!isRecord(value) || value.type !== 'appStoreVersions' || !isRecord(value.attributes))
57
+ return false;
58
+ return value.attributes.platform === 'IOS' && value.attributes.versionString === expectedVersion;
59
+ }
60
+ function isRecord(value) {
61
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
62
+ }
63
+ function isNonEmptyString(value) {
64
+ return typeof value === 'string' && value.trim().length > 0;
65
+ }
66
+ //# sourceMappingURL=prepareAppStoreVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareAppStoreVersion.js","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/prepareAppStoreVersion.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AppStoreConnectTransport } from './AppStoreConnectTransport';\nimport {\n appStoreConnectAppStoreVersionsUrl,\n appStoreConnectVersionsUrl,\n} from './appStoreConnectUrls';\n\nexport async function prepareAppStoreVersion(options: {\n readonly appId: string;\n readonly version: string;\n readonly token: string;\n readonly request: AppStoreConnectTransport;\n}): Promise<string | null> {\n const existing = await findVersion(options);\n if (existing !== undefined) return existing;\n const body = JSON.stringify({\n data: {\n type: 'appStoreVersions',\n attributes: { platform: 'IOS', versionString: options.version, releaseType: 'MANUAL' },\n relationships: { app: { data: { type: 'apps', id: options.appId } } },\n },\n });\n const response = await options.request({\n method: 'POST',\n url: appStoreConnectAppStoreVersionsUrl(),\n token: options.token,\n body,\n });\n return response.status === 201 ? parseCreatedVersion(response.body, options.version) : null;\n}\n\nasync function findVersion(options: {\n readonly appId: string;\n readonly version: string;\n readonly token: string;\n readonly request: AppStoreConnectTransport;\n}): Promise<string | null | undefined> {\n const response = await options.request({\n method: 'GET',\n url: appStoreConnectVersionsUrl(options.appId),\n token: options.token,\n });\n if (response.status < 200 || response.status >= 300) return null;\n try {\n const value = JSON.parse(response.body) as unknown;\n if (!isRecord(value) || !Array.isArray(value.data)) return null;\n const matches = value.data.filter((item) => isVersion(item, options.version));\n if (matches.length === 0) return undefined;\n if (matches.length !== 1 || !isRecord(matches[0]) || !isNonEmptyString(matches[0].id))\n return null;\n return matches[0].id;\n } catch {\n return null;\n }\n}\n\nfunction parseCreatedVersion(body: string, expectedVersion: string): string | null {\n try {\n const value = JSON.parse(body) as unknown;\n if (!isRecord(value) || !isRecord(value.data) || !isVersion(value.data, expectedVersion))\n return null;\n return isNonEmptyString(value.data.id) ? value.data.id : null;\n } catch {\n return null;\n }\n}\n\nfunction isVersion(value: unknown, expectedVersion: string): boolean {\n if (!isRecord(value) || value.type !== 'appStoreVersions' || !isRecord(value.attributes))\n return false;\n return value.attributes.platform === 'IOS' && value.attributes.versionString === expectedVersion;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === 'string' && value.trim().length > 0;\n}\n"]}
@@ -0,0 +1,21 @@
1
+ import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';
2
+ import type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';
3
+ import type { AppStoreConnectPublicationResult } from './AppStoreConnectPublicationResult';
4
+ import type { AppStoreConnectTokenFactory } from './AppStoreConnectTokenFactory';
5
+ import type { AppStoreConnectTransport } from './AppStoreConnectTransport';
6
+ import type { AppStoreUploadTransport } from './AppStoreUploadTransport';
7
+ export declare function publishIosToAppStoreConnect(options: {
8
+ readonly appId: string;
9
+ readonly version: string;
10
+ readonly buildNumber: string;
11
+ readonly file: Buffer;
12
+ readonly credentials: readonly DeploymentCredentialReference[];
13
+ readonly resolveSecret: DeploymentSecretResolver;
14
+ readonly createToken: AppStoreConnectTokenFactory;
15
+ readonly request: AppStoreConnectTransport;
16
+ readonly upload: AppStoreUploadTransport;
17
+ readonly wait: () => Promise<void>;
18
+ readonly maxAttempts: number;
19
+ readonly now: Date;
20
+ }): Promise<AppStoreConnectPublicationResult>;
21
+ //# sourceMappingURL=publishIosToAppStoreConnect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishIosToAppStoreConnect.d.ts","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/publishIosToAppStoreConnect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AAE3F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAUzE,wBAAsB,2BAA2B,CAAC,OAAO,EAAE;IACzD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC/D,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;CACpB,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAiC5C"}
@@ -0,0 +1,124 @@
1
+ import { trackAppStoreConnectRequests } from './AppStoreConnectRequestTracker';
2
+ import { attachAppStoreVersionBuild } from './attachAppStoreVersionBuild';
3
+ import { commitAppStoreBuildUploadFile } from './commitAppStoreBuildUploadFile';
4
+ import { createAppStoreBuildUpload } from './createAppStoreBuildUpload';
5
+ import { executeBuildUploadOperations } from './executeBuildUploadOperations';
6
+ import { prepareAppStoreVersion } from './prepareAppStoreVersion';
7
+ import { reserveAppStoreBuildUploadFile } from './reserveAppStoreBuildUploadFile';
8
+ import { resolveAppStoreConnectToken } from './resolveAppStoreConnectToken';
9
+ import { waitForAppStoreBuildUpload } from './waitForAppStoreBuildUpload';
10
+ export async function publishIosToAppStoreConnect(options) {
11
+ const access = await resolveAppStoreConnectToken(options);
12
+ if (!access.ok)
13
+ return { status: 'action-required', action: access.action };
14
+ const tracked = trackAppStoreConnectRequests(options.request);
15
+ const buildUploadId = await createAppStoreBuildUpload({
16
+ ...options,
17
+ token: access.token,
18
+ request: tracked.request,
19
+ });
20
+ if (buildUploadId === null)
21
+ return providerFailure(tracked.blockingStatus(), 'APP_STORE_BUILD_UPLOAD_CREATE_FAILED');
22
+ const reservation = await reserveAppStoreBuildUploadFile({
23
+ buildUploadId,
24
+ fileSize: options.file.length,
25
+ token: access.token,
26
+ request: tracked.request,
27
+ });
28
+ if (reservation === null)
29
+ return providerFailure(tracked.blockingStatus(), 'APP_STORE_BUILD_UPLOAD_FILE_FAILED');
30
+ const uploaded = await executeBuildUploadOperations({
31
+ file: options.file,
32
+ operations: reservation.operations,
33
+ upload: options.upload,
34
+ });
35
+ if (!uploaded)
36
+ return failure('APP_STORE_BUILD_UPLOAD_TRANSFER_FAILED');
37
+ const committed = await commitAppStoreBuildUploadFile({
38
+ fileId: reservation.fileId,
39
+ token: access.token,
40
+ request: tracked.request,
41
+ });
42
+ if (!committed)
43
+ return providerFailure(tracked.blockingStatus(), 'APP_STORE_BUILD_UPLOAD_COMMIT_FAILED');
44
+ return finishPublication(options, access.token, buildUploadId, tracked);
45
+ }
46
+ async function finishPublication(options, token, buildUploadId, tracked) {
47
+ const build = await waitForAppStoreBuildUpload({
48
+ buildUploadId,
49
+ expectedBuildNumber: options.buildNumber,
50
+ token,
51
+ request: tracked.request,
52
+ wait: options.wait,
53
+ maxAttempts: options.maxAttempts,
54
+ });
55
+ if (build === null)
56
+ return providerFailure(tracked.blockingStatus(), 'APP_STORE_BUILD_PROCESSING_FAILED');
57
+ const versionId = await prepareAppStoreVersion({
58
+ ...options,
59
+ token,
60
+ request: tracked.request,
61
+ });
62
+ if (versionId === null)
63
+ return providerFailure(tracked.blockingStatus(), 'APP_STORE_VERSION_PREPARATION_FAILED');
64
+ const attached = await attachAppStoreVersionBuild({
65
+ versionId,
66
+ buildId: build.buildId,
67
+ token,
68
+ request: tracked.request,
69
+ });
70
+ if (!attached)
71
+ return providerFailure(tracked.blockingStatus(), 'APP_STORE_VERSION_BUILD_ATTACH_FAILED');
72
+ return {
73
+ status: 'completed',
74
+ publication: {
75
+ buildId: build.buildId,
76
+ versionId,
77
+ buildNumber: options.buildNumber,
78
+ version: options.version,
79
+ },
80
+ };
81
+ }
82
+ function providerFailure(status, code) {
83
+ if (status === 401)
84
+ return authenticationRequired();
85
+ if (status === 403)
86
+ return permissionRequired();
87
+ return failure(code);
88
+ }
89
+ function authenticationRequired() {
90
+ return {
91
+ status: 'action-required',
92
+ action: {
93
+ type: 'authentication',
94
+ provider: 'app-store-connect',
95
+ target: 'ios',
96
+ code: 'APP_STORE_CONNECT_AUTHENTICATION_REQUIRED',
97
+ message: 'App Store Connect API-key authentication is required for iOS deployment.',
98
+ },
99
+ };
100
+ }
101
+ function permissionRequired() {
102
+ return {
103
+ status: 'action-required',
104
+ action: {
105
+ type: 'manual-action',
106
+ target: 'ios',
107
+ provider: 'app-store-connect',
108
+ code: 'APP_STORE_CONNECT_PERMISSION_REQUIRED',
109
+ message: 'The App Store Connect team API key needs permission for iOS deployment.',
110
+ },
111
+ };
112
+ }
113
+ function failure(code) {
114
+ return {
115
+ status: 'failed',
116
+ failure: {
117
+ code,
118
+ message: 'App Store Connect iOS publication failed.',
119
+ target: 'ios',
120
+ provider: 'app-store-connect',
121
+ },
122
+ };
123
+ }
124
+ //# sourceMappingURL=publishIosToAppStoreConnect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishIosToAppStoreConnect.js","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/publishIosToAppStoreConnect.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';\nimport type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';\nimport type { AppStoreConnectPublicationResult } from './AppStoreConnectPublicationResult';\nimport { trackAppStoreConnectRequests } from './AppStoreConnectRequestTracker';\nimport type { AppStoreConnectTokenFactory } from './AppStoreConnectTokenFactory';\nimport type { AppStoreConnectTransport } from './AppStoreConnectTransport';\nimport type { AppStoreUploadTransport } from './AppStoreUploadTransport';\nimport { attachAppStoreVersionBuild } from './attachAppStoreVersionBuild';\nimport { commitAppStoreBuildUploadFile } from './commitAppStoreBuildUploadFile';\nimport { createAppStoreBuildUpload } from './createAppStoreBuildUpload';\nimport { executeBuildUploadOperations } from './executeBuildUploadOperations';\nimport { prepareAppStoreVersion } from './prepareAppStoreVersion';\nimport { reserveAppStoreBuildUploadFile } from './reserveAppStoreBuildUploadFile';\nimport { resolveAppStoreConnectToken } from './resolveAppStoreConnectToken';\nimport { waitForAppStoreBuildUpload } from './waitForAppStoreBuildUpload';\n\nexport async function publishIosToAppStoreConnect(options: {\n readonly appId: string;\n readonly version: string;\n readonly buildNumber: string;\n readonly file: Buffer;\n readonly credentials: readonly DeploymentCredentialReference[];\n readonly resolveSecret: DeploymentSecretResolver;\n readonly createToken: AppStoreConnectTokenFactory;\n readonly request: AppStoreConnectTransport;\n readonly upload: AppStoreUploadTransport;\n readonly wait: () => Promise<void>;\n readonly maxAttempts: number;\n readonly now: Date;\n}): Promise<AppStoreConnectPublicationResult> {\n const access = await resolveAppStoreConnectToken(options);\n if (!access.ok) return { status: 'action-required', action: access.action };\n const tracked = trackAppStoreConnectRequests(options.request);\n const buildUploadId = await createAppStoreBuildUpload({\n ...options,\n token: access.token,\n request: tracked.request,\n });\n if (buildUploadId === null)\n return providerFailure(tracked.blockingStatus(), 'APP_STORE_BUILD_UPLOAD_CREATE_FAILED');\n const reservation = await reserveAppStoreBuildUploadFile({\n buildUploadId,\n fileSize: options.file.length,\n token: access.token,\n request: tracked.request,\n });\n if (reservation === null)\n return providerFailure(tracked.blockingStatus(), 'APP_STORE_BUILD_UPLOAD_FILE_FAILED');\n const uploaded = await executeBuildUploadOperations({\n file: options.file,\n operations: reservation.operations,\n upload: options.upload,\n });\n if (!uploaded) return failure('APP_STORE_BUILD_UPLOAD_TRANSFER_FAILED');\n const committed = await commitAppStoreBuildUploadFile({\n fileId: reservation.fileId,\n token: access.token,\n request: tracked.request,\n });\n if (!committed)\n return providerFailure(tracked.blockingStatus(), 'APP_STORE_BUILD_UPLOAD_COMMIT_FAILED');\n return finishPublication(options, access.token, buildUploadId, tracked);\n}\n\nasync function finishPublication(\n options: Parameters<typeof publishIosToAppStoreConnect>[0],\n token: string,\n buildUploadId: string,\n tracked: ReturnType<typeof trackAppStoreConnectRequests>,\n): Promise<AppStoreConnectPublicationResult> {\n const build = await waitForAppStoreBuildUpload({\n buildUploadId,\n expectedBuildNumber: options.buildNumber,\n token,\n request: tracked.request,\n wait: options.wait,\n maxAttempts: options.maxAttempts,\n });\n if (build === null)\n return providerFailure(tracked.blockingStatus(), 'APP_STORE_BUILD_PROCESSING_FAILED');\n const versionId = await prepareAppStoreVersion({\n ...options,\n token,\n request: tracked.request,\n });\n if (versionId === null)\n return providerFailure(tracked.blockingStatus(), 'APP_STORE_VERSION_PREPARATION_FAILED');\n const attached = await attachAppStoreVersionBuild({\n versionId,\n buildId: build.buildId,\n token,\n request: tracked.request,\n });\n if (!attached)\n return providerFailure(tracked.blockingStatus(), 'APP_STORE_VERSION_BUILD_ATTACH_FAILED');\n return {\n status: 'completed',\n publication: {\n buildId: build.buildId,\n versionId,\n buildNumber: options.buildNumber,\n version: options.version,\n },\n };\n}\n\nfunction providerFailure(\n status: ReturnType<ReturnType<typeof trackAppStoreConnectRequests>['blockingStatus']>,\n code: string,\n): AppStoreConnectPublicationResult {\n if (status === 401) return authenticationRequired();\n if (status === 403) return permissionRequired();\n return failure(code);\n}\n\nfunction authenticationRequired(): AppStoreConnectPublicationResult {\n return {\n status: 'action-required',\n action: {\n type: 'authentication',\n provider: 'app-store-connect',\n target: 'ios',\n code: 'APP_STORE_CONNECT_AUTHENTICATION_REQUIRED',\n message: 'App Store Connect API-key authentication is required for iOS deployment.',\n },\n };\n}\n\nfunction permissionRequired(): AppStoreConnectPublicationResult {\n return {\n status: 'action-required',\n action: {\n type: 'manual-action',\n target: 'ios',\n provider: 'app-store-connect',\n code: 'APP_STORE_CONNECT_PERMISSION_REQUIRED',\n message: 'The App Store Connect team API key needs permission for iOS deployment.',\n },\n };\n}\n\nfunction failure(code: string): AppStoreConnectPublicationResult {\n return {\n status: 'failed',\n failure: {\n code,\n message: 'App Store Connect iOS publication failed.',\n target: 'ios',\n provider: 'app-store-connect',\n },\n };\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { AppStoreConnectTransport } from './AppStoreConnectTransport';
2
+ import type { BuildUploadFileReservation } from './BuildUploadOperation';
3
+ export declare function reserveAppStoreBuildUploadFile(options: {
4
+ readonly buildUploadId: string;
5
+ readonly fileSize: number;
6
+ readonly token: string;
7
+ readonly request: AppStoreConnectTransport;
8
+ }): Promise<BuildUploadFileReservation | null>;
9
+ //# sourceMappingURL=reserveAppStoreBuildUploadFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reserveAppStoreBuildUploadFile.d.ts","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/reserveAppStoreBuildUploadFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE3E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAGzE,wBAAsB,8BAA8B,CAAC,OAAO,EAAE;IAC5D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;CAC5C,GAAG,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CA0B7C"}
@@ -0,0 +1,32 @@
1
+ import { appStoreConnectBuildUploadFilesUrl } from './appStoreConnectUrls';
2
+ import { parseBuildUploadFileReservation } from './parseBuildUploadFileReservation';
3
+ export async function reserveAppStoreBuildUploadFile(options) {
4
+ const body = JSON.stringify({
5
+ data: {
6
+ type: 'buildUploadFiles',
7
+ attributes: {
8
+ assetType: 'ASSET',
9
+ fileName: 'application.ipa',
10
+ fileSize: options.fileSize,
11
+ },
12
+ relationships: {
13
+ buildUpload: { data: { type: 'buildUploads', id: options.buildUploadId } },
14
+ },
15
+ },
16
+ });
17
+ const response = await options.request({
18
+ method: 'POST',
19
+ url: appStoreConnectBuildUploadFilesUrl(),
20
+ token: options.token,
21
+ body,
22
+ });
23
+ if (response.status !== 201)
24
+ return null;
25
+ try {
26
+ return parseBuildUploadFileReservation(JSON.parse(response.body), options.fileSize);
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ //# sourceMappingURL=reserveAppStoreBuildUploadFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reserveAppStoreBuildUploadFile.js","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/reserveAppStoreBuildUploadFile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,MAAM,uBAAuB,CAAC;AAE3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAEpF,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,OAKpD;IACC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,IAAI,EAAE;YACJ,IAAI,EAAE,kBAAkB;YACxB,UAAU,EAAE;gBACV,SAAS,EAAE,OAAO;gBAClB,QAAQ,EAAE,iBAAiB;gBAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B;YACD,aAAa,EAAE;gBACb,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,CAAC,aAAa,EAAE,EAAE;aAC3E;SACF;KACF,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;QACrC,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,kCAAkC,EAAE;QACzC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI;KACL,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC","sourcesContent":["import type { AppStoreConnectTransport } from './AppStoreConnectTransport';\nimport { appStoreConnectBuildUploadFilesUrl } from './appStoreConnectUrls';\nimport type { BuildUploadFileReservation } from './BuildUploadOperation';\nimport { parseBuildUploadFileReservation } from './parseBuildUploadFileReservation';\n\nexport async function reserveAppStoreBuildUploadFile(options: {\n readonly buildUploadId: string;\n readonly fileSize: number;\n readonly token: string;\n readonly request: AppStoreConnectTransport;\n}): Promise<BuildUploadFileReservation | null> {\n const body = JSON.stringify({\n data: {\n type: 'buildUploadFiles',\n attributes: {\n assetType: 'ASSET',\n fileName: 'application.ipa',\n fileSize: options.fileSize,\n },\n relationships: {\n buildUpload: { data: { type: 'buildUploads', id: options.buildUploadId } },\n },\n },\n });\n const response = await options.request({\n method: 'POST',\n url: appStoreConnectBuildUploadFilesUrl(),\n token: options.token,\n body,\n });\n if (response.status !== 201) return null;\n try {\n return parseBuildUploadFileReservation(JSON.parse(response.body) as unknown, options.fileSize);\n } catch {\n return null;\n }\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';
2
+ import type { DeploymentAuthenticationRequiredAction } from '../../domain/DeploymentRequiredAction';
3
+ import type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';
4
+ import type { AppStoreConnectTokenFactory } from './AppStoreConnectTokenFactory';
5
+ export type AppStoreConnectTokenResult = {
6
+ readonly ok: true;
7
+ readonly token: string;
8
+ } | {
9
+ readonly ok: false;
10
+ readonly action: DeploymentAuthenticationRequiredAction;
11
+ };
12
+ export declare function resolveAppStoreConnectToken(options: {
13
+ readonly credentials: readonly DeploymentCredentialReference[];
14
+ readonly resolveSecret: DeploymentSecretResolver;
15
+ readonly createToken: AppStoreConnectTokenFactory;
16
+ readonly now: Date;
17
+ }): Promise<AppStoreConnectTokenResult>;
18
+ //# sourceMappingURL=resolveAppStoreConnectToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveAppStoreConnectToken.d.ts","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/resolveAppStoreConnectToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,uCAAuC,CAAC;AACpG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAEV,2BAA2B,EAC5B,MAAM,+BAA+B,CAAC;AAEvC,MAAM,MAAM,0BAA0B,GAClC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,sCAAsC,CAAA;CAAE,CAAC;AAEpF,wBAAsB,2BAA2B,CAAC,OAAO,EAAE;IACzD,QAAQ,CAAC,WAAW,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC/D,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAAC;IAClD,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;CACpB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAUtC"}
@@ -0,0 +1,64 @@
1
+ export async function resolveAppStoreConnectToken(options) {
2
+ const reference = options.credentials.find((credential) => credential.provider === 'app-store-connect' && credential.kind === 'api-key');
3
+ if (reference === undefined)
4
+ return requiredAction();
5
+ const secret = await safelyResolve(options.resolveSecret, reference);
6
+ const parsed = parseApiKey(secret);
7
+ if (parsed === null)
8
+ return requiredAction();
9
+ const token = await safelyCreateToken(options.createToken, parsed, options.now);
10
+ return token === null ? requiredAction() : { ok: true, token };
11
+ }
12
+ function parseApiKey(value) {
13
+ if (value === null)
14
+ return null;
15
+ let parsed;
16
+ try {
17
+ parsed = JSON.parse(value);
18
+ }
19
+ catch {
20
+ return null;
21
+ }
22
+ if (!isRecord(parsed))
23
+ return null;
24
+ if (!isNonEmptyString(parsed.keyId) || !isNonEmptyString(parsed.issuerId))
25
+ return null;
26
+ if (!isNonEmptyString(parsed.privateKey))
27
+ return null;
28
+ return { keyId: parsed.keyId, issuerId: parsed.issuerId, privateKey: parsed.privateKey };
29
+ }
30
+ async function safelyResolve(resolveSecret, reference) {
31
+ try {
32
+ return await resolveSecret(reference);
33
+ }
34
+ catch {
35
+ return null;
36
+ }
37
+ }
38
+ async function safelyCreateToken(createToken, credentials, now) {
39
+ try {
40
+ return await createToken(credentials, now);
41
+ }
42
+ catch {
43
+ return null;
44
+ }
45
+ }
46
+ function requiredAction() {
47
+ return {
48
+ ok: false,
49
+ action: {
50
+ type: 'authentication',
51
+ provider: 'app-store-connect',
52
+ target: 'ios',
53
+ code: 'APP_STORE_CONNECT_AUTHENTICATION_REQUIRED',
54
+ message: 'App Store Connect API-key authentication is required for iOS deployment.',
55
+ },
56
+ };
57
+ }
58
+ function isRecord(value) {
59
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
60
+ }
61
+ function isNonEmptyString(value) {
62
+ return typeof value === 'string' && value.trim().length > 0;
63
+ }
64
+ //# sourceMappingURL=resolveAppStoreConnectToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveAppStoreConnectToken.js","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/resolveAppStoreConnectToken.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,OAKjD;IACC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CACxC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,mBAAmB,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,CAC7F,CAAC;IACF,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,cAAc,EAAE,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,cAAc,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAChF,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,WAAW,CAAC,KAAoB;IACvC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACvF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;AAC3F,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,aAAuC,EACvC,SAAwC;IAExC,IAAI,CAAC;QACH,OAAO,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,WAAwC,EACxC,WAA6C,EAC7C,GAAS;IAET,IAAI,CAAC;QACH,OAAO,MAAM,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,OAAO;QACL,EAAE,EAAE,KAAK;QACT,MAAM,EAAE;YACN,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,mBAAmB;YAC7B,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,2CAA2C;YACjD,OAAO,EAAE,0EAA0E;SACpF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';\nimport type { DeploymentAuthenticationRequiredAction } from '../../domain/DeploymentRequiredAction';\nimport type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';\nimport type {\n AppStoreConnectApiKeyCredentials,\n AppStoreConnectTokenFactory,\n} from './AppStoreConnectTokenFactory';\n\nexport type AppStoreConnectTokenResult =\n | { readonly ok: true; readonly token: string }\n | { readonly ok: false; readonly action: DeploymentAuthenticationRequiredAction };\n\nexport async function resolveAppStoreConnectToken(options: {\n readonly credentials: readonly DeploymentCredentialReference[];\n readonly resolveSecret: DeploymentSecretResolver;\n readonly createToken: AppStoreConnectTokenFactory;\n readonly now: Date;\n}): Promise<AppStoreConnectTokenResult> {\n const reference = options.credentials.find(\n (credential) => credential.provider === 'app-store-connect' && credential.kind === 'api-key',\n );\n if (reference === undefined) return requiredAction();\n const secret = await safelyResolve(options.resolveSecret, reference);\n const parsed = parseApiKey(secret);\n if (parsed === null) return requiredAction();\n const token = await safelyCreateToken(options.createToken, parsed, options.now);\n return token === null ? requiredAction() : { ok: true, token };\n}\n\nfunction parseApiKey(value: string | null): AppStoreConnectApiKeyCredentials | null {\n if (value === null) return null;\n let parsed: unknown;\n try {\n parsed = JSON.parse(value);\n } catch {\n return null;\n }\n if (!isRecord(parsed)) return null;\n if (!isNonEmptyString(parsed.keyId) || !isNonEmptyString(parsed.issuerId)) return null;\n if (!isNonEmptyString(parsed.privateKey)) return null;\n return { keyId: parsed.keyId, issuerId: parsed.issuerId, privateKey: parsed.privateKey };\n}\n\nasync function safelyResolve(\n resolveSecret: DeploymentSecretResolver,\n reference: DeploymentCredentialReference,\n): Promise<string | null> {\n try {\n return await resolveSecret(reference);\n } catch {\n return null;\n }\n}\n\nasync function safelyCreateToken(\n createToken: AppStoreConnectTokenFactory,\n credentials: AppStoreConnectApiKeyCredentials,\n now: Date,\n): Promise<string | null> {\n try {\n return await createToken(credentials, now);\n } catch {\n return null;\n }\n}\n\nfunction requiredAction(): AppStoreConnectTokenResult {\n return {\n ok: false,\n action: {\n type: 'authentication',\n provider: 'app-store-connect',\n target: 'ios',\n code: 'APP_STORE_CONNECT_AUTHENTICATION_REQUIRED',\n message: 'App Store Connect API-key authentication is required for iOS deployment.',\n },\n };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === 'string' && value.trim().length > 0;\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';
2
+ import type { DeploymentRequiredAction } from '../../domain/DeploymentRequiredAction';
3
+ import type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';
4
+ import type { DeploymentVerificationResult } from '../../domain/DeploymentVerificationResult';
5
+ import type { AppStoreConnectPublication } from './AppStoreConnectPublicationResult';
6
+ import type { AppStoreConnectTokenFactory } from './AppStoreConnectTokenFactory';
7
+ import type { AppStoreConnectTransport } from './AppStoreConnectTransport';
8
+ export type AppStoreConnectVerificationResult = {
9
+ readonly status: 'completed';
10
+ readonly verification: DeploymentVerificationResult;
11
+ } | {
12
+ readonly status: 'action-required';
13
+ readonly action: DeploymentRequiredAction;
14
+ };
15
+ export declare function verifyAppStoreConnectPublication(options: {
16
+ readonly publication: AppStoreConnectPublication;
17
+ readonly credentials: readonly DeploymentCredentialReference[];
18
+ readonly resolveSecret: DeploymentSecretResolver;
19
+ readonly createToken: AppStoreConnectTokenFactory;
20
+ readonly request: AppStoreConnectTransport;
21
+ readonly now: Date;
22
+ }): Promise<AppStoreConnectVerificationResult>;
23
+ //# sourceMappingURL=verifyAppStoreConnectPublication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifyAppStoreConnectPublication.d.ts","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/verifyAppStoreConnectPublication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AAC9F,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAErF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAI3E,MAAM,MAAM,iCAAiC,GACzC;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,4BAA4B,CAAA;CAAE,GACrF;IAAE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAEtF,wBAAsB,gCAAgC,CAAC,OAAO,EAAE;IAC9D,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC/D,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;CACpB,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAe7C"}
@@ -0,0 +1,60 @@
1
+ import { trackAppStoreConnectRequests } from './AppStoreConnectRequestTracker';
2
+ import { resolveAppStoreConnectToken } from './resolveAppStoreConnectToken';
3
+ import { verifyAppStoreVersionBuild } from './verifyAppStoreVersionBuild';
4
+ export async function verifyAppStoreConnectPublication(options) {
5
+ const access = await resolveAppStoreConnectToken(options);
6
+ if (!access.ok)
7
+ return { status: 'action-required', action: access.action };
8
+ const tracked = trackAppStoreConnectRequests(options.request);
9
+ const verified = await verifyAppStoreVersionBuild({
10
+ versionId: options.publication.versionId,
11
+ buildId: options.publication.buildId,
12
+ buildNumber: options.publication.buildNumber,
13
+ token: access.token,
14
+ request: tracked.request,
15
+ });
16
+ const status = tracked.blockingStatus();
17
+ if (status === 401)
18
+ return authenticationRequired();
19
+ if (status === 403)
20
+ return permissionRequired();
21
+ return { status: 'completed', verification: verified ? { ok: true } : failed() };
22
+ }
23
+ function authenticationRequired() {
24
+ return {
25
+ status: 'action-required',
26
+ action: {
27
+ type: 'authentication',
28
+ provider: 'app-store-connect',
29
+ target: 'ios',
30
+ code: 'APP_STORE_CONNECT_AUTHENTICATION_REQUIRED',
31
+ message: 'App Store Connect API-key authentication is required for iOS deployment.',
32
+ },
33
+ };
34
+ }
35
+ function permissionRequired() {
36
+ return {
37
+ status: 'action-required',
38
+ action: {
39
+ type: 'manual-action',
40
+ target: 'ios',
41
+ provider: 'app-store-connect',
42
+ code: 'APP_STORE_CONNECT_PERMISSION_REQUIRED',
43
+ message: 'The App Store Connect team API key needs permission for iOS deployment.',
44
+ },
45
+ };
46
+ }
47
+ function failed() {
48
+ return {
49
+ ok: false,
50
+ issues: [
51
+ {
52
+ code: 'APP_STORE_VERSION_BUILD_NOT_ATTACHED',
53
+ message: 'The processed iOS build is not attached to the expected App Store version.',
54
+ target: 'ios',
55
+ provider: 'app-store-connect',
56
+ },
57
+ ],
58
+ };
59
+ }
60
+ //# sourceMappingURL=verifyAppStoreConnectPublication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifyAppStoreConnectPublication.js","sourceRoot":"","sources":["../../../src/providers/appStoreConnect/verifyAppStoreConnectPublication.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAG/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAM1E,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,OAOtD;IACC,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC5E,MAAM,OAAO,GAAG,4BAA4B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC;QAChD,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS;QACxC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO;QACpC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,WAAW;QAC5C,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxC,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,sBAAsB,EAAE,CAAC;IACpD,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,kBAAkB,EAAE,CAAC;IAChD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,sBAAsB;IAC7B,OAAO;QACL,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE;YACN,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,mBAAmB;YAC7B,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,2CAA2C;YACjD,OAAO,EAAE,0EAA0E;SACpF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO;QACL,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE;YACN,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,mBAAmB;YAC7B,IAAI,EAAE,uCAAuC;YAC7C,OAAO,EAAE,yEAAyE;SACnF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,MAAM;IACb,OAAO;QACL,EAAE,EAAE,KAAK;QACT,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,sCAAsC;gBAC5C,OAAO,EAAE,4EAA4E;gBACrF,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,mBAAmB;aAC9B;SACF;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { DeploymentCredentialReference } from '../../domain/DeploymentCredentialReference';\nimport type { DeploymentRequiredAction } from '../../domain/DeploymentRequiredAction';\nimport type { DeploymentSecretResolver } from '../../domain/DeploymentSecretResolver';\nimport type { DeploymentVerificationResult } from '../../domain/DeploymentVerificationResult';\nimport type { AppStoreConnectPublication } from './AppStoreConnectPublicationResult';\nimport { trackAppStoreConnectRequests } from './AppStoreConnectRequestTracker';\nimport type { AppStoreConnectTokenFactory } from './AppStoreConnectTokenFactory';\nimport type { AppStoreConnectTransport } from './AppStoreConnectTransport';\nimport { resolveAppStoreConnectToken } from './resolveAppStoreConnectToken';\nimport { verifyAppStoreVersionBuild } from './verifyAppStoreVersionBuild';\n\nexport type AppStoreConnectVerificationResult =\n | { readonly status: 'completed'; readonly verification: DeploymentVerificationResult }\n | { readonly status: 'action-required'; readonly action: DeploymentRequiredAction };\n\nexport async function verifyAppStoreConnectPublication(options: {\n readonly publication: AppStoreConnectPublication;\n readonly credentials: readonly DeploymentCredentialReference[];\n readonly resolveSecret: DeploymentSecretResolver;\n readonly createToken: AppStoreConnectTokenFactory;\n readonly request: AppStoreConnectTransport;\n readonly now: Date;\n}): Promise<AppStoreConnectVerificationResult> {\n const access = await resolveAppStoreConnectToken(options);\n if (!access.ok) return { status: 'action-required', action: access.action };\n const tracked = trackAppStoreConnectRequests(options.request);\n const verified = await verifyAppStoreVersionBuild({\n versionId: options.publication.versionId,\n buildId: options.publication.buildId,\n buildNumber: options.publication.buildNumber,\n token: access.token,\n request: tracked.request,\n });\n const status = tracked.blockingStatus();\n if (status === 401) return authenticationRequired();\n if (status === 403) return permissionRequired();\n return { status: 'completed', verification: verified ? { ok: true } : failed() };\n}\n\nfunction authenticationRequired(): AppStoreConnectVerificationResult {\n return {\n status: 'action-required',\n action: {\n type: 'authentication',\n provider: 'app-store-connect',\n target: 'ios',\n code: 'APP_STORE_CONNECT_AUTHENTICATION_REQUIRED',\n message: 'App Store Connect API-key authentication is required for iOS deployment.',\n },\n };\n}\n\nfunction permissionRequired(): AppStoreConnectVerificationResult {\n return {\n status: 'action-required',\n action: {\n type: 'manual-action',\n target: 'ios',\n provider: 'app-store-connect',\n code: 'APP_STORE_CONNECT_PERMISSION_REQUIRED',\n message: 'The App Store Connect team API key needs permission for iOS deployment.',\n },\n };\n}\n\nfunction failed(): DeploymentVerificationResult {\n return {\n ok: false,\n issues: [\n {\n code: 'APP_STORE_VERSION_BUILD_NOT_ATTACHED',\n message: 'The processed iOS build is not attached to the expected App Store version.',\n target: 'ios',\n provider: 'app-store-connect',\n },\n ],\n };\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { AppStoreConnectTransport } from './AppStoreConnectTransport';
2
+ export declare function verifyAppStoreVersionBuild(options: {
3
+ readonly versionId: string;
4
+ readonly buildId: string;
5
+ readonly buildNumber: string;
6
+ readonly token: string;
7
+ readonly request: AppStoreConnectTransport;
8
+ }): Promise<boolean>;
9
+ //# sourceMappingURL=verifyAppStoreVersionBuild.d.ts.map