@expo/cli 0.0.0 → 0.1.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 (336) hide show
  1. package/README.md +106 -0
  2. package/build/bin/cli +125 -0
  3. package/build/bin/cli.map +1 -0
  4. package/build/src/api/endpoint.js +17 -0
  5. package/build/src/api/endpoint.js.map +1 -0
  6. package/build/src/api/getExpoGoIntermediateCertificate.js +21 -0
  7. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -0
  8. package/build/src/api/getExpoSchema.js +69 -0
  9. package/build/src/api/getExpoSchema.js.map +1 -0
  10. package/build/src/api/getNativeModuleVersions.js +31 -0
  11. package/build/src/api/getNativeModuleVersions.js.map +1 -0
  12. package/build/src/api/getProject.js +19 -0
  13. package/build/src/api/getProject.js.map +1 -0
  14. package/build/src/api/getProjectDevelopmentCertificate.js +24 -0
  15. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -0
  16. package/build/src/api/getVersions.js +37 -0
  17. package/build/src/api/getVersions.js.map +1 -0
  18. package/build/src/api/graphql/client.js +104 -0
  19. package/build/src/api/graphql/client.js.map +1 -0
  20. package/build/src/api/graphql/generated.js +113 -0
  21. package/build/src/api/graphql/generated.js.map +1 -0
  22. package/build/src/api/graphql/queries/UserQuery.js +43 -0
  23. package/build/src/api/graphql/queries/UserQuery.js.map +1 -0
  24. package/build/src/api/rest/cache/FileSystemCache.js +79 -0
  25. package/build/src/api/rest/cache/FileSystemCache.js.map +1 -0
  26. package/build/src/api/rest/cache/response.js +31 -0
  27. package/build/src/api/rest/cache/response.js.map +1 -0
  28. package/build/src/api/rest/cache/wrapFetchWithCache.js +156 -0
  29. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -0
  30. package/build/src/api/rest/client.js +94 -0
  31. package/build/src/api/rest/client.js.map +1 -0
  32. package/build/src/api/rest/client.types.js +6 -0
  33. package/build/src/api/rest/client.types.js.map +1 -0
  34. package/build/src/api/rest/wrapFetchWithBaseUrl.js +20 -0
  35. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -0
  36. package/build/src/api/rest/wrapFetchWithOffline.js +39 -0
  37. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -0
  38. package/build/src/api/rest/wrapFetchWithProgress.js +59 -0
  39. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -0
  40. package/build/src/api/settings.js +11 -0
  41. package/build/src/api/settings.js.map +1 -0
  42. package/build/src/api/signManifest.js +38 -0
  43. package/build/src/api/signManifest.js.map +1 -0
  44. package/build/src/api/updateDevelopmentSession.js +74 -0
  45. package/build/src/api/updateDevelopmentSession.js.map +1 -0
  46. package/build/src/api/user/UserSettings.js +71 -0
  47. package/build/src/api/user/UserSettings.js.map +1 -0
  48. package/build/src/api/user/actions.js +97 -0
  49. package/build/src/api/user/actions.js.map +1 -0
  50. package/build/src/api/user/otp.js +139 -0
  51. package/build/src/api/user/otp.js.map +1 -0
  52. package/build/src/api/user/user.js +114 -0
  53. package/build/src/api/user/user.js.map +1 -0
  54. package/build/src/config/configAsync.js +118 -0
  55. package/build/src/config/configAsync.js.map +1 -0
  56. package/build/src/config/index.js +85 -0
  57. package/build/src/config/index.js.map +1 -0
  58. package/build/src/install/checkPackages.js +74 -0
  59. package/build/src/install/checkPackages.js.map +1 -0
  60. package/build/src/install/index.js +76 -0
  61. package/build/src/install/index.js.map +1 -0
  62. package/build/src/install/installAsync.js +103 -0
  63. package/build/src/install/installAsync.js.map +1 -0
  64. package/build/src/install/resolveOptions.js +99 -0
  65. package/build/src/install/resolveOptions.js.map +1 -0
  66. package/build/src/install/utils/autoAddConfigPlugins.js +87 -0
  67. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -0
  68. package/build/src/log.js +74 -0
  69. package/build/src/log.js.map +1 -0
  70. package/build/src/login/index.js +76 -0
  71. package/build/src/login/index.js.map +1 -0
  72. package/build/src/logout/index.js +63 -0
  73. package/build/src/logout/index.js.map +1 -0
  74. package/build/src/prebuild/clearNativeFolder.js +137 -0
  75. package/build/src/prebuild/clearNativeFolder.js.map +1 -0
  76. package/build/src/prebuild/configureProjectAsync.js +68 -0
  77. package/build/src/prebuild/configureProjectAsync.js.map +1 -0
  78. package/build/src/prebuild/copyTemplateFiles.js +124 -0
  79. package/build/src/prebuild/copyTemplateFiles.js.map +1 -0
  80. package/build/src/prebuild/ensureConfigAsync.js +86 -0
  81. package/build/src/prebuild/ensureConfigAsync.js.map +1 -0
  82. package/build/src/prebuild/index.js +101 -0
  83. package/build/src/prebuild/index.js.map +1 -0
  84. package/build/src/prebuild/prebuildAsync.js +112 -0
  85. package/build/src/prebuild/prebuildAsync.js.map +1 -0
  86. package/build/src/prebuild/resolveOptions.js +97 -0
  87. package/build/src/prebuild/resolveOptions.js.map +1 -0
  88. package/build/src/prebuild/resolveTemplate.js +157 -0
  89. package/build/src/prebuild/resolveTemplate.js.map +1 -0
  90. package/build/src/prebuild/updateFromTemplate.js +102 -0
  91. package/build/src/prebuild/updateFromTemplate.js.map +1 -0
  92. package/build/src/prebuild/updatePackageJson.js +236 -0
  93. package/build/src/prebuild/updatePackageJson.js.map +1 -0
  94. package/build/src/prebuild/writeMetroConfig.js +89 -0
  95. package/build/src/prebuild/writeMetroConfig.js.map +1 -0
  96. package/build/src/register/index.js +63 -0
  97. package/build/src/register/index.js.map +1 -0
  98. package/build/src/register/registerAsync.js +37 -0
  99. package/build/src/register/registerAsync.js.map +1 -0
  100. package/build/src/start/doctor/Prerequisite.js +47 -0
  101. package/build/src/start/doctor/Prerequisite.js.map +1 -0
  102. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +68 -0
  103. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -0
  104. package/build/src/start/doctor/apple/XcodePrerequisite.js +115 -0
  105. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -0
  106. package/build/src/start/doctor/apple/XcrunPrerequisite.js +65 -0
  107. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -0
  108. package/build/src/start/doctor/dependencies/bundledNativeModules.js +64 -0
  109. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -0
  110. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +131 -0
  111. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -0
  112. package/build/src/start/doctor/dependencies/getMissingPackages.js +95 -0
  113. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -0
  114. package/build/src/start/doctor/dependencies/getVersionedPackages.js +119 -0
  115. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -0
  116. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +147 -0
  117. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -0
  118. package/build/src/start/doctor/ngrok/ExternalModule.js +164 -0
  119. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -0
  120. package/build/src/start/doctor/ngrok/NgrokResolver.js +17 -0
  121. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -0
  122. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +142 -0
  123. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -0
  124. package/build/src/start/doctor/typescript/updateTSConfig.js +92 -0
  125. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -0
  126. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +112 -0
  127. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -0
  128. package/build/src/start/index.js +126 -0
  129. package/build/src/start/index.js.map +1 -0
  130. package/build/src/start/interface/KeyPressHandler.js +99 -0
  131. package/build/src/start/interface/KeyPressHandler.js.map +1 -0
  132. package/build/src/start/interface/commandsTable.js +175 -0
  133. package/build/src/start/interface/commandsTable.js.map +1 -0
  134. package/build/src/start/interface/interactiveActions.js +134 -0
  135. package/build/src/start/interface/interactiveActions.js.map +1 -0
  136. package/build/src/start/interface/startInterface.js +217 -0
  137. package/build/src/start/interface/startInterface.js.map +1 -0
  138. package/build/src/start/platforms/AppIdResolver.js +44 -0
  139. package/build/src/start/platforms/AppIdResolver.js.map +1 -0
  140. package/build/src/start/platforms/DeviceManager.js +43 -0
  141. package/build/src/start/platforms/DeviceManager.js.map +1 -0
  142. package/build/src/start/platforms/ExpoGoInstaller.js +108 -0
  143. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -0
  144. package/build/src/start/platforms/PlatformManager.js +96 -0
  145. package/build/src/start/platforms/PlatformManager.js.map +1 -0
  146. package/build/src/start/platforms/android/ADBServer.js +127 -0
  147. package/build/src/start/platforms/android/ADBServer.js.map +1 -0
  148. package/build/src/start/platforms/android/AndroidAppIdResolver.js +40 -0
  149. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -0
  150. package/build/src/start/platforms/android/AndroidDeviceManager.js +171 -0
  151. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -0
  152. package/build/src/start/platforms/android/AndroidPlatformManager.js +35 -0
  153. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -0
  154. package/build/src/start/platforms/android/activateWindow.js +78 -0
  155. package/build/src/start/platforms/android/activateWindow.js.map +1 -0
  156. package/build/src/start/platforms/android/adb.js +230 -0
  157. package/build/src/start/platforms/android/adb.js.map +1 -0
  158. package/build/src/start/platforms/android/adbReverse.js +84 -0
  159. package/build/src/start/platforms/android/adbReverse.js.map +1 -0
  160. package/build/src/start/platforms/android/emulator.js +118 -0
  161. package/build/src/start/platforms/android/emulator.js.map +1 -0
  162. package/build/src/start/platforms/android/getDevices.js +36 -0
  163. package/build/src/start/platforms/android/getDevices.js.map +1 -0
  164. package/build/src/start/platforms/android/promptAndroidDevice.js +60 -0
  165. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -0
  166. package/build/src/start/platforms/ios/AppleAppIdResolver.js +46 -0
  167. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -0
  168. package/build/src/start/platforms/ios/AppleDeviceManager.js +201 -0
  169. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -0
  170. package/build/src/start/platforms/ios/ApplePlatformManager.js +31 -0
  171. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -0
  172. package/build/src/start/platforms/ios/assertSystemRequirements.js +16 -0
  173. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -0
  174. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +85 -0
  175. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -0
  176. package/build/src/start/platforms/ios/getBestSimulator.js +101 -0
  177. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -0
  178. package/build/src/start/platforms/ios/promptAppleDevice.js +60 -0
  179. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -0
  180. package/build/src/start/platforms/ios/simctl.js +229 -0
  181. package/build/src/start/platforms/ios/simctl.js.map +1 -0
  182. package/build/src/start/platforms/ios/xcrun.js +67 -0
  183. package/build/src/start/platforms/ios/xcrun.js.map +1 -0
  184. package/build/src/start/project/devices.js +77 -0
  185. package/build/src/start/project/devices.js.map +1 -0
  186. package/build/src/start/project/dotExpo.js +74 -0
  187. package/build/src/start/project/dotExpo.js.map +1 -0
  188. package/build/src/start/project/settings.js +13 -0
  189. package/build/src/start/project/settings.js.map +1 -0
  190. package/build/src/start/resolveOptions.js +156 -0
  191. package/build/src/start/resolveOptions.js.map +1 -0
  192. package/build/src/start/server/AsyncNgrok.js +173 -0
  193. package/build/src/start/server/AsyncNgrok.js.map +1 -0
  194. package/build/src/start/server/BundlerDevServer.js +252 -0
  195. package/build/src/start/server/BundlerDevServer.js.map +1 -0
  196. package/build/src/start/server/DevServerManager.js +142 -0
  197. package/build/src/start/server/DevServerManager.js.map +1 -0
  198. package/build/src/start/server/DevelopmentSession.js +104 -0
  199. package/build/src/start/server/DevelopmentSession.js.map +1 -0
  200. package/build/src/start/server/UrlCreator.js +158 -0
  201. package/build/src/start/server/UrlCreator.js.map +1 -0
  202. package/build/src/start/server/metro/MetroBundlerDevServer.js +100 -0
  203. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -0
  204. package/build/src/start/server/metro/MetroTerminalReporter.js +178 -0
  205. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -0
  206. package/build/src/start/server/metro/TerminalReporter.js +87 -0
  207. package/build/src/start/server/metro/TerminalReporter.js.map +1 -0
  208. package/build/src/start/server/metro/TerminalReporter.types.js +6 -0
  209. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -0
  210. package/build/src/start/server/metro/instantiateMetro.js +53 -0
  211. package/build/src/start/server/metro/instantiateMetro.js.map +1 -0
  212. package/build/src/start/server/metro/resolveFromProject.js +38 -0
  213. package/build/src/start/server/metro/resolveFromProject.js.map +1 -0
  214. package/build/src/start/server/middleware/ClassicManifestMiddleware.js +145 -0
  215. package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +1 -0
  216. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +185 -0
  217. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -0
  218. package/build/src/start/server/middleware/ExpoMiddleware.js +78 -0
  219. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -0
  220. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +70 -0
  221. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -0
  222. package/build/src/start/server/middleware/ManifestMiddleware.js +177 -0
  223. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -0
  224. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +69 -0
  225. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -0
  226. package/build/src/start/server/middleware/createDevServerMiddleware.js +24 -0
  227. package/build/src/start/server/middleware/createDevServerMiddleware.js.map +1 -0
  228. package/build/src/start/server/middleware/resolveAssets.js +107 -0
  229. package/build/src/start/server/middleware/resolveAssets.js.map +1 -0
  230. package/build/src/start/server/middleware/resolveEntryPoint.js +37 -0
  231. package/build/src/start/server/middleware/resolveEntryPoint.js.map +1 -0
  232. package/build/src/start/server/middleware/resolvePlatform.js +32 -0
  233. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -0
  234. package/build/src/start/server/middleware/server.types.js +6 -0
  235. package/build/src/start/server/middleware/server.types.js.map +1 -0
  236. package/build/src/start/server/openPlatforms.js +30 -0
  237. package/build/src/start/server/openPlatforms.js.map +1 -0
  238. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +303 -0
  239. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -0
  240. package/build/src/start/server/webpack/formatWebpackMessages.js +94 -0
  241. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -0
  242. package/build/src/start/server/webpack/resolveFromProject.js +43 -0
  243. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -0
  244. package/build/src/start/server/webpack/tls.js +72 -0
  245. package/build/src/start/server/webpack/tls.js.map +1 -0
  246. package/build/src/start/startAsync.js +150 -0
  247. package/build/src/start/startAsync.js.map +1 -0
  248. package/build/src/utils/FileNotifier.js +71 -0
  249. package/build/src/utils/FileNotifier.js.map +1 -0
  250. package/build/src/utils/analytics/getDevClientProperties.js +41 -0
  251. package/build/src/utils/analytics/getDevClientProperties.js.map +1 -0
  252. package/build/src/utils/analytics/rudderstackClient.js +106 -0
  253. package/build/src/utils/analytics/rudderstackClient.js.map +1 -0
  254. package/build/src/utils/ansi.js +17 -0
  255. package/build/src/utils/ansi.js.map +1 -0
  256. package/build/src/utils/args.js +63 -0
  257. package/build/src/utils/args.js.map +1 -0
  258. package/build/src/utils/array.js +27 -0
  259. package/build/src/utils/array.js.map +1 -0
  260. package/build/src/utils/cocoapods.js +143 -0
  261. package/build/src/utils/cocoapods.js.map +1 -0
  262. package/build/src/utils/codesigning.js +283 -0
  263. package/build/src/utils/codesigning.js.map +1 -0
  264. package/build/src/utils/createFileTransform.js +89 -0
  265. package/build/src/utils/createFileTransform.js.map +1 -0
  266. package/build/src/utils/delay.js +39 -0
  267. package/build/src/utils/delay.js.map +1 -0
  268. package/build/src/utils/dir.js +34 -0
  269. package/build/src/utils/dir.js.map +1 -0
  270. package/build/src/utils/downloadAppAsync.js +71 -0
  271. package/build/src/utils/downloadAppAsync.js.map +1 -0
  272. package/build/src/utils/downloadExpoGoAsync.js +93 -0
  273. package/build/src/utils/downloadExpoGoAsync.js.map +1 -0
  274. package/build/src/utils/editor.js +60 -0
  275. package/build/src/utils/editor.js.map +1 -0
  276. package/build/src/utils/env.js +59 -0
  277. package/build/src/utils/env.js.map +1 -0
  278. package/build/src/utils/errors.js +69 -0
  279. package/build/src/utils/errors.js.map +1 -0
  280. package/build/src/utils/exit.js +90 -0
  281. package/build/src/utils/exit.js.map +1 -0
  282. package/build/src/utils/findUp.js +33 -0
  283. package/build/src/utils/findUp.js.map +1 -0
  284. package/build/src/utils/fn.js +32 -0
  285. package/build/src/utils/fn.js.map +1 -0
  286. package/build/src/utils/getOrPromptApplicationId.js +183 -0
  287. package/build/src/utils/getOrPromptApplicationId.js.map +1 -0
  288. package/build/src/utils/getRunningProcess.js +92 -0
  289. package/build/src/utils/getRunningProcess.js.map +1 -0
  290. package/build/src/utils/git.js +88 -0
  291. package/build/src/utils/git.js.map +1 -0
  292. package/build/src/utils/glob.js +65 -0
  293. package/build/src/utils/glob.js.map +1 -0
  294. package/build/src/utils/ip.js +16 -0
  295. package/build/src/utils/ip.js.map +1 -0
  296. package/build/src/utils/isModuleSymlinked.js +37 -0
  297. package/build/src/utils/isModuleSymlinked.js.map +1 -0
  298. package/build/src/utils/link.js +31 -0
  299. package/build/src/utils/link.js.map +1 -0
  300. package/build/src/utils/mergeGitIgnorePaths.js +112 -0
  301. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -0
  302. package/build/src/utils/modifyConfigAsync.js +68 -0
  303. package/build/src/utils/modifyConfigAsync.js.map +1 -0
  304. package/build/src/utils/modifyConfigPlugins.js +51 -0
  305. package/build/src/utils/modifyConfigPlugins.js.map +1 -0
  306. package/build/src/utils/nodeModules.js +118 -0
  307. package/build/src/utils/nodeModules.js.map +1 -0
  308. package/build/src/utils/npm.js +144 -0
  309. package/build/src/utils/npm.js.map +1 -0
  310. package/build/src/utils/obj.js +45 -0
  311. package/build/src/utils/obj.js.map +1 -0
  312. package/build/src/utils/ora.js +102 -0
  313. package/build/src/utils/ora.js.map +1 -0
  314. package/build/src/utils/port.js +130 -0
  315. package/build/src/utils/port.js.map +1 -0
  316. package/build/src/utils/profile.js +63 -0
  317. package/build/src/utils/profile.js.map +1 -0
  318. package/build/src/utils/progress.js +15 -0
  319. package/build/src/utils/progress.js.map +1 -0
  320. package/build/src/utils/prompts.js +127 -0
  321. package/build/src/utils/prompts.js.map +1 -0
  322. package/build/src/utils/scheme.js +106 -0
  323. package/build/src/utils/scheme.js.map +1 -0
  324. package/build/src/utils/tar.js +59 -0
  325. package/build/src/utils/tar.js.map +1 -0
  326. package/build/src/utils/url.js +67 -0
  327. package/build/src/utils/url.js.map +1 -0
  328. package/build/src/utils/validateApplicationId.js +90 -0
  329. package/build/src/utils/validateApplicationId.js.map +1 -0
  330. package/build/src/whoami/index.js +63 -0
  331. package/build/src/whoami/index.js.map +1 -0
  332. package/build/src/whoami/whoamiAsync.js +44 -0
  333. package/build/src/whoami/whoamiAsync.js.map +1 -0
  334. package/package.json +128 -4
  335. package/static/loading-page/index.html +270 -0
  336. package/index.js +0 -0
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.hasPackageJsonDependencyListChangedAsync = hasPackageJsonDependencyListChangedAsync;
6
+ exports.installCocoaPodsAsync = installCocoaPodsAsync;
7
+ var _config = require("@expo/config");
8
+ var _jsonFile = _interopRequireDefault(require("@expo/json-file"));
9
+ var PackageManager = _interopRequireWildcard(require("@expo/package-manager"));
10
+ var _chalk = _interopRequireDefault(require("chalk"));
11
+ var _fs = _interopRequireDefault(require("fs"));
12
+ var _path = _interopRequireDefault(require("path"));
13
+ var Log = _interopRequireWildcard(require("../log"));
14
+ var _updatePackageJson = require("../prebuild/updatePackageJson");
15
+ var _dir = require("./dir");
16
+ var _env = require("./env");
17
+ var _ora = require("./ora");
18
+ function _interopRequireDefault(obj) {
19
+ return obj && obj.__esModule ? obj : {
20
+ default: obj
21
+ };
22
+ }
23
+ function _interopRequireWildcard(obj) {
24
+ if (obj && obj.__esModule) {
25
+ return obj;
26
+ } else {
27
+ var newObj = {};
28
+ if (obj != null) {
29
+ for(var key in obj){
30
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
31
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
32
+ if (desc.get || desc.set) {
33
+ Object.defineProperty(newObj, key, desc);
34
+ } else {
35
+ newObj[key] = obj[key];
36
+ }
37
+ }
38
+ }
39
+ }
40
+ newObj.default = obj;
41
+ return newObj;
42
+ }
43
+ }
44
+ const PROJECT_PREBUILD_SETTINGS = ".expo/prebuild";
45
+ const CACHED_PACKAGE_JSON = "cached-packages.json";
46
+ function getTempPrebuildFolder(projectRoot) {
47
+ return _path.default.join(projectRoot, PROJECT_PREBUILD_SETTINGS);
48
+ }
49
+ function hasNewDependenciesSinceLastBuild(projectRoot, packageChecksums) {
50
+ // TODO: Maybe comparing lock files would be better...
51
+ const templateDirectory = getTempPrebuildFolder(projectRoot);
52
+ const tempPkgJsonPath = _path.default.join(templateDirectory, CACHED_PACKAGE_JSON);
53
+ if (!_fs.default.existsSync(tempPkgJsonPath)) {
54
+ return true;
55
+ }
56
+ const { dependencies , devDependencies } = _jsonFile.default.read(tempPkgJsonPath);
57
+ // Only change the dependencies if the normalized hash changes, this helps to reduce meaningless changes.
58
+ const hasNewDependencies = packageChecksums.dependencies !== dependencies;
59
+ const hasNewDevDependencies = packageChecksums.devDependencies !== devDependencies;
60
+ return hasNewDependencies || hasNewDevDependencies;
61
+ }
62
+ function createPackageChecksums(pkg) {
63
+ return {
64
+ dependencies: (0, _updatePackageJson).hashForDependencyMap(pkg.dependencies || {}),
65
+ devDependencies: (0, _updatePackageJson).hashForDependencyMap(pkg.devDependencies || {})
66
+ };
67
+ }
68
+ async function hasPackageJsonDependencyListChangedAsync(projectRoot) {
69
+ const pkg = (0, _config).getPackageJson(projectRoot);
70
+ const packages = createPackageChecksums(pkg);
71
+ const hasNewDependencies = hasNewDependenciesSinceLastBuild(projectRoot, packages);
72
+ // Cache package.json
73
+ await (0, _dir).ensureDirectoryAsync(getTempPrebuildFolder(projectRoot));
74
+ const templateDirectory = _path.default.join(getTempPrebuildFolder(projectRoot), CACHED_PACKAGE_JSON);
75
+ await _jsonFile.default.writeAsync(templateDirectory, packages);
76
+ return hasNewDependencies;
77
+ }
78
+ async function installCocoaPodsAsync(projectRoot) {
79
+ let step = (0, _ora).logNewSection("Installing CocoaPods...");
80
+ if (process.platform !== "darwin") {
81
+ step.succeed("Skipped installing CocoaPods because operating system is not on macOS.");
82
+ return false;
83
+ }
84
+ const packageManager = new PackageManager.CocoaPodsPackageManager({
85
+ cwd: _path.default.join(projectRoot, "ios"),
86
+ silent: !_env.env.EXPO_DEBUG
87
+ });
88
+ if (!await packageManager.isCLIInstalledAsync()) {
89
+ try {
90
+ // prompt user -- do you want to install cocoapods right now?
91
+ step.text = "CocoaPods CLI not found in your PATH, installing it now.";
92
+ step.stopAndPersist();
93
+ await PackageManager.CocoaPodsPackageManager.installCLIAsync({
94
+ nonInteractive: true,
95
+ spawnOptions: {
96
+ ...packageManager.options,
97
+ // Don't silence this part
98
+ stdio: [
99
+ "inherit",
100
+ "inherit",
101
+ "pipe"
102
+ ]
103
+ }
104
+ });
105
+ step.succeed("Installed CocoaPods CLI.");
106
+ step = (0, _ora).logNewSection("Running `pod install` in the `ios` directory.");
107
+ } catch (error) {
108
+ step.stopAndPersist({
109
+ symbol: "\u26A0\uFE0F ",
110
+ text: _chalk.default.red("Unable to install the CocoaPods CLI.")
111
+ });
112
+ if (error instanceof PackageManager.CocoaPodsError) {
113
+ Log.log(error.message);
114
+ } else {
115
+ Log.log(`Unknown error: ${error.message}`);
116
+ }
117
+ return false;
118
+ }
119
+ }
120
+ try {
121
+ await packageManager.installAsync({
122
+ spinner: step
123
+ });
124
+ // Create cached list for later
125
+ await hasPackageJsonDependencyListChangedAsync(projectRoot).catch(()=>null
126
+ );
127
+ step.succeed("Installed pods and initialized Xcode workspace.");
128
+ return true;
129
+ } catch (error) {
130
+ step.stopAndPersist({
131
+ symbol: "\u26A0\uFE0F ",
132
+ text: _chalk.default.red("Something went wrong running `pod install` in the `ios` directory.")
133
+ });
134
+ if (error instanceof PackageManager.CocoaPodsError) {
135
+ Log.log(error.message);
136
+ } else {
137
+ Log.log(`Unknown error: ${error.message}`);
138
+ }
139
+ return false;
140
+ }
141
+ }
142
+
143
+ //# sourceMappingURL=cocoapods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/cocoapods.ts"],"sourcesContent":["import { getPackageJson, PackageJSONConfig } from '@expo/config';\nimport JsonFile from '@expo/json-file';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { hashForDependencyMap } from '../prebuild/updatePackageJson';\nimport { ensureDirectoryAsync } from './dir';\nimport { env } from './env';\nimport { logNewSection } from './ora';\n\ntype PackageChecksums = {\n /** checksum for the `package.json` dependency object. */\n dependencies: string;\n /** checksum for the `package.json` devDependency object. */\n devDependencies: string;\n};\n\nconst PROJECT_PREBUILD_SETTINGS = '.expo/prebuild';\nconst CACHED_PACKAGE_JSON = 'cached-packages.json';\n\nfunction getTempPrebuildFolder(projectRoot: string): string {\n return path.join(projectRoot, PROJECT_PREBUILD_SETTINGS);\n}\n\nfunction hasNewDependenciesSinceLastBuild(\n projectRoot: string,\n packageChecksums: PackageChecksums\n): boolean {\n // TODO: Maybe comparing lock files would be better...\n const templateDirectory = getTempPrebuildFolder(projectRoot);\n const tempPkgJsonPath = path.join(templateDirectory, CACHED_PACKAGE_JSON);\n if (!fs.existsSync(tempPkgJsonPath)) {\n return true;\n }\n const { dependencies, devDependencies } = JsonFile.read(tempPkgJsonPath);\n // Only change the dependencies if the normalized hash changes, this helps to reduce meaningless changes.\n const hasNewDependencies = packageChecksums.dependencies !== dependencies;\n const hasNewDevDependencies = packageChecksums.devDependencies !== devDependencies;\n\n return hasNewDependencies || hasNewDevDependencies;\n}\n\nfunction createPackageChecksums(pkg: PackageJSONConfig): PackageChecksums {\n return {\n dependencies: hashForDependencyMap(pkg.dependencies || {}),\n devDependencies: hashForDependencyMap(pkg.devDependencies || {}),\n };\n}\n\n/** @returns `true` if the package.json dependency hash does not match the cached hash from the last run. */\nexport async function hasPackageJsonDependencyListChangedAsync(\n projectRoot: string\n): Promise<boolean> {\n const pkg = getPackageJson(projectRoot);\n\n const packages = createPackageChecksums(pkg);\n const hasNewDependencies = hasNewDependenciesSinceLastBuild(projectRoot, packages);\n\n // Cache package.json\n await ensureDirectoryAsync(getTempPrebuildFolder(projectRoot));\n const templateDirectory = path.join(getTempPrebuildFolder(projectRoot), CACHED_PACKAGE_JSON);\n await JsonFile.writeAsync(templateDirectory, packages);\n\n return hasNewDependencies;\n}\n\nexport async function installCocoaPodsAsync(projectRoot: string): Promise<boolean> {\n let step = logNewSection('Installing CocoaPods...');\n if (process.platform !== 'darwin') {\n step.succeed('Skipped installing CocoaPods because operating system is not on macOS.');\n return false;\n }\n\n const packageManager = new PackageManager.CocoaPodsPackageManager({\n cwd: path.join(projectRoot, 'ios'),\n silent: !env.EXPO_DEBUG,\n });\n\n if (!(await packageManager.isCLIInstalledAsync())) {\n try {\n // prompt user -- do you want to install cocoapods right now?\n step.text = 'CocoaPods CLI not found in your PATH, installing it now.';\n step.stopAndPersist();\n await PackageManager.CocoaPodsPackageManager.installCLIAsync({\n nonInteractive: true,\n spawnOptions: {\n ...packageManager.options,\n // Don't silence this part\n stdio: ['inherit', 'inherit', 'pipe'],\n },\n });\n step.succeed('Installed CocoaPods CLI.');\n step = logNewSection('Running `pod install` in the `ios` directory.');\n } catch (error: any) {\n step.stopAndPersist({\n symbol: '⚠️ ',\n text: chalk.red('Unable to install the CocoaPods CLI.'),\n });\n if (error instanceof PackageManager.CocoaPodsError) {\n Log.log(error.message);\n } else {\n Log.log(`Unknown error: ${error.message}`);\n }\n return false;\n }\n }\n\n try {\n await packageManager.installAsync({ spinner: step });\n // Create cached list for later\n await hasPackageJsonDependencyListChangedAsync(projectRoot).catch(() => null);\n step.succeed('Installed pods and initialized Xcode workspace.');\n return true;\n } catch (error: any) {\n step.stopAndPersist({\n symbol: '⚠️ ',\n text: chalk.red('Something went wrong running `pod install` in the `ios` directory.'),\n });\n if (error instanceof PackageManager.CocoaPodsError) {\n Log.log(error.message);\n } else {\n Log.log(`Unknown error: ${error.message}`);\n }\n return false;\n }\n}\n"],"names":["hasPackageJsonDependencyListChangedAsync","installCocoaPodsAsync","PackageManager","Log","PROJECT_PREBUILD_SETTINGS","CACHED_PACKAGE_JSON","getTempPrebuildFolder","projectRoot","path","join","hasNewDependenciesSinceLastBuild","packageChecksums","templateDirectory","tempPkgJsonPath","fs","existsSync","dependencies","devDependencies","JsonFile","read","hasNewDependencies","hasNewDevDependencies","createPackageChecksums","pkg","hashForDependencyMap","getPackageJson","packages","ensureDirectoryAsync","writeAsync","step","logNewSection","process","platform","succeed","packageManager","CocoaPodsPackageManager","cwd","silent","env","EXPO_DEBUG","isCLIInstalledAsync","text","stopAndPersist","installCLIAsync","nonInteractive","spawnOptions","options","stdio","error","symbol","chalk","red","CocoaPodsError","log","message","installAsync","spinner","catch"],"mappings":"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"}
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.getDevelopmentCodeSigningDirectory = getDevelopmentCodeSigningDirectory;
6
+ exports.getCodeSigningInfoAsync = getCodeSigningInfoAsync;
7
+ exports.signManifestString = signManifestString;
8
+ exports.DevelopmentCodeSigningInfoFile = void 0;
9
+ var _codeSigningCertificates = require("@expo/code-signing-certificates");
10
+ var _getUserState = require("@expo/config/build/getUserState");
11
+ var _jsonFile = _interopRequireDefault(require("@expo/json-file"));
12
+ var _fs = require("fs");
13
+ var _path = _interopRequireDefault(require("path"));
14
+ var _structuredHeaders = require("structured-headers");
15
+ var _getExpoGoIntermediateCertificate = require("../api/getExpoGoIntermediateCertificate");
16
+ var _getProjectDevelopmentCertificate = require("../api/getProjectDevelopmentCertificate");
17
+ var _settings = require("../api/settings");
18
+ var Log = _interopRequireWildcard(require("../log"));
19
+ var _errors = require("./errors");
20
+ function _interopRequireDefault(obj) {
21
+ return obj && obj.__esModule ? obj : {
22
+ default: obj
23
+ };
24
+ }
25
+ function _interopRequireWildcard(obj) {
26
+ if (obj && obj.__esModule) {
27
+ return obj;
28
+ } else {
29
+ var newObj = {};
30
+ if (obj != null) {
31
+ for(var key in obj){
32
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
33
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
34
+ if (desc.get || desc.set) {
35
+ Object.defineProperty(newObj, key, desc);
36
+ } else {
37
+ newObj[key] = obj[key];
38
+ }
39
+ }
40
+ }
41
+ }
42
+ newObj.default = obj;
43
+ return newObj;
44
+ }
45
+ }
46
+ const DEVELOPMENT_CODE_SIGNING_SETTINGS_FILE_NAME = "development-code-signing-settings.json";
47
+ function getDevelopmentCodeSigningDirectory() {
48
+ return _path.default.join((0, _getUserState).getExpoHomeDirectory(), "codesigning");
49
+ }
50
+ function getProjectDevelopmentCodeSigningInfoFile(defaults) {
51
+ function getFile(easProjectId) {
52
+ const filePath = _path.default.join(getDevelopmentCodeSigningDirectory(), easProjectId, DEVELOPMENT_CODE_SIGNING_SETTINGS_FILE_NAME);
53
+ return new _jsonFile.default(filePath);
54
+ }
55
+ async function readAsync(easProjectId) {
56
+ let projectSettings;
57
+ try {
58
+ projectSettings = await getFile(easProjectId).readAsync();
59
+ } catch {
60
+ projectSettings = await getFile(easProjectId).writeAsync(defaults, {
61
+ ensureDir: true
62
+ });
63
+ }
64
+ // Set defaults for any missing fields
65
+ return {
66
+ ...defaults,
67
+ ...projectSettings
68
+ };
69
+ }
70
+ async function setAsync(easProjectId, json) {
71
+ try {
72
+ return await getFile(easProjectId).mergeAsync(json, {
73
+ cantReadFileDefault: defaults
74
+ });
75
+ } catch {
76
+ return await getFile(easProjectId).writeAsync({
77
+ ...defaults,
78
+ ...json
79
+ }, {
80
+ ensureDir: true
81
+ });
82
+ }
83
+ }
84
+ return {
85
+ getFile,
86
+ readAsync,
87
+ setAsync
88
+ };
89
+ }
90
+ const DevelopmentCodeSigningInfoFile = getProjectDevelopmentCodeSigningInfoFile({
91
+ easProjectId: null,
92
+ privateKey: null,
93
+ certificateChain: null
94
+ });
95
+ exports.DevelopmentCodeSigningInfoFile = DevelopmentCodeSigningInfoFile;
96
+ async function getCodeSigningInfoAsync(exp, expectSignatureHeader, privateKeyPath) {
97
+ if (!expectSignatureHeader) {
98
+ return null;
99
+ }
100
+ let parsedExpectSignature;
101
+ try {
102
+ parsedExpectSignature = (0, _structuredHeaders).parseDictionary(expectSignatureHeader);
103
+ } catch {
104
+ throw new _errors.CommandError("Invalid value for expo-expect-signature header");
105
+ }
106
+ const expectedKeyIdOuter = parsedExpectSignature.get("keyid");
107
+ if (!expectedKeyIdOuter) {
108
+ throw new _errors.CommandError("keyid not present in expo-expect-signature header");
109
+ }
110
+ const expectedKeyId = expectedKeyIdOuter[0];
111
+ if (typeof expectedKeyId !== "string") {
112
+ throw new _errors.CommandError(`Invalid value for keyid in expo-expect-signature header: ${expectedKeyId}`);
113
+ }
114
+ let expectedAlg = null;
115
+ const expectedAlgOuter = parsedExpectSignature.get("alg");
116
+ if (expectedAlgOuter) {
117
+ const expectedAlgTemp = expectedAlgOuter[0];
118
+ if (typeof expectedAlgTemp !== "string") {
119
+ throw new _errors.CommandError("Invalid value for alg in expo-expect-signature header");
120
+ }
121
+ expectedAlg = expectedAlgTemp;
122
+ }
123
+ if (expectedKeyId === "expo-root") {
124
+ return await getExpoRootDevelopmentCodeSigningInfoAsync(exp);
125
+ } else if (expectedKeyId === "expo-go") {
126
+ throw new _errors.CommandError("Invalid certificate requested: cannot sign with embedded keyid=expo-go key");
127
+ } else {
128
+ return await getProjectCodeSigningCertificateAsync(exp, privateKeyPath, expectedKeyId, expectedAlg);
129
+ }
130
+ }
131
+ /**
132
+ * Get a development code signing certificate for the expo-root -> expo-go -> (development certificate) certificate chain.
133
+ * This requires the user be logged in and online, otherwise try to use the cached development certificate.
134
+ */ async function getExpoRootDevelopmentCodeSigningInfoAsync(exp) {
135
+ var ref, ref1;
136
+ const easProjectId = (ref = exp.extra) == null ? void 0 : (ref1 = ref.eas) == null ? void 0 : ref1.projectId;
137
+ // can't check for scope key validity since scope key is derived on the server from projectId and we may be offline.
138
+ // we rely upon the client certificate check to validate the scope key
139
+ if (!easProjectId) {
140
+ Log.warn("No project ID specified in app.json, unable to sign manifest");
141
+ return null;
142
+ }
143
+ const developmentCodeSigningInfoFromFile = await DevelopmentCodeSigningInfoFile.readAsync(easProjectId);
144
+ const validatedCodeSigningInfo = validateStoredDevelopmentExpoRootCertificateCodeSigningInfo(developmentCodeSigningInfoFromFile, easProjectId);
145
+ // 1. If online, ensure logged in, generate key pair and CSR, fetch and cache certificate chain for projectId
146
+ // (overwriting existing dev cert in case projectId changed or it has expired)
147
+ if (!_settings.APISettings.isOffline) {
148
+ try {
149
+ return await fetchAndCacheNewDevelopmentCodeSigningInfoAsync(easProjectId);
150
+ } catch (e) {
151
+ if (validatedCodeSigningInfo) {
152
+ Log.warn("There was an error fetching the Expo development certificate, falling back to cached certificate");
153
+ return validatedCodeSigningInfo;
154
+ } else {
155
+ throw e;
156
+ }
157
+ }
158
+ }
159
+ // 2. check for cached cert/private key matching projectId and scopeKey of project, if found and valid return private key and cert chain including expo-go cert
160
+ if (validatedCodeSigningInfo) {
161
+ return validatedCodeSigningInfo;
162
+ }
163
+ // 3. if offline, return null
164
+ Log.warn("Offline and no cached development certificate found, unable to sign manifest");
165
+ return null;
166
+ }
167
+ /**
168
+ * Get the certificate configured for expo-updates for this project.
169
+ */ async function getProjectCodeSigningCertificateAsync(exp, privateKeyPath, expectedKeyId, expectedAlg) {
170
+ var ref, ref2;
171
+ const codeSigningCertificatePath = (ref = exp.updates) == null ? void 0 : ref.codeSigningCertificate;
172
+ if (!codeSigningCertificatePath) {
173
+ return null;
174
+ }
175
+ if (!privateKeyPath) {
176
+ throw new _errors.CommandError("Must specify --private-key-path argument to sign development manifest for requested code signing key");
177
+ }
178
+ const codeSigningMetadata = (ref2 = exp.updates) == null ? void 0 : ref2.codeSigningMetadata;
179
+ if (!codeSigningMetadata) {
180
+ throw new _errors.CommandError('Must specify "codeSigningMetadata" under the "updates" field of your app config file to use EAS code signing');
181
+ }
182
+ const { alg , keyid } = codeSigningMetadata;
183
+ if (!alg || !keyid) {
184
+ throw new _errors.CommandError('Must specify "keyid" and "alg" in the "codeSigningMetadata" field under the "updates" field of your app config file to use EAS code signing');
185
+ }
186
+ if (expectedKeyId !== keyid) {
187
+ throw new _errors.CommandError(`keyid mismatch: client=${expectedKeyId}, project=${keyid}`);
188
+ }
189
+ if (expectedAlg && expectedAlg !== alg) {
190
+ throw new _errors.CommandError(`"alg" field mismatch (client=${expectedAlg}, project=${alg})`);
191
+ }
192
+ const { privateKeyPEM , certificatePEM } = await getProjectPrivateKeyAndCertificateFromFilePathsAsync({
193
+ codeSigningCertificatePath,
194
+ privateKeyPath
195
+ });
196
+ return {
197
+ privateKey: privateKeyPEM,
198
+ certificateForPrivateKey: certificatePEM,
199
+ certificateChainForResponse: []
200
+ };
201
+ }
202
+ async function readFileWithErrorAsync(path, errorMessage) {
203
+ try {
204
+ return await _fs.promises.readFile(path, "utf8");
205
+ } catch {
206
+ throw new _errors.CommandError(errorMessage);
207
+ }
208
+ }
209
+ async function getProjectPrivateKeyAndCertificateFromFilePathsAsync({ codeSigningCertificatePath , privateKeyPath }) {
210
+ const [codeSigningCertificatePEM, privateKeyPEM] = await Promise.all([
211
+ readFileWithErrorAsync(codeSigningCertificatePath, `Code signing certificate cannot be read from path: ${codeSigningCertificatePath}`),
212
+ readFileWithErrorAsync(privateKeyPath, `Code signing private key cannot be read from path: ${privateKeyPath}`),
213
+ ]);
214
+ const privateKey = (0, _codeSigningCertificates).convertPrivateKeyPEMToPrivateKey(privateKeyPEM);
215
+ const certificate = (0, _codeSigningCertificates).convertCertificatePEMToCertificate(codeSigningCertificatePEM);
216
+ (0, _codeSigningCertificates).validateSelfSignedCertificate(certificate, {
217
+ publicKey: certificate.publicKey,
218
+ privateKey
219
+ });
220
+ return {
221
+ privateKeyPEM,
222
+ certificatePEM: codeSigningCertificatePEM
223
+ };
224
+ }
225
+ /**
226
+ * Validate that the cached code signing info is still valid for the current project and
227
+ * that it hasn't expired. If invalid, return null.
228
+ */ function validateStoredDevelopmentExpoRootCertificateCodeSigningInfo(codeSigningInfo, easProjectId) {
229
+ if (codeSigningInfo.easProjectId !== easProjectId) {
230
+ return null;
231
+ }
232
+ const { privateKey: privateKeyPEM , certificateChain: certificatePEMs } = codeSigningInfo;
233
+ if (!privateKeyPEM || !certificatePEMs) {
234
+ return null;
235
+ }
236
+ const certificateChain = certificatePEMs.map((certificatePEM)=>(0, _codeSigningCertificates).convertCertificatePEMToCertificate(certificatePEM)
237
+ );
238
+ // TODO(wschurman): maybe move to @expo/code-signing-certificates
239
+ const leafCertificate = certificateChain[0];
240
+ const now = new Date();
241
+ if (leafCertificate.validity.notBefore > now || leafCertificate.validity.notAfter < now) {
242
+ return null;
243
+ }
244
+ // TODO(wschurman): maybe do more validation
245
+ return {
246
+ certificateChainForResponse: certificatePEMs,
247
+ certificateForPrivateKey: certificatePEMs[0],
248
+ privateKey: privateKeyPEM
249
+ };
250
+ }
251
+ async function fetchAndCacheNewDevelopmentCodeSigningInfoAsync(easProjectId) {
252
+ const keyPair = (0, _codeSigningCertificates).generateKeyPair();
253
+ const keyPairPEM = (0, _codeSigningCertificates).convertKeyPairToPEM(keyPair);
254
+ const csr = (0, _codeSigningCertificates).generateCSR(keyPair, `Development Certificate for ${easProjectId}`);
255
+ const csrPEM = (0, _codeSigningCertificates).convertCSRToCSRPEM(csr);
256
+ const [developmentSigningCertificate, expoGoIntermediateCertificate] = await Promise.all([
257
+ (0, _getProjectDevelopmentCertificate).getProjectDevelopmentCertificateAsync(easProjectId, csrPEM),
258
+ (0, _getExpoGoIntermediateCertificate).getExpoGoIntermediateCertificateAsync(easProjectId),
259
+ ]);
260
+ await DevelopmentCodeSigningInfoFile.setAsync(easProjectId, {
261
+ easProjectId,
262
+ privateKey: keyPairPEM.privateKeyPEM,
263
+ certificateChain: [
264
+ developmentSigningCertificate,
265
+ expoGoIntermediateCertificate
266
+ ]
267
+ });
268
+ return {
269
+ certificateChainForResponse: [
270
+ developmentSigningCertificate,
271
+ expoGoIntermediateCertificate
272
+ ],
273
+ certificateForPrivateKey: developmentSigningCertificate,
274
+ privateKey: keyPairPEM.privateKeyPEM
275
+ };
276
+ }
277
+ function signManifestString(stringifiedManifest, codeSigningInfo) {
278
+ const privateKey = (0, _codeSigningCertificates).convertPrivateKeyPEMToPrivateKey(codeSigningInfo.privateKey);
279
+ const certificate = (0, _codeSigningCertificates).convertCertificatePEMToCertificate(codeSigningInfo.certificateForPrivateKey);
280
+ return (0, _codeSigningCertificates).signStringRSASHA256AndVerify(privateKey, certificate, stringifiedManifest);
281
+ }
282
+
283
+ //# sourceMappingURL=codesigning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/codesigning.ts"],"sourcesContent":["import {\n convertCertificatePEMToCertificate,\n convertKeyPairToPEM,\n convertCSRToCSRPEM,\n generateKeyPair,\n generateCSR,\n convertPrivateKeyPEMToPrivateKey,\n validateSelfSignedCertificate,\n signStringRSASHA256AndVerify,\n} from '@expo/code-signing-certificates';\nimport { ExpoConfig } from '@expo/config';\nimport { getExpoHomeDirectory } from '@expo/config/build/getUserState';\nimport JsonFile, { JSONObject } from '@expo/json-file';\nimport { promises as fs } from 'fs';\nimport { pki as PKI } from 'node-forge';\nimport path from 'path';\nimport { Dictionary, parseDictionary } from 'structured-headers';\n\nimport { getExpoGoIntermediateCertificateAsync } from '../api/getExpoGoIntermediateCertificate';\nimport { getProjectDevelopmentCertificateAsync } from '../api/getProjectDevelopmentCertificate';\nimport { APISettings } from '../api/settings';\nimport * as Log from '../log';\nimport { CommandError } from './errors';\n\nexport type CodeSigningInfo = {\n privateKey: string;\n certificateForPrivateKey: string;\n /**\n * Chain of certificates to serve in the manifest multipart body \"certificate_chain\" part.\n * The leaf certificate must be the 0th element of the array, followed by any intermediate certificates\n * necessary to evaluate the chain of trust ending in the implicitly trusted root certificate embedded in\n * the client.\n *\n * An empty array indicates that there is no need to serve the certificate chain in the multipart response.\n */\n certificateChainForResponse: string[];\n};\n\ntype StoredDevelopmentExpoRootCodeSigningInfo = {\n easProjectId: string | null;\n privateKey: string | null;\n certificateChain: string[] | null;\n};\nconst DEVELOPMENT_CODE_SIGNING_SETTINGS_FILE_NAME = 'development-code-signing-settings.json';\n\nexport function getDevelopmentCodeSigningDirectory(): string {\n return path.join(getExpoHomeDirectory(), 'codesigning');\n}\n\nfunction getProjectDevelopmentCodeSigningInfoFile<T extends JSONObject>(defaults: T) {\n function getFile(easProjectId: string): JsonFile<T> {\n const filePath = path.join(\n getDevelopmentCodeSigningDirectory(),\n easProjectId,\n DEVELOPMENT_CODE_SIGNING_SETTINGS_FILE_NAME\n );\n return new JsonFile<T>(filePath);\n }\n\n async function readAsync(easProjectId: string): Promise<T> {\n let projectSettings;\n try {\n projectSettings = await getFile(easProjectId).readAsync();\n } catch {\n projectSettings = await getFile(easProjectId).writeAsync(defaults, { ensureDir: true });\n }\n // Set defaults for any missing fields\n return { ...defaults, ...projectSettings };\n }\n\n async function setAsync(easProjectId: string, json: Partial<T>): Promise<T> {\n try {\n return await getFile(easProjectId).mergeAsync(json, {\n cantReadFileDefault: defaults,\n });\n } catch {\n return await getFile(easProjectId).writeAsync(\n {\n ...defaults,\n ...json,\n },\n { ensureDir: true }\n );\n }\n }\n\n return {\n getFile,\n readAsync,\n setAsync,\n };\n}\n\nexport const DevelopmentCodeSigningInfoFile =\n getProjectDevelopmentCodeSigningInfoFile<StoredDevelopmentExpoRootCodeSigningInfo>({\n easProjectId: null,\n privateKey: null,\n certificateChain: null,\n });\n\n/**\n * Get info necessary to generate a response `expo-signature` header given a project and incoming request `expo-expect-signature` header.\n * This only knows how to serve two code signing keyids:\n * - `expo-root` indicates that it should use a development certificate in the `expo-root` chain. See {@link getExpoRootDevelopmentCodeSigningInfoAsync}\n * - <developer's expo-updates keyid> indicates that it should sign with the configured certificate. See {@link getProjectCodeSigningCertificateAsync}\n */\nexport async function getCodeSigningInfoAsync(\n exp: ExpoConfig,\n expectSignatureHeader: string | null,\n privateKeyPath: string | undefined\n): Promise<CodeSigningInfo | null> {\n if (!expectSignatureHeader) {\n return null;\n }\n\n let parsedExpectSignature: Dictionary;\n try {\n parsedExpectSignature = parseDictionary(expectSignatureHeader);\n } catch {\n throw new CommandError('Invalid value for expo-expect-signature header');\n }\n\n const expectedKeyIdOuter = parsedExpectSignature.get('keyid');\n if (!expectedKeyIdOuter) {\n throw new CommandError('keyid not present in expo-expect-signature header');\n }\n\n const expectedKeyId = expectedKeyIdOuter[0];\n if (typeof expectedKeyId !== 'string') {\n throw new CommandError(\n `Invalid value for keyid in expo-expect-signature header: ${expectedKeyId}`\n );\n }\n\n let expectedAlg: string | null = null;\n const expectedAlgOuter = parsedExpectSignature.get('alg');\n if (expectedAlgOuter) {\n const expectedAlgTemp = expectedAlgOuter[0];\n if (typeof expectedAlgTemp !== 'string') {\n throw new CommandError('Invalid value for alg in expo-expect-signature header');\n }\n expectedAlg = expectedAlgTemp;\n }\n\n if (expectedKeyId === 'expo-root') {\n return await getExpoRootDevelopmentCodeSigningInfoAsync(exp);\n } else if (expectedKeyId === 'expo-go') {\n throw new CommandError(\n 'Invalid certificate requested: cannot sign with embedded keyid=expo-go key'\n );\n } else {\n return await getProjectCodeSigningCertificateAsync(\n exp,\n privateKeyPath,\n expectedKeyId,\n expectedAlg\n );\n }\n}\n\n/**\n * Get a development code signing certificate for the expo-root -> expo-go -> (development certificate) certificate chain.\n * This requires the user be logged in and online, otherwise try to use the cached development certificate.\n */\nasync function getExpoRootDevelopmentCodeSigningInfoAsync(\n exp: ExpoConfig\n): Promise<CodeSigningInfo | null> {\n const easProjectId = exp.extra?.eas?.projectId;\n // can't check for scope key validity since scope key is derived on the server from projectId and we may be offline.\n // we rely upon the client certificate check to validate the scope key\n if (!easProjectId) {\n Log.warn('No project ID specified in app.json, unable to sign manifest');\n return null;\n }\n\n const developmentCodeSigningInfoFromFile = await DevelopmentCodeSigningInfoFile.readAsync(\n easProjectId\n );\n const validatedCodeSigningInfo = validateStoredDevelopmentExpoRootCertificateCodeSigningInfo(\n developmentCodeSigningInfoFromFile,\n easProjectId\n );\n\n // 1. If online, ensure logged in, generate key pair and CSR, fetch and cache certificate chain for projectId\n // (overwriting existing dev cert in case projectId changed or it has expired)\n if (!APISettings.isOffline) {\n try {\n return await fetchAndCacheNewDevelopmentCodeSigningInfoAsync(easProjectId);\n } catch (e) {\n if (validatedCodeSigningInfo) {\n Log.warn(\n 'There was an error fetching the Expo development certificate, falling back to cached certificate'\n );\n return validatedCodeSigningInfo;\n } else {\n throw e;\n }\n }\n }\n\n // 2. check for cached cert/private key matching projectId and scopeKey of project, if found and valid return private key and cert chain including expo-go cert\n if (validatedCodeSigningInfo) {\n return validatedCodeSigningInfo;\n }\n\n // 3. if offline, return null\n Log.warn('Offline and no cached development certificate found, unable to sign manifest');\n return null;\n}\n\n/**\n * Get the certificate configured for expo-updates for this project.\n */\nasync function getProjectCodeSigningCertificateAsync(\n exp: ExpoConfig,\n privateKeyPath: string | undefined,\n expectedKeyId: string,\n expectedAlg: string | null\n): Promise<CodeSigningInfo | null> {\n const codeSigningCertificatePath = exp.updates?.codeSigningCertificate;\n if (!codeSigningCertificatePath) {\n return null;\n }\n\n if (!privateKeyPath) {\n throw new CommandError(\n 'Must specify --private-key-path argument to sign development manifest for requested code signing key'\n );\n }\n\n const codeSigningMetadata = exp.updates?.codeSigningMetadata;\n if (!codeSigningMetadata) {\n throw new CommandError(\n 'Must specify \"codeSigningMetadata\" under the \"updates\" field of your app config file to use EAS code signing'\n );\n }\n\n const { alg, keyid } = codeSigningMetadata;\n if (!alg || !keyid) {\n throw new CommandError(\n 'Must specify \"keyid\" and \"alg\" in the \"codeSigningMetadata\" field under the \"updates\" field of your app config file to use EAS code signing'\n );\n }\n\n if (expectedKeyId !== keyid) {\n throw new CommandError(`keyid mismatch: client=${expectedKeyId}, project=${keyid}`);\n }\n\n if (expectedAlg && expectedAlg !== alg) {\n throw new CommandError(`\"alg\" field mismatch (client=${expectedAlg}, project=${alg})`);\n }\n\n const { privateKeyPEM, certificatePEM } =\n await getProjectPrivateKeyAndCertificateFromFilePathsAsync({\n codeSigningCertificatePath,\n privateKeyPath,\n });\n\n return {\n privateKey: privateKeyPEM,\n certificateForPrivateKey: certificatePEM,\n certificateChainForResponse: [],\n };\n}\n\nasync function readFileWithErrorAsync(path: string, errorMessage: string): Promise<string> {\n try {\n return await fs.readFile(path, 'utf8');\n } catch {\n throw new CommandError(errorMessage);\n }\n}\n\nasync function getProjectPrivateKeyAndCertificateFromFilePathsAsync({\n codeSigningCertificatePath,\n privateKeyPath,\n}: {\n codeSigningCertificatePath: string;\n privateKeyPath: string;\n}): Promise<{ privateKeyPEM: string; certificatePEM: string }> {\n const [codeSigningCertificatePEM, privateKeyPEM] = await Promise.all([\n readFileWithErrorAsync(\n codeSigningCertificatePath,\n `Code signing certificate cannot be read from path: ${codeSigningCertificatePath}`\n ),\n readFileWithErrorAsync(\n privateKeyPath,\n `Code signing private key cannot be read from path: ${privateKeyPath}`\n ),\n ]);\n\n const privateKey = convertPrivateKeyPEMToPrivateKey(privateKeyPEM);\n const certificate = convertCertificatePEMToCertificate(codeSigningCertificatePEM);\n validateSelfSignedCertificate(certificate, {\n publicKey: certificate.publicKey as PKI.rsa.PublicKey,\n privateKey,\n });\n\n return { privateKeyPEM, certificatePEM: codeSigningCertificatePEM };\n}\n\n/**\n * Validate that the cached code signing info is still valid for the current project and\n * that it hasn't expired. If invalid, return null.\n */\nfunction validateStoredDevelopmentExpoRootCertificateCodeSigningInfo(\n codeSigningInfo: StoredDevelopmentExpoRootCodeSigningInfo,\n easProjectId: string\n): CodeSigningInfo | null {\n if (codeSigningInfo.easProjectId !== easProjectId) {\n return null;\n }\n\n const { privateKey: privateKeyPEM, certificateChain: certificatePEMs } = codeSigningInfo;\n if (!privateKeyPEM || !certificatePEMs) {\n return null;\n }\n\n const certificateChain = certificatePEMs.map((certificatePEM) =>\n convertCertificatePEMToCertificate(certificatePEM)\n );\n\n // TODO(wschurman): maybe move to @expo/code-signing-certificates\n const leafCertificate = certificateChain[0];\n const now = new Date();\n if (leafCertificate.validity.notBefore > now || leafCertificate.validity.notAfter < now) {\n return null;\n }\n\n // TODO(wschurman): maybe do more validation\n\n return {\n certificateChainForResponse: certificatePEMs,\n certificateForPrivateKey: certificatePEMs[0],\n privateKey: privateKeyPEM,\n };\n}\n\nasync function fetchAndCacheNewDevelopmentCodeSigningInfoAsync(\n easProjectId: string\n): Promise<CodeSigningInfo> {\n const keyPair = generateKeyPair();\n const keyPairPEM = convertKeyPairToPEM(keyPair);\n const csr = generateCSR(keyPair, `Development Certificate for ${easProjectId}`);\n const csrPEM = convertCSRToCSRPEM(csr);\n const [developmentSigningCertificate, expoGoIntermediateCertificate] = await Promise.all([\n getProjectDevelopmentCertificateAsync(easProjectId, csrPEM),\n getExpoGoIntermediateCertificateAsync(easProjectId),\n ]);\n\n await DevelopmentCodeSigningInfoFile.setAsync(easProjectId, {\n easProjectId,\n privateKey: keyPairPEM.privateKeyPEM,\n certificateChain: [developmentSigningCertificate, expoGoIntermediateCertificate],\n });\n\n return {\n certificateChainForResponse: [developmentSigningCertificate, expoGoIntermediateCertificate],\n certificateForPrivateKey: developmentSigningCertificate,\n privateKey: keyPairPEM.privateKeyPEM,\n };\n}\n/**\n * Generate the `expo-signature` header for a manifest and code signing info.\n */\nexport function signManifestString(\n stringifiedManifest: string,\n codeSigningInfo: CodeSigningInfo\n): string {\n const privateKey = convertPrivateKeyPEMToPrivateKey(codeSigningInfo.privateKey);\n const certificate = convertCertificatePEMToCertificate(codeSigningInfo.certificateForPrivateKey);\n return signStringRSASHA256AndVerify(privateKey, certificate, stringifiedManifest);\n}\n"],"names":["getDevelopmentCodeSigningDirectory","getCodeSigningInfoAsync","signManifestString","Log","DEVELOPMENT_CODE_SIGNING_SETTINGS_FILE_NAME","path","join","getExpoHomeDirectory","getProjectDevelopmentCodeSigningInfoFile","defaults","getFile","easProjectId","filePath","JsonFile","readAsync","projectSettings","writeAsync","ensureDir","setAsync","json","mergeAsync","cantReadFileDefault","DevelopmentCodeSigningInfoFile","privateKey","certificateChain","exp","expectSignatureHeader","privateKeyPath","parsedExpectSignature","parseDictionary","CommandError","expectedKeyIdOuter","get","expectedKeyId","expectedAlg","expectedAlgOuter","expectedAlgTemp","getExpoRootDevelopmentCodeSigningInfoAsync","getProjectCodeSigningCertificateAsync","extra","eas","projectId","warn","developmentCodeSigningInfoFromFile","validatedCodeSigningInfo","validateStoredDevelopmentExpoRootCertificateCodeSigningInfo","APISettings","isOffline","fetchAndCacheNewDevelopmentCodeSigningInfoAsync","e","codeSigningCertificatePath","updates","codeSigningCertificate","codeSigningMetadata","alg","keyid","privateKeyPEM","certificatePEM","getProjectPrivateKeyAndCertificateFromFilePathsAsync","certificateForPrivateKey","certificateChainForResponse","readFileWithErrorAsync","errorMessage","fs","readFile","codeSigningCertificatePEM","Promise","all","convertPrivateKeyPEMToPrivateKey","certificate","convertCertificatePEMToCertificate","validateSelfSignedCertificate","publicKey","codeSigningInfo","certificatePEMs","map","leafCertificate","now","Date","validity","notBefore","notAfter","keyPair","generateKeyPair","keyPairPEM","convertKeyPairToPEM","csr","generateCSR","csrPEM","convertCSRToCSRPEM","developmentSigningCertificate","expoGoIntermediateCertificate","getProjectDevelopmentCertificateAsync","getExpoGoIntermediateCertificateAsync","stringifiedManifest","signStringRSASHA256AndVerify"],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.createEntryResolver = createEntryResolver;
6
+ exports.createFileTransform = createFileTransform;
7
+ var _configPlugins = require("@expo/config-plugins");
8
+ var _minipass = _interopRequireDefault(require("minipass"));
9
+ var _path = _interopRequireDefault(require("path"));
10
+ function _interopRequireDefault(obj) {
11
+ return obj && obj.__esModule ? obj : {
12
+ default: obj
13
+ };
14
+ }
15
+ function escapeXMLCharacters(original) {
16
+ const noAmps = original.replace("&", "&amp;");
17
+ const noLt = noAmps.replace("<", "&lt;");
18
+ const noGt = noLt.replace(">", "&gt;");
19
+ const noApos = noGt.replace('"', '\\"');
20
+ return noApos.replace("'", "\\'");
21
+ }
22
+ class Transformer extends _minipass.default {
23
+ constructor(settings){
24
+ super();
25
+ this.settings = settings;
26
+ this.data = "";
27
+ }
28
+ write(data) {
29
+ this.data += data;
30
+ return true;
31
+ }
32
+ getNormalizedName() {
33
+ if ([
34
+ ".xml",
35
+ ".plist"
36
+ ].includes(this.settings.extension)) {
37
+ return escapeXMLCharacters(this.settings.name);
38
+ }
39
+ return this.settings.name;
40
+ }
41
+ end() {
42
+ const name = this.getNormalizedName();
43
+ const replaced = this.data.replace(/Hello App Display Name/g, name).replace(/HelloWorld/g, _configPlugins.IOSConfig.XcodeUtils.sanitizedName(name)).replace(/helloworld/g, _configPlugins.IOSConfig.XcodeUtils.sanitizedName(name.toLowerCase()));
44
+ super.write(replaced);
45
+ return super.end();
46
+ }
47
+ }
48
+ function createEntryResolver(name) {
49
+ return (entry)=>{
50
+ if (name) {
51
+ // Rewrite paths for bare workflow
52
+ entry.path = entry.path.replace(/HelloWorld/g, entry.path.includes("android") ? _configPlugins.IOSConfig.XcodeUtils.sanitizedName(name.toLowerCase()) : _configPlugins.IOSConfig.XcodeUtils.sanitizedName(name)).replace(/helloworld/g, _configPlugins.IOSConfig.XcodeUtils.sanitizedName(name).toLowerCase());
53
+ }
54
+ if (entry.type && /^file$/i.test(entry.type) && _path.default.basename(entry.path) === "gitignore") {
55
+ // Rename `gitignore` because npm ignores files named `.gitignore` when publishing.
56
+ // See: https://github.com/npm/npm/issues/1862
57
+ entry.path = entry.path.replace(/gitignore$/, ".gitignore");
58
+ }
59
+ };
60
+ }
61
+ function createFileTransform(name) {
62
+ return (entry)=>{
63
+ const extension = _path.default.extname(entry.path);
64
+ // Binary files, don't process these (avoid decoding as utf8)
65
+ if (![
66
+ ".png",
67
+ ".jpg",
68
+ ".jpeg",
69
+ ".gif",
70
+ ".webp",
71
+ ".psd",
72
+ ".tiff",
73
+ ".svg",
74
+ ".jar",
75
+ ".keystore",
76
+ // Font files
77
+ ".otf",
78
+ ".ttf",
79
+ ].includes(extension) && name) {
80
+ return new Transformer({
81
+ name,
82
+ extension
83
+ });
84
+ }
85
+ return undefined;
86
+ };
87
+ }
88
+
89
+ //# sourceMappingURL=createFileTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/createFileTransform.ts"],"sourcesContent":["import { IOSConfig } from '@expo/config-plugins';\nimport Minipass from 'minipass';\nimport path from 'path';\nimport { ReadEntry } from 'tar';\n\nfunction escapeXMLCharacters(original: string): string {\n const noAmps = original.replace('&', '&amp;');\n const noLt = noAmps.replace('<', '&lt;');\n const noGt = noLt.replace('>', '&gt;');\n const noApos = noGt.replace('\"', '\\\\\"');\n return noApos.replace(\"'\", \"\\\\'\");\n}\n\nclass Transformer extends Minipass {\n data = '';\n\n constructor(private settings: { name: string; extension: string }) {\n super();\n }\n\n write(data: string) {\n this.data += data;\n return true;\n }\n\n getNormalizedName(): string {\n if (['.xml', '.plist'].includes(this.settings.extension)) {\n return escapeXMLCharacters(this.settings.name);\n }\n return this.settings.name;\n }\n\n end() {\n const name = this.getNormalizedName();\n const replaced = this.data\n .replace(/Hello App Display Name/g, name)\n .replace(/HelloWorld/g, IOSConfig.XcodeUtils.sanitizedName(name))\n .replace(/helloworld/g, IOSConfig.XcodeUtils.sanitizedName(name.toLowerCase()));\n super.write(replaced);\n return super.end();\n }\n}\n\nexport function createEntryResolver(name: string) {\n return (entry: ReadEntry) => {\n if (name) {\n // Rewrite paths for bare workflow\n entry.path = entry.path\n .replace(\n /HelloWorld/g,\n entry.path.includes('android')\n ? IOSConfig.XcodeUtils.sanitizedName(name.toLowerCase())\n : IOSConfig.XcodeUtils.sanitizedName(name)\n )\n .replace(/helloworld/g, IOSConfig.XcodeUtils.sanitizedName(name).toLowerCase());\n }\n if (entry.type && /^file$/i.test(entry.type) && path.basename(entry.path) === 'gitignore') {\n // Rename `gitignore` because npm ignores files named `.gitignore` when publishing.\n // See: https://github.com/npm/npm/issues/1862\n entry.path = entry.path.replace(/gitignore$/, '.gitignore');\n }\n };\n}\n\nexport function createFileTransform(name: string) {\n return (entry: ReadEntry) => {\n const extension = path.extname(entry.path);\n\n // Binary files, don't process these (avoid decoding as utf8)\n if (\n ![\n '.png',\n '.jpg',\n '.jpeg',\n '.gif',\n '.webp',\n '.psd',\n '.tiff',\n '.svg',\n '.jar',\n '.keystore',\n\n // Font files\n '.otf',\n '.ttf',\n ].includes(extension) &&\n name\n ) {\n return new Transformer({ name, extension });\n }\n return undefined;\n };\n}\n"],"names":["createEntryResolver","createFileTransform","escapeXMLCharacters","original","noAmps","replace","noLt","noGt","noApos","Transformer","Minipass","constructor","settings","data","write","getNormalizedName","includes","extension","name","end","replaced","IOSConfig","XcodeUtils","sanitizedName","toLowerCase","entry","path","type","test","basename","extname","undefined"],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.delayAsync = delayAsync;
6
+ exports.waitForActionAsync = waitForActionAsync;
7
+ exports.resolveWithTimeout = resolveWithTimeout;
8
+ var _errors = require("./errors");
9
+ function delayAsync(timeout) {
10
+ return new Promise((resolve)=>setTimeout(resolve, timeout)
11
+ );
12
+ }
13
+ async function waitForActionAsync({ action , interval =100 , maxWaitTime =20000 }) {
14
+ let complete;
15
+ const start = Date.now();
16
+ do {
17
+ const actionStartTime = Date.now();
18
+ complete = await action();
19
+ const actionTimeElapsed = Date.now() - actionStartTime;
20
+ const remainingDelayInterval = interval - actionTimeElapsed;
21
+ if (remainingDelayInterval > 0) {
22
+ await delayAsync(remainingDelayInterval);
23
+ }
24
+ if (Date.now() - start > maxWaitTime) {
25
+ break;
26
+ }
27
+ }while (!complete);
28
+ return complete;
29
+ }
30
+ function resolveWithTimeout(action, { timeout , errorMessage }) {
31
+ return new Promise((resolve, reject)=>{
32
+ setTimeout(()=>{
33
+ reject(new _errors.CommandError("TIMEOUT", errorMessage));
34
+ }, timeout);
35
+ action().then(resolve, reject);
36
+ });
37
+ }
38
+
39
+ //# sourceMappingURL=delay.js.map