@expo/cli 0.0.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/README.md +106 -0
  2. package/build/bin/cli +152 -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 +75 -0
  57. package/build/src/config/index.js.map +1 -0
  58. package/build/src/export/createBundles.js +62 -0
  59. package/build/src/export/createBundles.js.map +1 -0
  60. package/build/src/export/createMetadataJson.js +36 -0
  61. package/build/src/export/createMetadataJson.js.map +1 -0
  62. package/build/src/export/exportApp.js +102 -0
  63. package/build/src/export/exportApp.js.map +1 -0
  64. package/build/src/export/exportAssets.js +106 -0
  65. package/build/src/export/exportAssets.js.map +1 -0
  66. package/build/src/export/exportAsync.js +49 -0
  67. package/build/src/export/exportAsync.js.map +1 -0
  68. package/build/src/export/fork-bundleAsync.js +138 -0
  69. package/build/src/export/fork-bundleAsync.js.map +1 -0
  70. package/build/src/export/getPublicExpoManifest.js +28 -0
  71. package/build/src/export/getPublicExpoManifest.js.map +1 -0
  72. package/build/src/export/getResolvedLocales.js +35 -0
  73. package/build/src/export/getResolvedLocales.js.map +1 -0
  74. package/build/src/export/index.js +77 -0
  75. package/build/src/export/index.js.map +1 -0
  76. package/build/src/export/printBundleSizes.js +122 -0
  77. package/build/src/export/printBundleSizes.js.map +1 -0
  78. package/build/src/export/resolveOptions.js +24 -0
  79. package/build/src/export/resolveOptions.js.map +1 -0
  80. package/build/src/export/saveAssets.js +65 -0
  81. package/build/src/export/saveAssets.js.map +1 -0
  82. package/build/src/export/writeContents.js +108 -0
  83. package/build/src/export/writeContents.js.map +1 -0
  84. package/build/src/install/checkPackages.js +74 -0
  85. package/build/src/install/checkPackages.js.map +1 -0
  86. package/build/src/install/index.js +49 -0
  87. package/build/src/install/index.js.map +1 -0
  88. package/build/src/install/installAsync.js +103 -0
  89. package/build/src/install/installAsync.js.map +1 -0
  90. package/build/src/install/resolveOptions.js +99 -0
  91. package/build/src/install/resolveOptions.js.map +1 -0
  92. package/build/src/install/utils/autoAddConfigPlugins.js +87 -0
  93. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -0
  94. package/build/src/log.js +74 -0
  95. package/build/src/log.js.map +1 -0
  96. package/build/src/login/index.js +62 -0
  97. package/build/src/login/index.js.map +1 -0
  98. package/build/src/logout/index.js +48 -0
  99. package/build/src/logout/index.js.map +1 -0
  100. package/build/src/prebuild/clearNativeFolder.js +137 -0
  101. package/build/src/prebuild/clearNativeFolder.js.map +1 -0
  102. package/build/src/prebuild/configureProjectAsync.js +68 -0
  103. package/build/src/prebuild/configureProjectAsync.js.map +1 -0
  104. package/build/src/prebuild/copyTemplateFiles.js +124 -0
  105. package/build/src/prebuild/copyTemplateFiles.js.map +1 -0
  106. package/build/src/prebuild/ensureConfigAsync.js +86 -0
  107. package/build/src/prebuild/ensureConfigAsync.js.map +1 -0
  108. package/build/src/prebuild/index.js +90 -0
  109. package/build/src/prebuild/index.js.map +1 -0
  110. package/build/src/prebuild/prebuildAsync.js +112 -0
  111. package/build/src/prebuild/prebuildAsync.js.map +1 -0
  112. package/build/src/prebuild/resolveOptions.js +97 -0
  113. package/build/src/prebuild/resolveOptions.js.map +1 -0
  114. package/build/src/prebuild/resolveTemplate.js +157 -0
  115. package/build/src/prebuild/resolveTemplate.js.map +1 -0
  116. package/build/src/prebuild/updateFromTemplate.js +102 -0
  117. package/build/src/prebuild/updateFromTemplate.js.map +1 -0
  118. package/build/src/prebuild/updatePackageJson.js +236 -0
  119. package/build/src/prebuild/updatePackageJson.js.map +1 -0
  120. package/build/src/prebuild/writeMetroConfig.js +89 -0
  121. package/build/src/prebuild/writeMetroConfig.js.map +1 -0
  122. package/build/src/register/index.js +48 -0
  123. package/build/src/register/index.js.map +1 -0
  124. package/build/src/register/registerAsync.js +37 -0
  125. package/build/src/register/registerAsync.js.map +1 -0
  126. package/build/src/run/android/index.js +97 -0
  127. package/build/src/run/android/index.js.map +1 -0
  128. package/build/src/run/android/resolveDevice.js +23 -0
  129. package/build/src/run/android/resolveDevice.js.map +1 -0
  130. package/build/src/run/android/resolveGradleProps.js +37 -0
  131. package/build/src/run/android/resolveGradleProps.js.map +1 -0
  132. package/build/src/run/android/resolveInstallApkName.js +72 -0
  133. package/build/src/run/android/resolveInstallApkName.js.map +1 -0
  134. package/build/src/run/android/resolveLaunchProps.js +32 -0
  135. package/build/src/run/android/resolveLaunchProps.js.map +1 -0
  136. package/build/src/run/android/resolveOptions.js +25 -0
  137. package/build/src/run/android/resolveOptions.js.map +1 -0
  138. package/build/src/run/android/runAndroidAsync.js +74 -0
  139. package/build/src/run/android/runAndroidAsync.js.map +1 -0
  140. package/build/src/run/ensureNativeProject.js +33 -0
  141. package/build/src/run/ensureNativeProject.js.map +1 -0
  142. package/build/src/run/hints.js +22 -0
  143. package/build/src/run/hints.js.map +1 -0
  144. package/build/src/run/resolveBundlerProps.js +31 -0
  145. package/build/src/run/resolveBundlerProps.js.map +1 -0
  146. package/build/src/run/startBundler.js +76 -0
  147. package/build/src/run/startBundler.js.map +1 -0
  148. package/build/src/start/doctor/Prerequisite.js +47 -0
  149. package/build/src/start/doctor/Prerequisite.js.map +1 -0
  150. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +68 -0
  151. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -0
  152. package/build/src/start/doctor/apple/XcodePrerequisite.js +115 -0
  153. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -0
  154. package/build/src/start/doctor/apple/XcrunPrerequisite.js +65 -0
  155. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -0
  156. package/build/src/start/doctor/dependencies/bundledNativeModules.js +64 -0
  157. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -0
  158. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +131 -0
  159. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -0
  160. package/build/src/start/doctor/dependencies/getMissingPackages.js +95 -0
  161. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -0
  162. package/build/src/start/doctor/dependencies/getVersionedPackages.js +119 -0
  163. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -0
  164. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +147 -0
  165. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -0
  166. package/build/src/start/doctor/ngrok/ExternalModule.js +164 -0
  167. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -0
  168. package/build/src/start/doctor/ngrok/NgrokResolver.js +17 -0
  169. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -0
  170. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +142 -0
  171. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -0
  172. package/build/src/start/doctor/typescript/updateTSConfig.js +92 -0
  173. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -0
  174. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +112 -0
  175. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -0
  176. package/build/src/start/index.js +116 -0
  177. package/build/src/start/index.js.map +1 -0
  178. package/build/src/start/interface/KeyPressHandler.js +99 -0
  179. package/build/src/start/interface/KeyPressHandler.js.map +1 -0
  180. package/build/src/start/interface/commandsTable.js +175 -0
  181. package/build/src/start/interface/commandsTable.js.map +1 -0
  182. package/build/src/start/interface/interactiveActions.js +134 -0
  183. package/build/src/start/interface/interactiveActions.js.map +1 -0
  184. package/build/src/start/interface/startInterface.js +217 -0
  185. package/build/src/start/interface/startInterface.js.map +1 -0
  186. package/build/src/start/platforms/AppIdResolver.js +44 -0
  187. package/build/src/start/platforms/AppIdResolver.js.map +1 -0
  188. package/build/src/start/platforms/DeviceManager.js +43 -0
  189. package/build/src/start/platforms/DeviceManager.js.map +1 -0
  190. package/build/src/start/platforms/ExpoGoInstaller.js +111 -0
  191. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -0
  192. package/build/src/start/platforms/PlatformManager.js +121 -0
  193. package/build/src/start/platforms/PlatformManager.js.map +1 -0
  194. package/build/src/start/platforms/android/ADBServer.js +129 -0
  195. package/build/src/start/platforms/android/ADBServer.js.map +1 -0
  196. package/build/src/start/platforms/android/AndroidAppIdResolver.js +40 -0
  197. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -0
  198. package/build/src/start/platforms/android/AndroidDeviceManager.js +183 -0
  199. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -0
  200. package/build/src/start/platforms/android/AndroidPlatformManager.js +35 -0
  201. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -0
  202. package/build/src/start/platforms/android/activateWindow.js +80 -0
  203. package/build/src/start/platforms/android/activateWindow.js.map +1 -0
  204. package/build/src/start/platforms/android/adb.js +263 -0
  205. package/build/src/start/platforms/android/adb.js.map +1 -0
  206. package/build/src/start/platforms/android/adbReverse.js +84 -0
  207. package/build/src/start/platforms/android/adbReverse.js.map +1 -0
  208. package/build/src/start/platforms/android/emulator.js +118 -0
  209. package/build/src/start/platforms/android/emulator.js.map +1 -0
  210. package/build/src/start/platforms/android/getDevices.js +36 -0
  211. package/build/src/start/platforms/android/getDevices.js.map +1 -0
  212. package/build/src/start/platforms/android/gradle.js +86 -0
  213. package/build/src/start/platforms/android/gradle.js.map +1 -0
  214. package/build/src/start/platforms/android/promptAndroidDevice.js +60 -0
  215. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -0
  216. package/build/src/start/platforms/ios/AppleAppIdResolver.js +46 -0
  217. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -0
  218. package/build/src/start/platforms/ios/AppleDeviceManager.js +201 -0
  219. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -0
  220. package/build/src/start/platforms/ios/ApplePlatformManager.js +31 -0
  221. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -0
  222. package/build/src/start/platforms/ios/assertSystemRequirements.js +16 -0
  223. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -0
  224. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +85 -0
  225. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -0
  226. package/build/src/start/platforms/ios/getBestSimulator.js +101 -0
  227. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -0
  228. package/build/src/start/platforms/ios/promptAppleDevice.js +60 -0
  229. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -0
  230. package/build/src/start/platforms/ios/simctl.js +229 -0
  231. package/build/src/start/platforms/ios/simctl.js.map +1 -0
  232. package/build/src/start/platforms/ios/xcrun.js +67 -0
  233. package/build/src/start/platforms/ios/xcrun.js.map +1 -0
  234. package/build/src/start/project/devices.js +77 -0
  235. package/build/src/start/project/devices.js.map +1 -0
  236. package/build/src/start/project/dotExpo.js +74 -0
  237. package/build/src/start/project/dotExpo.js.map +1 -0
  238. package/build/src/start/project/settings.js +13 -0
  239. package/build/src/start/project/settings.js.map +1 -0
  240. package/build/src/start/resolveOptions.js +156 -0
  241. package/build/src/start/resolveOptions.js.map +1 -0
  242. package/build/src/start/server/AsyncNgrok.js +173 -0
  243. package/build/src/start/server/AsyncNgrok.js.map +1 -0
  244. package/build/src/start/server/BundlerDevServer.js +312 -0
  245. package/build/src/start/server/BundlerDevServer.js.map +1 -0
  246. package/build/src/start/server/DevServerManager.js +142 -0
  247. package/build/src/start/server/DevServerManager.js.map +1 -0
  248. package/build/src/start/server/DevelopmentSession.js +104 -0
  249. package/build/src/start/server/DevelopmentSession.js.map +1 -0
  250. package/build/src/start/server/UrlCreator.js +159 -0
  251. package/build/src/start/server/UrlCreator.js.map +1 -0
  252. package/build/src/start/server/metro/MetroBundlerDevServer.js +97 -0
  253. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -0
  254. package/build/src/start/server/metro/MetroTerminalReporter.js +178 -0
  255. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -0
  256. package/build/src/start/server/metro/TerminalReporter.js +87 -0
  257. package/build/src/start/server/metro/TerminalReporter.js.map +1 -0
  258. package/build/src/start/server/metro/TerminalReporter.types.js +6 -0
  259. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -0
  260. package/build/src/start/server/metro/instantiateMetro.js +66 -0
  261. package/build/src/start/server/metro/instantiateMetro.js.map +1 -0
  262. package/build/src/start/server/metro/resolveFromProject.js +38 -0
  263. package/build/src/start/server/metro/resolveFromProject.js.map +1 -0
  264. package/build/src/start/server/middleware/ClassicManifestMiddleware.js +145 -0
  265. package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +1 -0
  266. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +185 -0
  267. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -0
  268. package/build/src/start/server/middleware/ExpoMiddleware.js +78 -0
  269. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -0
  270. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +70 -0
  271. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -0
  272. package/build/src/start/server/middleware/ManifestMiddleware.js +177 -0
  273. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -0
  274. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +69 -0
  275. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -0
  276. package/build/src/start/server/middleware/createDevServerMiddleware.js +24 -0
  277. package/build/src/start/server/middleware/createDevServerMiddleware.js.map +1 -0
  278. package/build/src/start/server/middleware/resolveAssets.js +110 -0
  279. package/build/src/start/server/middleware/resolveAssets.js.map +1 -0
  280. package/build/src/start/server/middleware/resolveEntryPoint.js +37 -0
  281. package/build/src/start/server/middleware/resolveEntryPoint.js.map +1 -0
  282. package/build/src/start/server/middleware/resolvePlatform.js +32 -0
  283. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -0
  284. package/build/src/start/server/middleware/server.types.js +6 -0
  285. package/build/src/start/server/middleware/server.types.js.map +1 -0
  286. package/build/src/start/server/openPlatforms.js +30 -0
  287. package/build/src/start/server/openPlatforms.js.map +1 -0
  288. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +299 -0
  289. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -0
  290. package/build/src/start/server/webpack/formatWebpackMessages.js +94 -0
  291. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -0
  292. package/build/src/start/server/webpack/resolveFromProject.js +43 -0
  293. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -0
  294. package/build/src/start/server/webpack/tls.js +72 -0
  295. package/build/src/start/server/webpack/tls.js.map +1 -0
  296. package/build/src/start/startAsync.js +150 -0
  297. package/build/src/start/startAsync.js.map +1 -0
  298. package/build/src/utils/FileNotifier.js +71 -0
  299. package/build/src/utils/FileNotifier.js.map +1 -0
  300. package/build/src/utils/analytics/getDevClientProperties.js +41 -0
  301. package/build/src/utils/analytics/getDevClientProperties.js.map +1 -0
  302. package/build/src/utils/analytics/rudderstackClient.js +106 -0
  303. package/build/src/utils/analytics/rudderstackClient.js.map +1 -0
  304. package/build/src/utils/ansi.js +17 -0
  305. package/build/src/utils/ansi.js.map +1 -0
  306. package/build/src/utils/args.js +77 -0
  307. package/build/src/utils/args.js.map +1 -0
  308. package/build/src/utils/array.js +56 -0
  309. package/build/src/utils/array.js.map +1 -0
  310. package/build/src/utils/cocoapods.js +143 -0
  311. package/build/src/utils/cocoapods.js.map +1 -0
  312. package/build/src/utils/codesigning.js +283 -0
  313. package/build/src/utils/codesigning.js.map +1 -0
  314. package/build/src/utils/createFileTransform.js +89 -0
  315. package/build/src/utils/createFileTransform.js.map +1 -0
  316. package/build/src/utils/delay.js +39 -0
  317. package/build/src/utils/delay.js.map +1 -0
  318. package/build/src/utils/dir.js +38 -0
  319. package/build/src/utils/dir.js.map +1 -0
  320. package/build/src/utils/downloadAppAsync.js +74 -0
  321. package/build/src/utils/downloadAppAsync.js.map +1 -0
  322. package/build/src/utils/downloadExpoGoAsync.js +99 -0
  323. package/build/src/utils/downloadExpoGoAsync.js.map +1 -0
  324. package/build/src/utils/editor.js +60 -0
  325. package/build/src/utils/editor.js.map +1 -0
  326. package/build/src/utils/env.js +62 -0
  327. package/build/src/utils/env.js.map +1 -0
  328. package/build/src/utils/errors.js +69 -0
  329. package/build/src/utils/errors.js.map +1 -0
  330. package/build/src/utils/exit.js +90 -0
  331. package/build/src/utils/exit.js.map +1 -0
  332. package/build/src/utils/findUp.js +33 -0
  333. package/build/src/utils/findUp.js.map +1 -0
  334. package/build/src/utils/fn.js +32 -0
  335. package/build/src/utils/fn.js.map +1 -0
  336. package/build/src/utils/getOrPromptApplicationId.js +183 -0
  337. package/build/src/utils/getOrPromptApplicationId.js.map +1 -0
  338. package/build/src/utils/getRunningProcess.js +92 -0
  339. package/build/src/utils/getRunningProcess.js.map +1 -0
  340. package/build/src/utils/git.js +88 -0
  341. package/build/src/utils/git.js.map +1 -0
  342. package/build/src/utils/glob.js +65 -0
  343. package/build/src/utils/glob.js.map +1 -0
  344. package/build/src/utils/ip.js +16 -0
  345. package/build/src/utils/ip.js.map +1 -0
  346. package/build/src/utils/isModuleSymlinked.js +37 -0
  347. package/build/src/utils/isModuleSymlinked.js.map +1 -0
  348. package/build/src/utils/link.js +31 -0
  349. package/build/src/utils/link.js.map +1 -0
  350. package/build/src/utils/mergeGitIgnorePaths.js +112 -0
  351. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -0
  352. package/build/src/utils/modifyConfigAsync.js +68 -0
  353. package/build/src/utils/modifyConfigAsync.js.map +1 -0
  354. package/build/src/utils/modifyConfigPlugins.js +51 -0
  355. package/build/src/utils/modifyConfigPlugins.js.map +1 -0
  356. package/build/src/utils/nodeModules.js +118 -0
  357. package/build/src/utils/nodeModules.js.map +1 -0
  358. package/build/src/utils/npm.js +144 -0
  359. package/build/src/utils/npm.js.map +1 -0
  360. package/build/src/utils/obj.js +45 -0
  361. package/build/src/utils/obj.js.map +1 -0
  362. package/build/src/utils/ora.js +102 -0
  363. package/build/src/utils/ora.js.map +1 -0
  364. package/build/src/utils/port.js +130 -0
  365. package/build/src/utils/port.js.map +1 -0
  366. package/build/src/utils/profile.js +63 -0
  367. package/build/src/utils/profile.js.map +1 -0
  368. package/build/src/utils/progress.js +15 -0
  369. package/build/src/utils/progress.js.map +1 -0
  370. package/build/src/utils/prompts.js +127 -0
  371. package/build/src/utils/prompts.js.map +1 -0
  372. package/build/src/utils/resolveArgs.js +94 -0
  373. package/build/src/utils/resolveArgs.js.map +1 -0
  374. package/build/src/utils/scheme.js +106 -0
  375. package/build/src/utils/scheme.js.map +1 -0
  376. package/build/src/utils/tar.js +59 -0
  377. package/build/src/utils/tar.js.map +1 -0
  378. package/build/src/utils/url.js +67 -0
  379. package/build/src/utils/url.js.map +1 -0
  380. package/build/src/utils/validateApplicationId.js +90 -0
  381. package/build/src/utils/validateApplicationId.js.map +1 -0
  382. package/build/src/whoami/index.js +47 -0
  383. package/build/src/whoami/index.js.map +1 -0
  384. package/build/src/whoami/whoamiAsync.js +44 -0
  385. package/build/src/whoami/whoamiAsync.js.map +1 -0
  386. package/package.json +132 -4
  387. package/static/loading-page/index.html +270 -0
  388. package/index.js +0 -0
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.formatGradleArguments = formatGradleArguments;
6
+ exports.assembleAsync = assembleAsync;
7
+ exports.installAsync = installAsync;
8
+ exports.spawnGradleAsync = spawnGradleAsync;
9
+ var _spawnAsync = _interopRequireDefault(require("@expo/spawn-async"));
10
+ var _path = _interopRequireDefault(require("path"));
11
+ var _log = require("../../../log");
12
+ var _env = require("../../../utils/env");
13
+ var _errors = require("../../../utils/errors");
14
+ function _interopRequireDefault(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ function upperFirst(name) {
20
+ return name.charAt(0).toUpperCase() + name.slice(1);
21
+ }
22
+ function formatGradleArguments(cmd, { appName , variant , tasks =[
23
+ cmd + upperFirst(variant)
24
+ ] }) {
25
+ return appName ? tasks.map((task)=>`${appName}:${task}`
26
+ ) : tasks;
27
+ }
28
+ function resolveGradleWPath(androidProjectPath) {
29
+ return _path.default.join(androidProjectPath, process.platform === "win32" ? "gradlew.bat" : "gradlew");
30
+ }
31
+ function getPortArg(port) {
32
+ return `-PreactNativeDevServerPort=${port}`;
33
+ }
34
+ async function assembleAsync(androidProjectPath, { variant , port , appName , buildCache }) {
35
+ const task = formatGradleArguments("assemble", {
36
+ variant,
37
+ appName
38
+ });
39
+ const args = [
40
+ ...task,
41
+ // ignore linting errors
42
+ "-x",
43
+ "lint",
44
+ // ignore tests
45
+ "-x",
46
+ "test",
47
+ "--configure-on-demand",
48
+ ];
49
+ if (buildCache) args.push("--build-cache");
50
+ // Generate a profile under `/android/app/build/reports/profile`
51
+ if (_env.env.EXPO_PROFILE) args.push("--profile");
52
+ return await spawnGradleAsync(androidProjectPath, {
53
+ port,
54
+ args
55
+ });
56
+ }
57
+ async function installAsync(androidProjectPath, { variant , appName , port }) {
58
+ const args = formatGradleArguments("install", {
59
+ variant,
60
+ appName
61
+ });
62
+ return await spawnGradleAsync(androidProjectPath, {
63
+ port,
64
+ args
65
+ });
66
+ }
67
+ async function spawnGradleAsync(projectRoot, { port , args }) {
68
+ const gradlew = resolveGradleWPath(projectRoot);
69
+ if (port != null) args.push(getPortArg(port));
70
+ _log.Log.debug(` ${gradlew} ${args.join(" ")}`);
71
+ try {
72
+ return await (0, _spawnAsync).default(gradlew, args, {
73
+ cwd: projectRoot,
74
+ stdio: "inherit"
75
+ });
76
+ } catch (error) {
77
+ // User aborted the command with ctrl-c
78
+ if (error.status === 130) {
79
+ // Fail silently
80
+ throw new _errors.AbortCommandError();
81
+ }
82
+ throw error;
83
+ }
84
+ }
85
+
86
+ //# sourceMappingURL=gradle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/platforms/android/gradle.ts"],"sourcesContent":["import spawnAsync, { SpawnResult } from '@expo/spawn-async';\nimport path from 'path';\n\nimport { Log } from '../../../log';\nimport { env } from '../../../utils/env';\nimport { AbortCommandError } from '../../../utils/errors';\n\nfunction upperFirst(name: string) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}\n\n/** Format gradle assemble arguments. Exposed for testing. */\nexport function formatGradleArguments(\n cmd: 'assemble' | 'install',\n {\n appName,\n variant,\n tasks = [cmd + upperFirst(variant)],\n }: { tasks?: string[]; variant: string; appName: string }\n): string[] {\n return appName ? tasks.map((task) => `${appName}:${task}`) : tasks;\n}\n\nfunction resolveGradleWPath(androidProjectPath: string): string {\n return path.join(androidProjectPath, process.platform === 'win32' ? 'gradlew.bat' : 'gradlew');\n}\n\nfunction getPortArg(port: number): string {\n return `-PreactNativeDevServerPort=${port}`;\n}\n\n/**\n * Build the Android project using Gradle.\n *\n * @param androidProjectPath - Path to the Android project like `projectRoot/android`.\n * @param props.variant - Variant to install.\n * @param props.appName - Name of the 'app' folder, this appears to always be `app`.\n * @param props.port - Dev server port to pass to the install command.\n * @param props.buildCache - Should use the `--build-cache` flag, enabling the [Gradle build cache](https://docs.gradle.org/current/userguide/build_cache.html).\n * @returns - A promise resolving to spawn results.\n */\nexport async function assembleAsync(\n androidProjectPath: string,\n {\n variant,\n port,\n appName,\n buildCache,\n }: {\n variant: string;\n port?: number;\n appName: string;\n buildCache?: boolean;\n }\n): Promise<SpawnResult> {\n const task = formatGradleArguments('assemble', { variant, appName });\n const args = [\n ...task,\n // ignore linting errors\n '-x',\n 'lint',\n // ignore tests\n '-x',\n 'test',\n '--configure-on-demand',\n ];\n\n if (buildCache) args.push('--build-cache');\n\n // Generate a profile under `/android/app/build/reports/profile`\n if (env.EXPO_PROFILE) args.push('--profile');\n\n return await spawnGradleAsync(androidProjectPath, { port, args });\n}\n\n/**\n * Install an app on device or emulator using `gradlew install`.\n *\n * @param androidProjectPath - Path to the Android project like `projectRoot/android`.\n * @param props.variant - Variant to install.\n * @param props.appName - Name of the 'app' folder, this appears to always be `app`.\n * @param props.port - Dev server port to pass to the install command.\n * @returns - A promise resolving to spawn results.\n */\nexport async function installAsync(\n androidProjectPath: string,\n {\n variant,\n appName,\n port,\n }: {\n variant: string;\n appName: string;\n port?: number;\n }\n): Promise<SpawnResult> {\n const args = formatGradleArguments('install', { variant, appName });\n return await spawnGradleAsync(androidProjectPath, { port, args });\n}\n\nexport async function spawnGradleAsync(\n projectRoot: string,\n { port, args }: { port?: number; args: string[] }\n): Promise<SpawnResult> {\n const gradlew = resolveGradleWPath(projectRoot);\n if (port != null) args.push(getPortArg(port));\n Log.debug(` ${gradlew} ${args.join(' ')}`);\n try {\n return await spawnAsync(gradlew, args, {\n cwd: projectRoot,\n stdio: 'inherit',\n });\n } catch (error: any) {\n // User aborted the command with ctrl-c\n if (error.status === 130) {\n // Fail silently\n throw new AbortCommandError();\n }\n throw error;\n }\n}\n"],"names":["formatGradleArguments","assembleAsync","installAsync","spawnGradleAsync","upperFirst","name","charAt","toUpperCase","slice","cmd","appName","variant","tasks","map","task","resolveGradleWPath","androidProjectPath","path","join","process","platform","getPortArg","port","buildCache","args","push","env","EXPO_PROFILE","projectRoot","gradlew","Log","debug","spawnAsync","cwd","stdio","error","status","AbortCommandError"],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.promptForDeviceAsync = promptForDeviceAsync;
6
+ var _chalk = _interopRequireDefault(require("chalk"));
7
+ var _errors = require("../../../utils/errors");
8
+ var _prompts = require("../../../utils/prompts");
9
+ var _adb = require("./adb");
10
+ function _interopRequireDefault(obj) {
11
+ return obj && obj.__esModule ? obj : {
12
+ default: obj
13
+ };
14
+ }
15
+ function nameStyleForDevice(device) {
16
+ const isActive = device.isBooted;
17
+ if (!isActive) {
18
+ // Use no style changes for a disconnected device that is available to be opened.
19
+ return (text)=>text
20
+ ;
21
+ }
22
+ // A device that is connected and ready to be used should be bolded to match iOS.
23
+ if (device.isAuthorized) {
24
+ return _chalk.default.bold;
25
+ }
26
+ // Devices that are unauthorized and connected cannot be used, but they are connected so gray them out.
27
+ return (text)=>_chalk.default.bold(_chalk.default.gray(text))
28
+ ;
29
+ }
30
+ async function promptForDeviceAsync(devices) {
31
+ // TODO: provide an option to add or download more simulators
32
+ const { value } = await (0, _prompts).promptAsync({
33
+ type: "autocomplete",
34
+ name: "value",
35
+ limit: 11,
36
+ message: "Select a device/emulator",
37
+ choices: devices.map((item)=>{
38
+ const format = nameStyleForDevice(item);
39
+ const type = item.isAuthorized ? item.type : "unauthorized";
40
+ return {
41
+ title: `${format(item.name)} ${_chalk.default.dim(`(${type})`)}`,
42
+ value: item.name
43
+ };
44
+ }),
45
+ suggest: (input, choices)=>{
46
+ const regex = new RegExp(input, "i");
47
+ return choices.filter((choice)=>regex.test(choice.title)
48
+ );
49
+ }
50
+ });
51
+ const device = devices.find(({ name })=>name === value
52
+ );
53
+ if ((device == null ? void 0 : device.isAuthorized) === false) {
54
+ (0, _adb).logUnauthorized(device);
55
+ throw new _errors.AbortCommandError();
56
+ }
57
+ return device;
58
+ }
59
+
60
+ //# sourceMappingURL=promptAndroidDevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/platforms/android/promptAndroidDevice.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { AbortCommandError } from '../../../utils/errors';\nimport { promptAsync } from '../../../utils/prompts';\nimport { Device, logUnauthorized } from './adb';\n\nfunction nameStyleForDevice(device: Device): (name: string) => string {\n const isActive = device.isBooted;\n if (!isActive) {\n // Use no style changes for a disconnected device that is available to be opened.\n return (text: string) => text;\n }\n // A device that is connected and ready to be used should be bolded to match iOS.\n if (device.isAuthorized) {\n return chalk.bold;\n }\n // Devices that are unauthorized and connected cannot be used, but they are connected so gray them out.\n return (text: string) => chalk.bold(chalk.gray(text));\n}\n\nexport async function promptForDeviceAsync(devices: Device[]): Promise<Device> {\n // TODO: provide an option to add or download more simulators\n\n const { value } = await promptAsync({\n type: 'autocomplete',\n name: 'value',\n limit: 11,\n message: 'Select a device/emulator',\n choices: devices.map((item) => {\n const format = nameStyleForDevice(item);\n const type = item.isAuthorized ? item.type : 'unauthorized';\n return {\n title: `${format(item.name)} ${chalk.dim(`(${type})`)}`,\n value: item.name,\n };\n }),\n suggest: (input: any, choices: any) => {\n const regex = new RegExp(input, 'i');\n return choices.filter((choice: any) => regex.test(choice.title));\n },\n });\n\n const device = devices.find(({ name }) => name === value);\n\n if (device?.isAuthorized === false) {\n logUnauthorized(device);\n throw new AbortCommandError();\n }\n\n return device!;\n}\n"],"names":["promptForDeviceAsync","nameStyleForDevice","device","isActive","isBooted","text","isAuthorized","chalk","bold","gray","devices","value","promptAsync","type","name","limit","message","choices","map","item","format","title","dim","suggest","input","regex","RegExp","filter","choice","test","find","logUnauthorized","AbortCommandError"],"mappings":"AAAA;;;;QAoBsBA,oBAAoB,GAApBA,oBAAoB;AApBxB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAES,IAAA,OAAuB,WAAvB,uBAAuB,CAAA;AAC7B,IAAA,QAAwB,WAAxB,wBAAwB,CAAA;AACZ,IAAA,IAAO,WAAP,OAAO,CAAA;;;;;;AAE/C,SAASC,kBAAkB,CAACC,MAAc,EAA4B;IACpE,MAAMC,QAAQ,GAAGD,MAAM,CAACE,QAAQ,AAAC;IACjC,IAAI,CAACD,QAAQ,EAAE;QACb,iFAAiF;QACjF,OAAO,CAACE,IAAY,GAAKA,IAAI;QAAA,CAAC;KAC/B;IACD,iFAAiF;IACjF,IAAIH,MAAM,CAACI,YAAY,EAAE;QACvB,OAAOC,MAAK,QAAA,CAACC,IAAI,CAAC;KACnB;IACD,uGAAuG;IACvG,OAAO,CAACH,IAAY,GAAKE,MAAK,QAAA,CAACC,IAAI,CAACD,MAAK,QAAA,CAACE,IAAI,CAACJ,IAAI,CAAC,CAAC;IAAA,CAAC;CACvD;AAEM,eAAeL,oBAAoB,CAACU,OAAiB,EAAmB;IAC7E,6DAA6D;IAE7D,MAAM,EAAEC,KAAK,CAAA,EAAE,GAAG,MAAMC,CAAAA,GAAAA,QAAW,AAiBjC,CAAA,YAjBiC,CAAC;QAClCC,IAAI,EAAE,cAAc;QACpBC,IAAI,EAAE,OAAO;QACbC,KAAK,EAAE,EAAE;QACTC,OAAO,EAAE,0BAA0B;QACnCC,OAAO,EAAEP,OAAO,CAACQ,GAAG,CAAC,CAACC,IAAI,GAAK;YAC7B,MAAMC,MAAM,GAAGnB,kBAAkB,CAACkB,IAAI,CAAC,AAAC;YACxC,MAAMN,IAAI,GAAGM,IAAI,CAACb,YAAY,GAAGa,IAAI,CAACN,IAAI,GAAG,cAAc,AAAC;YAC5D,OAAO;gBACLQ,KAAK,EAAE,CAAC,EAAED,MAAM,CAACD,IAAI,CAACL,IAAI,CAAC,CAAC,CAAC,EAAEP,MAAK,QAAA,CAACe,GAAG,CAAC,CAAC,CAAC,EAAET,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvDF,KAAK,EAAEQ,IAAI,CAACL,IAAI;aACjB,CAAC;SACH,CAAC;QACFS,OAAO,EAAE,CAACC,KAAU,EAAEP,OAAY,GAAK;YACrC,MAAMQ,KAAK,GAAG,IAAIC,MAAM,CAACF,KAAK,EAAE,GAAG,CAAC,AAAC;YACrC,OAAOP,OAAO,CAACU,MAAM,CAAC,CAACC,MAAW,GAAKH,KAAK,CAACI,IAAI,CAACD,MAAM,CAACP,KAAK,CAAC;YAAA,CAAC,CAAC;SAClE;KACF,CAAC,AAAC;IAEH,MAAMnB,MAAM,GAAGQ,OAAO,CAACoB,IAAI,CAAC,CAAC,EAAEhB,IAAI,CAAA,EAAE,GAAKA,IAAI,KAAKH,KAAK;IAAA,CAAC,AAAC;IAE1D,IAAIT,CAAAA,MAAM,QAAc,GAApBA,KAAAA,CAAoB,GAApBA,MAAM,CAAEI,YAAY,CAAA,KAAK,KAAK,EAAE;QAClCyB,CAAAA,GAAAA,IAAe,AAAQ,CAAA,gBAAR,CAAC7B,MAAM,CAAC,CAAC;QACxB,MAAM,IAAI8B,OAAiB,kBAAA,EAAE,CAAC;KAC/B;IAED,OAAO9B,MAAM,CAAE;CAChB"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _configPlugins = require("@expo/config-plugins");
6
+ var _plist = _interopRequireDefault(require("@expo/plist"));
7
+ var _fs = _interopRequireDefault(require("fs"));
8
+ var _appIdResolver = require("../AppIdResolver");
9
+ function _interopRequireDefault(obj) {
10
+ return obj && obj.__esModule ? obj : {
11
+ default: obj
12
+ };
13
+ }
14
+ class AppleAppIdResolver extends _appIdResolver.AppIdResolver {
15
+ constructor(projectRoot){
16
+ super(projectRoot, "ios", "ios.bundleIdentifier");
17
+ }
18
+ async hasNativeProjectAsync() {
19
+ try {
20
+ return !!_configPlugins.IOSConfig.Paths.getAppDelegateFilePath(this.projectRoot);
21
+ } catch {
22
+ return true;
23
+ }
24
+ }
25
+ async resolveAppIdFromNativeAsync() {
26
+ // Check xcode project
27
+ try {
28
+ const bundleId = _configPlugins.IOSConfig.BundleIdentifier.getBundleIdentifierFromPbxproj(this.projectRoot);
29
+ if (bundleId) {
30
+ return bundleId;
31
+ }
32
+ } catch {}
33
+ // Check Info.plist
34
+ try {
35
+ const infoPlistPath = _configPlugins.IOSConfig.Paths.getInfoPlistPath(this.projectRoot);
36
+ const data = await _plist.default.parse(_fs.default.readFileSync(infoPlistPath, "utf8"));
37
+ if (data.CFBundleIdentifier && !data.CFBundleIdentifier.startsWith("$(")) {
38
+ return data.CFBundleIdentifier;
39
+ }
40
+ } catch {}
41
+ return null;
42
+ }
43
+ }
44
+ exports.AppleAppIdResolver = AppleAppIdResolver;
45
+
46
+ //# sourceMappingURL=AppleAppIdResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/platforms/ios/AppleAppIdResolver.ts"],"sourcesContent":["import { IOSConfig } from '@expo/config-plugins';\nimport plist from '@expo/plist';\nimport fs from 'fs';\n\nimport { AppIdResolver } from '../AppIdResolver';\n\n/** Resolves the iOS bundle identifier from the Expo config or native files. */\nexport class AppleAppIdResolver extends AppIdResolver {\n constructor(projectRoot: string) {\n super(projectRoot, 'ios', 'ios.bundleIdentifier');\n }\n\n async hasNativeProjectAsync(): Promise<boolean> {\n try {\n return !!IOSConfig.Paths.getAppDelegateFilePath(this.projectRoot);\n } catch {\n return true;\n }\n }\n\n async resolveAppIdFromNativeAsync(): Promise<string | null> {\n // Check xcode project\n try {\n const bundleId = IOSConfig.BundleIdentifier.getBundleIdentifierFromPbxproj(this.projectRoot);\n if (bundleId) {\n return bundleId;\n }\n } catch {}\n\n // Check Info.plist\n try {\n const infoPlistPath = IOSConfig.Paths.getInfoPlistPath(this.projectRoot);\n const data = await plist.parse(fs.readFileSync(infoPlistPath, 'utf8'));\n if (data.CFBundleIdentifier && !data.CFBundleIdentifier.startsWith('$(')) {\n return data.CFBundleIdentifier;\n }\n } catch {}\n\n return null;\n }\n}\n"],"names":["AppleAppIdResolver","AppIdResolver","constructor","projectRoot","hasNativeProjectAsync","IOSConfig","Paths","getAppDelegateFilePath","resolveAppIdFromNativeAsync","bundleId","BundleIdentifier","getBundleIdentifierFromPbxproj","infoPlistPath","getInfoPlistPath","data","plist","parse","fs","readFileSync","CFBundleIdentifier","startsWith"],"mappings":"AAAA;;;;AAA0B,IAAA,cAAsB,WAAtB,sBAAsB,CAAA;AAC9B,IAAA,MAAa,kCAAb,aAAa,EAAA;AAChB,IAAA,GAAI,kCAAJ,IAAI,EAAA;AAEW,IAAA,cAAkB,WAAlB,kBAAkB,CAAA;;;;;;AAGzC,MAAMA,kBAAkB,SAASC,cAAa,cAAA;IACnDC,YAAYC,WAAmB,CAAE;QAC/B,KAAK,CAACA,WAAW,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;KACnD;IAED,MAAMC,qBAAqB,GAAqB;QAC9C,IAAI;YACF,OAAO,CAAC,CAACC,cAAS,UAAA,CAACC,KAAK,CAACC,sBAAsB,CAAC,IAAI,CAACJ,WAAW,CAAC,CAAC;SACnE,CAAC,OAAM;YACN,OAAO,IAAI,CAAC;SACb;KACF;IAED,MAAMK,2BAA2B,GAA2B;QAC1D,sBAAsB;QACtB,IAAI;YACF,MAAMC,QAAQ,GAAGJ,cAAS,UAAA,CAACK,gBAAgB,CAACC,8BAA8B,CAAC,IAAI,CAACR,WAAW,CAAC,AAAC;YAC7F,IAAIM,QAAQ,EAAE;gBACZ,OAAOA,QAAQ,CAAC;aACjB;SACF,CAAC,OAAM,EAAE;QAEV,mBAAmB;QACnB,IAAI;YACF,MAAMG,aAAa,GAAGP,cAAS,UAAA,CAACC,KAAK,CAACO,gBAAgB,CAAC,IAAI,CAACV,WAAW,CAAC,AAAC;YACzE,MAAMW,IAAI,GAAG,MAAMC,MAAK,QAAA,CAACC,KAAK,CAACC,GAAE,QAAA,CAACC,YAAY,CAACN,aAAa,EAAE,MAAM,CAAC,CAAC,AAAC;YACvE,IAAIE,IAAI,CAACK,kBAAkB,IAAI,CAACL,IAAI,CAACK,kBAAkB,CAACC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACxE,OAAON,IAAI,CAACK,kBAAkB,CAAC;aAChC;SACF,CAAC,OAAM,EAAE;QAEV,OAAO,IAAI,CAAC;KACb;CACF;QAjCYnB,kBAAkB,GAAlBA,kBAAkB"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.ensureSimulatorOpenAsync = ensureSimulatorOpenAsync;
6
+ var osascript = _interopRequireWildcard(require("@expo/osascript"));
7
+ var _assert = _interopRequireDefault(require("assert"));
8
+ var _chalk = _interopRequireDefault(require("chalk"));
9
+ var _delay = require("../../../utils/delay");
10
+ var _errors = require("../../../utils/errors");
11
+ var _url = require("../../../utils/url");
12
+ var _deviceManager = require("../DeviceManager");
13
+ var _expoGoInstaller = require("../ExpoGoInstaller");
14
+ var _assertSystemRequirements = require("./assertSystemRequirements");
15
+ var _ensureSimulatorAppRunning = require("./ensureSimulatorAppRunning");
16
+ var _getBestSimulator = require("./getBestSimulator");
17
+ var _promptAppleDevice = require("./promptAppleDevice");
18
+ var SimControl = _interopRequireWildcard(require("./simctl"));
19
+ function _interopRequireDefault(obj) {
20
+ return obj && obj.__esModule ? obj : {
21
+ default: obj
22
+ };
23
+ }
24
+ function _interopRequireWildcard(obj) {
25
+ if (obj && obj.__esModule) {
26
+ return obj;
27
+ } else {
28
+ var newObj = {};
29
+ if (obj != null) {
30
+ for(var key in obj){
31
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
32
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
33
+ if (desc.get || desc.set) {
34
+ Object.defineProperty(newObj, key, desc);
35
+ } else {
36
+ newObj[key] = obj[key];
37
+ }
38
+ }
39
+ }
40
+ }
41
+ newObj.default = obj;
42
+ return newObj;
43
+ }
44
+ }
45
+ const EXPO_GO_BUNDLE_IDENTIFIER = "host.exp.Exponent";
46
+ async function ensureSimulatorOpenAsync({ udid , osType } = {}, tryAgain = true) {
47
+ // Use a default simulator if none was specified
48
+ if (!udid) {
49
+ // If a simulator is open, side step the entire booting sequence.
50
+ const simulatorOpenedByApp = await (0, _getBestSimulator).getBestBootedSimulatorAsync({
51
+ osType
52
+ });
53
+ if (simulatorOpenedByApp) {
54
+ return simulatorOpenedByApp;
55
+ }
56
+ // Otherwise, find the best possible simulator from user defaults and continue
57
+ const bestUdid = await (0, _getBestSimulator).getBestUnbootedSimulatorAsync({
58
+ osType
59
+ });
60
+ if (!bestUdid) {
61
+ throw new _errors.CommandError("No simulators found.");
62
+ }
63
+ udid = bestUdid;
64
+ }
65
+ const bootedDevice = await (0, _delay).waitForActionAsync({
66
+ action: ()=>{
67
+ // Just for the type check.
68
+ (0, _assert).default(udid);
69
+ return SimControl.bootAsync({
70
+ udid
71
+ });
72
+ }
73
+ });
74
+ if (!bootedDevice) {
75
+ // Give it a second chance, this might not be needed but it could potentially lead to a better UX on slower devices.
76
+ if (tryAgain) {
77
+ return await ensureSimulatorOpenAsync({
78
+ udid,
79
+ osType
80
+ }, false);
81
+ }
82
+ // TODO: We should eliminate all needs for a timeout error, it's bad UX to get an error about the simulator not starting while the user can clearly see it starting on their slow computer.
83
+ throw new _errors.CommandError("SIMULATOR_TIMEOUT", `Simulator didn't boot fast enough. Try opening Simulator first, then running your app.`);
84
+ }
85
+ return bootedDevice;
86
+ }
87
+ class AppleDeviceManager extends _deviceManager.DeviceManager {
88
+ static assertSystemRequirementsAsync = _assertSystemRequirements.assertSystemRequirementsAsync;
89
+ static async resolveAsync({ device , shouldPrompt } = {}) {
90
+ if (shouldPrompt) {
91
+ const devices = await (0, _getBestSimulator).getSelectableSimulatorsAsync(device);
92
+ device = await (0, _promptAppleDevice).promptAppleDeviceAsync(devices, device == null ? void 0 : device.osType);
93
+ }
94
+ const booted = await ensureSimulatorOpenAsync(device);
95
+ return new AppleDeviceManager(booted);
96
+ }
97
+ get name() {
98
+ return this.device.name;
99
+ }
100
+ get identifier() {
101
+ return this.device.udid;
102
+ }
103
+ async getAppVersionAsync(appId) {
104
+ return await SimControl.getInfoPlistValueAsync(this.device, {
105
+ appId,
106
+ key: "CFBundleShortVersionString"
107
+ });
108
+ }
109
+ async startAsync() {
110
+ return ensureSimulatorOpenAsync({
111
+ osType: this.device.osType,
112
+ udid: this.device.udid
113
+ });
114
+ }
115
+ async launchApplicationIdAsync(appId) {
116
+ try {
117
+ const result = await SimControl.openAppIdAsync(this.device, {
118
+ appId
119
+ });
120
+ if (result.status === 0) {
121
+ await this.activateWindowAsync();
122
+ } else {
123
+ throw new _errors.CommandError(result.stderr);
124
+ }
125
+ } catch (error) {
126
+ let errorMessage = `Couldn't open iOS app with ID "${appId}" on device "${this.name}".`;
127
+ if (error instanceof _errors.CommandError && error.code === "APP_NOT_INSTALLED") {
128
+ errorMessage += `\nThe app might not be installed, try installing it with: ${_chalk.default.bold(`expo run:ios -d ${this.device.udid}`)}`;
129
+ }
130
+ if (error.stderr) {
131
+ errorMessage += _chalk.default.gray(`\n${error.stderr}`);
132
+ } else if (error.message) {
133
+ errorMessage += _chalk.default.gray(`\n${error.message}`);
134
+ }
135
+ throw new _errors.CommandError(errorMessage);
136
+ }
137
+ }
138
+ async installAppAsync(filePath) {
139
+ await SimControl.installAsync(this.device, {
140
+ filePath
141
+ });
142
+ await this.waitForAppInstalledAsync(await this.getApplicationIdFromBundle(filePath));
143
+ }
144
+ async getApplicationIdFromBundle(filePath) {
145
+ // TODO: Implement...
146
+ return EXPO_GO_BUNDLE_IDENTIFIER;
147
+ }
148
+ async waitForAppInstalledAsync(applicationId) {
149
+ while(true){
150
+ if (await this.isAppInstalledAsync(applicationId)) {
151
+ return true;
152
+ }
153
+ await (0, _delay).delayAsync(100);
154
+ }
155
+ }
156
+ async uninstallAppAsync(appId) {
157
+ await SimControl.uninstallAsync(this.device, {
158
+ appId
159
+ });
160
+ }
161
+ async isAppInstalledAsync(appId) {
162
+ return !!await SimControl.getContainerPathAsync(this.device, {
163
+ appId
164
+ });
165
+ }
166
+ async openUrlAsync(url) {
167
+ // Non-compliant URLs will be treated as application identifiers.
168
+ if (!(0, _url).validateUrl(url, {
169
+ requireProtocol: true
170
+ })) {
171
+ return await this.launchApplicationIdAsync(url);
172
+ }
173
+ try {
174
+ await SimControl.openUrlAsync(this.device, {
175
+ url
176
+ });
177
+ } catch (error) {
178
+ // 194 means the device does not conform to a given URL, in this case we'll assume that the desired app is not installed.
179
+ if (error.status === 194) {
180
+ // An error was encountered processing the command (domain=NSOSStatusErrorDomain, code=-10814):
181
+ // The operation couldn’t be completed. (OSStatus error -10814.)
182
+ //
183
+ // This can be thrown when no app conforms to the URI scheme that we attempted to open.
184
+ throw new _errors.CommandError("APP_NOT_INSTALLED", `Device ${this.device.name} (${this.device.udid}) has no app to handle the URI: ${url}`);
185
+ }
186
+ throw error;
187
+ }
188
+ }
189
+ async activateWindowAsync() {
190
+ await (0, _ensureSimulatorAppRunning).ensureSimulatorAppRunningAsync(this.device);
191
+ // TODO: Focus the individual window
192
+ await osascript.execAsync(`tell application "Simulator" to activate`);
193
+ }
194
+ async ensureExpoGoAsync(sdkVersion) {
195
+ const installer = new _expoGoInstaller.ExpoGoInstaller("ios", EXPO_GO_BUNDLE_IDENTIFIER, sdkVersion);
196
+ return installer.ensureAsync(this);
197
+ }
198
+ }
199
+ exports.AppleDeviceManager = AppleDeviceManager;
200
+
201
+ //# sourceMappingURL=AppleDeviceManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/platforms/ios/AppleDeviceManager.ts"],"sourcesContent":["import * as osascript from '@expo/osascript';\nimport assert from 'assert';\nimport chalk from 'chalk';\n\nimport { delayAsync, waitForActionAsync } from '../../../utils/delay';\nimport { CommandError } from '../../../utils/errors';\nimport { validateUrl } from '../../../utils/url';\nimport { DeviceManager } from '../DeviceManager';\nimport { ExpoGoInstaller } from '../ExpoGoInstaller';\nimport { BaseResolveDeviceProps } from '../PlatformManager';\nimport { assertSystemRequirementsAsync } from './assertSystemRequirements';\nimport { ensureSimulatorAppRunningAsync } from './ensureSimulatorAppRunning';\nimport {\n getBestBootedSimulatorAsync,\n getBestUnbootedSimulatorAsync,\n getSelectableSimulatorsAsync,\n} from './getBestSimulator';\nimport { promptAppleDeviceAsync } from './promptAppleDevice';\nimport * as SimControl from './simctl';\n\nconst EXPO_GO_BUNDLE_IDENTIFIER = 'host.exp.Exponent';\n\n/**\n * Ensure a simulator is booted and the Simulator app is opened.\n * This is where any timeout related error handling should live.\n */\nexport async function ensureSimulatorOpenAsync(\n { udid, osType }: Partial<Pick<SimControl.Device, 'udid' | 'osType'>> = {},\n tryAgain: boolean = true\n): Promise<SimControl.Device> {\n // Use a default simulator if none was specified\n if (!udid) {\n // If a simulator is open, side step the entire booting sequence.\n const simulatorOpenedByApp = await getBestBootedSimulatorAsync({ osType });\n if (simulatorOpenedByApp) {\n return simulatorOpenedByApp;\n }\n\n // Otherwise, find the best possible simulator from user defaults and continue\n const bestUdid = await getBestUnbootedSimulatorAsync({ osType });\n if (!bestUdid) {\n throw new CommandError('No simulators found.');\n }\n udid = bestUdid;\n }\n\n const bootedDevice = await waitForActionAsync({\n action: () => {\n // Just for the type check.\n assert(udid);\n return SimControl.bootAsync({ udid });\n },\n });\n\n if (!bootedDevice) {\n // Give it a second chance, this might not be needed but it could potentially lead to a better UX on slower devices.\n if (tryAgain) {\n return await ensureSimulatorOpenAsync({ udid, osType }, false);\n }\n // TODO: We should eliminate all needs for a timeout error, it's bad UX to get an error about the simulator not starting while the user can clearly see it starting on their slow computer.\n throw new CommandError(\n 'SIMULATOR_TIMEOUT',\n `Simulator didn't boot fast enough. Try opening Simulator first, then running your app.`\n );\n }\n return bootedDevice;\n}\nexport class AppleDeviceManager extends DeviceManager<SimControl.Device> {\n static assertSystemRequirementsAsync = assertSystemRequirementsAsync;\n\n static async resolveAsync({\n device,\n shouldPrompt,\n }: BaseResolveDeviceProps<\n Pick<SimControl.Device, 'udid' | 'osType'>\n > = {}): Promise<AppleDeviceManager> {\n if (shouldPrompt) {\n const devices = await getSelectableSimulatorsAsync(device);\n device = await promptAppleDeviceAsync(devices, device?.osType);\n }\n\n const booted = await ensureSimulatorOpenAsync(device);\n return new AppleDeviceManager(booted);\n }\n\n get name() {\n return this.device.name;\n }\n\n get identifier(): string {\n return this.device.udid;\n }\n\n async getAppVersionAsync(appId: string): Promise<string | null> {\n return await SimControl.getInfoPlistValueAsync(this.device, {\n appId,\n key: 'CFBundleShortVersionString',\n });\n }\n\n async startAsync(): Promise<SimControl.Device> {\n return ensureSimulatorOpenAsync({ osType: this.device.osType, udid: this.device.udid });\n }\n\n async launchApplicationIdAsync(appId: string) {\n try {\n const result = await SimControl.openAppIdAsync(this.device, {\n appId,\n });\n if (result.status === 0) {\n await this.activateWindowAsync();\n } else {\n throw new CommandError(result.stderr);\n }\n } catch (error: any) {\n let errorMessage = `Couldn't open iOS app with ID \"${appId}\" on device \"${this.name}\".`;\n if (error instanceof CommandError && error.code === 'APP_NOT_INSTALLED') {\n errorMessage += `\\nThe app might not be installed, try installing it with: ${chalk.bold(\n `expo run:ios -d ${this.device.udid}`\n )}`;\n }\n if (error.stderr) {\n errorMessage += chalk.gray(`\\n${error.stderr}`);\n } else if (error.message) {\n errorMessage += chalk.gray(`\\n${error.message}`);\n }\n throw new CommandError(errorMessage);\n }\n }\n\n async installAppAsync(filePath: string) {\n await SimControl.installAsync(this.device, {\n filePath,\n });\n\n await this.waitForAppInstalledAsync(await this.getApplicationIdFromBundle(filePath));\n }\n\n private async getApplicationIdFromBundle(filePath: string): Promise<string> {\n // TODO: Implement...\n return EXPO_GO_BUNDLE_IDENTIFIER;\n }\n\n private async waitForAppInstalledAsync(applicationId: string): Promise<boolean> {\n while (true) {\n if (await this.isAppInstalledAsync(applicationId)) {\n return true;\n }\n await delayAsync(100);\n }\n }\n\n async uninstallAppAsync(appId: string) {\n await SimControl.uninstallAsync(this.device, {\n appId,\n });\n }\n\n async isAppInstalledAsync(appId: string) {\n return !!(await SimControl.getContainerPathAsync(this.device, {\n appId,\n }));\n }\n\n async openUrlAsync(url: string) {\n // Non-compliant URLs will be treated as application identifiers.\n if (!validateUrl(url, { requireProtocol: true })) {\n return await this.launchApplicationIdAsync(url);\n }\n\n try {\n await SimControl.openUrlAsync(this.device, { url });\n } catch (error: any) {\n // 194 means the device does not conform to a given URL, in this case we'll assume that the desired app is not installed.\n if (error.status === 194) {\n // An error was encountered processing the command (domain=NSOSStatusErrorDomain, code=-10814):\n // The operation couldn’t be completed. (OSStatus error -10814.)\n //\n // This can be thrown when no app conforms to the URI scheme that we attempted to open.\n throw new CommandError(\n 'APP_NOT_INSTALLED',\n `Device ${this.device.name} (${this.device.udid}) has no app to handle the URI: ${url}`\n );\n }\n throw error;\n }\n }\n\n async activateWindowAsync() {\n await ensureSimulatorAppRunningAsync(this.device);\n // TODO: Focus the individual window\n await osascript.execAsync(`tell application \"Simulator\" to activate`);\n }\n\n async ensureExpoGoAsync(sdkVersion?: string): Promise<boolean> {\n const installer = new ExpoGoInstaller('ios', EXPO_GO_BUNDLE_IDENTIFIER, sdkVersion);\n return installer.ensureAsync(this);\n }\n}\n"],"names":["ensureSimulatorOpenAsync","osascript","SimControl","EXPO_GO_BUNDLE_IDENTIFIER","udid","osType","tryAgain","simulatorOpenedByApp","getBestBootedSimulatorAsync","bestUdid","getBestUnbootedSimulatorAsync","CommandError","bootedDevice","waitForActionAsync","action","assert","bootAsync","AppleDeviceManager","DeviceManager","assertSystemRequirementsAsync","resolveAsync","device","shouldPrompt","devices","getSelectableSimulatorsAsync","promptAppleDeviceAsync","booted","name","identifier","getAppVersionAsync","appId","getInfoPlistValueAsync","key","startAsync","launchApplicationIdAsync","result","openAppIdAsync","status","activateWindowAsync","stderr","error","errorMessage","code","chalk","bold","gray","message","installAppAsync","filePath","installAsync","waitForAppInstalledAsync","getApplicationIdFromBundle","applicationId","isAppInstalledAsync","delayAsync","uninstallAppAsync","uninstallAsync","getContainerPathAsync","openUrlAsync","url","validateUrl","requireProtocol","ensureSimulatorAppRunningAsync","execAsync","ensureExpoGoAsync","sdkVersion","installer","ExpoGoInstaller","ensureAsync"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _platformManager = require("../PlatformManager");
6
+ var _appleAppIdResolver = require("./AppleAppIdResolver");
7
+ var _appleDeviceManager = require("./AppleDeviceManager");
8
+ class ApplePlatformManager extends _platformManager.PlatformManager {
9
+ constructor(projectRoot, port, options){
10
+ super(projectRoot, {
11
+ platform: "ios",
12
+ ...options,
13
+ resolveDeviceAsync: _appleDeviceManager.AppleDeviceManager.resolveAsync
14
+ });
15
+ this.projectRoot = projectRoot;
16
+ this.port = port;
17
+ }
18
+ async openAsync(options, resolveSettings) {
19
+ await _appleDeviceManager.AppleDeviceManager.assertSystemRequirementsAsync();
20
+ return super.openAsync(options, resolveSettings);
21
+ }
22
+ _getAppIdResolver() {
23
+ return new _appleAppIdResolver.AppleAppIdResolver(this.projectRoot);
24
+ }
25
+ _resolveAlternativeLaunchUrl(applicationId, props) {
26
+ return applicationId;
27
+ }
28
+ }
29
+ exports.ApplePlatformManager = ApplePlatformManager;
30
+
31
+ //# sourceMappingURL=ApplePlatformManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/platforms/ios/ApplePlatformManager.ts"],"sourcesContent":["import { AppIdResolver } from '../AppIdResolver';\nimport { BaseOpenInCustomProps, PlatformManager } from '../PlatformManager';\nimport { AppleAppIdResolver } from './AppleAppIdResolver';\nimport { AppleDeviceManager } from './AppleDeviceManager';\nimport { Device } from './simctl';\n\n/** Manages launching apps on Apple simulators. */\nexport class ApplePlatformManager extends PlatformManager<Device> {\n constructor(\n protected projectRoot: string,\n protected port: number,\n options: {\n /** Get the base URL for the dev server hosting this platform manager. */\n getDevServerUrl: () => string | null;\n /** Expo Go URL */\n getExpoGoUrl: () => string | null;\n /** Dev Client */\n getCustomRuntimeUrl: (props?: { scheme?: string }) => string | null;\n }\n ) {\n super(projectRoot, {\n platform: 'ios',\n ...options,\n resolveDeviceAsync: AppleDeviceManager.resolveAsync,\n });\n }\n\n async openAsync(\n options:\n | { runtime: 'expo' | 'web' }\n | { runtime: 'custom'; props?: Partial<BaseOpenInCustomProps> },\n resolveSettings?: Partial<{ shouldPrompt?: boolean; device?: Device }>\n ): Promise<{ url: string }> {\n await AppleDeviceManager.assertSystemRequirementsAsync();\n return super.openAsync(options, resolveSettings);\n }\n\n _getAppIdResolver(): AppIdResolver {\n return new AppleAppIdResolver(this.projectRoot);\n }\n\n _resolveAlternativeLaunchUrl(\n applicationId: string,\n props?: Partial<BaseOpenInCustomProps>\n ): string {\n return applicationId;\n }\n}\n"],"names":["ApplePlatformManager","PlatformManager","constructor","projectRoot","port","options","platform","resolveDeviceAsync","AppleDeviceManager","resolveAsync","openAsync","resolveSettings","assertSystemRequirementsAsync","_getAppIdResolver","AppleAppIdResolver","_resolveAlternativeLaunchUrl","applicationId","props"],"mappings":"AAAA;;;;AACuD,IAAA,gBAAoB,WAApB,oBAAoB,CAAA;AACxC,IAAA,mBAAsB,WAAtB,sBAAsB,CAAA;AACtB,IAAA,mBAAsB,WAAtB,sBAAsB,CAAA;AAIlD,MAAMA,oBAAoB,SAASC,gBAAe,gBAAA;IACvDC,YACYC,WAAmB,EACnBC,IAAY,EACtBC,OAOC,CACD;QACA,KAAK,CAACF,WAAW,EAAE;YACjBG,QAAQ,EAAE,KAAK;YACf,GAAGD,OAAO;YACVE,kBAAkB,EAAEC,mBAAkB,mBAAA,CAACC,YAAY;SACpD,CAAC,CAAC;aAfON,WAAmB,GAAnBA,WAAmB;aACnBC,IAAY,GAAZA,IAAY;KAevB;IAED,MAAMM,SAAS,CACbL,OAEiE,EACjEM,eAAsE,EAC5C;QAC1B,MAAMH,mBAAkB,mBAAA,CAACI,6BAA6B,EAAE,CAAC;QACzD,OAAO,KAAK,CAACF,SAAS,CAACL,OAAO,EAAEM,eAAe,CAAC,CAAC;KAClD;IAEDE,iBAAiB,GAAkB;QACjC,OAAO,IAAIC,mBAAkB,mBAAA,CAAC,IAAI,CAACX,WAAW,CAAC,CAAC;KACjD;IAEDY,4BAA4B,CAC1BC,aAAqB,EACrBC,KAAsC,EAC9B;QACR,OAAOD,aAAa,CAAC;KACtB;CACF;QAxCYhB,oBAAoB,GAApBA,oBAAoB"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.assertSystemRequirementsAsync = assertSystemRequirementsAsync;
6
+ var _simulatorAppPrerequisite = require("../../doctor/apple/SimulatorAppPrerequisite");
7
+ var _xcodePrerequisite = require("../../doctor/apple/XcodePrerequisite");
8
+ var _xcrunPrerequisite = require("../../doctor/apple/XcrunPrerequisite");
9
+ async function assertSystemRequirementsAsync() {
10
+ // Order is important
11
+ await _xcodePrerequisite.XcodePrerequisite.instance.assertAsync();
12
+ await _xcrunPrerequisite.XcrunPrerequisite.instance.assertAsync();
13
+ await _simulatorAppPrerequisite.SimulatorAppPrerequisite.instance.assertAsync();
14
+ }
15
+
16
+ //# sourceMappingURL=assertSystemRequirements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/platforms/ios/assertSystemRequirements.ts"],"sourcesContent":["import { SimulatorAppPrerequisite } from '../../doctor/apple/SimulatorAppPrerequisite';\nimport { XcodePrerequisite } from '../../doctor/apple/XcodePrerequisite';\nimport { XcrunPrerequisite } from '../../doctor/apple/XcrunPrerequisite';\n\nexport async function assertSystemRequirementsAsync() {\n // Order is important\n await XcodePrerequisite.instance.assertAsync();\n await XcrunPrerequisite.instance.assertAsync();\n await SimulatorAppPrerequisite.instance.assertAsync();\n}\n"],"names":["assertSystemRequirementsAsync","XcodePrerequisite","instance","assertAsync","XcrunPrerequisite","SimulatorAppPrerequisite"],"mappings":"AAAA;;;;QAIsBA,6BAA6B,GAA7BA,6BAA6B;AAJV,IAAA,yBAA6C,WAA7C,6CAA6C,CAAA;AACpD,IAAA,kBAAsC,WAAtC,sCAAsC,CAAA;AACtC,IAAA,kBAAsC,WAAtC,sCAAsC,CAAA;AAEjE,eAAeA,6BAA6B,GAAG;IACpD,qBAAqB;IACrB,MAAMC,kBAAiB,kBAAA,CAACC,QAAQ,CAACC,WAAW,EAAE,CAAC;IAC/C,MAAMC,kBAAiB,kBAAA,CAACF,QAAQ,CAACC,WAAW,EAAE,CAAC;IAC/C,MAAME,yBAAwB,yBAAA,CAACH,QAAQ,CAACC,WAAW,EAAE,CAAC;CACvD"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.ensureSimulatorAppRunningAsync = ensureSimulatorAppRunningAsync;
6
+ var osascript = _interopRequireWildcard(require("@expo/osascript"));
7
+ var _spawnAsync = _interopRequireDefault(require("@expo/spawn-async"));
8
+ var Log = _interopRequireWildcard(require("../../../log"));
9
+ var _delay = require("../../../utils/delay");
10
+ var _errors = require("../../../utils/errors");
11
+ function _interopRequireDefault(obj) {
12
+ return obj && obj.__esModule ? obj : {
13
+ default: obj
14
+ };
15
+ }
16
+ function _interopRequireWildcard(obj) {
17
+ if (obj && obj.__esModule) {
18
+ return obj;
19
+ } else {
20
+ var newObj = {};
21
+ if (obj != null) {
22
+ for(var key in obj){
23
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
24
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
25
+ if (desc.get || desc.set) {
26
+ Object.defineProperty(newObj, key, desc);
27
+ } else {
28
+ newObj[key] = obj[key];
29
+ }
30
+ }
31
+ }
32
+ }
33
+ newObj.default = obj;
34
+ return newObj;
35
+ }
36
+ }
37
+ async function ensureSimulatorAppRunningAsync(device, { maxWaitTime } = {}) {
38
+ if (await isSimulatorAppRunningAsync()) {
39
+ return;
40
+ }
41
+ Log.log(`\u203A Opening the iOS simulator, this might take a moment.`);
42
+ // In theory this would ensure the correct simulator is booted as well.
43
+ // This isn't theory though, this is Xcode.
44
+ await openSimulatorAppAsync(device);
45
+ if (!await waitForSimulatorAppToStart({
46
+ maxWaitTime
47
+ })) {
48
+ throw new _errors.CommandError("SIMULATOR_TIMEOUT", `Simulator app did not open fast enough. Try opening Simulator first, then running your app.`);
49
+ }
50
+ }
51
+ async function waitForSimulatorAppToStart({ maxWaitTime } = {}) {
52
+ return (0, _delay).waitForActionAsync({
53
+ interval: 50,
54
+ maxWaitTime,
55
+ action: isSimulatorAppRunningAsync
56
+ });
57
+ }
58
+ // I think the app can be open while no simulators are booted.
59
+ async function isSimulatorAppRunningAsync() {
60
+ try {
61
+ const zeroMeansNo = (await osascript.execAsync('tell app "System Events" to count processes whose name is "Simulator"')).trim();
62
+ if (zeroMeansNo === "0") {
63
+ return false;
64
+ }
65
+ } catch (error) {
66
+ if (error.message.includes("Application isn\u2019t running")) {
67
+ return false;
68
+ }
69
+ throw error;
70
+ }
71
+ return true;
72
+ }
73
+ async function openSimulatorAppAsync(device) {
74
+ const args = [
75
+ "-a",
76
+ "Simulator"
77
+ ];
78
+ if (device.udid) {
79
+ // This has no effect if the app is already running.
80
+ args.push("--args", "-CurrentDeviceUDID", device.udid);
81
+ }
82
+ await (0, _spawnAsync).default("open", args);
83
+ }
84
+
85
+ //# sourceMappingURL=ensureSimulatorAppRunning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/platforms/ios/ensureSimulatorAppRunning.ts"],"sourcesContent":["import * as osascript from '@expo/osascript';\nimport spawnAsync from '@expo/spawn-async';\n\nimport * as Log from '../../../log';\nimport { waitForActionAsync } from '../../../utils/delay';\nimport { CommandError } from '../../../utils/errors';\nimport { Device } from './simctl';\n\n/** Open the Simulator.app and return when the system registers it as 'open'. */\nexport async function ensureSimulatorAppRunningAsync(\n device: Partial<Pick<Device, 'udid'>>,\n {\n maxWaitTime,\n }: {\n maxWaitTime?: number;\n } = {}\n): Promise<void> {\n if (await isSimulatorAppRunningAsync()) {\n return;\n }\n\n Log.log(`\\u203A Opening the iOS simulator, this might take a moment.`);\n\n // In theory this would ensure the correct simulator is booted as well.\n // This isn't theory though, this is Xcode.\n await openSimulatorAppAsync(device);\n\n if (!(await waitForSimulatorAppToStart({ maxWaitTime }))) {\n throw new CommandError(\n 'SIMULATOR_TIMEOUT',\n `Simulator app did not open fast enough. Try opening Simulator first, then running your app.`\n );\n }\n}\n\nasync function waitForSimulatorAppToStart({\n maxWaitTime,\n}: { maxWaitTime?: number } = {}): Promise<boolean> {\n return waitForActionAsync<boolean>({\n interval: 50,\n maxWaitTime,\n action: isSimulatorAppRunningAsync,\n });\n}\n\n// I think the app can be open while no simulators are booted.\nasync function isSimulatorAppRunningAsync(): Promise<boolean> {\n try {\n const zeroMeansNo = (\n await osascript.execAsync(\n 'tell app \"System Events\" to count processes whose name is \"Simulator\"'\n )\n ).trim();\n if (zeroMeansNo === '0') {\n return false;\n }\n } catch (error: any) {\n if (error.message.includes('Application isn’t running')) {\n return false;\n }\n throw error;\n }\n\n return true;\n}\n\nasync function openSimulatorAppAsync(device: { udid?: string }) {\n const args = ['-a', 'Simulator'];\n if (device.udid) {\n // This has no effect if the app is already running.\n args.push('--args', '-CurrentDeviceUDID', device.udid);\n }\n await spawnAsync('open', args);\n}\n"],"names":["ensureSimulatorAppRunningAsync","osascript","Log","device","maxWaitTime","isSimulatorAppRunningAsync","log","openSimulatorAppAsync","waitForSimulatorAppToStart","CommandError","waitForActionAsync","interval","action","zeroMeansNo","execAsync","trim","error","message","includes","args","udid","push","spawnAsync"],"mappings":"AAAA;;;;QASsBA,8BAA8B,GAA9BA,8BAA8B;AATxCC,IAAAA,SAAS,mCAAM,iBAAiB,EAAvB;AACE,IAAA,WAAmB,kCAAnB,mBAAmB,EAAA;AAE9BC,IAAAA,GAAG,mCAAM,cAAc,EAApB;AACoB,IAAA,MAAsB,WAAtB,sBAAsB,CAAA;AAC5B,IAAA,OAAuB,WAAvB,uBAAuB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAI7C,eAAeF,8BAA8B,CAClDG,MAAqC,EACrC,EACEC,WAAW,CAAA,EAGZ,GAAG,EAAE,EACS;IACf,IAAI,MAAMC,0BAA0B,EAAE,EAAE;QACtC,OAAO;KACR;IAEDH,GAAG,CAACI,GAAG,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC;IAEvE,uEAAuE;IACvE,2CAA2C;IAC3C,MAAMC,qBAAqB,CAACJ,MAAM,CAAC,CAAC;IAEpC,IAAI,CAAE,MAAMK,0BAA0B,CAAC;QAAEJ,WAAW;KAAE,CAAC,AAAC,EAAE;QACxD,MAAM,IAAIK,OAAY,aAAA,CACpB,mBAAmB,EACnB,CAAC,2FAA2F,CAAC,CAC9F,CAAC;KACH;CACF;AAED,eAAeD,0BAA0B,CAAC,EACxCJ,WAAW,CAAA,EACc,GAAG,EAAE,EAAoB;IAClD,OAAOM,CAAAA,GAAAA,MAAkB,AAIvB,CAAA,mBAJuB,CAAU;QACjCC,QAAQ,EAAE,EAAE;QACZP,WAAW;QACXQ,MAAM,EAAEP,0BAA0B;KACnC,CAAC,CAAC;CACJ;AAED,8DAA8D;AAC9D,eAAeA,0BAA0B,GAAqB;IAC5D,IAAI;QACF,MAAMQ,WAAW,GAAG,CAClB,MAAMZ,SAAS,CAACa,SAAS,CACvB,uEAAuE,CACxE,CACF,CAACC,IAAI,EAAE,AAAC;QACT,IAAIF,WAAW,KAAK,GAAG,EAAE;YACvB,OAAO,KAAK,CAAC;SACd;KACF,CAAC,OAAOG,KAAK,EAAO;QACnB,IAAIA,KAAK,CAACC,OAAO,CAACC,QAAQ,CAAC,gCAA2B,CAAC,EAAE;YACvD,OAAO,KAAK,CAAC;SACd;QACD,MAAMF,KAAK,CAAC;KACb;IAED,OAAO,IAAI,CAAC;CACb;AAED,eAAeT,qBAAqB,CAACJ,MAAyB,EAAE;IAC9D,MAAMgB,IAAI,GAAG;QAAC,IAAI;QAAE,WAAW;KAAC,AAAC;IACjC,IAAIhB,MAAM,CAACiB,IAAI,EAAE;QACf,oDAAoD;QACpDD,IAAI,CAACE,IAAI,CAAC,QAAQ,EAAE,oBAAoB,EAAElB,MAAM,CAACiB,IAAI,CAAC,CAAC;KACxD;IACD,MAAME,CAAAA,GAAAA,WAAU,AAAc,CAAA,QAAd,CAAC,MAAM,EAAEH,IAAI,CAAC,CAAC;CAChC"}