@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 @@
1
+ {"version":3,"sources":["../../../../src/run/android/runAndroidAsync.ts"],"sourcesContent":["import path from 'path';\n\nimport { Log } from '../../log';\nimport { assembleAsync, installAsync } from '../../start/platforms/android/gradle';\nimport { getSchemesForAndroidAsync } from '../../utils/scheme';\nimport { ensureNativeProjectAsync } from '../ensureNativeProject';\nimport { logProjectLogsLocation } from '../hints';\nimport { startBundlerAsync } from '../startBundler';\nimport { resolveInstallApkNameAsync } from './resolveInstallApkName';\nimport { Options, ResolvedOptions, resolveOptionsAsync } from './resolveOptions';\n\nconst debug = require('debug')('expo:run:android');\n\nexport async function runAndroidAsync(projectRoot: string, { install, ...options }: Options) {\n await ensureNativeProjectAsync(projectRoot, { platform: 'android', install });\n\n const props = await resolveOptionsAsync(projectRoot, options);\n\n debug('Package name: ' + props.packageName);\n Log.log('› Building app...');\n\n const androidProjectRoot = path.join(projectRoot, 'android');\n\n await assembleAsync(androidProjectRoot, {\n variant: props.variant,\n port: props.port,\n appName: props.appName,\n buildCache: props.buildCache,\n });\n\n const manager = await startBundlerAsync(projectRoot, {\n port: props.port,\n headless: !props.shouldStartBundler,\n });\n\n await installAppAsync(androidProjectRoot, props);\n\n await manager.getDefaultDevServer().openCustomRuntimeAsync(\n 'emulator',\n {\n applicationId: props.packageName,\n // If a scheme is specified then use that instead of the package name.\n scheme: (await getSchemesForAndroidAsync(projectRoot))?.[0],\n },\n { device: props.device.device }\n );\n\n if (props.shouldStartBundler) {\n logProjectLogsLocation();\n }\n}\n\nasync function installAppAsync(androidProjectRoot: string, props: ResolvedOptions) {\n // Find the APK file path\n const apkFile = await resolveInstallApkNameAsync(props.device.device, props);\n\n if (apkFile) {\n // Attempt to install the APK from the file path\n const binaryPath = path.join(props.apkVariantDirectory, apkFile);\n debug('Installing:', binaryPath);\n await props.device.installAppAsync(binaryPath);\n } else {\n // If we cannot resolve the APK file path then we can attempt to install using Gradle.\n // This offers more advanced resolution that we may not have first class support for.\n Log.log('› Failed to locate binary file, installing with Gradle...');\n await installAsync(androidProjectRoot, {\n variant: props.variant ?? 'debug',\n appName: props.appName ?? 'app',\n port: props.port,\n });\n }\n}\n"],"names":["runAndroidAsync","debug","require","projectRoot","install","options","ensureNativeProjectAsync","platform","props","resolveOptionsAsync","packageName","Log","log","androidProjectRoot","path","join","assembleAsync","variant","port","appName","buildCache","manager","startBundlerAsync","headless","shouldStartBundler","installAppAsync","getDefaultDevServer","openCustomRuntimeAsync","applicationId","scheme","getSchemesForAndroidAsync","device","logProjectLogsLocation","apkFile","resolveInstallApkNameAsync","binaryPath","apkVariantDirectory","installAsync"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.ensureNativeProjectAsync = ensureNativeProjectAsync;
6
+ var _fs = _interopRequireDefault(require("fs"));
7
+ var _path = _interopRequireDefault(require("path"));
8
+ var _clearNativeFolder = require("../prebuild/clearNativeFolder");
9
+ var _prebuildAsync = require("../prebuild/prebuildAsync");
10
+ var _profile = require("../utils/profile");
11
+ function _interopRequireDefault(obj) {
12
+ return obj && obj.__esModule ? obj : {
13
+ default: obj
14
+ };
15
+ }
16
+ async function ensureNativeProjectAsync(projectRoot, { platform , install }) {
17
+ // If the user has an empty android folder then the project won't build, this can happen when they delete the prebuild files in git.
18
+ // Check to ensure most of the core files are in place, and prompt to remove the folder if they aren't.
19
+ await (0, _profile).profile(_clearNativeFolder.promptToClearMalformedNativeProjectsAsync)(projectRoot, [
20
+ platform
21
+ ]);
22
+ // If the project doesn't have native code, prebuild it...
23
+ if (!_fs.default.existsSync(_path.default.join(projectRoot, platform))) {
24
+ await (0, _prebuildAsync).prebuildAsync(projectRoot, {
25
+ install: !!install,
26
+ platforms: [
27
+ platform
28
+ ]
29
+ });
30
+ }
31
+ }
32
+
33
+ //# sourceMappingURL=ensureNativeProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/run/ensureNativeProject.ts"],"sourcesContent":["import { ModPlatform } from '@expo/config-plugins';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { promptToClearMalformedNativeProjectsAsync } from '../prebuild/clearNativeFolder';\nimport { prebuildAsync } from '../prebuild/prebuildAsync';\nimport { profile } from '../utils/profile';\n\nexport async function ensureNativeProjectAsync(\n projectRoot: string,\n { platform, install }: { platform: ModPlatform; install?: boolean }\n) {\n // If the user has an empty android folder then the project won't build, this can happen when they delete the prebuild files in git.\n // Check to ensure most of the core files are in place, and prompt to remove the folder if they aren't.\n await profile(promptToClearMalformedNativeProjectsAsync)(projectRoot, [platform]);\n\n // If the project doesn't have native code, prebuild it...\n if (!fs.existsSync(path.join(projectRoot, platform))) {\n await prebuildAsync(projectRoot, {\n install: !!install,\n platforms: [platform],\n });\n }\n}\n"],"names":["ensureNativeProjectAsync","projectRoot","platform","install","profile","promptToClearMalformedNativeProjectsAsync","fs","existsSync","path","join","prebuildAsync","platforms"],"mappings":"AAAA;;;;QAQsBA,wBAAwB,GAAxBA,wBAAwB;AAP/B,IAAA,GAAI,kCAAJ,IAAI,EAAA;AACF,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEmC,IAAA,kBAA+B,WAA/B,+BAA+B,CAAA;AAC3D,IAAA,cAA2B,WAA3B,2BAA2B,CAAA;AACjC,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;;;;;;AAEnC,eAAeA,wBAAwB,CAC5CC,WAAmB,EACnB,EAAEC,QAAQ,CAAA,EAAEC,OAAO,CAAA,EAAgD,EACnE;IACA,oIAAoI;IACpI,uGAAuG;IACvG,MAAMC,CAAAA,GAAAA,QAAO,AAA2C,CAAA,QAA3C,CAACC,kBAAyC,0CAAA,CAAC,CAACJ,WAAW,EAAE;QAACC,QAAQ;KAAC,CAAC,CAAC;IAElF,0DAA0D;IAC1D,IAAI,CAACI,GAAE,QAAA,CAACC,UAAU,CAACC,KAAI,QAAA,CAACC,IAAI,CAACR,WAAW,EAAEC,QAAQ,CAAC,CAAC,EAAE;QACpD,MAAMQ,CAAAA,GAAAA,cAAa,AAGjB,CAAA,cAHiB,CAACT,WAAW,EAAE;YAC/BE,OAAO,EAAE,CAAC,CAACA,OAAO;YAClBQ,SAAS,EAAE;gBAACT,QAAQ;aAAC;SACtB,CAAC,CAAC;KACJ;CACF"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.logDeviceArgument = logDeviceArgument;
6
+ exports.logProjectLogsLocation = logProjectLogsLocation;
7
+ var _chalk = _interopRequireDefault(require("chalk"));
8
+ var _log = require("../log");
9
+ var _env = require("../utils/env");
10
+ function _interopRequireDefault(obj) {
11
+ return obj && obj.__esModule ? obj : {
12
+ default: obj
13
+ };
14
+ }
15
+ function logDeviceArgument(id) {
16
+ _log.Log.log(_chalk.default.dim`› Using --device ${id}`);
17
+ }
18
+ function logProjectLogsLocation() {
19
+ _log.Log.log(_chalk.default`› Logs for your project will appear below.${_env.env.CI ? "" : _chalk.default.dim(` Press Ctrl+C to exit.`)}`);
20
+ }
21
+
22
+ //# sourceMappingURL=hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/run/hints.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { Log } from '../log';\nimport { env } from '../utils/env';\n\n/** Log the device argument to use for the next run: `Using --device foobar` */\nexport function logDeviceArgument(id: string) {\n Log.log(chalk.dim`› Using --device ${id}`);\n}\n\nexport function logProjectLogsLocation() {\n Log.log(\n chalk`› Logs for your project will appear below.${\n env.CI ? '' : chalk.dim(` Press Ctrl+C to exit.`)\n }`\n );\n}\n"],"names":["logDeviceArgument","logProjectLogsLocation","id","Log","log","chalk","dim","env","CI"],"mappings":"AAAA;;;;QAMgBA,iBAAiB,GAAjBA,iBAAiB;QAIjBC,sBAAsB,GAAtBA,sBAAsB;AAVpB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEL,IAAA,IAAQ,WAAR,QAAQ,CAAA;AACR,IAAA,IAAc,WAAd,cAAc,CAAA;;;;;;AAG3B,SAASD,iBAAiB,CAACE,EAAU,EAAE;IAC5CC,IAAG,IAAA,CAACC,GAAG,CAACC,MAAK,QAAA,CAACC,GAAG,CAAC,mBAAmB,EAAEJ,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9C;AAEM,SAASD,sBAAsB,GAAG;IACvCE,IAAG,IAAA,CAACC,GAAG,CACLC,MAAK,QAAA,CAAC,4CAA0C,EAC9CE,IAAG,IAAA,CAACC,EAAE,GAAG,EAAE,GAAGH,MAAK,QAAA,CAACC,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAClD,CAAC,CACH,CAAC;CACH"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.resolveBundlerPropsAsync = resolveBundlerPropsAsync;
6
+ var _errors = require("../utils/errors");
7
+ var _port = require("../utils/port");
8
+ async function resolveBundlerPropsAsync(projectRoot, options) {
9
+ const skipBundler = options.bundler === false;
10
+ if (// If the user disables the bundler then they should not pass in the port property.
11
+ skipBundler && options.port) {
12
+ throw new _errors.CommandError("BAD_ARGS", "--port and --no-bundler are mutually exclusive arguments");
13
+ }
14
+ // Resolve the port if the bundler is used.
15
+ let port = skipBundler ? null : await (0, _port).resolvePortAsync(projectRoot, {
16
+ reuseExistingPort: true,
17
+ defaultPort: options.port
18
+ });
19
+ // Skip bundling if the port is null
20
+ options.bundler = !!port;
21
+ if (!port) {
22
+ // any random number
23
+ port = 8081;
24
+ }
25
+ return {
26
+ shouldStartBundler: !skipBundler,
27
+ port
28
+ };
29
+ }
30
+
31
+ //# sourceMappingURL=resolveBundlerProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/run/resolveBundlerProps.ts"],"sourcesContent":["import { CommandError } from '../utils/errors';\nimport { resolvePortAsync } from '../utils/port';\n\nexport interface BundlerProps {\n port: number;\n shouldStartBundler: boolean;\n}\n\nexport async function resolveBundlerPropsAsync(\n projectRoot: string,\n options: {\n port?: number;\n bundler?: boolean;\n }\n): Promise<BundlerProps> {\n const skipBundler = options.bundler === false;\n\n if (\n // If the user disables the bundler then they should not pass in the port property.\n skipBundler &&\n options.port\n ) {\n throw new CommandError('BAD_ARGS', '--port and --no-bundler are mutually exclusive arguments');\n }\n\n // Resolve the port if the bundler is used.\n let port = skipBundler\n ? null\n : await resolvePortAsync(projectRoot, { reuseExistingPort: true, defaultPort: options.port });\n\n // Skip bundling if the port is null\n options.bundler = !!port;\n if (!port) {\n // any random number\n port = 8081;\n }\n\n return {\n shouldStartBundler: !skipBundler,\n port,\n };\n}\n"],"names":["resolveBundlerPropsAsync","projectRoot","options","skipBundler","bundler","port","CommandError","resolvePortAsync","reuseExistingPort","defaultPort","shouldStartBundler"],"mappings":"AAAA;;;;QAQsBA,wBAAwB,GAAxBA,wBAAwB;AARjB,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AACb,IAAA,KAAe,WAAf,eAAe,CAAA;AAOzC,eAAeA,wBAAwB,CAC5CC,WAAmB,EACnBC,OAGC,EACsB;IACvB,MAAMC,WAAW,GAAGD,OAAO,CAACE,OAAO,KAAK,KAAK,AAAC;IAE9C,IACE,mFAAmF;IACnFD,WAAW,IACXD,OAAO,CAACG,IAAI,EACZ;QACA,MAAM,IAAIC,OAAY,aAAA,CAAC,UAAU,EAAE,0DAA0D,CAAC,CAAC;KAChG;IAED,2CAA2C;IAC3C,IAAID,IAAI,GAAGF,WAAW,GAClB,IAAI,GACJ,MAAMI,CAAAA,GAAAA,KAAgB,AAAqE,CAAA,iBAArE,CAACN,WAAW,EAAE;QAAEO,iBAAiB,EAAE,IAAI;QAAEC,WAAW,EAAEP,OAAO,CAACG,IAAI;KAAE,CAAC,AAAC;IAEhG,oCAAoC;IACpCH,OAAO,CAACE,OAAO,GAAG,CAAC,CAACC,IAAI,CAAC;IACzB,IAAI,CAACA,IAAI,EAAE;QACT,oBAAoB;QACpBA,IAAI,GAAG,IAAI,CAAC;KACb;IAED,OAAO;QACLK,kBAAkB,EAAE,CAACP,WAAW;QAChCE,IAAI;KACL,CAAC;CACH"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.startBundlerAsync = startBundlerAsync;
6
+ var _config = require("@expo/config");
7
+ var _chalk = _interopRequireDefault(require("chalk"));
8
+ var Log = _interopRequireWildcard(require("../log"));
9
+ var _startInterface = require("../start/interface/startInterface");
10
+ var _devServerManager = require("../start/server/DevServerManager");
11
+ var _env = require("../utils/env");
12
+ function _interopRequireDefault(obj) {
13
+ return obj && obj.__esModule ? obj : {
14
+ default: obj
15
+ };
16
+ }
17
+ function _interopRequireWildcard(obj) {
18
+ if (obj && obj.__esModule) {
19
+ return obj;
20
+ } else {
21
+ var newObj = {};
22
+ if (obj != null) {
23
+ for(var key in obj){
24
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
25
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
26
+ if (desc.get || desc.set) {
27
+ Object.defineProperty(newObj, key, desc);
28
+ } else {
29
+ newObj[key] = obj[key];
30
+ }
31
+ }
32
+ }
33
+ }
34
+ newObj.default = obj;
35
+ return newObj;
36
+ }
37
+ }
38
+ async function startBundlerAsync(projectRoot, { port , headless }) {
39
+ const options = {
40
+ port,
41
+ headless,
42
+ devClient: true,
43
+ location: {}
44
+ };
45
+ const devServerManager = new _devServerManager.DevServerManager(projectRoot, options);
46
+ await devServerManager.startAsync([
47
+ {
48
+ // TODO: Allow swapping this value for another bundler.
49
+ type: "metro",
50
+ options
51
+ },
52
+ ]);
53
+ // Present the Terminal UI.
54
+ if (!headless && !_env.env.CI) {
55
+ // Only read the config if we are going to use the results.
56
+ const { exp } = (0, _config).getConfig(projectRoot, {
57
+ // We don't need very many fields here, just use the lightest possible read.
58
+ skipSDKVersionRequirement: true,
59
+ skipPlugins: true
60
+ });
61
+ var _platforms;
62
+ await (0, _startInterface).startInterfaceAsync(devServerManager, {
63
+ platforms: (_platforms = exp.platforms) != null ? _platforms : []
64
+ });
65
+ } else {
66
+ var ref;
67
+ // Display the server location in CI...
68
+ const url = (ref = devServerManager.getDefaultDevServer()) == null ? void 0 : ref.getDevServerUrl();
69
+ if (url) {
70
+ Log.log(_chalk.default`Waiting on {underline ${url}}`);
71
+ }
72
+ }
73
+ return devServerManager;
74
+ }
75
+
76
+ //# sourceMappingURL=startBundler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/run/startBundler.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport { startInterfaceAsync } from '../start/interface/startInterface';\nimport { DevServerManager } from '../start/server/DevServerManager';\nimport { env } from '../utils/env';\n\nexport async function startBundlerAsync(\n projectRoot: string,\n {\n port,\n headless,\n }: {\n port: number;\n headless?: boolean;\n }\n): Promise<DevServerManager> {\n const options = {\n port,\n headless,\n devClient: true,\n location: {},\n };\n\n const devServerManager = new DevServerManager(projectRoot, options);\n\n await devServerManager.startAsync([\n {\n // TODO: Allow swapping this value for another bundler.\n type: 'metro',\n options,\n },\n ]);\n\n // Present the Terminal UI.\n if (!headless && !env.CI) {\n // Only read the config if we are going to use the results.\n const { exp } = getConfig(projectRoot, {\n // We don't need very many fields here, just use the lightest possible read.\n skipSDKVersionRequirement: true,\n skipPlugins: true,\n });\n await startInterfaceAsync(devServerManager, {\n platforms: exp.platforms ?? [],\n });\n } else {\n // Display the server location in CI...\n const url = devServerManager.getDefaultDevServer()?.getDevServerUrl();\n if (url) {\n Log.log(chalk`Waiting on {underline ${url}}`);\n }\n }\n return devServerManager;\n}\n"],"names":["startBundlerAsync","Log","projectRoot","port","headless","options","devClient","location","devServerManager","DevServerManager","startAsync","type","env","CI","exp","getConfig","skipSDKVersionRequirement","skipPlugins","startInterfaceAsync","platforms","url","getDefaultDevServer","getDevServerUrl","log","chalk"],"mappings":"AAAA;;;;QAQsBA,iBAAiB,GAAjBA,iBAAiB;AARb,IAAA,OAAc,WAAd,cAAc,CAAA;AACtB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACqB,IAAA,eAAmC,WAAnC,mCAAmC,CAAA;AACtC,IAAA,iBAAkC,WAAlC,kCAAkC,CAAA;AAC/C,IAAA,IAAc,WAAd,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE3B,eAAeD,iBAAiB,CACrCE,WAAmB,EACnB,EACEC,IAAI,CAAA,EACJC,QAAQ,CAAA,EAIT,EAC0B;IAC3B,MAAMC,OAAO,GAAG;QACdF,IAAI;QACJC,QAAQ;QACRE,SAAS,EAAE,IAAI;QACfC,QAAQ,EAAE,EAAE;KACb,AAAC;IAEF,MAAMC,gBAAgB,GAAG,IAAIC,iBAAgB,iBAAA,CAACP,WAAW,EAAEG,OAAO,CAAC,AAAC;IAEpE,MAAMG,gBAAgB,CAACE,UAAU,CAAC;QAChC;YACE,uDAAuD;YACvDC,IAAI,EAAE,OAAO;YACbN,OAAO;SACR;KACF,CAAC,CAAC;IAEH,2BAA2B;IAC3B,IAAI,CAACD,QAAQ,IAAI,CAACQ,IAAG,IAAA,CAACC,EAAE,EAAE;QACxB,2DAA2D;QAC3D,MAAM,EAAEC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAIvB,CAAA,UAJuB,CAACb,WAAW,EAAE;YACrC,4EAA4E;YAC5Ec,yBAAyB,EAAE,IAAI;YAC/BC,WAAW,EAAE,IAAI;SAClB,CAAC,AAAC;YAEUH,UAAa;QAD1B,MAAMI,CAAAA,GAAAA,eAAmB,AAEvB,CAAA,oBAFuB,CAACV,gBAAgB,EAAE;YAC1CW,SAAS,EAAEL,CAAAA,UAAa,GAAbA,GAAG,CAACK,SAAS,YAAbL,UAAa,GAAI,EAAE;SAC/B,CAAC,CAAC;KACJ,MAAM;YAEON,GAAsC;QADlD,uCAAuC;QACvC,MAAMY,GAAG,GAAGZ,CAAAA,GAAsC,GAAtCA,gBAAgB,CAACa,mBAAmB,EAAE,SAAiB,GAAvDb,KAAAA,CAAuD,GAAvDA,GAAsC,CAAEc,eAAe,EAAE,AAAC;QACtE,IAAIF,GAAG,EAAE;YACPnB,GAAG,CAACsB,GAAG,CAACC,MAAK,QAAA,CAAC,sBAAsB,EAAEJ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/C;KACF;IACD,OAAOZ,gBAAgB,CAAC;CACzB"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _errors = require("../../utils/errors");
6
+ var _fn = require("../../utils/fn");
7
+ class PrerequisiteCommandError extends _errors.CommandError {
8
+ constructor(code, message = ""){
9
+ super(message ? "VALIDATE_" + code : code, message);
10
+ }
11
+ }
12
+ exports.PrerequisiteCommandError = PrerequisiteCommandError;
13
+ class Prerequisite {
14
+ constructor(){
15
+ this._assertAsync = (0, _fn).memoize(this.assertImplementation.bind(this));
16
+ }
17
+ /** Reset the assertion memo and warning message. */ resetAssertion() {
18
+ this.cachedError = undefined;
19
+ this._assertAsync = (0, _fn).memoize(this.assertImplementation.bind(this));
20
+ }
21
+ async assertAsync() {
22
+ if (this.cachedError) {
23
+ throw this.cachedError;
24
+ }
25
+ try {
26
+ return await this._assertAsync();
27
+ } catch (error) {
28
+ if (error instanceof PrerequisiteCommandError) {
29
+ this.cachedError = error;
30
+ }
31
+ throw error;
32
+ }
33
+ }
34
+ /** Exposed for testing. */ async assertImplementation() {
35
+ throw new _errors.UnimplementedError();
36
+ }
37
+ }
38
+ exports.Prerequisite = Prerequisite;
39
+ class ProjectPrerequisite extends Prerequisite {
40
+ constructor(projectRoot){
41
+ super();
42
+ this.projectRoot = projectRoot;
43
+ }
44
+ }
45
+ exports.ProjectPrerequisite = ProjectPrerequisite;
46
+
47
+ //# sourceMappingURL=Prerequisite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/start/doctor/Prerequisite.ts"],"sourcesContent":["import { CommandError, UnimplementedError } from '../../utils/errors';\nimport { memoize } from '../../utils/fn';\n\n/** An error that is memoized and asserted whenever a Prerequisite.assertAsync is subsequently called. */\nexport class PrerequisiteCommandError extends CommandError {\n constructor(code: string, message: string = '') {\n super(message ? 'VALIDATE_' + code : code, message);\n }\n}\n\nexport class Prerequisite {\n /** Memoized results of `assertImplementation` */\n private _assertAsync: () => Promise<void>;\n\n constructor() {\n this._assertAsync = memoize(this.assertImplementation.bind(this));\n }\n\n /** An optional warning to call before running the memoized assertion. */\n protected cachedError?: PrerequisiteCommandError;\n\n /** Reset the assertion memo and warning message. */\n public resetAssertion() {\n this.cachedError = undefined;\n this._assertAsync = memoize(this.assertImplementation.bind(this));\n }\n\n async assertAsync(): Promise<void> {\n if (this.cachedError) {\n throw this.cachedError;\n }\n try {\n return await this._assertAsync();\n } catch (error) {\n if (error instanceof PrerequisiteCommandError) {\n this.cachedError = error;\n }\n throw error;\n }\n }\n\n /** Exposed for testing. */\n async assertImplementation(): Promise<void> {\n throw new UnimplementedError();\n }\n}\n\n/** A prerequisite that is project specific. */\nexport class ProjectPrerequisite extends Prerequisite {\n constructor(protected projectRoot: string) {\n super();\n }\n}\n"],"names":["PrerequisiteCommandError","CommandError","constructor","code","message","Prerequisite","_assertAsync","memoize","assertImplementation","bind","resetAssertion","cachedError","undefined","assertAsync","error","UnimplementedError","ProjectPrerequisite","projectRoot"],"mappings":"AAAA;;;;AAAiD,IAAA,OAAoB,WAApB,oBAAoB,CAAA;AAC7C,IAAA,GAAgB,WAAhB,gBAAgB,CAAA;AAGjC,MAAMA,wBAAwB,SAASC,OAAY,aAAA;IACxDC,YAAYC,IAAY,EAAEC,OAAe,GAAG,EAAE,CAAE;QAC9C,KAAK,CAACA,OAAO,GAAG,WAAW,GAAGD,IAAI,GAAGA,IAAI,EAAEC,OAAO,CAAC,CAAC;KACrD;CACF;QAJYJ,wBAAwB,GAAxBA,wBAAwB;AAM9B,MAAMK,YAAY;IAIvBH,aAAc;QACZ,IAAI,CAACI,YAAY,GAAGC,CAAAA,GAAAA,GAAO,AAAsC,CAAA,QAAtC,CAAC,IAAI,CAACC,oBAAoB,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACnE;IAKD,oDAAoD,CACpD,AAAOC,cAAc,GAAG;QACtB,IAAI,CAACC,WAAW,GAAGC,SAAS,CAAC;QAC7B,IAAI,CAACN,YAAY,GAAGC,CAAAA,GAAAA,GAAO,AAAsC,CAAA,QAAtC,CAAC,IAAI,CAACC,oBAAoB,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACnE;IAED,MAAMI,WAAW,GAAkB;QACjC,IAAI,IAAI,CAACF,WAAW,EAAE;YACpB,MAAM,IAAI,CAACA,WAAW,CAAC;SACxB;QACD,IAAI;YACF,OAAO,MAAM,IAAI,CAACL,YAAY,EAAE,CAAC;SAClC,CAAC,OAAOQ,KAAK,EAAE;YACd,IAAIA,KAAK,YAAYd,wBAAwB,EAAE;gBAC7C,IAAI,CAACW,WAAW,GAAGG,KAAK,CAAC;aAC1B;YACD,MAAMA,KAAK,CAAC;SACb;KACF;IAED,2BAA2B,CAC3B,MAAMN,oBAAoB,GAAkB;QAC1C,MAAM,IAAIO,OAAkB,mBAAA,EAAE,CAAC;KAChC;CACF;QAnCYV,YAAY,GAAZA,YAAY;AAsClB,MAAMW,mBAAmB,SAASX,YAAY;IACnDH,YAAsBe,WAAmB,CAAE;QACzC,KAAK,EAAE,CAAC;aADYA,WAAmB,GAAnBA,WAAmB;KAExC;CACF;QAJYD,mBAAmB,GAAnBA,mBAAmB"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _osascript = require("@expo/osascript");
6
+ var _spawnAsync = _interopRequireDefault(require("@expo/spawn-async"));
7
+ var Log = _interopRequireWildcard(require("../../../log"));
8
+ var _prerequisite = require("../Prerequisite");
9
+ function _interopRequireDefault(obj) {
10
+ return obj && obj.__esModule ? obj : {
11
+ default: obj
12
+ };
13
+ }
14
+ function _interopRequireWildcard(obj) {
15
+ if (obj && obj.__esModule) {
16
+ return obj;
17
+ } else {
18
+ var newObj = {};
19
+ if (obj != null) {
20
+ for(var key in obj){
21
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
22
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
23
+ if (desc.get || desc.set) {
24
+ Object.defineProperty(newObj, key, desc);
25
+ } else {
26
+ newObj[key] = obj[key];
27
+ }
28
+ }
29
+ }
30
+ }
31
+ newObj.default = obj;
32
+ return newObj;
33
+ }
34
+ }
35
+ async function getSimulatorAppIdAsync() {
36
+ try {
37
+ return (await (0, _osascript).execAsync('id of app "Simulator"')).trim();
38
+ } catch {
39
+ // This error may occur in CI where the users intends to install just the simulators but no Xcode.
40
+ }
41
+ return null;
42
+ }
43
+ class SimulatorAppPrerequisite extends _prerequisite.Prerequisite {
44
+ static instance = new SimulatorAppPrerequisite();
45
+ async assertImplementation() {
46
+ const result = await getSimulatorAppIdAsync();
47
+ if (!result) {
48
+ // This error may occur in CI where the users intends to install just the simulators but no Xcode.
49
+ throw new _prerequisite.PrerequisiteCommandError("SIMULATOR_APP", "Can't determine id of Simulator app; the Simulator is most likely not installed on this machine. Run `sudo xcode-select -s /Applications/Xcode.app`");
50
+ }
51
+ if (result !== "com.apple.iphonesimulator" && result !== "com.apple.CoreSimulator.SimulatorTrampoline") {
52
+ throw new _prerequisite.PrerequisiteCommandError("SIMULATOR_APP", "Simulator is installed but is identified as '" + result + "'; don't know what that is.");
53
+ }
54
+ try {
55
+ // make sure we can run simctl
56
+ await (0, _spawnAsync).default("xcrun", [
57
+ "simctl",
58
+ "help"
59
+ ]);
60
+ } catch (error) {
61
+ Log.warn(`Unable to run simctl:\n${error.toString()}`);
62
+ throw new _prerequisite.PrerequisiteCommandError("SIMCTL", "xcrun is not configured correctly. Ensure `sudo xcode-select --reset` works before running this command again.");
63
+ }
64
+ }
65
+ }
66
+ exports.SimulatorAppPrerequisite = SimulatorAppPrerequisite;
67
+
68
+ //# sourceMappingURL=SimulatorAppPrerequisite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/doctor/apple/SimulatorAppPrerequisite.ts"],"sourcesContent":["import { execAsync } from '@expo/osascript';\nimport spawnAsync from '@expo/spawn-async';\n\nimport * as Log from '../../../log';\nimport { Prerequisite, PrerequisiteCommandError } from '../Prerequisite';\n\nasync function getSimulatorAppIdAsync(): Promise<string | null> {\n try {\n return (await execAsync('id of app \"Simulator\"')).trim();\n } catch {\n // This error may occur in CI where the users intends to install just the simulators but no Xcode.\n }\n return null;\n}\n\nexport class SimulatorAppPrerequisite extends Prerequisite {\n static instance = new SimulatorAppPrerequisite();\n\n async assertImplementation(): Promise<void> {\n const result = await getSimulatorAppIdAsync();\n if (!result) {\n // This error may occur in CI where the users intends to install just the simulators but no Xcode.\n throw new PrerequisiteCommandError(\n 'SIMULATOR_APP',\n \"Can't determine id of Simulator app; the Simulator is most likely not installed on this machine. Run `sudo xcode-select -s /Applications/Xcode.app`\"\n );\n }\n if (\n result !== 'com.apple.iphonesimulator' &&\n result !== 'com.apple.CoreSimulator.SimulatorTrampoline'\n ) {\n throw new PrerequisiteCommandError(\n 'SIMULATOR_APP',\n \"Simulator is installed but is identified as '\" + result + \"'; don't know what that is.\"\n );\n }\n\n try {\n // make sure we can run simctl\n await spawnAsync('xcrun', ['simctl', 'help']);\n } catch (error: any) {\n Log.warn(`Unable to run simctl:\\n${error.toString()}`);\n throw new PrerequisiteCommandError(\n 'SIMCTL',\n 'xcrun is not configured correctly. Ensure `sudo xcode-select --reset` works before running this command again.'\n );\n }\n }\n}\n"],"names":["Log","getSimulatorAppIdAsync","execAsync","trim","SimulatorAppPrerequisite","Prerequisite","instance","assertImplementation","result","PrerequisiteCommandError","spawnAsync","error","warn","toString"],"mappings":"AAAA;;;;AAA0B,IAAA,UAAiB,WAAjB,iBAAiB,CAAA;AACpB,IAAA,WAAmB,kCAAnB,mBAAmB,EAAA;AAE9BA,IAAAA,GAAG,mCAAM,cAAc,EAApB;AACwC,IAAA,aAAiB,WAAjB,iBAAiB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExE,eAAeC,sBAAsB,GAA2B;IAC9D,IAAI;QACF,OAAO,CAAC,MAAMC,CAAAA,GAAAA,UAAS,AAAyB,CAAA,UAAzB,CAAC,uBAAuB,CAAC,CAAC,CAACC,IAAI,EAAE,CAAC;KAC1D,CAAC,OAAM;IACN,kGAAkG;KACnG;IACD,OAAO,IAAI,CAAC;CACb;AAEM,MAAMC,wBAAwB,SAASC,aAAY,aAAA;IACxD,OAAOC,QAAQ,GAAG,IAAIF,wBAAwB,EAAE,CAAC;IAEjD,MAAMG,oBAAoB,GAAkB;QAC1C,MAAMC,MAAM,GAAG,MAAMP,sBAAsB,EAAE,AAAC;QAC9C,IAAI,CAACO,MAAM,EAAE;YACX,kGAAkG;YAClG,MAAM,IAAIC,aAAwB,yBAAA,CAChC,eAAe,EACf,qJAAqJ,CACtJ,CAAC;SACH;QACD,IACED,MAAM,KAAK,2BAA2B,IACtCA,MAAM,KAAK,6CAA6C,EACxD;YACA,MAAM,IAAIC,aAAwB,yBAAA,CAChC,eAAe,EACf,+CAA+C,GAAGD,MAAM,GAAG,6BAA6B,CACzF,CAAC;SACH;QAED,IAAI;YACF,8BAA8B;YAC9B,MAAME,CAAAA,GAAAA,WAAU,AAA6B,CAAA,QAA7B,CAAC,OAAO,EAAE;gBAAC,QAAQ;gBAAE,MAAM;aAAC,CAAC,CAAC;SAC/C,CAAC,OAAOC,KAAK,EAAO;YACnBX,GAAG,CAACY,IAAI,CAAC,CAAC,uBAAuB,EAAED,KAAK,CAACE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,IAAIJ,aAAwB,yBAAA,CAChC,QAAQ,EACR,gHAAgH,CACjH,CAAC;SACH;KACF;CACF;QAjCYL,wBAAwB,GAAxBA,wBAAwB"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.getXcodeVersionAsync = void 0;
6
+ var _childProcess = require("child_process");
7
+ var _semver = _interopRequireDefault(require("semver"));
8
+ var Log = _interopRequireWildcard(require("../../../log"));
9
+ var _errors = require("../../../utils/errors");
10
+ var _profile = require("../../../utils/profile");
11
+ var _prompts = require("../../../utils/prompts");
12
+ var _prerequisite = require("../Prerequisite");
13
+ function _interopRequireDefault(obj) {
14
+ return obj && obj.__esModule ? obj : {
15
+ default: obj
16
+ };
17
+ }
18
+ function _interopRequireWildcard(obj) {
19
+ if (obj && obj.__esModule) {
20
+ return obj;
21
+ } else {
22
+ var newObj = {};
23
+ if (obj != null) {
24
+ for(var key in obj){
25
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
26
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
27
+ if (desc.get || desc.set) {
28
+ Object.defineProperty(newObj, key, desc);
29
+ } else {
30
+ newObj[key] = obj[key];
31
+ }
32
+ }
33
+ }
34
+ }
35
+ newObj.default = obj;
36
+ return newObj;
37
+ }
38
+ }
39
+ // Based on the RN docs (Aug 2020).
40
+ const MIN_XCODE_VERSION = 9.4;
41
+ const APP_STORE_ID = "497799835";
42
+ const SUGGESTED_XCODE_VERSION = `${MIN_XCODE_VERSION}.0`;
43
+ const promptToOpenAppStoreAsync = async (message)=>{
44
+ // This prompt serves no purpose accept informing the user what to do next, we could just open the App Store but it could be confusing if they don't know what's going on.
45
+ const confirm = await (0, _prompts).confirmAsync({
46
+ initial: true,
47
+ message
48
+ });
49
+ if (confirm) {
50
+ Log.log(`Going to the App Store, re-run Expo when Xcode has finished installing.`);
51
+ openAppStore(APP_STORE_ID);
52
+ }
53
+ };
54
+ const getXcodeVersionAsync = ()=>{
55
+ try {
56
+ var ref;
57
+ const last = (ref = (0, _childProcess).execSync("xcodebuild -version", {
58
+ stdio: "pipe"
59
+ }).toString().match(/^Xcode (\d+\.\d+)/)) == null ? void 0 : ref[1];
60
+ // Convert to a semver string
61
+ if (last) {
62
+ const version = `${last}.0`;
63
+ if (!_semver.default.valid(version)) {
64
+ // Not sure why this would happen, if it does we should add a more confident error message.
65
+ Log.error(`Xcode version is in an unknown format: ${version}`);
66
+ return false;
67
+ }
68
+ return version;
69
+ }
70
+ // not sure what's going on
71
+ Log.error("Unable to check Xcode version. Command ran successfully but no version number was found.");
72
+ } catch {
73
+ // not installed
74
+ }
75
+ return null;
76
+ };
77
+ exports.getXcodeVersionAsync = getXcodeVersionAsync;
78
+ /**
79
+ * Open a link to the App Store. Just link in mobile apps, **never** redirect without prompting first.
80
+ *
81
+ * @param appId
82
+ */ function openAppStore(appId) {
83
+ const link = getAppStoreLink(appId);
84
+ (0, _childProcess).execSync(`open ${link}`, {
85
+ stdio: "ignore"
86
+ });
87
+ }
88
+ function getAppStoreLink(appId) {
89
+ if (process.platform === "darwin") {
90
+ // TODO: Is there ever a case where the macappstore isn't available on mac?
91
+ return `macappstore://itunes.apple.com/app/id${appId}`;
92
+ }
93
+ return `https://apps.apple.com/us/app/id${appId}`;
94
+ }
95
+ class XcodePrerequisite extends _prerequisite.Prerequisite {
96
+ static instance = new XcodePrerequisite();
97
+ /**
98
+ * Ensure Xcode is installed and recent enough to be used with Expo.
99
+ */ async assertImplementation() {
100
+ const version = (0, _profile).profile(getXcodeVersionAsync)();
101
+ if (!version) {
102
+ // Almost certainly Xcode isn't installed.
103
+ await promptToOpenAppStoreAsync(`Xcode needs to be installed (don't worry, you won't have to use it), would you like to continue to the App Store?`);
104
+ throw new _errors.AbortCommandError();
105
+ }
106
+ if (_semver.default.lt(version, SUGGESTED_XCODE_VERSION)) {
107
+ // Xcode version is too old.
108
+ await promptToOpenAppStoreAsync(`Xcode (${version}) needs to be updated to at least version ${MIN_XCODE_VERSION}, would you like to continue to the App Store?`);
109
+ throw new _errors.AbortCommandError();
110
+ }
111
+ }
112
+ }
113
+ exports.XcodePrerequisite = XcodePrerequisite;
114
+
115
+ //# sourceMappingURL=XcodePrerequisite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/doctor/apple/XcodePrerequisite.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport semver from 'semver';\n\nimport * as Log from '../../../log';\nimport { AbortCommandError } from '../../../utils/errors';\nimport { profile } from '../../../utils/profile';\nimport { confirmAsync } from '../../../utils/prompts';\nimport { Prerequisite } from '../Prerequisite';\n\n// Based on the RN docs (Aug 2020).\nconst MIN_XCODE_VERSION = 9.4;\nconst APP_STORE_ID = '497799835';\n\nconst SUGGESTED_XCODE_VERSION = `${MIN_XCODE_VERSION}.0`;\n\nconst promptToOpenAppStoreAsync = async (message: string) => {\n // This prompt serves no purpose accept informing the user what to do next, we could just open the App Store but it could be confusing if they don't know what's going on.\n const confirm = await confirmAsync({ initial: true, message });\n if (confirm) {\n Log.log(`Going to the App Store, re-run Expo when Xcode has finished installing.`);\n openAppStore(APP_STORE_ID);\n }\n};\n\n/** Exposed for testing, use `getXcodeVersion` */\nexport const getXcodeVersionAsync = (): string | null | false => {\n try {\n const last = execSync('xcodebuild -version', { stdio: 'pipe' })\n .toString()\n .match(/^Xcode (\\d+\\.\\d+)/)?.[1];\n // Convert to a semver string\n if (last) {\n const version = `${last}.0`;\n\n if (!semver.valid(version)) {\n // Not sure why this would happen, if it does we should add a more confident error message.\n Log.error(`Xcode version is in an unknown format: ${version}`);\n return false;\n }\n\n return version;\n }\n // not sure what's going on\n Log.error(\n 'Unable to check Xcode version. Command ran successfully but no version number was found.'\n );\n } catch {\n // not installed\n }\n return null;\n};\n\n/**\n * Open a link to the App Store. Just link in mobile apps, **never** redirect without prompting first.\n *\n * @param appId\n */\nfunction openAppStore(appId: string) {\n const link = getAppStoreLink(appId);\n execSync(`open ${link}`, { stdio: 'ignore' });\n}\n\nfunction getAppStoreLink(appId: string): string {\n if (process.platform === 'darwin') {\n // TODO: Is there ever a case where the macappstore isn't available on mac?\n return `macappstore://itunes.apple.com/app/id${appId}`;\n }\n return `https://apps.apple.com/us/app/id${appId}`;\n}\n\nexport class XcodePrerequisite extends Prerequisite {\n static instance = new XcodePrerequisite();\n\n /**\n * Ensure Xcode is installed and recent enough to be used with Expo.\n */\n async assertImplementation(): Promise<void> {\n const version = profile(getXcodeVersionAsync)();\n if (!version) {\n // Almost certainly Xcode isn't installed.\n await promptToOpenAppStoreAsync(\n `Xcode needs to be installed (don't worry, you won't have to use it), would you like to continue to the App Store?`\n );\n throw new AbortCommandError();\n }\n\n if (semver.lt(version, SUGGESTED_XCODE_VERSION)) {\n // Xcode version is too old.\n await promptToOpenAppStoreAsync(\n `Xcode (${version}) needs to be updated to at least version ${MIN_XCODE_VERSION}, would you like to continue to the App Store?`\n );\n throw new AbortCommandError();\n }\n }\n}\n"],"names":["Log","MIN_XCODE_VERSION","APP_STORE_ID","SUGGESTED_XCODE_VERSION","promptToOpenAppStoreAsync","message","confirm","confirmAsync","initial","log","openAppStore","getXcodeVersionAsync","execSync","last","stdio","toString","match","version","semver","valid","error","appId","link","getAppStoreLink","process","platform","XcodePrerequisite","Prerequisite","instance","assertImplementation","profile","AbortCommandError","lt"],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _spawnAsync = _interopRequireDefault(require("@expo/spawn-async"));
6
+ var _chalk = _interopRequireDefault(require("chalk"));
7
+ var _childProcess = require("child_process");
8
+ var _delay = require("../../../utils/delay");
9
+ var _errors = require("../../../utils/errors");
10
+ var _prompts = require("../../../utils/prompts");
11
+ var _prerequisite = require("../Prerequisite");
12
+ function _interopRequireDefault(obj) {
13
+ return obj && obj.__esModule ? obj : {
14
+ default: obj
15
+ };
16
+ }
17
+ async function isXcrunInstalledAsync() {
18
+ try {
19
+ (0, _childProcess).execSync("xcrun --version", {
20
+ stdio: "ignore"
21
+ });
22
+ return true;
23
+ } catch {
24
+ return false;
25
+ }
26
+ }
27
+ class XcrunPrerequisite extends _prerequisite.Prerequisite {
28
+ static instance = new XcrunPrerequisite();
29
+ /**
30
+ * Ensure Xcode CLI is installed.
31
+ */ async assertImplementation() {
32
+ if (await isXcrunInstalledAsync()) {
33
+ // Run this second to ensure the Xcode version check is run.
34
+ return;
35
+ }
36
+ async function pendingAsync() {
37
+ if (!await isXcrunInstalledAsync()) {
38
+ await (0, _delay).delayAsync(100);
39
+ return await pendingAsync();
40
+ }
41
+ }
42
+ // This prompt serves no purpose accept informing the user what to do next, we could just open the App Store but it could be confusing if they don't know what's going on.
43
+ const confirm = await (0, _prompts).confirmAsync({
44
+ initial: true,
45
+ message: _chalk.default`Xcode {bold Command Line Tools} needs to be installed (requires {bold sudo}), continue?`
46
+ });
47
+ if (confirm) {
48
+ try {
49
+ await (0, _spawnAsync).default("sudo", [
50
+ "xcode-select",
51
+ "--install"
52
+ ]);
53
+ // Most likely the user will cancel the process, but if they don't this will continue checking until the CLI is available.
54
+ return await pendingAsync();
55
+ } catch {
56
+ // TODO: Figure out why this might get called (cancel early, network issues, server problems)
57
+ // TODO: Handle me
58
+ }
59
+ }
60
+ throw new _errors.AbortCommandError();
61
+ }
62
+ }
63
+ exports.XcrunPrerequisite = XcrunPrerequisite;
64
+
65
+ //# sourceMappingURL=XcrunPrerequisite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/doctor/apple/XcrunPrerequisite.ts"],"sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\nimport { execSync } from 'child_process';\n\nimport { delayAsync } from '../../../utils/delay';\nimport { AbortCommandError } from '../../../utils/errors';\nimport { confirmAsync } from '../../../utils/prompts';\nimport { Prerequisite } from '../Prerequisite';\n\nasync function isXcrunInstalledAsync() {\n try {\n execSync('xcrun --version', { stdio: 'ignore' });\n return true;\n } catch {\n return false;\n }\n}\n\nexport class XcrunPrerequisite extends Prerequisite {\n static instance = new XcrunPrerequisite();\n\n /**\n * Ensure Xcode CLI is installed.\n */\n async assertImplementation(): Promise<void> {\n if (await isXcrunInstalledAsync()) {\n // Run this second to ensure the Xcode version check is run.\n return;\n }\n\n async function pendingAsync(): Promise<void> {\n if (!(await isXcrunInstalledAsync())) {\n await delayAsync(100);\n return await pendingAsync();\n }\n }\n\n // This prompt serves no purpose accept informing the user what to do next, we could just open the App Store but it could be confusing if they don't know what's going on.\n const confirm = await confirmAsync({\n initial: true,\n message: chalk`Xcode {bold Command Line Tools} needs to be installed (requires {bold sudo}), continue?`,\n });\n\n if (confirm) {\n try {\n await spawnAsync('sudo', [\n 'xcode-select',\n '--install',\n // TODO: Is there any harm in skipping this?\n // '--switch', '/Applications/Xcode.app'\n ]);\n // Most likely the user will cancel the process, but if they don't this will continue checking until the CLI is available.\n return await pendingAsync();\n } catch {\n // TODO: Figure out why this might get called (cancel early, network issues, server problems)\n // TODO: Handle me\n }\n }\n\n throw new AbortCommandError();\n }\n}\n"],"names":["isXcrunInstalledAsync","execSync","stdio","XcrunPrerequisite","Prerequisite","instance","assertImplementation","pendingAsync","delayAsync","confirm","confirmAsync","initial","message","chalk","spawnAsync","AbortCommandError"],"mappings":"AAAA;;;;AAAuB,IAAA,WAAmB,kCAAnB,mBAAmB,EAAA;AACxB,IAAA,MAAO,kCAAP,OAAO,EAAA;AACA,IAAA,aAAe,WAAf,eAAe,CAAA;AAEb,IAAA,MAAsB,WAAtB,sBAAsB,CAAA;AACf,IAAA,OAAuB,WAAvB,uBAAuB,CAAA;AAC5B,IAAA,QAAwB,WAAxB,wBAAwB,CAAA;AACxB,IAAA,aAAiB,WAAjB,iBAAiB,CAAA;;;;;;AAE9C,eAAeA,qBAAqB,GAAG;IACrC,IAAI;QACFC,CAAAA,GAAAA,aAAQ,AAAwC,CAAA,SAAxC,CAAC,iBAAiB,EAAE;YAAEC,KAAK,EAAE,QAAQ;SAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;KACb,CAAC,OAAM;QACN,OAAO,KAAK,CAAC;KACd;CACF;AAEM,MAAMC,iBAAiB,SAASC,aAAY,aAAA;IACjD,OAAOC,QAAQ,GAAG,IAAIF,iBAAiB,EAAE,CAAC;IAE1C;;KAEG,CACH,MAAMG,oBAAoB,GAAkB;QAC1C,IAAI,MAAMN,qBAAqB,EAAE,EAAE;YACjC,4DAA4D;YAC5D,OAAO;SACR;QAED,eAAeO,YAAY,GAAkB;YAC3C,IAAI,CAAE,MAAMP,qBAAqB,EAAE,AAAC,EAAE;gBACpC,MAAMQ,CAAAA,GAAAA,MAAU,AAAK,CAAA,WAAL,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO,MAAMD,YAAY,EAAE,CAAC;aAC7B;SACF;QAED,0KAA0K;QAC1K,MAAME,OAAO,GAAG,MAAMC,CAAAA,GAAAA,QAAY,AAGhC,CAAA,aAHgC,CAAC;YACjCC,OAAO,EAAE,IAAI;YACbC,OAAO,EAAEC,MAAK,QAAA,CAAC,uFAAuF,CAAC;SACxG,CAAC,AAAC;QAEH,IAAIJ,OAAO,EAAE;YACX,IAAI;gBACF,MAAMK,CAAAA,GAAAA,WAAU,AAKd,CAAA,QALc,CAAC,MAAM,EAAE;oBACvB,cAAc;oBACd,WAAW;iBAGZ,CAAC,CAAC;gBACH,0HAA0H;gBAC1H,OAAO,MAAMP,YAAY,EAAE,CAAC;aAC7B,CAAC,OAAM;YACN,6FAA6F;YAC7F,kBAAkB;aACnB;SACF;QAED,MAAM,IAAIQ,OAAiB,kBAAA,EAAE,CAAC;KAC/B;CACF;QA3CYZ,iBAAiB,GAAjBA,iBAAiB"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.getVersionedNativeModulesAsync = getVersionedNativeModulesAsync;
6
+ var _jsonFile = _interopRequireDefault(require("@expo/json-file"));
7
+ var _chalk = _interopRequireDefault(require("chalk"));
8
+ var _resolveFrom = _interopRequireDefault(require("resolve-from"));
9
+ var _getNativeModuleVersions = require("../../../api/getNativeModuleVersions");
10
+ var _settings = require("../../../api/settings");
11
+ var Log = _interopRequireWildcard(require("../../../log"));
12
+ var _errors = require("../../../utils/errors");
13
+ function _interopRequireDefault(obj) {
14
+ return obj && obj.__esModule ? obj : {
15
+ default: obj
16
+ };
17
+ }
18
+ function _interopRequireWildcard(obj) {
19
+ if (obj && obj.__esModule) {
20
+ return obj;
21
+ } else {
22
+ var newObj = {};
23
+ if (obj != null) {
24
+ for(var key in obj){
25
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
26
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
27
+ if (desc.get || desc.set) {
28
+ Object.defineProperty(newObj, key, desc);
29
+ } else {
30
+ newObj[key] = obj[key];
31
+ }
32
+ }
33
+ }
34
+ }
35
+ newObj.default = obj;
36
+ return newObj;
37
+ }
38
+ }
39
+ async function getVersionedNativeModulesAsync(projectRoot, sdkVersion) {
40
+ if (sdkVersion !== "UNVERSIONED" && !_settings.APISettings.isOffline) {
41
+ try {
42
+ Log.debug("Fetching bundled native modules from the server...");
43
+ return await (0, _getNativeModuleVersions).getNativeModuleVersionsAsync(sdkVersion);
44
+ } catch {
45
+ Log.warn(_chalk.default`Unable to reach Expo servers. Falling back to using the cached dependency map ({bold bundledNativeModules.json}) from the package "{bold expo}" installed in your project.`);
46
+ }
47
+ }
48
+ Log.debug("Fetching bundled native modules from the local JSON file...");
49
+ return await getBundledNativeModulesAsync(projectRoot);
50
+ }
51
+ /**
52
+ * Get the legacy static `bundledNativeModules.json` file
53
+ * that's shipped with the version of `expo` that the project has installed.
54
+ */ async function getBundledNativeModulesAsync(projectRoot) {
55
+ // TODO: Revisit now that this code is in the `expo` package.
56
+ const bundledNativeModulesPath = _resolveFrom.default.silent(projectRoot, "expo/bundledNativeModules.json");
57
+ if (!bundledNativeModulesPath) {
58
+ Log.log();
59
+ throw new _errors.CommandError(_chalk.default`The dependency map {bold expo/bundledNativeModules.json} cannot be found, please ensure you have the package "{bold expo}" installed in your project.`);
60
+ }
61
+ return await _jsonFile.default.readAsync(bundledNativeModulesPath);
62
+ }
63
+
64
+ //# sourceMappingURL=bundledNativeModules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/doctor/dependencies/bundledNativeModules.ts"],"sourcesContent":["import JsonFile from '@expo/json-file';\nimport chalk from 'chalk';\nimport resolveFrom from 'resolve-from';\n\nimport { getNativeModuleVersionsAsync } from '../../../api/getNativeModuleVersions';\nimport { APISettings } from '../../../api/settings';\nimport * as Log from '../../../log';\nimport { CommandError } from '../../../utils/errors';\n\nexport type BundledNativeModules = Record<string, string>;\n\n/**\n * Gets the bundledNativeModules.json for a given SDK version:\n * - Tries to fetch the data from the /sdks/:sdkVersion/native-modules API endpoint.\n * - If the data is missing on the server (it can happen for SDKs that are yet fully released)\n * or there's a downtime, reads the local .json file from the \"expo\" package.\n * - For UNVERSIONED, returns the local .json file contents.\n */\nexport async function getVersionedNativeModulesAsync(\n projectRoot: string,\n sdkVersion: string\n): Promise<BundledNativeModules> {\n if (sdkVersion !== 'UNVERSIONED' && !APISettings.isOffline) {\n try {\n Log.debug('Fetching bundled native modules from the server...');\n return await getNativeModuleVersionsAsync(sdkVersion);\n } catch {\n Log.warn(\n chalk`Unable to reach Expo servers. Falling back to using the cached dependency map ({bold bundledNativeModules.json}) from the package \"{bold expo}\" installed in your project.`\n );\n }\n }\n\n Log.debug('Fetching bundled native modules from the local JSON file...');\n return await getBundledNativeModulesAsync(projectRoot);\n}\n\n/**\n * Get the legacy static `bundledNativeModules.json` file\n * that's shipped with the version of `expo` that the project has installed.\n */\nasync function getBundledNativeModulesAsync(projectRoot: string): Promise<BundledNativeModules> {\n // TODO: Revisit now that this code is in the `expo` package.\n const bundledNativeModulesPath = resolveFrom.silent(\n projectRoot,\n 'expo/bundledNativeModules.json'\n );\n if (!bundledNativeModulesPath) {\n Log.log();\n throw new CommandError(\n chalk`The dependency map {bold expo/bundledNativeModules.json} cannot be found, please ensure you have the package \"{bold expo}\" installed in your project.`\n );\n }\n return await JsonFile.readAsync<BundledNativeModules>(bundledNativeModulesPath);\n}\n"],"names":["getVersionedNativeModulesAsync","Log","projectRoot","sdkVersion","APISettings","isOffline","debug","getNativeModuleVersionsAsync","warn","chalk","getBundledNativeModulesAsync","bundledNativeModulesPath","resolveFrom","silent","log","CommandError","JsonFile","readAsync"],"mappings":"AAAA;;;;QAkBsBA,8BAA8B,GAA9BA,8BAA8B;AAlB/B,IAAA,SAAiB,kCAAjB,iBAAiB,EAAA;AACpB,IAAA,MAAO,kCAAP,OAAO,EAAA;AACD,IAAA,YAAc,kCAAd,cAAc,EAAA;AAEO,IAAA,wBAAsC,WAAtC,sCAAsC,CAAA;AACvD,IAAA,SAAuB,WAAvB,uBAAuB,CAAA;AACvCC,IAAAA,GAAG,mCAAM,cAAc,EAApB;AACc,IAAA,OAAuB,WAAvB,uBAAuB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAW7C,eAAeD,8BAA8B,CAClDE,WAAmB,EACnBC,UAAkB,EACa;IAC/B,IAAIA,UAAU,KAAK,aAAa,IAAI,CAACC,SAAW,YAAA,CAACC,SAAS,EAAE;QAC1D,IAAI;YACFJ,GAAG,CAACK,KAAK,CAAC,oDAAoD,CAAC,CAAC;YAChE,OAAO,MAAMC,CAAAA,GAAAA,wBAA4B,AAAY,CAAA,6BAAZ,CAACJ,UAAU,CAAC,CAAC;SACvD,CAAC,OAAM;YACNF,GAAG,CAACO,IAAI,CACNC,MAAK,QAAA,CAAC,0KAA0K,CAAC,CAClL,CAAC;SACH;KACF;IAEDR,GAAG,CAACK,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACzE,OAAO,MAAMI,4BAA4B,CAACR,WAAW,CAAC,CAAC;CACxD;AAED;;;GAGG,CACH,eAAeQ,4BAA4B,CAACR,WAAmB,EAAiC;IAC9F,6DAA6D;IAC7D,MAAMS,wBAAwB,GAAGC,YAAW,QAAA,CAACC,MAAM,CACjDX,WAAW,EACX,gCAAgC,CACjC,AAAC;IACF,IAAI,CAACS,wBAAwB,EAAE;QAC7BV,GAAG,CAACa,GAAG,EAAE,CAAC;QACV,MAAM,IAAIC,OAAY,aAAA,CACpBN,MAAK,QAAA,CAAC,qJAAqJ,CAAC,CAC7J,CAAC;KACH;IACD,OAAO,MAAMO,SAAQ,QAAA,CAACC,SAAS,CAAuBN,wBAAwB,CAAC,CAAC;CACjF"}